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
/
SUBMIT
/
MAKESUB2.AQM
/
MAKESUB2.ASM
Wrap
Assembly Source File
|
2000-06-30
|
2KB
|
91 lines
;
; MAKESUB.ASM
; (revised 4/28/80)
;
;11/04/79 FIRST WRITTEN BY KEITH PETERSEN
; AND BOB MATHIAS.
;
;04/28/80 UPDATED FOR MORE EFFICIENT CODING BY
; CLAYTON HIBBERT AND KEITH PETERSEN.
;
;THIS PROGRAM DEMONSTRATES HOW ONE CP/M COM
;PROGRAM CAN EXECUTE ANOTHER COM PROGRAM.
;THE SECRET IS IN CREATING A FILE CALLED
;"$$$.SUB" WHICH CONTAINS THE COMMAND TO
;EXECUTE THE NEXT PROGRAM. AFTER DOING THAT,
;A JMP TO WARM BOOT (0000H) WILL CAUSE CP/M
;TO DO A SUBMIT OF THAT COMMAND.
;
;
DRNAME EQU 4 ;ADDR. WHERE DRIVE NAME IS
BDOS EQU 5
FCB EQU 5CH
FCBEX EQU FCB+12
FCBNR EQU FCB+32
BUFF EQU 80H ;CP/M DEFAULT BUFFER
MAKE EQU 22
WRITE EQU 21
CLOSE EQU 16
;
ORG 100H
;
LXI H,FILNAM ;POINT TO FILENAME
LXI D,FCB ;POINT TO FCB
MVI B,13 ;LENGTH OF FILENAME
CALL MOVER ;MOVE IT TO FCB
;
; GO MAKE THE FILE
;
XRA A
STA FCBNR ;SET RECORD NUMBER TO ZERO
LXI D,FCB ;POINT TO NAME
MVI C,MAKE ;MAKE FILE
CALL BDOS
;
; GET THE NAME TO PUT IN FILE
;
LXI H,COMNAM ;POINT TO COMMAND STRING
LXI D,BUFF ;POINT TO FCB
MVI B,NAMLEN ;LENGTH OF MOVE
CALL MOVER ;MOVE NAME INTO BUFFER
;
; WRITE FILE NAME TO DISK
;
LXI D,FCB ;POINT TO NAME
MVI C,WRITE ;WRITE RECORD
CALL BDOS
;
; NOW CLOSE THE FILE ON DISK
;
LXI D,FCB ;POINT TO NAME
MVI C,CLOSE ;CLOSE FILE
CALL BDOS
;
; INSURE THE DISK WE WANT TO SUBMIT ON
;
XRA A ;GET A ZERO
STA DRNAME ;SET CP/M FOR DRIVE A:
JMP 0 ;REBOOT
;
;MOVE (B) BYTES FROM (HL) TO (DE)
;
MOVER: MOV A,M ;GET BYTE FROM SOURCE
STAX D ;STORE AT DESTINATION
INX H ;INCREMENT SOURCE ADR
INX D ;INCREMENT DESTINATION ADR
DCR B ;DECREMENT MOVE COUNTER
JNZ MOVER ;NOT DONE, DO MORE
RET
;
FILNAM DB 1 ;DRIVE NAME 1=A
DB '$$$ SUB' ;NAME OF SUBMIT FILE
DB 0 ;SET EXTENT NR TO ZERO
;
COMNAM DB NAMLEN -2 AND 0FFH ; ACTUAL LENGTH OF COMMAND
DB 'DIR' ;PUT COMMAND HERE
DB 0 ;END WITH ZERO
NAMLEN EQU $-COMNAM ;LENGTH OF NAME
;
END