************************** * HEADER FILE FOR XMODEM * ************************** *=====================================* * ASSEMBLY OPTION: TXTMODEM OR XMODEM * EXACTLY ONE OF THESE MUST BE TRUE *=====================================* TXTMO EQU FALSE ;TRUE TO CREATE TXTMODEM XMODM EQU TRUE ;TRUE TO CREATE XMODEM *==================* * ASSEMBLY OPTIONS *==================* IF TXTMO PACFY EQU TRUE ;PRINT PROGRESS PACIFIERS ENDF IF XMODM PACFY EQU FALSE ;DON'T PRINT PROGRESS PACIFIERS ENDF *===============* * SOLOS EQUATES *===============* SOLOS EQU 0C000H ;SOLOS BASE ADDRESS AOUT EQU 1CH ;WRITE CHR IN B TO PSEUDOPORT IN A AINP EQU 22H ;READ FROM PSEUDOPORT A INTO A * PSEUDOPORTS KBDPP EQU 0 ;KEYBOARD VDMPP EQU 0 ;VDM SERPP EQU 1 ;SERIAL PARPP EQU 2 ;PARALLEL USRPP EQU 3 ;USER-WRITTEN *===============* * PTDOS EQUATES *===============* CONST EQU 0BC9CH ;TEST CONSOLE FOR WAITING CHR CONIN EQU 0BCA2H ;GET CONSOLE CHR INTO A CONOT EQU 0BC9FH ;SEND A TO CONSOLE SYS EQU 0BCBCH ;SYSTEM CALL RESET EQU 20 ;RESET SYSTEM COMMAND *===============* * ASCII EQUATES *===============* SOH EQU 1 ;Start of XMODEM block EOT EQU 4 ;End XMODEM session ACK EQU 6 ;XMODEM block acknowledge NAK EQU 15H ;XMODEM block negative ACK CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED ESC EQU 1BH ;ESCAPE *=================* * PROGRAM EQUATES *=================* MSEOF EQU 1AH ;MS-DOS EOF CHR ERLIM EQU 10 ;MAX ERRORS BEFORE GIVING UP BLKSZ EQU 128 ;BYTES/XMODEM BLOCK (128!) CRTRY EQU 3 ;TIMES TO TRY CRC BEFORE REVERTING TO CKSUM IF TXTMO PADCH EQU MSEOF ;TEXT FILES GET PADDED WITH MSDOS EOF ENDF IF XMODM PADCH EQU 0 ;PAD BINARY WITH NULLS ENDF * Timeout values in seconds SOHTO EQU 10 ;sender to send SOH NAKTO EQU 90 ;receiver to send initial NAK ACKTO EQU 60 ;receiver to ACK (or NAK) IF PACFY * Progress pacifiers printed on the console PACACK EQU '+' ;Received an ACK PACNAK EQU '-' ;Received a NAK PACBLK EQU '+' ;Received a good block PACRSD EQU '-' ;Requested a resend ENDF *===================* * MEMORY ALLOCATION *===================* *--------------------------------------------------* * BLKBF (THE BLOCK TRANSFER BUFFER) MUST BE ON 100H * BOUNDARY AND MUST BE A MULTIPLE OF 100H IN SIZE. * tHE DRIVER CODE FOLLOWS IMMEDIATELY AFTER BLKBF. *--------------------------------------------------* ORG 0D000H ;BASE ADDRESS MUST END WITH 00 BLKBF: DS 800H ;BUFFER SIZE MUST END WITH 00 BBMAX EQU $ MAIN EQU $ ;MAIN MEMORY SEGMENT ADDRESS