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-DB10.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  14KB  |  395 lines

  1. ; MXO-DB10.ASM - DYNABYTE DB 8/1 overlay file for MEX10.  06/21/84
  2. ;
  3. ; You will want to look this file over carefully. There are a number of
  4. ; options that you can use to configure the program to suit your taste.
  5. ; This file adapts the Dynabyte DB 8/1 computer to the mex program. 
  6. ; This version is set up to drive serial port 1. The baud rate may be changed
  7. ; to either 300 or 1200 with he "SET" command. If you need help with 
  8. ; * DYNABYTE * installation you may call me after 7:00 pm @ 813-644-4060
  9. ; weekdays  or anytime weekends. 
  10. ;                                         goodluck, Butch Balingit
  11. ;
  12. ; Edit this file for your preferences then follow the "TO USE:" example
  13. ; shown below.
  14. ;
  15. ; Use the "SET" command to change the baudrate when desired.  It starts
  16. ; out at 1200 baud when the program is first called up.
  17. ;
  18. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  19. ;
  20. ; 06/21/84 - Revised for Dynabyte serial port 1 - Butch Balingit
  21. ; 05/15/84 - Converted from MDM7xx to MEX10     - Sandy Berger
  22. ; 03/25/84 - Revised for use with MDM730        - Sandy Berger
  23. ; 11/11/83 - Renamed to M7MD-1.ASM, no changes    - Irv Hoff
  24. ; 07/21/83 - Renamed for use with MDM712    - Irv Hoff
  25. ; 07/01/83 - Revised for use with MDM711    - Irv Hoff
  26. ; 06/22/83 - Revised for use with MDM710    - Irv Hoff
  27. ;
  28. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  29. ;
  30. BELL:        EQU    07H        ;bell
  31. CR:        EQU    0DH        ;carriage return
  32. ESC:        EQU    1BH        ;escape
  33. LF:        EQU    0AH        ;linefeed
  34. ;
  35. YES:        EQU    0FFH
  36. NO:        EQU    0
  37. ;
  38. MODDATO:        EQU    86H        ;Modem out port
  39. MODDATI:        EQU     80H             ;Modem in port
  40. MODCTL1:    EQU    83H        ;Modem status port
  41. MODCTL2:    EQU    83H        ;Modem control port
  42. MODRCVB:    EQU    08H        ;Modem receive bit
  43. MODRCVR:    EQU    08H        ;Modem receive ready
  44. MODSNDB:    EQU    10H        ;Modem send bit
  45. MODSNDR:    EQU    10H        ;Modem send ready bit
  46. ;
  47. ; MEX service processor stuff
  48. ;
  49. INMDM    EQU    255        ;get char from port to A, CY=no more in 100 ms
  50. TIMER    EQU    254        ;delay 100ms * reg B
  51. TMDINP    EQU    253        ;B=# secs to wait for char, cy=no char
  52. CHEKCC    EQU    252        ;check for ^C from KBD, Z=presentèSNDRDY    EQU    251        ;test for modem-send ready
  53. RCVRDY    EQU    250        ;test for modem-receive ready
  54. SNDCHR    EQU    249        ;send a character to the modem (after sndrdy)
  55. RCVCHR    EQU    248        ;recv a char from modem (after rcvrdy)
  56. LOOKUP    EQU    247        ;table search: see CMDTBL comments for info
  57. PARSFN    EQU    246        ;parse filename from input stream
  58. BDPARS    EQU    245        ;parse baud-rate from input stream
  59. SBLANK    EQU    244        ;scan input stream to next non-blank
  60. EVALA    EQU    243        ;evaluate numeric from input stream
  61. LKAHED    EQU    242        ;get nxt char w/o removing from input
  62. GNC    EQU    241        ;get char from input, cy=1 if none
  63. ILP    EQU    240        ;inline print
  64. DECOUT    EQU    239        ;decimal output
  65. PRBAUD    EQU    238        ;print baud rate
  66. ;
  67.         ORG    100H
  68. ;
  69.         DS    3    ;(for  "JMP   START" instruction)
  70. ;
  71. PMMIMODEM:    DB    NO    ;yes=PMMI S-100 Modem            103H
  72. SMARTMODEM:    DB    YES    ;yes=HAYES Smartmodem, no=non-PMMI    104H
  73. TOUCHPULSE:    DB    'P'    ;T=Touch, P=Pulse (Smartmodem-only)    105H
  74. CLOCK:        DB    40    ;clock speed in MHz x10, 25.5 MHz max.    106H
  75.                 ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
  76. MSPEED:        DB    5    ;0=110 1=300 2=450 3=600 4=710 5=1200    107H
  77.                 ;6=2400 7=4800 8=9600 9=19200 default
  78. BYTDLY:        DB    5    ;0=0 delay  1=10ms  5=50 ms - 9=90 ms    108H
  79.                 ;default time to send character in ter-
  80.                 ;minal mode file transfer for slow BBS.
  81. CRDLY:        DB    5    ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
  82.                 ;default time for extra wait after CRLF
  83.                 ;in terminal mode file transfer
  84. NOOFCOL:    DB    5    ;number of DIR columns shown        10AH
  85. SETUPTST:    DB    YES    ;yes=user-added Setup routine        10BH
  86. SCRNTEST:    DB    YES    ;Cursor control routine         10CH
  87. RETRY:        DB    YES    ;yes=ask user to reset error count    10DH
  88.                 ;after 10 consecutive errors
  89.                 ;no=abort after 10 consecutive errors
  90. BAKUPBYTE:    DB    NO    ;yes=change any file same name to .BAK    10EH
  91. CRCDFLT:    DB    YES    ;yes=default to CRC checking        10FH
  92. TOGGLECRC:    DB    YES    ;yes=allow toggling of CRC to Checksum    110H
  93. CONVRUB:    DB    NO    ;yes=convert rub to backspace        111H
  94. TOGGLERUB:    DB    YES    ;yes=allow toggling of rub to bksp    112H
  95. ADDLF:        DB    NO    ;no=no LF after CR to send file in    113H
  96.                 ;terminal mode (added by remote echo)
  97. TOGGLELF:    DB    YES    ;yes=allow toggling of LF after CR    114H
  98. TRANLOGON:    DB    YES    ;yes=allow transmission of logon    115H
  99.                 ;write logon sequence at location LOGON
  100. SAVCCP:        DB    YES    ;yes=do not overwrite CCP        116H
  101. LOCONEXTCHR:    DB    YES    ;yes=local command if EXTCHR precedes    117H
  102.                 ;no=external command if EXTCHR precedes
  103. TOGGLELOC:    DB    YES    ;yes=allow toggling of LOCONEXTCHR    118H
  104. LSTTST:        DB    NO    ;no=using modem on printer port        119H
  105. XOFFTST:    DB    YES    ;yes=checks for XOFF from remote while    11AH
  106.                 ;sending a file in terminal modeèXONWAIT:    DB    NO    ;yes=wait for XON after CR while    11BH
  107.                 ;sending a file in terminal mode
  108. TOGXOFF:    DB    YES    ;yes=allow toggling of XOFF checking    11CH
  109. IGNORCTL:    DB    NO    ;yes=CTL-chars above ^M not displayed    11DH
  110. EXTRA1:        DB    0    ;for future expansion            11EH
  111. EXTRA2:        DB    0    ;for future expansion            11FH
  112. BRKCHR:        DB    '\'-40H    ;^\ = Send 50 ms. break tone        120H
  113. NOCONNCT:    DB    'N'-40H    ;^N = Disconnect from phone line    121H
  114. LOGCHR:        DB    'L'-40H    ;^L = Send logon            122H
  115. LSTCHR:        DB    'P'-40H    ;^P = Toggle printer            123H
  116. UNSAVE:        DB    'R'-40H    ;^R = Close input text buffer        124H
  117. TRANCHR:    DB    'T'-40H ;^T = Transmit file to remote        125H
  118. SAVECHR:    DB    'Y'-40H    ;^Y = Open input text buffer        126H
  119. EXTCHR:        DB    ']'-40H    ;^] = Send next character        127H
  120. ;
  121. ;
  122.         DS    2        ;                128H
  123. ;
  124. IN$MODCTL1:    IN    MODCTL1 ! RET    ;in modem control port        12AH
  125.         DS    7
  126. OUT$MODDATP:    OUT    MODDATO ! RET    ;out modem data port        134H
  127.         DS    7
  128. IN$MODDATP:    IN    MODDATI ! RET    ;in modem data port        13EH
  129.         DS    7
  130. ANI$MODRCVB:    ANI    MODRCVB ! RET    ;bit to test for receive ready
  131. CPI$MODRCVR:    CPI    MODRCVR ! RET    ;value of receive bit when ready
  132. ANI$MODSNDB:    ANI    MODSNDB ! RET    ;bit to test for send ready
  133. CPI$MODSNDR:    CPI    MODSNDR ! RET    ;value of send bit when ready
  134.         DS    12
  135. ;
  136. LOGONPTR:    DW    LOGON        ;for user message.        160H
  137.         DS    3        ;                162H
  138. JMP$DISCONNT:    RET ! NOP ! NOP          ;                165H
  139. JMP$GOODBYE:    RET ! NOP ! NOP        ;                168H
  140. JMP$INITMOD:    JMP    INITMOD        ;go to user written routine    16BH
  141. JMP$NEWBAUD:    JMP    NEWBAUD        ;sets baud rate associated with#16EH
  142.         RET  !    NOP  !    NOP    ;(by-passes PMMI routine)    171H
  143.         RET  !    NOP  !    NOP    ;(by-passes PMMI routine)    174H
  144. JMP$SETUPR:    JMP    SETUPR        ;                177H
  145. JMP$SPCLMENU:    JMP    SPCLMENU    ;                17AH
  146. JMP$SYSVER:    JMP    SYSVER        ;                17DH
  147. JMP$BREAK:    JMP    SENDBRK        ;                180H
  148. ;
  149. ;
  150. ; Do not change the following six lines.
  151. ;
  152. JMP$ILPRT:    DS    3        ;                183H
  153. JMP$INBUF    DS    3        ;                186H
  154. JMP$INLNCOMP:    DS    3        ;                189H
  155. JMP$INMODEM    DS    3        ;                18CH
  156. JMP$NXTSCRN:    DS    3        ;                18FH
  157. JMP$TIMER:    DS    3        ;                192H
  158. ;
  159. ; Clear sequences -- CLREOS is clear to end of screen, CLRSCRN is clear
  160. ; entire screen.  Last entry must be 0.  Any other 0's act as NOP's.è; The SCRNTST option must be set "YES" for these to work.  These are now
  161. ; set for the DEC VT100 terminal.
  162. ;
  163. CLREOS:        MVI    C,ILP
  164.         CALL    MEX
  165.         DB    126,24,0
  166.         RET
  167. ;
  168. CLRSCRN:    MVI    C,ILP
  169.         CALL    MEX
  170.         DB    126,28,0
  171.         RET
  172. ;
  173. ;
  174. SYSVER:        MVI    C,ILP
  175.         CALL    MEX
  176.         DB    'Version for DYNABYTE DB 8/1 computer'
  177.         DB    CR,LF,0
  178.         RET
  179. ;.....
  180. ;
  181. ;
  182. ;-----------------------------------------------------------------------
  183. ;
  184. ; NOTE:  You can change the SYSVER message to be longer or shorter.  The
  185. ;     end of your last routine should terminate by 0B00H if using the
  186. ;    Hayes Smartmodem or by address 0D00H otherwise.
  187. ;
  188. ;-----------------------------------------------------------------------
  189. ;
  190. ;
  191. LOGON:      DB    'LOGON GOES HERE',cr,0
  192. ;.....
  193. ;
  194. ;
  195. ;=======================================================================
  196. ;
  197. ; This routine allows a 300 ms. break tone to be sent to reset some
  198. ; time-share computer.
  199. ;
  200. SENDBRK:  RET
  201. ;
  202. GOOBYE:   RET
  203. ;
  204. GOOBYE1:  RET
  205. ;
  206. INITMOD:  MVI    A,5        ;TRANSFER TIME FOR 1200 BAUD
  207.       STA    MSPEED    
  208.       MVI    A,01H        ;INITIALIZE USART
  209.       OUT    84H        ;BAUD CONTROL PORT
  210. ;
  211. INITMOD1: MVI    A,88H        ;DEFAULT TO 1200 BAUD
  212.       OUT    85H        ;BAUD RATE PORT
  213.       IN    MODDATI         ;CLEAR DATA PORT
  214. ;
  215.       RET
  216. ;.....
  217. ;
  218. ;
  219. SETUPR:      MVI    C,SBLANK    ;ANY ARGUMENTS?
  220.       CALL    MEX
  221.       JC    TELL        ;IF NOT, GO DISPLAY BAUD
  222.       LXI    D,CMDTBL
  223.       MVI    C,LOOKUP
  224.       CALL    MEX        ;PARSE ARGUMENT
  225.       PUSH    H        ;SAVE ANY PARSED ARGUMENT ADRS ON STACK
  226.       RNC            ;IF WE HAVE ONE, RETURN TO IT
  227.       POP    H        ;OOPS, INPUT NOT FOUND IN TABLE
  228.       MVI    C,ILP
  229.       CALL    MEX        ;TELL USER INPUT NOT VALIDè      DB    CR,LF,'Only 300 or 1200 allowed on SET command',CR,LF,0
  230.       RET
  231. ;
  232. CMDTBL:      DB    '30','0'+80H
  233.       DW    OK300
  234.       DB    '120','0'+80H
  235.       DW    OK1200
  236.       DB    0
  237. ;
  238. TELL:      MVI    C,ILP
  239.       CALL    MEX        ;PRINT CURRENT BAUD RATE
  240.       DB    CR,LF,'Baud rate is now: ',0
  241.       LDA    MSPEED
  242.       MVI    C,PRBAUD
  243.       CALL    MEX
  244.       RET
  245. ;
  246. OK300:      MVI    A,1        ;MSPEED 300 BAUD VALUE
  247.       MVI    B,84H        ;300 BAUD BYTE
  248.       JMP    LOADBD        ;GO LOAD THEM
  249. ;
  250. OK1200:      MVI    A,5
  251.       MVI    B,88H        ;1200 BAUD BYTE
  252. ;
  253. ;
  254. LOADBD:      STA    INITMOD+1    ;CHANGE TIME-TO-SEND TO MATCH BAUDRATE
  255.       MOV    A,B        ;GET BAUDRATE BYTE
  256.       STA    INITMOD1+1    ;STORE IN INITMOD
  257.       JMP    INITMOD        ;REINITIALIZE TO NEW BAUDRATE, THEN DONE
  258. ;
  259. ;
  260. BAUDBUF:  DB    10,0
  261.       DS    10
  262. ;
  263. NEWBAUD:  CPI    1
  264.       JZ    OK300
  265.       CPI    5
  266.       JZ    OK1200
  267.       RET
  268. ;.....
  269. ;
  270. ;
  271. ;           (END OF INITMOD AND SETUP ROUTINES)
  272. ;=======================================================================
  273. ;        
  274. ;
  275. ; These routines can be used for your equipment, be sure to end with RET
  276. ;
  277. SPCLMENU: RET
  278. ;        
  279. ;
  280. ;=======================================================================
  281. ;
  282. ;
  283. ; NOTE:  MUST TERMINATE PRIOR TO 0B00H (with Smartmodem)
  284. ;                 0D00H (without Smartmodem).
  285. ;
  286. ;
  287. ; This is the patch file for MEX 1.0 -- you may edit this file to change
  288. ; various initial variables.
  289. ;
  290. ; The order of the patch variables supported here will not change from
  291. ; version to version (i.e., new items will be added on to the end).
  292. ;
  293. ;
  294.     ORG    0D00H        ;location of patch variables
  295. ;
  296. ;
  297. ; The following line defines the MEX service call entry point, and
  298. ; is not meant to be changed by the user
  299. ;
  300. MEX:    DS    3        ;MEX service call processor
  301.     DS    3        ;reserved
  302.     DS    1        ;reserved
  303. ;
  304. ; The following line contains the initial free-memory pointer for
  305. ; MEX.  Sophisticated modem overlays requiring additional space may change
  306. ; this pointer (ie, move it higher), and thus "protect" an area of RAM.
  307. ;
  308. MEMRY:    DS    2        ;first free memory pointer
  309. ;
  310. ; Following are the lowest-level vectors for console and list I/O used
  311. ; by MEX.  These normally point to routines that save the registers and
  312. ; vector to the appropriate BIOS routines.  Complex applications may
  313. ; need to intercept (or even replace) these routines.  If you do this,
  314. ; be sure to preserve DE, HL and BC.
  315. ;
  316. STSVEC:    DS    2        ;console status vector
  317. INVEC:    DS    2        ;console input vector
  318. OUTVEC:    DS    2        ;console output vector
  319. LVEC:    DS    2        ;list output vector
  320. LSTVEC:    DS    2        ;list status vector
  321. ;è; The following line defines the location of the default MEX prompt.
  322. ; If you'd like to provide your own initial prompt, add a DW statement
  323. ; pointing to a prompt buffer structured as follows:
  324. ;
  325. ;        DB <max size of buffer>
  326. ;        DB <length of actual prompt>
  327. ;        DB <prompt string>
  328. ;
  329. ; <maxsize> and <length> may be equal (especially if you disable the
  330. ; ID command by setting CHGPMT, below to 0); the ID command will, if
  331. ; left enabled, be limited to the <max size> value.
  332. ;
  333. PROMPT:    DS    2        ;prompt location
  334.     DS    1        ;reserved
  335. TYPLIN:    DB    22        ;for TYPE command: # lines/screen
  336. PAUSFL:    DB    1        ;for TYPE cmd: 1=pause 0=no pause
  337. SEPCHR:    DB    ';'        ;multiple command-line separator
  338. ;
  339. ; following five for SENDOUT command
  340. ;
  341. SOWAIT:    DB    4        ;# seconds waiting for a sendout echo
  342. SOREPL:    DB    8        ;# seconds waiting for initial reply
  343. SOTRIG:    DB    '>'        ;sendout trigger char from remote
  344. CANCHR:    DB    'U'-64        ;sendout char to cancel line to remote
  345. SORTRY:    DB    6        ;sendout # retries
  346. ;
  347. ;
  348. HEXFLG:    DB    0        ;hex/decimal mode
  349. ESCCHR:    DB    0AH        ;terminal mode escape char (0AH = linefeed)
  350. NOBELL:    DB    0        ;set to 1 to disable bell
  351. ;
  352. ; Buffer variables.  See BUFFERS.DOC for setup information
  353. ;
  354. PSIZE:    DB    2        ;default=2k
  355. ASIZE:    DB    255        ;"big" capture buffer
  356. XSIZE:    DB    16        ;16K transfer buffer
  357. NSIZE:    DB    1        ;1k for 85 batch files
  358. PRELEN:    DB    40        ;maximum length of PREFIX string
  359. SUFLEN:    DB    40        ;maximum length of SUFFIX string
  360. ;
  361. ; Misc. stuff
  362. ;
  363. CDOSFL:    DB    0        ;non-zero for CDOS
  364. WTECHO:    DB    0        ;non-zero sets "wait-for-echo"
  365. KYSIZE:    DW    400        ;size of keystring area, in bytes
  366. CISFLG:    DB    1        ;non-zero allows CIS file transfers
  367. CISOK:    DB    1        ;non zero allows STAT CIS ON or OFF
  368. CHGPMT:    DB    1        ;non-zero allows ID (prompt chg) command
  369. ERRID:    DB    1        ;non-zero prints ID msg in err msgs
  370. ;
  371. ; by setting the following DB to 0, you can disable the HELP
  372. ; command, freeing up space used by the help file index.
  373. ;
  374. HELPOK:    DB    1        ;non-zero allows HELP command
  375. MEXDU:    DB    0        ;user \/  alternate area for READ,LOAD,INI.MEXè    DB    0        ;drive/\  & HELP.MEX (if SEARCH <>0)
  376. DEBUG:    DB    0        ;debugging in term-mode if non-zero
  377. EXCLSY:    DB    1        ;non-0 excludes $SYS from batchsend, dir
  378. INIMEX:    DB    1        ;non-zero runs INI.MEX (if present) at startup
  379. RTIMER:    DB    1        ;receiver wait: # seconds [Plouff patch]
  380. PQSIZE:    DW    150        ;size of the modem-port queue
  381. PHSIZE:    DB    30        ;phone library size (# entries)
  382. SILENT:    DB    0FFH        ;0=silence multi-line & READ cmd echo
  383. ALERT:    DB    255        ;alert-bell count on CALL complete
  384. EXTEND:    DB    0        ;non-zero: unknown commands goto READ processor
  385. SPLIT:    DB    0        ;non-zero: splits phonelib printout, shows baud
  386. SEARCH:    DB    0        ;search mode 0,1,2,3
  387. ;
  388. ; Following is the GLOBAL secondary options table.  To
  389. ; set an option to global, change its ASCII character to a 0.
  390. ;
  391. RESTT:    DB    'BDLQRSTVX'
  392. ;
  393. ;
  394.     END
  395.