************************************************************* * * * SUBROUTINE TO LOAD THE CCP INTO MEMORY AT ADDRESS 100H * * * ************************************************************* ?LDCCP: XRA A STA CCP$FCB+15 ;START WITH EXTENT 0 LXI H,0 SHLD FCB$NR ;RECORD 0 LXI D,CCP$FCB CALL OPEN ;OPEN FILE CCP.COM INR A JZ NO$CCP ;TELL IF NO FILE FOUND LXI D,0100H ;ELSE CALL SETBUF ;SET TO LOAD INTO TPA LXI D,128 CALL SETMULTI ;ALLOW UP TO 16K BYTES LXI D,CCP$FCB CALL REBOOT ;READ FILE INTO MEMORY RET ; ; PRINT ERROR MESSAGE IF CAN'T FIND CCP.COM ON DEFAULT DRIVE NO$CCP: LXI H,CCP$MSG CALL MESSAGE ;REPORT THIS CALL ?CONIN ;GET A RESPONSE JMP ?LDCCP ;AND TRY AGAIN ; ; CP/M BDOS FUNCTION INTERFACE USED TO LOAD CCP.COM OPEN: MVI C,15 JMP BDOSGO ;OPEN FILE CONTROL SETMULTI: MVI C,44 JMP BDOSGO ;SET MULTI RECORD COUNT REBOOT: MVI C,20 JMP BDOSGO ;READ RECORDS SETBUF: MVI C,26 JMP BDOSGO ;SETDMA BDOSGO: LHLD @MXTPA PCHL ; ; MISCELLANEOUS MESSAGES FOR CONSOLE ; CCP$MSG: DB 13,10,'BIOS ERR ON A: NO CCP.COM FILE',00 ; ; FILE CONTROL BLOCK USED TO LOAD CCP.COM CCP$FCB: DB 1,'CCP ','COM',0,0,0,0 DS 16 FCB$NR: DB 0,0,0 ENDIF ;NOT LDRBIOS