First Page Previous Page   Next Page Last Page
.PROCEDURE NEWLINE; .BEGIN OUT2('106612); .END; .PROCEDURE NOTDECLAREDCHECK; .BEGIN .WHEN TYPE .NZ .THEN       .WHEN LEVEL CLEVEL .THEN FAIL(DECTWICE); .END; .PROCEDURE NUMBER; .INTEGER N; .BEGIN .IF BASIC(MINUSSYMBOL.THEN   .BEGIN NBSI := -1;   .END .ELSE I := .Z;   VALUE := .Z;   .IF BASIC(OCTALSYMBOL.THEN   L1:   .BEGIN NBS;     .WHEN BS .LE SEVENSYMBOL .THEN     .WHEN @ - ZEROSYMBOL .GEZ .THEN     .BEGIN VALUE := @ .SHDRL 3 + VALUE .SHDLL 3;       .GOTO L1;     .END;   .END   .ELSE   .BEGIN     .IF DIGIT .THEN     VALUE := BS ZEROSYMBOL     .ELSE FAIL(NONNUMERIC);     L2:NBS;     .WHEN DIGIT .THEN     .BEGIN       N := BS - '260;       VALUE := VALUE .SHSLA 3 + VALUE VALUE N;       .GOTO L2;     .END;   .END;   EXIT.WHEN I .LZ .THEN VALUE := .NEG VALUE; .END; .CONDITIONAL .PROCEDURE NUMERICAL; .BEGIN   .WHEN BASIC(OCTALSYMBOL.THEN .GOTO OK;   .WHEN BASIC(MINUSSYMBOL.THEN .GOTO OK;   .WHEN DIGIT .THEN   OK:  .EXITTRUE; .END; @ .PROCEDURE OCTAL3; .INTEGER TX; .BEGIN @ := @ .SHDRL 9;   OUT1(SPACE);   .FOR TX := -3 .DO   OUT1(.Z .SHDLL 3 + '260); .END; @ .PROCEDURE OUTSIX; .BEGIN %IABOUT1(SPACE); @ := .Z .SHDLL 1;   .FOR # := -6 .DO   .BEGIN OUT1(@ + ZEROSYMBOL); @ := .Z .SHDLL 3;   .END; .END; @ .PROCEDURE OUT1; .BEGIN  %SKS,'104; %JMP,*-1; %OCP,'104;   %OTA,4; %JMP,*-1; .END; @ .PROCEDURE OUT2; .BEGIN OUT1.SWOP @ ); OUT1 (.SWOP @); .END; @ .PROCEDURE OUT3X; .INTEGER H,I; .BEGIN @ := @ .SHDRL 15;   .FOR I := -3 .DO   .WHEN .Z .SHDLL .NZ .THEN   .IF @ = FLAGSYMBOL .THEN IDFLAG := -1 .ELSE   .BEGIN H := @;  %IRS,TAB;     .IF IDFLAG .LZ .THEN     .BEGIN  IDFLAG := .Z;  @ := H DDCONSTANT     .END .ELSE .IF H .LE 26 .THEN @ := @ + LCONSTANT     .ELSE @ := @ + DCONSTANT;     OUT1(@);   .END; .END; @ .PROCEDURE PLUGJUMP; .INTEGER WHERE TO; .BEGIN   WHERE TO := @;   INDEX := UNSTACK LSTART;   CODE[#] := JMPSO WHERE TO; .END; @ .PROCEDURE BACKPLUG; .INTEGER INSTADD; .BEGIN      INSTADD := @;   .WHEN LA > '777 .THEN .GOTO IGNORE;   @ := INSTADD;   AGAININDEX := @ + LSTART;   INSTADD := CODE[#];   CODE[#] := @ .AND '177000 + LA;   @ := INSTADD .AND '777;   .WHEN .NE '777 .THEN .GOTO AGAIN;      IGNORE: .END; @ .CONDITIONAL .PROCEDURE BASIC; .INTEGER COMPARE; .BEGIN   COMPARE := @;   .WHEN BS COMPARE .THEN .EXITTRUE; .END; .CONDITIONAL .PROCEDURE BSCOMMA; .BEGIN   .WHEN BASIC(COMMASYMBOL.THEN .EXITTRUE; .END; @ .CONDITIONAL .PROCEDURE BSIS; .BEGIN INDEX := @;   .WHEN LETTER .THEN .EXITFALSE;   MORE.WHEN .CLEFT OPTABLE[#] = BS .THEN   .BEGIN %STX,ADDBS.EXITTRUE;   .END;   .WHEN .NZ .THEN   .BEGIN INDEX := .INC .ICLEFT OPTABLE[#] + INDEX;     .GOTO MORE;   .END; .END; .PROCEDURE PRINTNAMELISTENTRY; .BEGIN   NEWLINEPRINTIDENT; %IRS,0;   OCTAL3(NAMELIST[#]); %IRS,0;   OUTSIX(NAMELIST[#]); .END; .PROCEDURE PROCCALL; .BEGIN ENTER;   .IF TYPE .AND '177774 = PROC .THEN   .BEGIN     .WHEN TYPE .ODD .THEN     .BEGIN FAILIFNOT(LRBSYMBOL);       ID := .Z;       STACK(ADD); EXPRESSION;       .WHEN BSCOMMA .THEN       .BEGIN         NBS;         GENERATE(IAB);         EXPRESSION;       .END;       .WHEN BSCOMMA .THEN       .BEGIN         NBSCELLGENVADDINST(LDX);       .END;       ADD := UNSTACK;       FAILIFNOT(RRBSYMBOL);     .END;     GENERATE(JSTI ADD);   .END .ELSE FAIL(NOTAPROC);   LEAVE; .END; @ .PROCEDURE DAPDECODE; .BEGIN   .FOR # := MCODESIZE .DO   .BEGIN     IRS,0;     .WHEN @ = MCODE[#] .THEN .GOTO FOUND;   .END;   @ := .Z;   .GOTO EXIT;   FOUNDINDEX := INDEX - 1;   @ := MCODE[#];   EXIT: ; .END; @ .PROCEDURE PUTADD; .BEGIN # := POS; %IRS,0;   NAMELIST[#] := @; .END; .PROCEDURE SDEBUG; .BEGIN  &  DUMMY PROCEDURE, CODEWORD MAY BE OVERWRITTEN .END; .PROCEDURE SETFJADD; .BEGIN   FJADD := LA;   %IRS,LA; .END; @ .PROCEDURE PUTARRAYVALUE; .INTEGER VAL; .BEGIN   VAL := @;   .IF K .GE SIZE .THEN   FAIL(TOOMANYVALUES)   .ELSE   .BEGIN     INDEX := LOCAL K;     CODE[#] := VAL;     % IRS,K;   .END; .END; .PROCEDURE SETIDENT; .INTEGER DOUBLE,I; .BEGIN   IDFLAGIDENT2DOUBLE := .Z;   .IF IDSYMBOL .THEN IDENT1 := @ .ELSE FAIL(NOTALETTER);   .FOR I := -2 .DO   .BEGIN     .IF IDSYMBOL .THEN     IDENT1 := @ .SHDRL 5 + IDENT1 .SHDLL 5     .ELSE .GOTO FIN;   .END;   .FOR I := -3 .DO   .BEGIN     .IF IDSYMBOL .THEN     .BEGIN IDENT2 := @ .SHDRL 5 + IDENT2 .SHDLL 5;       DOUBLE := '100000;     .END .ELSE .GOTO FIN;   .END;   .WHILE IDSYMBOL .DO;   FIN:   RETAIN := BS;   KEPT := -1;   IDENT1 := IDENT1 DOUBLE; .END; .NEXTSECTOR; & *************************** .PROCEDURE SETWORD; .BEGIN   INDEX := .IF ADD .GE '1000 .THEN   @ - '1000 + LSTART .ELSEACC;   CODE[#] := VALUE; .END; @ .PROCEDURE STACK; .BEGIN ST[STACKPOINTER] := @;   %IRS,STACKPOINTER.GOTO EXIT;   FAIL(STFULL);   EXIT: .END; .PROCEDURE CASESTATEMENT; .BEGIN   ENTER;   NBS;   CELL;   GENVADDINST(LDX);   FAILIFNOT(OFSYMBOL);   FAILIFNOT(LRBSYMBOL);   GENERATE('143777);  & JMP * : '1777   ANOTHER:   STACK(LA - 1);   STACK(STMARK);   .IF STMARK .LZ .THEN STATEMENT .ELSE EXPRESSION;   STMARK := UNSTACK;   GENERATE(UNSTACK JMPSO);   .WHEN BSCOMMA .THEN   .BEGIN     NBS;     .GOTO ANOTHER;   .END;   STACK(.Z);  & MARKER IN STACK   JK := LA - 1;   .GOTO JUMPIN;   LOOP:   .WHEN K = '777 .THEN .GOTO SETUP;   STACK(LSTART K + 1);   JUMPIN:   INDEX := K LSTART;   K := CODE[#] .AND '777;   .GOTO LOOP;   SETUP:   .WHILE UNSTACK .NZ .DO  GENERATE(@);   BACKPLUG(J);   FAILIFNOT(RRBSYMBOL);   LEAVE; .END;
First Page Previous Page   Next Page Last Page