home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / nubye / nuby-ins.lbr / NUEP-1.IQS / nuep-1.ins
Text File  |  1986-04-26  |  3KB  |  141 lines

  1. ; NUEP-1.INS - NUBYE insert for Epson QX-10 computers - 04/21/86
  2. ;
  3. ; Z80 SIO and Intel 8253 timer
  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    11H        ; Data port
  15. MDCTL1    EQU    PORT+2        ; Status/Control port
  16. TMR0    EQU    6        ; 8253 baudrate generator port
  17. TMR1    EQU    TMR0+1        ; Vector port
  18. ;
  19. ; Now comes the time to decide how we set the baud rate.  Set it prop-
  20. ; erly for your particular 8253 timer configuration
  21. ;
  22. BDVECT    EQU    0B6H        ; QX-10 Vector word
  23. ;
  24. BD300    EQU    416        ; 300 baud
  25. BD1200    EQU    104        ; 1200 bps
  26. BD2400    EQU    52        ; 2400 bps
  27. ;
  28. ; See if we still have a carrier - if not, return with the zero flag set
  29. ;
  30. MDCARCK:MVI    A,10H        ; Reset status
  31.     OUT    MDCTL1
  32.     IN    MDCTL1        ; Get status
  33.     ANI    8        ; Check for data carrier
  34.     RET
  35. ;
  36. ; Disconnect and wait for an incoming call
  37. ;
  38. MDINIT:    MVI    A,18H        ; Reset channel
  39.     OUT    MDCTL1
  40.     MVI    A,4        ; Setup to write register 4
  41.     OUT    MDCTL1
  42.     MVI    A,44H        ; 1 stop, 8 bits, no parity, 32x
  43.     OUT    MDCTL1
  44.     MVI    A,5        ; Setup to write register 5
  45.     OUT    MDCTL1
  46.     MVI    A,68H        ; Clear RTS causing hangup
  47.     OUT    MDCTL1
  48.     PUSH    B        ; Save in case it's being used elsewhere
  49.     MVI    B,20        ; 2 seconds delay to drop any carrier
  50. ;
  51. OFFTI:    CALL    DELAY        ; 0.1 second delay
  52.     DCR    B
  53.     JNZ    OFFTI        ; Keep looping until finished
  54.     POP    B        ; Restore bc
  55.     MVI    A,3        ; Setup to write register 3
  56.     OUT    MDCTL1
  57.     MVI    A,0C1H        ; Initialize receive register
  58.     OUT    MDCTL1
  59.     MVI    A,5        ; Setup to write register 5
  60.     OUT    MDCTL1
  61.     MVI    A,0EAH        ; Turn on RTS so modem can answer phone
  62.     OUT    MDCTL1
  63. ;
  64.      IF    IMODEM        ; If using intelligent modem
  65.     CALL    IMINIT        ; Go initialize
  66.      ENDIF            ; IMODEM
  67. ;
  68.     RET
  69. ;
  70. ; Input a character from the modem port
  71. ;
  72. MDINP:    IN    PORT        ; Get character
  73.     RET
  74. ;
  75. ; Check the status to see if a character is available.    if not, return
  76. ; with the zero flag set.  If yes, use 0FFH to clear the flag.
  77. ;
  78. MDINST:    IN    MDCTL1        ; Get status
  79.     ANI    1        ; Check the receive ready bit
  80.     RZ            ; Return if none
  81.     ORI    0FFH        ; Otherwise, set the proper flag
  82.     RET
  83. ;
  84. ; Send a character to the modem
  85. ;
  86. MDOUTP:    OUT    PORT        ; Send it
  87.     RET
  88. ;
  89. ; See if the output is ready for another character.
  90. ;
  91. MDOUTST:IN    MDCTL1
  92.     ANI    4        ; Check the transmit ready bit
  93.     RET
  94. ;
  95. ; Reinitialize the modem and hang up the phone by dropping DTR and
  96. ; leaving it inactive.
  97. ;
  98. MDQUIT:     IF    IMODEM
  99.     CALL    IMQUIT
  100.      ENDIF            ; IMODEM
  101. ;
  102. ; Called by the main program after caller types BYE
  103. ;
  104. MDSTOP:    MVI    A,5        ; Setup to write register 5
  105.     OUT    MDCTL1
  106.     MVI    A,68H        ; Clear DTR
  107.     OUT    MDCTL1        ; Causing Hang-Up
  108.     IN    PORT        ; Clear out garbage
  109.     IN    PORT        ; Make sure we're clear
  110.     RET            ; Not used
  111. ;
  112. ; The following reoutine sets the baudrate.  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:    PUSH    H
  119.     LXI    H,BD300
  120.     JMP    SETBAUD
  121. ;
  122. SET1200:PUSH    H
  123.     LXI    H,BD1200
  124.     JMP    SETBAUD
  125. ;
  126. SET2400:PUSH    H
  127.     LXI    H,BD2400
  128. ;
  129. SETBAUD:MVI    A,BDVECT    ; Get vector address
  130.     OUT    TMR1        ; Send to TMR
  131.     MOV    A,L
  132.     OUT    TMR0
  133.     MOV    A,H
  134.     OUT    TMR0        ; Send rate
  135.     POP    H
  136.     XRA    A        ; Say rate is OK
  137.     RET
  138. ;
  139. ; end of insert
  140. ; -------------
  141.