home *** CD-ROM | disk | FTP | other *** search
- ;
- ; BYESUB.ASM
- ; A routine to load/run a .com file on request
- ;
- ; When used by itself, or, as intended, as a called subroutine for
- ;RCP/M conditional logoffs, (security violation, overstayers, etc.),
- ;this routine will make use of the autorun feature buried in the CCP
- ;module of CP/M. The file specified at the equate near the end of the
- ;program will be loaded into the ccp command buffer, and the ccp will
- ;be cold started. This will act as if the name had been typed in at
- ;the console, and the return key hit.
- ;
- ; Note that the value of CPR is system dependant. This must be
- ;changed for your paticular system.
- ;
- ; ----------------------------------
- ;
- ;------------------
- ; Mods / Fixes :
- ;------------------
- ;
- ;11/06/82 Initial Release
- ;
- ; Mark J. Pulver
- ; AIMS (312) 789-0499
- ;
- ;
- ;-----------------
- ; Code starts :
- ;-----------------
- ;
- CPR EQU 0C700H ;ccp cold start
- CBUFF EQU CPR+7 ;address of command length pointer
- CIVAL EQU CPR+8 ;address of command buffer
- CIBPTR EQU CPR+59H ;address of pointer to ccp command buffer
- ;
- OFFSET EQU 0
- ;
- ;
- ORG 0100H
- ;
- BYE: EQU $+OFFSET
- LHLD BYEFIL ;get length
- MOV B,L ;B needs it for MOVE
- LXI H,BYEFIL ;get name of file
- LXI D,CBUFF ;where its going
- CALL MOVE ;move name into buffer
- LXI H,CIVAL ;get command buffer location
- SHLD CIBPTR ;stuff it in pointer
- LDA USER
- MOV C,A ;C must have user/drive
- JMP CPR ;cold start ccp
- ;
- MOVE: EQU $+OFFSET ;hl to de length in b
- MOV A,M
- STAX D
- INX D
- INX H
- DCR B
- JNZ MOVE
- RET
- ;
- USER: EQU $+OFFSET
- DB 0 ;user/drive spec for file,
- ;follows 0004h conventions
- BYEFIL: EQU $+OFFSET
- DB 5,'BYE',0 ;comfile to run
- ;command length ^ ^- - - "0" must be here
- ;+2 for first and last bytes
- ;
- ;
- END