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 / MODEMS / MODEM7 / M7SY-3.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  21KB  |  544 lines

  1.  
  2. ; M7SY-3.ASM   - SANYO MBC-1000 computer overlay file for MDM722+.  2/17/84
  3. ;
  4. ; You will want to look this file over carefully. There are a number of
  5. ; options that you can use to configure the program to suit your taste.
  6. ;
  7. ; This file adapts the Sanyo MBC-1000 computer to the modem program.
  8. ;
  9. ;  THIS MODIFICATION MAKES USE OF TIMER 2 ON THE 8253 TIMER IC (IC4)
  10. ;  OF THE SERIAL I/O BOARD OF THE SANYO MBC-1000.
  11. ;
  12. ;  To use this program, the serial I/O board must be modified as follows:
  13. ;
  14. ;  1. Cut etch from IC18 Pin 1 to JP2 Pin 8.
  15. ;  2. Install jumper from IC18 Pin 1 to IC4 Pin 18.
  16. ;  3. Install jumper from IC4 Pin 17 to JP2 Pin 8.
  17. ;  4. Install jumper from IC4 Pin 16 to IC4 Pin 14.
  18. ;  5. Move jumper strap to JP2 Pin 8 for programmable baud rate, other
  19. ;     pins (1-7) can still be used for standard baud rate selections.
  20. ;  6. Hardware modification is now complete.
  21. ;
  22. ;  *** THIS VERSION SETS UP THE USART FOR 8 BITS, NO PARITY, 1 STOP BIT ***
  23. ;
  24. ; Edit this file for your preferences then follow the "TO USE:" example
  25. ; shown below.
  26. ;
  27. ; Use the "SET" command to change the baudrate when desired.  It starts
  28. ; out at 1200 baud when the program is first called up.  Because of tem- 
  29. ; perature and component variations, you mave have to alter the timing
  30. ; parameters in OK300 and OK1200, plus or minus 1 or 2 numbers, if CRC
  31. ; errors occur to frequently during transmission and reception.
  32. ;
  33. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  34. ;
  35. ; 02/17/84 - Renamed  M7SY-3.ASM with improvements on 3 bugs. (1) Use
  36. ;            MDM722 or later to eliminate the problems with Contol X when
  37. ;            dialing.  (2) Altered the parameter for 300 baud set for 0240h
  38. ;            to 0241h to eliminate overwhelming CRC errors during Send.
  39. ;            (3) Irv Hoff et al take note.  For some reason, the Sanyo's
  40. ;            lock up after a connect.  When the message "hit any key to
  41. ;            stop the bell" occurs, there is a subsequent CALL STAT and
  42. ;            CALL KEYIN that gets the Sanyo's in a tight loop.  Change
  43. ;            the CALL STAT to a JMP RETURN (goes directly to the Terminal
  44. ;            mode without waiting for a keystroke) to avoid the problem
  45. ;            while waiting for someone more astute than me to fix the bug.
  46. ;            I even tried patching in my specific BIOS addresses in a num-   
  47. ;            ber of places, figuring the problem was in INITADR--but to no
  48. ;            avail.
  49. ;
  50. ;               Bob Sandel  Canton, MI (leave msg with TCBBS 1-313-846-6127
  51. ;                         or Keith Peterson's Royal Oak CP/M 1-313-759-6569 )
  52. ;
  53. ;
  54. ; 02/01/84 - Blended MDM711SN w the top of MDM719.ASM
  55. ;          - Made Default Baud Rate 1200; Added back LOADBD to update MSPEED
  56. ;       - ^P back on at LSTTST;changed LOGON back to ^L;set TOUCHPULSE
  57. ;       - back to P=Pulse;added cosmetic remarks;BUFSIZ=XFRSIZ=16K
  58. ;          -     Bob Sandel    Canton, MI                             
  59. ;
  60. ; 08/01/83 - Altered MDM711NE for the Sanyo MBC-1000
  61. ;         computer using an external modem    - Dave Hardy
  62. ;
  63. ; 07/01/83 - Revised for use with MDM711    - Irv Hoff
  64. ; 06/22/83 - Revised for use with MDM710    - Irv Hoff
  65. ;
  66. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  67. ;
  68. VERSION:  EQU    719    ;MDM719 (01/22/84)  --    CP/M MODEM PROGRAM
  69. ;
  70. ;       COPYRIGHTED 1984 BY IRV HOFF (TO DETER COMMERCIAL USE)
  71. ;
  72. ; THIS TELEPHONE MODEM PROGRAM USES THE CHRISTENSEN PROTOCOL.  IT HAS
  73. ; BOTH CHECKSUM AND 'CRC' CAPABILITY FOR ERROR-DETECTION. IT SUPPORTS
  74. ; DIALING AND AUTO-REDIALING FOR THE S-100 PMMI, HAYES SMARTMODEM 300
  75. ; AND 1200 AND U.S. ROBOTICS MODEMS.  IT SUPPORTS UP TO TWO ALTERNATE
  76. ; DIALING SYSTEMS SUCH AS 'MCI', 'SPRINT', ETC.  IT IS COPYRIGHTED TO
  77. ; DETER COMMERCIALISM.  IT MAY BE USED FOR NON-PROFIT PURPOSES OR CAN
  78. ; BE ALTERED OR UPDATED IF AGAIN RELEASED TO THE PUBLIC DOMAIN.
  79. ;
  80. ; OTHER EXTERNAL MODEMS MAY BE READILY USED, ALTHOUGH  MANUAL DIALING
  81. ; MAY BE NECESARY.  OVERLAYS HAVE BEEN MADE ALLOWING RAPID ADAPTATION
  82. ; TO VARIOUS COMPUTERS.  THE PROGRAM CONFORMS READILY TO NUMEROUS I/O
  83. ; DEVICES INCLUDING THE 2661, 8250, 8251, Z80-SIO, ETC.
  84. ;
  85. ; NOTE:  Current version (722+)is 71 sectors long.  Use this figure with
  86. ;     DDT, etc. to merge the appropriate overlay, regardless of what
  87. ;     the overlay may call for (such as 66 sectors for overlays made
  88. ;     during MDM712 era or 69 sectors during the MDM 719 era. )  
  89. ;
  90. ;NOTE:   M7NM-6.ASM (or later if applicable) must be used with
  91. ;     this version.  That has the 'SAVSIZ' byte just prior
  92. ;     to the 'NUMBLIB:' phone number library.
  93. ;
  94. ;***********************************************************************
  95. ; If you improve or modify this program please attempt to upload to TCBBS
  96. ; Dearborn, MI (313) 846-6127.  If there is insufficient disk space,
  97. ; leave a message on MINICBBS there.
  98. ;
  99. ;
  100. ; 02/01/84  *******   WARNING Some Bugs remain TO USE ANCHOR XII  *******
  101. ;        Still having trouble with CAL (lockup after connect); Can receive
  102. ;           at 300 & 1200 but can only send at 1200 baud.  Control X does
  103. ;           does not really terminate dial.  ATDP, manual dial, works fine!!
  104. ;           If you work it out (leave msg w TCBBS 1-313-846-6127) Bob Sandel
  105. ;
  106. ; 01/22/84  Fixed Irv's error in GETACK routine which prevented the
  107. ;  MDM719   robust improvement (added by Bob Plouffe) from working.
  108. ;        Changed ACKNAK to NO so default will require valid NAK
  109. ;        rather than non-ACK.  This is part of the robust improvements,
  110. ;        NOT because of any special ArpaNet requirement.  Changed
  111. ;        SHOWHEX to true for distribution version so users would have
  112. ;        HEX and DECIMAL reporting while transferring files (most users
  113. ;        have told me they prefer to see both).  Changed PMMI dialing
  114. ;        pulse default to 10pps which most exchanges will accept.
  115. ;        (This can be set to other pulse rates in the user overlay).
  116. ;                - Keith Petersen, W8SDZ
  117. ;
  118. ;***********************************************************************
  119. ;
  120. ;   GENERAL INTEREST:  When transferring files modem-to-modem, the batch
  121. ;   mode is extremely useful.  It allows automatic transmission of nu-
  122. ;   merous files while the operator at the receiving end does virtually
  123. ;   nothing.  It can be used for single files or with wildcards.  With
  124. ;   normal single program transfer, the receiving end switches from CRC
  125. ;   to checksum in one minute and times out completely in 100 seconds.
  126. ;   (In batch mode it times out in 3 minutes for receive.)  This offers
  127. ;   ample opportunity to transfer programs between individuals.
  128. ;
  129. ;***********************************************************************
  130. ;
  131. ; 01/21/84  NUMBLIB now automatically starts on even page.  0D00H for
  132. ;  MDM718   this version.  Made the buffer size for file transfer inde-
  133. ;        pendent from the buffer size for ASCII capture to disk.  It
  134. ;        had been 16k both since MODEM770.  The file transfer size is
  135. ;        now set to 4k for default.  Most systems can easily use 16k
  136. ;        but some very slow ones may need 8k or 4k.  Set via XFRSIZ.
  137. ;        (May be set with DDT by changing byte just prior to start of
  138. ;        NUMLIB, which is 0CFFH in this case.)  Now recognizes single
  139. ;        digit result codes for auto-dial modems.  Added code for the
  140. ;        new Anchor modems which recognize busy signals and can start
  141. ;        a redial immediately.  Thanks for ideas from Wayne Masters,
  142. ;        Ron Fowler, Fred Viles and others.        - Irv Hoff
  143. ;
  144. ; 07/27/83  Added two alternate dialing routines such as MCI and SPRINT.
  145. ;  MDM712   Fixed "disk space remaining" to read correctly with CP/M+.
  146. ;                    - Irv Hoff
  147. ;
  148. ; 07/01/83  Changed TERM to allow use of the printer port for modem use.
  149. ;  MDM711                - Irv Hoff
  150. ;
  151. ; 06/22/83  MAJOR CHANGE:  Added autodialing and automatic continuous
  152. ;  MDM710           redialing for Hayes Smartmodem 300 or 1200,
  153. ;               U.S. Robotics in addition to the PMMI modem
  154. ;               for S-100 computers.        - Irv Hoff
  155. ;
  156. ; 01/01/83  First version.  Can be assembled with ASM.COM.  (Previously
  157. ;  MDM700   it was necessary to have the MODEM7.LIB file and use MAC.COM
  158. ;        to assemble the program.)  Selected MDM700 as a new program
  159. ;
  160. ;***********************************************************************
  161. ;
  162. PORT:      EQU    0A4H    ;  Sanyo MBC-1000 Serial Port   
  163. ;
  164. MODCTL1:  EQU    PORT+1  ;modem STATUS port
  165. MODCTL2:  EQU    PORT+1  ;CHANGED FOR SANYO CONTROL PORT
  166. MODDATP:  EQU    PORT      ;modem data port
  167. CTIMER:   EQU   0A3H    ;8253 baud rate counter/timer
  168. ;
  169. MODRCVB:  EQU    02H    ;modem receive bit (DAV)
  170. MODRCVR:  EQU    02H    ;modem receive ready
  171. MODSNDB:  EQU    01H    ;modem send bit
  172. MODSNDR:  EQU    01H    ;modem send ready bit
  173. ;
  174. ;
  175. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  176. ;             SPECIAL EQUATES FOR PMMI
  177. ;
  178. BAUDRP:      EQU    PORT+2    ;modem baud rate port
  179. BRKMSK:      EQU    0FBH    ;mask to set break
  180. EVPARMSK: EQU    20H    ;mask to set even parity
  181. NOPARMSK: EQU    10H    ;mask to reset to no parity
  182. ODPARMSK: EQU    0CFH    ;mask to set odd parity
  183. ;
  184. ANSWMOD:  EQU    1EH    ;answer mode
  185. ORIGMOD:  EQU    1DH    ;originate mode
  186. WAITCTS:  EQU    150    ;number of seconds (x5) to wait for the
  187.             ;computer to answer after PMMI auto-dial
  188.             ;100=20 sec, 150=30 sec, 255=51 sec.
  189.             ;any number 0-255 acceptable
  190. ;
  191. ;          (END OF SPECIAL PMMI EQUATES)
  192. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  193. ;
  194. ;
  195. YES:    EQU    0FFH
  196. NO:    EQU    0
  197. ;
  198. ;
  199. BUFSIZ:    EQU    16    ;buffer size in Kbytes for ASCII capture to disk
  200.             ;(16k is one file extent)
  201. XFRSIZ: EQU    16      ;file transfer buffer in Kbytes.  Do not make
  202.             ;any larger than BUFSIZ.  16k works fine on all
  203.             ;but very slowest systems
  204. ;
  205. BDNMCH:    EQU    75H    ;bad name match
  206. ERRLIM:    EQU    10    ;maximum allowable consecutive errors
  207. ERRCRC:    EQU    6    ;CRC tries, then switches to CHECKSUM
  208. LIBLEN:    EQU    34    ;length of each phone library entry
  209. ;
  210. SHOWHEX:EQU    YES    ;yes, show hex record count - no, do not show
  211. ;
  212. RUB:    EQU    7FH    ;rub
  213. CRC:    EQU    'C'    ;requests 'CRC' instead of 'CKSUM'
  214. ESC:    EQU    '['-40H    ;^[ = escape
  215. SOH:    EQU    'A'-40H    ;^A = start of header
  216. EOT:    EQU    'D'-40H    ;^D = end of text
  217. EXITCHR:EQU    'E'-40H    ;^E = exit character
  218. ACK:    EQU    'F'-40H    ;^F = acknowledge
  219. OKNMCH:    EQU    'F'-40H    ;^F = ok name match
  220. BELL:    EQU    'G'-40H    ;^G = bell character
  221. BKSP:    EQU    'H'-40H    ;^H = backspace
  222. LF:    EQU    'J'-40H    ;^J = linefeed
  223. CR:    EQU    'M'-40H    ;^M = carriage return
  224. XON:    EQU    'Q'-40H    ;^Q = XON character
  225. XOFF:    EQU    'S'-40H    ;^S = XOFF character
  226. NAK:    EQU    'U'-40H    ;^U = not acknowledge
  227. CANCEL    EQU    'X'-40H    ;^X = cancel send or receive
  228. EOFCHAR:EQU    'Z'-40H    ;^Z = end of file
  229. ;
  230. ;
  231.     ORG    0100H
  232. ;
  233. ;
  234.         DS      3        ; for JUMP     START  instruction
  235. ;
  236. ;
  237. ; THESE ROUTINES AND EQUATES ARE AT THE BEGINNING OF THE PROGRAM SO
  238. ; THEY CAN BE PATCHED BY A MONITOR OR OVERLAY FILE WITHOUT RE-ASSEMBLING
  239. ; THE PROGRAM.
  240. ;
  241. PMMIMODEM:  DB    NO     ;yes=PMMI modem, no=non-PMMI modem
  242. SMARTMODEM: DB    YES     ;yes=HAYES Smartmodem or Anchor Automation Mark XII
  243. TOUCHPULSE: DB    'P'    ;T=touch, P=pulse (Smartmodem-only)
  244. ;
  245. CLOCK:       DB    40    ;clock speed x .1, up to 25.5 mhz.
  246.             ;2 MHz=20, 3.68 MH=37, 4 MHz=40, etc.
  247. MSPEED:       DB    5    ;sets display time for sending a file
  248.             ;0=110    1=300  2=450  3=600  4=710
  249.             ;5=1200 6=2400 7=4800 8=9600 9=19200
  250. BYTDLY:       DB    5    ;default time to send character in
  251.             ;terminal mode file transfer (0-9)
  252.             ;0=0 delay, 1=10 ms, 5=50 ms, 9=90 ms
  253. CRDLY:       DB    5    ;end-of-line delay after CRLF in terminal
  254.             ;mode file transfer for slow BBS systems
  255.             ;0=0 delay, 1=100 ms, 5=500 ms, 9=900 ms
  256. NOOFCOL:   DB    4    ;number of directory columns   was 5
  257. SETUPTST:  DB    YES     ;yes=non-PMMI setup routine
  258. SCRNTEST:  DB    YES    ;yes=if home cursor and clear screen
  259.             ;routine at CLRSCRN
  260. ACKNAK:       DB   YES     ;yes=resend a record after any non-ACK
  261.             ;no=resend a record after a valid NAK (robust)
  262. BAKUPBYTE: DB    NO    ;yes=make .BAK file
  263. CRCDFLT:   DB    YES    ;yes=default to CRC checking
  264.             ;no=default to Checksum checking
  265. TOGGLECRC: DB    YES    ;yes=allow toggling of Checksum to CRC
  266. CONVBKSP:  DB    NO    ;yes=convert backspace to rub
  267. TOGGLEBK:  DB    YES     ;yes=allow toggling of bksp to rub
  268. ADDLF:       DB    NO    ;no=no LF after CR to send file in
  269.             ;terminal mode (added by remote echo)
  270. TOGGLELF:  DB    YES    ;yes=allow toggling of LF after CR
  271. TRANLOGON: DB    YES     ;yes=allow transmission of logon
  272.             ;write logon sequence at location LOGON
  273. SAVCCP:       DB    YES    ;yes=do not overwrite CCP
  274. LOCNXTCHR: DB    NO    ;yes=local cmd if EXTCHR precedes
  275.             ;no=not local cmd if EXTCHR precedes
  276. TOGGLELOC: DB    YES    ;yes=allow toggling of LOCNXTCHR
  277. LSTTST:       DB    YES    ;yes=allow toggling of printer on/off
  278.             ;in terminal mode. Set to no if using
  279.             ;the printer port for the modem
  280. XOFFTST:   DB    YES    ;yes=allow testing of XOFF from remote
  281.             ;while sending a file in terminal mode
  282. XONWAIT:   DB    NO    ;yes=wait for XON after sending CR while
  283.             ;transmitting a file in terminal mode    
  284. TOGXOFF:   DB    YES    ;yes=allow toggling of XOFF testing
  285. IGNORCTL:  DB    YES     ;yes=do not send control characters
  286.             ;above CTL-M to CRT in terminal mode
  287.             ;no=send any incoming CTL-char to CRT
  288. EXTRA1:       DB    0    ;for future expansion
  289. EXTRA2:       DB    0    ;for future expansion
  290. BRKCHR:       DB    '@'-40H    ;^@ = Send a 300 ms. break tone
  291. NOCONNCT:  DB    'N'-40H    ;^N = Disconnect from phone line
  292. LOGCHR:       DB    'L'-40H    ;^L = Send logon
  293. LSTCHR:       DB    'P'-40H    ;^P = Toggle printer
  294. UNSAVECHR: DB    'R'-40H    ;^R = Close input text buffer
  295. TRANCHR:   DB    'T'-40H ;^T = Transmit file to remote
  296. SAVECHR:   DB    'Y'-40H    ;^Y = Open input text buffer
  297. EXTCHR:       DB    '^'-40H    ;^^ = Send next character
  298. ;
  299. ;
  300. ; Equates used only by PMMI routines grouped together here.
  301. ;
  302. PULSERATE: DB    250    ;125=20pps dialing, 250=10pps
  303. CHGBAUD:   DB    'B'-40H    ;^B = Used with PMMIMODEM in terminal
  304.             ;mode to change baud rate on fly
  305. ;
  306. ;
  307. ; Handles in/out ports for data and status
  308. ;
  309. IN$MODCTL1:    IN    MODCTL1 ! RET    ;in modem control port
  310.         DS    7                ;spares if needed for non-PMMI
  311. OUT$MODDATP:    OUT    MODDATP    ! RET    ;out modem data port
  312.         DS      7           ;spares if needed for non=PMMI
  313. IN$MODDATP:    IN    MODDATP ! RET    ;in modem data port
  314.                 DS      7            ;spares if needed for non-PMMI
  315. ;
  316. ANI$MODRCVB:    ANI    MODRCVB ! RET    ;bit to test for receive ready
  317. CPI$MODRCVR:    CPI    MODRCVR ! RET    ;value of receive bit when ready
  318. ANI$MODSNDB:    ANI    MODSNDB ! RET    ;bit to test for send ready
  319. CPI$MODSNDR:    CPI    MODSNDR ! RET    ;value of send bit when ready
  320. ;
  321. ;
  322. ;====================== SPECIAL PMMI PORTS =============================
  323. ;
  324. IN$BAUDRP:    IN    BAUDRP     ! RET    ;in baudrate port
  325. OUT$BAUDRP:    OUT    BAUDRP     ! RET    ;out baudrate port
  326. OUT$MODCTL1:    OUT    MODCTL1     ! RET    ;out modem control port #1
  327. OUT$MODCTL2:    OUT    MODCTL2  ! RET    ;out modem control port #2
  328. ;
  329. ;================== END OF SPECIAL PMMI PORTS ==========================
  330. ;
  331. ;
  332. LOGONPTR:    DW    LOGON
  333. JMP$DIAL:    DS      3
  334. JMP$DISCONNT:    DS      3   
  335. JMP$GOODBYE:    JMP    GOODBYE
  336. JMP$INITMOD:    JMP    INITMOD
  337.                 RET ! NOP ! NOP  
  338.                 RET ! NOP ! NOP
  339.                 RET ! NOP ! NOP
  340. JMP$SETUPR:    JMP    SETUPR
  341. JMP$SPCLMENU:    JMP    SPCLMENU
  342. JMP$SYSVER:    JMP    SYSVER
  343. JMP$BREAK    JMP    SENDBRK
  344. ;
  345. ;
  346. ; NEXT SIX LINES SHOULD NOT BE CHANGED BY USER OVERLAY AS THESE GO TO
  347. ; SPECIFIC LOCATIONS IN THE MAIN PROGRAM, NOT IN THE OVERLAY.
  348. ;
  349. JMP$ILPRT:      DS      3    
  350. JMP$INBUF:    DS      3    
  351. JMP$INLNCOMP:    DS      3        
  352. JMP$INMODEM:    DS      3      
  353. JMP$NXTSCRN:    DS      3       
  354. JMP$TIMER:    DS      3     
  355. ;
  356. ;
  357. ; Clear sequences are for Televideo, Lear Siegler, etc.  Change to match
  358. ; your terminal.  (Heath uses ESC 4AH for clear to end of screen, ESC 45H
  359. ; to clear screen.  Lear Siegler and others use ESC 79H for clear to end
  360. ; of screen and ESC 3AH to clear screen.)  Room allowed for four bytes.
  361. ; (Last zero needed for stopping the string display.  Any extra 0's just
  362. ; act as NOP's.)
  363. ;
  364. CLREOS:    CALL    JMP$ILPRT       ;was ILPRT
  365.     DB    0,0,0,0,0    ;dave hardy had 059h,0,0,0,0
  366.     RET
  367. ;.....
  368. ;
  369. ;
  370. CLRSCRN:CALL    JMP$ILPRT      ; was ILPRT
  371.     DB    1AH,0,0,0,0    ; was 1eh,59h,59h,00 in dave hardy version
  372.     RET
  373. ;.....
  374. ;
  375. ;
  376. ;======================= SIGN-ON MESSAGE ==============================    
  377. ;
  378. ; Send version number and date
  379. ;
  380. SYSVER: CALL    JMP$ILPRT      ; was LDA
  381.     DB    '       Sanyo MBC-1000 & Anchor Mark XII modem  1200 Baud'
  382.     DB    CR,LF,cr,lf,cr,lf
  383.     db    'MDM722.COM--------M7SY-2.HEX-------M7NM-6RS.HEX'
  384.     db    cr,lf,cr,lf  ;I use above to track patches: customize at will
  385.     db    0        ;end of message flag
  386.     RET
  387. ;.....
  388. ;
  389. SYSVER1:JMP      SYSVER
  390. ;.....
  391. ;
  392. ;
  393. ;==================== LOGON MESSAGE (IF ANY) ===========================
  394. ;
  395. ; Insert your logon message here.  End with a 0 (for"CALL ILPRT").
  396. ; PMMIusers have 59 bytes available, non-PMMI users have approximately
  397. ; 2K bytes available as they can overwrite all the following PMMI rou-
  398. ; tines if they wish.  This method allows the external overlays to have
  399. ; plenty of room.  It keeps the phone number library at a fixed location.
  400. ;
  401. LOGON:    DB      'Your Name?',CR,LF
  402.     DB    0        ;to terminate the logon message
  403. ;.....
  404. ;
  405. ;=========== ANCHOR MARK XII INITIALIZATION ADDED =====================
  406. ;
  407. ; Insert your initialization routine here if needed.  Can replace the
  408. ; following special PMMI area to set speed and auto-dial.  Over 950
  409. ; bytes are available for this purpose.  (End your routine with a RET.)
  410. ;
  411. ;
  412. ;=======================================================================
  413. ;
  414. ; This routine allows a 300 ms. break tone to be send to reset some
  415. ; time-share computers.
  416. ;
  417. SENDBRK:  MVI    A,1FH        ;SEND A BREAK TONE
  418.       JMP    GOODBYE1
  419. ;.....
  420. ;
  421. ;
  422. ; This routine sends a 300 ms. break tone and sets DTR low for the same
  423. ; length of time to disconnect some modesm such as the Bell 212A, etc.    
  424. ;
  425. GOODBYE:  MVI    A,08H        ;SEND BREAK, TURN OFF DTR
  426. ;
  427. GOODBYE1: OUT    MODCTL1        ;SEND TO STATUS PORT
  428.       MVI    B,3        ;WAIT 300 MS.
  429.       CALL     JMP$TIMER
  430.       MVI    A,37H        ;NORMAL SEND/RECEIVE WITH DTR
  431.       OUT    MODCTL1        ;SEND TO STATUS PORT
  432.       RET
  433. ;.....
  434. ;
  435. ;
  436. ; Sanyo MBC-1000 initialization -- sets the 8251A for 8 bits, 1 stop bit,
  437. ; no parity, 1200 Baud (was 300 baud)
  438. ;
  439. INITMOD:  MVI    A,5        ;TRANSFER TIME FOR 1200 Baud (was 1=300 BAUD)
  440.       STA    MSPEED    
  441.           MVI    A,96H        ;Set up counter/timer to be baud rate clock
  442.       OUT    CTIMER
  443.           LDA    V1
  444.       OUT    CTIMER-1
  445.       MVI    A,087H        ;INSURE OUT OF MODE state
  446.       OUT    MODCTL1        ;MODEM STATUS PORT
  447.       out   modctl1         ;slight extra delay
  448.       MVI    A,40H        ;INITIALIZE USART
  449.       OUT    MODCTL1        ;MODEM STATUS PORT
  450.       LDA    V2
  451.       ADI    4CH        ;8 DATA BITS, 1 STOP, NO PARITY
  452.       OUT    MODCTL1        ;MODEM STATUS PORT
  453.       MVI    A,17H        ;DTR, RCV, XMT, ERROR RST:hardy had 27h w RTS
  454.       OUT    MODCTL1        ;MODEM STATUS PORT
  455.       IN    PORT        ;CLEAR DATA PORT
  456.       RET
  457. ;
  458. V1    DB    010H            ;COUNTER VALUE(dflt = 1200; was 040h=300 baud)
  459. V2    DB    2        ;CLOCK DIVISOR  2 works from 150 to 1200 baud
  460. ;.....
  461. ;========== NON-PMMI SETUP (SPEED CHANGE, ETC.) IF ANY ==============
  462. ;
  463. ; Insert your speed change and/or auto-dialing routines here.
  464. ; Over 950 bytes are available (INCLUDING INITMOD, above).
  465. ; End your routine with a RET.
  466. ;
  467. ;
  468. SETUPR:      LXI    D,BAUDBUF    ;POINT TO NEW INPUT BUFFER
  469.       CALL    JMP$ILPRT
  470.       DB    'Input Baud Rate (300, 1200): ',0         ;, 1800, 2400): ',0
  471.       CALL    JMP$INBUF
  472.       LXI    D,BAUDBUF+2
  473.       CALL    JMP$INLNCOMP    ;COMPARE BAUDBUF+2 WITH CHARACTERS BELOW
  474.       DB    '300',0
  475.       JNC    OK300        ;GO IF GOT MATCH
  476.       CALL    JMP$INLNCOMP
  477.       DB    '1200',0
  478.       JNC    OK1200
  479. ;      CALL    JMP$INLNCOMP    ;killed these lines so only 300/1200 plays
  480. ;      DB    '1800',0
  481. ;      JNC    OK1800
  482. ;      CALL    JMP$INLNCOMP
  483. ;      DB    '2400',0
  484. ;      JNC    OK2400
  485.       CALL    JMP$ILPRT    ;ALL MATCHES FAILED, TELL OPERATOR
  486.       DB    '++ Incorrect entry ++',CR,LF,BELL,0
  487.       JMP    SETUPR        ;TRY AGAIN
  488. ;
  489. OK300:    LXI    H,0241H        ;V1=41h   V2=02h   ******* WARNING ******
  490.                                 ;
  491.                                 ;V1 was 40h  minor adjustment of the value
  492.                                 ;of V1 may be required because of individual
  493.                                 ;crystal, component or temperature variations.
  494.     SHLD    V1        ;SAVE PARAMETERS FOR 300 BAUD
  495.         MVI    A,1        ;MSPEED 300 BAUD VALUE
  496.         JMP    LOADBD          ;jump to load: Dave you forgot this !!
  497. ;
  498. OK1200:    LXI    H,0210H        ;V1=10h   V2=02h  See Warning in OK300
  499.     SHLD    V1
  500.     MVI    A,5
  501.     JMP     LOADBD
  502. ;
  503. ;        killed the followings lines to restrict baud set to 300 & 1200
  504. ;
  505. ;OK1800:    LXI    H,01A0H    ;V1=A0h   V2=01h
  506. ;    SHLD    V1
  507. ;    MVI    A,6
  508. ;    JMP    loadbd 
  509. ;
  510. ;OK2400:    LXI    H,0180H    ;V1=80h   V2=01h
  511. ;    SHLD    V1
  512. ;    MVI    A,6
  513. ;    JMP    loadbd 
  514. ;
  515. LOADBD: STA     INITMOD+1    ;change time-to-send to match baudrate
  516.         JMP     INITMOD         ;reset MSPEED TO NEW BAUDRATE
  517. ;
  518. ;
  519. BAUDBUF:  DB    10,0
  520.       DS    10
  521. ;.....
  522. ;
  523. ;
  524. ;           (END OF INITMOD AND SETUP ROUTINES)
  525. ;=======================================================================
  526. ;        
  527. ;
  528. ; These routines can be used for your equipment.  End with RET.  If
  529. ; using the Hayes Smartmodem this is unavailable without a special ad-
  530. ; dress change.
  531. ;
  532. SPCLMENU: RET
  533. ;        
  534. ;=======================================================================
  535. ;
  536. ;
  537. ; NOTE:  MUST TERMINATE PRIOR TO 0400H (with Smartmodem)
  538. ;                 0C00H (without Smartmodem)
  539. ;
  540. ;
  541.      END        ; ************************************************
  542.