Commodore Source Code
This repository collects the original source code of various Commodore Business Machines (CBM) computers converted to a modern encoding (ASCII, LF, indentation).
Using kernalemu and cbm6502asm, almost all source in this repo can be built from the UNIX command line. To build everything, run build.sh
from the Unix command line, on a case-insensitive filesystem.
KIM-1/AIM-65
Directory | Year | Comments |
---|---|---|
MONITOR_KIM | 1975 | KIM-1 ROM (6530-002, 6530-003) |
MONITOR_AIM65 | 1978 | AIM-65 monitor |
TIM | 1976 | TIM ROM (6530-004) |
PET
Directory | Year | Comments |
---|---|---|
BASIC_PET_V1_REC | 1977 | |
BASIC_PET_V1R_REC | 1977 | |
BASIC_PET_V2_MICROSOFT | 1978 | Microsoft BASIC V2 (MACRO-11) |
BASIC_PET_V2_REC | 1978 | |
BASIC_PET_V4_1979-07-23 | 1979 | |
BASIC_PET_V4_REC | 1980 | |
BASIC_PET_V4R_REC | 1980 | |
KERNAL_PET_1.0_REC | 1977 | |
KERNAL_PET_2.0_REC | 1978 | |
KERNAL_PET_4.0_1979-10-23 | 1979 | |
KERNAL_PET_4.0_REC | 1980 | |
EDITOR_PET_EURO | 1981 | European editor for CBM 8032 |
CBM2
Directory | Year | Comments |
---|---|---|
BASIC_CBM2_1982-11-19 | 1982 | |
BASIC_CBM2_1983-05-31 | 1983 | |
BASIC_CBM2_1984-01-04 | 1984 | |
EDITOR_CBM2_1982-11-19 | 1982 | |
EDITOR_CBM2_1983-05-31 | 1983 | |
KERNAL_CBM2_1982-11-19 | 1982 | |
KERNAL_CBM2_1983-05-31 | 1983 | |
KERNAL_CBM2_1983-07-07 | 1983 |
VIC-20
Directory | Year | Comments |
---|---|---|
BASIC_VIC | 1980 | 901486-01 |
KERNAL_VIC_04 | 1980 | 901486-04 |
C64
Directory | Year | Comments |
---|---|---|
BASIC_C64 | 1982 | 901226-01 |
BASIC_C64_BSO | 1982 | 901226-01, BSO syntax |
BASIC_C64GS | 1990 | 390852-01 |
KERNAL_C64_01 | 1982 | 901227-01 |
KERNAL_C64_02 | 1982 | 901227-02 |
KERNAL_C64_03 | 1983 | 901227-03 |
KERNAL_C64_03_BSO | 1983 | 901227-03, BSO syntax |
KERNAL_C64GS | 1990 | 390852-01 |
Ultimax
Directory | Year | Comments |
---|---|---|
BASIC_MAX_REC | 1982 | 901230-01 |
KERNAL_MAX_REC | 1982 | 901231-01 |
BASIC_MAX_MINI_REC | 1982 | 901233-01 (MAX3101) |
TED (C16, C116, Plus/4)
Directory | Year | Comments |
---|---|---|
BASIC_TED | 1984 | 318006-01 |
KERNAL_TED_04 | 1984 | 318004-04 (PAL), 318005-04 (NTSC) |
KERNAL_TED_05 | 1984 | 318004-05 (PAL), 318005-05 (NTSC) |
CHARSET_TED | 1984 |
C128
Directory | Year | Comments |
---|---|---|
BASIC_C128_03 | 1985 | 318018-03, 318019-03 |
BASIC_C128_04 | 1986 | 318018-04, 318019-04 |
EDITOR_C128 | 1985 | 318020-05 |
EDITOR_C128_DIN | 1985 | 315078-03, German |
EDITOR_C128_NATIONAL | 1987 | |
KERNAL_C128_03 | 1985 | 318020-03 |
KERNAL_C128_05 | 1985 | 318020-05 |
KERNAL_C128_06 | 1988 | 318020-06 |
MONITOR_C128 | 1985 | |
CHARSET_C128_NATIONAL | 1985 |
C65
Directory | Year | Comments |
---|---|---|
BASIC_C65 | 1991 | C65 BASIC (911115) |
GRAPHICS_C65 | 1991 | C65 BASIC Graphics lib (911119) |
KERNAL_C65 | 1991 | C65 KERNAL, EDITOR, MONITOR (911119) |
DOS_C65 | 1991 | C65 DOS (911119) |
BASIC_C64_C65 | 1991 | C64 mode BASIC V2 (900531) |
KERNAL_C64_C65 | 1991 | C64 mode KERNAL (910117) |
Disk Drives
Directory | Year | Comments |
---|---|---|
DOS_4040 | 1980 | DOS V2.0; IEEE-488; 2x SS DD 5.25" |
DOS_8060_REC | 1980 | DOS V7.0; IEEE-488; 2x SS/DS DD 8" |
DOS_8070 | 1980 | DOS V3.0; IEEE-488; SS/DS DD 8" + HD |
DOS_8250 | 1981 | DOS V2.7; IEEE-488; 2x SS/DS QD 5.25" |
DOS_8280 | 1981 | DOS V3.0; IEEE-488; 2x DS QD 8" |
DOS_D9065 | 1981 | DOS V3.0; IEEE-488; HD |
DOS_1540 | 1981 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541_01_REC | 1982 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541_02_REC | 198? | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541_03_REC | 198? | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541_05 | 1984 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541_05_REC | 198? | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541_06_REC | 198? | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541C_01_REC | 198? | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541C_02 | 1985 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541C_02_REC | 1985 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541C_03 | 1987 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1541C_03_REC | 1987 | DOS V2.6; Serial; SS DD 5.25" |
DOS_1551 | 1984 | DOS V2.6; TCBM; SS DD 5.25" |
DOS_1570 | 1985 | DOS V3.0; Serial; SS DD 5.25" |
DOS_1571_03 | 1986 | DOS V3.0; Serial; DS DD 5.25" |
DOS_1571_05 | 1986 | DOS V3.0; Serial; DS DD 5.25" |
DOS_1571CR | 1986 | DOS V3.1; Serial; DS DD 5.25" |
DOS_1581 | 1987 | DOS V10; Serial; DS DD 3.5" |
DOS_1581_1987-03-12 | 1987 | DOS V10; Serial; DS DD 3.5" |
DOS_1581_1987-03-19 | 1987 | DOS V10; Serial; DS DD 3.5" |
RAMDOS | 1986 | REU 1764/1750 RAM disk |
CONTROLLER_1001 | 1983 | Controller; DS QD 5.25" |
CONTROLLER_8250 | 1981 | Controller; 2x DS QD 5.25" |
Printer ROM
Directory | Year | Comments |
---|---|---|
PRINTER_8023P | 1980 | IEEE-488; based on Brother M82 |
Software
Directory | Year | Comments |
---|---|---|
KIMATH | 1976 | KIM-1 Math Package |
MATHPACK | 1979 | CBM2 Math Package |
MONITOR_PET_ADDON | 1981 | RAM-based monitor for PET 8x92 |
MONITOR_C64 | 1982 | RAM-based monitor for C64 |
DISK_MONITOR | 1980 | Monitor extension for PET |
DOS_SHELL | 1985 | DOS SHELL tool (1571 Test/Demo disk) |
FIG | 1980 | fig-FORTH |
Software: Resident Assembler & HCD65
Directory | Year | Comments |
---|---|---|
ASSEMBLER_AIM65_REC | 1978 | 4 KB, heavily optimized |
ASSEMBLER_PET_REC | 197? | ROM 2 only (undated) |
ASSEMBLER_PET_V112779_REC | 1979 | ROM 2 only, adds mul/div, error messages |
ASSEMBLER_PET_V121579_REC | 1979 | ROM 2/4, adds .IFN /.IFE |
ASSEMBLER_PET_V090580_A_REC | 1980 | adds XREF support |
ASSEMBLER_PET_V090580_B_REC | 1980 | optimizations |
ASSEMBLER_PET_V102780_REC | 1980 | bugfixes, ROM auto-detect |
ASSEMBLER_PET_V26MAR82RR_REC | 1982 | based on V090580_B, LST output changes, non-mainline |
ASSEMBLER_C64_REC | 1982 | "C64 Macro Assembler", adds .MAC |
ASSEMBLER_TED | 1984 | TED version, adds .OPT LON , .OPT MLI |
ASSEMBLER_C128 | 1986 | C128 version, heavily commented |
HCD65_3.5 | 1986 | BSO-compatible rewrite |
HCD65_65CE02_0.1 | 1988 | 65CE02/4510 opcode support |
HCD65_65CE02_0.2 | 1990 | update |
EDT_C128 | 1986 | |
LOADER_PET | 1979 | OBJ Loader |
LOADER_C64 | 1986 | OBJ Loader |
LOADER_C128 | 1986 | rewrite |
LOADER_C65 | 1990 | |
LOADER_C65_RS232 | 1990 | RS-232 |
Software: Games
Directory | Year | Comments |
---|---|---|
KICKMAN | 1982 | Kickman Ultimax Game |
OMEGA | 1982 | Omega Race Ultimax Game |
WIZARD | 1982 | Wizard of Wor Ultimax Game |
Other
Directory | Year | Comments |
---|---|---|
A2232 | 1991 | Amiga A2232 Serial Port Card |
Cross-Platform
Directory | Year | Comments |
---|---|---|
6502ASM | 1989 | VAX/MS-DOS C 65CE02 cross assembler |
Descriptions
BASIC_PET_*, KERNAL_PET_*
The PET BASIC and KERNAL sources in different versions (197-1980). Reconstructed by Martin Hoffmann-Vetter.
- BASIC_PET_V4_1979-07-23 and KERNAL_PET_4.0_1979-10-23 were OCRed and reconstructed from the LST printouts of a pre-V4 version.
- The other versions were reconstructed from this to match the corresponding binaries:
- BASIC_PET_V1_REC: 901439-01, 901439-05, 901439-02, 901439-06, 901439-03
- BASIC_PET_V1R_REC: 901439-09, 901439-05, 901439-02, 901439-06, 901439-03
- BASIC_PET_V2_REC: 901465-01, 901465-02, 901447-24
- BASIC_PET_V4_REC: 901465-19, 901465-20, 901465-21
- BASIC_PET_V4R_REC: 901465-23, 901465-20, 901465-21
- KERNAL_PET_1.0_REC: 901439-03, 901439-04, 901439-07
- KERNAL_PET_2.0_REC: 901447-24, 901465-03
- KERNAL_PET_4.0_REC: 901465-21, 901447-29, 901465-22
Note that BASIC V1, V1R and V2 were built by Microsoft (see BASIC_PET_V2_MICROSOFT), and the binary was sent to Commodore. After that, Commodore moved BASIC development in-house and converted Microsoft's V2 source into MDT650 Resident Assembler format. These reconstructed versions of V1 and V1R in "Resident Assembler" format therefore never existed and have only been produced to allow for comparisons against BASIC V2, V4 and V4R (which were built by Commodore with the Resident Assembler).
BASIC_VIC
The Commodore VIC-20 BASIC source (901486-01). Extracted from basic.src from vic_src.tar.gz and formatted the same as the C64 BASIC source.
KERNAL_VIC_04
The Commodore VIC-20 KERNAL source, unreleased version (901486-04). Extracted from kernal.src from vic_src.tar.gz and formatted the same as the C64 KERNAL source.
BASIC_C64
The Commodore 64 BASIC source (901226-01). Extracted from c64-basic.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
The source contains the ranges
- $A000-$BF52
- $BF71-$BFFF
- $E000-$E4AB
The checksum byte at $BF52 is 0 and will have to be calculated in a later step.
BASIC_MAX_REC, KERNAL_MAX_REC
The Ultimax BASIC cartridge (MAX3102, 901230-01/901231-01). Contains an adapted version of the C64 KERNAL (-01) and a slightly patched version of BASIC. Reconstructed from BASIC_C64 and KERNAL_C64_01.
BASIC_MAX_MINI_REC
The Ultimax MINI BASIC cartridge (MAX3101, 901233-01). Contains a stripped-down version of the C64 BASIC (no arrays, no trigonometry etc.) and a tiny 1.5 KB KERNAL-like OS. Reconstructed from BASIC_C64 and KERNAL_C64_01.
KERNAL_C64_01
The Commodore 64 KERNAL source, original version (901227-01). Extracted from c64kernal.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
The source contains the ranges
- $E500-$FF5A: code
- $FF81-$FFF5: jump table
- $FFFA-$FFFF: vectors
It does not contain the version byte at $FF80 (which is $AA in the binary) or the "RRBY" signature at $FFF6.
KERNAL_C64_02
The Commodore 64 KERNAL source, universal (PAL/NTSC) version (901227-02).
It contains the version byte (0) at $FF80, but it does not contain the "RRBY" signature at $FFF6.
KERNAL_C64_03
The Commodore 64 KERNAL source, final version (901227-03). Based on KERNAL_C64_02 and manually patched using
There are two differences though:
- In both sources, the added patch function
PIOKEY
ends withJMP CLKHI
($EE85), but the -03 binary contains $EE8E, which isJMP CLKLO
. The change was probably done in the binary and not added back to the source. The version in this repository contains the correctJMP CLKLO
though. - The printout LST contains a version byte ($FF80) of 0, the BSO SRC contains the correct version byte of 3. The version in this repository contains a 3.
The sources have been verified to build the correct -03 KERNAL binary.
It contains the version byte (3) at $FF80, but it does not contain the "RRBY" signature at $FFF6.
BASIC_C64_BSO, KERNAL_C64_BSO
This is the C64 BASIC and KERNAL source, converted from PET Resident Assembler syntax to the BSO CR6502/11 assembler by Fred Bowen in 1987, and with updated comments. Source: c64_kernal_bas_src.tar.gz.
This produces the same binaries as BASIC_C64 and KERNAL_C64_03, except for the pre-03 PIOKEY
patch (see above).
BASIC_C64GS, KERNAL_C64GS
The Commodore 64GS BASIC and KERNAL (390852-01) source (1990). Source: c64_kernal_bas_src.tar.gz.
The source files are in BSO assembler format and derived from BASIC_C64_BSO and KERNAL_C64_BSO.
- BASIC_C64GS: The source has updated comments, and the binary is identical with the regular C64 BASIC, except for:
- The BASIC vector table is initialized with a literal $F72E as the main loop address. This causes BASIC to jump to the C64GS power-on message in the KERNAL.
- The checksum is hardcoded with $EC.
- KERNAL_C64GS: The source has updated comments, and contains the following changes:
- Tape support has been replaced by the power-on message code.
- Memory test has been sped up by only testing one byte per block.
- The
PIOKEY
patch has been fixed in the source.
The KERNAL source contains the version byte (3) at $FF80 as well as the "RRBY" signature at $FFF6.
BASIC_TED, KERNAL_TED_0{4|5}
The Commodore Plus/4, C16 and C116 BASIC 3.5 and KERNAL source (1984). Source: ted_kernal_basic_src.tar.gz
- KERNAL_TED_04 is 318004-04 (PAL) and 318005-04 (NTSC). $FF80 = $84/$04. (It was reconstructed from kernal/kernal.xrf in the dump.)
- KERNAL_TED_05 is 318004-05 (PAL) and 318005-05 (NTSC). $FF80 = $85/$05. (The sources were missing a patch, which was reconstructed from kernal/kernal.lst in the dump.)
BASIC_C128_0{3|4}, KERNAL_C128_0{3|5|6}, EDITOR_C128[_DIN], MONITOR_C128
The Commodore 128 BASIC 7.0, KERNAL, EDITOR and MONITOR sources (1985/1986). Source: c128_dev_pack.tar.gz
- BASIC_C128_03 is 318018-03/318019-03.
- BASIC_C128_04 is 318018-04/318019-04.
- KERNAL_C128_03 is 318020-03, $FF80 = 0. (It was reconstructed from listings/first_release/kernal.lis in the dump.)
- KERNAL_C128_05 is 318020-05, $FF80 = 1.
- KERNAL_C128_06 is 318020-06, $FF80 = 2. This version seems to have been unreleased.
- EDITOR_C128 is the US version (318020-05)
- EDITOR_C128_DIN is the German version (315078-03). The code is the same as in EDITOR_C128_NATIONAL, but the comments are slightly different.
- EDITOR_C128_NATIONAL contains Denmark (325174-03), Finland/Sweden (325180-03), France/Belgium (325166-03), Germany/Austria (315078-03), Italy (325168-03), Norway (325177-03), Spain (325170-03), Swiss (325172-03).
BASIC_PET_V2_MICROSOFT
The PET BASIC V2 source (1978) as built by Microsoft.
- This is Microsoft's original source that can also build BASIC for other systems, like OSI and Apple.
- Microsoft built all versions up this one with its own tools and sent the binary (together with the LST) to Commodore.
- On the PET, this was called BASIC V2, Microsoft called it V1.1.
- It includes the "WAIT6502,1" easter egg (symbol
ZSTORDO
).
BASIC_C65
The final version of C65 BASIC V10 (911115, 1991-11-15). Source: folder system/9 in c65_src.tar.gz
GRAPHICS_C65
The final version of the C65 GRAPHICS BASIC (911119, 1991-11-19), the graphics library that is part of BASIC 10. Source: folder system/9 in c65_src.tar.gz
KERNAL_C65
The final version of the C65 KERNAL (called "KERNEL"; 911119, 1991-11-19). Source: folder system/9 in c65_src.tar.gz
DOS_C65
The final version of the C65 CBDOS (Computer-Based DOS; 911119, 1991-11-19). Source: folder system/9 in c65_src.tar.gz
BASIC_CBM2_*, KERNAL_CBM2_*, EDITOR_CBM2_*
The CBM2 BASIC, EDITOR and KERNAL sources in different versions (1982-1984).
- The *_1982-11-19 version is from Ruud Baltissen's ICPUG disks.
- The *_1983-05-31 version is from David Viner.
- KERNAL_1983-07-07 and BASIC_1984-01-04 are from disks 67/68 of the CBUG library.
The files have been converted to LF line breaks and LST-style indenting.
EDITOR_PET_EURO
The "CBM 8032 EURO SCREEN EDITOR 4V2E (E-901474-03)" ROM. Extracted from UNKN008.D80 from Ruud Baltissen's ICPUG disks and converted to LF line breaks and LST-style indenting.
CHARSET_TED
The Character ROM for the TED series (Plus/4, C16 and C116; 1984). Extracted from ted_kernal_basic_src.tar.gz.
CHARSET_C128_NATIONAL
The set of national Character ROMs for the C128 (1985): Denmark (325175-01), Finland/Sweden (325181-01), France/Belgium/Italy (325167-01), Germany/Belgium (315079-01), Norway (325178-01), Spain (325171-01), Switzerland (325173-01).
MONITOR_PET_ADDON
The PET 8096/80196 memory expansion addon monitor (1981). Corrected and fixed-up from the OCRed version, which is based on the LST printout
MONITOR_C64
The C64 monitor program. Extracted from ml-monitor-source.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting. The symbol WALKON
in the file micii4
was changed from 1
to 0
so the source builds.
DOS_4040
The CBM 4040/2040 DOS V2.1 source (1980). Extracted from 4040-source.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks.
- Comments say this is for the 2040. The 2040 and the 4040 have identical hardware, the 4040 is just a 2040 with DOS V2.
DOS_8250
The CBM 8250/8050/1001/4040 DOS V2.7 source (1981). Extracted from old-dos-sources.d81 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
- The same ROM binary will work on the 8250 (DS/QD), the 8050 (SS/QD), the SFD-1001 (DS/QD, single drive) and the 4040 (SS/DD), the differences will be handled at runtime (symbols "NSIDES", "DOS").
- Comments in the source call this "SUPER DOS".
- This only contains the DOS and IEEE code. The controller is in CONTROLLER_8250/CONTROLLER_1001.
DOS_8280
The CBM 8280 V3.1 source (1981). Extracted from Ruud Baltissen's ICPUG disks and converted to LF line breaks and LST-style indenting.
DOS_8060_REC
The reconstructed source for the CBM 8061/8062 (1980). The source is based on DOS_8070 and modified by Martin Hoffmann-Vetter to build into the DOS portion of the 901488-01/-02 ROMs.
The CBM 8061 (single side) and 8062 (dual side) are a pair of dual 8" disk drives. They were announced, but only a few were made and never sold publicly, but instead used internally at Commodore.
- The source only contains the bus controller portion of the ROM ($CC78-$FFFF), not the disk controller part.
- The power-on message says "CBM DOS V7.0 8060".
DOS_8070
The CBM 8070 DOS V3.0 source (1981). Extracted from old-dos-sources.d81 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
The CBM 8070 is an unreleased device with one 8" hard drive (#0) and one 8" double-sided floppy drive (#1). It is derived from the dual 8" drive CBM 8061/8062 (1980).
- The source only contains the bus controller portion of the ROM ($CE50-$FFFF), not the disk controller part.
- The power-on message says "CBM DOS V3.0 8070".
- The file copy code is stored on the hard disk and loaded on demand ("ldcopy").
DOS_D9065
The CBM D9065 DOS V3.0 source (1981). Extracted from old-dos-sources.d81 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
- The D9065 is an unreleased 7.5 MB hard drive, probably very similar to the D9060/D9090.
DOS_1540
The Commodore 1540 DOS V2.6 source (1980), 325302-01/325303-01. Extracted from 1541-2031-copy-1-original-side1.d64/1541-2031-num1.d64 and 1541-2031-source-disk-copy-num2-side1.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
- The source contains both the IEEE-488 and the IEC serial interface code, so it represents both the CBM 2031 and the Commodore 1540. Different
master
source files build different configurations. - The power-on message always says "
CBM DOS V2.6 V170
" though, which corresponds to the 1540.
DOS_1541[C]_0{1|2|3|5|6}[_REC]
The Commodore 1541/1541C/1541-II DOS V2.6 source.
- Directories ending in "
_REC
" have been reconstructed from DOS_1540 and DOS_1571 to match the ROM images. They all match in case and spacing, so they can be used for comparing versions against each other. - Directories not ending in "
_REC
" contain original source from all_new_dos.tar.gz and are lower case.
These are the respective directories:
- DOS_1541_01_REC is 325302-01/901229-01 (1981).
- DOS_1541_02_REC is 325302-01/901229-02.
- DOS_1541_03_REC is 325302-01/901229-03.
- DOS_1541_05[_REC] is 325302-01/901229-05 (1983, shipped with the short board 1541).
- DOS_1541_06_REC is 325302-01/901229-06.
- DOS_1541C_01[_REC] is 251968-01 (1984, shipped with the 1541C)
- DOS_1541C_02[_REC] is 251968-02 (1986, release notes)
- DOS_1541C_03[_REC] is 251968-03 (shipped with the 1541-II)
(Commodore used the PET Resident Assembler to build the 1541 DOS until "_03", and switched to the BSO assembler afterwards. All original source that has been preserved is in BSO format. To allow for better comparisons, all "_REC" source has been formatted in the PET Resident Assembler format. So note that the "_REC" source after "_03" never existed in this format.)
DOS_1551
The Commodore 1551 DOS 2.6 TDISK source (1984), 318008-01. Source: all_new_dos.tar.gz
DOS_1570
The Commodore 1570 DOS 3.0 source (1985), 315090-01. Source: all_new_dos.tar.gz
DOS_1571{_03|_05|CR}
The Commodore 1571 DOS sources:
- DOS_1571_03 is DOS 3.0 (1985), original version (310654-03).
- DOS_1571_05 is DOS 3.0 (1986), updated version (310654-05).
- DOS_1571CR is DOS 3.1 (1986) of the cost-reduced 1571 (318047-01).
Source: all_new_dos.tar.gz; the -03 version was reconstructed from 1571/310654_03/serlib.lst in the dump.
DOS_1581
DOS_1581_1987-03-12
- DOS_1581: The Commodore 1581 DOS source (10.0, 1987-03-20), original version (318045-01). Source: all_new_dos.tar.gz
- DOS_1581_1987-03-19: work revision, serlib_977e.lst from same archive.
- DOS_1581_1987-03-12: work revision, serlib_a9f5.lst from same archive; ".subttl" typo fixed in sieee.src.
RAMDOS
The C64/C128 RAMDISK DOS V4.3 source (1987). Extracted from ramdos.zip. This is a version of Commodore DOS running on the C64/C128 for using a REU (RAM Expansion Unit) as a RAM disk.
CONTROLLER_8250
The CBM 8250/8050/4040 controller source (1981). Extracted from 4040-8050-8250-controller-code-tandon.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
- This only contains the controller. The DOS and IEEE code is in DOS_8250.
CONTROLLER_1001
The SFD-1001 controller source (1981). Extracted from old-dos-sources.d81 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting.
- This only contains the controller. The DOS and IEEE code is in DOS_8250.
PRINTER_8023P
The CBM 8023P printer source code (1980). Extracted from 8023p-printer-source.d64 from Steve Gray's Dennis Jarvis Page and converted to LF line breaks and LST-style indenting. The .NOLIST
directive was commented out in us.ptr.src
, so building would create a useful LST file.
The CBM 8023P is a dot matrix printer with an IEEE-488 connection, a 6502/6532/6522-based controller, and a Brother M82 mechanism. The source contains references to Epson Model 3110/3210 mechanisms which seem to have been used in earlier printers.
The source contains a 90 degree rotated 6x8 pixel variant of the PETSCII character/graphics set.
DISK_MONITOR
"DISK MONITOR 2040 V1.0", an extension to the PET monitor for disk commands (see mon.cmd). Extracted from UNKN008.D80 from Ruud Baltissen's ICPUG disks and converted to LF line breaks and LST-style indenting.
DOS_SHELL
The DOS Shell tool from the 1571 Test/Demo disk, autoboot for C128. Source: c128_dev_pack.tar.gz
MATHPACK
A variant of the "BCD Math Package" printed in the Commodore 700 Reference Manual. Extracted from UNKN008.D80 from Ruud Baltissen's ICPUG disks and converted to LF line breaks and LST-style indenting.
ASSEMBLER_AIM65_REC
The AIM-65 version of the Resident Assembler (ROM R3224; 1978). Reconstructed from ASSEMBLER_TED.
This is a reconstruction of the oldest known version of the Resident Assembler. It's a 4 KB ROM that interfaces with the AIM-65 monitor. It is heavily optimized and outputs to RAM instead of OBJ files. It is probably based on the (lost) 6 KB KIM-1 resident assembler ("KIM-5"). The later PET versions are not based on this (optimizations did not carry over), but the original (also lost) MDT650 version.
ASSEMBLER_PET_*_REC
Different versions of the PET Resident Assembler. Reconstructed from ASSEMBLER_TED, based on work by Martin Hoffmann-Vetter.
- ASSEMBLER_PET_REC (undated, 6696 bytes); for BASIC 2
- ASSEMBLER_PET_V112779_REC (1979-11-27, 7426 bytes); for BASIC 2
- ASSEMBLER_PET_V121579_REC (1979-12-15, 7546 bytes for BASIC 4; and with
BASIC4=0
: 1979-12-15, 7546 bytes for BASIC 2) - ASSEMBLER_PET_V090580_A_REC (1980-09-05, 7858 bytes)
- ASSEMBLER_PET_V090580_B_REC (1980-09-05, 7938 bytes; and with
LINES=$40
: 1980-09-05, 7822 bytes) - ASSEMBLER_PET_V102780_REC (1980-10-27, 8049 bytes)
- ASSEMBLER_PET_V26MAR82RR_REC (1982-03-26, 7982 bytes); hacked V090580_B, non-mainline
ASSEMBLER_C64_REC
The C64 Macro Assembler (a version of the Commodore Resident Assembler). Reconstructed from ASSEMBLER_TED to build a binary that is identical with the V080282 version, modulo the leftover garage in the original binary between $081A and $0990, which is filled with $AA.
ASSEMBLER_TED
A version of the Commodore Resident Assembler for the TED series (Plus/4, C16 and C116; 1984). Extracted from ted_kernal_basic_src.tar.gz.
ASSEMBLER_C128
The final version of the Commodore Resident Assembler, for the C128 (V022086; 1986).
HCD65_3.5
The release version of the C128 HCD65 assembler. Source: c128_dev_pack.tar.gz
HCD65_65CE02_*
The internal updated version of the C128 HCD65 assembler with 65CE02/4510 support. Source: c128_dev_pack.tar.gz
The 0.1 version was reconstructed from an LST file.
LOADER_PET
The PET OBJ Loader, version V121379. Extracted from ted_kernal_basic_src.tar.gz and converted to uppercase and LST-style indenting. File loload.4 added.
LOADER_C64
The OBJ Loader of the C64 Macro Assembler, version V072882. Extracted from c64_kernal_bas_src.tar.gz and converted to uppercase and LST-style indenting.
LOADER_C128, LOADER_C65, LOADER_C65_RS232
The OBJ Loader of the HCD65 assembler.
- LOADER_C128, LOADER_C65: for C128 and C65 (disk). Source: c128_dev_pack.tar.gz
- LOADER_C65_RS232: for C65 (RS-232). Source: c65_src.tar.gz
EDT_C128
The editor for the HCD65 assembler for the C128 (1986). Source: c128_dev_pack.tar.gz
MONITOR_KIM
The KIM-1 "monitor" ROM (1975), i.e. 6530-002 and 6530-003. From the Hans Otten reconstructed source from the KIM-1 users manual.
MONITOR_AIM65
The AIM-65 "monitor" ROM (1978), i.e. R3222 and R3223-11. From the reconstructed source from the monitor listing printout. Corrected and fixed up to match the LST.
KIMATH
The KIM-1 "KIMATH" math package (1976). Generated from the original LST printout, and the .asm reconstruction by C. Bond from the same package.
TIM
The TIM (Terminal Interface Monitor) ROM (6530-004). Reconstructed from the manual by Martin Hoffmann-Vetter.
FIG
fig-FORTH for 6502, Rel 1.1 (1980) for various platforms. Converted from the LST.
This is not MOS/Commodore source code, but it was developed with some version of the Resident Assembler.
KICKMAN
The game "Kickman" (1982) for the Ultimax. Reconstructed from the BSO-format source.
OMEGA
The game "Omega Race" (1982) for the Ultimax. Reconstructed from the BSO-format source.
WIZARD
The game "Wizard of Wor" (1982) for the Ultimax. Reconstructed from the BSO-format source.
A2232
The 65CE02 source of the firmware of the Amiga A2232 7-port serial card.
old.src
: 1988 version. Source: c65_src.tar.gza2232_6502.src
: Final version (1991).
6502ASM
The "6502ASM" cross-assembler, V1.0 (1989-08-23) for VAX and MS-DOS. Reconstructed from the V1.0 LIS/LST files in c65_src.tar.gz and the B0.0 C files in 4502-asm-for-pc.img from Steve Gray's Dennis Jarvis Page.
Credits
This repository is maintained by Michael Steil, [email protected]