; MXO-R213.ASM -- TRS-80 Model II overlay file for Mex.  1/11/87
;
; You will want to look this file over carefully. There are a number of
; options that you can use to configure the program to suit your taste.
; This file adapts the TRS-80 Model II (and probably Models 12 and 16)
; computers to MEX.     Requires Pickles & Trout CP/M.
;
;
; Use the "SET" command to change the baudrate when desired.  It starts
; out at 1200 baud when the program is first called up.
;
;
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
; 01/11/87 - Added Parity,Stopbit,Length SET    - Biff Bueffel
; 01/26/86 - Added Mex Set command              - Biff Bueffel
; 06/07/85 - Corrected 9600 baud error {p&t pg. 16.8} - Bob Perigo
; 04/20/85 - Baud change with P&T 2.2m system functions - Bob Perigo
; 11/11/83 - Renamed to M7R2-1.ASM, no changes  - Irv Hoff
; 09/18/83 - Modified M712XE.ASM for
;            TRS-80 Model II and Pickles
;            & Trout CP/M (should also
;            work on Mods 12 and 16)            - Joseph Katz
;
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
;
BELL:           EQU     07H             ;bell
CR:             EQU     0DH             ;carriage return
ESC:            EQU     1BH             ;escape
LF:             EQU     0AH             ;linefeed
TAB:            EQU     09H             ;HORIZONTAL TAB
;
YES:            EQU     0FFH
NO:             EQU     0
;
; MEX service processor stuff
;
MEX     EQU     0D00H           ;address of the service processor
INMDM   EQU     255             ;get char from port to A, CY=no more in 100 ms
TIMER   EQU     254             ;delay 100ms * reg B
TMDINP  EQU     253             ;B=# secs to wait for char, cy=no char
CHEKCC  EQU     252             ;check for ^C from KBD, Z=present
SNDRDY  EQU     251             ;test for modem-send ready
RCVRDY  EQU     250             ;test for modem-receive ready
SNDCHR  EQU     249             ;send a character to the modem (after sndrdy)
RCVCHR  EQU     248             ;recv a char from modem (after rcvrdy)
LOOKUP  EQU     247             ;table search: see CMDTBL comments for info
PARSFN  EQU     246             ;parse filename from input stream
BDPARS  EQU     245             ;parse baud-rate from input stream
SBLANK  EQU     244             ;scan input stream to next non-blank
EVALA   EQU     243             ;evaluate numeric from input stream
LKAHED  EQU     242             ;get nxt char w/o removing from input
GNC     EQU     241             ;get char from input, cy=1 if none
ILP     EQU     240             ;inline print
DECOUT  EQU     239             ;decimal output
PRBAUD  EQU     238             ;print baud rate
;
PRINT   EQU     9               ;MEX/BDOS print-string function call
;
;
PORT:           EQU     0F4H            ;TRS-80 II serial output port A
MODCTL1:        EQU     PORT+2          ;Modem control port
MODDATP:        EQU     PORT            ;Modem data port
MODCTL2:        EQU     PORT+2          ;Modem status port
MODRCVB:        EQU     01H             ;Bit to test for receive
MODRCVR:        EQU     01H             ;Value when receive ready
MODSNDB:        EQU     04H             ;Bit to test for send
MODSNDR:        EQU     04H             ;Value when send ready
;
SDB8            EQU     01100000B       ;set data bits to 8
SDB7            EQU     01000000B       ;... and 7
SDB6            EQU     00100000B       ;... and 6
SDB5            EQU     0               ;... and 5
RDB             EQU     10011111B       ;reset data bits
DATBITM         EQU     01100000B       ;data bit mask
;
SPOFF           EQU     0               ;set parity to off
SPODD           EQU     00000001B       ;set parity to odd
SPEVEN          EQU     00000011B       ;set parity to even
RPOFF           EQU     11111100B       ;reset parity bits (to off)
PARITYM         EQU     00000011B       ;parity mask
;
SSB1            EQU     00000100B       ;set stop bits to 1
SSB15           EQU     00001000B       ;... and 1.5
SSB2            EQU     00001100B       ;... and 2
RSB             EQU     11110011B       ;reset stop bits
STPBITM         EQU     00001100B       ;stop bit mask
;
               ORG     100H
;
;
; Change the clock speed to suit your system
;
               DS      3       ;(for  "JMP   START" instruction)
;
               DB      NO      ;yes=PMMI S-100 Modem                   103H
               DB      NO      ;yes=HAYES Smartmodem, no=non-PMMI      104H
TPULSE:         DB      'P'     ;T=touch, P=pulse (Smartmodem-only)     105H
CLOCK:          DB      40      ;clock speed in MHz x10, 25.5 MHz max.  106H
                               ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
MSPEED:         DB      5       ;0=110 1=300 2=450 3=600 4=710 5=1200   107H
                               ;6=2400 7=4800 8=9600 9=19200 default
BYTDLY:         DB      5       ;0=0 delay  1=10ms  5=50 ms - 9=90 ms   108H
                               ;default time to send character in ter-
                               ;minal mode file transfer for slow BBS.
CRDLY:          DB      5       ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
                               ;default time for extra wait after CRLF
                               ;in terminal mode file transfer
COLUMS:         DB      5       ;number of DIR columns shown            10AH
SETFLG:         DB      YES     ;yes=user-added Setup routine           10BH
SCRTST:         DB      NO      ;cursor control routine                 10CH
               DB      YES     ;yes=resend a record after any non-ACK  10DH
                               ;no=resend a record after a valid NAK
BAKFLG:         DB      NO      ;yes=change any file same name to .BAK  10EH
CRCDFL:         DB      YES     ;yes=default to CRC checking            10FH
TOGCRC:         DB      YES     ;yes=allow toggling of CRC to Checksum  110H
CVTBS:          DB      NO      ;yes=convert backspace to rub           111H
TOGLBK:         DB      YES     ;yes=allow toggling of bksp to rub      112H
ADDLF:          DB      NO      ;no=no LF after CR to send file in      113H
                               ;terminal mode (added by remote echo)
TOGLF:          DB      YES     ;yes=allow toggling of LF after CR      114H
               DB      NO      ;yes=allow transmission of logon        115H
                               ;write logon sequence at location LOGON
SAVCCP:         DB      YES     ;yes=do not overwrite CCP               116H
               DB      NO      ;yes=local command if EXTCHR precedes   117H
                               ;no=external command if EXTCHR precedes
               DB      YES     ;yes=allow toggling of LOCONEXTCHR      118H
LSTTST:         DB      YES     ;yes=printer available on printer port  119H
XOFTST:         DB      NO      ;yes=check for XOFF from remote while   11AH
                               ;sending a file in terminal mode
XONWT:          DB      NO      ;yes=wait for XON after CR while        11BH
                               ;sending a file in terminal mode
TOGXOF:         DB      YES     ;yes=allow toggling of XOFF checking    11CH
IGNCTL:         DB      YES     ;yes=CTL-chars above ^M not displayed   11DH
NDELAY:         DB      30      ;for future expansion                   11EH
EXITCHR:        DB      'E'-40H ;^E=Exit to Main menu                   11FH
BRKCHR:         DB      '@'-40H ;^@ = Send a 300 ms. break tone         120H
NOCONN:         DB      'N'-40H ;^N = Disconnect from the phone line    121H
LOGCHR:         DB      'L'-40H ;^L = Send logon                        122H
LSTCHR:         DB      'P'-40H ;^P = Toggle printer                    123H
UNSAVE:         DB      'R'-40H ;^R = Close input text buffer           124H
TRNCHR:         DB      'T'-40H ;^T = Transmit file to remote           125H
SAVCHR:         DB      'Y'-40H ;^Y = Open input text buffer            126H
EXTCHR:         DB      '^'-40H ;^^ = Send next character               127H
;
;
               DS      2               ;
IN$MODCTL1:     MVI     A,10H           ;channel 0, reset interrupts
               OUT     MODCTL1
               IN      MODCTL1         ;get the status bits
               RET
               DS      3
;
OUT$MODDATP:    OUT     MODDATP ! RET   ;out modem data port
               DS      7
IN$MODDATP:     IN      MODDATP ! RET   ;in modem data port
               DS      7
ANI$MODRCVB:    ANI     MODRCVB ! RET   ;bit to test for receive ready
CPI$MODRCVR:    CPI     MODRCVR ! RET   ;value of receive bit when rdy
ANI$MODSNDB:    ANI     MODSNDB ! RET   ;bit to test for send ready
CPI$MODSNDR:    CPI     MODSNDR ! RET   ;value of send bit when ready
               DS      6               ;
OUT$MODCTL1:    OUT     MODCTL1 ! RET   ;out modem control port
OUT$MODCTL2:    OUT     MODCTL2 ! RET   ;out modem status port
;
;
               DS      2               ;Not used by MEX.               160H
               DS      6               ;                               162H
GOODBV:         JMP     GOODBY          ;                               168H
INMODV:         JMP     NITMOD          ;go to user written routine     16BH
NEWBDV:         JMP     NEWBAUD         ;Change baudrate                16EH
               RET  !  NOP  !  NOP     ;(by-passes PMMI routine)       171H
               RET  !  NOP  !  NOP     ;(by-passes PMMI routine)       174H
SETUPV:         JMP     SETCMD          ;                               177H
               DS      3               ;Not used by MEX                17AH
VERSNV:         JMP     SYSVER          ;                               17DH
BREAKV:         JMP     SBREAK          ;                               180H
;
;
; Do not change the following six lines.
;
ILPRTV:         DS      3               ;                               183H
INBUFV:         DS      3               ;                               186H
ILCMPV:         DS      3               ;                               189H
INMDMV          DS      3               ;                               18CH
               DS      3               ;                               18FH
TIMERV:         DS      3               ;                               192H
;
;
; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
; entire screen.
;
CLREOS:         LXI     D,EOSMSG
               MVI     C,PRINT
               CALL    MEX
               RET
;
CLS:    LXI     D,CLSMSG
               MVI     C,PRINT
               CALL    MEX
               RET
;
SYSVER:         MVI     C,ILP           ;                               1A7H
               CALL    MEX
               DB      'TRS-2 VERSION (FOR P&T & SERIAL PORT A)'
               DB      CR,LF,0
               RET
;
;
SBREAK:  MVI    A,5
         OUT   MODCTL1
         MVI   A,0F8H          ;SEND A BREAK TONE
         JMP   GOODBY1
;
;
; This routine sends a 300 ms. break tone and sets DTR low for the same
; length of time to disconnect some modems such as the Bell 212A, etc.
;
GOODBY:   MVI   A,5
         OUT   MODCTL1         ;SEND TO THE STATUS PORT
         MVI   A,78H           ;TURN OFF DTR
;
GOODBY1:  OUT   MODCTL1
         MVI   B,3             ;WAIT FOR 300 MS.
         MVI   C,TIMER
         CALL  MEX
         MVI   A,5
         OUT   MODCTL1
         MVI   A,0E8H          ;RESTORE TO NORMAL, 8 BITS, DTR ON, ETC.
         OUT   MODCTL1
         RET
;
;
; TRS-80 II initialization -- Uses P&T service calls for baud change
;
NITMOD:  MVI    B,0             ;PORT CALL
         MVI   C,0             ;SETUP A NO PARITY
         MVI   D,0E6H          ;RTS HI, 1 STOP, 8 BITS, DTR HI
PTCODE:   MVI   E,5H            ;P&T'S SPEED CODE DEFAULT {1200}
         LXI   H,0             ;NO PROTOCOL
         CALL  40H             ;DO IT
         RET
;
;
;
; Setup routine to allow changing modem speed with the SET command.
;
;
;Set command processor
;
SETCMD:   MVI   C,SBLANK        ;ANY ARGUMENTS?
         CALL  MEX
         JC    SETSHO          ;IF NOT, DISPLAY DEFAULT(S)
         LXI   D,CMDTBL
         MVI   C,LOOKUP
         CALL  MEX             ;PARSE THE ARGUMENT
         PUSH  H               ;SAVE ANY PARSED ARGUMENTS ON STACK
         RNC                   ;IF WE HAVE ONE, RETURN TO IT
         POP   H               ;OOPS, INPUT NOT FOUND IN TABLE
SETERR:   CALL  MILP
         DB    CR,LF,'SET command error',CR,LF,0
         RET
;
;Argument table
;
CMDTBL:   DB    '?'+80H                 ;HELP
         DW    SETHELP
         DB    'ORI','G'+80H           ;ORIGINATE MODE
         DW    ORIG
         DB    'ANSWE','R'+80H         ;ANSWER MODE
         DW    ANS
         DB    'TON','E'+80H           ;TONE DIALING
         DW    STTONE
         DB    'PULS','E'+80H          ;PULSE DIALING
         DW    STPULSE
         DB    'DELA','Y'+80H          ;SET DELAY
         DW    DELAY
         DB    'BAU','D'+80H           ;SET BAUD
         DW    STBAUD
         DB    'PARIT','Y'+80H         ;SET PARITY
         DW    STPRTY
         DB    'STOPBIT','S'+80H       ;SET STOPBITS
         DW    STSTOP
         DB    'LENGT','H'+80H         ;SET LENGTH
         DW    STBITS
         DB    0                       ;TABLE TERMINATOR
; "SET (no args): PRINT CURRENT STATISTICS
;
SETSHO:   CALL  MILP
         DB    CR,LF
         DB    'SET values:',CR,LF,CR,LF,0
         CALL  MDSHOW
         CALL  CRLF
         CALL  TPSHOW
         CALL  CRLF
         CALL  DLSHOW
         CALL  CRLF
         CALL  BDSHOW
         CALL  CRLF
         CALL  SHPRTY
         CALL  CRLF
         CALL  SHSTOP
         CALL  CRLF
         CALL  SHBITS
         CALL  CRLF
         RET
;"SET ?" processor
;
SETHELP:  CALL  MILP

         DB    CR,LF,'SET ORIG'
         DB    CR,LF,'SET ANSWER'
         DB    CR,LF,'SET TONE'
         DB    CR,LF,'SET PULSE'
         DB    CR,LF,'SET DELAY     - <N> seconds'
         DB    CR,LF,'SET BAUD      - 300, 600, 1200, 2400, '
         DB    '4800, 9600'
         DB    CR,LF,'SET PARITY    - OFF, EVEN or ODD'
         DB    CR,LF,'SET STOPBITS  - 1, 1.5 or 2'
         DB    CR,LF,'SET LENGTH    - 5, 6, 7 or 8'
         DB    CR,LF,CR,LF,0
         RET
;"SET BAUD" processor
;
STBAUD:   MVI   C,SBLANK        ;
         CALL  MEX
         JC    SETERR          ;
         LXI   D,BDTBL
         MVI   C,LOOKUP
         CALL  MEX             ;Parse argument
         PUSH  H               ;Save any parsed argument addrs on stack
         RNC                   ;If we have one, return to it
         POP   H               ;Oops, input not found in table
         CALL  MILP            ;Tell user input not valid
         DB    CR,LF,'That baudrate not supported by SET command',CR,LF,0
         RET
;
BDTBL:    DB    '30','0'+80H
         DW    OK300
         DB    '60','0'+80H
         DW    OK600
         DB    '120','0'+80H
         DW    OK1200
         DB    '240','0'+80H
         DW    OK2400
         DB    '480','0'+80H
         DW    OK4800
         DB    '960','0'+80H
         DW    OK9600
         DB    0
;
;
OK300:    MVI   A,1
         MVI   H,BD300
         JMP   LOADBD
;
OK600:    MVI   A,3
         MVI   H,BD600
         JMP   LOADBD
;
OK1200:   MVI   A,5
         MVI   H,BD1200
         JMP   LOADBD
;
OK2400:   MVI   A,6
         MVI   H,BD2400
         JMP   LOADBD
;
OK4800:   MVI   A,7
         MVI   H,BD4800
         JMP   LOADBD
;
OK9600:   MVI   A,8
         MVI   H,BD9600
;
LOADBD:   STA   MSPEED          ;CHANGE TIME-TO-SEND TO MATCH BAUDRATE
         MOV   A,H             ;GET P&T PARAMETER
         STA   PTCODE+1        ;PUT IT TO USE
         JMP   NITMOD          ;REINITIALIZE TO NEW BAUDRATE, THEN DONE
;
NEWBAUD:  CPI   1
         JZ    OK300
         CPI   3
         JZ    OK600
         CPI   5
         JZ    OK1200
         CPI   6
         JZ    OK2400
         CPI   7
         JZ    OK4800
         CPI   8
         JZ    OK9600
         RET
;
;       TABLE OF P&T BAUDRATE PARAMETERS
;
BD300:    EQU   3H
BD600:    EQU   4H
BD1200:   EQU   5H
BD2400:   EQU   6H
BD4800:   EQU   7H
BD9600:   EQU   8H      ;the 9 on pg 16.8 of p&t 2.2m manual is typo.
;
BDSHOW:   LDA   MSPEED          ;GET CURRENT BAUD RATE
         MVI   C,PRBAUD        ;LET MEX PRINT IT
         CALL  MEX
         RET
;
;
;SET MODE PROCESSOR
;
ORIG:     XRA   A
         STA   ANSFLG          ;SET ORIG FLAG
         LXI   H,SMO           ;SEND OUT ATS0=0
         CALL  SMSEND
         RET
;
ANS:      MVI   A,0FFH
         STA   ANSFLG          ;SET ANS FLAG
         LXI   H,SMA           ;SEND OUT ATS0=1
         CALL  SMSEND
         RET                   ;EXIT
;
;Send string to the SmartModem
;
SMSEND:   MVI   C,SNDRDY        ;WAIT FOR MODEM READY
         CALL  MEX
         JNZ   SMSEND
         MOV   A,M             ;FETCH NEXT CHARACTER
         INX   H
         ORA   A               ;END?
         RZ                    ;DONE IF SO
         MOV   B,A             ;NO, POSITION FOR SENDING
         MVI   C,SNDCHR        ;NOPE, SEND THE CHARACTER
         CALL  MEX
         JMP   SMSEND
;
MDSHOW:   LDA   ANSFLG
         ORA   A
         JZ    MDORIG
         CALL  MILP
         DB    'Auto-answer mode',0
         RET
MDORIG:   CALL  MILP
         DB    'Originate mode',0
         RET
;
SMO:      DB    'ATS0=0',CR,0
SMA:      DB    'ATS0=1',CR,0
SMD:      DB    'ATS7=60',CR,0
;
;Set dial processor
;
STTONE:   MVI   A,'T'
         JMP   SDIAL1
STPULSE:  MVI   A,'P'
SDIAL1:   STA   TPULSE
         RET
TPSHOW:   LDA   TPULSE
         CPI   'T'
         JZ    TPTONE
         CALL  MILP
         DB    'Pulse Dial',0
         RET
TPTONE:   CALL  MILP
         DB    'Tone Dial',0
         RET
;
;Set delay processor
;
DELAY:    MVI   C,EVALA
         CALL  MEX
         MOV   A,H
         ORA   A
         JNZ   SETERR
         MOV   A,L
         STA   NDELAY
         LXI   H,SMD
         CALL  SMSEND
         RET
DLSHOW:   CALL  MILP
         DB    'Answer Delay is ',0
         LHLD  NDELAY
         MVI   H,0
         MVI   C,DECOUT
         CALL  MEX
         CALL  MILP
         DB    ' seconds',0
         RET
;
;       SET PARITY command: reset transmit/receive parity
;
STPRTY:   MVI   C,SBLANK        ;check for parity code
         CALL  MEX             ;
         JC    SETERR          ;if none, print error
         LXI   D,PARTBL        ;check for proper syntax
         MVI   C,LOOKUP
         CALL  MEX
         JC    SETERR
         LDA   NITMOD+3
         ANI   RPOFF           ;Reset parity bits (also sets parity off)
         PCHL                  ;go to the proper section
;
PREVEN:   ORI   SPEVEN
         JMP   PARTB1
PRODD:    ORI   SPODD
PARTB1:   STA   NITMOD+3        ;Also comes to this point if set parity to off
         JMP   NITMOD
;
SHPRTY:   CALL  MILP
         DB    'Parity:  ',TAB,' ',0
         LDA   NITMOD+3
         ANI   PARITYM
         CPI   SPOFF   ;parity off?
         JNZ   SHPRT1
         CALL  MILP
         DB    'Off',0
         RET
SHPRT1:   CPI   SPODD   ;parity odd?
         JNZ   SHPRT2
         CALL  MILP
         DB    'Odd',0
         RET
SHPRT2:   CALL  MILP            ;
         DB    'Even',0        ;
         RET
;
;       SET PARITY command table
;
PARTBL:   DB    'OF','F'+80H    ;"set parity off"
         DW    PARTB1
         DB    'EVE','N'+80H   ;"set parity even"
         DW    PREVEN
         DB    'OD','D'+80H    ;"set parity odd"
         DW    PRODD
         DB    0               ;<<== end of parity table
;
;-------
;       SET STOPBITS command: reset number of stop bits
;

STSTOP:   MVI   C,SBLANK        ;check for stop bits
         CALL  MEX             ;
         JC    SETERR          ;if none, print error
         LXI   D,STPTBL        ;check for proper syntax
         MVI   C,LOOKUP
         CALL  MEX             ;
         JC    SETERR          ;print error
         LDA   NITMOD+5
         ANI   RSB             ;reset stop bits
         PCHL                  ;go do it

STOP01:   ORI   SSB1
         JMP   STSTP1
STOP15:   ORI   SSB15
         JMP   STSTP1
STOP02:   ORI   SSB2
STSTP1:   STA   NITMOD+5
         JMP   NITMOD
;
;
SHSTOP:   CALL  MILP            ;display stop-bits
         DB    'Stop bits:',TAB,' ',0
         LDA   NITMOD+5                ;
         ANI   STPBITM
         CPI   SSB1
         JNZ   SHSTP2
         CALL  MILP
         DB    '1',0
         RET
SHSTP2:   CPI   SSB2
         JNZ   SHSTP15
         CALL  MILP
         DB    '2',0
         RET
SHSTP15:
         CALL  MILP
         DB    '1.5',0
         RET

;
;       SET STOPBITS command table
;
STPTBL:   DB    '1'+80H         ;"set stop 1"
         DW    STOP01
         DB    '2'+80H         ;"set stop 2"
         DW    STOP02
         DB    '1.','5'+80H    ;1.5 stop bits
         DW    STOP15
         DB    0               ;<<== End of stop-bits table
;
;-------
;       SET LENGTH command: set bits per character


STBITS:   MVI   C,SBLANK        ;check for bits/char
         CALL  MEX             ;
         JC    SETERR          ;if none, print error
         LXI   D,BITTBL        ;check for proper syntax
         MVI   C,LOOKUP
         CALL  MEX
         JC    SETERR
         LDA   NITMOD+5
         ANI   RDB             ;reset data bits (also = 5 bit)
         PCHL                  ;go do function

BIT6:     ORI   SDB6    ;6 bits
         JMP   STBTS1
BIT7:     ORI   SDB7    ;7 bits
         JMP   STBTS1
BIT8:     ORI   SDB8    ;8 bits
STBTS1:   STA   NITMOD+5        ;also comes here if set bits to 5
         JMP   NITMOD

SHBITS:   CALL  MILP            ;display bits/char
         DB    'Bits/char:',TAB,' ',0
         LDA   NITMOD+5                ;
         ANI   DATBITM
         JZ    SHDB5
         CPI   SDB6
         JZ    SHDB6
         CPI   SDB7
         JZ    SHDB7
         CALL  MILP
         DB    '8',0
         RET
SHDB7:    CALL  MILP
         DB    '7',0
         RET
SHDB6:    CALL  MILP
         DB    '6',0
         RET
SHDB5:    CALL  MILP
         DB    '5',0
         RET

;
;       S
ET LENGTH command table

BITTBL:   DB    '5'+80H         ;"set bits 5"
         DW    STBTS1
         DB    '6'+80H         ;"set bits 6"
         DW    BIT6
         DB    '7'+80H         ;7 BITS
         DW    BIT7
         DB    '8'+80h         ;8 bits
         DW    BIT8
         DB    0               ;<<== end of bpc table
;
;General utility routines
;
MILP:     MVI   C,ILP           ;IN-LINE PRINT
         JMP   MEX
         RET
;
CRLF:     CALL  MILP            ;PRINT CARRIAGE RETURN, LINE FEED
         DB    CR,LF,0
         RET
;
;------
;
ANSFLG:   DB    0
EOSMSG:   DB    0FH,14H,16H,1AH,02H,'$'
CLSMSG:   DB    0FH,14H,16H,1AH,0CH,'$'
BAUDBUF:  DB    10,0
         DS    10
;
;-----------------------------------------------------------------------
;
;
; NOTE:  MUST TERMINATE PRIOR TO 0B00H (with Smartmodem)
;
         END