home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MEX / MXH-EP14.Z80 < prev    next >
Text File  |  2000-06-30  |  14KB  |  498 lines

  1.  
  2. ; MXH-EP14.Z80 -- Epson QX-10 overlay file for MEX+  10/15/86
  3. ;
  4. ; This overlay will allow the user to have a loadable MEX+ remote
  5. ; system via the "LOAD REMOTE" command. This overlay was modified to
  6. ; default to 1200 baud, if you need 300 baud you must changed it.
  7. ; you will find this in "MSPEED", part of user setup options.
  8. ; This overlay has been modified to allow a baudrate "19200" if needed
  9. ; for hardwired transfers.
  10. ;
  11. ; This overlay will assemble with the public domain ZASM Z80 assembler.
  12. ;
  13. ; Syntax: ZASM MXH-EP14.BBZ HEX assuming the source is on drive B: 
  14. ;
  15. ; Updated / Upgraded 10/15/86  -- Mel Berg / Kent Mason (Rev. 1.0)
  16. ; Z-NODE # 58, Oklahoma City, Okla. 1-405-943-8638 (board number).
  17. ;
  18. ; Updated to incorporate MEXNEWS.001,001,003  06/13/84    (Rev. JLB-2)
  19. ;
  20. ; This overlay is used to adapt the MEX+.COM program to the Epson
  21. ; QX-10 computer using an external Hayes Smartmodem (tm) or compatible
  22. ; modem attached to the QX-10's serial port.  It will NOT work with
  23. ; the internal Comrex Communicator modems.  AND will not work with plain
  24. ; MEX, Must be    MEX+.
  25. ;
  26. ; For this overlay to work properly, the DIP switches behind
  27. ; the front panel on the Hayes should be set as follows:
  28. ;
  29. ; Switch:
  30. ;   #1     #2   #3   #4    #5   #6   #7   #8
  31. ;   UP     UP   DN   UP    DN   UP   DN   DN
  32. ;
  33. ; It is especially important that Switch #1 be set UP to enable
  34. ; disconnect by DTR.  In general, these switch settings are
  35. ; compatible with Valdocs usage.
  36. ;
  37. ; You will want to look this file over carefully. There are a number of
  38. ; options that you can use to configure the program to suit your taste.
  39. ; This file adapts the QX-10 computer to the modem program.
  40. ;
  41. ; Edit this file for your preferences then follow the "TO USE:" example
  42. ; shown below.
  43. ;
  44. ; Use the "SET" command to change the baudrate when desired.  It starts
  45. ; out at 1200 baud when the program is first called up, this can be change.
  46. ; Also, this revision has been set to start out in the CHECKSUM mode
  47. ; to be compatible with TBBS, some RBBS, and other older BBS software
  48. ; which does not support the CRC mode.    If you desire the CRC mode
  49. ; default, simply change the CRCDFLT to TRUE below and reassemble,
  50. ; or, within MEX, use the STAT command to set CRC ON and CLONE your
  51. ; copy of MEX.
  52. ;
  53. ;
  54. ;    TO USE: First edit this file filling in answers for your own
  55. ;        equipment.  Then assemble with ASM.COM or equivalent
  56. ;        assembler.  Then use MLOAD to overlay the the results
  57. ;        of this program to the original .COM file.
  58. ;
  59. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  60. ; 11/03/86 - Added 19200 baud, converted to Z80 - Mel Berg
  61. ; 10/25/86 - Converted for MEX+ "loadable"      - Mel Berg
  62. ; 06/13/84 - Customized Biff Bueffel's overlay    - Jim Bewley
  63. ; 05/24/84 - MEXified the overlay        - Biff Bueffel
  64. ; 11/11/83 - Renamed to M7EP-1.ASM, no changes    - Irv Hoff
  65. ; 08/27/83 - Revised to work with MDM712    - Irv Hoff
  66. ; 07/25/83 - Changed M710XE.ASM forEpson QX-10    - Phil Becker
  67. ;
  68. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  69. ;
  70. BELL    EQU    07H        ; Bell
  71. CR    EQU    0DH        ; Carriage return
  72. ESC    EQU    1BH        ; Escape
  73. LF    EQU    0AH        ; Linefeed
  74. CLS    EQU    1AH        ; Clear screen
  75. ;
  76. YES    EQU    0FFH
  77. NO    EQU    0
  78. ;
  79. ; MEX service processor stuff
  80. ;
  81. MEX    EQU    0D00H        ; Address of the service processor
  82. INMDM    EQU    255        ; Get char from port to A, CY=no more in 100 ms
  83. TIMER    EQU    254        ; Delay 100ms * reg B
  84. TMDINP    EQU    253        ; B=# secs to wait for char, cy=no char
  85. CHEKCC    EQU    252        ; Check for ^C from KBD, Z=present
  86. SNDRDY    EQU    251        ; Test for modem-send ready
  87. RCVRDY    EQU    250        ; Test for modem-receive ready
  88. SNDCHR    EQU    249        ; Send a character to the modem (after sndrdy)
  89. RCVCHR    EQU    248        ; Recv a char from modem (after rcvrdy)
  90. LOOKUP    EQU    247        ; Table search: see CMDTBL comments for info
  91. PARSFN    EQU    246        ; Parse filename from input stream
  92. BDPARS    EQU    245        ; Parse baud-rate from input stream
  93. SBLANK    EQU    244        ; Scan input stream to next non-blank
  94. EVALA    EQU    243        ; Evaluate numeric from input stream
  95. LKAHED    EQU    242        ; Get nxt char w/o removing from input
  96. GNC    EQU    241        ; Get char from input, cy=1 if none
  97. ILP    EQU    240        ; Inline print
  98. DECOUT    EQU    239        ; Decimal output
  99. PRBAUD    EQU    238        ; Print baud rate
  100. ;
  101. PRINT    EQU    9        ; MEX/BDOS print-string function call
  102. ;
  103. PORT    EQU    11H        ; Epson QX-10 serial output port
  104. MODCTL1    EQU    PORT+2        ; Modem control port
  105. MODDATP    EQU    PORT        ; Modem data port
  106. MODCTL2    EQU    PORT+2        ; Modem control port
  107. MODRCVB    EQU    01H        ; Your bit to test for receive
  108. MODRCVR    EQU    01H        ; Your value when receive ready
  109. MODSNDB    EQU    04H        ; Your bit to test for send
  110. MODSNDR    EQU    04H        ; Your value when send ready
  111. ;
  112. ;
  113.     ORG    100H
  114. ;
  115. ;
  116. ; Change the clock speed as needed for your system.
  117. ;
  118.     DEFB    0C3H
  119.     DEFS    2
  120. ;
  121. PMMIMODEM:
  122.     DEFB    NO        ; Yes=PMMI S-100 Modem                        103H
  123. SMARTMODEM:
  124.     DEFB    YES        ; Yes=HAYES Smartmodem, no=non-PMMI            104H
  125. TOUCHPULSE:
  126.     DEFB    'T'        ; T=touch, P=pulse (Smartmodem-only)            105H
  127. CLOCK:    DEFB    40        ; Clock speed in MHz x10, 25.5 MHz max.     106H
  128.                 ; 20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  129. MSPEED:    DEFB    5        ; 0=110 1=300 2=450 3=600 4=710 5=1200        107H
  130.                 ; 6=2400 7=4800 8=9600 9=19200 default
  131. BYTDLY:    DEFB    5        ; 0=0 delay  1=10ms  5=50ms - 9=90ms            108H
  132.                 ; Default time to send character in term-
  133.                 ; Inal mode file transfer for slow BBS.
  134. CRDLY:    DEFB    5        ; 0=0 delay 1=100ms 5=500ms - 9=900ms        109H
  135.                 ; Default time for extra wait after CRLF
  136.                 ; In terminal mode file transfer
  137. NOOFCOL:DEFB    5        ; Number of DIR columns shown                10AH
  138. SETUPTST:
  139.     DEFB    YES        ; Yes=user-added Setup routine            10BH
  140. SCRNTEST:
  141.     DEFB    YES        ; Cursor control routine            10CH
  142. ACKNAK:    DEFB    YES        ; Yes=resend a record after any non-ACK     10DH
  143.                 ; No=resend a record after a valid NAK
  144. BAKUPBYTE:
  145.     DEFB    NO        ; Yes=change any file same name to .BAK     10EH
  146. CRCDFLT:DEFB    NO        ; No=default to CHECKSUM checking            10FH
  147. TOGGLECRC:
  148.     DEFB    YES        ; Yes=allow toggling of CRC to Checksum     110H
  149. CONVBKSP:
  150.     DEFB    NO        ; Yes=convert backspace to rub                111H
  151. TOGGLEBK:
  152.     DEFB    NO        ; Yes=allow toggling of bksp to rub            112H
  153. ADDLF:    DEFB    NO        ; No=no LF after CR to send file in            113H
  154.                 ; Terminal mode (added by remote echo)
  155. TOGGLELF:
  156.     DEFB    YES        ; Yes=allow toggling of LF after CR        114H
  157. TRANLOGON:
  158.     DEFB    NO        ; Not supported by MEX+             115H
  159.                 ; Write logon sequence at location LOGON
  160. SAVCCP:    DEFB    YES        ; Yes=do not overwrite CCP            116H
  161. LOCONEXTCHR:
  162.     DEFB    NO        ; Yes=local command if EXTCHR precedes        117H
  163.                 ; No=external command if EXTCHR precedes
  164. TOGGLELOC:
  165.     DEFB    YES        ; Yes=allow toggling of LOCONEXTCHR        118H
  166. LSTTST:    DEFB    YES        ; Yes=allow toggling of printer on/off        119H
  167. XOFFTST:DEFB    YES        ; Yes=chcks for XOFF from remote while        11AH
  168.                 ; Sending a file in terminal mode
  169. XONWAIT:DEFB    NO        ; Yes=wait for XON after CR while        11BH
  170.                 ; Sending a file in terminal mode
  171. TOGXOFF:DEFB    YES        ; Yes=allow toggling of XOFF checking        11CH
  172. IGNORCTL:
  173.     DEFB    YES        ; Yes=CTL-chars above ^M not displayed        11DH
  174. EXTRA1:    DEFB    0        ; For future expansion                11EH
  175. EXTRA2:    DEFB    0        ; For future expansion                11FH
  176. BRKCHR:    DEFB    'D'-40H        ; ^D = Send a 300 ms. break tone        120H
  177. NOCXNNCT:
  178.     DEFB    'N'-40H        ; ^N = Disconnect from the phone line        121H
  179. LOGCHR:    DEFB    'O'-40H        ; ^O = Send Log-On Message                    122H
  180. LSTCHR:    DEFB    'P'-40H        ; ^P = Toggle printer                        123H
  181. UNSAVE:    DEFB    'R'-40H        ; ^R = Close input text buffer                124H
  182. TRANCHR:DEFB    'T'-40H        ; ^T = Transmit file to remote                125H
  183. SAVECHR:DEFB    'Y'-40H        ; ^Y = Open input text buffer                126H
  184. EXTCHR:    DEFB    'F'-40H        ; ^F = Send Next Character                    127H
  185. ;
  186. ;
  187.     DEFS    2        ; 128H
  188. ;
  189. IN$MODCTL1:
  190.     LD    A,10H        ; Channel 0, reset interrupts.        12AH
  191.     OUT    (MODCTL1),A
  192.     IN    A,(MODCTL1)    ; Get the status bits 
  193.     RET
  194.     DEFS    3
  195. ;
  196. OUT$MODDATP:
  197.     OUT    (MODDATP),A
  198.     RET            ; Out modem data port                134H
  199.     DEFS    7
  200. IN$MODDATP:
  201.     IN    A,(MODDATP)
  202.     RET            ; In modem data port                    13EH
  203.     DEFS    7
  204. ANI$MODRCVB:
  205.     AND    MODRCVB
  206.     RET            ; Bit to test for receive ready     148H
  207. CPI$MODRCVR:
  208.     CP    MODRCVR
  209.     RET            ; Value of receive bit when rdy     14BH
  210. ANI$MODSNDB:
  211.     AND    MODSNDB
  212.     RET            ; Bit to test for send ready            14EH
  213. CPI$MODSNDR:
  214.     CP    MODSNDR
  215.     RET            ; Value of send bit when ready        151H
  216. ;
  217. DCDTST:    JP    DCDVEC
  218. RNGDET:    JP    RNGVEC
  219. ;
  220. OUT$CTL1:
  221.     OUT    (MODCTL1),A
  222.     RET            ; Out modem control port                15AH
  223. OUT$CTL2:
  224.     OUT    (MODCTL2),A
  225.     RET            ; Out modem status port             15DH
  226. ;
  227. LOGONPTR:
  228.     DEFW    LOGON        ; For MDM7xx Log-On Message            160H
  229.     DEFS    6        ; 162H
  230. JMP$GOODBYE:
  231.     RET            ; MEX patch to prevent DSC            168H
  232.     DEFS    2        ; From BYE command.
  233. JMP$INITMOD:
  234.     JP    INITMOD        ; Go to user written routine            16BH
  235. JMP$NEWBAUD:
  236.     JP    NEWBAUD        ; Change baudrate                    66EH
  237.     RET
  238.     NOP
  239.     NOP            ; (by-passes PMMI routine)            171H
  240.     RET
  241.     NOP
  242.     NOP            ; (by-passes PMMI routine)            174H
  243. JMP$SETUPR:
  244.     JP    SETUPR        ; 177H
  245.     DEFS    3        ; 17AH
  246. JMP$SYSVER:
  247.     JP    SYSVER        ; 17DH
  248. JMP$BREAK:
  249.     JP    SENDBRK        ; 180H
  250. ;
  251. ;
  252. ; Do not change the following six lines.
  253. ;
  254. ;
  255. JMP$ILPRT:
  256.     DEFS    3        ; 183H
  257. JMP$INBUF:
  258.     DEFS    3        ; 186H
  259. JMP$INLNCOMP:
  260.     DEFS    3        ; 189H
  261. JMP$INMODEM:
  262.     DEFS    3        ; 18CH
  263. JMP$NXTSCRN:
  264.     DEFS    3        ; 18FH
  265. JMP$TIMER:
  266.     DEFS    3        ; 192H
  267. ;
  268. ;
  269. ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
  270. ; entire screen.
  271. ;
  272. ;
  273. CLREOS:    LD    DE,EOSMSG    ; 195H
  274.     LD    C,PRINT
  275.     CALL    MEX
  276.     RET
  277. ;
  278. CLRSCRN:LD    DE,CLSMSG    ; 19EH
  279.     LD    C,PRINT
  280.     CALL    MEX
  281.     RET
  282. ;
  283.     ORG    200H
  284. ;
  285. SYSVER:    LD    C,ILP        ; 1A7H
  286.     CALL    MEX
  287.     DEFB    CLS
  288.     DEFB    CR,LF
  289.     DEFB    'Version for Epson QX-10 Computer',CR,LF
  290.     DEFB    'With HAYES external Smartmodem',CR,LF
  291.     DEFB    '(Rev. 1 - MJB - MEX+ Loadable Remote)',CR,LF
  292.     DEFB    CR,LF,0
  293.     RET
  294. ;
  295. ;----------------------------------------------------------
  296. ;
  297. ; You can put in a message at this location which can be called up with
  298. ; CTRL-O  (^-O) if TRANLOGON has been set TRUE.  You can put in several
  299. ; lines if desired.  End with a 0.
  300. ; Note:  Only works with MDM7xx -- Not MEX
  301. ;
  302. LOGON:    DEFB    'Epson QX-10 Computer Only',CR,LF,0
  303. ;
  304. ;------------------------------------------------------------
  305. ;
  306. ;
  307. ; This routine allows a 300 ms. break tone to be sent to reset some
  308. ; time-share computers.
  309. ;
  310. SENDBRK:LD    A,5
  311.     OUT    (MODCTL1),A
  312.     LD    A,0FAH        ; Send a BREAK TONE
  313.     JP    GOODBYE1
  314. ;
  315. DCDVEC:    LD    A,0FEH
  316.     RET
  317. ;
  318. RNGVEC:    LD    A,0FEH
  319.     RET
  320. ;
  321. ;
  322. ;
  323. ; This routine sends a 300 ms. break tone and sets DTR low for the same
  324. ; length of time to disconnect some modems such as the Bell 212A, etc.
  325. ;
  326. GOODBYE:LD    A,5
  327.     OUT    (MODCTL1),A    ; SEND TO THE STATUS PORT
  328.     LD    A,07AH        ; TURN OFF DTR, SEND BREAK
  329. ;
  330. GOODBYE1:
  331.     OUT    (MODCTL1),A
  332.     LD    B,3        ; DELAY 300 MS.
  333.     LD    C,TIMER
  334.     CALL    MEX
  335.     LD    A,5
  336.     OUT    (MODCTL1),A
  337.     LD    A,0EAH        ; RESTORE TO NORMAL, 8 BITS, DTR ON, ETC.
  338.     OUT    (MODCTL1),A
  339.     RET
  340. ;.....
  341. ;
  342. ;
  343. ; Epson QX-10 initialization -- sets CTC timer 00H for send and receive
  344. ; baudrate.
  345. ;
  346. ;
  347. INITMOD:LD    A,00H        ; SELECT REG.
  348.     OUT    (MODCTL1),A
  349.     LD    A,18H        ; THROW OUT OF MODE
  350.     OUT    (MODCTL1),A
  351.     LD    A,04H        ; SELECT REG.
  352.     OUT    (MODCTL1),A
  353.     LD    A,44H        ; SET ASCII PARAMETERS
  354.     OUT    (MODCTL1),A
  355.     LD    A,03H        ; SELECT REG.
  356.     OUT    (MODCTL1),A
  357.     LD    A,0C1H        ; ENABLE RECEIVE
  358.     OUT    (MODCTL1),A
  359.     LD    A,05H        ; SELECT REG.
  360.     OUT    (MODCTL1),A
  361.     LD    A,0EAH        ; ENABLE SEND, DTR, RTS
  362.     OUT    (MODCTL1),A
  363. ;
  364. INITMOD1:
  365.     LD    A,5        ; SET FILE TRANSFER TIME
  366.     LD    (MSPEED),A
  367.     LD    A,0B6H
  368.     OUT    (07H),A        ; SEND TO 'CTC' TIMER
  369.  
  370. INITMOD2:
  371.     LD    A,68H        ; DEFAULT TO 1200 BAUD, LSP PORTION
  372.     OUT    (06H),A        ; SEND TO 'CTC' TIMER
  373. ;
  374. INITMOD3:
  375.     LD    A,05H        ; 300 BAUD, MSP PORTION
  376.     OUT    (06H),A        ; TO TIMER
  377.     RET
  378. ;.....
  379. ;
  380. ;
  381. ; Sets the modem speed via the SET command.
  382. ;
  383. ;
  384. SETUPR:    LD    C,SBLANK    ; Any arguments?
  385.     CALL    MEX
  386.     CALL    C,TELL        ; If not, go display baud rate
  387.     LD    DE,CMDTBL
  388.     LD    C,LOOKUP
  389.     CALL    MEX        ; Parse argument
  390.     PUSH    HL        ; Save any parsed argument addrs on stack
  391.     RET    NC        ; If we have one, return to it
  392.     POP    HL        ; Input not found in table
  393.     LD    C,ILP
  394.     CALL    MEX        ; Tell user input not valid
  395.     DEFB    CR,LF,'Only 300, 600, 1200, 2400, 4800, 9600 or'
  396.     DEFB    ' 19200 allowed on SET command line',BELL,CR,LF,0
  397.     RET
  398. ;
  399. CMDTBL:    DEFB    '30','0'+80H
  400.     DEFW    OK300
  401.     DEFB    '60','0'+80H
  402.     DEFW    OK600
  403.     DEFB    '120','0'+80H
  404.     DEFW    OK1200
  405.     DEFB    '240','0'+80H
  406.     DEFW    OK2400
  407.     DEFB    '480','0'+80H
  408.     DEFW    OK4800
  409.     DEFB    '960','0'+80H
  410.     DEFW    OK9600
  411.     DEFB    '1920','0'+80H
  412.     DEFW    OK19200
  413.     DEFB    0
  414. ;
  415. TELL:    LD    C,ILP
  416.     CALL    MEX        ; Print current baud rate
  417.     DEFB    CR,LF,'Baud rate is now: ',0
  418.     LD    A,(MSPEED)
  419.     LD    C,PRBAUD
  420.     CALL    MEX
  421.     RET
  422. ;
  423. ;
  424. OK300:    LD    A,1
  425.     LD    HL,(BD300)
  426.     JP    LOADBD
  427. ;
  428. OK600:    LD    A,3
  429.     LD    HL,(BD600)
  430.     JP    LOADBD
  431. ;
  432. OK1200:    LD    A,5
  433.     LD    HL,(BD1200)
  434.     JP    LOADBD
  435. ;
  436. OK2400:    LD    A,6
  437.     LD    HL,(BD2400)
  438.     JP    LOADBD
  439. ;
  440. OK4800:    LD    A,7
  441.     LD    HL,(BD4800)
  442.     JP    LOADBD
  443. ;
  444. OK9600:    LD    A,8
  445.     LD    HL,(BD9600)
  446.     JP    LOADBD
  447. ;
  448. OK19200:LD    A,9
  449.     LD    HL,(BD19200)
  450. ;
  451. LOADBD:    LD    (INITMOD1+1),A    ; CHANGE TIME-TO-SEND TO MATCH BAUDRATE
  452.     LD    A,L        ; GET BAUDRATE BYTE
  453.     LD    (INITMOD2+1),A    ; SEND TO 'CTC' FOR NEW BAUDRATE
  454.     LD    A,H        ; 2ND 1/2 OF BAUDRATE
  455.     LD    (INITMOD3+1),A
  456.     JP    INITMOD1    ; REINITIALIZE TO NEW BAUDRATE, THEN DONE
  457. ;
  458. ;
  459. NEWBAUD:CP    1
  460.     JP    Z,OK300
  461.     CP    3
  462.     JP    Z,OK600
  463.     CP    5
  464.     JP    Z,OK1200
  465.     CP    6
  466.     JP    Z,OK2400
  467.     CP    7
  468.     JP    Z,OK4800
  469.     CP    8
  470.     JP    Z,OK9600
  471.     CP    9
  472.     JP    Z,OK19200
  473.     RET
  474. ;
  475. ;
  476. ; TABLE OF BAUDRATE PARAMETERS
  477. ;
  478. BD300:    DEFW    01A0H
  479. BD600:    DEFW    00D0H
  480. BD1200:    DEFW    0068H
  481. BD2400:    DEFW    0034H
  482. BD4800:    DEFW    001AH
  483. BD9600:    DEFW    000DH
  484. BD19200:DEFW    0006H
  485. ;
  486. BAUDBUF:DEFB    10,0
  487.     DEFS    10
  488. ;
  489. EOSMSG:    DEFB    01BH,059H,0,0,0,'$'
  490. CLSMSG:    DEFB    01AH,0,0,0,0,'$'
  491. ;
  492. ; NOTE:  Must Terminate Prior to 0B00H (with Smartmodem)
  493. ;                 0D00H (without Smartmodem)
  494. ;
  495.     END
  496. ;
  497.  
  498.