First Page Previous Page   Next Page Last Page
.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 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; .ORIGIN 0; .ARRAY TEST[0]; .SET CPOOL[CPOOLSIZE]; .ORIGIN 0; .PROCEDURE PRINTIDENT; .BEGIN TAB := -7; IDFLAG := .ZOUT3X(NAMELIST[LOCDP]);   .WHEN NAMELIST[LOCDP.LZ .THEN   .BEGIN  %IRS,0; OUT3X(NAMELIST[#]);   .END;   LL:  OUT1(SPACE);  %IRS,TAB;  .GOTO LL; .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 PUTADD; .BEGIN # := POS; %IRS,0;   NAMELIST[#] := @; .END; .PROCEDURE SDEBUG; .BEGIN .END; .PROCEDURE SETFJADD; .BEGIN   FJADD := LA;   %IRS,LA; .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; .PROCEDURE SETKWITHPROCTYPE; .BEGIN   .WHEN CLEVEL .EVEN .THEN FAIL(NESTEDPROC);   K := 8;   .WHEN BASIC(ACSYMBOL.THEN   .BEGIN %IRS,KNBS;   .END;   .WHEN BASIC(CONDSYMBOL.THEN   .BEGIN %IRS,K; %IRS,KNBS;   .END;   FAILIFNOT(PROCSYMBOL); .END; .PROCEDURE SETWORD; .BEGIN   INDEX := .IF ADD .GE '1000 .THEN @ - '1000 + LSTART .ELSE @;   CODE[#] := VALUE; .END; @ .PROCEDURE STACK; .BEGIN ST[STACKPOINTER] := @;   %IRS,STACKPOINTER.GOTO EXIT;   FAIL(STFULL);   EXIT:.END; .PROCEDURE STATEMENT; .INTEGER FORADDRESS; .SWITCH S SBUGBEGIN, INDACDAP, EXITTEXITFFORIFWHILE, BASSIGNREPTGET, UNTILXUNLESSEXIT, GOTOXSYMWHEN; .BEGIN   ENTER;   WORKING := .Z;   AGAIN:   .IF LETTER .THEN   .BEGIN IDENTIFIER;     .IF BASIC(COLONSYMBOL.THEN     .BEGIN       .IF TYPE .NE LABEL .THEN       .BEGIN         NOTDECLAREDCHECK;         TYPE := LABEL;         MAKEDECPUTADD(LA);       .END       .ELSE       .BEGIN .IF LEVEL .ODD .THEN         .BEGIN .IF ADD .GEZ .THEN FAIL(GLOB2LABEL)           .ELSE           .BEGIN PUTADD(.SSP @);             INDEX := ADDCODE[#] := LOCAL;           .END         .END         .ELSE         .BEGIN .IF ADD .GEZ .THEN FAIL(LOC2LABEL)           .ELSE .WHEN .NE '100777 .THEN           BACKPLUG(.SSP @);           PUTADD(LA);         .END       .END;       NBS.GOTO AGAIN;     .END     .ELSE .IF TYPE .AND '17776 = '10 .THEN PROCCALL     .ELSE     .BEGIN ID := -1;       ASSIGNMENTSTATEMENT;     .END   .END   .ELSE .FOR # := NUMOFTYPES .DO   .WHEN BASIC(TYPES[#]) .THEN .GOTO S[#];   .GOTO COMMON;   SBUGGENERATE(JSTI .ADDRESS SDEBUG); NBS.GOTO COMMON;   BEGINCOMPSTATEMENT.GOTO COMMON;   IND:ACASSIGNMENTSTATEMENT.GOTO COMMON;   DAPCODESTATEMENT.GOTO COMMON;   EXITT:   EXITF:   .WHEN PROCPOSITION .LZ .THEN FAIL(BADEXIT);   .WHEN BASIC(EXITTRUE.THEN GENERATE(IRS PROCPOSITION);   EXIT:   GENERATE(.SSP PROCPOSITION JMPI);   NBS;   .GOTO COMMON;      REPT:   STACK(LA);   NBS;   STATEMENT;   GENERATE(UNSTACK JMPSO);   .GOTO COMMON;   BASSIGN:   NBSFAILIFNOT(BECOMES);   EXPRESSION;   GENERATE(IAB);   .GOTO COMMON;   FOR:   NBS;   .IF BASIC(XSYMBOL.THEN    .BEGIN XASSIGNMENTSTATEMENTFORADDRESS := .Z;   .END   .ELSE   .BEGIN .IF BASIC(STARSYMBOL.THEN     .BEGIN NBSFORADDRESS := '100000;     .END     .ELSE FORADDRESS := .Z;     IDENTIFIER;     .WHEN TYPE .NE INT .THEN FAIL(FORNOTINT);     FORADDRESS := ADD FORADDRESS;     FAILIFNOT(BECOMESSYMBOL);     EXPRESSION;     GENERATE(STA FORADDRESS);   .END;   FAILIFNOT(DOSYMBOL);   STACK(LA); STACK(FORADDRESS);   STATEMENT;    GENERATE(UNSTACK IRS);   GENERATE(UNSTACK JMPSO);   .GOTO COMMON;   IFSTMARK := -1; IFSTATEMENT.GOTO COMMON;   WHILE:   @ := .Z; %SKP;   UNTIL:   INVERT := '1000;   NBSSTACK(LA);   CONDITIONSTACK(FJADD);   FAILIFNOT(DOSYMBOL);   STATEMENT;   PLUGJUMP(LA+1);   GENERATE(UNSTACK JMPSO);   .GOTO COMMON;   GET:   GETMARKER := -1;   NBS;   IDENTIFIER;   TYPEFIRST := .Z;   .IF TYPE .NE TABLE .THEN FAIL(GETWRONGTYPE)   .ELSE SUBSCRIPT;   .WHEN BSCOMMA .THEN .GOTO GET;   GETMARKER := .Z;   .GOTO COMMON;   GOTO:   NBS;   IDENTIFIER;   .IF TYPE LABEL .THEN   .BEGIN .IF LEVEL = 1 .THEN GENERATE(ADD .AND '77777 + JMPI)     .ELSE .BEGIN       .IF ADD .LZ .THEN       .BEGIN PUTADD('100000 + LA);         GENERATE(ADD .AND '777 + JMPSO);       .END       .ELSE GENERATE(@ + JMPSO);     .END   .END   .ELSE .IF TYPE SWTCH .THEN   .BEGIN     STACK(ADD);     TYPEFIRST := .Z;     SUBSCRIPT;     GENERATE(UNSTACK JMPI);   .END   .ELSE   .BEGIN     NOTDECLAREDCHECK;     TYPE := LABEL;     MAKEDEC;     PUTADD ('100000 + LA);     GENERATE(JMPSO + '777);   .END;   .GOTO COMMON;   XSYMXASSIGNMENTSTATEMENT.GOTO COMMON;   WHEN:   @ := .Z; %SKP;   XUNLESS:   INVERT := '1000;   NBSCONDITION;   STACK(FJADD);   FAILIFNOT(THENSYMBOL);   STATEMENT;   PLUGJUMP(LA);   COMMON:LEAVE; .END;
First Page Previous Page   Next Page Last Page