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 / NUBYE / NUBY-INS.LBR / NUKP-1.IQS / nukp-1.ins
Text File  |  1986-04-26  |  3KB  |  134 lines

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