This repository was created to analyse the floppy image of the Sanco 8001 CP/M. The original source code is not available, so we are going to disassemble it. The image, copied from a physical disk using a gotek, was provided by "pconseil" on archive.org.
The Sanco BIOS ROM loads Head 0, Track 0, Sector 0 in memory (addr $0080), see cpm_loader. This code acts as loader for the various parts of the CP/M. It loads:
- 5120 bytes from Head 1, Track 0, Sectors 0-4 in $dc00-$f000. This code contains the CP/M command processor (CCP) and part of the CP/M Basic DOS (BDOS) (confirmed by "Soul of CP/M" manual).
- 3840 bytes from Head 0, Track 0, Sectors 1-15 in $f000-$ff00. It contains the remaining part of the BDOS, but it mostly contain the CP/M BIOS (confirmed by "Soul of CP/M" manual), see cpm_bios
After loading these sectors, the loader routine jumps to $f200, which is the first entry of the BIOS jump table (BOOT).
To better handle the disassmbley and analysis of the CP/M components, each one was extracted from the raw floppy image and recomposed with the correct memory layout, so we have:
- cpm_bios.bin, 3328 bytes long, loaded from
$f200
; - cpm_bdos.bin, 3584 bytes long, loaded from
$e400
; - cpm_ccp.bin, 2048 bytes long, loaded from
$dc00
.
At the moment, only the loader and the BIOS are disassemblied. To build them, just run
make assemble
To check the asm file consistency, run
make test
The CP/M file system onto the SANCO8003_CPM_2.2fr.bin
image may be accessed using the cpmtools.
An appropriate disk definition file is needed (diskdefs
), which is included in this repository.
$ cpmls -f sanco SANCO8003_CPM_2.2fr.bin
0:
asm.com
config80.com
copy8003.com
# ...
submit.com
term80.com
trx62.com
xsub.com
A single file
$ cpmcp -f sanco SANCO8003_CPM_2.2fr.bin "0:ASM.COM" .
Multiple files
$ cpmcp -f sanco SANCO8003_CPM_2.2fr.bin "0:*" disk/
$ cpmcp -f sanco SANCO8003_CPM_2.2fr.bin test.bin "0:TEST.COM"
- RetroNewbie/Sanco_8000, some disassemblies of the software inside in this floppy.
- CP/M BIOS documentation.
- CP/M sources, see CP/M 2.2 section.