Re: Software for MS-DOS 1.25

From: Michał Pleban <lists_at_michau.name>
Date: Fri, 13 Oct 2017 13:43:01 +0200
Message-ID: <59E0A6C5.9090008@michau.name>
Hello!

Baltissen, GJPAA (Ruud) wrote:

> Nice challenge. The main reason an _original_ XT cannot support the 1.2 or 1.44 MB drive is the hardware. Once having the hardware, a driver enables an XT to use both drives as well. I have several cards providing the needed hardware plus an EPROM that changes INT13h of the original BIOS.

After some consideration I changed my mind to support 720 kB disks
instead. Emulating a smaller drive that we really have should be easier
than emulating a bigger one ;-) Also, with 720 kB it should be easy to
fall back to 360 kB if the user has an 8050 instead of 8250. And it will
leave over 200 kB of free space on the disk from the CBM side, to hold
any supporting 6509-side software.

> Regarding the CBM-II/8088 combination: we already have the hardware, so only software is needed. Right now the 8088 tells the 6509 which sector it needs, the 6509 does the rest. The only thing that the 8088 has to be told is the configuration of the 8250 (or what ever IEEE) drive. One problem: the number of sectors varies for some ranges of tracks. But we just tell the 8088 that the 8250 has X tracks with Y sectors on each track. IMHO it is up to 6509 to translate this to the correct sector on the 8250.

No, it is actually up to 8088 to do the translation. The 6509 function
expects to receive the exact track and sector to be read. So the 8088
must translate PC sectors into 8250 sectors. It is a bit tricky to do
the translation (there are fewer tracks but more sectors per track, also
the number of sectors per track varies) but I don't see anything here
that couldn't be done.

Another thing is that on the PC sectors have 512 bytes, so each sector
read must be translated to two reads from the 8250, possibly with some
interleave to do it faster.

> So your problem seems to be that the 8088 is told that the 8x50 is only a 360 KB floppy. That isn't strange. In a XT BIOS some bytes have been reserved to describe the disk parameters. The vector of INT 1Eh points to this table. This table contains, for example, the total number of sectors and the number of sectors/track. Not the number of sides. The standard values in a XT BIOS are the parameters for a 360 KB drive. So when connecting a 720 KB drive to a XT, a parameter in CONFIG.SYS, DRIVPARM (http://www.easydos.com/drivparm.html), tells the BIOS now what parameters should be used by changing the vector to point to a new table in RAM. If you don't, reading goes fine AFAIK but writing and formatting will go wrong. Important: it is INT 13h that makes use of the table.

At this point, MS-DOS 1.25 thinks that the 8250 is a 160 kB floppy ;-)

> So wanting to use the bigger capacity of a 8x50 disk, IMHO it is just a matter of changing this table. But: where is this table to be found? One possibility: it is hardcoded in the INT13h of MS-DOS1.25. But be aware, maybe not only the table has to be changed but also the routine that translates a DOS sector into a CBM one to cope with the larger capacity.

Here is where I am a bit confused at the moment. The table should be
found at INT 1Eh but is also told to be being returned by INT 13h
function 08. But then MS-DOS actually patches this function so that it's
not available when when it is. I need to examine this more.

Regards,
Michau.



       Message was sent through the cbm-hackers mailing list
Received on 2017-10-13 12:00:02

Archive generated by hypermail 2.2.0.