home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / nubye / nuby-ins.lbr / NUAA-1.IQS / nuaa-1.ins
Text File  |  1986-04-25  |  6KB  |  266 lines

  1. ; NUAA-1.INS for the Apple PCPI & Super Serial Card for NUBYE - 04/21/86
  2. ;
  3. ;       6551 I/O with internal baudrate generator
  4. ;
  5. ;
  6. ; This version is for Apple ][ computers, using the PCPI Applicard
  7. ; CPM card, and the Apple Super Serial Card.
  8. ;
  9. ;
  10. ; Note:  This is an insert, not an overlay.
  11. ;
  12. ;
  13. ;    MODEM=DCE            Super Serial Card
  14. ;
  15. ;    TXD    2  -------->    2    RXD    received data
  16. ;    RXD    3  <--------    3    TXD    tranmitted data
  17. ;    SG    7  ---------    7    SG    signal ground
  18. ;    DCD    8  -------->    6    DSR    data set ready (carrier)
  19. ;    DTR    20 <-------    20    DTR    data terminal ready
  20. ;
  21. ;
  22. ; This cable configuration uses DSR signal at the SSC to check carrier
  23. ; and Serial card DCD wired to DTR (Jumper pin 20-8) so that modem
  24. ; result codes are received when carrier is off.
  25. ;
  26. ; Set modem switches as defined in NU-IMAT.DOC.
  27. ;
  28. ; THIS WORKS PROPERLY WITH NUBYE AND IS COMPATABLE WITH IMP WITHOUT ANY
  29. ; CHANGES, ANY OTHER CONFIGURATION MIGHT REQUIRE RESETTING SOME MODEM
  30. ; SWITCHES WHEN GOING FROM NUBYE TO IMP, MDM7, MEX, ETC.
  31. ;
  32. ; ----------
  33. ;
  34. ; For the Apple //e, a user entered Control Q can trash the local dis-
  35. ; play by reverting back to 40 column mode.  This is a patch to turn
  36. ; that Control Q into a back space.
  37. ;
  38. ; In NUBYE find the label MINP2A:  Just prior to MINP2A should be the
  39. ; lines:
  40. ;        JNZ    MINP2A
  41. ;        MVI    A,08H
  42. ;
  43. ; Add the following code just before JNZ MINP2A
  44. ;
  45. ;        JZ    CHNGIT
  46. ;        CPI    'Q'-'@'
  47. ;        JNZ    MINP2A
  48. ;    ;
  49. ;    CHNGIT: MVI    A,08H    << note the added label
  50. ;
  51. ;
  52. ; ========
  53. ;
  54. ; 04/21/86  Edited for NUBYE
  55. ; 09/20/85  Created overlay for BYE5.         -Norman Beeler
  56. ;
  57. ; ========
  58. ;
  59. SLOT    EQU    2        ; Slot 2 is normal
  60. OFFS    EQU    16*SLOT        ; This is the slot offset
  61. ;
  62. PORT    EQU    0C088H+OFFS    ; Dataport    
  63. STPORT    EQU    PORT+1        ; Status port
  64. CPORT    EQU    PORT+2        ; Command port
  65. BRPORT    EQU    PORT+3        ; Baud rate port
  66. ;
  67. ;
  68. ; PCPI CP/M card I/O equates
  69. ;
  70. RDBYTE    EQU    0FFE0H        ; Read a Byte from Apple (A = BYTE)
  71. WRBYTE    EQU    0FFE3H        ; Write a Byte to Apple (C = BYTE)
  72. RDWORD    EQU    0FFE6H        ; Read 2 Bytes from Apple (DE = BYTES)
  73. WRWORD    EQU    0FFE9H        ; Write 2 Bytes to Apple (DE = BYTES)
  74. RDNBYTS    EQU    0FFECH        ; Read N Bytes (DE = COUNT, HL = BUFFER)
  75. WRNBYTS    EQU    0FFEFH        ; Write N Bytes (DE = COUNT, HL = BUFFER)
  76. ;
  77. PEEK1BYTE EQU    6        ; Command to Peek 1 Byte in the Apple
  78. POKE1BYTE EQU    7        ; Command to Poke 1 Byte to the Apple
  79. ;
  80. ; ==========
  81. ;
  82. ; These routines are specific to the Apple ][+ with Applicard.    The
  83. ; routines read modem hardware (Apple Super Serial Card ACIA) directly
  84. ; from the Applicard.
  85. ;
  86. ; Peek at 1 byte from Apple 6502 address space
  87. ;
  88. ;     ENTRY: DE = Address in Apple
  89. ;     EXIT:  A = Data
  90. ;
  91. PEEK:    PUSH    B
  92.     MVI    C,PEEK1BYTE
  93.     CALL    WRBYTE
  94.     CALL    WRWORD
  95.     CALL    RDBYTE
  96.     POP    B
  97.     RET
  98. ;
  99. ; Poke 1 byte to Apple 6502 address space
  100. ;
  101. ;     ENTRY: DE = Address in Apple
  102. ;     EXIT:  A = Data
  103. ;
  104. POKE:    PUSH    B
  105.     MOV    B,A
  106.     MVI    C,POKE1BYTE
  107.     CALL    WRBYTE
  108.     CALL    WRWORD
  109.     MOV    C,B
  110.     CALL    WRBYTE
  111.     POP    B
  112.     RET
  113. ;
  114. ; Read the baud rate port of the ACIA
  115. ;
  116. RD$BRPORT:
  117.     PUSH    D
  118.     LXI    D,BRPORT
  119.     CALL    PEEK
  120.     POP    D
  121.     RET
  122. ;
  123. ; Read the command port of ACIA
  124. ;
  125. RD$CPORT:
  126.     PUSH    D
  127.     LXI    D,CPORT
  128.     CALL    PEEK
  129.     POP    D
  130.     RET
  131. ;
  132. ; Read data port of ACIA
  133. ;
  134. RD$PORT:PUSH    D
  135.     LXI    D,PORT
  136.     CALL    PEEK
  137.     POP    D
  138.     RET
  139. ;
  140. ; Read the status port of the ACIA
  141. ;
  142. RD$STPORT:
  143.     PUSH    D
  144.     LXI    D,STPORT
  145.     CALL    PEEK
  146.     POP    D
  147.     RET
  148. ;
  149. ; Write to the baud rate port of the ACIA
  150. ;
  151. WR$BRPORT:
  152.     PUSH    D
  153.     LXI    D,BRPORT
  154.     CALL    POKE
  155.     POP    D
  156.     RET
  157. ;
  158. ; Write to the command port of ACIA
  159. ;
  160. WR$CPORT:
  161.     PUSH    D
  162.     LXI    D,CPORT
  163.     CALL    POKE
  164.     POP    D
  165.     RET
  166. ;
  167. ; Write to the serial data port of the ACIA
  168. ;
  169. WR$PORT:PUSH    D
  170.     LXI    D,PORT
  171.     CALL    POKE
  172.     POP    D
  173.     RET
  174. ;
  175. ; ----------
  176. ;
  177. ; Check for a carrier, if none return with the zero flag set.
  178. ;
  179. MDCARCK:CALL    RD$STPORT    ; Get status
  180.     ANI    40H        ; Check DSR pin for DCD (see above)
  181.     XRI    40H        ; Reverse the zero flag (the 6551
  182.     RET            ; Has status 0 for DCD/DSR true)
  183. ;
  184. ; This routine will turn off the serial card and hang up the phone.
  185. ;
  186. MDINIT:    MVI    A,41H        ; Turn off DTR
  187.     CALL    WR$CPORT
  188.     PUSH    B        ; Save register
  189.     MVI    B,20        ; Delay 2 sec to drop carrier
  190. ;
  191. OFFTI:    CALL    DELAY        ; 1 sec per loop
  192.     DCR    B
  193.     JNZ    OFFTI        ; Keep going until finished
  194.     POP    B        ; Restore register
  195.     MVI    A,4BH        ; Raise DTR
  196.     CALL    WR$CPORT
  197.     MVI    A,18H        ; Set 1200,8 bits, 1 stop
  198.     CALL    WR$BRPORT
  199. ;
  200.       IF    IMODEM
  201.     CALL    IMINIT
  202.       ENDIF
  203. ;
  204.     RET
  205. ;
  206. ; Input a character from the modem port.
  207. ;
  208. MDINP:    CALL    RD$PORT        ; Get character
  209.     RET
  210. ;
  211. ; Check the status to see if a character is available.  Return with zero
  212. ; flag set, if not.  If yes, use 0FFH to clear the flag.
  213. ;
  214. MDINST:    CALL    RD$STPORT    ; Get modem status
  215.     ANI    8        ; Is data available?
  216.     RZ            ; If no, return
  217.     ORI    0FFH        ; Otherwise return true
  218.     RET
  219. ;
  220. ; This routine will output a character to the data port.
  221. ;
  222. MDOUTP:    CALL    WR$PORT        ; Send character
  223.     RET
  224. ;
  225. ; See if the output is ready for another character.
  226. ;
  227. MDOUTST:CALL    RD$STPORT    ; Get modem status
  228.     ANI    10H        ; Mask out junk
  229.     RET
  230. ;
  231. ; Reinitialize the modem and hang up the phone by dropping DTR and
  232. ; leaving it inactive.
  233. ;
  234. MDQUIT:     IF    IMODEM        ; If using a smartmodem
  235.     CALL    IMQUIT        ; Tell it to shut down
  236.      ENDIF            ; IMODEM
  237. ;
  238. ; Called by the main program after caller types BYE
  239. ;
  240. MDSTOP:    MVI    A,41H        ; Drop DTR
  241.     JMP    WR$CPORT
  242. ;
  243. ; If you do not support a particular baud rate, put it here
  244. ; before SETINV:
  245. ;
  246. SETINV:    ORI    0FFH
  247.     RET
  248. ;
  249. SET300:    MVI    A,16H
  250.     JMP    WR$BRPORT    ; Go change the baud rate
  251. ;
  252. SET1200:MVI    A,18H
  253.     JMP    WR$BRPORT
  254. ;
  255. SET2400:MVI    A,1AH
  256.     JMP    WR$BRPORT
  257. ;
  258. SET4800:MVI    A,1CH
  259.     JMP    WR$BRPORT
  260. ;
  261. SET9600:MVI    A,1EH
  262.     JMP    WR$BRPORT
  263. ;
  264. ; end of insert
  265. ; -------------
  266.