Spiro's home on the web

CBM-ROM documentation project


The ROMs (BASIC, KERNAL) of the various Commodore computers as well as the CBM DOS of the floppy drives are well-known today, and there are many disassemblies which try to fully document them.

This information is available in printed books as well as spread over many places on the net.

In 2010, I started taking the Commodore ROMs I found for the C64, the VIC20 and their floppy drives VIC-1540, VIC-1541, VIC-1570, VIC-1571, and the cost-reduced VIC-1571 CR from the Commodore 128 DCR which also exists as a stand-online VIC-1571 CR.

The choice of C64 and 1541 came naturally, as this is what I used back in the eigthies. The VIC 20 was chosen as I always heard that the C 64 and the VIC-20 are very similar, and I wanted to know how for these similarities went.

The 1570/1571 were also a most natural choice, as these mainly extend the 1541 drive. I was surprised when I found out that the 1571 CR is a much different beast: While Commdore "normaly" tried to make the ROMs compatible to other ones, that is, they made sure that changes in the code are added as "patches" which do not change the addresses of other routines in most cases, for the 1571 CR, this is much different: The infamous 5710 chip used there as replacement for the CIA 6526 and the WD 1770 or WD1772 chip needed special programming, especially in the WD 177x-part. The firmware writers did not bother much about backward compatibility to the 1571, which made the addresses in the range $8000-$BFFF being very different to the regular 1571. It is no surprise that many programs written for the 1571 did not work with the 1571 CR. What a pity.

I also added the 1540 as the predecessor of the 1541, as it is almost identical. I also added the 2031 LP. While this seems to be surprising, because this is an IEEE-488 parallel port drive instead of the serial interface used by the C 64, VIC 20 and the drives. Again, I was curious about the exact differences, as I always had the impression that the 2031LP and the 1540 are very similar. Having a look at the schematics in the 2031 service manual and the 1541 service manual as well into the sources, it gets obvious that the drives are 90% identical.

Used ROMs

The following ROMs were used to build the sources:

The following ROMs were used for the computers:

LabelDeviceBASIC ROM, $A/C000-$B/DFFFKERNAL ROM, $E000-$FFFFCommentary
vic20-02VIC 20901486-01901486-02VIC-1001, Japanese version of VIC-20
vic20-06VIC 20901486-01901486-06NTSC-M version
vic20-07VIC 20901486-01901486-07PAL version
c64-01C 64901226-01901227-01
c64-02C 64901226-01901227-02
c64-03C 64901226-01901227-03In combination identical to 251913-01
251913-01Identical to combination of 901226-01 and 901227-03
c64-sx64SX 64901226-01251104-04Commodore SX-64
c64-40644064901226-01901246-01Educator 64, PET 64
c64-gsC 64 GS390852-01Commodore 64 Games System
c64-jpC 64901226-01906145-02Japanese version of C64; in between the 901227-02 and -03 ROMs

The following ROMs were used for the drives:

LabelDeviceROM $8000-$BFFFROM $C000-$DFFFROM $E000-$FFFFCommentary
2031-01VIC 2031 LP-901484-03901484-05
1540-01VIC 1540-325302-01325303-01
1541-01VIC 1541-325302-01901229-01
1541-02VIC 1541-325302-01901229-02
1541-03VIC 1541-325302-01901229-03
1541-05VIC 1541-325302-01901229-05
1541-06VIC 1541-325302-01901229-06
1541c-01VIC 1541 C-251968-011541C, 1541C
1541c-02VIC 1541 C-251968-021541C, 1541C
1541c-03VIC 1541-II-251968-031541-II, 1541-II
1570-01VIC 1570315090-01
1571-03VIC 1571310654-03
1571-05VIC 1571310654-05
1571CR-01VIC 1571 CR318047-01

Getting the sources

The sources are available in different formats. You can get the git repository by cloning with git clone http://cbmrom.trikaliotis.net/ cbmrom.spiro to get the sources into the directory cbmrom.spiro/.

You can browse the git online.

You can also browse the pretty-printed sources online; either all sources combined in one big file, or each file separetely in the same structure as the git repository. You can also view the output of an assembly of each computer or drive.

Have fun!


If you want to contribute, feel free to do so. What I am especially seeking is:

However, if you feel you can help in any other way, just contact me!