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 / CPM86 / M8HZ-1.A86 < prev    next >
Text File  |  2000-06-30  |  9KB  |  347 lines

  1. TITLE 'ZENITH 100 OVLY'
  2. ; M8HZ.A86 -- Zenith 100 overlay file for MDM8xx.    09/28/84
  3. ;
  4. ; This overlay adapts the MDM8xx program to the 2661 EPCI  serial I/O
  5. ; chip used in the Zenith 100 series.
  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. ;
  10. ; Edit this file for your preferences then follow the "TO USE:" example
  11. ; shown below.
  12. ;
  13. ;    TO USE: First edit this file to chose your options.
  14. ;        Then assemble with ASM86.CMD or equivalent
  15. ;        assembler.  Then use M8CNFG to overlay the
  16. ;        the results of this program to the original
  17. ;        MDM8xx.H86 file:
  18. ;
  19. ;            ASM86 M8HZ-1
  20. ;            REN M8OVL.H86=M8HZ-1.H86
  21. ;            M8CNFG
  22. ;            GENCMD MDM 8080 CODE[MFF0]
  23. ;
  24. ;         Now run MDM.  Have Fun
  25. ;
  26. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  27. ;
  28. ; 09/28/84 - Modified GP overlay for Z100    - Dennis Vallianos
  29. ; 09/21/84 - Converted for use with MDM830    - Alex Soya
  30. ; 01/10/83 - Original version for MDM701    - Irv Hoff
  31. ;
  32. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  33. ;
  34. YES        EQU    0FFH
  35. NO        EQU    0
  36. ;
  37. ;
  38. BELL        EQU    07H    ;bell
  39. CR        EQU    0DH    ;carriage return
  40. ESC        EQU    1BH    ;escape
  41. LF        EQU    0AH    ;linefeed
  42. ;
  43. ;
  44. ; Zenith 100 specific communications port data
  45. ;
  46. MODDATP        EQU    0ECH    ;modem data in port
  47. MODCTL1        EQU    0EDH    ;modem control port
  48. MODCTL2        EQU    0EDH    ;modem control port
  49. MODMODE        EQU    0EEH    ;modem mode port
  50. MODCMD        EQU    0EFH    ;modem command port
  51. ;
  52. MODRCVB        EQU    2    ;bit to test for receive
  53. MODRCVR        EQU    2    ;value when ready
  54. MODSNDB        EQU    1    ;bit to test for send
  55. MODSNDR        EQU    1    ;value when ready
  56. ;
  57.         ORG    100H
  58.         RS    3    ;(for  "JMP   START" instruction)
  59. ;
  60. ; User options.
  61. ; Change the clock speed to suit your system (defaults to 1200 baud).
  62. ;
  63. ;
  64. PMMIMODEM    DB    NO    ;yes=PMMI S-100 Modem            103H
  65. AUTODIAL    DB    NO    ;yes=HAYES-likem no=non-PMMI        104H
  66. TOUCHPULSE    DB    'T'    ;T=touch, P=pulse (Smartmodem-only)    105H
  67. CLOCK        DB    49    ;clock speed in MHz x10, 25.5 MHz max.    106H
  68.                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  69. MSPEED        DB    5    ;0=110 1=300 2=450 3=600 4=710 5=1200    107H
  70.                 ;6=2400 7=4800 8=9600 9=19200 default
  71. BYTDLY        DB    5    ;0=0 delay  1=10ms  5=50 ms - 9=90 ms    108H
  72.                 ;default time to send character in ter-
  73.                 ;minal mode file transfer for slow BBS.
  74. CRDLY        DB    5    ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  75.                 ;default time for extra wait after CRLF
  76.                 ;in terminal mode file transfer
  77. NOOFCOL        DB    5    ;number of DIR columns shown        10AH
  78. SETUPTST    DB    YES    ;yes=user-added Setup routine        10BH
  79. SCRNTEST    DB    YES    ;cursor control routine         10CH
  80. RETRY        DB    NO    ;yes=reset the error limit to try again 10DH
  81.                 ;no=abort after 10 consecutive errors
  82. BAKUPBYTE    DB    NO    ;yes=change any file same name to .BAK    10EH
  83. CRCDFLT        DB    YES    ;yes=default to CRC checking        10FH
  84. TOGGLECRC    DB    YES    ;yes=allow toggling of CRC to Checksum    110H
  85. CONVRUB        DB    NO    ;yes=convert rub to backspace        111H
  86. TOGGLELRUB    DB    YES    ;yes=allow toggling of rub to backspace 112H
  87. ADDLF        DB    NO    ;no=no LF after CR to send file in    113H
  88.                 ;terminal mode (added by remote echo)
  89. TOGGLELF    DB    YES    ;yes=allow toggling of LF after CR    114H
  90. TRANLOGON    DB    YES    ;yes=allow transmission of logon    115H
  91.                 ;write logon sequence at location LOGON
  92. RESERVED    DB    NO    ;resevered for future release        116H
  93. LOCONEXTCHR    DB    NO    ;yes=local command if EXTCHR precedes    117H
  94.                 ;no=external command if EXTCHR precedes
  95. TOGGLELOC    DB    YES    ;yes=allow toggling of LOCONEXTCHR    118H
  96. LSTTST        DB    YES    ;yes=printer available on printer port    119H
  97. XOFFTST        DB    NO    ;yes=checks for XOFF from remote while    11AH
  98.                 ;sending a file in terminal mode
  99. XONWAIT        DB    NO    ;yes=wait for XON after CR while    11BH
  100.                 ;sending a file in terminal mode
  101. TOGXOFF        DB    YES    ;yes=allow toggling of XOFF checking    11CH
  102. IGNORCTL    DB    YES    ;yes=CTL-chars above ^M not displayed    11DH
  103. EXTRA1        DB    0    ;for future expansion            11EH
  104. EXITCHR        DB    'E'-40H    ;^E = Exit to main menu         11FH
  105. BRKCHR        DB    'B'-40H    ;^B = Send 300 ms. break tone        120H
  106. NOCONNCT    DB    'N'-40H    ;^N = Disconnect from the phone line    121H
  107. LOGCHR        DB    'L'-40H    ;^L = Send logon            122H
  108. LSTCHR        DB    'P'-40H    ;^P = Toggle printer            123H
  109. UNSAVE        DB    'R'-40H    ;^R = Close input text buffer        124H
  110. TRANCHR        DB    'T'-40H    ;^T = Transmit file to remote        125H
  111. SAVECHR        DB    'Y'-40H    ;^Y = Open input text buffer        126H
  112. EXTCHR        DB    '\'-40H    ;^\ = Send next character        127H
  113. ;
  114. ;
  115. ;
  116.         RS    3        ;                128H
  117. ;
  118. IN_MODCTL1:    IN     AL,MODCTL1 ! RET    ;in modem control port        12BH
  119.         DB     0,0,0,0,0,0,0    ; spares
  120. ;
  121. OUT_MODDATP:    OUT    MODDATP,AL ! RET    ;out modem data port        135H
  122.         DB     0,0,0,0,0,0,0    ; spares
  123. ;
  124. IN_MODDATP:    IN     AL,MODDATP ! RET    ;in modem data port        13FH
  125.         DB     0,0,0,0,0,0,0    ; spares
  126. ;
  127. ANI_MODRCVB:    AND    AL,MODRCVB ! RET    ;bit to test for receive ready    149H
  128. ;
  129. CPI_MODRCVR:    CMP    AL,MODRCVR ! RET    ;value of rcv. bit when ready    14CH
  130. ;
  131. ANI_MODSNDB:    AND    AL,MODSNDB ! RET    ;bit to test for send ready    14FH
  132.  
  133. CPI_MODSNDR:    CMP    AL,MODSNDR ! RET    ;value of send bit when ready    152H
  134. ;
  135.         RS     6        ;                156H
  136. ;
  137. OUT_MODCTL1:    OUT    MODCTL1,AL ! RET    ;out modem control port #2    15BH
  138. ;
  139. OUT_MODCTL2:    OUT    MODCTL2,AL ! RET    ;out modem control port #1    15EH
  140.  
  141.  
  142.  
  143.  
  144. ;
  145. ;
  146. LOGONPTR    DW    (OFFSET    LOGON)    ;for user message.        161H
  147.         RS    6        ;                163H
  148. JMP_GOODBYE:    JMP GOODBYE        ;                169H
  149. JMP_INITMOD:    JMP INITMOD        ;go to user written routine    16CH
  150.         RET
  151.         NOP            ;(by-passes PMMI routine)    170H
  152.         NOP
  153.         RET
  154.         NOP            ;(by-passes PMMI routine)    173H
  155.         NOP
  156.         RET
  157.         NOP            ;(by-passes PMMI routine)    176H
  158.         NOP
  159. ;
  160. JMP_SETUPR:    JMP  SETUPR        ;                178H
  161. JMP_SPCLMENU:    JMP  SPCLMENU        ;                17BH
  162. JMP_SYSVER:    JMPS  SYSVER        ;make sure this is SHORT Jump    17EH
  163. JMP_BREAK:    JMP  SENDBRK        ;                180H
  164.  
  165. ;
  166. ; Do not change the following sixteen lines.
  167. ;
  168. JMP_ILPRT:    
  169.         RS    3        ;                183H
  170. JMP_INBUF:
  171.         RS    3        ;                186H
  172. JMP_INLNCOMP:
  173.         RS    3        ;                189H
  174. JMP_INMODEM:
  175.         RS    3        ;                18CH
  176. JMP_NXTSCRN:
  177.         RS    3        ;                18FH
  178. JMP_TIMER:
  179.         RS    3        ;                192H
  180. JMP_CTYPE:
  181.         RS    3        ;                195H
  182. JMP_KEYIN:
  183.         RS    3        ;                198H
  184. ;
  185. ;
  186. ; Routine to clear to end of screen.  If using CLREOS and CLRSCRN, set
  187. ; SCRNTEST to YES at 010AH (above).
  188. ;
  189. CLREOS:    CALL    JMP_ILPRT        ;                19BH
  190.     DB    ESC,'J',0,0,0        ;                19EH
  191.     RET                ;                1A3H
  192. ;
  193. CLRSCRN:CALL    JMP_ILPRT        ;                1A4H
  194.     DB    ESC,'E',0,0,0        ;                1A7H
  195.     RET                ;                1ACH
  196. ;
  197. SYSVER:    CALL    JMP_ILPRT        ;                1ADH
  198.     DB    'Version for Zenith 100 modem port J2'
  199.     DB    CR,LF,0
  200.     RET
  201. ;.....
  202. ;
  203. ;
  204. ;-----------------------------------------------------------------------
  205. ;
  206. ; NOTE:  You can change the SYSVER message to be longer or shorter.  The
  207. ;     end of your last routine should terminate by 0600H if using the
  208. ;     Hayes Smartmodem or by address 0C00H otherwise.
  209. ;
  210. ;-----------------------------------------------------------------------
  211. ;
  212. ; You can put in a message at this location which can be called up with
  213. ; CTL-O if TRANLOGON has been set TRUE.  You can use several lines if
  214. ; desired.  End with a 0.
  215. ;
  216. LOGON    DB    'Hello out there!',CR,LF,0
  217.  
  218. ;.....
  219. ;
  220. ;
  221. ; Send a break tone to reset some time-share computers, if desired.
  222. ;
  223. SENDBRK:MOV    AL,1DH
  224.     JMP    GOODBYE1
  225. ;.....
  226. ;
  227. ;
  228. ; Routine here to put DTR low and disconnect modem.
  229. ;
  230. GOODBYE:MOV    AL,0            ;selecting chip forces DTR low
  231. ;
  232. GOODBYE1:
  233.     OUT    MODCMD,AL
  234.     IN    AL,MODCMD
  235.     IN    AL,MODCMD
  236.     MOV    CH,3            ;hold for 300 ms
  237.     CALL    JMP_TIMER
  238.     MOV    AL,37H            ;reset to normal
  239.     OUT    MODCMD,AL
  240.     IN    AL,MODCMD    
  241.     IN    AL,MODCMD    
  242.     MOV    AL,0
  243.     RET
  244. ;.....
  245. ;
  246. ;
  247. ; The following routine initializes the 2661B I/O port.
  248. ;
  249. INITMOD:MOV    AL,0            ;select chip
  250.       OUT    MODCMD,AL
  251.     IN    AL,MODCMD
  252.     IN    AL,MODCMD
  253.     MOV    AL,4EH            ;async., 8 bits, 1 stop, no parity
  254.     OUT    MODMODE,AL
  255.     MOV    BL,BYTE PTR MSPEED    ;get baud rate
  256.     DEC    BL            ;adjust for table offset
  257.     XOR    BH,BH            ;make 16 bit
  258.     MOV    AL,BYTE PTR BDTBL[BX]
  259.     OUT    MODMODE,AL        ;set baud rate
  260.     MOV    AL,37H            ;async, RTS, DTR, etc.
  261.       OUT    MODCMD,AL
  262.     IN    AL,MODCMD
  263.     IN    AL,MODCMD
  264.     MOV    AL,0            ;clear register
  265.     RET
  266. ;.....
  267. ;
  268. ; Use the 'SET' command to select a desired baud rate.
  269. ;
  270. SETUPR:    MOV    DX,OFFSET BAUDBUF
  271.     CALL    JMP_ILPRT
  272.     DB    'Input Baud Rate (300, 1200, 2400, 4800, 9600): ',0
  273.     CALL    JMP_INBUF        ;get user's input
  274.     MOV    DX,(OFFSET BAUDBUF)+2
  275.     CALL    JMP_INLNCOMP        ;compare BAUDBUF+2 with chars. below
  276.     DB    '300',0
  277.     JNB    OK300
  278.     CALL    JMP_INLNCOMP
  279.     DB    '1200',0
  280.     JNB    OK1200
  281.     CALL    JMP_INLNCOMP
  282.     DB    '2400',0
  283.     JNB    OK2400
  284.     CALL    JMP_INLNCOMP
  285.     DB    '4800',0
  286.     JNB    OK4800
  287.     CALL    JMP_INLNCOMP
  288.     DB    '9600',0
  289.     JNB    OK9600
  290.     CALL    JMP_ILPRT        ;failed to match - tell operator
  291.     DB    '++ Incorrect entry ++',CR,LF,BELL,0
  292.     JMP    SETUPR            ;try again
  293. ;
  294. OK300:    MOV    AL,1
  295.     JMPS    LOADBD
  296. ;
  297. OK1200:    MOV    AL,5
  298.     JMPS    LOADBD
  299. ;
  300. OK2400:    MOV    AL,6
  301.     JMPS    LOADBD
  302. ;
  303. OK4800:    MOV    AL,7
  304.     JMPS    LOADBD
  305. ;
  306. OK9600:    MOV    AL,8
  307.     JMPS    LOADBD
  308. ;
  309. OK19200:
  310.     MOV    AL,9
  311. ;
  312. LOADBD:    MOV    BYTE PTR MSPEED,AL    ;change so messages are ok
  313.     JMP    INITMOD            ;reinitialize chip to new speed        
  314. ;
  315. ; TABLE OF BAUDRATE PARAMETERS
  316. ;
  317. BD300    EQU    0F6H
  318. BD450    EQU    0            ;450 bps NOT SUPPORTED
  319. BD600    EQU    0            ;600 bps NOT SUPPORTED
  320. BD710    EQU    0            ;710 bps NOT SUPPORTED
  321. BD1200    EQU    0F8H
  322. BD2400    EQU    0FBH
  323. BD4800    EQU    0FCH
  324. BD9600    EQU    0FDH
  325. BD19200    EQU    0FEH
  326. ;
  327. BAUDBUF    DB    10,0
  328.     RS    10
  329. ;
  330. ; Pointer table
  331. ;
  332. BDTBL    DB    BD300,BD450,BD600,BD710,BD1200,BD2400,BD4800,BD9600,BD19200
  333. ;
  334. ;
  335. ; If using the Hayes Smartmodem this is unavailable without a special
  336. ; change.
  337. ;
  338. SPCLMENU:
  339.     RET
  340. ;
  341. ;
  342. ; NOTE:  MUST TERMINATE PRIOR TO 0600H (with Smartmodem)
  343. ;                 0C00H (without Smartmodem)
  344. ;.....
  345. ;
  346.       END
  347.