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 / SIMTEL / CPMUG / CPMUG051.ARK / TERMSUP.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  3KB  |  220 lines

  1. SREV EQU 20H ;    06/14/79  R. CURTISS    DERIVED FROM NORDATA1
  2. ;
  3. ;
  4. ; OPEN FILE FOR READ OR WRITE
  5. ;
  6. OPENF:    PUSH    B    ; SAVE ACCESS CODE
  7.     MVI    C,10
  8.     LXI    D,CBUFF
  9.     CALL    BDOS    ; GET FILE NAME FROM CONSOLE
  10.     POP    B
  11.  
  12.     LXI    H,CBUFF+1  ; CHAR COUNT POINTER
  13.     MOV    E,M
  14.     MVI    D,0
  15.     DAD    D
  16.     INX    H
  17.     MVI    M,0    ; MAKE SURE DELIMITER AT END OF NAME
  18.  
  19.     LXI    H,FTAB
  20.     LXI    D,CBUFF+2
  21.     CALL    DOPEN
  22.     RET
  23. ;
  24. ;
  25. ;
  26. CRLF:    MVI    E,0DH
  27.     CALL    CO
  28.     MVI    E,0AH
  29.     CALL    CO
  30.     RET
  31. ;
  32. ;
  33. ;
  34. BLK:    MVI    E,' '
  35.     JMP    CO
  36. ;
  37. ;
  38. BDOS    EQU    0005H    ; BDOS ENTRY POINT
  39. KBD    EQU    02H    ; KEYBOARD PORT
  40. SIO    EQU    50H    ; 2SIO BOARD ORIGIN
  41. ;
  42. ;
  43. ; OUTPUT TO CONSOLE
  44. ;
  45. CO:    MVI    C,2
  46.     CALL    BDOS
  47.     RET
  48. ;
  49. ;
  50. ; OUTPUT (E) TO MODEM
  51. ;
  52. MO:    IN    SIO
  53.     ANI    2    ; TRANSMIT READY BIT
  54.     JZ    MO
  55.  
  56.     MOV    A,E
  57.     OUT    SIO+1
  58.     RET
  59. ;
  60. ;
  61. ; CHECK RECEIVE STATUS  1=READY  0=NOT READY
  62. ;
  63. MISTAT:    IN    SIO
  64.     ANI    1    ; RECEIVER READY STATUS BIT
  65.     RET
  66. ;
  67. ;
  68. ; CHECK SEND READY STATUS
  69. ;
  70. MOSTAT:    IN    SIO
  71.     ANI    2
  72.     RET
  73. ;
  74. ;
  75. ; CHECK CONSOLE READY STATUS  1=READY  0=NOT READY
  76. ;
  77. CISTAT:    IN    KBD
  78.     ANI    2
  79.     RZ
  80.  
  81.     ORI    0FFH
  82.     RET
  83. ;
  84. ;
  85. ; GET DATA FROM MODEM
  86. ;
  87. MI:    IN    SIO    ; GET STATUS
  88.     ANI    1
  89.     JZ    MI
  90.  
  91.     IN    SIO+1
  92.     RET
  93. ;
  94. ;
  95. ; GET DATA FROM CONSOLE
  96. ;
  97. CIE:    CALL    CI
  98.     MOV    E,A
  99.     PUSH    PSW
  100.     CALL    CO    ; ECHO INPUT
  101.     POP    PSW
  102.     RET
  103.  
  104. CI:    CALL    CISTAT    ; GET KEYBOARD STATUS
  105.     JZ    CI    ; JUMP IF NO DATA READY
  106.  
  107.     IN    KBD+1    ; GET KBD DATA
  108.     ANI    7FH
  109.     PUSH    PSW
  110.     LDA    ULTOG    ; UPPER/LOWER CASE TOGGLE
  111.     ORA    A
  112.     JNZ    CIX    ; JUMP IF CASE SWITCH REQUIRED
  113.  
  114.     POP    PSW
  115.     RET
  116.  
  117. CIX:    POP    PSW
  118.     CPI    'A'
  119.     RC        ; RETURN IF < 'A'
  120.     CPI    'Z'+1
  121.     JC    KINV    ; JUMP IF IN RANGE 'A'-'Z'
  122.  
  123.     CPI    'A'+20H
  124.     RC        ; RETURN IF < LOWER CASE 'A'
  125.     CPI    'Z'+21H
  126.     RNC        ; RETURN IF > LOWER CASE 'Z'
  127.  
  128. KINV:    XRI    20H    ; FLIP CASE BIT
  129.     RET
  130. ;
  131. ;
  132. ; CONTROL BYTE FOR SIO
  133. ;  X XX XXX XX
  134. ;        01   /16
  135. ;        11   MASTER RESET
  136. ;    100      8 BITS, 2 STOP, NO PARITY
  137. ;    00         /RTS LOW, XMIT INT. DISABLE
  138. ;    11         /RTS HIGH, BREAK LEVEL TRANSMIT
  139. ;  0         RCV. INTERRUPT DISABLE
  140. ;
  141. ;
  142. ; TRANSMIT BREAK LEVEL
  143. ;
  144. BRK:    MVI    A,71H
  145.     OUT    SIO
  146.     RET
  147. ;
  148. ;
  149. ; INITIALIZE SIO FOR NORMAL OPERATION
  150. ;
  151. SMODE:    MVI    A,03H
  152.     OUT    SIO    ; RESET
  153.  
  154.     MVI    A,11H    ; NORMAL OPERATION
  155.     OUT    SIO
  156.     RET
  157. ;
  158. ;
  159. ; DELAY 100*(A) MILLESECONDS
  160. ;
  161. DELAY:    LXI    B,29B4H    ; Z80 VALUE
  162.  
  163. D1:    DCX    B
  164.     INR    B
  165.     DCR    B
  166.     JNZ    D1
  167.  
  168.     DCR    A
  169.     JNZ    DELAY
  170.  
  171.     RET
  172. ;
  173. ;
  174. ; TYPE MESSAGE WITH TABS EXPANDED
  175. ;
  176. MSG:    MOV    A,M    ; GET NEXT CHARACTER OF MESSAGE
  177.     ORA    A
  178.     RZ        ; RETURN IF END OF MESSAGE (NULL)
  179.  
  180.     PUSH    H
  181.     MOV    E,A
  182.     CALL    MSG1
  183.     POP    H
  184.     INX    H
  185.     JMP    MSG
  186.  
  187. MSG1:    LDA    TAB    ; TAB COLUMN COUNTER
  188.     DCR    A
  189.     ANI    7
  190.     STA    TAB
  191.     MOV    B,A
  192.  
  193.     MOV    A,E
  194.     CPI    'I'-40H
  195.     JZ    MSG3    ; JUMP IF TAB
  196.  
  197.     CPI    0DH
  198.     JNZ    MSG2    ; JUMP IF NOT CARRIAGE RETURN
  199.  
  200.     CALL    CO    ; OUTPUT CARRIAGE RETURN
  201.     JMP    MSG5
  202.  
  203. MSG2:    CALL    CO    ; OUTPUT CHARACTER
  204.     RET
  205.  
  206. MSG3:    INR    B    ; TAB COUNT
  207.  
  208. MSG4:    PUSH    B
  209.     MVI    E,' '
  210.     CALL    CO
  211.     POP    B
  212.     DCR    B
  213.     JNZ    MSG4
  214.  
  215. MSG5:    XRA    A
  216.     STA    TAB    ; RESET TAB COLUMN COUNT
  217.     RET
  218. ;
  219. ;
  220.