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
/
MODEMS
/
MODEM
/
INTRTRAN.LBR
/
KTRANS.AQM
/
KTRANS.ASM
Wrap
Assembly Source File
|
2000-06-30
|
18KB
|
601 lines
;THIS VERSION DOES NOT CHANGE THE BAUD RATE. THIS MUST BE SET BEFORE ENTERING
;THIS PROGRAM.
;THIS IS A PACKAGE FOR FILE TRANSFER BETWEEN CP/M COMPUTERS. IT IS
;DESIGNED SO THAT ALMOST ANY TYPE OF FILE CAN BE TRANSFERRED. CODES
;BELOW 20 AND ABOVE 7F ARE TRANSFERRED AS DOUBLE BYTES USING THREE SPECIAL
;SIGNALLING CODES (11H, 12H, AND 13H). THIS ALLOWS FOR THE FASTEST TRANSFER
;FOR MOST TYPES OF FILES INCLUDING OBJECT FILES SINCE DOUBLE BYTES ARE ONLY
;NECESSARY FOR OUT OF RANGE CODES.
;THIS PROGRAM MUST RESIDE ON BOTH THE SYSTEMS WISHING TO TRANSFER ESPECIALLY
;IF OBJECT FILES ARE TO BE TRANSFERRED, DUE TO THE UNIQUE FORMAT.
;******************************************************
;* THIS VERSION IS FOR THE BIG BOARD SERIAL CHANNEL A *
;******************************************************
;
;
;
ASEG ;DEFINE AN ABSOLUTE SEGMENT
ORG 0100H ;ORIGINED FOR START OF CP/M.
;
CALL MES0 ;OUTPUT INITIAL HELP MESSAGE.
CALL INIT ;INITIALIZE SERIAL PORT A.
;
;
POLLOP: MVI C,06H ;CHECK CONSOLE STATUS TO SEE IF CHAR IN.
MVI E,0FFH ; " " "
CALL 0005H ; " " "
CPI 00H ; " " "
JZ NOCHAR ;IF NONE DO NOT TRANSMIT.
;
;
CPI 03H ;IF ^C END PROGRAM.
JZ 0000H ; "
;
CPI 08H ;IF ^H DISPLAY HELP MESSAGE.
JNZ NXT1 ; " "
CALL MES0 ; " "
JMP POLLOP ;RE-LOOP.
;
NXT1: CPI 12H ;IF ^R RECEIVE FILE FROM REMOTE.
JNZ NXT2 ; " "
CALL RECEIV ; " "
JMP POLLOP ;RE-LOOP.
;
NXT2: CPI 14H ;IF ^T SEND FILE TO REMOTE.
JNZ NXT3 ; " "
CALL SEND ; " "
JMP POLLOP ;RE-LOOP.
;
NXT3: CALL TXDATA ;OUTPUT CHARACTER ON SERIAL PORT A.
;
;
NOCHAR: CALL RXDATA ;CHECK FOR RECEIVE DATA.
JZ POLLOP ;IF NONE JUST RE-LOOP.
;
MVI C,06H ;SEND CHARACTER TO CONSOLE.
MOV E,A ; " "
CALL 0005H ; " "
;
JMP POLLOP ;KEEP LOOPING.
PAGE
;THIS IS THE RECEIVE ROUTINE. WHEN CALLED IT PROMPTS THE USER FOR THE
;FILE NAME AND THEN CAUSES A TRANSFER FROM THE REMOTE COMPUTER TO THIS
;SYSTEM. UPON FINISHING IT EXECUTES A RETURN TO THE MAIN LOOP IN ORDER TO
;ACCEPT FURTHER COMMANDS.
;
;
;
RECEIV: CALL MES2 ;OUTPUT CP/M FILE NAME MESSAGE.
CALL SETFCB ;LOAD FCB WITH FILE NAME ETC.
JNZ ERROR ;PRINT ENTRY ERROR MESSAGE & RETURN.
;
;
MVI C,0FH ;OPEN FILE.
LXI D,005CH ; "
CALL 0005H ; "
;
CPI 0FFH ;IF ACC IS FF FILE NOT FOUND,
JZ MAKER ;SO JUMP AND MAKE NEW FILE.
;
;
FINLOP: CALL MES8 ;OUTPUT OVERWRITE Y/N MESSAGE.
MVI C,01H ;READ CONSOLE CHARACTER.
CALL 0005H ; "
CPI 'N' ;IF NO OUTPUT ABORT MESSAGE.
JZ MES9 ; " "
CPI 'Y' ;IF YES CONTINUE AND LOAD FILE,
JNZ FINLOP ;OTHERWISE RE-LOOP UNTIL Y OR N.
;
MVI C,13H ;DELETE OLD FILE.
LXI D,005CH ; "
CALL 0005H ; "
;
MAKER: MVI C,16H ;MAKE NEW FILE.
LXI D,005CH ; "
CALL 0005H ; "
;
CPI 0FFH ;IF ACC IS FF NO SPACE IS LEFT.
JZ MES7 ; " "
;
;
CALL MES5 ;OUTPUT RECEIVING MESSAGE.
;
TRANSX: LXI H,0080H ;PREPARE TO INPUT 128 BYTE BLOCK.
;
PUTLOP: CALL RX800 ;INPUT CHARACTER.
JZ TERMIN ;IF ^Z DETECTED TERMINATE.
;
MOV M,A ;STORE INPUT IN DISK TRANSIENT MEMORY.
;
INR L ;INCREMENT THE MEMORY POINTER.
JNZ PUTLOP ;STOP IF L OVERFLOWS, OTHERWISE KEEP LOOPING.
;
;
MVI C,15H ;WRITE FILE SEQUENTIALLY.
LXI D,005CH ; "
CALL 0005H ; "
;
CPI 00H ;IF ACC IS NOT ZERO THEN
JNZ MES7 ;NO SPACE IS LEFT ON DISK.
JMP TRANSX ;RE-LOOP AND INPUT NEXT 128 BYTE BLOCK.
;
;
;
TERMIN: MVI M,' ' ;PUT ASCII SPACES IN REST OF BLOCK.
INR L ; " "
JNZ TERMIN ; " "
;
MVI C,15H ;WRITE FILE SEQUENTIALLY.
LXI D,005CH ; "
CALL 0005H ; "
;
MVI C,10H ;CLOSE FILE.
LXI D,005CH ; "
CALL 0005H ; "
;
CALL MES6 ;OUTPUT "FINISHED" MESSAGE.
RET ;RETURN TO CALLING PROGRAM.
PAGE
;THIS IS THE SEND ROUTINE. WHEN CALLED IT PROMPTS THE USER FOR THE FILE
;NAME AND THEN CAUSES A TRANSFER TO THE REMOTE COMPUTER FROM THIS
;SYSTEM. UPON FINISHING IT EXECUTES A RETURN TO THE MAIN LOOP IN ORDER TO
;ACCEPT FURTHER COMMANDS.
;
;
;
SEND: CALL MES2 ;OUTPUT CP/M FILE NAME MESSAGE.
CALL SETFCB ;LOAD FCB WITH FILE NAME ETC.
JNZ ERROR ;PRINT ENTRY ERROR MESSAGE & RETURN.
;
MVI C,0FH ;OPEN FILE.
LXI D,005CH ; "
CALL 0005H ; "
;
CPI 0FFH ;IF ACC IS FF FILE NOT FOUND.
JNZ FOUND ; " "
CALL MES3 ;OUTPUT FILE NOT FOUND MESSAGE.
RET ;RETURN TO CALLING PROGRAM.
;
;
FOUND: CALL MES4 ;OUTPUT SENDING MESSAGE.
;
TRANS: MVI C,14H ;READ FILE SEQUENTIALLY.
LXI D,005CH ; "
CALL 0005H ; "
;
CPI 00H ;IF ACC IS NOT ZERO END OF FILE,
JNZ STOPER ;SO SEND TERMINATION CHARACTERS ETC.
;
;
LXI H,0080H ;PREPARE TO OUTPUT 128 BYTE BLOCK.
;
TRNLOP: MOV A,M ;SEND CHARACTER TO REMOTE.
CALL TX800 ; " "
;
INR L ;POINT AT NEXT LOCATION FOR TRANSFER.
JNZ TRNLOP ;IF L = 00 BLOCK IS TRANSFERRED, SO
JMP TRANS ;JUMP AND PICK UP NEXT 128 BYTE BLOCK.
;
;
STOPER: MVI A,1AH ;SEND ^Z TO TERMINATE FILE TRANSFER.
CALL TXDATA ; " "
CALL MES6 ;OUTPUT "FINISHED" MESSAGE.
RET ;RETURN TO CALLING PROGRAM.
PAGE
;THIS ROUTINE PREPARES THE FCB WITH DATA INPUT FROM THE KEYBOARD. IT RETURNES
;WHEN A CARRIAGE RETURN IS RECEIVED, THE FCB HAVING BEING LOADED WITH THE
;RELEVANT FILE NAME AND DISK DRIVE NUMBER.
;THE ROUTINE WAITS FOR A CHARACTER, IF IT IS A COLON THE PREVIOUS CHARACTER
;IS USED TO SET THE SELECTED DRIVE. IF A COLON IS NOT FOUND THE
;DEFAULT DRIVE IS SELECTED. NEXT CHARACTERS IMMEDIATELY AFTER THE COLON
;ARE LOADED INTO FCB LOCATIONS 1 TO 8 (MAX OF 8). FINALLY A FULL STOP IS
;SEARCHED FOR AND THE FIRST THREE CHARACTERS LOADED INTO THE THREE FILE TYPE
;BYTES. ENTRY ERRORS ARE FLAGGED BY THE ZERO BIT BEING CLEAR ON RETURN.
;
;
SETFCB: LXI H,005CH ;PUT BLANKS UP TO 0067H.
CLRLOP: MVI A,' ' ; "
MOV M,A ; "
MOV A,L ; "
INX H ; "
CPI 67H ; "
JNZ CLRLOP ; "
;
ZERLOP: MVI A,00H ;PUT ZERO IN REST.
MOV M,A ; "
MOV A,L ; "
INX H ; "
CPI 7FH ; "
JNZ ZERLOP ; "
;
;
LXI H,005CH ;SET HL TO POINT AT BEGINNING OF FCB.
MVI M,00H ;SET THE DRIVE CODE TO DEFAULT.
;
FCBLOP: PUSH H ;SAVE VITAL REGISTER PAIRS ON STACK.
MVI C,01H ;SE╘ U╨ T╧ US┼ BDO╙ CONSOL┼ INPUT FUNCTION.
CALL 0005H ;CALL BDOS.
POP H ;RESTORE VITAL REGISTERS FROM STACK.
;
CPI ' ' ;IGNORE A SPACE.
JZ FCBLOP ; "
;
CPI ':' ;IF A COLON SET DRIVE CODE AND RESET POINTER.
JZ COLON ;OTHERWISE CHECK FOR CARRIAGE RETURN.
;
CPI 0DH ;IF CARRIAGE RETURN END PROGRAM.
RZ ; " "
;
CPI '.' ;IF FULL STOP INPUT FILE TYPE.
JZ FITYPE ; " "
;
MOV C,A ;PUT CHARACTER IN REG C.
INX H ;INCREMENT THE FCB POINTER
MOV A,L ;AND ENSURE IT IS NOT 0065H.
CPI 65H ; " "
JZ SIGERR ;SIGNAL ENTRY ERROR.
;
MOV M,C ;STORE CHARACTER IN FCB.
JMP FCBLOP ;RE-LOOP FOR NEXT CHARACTER.
;
;
;
COLON: MOV A,M ;PICK UP DRIVE CHARACTER.
ORA A ;IF ZERO NO CHAR BEFORE COLON.
JZ FCBLOP ; " "
DCR A ;FIX DRIVE CODE.
ANI 00001111B ; "
INR A ; "
;
LXI H,005CH ;PLACE DRIVE CODE IN FCB LOCATION 0.
MOV M,A ; " " "
JMP FCBLOP ;RE-LOOP FOR NEXT CHARACTER.
;
;
;
FITYPE: LXI H,0064H ;POINT HL AT BEGINNING OF FILE TYPE - 1.
;
TYPLOP: PUSH H ;SAVE VITAL REGISTER PAIRS ON STACK.
MVI C,01H ;SE╘ U╨ T╧ US┼ BDO╙ CONSOL┼ INPUT FUNCTION.
CALL 0005H ;CALL BDOS.
POP H ;RESTORE VITAL REGISTERS FROM STACK.
;
CPI 0DH ;IF CARRIAGE RETURN END ROUTINE.
RZ ; " "
;
MOV C,A ;PUT CHARACTER IN REG C.
INX H ;INCREMENT THE FCB POINTER
MOV A,L ;AND ENSURE IT IS NOT 0068H.
CPI 68H ; " "
JZ SIGERR ;SIGNAL ENTRY ERROR.
;
MOV M,C ;STORE CHARACTER IN FCB.
JMP TYPLOP ;RE-LOOP FOR NEXT CHARACTER.
;
;
SIGERR: MVI A,80H ;CLEAR THE ZERO BIT.
DCR A ; "
RET ;RETURN TO CALLING PROGRAM.
PAGE
;THIS ROUTINE OUTPUTS A STRING FROM MEMORY STARTING AT THE ADDRESS POINTED
;TO BY THE REGISTER PAIR HL AND ENDING AT THE LOCATION CONTAINING FF.
;
;
;
STRING: MOV A,M ;LOAD ACC WITH CHARACTER.
CPI 0FFH ;IF CHARACTER FF RETURN.
RZ ; "
;
CALL TX800 ;SEND CHARACTER TO REMOTE.
INX H ;INC MEMORY POINTER AND,
JMP STRING ;RE-LOOP.
PAGE
;THIS ROUTINE OUTPUTS A STRING OF LENGTH N, WHERE N IS CONTAINED IN THE
;LOCATION POINTED TO BY HL.
;THE STRING STARTS AT THE LOCATION POINTED TO BY HL + 1.
;
;
;
OUTBUF: MOV B,M ;LOAD B AS A LOOP COUNTER.
;
OUTLOP: INX H ;OUTPUT CHARACTER TO REMOTE.
MOV A,M ; "
CALL TX800 ; "
DCR B ;LOOP UNTIL B IS ZERO.
JNZ OUTLOP ; "
;
RET ;RETURN TO CALLING PROGRAM.
;
;
;
KEYBUF: DB 0EH,00H ;DEFINE KEYBOARD INPUT BUFFER (MAX = 14)
DB ' ' ; " " "
DB ' ' ; " " "
PAGE
;THIS ROUTINE IS USED TO TRANSMIT DATA TO THE REMOTE COMPUTER.
;TO ALLOW FOR DISK TRANSFERS AT THE REMOTE END IT ALLOWS FOR "ACK" PROTOCOL.
;THIS ROUTINE ONLY TRANSMITS A CHARACTER AFTER AN "ACK" IS RECEIVED. WHEN
;THE "ACK" IS RECEIVED CONTROL WILL BE RETURNED TO THE CALLING PROGRAM.
;TO USE THE ROUTINE THE ACCUMULATOR IS LOADED WITH THE CHARACTER TO BE SENT,
;AND THIS ROUTINE IS CALLED.
;THIS ROUTINE ALSO CAUSES THE REMAPPING OF THE CODES TO ALLOW TRANSMISSION
;OF OUT OF RANGE CHARACTERS USING DOUBLE BYTES. MAPPING IS AS FOLLOWS:
;
; (DC1) 11H ---------- CODES 00H TO 1FH
; (DC2) 12H ---------- CODES 80H TO 9FH
; (DC2) 13H ---------- CODES A0H TO FFH
;
;
;
TX800: PUSH PSW ;SAVE DATA TO BE TRANSMITTED ON THE STACK.
PUSH PSW ; " " "
PUSH PSW ; " " "
;
AKWAIT: CALL RXDATA ;WAIT FOR AN "ACK".
JZ AKWAIT ; "
CPI 06H ; "
JNZ AKWAIT ; "
POP PSW ;RESTORE DATA TO BE TRANSMITTED.
;
CPI 20H ;IF DATA LESS THAN 20 OUTPUT DC1 FIRST.
JNC RAWDAT ; " " "
MVI A,11H ; " " "
CALL TXDATA ; " " "
POP PSW ;ADD 20 TO DATA THEN,
ADI 20H ; "
JMP DATOUT ;JUMP AND OUTPUT DATA.
;
RAWDAT: CPI 80H ;IF DATA LESS THAN 80 JUST OUTPUT DATA.
JNC TRYDC2 ; " " "
POP PSW ;RESTORE DATA THEN,
JMP DATOUT ;JUMP AND OUTPUT DATA.
;
TRYDC2: CPI 0A0H ;IF DATA LESS THAN A0 OUTPUT DC2 FIRST.
JNC TRYDC3 ; " " "
MVI A,12H ; " " "
CALL TXDATA ; " " "
POP PSW ;ADD A0 TO DATA THEN,
ADI 0A0H ; "
JMP DATOUT ;JUMP AND OUTPUT DATA.
;
TRYDC3: MVI A,13H ;IF DATA LESS THAN 100 OUTPUT DC3 FIRST.
CALL TXDATA ; " " "
POP PSW ;ADD 80 TO DATA THEN,
ADI 80H ; "
DATOUT: CALL TXDATA ;SEND DATA TO THE REMOTE COMPUTER.
;
;
TXRETN: POP PSW ;RESTORE ACCUMULATOR AND,
RET ;RETURN TO CALLING PROGRAM.
PAGE
;THIS ROUTINE DOES THE INVERSE OF TX800. IT BASICALLY RECEIVES DATA AND
;PLACES IT IN THE ACCUMULATOR. WHERE THE SPECIAL CODES DC1, DC2 AND DC3
;ARE RECEIVED THE ROUTINE WAITS FOR THE SECOND CHARACETR AND CAUSES THE
;NECESSARY CONVERSION TO AN 8 BIT QUANTITY. UPON EXIT IF THE ZERO BIT IS
;SET A ^Z HAS BEEN DETECTED.
;
;
;
RX800: MVI A,06H ;OUTPUT AN "ACK".
CALL TXDATA ; "
;
RXWAIT: CALL RXDATA ;WAIT FOR CHARACTER TO BE RECEIVED.
JZ RXWAIT ; " "
;
CPI 1AH ;IF ^Z RECEIVED EXIT WITH ZERO BIT SET.
RZ ; " " "
;
CPI 11H ;IF DC1 RECEIVED WAIT FOR NEXT CHAR & ADD E0.
JNZ RXDC2 ; " " " "
RXWAI1: CALL RXDATA ; " " " "
JZ RXWAI1 ; " " " "
ADI 0E0H ; " " " "
JMP RXEND ;JUMP AND EXIT WITH DATA.
;
RXDC2: CPI 12H ;IF DC2 RECEIVED WAIT FOR NEXT CHAR & ADD 60.
JNZ RXDC3 ; " " " "
RXWAI2: CALL RXDATA ; " " " "
JZ RXWAI2 ; " " " "
ADI 60H ; " " " "
JMP RXEND ;JUMP AND EXIT WITH DATA.
;
RXDC3: CPI 13H ;IF DC3 RECEIVED WAIT FOR NEXT CHAR & ADD 80.
JNZ RXEND ; " " " "
RXWAI3: CALL RXDATA ; " " " "
JZ RXWAI3 ; " " " "
ADI 80H ; " " " "
;
RXEND: CPI 80H ;CLEAR THE CARRY BIT & RETURN.
RNZ ; " "
CPI 81H ; " "
RNZ ; " "
PAGE
;THESE TWO ROUTINES ARE THE RECEIVE AND TRANSMIT SERIAL DATA ROUTINES.
;TXDATA CAUSES A CHARACTER TO BE SENT AS LONG AS THE TRANSMIT BUFFER IS
;EMPTY. IF IT IS NOT EMPTY THE PROGRAM WILL LOOP UNTIL IT IS. DATA IS PASSED
;TO TXDATA IN THE ACCUMULATOR.
;RXDATA CHECKS THE RECEIVE DATA READY FLAG. IF DATA IS READY IT IS LOADED
;IN THE ACCUMULATOR AND THE ZERO BIT IS CLEAR UPON RETURN, OTHERWISE THE
;ACCUMULATOR CONTENTS ARE INDETERMINATE AND THE ZERO BIT IS SET.
;
;
;
TXDATA: PUSH PSW ;SAVE CHARACTER ON THE STACK.
TXWAIT: IN 06H ;TEST BIT 2 TO SEE IF TX BUFFER IS EMPTY.
ANI 00000100B ; " " "
JZ TXWAIT ;LOOP UNTIL TRANSMITTER IS READY.
POP PSW ;TRANSMIT CHARACTER.
ANI 01111111B ;LIMIT DATA RANGE TO 7 BITS.
OUT 04H ; "
;
RET ;RETURN TO CALLING PROGRAM.
;
;
;
RXDATA: IN 06H ;TEST BIT 0 TO SEE IF DATA AVAILABLE.
ANI 00000001B ; " " "
RZ ;IF NOT AVAILABLE RETURN WITH ZERO BIT SET.
;
IN 04H ;PU╘ RECEIV┼ DAT┴ IN ACCUMULATOR.
CMA ;LIMIT DATA RANGE TO 7 BITS,
ORI 10000000B ;AND CLEAR TO ZERO BIT.
CMA ; "
;
RET ;RETURN TO CALLING PROGRAM.
PAGE
;INITIALIZATION ROUTINE FOR INTERFACES. WHEN INITIALIZATION IS COMPLETE THE
;Z80 SIO IS SET FOR 8 DATA BITS, NO PARITY, AUTOMATIC DCD & CTS AND CLOCK
;DIVIDE BY 16.
;
;
;
INIT: LXI H,SETUP ;POINT HL AT BEGINNING OF UART SET UP TABLE.
MVI D,11H ;SET UP FOR 17 LOOPS.
;
INILOP: MOV A,M ;OUTPUT SET UP BYTE.
OUT 06H ; "
INX H ; "
DCR D ;LOOP 17 TIMES.
JNZ INILOP ; "
RET ;RETURN TO CALLING PROGRAM.
;
;
SETUP: DB 00011000B ;ENSURE CHANNEL RESET.
DB 00011000B ; "
DB 00000001B ;SETUP REG 1 INIT.
DB 00000000B ;WRITE REG 1.
DB 00000010B ;SETUP REG 2 INIT.
DB 00000000B ;WRITE REG 2.
DB 00000011B ;SETUP REG 3 INIT.
DB 11000001B ;WRITE REG 3.
DB 00000100B ;SETUP REG 4 INIT.
DB 01000100B ;WRITE REG 4.
DB 00000101B ;SETUP REG 5 INIT.
DB 11101010B ;WRITE REG 5.
DB 00000110B ;SETUP REG 6 INIT.
DB 00000000B ;WRITE REG 6.
DB 00000111B ;SETUP REG 7 INIT.
DB 00000000B ;WRITE REG 7.
DB 00000000B ;SELECT CHANNEL 0.
PAGE
MES0: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,HATPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
HATPRT: DB 0DH,0AH
DB 'CP/M INTER COMPUTER COMMUNICATION PROGRAM, KAYPRO VERSION'
DB 0DH,0AH
DB 0DH,0AH
DB 'MAKE SURE THAT BOTH COMPUTERS HAVE THEIR BAUD RATES',0DH,0AH
DB 'SET TO THE SAME RATE, WHEN TRANSFERRING A FILE START',0DH,0AH
DB 'UP THE TRANSMIT END FIRST, THE RECEIVE END CONTROLS',0DH,0AH
DB 'THE TRANSFER PROCESS',0DH,0AH
DB 0DH,0AH
DB 0DH,0AH
DB '^T --------- TRANSMIT FILE TO REMOTE',0DH,0AH
DB '^R --------- RECEIVE FILE FROM REMOTE',0DH,0AH
DB '^H --------- DISPLAY THIS HELP MESSAGE',0DH,0AH
DB '^C --------- EXIT TO SYSTEM',0DH,0AH
DB 0DH,0AH
DB 0DH,0AH
DB 'ENTER SELECTION -------> $'
PAGE
MES2: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,COMCPM ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
COMCPM: DB 0DH,0AH
DB 0DH,0AH
DB 'CP/M FILE NAME ------> $'
MES3: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,NOTPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
NOTPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'FILE NOT FOUND',0DH,0AH,'$'
MES4: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,SENPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
SENPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'SENDING FILE TO REMOTE',0DH,0AH,'$'
PAGE
MES5: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,RECPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
RECPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'RECEIVING FILE FROM REMOTE',0DH,0AH,'$'
MES6: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,DUNPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
DUNPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'FINISHED ! ',0DH,0AH,'$'
MES7: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,SPAPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
SPAPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'NO MORE SPACE ON DISK ! ',0DH,0AH,'$'
MES8: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,WISPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
WISPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'DO YOU WISH TO OVERWRITE EXISTING FILE Y OR N ------> $'
PAGE
MES9: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,ABRPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
ABRPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'OPERATION ABORTED ',0DH,0AH,'$'
ERROR: MVI C,09H ;SET UP TO USE BDOS PRINT FUNCTION.
LXI D,ERRPRT ; " " "
CALL 0005H ;CALL BDOS.
RET ;RETURN TO CALLING PROGRAM.
ERRPRT: DB 0DH,0AH
DB 0DH,0AH
DB 'ENTRY ERROR',0DH,0AH,'$'
PAGE
END