[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DOS 3.3 Nibble Encoding



In article <Nov17.020819.75996@acs.ucalgary.ca> sbdocker@acs.ucalgary.ca (Sean Brendan Dockery) writes:
>
> First, the boot sector obviously conforms to the format of the rest of
> the disk.
> 
> My question refers to the fact that the disk controller ROM won't be
> able to decode DOS 3.2.1 and DOS 3.3 formatted disks in the same
> manner as they use different encoding schemes.

A "dual boot" disk is one that will boot on either a 16-sector or
13-sector Disk ][ interface card.  The entire disk is in 13-sector
format, apart from track zero, which has 12 or 11 sectors in 13-sector
format (numbered 0-11) and one sector in 16-sector format (numbered
0).  The two instances of "sector 0" are distinguished by their
address marks, the third byte of which differs.

If you boot the disk on a 13-sector Disk ][ controller, it will ignore
the 16-sector copy of "sector 0" and will boot from the 13-sector
"sector 0".  This contains the normal boot code for the disk.

If you boot the disk on a 16-sector Disk ][ controller, it will
ignore the 13-sector copy of "sector 0" and will boot from 16-sector
"sector 0".  This sector contains code which duplicates the function
of the 13-sector Disk ][ controller, so it proceeds by loading the
13-sector copy of "sector 0".  The boot then proceeds as with a
13-sector controller.

Dual-boot disks are rare - I've only ever seen them with games.

> I'm not sure if the built-in disk controller ROMs can handle the
> decoding (let alone identifying) both encoding schemes.  The basic
> question is whether or not there is enough room for both algorithms.

They can't.  The original Disk ][ controller's firmware (and hardware)
only handles 13-sector format.  The revised Disk ][ controller
(supplied when DOS 3.3 and Pascal were released) has hardware support
for both formats, but the firmware can only read 16-sector format.

If you want to boot from a standard 13-sector disk and you have a
16-sector controller, you have to boot DOS 3.3 and run the BOOT13 (or
START13) program, which includes code to read the boot sector from a
13-sector disk.

Early versions of DOS 3.3 had a special 'BASICS' disk, which was in
16-sector format.  You boot this disk and it asks you to insert a
13-sector disk and press a key.  The 13-sector disk is then booted.
The BOOT13 program is basically the same as the BASICS disk, but in a
more convenient format (a BIN program).

> This is the exact problem that I am referring to above.  Unless the
> disk controller is explicitly trying to identify a DOS 3.2.1 verus a
> DOS 3.3 format disk, the encoding format (5 and 3 for DOS 3.2.1 and 6
> and 2 for DOS 3.3) is unknown.  I imagine that decoding a 5 and 3
> encoded sector with the 6 and 2 decoding algorithm would result in a
> checksum error anyway.

To say the least.  The number of data bytes (disk bytes) in the sectors
differs between the two formats.
-- 
David Empson                                                               
dempson@swell.actrix.gen.nz                                                
Snail mail: P.O. Box 27-103, Wellington, New Zealand