System information
RDSEC: ; READ NEXT SECTOR
CALL RDSEC ; USER SUPPLIED SUBROUTINE
LXI D,128 ; MOVE LOAD ADDRESS TO NEXT 1/2
; PAGE
DAD D ; HL = HL + 128
INR C ; SECTOR = SECTOR + 1
MOV A,C ; CHECK FOR END OF TRACK
CPI 27
JC RDSEC ; CARRY GENERATED IF SECTOR <27
;
; ARRIVE HERE AT END OF TRACK, MOVE TO NEXT TRACK
INR B
MOV A,B ; TEST FOR LAST TRACK
CPI 2
JC RDTRK ; CARRY GENERATED IF TRACK <2
;
; USER SUPPLIED SUBROUTINE TO READ THE DISK
READSEC:
; ENTER WITH TRACK NUMBER IN REGISTER B,
; SECTOR NUMBER IN REGISTER C,
; AND ADDRESS TO FILL IN HL
;
PUSH B ; SAVE B AND C REGISTERS
PUSH H ; SAVE HL REGISTERS
***********************************************
PERFORM DISK READ AT THIS POINT, BRANCH TO
LABEL "START" IF AN ERROR OCCURS
***********************************************
POP H ; RECOVER HL
POP B ; RECOVER B AND C REGISTERS
RET ; BACK TO MAIN PROGRAM
END START
Listing 6-1. GETSYS Program
6.4 Sample GETSYS and PUTSYS CP/M Operating System Manual
6-12