home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
CCP
/
AUTOX.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
2KB
|
69 lines
; 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.
CDISC EQU 4 ; CP/M DRIVE BUFFER LOCATION
;
;
TXBUF: DB YY ; LENGTH OF BUFFER
DB XX ; COMMAND LENGTH (EXCLUDING 00,0DH)
DB 'COMMAND'
DB 00 ; NULL
DB 0DH ; CARRIAGE RETURN
;
;
;
LHLD 1 ; GET JUMP TO BIOS
LXI D,-1603H ; OFFSET FOR CP/M 2.X (USE 1503
; FOR CP/M 1.4X
;
DAD D
SHLD LDCCP ; SAVE CCP LOCATION
LXI H,TXBUF+1 ; POINT TO COUNTER
MOV A,M ; GET IT
ORA A ; IS IT STILL ZERO?
JZ REXIT ; YES, SO NO AUTO START
INR A ; INCREMENT COUNTER FOR COPY
INR A
INR A
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: ... ; ROUTINE OR PROGRAM TO GO TO
; IF COMMAND LENGTH IS ZERO.
;
LDCCP: DS 2 ; BUFFER FOR CCP LOCATION
;
END