; File MSSDEF.H .xlist ; suppress listing in program .sall ; don't list macro expansions version equ 300 ; master version number verdef macro db ' MS-Kermit: 3.00 16 Jan 1990' endm BELL EQU 07H TAB EQU 09H LF EQU 0AH FF EQU 0CH CR EQU 0DH XON EQU 11H XOFF EQU 13H ESCAPE EQU 1BH DEL EQU 7FH BS EQU 08H CTLZ EQU 1AH SOH EQU 01H ; Start of header char SPC EQU 20H SS2 equ 8eh SS3 equ 8fh DCS equ 90h CSI equ 9bh STCHR equ 9ch DOS EQU 21H CONIN EQU 01H CONOUT EQU 02H LSTOUT EQU 05H DCONIO EQU 06H CONINQ EQU 07H ; quiet console input PRSTR EQU 09H CONSTAT EQU 0BH SELDSK EQU 0EH ; Select disk GCURDSK EQU 19H ; Current disk SETDMA EQU 1AH GETDATE EQU 2AH ; Get date GETTIM EQU 2CH ; Get the time of day DOSVER EQU 30H ; dos version # GSWITCH EQU 37H ; undocumented get/set switch character CHDIR EQU 3BH ; change directory CREAT2 EQU 3CH ; create OPEN2 EQU 3DH ; open CLOSE2 EQU 3EH ; close READF2 EQU 3FH ; read WRITE2 EQU 40H ; write DEL2 EQU 41H ; delete LSEEK EQU 42H ; lseek IOCTL EQU 44H ; i/o control GCD EQU 47H ; get current directory ALLOC EQU 48H ; allocate memory FREEMEM EQU 49H ; free memory SETBLK EQU 4AH ; modify allocated memory map EXEC EQU 4BH ; execute task FIRST2 EQU 4EH ; search for first NEXT2 EQU 4FH ; search for next PAREVN EQU 00 ; Even parity PARMRK EQU 01 ; Mark parity PARNON EQU 02 ; No parity. PARODD EQU 03 ; Odd parity PARSPC EQU 04 ; Space parity FLOXON EQU 1113H ; Use XON/XOFF for flow control FLONON EQU 0 ; Don't do flow control DEFHAND EQU XON ; Use XON as default handshake MODCD EQU 80H ; MODEM CD handshake line status responses MODCTS EQU 10H ; MODEM CTS MODDSR EQU 20H ; MODEM DSR ; flags.remflg byte definitions DQUIET EQU 1 ; Display mode, suppress file xfer statistics DREGULAR EQU 2 ; Regular formatted screen display of statistics DSERIAL EQU 4 ; Serial mode (non-formatted screen) D8BIT EQU 8 ; Display chars as 8-bit vs 7-bit quantities DSERVER EQU 10H ; Server mode active, if this bit is set MAXTAK EQU 25 ; Max number of TAKE's allowed DEFMXTRY EQU 5 ; default number of retries on a data packet (63 max) ; Init packet gets three times this number of tries DEFESC EQU 1DH ; The default escape character (Control rt sq bracket) DRPSIZ EQU 94 ; Default receive packet size, regular pkts DSPSIZ EQU 94 ; Default send packet size, regular pkts DSTIME EQU 8 ; Default send time out interval DSQUOT EQU 23H ; Default send (and receive) quote char DQBIN EQU 26H ; Default 8-bit prefix DCHKLEN EQU 1 ; Default checksum length DEFPAR EQU PARNON ; Default parity (none) maxpack equ 2000 ; max packet length. Sets buffer sizes, capabilities bufsiz equ 1536 ; size of serial port input buffer buffsz equ 512 ; size of disk file i/o buffer (buff) cptsiz equ 256 ; size of session capture buffer tbufsiz equ 128 ; size of Take buffers maxwind equ 31 ; max number of window slots macmax equ 100 ; max number of macros ; bit defs for flags.capflg (LOG command) logoff equ 0 ; Off = no or suspended logging logdeb equ 1 ; log debugging (not yet imp) logpkt equ 2 ; log packets sent/received logses equ 4 ; log connect mode session logtrn equ 8 ; log (file) transaction ; Attributes-allowed bits in flags.attflg attchr equ 1 ; File Character-set attdate equ 2 ; File Date/Time attlen equ 4 ; File Length atttype equ 8 ; File Type ; Terminal emulator section ; Kinds of terminals available ttgenrc equ 0 ; Type 0: no emulation done by Kermit ttheath equ 1 ; Type 1: Heath-19 ttvt52 equ 2 ; Type 2: VT52 ttvt100 equ 3 ; Type 3: VT102 ttvt320 equ 4 ; Type 4: VT320 tttek equ 5 ; Type 5: Tektronix 4010 TTTYPES equ 6 ; Number of terminal types defined ; DEC emulator status flags (bits in words vtemu.vtflgst and vtemu.vtflgop) anslnm equ 1H ; ANSI line feed/new line mode decawm equ 2H ; DEC autowrap mode decscnm equ 80H ; DEC screen mode decckm equ 200H ; DEC cursor keys mode deckpam equ 400H ; DEC keypad application mode decom equ 800H ; DEC origin mode deccol equ 1000H ; DEC column mode (0=80 col) decanm equ 2000H ; ANSI mode dececho equ 4000H ; ANSI local echo on (1 = on) ; Terminal SETUP mode flags (joint with bits above, some name dups) vsnewline equ 1H ; ANSI new line (0 = off) vswrap equ 2H ; Line wrap around (0 = no wrap) vsnrcm equ 4H ; National Rep Char set (0=none) vswdir equ 8H ; Writing direction (0=left, 1 right) vskeyclick equ 10H ; Keyclick (0 = off) vsmarginbell equ 20H ; Margin bell (0 = off) vscursor equ 40H ; Cursor (0 = block, 1 = underline) vsscreen equ 80H ; Screen (0 = normal, 1 = rev. video) vscntl equ 100h ; 8 or 7 bit controls (1 = 8-bit) ; VTxxx defaults for SETUP ; Note: Tab stops default to columns 9, 17, 25, 33, etc ; ; VSDEFAULTS holds Kermit startup time settings for the VT100 emulator ; Configure it by adding together names from the setup mode flags above ; to turn on features (they default to being off if not mentioned). ; Set the kind of terminal by placing a ttxxxx name in VTFLGS in the ; FLGINFO structure well below. vsdefaults equ 0+vscursor ; + your favorite conditions emulst struc ; structure for terminal emulator global data vtflgst dw 0 ; VT100 setup flags vtflgop dw 0 ; VT100 runtime flags, like setup flags vttbs dw 0 ; pointer to default tab stops vttbst dw 0 ; pointer to tab stops (both in mszibm) vtchset db 15 ; value of default character set (15=Latin-1) vtchop db 15 ; value of operational char set att_ptr dw 0 ; pointer to video attributes: norm, rev emulst ends ; end of terminal emulator section ; Structure definitions ifdef save_mem2 ; define only for Xenix builds save_mem equ 1 ; for Xenix endif ifndef save_mem2 ; for regular DOS builds ; Command parser information cmdinfo struc cmrprs dw 0 cmostp dw 0 cmprmp dw 0 ; Address of prompt cmwhite db 0 ; non-zero to permit leading whitespace cmcr db 0 ; Say whether bare CR is allowed cmper db 0 ; Allow literal backslash-percent in command cmquiet db 0 ; non-zero for no echoing cmkeep db 0 ; non-zero to keep Take/Macro open after EOF cmblen db 0 ; length of caller's cmtxt receiving buffer impdo db 0 ; non-zero for keyword search failure to use DO cmd cmdinfo ends ; Command parser equates cmkey equ 1 ; parse a keyword cmeol equ 4 ; parse a CR end of line character cmline equ 5 ; parse line of text up to CR cmword equ 6 ; parse an arbitrary word endif ; Flags information flginfo struc belflg db 1 ; Use bell comflg db 1 ; Use COM1 by default abfflg db 1 ; Discard incoming file if abort debug db 0 ; Debugging mode (default off) flwflg db 0 ; File warning (collision) flag (default rename) extflg db 0 ; Exit flag (default off) vtflg db ttvt320 ; term emulation type, default cxzflg db 0 ; ^X/^Z to interrupt file x-fer xflg db 0 ; Seen "X" packet eoflag db 0 ; EOF flag; non-zero on EOF capflg db 0 ; On if capturing data takflg db 0 ; On if echoing commands of TAKE file timflg db 1 ; Say if are timing out or not destflg db 1 ; Incoming files destination: disk or printer eofcz db 0 ; ^Z signals eof if non-zero remflg db DREGULAR ; server (remote) mode plus display flag bits modflg db 1 ; non-zero if mode line on attflg db 0ffh ; non-zero if file attributes packets are enabled chrset dw 0 ; ident of file character set (437=hardware, CP437) unkchs db 0 ; files w/unknown-character-set (0=keep, 1=cancel) xltkbd db 1 ; keyboard character-set translation (1=on, 0=off) flginfo ends ifndef save_mem2 ; Transmission parameters trinfo struc maxdat dw 0 ; Max packet size for send, word for long packets chklen db 1 ; Number of characters in checksum seol db cr ; Send EOL char reol db cr ; Receive EOL char ssoh db soh ; Send start-of-packet character rsoh db soh ; Receive start-of-packet character squote db dsquot ; Send quote character rquote db dsquot ; Receive quote character rptq db 7eh ; Repeat quote character (tilde) spsiz db dspsiz ; Send (regular) packet size rpsiz db drpsiz ; Receive (regular) packet size stime db dstime ; Send timeout. (Don't timeout) rtime db 5 ; Receive timeout sdelay db 0 ; Send delay time (sec) for just SEND command spad db 0 ; Send number of padding char rpad db 0 ; Receive number of padding char spadch db 0 ; Send padding char rpadch db 0 ; Receive padding char ebquot db 'Y' ; Send 8-bit quote character escchr db defesc ; Escape character capas db 2,0 ; Capas bytes (just two for now) windo db 1 ; number of window slots rlong dw drpsiz ; long pkt size we want to receive slong dw maxpack ; long pkt size we could send (negotiated with host) xchset db 0 ; transfer char set (0=hardware) on comms wire xtype db 0 ; file type for xfer (0=text,1=binary,etc) trinfo ends endif ifndef save_mem pktinfo struc datadr dw 0 ; data field address (offset from DS) datlen dw 0 ; length of data field in a packet datsize dw 0 ; length of data field buffer pktype db 0 ; packet type, a letter seqnum db 0 ; packet SEQ number ackdone db 0 ; zero if pkt not ack'ed yet numtry db 0 ; number of tries on this packet pktinfo ends endif filest struc dta db 26 dup(0) ; DOS, 21 resev'd bytes, file attr, 2 each date & time sizelo dw 0 ; DOS, file size double word sizehi dw 0 fname db 13 dup(0) ; DOS, filename, asciiz, with dot. End of DOS section handle dw -1 ; Kermit, file handle string db 64 dup(0) ; Kermit, filename string, including drive and path fstat db 0 ; Kermit, status of Find First DOS call filest ends takinfo struc ; Take file structure taktyp db 0 ; type: 0FEh = valid file handle, 0FFh = a macro takhnd dw 0 ; file handle takbuf dw 0 ; offset of Take buffer takptr dw 0 ; pointer in buffer to next char to read takcnt dw 0 ; number of unread bytes in buffer takctr dw 0 ; COUNT variable for script program control takargc dw 0 ; argument quantity count takinfo ends ; Port Information prtinfo struc baud dw 0 ; Default baud rate ecoflg db 0 ; Local echo flag (default off) parflg db 0 ; Parity flag (default none) floflg db 0 ; If need flow control hndflg db 0 ; If need handshake during file transfer hands db 0 ; Default handshake flowc dw 0 ; Do flow control with XON/XOFF duplex db 0 ; Do full (0) or half (1) duplex comms portrdy db 0 ; Non-zero if comms port is still active prtinfo ends ; ENABLE/DISABLE bits for denyflg cwdflg equ 1 ; deny remote cwd delflg equ 2 ; deny remote del dirflg equ 4 ; deny remote dir hostflg equ 8 ; deny remote host spcflg equ 10H ; deny remote space finflg equ 20H ; deny fin, bye, logo to server getsflg equ 40H ; deny paths in get cmds to server sndflg equ 80H ; deny paths in send cmds to server typflg equ 100H ; deny paths in type pasflg equ 200h ; username/password required kerflg equ 400h ; deny remote kermit tekxflg equ 8000h ; deny automatic Tektronix invokation ifndef save_mem statinfo struc ; statistics, basic information layout prbyte dw 2 dup (0) ; number of bytes received by port psbyte dw 2 dup (0) ; number of bytes sent to port frbyte dw 2 dup (0) ; bytes received fsbyte dw 2 dup (0) ; bytes sent prpkt dw 2 dup (0) ; number of packets received pspkt dw 2 dup (0) ; number of packets sent nakrcnt dw 0 ; count of naks received nakscnt dw 0 ; count of naks sent btime dw 2 dup (0) ; start time (seconds) of transfer etime dw 2 dup (0) ; elapsed time (seconds) of transfer pretry dw 0 ; packet retries xstatus db 0 ; transfer status xname db 64 dup (0) ; alias (send/receive as) filename statinfo ends endif scptinfo struc ; scripts inactv db 0 ; input action value (default proceed) incasv db 0dfh ; input case (default ignore) indfto dw 1 ; input and pause timeout (def 1 sec) inecho db 1 ; echo Input cmd text (0 = no) xmitfill db 0 ; non-zero to TRANSMIT filler for blank line xmitlf db 0 ; non-zero to TRANSMIT LF's xmitpmt db lf ; default prompt for line acknowledgments scptinfo ends ; definitions for terminal handler: termarg struc flgs db 0 ; flags prt db 0 ; port to use (0,1,etc) captr dw 0 ; routine to call with captured data baudb db 0 ; baud rate bits parity db 0 ; parity termarg ends ; bits for flag byte capt equ 40h ; capture output emheath equ 20h ; emulate heath trnctl equ 08h ; translate controls (debug) modoff equ 04h ; mode line off lclecho equ 01h ; local echo mkeyw macro key,value ; widely used data structure local keylen,start start equ $ ; remember start address of structure db keylen,key,'$' ; length of "key", 'key','$' keylen equ $-start-2 ; number of bytes in "key" dw value endm ; ; Note well. The following segment references are in THIS file to provide ; the desired ordering of them in memory. To wit: lowest addresses for ; 'code', followed by 'data', and only then by 'stack'. code segment public 'code' code ends code2 segment public 'code2' code2 ends data segment public 'data' data ends stack segment para stack 'stack' stack ends .list