TITLE 'RCMD-B00,10/16/73,DWG702985' SYSTEM SIG7F CSECT 1 PCC 0 CONTROL CARDS NOT PRINTED. RCMD@ RES 0 ORIGIN OF ROOT-CMD MODULE. * * REF'S AND DEF'S * DEF RCMD@ = START OF 'RCMD' MODULE. DEF SYMTOFF SYMBOL TABLE OFFSET FROM LODYN DEF STACKOFF = OFFSET FROM HI COMMON TO XEQ STACK DEF CMDREC COMMAND RECOGNIZER. DEF CMDB COMMAND BRANCH VECTOR DEF NCMDS # OF SYSTEM COMMANDS DEF TEXTCLEA 'CLEA' DEF TEXTOFF 'OFF ' DEF @@CLEAR DEF @@CONT DEF @@COPY DEF @@LOAD DEF @@OFF DEF @@PCOPY DEF @@SAVE DEF XWLOCGLB EXCHANGE LOCALS AND GLOBALS DEF ACQCONLY ACQUIRES CONSTANT ONLY. DEF OUTORANG DEF VALOUT PUT VALUE IN IMAGE, DISPLAY, & EXIT. DEF ISVAL DISPLAY 'IS ' & VALUE. DEF GENIS DISPLAY 'IS ' USING VALUE IN R7. DEF ISMSG 'IS ' DEF WASMSG 'WAS ' DEF ERBDCMDA BAD COMMAND WITH F:WS OPEN, PERHAPS. DEF ERBADCMD DEF CMDERR COMMAND ERROR DEF CMDEXIT DEF CMDEXITO CMD EXIT FOR ERR & ON-OFF CK. DEF CMDEXITM CMD EXIT VIA MODE. DEF DONTSAVE ERROR -- NOT SAVED, THIS WS IS ... DEF ERRERASE ERROR -- NOT ERASED. DEF ERNOTFND GENERATE NAME-NOT FOUND MESSAGE DEF ERNOTCPY GENERATE NAME-NOT COPIED MESSAGE DEF SIDAME ERROR -- SI DAMAGE (VIA ERASE). DEF SIDAMC ERROR -- SI DAMAGE (VIA COPY). DEF SIDAMF ERROR -- SI DAMAGE (VIA FUNDEF). DEF ERRDEFN ERROR -- DEFN ERR. DEF LSCANERR ERROR -- LINESCAN ERR. DEF BBADFL GO USE BAD FUN LINE, MAYBE. DEF ERRFDSYM ERROR -- SYM TBL FULL (VIA FUNDEF). DEF ERRFDWS ERROR -- WS FULL (VIA FUNDEF). DEF BRFUNDEF RETURN TO FUNDEF MODULE. DEF CSERRH HANDLE CODESTRING ERROR. DEF BREPROMT BRANCH TO REPROMPT. DEF BCONTOFF GO FOR )CONTINUE & OFF. DEF B4CLOSE GO FORCE CLOSE OF OPEN FUNCTION. DEF OBSERVEZ RESUME CODE EXEQ AFTER OBSERVATION. DEF BCSN GO TO CODESTRINGER FOR AUTOSTART. DEF BAQCONLY GO ACQUIRE CONSTANT ONLY. DEF EBALS TBL OF ENTRIES TO THE ERROR MODULE. DEF ERRN GO TO ERROR MOD. FOR ERR NOS. DEF ERRF GO TO ERROR MOD. FOR ERR FN'S NAME. DEF ERRX GO TO ERROR MOD. FOR I/O ERR CODE. DEF CMDERRH HANDLE COMMAND ERROR. DEF ERRSET HANDLE ERR IN EXECUTION. DEF OBSERVER GO TO ERROR MOD. FOR AN OBSERVATION. DEF UNREF GO TO ERROR MOD. FOR EXEC.ERR RETURN SPACE 2 * REFS TO PROCEDURE: REF ACQCONST ACQUIRE CONSTANT ROUTINE REF ACQIT ACQUIRES NAME OR NUMERIC ITEM. REF ACQNXNB ACQUIRES NEXT NON-BLANK CHAR. REF CINTIM CONVERT INTEGER TO IMAGE. REF CLOSR CLOSE AND RELEASE REF CMDRETRN RESUMES IN CMD MODULE. REF CONTOFF DOES )CONTINUE & OFF. REF CSN CODESTRINGER REF DUMPLING LINE OUTPUT ROUTINE. REF ENTEREM THE ENTRY PT INTO ERROR MODULE. REF ERXEQ ERROR VIA EXECUTE-OPERATION. REF FORCLOSE FORCE CLOSE ON OPEN FUNCTION REF FOROPEN FORCE OPEN THE FORCE-CLOSED FUNCTION REF INPDIR DIRECT INPUT PROCESSOR. REF INPEVAL EVALUATED INPUT DRIVER REF KCLEAR CLEAR COMMAND PROCESSOR. REF OBSERVED RESUME IN CODEXEQ MOD. AFTER OBSERV. REF RCSIDAM RESUME COPYING AFTER SI DAMAGE. REF REPROMPT FUNCTION DEF-ISSUE REPROMPT REF RERASE RESUME ERASING AFTER 'NOT ERASED'. REF RESIDAM RESUME ERASING AFTER SI DAMAGE. REF RFSIDAM RESUME FUN DEFN AFTER SI DAMAGE. REF RFUNDEF RESUME FUN DEFN. REF RNOTCPY RESUME AFTER 'NOT COPIED'. REF RNOTFND RESUME AFTER 'NOT FOUND'. REF SAVEREL RESUME AFTER CS FOR AUTOSTART. REF USEBADFL USE BAD FUNCTION LINE, PERHAPS. REF XEQNIL SUCCESSFUL XEQ-OPER, USE EMPTY RES. REF @CATCH CATCH COMMAND PROCESSOR. REF @CONTINU CONTINUE COMMAND PROCESSOR. REF @COPY COPY COMMAND PROCESSOR. REF @DIGITS DIGITS COMMAND PROCESSOR. REF @DROP DROP COMMAND PROCESSOR. REF @ERASE ERASE COMMAND PROCESSOR. REF @FNS FNS COMMAND PROCESSOR. REF @GROUP GROUP COMMAND PROCESSOR. REF @GRP GRP COMMAND PROCESSOR. REF @GRPS GRPS COMMAND PROCESSOR. REF @LIB LIB COMMAND PROCESSOR. REF @LOAD LOAD COMMAND PROCESSOR. REF @OBSERVE OBSERVE COMMAND PROCESSOR. REF @OFF OFF COMMAND PROCESSOR. REF @OPR OPR COMMAND PROCESSOR. REF @OPRN OPRN COMMAND PROCESSOR. REF @ORIGIN ORIGIN COMMAND PROCESSOR. REF @PCOPY PCOPY COMMAND PROCESSOR. REF @SAVE SAVE COMMAND PROCESSOR. REF @SI SI COMMAND PROCESSOR. REF @SIV SIV COMMAND PROCESSOR. REF @SYMBOLS SYMBOLS COMMAND PROCESSOR. REF @TABS TABS COMMAND PROCESSOR. REF @TERM TERMINAL COMMAND PROCESSOR. REF @VARS VARS COMMAND PROCESSOR. REF @WIDTH WIDTH COMMAND PROCESSOR. REF @WSID WSID COMMAND PROCESSOR. * REFS TO CONTEXT: REF BRNVAL ERR-CTRL BRANCH VALUE OR NEG. REF CMNDTYPE COMMAND TYPE. REF CONSTBUF CONSTANT BUFFER. REF CONSTTYP CONSTANT TYPE REF COPYSAVE SCRATCH DBLWD. REF EREGS REG. SAVE AREA FOR ERROR WORK. REF ERRORID ERROR I.D. HOLDER. REF F:WS F:WS DCB. REF HICOMMON HIGHEST ADDR. IN COMMON REGION. REF IMAGE IMAGE BUFFER REF LINKOLAY LINK HOLDER FOR OVERLAY SWITCHING. REF LINKWS SAVE LOC FOR LINK REF MODE EXECUTION MODE. REF NAMEBUF HOLDS ITEM ACQUIRED BY ACQIT. REF ON%OFF ON-LINE/OFF-LINE FLAG REF STATEPTR PTS AT TOP STATE-ENTRY IN XEQ STACK. REF SYMT PTS AT 1ST WD OF SYM TBL. REF TOPOSTAK PTS AT TOP OF EXECUTION STACK. * REFS TO CONSTANTS: REF BITPOS TBL OF BITS--BITPOS-K HAS ONLY BIT K REF IDBADCMD ERROR I.D. FOR -- BAD COMMAND. REF IDSYMFUL ERROR I.D. FOR -- SYM TBL FULL. REF IDWSFULL ERROR I.D. FOR -- WS FULL. REF MAXREAL X'7FFFFFFF' * * STANDARD EQU'S * REGISTERS R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 R5 EQU 5 R6 EQU 6 R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 * * OTHER EQU'S * SYMTOFF EQU 20 OFFSET FROM LODYN TO SYMT * NOTE-- MUST BE AN EVEN NUMBER -- SPACE STACKOFF EQU 32 OFFSET FROM END OF COMMON TO THE EXECUTION STACK. SPACE EFLAG EQU X'10000' MARKS 'EXECUTE-OPER' TYPE OF Q-STATE * * CONSTANTS * PAGE * * COMMAND RECOGNITION DRIVER * * PROCESSES COMMAND OR GIVES APPROPRIATE ERROR MESSAGE * EXITS VIA CMDEXIT,ACCORDING TO MODE * INDIVIDUAL COMMAND PROCESSORS ARE LABELLED: @----- * CMDREC LI,R4 0 STW,R4 ERRORID CLEAR ERROR IDENTIFIER. BAL,R4 ACQNXNB ACQUIRE NEXT NON-BLANK BAL,R14 ACQIT ACQUIRE CMD IDENTIFIER. LW,R8 NAMEBUF GET 1ST 4 LETTERS OR WHATEVER. LI,R6 -NCMDS = - NO.OF CMD IDENTIFIERS TABLED. CMDQ CW,R8 CMDTBL+NCMDS,R6 HUNT FOR A MATCH... BNE CMDLOOP NOT YET STW,R6 CMNDTYPE OK-SAVE TYPE FOR POSSIBLE REF. B CMDB+NCMDS,R6 VECTOR OUT CMDLOOP BIR,R6 CMDQ LOOP B ERBADCMD NO MATCH -- INCORRECT COMMAND. CMDTBL RES 0 NOTE--TABLE OF CMD ID'S, ASSOCIATE W/ CMDB TEXTCLEA TEXT 'CLEA' TEXTOFF TEXT 'OFF ' TEXT 'SAVE' SAVE TEXT 'WIDT' TEXT 'ORIG' TEXT 'DIGI' TEXT 'TABS' TEXT 'CONT' TEXT 'QLOA' QUIET LOAD TEXT 'LOAD' TEXT 'WSID' TEXT 'QCOP' QUIET COPY TEXT 'COPY' TEXT 'QPCO' QUIET PCOPY TEXT 'PCOP' TEXT 'DROP' TEXT 'LIB ' TEXT 'FNS ' TEXT 'VARS' TEXT 'GRPS' TEXT 'GROU' TEXT 'GRP ' TEXT 'ERAS' TEXT 'SYMB' TEXT 'SI ' TEXT 'SIV ' TEXT 'OPR ' TEXT 'OPRN' TEXT 'TERM' TEXT 'CATC' CATCH TEXT 'OBSE' OBSERVE NCMDS EQU %-CMDTBL = NO.OF CMD ID'S. CMDB RES 0 NOTE--BRANCH TBL ASSOCIATED W/ CMDTBL. @@CLEAR B KCLEAR @@OFF B @OFF @@SAVE B @SAVE @@WIDTH B @WIDTH @@ORIGIN B @ORIGIN @@DIGITS B @DIGITS @@TABS B @TABS @@CONT B @CONTINU MTW,1 CMNDTYPE USE @LOAD @@LOAD B @LOAD @@WSID B @WSID MTW,1 CMNDTYPE USE @COPY @@COPY B @COPY MTW,1 CMNDTYPE USE @PCOPY @@PCOPY B @PCOPY @@DROP B @DROP @@LIB B @LIB @@FNS B @FNS @@VARS B @VARS @@GRPS B @GRPS @@GROUP B @GROUP @@GRP B @GRP @@ERASE B @ERASE @@SYMB B @SYMBOLS @@SI B @SI @@SIV B @SIV @@OPR B @OPR @@OPRN B @OPRN @@TERM B @TERM @@CATCH B @CATCH @@OBSERV B @OBSERVE PAGE * * XWLOCGLB-PERFORM LOCAL-GLOBAL EXCHANGE ON SYMBOL TABLE * USED WHEN COMMANDS REQUIRE SURFACING- AND SUBSEQUENT * RESUBMERGING-OF GLOBAL SYMBOLS SHADOWED BY LOCALS * * R14=LINK R6,R7,R8,R9,R10,R11 USED-NOT SAVED * XWLOCGLB LW,R11 HICOMMON AI,R11 -STACKOFF SW,R11 TOPOSTAK ESTABLISH LOOP COUNT BLEZ *R14 EMPTY STACK-NO PROBLEM LW,R9 MAXREAL MASK OFF SIGN BIT LW,R6 TOPOSTAK CHKSTAK LW,R8 1,R6 GET STACK ENTRY BGEZ NOSHADOW NOT A SHADOWED GLOBAL LW,R7 0,R6 EXCHANGE CANDIDATE-GET SYMT PTR LW,R10 *SYMT,R7 GET SYMT REFERENT OR,R10 BITPOS-0 MERGE 'G' BIT STW,R10 1,R6 SET SYMT ENTRY IN STACK STS,R8 *SYMT,R7 SET STACK ENTRY LESS 'G' BIT-IN SYMT AI,R6 1 KICK STACK POINTER AI,R11 -1 DECREMENT LOOP COUNT NOSHADOW AI,R6 1 KICK STACK POINTER BDR,R11 CHKSTAK LOOP B *R14 RETURN PAGE * * ACQCONLY-ACQUIRE CONSTANT(S) ONLY * USED IN SCAN OF SYSTEM COMMANDS * * R14=LINK, ACQCONST USED * * MOST REGISTERS VOLATILE * ACQCONLY STW,R14 LINKWS SAVE LINK STW,R14 CONSTBUF BAL,R4 ACQCONST GET CONSTANT(S) B ERBADCMD OVERFLOW CI,R2 X'15' BNE ERBADCMD RESIDUAL GARBAGE LW,R14 CONSTTYP BLZ ERBADCMD NON-INTEGER CONST. FOUND LW,R7 CONSTBUF GET FIRST CONSTANT BLZ ERBADCMD NEGATIVE-BAD SCENE CI,R6 1 CHECK HOW MANY CONSTANTS FOUND B *LINKWS RETURN WITH CC'S SET PAGE * * OUTORANG -- DUAL RETURN PT FOR PARAMETER-CHANGE COMMANDS. * * VALOUT -- ALT.ENTRY, PUTS VALUE IN R8 IN IMAGE, DISPLAYS, & EXITS. * ISVAL -- ALT.ENTRY TO DISPLAY 'IS ' & VALUE. * GENIS -- ALT.ENTRY TO DISPLAY 'IS ' USING VALUE IN R7. * OUTORANG B ERBADCMD @ RETURN PT IF -- BAD COMMAND. LW,R3 WASMSG @ RETURN PT IF OK. GET 'WAS ' MSG. MSGIM STW,R3 IMAGE PUT MSG IN IMAGE. LI,R3 4 SET POSITION IN IMAGE. LW,R8 R7 GET VALUE IN R8. VALOUT BAL,R13 CINTIM PUT VALUE IN IMAGE. BAL,R12 DUMPLING DISPLAY MSG NOW IN IMAGE. B CMDEXIT COMMAND EXIT. ISVAL LW,R7 COPYSAVE+1 GET VALUE IN R7. GENIS LW,R3 ISMSG GET 'IS ' MSG. B MSGIM WASMSG TEXT 'WAS ' ISMSG TEXT 'IS ' PAGE * * ERBADCMD-ILLEGAL COMMAND-AND CMDEXIT-COMMAND EXIT * * * RETURNS TO DRIVER INDICATED BY MODE:FORCE OPEN * DEFINITION REPROMPT * DIRECT INPUT * EVALUATED NPUT * ERBDCMDA LI,R5 F:WS CLOSE BAL,R6 CLOSR OPEN DCB ERBADCMD LI,R8 IDBADCMD ERROR I.D. FOR 'BAD COMMAND'. CMDERR BAL,R7 CMDERRH HANDLE COMMAND ERROR. CMDEXIT LCW,R8 ERRORID CK ERROR I.D... BEZ CMDEXITM ZERO -- NO ERROR. BLZ CMDEXITC POS -- ERR-CTRL TESTED ALREADY. BAL,R7 IDECTEST @ NEG -- ERR DISPLAYED, CK ERR-CTRL: B CTRL @ CONTROL THIS ERROR. B CMDEXITO @ UNCONTROLLED. CMDEXITC LW,R8 BRNVAL WAS ERROR CONTROLLED... BGEZ CTRL YES. CMDEXITO LW,R8 ON%OFF DID ERROR OCCUR IN OFF-LINE OPERATN. BEZ BCONTOFF YES -- SIMULATE )CONTINUE CMD. CMDEXITM LW,R7 MODE EXIT CMD ACCORDING TO THE MODE: B CMDXVECT,R7 B FOROPEN -1 FORCE OPEN THE FUN FORCED CLOSE. CMDXVECT B REPROMPT 0 FUN DEFN MODE. B INPDIR 1 DIRECT INPUT MODE. LI,R7 EFLAG 2 EVAL-INPUT OR EXECUTE-OPERATOR MODE: CW,R7 *STATEPTR BAZ INPEVAL EVALUATED INPUT. LW,R7 ERRORID EXECUTE-OP, DID ERROR OCCUR... BEZ XEQNIL NO -- EMPTY VECTOR RESULTS. B ERXEQ YES. DONTSAVE EQU DONTSAVH HANDLE 'NOT SAVED, ETC.' ERROR. ERRERASE STW,R1 EREGS SAVE R1. BAL,R14 DERASE DISPLAY 'NAME NOT ERASED'. LW,R1 EREGS RESTORE R1. B RERASE RESUME ERASING; DO ERR-CTRL LATER. ERNOTFND BAL,R14 DNOTFND DISPLAY 'NAME NOT FOUND'. B RNOTFND RESUME COPYING; DO ERR-CTRL LATER. ERNOTCPY BAL,R14 DNOTCPY DISPLAY 'NAME NOT COPIED'. B RNOTCPY RESUME COPYING; DO ERR-CTRL LATER. BSIDAM B DSIDAM *BREF* SIDAME BAL,R7 BSIDAM DISPLAY 'SI DAMAGE'. B RESIDAM RESUME ERASING; DO ERR-CTRL LATER. SIDAMC BAL,R7 BSIDAM DISPLAY 'SI DAMAGE'. B RCSIDAM RESUME COPYING; DO ERR-CTRL LATER. SIDAMF BAL,R7 BSIDAM DISPLAY 'SI DAMAGE'. B RFSIDAM RESUME FUN DEF; DO ERR-CTRL LATER. ERRDEFN EQU DEFNERRH HANDLE 'DEFN ERR' ERROR. LSCANERR EQU LSCANERH HANDLE 'LINESCAN ERR' ERROR. BBADFL B USEBADFL *BREF* USE BAD FUNCTION LINE, MAYBE. ERRFDSYM LI,R8 IDSYMFUL = ERROR I.D. FOR 'SYM TBL FULL'. B ERRFUNDF ERRFDWS LI,R8 IDWSFULL = ERRORI.D. FOR 'WS FULL'. ERRFUNDF BAL,R7 FUNDERRH HANDLE FUN DEFN ERROR 6 BRFUNDEF B RFUNDEF *BREF* RETURN TO FUNDEF MODULE. CSERRH LI,R5 F:WS CLOSE & RELEASE IN CASE THIS LI,R6 CMDERR CODESTRING ERR OCCURRED DURING B CLOSR AN AUTOCONTINUE SAVE; HANDLE ERR * AS IF A CMD OR FUN DEF MISTAKE. BREPROMT EQU CMDXVECT (TO SAVE A BRANCHING REF) BCONTOFF LI,R2 -1 FLAG FOR ABORT B CONTOFF *BREF* AND GO TO 'CONTINUE' B4CLOSE STW,R14 LINKOLAY SAVE LINK BACK TO CMD MODULE. BAL,R14 FORCLOSE *BREF* FORCE CLOSE OF OPEN FUNCTION. CMDVIA14 STCF LINKOLAY SAVE COND.CODE. LW,R14 LINKOLAY RESTORE LINK BACK TO CMD MODULE. LC LINKOLAY RECOVER COND.CODE. B CMDRETRN *BREF* RETURN TO CMD MODULE. OBSERVEZ B OBSERVED *BREF* RETURN TO CODEXEQ MODULE. BCSN BAL,R12 CSN CODESTRING (FOR AUTOSTART), THEN B SAVEREL RESUME THE SAVE COMMAND WORK. BAQCONLY STW,R14 LINKOLAY SAVE LINK BACK TO CMD MODULE. LI,R14 CMDVIA14 PREPARE TO RESUME AFTER B ACQCONLY ACQUIRING A CONSTANT. PAGE * * COMMUNICATION REGION -- FROM ROOT INTO ERROR MODULE -- VIA R15. * EBALS RES 0 ERROR-ENTRY BAL'S. (ORDERING MUST ERRN BAL,R15 BENTEREM BE MATCHED IN ERROR MODULE). ERRF BAL,R15 BENTEREM ERRX BAL,R15 BENTEREM CMDERRH BAL,R15 BENTEREM IDECTEST BAL,R15 BENTEREM CTRL BAL,R15 BENTEREM DONTSAVH BAL,R15 BENTEREM DERASE BAL,R15 BENTEREM DNOTFND BAL,R15 BENTEREM DNOTCPY BAL,R15 BENTEREM DSIDAM BAL,R15 BENTEREM DEFNERRH BAL,R15 BENTEREM LSCANERH BAL,R15 BENTEREM UNREF BAL,R15 BENTEREM ERRSET BAL,R15 BENTEREM OBSERVER BAL,R15 BENTEREM FUNDERRH BAL,R15 BENTEREM SPACE 2 BENTEREM B ENTEREM ENTER ERROR MODULE WITH R15 SET. PAGE ************************************************************************ SPACE 2 Z SET %-RCMD@ SIZE OF RCMD MODULE IN HEX. SPACE Z SET Z+Z/10*6+Z/100*96+Z/1000*1536 SIZE IN DECIMAL. SPACE 3 END