home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / bye5 / b5ph-1.ins < prev    next >
Text File  |  1994-07-13  |  4KB  |  162 lines

  1.  
  2. ; B5PH-1.INS - BYE5 insert for Philips "Happy Man" P2000C - 07/17/85
  3. ;
  4. ;        Zilog Z80-SIO and 8430 CTC timer
  5. ;
  6. ;        Note:  This is an insert, not an overlay.
  7. ;
  8. ;
  9. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  10. ;
  11. ; 07/17/85  Written for use with BYE5        - Irv Hoff
  12. ;
  13. ; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
  14. ;
  15. ;
  16. PORT    EQU    28H        ; Data port
  17. MDCTL1    EQU    PORT+1        ; Modem control port
  18. BRPORT    EQU    21H        ; Baud rate generator port (CTC)
  19. ;
  20. MDRCV    EQU    1        ; Modem receive ready bit
  21. MDSND    EQU    4        ; Modem send ready bit
  22. MDDCD    EQU    8        ; Data carrier detect
  23. ;
  24. ;
  25. ; First byte of CTC Command:
  26. ;
  27. BDCMD1    EQU    47H        ; Counter mode
  28. ;
  29. BD300    EQU    128        ; 300 baud
  30. BD1200    EQU    32        ; 1200 bps
  31. BD2400    EQU    16        ; 2400 bps
  32. ;
  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    MDCTL1
  40.     IN    MDCTL1        ; Get status
  41.     ANI    MDDCD        ; Check for carrier
  42.     RET
  43. ;.....
  44. ;
  45. ;
  46. ; Disconnect and wait for an incoming call
  47. ;
  48. MDINIT:    MVI    A,0        ; Setup to write register 0
  49.     OUT    MDCTL1
  50.     MVI    A,18H        ; Reset channel
  51.     OUT    MDCTL1
  52.     MVI    A,4        ; Setup to write register 4
  53.     OUT    MDCTL1
  54.     MVI    A,44H        ; Set 16x, 1 stop bit, no parity
  55.     OUT    MDCTL1
  56.     MVI    A,3        ; Setup to write register 3
  57.     OUT    MDCTL1
  58.     MVI    A,0C1H        ; 8 bits, Rx enable
  59.     OUT    MDCTL1
  60.     MVI    A,5        ; Setup to write register 5
  61.     OUT    MDCTL1
  62.     MVI    A,68H        ; DTR off
  63.     OUT    MDCTL1
  64.     PUSH    B        ; Save in case it's being used elsewhere
  65.     MVI    B,20        ; 2 second delay to drop any carrier
  66. ;
  67. OFFTI:    CALL    DELAY        ; 1 second delay
  68.     DCR    B
  69.     JNZ    OFFTI        ; Keep looping until finished
  70.     POP    B        ; Restore 'BC'
  71.     MVI    A,5        ; Setup to write register 5
  72.     OUT    MDCTL1
  73.     MVI    A,0E8H        ; Turn DTR back on
  74.     OUT    MDCTL1
  75. ;
  76.      IF    IMODEM        ; If using an intellegent modem
  77.     CALL    IMINIT        ; Go initialize it now
  78.      ENDIF            ; IMODEM
  79. ;
  80.     RET
  81. ;.....
  82. ;
  83. ;
  84. ; Input a character from the modem port
  85. ;
  86. MDINP:    IN    PORT        ; Get character
  87.     RET
  88. ;.....
  89. ;
  90. ;
  91. ; Check the status to see if a character is available.  I fyes, return
  92. ; with the zero flag set.  If yes, use 0FFH to clear the flag.
  93. ;
  94. MDINST:    IN    MDCTL1        ; Get status
  95.     ANI    MDRCV        ; Got a character
  96.     RZ            ; Return if none
  97.     ORI    0FFH        ; Otherwise set the proper flag
  98.     RET
  99. ;.....
  100. ;
  101. ;
  102. ; Send a character to the modem
  103. ;
  104. MDOUTP:    OUT    PORT        ; Send it
  105.     RET
  106. ;.....
  107. ;
  108. ;
  109. ; See if the output is ready for another character
  110. ;
  111. MDOUTST:IN    MDCTL1        ; Get status
  112.     ANI    MDSND        ; Ready for a character?
  113.     RET
  114. ;.....
  115. ;
  116. ;
  117. ; Reinitialize the modem and hang up the phone by dropping DTR and
  118. ; leaving it inactive.
  119. ;
  120. MDQUIT:     IF    IMODEM
  121.     CALL    IMQUIT
  122.      ENDIF            ; IMODEM
  123. ;
  124. ;
  125. ; Called by the main program after caller types BYE
  126. ;
  127. MDSTOP:    MVI    A,5        ; Setup to write register 5
  128.     OUT    MDCTL1
  129.     MVI    A,68H        ; Turn off DTR until next time
  130.     OUT    MDCTL1
  131.     RET
  132. ;.....
  133. ;
  134. ;
  135. ; The following routine sets the baudrate.  BYE5 asks for the maximum
  136. ; speed you have available.
  137. ;
  138. SETINV:    ORI    0FFH        ; Make sure zero flag is not set
  139.     RET
  140. ;.....
  141. ;
  142. ;
  143. SET300:    MVI    B,BD300        ; Set for 300 baud
  144.     JMP    SETBAUD
  145. ;
  146. SET1200:MVI    B,BD1200    ; Set for 1200 bps
  147.     JMP    SETBAUD
  148. ;
  149. SET2400:MVI    B,BD2400    ; Set for 2400 bps
  150.     PUSH    PSW
  151. ;
  152. SETBAUD:MVI    A,BDCMD1    ; Get CTC command word
  153.     OUT    BRPORT        ; Send first byte of command
  154.     MOV    A,B        ; Restore the baudrate
  155.     OUT    BRPORT        ; Send rate
  156.     XRA    A        ; Say rate is ok
  157.     RET
  158. ;.....
  159. ;
  160. ;                   end
  161. ;-----------------------------------------------------------------------
  162.