home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / mex / mxm-ad14.aqm / MXM-AD14.AZM
Text File  |  1985-12-18  |  16KB  |  923 lines

  1. *HEADING    MXM-AD14.AZM MEX overlay for ADAM home computers
  2.     LIST    A
  3.     LIST    B
  4.     LIST     G
  5.     LIST    X
  6. ;
  7. ;    ADAMEX OVERLAY WITH AUTO-DIAL,CARRIER DETECTION (WITH RETURN TO
  8. ;    MEX COMMAND MODE ON LOSS OF CARRIER IN TERMINAL MODE.)
  9. ;    SET COMMAND PROCESSOR INCLUDES SET ANS, SET ORG, SET ON, SET
  10. ;    BC?(5,6,7,OR 8), SET SB?(1,1.5,2), SET NPA,OPA,EPA(PARITY),
  11. ;    SET SCRN30,SETS SCREEN WIDTH TO 30, SET SCRN80, SET WAIT ??(5-
  12. ;    50 IN 5 SECOND STEPS) SETS WAITING TIME FOR CALL AND DIAL TO
  13. ;    WAIT FOR A CARRIER.
  14. ;    Written by Bruce T. Lytle (c) 1985
  15. ;    Released for Public Domain use only
  16. ;    12-3-1985
  17. ;----------------------------------------------------------------------
  18. ;Misc. EQU's
  19. ;----------------------------------------------------------------------
  20. NO    EQU    0
  21. YES    EQU    0FFH
  22. TPA    EQU    100H
  23. CR    EQU    13
  24. LF    EQU    10
  25. TAB    EQU    9
  26. CCLS    EQU    0CH
  27. CEOS    EQU    0BH
  28. CCP    EQU    0006H
  29. ;
  30. ;----------------------------------------------------------------------
  31. ; ADAM modem port EQU's
  32. ;----------------------------------------------------------------------
  33. MODCTL    EQU    05FH    ;modem control port
  34. MODDAT    EQU    05EH    ;modem data port
  35. ;----------------------------------------------------------------------
  36. ;
  37. NULL    EQU    080H
  38. STPB1    EQU    040H    ; 1 stop bit
  39. STPB15    EQU    080H    ; 1.5 stop bits
  40. STPB2    EQU    0C0H    ; 2 stop bits
  41. BITS5    EQU    000H    ; 5 bits/char.
  42. BITS6    EQU    004H    ; 6 bits/char.
  43. BITS7    EQU    008H    ; 7 bits/char.
  44. BITS8    EQU    00CH    ; 8 bits/char.
  45. EP    EQU    020H    ; 1=even parity,0=odd
  46. PEN    EQU    010H    ; 1=enable parity,0=disable
  47. NO_PAR    EQU    00H
  48. EVNPAR    EQU    30H
  49. ODDPAR    EQU    10H
  50. X64    EQU    003H    ; 64x clock rate=300 baud
  51. DEFAULT    EQU    STPB1+BITS8    ;8 BITS/CHAR., 1 STOP BIT, NOPAR
  52. EHM    EQU    080H    ; 1=Enter Hunt Mode
  53. IR    EQU    040H    ; Internal Reset
  54. RTS    EQU    020H    ; set RTS to 0, enable xmitter
  55. ER    EQU    010H    ; reset ERror conditions
  56. SBRK    EQU    008H    ; Send BReaK [TXD goes 'low']
  57. RXE    EQU    004H    ; Receive Enable
  58. TXE    EQU    001H    ; Transmit Enable
  59. DTR    EQU    002H    ; set DTR to 0, seize phone line
  60. ;
  61. ;----------------------------------------------------------------------
  62. ; STATUS BIT EQUATES
  63. ;----------------------------------------------------------------------
  64. ;
  65. TXRDY    EQU    0    ; indicates transmitter empty
  66. RXRDY    EQU    1    ; indicates valid character ready
  67. TXMT    EQU    2    ; indicates buffer empty
  68. P_ERR    EQU    3    ; set when parity error detected
  69. OE    EQU    4    ; set on overrun error
  70. FE    EQU    5    ; set on framing error
  71. BD    EQU    6    ; set when breack detected
  72. DSR    EQU    7    ; indicates carrier detect
  73. CD    EQU    DSR    ; CARRIER DETECT
  74. ;
  75. ;
  76. ; MEX processor stuff..... MEX has a service processor much like CP/M
  77. ; to handle files, etc. anytime you would call a BDOS function you 
  78. ; should call MEX instead.  The following EQUATES point to the MEX
  79. ; (BDOS) function you need to use in your program(overlay).
  80. ;
  81. ;
  82. MEX    EQU    0D00H        ; address of service processor
  83. INMDM    EQU    255        ; get char from port to A
  84. TIMER    EQU    254        ; delay 100ms * reg B
  85. TMDINP    EQU    253        ; B=# sec to wait for char, cy=no char
  86. CHEKCC    EQU    252        ; check for ^C from KBD, Z=present
  87. SNDRDY    EQU    251        ; test for modem send ready
  88. RCVRDY    EQU    250        ; test for modem receive ready
  89. SNDCHR    EQU    249        ; send a character to the modem (after
  90.                 ; sndrdy)
  91. RCVCHR    EQU    248        ; recv a char from modem (after rcvrdy)
  92. LOOKUP    EQU    247        ; table search
  93. PARSFN    EQU    246        ; parse filename from input stream
  94. BDPARS    EQU    245        ; parse baudrate form input stream
  95. SBLANK    EQU    244        ; scan input stream to mext non-blank
  96. EVALA    EQU    243        ; evaluate numeric from input stream
  97. LKAHED    EQU    242        ; get next char w/o removing form input
  98. GNC    EQU    241        ; get char from input, cy=1 if none
  99. ILP    EQU    240        ; inline print
  100. DECOUT    EQU    239        ; decimal output
  101. PRBAUD    EQU    238        ; print baud-rate
  102. ;
  103. ;
  104. CONOUT    EQU    2        ; simulated BDOS function 2
  105. PRINT    EQU    9        ; simulated BDOS function 9
  106. INBUF    EQU    10        ; input buffer see BDOS 10
  107. ;
  108. ;
  109.     ORG    100H        ; here we go finally!
  110. ;
  111. ;
  112.     DS    3        ; MEX jump start
  113. PMODEM:    DB    NO
  114. SMODEM:    DB    NO
  115. TPULSE:    DB    'P'
  116. CLOCK:    DB    37
  117. MSPEED:    DB    1
  118. BYTDLY:    DB    5
  119. CRDLY:    DB    5
  120. COLUMS:    DB    2
  121. SETFL:    DB    YES        ;SET commands implemented
  122. SCRTST:    DB    YES        ;cursor controls added
  123.     DB    0
  124. BAKFLG:    DB    NO
  125. CRCDFL:    DB    YES
  126. TOGCRC:    DB    YES
  127. CVTBS:    DB    NO
  128. TOGLBK:    DB    NO
  129. ADDLF:    DB    NO
  130. TOGLF:    DB    YES
  131. TRNLOG:    DB    NO
  132. SAVCCP:    DB    YES
  133. LOCNXT:    DB    NO
  134. TOGLOC:    DB    YES
  135. LSTTST:    DB    YES
  136. XOFTST:    DB    YES
  137. XONWT:    DB    YES
  138. TOGXOF:    DB    YES
  139. IGNCTL:    DB    YES
  140. EXTRA1:    DB    0
  141. EXTRA2:    DB    0
  142. BRKCHR:    DB    ('@'-40H)
  143. NOCONN:    DB    ('N'-40H)
  144. LOGCHR:    DB    ('L'-40H)
  145. LSTCHR:    DB    ('P'-40H)
  146. UNSVCH:    DB    ('R'-40H)
  147. TRNCHR:    DB    ('T'-40H)
  148. SAVCHR:    DB    ('Y'-40H)
  149. EXTCHR:    DB    ('^'-40H)
  150.     DB    0
  151.     DB    0
  152. INCTL:    JP    IN_URT
  153.     DS    7
  154. ;
  155. OTDATA:    OUT    (MODDAT),A
  156.     RET
  157.     DS    7
  158. ;
  159. INPORT:    IN    A,(MODDAT)
  160.     RET
  161.     DS    7
  162. ;
  163. MASKR:    AND    2
  164.     RET
  165. ;
  166. TESTR:    CP    2
  167.     RET
  168. ;
  169. MASKS:    AND    1
  170.     RET
  171. ;
  172. TESTS:    CP    1
  173.     RET
  174.     DS    12
  175. ***********************************************************************
  176. *                        JUMP TABLE                                   *
  177. ***********************************************************************
  178. ;
  179. LOGON:    DS    2
  180. DIALV:    JP    PDIAL
  181. DISCV:    JP    HANGUP
  182. GOODBV:    JP    DUMMY
  183. INMODV:    JP    NITMOD
  184. NEWBDV:    DS     3
  185. NOPARV:    RET
  186.     NOP
  187.     NOP
  188. PARITV:    RET
  189.     NOP
  190.     NOP
  191. SETUPV:    JP    SETCMD
  192. SPMENV:    DS    3
  193. VERSNV:    JP    SYSVER
  194. BREAKV:    JP    PBREAK
  195.     DS    18
  196. CLREOS:    LD    DE,EOSMSG
  197.     LD    C,PRINT
  198.     CALL    MEX
  199.     RET
  200. CLS:    LD    DE,CLSMSG
  201.     LD    C,PRINT
  202.     CALL    MEX
  203.     RET
  204. ;
  205. ***********************************************************************
  206. *                   END OF FIXED AREA !!!                             *
  207. ***********************************************************************
  208. ;At NITMOD insert any subroutine you want run at start-up.
  209. NITMOD:    CALL    STSCR3
  210.     LD    A,IR
  211.     OUT    (MODCTL),A
  212.     OUT    (MODCTL),A
  213. CHGMOD:    OUT    (MODCTL),A
  214.     LD    A,(MODEWD)
  215.     OUT    (MODCTL),A
  216.     LD    A,(CMDWRD)
  217.     OUT    (MODCTL),A
  218.     AND    RTS
  219.     RET    NZ
  220.     LD    A,RXE+TXE+RTS+DTR
  221.     OUT    (MODCTL),A
  222.     LD    A,RXE+TXE+DTR
  223.     OUT    (MODCTL),A
  224.     LD    A,RXE+TXE+RTS+DTR
  225.     OUT    (MODCTL),A
  226.     RET
  227. CMDWRD:    DB    RXE+TXE+RTS
  228. MODEWD:    DB    DEFAULT+X64
  229. CARTMW:    DB    96H
  230. ;
  231. FRINT:    LD    C,PRINT
  232.     CALL    MEX
  233.     RET
  234. ;
  235. PBREAK:    PUSH    AF
  236.     PUSH    BC
  237.     LD    A,03FH    ;break mask
  238.     OUT    (MODCTL),A
  239.     LD    B,3
  240.     LD    C,TIMER
  241.     CALL    MEX
  242.     LD    A,037H
  243.     OUT    (MODCTL),A
  244.     POP    BC
  245.     POP    AF
  246.     RET
  247. ;
  248. DUMMY:    CALL    STSCR8
  249.     LD    A,IR
  250.     OUT    (MODCTL),A
  251.     LD    A,0
  252.     OUT    (MODCTL),A    ;SHUT IT DOWN!
  253.     LD    HL,(CCP)
  254.     JP    (HL)
  255. ;
  256. SYSVER:    LD    DE,VERMSG
  257.     CALL    FRINT
  258.     JP    STSHOW
  259. ;
  260. **************************
  261. *    DIALING ROUTINES    *
  262. **************************
  263. ;
  264. DELAY:    PUSH    BC
  265.     LD    HL,8000H
  266.     LD    DE,8000H
  267.     LD    BC,1594
  268.     LDIR
  269.     POP    BC
  270.     DJNZ    DELAY
  271.     RET
  272. ;
  273. ;
  274. PDIAL:    CP    254
  275.     JR    Z,STDIAL
  276.     CP    255
  277.     JR    Z,ENDIAL
  278. DIAL:    PUSH    AF
  279.     PUSH    BC
  280.     PUSH    DE
  281.     PUSH    HL
  282. ;
  283.     CP    'P'
  284.     JR    Z,PAUSE
  285.     CP    'p'
  286.     JR    Z,PAUSE
  287.     CP    ','
  288.     JR    Z,PAUSE
  289.     CP    '9'+1
  290.     JR    NC,BAD_DGT
  291.     CP    '0'
  292.     JR    C,BAD_DGT
  293.     JR    NZ,CHAR_OK
  294.     LD    A,'9'+1
  295. CHAR_OK:
  296.     SUB    '0'
  297.     LD    B,A
  298.     CALL    RNGBELL
  299. PLSE_LP:
  300.     LD    A,RXE+TXE+RTS
  301.     OUT    (MODCTL),A
  302.     PUSH    BC
  303.     LD    B,6
  304. PLP1:    CALL    DELAY
  305.     POP    BC
  306.     LD    A,RXE+TXE+RTS+DTR
  307.     OUT    (MODCTL),A
  308.     PUSH    BC
  309.     LD    B,4
  310. PLP2:    CALL    DELAY
  311.     POP    BC
  312. ; NEXT PULSE
  313. ;
  314.     DJNZ    PLSE_LP
  315.     LD    (CMDWRD),A
  316. PAUSE:
  317.     LD    B,80
  318.     CALL    DELAY
  319. BAD_DGT:
  320.     POP    HL
  321.     POP    DE
  322.     POP    BC
  323.     POP    AF
  324.     RET
  325. STDIAL:    LD    A,0
  326.     CALL    SEIZE
  327.     LD    B,30
  328.     LD    C,TIMER
  329.     CALL    MEX
  330.     RET
  331. ;
  332. ENDIAL:    LD    A,(CARTMW)
  333.     LD    D,A
  334. WAIT:    LD    B,2
  335.     LD    C,TIMER
  336.     CALL    MEX
  337.     CALL    CD_STAT
  338.     JR    NZ,LINKUP
  339.     CALL    U_STAT
  340.     JR    C,ERABRT
  341.     LD    C,CHEKCC
  342.     CALL    MEX
  343.     JR    Z,ABORT
  344.     DEC    D
  345.     JR    NZ,WAIT
  346.     CALL    HANGUP
  347.     LD    A,2
  348.     RET
  349. ;
  350. ;
  351. ABORT:    CALL    HANGUP
  352.     LD    A,3
  353.     RET
  354. ;
  355. ;
  356. LINKUP:
  357.     LD    A,0
  358.     RET
  359. ;
  360. ;
  361. ERABRT:    CALL    HANGUP
  362.     LD    A,4
  363.     RET
  364. ;
  365. ;
  366. RNGBELL:
  367.     PUSH    AF
  368.     PUSH    BC
  369.     LD    E,07H
  370.     LD    C,CONOUT
  371.     CALL    MEX
  372.     POP    BC
  373.     POP    AF
  374.     RET
  375. ;
  376. ; CARRIER STATUS
  377. ;     EXIT:    NZ=CARRIER DETECT
  378. ;         Z=NO CARRIER
  379. CD_STA:    IN    A,(MODCTL)
  380.     BIT    DSR,A
  381.     RET
  382. ;
  383. U_STAT:    IN    A,(MODCTL)
  384.     OR    A
  385.     JR    URT_CM
  386. URTERR:    SCF
  387. URT_CM:    BIT    RXRDY,A
  388.     RET
  389. ;
  390. ;
  391. IN_URT:    CALL    CD_STA
  392.     JR    Z,LOSCAR
  393.     IN    A,(MODCTL)
  394.     RET
  395. ;
  396. ;
  397. ;    LOST CARRIER
  398. ;    prints "LOST CARRIER" message
  399. ;    and then attempts to get back to MEX
  400. LOSCAR:    LD    DE,LOSCAM
  401.     CALL    FRINT
  402.     CALL    HANGUP
  403.     LD    A,24H
  404.     JP    0FF0H
  405. ;
  406. ;
  407. ***********************
  408. *   Seize Line        *
  409. ***********************
  410. ;
  411. ; Entry: A=0 for Originate mode
  412. ;        A=0FFH for Answer mode
  413. ; Exit:  Carrier is enabled
  414. ;        Registers A & C get trashed
  415. SEIZE:    LD    C,A    ;save
  416.     LD    A,RXE+TXE+RTS+DTR
  417.     LD    (CMDWRD),A
  418.     OUT    (MODCTL),A
  419.     LD    A,C
  420.     OR    A
  421.     RET    Z    ;all done
  422. ***********************************************************
  423. ;
  424. ;ANSWER_MODE
  425. ;switches modem directly to answer mode
  426. ;assumes modem off-hook
  427. ;*******EXIT:    REG. A TRASHED
  428. ANSMOD:    LD    A,RXE+TXE+DTR
  429.     LD    (CMDWRD),A
  430.     OUT    (MODCTL),A
  431.     LD    A,RXE+TXE+RTS+DTR
  432.     OUT    (MODCTL),A
  433.     RET
  434. ***********************************************************
  435. ;
  436. ;
  437. HANGUP:            ;trashes reg. A
  438.     LD    A,RXE+TXE+RTS
  439.     LD    (CMDWRD),A
  440.     OUT    (MODCTL),A
  441.     RET
  442. ***********************************************************************
  443. ;
  444. ;SET COMMANDS:
  445. ;-------------
  446. ;
  447. ;SET this displays modem parameters (parity, bits/char., # of stop bit
  448. ;s, originate/answer mode, and present carrier status
  449. ;
  450. ;SET ? or SET HELP  this displays valid command extensions
  451. ;
  452. ;SET ANS this seizes the phone line in answer mode
  453. ;
  454. ;SET ON  this seizes the phone line in originate mode
  455. ;
  456. ;SET ORG this switches to originate mode but does not seize the phone line
  457. ;note SET ans,on, OR org forces disconnect
  458. ;
  459. ;SET SB1  1 stop bit
  460. ;SET SB15  1.5 stop bits
  461. ;SET SB2   2 stop bits
  462. ;
  463. ;SET NPA    no parity
  464. ;SET OPA    odd parity
  465. ;SET EPA    even parity
  466. ;
  467. ;SET BC5    5 bits/char.
  468. ;SET BC6    6 bits/char.
  469. ;SET BC7    7 bits/char.
  470. ;SET BC8    8 bits/char.
  471. ;
  472. ;SET SCRN30       set screen width to 30 char./line
  473. ;SET SCRN80    set screen width to 80 char./line
  474. ;
  475. ;SET WAIT __    set time to wait for carrier (5 sec. increments.
  476. ***********************************************************************
  477. SETCMD:    LD    C,SBLANK
  478.     CALL    MEX
  479.     JR    C,STSHOW
  480.     LD    DE,CMDTBL
  481.     LD    C,LOOKUP
  482.     CALL    MEX
  483.     PUSH    HL
  484.     RET    NC
  485.     POP    HL
  486. STERR:
  487.     LD    DE,STERRM
  488.     CALL    FRINT
  489.     RET
  490. ;
  491. STSHOW:
  492.     CALL    SETSRT
  493.     CALL    MODESW
  494.     CALL    PASHOW
  495.     CALL    BCSHOW
  496.     CALL    SBSHOW
  497.     CALL    CARSHW
  498.     CALL    WTSHOW
  499.     RET
  500. ;
  501. SETSRT:    LD    DE,ST_MSG
  502.     CALL    FRINT
  503.     RET
  504. ;
  505. MODESW:
  506.     LD    DE,MODMSG
  507.     CALL    FRINT
  508.     LD    A,(CMDWRD)
  509.     AND    RTS
  510.     JR    Z,A_MODE
  511.     LD    DE,ORGMSG
  512.     JR    MODE_R
  513. A_MODE:    LD    DE,ANSMSG
  514. MODE_R:    CALL    FRINT
  515.     RET
  516. ;
  517. BCSHOW:
  518.     LD    DE,ST1MSG
  519.     CALL    FRINT
  520.     LD    A,(MODEWD)
  521.     AND    0CH
  522.     CP    BITS8
  523.     JR    NZ,TRY_7
  524.     LD    E,'8'
  525.     JR    BC_NUM
  526. TRY_7:    CP    BITS7
  527.     JR    NZ,TRY_6
  528.     LD    E,'7'
  529.     JR    BC_NUM
  530. TRY_6:    CP    BITS6
  531.     JR    NZ,TRY_5
  532.     LD    E,'6'
  533.     JR    BC_NUM
  534. TRY_5:    LD    E,'5'
  535. BC_NUM:    LD    C,CONOUT
  536.     CALL    MEX
  537.     RET
  538. PASHOW:
  539.     LD    DE,ST2MSG
  540.     CALL    FRINT
  541.     LD    A,(MODEWD)
  542.     AND    30H
  543.     CP    EVNPAR
  544.     JR    NZ,TRY_O
  545.     LD    DE,EVNMSG
  546.     JR    P_SHOW
  547. TRY_O:    CP    ODDPAR
  548.     JR    NZ,NONPAR
  549.     LD    DE,ODDMSG
  550.     JR    P_SHOW
  551. NONPAR:    LD    DE,NONMSG
  552. P_SHOW:    CALL    FRINT
  553.     RET
  554. SBSHOW:
  555.     LD    DE,ST3MSG
  556.     CALL    FRINT
  557.     LD    A,(MODEWD)
  558.     AND    0C0H
  559.     CP    STPB1
  560.     JR    NZ,TRY_15
  561.     LD    DE,SB1MSG
  562.     JR    SB_NUM
  563. TRY_15:    CP    STPB15
  564.     JR    NZ,TRY_2
  565.     LD    DE,SB5MSG
  566.     JR    SB_NUM
  567. TRY_2:    CP    STPB2
  568.     JR    NZ,BAD_SB
  569.     LD    DE,SB2MSG
  570.     JR    SB_NUM
  571. BAD_SB:    LD    DE,BADMSG
  572. SB_NUM:    CALL    FRINT
  573.     RET
  574. CARSHW:    LD    DE,CARMSG
  575.     CALL    CD_STAT
  576.     JR    NZ,C_SHOW
  577.     LD    DE,NOCARM
  578. C_SHOW:    CALL    FRINT
  579.     RET
  580. WTSHOW:    LD    DE,SRTWTS
  581.     CALL    FRINT
  582.     LD    A,(CARTMW)
  583.     CP    25
  584.     JR    NZ,WT10
  585.     LD    DE,SEC_5
  586. WT_PRN:    CALL    FRINT
  587.     LD    DE,SECM
  588.     CALL    FRINT
  589.     RET
  590. WT10:    CP    50
  591.     JR    NZ,WT15
  592.     LD    DE,SEC_10
  593.     JR    WT_PRN
  594. WT15:    CP    75
  595.     JR    NZ,WT20
  596.     LD    DE,SEC_15
  597.     JR    WT_PRN
  598. WT20:    CP    100
  599.     JR    NZ,WT25
  600.     LD    DE,SEC_20
  601.     JR    WT_PRN
  602. WT25:    CP    125
  603.     JR    NZ,WT30
  604.     LD    DE,SEC_25
  605.     JR    WT_PRN
  606. WT30:    CP    150
  607.     JR    NZ,WT35
  608.     LD    DE,SEC_30
  609.     JR    WT_PRN
  610. WT35:    CP    175
  611.     JR    NZ,WT40
  612.     LD    DE,SEC_35
  613.     JR    WT_PRN
  614. WT40:    CP    200
  615.     JR    NZ,WT45
  616.     LD    DE,SEC_40
  617.     JR    WT_PRN
  618. WT45:    CP    225
  619.     JR    NZ,WT50
  620.     LD    DE,SEC_45
  621.     JR    WT_PRN
  622. WT50:    LD    DE,SEC_50
  623.     JR    WT_PRN
  624. ;
  625. ;
  626. CMDTBL:    DB    ('?'+80H)
  627.     DW    STHELP
  628.     DEFM    'HEL'
  629.     DB    ('P'+80H)
  630.     DW    STHELP
  631.     DEFM    'AN'
  632.     DB    ('S'+80H)
  633.     DW    ST_ANS
  634.     DEFM    'OR'
  635.     DB    ('G'+80H)
  636.     DW    ST_ORG
  637.     DB    'O'
  638.     DB    ('N'+80H)
  639.     DW    ST_ON
  640.     DEFM    'SB'
  641.     DB    ('1'+80H)
  642.     DW    ST_SB1
  643.     DEFM    'SB1'
  644.     DB    ('5'+80H)
  645.     DW    STSB15
  646.     DEFM    'SB'
  647.     DB    ('2'+80H)
  648.     DW    ST_SB2
  649.     DEFM    'BC'
  650.     DB    ('5'+80H)
  651.     DW    ST_BC5
  652.     DEFM    'BC'
  653.     DB    ('6'+80H)
  654.     DW    ST_BC6
  655.     DEFM    'BC'
  656.     DB    ('7'+80H)
  657.     DW    ST_BC7
  658.     DEFM    'BC'
  659.     DB    ('8'+80H)
  660.     DW    ST_BC8
  661.     DEFM    'NP'
  662.     DB    ('A'+80H)
  663.     DW    ST_NPA
  664.     DEFM    'EP'
  665.     DB    ('A'+80H)
  666.     DW    ST_EPA
  667.     DEFM    'OP'
  668.     DB    ('A'+80H)
  669.     DW    ST_OPA
  670.     DEFM    'SCRN3'
  671.     DB    ('0'+80H)
  672.     DW    STSCR3
  673. ;
  674.     DEFM    'SCRN8'
  675.     DB    ('0'+80H)
  676.     DW    STSCR8
  677. ;
  678.     DEFM    'WAI'
  679.     DB    ('T'+80H)
  680.     DW    STWAIT
  681.     DB    0
  682. ;
  683. ***********************************************************************
  684. * END OF CMDTBL
  685. ***********************************************************************
  686. ST_ORG:    CALL    HANGUP
  687.     JR    PRTMOD
  688. ;
  689. ST_ON:    LD    A,0
  690.     CALL     SEIZE
  691.     JR    PRTMOD
  692. ;
  693. ST_ANS:    LD    A,0FFH
  694.     CALL    SEIZE
  695.     JR    PRTMOD
  696. ;
  697. PRTMOD:    JP    MODESW
  698. ;
  699. ST_SB1:    LD    B,STPB1
  700. SET_SB:    LD    A,(MODEWD)
  701.     AND    03FH
  702.     OR    B
  703.     LD    (MODEWD),A
  704.     CALL    SBSHOW
  705.     LD    A,IR
  706.     JP    CHGMOD
  707. ;
  708. STSB15:    LD    B,STPB15
  709.     JR    SET_SB
  710. ;
  711. ST_SB2:    LD    B,STPB2
  712.     JR    SET_SB
  713. ;
  714. ST_BC5:    LD    B,BITS5
  715.     JR    SET_BC
  716. ;
  717. ST_BC6:    LD    B,BITS6
  718.     JR    SET_BC
  719. ;
  720. ST_BC7:    LD    B,BITS7
  721.     JR    SET_BC
  722. ;
  723. ST_BC8:    LD    B,BITS8
  724. SET_BC:    LD    A,(MODEWD)
  725.     AND    0F3H
  726.     OR    B
  727.     LD    (MODEWD),A
  728.     CALL    BCSHOW
  729.     LD    A,IR
  730.     JP    CHGMOD
  731. ;
  732. ST_NPA:    LD    B,NO_PAR
  733.     JR    SETPAR
  734. ;
  735. ST_OPA:    LD    B,ODDPAR
  736.     JR    SETPAR
  737. ;
  738. ST_EPA:    LD    B,EVNPAR
  739. ;
  740. SETPAR:    LD    A,(MODEWD)
  741.     AND    0CFH
  742.     OR    B
  743.     LD    (MODEWD),A
  744.     CALL    PASHOW
  745.     LD    A,IR
  746.     JP    CHGMOD
  747. ;
  748. STSCR3: PUSH    HL
  749.     LD    HL,0EA68H
  750.     LD    (HL),1EH
  751.     POP    HL
  752.     RET
  753. ;
  754. STSCR8: PUSH    HL
  755.     LD    HL,0EA68H
  756.     LD    (HL),50H
  757.     POP    HL
  758.     RET
  759. ;
  760. STHELP:
  761.     LD    DE,HLPMSG
  762.     CALL    FRINT
  763.     RET
  764. ;
  765. STWAIT:    PUSH    HL
  766.     LD    C,SBLANK
  767.     CALL    MEX
  768.     JR    C,WAITER
  769.     LD    DE,WAITBL
  770.     LD    C,LOOKUP
  771.     CALL    MEX
  772.     JR    C,WAITER
  773.     LD    A,L
  774.     LD    HL,CARTMW
  775.     LD    (HL),A
  776.     POP    HL
  777.     CALL    WTSHOW
  778.     RET
  779. ;
  780. WAITER:    POP    HL
  781.     LD    DE,BADMSG
  782.     CALL    FRINT
  783.     RET
  784. ;
  785. WAITBL:    DB    ('5'+80H)
  786.     DW    25
  787.     DB    '1'
  788.     DB    ('0'+80H)
  789.     DW    50
  790.     DB    '1'
  791.     DB    ('5'+80H)
  792.     DW    75
  793.     DB    '2'
  794.     DB    ('0'+80H)
  795.     DW    100
  796.     DB    '2'
  797.     DB    ('5'+80H)
  798.     DW    125
  799.     DB    '3'
  800.     DB    ('0'+80H)
  801.     DW    150
  802.     DB    '3'
  803.     DB    ('5'+80H)
  804.     DW    175
  805.     DB    '4'
  806.     DB    ('0'+80H)
  807.     DW    200
  808.     DB    '4'
  809.     DB    ('5'+80H)
  810.     DW    225
  811.     DB    '5'
  812.     DB    ('0'+80H)
  813.     DW    250
  814.     DB    00H
  815. ;
  816. ***********************************************************************
  817. * END OF SET COMMANDS
  818. ***********************************************************************
  819. ;MESSAGE AREA
  820. ;
  821. VERMSG:    DEFM    'ADAMEX overlay v1.4'
  822.     DB    07H
  823.     DB    CR,LF,'$'
  824. ;
  825. EOSMSG:    DB    CEOS,'$'
  826. ;
  827. CLSMSG:    DB    CCLS,'$'
  828. ;
  829. ;
  830. STERRM:    DEFM    '  ++ COMMAND NOT FOUND ++'
  831.     DB    CR,LF,07H,'$'
  832. ;
  833. ST_MSG:
  834.     DEFM    '  MODEM PARAMETERS'
  835.     DB    CR,LF,LF,'$'
  836. MODMSG:
  837.     DEFM    '  MODE:            '
  838.     DB    '$'
  839. ;
  840. ORGMSG:    DEFM    'ORIGINATE'
  841.     DB    '$'
  842. ;
  843. ANSMSG:    DEFM    'ANSWER'
  844.     DB    '$'
  845. ;
  846. ST1MSG:    DB    CR,LF
  847.     DEFM    '  BITS/CHARACTER:  '
  848.     DB    '$'
  849. ;
  850. ST2MSG:    DB    CR,LF
  851.     DEFM    '  PARITY:          '
  852.     DB    '$'
  853. ;
  854. NONMSG:    DEFM    'NONE'
  855.     DB    '$'
  856. ;
  857. ODDMSG:    DEFM    'ODD'
  858.     DB    '$'
  859. ;
  860. EVNMSG:    DEFM    'EVEN'
  861.     DB    '$'
  862. ;
  863. ST3MSG:    DB    CR,LF
  864.     DEFM    '  STOP BITS:       '
  865.     DB    '$'
  866. ;
  867. SB1MSG:    DB    '1',CR,LF,20H,'$'
  868. ;
  869. SB5MSG:    DEFM    '1.5'
  870.     DB    CR,LF,20H,'$'
  871. ;
  872. SB2MSG:    DB    '2',CR,LF,20H,'$'
  873. ;
  874. BADMSG:    DEFM    '  ++ BAD VALUE ++'
  875.     DB    07H,'$'
  876. ;
  877. NOCARM:
  878.     DEFM    ' NO'
  879. ;
  880. CARMSG:    DEFM    ' CARRIER ON LINE'
  881.     DB    CR,LF,'$'
  882. SRTWTS:
  883.     DEFM    '  WAIT FOR CARRIER '
  884.     DB    '$'
  885. ;
  886. ;
  887. LOSCAM:    DB    07H,CR,LF
  888.     DEFM    '  ++ LOST CARRIER ++'
  889.     DB    07H,CR,LF,LF,'$'
  890. ;
  891. SEC_5:    DB    '5','$'
  892. SEC_10:    DB    '1','0','$'
  893. SEC_15:    DB    '1','5','$'
  894. SEC_20:    DB    '2','0','$'
  895. SEC_25:    DB    '2','5','$'
  896. SEC_30:    DB    '3','0','$'
  897. SEC_35:    DB    '3','5','$'
  898. SEC_40:    DB    '4','0','$'
  899. SEC_45:    DB    '4','5','$'
  900. SEC_50:    DB    '5','0','$'
  901. SECM:    DEFM    ' SEC.'
  902.     DB    CR,LF,'$'
  903. ;
  904. ;
  905. HLPMSG:    DB    CR,LF
  906.     DEFM    '  SET <command>'
  907.     DB    CR,LF
  908.     DEFM    '  Where <command> is one of:'
  909.     DB    CR,LF
  910.     DEFM    ' ?, HELP, ORG, ANS, ON, BC5,'
  911.     DB    CR,LF
  912.     DEFM    ' BC6, BC7, BC8, SB1, SB15, SB2'
  913.     DB    CR
  914.     DEFM    ' NPA, EPA, OPA, SCRN30, SCRN80'
  915.     DB    CR
  916.     DEFM    ' WAIT <5-50> (5 sec. steps)'
  917.     DB    CR,LF
  918.     DB    '$'
  919.     DB    0
  920. ;
  921. ;
  922.     END
  923.