home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols200 / vol217 / m8mcdos.a86 < prev    next >
Encoding:
Text File  |  1994-07-13  |  14.9 KB  |  545 lines

  1. ;M8MCDOS.A86  -- Overlay file for the CompuPro I3/I4 under MC-DOS 11/22/84
  2. ;
  3. ;
  4. ; This overlay adapts the MDM8xx program to the CompuPro under MC-DOS. This
  5. ; Overlay makes use of the special function call 6 used by the Gifford XIOS.
  6. ;
  7. ; You will want to look this file over carefully. There are a number of
  8. ; options that you can use to configure the program to suit your taste.
  9. ; This file places particular emphasis on using an external modem that
  10. ; is connected to a serial port.  This includes acoustic modems as well
  11. ; as "intelligent" modems such as the Hayes Smartmodem, Racal-Vadic, Bell
  12. ; Dataphone 212A, etc.
  13. ;
  14. ; This overlay is capable of setting the baud rate, disconnecting the
  15. ; modem, and sending breaks.
  16. ;
  17. ;
  18. ;
  19. ;=========================================================================
  20. ;            <<< N O T E >>> 
  21. ; This version does not yet make use of the DELAY system function. A future
  22. ; version will overlay the timing loops in MDM840 and call the CCPM system
  23. ; delay function. THEREfore set the Clock rate to 10 Mhz so that the loops
  24. ; execute fast enough.
  25. ;
  26. ; Leave the console in the TTYS file. And turn the ECHO switch off on the
  27. ; SmartModem to avoid Feedback with the Gifford Login routine. I use the
  28. ; Following Hayes 1200 switch settings:
  29. ;
  30. ;            +---+---+---+---+---+---+---+---+
  31. ;            I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I
  32. ;            +---+---+---+---+---+---+---+---+
  33. ;            I U I U I D I D I D I D I U I D I
  34. ;            +---+---+---+---+---+---+---+---+
  35. ;
  36. ;
  37. ;
  38. ;==========================================================================
  39. ;
  40. ;
  41. ;
  42. ;
  43. ;    TO USE: First edit this file filling in answers for your own
  44. ;        equipment.  Then assemble with ASM86.CMD or equivalent
  45. ;        assembler.  Then use PIP to append the results
  46. ;        of this program to the original MDM8xx.H86 file:
  47. ;
  48. ;        ASM86 M8MCDOS
  49. ;        PIP MDM.H86=MDM830.H86,M8MCDOS.H86
  50. ;        GENCMD MDM 8080 CODE[MFF0]
  51. ;
  52. ;
  53. ; =   =      =   =      =   =      =   =      =   =      =   =      =   =      =   =      =   =
  54. ;
  55. ; 11/23/84 - Original Version            - Alex Soya
  56. ;                          P.O. Box 121
  57. ;                          Melbourne Beach
  58. ;                          Florida 32951
  59. ;
  60. ;
  61. ; =   =      =   =      =   =      =   =      =   =      =   =      =   =      =   =      =   =
  62. ;
  63. BELL    EQU    07H            ;bell
  64. CR    EQU    0DH            ;carriage return
  65. ESC    EQU    1BH            ;escape
  66. LF    EQU    0AH            ;linefeed
  67. ;
  68. YES    EQU    0FFH
  69. NO    EQU    0
  70. ;
  71. ; CCPM function Call equates:
  72. ;
  73. S_BIOS        EQU     50    ; Call BIOS character I/O routines
  74. Q_OPEN        EQU    135    ; Open Que
  75. Q_CREAD        EQU    138    ; Conditional Read Que
  76. DEV_SETFLAG    EQU    133    ; Set Flag
  77. ;
  78. ;
  79. ;
  80. ;
  81. ; Change the following to match your equipment
  82. ;
  83. ;
  84. ; =   =      =   =      =   =      =   =      =   =      =   =      =   =      =   =      =
  85. ;
  86. BASE    EQU    010H            ;base port of CompuPro I3 or I4 cards
  87. UPORT    EQU    BASE+7            ;user (chip select) port
  88. MDM    EQU    1            ;chip that controls modem port
  89. CONS    EQU    1            ;Console used as modem
  90. ;
  91. ;
  92. ;
  93. DPORT    EQU    BASE            ;data port
  94. SPORT    EQU    BASE+1            ;status port
  95. MPORT    EQU    BASE+2            ;mode port
  96. CPORT    EQU    BASE+3            ;control port
  97. ;
  98. TBMT    EQU    01H            ;transmit buffer empty
  99. DAV    EQU    02H            ;data available
  100. ;
  101.     ORG    100H
  102. ;
  103. ; Change the clock speed to suit your system
  104. ;
  105.     RS    3            ;(for  "JMP   START" instruction)
  106. ;
  107. PMMIMODEM    DB    NO        ;yes=PMMI S-100 Modem            103H
  108. SMARTMODEM    DB    YES        ;yes=HAYES Smartmodem, no=non-PMMI    104H
  109. TOUCHPULSE    DB    'T'        ;T=touch, P=pulse (Smartmodem-only)    105H
  110. CLOCK        DB    10        ;clock speed in MHz x10, 25.5 MHz max.    106H
  111.                     ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  112. MSPEED        DB    1        ;0=110 1=300 2=450 3=600 4=710 5=1200    107H
  113.                     ;6=2400 7=4800 8=9600 9=19200 default
  114. BYTDLY        DB    5        ;0=0 delay  1=10ms  5=50 ms - 9=90 ms    108H
  115.                     ;default time to send character in ter-
  116.                     ;minal mode file transfer for slow BBS.
  117. CRDLY        DB    5        ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  118.                     ;default time for extra wait after CRLF
  119.                     ;in terminal mode file transfer
  120. NOOFCOL        DB    5        ;number of DIR columns shown        10AH
  121. SETUPTST    DB    YES        ;yes=user-added Setup routine        10BH
  122. SCRNTEST    DB    YES        ;Cursor control routine            10CH
  123. ACKNAK        DB    YES        ;yes=resend a record after any non-ACK    10DH
  124.                     ;no=resend a record after a valid-NAK
  125. BAKUPBYTE    DB    NO        ;yes=change any file same name to .BAK    10EH
  126. CRCDFLT        DB    YES        ;yes=default to CRC checking        10FH
  127. TOGGLECRC    DB    YES        ;yes=allow toggling of CRC to Checksum    110H
  128. CONVBKSP    DB    NO        ;yes=convert backspace to rub        111H
  129. TOGGLEBK    DB    YES        ;yes=allow toggling of bksp to rub    112H
  130. ADDLF        DB    NO        ;no=no LF after CR to send file in    113H
  131.                     ;terminal mode (added by remote echo)
  132. TOGGLELF    DB    YES        ;yes=allow toggling of LF after CR    114H
  133. TRANLOGON    DB    YES        ;yes=allow transmission of logon    115H
  134.                     ;write logon sequence at location LOGON
  135. RESERVED    DB    YES        ;Reserved for Future Expansion        116H
  136. LOCONEXTCHR    DB    NO        ;yes=local command if EXTCHR precedes    117H
  137.                     ;no=external command if EXTCHR precedes
  138. TOGGLELOC    DB    YES        ;yes=allow toggling of LOCONEXTCHR    118H
  139. LSTTST        DB    YES        ;yes=printer available on printer port    119H
  140. XOFFTST        DB    NO        ;yes=checks for XOFF from remote while    11AH
  141.                     ;sending a file in terminal mode
  142. XONWAIT        DB    NO        ;yes=wait for XON after CR while    11BH
  143.                     ;sending a file in terminal mode
  144. TOGXOFF        DB    YES        ;yes=allow toggling of XOFF checking    11CH
  145. IGNORCTL    DB    NO        ;yes=CTL-chars above ^M not displayed    11DH
  146. EXTRA1        DB    0        ;for future expansion            11EH
  147. EXITCHR        DB    'E'-40H        ;^E = Exit to main menu            11FH
  148. BRKCHR        DB    '@'-40H        ;^@ = Send 300 ms. break tone        120H
  149. NOCONNCT    DB    'N'-40H        ;^N = Disconnect from the phone line    121H
  150. LOGCHR        DB    'L'-40H        ;^L = Send logon            122H
  151. LSTCHR        DB    'P'-40H        ;^P = Toggle printer            123H
  152. UNSAVE        DB    'R'-40H        ;^R = Close input text buffer        124H
  153. TRANCHR        DB    'T'-40H        ;^T = Transmit file to remote        125H
  154. SAVECHR        DB    'Y'-40H        ;^Y = Open input text buffer        126H
  155. EXTCHR        DB    '^'-40H        ;^^ = Send next character        127H
  156. ;
  157. ;
  158.     RS    3            ;                128H
  159. ;
  160. IN@MODCTL1:
  161.     RET                ;in modem control port        12BH
  162.     DB    0,0,0,0,0,0,0,0,0    ; spares
  163. ;
  164. OUT@MODDATP:
  165.     JMP    OMDP            ;out modem data port        135H
  166.     DB    0,0,0,0,0,0,0        ; spares
  167. ;
  168. IN@MODDATP:
  169.     JMP    IMDP            ;in modem data port        13FH
  170.     DB    0,0,0,0,0,0,0        ; spares
  171. ;
  172. ANI@MODRCVB:    RET            ;bit to test for receive ready    149H
  173.         RS    2        ; Nothing to do here for MPM
  174. ;
  175. CPI@MODRCVR:    JMP TSTMODRDY        ;value of rcv. bit when ready    14CH
  176. ;
  177. ;
  178. ANI@MODSNDB:    RET            ;bit to test for send ready    14FH
  179.         RS    2        ; Nothing to do here for MPM
  180. ;
  181. CPI@MODSNDR:    XOR AL,AL        ; test for send ready        152H
  182.         RET            ; Always ready for MPM
  183. ;
  184.     RS    6            ;                156H
  185. ;
  186. OUT@MODCTL1:    RET 
  187.     RS    2            ;out modem control port #2    15BH
  188. ;
  189. OUT@MODCTL2:    RET 
  190.     RS    2            ;out modem control port #1    15EH
  191. ;
  192. LOGONPTR DW    (Offset LOGON)        ;for user message.        161H
  193.     RS    6            ;                163H
  194.  
  195. JMP@GOODBYE:JMP GOODBYE            ;                169H
  196. JMP@INITMOD:JMP INITMOD            ;go to user written routine    16CH
  197.     RET    
  198.     NOP    
  199.     NOP                ;(by-passes PMMI routine)    16FH
  200.     RET    
  201.     NOP    
  202.     NOP                ;(by-passes PMMI routine)    172H
  203.     RET    
  204.     NOP    
  205.     NOP                ;(by-passes PMMI routine)    175H
  206. JMP@SETUPR:    JMP  SETUPR        ;                178H
  207. JMP@SPCLMENU:  JMP  SPCLMENU        ;                17BH
  208. JMP@SYSVER:    JMPS SYSVER        ;make sure this is SHORT Jump    17EH
  209. JMP@BREAK:     JMP  SENDBRK        ;                180H
  210.  
  211. ;
  212. ; Do not change the following six lines.
  213. ;
  214. JMP@ILPRT:
  215.         RS    3        ;                183H
  216. JMP@INBUF:
  217.         RS    3        ;                186H
  218. JMP@INLNCOMP:
  219.         RS    3        ;                189H
  220. JMP@INMODEM:
  221.         RS    3        ;                18CH
  222. JMP@NXTSCRN:
  223.         RS    3        ;                18FH
  224. JMP@TIMER:
  225.         RS    3        ;                192H
  226. JMP@CTYPE:
  227.         RS    3        ;                195H
  228. JMP@KEYIN:
  229.         RS    3        ;                198H
  230.  
  231. ;
  232. ;
  233. ; Routine to clear to end of screen.  If using CLREOS and CLRSCRN, set
  234. ; SCRNTEST to YES at 010AH (above).
  235. ;
  236. CLREOS: CALL    JMP@ILPRT        ;                195H
  237.     DB    ESC,'Y',0,0,0        ;                198H
  238.     RET                ;                19DH
  239. ;
  240. CLRSCRN:CALL    JMP@ILPRT        ;                19EH
  241.     DB    ESC,'*',0,0,0        ;                1A1H
  242.     RET                ;                1A6H
  243. ;
  244. SYSVER: CALL    JMP@ILPRT        ;                1A7H
  245.     DB    'Version for CompuPro running under MC-DOS',CR,LF
  246.     DB    'Configured for console # ','0'+CONS
  247.     DB    CR,LF,0
  248.     RET
  249. ;.....
  250. ;
  251. ;
  252. ;-----------------------------------------------------------------------
  253. ;
  254. ; NOTE:     You can change the SYSVER message to be longer or shorter.  The
  255. ;     end of your last routine should terminate by 0400H (601 bytes
  256. ;     available after start of SYSVER) if using the Hayes Smartmodem
  257. ;     or by address 0C00H (2659 bytes) otherwise.
  258. ;
  259. ;-----------------------------------------------------------------------
  260. ;
  261. ; You can put in a message at this location which can be called up with
  262. ; CTL-L if TRANLOGON has been set TRUE.     You can use several lines if
  263. ; desired.  End with a 0.
  264. ;
  265. LOGON    DB    ' Concurent modeming, its nice to do things'
  266.     DB    ' at the same time',CR,LF,0
  267. ;
  268. ;.....
  269. ;
  270. ;
  271. ;
  272. ;
  273. ;....
  274. ;
  275. ;
  276. ; Add your own routine here to send a byte in AL to Modem Data Port
  277. ;
  278. OMDP:            ; Send a character to the Modem console [MCDOS]
  279.     PUSH DX            ; savem                [MCDOS]
  280.     PUSH CX            ;                [MCDOS]
  281.     PUSH BX            ;                [MCDOS]
  282.     MOV  Byte Ptr UTYPE,2    ; Type = 2 (OUTPUT)        [MCDOS]
  283.     MOV  Byte Ptr ARG1,AL    ; Arg1 = Character to send    [MCDOS]
  284.     MOV  Byte Ptr ARG2,CONS ; Arg2 = Console number        [MCDOS]
  285.     MOV  CL,S_BIOS        ; call xios with function 50    [MCDOS]
  286.     MOV  DX, OFFSET QPB    ; Here is the Parameter Block    [MCDOS]
  287.     INT  224        ; Lets do some work        [MCDOS]
  288.     POP BX            ;                [MCDOS]
  289.     POP CX            ; restore regs            [MCDOS]
  290.     POP DX            ;                [MCDOS]
  291.     RET            ;                [MCDOS]
  292.  
  293. ;
  294. ;
  295. ;....
  296. ;
  297. ; Add your own routine here to read Modem Data Port into AL
  298. ;
  299. IMDP:            ; Get a character from Modem Console    [MCDOS]
  300.     PUSH DX            ; savem                [MCDOS]
  301.     PUSH CX            ;                [MCDOS]
  302.     PUSH BX            ;                [MCDOS]
  303.     MOV  Byte Ptr UTYPE,3    ; Type = 3  (Input)        [MCDOS]
  304.     MOV  Byte Ptr ARG1,CONS ; Arg1 = Console #        [MCDOS]
  305.     MOV  DX, offset QPB    ; Give Parameter Block offset    [MCDOS]
  306.     MOV  CL,S_BIOS        ; Call function 50        [MCDOS]
  307.     INT  224        ; And go to work        [MCDOS]
  308.     POP BX            ;                [MCDOS]
  309.     POP CX            ; restore regs            [MCDOS]
  310.     POP DX            ;                [MCDOS]
  311.     RET            ;                [MCDOS]
  312. ;
  313. ;
  314. ;......
  315. ;
  316. ;
  317. TSTMODRDY:        ; see if a char is ready for caller    [MCDOS]
  318.     PUSH DX            ;                [MCDOS]
  319.     PUSH CX            ; savem                [MCDOS]
  320.     PUSH BX            ;                [MCDOS]
  321.     MOV  Byte Ptr UTYPE,4    ; type = 4 (Input Status)    [MCDOS]
  322.     MOV  Byte Ptr ARG1,CONS ; Arg1 = Console #        [MCDOS]
  323.     MOV  DX, offset QPB    ; Give Parameter Block Offset    [MCDOS]
  324.     MOV  CL, S_BIOS        ; Using function 50        [MCDOS]
  325.     INT  224        ; Lets work            [MCDOS]
  326.     CMP AL,0FFH        ;                [MCDOS]
  327.     JE CONRDY        ; IS CONSOLE READY ?        [MCDOS]
  328.     MOV AL,0FFH        ; nope...            [MCDOS]
  329.     JMPS CPIEX        ;    tell caller and exit here    [MCDOS]
  330. CONRDY: MOV AL,0        ; yeap...            [MCDOS]
  331. CPIEX:    OR AL,AL        ;    nope so tell caller    [MCDOS]
  332.     POP BX            ;                [MCDOS]
  333.     POP CX            ;                [MCDOS]
  334.     POP DX            ;                [MCDOS]
  335.     RET            ;                [MCDOS]
  336. ;.....
  337. ;
  338. ;
  339. ;
  340. ; Add your own routine here to send a break tone to reset some time-
  341. ; share computers, if desired.
  342. ;
  343. SENDBRK:PUSHF            ; disable Interupts
  344.     CLI
  345.     CALL    SELECT            ;select chip
  346.     MOV    AL,2FH            ;send break for 300ms
  347.     JMPS    GOODBYE1
  348. ;.....
  349. ;
  350. ;
  351. ; Add your own routine here to put DTR low and/or send a break tone.
  352. ;
  353. GOODBYE:PUSHF            ; disable Interupts
  354.     CLI
  355.     CALL    SELECT
  356.     XOR    AL,AL            ;turn off DTR
  357. ;
  358. GOODBYE1:
  359.     OUT    CPORT,AL
  360.     MOV    CH,3            ;turn off DTR for 300 ms.
  361.     POPF                ; restore interupts
  362.     CALL    JMP@TIMER
  363.     PUSHF
  364.     CLI                ; disable Interupts again
  365.     CALL    SELECT
  366.     MOV    AL,27H            ;turn DTR back on
  367.     OUT    CPORT,AL
  368.     POPF                ; Interupts ok again
  369.     RET
  370. ;.....
  371. ;
  372. ;
  373. ; You can use this area for any special initialization or setup you may
  374. ; wish to include.  Each must stop with a RET.    You can check the other
  375. ; available overlays for ideas how to write your own routines if that
  376. ; may be of some help.
  377. ;
  378. ;The following is used to initialize the xios and MXqueues for execution
  379. ;of MDM86.
  380. ;
  381. INITMOD:
  382.     CMP    Byte Ptr QUEF, 0    ; Been here before ?        [MCDOS]
  383.     JNE    CONINT            ; yeap so skip it        [MCDOS]
  384.     MOV    DX, OFFSET XQPB        ; Here is Que Parameter Block    [MCDOS]
  385.     MOV    CL, Q_OPEN        ; Open the Que            [MCDOS]
  386.     PUSH    DX            ;                [MCDOS]
  387.     INT    224            ;                [MCDOS]
  388.     POP    DX            ;                [MCDOS]
  389.     MOV    CL, Q_CREAD        ; Do a conditional Read        [MCDOS]
  390.     INT    224            ;                [MCDOS]
  391.     OR    AX,AX            ;                [MCDOS]
  392.     JE    QUEOWN            ; we got the que        [MCDOS]
  393.     CALL    JMP@ILPRT        ; if not say so            [MCDOS]
  394.     DB    'Console Que not available',cr,lf,0    ;        [MCDOS]
  395.     MOV    CL,0            ; and get out            [MCDOS]
  396.     INT    224            ;                [MCDOS]
  397.  
  398. QUEOWN: MOV    DL,80H+CONS        ; set PIN flag            [MCDOS]
  399.     MOV    CL,DEV_SETFLAG        ;                [MCDOS]
  400.     INT    224            ;                [MCDOS]
  401.     MOV    Byte Ptr QUEF,0ffh    ;                [MCDOS]
  402.  
  403. CONINT: MOV    Byte Ptr UTYPE,1    ; type = 1  (Setup)    [MCDOS]
  404.     MOV    Byte Ptr ARG1,CONS    ; Arg1 = Console #    [MCDOS]
  405.     MOV    BL,Byte Ptr MSPEED    ; Get Baud rate
  406.     DEC    BL            ; Adjust for Offset into table
  407.     XOR    BH,BH            ;            [MCDOS]
  408.     MOV    AL,Byte Ptr BDTBL[BX]    ;            [MCDOS]
  409.     OR    AL,80h            ; 1 stop, 8 data, no p. [MCDOS]
  410.     MOV    Byte Ptr ARG2, AL    ; Arg2 = UART paras    [MCDOS]
  411.     MOV    Byte Ptr ARG3, 0    ; Arg3 = No HandShake    [MCDOS]
  412.     MOV    CL,S_BIOS        ; Function call 50    [MCDOS]
  413.     MOV    DX, offset QPB        ; Here is the Block    [MCDOS]
  414.     INT    224            ; Do some work        [MCDOS]
  415.     RET
  416. ;.....
  417. ;
  418. ;
  419. ; Use the 'SET' command to select a desired baud rate
  420. ;
  421. SETUPR: MOV    DX,(Offset BAUDBUF)    ;point to new input buffer
  422.     CALL    JMP@ILPRT
  423.     DB    'Input Baud Rate (300, 600, 1200, 2400, 4800, 9600, 19200): ',0
  424.     CALL    JMP@INBUF
  425.     MOV    DX,(Offset BAUDBUF)+2
  426.     CALL    JMP@INLNCOMP        ;compare BAUDBUF+2 with characters below
  427.     DB    '300',0
  428.     JNB    OK300            ;go if got match
  429.     CALL    JMP@INLNCOMP
  430.     DB    '600',0
  431.     JNB    OK600
  432.     CALL    JMP@INLNCOMP
  433.     DB    '1200',0
  434.     JNB    OK1200
  435.     CALL    JMP@INLNCOMP
  436.     DB    '4800',0
  437.     JNB    OK4800
  438.     CALL    JMP@INLNCOMP
  439.     DB    '2400',0
  440.     JNB    OK2400
  441.     CALL    JMP@INLNCOMP
  442.     DB    '9600',0
  443.     JNB    OK9600
  444.     CALL    JMP@INLNCOMP
  445.     DB    '19200',0
  446.     JNB    OK19200
  447.     CALL    JMP@ILPRT        ;all matches failed, tell operator
  448.     DB    '++ Incorrect entry ++',CR,LF,BELL,0
  449.     JMP    SETUPR            ;try again
  450. ;
  451. OK300:    MOV    AL,1            ;MSPEED 300 baud value
  452.     JMPS    LOADBD            ;go load everything
  453. ;
  454. OK600:    MOV    AL,3
  455.     JMPS    LOADBD
  456. ;
  457. OK1200: MOV    AL,5
  458.     JMPS    LOADBD
  459. ;
  460. OK2400: MOV    AL,6
  461.     JMPS    LOADBD
  462. ;
  463. OK4800: MOV    AL,7
  464.     JMPS    LOADBD
  465. ;
  466. OK9600: MOV    AL,8
  467.     JMPS    LOADBD
  468. ;
  469. OK19200:MOV    AL,9
  470. ;
  471. LOADBD: MOV    Byte Ptr MSPEED,AL    ;change time-to-send to match baudrate
  472.     JMP    CONINT            ;reinitialize to new baudrate, then done
  473. ;...
  474. ;
  475.  
  476.  
  477. ;
  478. SELECT:
  479.     PUSH    AX
  480.     PUSH    BX
  481.     MOV    AL,MDM
  482.     OUT    UPORT,AL    ; Select USART
  483.     POP    BX
  484.     POP    AX
  485.     RET
  486. ;
  487. ;
  488. ;....
  489. ;
  490. ;
  491. ; TABLE OF BAUDRATE PARAMETERS
  492. ;
  493. BD300    EQU    2            ;300  baud
  494. BD450    EQU    0            ;450  baud NOT SUPPORTED
  495. BD600    EQU    3            ;600  baud
  496. BD710    EQU    0            ;710  baud NOT SUPPORTED
  497. BD1200    EQU    4            ;1200 baud
  498. BD2400    EQU    6            ;2400 baud
  499. BD4800    EQU    7            ;4800 baud
  500. BD9600    EQU    8            ;9600 baud
  501. BD19200 EQU    9            ;19200 baud
  502. ;
  503. BAUDBUF DB    10,0
  504.     RS    10
  505.  
  506. BDTBL    DB    BD300,BD450,BD600,BD710,BD1200,BD2400,BD4800,BD9600,BD19200
  507. ;
  508. ;
  509. ;
  510. ;   Bios Descriptor Block  ( Do not change the next 5 lines ):
  511. QPB    DB    6    ; Function = 6 for all
  512. ARG1    DB    0    ; Arg1
  513. UTYPE    DB    0    ; Type
  514. ARG2    DB    0    ; Arg2
  515. ARG3    DB    0    ; Arg3
  516. ;
  517. ;
  518. ;
  519. XQPB    DW    0    ; Que Parameter Block
  520. QPID    DW    0
  521.     DW    0
  522. QPBUF    DW    OFFSET MSGBUF
  523. QPNAME    DB    'MXcons','0'+CONS,' '
  524. ;
  525. MSGBUF    DW    0
  526. ;
  527. QUEF    DB    0
  528. ;
  529. ;
  530. ;           (END OF INITMOD AND SETUP ROUTINES)
  531. ;=======================================================================
  532. ;
  533. ;
  534. ; If using the Hayes Smartmodem this is unavailable without a special
  535. ; change.
  536. ;
  537. SPCLMENU:RET
  538. ;
  539. ;
  540. ; NOTE:     MUST TERMINATE PRIOR TO 0400H (with Smartmodem)
  541. ;                 0C00H (without Smartmodem)
  542. ;.....
  543. ;
  544.     END
  545.