; ROUTINE TO EXECUTE A COMMAND BY USING THE AUTO ; START FACILITY IN THE CP/M (V1.4, 2.0-2.2) . IT ; ASSUMES THAT THE CCP IS STILL INTACT (HAS NOT BEEN ; CRASHED OR OVERLAYED. org 100h CDISC EQU 4 ; CP/M DRIVE BUFFER LOCATION ; BEGIN: LHLD 1 ; Get the cold boot address from LXɠ D,-1603Ƞ th bas pag an ad i a DAD D ; offset to get the start of CCP. SHL LDCC Sav CC addres an tes fo LXI H,TXBUF+1 ; presence of parameter: if none MO֠ A, supplie (n comman listed ORA A ; then bomb out to CP/M. If one JZ REXIT ; has been entered, then move it INR A ; into the proper location in the INR A ; CCP. The auto command is at INR A ; CCP+ MOV C,A ; GET INTO (B,C) MVI B,0 PUSH H ; SAVE POINTER LHLD LDCCP ; GET CCP POINTER LXI D,7 ; POINT AT COUNTER LOCATION DAD D XCHG ; SAVE AS DESTINATION POINTER (D,E) POP H ; GET BACK SOURCE POINTER CALL MOVE ; COPY CODE INTO CCP BUFFER LHLD LDCCP ; GET POINTER TO CCP LXI D,88H ; OFFSET TO CCP TXBUF POINTER DAD D PUSH H ; SAVE POINTER LHLD LDCCP LXI D,8 ; OFFSET TO START OF BUFFER DAD D XCHG ; SAVE IN (D,E) POP H ; GET POINTER BACK CALL PTDE ; RESET POINTER VALUE LHLD LDCCP ; GET CCP ADDRESS LDA CDISC ; GET DISC # MOV C,A ; SAVE FOR CCP FUNCTION PCHL ; DO AUTO START ; MOVE: MOV A,M ; GET BYTE FROM SOURCE STAX D ; SAVE AT DESTINATION INX H INX D DCX B MOV A,B ORA C JNZ MOVE ; LOOP UNTIL DONE RET ; REXIT: jmp 0f806h ; LDCCP: DS 2 ; BUFFER FOR CCP LOCATION ; END