PET index - DOS ROMs
(C) 1998-2014 André Fachat
Information about the DOS ROMs.
Table of content
Here is a comparison table for the different DOS versions (Based on information from this drive_info.txt that comes with the VICE emulator
Model | 1541 | 2031/4031 | 2040/3040 | 4040 | 8050 | 1001/8250 |
---|---|---|---|---|---|---|
DOS version(s) | 2.6 | 2.6 | 1.0/1.2 | 2.1/2.7 | 2.5/2.7 | 2.7 |
Disk format(s) | '2A' | '2A' | ' ' | '2A' | "2C" | "2C" |
Drives | 1 | 1 | 2 | 2 | 2 | 2 |
Heads per drive | 1 | 1 | 1 | 1 | 1 | 2 |
Storage capacity | 170k | 170k | 340k | 340k | 1.05M | 2.12M |
Sequential files | 168k | 168k | 168k | 168k | 521k | 1.05M |
Relative files | 167k | 167k | n/a | 167k | 183k/518k | 1.04M |
Buffer storage (kB) | 2 | 2 | 4 | 4 | 4 | 4 |
Tracks per drive | 35 | 35 | 35 | 35 | 77 | 2*77 |
Sectors per track | 17-21 | 17-21 | 17-21 | 17-21 | 23-29 | 23-29 |
Bytes per block | 256 | 256 | 256 | 256 | 256 | 256 |
Free blocks (single drive/all drives) | 664 | 664 | 670/1340 | 664/1328 | 2052/4104 | 4133/8266 |
Directory and BAM | 18 | 18 | 18 | 18 | 38/39 | 38/39 |
Directory entries/disk | 144 | 144 | 144 | 144 | 224 | 224 |
Transfer rate (internal, kB/s)) | 40 | 40 | 40 | 40 | 40 | 40 |
Transfer rate (IEC/IEEE488, kB/s)) | 0.4 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 |
Access time (ms) track to track | 30 | 30 | 30 | 30 | 5 | 5 |
Access time (ms) average | 360 | 360 | 360 | 360 | 125 | 125 |
Revolutions/minute | 300 | 300 | 300 | 300 | 300 | 300 |
The following table denotes the speed zones for the different formats:
Number of sectors per track | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2040/3040 DOS1.x | 1540/1541/4040 | 8050 | 8250 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
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:
- DOS1 ROM disassembly (recomment header file, comments transferred from the original CBM DOS2 source)
- DOS1 FDC ROM disassembly (recomment header file, comments from the Commodore Inner Space Anthology)
- DOS1 format code disassembly (recomment header file, comments from the Commodore Inner Space Anthology)
Variants (see also here:
Variant | ROMs | Comments |
---|---|---|
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:
Variant | ROMs | Comments |
---|---|---|
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:
Variant | ROMs | Comments |
---|---|---|
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:
Variant | ROMs | Comments |
---|---|---|
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