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 / TURBODSG / REMDRV23.MQC / REMDRV23.MAC
Text File  |  2000-06-30  |  4KB  |  217 lines

  1. ; REMDRV.MAC - A BASTARDIZATION OF CONREM
  2. ; CREATED 10/05/85 BY ESKAY (AS ALWAYS)
  3. ; VERSION 23 AS OF 10/11/85
  4. ;
  5.     NAME    ('RemDrv')
  6. ;
  7. ; ANOTHER ENHANCED TURBODOS MODULE BY ESKAY
  8. ; IN ADDITION TO THE DESCRIPTION OF T-FCN 33, REMOTE CONSOLE I/O,
  9. ; THE FOLLOWING IS NOW POSSIBLE:
  10. ; - SET/QUERY REMOTE BAUD RATES
  11. ; - REMOTE CHANNEL I/O
  12. ;
  13. ; ADDITIONAL SYNTAX:    (C-REGISTER = 33)
  14. ; REG    CONT    FUNCTION
  15. ;  D    0FE    ATTACH CHANNEL IN B, RETURN A=FF=BUSY
  16. ;  D    0FD    DETACH CHANNEL IN B
  17. ;  D    0FC    SET BAUD FOR CHANNEL IN B, FROM E
  18. ;  D    0FB    GET BAUD FOR CHANNEL IN B, RETURN IN A
  19. ;  D    0FA    RETURN INPUT DATA FROM CHANNEL B,
  20. ;        IF BIT 7 SET ON B, OUTPUT BYTE IN E
  21. ;
  22. .Z80
  23. ;
  24.     ASEG                ; GET SERIAL # STRAIGHT
  25.     PUBLIC    ?ORIG?,?UNIT?
  26. ?ORIG?    EQU    24
  27. ?UNIT?    EQU    1
  28. ;
  29.     CSEG
  30. ;
  31. RCHNTY:    LD    A,(IX+32H)        ; GET MODE BYTE
  32.     CP    0FEH            ; ATTACH?
  33.     JP    Z,ATTACH
  34.     CP    0FDH            ; DETACH?
  35.     JP    Z,DETACH
  36.     CP    0FCH            ; SET BAUD
  37.     JP    Z,SETBD
  38.     CP    0FBH            ; GET BAUD
  39.     JP    Z,GETBD
  40.     CP    0FAH            ; GET INPUT
  41.     JP    Z,DOIO
  42. ;
  43. ; CONTINUE WITH CONREM STUFF
  44. ;
  45.     LD    A,(IX+3BH)
  46.     JP    RCFCN##+3        ; CONTINUE
  47. ;
  48. ;    +------------------------+
  49. ;    | COMM CHANNEL I/O STUFF |
  50. ;    +------------------------+
  51. ;
  52. ; ATTACH TO CHANNEL
  53. ;
  54. ATTACH:    CALL    GETCHN            ; GET CHANNEL NUMBER INTO DE
  55.     LD    HL,BUSYV        ; POINT TO BUSY VECTOR
  56.     ADD    HL,DE
  57.     LD    A,(HL)
  58.     LD    (HL),0FFH        ; PRESET BUSY
  59.     OR    A            ; TEST BUSY
  60.     JP    NZ,EXITA##        ; RETURN A=FF IF BUSY
  61.     LD    HL,ATTV            ; POINT TO ATTACH TABLE
  62.     JR    GETVEC            ; GET VECTOR
  63. ;
  64. ; DETACH FROM CHANNEL
  65. ;
  66. DETACH:    CALL    GETCHN            ; GET CHANNEL NUMBER
  67.     LD    HL,BUSYV        ; POINT TO BUSY VECTOR
  68.     ADD    HL,DE
  69.     LD    (HL),0            ; SET CHANNEL CLEAR
  70.     LD    HL,DETV
  71.     JR    GETVEC
  72. ;
  73. ; SET CHANNEL BAUD RATE
  74. ;
  75. SETBD:    CALL    GETCHN            ; GET CHANNEL NUMBER
  76.     LD    HL,SETBV        ; POINT TO SETBAUD VECTORS
  77.     JR    GETVEC            ; GET VECTOR
  78. ;
  79. ; GET BAUD RATE
  80. ;
  81. GETBD:    CALL    GETCHN            ; GET CHANNEL #
  82.     LD    HL,GETBV        ; POINT TO GETBAUD VECTORS
  83.     JR    GETVEC
  84. ;
  85. ; DO I/O
  86. ;
  87. DOIO:    CALL    GETCHN            ; GET CHANNEL #
  88.     RES    7,E            ; STRIO OUTPUT FLAG IF SET
  89.     LD    HL,IOV
  90. ;
  91. ; GET VECTOR
  92. ;
  93. GETVEC:    ADD    HL,DE
  94.     ADD    HL,DE
  95.     LD    E,(HL)
  96.     INC    HL
  97.     LD    D,(HL)
  98.     CALL    TSTUND##        ; TEST UNDEFINED
  99.     LD    A,0FEH            ; PRELOAD FALSE
  100.     JR    NZ,.XCUTE
  101.     CALL    GETCHN
  102.     LD    HL,BUSYV
  103.     ADD    HL,DE
  104.     LD    (HL),0
  105.     JP    EXITA##
  106. .XCUTE:    EX    DE,HL
  107.     JP    (HL)
  108. ;
  109. GETCHN:    LD    E,(IX+30H)        ; GET CHANNEL
  110.     LD    D,0
  111.     RET
  112. ;
  113.     COMMON    /?INIT?/
  114. ;
  115. DSKIN@::
  116.     LD    HL,RCHNTY
  117.     LD    A,0C3H
  118.     LD    (RCFCN##),A
  119.     LD    (RCFCN##+1),HL
  120.     RET
  121. ;
  122.     DSEG
  123. ;
  124. ; REMDRV DATA AREA
  125. ;
  126. BUSYV:    DB    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    ; BUSY VECTORS
  127. ATTV:    DW    ATACHA##
  128.     DW    ATACHB##
  129.     DW    ATACHC##
  130.     DW    ATACHD##
  131.     DW    ATACHE##
  132.     DW    ATACHF##
  133.     DW    ATACHG##
  134.     DW    ATACHH##
  135.     DW    ATACHI##
  136.     DW    ATACHJ##
  137.     DW    ATACHK##
  138.     DW    ATACHL##
  139.     DW    ATACHM##
  140.     DW    ATACHN##
  141.     DW    ATACHO##
  142.     DW    ATACHP##
  143. ;
  144. DETV:    DW    DETAA##
  145.     DW    DETAB##
  146.     DW    DETAC##
  147.     DW    DETAD##
  148.     DW    DETAE##
  149.     DW    DETAF##
  150.     DW    DETAG##
  151.     DW    DETAH##
  152.     DW    DETAI##
  153.     DW    DETAJ##
  154.     DW    DETAK##
  155.     DW    DETAL##
  156.     DW    DETAM##
  157.     DW    DETAN##
  158.     DW    DETAO##
  159. ;
  160. SETBV:    DW    SETBAA##
  161.     DW    SETBAB##
  162.     DW    SETBAC##
  163.     DW    SETBAD##
  164.     DW    SETBAE##
  165.     DW    SETBAF##
  166.     DW    SETBAG##
  167.     DW    SETBAH##
  168.     DW    SETBAI##
  169.     DW    SETBAJ##
  170.     DW    SETBAK##
  171.     DW    SETBAL##
  172.     DW    SETBAM##
  173.     DW    SETBAN##
  174.     DW    SETBAO##
  175.     DW    SETBAP##
  176. ;
  177. GETBV:    DW    GETBDA##
  178.     DW    GETBDB##
  179.     DW    GETBDC##
  180.     DW    GETBDD##
  181.     DW    GETBDE##
  182.     DW    GETBDF##
  183.     DW    GETBDG##
  184.     DW    GETBDH##
  185.     DW    GETBDI##
  186.     DW    GETBDJ##
  187.     DW    GETBDK##
  188.     DW    GETBDL##
  189.     DW    GETBDM##
  190.     DW    GETBDN##
  191.     DW    GETBDO##
  192.     DW    GETBDP##
  193. ;
  194. IOV:    DW    INOUTA##
  195.     DW    INOUTB##
  196.     DW    INOUTC##
  197.     DW    INOUTD##
  198.     DW    INOUTE##
  199.     DW    INOUTF##
  200.     DW    INOUTG##
  201.     DW    INOUTH##
  202.     DW    INOUTI##
  203.     DW    INOUTJ##
  204.     DW    INOUTK##
  205.     DW    INOUTL##
  206.     DW    INOUTM##
  207.     DW    INOUTN##
  208.     DW    INOUTO##
  209.     DW    INOUTP##
  210. ;
  211.     END
  212. 
  213.     DW    ATACHI##
  214.     DW    ATACHJ##
  215.     DW    ATACHK##
  216.     DW    ATACHL##
  217.     D