System information
 ; COMBINED GETSYS AND PUTSYS PROGRAMS FROM
 ; SEC 6.4
 ;
 ; START THE PROGRAMS AT THE BASE OF THE TPA
 0100  ORG 0100H
 0014 = MSIZE EQU 20 ;SIZE OF CP/M IN KBYTES
 ;"BIAS" IS THE AMOUNT TO ADD TO ADDRESSES FOR > 20K
 ; (REFERRED TO AS"B" THROUGHOUT THE TEXT)
 0000 = BIAS EQU (MSIZE-20)*1024
 3400 = CCP EQU 3400H+BIAS
 3C00 = BDOS EQU CCP+0800H
 4A00 = BIOS EQU CCP+1600H
 ; GETSYS PROGRAMS TRACKS 0 AND 1 TO MEMORY AT 3880H + BIAS
 ; REGISTER  USAGE
 ; A (SCRATCH REGISTER)
 ; B TRACK COUNT (0...76)
 ; C SECTOR COUNT (1...26)
 ; D,E (SCRATCH REGISTER PAIR)
 ; H,L LOAD ADDRESS
 ; SP SET TO TRACK ADDRESS
 GSTART: ;START OF GETSYS
 0100 318033  LXI SP,CCP-0080H ;CONVENIENT PLACE
 0103 218033  LXI H,CCP-0080H;SET INITIAL LOAD
 0106 0600  MVI B,0 ;START WITH TRACK
 RD$TRK: ;READ NEXT TRACK
 0108 0E01  MVI C,1 ;EACH TRACK START
 RD$SEC:
 010A CD0003  CALL READ$SEC ;GET THE NEXT SECTOR
 010D 118000  LXI D,128 ;OFFSET BY ONE SECTOR
 0110 19  DAD D ; (HL=HL+128)
 0111 0C  INR C ;NEXT SECTOR
 0112 79  MOV A,C ;FETCH SECTOR NUMBER
 0113 FE1B  CPI 27 ;AND SEE IF LAST
 0115 DA0A01  JC RDSEC ;<, DO ONE MORE
 ;ARRIVE HERE AT END OF TRACK, MOVE TO NEXT TRACK
 0118 04  INR B ;TRACK = TRACK+1
 0119 78  MOV A,B ;CHECK FOR LAST
 011A FE02  CPI 2 ;TRACK = 2 ?
 011C DA0801  JC RD$TRK ;<, DO ANOTHER
Appendix B : A Sekletal CBIOS CP/M Operating System Manual
C-1










