home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / mex / mxo-sb12.aqm / MXO-SB12.ASM
Assembly Source File  |  1985-08-05  |  24KB  |  688 lines

  1. ; MXO-SB12.ASM - Intertec Superbrain overlay file for MEX10.  09/25/84
  2. ;
  3. ; You will want to look this file over carefully. There are a number of
  4. ; options that you can use to configure the program to suit your taste.
  5. ;
  6. ;NOTE:
  7. ;
  8. ; Edit this file for your preferences then follow the "TO USE:" example
  9. ; shown below.
  10. ;
  11. ; Use the "SET" command to change the baud rate, word length, parity,
  12. ; or stop bits for the main port. 
  13. ;
  14. ; Added a LISTST routine so the print buffer stuff would work.
  15. ;
  16. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  17. ;
  18. ; 09/25/84 - Implemented NEWBD: vector        - D.D. Ferguson
  19. ; 07/07/84 - Revised Intertec Superbrain        - G.T. Hasul
  20. ; 05/23/84 - Converted to Intertec Superbrain   - F.E. Clayton
  21. ; 05/15/84 - Converted from MDM7xx to MEX10     - Sandy Berger
  22. ; 03/25/84 - Revised for use with MDM730        - Sandy Berger
  23. ; 11/11/83 - Renamed to M7MD-1.ASM, no changes  - Irv Hoff
  24. ; 07/21/83 - Renamed for use with MDM712        - Irv Hoff
  25. ; 07/01/83 - Revised for use with MDM711        - Irv Hoff
  26. ; 06/22/83 - Revised for use with MDM710        - Irv Hoff
  27. ; 06/22/83 - Altered MDM708DP for Morrow
  28. ;            Micro Decision computers using
  29. ;            an external modem                  - Irv Hoff
  30. ;
  31. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  32. ;
  33. BELL:           EQU     07H             ;bell
  34. TAB:        EQU    09H        ;tab
  35. CR:             EQU     0DH             ;carriage return
  36. ESC:            EQU     1BH             ;escape
  37. LF:             EQU     0AH             ;linefeed
  38. ;
  39. YES:            EQU     0FFH
  40. NO:             EQU     0
  41. ;
  42. PORT:           EQU     058H            ;Superbrain Main port
  43. MODCTL1:        EQU     PORT+1          ;Modem status port
  44. MODDATP:        EQU     PORT            ;Modem data port
  45. MODCTL2:        EQU     PORT+1          ;Modem control port
  46. MODRCVB:        EQU     02H             ;Modem receive bit
  47. MODRCVR:        EQU     02H             ;Modem receive ready
  48. MODSNDB:        EQU     01H             ;Modem send bit
  49. MODSNDR:        EQU     01H             ;Modem send ready bit
  50. ;
  51. ; MEX service processor stuff
  52. ;
  53. INMDM   EQU     255             ;get char from port to A, CY=no more in 100 ms
  54. TIMER   EQU     254             ;delay 100ms * reg B
  55. TMDINP  EQU     253             ;B=# secs to wait for char, cy=no char
  56. CHEKCC  EQU     252             ;check for ^C from KBD, Z=presentèSNDRDY  EQU     251             ;test for modem-send ready
  57. RCVRDY  EQU     250             ;test for modem-receive ready
  58. SNDCHR  EQU     249             ;send a character to the modem (after sndrdy)
  59. RCVCHR  EQU     248             ;recv a char from modem (after rcvrdy)
  60. LOOKUP  EQU     247             ;table search: see CMDTBL comments for info
  61. PARSFN  EQU     246             ;parse filename from input stream
  62. BDPARS  EQU     245             ;parse baud-rate from input stream
  63. SBLANK  EQU     244             ;scan input stream to next non-blank
  64. EVALA   EQU     243             ;evaluate numeric from input stream
  65. LKAHED  EQU     242             ;get nxt char w/o removing from input
  66. GNC     EQU     241             ;get char from input, cy=1 if none
  67. ILP     EQU     240             ;inline print
  68. DECOUT  EQU     239             ;decimal output
  69. PRBAUD  EQU     238             ;print baud rate
  70. ;
  71. ;
  72. CONOUT    EQU    2        ;simulated BDOS function 2: console char out
  73. PRINT    EQU    9        ;simulated BDOS function 9: print string
  74. INBUF    EQU    10        ;input buffer, same structure as BDOS 10
  75. ;
  76.                 ORG     100H
  77. ;
  78.                 DS      3       ;(for  "JMP   START" instruction)
  79. ;
  80. PMMIMODEM:      DB      NO      ;yes=PMMI S-100 Modem                   103H
  81. SMARTMODEM:     DB      NO    ;yes=HAYES Smartmodem, no=non-PMMI      104H
  82. TOUCHPULSE:     DB      'T'     ;T=Touch, P=Pulse (Smartmodem-only)     105H
  83. CLOCK:          DB      40      ;clock speed in MHz x10, 25.5 MHz max.  106H
  84.                                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  85. MSPEED:         DB      1       ;0=110 1=300 2=450 3=600 4=710 5=1200   107H
  86.                                 ;6=2400 7=4800 8=9600 9=19200 default
  87. BYTDLY:         DB      5       ;0=0 delay  1=10ms  5=50 ms - 9=90 ms   108H
  88.                                 ;default time to send character in ter-
  89.                                 ;minal mode file transfer for slow BBS.
  90. CRDLY:          DB      5       ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  91.                                 ;default time for extra wait after CRLF
  92.                                 ;in terminal mode file transfer
  93. NOOFCOL:        DB      5       ;number of DIR columns shown            10AH
  94. SETUPTST:       DB      YES     ;yes=user-added Setup routine           10BH
  95. SCRNTEST:       DB      YES    ;Cursor control routine                 10CH
  96. RETRY:          DB      YES     ;yes=ask user to reset error count      10DH
  97.                                 ;after 10 consecutive errors
  98.                                 ;no=abort after 10 consecutive errors
  99. BAKUPBYTE:      DB      NO      ;yes=change any file same name to .BAK  10EH
  100. CRCDFLT:        DB      YES     ;yes=default to CRC checking            10FH
  101. TOGGLECRC:      DB      YES     ;yes=allow toggling of CRC to Checksum  110H
  102. CONVRUB:        DB      NO      ;yes=convert rub to backspace           111H
  103. TOGGLERUB:      DB      YES     ;yes=allow toggling of rub to bksp      112H
  104. ADDLF:          DB      NO      ;no=no LF after CR to send file in      113H
  105.                                 ;terminal mode (added by remote echo)
  106. TOGGLELF:       DB      YES     ;yes=allow toggling of LF after CR      114H
  107. TRANLOGON:      DB      YES     ;yes=allow transmission of logon        115H
  108.                                 ;write logon sequence at location LOGON
  109. SAVCCP:         DB      YES     ;yes=do not overwrite CCP               116H
  110. LOCONEXTCHR:    DB      YES     ;yes=local command if EXTCHR precedes   117Hè                                ;no=external command if EXTCHR precedes
  111. TOGGLELOC:      DB      YES     ;yes=allow toggling of LOCONEXTCHR      118H
  112. LSTTST:         DB      YES     ;no=using modem on printer port         119H
  113. XOFFTST:        DB      YES     ;yes=checks for XOFF from remote while  11AH
  114.                                 ;sending a file in terminal mode
  115. XONWAIT:        DB      NO      ;yes=wait for XON after CR while        11BH
  116.                                 ;sending a file in terminal mode
  117. TOGXOFF:        DB      YES     ;yes=allow toggling of XOFF checking    11CH
  118. IGNORCTL:       DB      NO      ;yes=CTL-chars above ^M not displayed   11DH
  119. EXTRA1:         DB      0       ;for future expansion                   11EH
  120. EXITCHR:        DB      'E'-40H ;^E = Exit to Main Menu                 11FH
  121. BRKCHR:         DB      '@'-40H ;^@ = Send 50 ms. break tone            120H
  122. NOCONNCT:       DB      'N'-40H ;^N = Disconnect from phone line        121H
  123. LOGCHR:         DB      'L'-40H ;^L = Send logon                        122H
  124. LSTCHR:         DB      'P'-40H ;^P = Toggle printer                    123H
  125. UNSAVE:         DB      'R'-40H ;^R = Close input text buffer           124H
  126. TRANCHR:        DB      'T'-40H ;^T = Transmit file to remote           125H
  127. SAVECHR:        DB      'Y'-40H ;^Y = Open input text buffer            126H
  128. EXTCHR:         DB      '^'-40H ;^^ = Send next character               127H
  129. ;
  130. ;
  131.                 DS      2               ;                               128H
  132. ;
  133. IN$MODCTL1:     IN      MODCTL1     ;in modem control port          12AH
  134. ;        BIT    7,A        ;check for DSR
  135.         DB    0CBH,7FH
  136. ;
  137.         RNZ            ;return if found
  138.         ORI    MODSNDR        ;force send ready if DSR missing
  139.         RET            ;(prevents keyboard lock-up)
  140.                 DS      2
  141. OUT$MODDATP:    OUT     MODDATP ! RET   ;out modem data port            134H
  142.                 DS      7
  143. IN$MODDATP:     IN      MODDATP ! RET   ;in modem data port             13EH
  144.                 DS      7
  145. ANI$MODRCVB:    ANI     MODRCVB ! RET   ;bit to test for receive ready
  146. CPI$MODRCVR:    CPI     MODRCVR ! RET   ;value of receive bit when ready
  147. ANI$MODSNDB:    ANI     MODSNDB ! RET   ;bit to test for send ready
  148. CPI$MODSNDR:    CPI     MODSNDR ! RET   ;value of send bit when ready
  149.                 DS      12
  150. ;
  151. LOGONPTR:       DW      LOGON           ;for user message. *obsolete*   160H
  152.                 DS      3               ;jump to dialing routine        162H
  153. JMP$DISCONNT:   JMP     GOODBYE         ;disconnect the modem           165H
  154. JMP$GOODBYE:    RET ! NOP ! NOP         ;called b-4 exit to cpm         168H
  155. JMP$INITMOD:    JMP     INITMOD         ;initialization at cold start   16BH
  156. JMP$NEWBAUD:    JMP    NEWBD        ;sets baud associated w/phone # 16EH
  157.                 RET  !  NOP  !  NOP     ;(by-passes PMMI routine)       171H
  158.                 RET  !  NOP  !  NOP     ;(by-passes PMMI routine)       174H
  159. JMP$SETUPR:     JMP     SETUPR          ;SET command (user routine)     177H
  160. JMP$SPCLMENU:   DS      3        ;*obsolete with mex*            17AH
  161. JMP$SYSVER:     JMP     SYSVER          ;Overlay's voice in sign-on     17DH
  162. JMP$BREAK:      JMP     SENDBRK         ;send a break                   180H
  163. ;
  164. ;è; Do not change the following six lines.
  165. ;
  166. JMP$ILPRT:      DS      3               ;                               183H
  167. JMP$INBUF       DS      3               ;                               186H
  168. JMP$INLNCOMP:   DS      3               ;                               189H
  169. JMP$INMODEM     DS      3               ;                               18CH
  170. JMP$NXTSCRN:    DS      3               ;                               18FH
  171. JMP$TIMER:      DS      3               ;                               192H
  172. ;
  173. ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
  174. ; entire screen.  Last entry must be 0.  Any other 0's act as NOP's.
  175. ; The SCRNTST option must be set "YES" for these to work.  
  176. ; Each routine must be exactly nine bytes long.
  177. CLREOS:         CALL    ILPRT        ;                194H
  178.             DB    ESC,'~k',0,0
  179.                 RET
  180. ;
  181. CLRSCRN:        MVI     C,ILP        ;                19DH
  182.                 CALL    MEX
  183.                 DB      0CH,0,0
  184.                 RET            ;                1A5H
  185. ;
  186. ;-----------------------------------------------------------------
  187. ;
  188. ;           *** END OF FIXED FORMAT AREA ***
  189. ;
  190. ;-----------------------------------------------------------------
  191. ;
  192. SYSVER:        CALL    ILPRT
  193.                 DB      'Version for Intertec Superbrain'
  194.                 DB      CR,LF,0
  195.                 RET
  196. ;
  197. ; CONOUT FRONT-END ROUTINE TO ELIMINATE RUBS
  198. ;
  199. CONRTN:        MOV    A,C
  200.         CPI    7FH        ;SCREEN OUT RUBS
  201.         RZ
  202. CONEXIT:    JMP    OUTVEC        ;OVERLAID WITH OUTVEC DATA
  203. ;.....
  204. ;
  205. ;
  206. ;-----------------------------------------------------------------------
  207. ;
  208. ; NOTE:  You can change the SYSVER message to be longer or shorter.  The
  209. ;        end of your last routine should terminate by 0B00H if using the
  210. ;       Hayes Smartmodem or by address 0D00H otherwise.
  211. ;
  212. ;-----------------------------------------------------------------------
  213. ;
  214. ;
  215. LOGON:    DB    0        ;*obsolete*
  216. ;.....
  217. ;
  218. ;è;=======================================================================
  219. ;
  220. ; This routine allows a 300 ms. break tone to be sent to reset some
  221. ; time-share computer.
  222. ;
  223. SENDBRK:  MVI   A,1FH           ;SEND BREAK TONE
  224.           JMP   GOODBYE1
  225. ;...
  226. ;
  227. ;
  228. ; This routine sends a 300 ms. break tone or sets DTR low for the same
  229. ; length of time to disconnect some modems such as the Bell 212A, etc.
  230. ;
  231. GOODBYE:  MVI   A,15H           ;SEND BREAK, TURN OFF DTR
  232. ;
  233. GOODBYE1: OUT   MODCTL1         ;SEND TO STATUS PORT
  234.           MVI   B,3             ;WAIT 300 MS.
  235.           MVI   C,TIMER
  236.           CALL  MEX
  237.           MVI   A,37H           ;NORMAL SEND/RECEIVE WITH DTR
  238.           OUT   MODCTL1         ;SEND TO STATUS PORT
  239.           RET
  240. ;.....
  241. ;
  242. ;Intertec initialization ....courtesy Ben Wert and m7sbc.asm
  243. ;
  244. ;BIOS CONTROL LOCATIONS
  245. ; /-----------------------VERIFY THESE LOCATIONS IN YOUR BIOS
  246. ; |                      |   |
  247. ; |                      |   |
  248. ; V                      V   V
  249. BAUD        EQU    0EF00H        ;BIOS MAIN + AUX BAUD RATE
  250. MNMODE        EQU    0EF01H        ;BIOS MAIN PORT MODE
  251. ;
  252. ;
  253. ;
  254. ;8251A CONTROL COMMANDS
  255. RESET        EQU    37H
  256. MODESET        EQU    40H
  257. DTRSET        EQU    02H
  258. ;
  259. BAUDTBL:    DB    0        ;   50 BAUD    00H
  260.         DB    0        ;   75 BAUD    01H
  261.         DB    0        ;  110 BAUD    02H
  262.         DB    0        ;  134 BAUD    03H
  263.         DB    0        ;  150 BAUD    04H
  264.         DB    1        ;  300 BAUD    05H
  265.         DB    3        ;  600 BAUD    06H
  266.         DB    5        ; 1200 BAUD    07H
  267.         DB    5        ; 1800 BAUD    08H
  268.         DB    5        ; 2000 BAUD    09H
  269.         DB    6        ; 2400 BAUD    0AH
  270.         DB    6        ; 3600 BAUD    0BH
  271.         DB    7        ; 4800 BAUD    0CH
  272.         DB    7        ; 7200 BAUD    0DHè        DB    8        ; 9600 BAUD    0EH
  273. ;
  274. INITMOD:    LDA    BAUD        ;ESTABLISH EXISTING BAUD RATE
  275.         ANI    0F0H        ;AND OUT AUX BAUD RATE
  276.         RRC            ;
  277.         RRC            ;GET TABLE INDEX
  278.         RRC            ;
  279.         RRC            ;
  280.         LXI    H,BAUDTBL
  281.         MOV    E,A
  282.         MVI    D,0
  283.         DAD    D
  284.         MOV    A,M
  285.         STA    MSPEED        ;SET MEX BAUD CODE
  286. ;
  287. ; SET BAUD RATE AND PORT MODE
  288. ;
  289. INITMOD1:    MVI    A,MODESET+DTRSET ;PREPARE FOR MODE CHANGE
  290.         OUT    MODCTL1
  291.         NOP ! NOP
  292.         LDA    MNMODE        ;USE MODE FROM BIOS
  293.         OUT    MODCTL1
  294.         NOP ! NOP
  295.         MVI    A,RESET        ;ENABLE USART
  296.         OUT    MODCTL1    
  297.         LDA    BAUD        ;SET BAUD FROM BIOS
  298.         OUT    60H        ;BAUD RATE GENERATOR PORT
  299.         NOP ! NOP
  300.         IN    MODDATP        ;CLEAN OUT I/P BUFFER
  301.         RET
  302. ;
  303. ;.....
  304. ;
  305. ;
  306. SETUPR:   MVI   C,SBLANK        ;ANY ARGUMENTS?
  307.           CALL  MEX
  308.           JC    SETSHO          ;IF NOT, GO DISPLAY BAUD
  309.           LXI   D,CMDTBL
  310.           MVI   C,LOOKUP
  311.           CALL  MEX             ;PARSE ARGUMENT
  312.           PUSH  H               ;SAVE ANY PARSED ARGUMENT ADRS ON STACK
  313.           RNC                   ;IF WE HAVE ONE, RETURN TO IT
  314.           POP   H               ;OOPS, INPUT NOT FOUND IN TABLE
  315. SETERR:      CALL  ILPRT           ;TELL USER INPUT NOT VALID
  316.           DB    CR,LF,'++ Invalid Set Command - Use SET ? for help ++'
  317.       DB    CR,LF,0
  318.           RET
  319. ;
  320. CMDTBL:      DB    'BAU','D'+80H
  321.       DW    SETBAUD
  322.       DB    'PRT','Y'+80H
  323.       DW    SETPRTY
  324.       DB    'WOR','D'+80H
  325.       DW    SETWORD
  326.       DB    'STO','P'+80Hè      DW    SETSTOP
  327.       DB    '?'+80H
  328.       DW    SETHELP
  329.       DB    0
  330. ;
  331. SETSHO:      CALL    PRTBAUD
  332.       CALL    PRTWORD
  333.       CALL    PRTPRTY
  334.       CALL    PRTSTOP
  335.       RET
  336. ;
  337. SETBAUD:  MVI   C,BDPARS        ;ANY ARGUMENTS?
  338.           CALL  MEX
  339.           JC    SETERR          ;IF NOT, GO DISPLAY BAUD
  340.           MOV    E,A        ;CODE TO DE
  341.       MVI    D,0
  342.       LXI    H,BAUDTBL1    ;OFFSET INTO TABLE
  343.       DAD    D
  344.       MOV    A,M        ;FETCH CODE
  345.       ORA    A        ;DO WE SUPPORT THIS RATE
  346.       JZ    SETERR        ;NO - EXIT
  347.       MOV    B,A
  348.       LDA    BAUD        ;GET EXISTING BAUD
  349.       ANI   0FH
  350.       ORA    B        ;OR IN NEW RATE
  351.       STA    BAUD
  352.       MOV    A,E        ;SET MEX BAUD RATE
  353.       STA    MSPEED
  354.       CALL  INITMOD1    ;SET BAUD AND MODE
  355. PRTBAUD:  CALL    ILPRT
  356.       DB    'Baud Rate:',tab,0
  357.       LDA   MSPEED
  358.       MVI    C,PRBAUD
  359.       CALL  MEX
  360.       CALL    CRLF
  361.       RET    
  362. BAUDTBL1: DB    20H,50H,0,60H,0        ;110,300,450,600,710
  363.       DB    70H,0A0H,0C0H,0E0H,0    ;1200,2400,4800,9600,19200
  364. ;
  365. ;
  366. ; NOTE: The NEWBD: vector as implemented here is just a repetition of
  367. ;       code found four lines under SETBAUD. It is repeated here to
  368. ;    allow removal of an extra CRLF when reporting the change in
  369. ;    baud rate.  The code can be removed and the label placed above
  370. ;    without loss of function.   DDF 09/25/84
  371. ;
  372. NEWBD:      MOV    E,A        ;CODE TO DE
  373.       MVI    D,0
  374.       LXI    H,BAUDTBL1    ;OFFSET INTO TABLE
  375.       DAD    D
  376.       MOV    A,M        ;FETCH CODE
  377.       ORA    A        ;DO WE SUPPORT THIS RATE
  378.       JZ    SETERR        ;NO - EXIT
  379.       MOV    B,A
  380.       LDA    BAUD        ;GET EXISTING BAUD
  381.       ANI   0FH
  382.       ORA    B        ;OR IN NEW RATE
  383.       STA    BAUD
  384.       MOV    A,E        ;SET MEX BAUD RATE
  385.       STA    MSPEED
  386.       CALL  INITMOD1    ;SET BAUD AND MODEè          LDA   MSPEED
  387.       MVI    C,PRBAUD
  388.       CALL  MEX
  389.           CALL  ILPRT
  390.           DB    tab,0
  391.           RET    
  392. ;
  393. ;
  394. SETPRTY:  LXI    D,PRTYTBL
  395.       CALL  TSRCH
  396.       JC    SETERR
  397.       LDA    MNMODE
  398.       ANI   0CFH
  399.       ORA   L
  400.       STA    MNMODE
  401.       CALL  INITMOD1
  402. PRTPRTY:  CALL  ILPRT
  403.       DB    'Parity:',TAB,TAB,0
  404.       LDA    MNMODE
  405.       ANI   30H
  406.       RRC
  407.       RRC
  408.       RRC
  409.       RRC
  410.       ADD    A
  411.       MOV    E,A
  412.       MVI    D,0
  413.       LXI    H,PRTYTBL1
  414.       DAD    D
  415.       MOV    E,M
  416.       INX    H
  417.       MOV    D,M
  418.       MVI    C,PRINT
  419.       CALL    MEX
  420.       CALL    CRLF
  421.        RET
  422. PRTYTBL:  DB    'EVE','N'+80H
  423.       DW    30H
  424.       DB    'E'+80H
  425.       DW    30H
  426.       DB    'OD','D'+80H
  427.       DW    10H
  428.       DB    'O'+80H
  429.       DW    10H
  430.       DB    'NON','E'+80H
  431.       DW    0
  432.       DB    'N'+80H
  433.       DW    0
  434.       DB    0
  435. PRTYTBL1: DW    PRTYN
  436.       DW    PRTYO
  437.       DW    PRTYN
  438.       DW    PRTYE
  439. PRTYN:      DB    'None','$'
  440. PRTYO:      DB    'Odd','$'èPRTYE:      DB    'Even','$'
  441. ;
  442. ;
  443. SETWORD:  LXI    D,WORDTBL
  444.       CALL  TSRCH
  445.       JC    SETERR
  446.       LDA    MNMODE
  447.       ANI   0F3H            ;clear old word length
  448.       ORA   L            ;set new word length
  449.       STA    MNMODE            ;save new value in bios
  450.       CALL  INITMOD1        ;initialize port
  451. PRTWORD:  CALL  ILPRT            ;print existing word length
  452.       DB    'Word Length:',TAB,0
  453.       LDA    MNMODE            ;left justify word length bits
  454.       ANI   00CH
  455.       RRC
  456.       RRC
  457.       ADI    35H            ;CONVERT TO ASCII + 5
  458.       MOV    E,A
  459.       MVI    C,CONOUT
  460.       CALL    MEX
  461.       CALL    ILPRT
  462.       DB    ' bits',CR,LF,0
  463.        RET
  464. WORDTBL:  DB    '5'+80H
  465.       DW    0
  466.       DB    '6'+80H
  467.       DW    04H
  468.       DB    '7'+80H
  469.       DW    08H
  470.       DB    '8'+80H
  471.       DW    0CH
  472.       DB    0
  473. ;
  474. ;
  475. SETSTOP:  LXI    D,STOPTBL
  476.       CALL  TSRCH
  477.       JC    SETERR
  478.       LDA    MNMODE
  479.       ANI   03FH            ;CLEAR OUT OLD STOP BITS
  480.       ORA   L            ;SET NEW STOP BITS
  481.       STA    MNMODE            ;SAVE NEW STOP BITS
  482.       CALL  INITMOD1        ;INITIALIZE BAUD AND PORT
  483. PRTSTOP:  CALL  ILPRT
  484.       DB    'Stop Bits:',TAB,0
  485.       LDA    MNMODE
  486.       ANI   0C0H            ;LEFT JUSTIFY STOP BITS
  487.       RLC
  488.       RLC
  489.       ADD    A            ;COMPUTE TABLE OFSET
  490.       MOV    E,A
  491.       MVI    D,0
  492.       LXI    H,STOPTBL1
  493.       DAD    D            ;COMPUTE ENTRY ADDRESS
  494.       MOV    E,Mè      INX    H
  495.       MOV    D,M            ;DE = TABLE DATA
  496.       MVI    C,PRINT
  497.       CALL    MEX
  498.       MVI    C,ILP
  499.       CALL    CRLF
  500.        RET
  501. STOPTBL:  DB    '1'+80H
  502.       DW    40H
  503.       DB    '1.','5'+80H
  504.       DW    80H
  505.       DB    '2'+80H
  506.       DW    0C8H
  507.       DB    0
  508. STOPTBL1: DW    STOP1
  509.       DW    STOP1 
  510.       DW    STOP15
  511.       DW    STOP2
  512. STOP1      DB    '1$'
  513. STOP15      DB    '1.5$'
  514. STOP2      DB    '2$'
  515. ;
  516. SETHELP:  LXI    D,HLPMSG
  517.       MVI    C,PRINT
  518.       CALL    MEX
  519.       RET
  520. ;
  521. HLPMSG:      DB    CR,LF,'SET command, SUPERBRAIN version:',cr,lf
  522.       DB    CR,LF,'SET    (Shows current settings)'
  523.       DB    CR,LF,'SET ?'
  524.       DB    CR,LF,'SET BAUD 110 <or> 300 <or> 600 <or> 1200 ... 9600'
  525.       DB    CR,LF,'SET WORD 5 <or> 6 <or> 7 <or> 8'
  526.       DB    CR,LF,'SET PRTY Even <or> Odd <or> None'
  527.       DB    CR,LF,'SET STOP 1 <or> 1.5 <or> 2'
  528.       DB    CR,LF,'$'
  529. ;
  530. CRLF:        CALL    ILPRT
  531.       DB    CR,LF,0
  532.       RET
  533. ;
  534. ; Compare next input-stream item to table @DE;
  535. ; CY=1 if not found else HL=matched data word
  536. ;
  537. TSRCH:      MVI    C,LOOKUP
  538.       JMP    MEX
  539. ;
  540. ILPRT:      MVI    C,ILP
  541.       JMP    MEX
  542. ;
  543. ; Test the status of the list device since Intertec never implemented this
  544. ; function into the BIOS.
  545. ;
  546. LISTST:      IN    41H        ;GET AUX PORT STATUS
  547.       ANI    81H        ;DSR + TxRDY
  548.       XRI    81H        ;INSURE ALL ARE PRESENT TOGETHERè      JNZ    LISTST1        ;JUMP IF NOT READY
  549.       MVI    A,0FFH        ;SET READY
  550.       RET
  551. LISTST1:  XRA    A        ;SET NOT READY
  552.       RET
  553. ;.....
  554. ;
  555. ;
  556. ;              (END OF INITMOD AND SETUP ROUTINES)
  557. ;=======================================================================
  558. ;               
  559. ;
  560. ;
  561. SPCLMENU: RET
  562. ;
  563. ;=======================================================================
  564. ;
  565. ;
  566. ; NOTE:  MUST TERMINATE PRIOR TO 0B00H (with Smartmodem)
  567. ;                                0D00H (without Smartmodem).
  568. ;
  569. ;
  570. ;
  571. ; This is the patch file for MEX 1.0 -- you may edit this file to change
  572. ; various initial variables. Assemble with ASM or MAC, then use MLOAD
  573. ; to patch the changes into MEX:
  574. ;
  575. ;    ASM MEXPAT10.AAZ            ;assemble the edited file
  576. ;    MLOAD NEWMEX.COM=MEX.OBJ,MEXPAT10    ;patch MEX
  577. ;
  578. ; You may also pull this file into your modem overlay (be sure you in-
  579. ; clude the ORG statement below).
  580. ;
  581. ; The order of the patch variables supported here will not change from
  582. ; version to version (i.e., new items will be added on to the end).
  583. ;
  584. ;
  585.     ORG    0D00H        ;location of patch variables
  586. ;
  587. LF    EQU    10        ;define ASCII linefeed code
  588. ;
  589. ;
  590. ; The following line defines the MEX service call entry point, and
  591. ; is not meant to be changed by the user
  592. ;
  593. MEX:    DS    3        ;MEX service call processor
  594.     DS    3        ;reserved
  595.     DS    1        ;reserved
  596. ;
  597. ; The following line contains the initial free-memory pointer for
  598. ; MEX.  Sophisticated modem overlays requiring additional space may change
  599. ; this pointer (ie, move it higher), and thus "protect" an area of RAM.
  600. ;
  601. MEMRY:    DS    2        ;first free memory pointer
  602. ;è; Following are the lowest-level vectors for console and list I/O used
  603. ; by MEX.  These normally point to routines that save the registers and
  604. ; vector to the appropriate BIOS routines.  Complex applications may
  605. ; need to intercept (or even replace) these routines.  If you do this,
  606. ; be sure to preserve DE, HL and BC.
  607. ;
  608. STSVEC:    DS    2        ;console status vector
  609. INVEC:    DS    2        ;console input vector
  610. OUTVEC:    DS    2        ;console output vector
  611. LVEC:    DS    2        ;list output vector
  612. LSTVEC:    DW    LISTST        ;list status vector
  613. ;
  614. ; The following line defines the location of the default MEX prompt.
  615. ; If you'd like to provide your own initial prompt, add a DW statement
  616. ; pointing to a prompt buffer structured as follows:
  617. ;
  618. ;        DB <max size of buffer>
  619. ;        DB <length of actual prompt>
  620. ;        DB <prompt string>
  621. ;
  622. ; <maxsize> and <length> may be equal (especially if you disable the
  623. ; ID command by setting CHGPMT, below to 0); the ID command will, if
  624. ; left enabled, be limited to the <max size> value.
  625. ;
  626. PROMPT:    DS    2        ;prompt location
  627.     DS    1        ;reserved
  628. TYPLIN:    DB    22        ;for TYPE command: # lines/screen
  629. PAUSFL:    DB    1        ;for TYPE cmd: 1=pause 0=no pause
  630. SEPCHR:    DB    ';'        ;multiple command-line separator
  631. ;
  632. ; following five for SENDOUT command
  633. ;
  634. SOWAIT:    DB    4        ;# seconds waiting for a sendout echo
  635. SOREPL:    DB    8        ;# seconds waiting for initial reply
  636. SOTRIG:    DB    '>'        ;sendout trigger char from remote
  637. CANCHR:    DB    'U'-64        ;sendout char to cancel line to remote
  638. SORTRY:    DB    6        ;sendout # retries
  639. ;
  640. ;
  641. HEXFLG:    DB    0        ;hex/decimal mode
  642. ESCCHR:    DB    05H        ;terminal mode escape char (05H = HERE IS)
  643. NOBELL:    DB    0        ;set to 1 to disable bell
  644. ;
  645. ; Buffer variables.  See BUFFERS.DOC for setup information
  646. ;
  647. PSIZE:    DB    2        ;default=2k
  648. ASIZE:    DB    255        ;"big" capture buffer
  649. XSIZE:    DB    16        ;16K transfer buffer
  650. NSIZE:    DB    1        ;1k for 85 batch files
  651. PRELEN:    DB    40        ;maximum length of PREFIX string
  652. SUFLEN:    DB    40        ;maximum length of SUFFIX string
  653. ;
  654. ; Misc. stuff
  655. ;
  656. CDOSFL:    DB    0        ;non-zero for CDOSèWTECHO:    DB    0        ;non-zero sets "wait-for-echo"
  657. KYSIZE:    DW    400        ;size of keystring area, in bytes
  658. CISFLG:    DB    1        ;non-zero allows CIS file transfers
  659. CISOK:    DB    1        ;non zero allows STAT CIS ON or OFF
  660. CHGPMT:    DB    1        ;non-zero allows ID (prompt chg) command
  661. ERRID:    DB    1        ;non-zero prints ID msg in err msgs
  662. ;
  663. ; by setting the following DB to 0, you can disable the HELP
  664. ; command, freeing up space used by the help file index.
  665. ;
  666. HELPOK:    DB    1        ;non-zero allows HELP command
  667. MEXDU:    DB    0        ;user \/  alternate area for READ,LOAD,INI.MEX
  668.     DB    0        ;drive/\  & HELP.MEX (if SEARCH <>0)
  669. DEBUG:    DB    0        ;debugging in term-mode if non-zero
  670. EXCLSY:    DB    1        ;non-0 excludes $SYS from batchsend, dir
  671. INIMEX:    DB    0        ;non-zero runs INI.MEX (if present) at startup
  672. RTIMER:    DB    1        ;receiver wait: # seconds [Plouff patch]
  673. PQSIZE:    DW    150        ;size of the modem-port queue
  674. PHSIZE:    DB    30        ;phone library size (# entries)
  675. SILENT:    DB    0FFH        ;0=silence multi-line & READ cmd echo
  676. ALERT:    DB    255        ;alert-bell count on CALL complete
  677. EXTEND:    DB    0        ;non-zero: unknown commands goto READ processor
  678. SPLIT:    DB    0        ;non-zero: splits phonelib printout, shows baud
  679. SEARCH:    DB    0        ;search mode 0,1,2,3
  680. ;
  681. ; Following is the GLOBAL secondary options table.  To
  682. ; set an option to global, change its ASCII character to a 0.
  683. ;
  684. RESTT:    DB    'BDLQRSTVX'
  685. ;
  686. ;
  687.     END
  688.