home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / tdossigi / attrem.mac < prev    next >
Text File  |  1986-07-05  |  2KB  |  135 lines

  1. ; ATTACH TO REMOTE DRIVERS VIA REMDRV
  2. ;
  3. CR    EQU    0DH
  4. LF    EQU    0AH
  5. ;
  6. .Z80
  7. ;
  8.     CSEG
  9. ;
  10. START:    LD    SP,STACK        ; set up local stack
  11.     LD    A,(5DH)            ; PORT A..P
  12.     CP    'A'            ; CHECK!
  13.     JR    C,.FALP
  14.     CP    'Q'
  15.     JR    NC,.FALP
  16.     LD    (PORT1),A
  17.     LD    (PORT2),A
  18.     LD    (PORT3),A
  19.     LD    (PORT4),A
  20.     DEC    A
  21.     AND    0FH
  22.     LD    (PORT),A
  23.     LD    DE,QUIT            ; set abort address
  24.     LD    C,8
  25.     CALL    50H
  26.     LD    C,33
  27.     LD    D,0FEH            ; attach to com channel 1
  28.     LD    A,(PORT)
  29.     LD    B,A
  30.     CALL    50H
  31.     INC    A            ; busy?
  32.     JR    Z,BUZI
  33.     INC    A
  34.     JR    NZ,LOCL1
  35.     LD    DE,EROR
  36.     JR    XX
  37. ;
  38. .FALP:    LD    DE,FALP
  39.     JR    XX
  40. ;
  41. BUZI:    LD    DE,BARF            ; else quit with error message
  42. XX:    LD    C,9
  43.     CALL    5
  44.     RST    0
  45. ;
  46. LOCL1:    LD    C,9
  47.     LD    DE,HOOKED        ; display success message
  48.     CALL    5
  49.     LD    C,33
  50.     LD    D,0FCH            ; set com channel 1 baud rate
  51.     LD    A,(PORT)
  52.     LD    B,A
  53.     LD    E,7            ; 1200 baud
  54.     CALL    50H
  55. ;
  56. ; I/O loop
  57. ;
  58. LOCL:    LD    C,6            ; get keyboard char if there is one
  59.     LD    E,0FFH
  60.     CALL    5
  61.     OR    A            ; got a character?
  62.     JR    NZ,ECHO            ;   yes, echo it to remote
  63. ;
  64. NOIN:    LD    C,33
  65.     LD    D,0FAH            ; com channel 1 I/O
  66.     LD    A,(PORT)
  67.     LD    B,A            ; set input-only
  68.     CALL    50H
  69.     OR    A            ; check if any input chars
  70.     JR    Z,LOCL            ;   no, get next keyboard char
  71. ..OO:    LD    B,A            ;     else display the input buffer
  72.     LD    HL,81H            ;     starting at 81h, for A chars
  73. OLP:    LD    A,(HL)
  74.     PUSH    BC
  75.     PUSH    HL
  76.     CALL    ECHO1            ; display the character
  77.     POP    HL
  78.     POP    BC
  79.     INC    HL
  80.     DJNZ    OLP
  81.     JR    LOCL
  82. ;
  83. ; echo a character to remote, read input buffer
  84. ;
  85. ECHO:    LD    C,33
  86.     LD    E,A            ; load character
  87.     LD    D,0FAH            ; com channel 1 I/O request
  88.     LD    A,(PORT)
  89.     OR    80H
  90.     LD    B,A            ; set output flag
  91.     CALL    50H
  92.     OR    A            ; got any input?
  93.     JR    NZ,..OO            ;   yes, join above loop
  94.     JR    LOCL            ;     else go for next keyboard char
  95. ;
  96. ; echo a character to the console
  97. ;
  98. ECHO1:    LD    E,A
  99.     LD    C,6
  100.     JP    5
  101. ;
  102. ; abort address - only way to exit
  103. ;
  104. QUIT:    LD    D,0FDH            ; request detach from com1
  105.     LD    A,(PORT)
  106.     LD    B,A
  107.     LD    C,33
  108.     CALL    50H
  109.     LD    C,9
  110.     LD    DE,UNHOOK        ; display message
  111.     CALL    5
  112.     RST    0
  113. ;
  114.     DSEG
  115. ;
  116. PORT:    DB    0
  117. ;
  118. BARF:    DB    0DH,0AH,0AH,7
  119.     DB    'ERROR: COM CHANNEL '
  120. PORT1:    DB    '1 IS BUSY',0DH,0AH,0AH,'$'
  121. EROR:    DB    0DH,0AH,0AH,7
  122.     DB    'ERROR: COM CHANNEL '
  123. PORT2:    DB    '1 DOES NOT EXIST',0DH,0AH,0AH,'$'
  124. HOOKED:    DB    0DH,0AH
  125.     DB    'CONNECTED TO COM CHANNEL '
  126. PORT3:    DB    '1 AT 1200 BAUD',0DH,0AH,'$'
  127. UNHOOK:    DB    0DH,0AH
  128.     DB    'DISCONNECTED FROM COM CHANNEL '
  129. PORT4:    DB    '1',0DH,0AH,0AH,'$'
  130. FALP:    DB    0DH,0AH,0AH,7
  131.     DB    'ERROR: ONLY PORTS A..P ALLOWED!',0DH,0AH,0AH,'$'
  132.     DS    40
  133. STACK    EQU    $
  134.     END
  135.