André's 8-bit Pages  Projects  Code  Resources  Tools  Forum
(by Google)

PET index - DOS ROMs

Information about the DOS ROMs.

  •  
    2014-08-11 Added ROM numbers and variant descriptions.

Here is a comparison table for the different DOS versions (Based on information from this drive_info.txt that comes with the VICE emulator

Model15412031/40312040/3040404080501001/8250
DOS version(s)2.62.61.0/1.22.1/2.72.5/2.72.7
Disk format(s)'2A''2A'' ''2A'"2C""2C"
Drives112222
Heads per drive111112
Storage capacity170k170k340k340k1.05M2.12M
Sequential files168k168k168k168k521k1.05M
Relative files167k167kn/a167k183k/518k1.04M
Buffer storage (kB)224444
Tracks per drive35353535772*77
Sectors per track17-2117-2117-2117-2123-2923-29
Bytes per block256256256256256256
Free blocks (single drive/all drives)664664670/1340664/13282052/41044133/8266
Directory and BAM1818181838/3938/39
Directory entries/disk144144144144224224
Transfer rate (internal, kB/s))404040404040
Transfer rate (IEC/IEEE488, kB/s))0.41.81.81.81.81.8
Access time (ms) track to track3030303055
Access time (ms) average360360360360125125
Revolutions/minute300300300300300300

The following table denotes the speed zones for the different formats:

Number of sectors per track
2040/3040 DOS1.x1540/1541/404080508250
Tracks#Sectors
1-1721 (0-20)
18-2420 (0-19)
25-3018 (0-17)
31-3517 (0-16)
Tracks#Sectors
1-1721 (0-20)
18-2419 (0-18)
25-3018 (0-17)
31-3517 (0-16)
Tracks#Sectors
1-3929 (0-28)
40-5327 (0-26)
54-6425 (0-24)
65-7723 (0-22)
Tracks#Sectors
1-3929 (0-28)
40-5327 (0-26)
54-6425 (0-24)
65-7723 (0-22)
78-11629 (0-28)
117-13027 (0-26)
131-14125 (0-24)
142-15423 (0-22)

Note: the DOS2.7 4040 drive was a prototype.

Please note that some of the information here has been only derived from looking at ROM diffs, and discussions on the cbm-hackers list, and may not be accurate.

For example the source "4040.zip" contains references to DOS 2.0 or 2.1 versions with ROMs 901468-08, -09, and -10 - but they have not been seen and their content are unknown.

Also the 2.5 DOS seems to have a version that is only referenced in "The Complete Commodore Inner Space Anthology". According to Martin Hoffmann-Vetter on the cbm-hackers list, the AUTOIT routine was removed and all addresses after it moved.

The whole history of the DOS ROMs is rather clouded, so take the information with a grain of salt.

DOS 1.x

The first DOS versions (1.0) were rushed out to get disk support for the PET machines. The first useable versions were the DOS 1.2 2040/3040 drives. These versions still lacked relative file support.

As the drives have two CPUs, one 6502 for the DOS and the IEEE488 and a 6504 for the disk controller (FDC), there are two ROM parts. The DOS ROM is 8 kByte in size, the FDC ROM is only 1 kByte, located in the 6530 RIOT chip. The size is so small that only the most basic hardware-related code is stored there. To format a disk, some code had to be copied to the shared RAM by the DOS CPU and was executed by the FDC CPU. Therefore, there are three ROM parts to discuss:

Variants (see also here:

VariantROMsComments
DOS 1 901467-01 (GCR decoder ROM)
901466-01 (6530 disk controller ROM)
Others unknown
DOS 1.2 901467-01 (GCR decoder ROM)
901466-02 (6530 disk controller ROM)
901468-06 (2332-020 ROM DOS 1 E000-EFFF)
901468-05 (2332-021 ROM DOS 1 F000-FFFF)
DOS 1.2 rev. 901467-01 (GCR decoder ROM)
901466-02 (6530 disk controller ROM)
901468-06.bin (2332-020 ROM DOS 1 E000-EFFF)
901468-07.bin (2332-021 ROM DOS 1 F000-FFFF)

Please note that the "Programming the PET/CBM" book from Raeto West says that there were differences between DOS 1 (2040) and DOS 1.2 (3040). He also supposedly shows the differences on the main digital board which prohibits updating the 2040 DOS 1 board (according to Martin Hoffmann-Vetter on the cbm-hackers list). Only the 3040 boards are supposed to be updateable to DOS 2.x.

DOS 2.0/2.1

The second DOS version added support for relative files, and changed the disk format from 670 blocks free to 664 blocks free. It was directly used in the 4040 drives, but many 2040/3040 drives have been upgraded to these ROMs, as the hardware was otherwise the same.

The original Commodore DOS source code can be found in the CBM archive at the CBM archive.

Variants (see also here:

VariantROMsComments
DOS 2.1 901466-04 (6530 disk controller ROM)
901468-08 (ROM DOS 2.0 $D)
901468-09 (ROM DOS 2.0 $E)
901468-10 (ROM DOS 2.0 $F)
These are only referenced in the 4040.zip source, but the content is unknown.
DOS 2.1 901466-04 (6530 disk controller ROM)
901468-11 (ROM DOS 2.0 $D)
901468-12 (ROM DOS 2.0 $E)
901468-13 (ROM DOS 2.0 $F)
DOS 2.1 rev. 901466-04 (6530 disk controller ROM)
901468-14 (ROM DOS 2.0 $D)
901468-15 (ROM DOS 2.0 $E)
901468-16 (ROM DOS 2.0 $F)

DOS 2.5

The DOS 2.5 adds support for the large, quad density disk drives and is used in the 8050 disk drives.

Variants (see also here:

VariantROMsComments
GCR decoder 901467-01 (GCR decoder ROM)
Disk controllers 901483-02 (6530 disk controller ROM)
901483-03 (6530 disk controller ROM - Micropolis drives)
901483-04 (6530 disk controller ROM - Tandon drives)
DOS 2.5 901482-01 (ROM DOS 2.0 $C+$D)
901482-02 (ROM DOS 2.0 $E+$F)
These ROMs are so far unknown, but are indicated by a disk controller memory map from "The Complete Commodore Inner Space Anthology".
DOS 2.5 rev 2 (Micropolis) 901482-03 (ROM DOS 2.0 $C+$D)
901482-04 (ROM DOS 2.0 $E+$F)
DOS 2.5 rev 3 (Tandon/Micropolis) 901482-06 (ROM DOS 2.0 $C+$D)
901482-07 (ROM DOS 2.0 $E+$F)

DOS 2.6

DOS 2.6 is a modification of the 2.x DOS where the FDC code is also executed by the same DOS CPU. It is used in the VC1541 and 4031/2031 disk drives.

DOS 2.7

DOS 2.7 descends from 2.5, not 2.6. I.e. it still uses two CPUs, with dual drive support etc. It adds support for double sided disks, as well as super side sector for relative files. There are versions for the 8050 and the 8250 as well as the 1001 disk drives. A prototype version for the 4040 disk drive was never released. In fact the DOS2.7 probes the FDC and adjusts itself automatically to the 4040, 8050 or 8250 disk formats. Note that DOS 2.7 thus uses disk format '2A' on a 4040, and disk format '2C' on an 8x50 drive.

A disassembly can be found in the CBM archive.

Variants (see also here:

VariantROMsComments
GCR decoder 251167-01
Disk controllers 251256-02 (disk controller ROM)
251474-01B (disk controller ROM - Matsushita drives)
251257-02A (disk controller ROM - Matsushita drives)
901885-01 (6530 disk controller ROM - Micropolis drives)
901885-04 (6530 disk controller ROM - Micropolis drives)
901869-01 (6530 disk controller ROM - MPI drives)
901884-01 (6530 disk controller ROM - Tandon drives)
DOS 2.7 8250LP 251165-01 (ROM DOS 2.0 $C+$D)
251166-01 (ROM DOS 2.0 $E+$F)
DOS 2.7 8x50 901887-01 (ROM DOS 2.0 $C+$D)
901888-01 (ROM DOS 2.0 $E+$F)

The 8" disk drives use a ROM that, according to the CBM archive, are very similar to DOS 2.7.

The hard disks have their own ROM. The source code can be found in the CBM archive.


Return to Homepage

Last modified: 2014-08-11
follow

Follow my 8-bit tweets on Mastodon (In new window) or Bluesky

discuss

Discuss my site on this 6502.org forum thread

(Forum registration required to post)

hot!

Dive into the retro feeling and build yourself a Micro-PET or a Multi-board Commodore 4032 replica

Need more speed? Speed up your 6502 computer with this 10 MHz 6502 CPU accelerator board

Interested in electronics design? Look at the design lesson I got from Bil Herd, the hardware designer of the C128

Want 64bit? - pimp the 6502 with the 65k processor design!