$A UNDO=0;UND=0;LEFT=10 $A MARK=2;INVERT=0;CAP=0;CAPSH=0;CAPSHO=0;CAPO=0 $A ESCAPE='@';UNDSHO=0;UNDSH=0;PAGENO=82;PAGE=57;TOP=2;BOTTOM=5 @L0 * * APPENDIX 1 * * * PHRASE STRUCTURE DEFINITION OF ARTHUR * * BUILT-IN PHRASES ARE ENCLOSED IN SQUARE BRACKETS * * * * THE FIRST PHRASE IS THE DEFAULT ENTRY POINT * P(STAT) (SS) [SEPERATOR]; P(SS) (LABEL)':'(SS): (LOCATION) (ASSOP) (EXPRN) (AND'): [OLD NAME] (ACTP'): (CONTROL TRANSFER) (OPTIONAL CONDITION'): '%WAIT' (WHILE-UNTIL) (GPAREG NAME) (BIT DEF'): (FLAG OPERATION) [OLD NAMELIST] (AND'): (TYPE) [NAMELIST]: (ROM-MEMORY) [NAMELIST] (SIZE) (RMEM'): '%BREG' [NAME] (PIN DEFINITION'): '%TREG' [NAME] (PIN DEFINITION'): '%SPM' [NAME] [SPDEFN']: '%DEFINE' (EQITEM) (RDEFINE'): '%ROUTINE' [NAME]: '%END' (FILE'): '%BRANCH' [NAME] '(' (LEVEL) ',' (LEVEL) ',' (LEVEL) ')': '%BREAKPOINT' [NAME]: '%CLEAR' '%BUS': '%NOP': '%REGFORMAT' [NAME] '(' [CONSTANT] (PINLIST') ')': '%RADIX'[CONSTANT]: '%ENABLE' [OLD NAME](AND'): ; P(ASSOP) '<-': '='; @N@L0 P(PIN DEFINITION') '(' (DEF OR FORM) ')': ; P(DEF OR FORM) [NAME]: [CONSTANT] (PINLIST'); P(PINLIST') ',' [CONSTANT] (PINLIST'): ; P(ROM-MEMORY) '%MEMORY' : '%ROM' ; P(TYPE) '%FLAG' : '%GPINT' : '%ININT' : '%OUTINT' : '%SINT' : '%GPA' ; '%BUS': P(LOCATION) '[' [OLD NAME] ']': [OLD NAME] (FQUAL'): 'BUS'; P(FQUAL') '_' (PREDECLARED NAME): '#' [CONSTANT]: '<' [CONSTANT] ':' [CONSTANT] '>': ; P(EXPRN) '('(B-EXP) ')/2': (B-EXP); P(B-EXP) (PLUS) (GPAREG NAME) : (GPAREG NAME) (OPERATION) : [CONSTANT]: (LOCATION); @N@L0 P(PLUS) '\' : '2*' : '1+' ; P(OPERATION) '*2' : '+1' : '-1' : (OPERATOR) (GPAREG NAME); P(OPERATOR) '+' : '-' : '&' : '!!' : '!' ; * & = LOGICAL AND * ! = LOGICAL INCLUSIVE OR * !! = EXCLUSIVE OR P(WHILE-UNTIL) '%WHILE' : '%UNTIL' ; P(LEVEL) (FLAGNAME): '%HIGH' : '%LOW' ; P(GPAREG NAME) [OLD NAME] (ENAME'); P(ENAME') '_' (PREDECLARED NAME): ; P(M FLAGS) 'OVF': 'DZ': 'DP': 'DN': 'BUS''<'[CONSTANT]'>'; P(FLAGNAME) (GPAREG NAME) (BITDEF'): 'ZERO': 'POSITIVE': 'NEGATIVE': 'OVERFLOW': (M FLAGS); P(BITDEF') '<' [CONSTANT] '>': ; @N@L0 P(FLAG OPERATION) '%SET' : '%CLEAR' : '%COMPLEMENT' ; P(CONTROL TRANSFER) '->' [NAME]: '%RETURN' : '%STOP' ; P(OPTIONAL CONDITION') (IF-UNLESS) (FLAGNAME): ; P(IF-UNLESS) '%IF' : '%UNLESS' ; P(AND') '%AND' (FLAG OPERATION) [OLD NAMELIST] (AND'): ; P(SIZE) '(' [CONSTANT] (KB') ')'; P(KB') 'K' : 'B' : ; P(RMEM') ',' [NAMELIST] (SIZE) (RMEM'): ; P(EQITEM) [NAME] '=' (DTYPE): [OLD NAME] '_' (SI) '=' (LEVEL); P(DTYPE) (GPA REG NAME)'<' [CONSTANT] '>': [OLD NAME](FQUAL'): 'BUS'(BIT DEF'); P(SI) 'LSI' : 'RSI' ; @N@L0 P(RBIT) ':' [CONSTANT]: ; P(RDEFINE') ',' (EQITEM) (RDEFINE'): ; P(LABEL) [NAME](QUAL'); P(QUAL') '('[CONSTANT]')': ; P(FILE') '%OFFILE' : ; P(RTEXTLST') ',' [TEXT] (RTEXTLST'): ; P(PREDECLARED NAME) 'A' : 'B' : 'KF' : 'PF' : 'IN' : 'OUT' : 'OVERUN' ; @N@L0 SOURCE FILE: APENDIX2 COMPILED: 05/10/76 20.08.44 OBJECT FILE: SS#ARTH ARTHUR : VERSION 4.0 1 $ APPENDIX 2 2 $ 3 $ SAMPLE PROGRAM: PAGE 30 PDP-16 DESIGNER'S HANDBOOK 4 $ 5 %GPA AR 6 %GPINT GPI 7 %FLAG FF1,INFLAG,INT,ACCEPTED 8 %DEFINE A=AR_A 9 $ 10 %ROUTINE MUL4 $ MULTIPLY A BY FOUR 11 A <- A*2 12 A <- A*2 13 %END 14 $ 15 $ MAIN PROGRAM STARTS HERE 16 $ 17 START:%WAIT %UNTIL INFLAG 18 A <- GPI %AND %CLEAR INFLAG $ INPUT DATA 19 $ 20 $ NOW CHOOSE A FORMULA 21 $ 22 -> FORMULA1 %IF FF1 23 $ 24 $ FORMULA 0 SELECTED 25 $ 26 A <- A-1 27 MUL4 28 GPI <- A-1 $ OUTPUT RESULT 29 ->JOIN 30 $ 31 FORMULA1: 32 $ 33 $ FORMULA 1 SELECTED 34 $ 35 MUL4 36 MUL4 * WARNING: %NOP INSERTED 37 GPI <- A $ OUTPUT RESULT 38 $ 39 JOIN: $ BOTH FORMULAE JOIN HERE 40 $ 41 %SET INT $ PUT UP DONE FLAG 42 %WAIT %UNTIL ACCEPTED 43 %CLEAR INT,ACCEPTED 44 ->START $ ROUND AGAIN 45 %ENDOFFILE GPA 1 GPI 1 FLAG 4 NOP 5 EVOKE 11 2-BR 3 S-RET 3 24 STATEMENTS COMPILED @N@L0 APPENDIX 3 WOMBLE : VERSION 3.0 ====== = ======= === DECLARED ======== NAME MODULE SLOT ---- ------ ---- BSENSE 0B AR GPAUC 1B GPAUR 2B GPI GPINT 3B FF1 FLAG 4C INFLAG FLAG 4C INT FLAG 4C ACCEPTED FLAG 5C BTRMTR FB # CONTROL ======= CARD SLOT ---- ---- NOP 6C EVOKE 7C 8C 9C COND AC MERGE2 0C # WIRING ====== STAT WIRE FROM TO ---- ---- ---- -- 11 1 0CF1 <=> 1AF2 <=> 2BN1 <=> 7CU2 12 2 1AH2 <=> 2BP1 <=> 7CS2 <=> 7CV2 13 3 7CP2 <=> 7CT2 <=> 8CP2 <=> 9CP2 17 4 0BB2 <=> 0CM1 5 0CN1 <=> 6CF1 <=> 7CE2 6 7CF2 <=> ACH1 @N@L0 7 0CH1 <=> ACE2 18 8 2BS2 <=> 3BK1 <=> 4CU2 <=> 7CH2 <=> ACD2 22 9 7CJ2 <=> ACK1 26 10 1BN2 <=> 2BR2 <=> 7CK2 <=> ACH2 27 11 0CE1 <=> 7CL2 <=> 7CN2 28 12 1BL2 <=> 3BJ2 <=> 7CR2 <=> 8CU2 29 13 7CP1 <=> 7CU1 <=> 7CV1 <=> 8CV2 35 14 0CA1 <=> 8CN2 <=> ACF2 36 15 6CH1 <=> 8CR2 <=> 8CS2 16 0CB1 <=> 8CT2 <=> 9CN2 37 17 1AR2 <=> 3BH2 <=> 8CE2 <=> 9CR2 39 18 7CR1 <=> 8CF2 41 19 4CM2 <=> 6CJ1 <=> 7CS1 <=> 8CH2 42 20 7CK1 <=> 7CL1 <=> 7CM1 <=> 8CJ2 21 6CK1 <=> 7CN1 <=> 8CK2 22 8CL2 <=> ACM1 23 7CJ1 <=> ACK2 43 24 4CL2 <=> 5CL1 <=> 6CL1 <=> 9CU2 <=> ACJ2 44 25 0CJ1 <=> 9CV2 45 26 **** 27 *HI* <=> 1BV1 28 *HI* <=> 1AV1 29 0CC1 <=> 0CD1 30 0CK1 <=> 0CL1 31 4CK1 <=> ACJ1 32 4CV1 <=> ACF1 33 5CK1 <=> ACL1 # =========== END OF WOMBLE ========== @N@L0 * * APPENDIX 4 * * DEFINITION OF THE SAM COMMAND LANGUAGE * P(STAT) (SS) [SEPERATOR]; P(SS) '%CONTINUE' (REPEAT COUNT'): ':' (REPEAT COUNT'): '%GO' : '%TRACE' (ON/OFF): '?' (COND) (RCONDLIST'): '#' (LOC/BUS) (RLOCLIST'): '%DUMP' (WHERE'): '%IGNORE' (NAMES'): '%REPLACE' (NAMES'): '%ENDOFSIM' : '%CANCEL' (LOC LIST'): '%BREAK' (CONST LIST): '%FREE' (NONE) (RCONST LIST'): (LOC/BUS) (ASSOP)(PLUS')[CONSTANT]: (FLAG OPERATION) [OLD NAMELIST] (AND'): '%TREG' [OLD NAME] (PIN DEFINITION'): '%DEFINE' (EQITEM) (RDEFINE'): '%FULL' : '%QUIET' : '%NAMES' : '%TRAPS' : '%TIME': '%CLEAR' '%BUS': '%RADIX'(RAD): '->' [OLD NAME]: '%INPUT'(WHERE'): ; P(LOC LIST') (LOC/BUS)(RLOC LIST'): ; P(LOC/BUS) (LOCATION): 'BUS'; @N@L0 P(ON/OFF) '%OFF': '%ON'(WHERE'); P(NAMES') [OLD NAME LIST]: ; P(NONE) [CONSTANT]: ; P(CONST LIST) [CONSTANT](R CONST LIST'):; P(RCONST LIST') ','[CONSTANT] (RCONST LIST'): ; P(COND) (LOC/BUS) (RCOND'); P(RCONDLIST') ',' (COND) (RCONDLIST'): ; P(RCOND') (CONDOP) [CONSTANT]: ; P(CONDOP) '=': '\=' : '>=': '<=': '<': '>'; P(RLOCLIST') ',' (LOC/BUS) (RLOCLIST'): ; P(REPEAT COUNT') [CONSTANT]: ; P(WHERE') (LOC): ; @N@L0 P(LOC) '.TT': '.LP' : [NAME]; P(ASSOP) '<-': '='; P(PIN DEFINITION') '(' [CONSTANT] (PINLIST') ')': ; P(PINLIST') ',' [CONSTANT] (PINLIST'): ; P(ADDRESS') ':' [CONSTANT]: ; P(LOCATION) '[' [OLD NAME] (ADDRESS') ']': [OLD NAME] (FQUAL'): (FLAGNAME); P(FQUAL') '_' (PREDECLARED NAME): '#' [CONSTANT]: '<' [CONSTANT] ':' [CONSTANT] '>': ; P(GPAREG NAME) [OLD NAME] (ENAME'); P(ENAME') '_' (PREDECLARED NAME): ; P(M FLAGS) 'OVF': 'DZ': 'DP': 'DN'; P(FLAGNAME) (GPAREG NAME) (BITDEF'): 'ZERO': 'POSITIVE': 'NEGATIVE': 'OVERFLOW': (M FLAGS); @N@L0 P(BITDEF') '<' [CONSTANT] '>': ; P(FLAG OPERATION) '%SET' : '%CLEAR' : '%COMPLEMENT' ; P(AND') '%AND' (FLAG OPERATION) [NAMELIST] (AND'): ; P(EQITEM) [NAME] '=' [OLDNAME] (FQUAL') (BITDEF'); P(RDEFINE') ',' (EQITEM) (RDEFINE'): ; P(PREDECLARED NAME) 'A' : 'B' : 'KF' : 'PF' : 'IN' : 'OUT' : 'OVERUN'; P(PLUS') '+': '-': ; P(RAD) '%HEX': '%DEC': '%OCT': '%BIN': [CONSTANT]; @E