System information

16B6 219C16 LXI H,SIGNON
16B9 CDD317 CALL PRMSG ;PRINT MESSAGE
16BC AF XRA A ;CLEAR ACCUMULATOR
16BD 320400 STA CDISK ;SET INITIALLY TO DISK A
16C0 C30F17 JMP GOCPM ;GO TO CP/M
;
;
WBOOT:; LOADER ON TRACK 0, SECTOR 1, WHICH WILL BE SKIPPED FOR
WARM
; READ CP/M FROM DISK - ASSUMING THERE IS A 128 BYTE COLD
START
; START.
;
16C3 318000 LXI SP,BUFF ;USING DMA - THUS 80 THRU FF
;AVAILABLE FOR STACK
;
16C6 0E0A MVI C,RETRY ;MAX RETRIES
16C8 C5 PUSH B
WBOOT0: ;ENTER HERE ON ERROR RETRIES
16C9 010000 LXI B,CPMB ;SET DMA ADDRESS TO START OF
;DISK SYSTEM
16CC CDBB17 CALL SETDMA
16CF 0E00 MVI C,0 ;BOOT FROM DRIVE 0
16D1 CD7D17 CALL SELDSK
16D4 0E00 MVI C,0
16D6 CDA717 CALL SETTRK ;START WITH TRACK 0
16D9 0E02 MVI C,2 ;START READING SECTOR 2
16DB CDAC17 CALL SETSEC
;
; READ SECTORS, COUNT NSECTS TO ZERO
16DE C1 POP B ;10-ERROR COUNT
16DF 062C MVI B,NSECTS
RDSEC: ;READ NEXT SECTOR
16E1 C5 PUSH B ;SAVE SECTOR COUNT
16E2 CDC117 CALL READ
16E5 C24917 JNZ BOOTERR ;RETRY IF ERRORS OCCUR
16E8 2A6C18 LHLD IOD ;INCREMENT DMA ADDRESS
16EB 118000 LXI D,128 ;SECTOR SIZE
16EE 19 DAD D ;INCREMENTED DMA ADDRESS IN HL
16EF 44 MOV B,H
16F0 4D MOV C,L ;READY FOR CALL TO SET DMA
16F1 CDBB17 CALL SETDMA
16F4 3A6B18 LDA IOS ;SECTOR NUMBER JUST READ
16F7 FE1A CPI 26 ;READ LAST SECTOR?
16F9 DA0517 JC RD1
Appendix A : The MDS-800 BIOS CP/M Operating System Manual
A-6