home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / nubye / nuby-ins.lbr / NUCP-1.IQS / nucp-1.ins
Text File  |  1986-04-26  |  6KB  |  236 lines

  1. ; NUCP-1.INS - Interfacer 3/4 insert for NUBYE - 04/21/86
  2. ;
  3. ; 2651 I/O with internal baudrate generator
  4. ;
  5. ; For: CompuPro Interfacer 3
  6. ;      CompuPro Interfacer 4
  7. ;      CompuPro System Support 1
  8. ;
  9. ; Note:  This is an insert, not an overlay.
  10. ;
  11. ; The Interfacer board uses the 2651 I/O.  This has a peculiarity that
  12. ; prevents its proper use if you hook pin 8 (DCD) of the modem to pin 8
  13. ; (DCD) of the Interfacer board.  You should instead hook pin 8 of the
  14. ; modem (DCD) to (DSR) on the Interfacer board.  To further complicate
  15. ; the picture, CompuPro uses an unique wiring they refer to as "master"
  16. ; or "slave setting".  Normally the board is delivered with the serial
  17. ; ports hooked as "slave", which makes (DSR) pin 20 instead of the con-
  18. ; ventional pin 6 as on most RS-232 DB-25 connectors.    It then makes
  19. ; (DTR) pin 6 instead of conventional pin 20.  (See page 14 of the In-
  20. ; terfacer 3 manual or page 20 of the Interfacer 4 manual for additional
  21. ; information on this subject.    The schematic below is shown for both
  22. ; configurations.
  23. ;
  24. ; (For interest, the newer version of the 2561 is called the 2661.  It
  25. ; came out in 1981, but has this same bug the 2651 has.  That chip is
  26. ; used in the Heath/Zenith-100 series computers.  The 2651 has another
  27. ; serious bug, if selecting other than 1 stop pulse, it must receive an
  28. ; incoming signal with the same (or more) stop pulses.    Fortunately few
  29. ; people need 1-1/2 or 2 stop pulses so this bug is rarely a problem.)
  30. ;
  31. ; NOTE FOR HAYES SMARTMODEM USERS:
  32. ; -------------------------------
  33. ;    In the past people using the Hayes Smartmodem 1200 and the
  34. ;    Interfacer board have complained they had to put SW6 up to
  35. ;    use with NUBYE but then had to put it down to use with MEX,
  36. ;    MDM7 or other autodial modem programs.    With the configur-
  37. ;    ation below, SW6 can be left in whatever position the user
  38. ;    prefers (up, for NUBYE) and this will have no effect on the
  39. ;    normal use of IMP, MEX or MDM7.
  40. ;
  41. ; If using "slave" mode:
  42. ; ---------------------
  43. ;    MODEM=DCE    INTERFACER    (Slave mode)
  44. ;
  45. ;    TXD    2  -->    3    RXD    received data
  46. ;    RXD    3  <--    2    TXD    tranmitted data
  47. ;    SG    7  ---    7    SG    signal ground
  48. ;    DCD    8  -->    20 *    DSR    data set ready (carrier)
  49. ;    DTR    20 <--    6  *    DTR    data terminal ready
  50. ;
  51. ;
  52. ; If using "master" mode
  53. ; ----------------------
  54. ;    MODEM=DCE    INTERFACER    (as Master)
  55. ;
  56. ;    TXD    2  -->    2    RXD    received data
  57. ;    RXD    3  <--    3    TXD    tranmitted data
  58. ;    SG    7  ---    7    SG    signal ground
  59. ;    DCD    8  -->    6    DSR    data set ready (carrier)
  60. ;    DTR    20 <--    20    DTR    data terminal ready
  61. ;
  62. ;                    - Notes by Irv Hoff
  63. ;
  64. ; ========
  65. ;
  66. ; 04/21/86  Modified for NUBYE
  67. ; 07/17/85  Written for use with BYE5            - Irv Hoff
  68. ; 10/04/82  Original version                - Paul Traina
  69. ;
  70. ; ========
  71. ;
  72. INTER4    EQU    YES        ; Yes for Compupro Interfacer 3 or 4
  73.                 ; No  for Compupro System Support 1
  74. ;
  75. ; The following define the port address and usart number to use.
  76. ;
  77.      IF    INTER4
  78. BASEP    EQU    10H        ; Base port for Interfacer 3/4 boards
  79. CHIP    EQU    6        ; Chip number to use
  80.      ENDIF            ; INTER4
  81. ;
  82.      IF    NOT INTER4
  83. BASEP    EQU    5CH        ; Base port for System Support 1
  84.      ENDIF            ; NOT INTER4
  85. ;
  86. ; Modem port equates
  87. ;
  88. PORT    EQU    BASEP        ; Modem data port
  89. MDCTL1    EQU    BASEP+1        ; Modem status port
  90. MDCTL2    EQU    BASEP+2        ; Modem mode select port
  91. MDCTL3    EQU    BASEP+3        ; Modem control port
  92. ;
  93.      IF    INTER4
  94. USER    EQU    BASEP+7        ; Modem chip select port
  95.      ENDIF            ; INTER4
  96. ;
  97. ; Mode port equates
  98. ;
  99. BBASE    EQU    30H        ; Mode register 2 base
  100. ;
  101. BD300    EQU    BBASE+5        ; 300 baud
  102. BD1200    EQU    BBASE+7        ; 1200 bps
  103. BD2400    EQU    BBASE+10    ; 2400 bps
  104. ;
  105. ;
  106. ; See if we still have a carrier - if not, return with the zero flag set
  107. ;
  108. MDCARCK: IF    INTER4
  109.     MVI    A,CHIP        ; Select proper chip
  110.     OUT    USER
  111.      ENDIF
  112. ;
  113.     IN    MDCTL1        ; Read port
  114.     ANI    80H        ; Check DSR pin for DCD (see above)
  115.     RET
  116. ;
  117. ; Disconnect and wait for an incoming call
  118. ;
  119. MDINIT:     IF    INTER4
  120.     MVI    A,CHIP        ; Select proper chip
  121.     OUT    USER
  122.      ENDIF            ; INTER4
  123. ;
  124.     MVI    A,15H        ; DTR, RTS off to disconnect phone
  125.     OUT    MDCTL3
  126.     PUSH    B
  127.     MVI    B,20        ; Wait 2 seconds
  128. ;
  129. MDINIT1:CALL    DELAY
  130.     DCR    B
  131.     JNZ    MDINIT1
  132.     POP    B
  133.     MVI    A,27H        ; Turn DTR, RTS back on
  134.     OUT    MDCTL3
  135. ;
  136.      IF    IMODEM
  137.     CALL    IMINIT        ; Initialize intelligent modem
  138.      ENDIF            ; IMODEM
  139. ;
  140.     RET
  141. ;
  142. ; Input a character from the modem port
  143. ;
  144. MDINP:     IF    INTER4
  145.     MVI    A,CHIP        ; Select proper chip
  146.     OUT    USER
  147.      ENDIF            ; INTER4
  148. ;
  149.     IN    PORT        ; Get character
  150.     RET
  151. ;
  152. ; Check the status to see if a character is available.    If not, return
  153. ; with the zero flag set.  If yes, use 0FFH to clear the flag.
  154. ;
  155. MDINST:     IF    INTER4
  156.     MVI    A,CHIP        ; Select proper chip
  157.     OUT    USER
  158.      ENDIF
  159. ;
  160.     IN    MDCTL1        ; Read port
  161.     ANI    2        ; Check receive ready bit
  162.     RZ            ; Nope, nothing there
  163.     ORI    0FFH        ; We got something...
  164.     RET
  165. ;
  166. ; Send a character to the modem
  167. ;
  168. MDOUTP:     IF    INTER4
  169.     PUSH    PSW
  170.     MVI    A,CHIP        ; Select proper chip
  171.     OUT    USER
  172.     POP    PSW
  173.      ENDIF
  174. ;
  175.     OUT    PORT        ; Send it
  176.     RET
  177. ;
  178. ; See if the output is ready for another character
  179. ;
  180. MDOUTST: IF    INTER4
  181.     MVI    A,CHIP        ; Select proper chip
  182.     OUT    USER
  183.      ENDIF
  184. ;
  185.     IN    MDCTL1        ; Read port
  186.     ANI    1        ; Check transmit ready bit
  187.     RZ
  188.     ORI    0FFH
  189.     RET
  190. ;
  191. ; Reinitialize the modem and hang up the phone by dropping DTR and
  192. ; leaving it inactive.
  193. ;
  194. MDQUIT:     IF    INTER4
  195.     MVI    A,CHIP        ; Select proper chip
  196.     OUT    USER
  197.      ENDIF
  198. ;
  199.      IF    IMODEM
  200.     CALL    IMQUIT        ; Tell modem to shut down
  201.      ENDIF
  202. ;
  203. ; Called by the main program after caller types BYE
  204. ;
  205. MDSTOP:    MVI    A,CHIP        ; Select proper chip
  206.     OUT    USER
  207.     MVI    A,15H        ; Turn off DTR, modem will quit
  208.     OUT    MDCTL3
  209.     RET
  210. ;
  211. ; The following routine sets the baudrate.  NUBYE asks for the maximum
  212. ; speed you have available.
  213. ;
  214. SET300:    MVI    B,BD300        ; Set baud rate
  215.     JMP    SETBAUD
  216. ;
  217. SET1200:MVI    B,BD1200    ; Set baud rate
  218.     JMP    SETBAUD
  219. ;
  220. SET2400:MVI    B,BD2400    ;set baud rate
  221. ;
  222. SETBAUD: IF    INTER4
  223.     MVI    A,CHIP        ; Select proper chip
  224.     OUT    USER
  225.      ENDIF            ; INTER4
  226. ;
  227.     MVI    A,4EH        ; 1 stop, no parity 8 bits
  228.     OUT    MDCTL2
  229.     MOV    A,B        ; Get the baudrate back
  230.     OUT    MDCTL2
  231.     XRA    A
  232.     RET
  233. ;
  234. ; end of insert
  235. ; -------------
  236.