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 / MXO-MR10.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  11KB  |  332 lines

  1. ;
  2. ; MXO-MR10.ASM - Morrow Micro Decision MD-11 overlay file for MEX
  3. ;                or MDM712.
  4. ; 6/28/84
  5. ;
  6. ;  (Adapted from M712MD.ASM, originally for Morrow MD-2 & MD-3)
  7. ;
  8. ; You will want to look this file over carefully. There are a number of
  9. ; options that you can use to configure the program to suit your taste.
  10. ; This file adapts either modem program to the Morrow MD-11 computer.
  11. ; (It is not for use with the Morrow MD-2 or MD-3 computers.)
  12. ; While this computer has a number of serial ports, one is used for the
  13. ; terminal and the another for the printer/modem.  To use this
  14. ; overlay, you must use the CP/M program "SETUP" to set the printer/
  15. ; modem port to 1200 baud.  (This is usually done automatically upon
  16. ; a boot.)  Configure the internal jumpers to make the port a DTE
  17. ; type of device (page D-16 in my MD-11 User's Guide) for use with
  18. ; modems.
  19. ;
  20. ; Edit this file for your preferences then follow the "TO USE:" example
  21. ; shown below.
  22. ;
  23. ; Use the "SET" command to change the baudrate when desired.  It starts
  24. ; out at 1200 baud when the program is first called up.  If you exit
  25. ; the program while at 300 baud, re-boot the Morrow before proceeding
  26. ; in order to reprogram the Zilog DART to the correct clock ratio.
  27. ; (The SET command alters the DART clock divide ratio, not the
  28. ; clock frequency itself).  Exiting the program when set to 1200
  29. ; baud causes no such concern. (This advice only applies to usage
  30. ; of the SET command).
  31. ;
  32. ;    TO USE: First edit this file filling in answers for your own
  33. ;        equipment.  Then assemble with ASM.COM or equivalent
  34. ;        assembler.  Then use DDT to overlay the the results
  35. ;        of this program on the original MDM712.COM file (or
  36. ;               follow the instructions with MEX to overlay MEX10.COM).
  37. ;
  38. ;        For MDM712:
  39. ;
  40. ;        A>SAVE
  41. ;        A>DDT MDM712.COM
  42. ;        DDT VERS 2.2
  43. ;        NEXT  PC
  44. ;        4300 0100
  45. ;        -IMXO-MR10.HEX        (note the "I" command)
  46. ;        -R            ("R" loads in the .HEX file)
  47. ;        NEXT  PC
  48. ;        4300 0000
  49. ;        -G0            (that's a zero: return to CP/M)
  50. ;
  51. ;        CP/M 3 SAVE - Version 3.0
  52. ;        Enter file (type RETURN to exit): MODEM7.COM
  53. ;        Beginning hex address 0100
  54. ;        Ending hex address    4300
  55. ;        A>
  56. ;
  57. ;        You now have MODEM7.COM (or MEX.COM) for use on the
  58. ;        Morrow MD-11.
  59. ;    
  60. ;
  61. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  62. ;
  63. ; 06/28/84 - Further revisions & renamed for MEX- Steve Reyer
  64. ; 05/28/84 - Revised for use on Morrow MD-11    - Steve Reyer
  65. ; 07/21/83 - Renamed for use with MDM712    - Irv Hoff
  66. ; 07/01/83 - Revised for use with MDM711    - Irv Hoff
  67. ; 06/22/83 - Revised for use with MDM710    - Irv Hoff
  68. ; 06/22/83 - Altered MDM708DP for Morrow
  69. ;         Micro Decision computers using
  70. ;         an external modem            - Irv Hoff
  71. ;
  72. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  73. ;
  74. BELL:        EQU    07H        ;bell
  75. CR:        EQU    0DH        ;carriage return
  76. ESC:        EQU    1BH        ;escape
  77. LF:        EQU    0AH        ;linefeed
  78. ;
  79. YES:        EQU    0FFH
  80. NO:        EQU    0
  81. ;
  82. ;
  83. PORT:        EQU    62H        ;Morrow MD-11 prt/modem port
  84. MODCTL1:    EQU    PORT+1        ;Modem status port
  85. MODDATP:    EQU    PORT        ;Modem data port
  86. MODCTL2:    EQU    PORT+1        ;Modem control port
  87. ;
  88. ; The following was added by Reyer to define the Zilog DART
  89. ;
  90. MODSNDB:    EQU    04H        ;bit to test for send 
  91. MODSNDR        EQU    04H        ;value when ready     
  92. MODRCVB        EQU    01H        ;bit to test for recv 
  93. MODRCVR        EQU    01H        ;value when ready     
  94. ;
  95. ;
  96.         ORG    100H
  97. ;
  98.         DS    3    ;(for  "JMP   START" instruction)
  99. ;
  100.  
  101.  
  102. PMMIMODEM:    DB    NO    ;yes=PMMI S-100 Modem            103H
  103. SMARTMODEM:    DB    YES    ;yes=HAYES Smartmodem, no=non-PMMI    104H
  104. TOUCHPULSE:    DB    'T'    ;T=Touch, P=Pulse (Smartmodem-only)    105H
  105. CLOCK:        DB    40    ;clock speed in MHz x10, 25.5 MHz max.    106H
  106.                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  107. MSPEED:        DB    5    ;0=110 1=300 2=450 3=600 4=710 5=1200   107H
  108.                 ;6=2400 7=4800 8=9600 9=19200 default
  109. BYTDLY:        DB    5    ;0=0 delay  1=10ms  5=50 ms - 9=90 ms   108H
  110.                 ;default time to send character in ter-
  111.                 ;minal mode file transfer for slow BBS.
  112. CRDLY:        DB    5    ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  113.                 ;default time for extra wait after CRLF
  114.                 ;in terminal mode file transfer
  115. NOOFCOL:    DB    5    ;number of DIR columns shown        10AH
  116. SETUPTST:    DB    YES    ;yes=user-added Setup routine        10BH
  117. SCRNTEST:    DB    YES    ;Cursor control routine         10CH
  118. ACKNAK:        DB    YES    ;yes=resend a record after any non-ACK    10DH
  119.                 ;no=resend a record after a valid NAK
  120. BAKUPBYTE:    DB    NO    ;yes=change any file same name to .BAK    10EH
  121. CRCDFLT:    DB    YES    ;yes=default to CRC checking        10FH
  122. TOGGLECRC:    DB    YES    ;yes=allow toggling of CRC to Checksum    110H
  123. CONVBKSP:    DB    NO    ;yes=convert backspace to rub        111H
  124. TOGGLEBK:    DB    YES    ;yes=allow toggling of bksp to rub    112H
  125. ADDLF:        DB    NO    ;no=no LF after CR to send file in    113H
  126.                 ;terminal mode (added by remote echo)
  127. TOGGLELF:    DB    YES    ;yes=allow toggling of LF after CR    114H
  128. TRANLOGON:    DB    YES    ;yes=allow transmission of logon    115H
  129.                 ;write logon sequence at location LOGON
  130. SAVCCP:        DB    YES    ;yes=do not overwrite CCP        116H
  131. LOCONEXTCHR:    DB    NO    ;yes=local command if EXTCHR precedes    117H
  132.                 ;no=external command if EXTCHR precedes
  133. TOGGLELOC:    DB    YES    ;yes=allow toggling of LOCONEXTCHR    118H
  134. LSTTST:        DB    YES    ;no=using modem on printer port        119H
  135. XOFFTST:    DB    YES    ;yes=checks for XOFF from remote while    11AH
  136.                 ;sending a file in terminal mode
  137. XONWAIT:    DB    NO    ;yes=wait for XON after CR while    11BH
  138.                 ;sending a file in terminal mode
  139. TOGXOFF:    DB    YES    ;yes=allow toggling of XOFF checking    11CH
  140. IGNORCTL:    DB    YES    ;yes=CTL-chars above ^M not displayed    11DH
  141. EXTRA1:        DB    0    ;for future expansion            11EH
  142. EXTRA2:        DB    0    ;for future expansion            11FH
  143. BRKCHR:        DB    '@'-40H    ;^@ = Send 300 ms. break tone        120H
  144. NOCONNCT:    DB    'N'-40H    ;^N = Disconnect from phone line    121H
  145. LOGCHR:        DB    'L'-40H    ;^L = Send logon            122H
  146. LSTCHR:        DB    'P'-40H    ;^P = Toggle printer            123H
  147. UNSAVE:        DB    'R'-40H    ;^R = Close input text buffer        124H
  148. TRANCHR:    DB    'T'-40H ;^T = Transmit file to remote        125H
  149. SAVECHR:    DB    'Y'-40H    ;^Y = Open input text buffer        126H
  150. EXTCHR:        DB    '^'-40H    ;^^ = Send next character        127H
  151. ;
  152. ;
  153.         DS    2        ;                128H
  154. ;
  155. IN$MODCTL1:    IN    MODCTL1 ! RET    ;in modem control port             12AH
  156.         DS    7
  157. OUT$MODDATP:    OUT    MODDATP ! RET    ;out modem data port        134H
  158.         DS    7
  159. IN$MODDATP:    IN    MODDATP ! RET    ;in modem data port        13EH
  160.         DS    7        ;
  161. ;
  162. ANI$MODRCVB:    ANI    MODRCVB    ! RET    ;Reyer: These lines were
  163. CPI$MODRCVR:    CPI    MODRCVR    ! RET    ;added to make it similar to
  164. ANI$MODSNDB:    ANI    MODSNDB    ! RET    ;similar overlays where the
  165. CPI$MODSNDR    CPI    MODSNDR    ! RET    ;UART flags needed testing
  166.         DS    12        ;
  167. ;
  168. ;
  169. LOGONPTR:    DW    LOGON        ;for user message.        160H
  170.         DS    6        ;                162H
  171. JMP$GOODBYE:    JMP    GOODBYE        ;                168H
  172. JMP$INITMOD:    JMP    INITMOD        ;go to user written routine    16BH
  173.         RET  !  NOP  !  NOP    ;(by-passes PMMI routine)    16EH
  174.         RET  !  NOP  !  NOP    ;(by-passes PMMI routine)    171H
  175.         RET  !  NOP  !  NOP    ;(by-passes PMMI routine)    174H
  176. JMP$SETUPR:    JMP    SETUPR        ;                177H
  177. JMP$SPCLMENU:    JMP    SPCLMENU    ;                17AH
  178. JMP$SYSVER:    JMP    SYSVER        ;                17DH
  179. JMP$BREAK:    JMP    SENDBRK        ;                180H
  180. ;
  181. ;
  182. ; Do not change the following six lines.
  183. ;
  184. JMP$ILPRT:    DS    3        ;                183H
  185. JMP$INBUF    DS    3        ;                186H
  186. JMP$INLNCOMP:    DS    3        ;                189H
  187. JMP$INMODEM    DS    3        ;                18CH
  188. JMP$NXTSCRN:    DS    3        ;                18FH
  189. JMP$TIMER:    DS    3        ;                192H
  190. ;
  191. ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
  192. ; entire screen.  Last entry must be 0.  Any other 0's act as NOP's.
  193. ; The SCRNTST option must be set "YES" for these to work.  These are now
  194. ; set for the Morrow MDT-60 terminal.
  195. ;
  196. CLREOS:        CALL    JMP$ILPRT    ;                195H
  197.         DB    ESC,'Y',0,0,0    ;                198H
  198.         RET            ;                19DH
  199. ;
  200. CLRSCRN:    CALL    JMP$ILPRT    ;                19EH
  201.         DB    ESC,'*',0,0,0    ;                1A1H
  202.         RET            ;                1A6H
  203. ;
  204. ;
  205. SYSVER:        CALL    JMP$ILPRT    ;                1A7H
  206.         DB    'Version for Morrow MD-11 hard-disk computer'
  207.         DB    CR,LF,0
  208.         RET
  209. ;.....
  210. ;
  211. ;
  212. ;-----------------------------------------------------------------------
  213. ;
  214. ; NOTE:  You can change the SYSVER message to be longer or shorter.  The
  215. ;     end of your last routine should terminate by 0400H (601 bytes
  216. ;     available after start of SYSVER) if using the Hayes Smartmodem
  217. ;     or by address 0C00H (2659 bytes) otherwise.
  218. ;
  219. ;-----------------------------------------------------------------------
  220. ;
  221. ; You can put in a message at this location which can be called up with
  222. ; CTL-O if TRANLOGON has been set YES.  You can put in several lines if
  223. ; desired.  End with a 0.
  224. ;
  225. ;
  226. LOGON:      DB    'This is a Morrow MD-11 computer',CR,LF,0
  227. ;.....
  228. ;
  229. ;
  230. ;=======================================================================
  231. ; Extensive changes from the original Morrow overlay, M712MD.ASM
  232. ; have been made below by Reyer to accomodate the MD-11 and its
  233. ; Zilog DART (Dual UART).  Notation such as "REG. 5" refers to
  234. ; write-registers in the Zilog DART.
  235. ;
  236. ; This routine allows a 300 ms. break tone to be sent to reset some
  237. ; time-share computers.
  238. ;
  239. SENDBRK:  MVI    A,05H        ;SELECT REG. 5
  240.       OUT    MODCTL1
  241.       MVI    A,0FAH        ;SEND BREAK ONLY
  242.       OUT    MODCTL1
  243.       JMP    GOODBYE1    ;GO TO WAIT
  244. ;...
  245. ;
  246. ;
  247. ; This routine sends a 300 ms. break tone and sets DTR low for the same
  248. ; length of time to disconnect some modems such as the Bell 212A, etc.
  249. ;
  250. GOODBYE:  MVI    A,05H        ;REG. 5
  251.       OUT    MODCTL1
  252.       MVI    A,7AH        ;DTR OFF AND BREAK SENT
  253.       OUT    MODCTL1
  254. GOODBYE1: MVI    B,3        ;300 MS.
  255.       CALL    JMP$TIMER
  256.       MVI    A,05H        ;REG. 5
  257.       OUT    MODCTL1
  258.       MVI    A,0EAH        ;DTR ON, NO BREAK
  259.       OUT    MODCTL1
  260.       RET
  261. ;
  262. ;
  263. ;
  264. ;.....
  265. ;
  266. ;
  267. ; No initialization other than using SETUP (if needed) from
  268. ; CP/M is required.  The following is part of the SET
  269. ; command code.  (see OK300, OK1200, LOADBD, below).
  270. ;
  271. INITMOD:  MVI    A,5        ;TRANSFER TIME FOR 1200 BAUD
  272.       STA    MSPEED    
  273.       MVI    A,04H        ;SELECT REG. 4
  274.       OUT    MODCTL1
  275. INITMOD1: MVI    A,44H        ;DEFAULT TO /16 FOR 1200 BAUD
  276.       OUT    MODCTL1
  277.       IN    PORT        ;CLEAR DATA PORT
  278.       RET
  279. ;.....
  280. ;
  281. ;
  282. SETUPR:      LXI    D,BAUDBUF    ;POINT TO NEW INPUT BUFFER
  283.       CALL    JMP$ILPRT
  284.       DB    'Input Baud Rate (300, 1200): ',0
  285.       CALL    JMP$INBUF
  286.       LXI    D,BAUDBUF+2
  287.       CALL    JMP$INLNCOMP    ;COMPARE BAUDBUF+2 WITH CHARACTERS BELOW
  288.       DB    '300',0
  289.       JNC    OK300        ;GO IF GOT MATCH
  290.       CALL    JMP$INLNCOMP
  291.       DB    '1200',0
  292.       JNC    OK1200
  293.       CALL    JMP$ILPRT    ;ALL MATCHES FAILED, TELL OPERATOR
  294.       DB    '++ Incorrect entry ++',CR,LF,BELL,0
  295.       JMP    SETUPR        ;TRY AGAIN
  296. ;
  297. OK300:      MVI    A,1        ;MSPEED 300 BAUD VALUE
  298.       MVI    B,0C4H        ;DIVIDE BY 64 FOR 300 BAUD
  299.       JMP    LOADBD        ;GO LOAD THEM
  300. ;
  301. OK1200:      MVI    A,5
  302.       MVI    B,44H        ;DIVIDE BY 16 FOR 1200 BAUD
  303. ;
  304. ;
  305. LOADBD:      STA    INITMOD+1    ;CHANGE TIME-TO-SEND TO MATCH BAUDRATE
  306.       MOV    A,B        ;GET BAUDRATE BYTE
  307.       STA    INITMOD1+1    ;STORE IN INITMOD
  308.       JMP    INITMOD        ;REINITIALIZE TO NEW BAUDRATE, THEN DONE
  309. ;
  310. ;
  311. BAUDBUF:  DB    10,0
  312.       DS    10
  313. ;.....
  314. ;
  315. ;
  316. ;           (END OF INITMOD AND SETUP ROUTINES)
  317. ;=======================================================================
  318. ;        
  319. ;
  320. ; These routines can be used for your equipment, be sure to end with RET
  321. ;
  322. SPCLMENU: RET
  323. ;        
  324. ;=======================================================================
  325. ;
  326. ;
  327. ; NOTE:  MUST TERMINATE PRIOR TO 0400H (with Smartmodem)
  328. ;                 0C00H (without Smartmodem).
  329. ;
  330.       END
  331. ;
  332.