Tonight, I was able to successfully test the read/write LBA support I added to the kernel. (I was also able to play Commander Keen, off of my hard drive, with this LBA enabled kernel. :-) ) Once write with verify support is added, Phase 1 LBA support will be complete.
I have decided to implement LBA support in 2 phases as follows:
Phase 1: LBA support is added to the kernel. On systems, which can use LBA to access hard drives, LBA support is detected and used instead of legacy int 0x13 access. There should be NO noticable difference between older, non-LBA kernels, and Phase 1 LBA kernels. If there is a difference, it would in all probablility result in data corruption....which would be very noticable. :-/ Hard disk locations beyond the 8.4GB boundary will still be inaccessable due to the lack of support for FAT16 LBA partitions.
Phase 2: The partition scanning code will be modified to translate the LBA partition information to a "virtual" CHS format. This will allow the kernel to use FAT16 (and eventually FAT32) partitions that end beyond the 8.4GB boundary. This is where the LBA additions will become obvious to users.
I have posted the necessary kernel files out on my web site in the zip file at: http://www.23cc.com/programs/klba.zip. The 2 files that are modified are dsk.c and floppy.asm. Please feel free to review these 2 files and let me know if there are any obvious (or not so obvious) problems. Though these files have been modified from the kernel 2024a sources, they should work with 2024b as well. If anyone does review these files, please pay special attention to the changes I made to floppy.asm. Since assembly language is not my forte, there may be an obscure bug (or more) that could crop up under some circumstances.
I am planning on having the Phase 1 changes completed by the end of this week.
Brian Reifsnyder <firstname.lastname@example.org>