First Page Previous Page   Next Page Last Page
.PROCEDURE CONSTEXPRESSION; .INTEGER SUM,SIGN; .BEGIN   ENTER;   SUM := .Z;   MORE:   SIGN := @;   .IF BASIC(GLOBALSYMBOL.THEN   .BEGIN     @ := GA;     GLORIG:     VALUE := @;     NBS;   .END .ELSE   .IF BASIC(ORIGINSYMBOL.THEN   .BEGIN     @ := LOCAL;     .GOTO GLORIG;   .END   .ELSE CONSTANT;   @ := SIGN .SHSRL .NEV VALUE;   %SRC; %TCA;   SUM := @ + SUM;   .WHEN BASIC(PLUSSYMBOL.THEN   .BEGIN     NBS;     @ := .Z;     .GOTO MORE;   .END;   .WHEN BASIC(MINUSSYMBOL.THEN   .BEGIN     NBS;     @ := 1;     .GOTO MORE;   .END;   VALUE := SUM;   LEAVE; .END; .PROCEDURE CONSTANT; .BEGIN   ENTER;   VALUE := .Z;    & IN CASE ANYTING GOES BAD   .IF BASIC(CHARSYMBOL.THEN   .BEGIN     .WHEN INCHAR .NE CHARSYMBOL .THEN VALUE := .SWOP @;     VALUE := INCHAR VALUE;     NBSVADD := .Z;   .END   .ELSE .IF NUMERICAL .THEN   .BEGIN  NUMBERVADD := .Z;   .END   .ELSE .IF BASIC(ADDSYMBOL.THEN   .BEGIN NBS;     .WHEN BASIC(STARSYMBOL.THEN     .BEGIN VALUE := '100000;       NBS;     .END;     .WHEN BASIC(COLONSYMBOL.THEN     .BEGIN NBSVALUE := VALUE + '40000;     .END;     TYPEIDENT;     .WHEN ADD > '777 .THEN ADD := @ - '1000 + LSTART;     VALUE := VALUE ADD;     VADD := .Z;   .END   .ELSE .IF LETTER .THEN   .BEGIN IDENTIFIER;      .IF TYPE CONST .THEN     .BEGIN VALUE := GETCODE(ADD); VADD := ADD;     .END     .ELSE .IF @ = COMPCONST .THEN     .BEGIN VALUE := ADDVADD := .Z;     .END     .ELSE FAIL(NOTCONST);   .END   .ELSE .IF BASIC(LABRACKET.THEN   .BEGIN     NBS;     CONSTEXPRESSION;     .WHEN BSCOMMA .THEN     .BEGIN       STACK(VALUE); NBSCONSTEXPRESSION;       @ := VALUE .SHDRL 8;       VALUE := UNSTACK .SHDLL 8;     .END;     VADD := .Z;     FAILIFNOT(RABRACKET);   .END   .ELSE FAIL(BADSTART);   LEAVE; .END; @ .PROCEDURE DAPPRINT; .INTEGER INST; .BEGIN   INST := @;   OUT1(SPACE);   IDFLAGTAB := .Z;   .IF INST .AND '36000 = '30000  .THEN   .BEGIN     .IF DAPDECODE(INST .AND '176000) .NZ .THEN     .BEGIN       OUT3X(@);       OUTSIX(INST .AND '1777);     .END     .ELSE     .GOTO GENERIC;   .END   .ELSE .IF .Z .THEN   .BEGIN     .IF INST .AND '140000 - '40000 .Z .THEN     .WHEN DAPDECODE(INST .AND '177700) .NZ .THEN     .BEGIN       OUT3X(@);       OCTAL3(.NEG INST .AND '77);     .END     .ELSE     GENERIC.WHEN DAPDECODE(INST.NZ .THEN OUT3X(@);   .END   .ELSE      .WHEN INST .AND '176000 .NE '176000 .THEN   .BEGIN     .IF INST .AND '76000 - '72000 .Z .THEN     .BEGIN       OUT3X('30230);      & LDX       .IF INST .LZ .THEN OUT1(STARSYMBOL)       .ELSE OUT1(SPACE);       OUT1(SPACE);     .END     .ELSE     .BEGIN       OUT3X(DAPDECODE(INST .AND '36000));       .IF INST .LZ .THEN OUT1(STARSYMBOL)       .ELSE OUT1(SPACE);       .IF INST .SHSLL .LZ .THEN OUT1(COLONSYMBOL)       .ELSE OUT1(SPACE);     .END;     .IF INST .AND '1000 .NZ .THEN     @ := INST .AND '777 + LSTART     .ELSE @ := INST .AND '777;     OUTSIX(@);   .END; .END; .NEXTSECTOR; &********************************************************* .PROCEDURE DECLARATIONS.INTEGER THISDECJJ,KK; .ARRAY ATYPE[3] (ARRAY,TABLETABLE); .SWITCH SW DINTDDOUBLEDTABLEDTRIANGLE, DARRDCONDCCON, DLABDPROCDPROCDPROCDFORW, DLISTDSWITCHDNEXTDORGDSTRINGDGLOBALDSET ,DBLOCK, DFILEDPAPERTAPEDEQUALS; .BEGIN   ENTER;   START :;    .FOR # := NOFBASICS .DO   .WHEN BASIC(BASICS[#]) .THEN   .BEGIN     %STXTHISDEC;  .GOTO SW[#];   .END;   DEX:   DLIST:   .WHEN BASIC(SEMICOLONSYMBOL.THEN   .BEGIN NBS.GOTO START;   .END;   LEAVE;   DINT:;   DECTEST;   TYPE := INT;    MAKEWORD;   EXTRA:    .WHEN BSCOMMA .THEN   .GOTO SW[THISDEC];   .GOTO DEX;      DEQUALS:   NBS;   CONSTEXPRESSION;   GENWORD(VALUE);   .GOTO EXTRA;   DBLOCK:   DECPOINTER := DECPOINTER - 3;   NAMELIST[DECPOINTER] := .Z;   %IRS, 0; NAMELIST[#] := CLEVEL;   CLEVEL := .INC @;   NBS;  DECLARATIONS;   LOCALCOLLAPSE;   FAILIFNOT(ENDBLOCKSYMBOL);   .GOTO DEX;   DDOUBLE:   DECTEST;   .IF LOCLEVEL .THEN   .WHEN LA .ODD .THEN %IRS,LA   .ELSE .WHEN GA .ODD .THEN %IRS,GA;   TYPE := INT;   MAKEWORD;   .IF LOCLEVEL .THEN %IRS,LA .ELSE %IRS,GA;   .GOTO EXTRA;   DARR:   @ := -3; .GOTO ARRCOMMON;   DTABLE:   @ := -2; .GOTO ARRCOMMON;   DTRIANGLE:   @ := -1;   ARRCOMMON:   ARRTYPE := @;   NEXTARRAY:   DECTEST;   TYPE := ATYPE[ARRTYPE];   MAKEWORD;   .WHEN ARRTYPE + 2 .GEZ .THEN   .IF CLEVEL .EVEN .THEN %IRS,LA .ELSE %IRS,GA;   .IF BASIC(LATERSYMBOL.THEN   .BEGIN     NBS;     GETADD;     VALUE := ARRTYPE;     SETWORD;   .END .ELSE ARRAYVALUES;   .GOTO EXTRA;   DCON:   DECTEST;   TYPE := CONST;    MAKEWORD;    STACK(GETADD);   FAILIFNOT(EQUALSSYMBOL);    CONSTEXPRESSION;   ADD := UNSTACK;    SETWORD;    .GOTO EXTRA;   DCCON: ;   DECTEST;   TYPE := COMPCONST;    MAKEDEC;   FAILIFNOT(EQUALSSYMBOL);    STACK(POS);    CONSTEXPRESSION;   POS := UNSTACK;   PUTADD(VALUE);   .GOTO EXTRA;   DLAB:   DECTEST;   TYPE := LABEL;    MAKEDEC;    .IF LOCLEVEL .THEN    PUTADD('100777)   .ELSE   .BEGIN     PUTADD(.SSM GA);     %IRS,GA;   .END;    .GOTO EXTRA;   DPROC:   SETKWITHPROCTYPE;    IDENTIFIER;    .IF TYPE .Z .THEN   .BEGIN     NEWLEVEL:     TYPE := K;      MAKEWORD;      CHAR1 := DECPOINTER;   .END   .ELSE   .BEGIN     .WHEN LEVEL .Z .THEN .GOTO NEWLEVEL& PRE-DECLARED     .WHEN TYPE .NE  K .THEN      FAIL(DIFFPROCTYPE);     .WHEN GETCODE(GETADD.NZ .THEN FAIL(PDECTWICE);    .END;   STACK(POS);   FAILIFNOT(SEMICOLONSYMBOL);   .WHEN .SENSE4 .THEN   .BEGIN     NEWLINE;  LOCDP := CHAR1;     PRINTIDENT;  OUTSIX(LOCAL);   .END;   DECPOINTER := DECPOINTER - 3;    NAMELIST[DECPOINTER] := .Z;   %IRS,0; NAMELIST[#] := CLEVEL;   CLEVEL := .INC @;    DECLARATIONS;    POS := UNSTACK;   .WHEN GETADD - '1000 .GEZ .THEN ADD := @ + LSTART;   CODE[ADD] := LOCAL;   TYPE := NAMELIST[POS];   STACK(LA);    PROCPOSITION := LA + '101000;   .WHEN TYPE .AND '177776 = '12 .THEN   PROCPOSITION := .SSP PROCPOSITION;   GENERATE(.Z);   STATEMENT;    GENERATE(UNSTACK JMPI + '1000);    CLEARWORKSPACE;   LOCALCOLLAPSE;    .GOTO DEX;   DFORW:   NBS;    SETKWITHPROCTYPE;    MORE12:   IDENTIFIER;    NOTDECLAREDCHECK;    TYPE := K;    MAKEWORD;    JJ := GETADD;   .IF BASIC(EQUALSSYMBOL.THEN   .BEGIN     NBS;     CONSTEXPRESSION;     @ := VALUE;   .END   .ELSE @ := .Z;   CODE[JJ] := @;   .WHEN BSCOMMA .THEN   .BEGIN     NBS;     .GOTO MORE12;   .END;   .GOTO DEX;   DSWITCH:   DECTEST;   TYPE := SWTCH;    MAKEWORD;    FAILIFNOT(EQUALSSYMBOL);    STACK(GETADD);   MORE13:;   IDENTIFIER;    .WHEN TYPE .NE LABEL .THEN   .BEGIN     NOTDECLAREDCHECK;     TYPE := LABEL;     MAKEDEC;     LEVEL := CLEVEL;     .IF LOCLEVEL .THEN @ := '100777     .ELSE     .BEGIN       @ := .SSM GA; %IRS,GA;     .END;     ADD := @;     PUTADD(@);   .END;   .IF LEVEL < 2 .THEN    GENERATE(.SSM ADD)   .ELSE   .BEGIN     PUTADD(.SSM LA);     GENERATE(.SSP(ADD LSTART));   .END;   .WHEN BSCOMMA .THEN   .BEGIN     NBS;      .GOTO MORE13   .END;    ADD := UNSTACK;    VALUE := LOCAL + '140000;   SETWORD;    .GOTO DEX;   DNEXT: ;   NBS;   NSTART := LOCAL + '1000  .AND '177000;   .GOTO ORG;   DORG: ;   NBS;   CONSTEXPRESSION;   .WHEN VALUE .Z .THEN   @ := .NEG CPPT .SHSRA 1 + LSTART LA;   NSTART := @;   ORG:   CLEARPOOL;   NEWLINEOUTSIX(LOCAL);   LSTART := NSTART .AND '177000;   LA := @ .NEV NSTART;   .GOTO DEX;   DSTRING:   DECTEST;   TYPE := ARRAY;    MAKEWORD;    GETADD;   VALUE := LOCAL + '40000;   SETWORD;    .WHEN BS .NE  EQUALSSYMBOL .THEN    FAIL(NULLSTRING);    VISIBLECHAR:   INCHAR;    .WHEN BASIC(SPACE.THEN .GOTO VISIBLECHAR;   CHAR1 := BS;    K := .Z;   MORE5 :;    INCHAR;    .WHEN BS .NE  CHAR1 .THEN    .BEGIN     .IF K .EVEN .THEN      J := .SWOP BS     .ELSE GENWORD(J BS);     %IRS,K;     .GOTO MORE5   .END;    .WHEN K .ODD .THEN   GENWORD(J SPACE);   NBS;    .GOTO EXTRA;   DGLOBAL:   NEWLINEOCTAL3(GA);   NBS;   CONSTEXPRESSION;   GA := VALUE;   .GOTO DEX;   DSET:   NBS;    IDENTIFIER;    .WHEN TYPE ARRAY .THEN .GOTO PASS;   .WHEN .NE TABLE .THEN FAIL(SETNARRAY);   PASS:   .IF GETCODE(ADD.GEZ .THEN FAIL(ARRTWICE)   .ELSE   .BEGIN     ARRTYPE := @; ARRAYVALUES;   .END;   .GOTO EXTRA;   DFILE:   .FOR JJ := -3 .DO   .BEGIN     NBS;  KK := .SWOP BS;     NBS;  @ := BS .NEV KK;     # := JJ; %STA*'771;   & MAKE UP FILENAME   .END;   INDEVICE := 1;  %IAB;  & SET UP PARMS FOR 'OPEN'   @ := .CODEWORD LINE;   %JST*'763;  & OPEN FILE   NBSDEX:   NBS;   .GOTO START;   DPAPERTAPE:   INDEVICE := -1; .GOTO NBSDEX; .END; .NEXTSECTOR; &*********************************************************
First Page Previous Page   Next Page Last Page