home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / comm / bnu202.zip / FTTY.ASM < prev    next >
Assembly Source File  |  1992-10-15  |  3KB  |  210 lines

  1. ;
  2. ; Glass TTY via FOSSIL
  3. ;
  4.  
  5. COM equ 1
  6.  
  7. ; Allows TASM to assemble this file
  8.  
  9. ifdef ??version
  10.     masm51
  11.     quirks
  12. endif
  13.  
  14. include keyasm.h
  15.  
  16. _code segment byte
  17.   if COM
  18.     org    0100H
  19.   endif
  20.     assume cs:_code
  21. _start:
  22.   if COM
  23.     assume ds:_code, es:_code
  24.   else
  25.     mov ax,cs
  26.     mov ds,ax
  27.     assume ds:_code
  28.   endif
  29.     jmp _begin
  30.  
  31. port    dw 0
  32. isansi    dw 0
  33.  
  34. copr    db 'Glass-TTY Terminal Program via FOSSIL driver V 1.00',13,10
  35.     db 'Copyright (C) 1992  David Nugent & Unique Computing Pty Ltd',13,10
  36.     db 'Press Alt-F10 for assistance',13,10
  37. _copr    equ $
  38. abrt    db 'Abort - no FOSSIL driver loaded!',13,10,'$'
  39. help    db 27,'[2J',27,'[0;0H',27,'[47;30m'
  40. shelp    db 13
  41.     db ' - Keys Help --------------------- ',13,10
  42.     db '|                                 |',13,10
  43.     db '|  Alt-X     Exit Terminal        |',13,10
  44.     db '|  Alt-C     Clear screen         |',13,10
  45.     db '|  Alt-F10   Display Help Screen  |',13,10
  46.     db '|                                 |',13,10
  47.     db ' --------------------------------- ',13,10
  48. _shelp    equ $
  49.     db 27,'[0m'
  50. _help    equ $
  51. a_cls    db 27,'[2J',0
  52. a_ncol    db 27,'[0m',0
  53. a_test    db 27,'[1;80H',0
  54. __test    db 8,8,8,8,8,8,8,0
  55. a_warn    db 7, 'WARNING: No ANSI driver present!',13,10, 0
  56. _begin:
  57.     mov ah,04H            ; Init FOSSIL
  58.     mov dx,port
  59.     int 014H
  60.     cmp AX,01954H
  61.     je @F
  62.     mov dx,offset abrt
  63.     mov ah,9
  64.     int 021H
  65.     mov al,1
  66.     jmp _quit
  67.  
  68. @@:
  69.     mov DX,offset a_test
  70.     call ansi
  71.     mov AH,12H
  72.     int 014H
  73.     cmp DX,0079
  74.     je @F
  75.     mov DX,offset __test
  76.     call ansi
  77.     jmp SHORT @C
  78. @@:
  79.     mov isansi,1
  80.     mov DX,offset a_cls
  81.     call ansi
  82.     mov DX,offset a_ncol
  83.     call ansi
  84. @C:
  85.     mov DX,offset copr
  86.     mov CX,_copr - copr
  87.     call strdisp
  88.     cmp isansi,1
  89.     je _main
  90.     mov DX,offset a_warn
  91.     call ansi
  92. _main:
  93.     mov ah,0cH            ; Peek character from modem
  94.     mov dx,port
  95.     int 014H
  96.     cmp ax,-1
  97.     je @F
  98.     mov ah,02H
  99.     mov dx,port
  100.     int 014H
  101.     mov ah,13H
  102.     int 014H
  103. @@:
  104.     mov ah,0DH            ; Test keyboard for character
  105.     int 014H
  106.     cmp ax,-1
  107.     je _main
  108.     mov ah,0eH
  109.     int 014H
  110.     or al,al
  111.     jne _ontty
  112.     cmp ax,altx
  113.     je _exit
  114.     cmp ax,altf10
  115.     je _dhelp
  116.     cmp ax,altc
  117.     je _cls
  118.     jmp _main
  119. _cls:
  120.     cmp isansi,0
  121.     jne @R
  122.     mov CX,25
  123.     mov AX,130AH
  124. @@:
  125.     push AX
  126.     int 014H
  127.     pop AX
  128.     loop @B
  129.     mov AX,130DH
  130.     int 014H
  131.     jmp _main
  132. @R:
  133.     mov dx,offset a_cls
  134.     call ansi
  135.     jmp _main
  136. _dhelp:
  137.     cmp isansi,0
  138.     jne @F
  139.     mov dx,offset shelp
  140.     mov cx,_shelp - shelp
  141.     jmp SHORT @I
  142. @@:
  143.     mov dx,offset help
  144.     mov cx,_help - help
  145. @I:
  146.     call strdisp
  147.     jmp _main
  148.  
  149. _ontty:
  150.     mov ah,01H
  151.     mov dx,port
  152.     int 014H
  153.     jmp _main
  154.  
  155. _exit:
  156.     mov ah,05H
  157.     mov dx,port
  158.     int 014H
  159.     xor al,al
  160. _quit:
  161.     mov AH,04cH
  162.     int 021H
  163.  
  164. ;
  165. ; Display an ansi sequence
  166. ;
  167.  
  168. ansi:
  169.     push si
  170.     push ax
  171.     push cx
  172.     mov si,dx
  173.     xor cx,cx
  174. @@:
  175.     lodsb
  176.     or al,al
  177.     je @F
  178.     inc cx
  179.     jmp @B
  180. @@:
  181.     call strdisp
  182.     pop cx
  183.     pop ax
  184.     pop cx
  185.     ret
  186.  
  187. ;
  188. ; Display a string to screen via FOSSIL
  189. ;
  190. strdisp:
  191.     push si
  192.     push dx
  193.     push ax
  194.     push cx
  195.     mov si,dx
  196. @@:
  197.     lodsb
  198.     mov ah,13H
  199.     int 014H
  200.     loop @B
  201.     pop cx
  202.     pop ax
  203.     pop dx
  204.     pop si
  205.     retn
  206.  
  207. _code ends
  208.  
  209. end _start
  210.