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 / RCPM / NBYE10.LBR / NBCPRO.IQC / NBCPRO.INC
Text File  |  2000-06-30  |  4KB  |  178 lines

  1. ;******************************************************************************
  2. ;
  3. ;    NBCPRO.INC        Gary Case
  4. ;    19 August 1984        585 Big Sky Court
  5. ;                Colorado Springs, CO
  6. ;                           80919
  7. ;                (303) 599-0744
  8. ;
  9. ;
  10. ; Compupro Interfacer 3 (or 4) insert for NBYE.MAC
  11. ; Companion insert to NBHAYES.INC.
  12. ;
  13. ; *** Must be renamed as NBYEIO.INC before assembly.
  14. ;
  15. ;
  16. ;   ***  Be sure to set the following:
  17. ;
  18. ;
  19. MDMUSER    EQU    6    ;RELATIVE USER NUMBER OF MODEM PORT ON INTERFACER 3
  20. ;
  21. I3BASE    EQU    10H    ;BASE PORT OF THE INTERFACER 3
  22. ;
  23. ;******************************************************************************
  24. ;
  25. ;
  26. ;
  27. I3DATA    EQU    I3BASE        ;INTERFACER 3 PORT VALUES
  28. I3STAT    EQU    I3BASE+1
  29. I3MODE    EQU    I3BASE+2
  30. I3CMND    EQU    I3BASE+3
  31. I3USER    EQU    I3BASE+7
  32. ;
  33. ;
  34. ;
  35. MDMISTAT:    ;Routine to return current modem port input status.
  36.         ;
  37.         ;    ??? ==> Acc ==>    0 if no input ready
  38.         ;            0FFH if a character is ready
  39.         ;
  40.         ;Exit Status:    Z ==> No char available
  41.         ;           NZ ==> Character ready
  42.         ;
  43. ;
  44. MISCYL    EQU    45        ;NBR OF MACHINE CYCLES EXECUTED BY THIS ROUTINE
  45.                 ;WHEN NO CHARACTER IS READY
  46.                 ;(FOR PURISTS IT'S 45 FOR 8080'S, 46 FOR Z80'S)
  47. ;
  48.     MVI    A,MDMUSER    ;SET RELATIVE USER NUMBER
  49.     OUT    I3USER        ;SELECT THE PORT
  50.     IN    I3STAT        ;GET STATUS
  51.     ANI    00000010B    ;MASK RECEIVE READY BIT
  52.     RZ            ;STATUS OKAY IF NO INPUT READY
  53.     MVI    A,0FFH        ;ELSE NEED 0FFH TO MEET SPECIFICATIONS
  54.     RET
  55. ;
  56. ;
  57. ;
  58. MDMOSTAT:    ;Routine to return current modem port output status.
  59.         ;
  60.         ;Exit Status:    Z ==> Port not ready for output
  61.         ;           NZ ==> Port is ready for a character
  62.         ;
  63. ;
  64.     MVI    A,MDMUSER    ;SET RELATIVE USER NUMBER
  65.     OUT    I3USER        ;SELECT THE PORT
  66.     IN    I3STAT        ;GET STATUS
  67.     ANI    00000001B    ;MASK TRANSMIT READY BIT
  68.     RET            ;AND RETURN WITH STATUS
  69. ;
  70. ;
  71. ;
  72. MDMINP:        ;Routine to input a byte from the modem data port.  Clears any
  73.         ;errors (framing, overrun, and parity), and substitutes a null
  74.         ;for any input with errors.
  75.         ;
  76.         ;    ??? ==> Acc ==> Data from the input port
  77.         ;
  78. ;
  79.     CALL    MDMISTAT    ;WAIT UNTIL CHARACTER IS READY
  80.     JZ    MDMINP
  81.     IN    I3STAT        ;CHECK FOR ERRORS
  82.     ANI    00111000B
  83.     IN    I3DATA        ;GET THE DATA REGARDLESS
  84.     RZ            ;DONE IF NO ERRORS
  85.     JMP    MDMDTRON    ;ELSE RESET COMMAND REGISTER AND RETURN A NULL
  86. ;
  87. ;
  88. ;
  89. MDMOUT:        ;Routine to send a byte to the modem data port.
  90.         ;
  91.         ;    Byte to send ==> Acc ==> Unchanged
  92.         ;
  93. ;
  94.     PUSH    PSW        ;SAVE BYTE TO SEND
  95. W4MDMO:    CALL    MDMOSTAT    ;WAIT UNTIL READY FOR OUTPUT
  96.     JZ    W4MDMO
  97.     POP    PSW        ;RESTORE THE DATA, SEND IT, AND EXIT
  98.     OUT    I3DATA
  99.     RET
  100. ;
  101. ;
  102. ;
  103. MDM110:        ;Routine to initialize the modem port to 110 baud.
  104.         ;
  105. ;
  106.     MVI    A,0010B        ;SET VALUE FOR 110 BAUD INITIALIZATION
  107.     JMP    MDMBAUD        ;GO INIT THE PORT
  108. ;
  109. ;
  110. ;
  111. MDM300:        ;Routine to initialize the modem port to 300 baud.
  112.         ;
  113. ;
  114.     MVI    A,0101B        ;SET VALUE FOR 300 BAUD INITIALIZATION
  115.     JMP    MDMBAUD        ;GO INIT THE PORT
  116. ;
  117. ;
  118. ;
  119. MDM1200:    ;Routine to initialize the modem port to 1200 baud.
  120.         ;
  121. ;
  122.     MVI    A,0111B        ;SET VALUE FOR 1200 BAUD INITIALIZATION
  123. MDMBAUD    EQU    $
  124.     ORI    01110000B    ;COMPLETE MODE REGISTER 2 VALUE FOR DESIRED
  125.     PUSH    PSW        ;BAUD RATE WITH INTERNAL CLOCKS AND SAVE IT
  126.     MVI    A,MDMUSER    ;SET RELATIVE USER NUMBER
  127.     OUT    I3USER        ;SELECT THE PORT
  128.     MVI    A,01001110B    ;INIT TO 1 STOP, ODD PARITY (DISABLED),
  129.     OUT    I3MODE        ;8 DATA BITS, AND 16X CLOCK
  130.     POP    PSW        ;SET INTERNAL CLOCKS AT DESIRED BAUD RATE
  131.     OUT    I3MODE
  132.     CALL    MDMDTRON    ;FOLLOW WITH COMMAND WORD
  133.     XTHL            ;A BIT OF DELAY
  134.     XTHL
  135.     IN    I3DATA        ;CLEAR ANY PENDING DATA
  136.     IN    I3DATA
  137.     XRA    A        ;RETURN GOOD STATUS
  138.     RET
  139. ;
  140. ;
  141. ;
  142. MDMDTRON:    ;Routine to turn modem port DTR on.
  143.         ;
  144. ;
  145.     MVI    A,MDMUSER    ;SET RELATIVE USER NUMBER
  146.     OUT    I3USER        ;SELECT THE PORT
  147.     MVI    A,00110111B    ;COMMAND NORMAL OPERATION, RTS HIGH, RESET ANY
  148.     OUT    I3CMND        ;ERRORS, NO BREAK, RCVR ON, DTR HIGH, XMITR ON
  149.     XRA    A        ;EXIT WITH NULL FOR 'MDMINP'
  150.     RET
  151. ;
  152. ;
  153. ;
  154. MDMDTROFF:    ;Routine to turn modem port DTR off.
  155.         ;
  156. ;
  157.     MVI    A,MDMUSER    ;SET RELATIVE USER NUMBER
  158.     OUT    I3USER        ;SELECT THE PORT
  159.     MVI    A,00110101B    ;COMMAND NORMAL OPERATION, RTS HIGH, RESET ANY
  160.     OUT    I3CMND        ;ERRORS, NO BREAK, RCVR ON, DTR LOW, XMITR ON
  161.     RET
  162. ;
  163. ;
  164. ;
  165. MDMDSR:        ;Routine to return status of the DSR input on the modem port.
  166.         ;
  167. ;
  168.     MVI    A,MDMUSER    ;SET RELATIVE USER NUMBER
  169.     OUT    I3USER        ;SELECT THE PORT
  170.     IN    I3STAT        ;GET STATUS
  171.     ANI    10000000B    ;MASK DSR STATUS BIT
  172.     RET            ;AND RETURN WITH STATUS
  173. ;
  174. ;
  175. ;        ***  End of Compupro Interfacer 3/4 Insert ***
  176. ;
  177. ;******************************************************************************
  178.