System information
17D5 C8 RZ
; MORE TO PRINT
17D6 E5 PUSH H
17D7 4F MOV C,A
17D8 CD6A17 CALL CONOUT
17DB E1 POP H
17DC 23 INX H
17DD C3D317 JMP PRMSG
;
SETFUNC:
; SET FUNCTION FOR NEXT I/O (COMMAND IN REG-C)
17E0 216818 LXI H,IOF ;IO FUNCTION ADDRESS
17E3 7E MOV A,M ;GET IT TO ACCUMULATOR FOR MASKING
17E4 E6F8 ANI 11111000B ;REMOVE PREVIOUS COMMAND
17E6 B1 ORA C ;SET TO NEW COMMAND
17E7 77 MOV M,A ;REPLACED IN IOPB
; THE MDS-800 CONTROLLER REQUIRES DISK BANK BIT IN SECTOR
BYTE
; MASK THE BIT FROM THE CURRENT I/O FUNCTION
17E8 E620 ANI 00100000B ;MASK THE DISK SELECT BIT
17EA 216B18 LXI H,IOS ;ADDRESS THE SECTOR SELECT BYTE
17ED B6 ORA M ;SELECT PROPER DISK BANK
17EE 77 MOV M,A ;SET DISK SELECT BIT ON/OFF
17EF C9 RET
;
WAITIO:
17F0 0E0A MVI C,RETRY ;MAX RETRIES BEFORE PERM ERROR
REWAIT:
; START THE I/O FUNCTION AND WAIT FOR COMPLETION
17F2 CD3F18 CALL INTYPE ;IN RTYPE
17F5 CD4C18 CALL INBYTE ;CLEARS THE CONTROLLER
;
17F8 3A6618 LDA DBANK ;SET BANK FLAGS
17FB B7 ORA A ;ZERO IF DRIVE 0,1 AND NZ IF 2,3
17FC 3E67 MVI A,IOPB AND 0FFH ;LOW ADDRESS FOR IOPB
17FE 0618 MVI B,IOPB SHR 8 ;HIGH ADDRESS FOR IOPB
1800 C20B18 JNZ IODR1;DRIVE BANK 1?
1803 D379 OUT ILOW ;LOW ADDRESS TO CONTROLLER
1805 78 MOV A,B
1806 D37A OUT IHIGH ;HIGH ADDRESS
1808 C31018 JMP WAIT0 ;TO WAIT FOR COMPLETE
;
IODR1: ;DRIVE BANK 1
180B D389 OUT ILOW+10H ;88 FOR DRIVE BANK 10
180D 78 MOV A,B
Appendix A : The MDS-800 BIOS CP/M Operating System Manual
A-11