home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / source / wyse50.seq < prev    next >
Text File  |  1988-02-08  |  3KB  |  83 lines

  1. \ WYSE50.BLK    A terminal emulator for the WYSE 50     by Tom Zimmer
  2.  
  3. comment:
  4.  
  5.   A terminal driver for the WYSE model 50 terminal
  6.  
  7.   This allows wyse escape sequences to be EMITed, and they will be
  8. interpreted properly.  In a limited manner, of course.  Only those
  9. implimented will be performed.
  10.  
  11. comment;
  12.  
  13. VARIABLE ESCFLG         VARIABLE CVAL           VARIABLE RVAL
  14. VARIABLE ACCUM          VARIABLE ATFLG
  15.  
  16. : ?AT           ( C1 --- )
  17.                 DUP ASCII a = ESCFLG @ AND
  18.                 IF      DROP ACCUM OFF ATFLG ON R> DROP
  19.                 THEN    ;
  20.  
  21. : ?#            ( C1 --- )
  22.                 DUP ASCII 9 <= OVER ASCII 0 >= AND ESCFLG @ AND
  23.                 IF      48 - ACCUM @ 10 * + ACCUM ! R> DROP
  24.                 THEN    ;
  25.  
  26. : ?ROW          ( C1 --- )
  27.                 DUP ASCII R = ESCFLG @ AND ATFLG @ AND
  28.                 IF      DROP ACCUM @ RVAL ! ACCUM OFF R> DROP
  29.                 THEN    ;
  30.  
  31. : ?COL          ( C1 --- )
  32.                 DUP ASCII C = ESCFLG @ AND
  33.                 IF      DROP ACCUM @ CVAL ! ACCUM OFF
  34.                         CVAL @ 1- RVAL @ 1- IBM-AT
  35.                         #LINE OFF #OUT OFF ATFLG OFF
  36.                         ESCFLG OFF R> DROP
  37.                 THEN    ;
  38.  
  39. : ?-LINE        ( C1 --- )
  40.                 DUP ASCII R = ESCFLG @ AND
  41.                 IF      DROP ESCFLG OFF IBM--LINE R> DROP THEN ;
  42.  
  43. \ NOT supporting BLOT on this system for now. ************
  44.  
  45. \ : ?BLOT         ( C1 --- )
  46. \                 DUP ASCII t = ESCFLG @ AND
  47. \                 IF      DROP ESCFLG OFF 0 IBM-BLOT R> DROP
  48. \                 THEN    ;
  49.  
  50. : ?EMIT         ( C1 --- )
  51.                 ESCFLG @ 0=
  52.                 IF      (EMIT)  R> DROP THEN ;
  53.  
  54. : <W50CR>       ( --- )
  55.                 13 (CONSOLE) 10 (CONSOLE)
  56.                 #OUT OFF
  57.                 #LINE  DUP @ 1+ 24 MIN SWAP ! ;
  58.  
  59. DEFER W50CR     ' <W50CR> IS W50CR
  60.  
  61. : ?DOCR         ( C1 --- )
  62.                         \ Ignore Line feed
  63.                 DUP CONTROL J = IF DROP       R> DROP EXIT THEN
  64.                         \ pass Carraige Return to CR
  65.                 DUP CONTROL M = IF DROP W50CR R> DROP    THEN ;
  66.  
  67. : ?ESC          ( C1 --- )
  68.                 DUP 27 = IF DROP ESCFLG ON R> DROP THEN ;
  69.  
  70. : ?DARK         ( C1 --- )
  71.                 DUP CONTROL Z = IF DROP IBM-DARK
  72.                 #LINE OFF #OUT OFF 0 0 IBM-AT R> DROP THEN ;
  73.  
  74. : W50-IBM.EMIT  ( C1 --- )
  75.                 ?ESC    ?DARK   ?DOCR   ?EMIT   ?AT     ?ROW
  76.                 ?COL    ?#    ( ?BLOT ) ?-LINE
  77.                 ESCFLG OFF ;
  78.  
  79. : W50-IBM       ['] W50-IBM.EMIT IS EMIT
  80.                 ['] (TYPE)       IS TYPE ;
  81.  
  82.  
  83.