Image:
 Author: Little Group: Default Filesize: 55.58 kB Date added: 2023-11-10 Rating: 5.1 Downloads: 2025 Views: 333 Comments: 2 Ratings: 2 Times favored: 0 Made with: Algodoo v2.1.0 Tags:
|
This scene showcases a floppy disk drive (FDD) I made during my spare time.
It has to be either glued to the background or kept very still. Algodoo really doesn't seem to like working at human scales at 60hz.
The floppy disks this thing reads are 144 bit 3.7 inch floppies. (obviously not a real standard)
This scene comes with the floppy drive, 2 blank floppy disks, and an interface to control the floppy drive.
The drive itself is absurdly slow. I do plan on building some sort of binary-based computer (a very low-level computer though!) while incorporating floppies of some kind. However, due to the actual data density of these floppies, I might allow the sectors to contain, say, 16 bits instead of 1.
If the floppies were the same size but had 16-bit sectors instead of 1-bit sectors, they would be able to hold 2,304 bits (288 bytes, 0.288KB).
For reference, normal floppies IRL typically have 512 bytes per sector (from what a quick google search says anyway, don't quote me on this!).
If the sectors within this disk were 512 bytes, then we would have a total capacity of 73,728 bytes (73.7KB)!
The programming inside of the drive is super sloppy and someone who's experienced with Thyme would probably faint upon seeing it, but if you want to know how to use the drive, here's how:
1. The disk controller is the white box behind the RW head assembly.
2. There are several internal variables for the disk controller.
For our purposes, only 3 of these variables are useful:
_found - Current drive status.
-1 - Seeking (looking for the sector it wants to access)
0 - Idle
1 - Done (successfully read or wrote a sector)
If you want to send the drive off, you have to set _found to -1!
The second "important variable" is _data.
_data is only useful if you are reading from the drive. If you read from the drive, the result will be stored in _data (once _found is 1!)
The third and arguably most important variable is _inst.
Inst stands for Instruction.
Inst is formatted like this:
[operation, sector, data*]
*true or false value, only needs to be provided if the operation is write
Operation can either be 0 or a 1.
0 corresponds to reading, and 1 corresponds to writing.
Sector is the location of the sector you want to interact with.
It's formatted like this:
[track, tracksector]
There are 6 tracks on the disk, starting from 0 and ending with 5.
The tracksector is the sector on the track - each track has 24 sectors, starting with 0 and ending with 23.
Data is either true (1) or false (0).
2017 - 2023 Little
2022 - 2023 XCS
EDIT: I had to upload the scene again. Somehow while uploading my scene, it replaced someone else's unrelated scene.
EDIT 2: Fixed some mistakes in the description
EDIT 3: Fixed some mistakes with the interface |