*************************************************************
*                                                           *
*  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

