Instruction manual

Putsys
# File putsys.asm
0000 ;Copies the memory image of CP/M loaded at E400h onto tracks 0 and 1 of the first CP/M disk
0000 ;Load and run from ROM monitor
0000 ;Uses calls to cbios, in memory at FA00h
0000 ;Writes track 0, sectors 2 to 26, then track 1, sectors 1 to 25
0000 seldsk: equ 0fa1bh ;pass disk no. in c
0000 setdma: equ 0fa24h ;pass address in bc
0000 settrk: equ 0fa1eh ;pass track in reg C
0000 setsec: equ 0fa21h ;pass sector in reg c
0000 write: equ 0fa2ah ;write one CP/M sector to disk
0000 monitor_warm_start: equ 046Fh ;Return to ROM monitor
0000 org 0800h
0800 0e 00 ld c,00h ;CP/M disk a
0802 cd 1b fa call seldsk
0805 ;Write track 0, sectors 2 to 26
0805 3e 02 ld a,2 ;starting sector
0807 32 80 08 ld (sector),a
080a 21 00 e4 ld hl,0E400h ;memory address to start
080d 22 81 08 ld (address),hl
0810 0e 00 ld c,0 ;CP/M track
0812 cd 1e fa call settrk
0815 3a 80 08 wr_trk_0_loop: ld a,(sector)
0818 4f ld c,a ;CP/M sector
0819 cd 21 fa call setsec
081c ed 4b 81 08 ld bc,(address) ;memory location
0820 cd 24 fa call setdma
0823 cd 2a fa call write
0826 3a 80 08 ld a,(sector)
0829 fe 1a cp 26
082b ca 3f 08 jp z,wr_trk_1
082e 3c inc a
082f 32 80 08 ld (sector),a
0832 2a 81 08 ld hl,(address)
0835 11 80 00 ld de,128
0838 19 add hl,de
0839 22 81 08 ld (address),hl
083c c3 15 08 jp wr_trk_0_loop
75