System information

0137 115C00 copy: lxi d,sfcb ; source
013A CD7801 call read ; read next record
013D B7 ora a ; end of file?
013E C25101 jnz eofile ; skip write if so
;
; not end of file, write the record
0141 11D901 lxi d,dfcb ; destination
0144 CD7D01 call write ; write the record
0147 11A901 lxi d,space ; ready message
014A B7 ora a ; 00 if write ok
014B C46101 cnz finis ; end if so
014E C33701 jmp copy ; loop until eof
;
eofile: ; end of file, close destination
0151 11D901 lxi d,dfcb ; destination
0154 CD6E01 call close ; 255 if error
0157 21BA01 lxi h,wrprot ; ready message
015A 3C inr a ; 255 becomes 00
015B CC6101 cz finis ; shouldn't happen
;
; copy operation complete, end
015E 11CB01 lxi d,normal ; ready message
;
finis: ; write message given in de, reboot
0161 0E09 mvi c,printf
0163 CD0500 call bdos ; write message
0166 C30500 jmp bdos ; reboot system
;
; system interface subroutines
; (all return directly from bdos)
;
0169 0E0F open: mvi c,openf
016B C30500 jmp bdos
;
016E 0E10 close: mvi c,closef
0170 C30500 jmp bdos
;
0173 0E13 delete: mvi c,deletef
0175 C30500 jmp bdos
;
5.3 A Sample Copy Program CP/M Operating System Manual
5-38