! PCL definitions (collected from various sources) Synonym Halt Freeze; ! Just a -10 hacker I guess Synonym TTY Terminal; ! Ditto Synonym Log Logout; ! No, I don't want to Login again Synonym Bye Logout; ! Use Logout command Synonym Di Directory; ! Old habits... Synonym V Vdir; ! vs. VT100 Synonym Pr Print; ! Make PREserve !Synonym F Finger ! Finger Command CContinue; ! More -10ishness DoCommand "Cont Stay"; Command BLANK; Begin Parse Noise "screen"; DoCommand Original "ERUN USR0:BLA.EXE" End; !Extended VT100 Command (Snarfed from ) COMMAND VT100; BEGIN EXTERNAL PROCEDURE VT100_CHANGE; EXTERNAL STRING PROCEDURE VT100_LINE; INTEGER IDX,TOP,BOTTOM,NUM2DO,RATIO,QN,IDX2; INTEGER POWERUP,LOOPBACK,EIA,REPEAT,CHANNEL; STRING FCN,KEYWD,MESS,FIL,CHAR; PARSE NOISE "function"; PARSE KEYWORD(WORDS( 132:0, !/REE 30-Oct-80 80:0, !/REE 30-Oct-80 ANSI:0, ARROW_MODE:0, AUTOREPEAT:0, BLACK:0, CHARACTER_ATTRIBUTE:0, COLUMNS:0, DOUBLE:0, EEEEEE:0, KEYPAD_MODE:0, LED:0, LOCK:0, MUSIC:0, NO_AUTOREPEAT:0, QUACK:0, REGION:0, RESET:0, SCROLL_MODE:0, SELECT_CHARACTERS:0, SIREN:0, TESTS:0, VT52:0, WHITE:0)); LET FCN = $ATOM; SELECT FCN OF BEGIN !/REE add VT 132 and VT 80 commands to make my life easy !/REE now that I have an Advanced Video Option, make line be 24 not 14 ["132"]: begin parse noise "columns wide and"; parse number(help "Lines on the screen",default "24"); let num2do = $value; parse eol; DoCommand "vt col 132"; DoCommand "ter pag " + $string(num2do); DoCommand "vt white"; end; ["80"]: begin parse noise "columns wide and"; parse number(help "Lines on the screen",default "24"); let num2do = $value; parse eol; DoCommand "vt col 80"; DoCommand "ter pag " + $string(num2do); DoCommand "vt black"; end; !end of my additions ["BLACK"]: BEGIN PARSE NOISE "background"; PARSE EOL; CALL VT100_CHANGE ("[?5l");EXIT; END; ["TESTS"]: BEGIN LET POWERUP = 0; !default to no tests LET LOOPBACK = 0; LET EIA = 0; LET REPEAT = 0; GUIDE "which ones?"; TLOOP:PARSE ( EOL; KEYWORD(WORDS ( EIA_MODEM_CONTROL:0, LOOP_BACK:0, POWER_UP:0, REPEAT:0 )):BEGIN SELECT $ATOM OF BEGIN ["REPEAT"]:BEGIN GUIDE "until power off or failure"; LET REPEAT = 8;END; ["EIA-MODEM-CONTROL"]:BEGIN GUIDE "loop back connector required"; LET EIA = 4;END; ["LOOP-BACK"]:BEGIN GUIDE "loop back connector required"; LET LOOPBACK = 2;END; ["POWER-UP"]:LET POWERUP = 1; END; GOTO TLOOP;END;); CALL VT100_CHANGE("[2;" + $STRING(EIA+POWERUP+LOOPBACK+REPEAT) + "y"); EXIT; END; ["QUACK"]: BEGIN LET QN = 1000000; !default to many many quacks LET RATIO = 30; !one that seems to produce good quack LET CHAR = " "; !linefeed seems to be a good character LOOP:PARSE ( EOL; SWITCH(WORDS ( CHARACTER::0, QUANTITY::0, RATIO::0 )):BEGIN SELECT $ATOM[1:$LENGTH($ATOM)-1] OF BEGIN ["CHARACTER"]: PARSE ( QUOTEDSTRING(HELP "quoted string of characters to use between bells"):LET CHAR = $ATOM; NUMBER(HELP "ASCII value of character to use between bells", RADIX 8):LET CHAR = $CVITC($VALUE);); ["QUANTITY"]: BEGIN PARSE NUMBER(HELP "number of quacks");LET QN = $VALUE;END; ["RATIO"]: BEGIN PARSE NUMBER(HELP "number of characters between bells"); LET RATIO = $VALUE;END; END; GOTO LOOP;END;); DOCOMMAND "VT100 SCROLL JUMP";DISPLAY "[VT100 SCROLL JUMP being set]"; LET IDX2 = 0; WHILE IDX2 LSS QN DO BEGIN DISPLAY BINARY ""; LET IDX = 0; WHILE IDX LSS RATIO DO BEGIN DISPLAY BINARY CHAR; LET IDX = IDX + 1; END; LET IDX2 = IDX2 + 1; END; END; ["SELECT-CHARACTERS"]: BEGIN PARSE NOISE "set"; PARSE KEYWORD (WORDS( ASCII:66, GRAPHICS:48, ROM1:49, ROM2:50, UNITED_KINGDOM:65)); LET IDX = $VALUE; PARSE EOL; CALL VT100_CHANGE ("(" + $CVITC(IDX) + ")" + $CVITC(IDX)); !Make both CTRL/N and CTRL/O sets be the specified one for now! EXIT; END; ["CHARACTER-ATTRIBUTE"]: BEGIN PARSE NOISE "is"; PARSE KEYWORD (WORDS( BLINK:5, BOLD:1, NONE:0, REVERSE_VIDEO:7, UNDERSCORE:4)); LET IDX = $VALUE; !Get correct selective parameter PARSE NOISE "for subsequent typeout"; PARSE EOL; CALL VT100_CHANGE ("[" + $STRING(IDX) + "m"); EXIT; END; ["EEEEEE"]: BEGIN PARSE NOISE "eeeeee!"; PARSE EOL; CALL VT100_CHANGE ("#8"); EXIT; END; ["MUSIC"]: BEGIN PARSE NOISE "mode"; PARSE EOL; DOCOMMAND "VT100 AUTOREPEAT"; CALL VT100_CHANGE (""); DISPLAY "Requires keyclick to be on -- hold a key down to get a note!"; DISPLAY "Use VT100 RESET to turn off music mode."; EXIT; END; ["SIREN"]: BEGIN PARSE EOL; CALL VT100_CHANGE (""); DISPLAY "Use VT100 RESET to stop this cacophony!"; EXIT; END; ["LED"]: BEGIN PARSE KEYWORD (WORDS( CYCLE:0, L1_ON:1, L2_ON:2, L3_ON:3, L4_ON:4, OFF:0)); LET IDX = $VALUE; LET FCN = $ATOM; PARSE EOL; SELECT FCN OF BEGIN ["CYCLE"]: BEGIN LET IDX = 0; UNTIL 2+2=5 DO BEGIN DOCOMMAND "VT100 LED OFF"; DOCOMMAND "VT100 LED L" + $STRING(1+IDX-IDX/4*4); LET IDX = IDX + 1;END; END; [OTHERWISE]:CALL VT100_CHANGE("[" + $STRING(IDX) + "q"); END; EXIT; END; ["RESET"]: BEGIN PARSE NOISE "to default settings"; PARSE EOL; CALL VT100_CHANGE ("c"); EXIT; END; ["WHITE"]: BEGIN PARSE NOISE "background"; PARSE EOL; CALL VT100_CHANGE ("[?5h");EXIT; END; ["NO-AUTOREPEAT"]: BEGIN PARSE NOISE "when keys held down"; PARSE EOL; CALL VT100_CHANGE ("[?8l");EXIT; END; ["LOCK"]: BEGIN PARSE NOISE "keyboard"; PARSE EOL; CALL VT100_CHANGE (""); EXIT; END; ["AUTOREPEAT"]: BEGIN PARSE NOISE "when keys held down"; PARSE EOL; CALL VT100_CHANGE ("[?8h");EXIT; END; ["COLUMNS"]: BEGIN PARSE NOISE "wide"; PARSE KEYWORD (WORDS ( 132:0, 80:0)); LET KEYWD = $ATOM; PARSE EOL; DOCOMMAND "TER WID " + KEYWD; SELECT KEYWD OF BEGIN ["132"]:CALL VT100_CHANGE ("[?3h"); ["80"]:CALL VT100_CHANGE ("[?3l"); END; EXIT; END; ["DOUBLE"]: BEGIN PARSE KEYWORD (WORDS ( HEIGHT:0, WIDTH:1)); LET KEYWD = $ATOM;SELECT KEYWD OF BEGIN ["HEIGHT"]: BEGIN PARSE NOISE "file"; PARSE FILE( HELP "file to be displayed in big letters", INPUT); LET FIL = $FILEL; PARSE EOL; LET IDX = 24; LET CHANNEL = $OPEN(FIL,0); IF CHANNEL = 0 THEN ABORT $LASTERROR; WHILE $EOF(CHANNEL) EQL 0 DO BEGIN LET MESS = $READ(CHANNEL); IF IDX = 24 THEN LET IDX = 0; DISPLAY BINARY VT100_LINE(IDX+1) + "#3"; DISPLAY NORETURN $CR+MESS; DISPLAY BINARY VT100_LINE(IDX+2) + "#4"; DISPLAY NORETURN $CR+MESS; LET IDX = IDX + 2; END; END; ["WIDTH"]: BEGIN PARSE EOL; LET NUM2DO = 24; WHILE NUM2DO > 0 DO BEGIN CALL VT100_CHANGE ("[" + $STRING (NUM2DO) + ";0H#6"); LET NUM2DO = NUM2DO - 1; END; CALL VT100_CHANGE (""); END; END; EXIT; END; ["KEYPAD-MODE"]: BEGIN PARSE KEYWORD (WORDS ( APPLICATION:0, NUMERIC:1)); LET KEYWD = $ATOM; PARSE EOL; SELECT KEYWD OF BEGIN ["APLICATION"]:CALL VT100_CHANGE ("="); ["NUMERIC"]:CALL VT100_CHANGE (">"); END; EXIT; END; ["ARROW-MODE"]: BEGIN PARSE KEYWORD (WORDS ( APPLICATION:0, CURSOR:1)); LET KEYWD = $ATOM; PARSE EOL; SELECT KEYWD OF BEGIN ["APPLICATION"]:CALL VT100_CHANGE ("[?1h"); ["CURSOR"]:CALL VT100_CHANGE ("[?1l"); END; EXIT; END; ["SCROLL-MODE"]: BEGIN PARSE NOISE "style"; PARSE KEYWORD (WORDS ( JUMP:0, SMOOTH:1)); LET KEYWD = $ATOM; PARSE EOL; SELECT KEYWD OF BEGIN ["JUMP"]:CALL VT100_CHANGE ("[?4l"); ["SMOOTH"]:CALL VT100_CHANGE ("[?4h"); END; EXIT; END; ["REGION"]: BEGIN GUIDE "from line"; PARSE NUMBER (HELP "Line number of top of region",DEFAULT "1"); LET TOP = $VALUE; GUIDE "through line"; PARSE NUMBER (HELP "Line number of bottom of region",DEFAULT "24"); LET BOTTOM = $VALUE; PARSE EOL; DOCOMMAND "TER LEN " + $STRING (BOTTOM-TOP+1); LET IDX = TOP; WHILE IDX LEQ BOTTOM DO BEGIN !Clear new region CALL VT100_CHANGE ("[" + $STRING(IDX) + ";0H"); LET IDX = IDX + 1; END; CALL VT100_CHANGE ("[" + $STRING(TOP) + ";" + $STRING(BOTTOM) + "r"); CALL VT100_CHANGE ("[" + $STRING(TOP) + ";0H"); EXIT; END; ["ANSI"]: BEGIN GUIDE "mode"; PARSE EOL; DISPLAY BINARY "<"; DOCOMMAND "TERMINAL VT100"; EXIT; END; ["VT52"]: BEGIN GUIDE "mode"; PARSE EOL; DISPLAY BINARY "[?2l"; DOCOMMAND "TERMINAL VT52"; EXIT; END; END; END; PROCEDURE VT100_CHANGE (STRING STR); BEGIN EXTERNAL STRING PROCEDURE VT100_ANSIIZE; ! DISPLAY STR; DISPLAY BINARY VT100_ANSIIZE(STR); END; !VT100_LINE(N) returns the string necessary to put the VT100 cursor at line N. STRING PROCEDURE VT100_LINE(INTEGER N); BEGIN STRING X; EXTERNAL STRING PROCEDURE VT100_ANSIIZE; LET X = VT100_ANSIIZE("[" + $STRING(N) + ";0H"); RETURN X; END; !VT100_ANSIIZE puts appropriate escape codes on strings so that they work !regardless of whether VT100 is in ANSI or VT52 mode. STRING PROCEDURE VT100_ANSIIZE(STRING STR); BEGIN STRING RESULT;IF $TTYPE = 15 THEN LET RESULT = "<"; LET RESULT = RESULT + STR;IF $TTYPE = 15 THEN RESULT = RESULT + "[?2l"; RETURN RESULT; END; ! SIMPLE DSR COMMAND FROM RANDY STRING DSR_FILE; COMMAND DSR; BEGIN EXTERNAL STRING DSR_FILE; INTEGER I; GUIDE "format file"; IF DSR_FILE EQL "" THEN BEGIN PARSE FILE(INPUT, DEFAULT_EXT "RNO", DEFAULT_GEN 0); PARSE EOL; DSR_FILE = $FILES END ELSE BEGIN PARSE (FILE(INPUT, DEFAULT DSR_FILE, DEFAULT_EXT "RNO", DEFAULT_GEN 0): PARSE EOL; EOL); DSR_FILE = $FILES END; DOCOMMAND "SYS:RUNOFF.EXE /LOG " + DSR_FILE; END; ! local modes: ! ! mode:bliss ! ! auto fill mode:1 ! ! fill column:75 ! ! end: !