home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / bye3 / b3ad-2.iqs / B3AD-2.INS
Text File  |  1985-11-17  |  4KB  |  154 lines

  1. ;
  2. ; B3AD-2.INS - BYE3 insert for AD Super Six CPU board - 07/30/85
  3. ;
  4. ;        Z80 DART and 8116 baudrate generator
  5. ;
  6. ; This routine adapts the Advanced Digital Super Quad and Super Six
  7. ; single board computers to BYE3.  Baudrate is read in off of a parallel
  8. ; port and sent to the baudrate generator upon powerup, from default
  9. ; jumpers.  Note:  This is an insert, not an overlay.
  10. ;
  11. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  12. ;
  13. ; 07/30/85  Restored to original format        - pst
  14. ; 05/15/85  First version of B3AD        - John Sojak
  15. ;
  16. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  17. ;
  18. ;
  19. DPORT    EQU    02H        ; Data port
  20. SPORT    EQU    DPORT+1        ; Modem control port
  21. BRPORT    EQU    18H        ; Set baud rate generator base port
  22. JUMPRS    EQU    15H        ; Baud rate default jumpers
  23. ;
  24. DAV    EQU    00000001B    ; Data available
  25. TBMT    EQU    00000100B    ; Transmit buffer empty
  26. DCD    EQU    00001000B    ; Data carrier detect
  27. ;
  28. ; Divisors for the 8116 baudrate geneator
  29. ;
  30. BD300    EQU    5        ; 300 baud
  31. BD1200    EQU    7        ; 1200 baud
  32. BD2400    EQU    10        ; 2400 baud
  33. ;
  34. ;-----------------------------------------------------------------------
  35. ;
  36. ; See if we still have a carrier - if not, return with the zero flag set
  37. ;
  38. MDCARCK:MVI    A,10H        ; Reset status
  39.     OUT    SPORT
  40.     IN    SPORT        ; Get status
  41.     ANI    DCD        ; Check for carrier
  42.     RZ
  43.     ORI    255
  44.     RET
  45. ;
  46. ; Disconnect and wait for an incoming call
  47. ;
  48. MDINIT:    MVI    A,0        ; Setup to write register 0
  49.     OUT    SPORT
  50.     MVI    A,18H        ; Reset channel
  51.     OUT    SPORT
  52.     MVI    A,4        ; Setup to write register 4
  53.     OUT    SPORT
  54.     MVI    A,44H        ; Set 16x, 1 stop bit, no parity
  55.     OUT    SPORT
  56.     MVI    A,3        ; Setup to write register 3
  57.     OUT    SPORT
  58.     MVI    A,0C1H        ; 8 bits, Rx enable
  59.     OUT    SPORT
  60.     MVI    A,5        ; Setup to write register 5
  61.     OUT    SPORT
  62.     MVI    A,68H        ; DTR off
  63.     OUT    SPORT
  64. ;
  65.     PUSH    B        ; Save in case it's being used elsewhere
  66.     MVI    B,20        ; 2 second delay to drop any carrier
  67. OFFTI:    CALL    DELAY        ; 1 second delay
  68.     DCR    B
  69.     JNZ    OFFTI        ; Keep looping until finished
  70.     POP    B        ; Restore 'BC'
  71. ;
  72.     MVI    A,5        ; Setup to write register 5
  73.     OUT    SPORT
  74.     MVI    A,0E8H        ; Turn DTR back on
  75.     OUT    SPORT
  76. ;
  77.      IF    IMODEM        ; If using an intellegent modem
  78.     CALL    IMINIT        ; Go initialize it now
  79.      ENDIF            ; IMODEM
  80. ;
  81.     RET
  82. ;
  83. ; Input a character from the modem port
  84. ;
  85. MDINP:    IN    DPORT        ; Get character
  86.     RET
  87. ;
  88. ; Check the status to see if a character is available.    If not, return
  89. ; with the zero flage set.  If yes, use 0FFH to clear the flag.
  90. ;
  91. MDINST:    IN    SPORT        ; Get status
  92.     ANI    DAV        ; Got a character
  93.     RZ            ; Return if none
  94.     ORI    255        ; Otherwise set the proper flag
  95.     RET
  96. ;
  97. ; Send a character to the modem
  98. ;
  99. MDOUTP:    OUT    DPORT        ; Send it
  100.     RET
  101. ;
  102. ; See if the output is ready for another character
  103. ;
  104. MDOUTST:IN    SPORT        ; Get status
  105.     ANI    TBMT        ; Ready for a character?
  106.     RZ
  107.     ORI    255
  108.     RET
  109. ;
  110. ; Reinitialize the modem and hang up the phone by dropping DTR and
  111. ; leaving it inactive.
  112. ;
  113. MDQUIT:     IF    IMODEM
  114.     CALL    IMQUIT
  115.      ENDIF            ; IMODEM
  116. ;
  117. ; Called by the main program after caller types BYE
  118. ;
  119. MDSTOP:    MVI    A,5        ; Setup to write register 5
  120.     OUT    SPORT
  121.     MVI    A,68H        ; Turn off DTR until next time
  122.     OUT    SPORT
  123.     RET
  124. ;
  125. ; The following routine sets the baudrate.  BYE5 asks for the maximum
  126. ; speed you have available.
  127. ;
  128. SET300:    MVI    A,BD300
  129.     JMP    SETBAUD
  130. ;
  131. SET1200:MVI    A,BD1200
  132.     JMP    SETBAUD
  133. ;
  134. SET2400:MVI    A,BD2400
  135. ;
  136. ; Sets the baudrate
  137. ;
  138. SETBAUD:RLC            ; Shift the nibble over to the LSN
  139.     RLC            ;   (could have been eliminated in the
  140.     RLC            ;   equate but the intent is easier to
  141.     RLC            ;   understand this way.
  142.     ANI    11110000B    ; Mask off bits - intent again
  143.     PUSH    B
  144.     MOV    B,A
  145.     IN    JUMPRS        ; Get the console baud jumpers
  146.     ANI    00001111B    ; Mask garbage - 4 bits worth of it
  147.     ORA    B        ;   and make a composite of modem and
  148.     OUT    BRPORT        ;   console then tell the generator
  149.     POP    B
  150.     XRA    A        ; Say baudrate is ok
  151.     RET
  152. ;                   end
  153. ;-----------------------------------------------------------------------
  154.