! Edit by LOMARTIRE - Place cursor home after ERASE command done ! Edit by LOMARTIRE - Fix 80 and 132 column to do TERM WIDTH n ! VT200 Screen PCL ! David M. Lomartire 16-JUN-83 INTEGER TOPMAR; INTEGER BOTMAR; COMMAND VT220; BEGIN INTEGER ATTYP; INTEGER LINE; EXTERNAL INTEGER TOPMAR; EXTERNAL INTEGER BOTMAR; STRING MODTYP; ATTYP=-1; MODTYP=""; GUIDE "attribute"; PARSE (KEYWORD (WORDS (RESET:0,BOLD:1,UNDERSCORE:4,BLINK:5, REVERSE:7,NOBOLD:22,NOUNDERSCORE:24, NOBLINK:25,NOREVERSE:27,ALL:28), DEFAULT "RESET", HELP "graphic rendition,", STDHELP):ATTYP=$VALUE; KEYWORD (WORDS (ERASE:0,REPEAT:0,NOREPEAT:0, WRAP:0,NOWRAP:0,80:0,132:0, SMOOTH:0,JUMP:0,DARK:0,LIGHT:0, SOFT_RESET:0,WINDOW:0,DEFAULTS:0), HELP "mode,", STDHELP):MODTYP=$ATOM); IF ATTYP=-1 THEN GOTO MODE; SELECT ATTYP OF BEGIN [0]:BEGIN GUIDE "to normal settings"; GOTO ATEOL; END; [28]:BEGIN GUIDE "attributes enabled"; GOTO ATEOL; END; END; GUIDE "characters"; ATEOL: PARSE EOL; SELECT ATTYP OF BEGIN [0]:DISPLAY BINARY ""; [1]:DISPLAY BINARY ""; [4]:DISPLAY BINARY ""; [5]:DISPLAY BINARY ""; [7]:DISPLAY BINARY ""; [22]:DISPLAY BINARY ""; [24]:DISPLAY BINARY ""; [25]:DISPLAY BINARY ""; [27]:DISPLAY BINARY ""; [28]:DISPLAY BINARY ""; END; EXIT; MODE: IF MODTYP="" THEN EXIT; SELECT MODTYP OF BEGIN ["REPEAT"]:BEGIN GUIDE "characters when key held down"; PARSE EOL; DISPLAY BINARY "[?8h"; EXIT; END; ["NOREPEAT"]:BEGIN GUIDE "characters when key held down"; PARSE EOL; DISPLAY BINARY "[?8l"; EXIT; END; ["WRAP"]:BEGIN GUIDE "characters past right margin"; PARSE EOL; DISPLAY BINARY "[?7h"; EXIT; END; ["NOWRAP"]:BEGIN GUIDE "characters past right margin"; PARSE EOL; DISPLAY BINARY "[?7l"; EXIT; END; ["80"]:BEGIN GUIDE "column display"; PARSE EOL; DISPLAY BINARY "[?3l"; DOCOMMAND "TERMINAL WIDTH 80"; EXIT; END; ["132"]:BEGIN GUIDE "column display"; PARSE EOL; DISPLAY BINARY "[?3h"; DOCOMMAND "TERMINAL WIDTH 132"; EXIT; END; ["SMOOTH"]:BEGIN GUIDE "scrolling"; PARSE EOL; DISPLAY BINARY "[?4h"; EXIT; END; ["JUMP"]:BEGIN GUIDE "scrolling"; PARSE EOL; DISPLAY BINARY "[?4l"; EXIT; END; ["DARK"]:BEGIN GUIDE "background, light text"; PARSE EOL; DISPLAY BINARY "[?5l"; EXIT; END; ["LIGHT"]:BEGIN GUIDE "background, dark text"; PARSE EOL; DISPLAY BINARY "[?5h"; EXIT; END; ["SOFT-RESET"]:BEGIN GUIDE "of VT220"; PARSE EOL; DISPLAY BINARY "[!p"; DISPLAY "[VT220 Soft-Reset completed]"; EXIT; END; ["DEFAULTS"]:BEGIN GUIDE "for VT220"; PARSE EOL; DISPLAY BINARY "c"; EXIT; END; ["ERASE"]:BEGIN GUIDE "current window"; PARSE EOL; IF TOPMAR=0 THEN TOPMAR=1; IF BOTMAR=0 THEN BOTMAR=24; LINE=TOPMAR; WHILE LINE<=BOTMAR DO BEGIN DISPLAY BINARY "["+$STRING(LINE)+";1H"; DISPLAY BINARY ""; LINE=LINE+1; END; DISPLAY BINARY "["+$STRING(TOPMAR)+";1H"; EXIT; END; ["WINDOW"]:BEGIN GUIDE "from line"; PARSE (NUMBER (DEFAULT "1", HELP "top margin"):TOPMAR=$VALUE); GUIDE "to line"; PARSE (NUMBER (DEFAULT "24", HELP "bottom margin"):BOTMAR=$VALUE); PARSE EOL; IF TOPMAR<1 THEN GOTO WINER; IF BOTMAR>24 THEN GOTO WINER; IF BOTMAR