2026-06-22: I updated the installer so that it also copies the Adam patches over. I then re-arranged the patch directories to avoid having to use weird relative paths. New patches have been added to enable IRQ6 on startup, and the IRQ handler has been moved to a separate file to ensure it is compiled before the interrupt set-up code. 2026-06-19: I added some more code tags (PURPOSE, TO USE, THEN) to various source files to provide additional information on their use and installation. This was also done to allow for programmatic generation of an instruction sheet using a Python script that I wrote. I then updated the readme file to reflect the new changes. Lastly, I added another tag to all of the Adam patch files to warn the user of the need to install them after the kernel patches (to avoid dependency problems). 2026-06-18: I renamed FDCInt to IRQ_FDC (andremoved an unused definition in KernelA that was taking the name) to match with Terry's existing IRQ code. I also removed the old KFloppyB.HH (and the original KFloppy.HC), replacing it with KFloppyB2. 2026-06-12: I made minor changes to some of the code files (and corrected a typo in this changelog). I also added comments to the start of all the patch files (as well as some of the main code files) providing installation instructions. These do not replace the installer script, which (once retooled) will set all needed files in place and give more condensed patching instructions. At some point I should try and implement a stream editor to help ease the pain of manually doing all the #includes. Mount2VarsFDC was split into two files, so that the two declarations can be more easily replaced. 2026-06-10: FDCWriteBlks was patched to check the write-protect flag before attempting to perform a write operation. If set, the function throws an exception. I then discovered a error in my bit test where I used a hex bit mask instead of a bit position (which is what BT uses). BlkDevInit was patched (BlkDevInitFDC.HC) to add support for the floppy devices, as was Let2BlkDevType, which reassigned letters W-Z for floppy drives instead of optical (Let2BlkDevTypeFDC.HC). Mount2 was patched (Mount2LtrsFDC.HC) to reflect the above change to the drive letters. The patch file was initially erroneously named Mount2Ltrs.HC. 2026-06-08: In Mount2CaseBFDC.HC, default parameters were added for convenience. From testing with the legacy driver, these worked well on my 3.5-inch high-density drive. The manual configuration instructions were also re-worded. 2026-06-07: DskFDC.HC received a change to its sector size logic so that it works properly with the largest-size sectors (16 KiB), albeit of limited benefit. Three new files, Mount2{Vars,CaseA,CaseB}FDC.HC, were added to patch the Adam mount code to add floppy support. As the names of these files imply, they patch the Mount2 function (in ::/Adam/BlkDev/Mount.HC). 2026-06-06: The block device type list in KernelA.HH was brought out to its own header file (KernelAFDC.HH) for ease of modification. The list of strings for the block device types was also brought out in a similar manner (KDefineBDTs.HC). BlkDevAdd has been patched to handle the new floppy block device; like the above patches, this one is also in a separate file (BlkDevAddFDC.HC). This file was later patched again to remove a forced assignment to 0 of the drive offset (as BlkDevAdd will set it to 0), and once more to add RedSea boot sector detection. Instructions on implementing these and any future patch files are currently only present in the Git log; proper instructions will be written later. In DskFDC.HC, a new function was added to test for the presence of a disk by checking for valid sector data. This avoids emulator-specific issues with the Disk Change flag. 2026-06-04: The controller version check is now only done on the first drive when it is initialized. The data rate values accepted by the controller are now in KFloppyA.HH, as a courtesy to programmers. A new header file, KFloppyB2.HH, has been created to temporarily hold the headers for the new driver functions. The size of the DMA buffer has been reduced by half (to 9216 bytes), as part of a transition to single-track, single-head reads and writes. 2026-06-01: I have removed the DMA flag from the CBlkDev patch as I have decided to only support DMA at this time. I have also decided to do atomic reads and writes to the disk, instead of whole-track operations. I also added a 0.5-second timeout on the motor command when powering it on (I chose 0.5 to accomodate 5ΒΌ" floppy drives). I then updated FDCInit to set the highest block number and act like the existing ATA init code, where it returns TRUE if initialization was sucessful. 2026-05-31: I have branched the driver code so as to not pollute the existing codebase with the new BlkDev code. I also began work on the device functions, and a patch file to add needed parameters to the CBlkDev class. 2026-05-29: I modified the "read data" and "send command" functions to properly check the MSR for the correct values before doing I/O operations. I also removed an unnecessary seek from the disk dumper test program. The Installer had a missing semicolon at the CopyTree call, so I added one. This will (hopefully) be the final edit to the original driver codebase. Thus, it will be tagged and a ZIP file made available in the Downloads section of my website. 2026-05-27 (#2): I have restructured the source tree in preparation for future work: * The kernel code (KFloppy*) has been moved into /Kernel. * The disk dumper example has been moved into /Examples. I have also written an installer script that will get all of the files in place. It also has instructions on what #includes need to be added. 2026-05-27: I, Harley Travis, as the copyright holder of all current source code written as part of this TempleOS floppy disk controller project, have made the decision to re-license all of my code under the BSD Zero Clause License in place of the original Do What The Fuck You Want To Public License. To be clear: THIS IS NOT BECAUSE OF THE VULGARITY OF THE ORIGINAL LICENSE! I actually really enjoy the WTFPL! But I decided that it is a bit too informal for my taste, and so, based on a review of the existing public-domain-equivalent licenses, I have chosen 0BSD going forward. I have noticed that some other TempleOS-related projects have used the Unlicense, but the Open Source Initiative has noted that it is not very well-written, hence why I am not using it for my project. 0BSD, like the WTFPL, is a public-domain-equivalent license, perfect for a TempleOS-related project (as it maintains Terry A. Davis' vision of TempleOS being public-domain, though that claim would likely be legally unsound). 2026-05-26: I found a copy-paste error while testing my driver code on my main TOS machine (a Dell OptiPlex 755 Mini Tower). "2025 Me" seemingly forgot to change the DMA setup function in the multi-track write code. As a result, the DMA controller was being set up for reading instead of writing, causing the FDC to time out. I have also done some more line-breaking. Now, as far as I can tell, nearly every line of code has been broken down to 80 characters or less, save for a few long function calls. I have also done the same for ReadMe.TXT (I also did some rewording and correction while I was at it). 2026-05-24: I updated the copyright statements to match those on the WTFPL FAQ, completed the flags for the ST2 and ST3 in KFloppyA.HH, updating the copyright notice accordingly, and adjusted it (and this changelog) to fit in 80 columns. 2026-05-23: I placed the driver into version control on a Git server I set up. 2025-04-18: I had a brain fart and forgot to revert the hard-coded DMA buffer address, as pointed out by TheTinkerer on the TOS Discord. I went ahead and uncommented the stuff for splitting up the address, and fixed the base address I/O writes. If you have installed the driver, just replace NewFloppy.HC and recompile the kernel; you should be good after that. Whoops! 2025-04-20 (hah! weed.): Moved some stuff out of the system files to make things a bit less of a mess. Also I added a copyright notice to the readme (you can still do what the fuck you want to; see Copying.TXT).