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 / BYE5 / B5CC-1.INS < prev    next >
Text File  |  2000-06-30  |  6KB  |  216 lines

  1.  
  2. ; B5CC-1.INS - BYE5 insert for CCS-2719 and SDS Z80-SIO - 07/17/85
  3. ;
  4. ;          Z80-SIO and 8430 CTC timer
  5. ;
  6. ; This version is for both the CCS-2719 and Sierra Data Science S-100
  7. ; serial I/O boards.  Note:  This is an insert, not an overlay.
  8. ;
  9. ;
  10. ;    IN ORDER TO USE THE CCS-2719 WITH THE SMART MODEM,  WE MUST
  11. ;    CHANGE THE HARDWARE SOMEWHAT.  THE HEADER BLOCK ON THE 2719
  12. ;    MUST BE TURNED OVER SO THE PORT CONFIGURATION IS FOR DTE
  13. ;    (DATA TERMINAL EQUIPMENT).  FURTHER, THE STANDARD CCS-2719
  14. ;    PRESENTS DSR FROM THE RS-232-C TO DCD OF THE SIO.    BYE5 RE-
  15. ;    QUIRES THE ACTUAL DCD FROM PIN 8 OF THE RS-232-C, THEREFORE
  16. ;    WE MUST REMOVE THE JUMPER IN THE HEADER BLOCK FROM PINS 1
  17. ;    AND 15 AND ADD A WIRE FROM PIN 15 OF THE FLAT CABLE HEADER
  18. ;    (PIN 8 OFTHE RS-232-C) TO PIN 1 OF THE HEADER BLOCK.  THIS
  19. ;    WILL PUT THE MODEM'S DCD SIGNAL TO THE  the SIO'S DCD INPUT.
  20. ;    REFER TO THE CCS-2719 SCHEMATIC IN YOUR USER'S MANUAL.
  21. ;
  22. ;                    - Note by Joe Wright
  23. ;
  24. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  25. ;
  26. ; 07/17/85  Written for use with BYE5            - Irv Hoff
  27. ;
  28. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  29. ;
  30. ;
  31. ; Select one of the following with YES or NO
  32. ;
  33. CCS    EQU    YES        ; CCS2719 at 3.6864 MHz for Counter mode
  34. SIERRA    EQU    NO        ; Sierra Data Science at 4.000 MHz
  35. ;
  36. ;
  37. ; Set base port for SIO & CTC chips
  38. ;
  39.      IF    CCS
  40. PORT    EQU    54H        ; Data port
  41. MDCTL1    EQU    PORT+1        ; Modem satus port
  42. BRPORT    EQU    50H        ; Baud rate generator port (CTC)
  43.      ENDIF            ; CCS
  44. ;
  45.      IF    SIERRA
  46. PORT    EQU    82H        ; Data port
  47. MDCTL1    EQU    PORT+1        ; Modem status port
  48. BRPORT    EQU    89H        ; Baud rate generator port (CTC)
  49.      ENDIF            ; SIERRA
  50. ;
  51. MDRCV    EQU    1        ; Modem receive ready bit
  52. MDSND    EQU    4        ; Modem send ready bit
  53. MDDCD    EQU    8        ; Data carrier detect
  54. ;
  55. ;
  56. ; First byte of CTC Command:
  57. ;
  58. ; To access CTC baud rate command - Note, the CCS 2719 uses the 3.6864
  59. ; MHz xtal for the counter mode and the 4.000 MHz xtal for the timer
  60. ; mode.  The SDS board uses the 4.000 MHz master clock for both.
  61. ;
  62. BDCMD1    EQU    07H        ; Uses a "divide by 16" prescaler
  63. BDCMD2    EQU    47H        ; Uses a "divide by 2" flip-flop
  64. ;
  65. ;
  66. ; The following assume CCS2719 oscillator at 1.8432 MHz.
  67. ;
  68.      IF    CCS
  69. BD300    EQU    52        ; 300 baud  (4.000 xtal, rest 1.8432)
  70. BD1200    EQU    96        ; 1200 bps
  71. BD2400    EQU    48        ; 2400 bps
  72. BD9600    EQU    12        ; 9600 bps
  73.      ENDIF            ; CCS
  74. ;
  75. ;
  76. ; The following assume    SIERRA DATA SCIENCE oscillator at 4.000 MHz.
  77. ;
  78.      IF    SIERRA
  79. BD300    EQU    52        ; 300 baud
  80. BD1200    EQU    104        ; 1200 bps
  81. BD2400    EQU    52        ; 2400 bps
  82. BD9600    EQU    13        ; 9600 bps
  83.      ENDIF            ; SIERRA
  84. ;.....
  85. ;
  86. ;
  87. ;-----------------------------------------------------------------------
  88. ;
  89. ; See if we still have a carrier - if not, return with the zero flag set
  90. ;
  91. MDCARCK:MVI    A,10H        ; Reset status
  92.     OUT    MDCTL1
  93.     IN    MDCTL1        ; Get status
  94.     ANI    MDDCD        ; Check for carrier
  95.     RET
  96. ;.....
  97. ;
  98. ;
  99. ; Disconnect and wait for an incoming call
  100. ;
  101. MDINIT:    MVI    A,0        ; Setup to write register 0
  102.     OUT    MDCTL1
  103.     MVI    A,18H        ; Reset channel
  104.     OUT    MDCTL1
  105.     MVI    A,4        ; Setup to write register 4
  106.     OUT    MDCTL1
  107.     MVI    A,44H        ; Set 16x, 1 stop bit, no parity
  108.     OUT    MDCTL1
  109.     MVI    A,3        ; Setup to write register 3
  110.     OUT    MDCTL1
  111.     MVI    A,0C1H        ; 8 bits, Rx enable
  112.     OUT    MDCTL1
  113.     MVI    A,5        ; Setup to write register 5
  114.     OUT    MDCTL1
  115.     MVI    A,68H        ; DTR off
  116.     OUT    MDCTL1
  117.     PUSH    B        ; Save in case it's being used elsewhere
  118.     MVI    B,20        ; 2 second delay to drop any carrier
  119. ;
  120. OFFTI:    CALL    DELAY        ; 1 second delay
  121.     DCR    B
  122.     JNZ    OFFTI        ; Keep looping until finished
  123.     POP    B        ; Restore 'BC'
  124.     MVI    A,5        ; Setup to write register 5
  125.     OUT    MDCTL1
  126.     MVI    A,0E8H        ; Turn DTR back on
  127.     OUT    MDCTL1
  128. ;
  129.      IF    IMODEM        ; If using an intellegent modem
  130.     CALL    IMINIT        ; Go initialize it now
  131.      ENDIF            ; IMODEM
  132. ;
  133.     RET
  134. ;.....
  135. ;
  136. ;
  137. ; Input a character from the modem port
  138. ;
  139. MDINP:    IN    PORT        ; Get character
  140.     RET
  141. ;.....
  142. ;
  143. ;
  144. ; Check the status to see if a character is available. If not, return
  145. ; with the zero flag set.  If yes, use 0FFH to clear the flag.
  146. ;
  147. MDINST:    IN    MDCTL1        ; Get status
  148.     ANI    MDRCV        ; Got a character
  149.     RZ            ; Return if none
  150.     ORI    0FFH        ; Otherwise set the proper flag
  151.     RET
  152. ;.....
  153. ;
  154. ;
  155. ; Send a character to the modem
  156. ;
  157. MDOUTP:    OUT    PORT        ; Send it
  158.     RET
  159. ;.....
  160. ;
  161. ;
  162. ; See if the output is ready for another character
  163. ;
  164. MDOUTST:IN    MDCTL1        ; Get status
  165.     ANI    MDSND        ; Ready for a character?
  166.     RET
  167. ;.....
  168. ;
  169. ;
  170. ; Reinitialize the modem and hang up the phone by dropping DTR and
  171. ; leaving it inactive.
  172. ;
  173. MDQUIT:     IF    IMODEM
  174.     CALL    IMQUIT
  175.      ENDIF            ; IMODEM
  176. ;
  177. ;
  178. ; Called by the main program after caller types BYE
  179. ;
  180. MDSTOP:    MVI    A,5        ; Setup to write register 5
  181.     OUT    MDCTL1
  182.     MVI    A,68H        ; Turn off DTR until next time
  183.     OUT    MDCTL1
  184.     RET
  185. ;.....
  186. ;
  187. ;
  188. ; The following routine sets the baudrate.  BYE5 asks for the maximum
  189. ; speed you have available.
  190. ;
  191. SETINV:    ORI    0FFH        ; Make sure zero flag is not set
  192.     RET
  193. ;.....
  194. ;
  195. ;
  196. SET300:    MVI    B,BD300        ; Set for 300 baud
  197.     MVI    A,BDCMD1
  198.     JMP    SETBAUD
  199. ;
  200. SET1200:MVI    B,BD1200    ; Set for 1200 bps
  201.     MVI    A,BDCMD2
  202.     JMP    SETBAUD
  203. ;
  204. SET2400:MVI    B,BD2400    ; Set for 2400 bps
  205.     MVI    A,BDCMD2
  206. ;
  207. SETBAUD:OUT    BRPORT        ; Send first byte of command
  208.     MOV    A,B        ; Restore the rate
  209.     OUT    BRPORT        ; Send rate
  210.     XRA    A        ; Say rate is ok
  211.     RET
  212. ;.....
  213. ;
  214. ;                   end
  215. ;-----------------------------------------------------------------------
  216.