IDENT CUESHEL,FWA
ABS
ENTRY CDSHELL
ENTRY RMSHELL
ENTRY RFL=
SYSCOM B1
TITLE CUESHEL - CUSTOMIZED USER ENVIRONMENT VALIDATOR.
*COMMENT CUESHEL - CUSTOMIZED USER VALIDATOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
RMSHELL SPACE 4,10
CUESHEL SPACE 4,10
*** CUESHEL - CUSTOMIZED USER ENVIRONMENT VALIDATOR.
*
* M. D. LEMBCKE. 81/10/30.
* P. A. GILLESBY. 84/10/15.
SPACE 4,10
*** CUESHEL - CUSTOMIZED USER ENVIRONMENT VALIDATOR.
*
* *CUESHEL* IS DESIGNED TO ACCOMODATE MULTIPLE SHELL PROGRAMS,
* EACH SPECIFIED WITH A SEPARATE ENTRY POINT.
*
* FLAG = 1 IF RMSHELL
* FLAG = 2 IF CDSHELL
*
* WHEN A COMMAND IS DETECTED, THE COMMAND WILL BE MATCHED
* AGAINST A VALIDATED LIST. IF A MATCH IS FOUND,
* THE VALIDATION BITS WILL BE CHECKED TO ENSURE THE COMMAND
* IS VALID FOR THE SHELL PROGRAM SPECIFIED. IF VALID,
* THE COMMAND WILL BE ISSUED TO THE SYSTEM VIA *EXCST*
* (WITH A *$* PREFIX TO FORCE SYSTEM LIBRARY LOAD). IF
* NO MATCH IS FOUND BUT *CDSHELL* WAS SELECTED, THE
* COMMAND WILL STILL BE ISSUED TO THE SYSTEM.
* HOWEVER, IF NO MATCH IS FOUND AND *RMSHELL* WAS
* SELECTED, AN ERROR MESSAGE WILL BE ISSUED TO THE
* DAYFILE.
*
* THERE ARE FOUR ERRORS THAT WILL CAUSE THE PROGRAM TO
* TERMINATE. THE FIRST IS WHEN THE STATEMENT EXCEEDS SEVEN
* CHARACTERS. SECOND IS NO MATCH; WHERE THE USER IS
* UNAUTHORIZED TO USE THE STATEMENT AND/OR THE STATEMENT WAS
* NOT RECOGNIZED. THE THIRD IS WHEN THE COMMAND EXCEEDS
* 80 CHARACTERS AND THE FOURTH IS WHEN A TERMINATING
* DELIMITER IS NOT FOUND WITHIN THE COMMAND PARAMETERS.
*
*
* NOTES USB (LINE FOLLOWING CUE1) RETURNS THE LWA OF THE
* BUFFER IN REGISTER B7. THIS VALUE IS NEEDED WHEN
* REPACKING THE COMMAND. ANY MODIFICATIONS SHOULD
* AVOID USING B7.
SPACE 4,10
*** DAYFILE ERROR MESSAGES.
*
* * COMMAND KEYWORD TOO LONG.* THIS MESSAGE WILL BE
* ISSUED WHEN THE COMMAND EXCEEDS SEVEN CHARACTERS.
*
* * INCORRECT COMMAND.* THIS MESSAGE IS ISSUED IF ONE OF THE
* *CUESHEL* ENTRY POINTS IS EXECUTED AS A COMMAND RATHER THAN
* AS A SHELL PROCESSOR.
*
* * INPUT LINE TOO LONG.* THIS MESSAGE WILL BE ISSUED TO THE
* DAYFILE WHEN THE COMMAND IS GREATER THAN 80 CHARACTERS.
*
* * NO MATCHING DELIMITER.* THIS MESSAGE WILL BE
* ISSUED WHENEVER A DOLLAR SIGN ($) APPEARS AS A
* DELIMITER AND AN ENDING DELIMITER IS NOT FOUND.
*
* * UNAUTHORIZED COMMAND.* THE USER IS AUTHORIZED TO EXECUTE
* ONLY A LIMITED SUBSET OF COMMANDS. THIS MESSAGE IS ISSUED
* WHENEVER THE COMMAND IS LESS THAN EIGHT CHARACTERS AND DOES
* NOT MATCH AGAINST THE VALIDATED LIST (*RMSHELL*), OR MATCHES
* AN ENTRY IN THE LIST WHICH IS NOT AUTHORIZED FOR THE ENTRY
* POINT IN USE (*CDSHELL* OR *RMSHELL*).
SPACE 4,10
*** COMMON DECKS.
*CALL COMCCMD
*CALL COMCMAC
TITLE MAIN PROGRAM.
ORG 111B
FWA BSS 0
CDSHELL SX7 2 SET (X7) TO 2 IF *CDSHELL* PROGRAM
EQ CUESHEL ENTER MAIN PROGRAM
RMSHELL SX7 1 SET (X7) TO 1 IF *RMSHELL* PROGRAM
* EQ CUESHEL ENTER MAIN PROGRAM
SPACE 4,10
CUESHEL SA7 SHELFLG SAVE VALUE
SB1 1
GETSHC USBB CHECK SHELL CONTROLS
SA1 USBB
LX1 59-11
NG X1,CUE0 IF EXECUTING AS A SHELL
MESSAGE CUED,0,R * INCORRECT COMMAND.*
ABORT
CUE0 SA2 CCDR FWA OF PACKED DATA = RA + 70
NZ X2,CUE1 IF INPUT PRESENT
RJ GII GET INTERACTIVE INPUT
EQ B7,B1,CUE22 IF NO INPUT
* UNPACK INPUT STRING INTO BUFFER. THEN CHECK FIRST NON-BLANK
* CHARACTER. IF IT IS A $, REPLACE IT WITH A BLANK.
CUE1 SB2 CCDR
RJ USB UNPACKS 1 CHARACTER/WORD RIGHT JUSTIFIED
SB3 -1
SB5 B7-USBB+1 MAXIMUM CHARACTER INDEX
CUE2 SB3 B3+1
SA2 USBB+B3
GE B3,B5,CUE22 IF INPUT IS ALL BLANKS
SX3 X2-1R
ZR X3,CUE2 IF A BLANK
SX3 X2-1R$
SB3 B3-1
NZ X3,CUE4 IF NOT *$*
SX6 1R
SA6 A2+ REPLACE *$* WITH BLANK
* CHECK FOR EXISTING TERMINATOR TO DETERMINE IF ONE
* MUST BE ADDED.
CUE4 SB3 B3+1
SA2 USBB+B3 GET NEXT CHARACTER
GE B3,B5,CUE5 IF AT END OF COMMAND
SX3 X2-1R)
ZR X3,CUE8 IF TERMINATOR FOUND
SX3 X2-1R.
ZR X3,CUE8 IF TERMINATOR FOUND
SX3 X2-1R$
ZR X3,CUE6 IF *$* DELIMITER FOUND
EQ CUE4 CHECK NEXT CHARACTER
CUE5 SA5 RI
ZR X5,CUE8 IF INPUT RECEIVED FROM SYSTEM
SX6 1R. APPEND *.* TO INTERACTIVE INPUT
SB7 B7+B1
SA6 B7
EQ CUE8 PACK COMMAND
* LOOK FOR MATCHING *$*.
CUE6 SB3 B3+1
SA2 USBB+B3 CHECK NEXT CHARACTER
LE B3,B5,CUE7 IF NOT END OF COMMAND
SX7 CUEC *NO MATCHING DELIMITER.*
SA5 RI
ZR X5,CUE15 IF INPUT RECEIVED FROM SYSTEM
SX6 1R. APPEND *.* TO INTERACTIVE INPUT
SB7 B7+B1
SA6 B7
EQ CUE15 SET ERROR AND COMPLETE
CUE7 SX3 X2-1R$
ZR X3,CUE4 IF MATCHING DELIMITER FOUND
EQ CUE6 CHECK NEXT CHARACTER
* PACK COMMAND TOGETHER.
CUE8 SB6 B0+ SET NO ERROR
SA2 CTRLC
BX3 X3-X3
SB3 0 SET CHARACTER COUNTER
SB4 7 SET MAXIMUM CHARACTERS PER COMMAND
CUE9 SA2 A2+1
SX6 X2-1R
ZR X6,CUE9 IF CHARACTER = BLANK
SX6 X2-1R+
PL X6,CUE10 IF SEPARATOR FOUND
SB3 B3+1
SB4 B4-1 DECREASE CHARACTER COUNT
SX7 CUEA *COMMAND KEYWORD TOO LONG.*
NG B4,CUE15 IF MAXIMUM LENGTH EXCEEDED
LX3 6
BX3 X3+X2 APPEND CHARACTER TO COMMAND
EQ CUE9 GET NEXT CHARACTER
CUE10 SB4 10 LEFT JUSTIFY CONTROL STATEMENT
SX2 6
SX4 B4-B3 CHARACTER POSITIONS TO SHIFT
IX4 X4*X2 BITS TO SHIFT
SB4 X4
LX6 X3,B4
SA6 PCS
* DO A BINARY TREE SEARCH TO FIND STATEMENT WITHIN THE LIST.
SX3 CMDSL LENGTH OF LIST TO CHECK (MAX)
SX0 B1
IX4 X3+X0 ADD IN ROUND UP FACTOR
AX4 1 X4 = (MAX/2) ROUNDED UP
BX5 X4 X5 = CURRENT POSITION IN LIST (CUR)
SA1 PCS X1 = PACKED CONTROL WORD
CUE11 SA2 X5+CMDS GET COMMAND AND VALIDATION BITS
MX0 42 MASK OFF COMMAND ONLY
BX2 X0*X2
IX2 X2-X1
IX4 X3-X5 HOW MANY POSITIONS LEFT TO CHECK (MAX-CUR)
ZR X2,CUE14 IF COMMAND MATCH FOUND IN TABLE
NZ X4,CUE12 IF MORE ENTRIES IN TABLE TO CHECK
SB3 2
SA2 SHELFLG
SB4 X2
EQ B3,B4,CUE16 IF *CDSHELL* AND NOT IN TABLE
SX7 CUEB *UNAUTHORIZED COMMAND.*
EQ CUE15 IF ERROR
CUE12 SX0 B1
IX4 X4+X0 ADD IN ROUND-UP FACTOR
AX4 1 (MAX-CUR)/2 HALF THE AMOUNT LEFT TO CHECK
PL X2,CUE13 IF POSITIVE, SKIPPED AHEAD TOO FAR
IX5 X5+X4 SEARCH AHEAD CUR+((MAX-CUR)/2)
EQ CUE11 CHECK NEXT CALCULATED ENTRY IN THE LIST
CUE13 BX3 X5 NUMBER COMMANDS LEFT TO CHECK (MAX=CUR)
IX5 X5-X4 SEARCH BACKWARDS HALFWAY OF WHAT IS LEFT
EQ CUE11 CHECK NEXT CALCULATED ENTRY IN THE LIST
* DETERMINE IF COMMAND IS VALIDATED FOR THE SHELL PROGRAM
* SPECIFIED.
CUE14 SA2 A2 RESET COMMAND AT CURRENT POSITION
SA3 SHELFLG RETRIEVE SHELL FLAG
BX2 X3*X2
NZ X2,CUE16 IF VALID COMMAND
SX7 CUEB *UNAUTHORIZED COMMAND.*
* STORE APPROPRIATE ERROR MESSAGE AND SET ERROR FLAG.
CUE15 SA7 ERRM
SB6 1
* REPACK COMMAND WITH *$* PREFIX AND CALL *EXCST*.
CUE16 SA1 CTRLC-1 B7 = LWA IN *USBB* (SET BY *COMCUSB*)
SB4 B0 B4 = COUNT OF WORDS REPACKED
SB2 B0
CUE17 SX6 B0+ INITIALIZE EMPTY WORD
SB3 10 B3 = NUMBER CHARACTERS PER WORD (0-9)
CUE18 SA1 A1+B1 GET NEXT CHARACTER
SX3 X1-1R$
ZR X3,CUE18.1 IF CHARACTER IS *$*
NZ B2,CUE18.1 IF HAVE FOUND FIRST NON-BLANK
SX3 X1-1R
ZR X3,CUE18 IF CHARACTER IS BLANK
SB2 1 SET B2 TO INDICATE FIRST NON-BLANK
CUE18.1 LX6 6
BX6 X6+X1 APPEND CHARACTER
SB5 A1 B5 = CURRENT ADDRESS IN *USBB*
EQ B5,B7,CUE19 IF END OF BUFFER
SB3 B3-1
NZ B3,CUE18 IF CURRENT WORD NOT YET FULL
SA6 MCCDR+B4 STORE FULL WORD
SB4 B4+1 INCREASE WORD COUNT
EQ CUE17 PROCESS UNTIL LWA OF BUFFER IS REACHED
CUE19 SX2 B3-B1 LEFT JUSTIFY LAST WORD OF COMMAND
SX3 6
IX2 X2*X3
SB2 X2
LX6 B2
SA6 MCCDR+B4
NZ B6,CUE20 IF ERROR FLAG SET
EXCST MCCDR PASS MODIFIED COMMAND TO SYSTEM
EQ CUE22 EXIT
* ISSUE ERROR MESSAGE.
CUE20 SA5 ERRM
SA2 RI
ZR X2,CUE21 IF NO REQUESTED INPUT
WRITEW OUTPUT,X5,3
WRITER OUTPUT,R
CUE21 SX0 CUEB
BX0 X0-X5
ZR X0,CUE21.1 IF *UNAUTHORIZED COMMAND*
SX0 3
CUE21.1 MESSAGE MCCDR,X0,R
MESSAGE X5,X0,R
ABORT
CUE22 ENDRUN
* ERROR MESSAGE DATA.
CUEA DATA C* COMMAND KEYWORD TOO LONG.*
CUEB DATA C* UNAUTHORIZED COMMAND.*
CUEC DATA C* NO MATCHING DELIMITER.*
CUED DATA C* INCORRECT COMMAND.*
TITLE SUBROUTINES.
GII SPACE 4,15
*** GII - GET INTERACTIVE INPUT.
*
* CALLED TO PROMPT AND GET A SINGLE INPUT LINE.
*
* ENTRY CCDR = ADDRESS OF 8-WORD AREA.
*
* EXIT CCDR = INPUT LINE.
* CCDR = 0 IF EOR/EOF/EOI.
* (B7) = 1 IF ENDRUN REQUIRED.
*
* USES X - 2, 6, 7.
* A - 2, 6, 7.
* B - 7.
*
* CALLS SUT.
*
* MACROS CSET, MESSAGE, PROMPT, READ, READW, WRITER, WRITEW.
GII1 SB7 B1+ FLAG TO END-RUN
GII SUBR
CSET NORMAL
RJ SUT SET UP TERMINAL
SX6 B0
SA6 CCDR ZERO FIRST AND LAST WORD OF BUFFER
SA6 CCDR+8
SX7 B1
SA7 RI SET FLAG FOR THE REQUESTED INPUT
PROMPT OFF TURN OFF AUTO PROMPT
WRITEW OUTPUT,OUT,1 WRITE PROMPT
READ INPUT,R GET INPUT LINE
READW INPUT,CCDR,9
CSET RESTORE
SB7 B0+
SA2 CCDR
ZR X2,GII1 IF NO INPUT DATA
SA2 CCDR+8
ZR X2,GIIX IF NOT TOO MUCH DATA
MESSAGE CCDR,3,R ISSUE ERROR MESSAGE AND ENDRUN
MESSAGE GIIA,3,R
WRITEW OUTPUT,GIIA,3
WRITER OUTPUT,R
EQ GII1 SET FLAG TO REQUIRE ENDRUN
GIIA DATA C* INPUT LINE TOO LONG.*
SUT SPACE 4,15
*** SUT - SET UP TERMINAL.
*
* SETS UP THE LIST-OF-FILES FOR *OUTPUT*.
* SUT CAN ONLY BE CALLED FOR AN INTERACTIVE JOB; IT VERIFIES
* THAT FILES *INPUT* AND *OUTPUT* HAVE DEVICE TYPE *TT*
* BY RETURNING THEM.
* ONLY THE FIRST CALL TO SUT IS ACTED UPON.
*
* USES X - 1, 6.
* A - 1, 6.
*
* MACROS RETURN, SETLOF.
SUT SUBR
SA1 LOFF CHECK FOR LIST OF FILES ALREADY PRESENT
NZ X1,SUTX IF ALREADY SET UP, RETURN
MX6 1 SET LIST OF FILES PRESENT FLAG
SA6 A1
RETURN INPUT,R RETURN FILES
RETURN OUTPUT,R
SA1 OUTPUT CLEAR FET STATUS
MX6 49
LX6 1
BX6 X6*X1
SA6 A1
MX6 1 SET FLUSH BIT
LX6 36+1
SA1 OUTPUT+1
BX6 X6+X1
SA6 A1
SETLOF LOFP SET LIST-OF-FILES
EQ SUTX RETURN
SPACE 4,10
*** COMMON DECKS.
* BUFFER FOR *COMCUSB*. *CTRLC* MUST BE JUST BEFORE *USBB*.
CTRLC DATA 1R$ CONTROL CARD BUFFER
USBB BSSZ 81 USED IN COMCUSB TO UNPACK STRING OF CHARS
*CALL COMCCIO
*CALL COMCCPM
*CALL COMCRDH
*CALL COMCRDW
*CALL COMCSYS
*CALL COMCUSB
*CALL COMCWTW
TITLE TABLES AND BUFFERS.
CMDS SPACE 4,10
** CMDS - TABLE OF VALID COMMANDS.
*
*T 42/COMMAND,16/0,1/C,1/R
*
* COMMAND = COMMAND NAME.
* C = 1 IF CDSHELL COMMAND.
* R = 1 IF RMSHELL COMMAND.
*
* NOTE - THIS TABLE MUST BE IN ALPHABETICAL ORDER.
CMDS BSS 0
VFD 42/0LACCESS,16/0,1/1,1/0
VFD 42/0LALGOL5,16/0,1/0,1/0
VFD 42/0LALX,16/0,1/0,1/1
VFD 42/0LAPEX,16/0,1/0,1/0
VFD 42/0LAPL,16/0,1/0,1/0
VFD 42/0LAPPEND,16/0,1/1,1/0
VFD 42/0LAP1,16/0,1/0,1/1
VFD 42/0LASCII,16/0,1/1,1/0
VFD 42/0LASSIGN,16/0,1/1,1/1
VFD 42/0LATTACH,16/0,1/1,1/1
VFD 42/0LAUTO,16/0,1/1,1/1
VFD 42/0LBASIC,16/0,1/0,1/0
VFD 42/0LBATCH,16/0,1/1,1/1
VFD 42/0LBEGIN,16/0,1/1,1/1
VFD 42/0LBINDER,16/0,1/1,1/0
VFD 42/0LBKSP,16/0,1/1,1/0
VFD 42/0LBLANK,16/0,1/1,1/0
VFD 42/0LBRIEF,16/0,1/1,1/0
VFD 42/0LBYE,16/0,1/1,1/1
VFD 42/0LCATALOG,16/0,1/1,1/1
VFD 42/0LCATLIST,16/0,1/1,1/1
VFD 42/0LCD2UTIL,16/0,1/1,1/0
VFD 42/0LCD2000,16/0,1/1,1/0
VFD 42/0LCFO,16/0,1/1,1/0
VFD 42/0LCHANGE,16/0,1/1,1/1
VFD 42/0LCHARGE,16/0,1/1,1/1
VFD 42/0LCHVAL,16/0,1/1,1/0
VFD 42/0LCKP,16/0,1/1,1/0
VFD 42/0LCLASS,16/0,1/1,1/0
VFD 42/0LCLEAR,16/0,1/1,1/1
VFD 42/0LCOBOL5,16/0,1/0,1/0
VFD 42/0LCOMMENT,16/0,1/1,1/0
VFD 42/0LCOMMON,16/0,1/0,1/0
VFD 42/0LCOMPASS,16/0,1/0,1/0
VFD 42/0LCOPY,16/0,1/1,1/1
VFD 42/0LCOPYBF,16/0,1/1,1/1
VFD 42/0LCOPYBR,16/0,1/1,1/1
VFD 42/0LCOPYCF,16/0,1/1,1/1
VFD 42/0LCOPYCR,16/0,1/1,1/1
VFD 42/0LCOPYEI,16/0,1/1,1/1
VFD 42/0LCOPYER,16/0,1/0,1/1
VFD 42/0LCOPYL,16/0,1/1,1/0
VFD 42/0LCOPYLM,16/0,1/1,1/0
VFD 42/0LCOPYSBF,16/0,1/1,1/1
VFD 42/0LCOPYX,16/0,1/1,1/0
VFD 42/0LCSET,16/0,1/1,1/0
VFD 42/0LCSU,16/0,1/0,1/1
VFD 42/0LCTB,16/0,1/0,1/1
VFD 42/0LCTIME,16/0,1/1,1/0
VFD 42/0LCT3,16/0,1/1,1/1
VFD 42/0LCT7,16/0,1/1,1/1
VFD 42/0LCT8,16/0,1/1,1/1
VFD 42/0LCU1,16/0,1/0,1/1
VFD 42/0LDAYFILE,16/0,1/1,1/1
VFD 42/0LDEBUG,16/0,1/0,1/0
VFD 42/0LDEFINE,16/0,1/1,1/1
VFD 42/0LDETACH,16/0,1/1,1/0
VFD 42/0LDIAL,16/0,1/1,1/0
VFD 42/0LDISPLAY,16/0,1/1,1/1
VFD 42/0LDMB,16/0,1/1,1/0
VFD 42/0LDMD,16/0,1/1,1/1
VFD 42/0LDMDECS,16/0,1/1,1/1
VFD 42/0LDMP,16/0,1/1,1/1
VFD 42/0LDMPECS,16/0,1/1,1/1
VFD 42/0LDOCMENT,16/0,1/1,1/0
VFD 42/0LDROP,16/0,1/1,1/1
VFD 42/0LEALOGCD,16/0,1/1,1/0
VFD 42/0LEALOGSV,16/0,1/1,1/0
VFD 42/0LEALOGVS,16/0,1/1,1/0
VFD 42/0LEAPREVC,16/0,1/1,1/0
VFD 42/0LEAPREVS,16/0,1/1,1/0
VFD 42/0LEAUL101,16/0,1/1,1/0
VFD 42/0LEAVL105,16/0,1/1,1/0
VFD 42/0LEC3,16/0,1/0,1/1
VFD 42/0LEC8,16/0,1/0,1/1
VFD 42/0LEDIT,16/0,1/1,1/1
VFD 42/0LELD,16/0,1/0,1/1
VFD 42/0LELSE,16/0,1/1,1/0
VFD 42/0LENDIF,16/0,1/1,1/0
VFD 42/0LENDW,16/0,1/1,1/0
VFD 42/0LENQUIRE,16/0,1/1,1/1
VFD 42/0LENTER,16/0,1/1,1/0
VFD 42/0LEVICT,16/0,1/1,1/0
VFD 42/0LEXECUTE,16/0,1/0,1/1
VFD 42/0LEXIT,16/0,1/1,1/1
VFD 42/0LEXPLAIN,16/0,1/1,1/0
VFD 42/0LFCOPY,16/0,1/1,1/0
VFD 42/0LFILE,16/0,1/1,1/0
VFD 42/0LFSE,16/0,1/1,1/1
VFD 42/0LFS8,16/0,1/0,1/1
VFD 42/0LFTN,16/0,1/0,1/0
VFD 42/0LFTN5,16/0,1/0,1/0
VFD 42/0LF45,16/0,1/0,1/0
VFD 42/0LGET,16/0,1/1,1/1
VFD 42/0LGETLOG,16/0,1/0,1/1
VFD 42/0LGO,16/0,1/1,1/1
VFD 42/0LGOODBYE,16/0,1/1,1/1
VFD 42/0LGPSS,16/0,1/0,1/0
VFD 42/0LGTR,16/0,1/1,1/0
VFD 42/0LHELLO,16/0,1/1,1/1
VFD 42/0LHELLO7,16/0,1/1,1/0
VFD 42/0LHELP,16/0,1/1,1/1
VFD 42/0LHELPME,16/0,1/1,1/1
VFD 42/0LHPA,16/0,1/0,1/1
VFD 42/0LHTIME,16/0,1/1,1/0
VFD 42/0LICEMDDN,16/0,1/1,1/0
VFD 42/0LIEDIT,16/0,1/1,1/0
VFD 42/0LIF,16/0,1/1,1/0
VFD 42/0LIFE,16/0,1/1,1/0
VFD 42/0LITEMIZE,16/0,1/1,1/0
VFD 42/0LKRONREF,16/0,1/1,1/0
VFD 42/0LLABEL,16/0,1/1,1/1
VFD 42/0LLBC,16/0,1/0,1/0
VFD 42/0LLDI,16/0,1/1,1/0
VFD 42/0LLDSET,16/0,1/1,1/0
VFD 42/0LLENGTH,16/0,1/1,1/0
VFD 42/0LLGO,16/0,1/0,1/1
VFD 42/0LLIB,16/0,1/0,1/0
VFD 42/0LLIBEDIT,16/0,1/1,1/0
VFD 42/0LLIBGEN,16/0,1/1,1/0
VFD 42/0LLIBLOAD,16/0,1/1,1/0
VFD 42/0LLIBRARY,16/0,1/1,1/0
VFD 42/0LLIBTASK,16/0,1/1,1/0
VFD 42/0LLIMITS,16/0,1/1,1/1
VFD 42/0LLINE,16/0,1/1,1/1
VFD 42/0LLISTLB,16/0,1/1,1/1
VFD 42/0LLIST80,16/0,1/1,1/0
VFD 42/0LLOAD,16/0,1/0,1/0
VFD 42/0LLOC,16/0,1/0,1/0
VFD 42/0LLOCK,16/0,1/1,1/0
VFD 42/0LLOGIN,16/0,1/1,1/1
VFD 42/0LLOGOUT,16/0,1/1,1/1
VFD 42/0LLO72,16/0,1/1,1/0
VFD 42/0LMACHINE,16/0,1/1,1/0
VFD 42/0LMALET,16/0,1/0,1/1
VFD 42/0LMAP,16/0,1/1,1/1
VFD 42/0LMAPINI,16/0,1/0,1/1
VFD 42/0LMFL,16/0,1/1,1/1
VFD 42/0LMFLINK,16/0,1/1,1/0
VFD 42/0LMFQUEUE,16/0,1/1,1/0
VFD 42/0LMODE,16/0,1/1,1/1
VFD 42/0LMODIFY,16/0,1/1,1/0
VFD 42/0LMRG,16/0,1/0,1/1
VFD 42/0LNEW,16/0,1/1,1/1
VFD 42/0LNOEXIT,16/0,1/1,1/1
VFD 42/0LNORERUN,16/0,1/1,1/0
VFD 42/0LNORM,16/0,1/1,1/1
VFD 42/0LNORMAL,16/0,1/1,1/1
VFD 42/0LNOSORT,16/0,1/1,1/0
VFD 42/0LNOTE,16/0,1/1,1/0
VFD 42/0LNULL,16/0,1/1,1/0
VFD 42/0LOFFSW,16/0,1/1,1/1
VFD 42/0LOLD,16/0,1/1,1/1
VFD 42/0LOMREF,16/0,1/1,1/0
VFD 42/0LONEXIT,16/0,1/1,1/1
VFD 42/0LONSW,16/0,1/1,1/1
VFD 42/0LOPLEDIT,16/0,1/1,1/0
VFD 42/0LOPMSG,16/0,1/0,1/1
VFD 42/0LOUT,16/0,1/1,1/1
VFD 42/0LOVWRITE,16/0,1/1,1/0
VFD 42/0LPACK,16/0,1/1,1/1
VFD 42/0LPACKNAM,16/0,1/1,1/1
VFD 42/0LPASCAL,16/0,1/0,1/0
VFD 42/0LPASSWOR,16/0,1/1,1/0
VFD 42/0LPAUSE,16/0,1/1,1/0
VFD 42/0LPBC,16/0,1/0,1/0
VFD 42/0LPDU,16/0,1/1,1/0
VFD 42/0LPERMIT,16/0,1/1,1/1
VFD 42/0LPLI,16/0,1/0,1/0
VFD 42/0LPRESET,16/0,1/1,1/1
VFD 42/0LPRIMARY,16/0,1/1,1/1
VFD 42/0LPROFILE,16/0,1/1,1/0
VFD 42/0LPROTECT,16/0,1/1,1/0
VFD 42/0LPURGALL,16/0,1/1,1/0
VFD 42/0LPURGE,16/0,1/1,1/1
VFD 42/0LQGET,16/0,1/1,1/0
VFD 42/0LQUEUE7,16/0,1/1,1/0
VFD 42/0LRBR,16/0,1/0,1/0
VFD 42/0LRECOVER,16/0,1/1,1/1
VFD 42/0LREDO,16/0,1/1,1/0
VFD 42/0LREDUCE,16/0,1/1,1/1
VFD 42/0LREGEN,16/0,1/0,1/1
VFD 42/0LRENAME,16/0,1/1,1/1
VFD 42/0LREPLACE,16/0,1/1,1/1
VFD 42/0LREQUEST,16/0,1/1,1/1
VFD 42/0LRERUN,16/0,1/1,1/0
VFD 42/0LRESEQ,16/0,1/1,1/0
VFD 42/0LRESOURC,16/0,1/1,1/1
VFD 42/0LRESTART,16/0,1/1,1/0
VFD 42/0LRETURN,16/0,1/1,1/1
VFD 42/0LREVERT,16/0,1/1,1/1
VFD 42/0LREVIEW,16/0,1/1,1/0
VFD 42/0LREWIND,16/0,1/1,1/1
VFD 42/0LRFL,16/0,1/1,1/1
VFD 42/0LROLLOUT,16/0,1/1,1/0
VFD 42/0LROUTE,16/0,1/1,1/1
VFD 42/0LRTIME,16/0,1/1,1/0
VFD 42/0LRUN,16/0,1/0,1/1
VFD 42/0LSATISFY,16/0,1/1,1/0
VFD 42/0LSAVE,16/0,1/1,1/1
VFD 42/0LSCOPY,16/0,1/1,1/0
VFD 42/0LSCREEN,16/0,1/1,1/1
VFD 42/0LSECHDR,16/0,1/1,1/0
VFD 42/0LSET,16/0,1/1,1/1
VFD 42/0LSETASL,16/0,1/1,1/0
VFD 42/0LSETCORE,16/0,1/1,1/0
VFD 42/0LSETFAL,16/0,1/1,1/0
VFD 42/0LSETFS,16/0,1/1,1/0
VFD 42/0LSETJAL,16/0,1/1,1/0
VFD 42/0LSETJOB,16/0,1/1,1/0
VFD 42/0LSETJSL,16/0,1/1,1/0
VFD 42/0LSETPFAC,16/0,1/1,1/0
VFD 42/0LSETPFAL,16/0,1/1,1/0
VFD 42/0LSETPR,16/0,1/1,1/0
VFD 42/0LSETTL,16/0,1/1,1/1
VFD 42/0LSHELL,16/0,1/0,1/0
VFD 42/0LSKIP,16/0,1/1,1/1
VFD 42/0LSKIPEI,16/0,1/1,1/1
VFD 42/0LSKIPF,16/0,1/1,1/1
VFD 42/0LSKIPFB,16/0,1/1,1/1
VFD 42/0LSKIPR,16/0,1/1,1/1
VFD 42/0LSLOAD,16/0,1/1,1/0
VFD 42/0LSORT,16/0,1/1,1/0
VFD 42/0LSORTMRG,16/0,1/1,1/0
VFD 42/0LSTATUS,16/0,1/1,1/1
VFD 42/0LSTIME,16/0,1/1,1/0
VFD 42/0LSUBMIT,16/0,1/1,1/1
VFD 42/0LSWITCH,16/0,1/1,1/1
VFD 42/0LTCOPY,16/0,1/1,1/0
VFD 42/0LTDU,16/0,1/1,1/1
VFD 42/0LTDUMP,16/0,1/1,1/1
VFD 42/0LTEXT,16/0,1/1,1/1
VFD 42/0LTIMEOUT,16/0,1/1,1/0
VFD 42/0LTIO,16/0,1/0,1/1
VFD 42/0LTRMDEF,16/0,1/1,1/1
VFD 42/0LULIB,16/0,1/1,1/0
VFD 42/0LUNIPOST,16/0,1/1,1/0
VFD 42/0LUNLOAD,16/0,1/1,1/1
VFD 42/0LUNLOCK,16/0,1/1,1/0
VFD 42/0LUPDATE,16/0,1/1,1/1
VFD 42/0LUPROC,16/0,1/1,1/0
VFD 42/0LUSECPU,16/0,1/1,1/1
VFD 42/0LUSER,16/0,1/1,1/1
VFD 42/0LVERIFY,16/0,1/1,1/1
VFD 42/0LVFYLIB,16/0,1/1,1/0
VFD 42/0LVSN,16/0,1/1,1/1
VFD 42/0LWBR,16/0,1/0,1/0
VFD 42/0LWHATJSN,16/0,1/1,1/0
VFD 42/0LWHILE,16/0,1/1,1/0
VFD 42/0LWRITEF,16/0,1/1,1/1
VFD 42/0LWRITER,16/0,1/1,1/1
VFD 42/0LX,16/0,1/0,1/0
VFD 42/0LXEDIT,16/0,1/1,1/1
CMDSL EQU *-CMDS LENGTH OF COMMAND LIST
BUFFERS SPACE 4,10
* BUFFERS.
ERRM BSSZ 1 STORE APPROPRIATE ERROR MESSAGE
SHELFLG BSSZ 1 SHELL PROGRAM FLAG
MCCDR BSSZ 9 MODIFIED CCDR
PCS BSSZ 1 PACKED CONTROL STATEMENT
RI BSSZ 1 REQUESTED INPUT FROM TERMINAL
INPUT FILEC IBUF,101B
OUTPUT FILEC OBUF,101B
LOFP VFD 12/0,18/LOF,30/0
LOFF CON 0 LIST OF FILES FLAG
LOF VFD 1/0,41/0,18/3
VFD 42/0LOUTPUT,18/OUTPUT
VFD 60/0
OUT VFD 12/1L/,12/1,36/0
IBUF EQU *
OBUF EQU IBUF+101B
RFL= EQU OBUF+101B+10B
END