@CAT,P 1015-017-023.,///10000 @ASG,T TEMP.,///10000 @ELT,OI TEMP.1015-017-023,,,130075053241,000 )@@G@@**PF**@@@@Z^@@@@@@@@@@@[@#&@@@]FE@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@P@@]O@@@]F^ ;Q@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@ @@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@AK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@DAN )@@G@@SORTF @@^@@@@@[@@CNEWS @ @@@[@@@@@^@@@@W@JX*^#DKTCORE AO )@@G@@@@@@@@@@[@@# @ @@@[]@@@@[@@@@W^J8N^#DKTCORE @@@@@@@@ @@@AP )@@G@@ @@@@WA@@[@@[@@@@W J8O^#DSORTF @@B@@@@@[@@@DOC AQ )@@G@@@ @@@[B@@@@A@@@@WBJU4^#DSORTF-DRIVER@@@@@@@@[@@A @ @@@[]@@@@-AR )@@G@@@@@@WH^+RDDESORTF-DRIVER@@@@@@@@ @@@ @@@@W4@@[@@A@@@@W,^>)DDEAS )@@G@@SORTF @@@@@@@@[@@@ @ @@@[]@@@[)@@@@W5HF3[QFSORTF AT )@@G@@@@@@@@@@ @@D @@@@Y(@@[@@O@@@@YPHG9[QFSORTF @@@@@@@@A@@@AU )@@G@@ )@@]@@@@@@@U@@@@Y%HH^[QFHDG @@@@@@@@[@@; AV )@@G@@@ @@@[]@@@@Q@@@@X5C;CFKCNEWEDQ @@@@@@@K[@@@ @ @@@["@@@@[AW )@@G@@@@@@YFK%_ CECALLR @@@@@@@@[@@. @ @@@[]@@@@X@@@@YGC/XFKCAX )@@G@@EDDBF @@@@@@@@[@[@ @ @@@[]@@@@S@@@@Y(MV#D]BCOMMAND AY )@@G@@@@@@@@@K[@@@SUMMARY @ @@@[[@@@[L@@@@Z[OV'CJBNEWCOPY @@@@@@@K[@@@AZ )@@G@@ @ @@@["@@@@[@@@@)MK'^A]EPRINT @@@@@@@@[@@5 BA )@@G@@@ @@@[]@@@@O@@@@)NC"8FKCDNG @@@@@?@@[@@4 @ @@@[]@@@@YBB )@@G@@@@@@)$C.=FKCCTABLE @@@@@@@K[@@@ @ @@@[[@@@[!@@@@- N6@@@@@[@@@ @ @@@[A@@@@ BQ )@@G@@@@@[[]C^>CKBEDQC$ @@@@@@@@[@[EP1MAP @ @@@[A@@@@ @@@[[BL5/FFEBR )@@G@@P1MAP @@(@@@@@[@@@SNOOPY @ @@@[A@@@@A@@@[[GC^>CKBCERU$ BS )@@G@@@@@@@@@@[@@$ @ @@@[]@@@@K@@@[[MN@!BECCERU$ @@@@@@@@ @@@BT )@@G@@ATT @@@[[+@@A@@@@@@[[+L17EHESYSIO @@@@@@@@[@@, BU )@@G@@@ @@@[]@@@[/@@@[[*B?OFEEP1MAP @@@@@@@@[@@@FLAP @ @@@[A@@@@ BV )@@G@@@@@[#=C^>CKBFILE @@@@[D@@[@@7 @ @@@[]@@@#P@@@[#(D[FFKCBW )@@G@@MACS @@@@@@@@[@@0 @ @@@[]@@@#K@@@[A"C3)FKCEDQT BX )@@G@@@@@@@@@@[@@@P1MAP @ @@@[A@@@@ @@@[EIL*>FFEEDDBK @@@@@@@@[@@_BY )@@G@@ @ @@@[]@@@[E@@@[ENL^2 ]CSYSIO @@@@@@@@ @@@ BZ )@@G@@@@@[F\@@^@@M@@@[FXK<4G]EMISC @@@@@@@@ @@@ @@@[G=@@O@@1CA )@@G@@@@@[F3K=MG]EMACS @@@@@@@@ @@@ @@@[HL@@^@@T@@@[G8K=!G]ECB )@@G@@VARS @@@@@@@@ @@@ @@@[H-@@#@@G@@@[HPK=/G]EFLC CC )@@G@@@@@@@@@@ @@@ @@@[I#@@^@@Z@@@[H=K>LG]EIRAS @@@@@@@@ @@@CD )@@G@@ @@@[IN@@^@@G@@@[IBK>)G]EDNG @@@@@@@@ @@@ CE )@@G@@@@@[IW@@#@@ @@@[IRK>%G]EPRINT @@@@@@@@ @@@ @@@[I+@@]@@#CF )@@G@@@@@[IZK>2G]ETOPS @@@@@@@@ @@@ @@@[I*@@#@@^@@@[I=K>'G]ECG )@@G@@FILE @@@@@@@@ @@@ @@@[JE@@A@@Z@@@[I:K&IG]EGP CH )@@G@@@@@@@@@@ @@@ @@@[J%@@ @@U@@@[JKK&>G]ETXD @@@@@@@@ @@@CI )@@G@@ @@@[J8@@]@@D@@@[J\K&,G]EIMM @@@@@@@@ @@@ CJ )@@G@@@@@[K[@@#@@B@@@[J'K&'G]EHDG @@@@@@@@ @@@ @@@[KC@@]@@^CK )@@G@@@@@[K^K$^G]ESEQ @@@@@@@@ @@@ @@@[KI@@]@@^@@@[KEK$GG]ECL )@@G@@CALLR @@@@@@@@ @@@ @@@[KP@@#@@ @@@[KKK$RG]EMSGS CM )@@G@@@@@@@@@@ @@@ @@@[K(@@J@@L@@@[KSK$=G]EEDDBK @@@@@@@@ @@@CN )@@G@@ @@@[LQ@@G@@Y@@@[K8K(WG]EEDDBF @@@@@@@@ @@@ CO )@@G@@@@@[L>@@]@@#@@@[L+K(*G]EMANUAL @@@@@@@K[@@@ @ @@@[[@@@NXCP )@@G@@@@@[L$N)'D#EMCC @@@@@@@@[@[# @ @@@[]@@@]Z@@@[>^C1&FKCCQ )@@G@@MCC @@@@@@@@ @@@ @@@[$'@@I@@R@@@[$ZGFEMACROS @@@@@@@@[@@@NYU CY )@@G@@@ @@@[@@@@@C@@@]##[2']]FEDQ @@@@@@@K[@@@NEWS @ @@@[[@@@#KCZ )@@G@@@@@]#F[2;]]FAAPCT @@@@@@@@[@@@ @ @@@[@@@@@K@@@@!4F]L[QFDA )@@G@@CKEY @@@@@@@@[@@@ @ @@@[@@@@[D@@@@,^FAO[QFCNSLIT DB )@@G@@@@@@@@@@[@@@ @ @@@[@@@@@B@@@@\HFE:[QFCSN @@@@@@@@[@@@DC )@@G@@ @ @@@[@@@@@^@@@@\OJ"K]$GBEDRC @@@@@@@@[@@@ @ @@@[@@@@@^@@@@\&KA1GBEDF )@@G@@EX8LOD @@@@@@@@[@@@ @ @@@[@@@@@]@@@@\%KB[GBEEXITF0 DG )@@G@@@@@@@@@@[@@@ @ @@@[@@@@@+@@@@\?KEXGBEFNCCNT @@@@[)@@[@@@DH )@@G@@ @ @@@[@@@@@^@@@@0IKFQGBEINIT1 @@@@[(@@[@@@ DI )@@G@@@ @@@[@@@@@^@@@@0MI(Q[]FINIT2 @@@@@@@@[@@@ @ @@@[@@@@@^DJ )@@G@@@@@@0QKG3GBEIO @@@@@@@@[@@@ @ @@@[@@@@@D@@@@0UAW9GMEDK )@@G@@KPOOL @@@@@@@@[@@@ @ @@@[@@@@@[@@@@0[L&EPEIO-WITH-FIX @@@@@@@@[@@@ @ @@@[@@@@[[EN )@@G@@@@@@8SL3 EQEAASMTAGS @@@@@@@@[@@@ @ @@@[[@@@[N@@@@9TEN5EREEO )@@G@@FALL @@@@@@@@[@@@ @ @@@[[@@@@Q@@@@'?O/1EVESN$AP EP )@@G@@@@@@@@@@[@@@ @ @@@[@@@@[=@@@@;]@I]EWEIO @@@@@@@@[@@@EQ )@@G@@ @ @@@[@@@@@/@@@@/&KZ%EYEIOMSA @@@@@@@@[@@@ ER )@@G@@@ @@@[@@@@@ @@@@.+MQREYESMSAPR @@@@]A@@[@@@ @ @@@[@@@@@FES )@@G@@@@@@.$MU2GDESMUPQ @@@@@@@@[@@@ EW )@@G@@@ @@@[@@@@@ @@@@":J#4GFEK DISTRIBUTION <<<<<<<<<',/,@G@@@@ *' ACCEX )@@G@@OUNT',T16,'FILES',T26,'FIXED',T37,'REMOV',T46,'SEC TAPES', @F@@@@ *EY )@@G@@T58,'V-OPTION',T69,'G-OPTION',T84,'F2',T95,'F4',T105,'F17', @E@@@@ *EZ )@@G@@T116,'F14',T127,'F40',/,' -----',21('------'),/,) @[@@@@ @ @@@@FA )@@G@@ 1003 FORMAT (1X,2A6,I6,10I11)@[@@@@ @B@@@@ 1004 FORMAT (1X,2A6,I4,FB )@@G@@I7,I6,6I5,2I6) @[@@@@ @D@@@@ 1005 FORMAT ('0FILES:',I6,', FIXEDFC )@@G@@ TRACKS:',I6, @E@@@@ *', V-OPT TRACKS:',I6,', SECURE BACKUP BLFD )@@G@@OCKS:',I6,/,@C@@@@ *16X,'REMOV TRACKS:',I6,', G-OPT TRACKS:',@ @@@@FE )@@G@@ *I6,A1,' UNLOADED:',I6) @[@@@@ @C@@@@ 1006 FORMAT(1H1,'SUMMARFF )@@G@@Y BY BILLING AREA: ', @E@@@@ *3X,'FILES (F) TRACKS (R) V/G-OPFG )@@G@@T SEC TAPES'/) @[@@@@ @A@@@@ 1007 FORMAT(1H0,4A6,4I9,3X,I9) FH )@@G@@@[@@@@ @ @@@@ 1008 FORMAT ('0END GBILL') @[@@@@ @ @@@@ 2000 FI )@@G@@FORMAT(4A6,I4,10I5,'GB')@[@@@@ @]@@@@ END ___ F1RE BACKUP BLFJ )@@G@@)@@@F]S@@@@@)@#@C@)@]@C@)[G@C@)@#@IS)@?@C@IN HOU@@@@@[@@@@@@@@@@@@@@@@@@FK )@@G@@/,0@@@AA@@@F)@![S@@@@@@@ /AMC ORNELLROCK/C ER L CENTMEDICAFL )@@G@@ SE AB@@@F)@8[S@@@@@@@,G) ACT (T,USTUDENCH RESEARSORED FM )@@G@@UNSPON SEARCHRED RESPONSOAC@@@F)[#[C@@@@@@@)@[@E@@@@@@@ FN )@@G@@ OTHER EXEC CTS AD@@@F)@][F#L#L#L#L] #@K3@@@@@FO )@@G@@;)@@@PC@@@@]@[=@@@@@@@[H/,0@@@ @@[X4 @@[X3 @@[X2 @@[X1AE@@@F)@F[M[@^G^G1FP )@@G@@#H#G@@C@@@@][^0@@]+8);__C^)@@][@@@@#C/@@@[/K@@@L*@@@@GG/@__";C@@@ RETURN @^@@@ / . DATA STORAGE @#@@@ PLRDTA SFW 0 .@^@@@ GM )@@G@@ZZ* PROC *2,0 . @^@A@ ZSD*(ZZ(1,1)) EQU ZSQ(1)@ @@@AZSD*(ZZ(1,1)GN )@@G@@+1) EQU ZSQ(1) @ @A@ ZSQ*(1) EQU (ZZ(1,4)+5)/6+2 @A@@@AZSQ*(1) EQU GO )@@G@@ (ZZ(1,4)+3)/4+2+ZSQ(1) @#@@@ END . @#@@@ ZSQ(1) EQU SDHGP )@@G@@@#@@@ @ADD COPYMAIN1 @A@@@ KFIX EQU +(IN 63,0,1,0) . @^@@@AGQ )@@G@@Y FORM 18,9,9 . @#@@@ Z* PROC . @A@A@ +Z(1,1)-PGR )@@G@@LMAIN+HTBLT-KFIX @B@@@A +Z(1,1)-PLMAIN+HTBLT-KFIX,Z(1,2) @#@@@AGS )@@G@@ END . @#@@@ @ADD COPYMAIN2 @D@@@A/ . THE FOLLOWING NGT )@@G@@ONSENSE IS ONLY TO SATISFY THE@E@@@A . 1108 ASSEMBLER WHICH INSISTGU )@@G@@S THAT EVERY LABEL IS @#@@@A. DEFINED @[@@@A. @]@@@ABFABS GV )@@G@@ EQU 0@]@@@ABFCPBF EQU 0@]@@@ABFMAX EQU 0 @]@@@ABFMIN EQU 0 @]@@@ABFMOD GW )@@G@@EQU 0 @]@@@ABFSIGN EQU 0@]@@@ABFFLR EQU 0 @]@@@ABFCEIL EQU 0@]@@@ABFROUNGX )@@G@@ EQU 0@]@@@ABFTRUN EQU 0@]@@@ABFCPLE EQU 0@]@@@ABFCONJ EQU 0@]@@@ABFIMAGGY )@@G@@ EQU 0@]@@@ABFIMBF EQU 0@]@@@ABFREAL EQU 0@]@@@ABFRLBF EQU 0@]@@@ABFEXP GZ )@@G@@EQU 0 @]@@@ABFLOG EQU 0 @]@@@ABFLOG1 EQU 0@]@@@ABFLOG2 EQU 0@]@@@ABFATNDHA )@@G@@ EQU 0@]@@@ABFATAN EQU 0@]@@@ABFTAN EQU 0 @]@@@ABFTAND EQU 0@]@@@ABFSINDHB )@@G@@ EQU 0@]@@@ABFSIN EQU 0 @]@@@ABFCOSD EQU 0@]@@@ABFCOS EQU 0 @]@@@ABFSQRTHC )@@G@@ EQU 0@]@@@ABFSBST EQU 0@]@@@ABFPVSB EQU 0@]@@@ABFINDX EQU 0@]@@@ABFLNTHHD )@@G@@ EQU 0@]@@@ABFHIGH EQU 0@]@@@ABFLOW EQU 0 @]@@@ABFLBND EQU 0@]@@@ABFHBNDHE )@@G@@ EQU 0@]@@@ABFDIM EQU 0 @]@@@ABFDATE EQU 0@]@@@ABFTIME EQU 0@]@@@ABFCVBNHF )@@G@@ EQU 0@]@@@ABFCVBT EQU 0@]@@@ABFCVCH EQU 0@]@@@ABFCVDC EQU 0@]@@@ABFCVFXHG )@@G@@ EQU 0@]@@@ABFCVFL EQU 0@]@@@ABFCVPR EQU 0@]@@@ABFTRNS EQU 0@]@@@ABFVERYHH )@@G@@ EQU 0@]@@@ABFSTRI EQU 0@]@C@ABFSTBF EQU 0@]@@@CBFSMBF EQU 0@]@@@ABFADD HI )@@G@@EQU 0 @]@@@ABFAFTR EQU 0@]@@@ABFBFOR EQU 0@]@@@ABFBOOL EQU 0@]@@@ABFCLATHJ )@@G@@ EQU 0@]@@@ABFCPLE EQU 0@]@@@ABFDCAT EQU 0@]@@@ABFDIVF EQU 0@]@@@ABFDOTFHK )@@G@@ EQU 0@]@@@ABFEVRY EQU 0@]@@@ABFLINO EQU 0@]@@@ABFMPY EQU 0 @]@@@ABFPANOHL )@@G@@ EQU 0@]@@@ABFPABF EQU 0@]@@@ABFPROD EQU 0@]@@@ABFRVSE EQU 0@]@@@ABFSOMEHM )@@G@@ EQU 0@]@@@ABFSUBF EQU 0@]@@@ABFSUM EQU 0 @]@@@ABFRAND EQU 0@]@@@ABFENDFHN )@@G@@ EQU 0@]@@@ABFCLCK EQU 0@]@@@ABFCLPV EQU 0@]@@@ABFCSF$ EQU 0@]@@@ABFTRIMHO )@@G@@ EQU 0@]@@@ABFUNPV EQU 0@]@@@ABFNULF EQU 0@]@@@ABFALCN EQU 0@]@@@ABFEMPTHP )@@G@@ EQU 0@]@@@ABFADDR EQU 0@]@@@ABFNAME EQU 0@]@@@ABFONCD EQU 0@]@@@BBFSTBFHQ )@@G@@ EQU 0@]@@@BBFOCBF EQU 0@]@@@BBFOSBF EQU 0@#@@@DBFONFI EQU 0 . @#@@@DHR )@@G@@BFONFL EQU 0 . @#@@@DBFONLO EQU 0 . @#@@@ END . ___^Z(HS )@@G@@C@@^+?'=@@@I/K@[X5R;@@@@A$@^[Y*4D^W:/K@^)T9(@^H] @@^FBR;@^H]'=@@@#R7G@@#HT )@@G@@:8@@@ %8K@@[/K@^Z6^#0^WWR#@^FB:@@^W\/K@^)U%8K@@[/K@^)T 0@^FBRF@^FB:8@*@PHU )@@G@@*[S@@@*SDFF*@C@@@E. COPYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@EHV )@@G@@. @D@@@E. QUESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@EHW )@@G@@. @ @@@E. MARVIN V. ZELKOWITZ @B@@@E. DEPARTMENT OF CHX )@@G@@OMPUTER SCIENCE @A@@@E. UNIVERSITY OF MARYLAND @B@@@E. HY )@@G@@ COLLEGE PARK, MARYLAND 20742 @[@@@E. @G@@@E. PERMISSIOHZ )@@G@@N TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEY@E@@@E. REPRESENIA )@@G@@T IS GRANTED UNDER THE FOLLOWING CONDITIONS: @[@@@E. @G@@@E. IB )@@G@@ 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@EIC )@@G@@. THESE LISTINGS PROVIDED THAT THE NAME PLUM OR UNIVERSITY OF MARYLANDID )@@G@@@E@@@E. PL/1 COMPILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@EIE )@@G@@. @F@@@E. 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDIF )@@G@@ED: @[@@@E. @G@@@E. (A) ANY RESULTING PROGRAM, OR REPORT, PIG )@@G@@APER OR DOCUMENTATION @G@@@E. DESCRIBING SUCH PROGRAM WILL CLEAIH )@@G@@RLY INDICATE THAT THE PROGRAM @E@@@E. IS A DIALECT OF PLUM OR IS II )@@G@@DERIVED FROM PLUM, AND @[@@@E. @G@@@E. (B) ALL SUCH MODIFICAIJ )@@G@@TIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@E. OF ERRORS IN THIK )@@G@@E SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@E. A BRIEF DESCRIPIL )@@G@@TION OF THE FEATURE ADDED SHALL BE SUBMITTED @C@@@E. TO THE UNIM )@@G@@IVERSITY OF MARYLAND, AND @[@@@E. @F@@@E. (C) NO PROGRAMSIN )@@G@@ DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@E. WITHOUT WRITTENIO )@@G@@ APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND @[@@@E. @F@@@E. IP )@@G@@ (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@E. IQ )@@G@@ LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@EIR )@@G@@. WHETHER THE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF IS )@@G@@@E@@@E. MARYLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@EIT )@@G@@. @G@@@E. 3. THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILERIU )@@G@@ ITSELF, @F@@@E. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN IV )@@G@@USING PLUM. @E@@@E. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USIW )@@G@@ER TO @F@@@E. EXPERIMENT WITH THE COMPILER AS LONG AS THE RESULTING PRIX )@@G@@ODUCT @G@@@E. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT IY )@@G@@DEVELOPED @#@@@E. FROM PLUM. @[@@@E. @[@@@E. @[@@@E. IZ )@@G@@@[@@@E. @[@@@E. @[@@@E/. @ @@@D. LEXICAL ANALYSIS JA )@@G@@@^@@@D. DESTROYS X1-X5 A7-A11 @B@@@D. SETS A14=DLXAC A15=DLXACN F=DLXCJB )@@G@@L @#@@@D AXR$ . @#@@@D DCLRG . @G@E@D REGJC )@@G@@S A7,A8,A9,A10,A11,A12,A13,A14,A15,A3 X1,X2,X3,X4,X5,X6,X7,;@A@E@D JD )@@G@@ X8,X9,X10,A1,A2 . @G@E@D ALREG A7,A8,A9,A10,A11,A12,JE )@@G@@A13,A14,A15 X1,X2,X3,X4,X5,X6,X7,; @ @E@D X8,X9,X10 . JF )@@G@@@[@@@D. @^@@@D. SETUP DSECTS @#@@@D UNLIST . @]@@@DJG )@@G@@@ADD PLTVDS @#@@@D LIST . @]@@@D@ADD PLSAW @E@@@D PLWJH )@@G@@ORD . WORD DESIGNATION DSECT @E@@@D PLSD . JI )@@G@@ SYMBOL TABLE DESCRIPTOR @C@@@D PLAC . JJ )@@G@@ ALPHA CODE @#@@@D PLAR . @F@@@DACCMT EQU 000JK )@@G@@1 . COMMENT TOKEN , INTERNAL ONLY @D@@@DACECMT EQU 000JL )@@G@@2 . END COMMENT */ @D@H@DLXSTOP EQU 128 . JM )@@G@@ STOP CHARACTER @C@@@HLXSTOP EQU 1 . STOP CHAJN )@@G@@RACTER@B@@@D/. LEXICAL ANALYZER - MAIN DRIVER @E@@@DUPPERC* PRJO )@@G@@OC *0,3 . CHANGE LOWER CASE TO UPPER CASE @A@@@D LOAD A3,JP )@@G@@DCVINT . GET CHAR@D@@@D AND,U A3,0777-040 . TURN OFF LOWER CASEJQ )@@G@@ BIT @ @@@D STORE A4,DCVINT . @#@@@D END . @^@@@DJR )@@G@@LXERR* PROC *1 . @A@@@D LOAD A3,LXERR(1,1),I . @ @@@DJS )@@G@@ STORE A3,DLXERN . @#@@@D END . @G@@@DLXT* PROJT )@@G@@C 1 . SPEC SYMBOL ENTRY,NUMBER CLASS,TOKEN @G@@@DXX JU )@@G@@ FORM 9,9,18 . /////////////////////////////////////@D@@@DJV )@@G@@ DO LXT(1,2)>I ,Y(1) EQU LXT(1,2)-LXNQP . @D@@@D DO JW )@@G@@ LXT(1,2)=I ,Y(1) EQU LXNLPN-LXNQP . @B@@@D XX LXT(1,1),JX )@@G@@Y(1),LXT(1,3) . @#@@@D END . @G@@@DLXOP FORM 18,9,9 . JY )@@G@@ *********************************************@F@@@DTC* PROC *1 JZ )@@G@@. SET CHARACTER READING REGS . @E@@@D ON TC(KA )@@G@@1,1)=ON . SET TOKN RADING REGS @ @@@D LOAD X1,DLXX1 KB )@@G@@. @G@@@D LOAD A1,DLXX2 . KC )@@G@@ *******@^@@@D DO 1 , END .@#@@@D OFF . @ @@@DKD )@@G@@ STORE X1,DLXX1 . @G@@@D STORE A1,DLXX2 . KE )@@G@@ *******@#@@@D END . @#@@@DLEXI KF )@@G@@ CSECT 3 @#@@@DLXCRTN LABEL . @E@@@D LOAD A15,DLXACN . KG )@@G@@ SET A15 = NEXT TOKEN @H@@@D IF A14,NE,ACCMT,I THEN,LKH )@@G@@XCR1 . IF CURRENT TOKEN=/* */, IGNORE @G@@@D MOVE DLXSP,DLXKI )@@G@@SPN,2 . MAKE NEXT TOKEN BE CURRENT TOKEN @F@@@D LOAD A14KJ )@@G@@,DLXAC . SET CURRENT TOKEN INTO A14 @D@@@D GOTO LXCKK )@@G@@RAC . GET NEXT TOKEN @C@@@DLXCR1 LABEL . KL )@@G@@ RETURN . @G@@@D TC OFF . SAVE CHAR REAKM )@@G@@DING REGS FOR NEXT TOKEN@D@@@E COUNT DERCTK . UP TOKKN )@@G@@EN COUNT . @D@@@D LOAD X2,DLXSV1 . RESTORE X1 AND X2 KO )@@G@@@F@@@D LOAD A2,DLXSV2 . RESTORE PUTC REGS FROM SYNA KP )@@G@@@E@@@D LOAD F,DLXCL . SET CLASS IN FLAG REG @D@@@DKQ )@@G@@ JMP . RETURN TO CALLER @F@@@DLXGET* LOCKR )@@G@@AL . MAIN ENTRY POINT FROM SYNA . @ @@@D STOKS )@@G@@RE X2,DLXSV1 . @ @@@D STORE A2,DLXSV2 . @F@@@D TC KT )@@G@@ ON . SET CHARACTER READING REGS @G@@@D MOVKU )@@G@@E DLXSP,DLXSPN,2 . MAKE NEXT TOKEN BE CURRENT TOKEN @ @@@D KV )@@G@@ LOAD A14,DLXAC . @D@@@D LOAD A7,DLXERN . PRINT EKW )@@G@@RROR MESSAGE@C@@@D IF A7,EQ,0,I THEN,LXGET1 . -> NO MSG@D@@@DKX )@@G@@ FLINK X10,SAESE . [ERROR MESSAGE] @ @@@D MOVKY )@@G@@E DLXERN,0,I . @#@@@DLXGET1 LABEL . @G@@@D. IF DLXPCK,ZEKZ )@@G@@RO THEN,LXGT1A . -> COL 1 NOT USED ILLEGALLY @D@@@D. LXERR LXELA )@@G@@R25 . [ERROR MESSAGE] @ @@@D. MOVE DLXPCK,0,I . LB )@@G@@@#@@@DLXGT1A LABEL . @F@@@D IF A14,EQ,ACEST,I THEN,LXCR1 .LC )@@G@@ -> END OF SOURCE INPUT @D@@@DLXCRAC LABEL . MAIN CRLD )@@G@@ACKING LOOP @ @@@D MOVE DLXSPN,0,I . @ @@@D MOVE DLXSLE )@@G@@PN+1,0,I . @F@@@D LOAD A8,DLXCHR . WAS CHARACTER GOTTELF )@@G@@N LAST TIME @ @@@D MOVE DLXCHR,0,I . @F@@@D IF A8,LG )@@G@@NE,0,I THEN,LXCRI2 . -> HAVE NEXT CHARACTER @#@@@DLXCRIN LABEL . LH )@@G@@@D@@@D GETC . GET NEXT CHARCTER @#@@@DLXCRI2LI )@@G@@ LABEL . @F@E@D LOAD X3,A8 . PUT CHARACTER INTO LJ )@@G@@INDEX REG @G@E@D LOAD X3,LXTRTB,X3 . GET ADDRESS OF ROUTLK )@@G@@INE FROM TABLE @C@@@E LOAD A3,A8 . XXX XXX XXX LL )@@G@@@F@@@E AND,U A3,0177 . 00X XXX XXX - VALIDATE CHAR LM )@@G@@@^@G@E LOAD X3,A4 . @^@@@G LOAD A3,A4 . @C@@@E LN )@@G@@ LOAD X3,LXTRTB,A3 . CHAR FCN ADDR@H@@@D GOTO 0,X3 . LO )@@G@@ -> PROPER ROUTINE FOR LEADING CHARACTER @A@@@D. LXTRTB SQ LP )@@G@@ OPERATOR CLASS ENTRY @A@@@D. SQ NUMBER CLASS ENTRY @B@@@DLQ )@@G@@. SH FIRST CHARACTER TOKEN CLASS@D@@@DLXTRTB LABEL . LR )@@G@@ BRANCH TABLE . @C@@@H LXT 2,I,LXILGL . LS )@@G@@ ASCII 0 @C@@@H LXT 2,I,LXCDND . STOP CHAR @G@H@DLT )@@G@@ DO 040 , LXT 2,I,LXILGL . ASCII 000 TO 037 LU )@@G@@@G@@@H DO 036 , LXT 2,I,LXILGL . ASCII 002 TLV )@@G@@O 037 @C@@@D LXT 2,I,LXCRIN . 040 BLANK @B@@@D LW )@@G@@ LXT 22,I,LXSPEC . 041 ! @D@@@D LXT 2,I,LXILGL . LX )@@G@@ 042 DOUBLE QUOTE @B@@@D LXT 2,I,LXILGL . 043 # LY )@@G@@@B@@@D LXT 2,I,LXILGL . 044 $ @B@@@D LXT 2,ILZ )@@G@@,LXILGL . 045 % @B@@@D LXT 4,I,LXSPEC . 046 & MA )@@G@@@B@@@D LXT 2,I,LXSCON . 047 ' @B@@@D LXT 2,IMB )@@G@@,LXSPEC . 050 ( @B@@@D LXT 3,I,LXSPEC . 051 ) MC )@@G@@@B@@@D LXT 19,I,LXSPEC . 052 * @B@@@D LXT 5,IMD )@@G@@,LXSPEC . 053 + @B@@@D LXT 26,I,LXSPEC . 054 , ME )@@G@@@B@@@D LXT 8,I,LXSPEC . 055 - @B@@@D LXT 2,LMF )@@G@@XNLPD,LXNDEC . 056 . @B@@@D LXT 24,I,LXSPEC . 057 / MG )@@G@@@B@@@D LXT 1,LXNLP1,LXNCON . 060 0 @B@@@D LXT,1,LXNMH )@@G@@LP1,LXNCON . 061 1 @F@@@D DO 8 , LXT 1,LXNLP2,LXNCON . MI )@@G@@ 062-071 2-9@B@@@D LXT 7,I,LXSPEC . 072 : MJ )@@G@@@C@@@D LXT 6,I,LXSPEC . 073 SEMICOLON@B@@@D LXTMK )@@G@@ 12,I,LXSPEC . 074 < @B@@@D LXT 18,I,LXSPEC . 0ML )@@G@@75 = @B@@@D LXT 10,I,LXSPEC . 076 > @B@@@D LXTMM )@@G@@ 2,I,LXILGL . 077 ? @B@@@D LXT 2,I,LXILGL . 1MN )@@G@@00 @ @B@@@D LXT 1,I,LXALFA . 101 A @B@@@D LXTMO )@@G@@ 1,LXNBIN,LXALFA . 102 B @B@@@D LXT 1,I,LXALFA , 1MP )@@G@@03 C @B@@@D LXT 1,I,LXALFA . 104 D @B@@@D LXTMQ )@@G@@ 1,LXNEXP,LXALFA . 105 E @B@@@D LXT 1,I,LXALFA . 1MR )@@G@@06 F @B@@@D LXT 1,I,LXALFA . 107 G @B@@@D LXTMS )@@G@@ 1,I,LXALFA . 110 H @B@@@D LXT 1,LXNCMP,LXALFA . MT )@@G@@111 I @C@@@D DO 17 , LXT 1,I,LXALFA . 112-132 J-Z @B@@@D MU )@@G@@ LXT 2,I,LXILGL . 133 [ @B@@@D LXT 27,I,LXSPEC . MV )@@G@@ 134 \ @B@@@D LXT 2,I,LXILGL . 135 ] @B@@@D MW )@@G@@ LXT 14,I,LXSPEC . 136 ^ @C@@@D LXT 1,I,LXALFA . MX )@@G@@ 137 BREAK @B@@@D LXT 2,I,LXILGL . 140 @C@@@DMY )@@G@@ LXT 0,I,LXALFA . 141 LC A @C@@@D LXT 0,LMZ )@@G@@XNBNF,LXALFA . 142 LC B @C@@@D LXT 0,I,LXALFA . 1NA )@@G@@43 LC C @C@@@D LXT 0,I,LXALFA . 144 LC D @C@@@DNB )@@G@@ LXT 0,LXNEXF,LXALFA . 145 LC E @D@@@D DO 3 , LXNC )@@G@@T 0,I,LXALFA . 146-150 LC F G H @C@@@D LXT 0,LXNCMQ,LXALFAND )@@G@@ . 151 LC I @D@@@D DO 17 , LXT 0,I,LXALFA . 152-172_ LC JNE )@@G@@-Z @C@@@D DO 5 , LXT 2,I,LXILGL . 0173-177 @D@H@D NF )@@G@@ LXT 2,I,LXCDND . 0200 STOP CHAR @C@@@DLXCTRT LABEL . NG )@@G@@ RETURN POINT @F@@@D +LXALF2 . LNH )@@G@@OWER CASE, CONVERT TO UPPER @E@@@D +LXALF3 . UNI )@@G@@PPER CASE AND DIGITS . @A@@@D/ . NAME CRACKING ROUTINE @#@@@DNJ )@@G@@LXALFA LABEL . @A@@@D MOVE DLXCON,KBLANK,16 . @F@@@D NK )@@G@@ SETPC 4,DLXCON . MOVE NAME TO WORD BOUNDARY @E@@@D NL )@@G@@ SETL A9,63,I . SET MAXIMUM NAME SIZE @#@@@DLXALF2 LABNM )@@G@@EL . @F@@@D SET 040,OFF,A8 . TURN LOWER CASE TO UPPERNN )@@G@@ CASE @#@@@DLXALF3 LABEL . @F@@@D PUTC . PNO )@@G@@UT CHARACTER INTO OUTPUT AREA @D@@@D GETC . GNP )@@G@@ET NEXT INPUT @D@@@D LOAD X3,A8 . PUT INTO X RENQ )@@G@@G @D@@@D L,Q1 A3,LXTRTB,X3 . GET PROPER CODE @D@@@DNR )@@G@@ IF A3,GE,2,I THEN,LXALF4 . -> END OF NAME @E@@@D LOANS )@@G@@D X3,LXCTRT,A3 . GET PROPER LOOP ADDRESS@F@@@D LOOP A9,NT )@@G@@0,X3 . -> LOOP UP TO 63 CHARACTERS/NAME @F@@@D LXERR LXNU )@@G@@ER02 . [EROR MESSAGE, NAME TOO LONG] @#@@@DLXALF4 LABEL . NV )@@G@@@C@@@D LOADA X11,LXALF5 . SAVE RETURN .@#@@@DLXNEXTC LLONW )@@G@@C . @#@@@DLXALF6 LABEL . @G@@@D STORE A8,DLXCHR . SNX )@@G@@AVE NEXT CHARCTER FOR NEXT TIME @#@@@D LJMP . @#@@@DLXALF5NY )@@G@@ LABEL . @D@@@D LPCNT A9,63,I . FIND SIZE OF WORD NZ )@@G@@@D@@@D STORE A9,DLXSZN . SAVE SIZE OF TOKEN @D@@@D OA )@@G@@ LINK LXSRCH . SEARCH FOR NAME . @B@@@D. RETURN WIOB )@@G@@TH X2=BCD ENTRY ADDRESS @ @@@D USING SDBCD,X2 . @E@@@D OC )@@G@@ MOVE DLXACN,SDBAC . SETUP NEXT ALPHA CODE @C@@@D MOVOD )@@G@@E DLXCLN,SDBCLS . RETURN CLASS @E@@@D STORE X2,DLXIDN . OE )@@G@@ SAVE PTR TO SD ENTRY @D@@@D LOADA X2,SDBBCD . SOF )@@G@@AVE PTR TO STRING @ @@@D STORE X2,DLXBCN . @C@@@D GOTOG )@@G@@O LXCRTN . -> RETURN @D@@@DLXILGL LABEL . OH )@@G@@ ILLEGAL SYMBOL . @^@@@D LXERR LXER04 . @D@@@D GOTOI )@@G@@O LXCRAC . -> IGNORE SYMBOL . @ @@@D/. SYMBOL TABLE SEOJ )@@G@@ARCH @ @@@D. ENTRY A9= L'STRING @ @@@D. DLXCON=STOK )@@G@@RING @A@@@D. EXIT X2= -> BCD ENTRY @#@@@DLXSRCH LOCAL . OL )@@G@@@F@@@D LOAD A10,A9. GET NUMBER OF WORDS IN STRING OM )@@G@@@^@@@D ADD A10,3,I. @C@@@D SRB A10,2 . CON )@@G@@HAR/WORD @D@@@D LOAD A8,A10 . SAVE SIZE OF STRINGOO )@@G@@@G@@@D LINK LXHASH. GET HASH A8= INCREMENT, A7=INITOP )@@G@@IAL @F@@@D LOAD X3,A7. SET INITIAL ENTRY IN INDEOQ )@@G@@X REG @ @@@D LOADA X3,HTBLS,X3 . @E@@@D SETL A11,1023,OR )@@G@@I . SET MAX SEARCH LENGTH @#@@@DLXSLOP LABEL. @^@@@D OS )@@G@@ USING WORD,X3. @D@@@D IF W1H1,ZERO THEN,LXSNEW. -> NEW OT )@@G@@WNTRY @D@@@D LSDP X2,W1H1. GET BCD POINTER @^@@@DOU )@@G@@ USING SDBCD,X2.@B@@@D IF A9,NE,SDBCNT THEN,LXSLP1. OV )@@G@@@F@@@D IF SDBBCD,EQ,DLXCON,R,A10 THEN,LXSFND . -> FOUND ENTRYOW )@@G@@@#@@@DLXSLP1 LABEL. @F@@@D LOOP A11,LXSLP2 . -> LOOPOX )@@G@@ TO NEXT TABLE ENTRY @B@@@D. IF HERE, HASH TABLE IS FULL. OY )@@G@@@D@@@D EXERR LXER03 LEVEL,3 . [ERROR] QUIT @D@@@DLXSLP2OZ )@@G@@ LABEL. GET NEW ADDRESS @C@@@D ADD X3,PA )@@G@@A8. GET NEW VALUE@^@@@D LOAD A7,X3 @G@@@D PB )@@G@@ IF A7,LT,HTBLS+1023,I THEN,LXSLOP . -> LOOP GOR NEXT ENTRY @E@@@DPC )@@G@@ SUB X3,1023,I. BACKUP TO START OF TABLE @E@@@D PD )@@G@@ GOTO LXSLOP. -> LOOP FOR NEW ENTRY @F@@@DLXSNEW LABPE )@@G@@EL. ENTRY NOT FOUND IN SYMBOL TABLE@E@@@D LOAPF )@@G@@D X4,X3 . SAVE HTBL ENTRY ADDRES @E@@@D LOAD A7,PG )@@G@@A10 . GET SIZE OF BCD STRING @F@@@D ADD A7,2,I. PH )@@G@@ SET SIZE OF NEEDED BCD SD ENTRY@E@@@D LINK PLALC. PI )@@G@@ ALLOCATE CORE FOR SD @^@@@D LOAD X2,X3. @^@@@DPJ )@@G@@ USING SDBCD,X2.@D@@@D STORE A9,SDBCNT. SAVE LEPK )@@G@@NGTH OF BCD @A@@@D MOVE SDBBCD,DLXCON,R,A10 .@D@@@D MOVPL )@@G@@E SDBCLS,LXID,I. SET CLASS OF BCD @#@@@DLXSRTN LABEL. @^@@@DPM )@@G@@ USING WORD,X4 @C@@@D STORE X2,W1H1. SET ENTPN )@@G@@RY @B@@@D JMP. -> RETURN TO CALLER @E@@@DLXSFND LABPO )@@G@@EL. FOUND PREVIOUS SD FOR IT @C@@@D LOADA A7,PP )@@G@@TVST . SET PTR TO IT@E@@@D IF A7,LT,X2 THEN,JMP . -PQ )@@G@@> SD IN HASH TBLE CARE @D@@@D LOAD A8,X3 . SAVE HTPR )@@G@@BL ADDR @C@@@D LOAD X4,X2. SAVE SD PTR @E@@@DPS )@@G@@ LOAD A7,A10 . ALLOCATE CORE FOR IT @E@@@D PT )@@G@@ ADD A7,2,I. ADD ON FIXED INITIAL PART@C@@@D LINPU )@@G@@K PLALC. ALLOCATE CORE@^@@@D USING WORD,X4. @^@@@DPV )@@G@@ LOAD X2,X3 . @E@@@D MOVE SDBCL4-(IN 0,7,0,0),W1,R,A7PW )@@G@@. MOVE SD'S @D@@@D IF SDBCLK,ZERO THEN,LXSNBF . -> NOT PX )@@G@@BIF @E@@@D LOAD A7,SDLNTH,I . GET SPACE FOR BIF SD PY )@@G@@@^@@@D LINK PLALC . @C@@@D LOAD X4,SDBCLK . PPZ )@@G@@TR TO BIF SD@ @@@D USING SDSECT,X3 . @G@@@D MOVE SDCQA )@@G@@LS4-(IN 0,7,0,0),W1,SDBIFS . MOVE SD TO WORKSPACE @B@@@D STOQB )@@G@@RE X3,SDBCLK,X2 . BCD->SD@B@@@D STORE X2,SDBCHI,X3 . SQC )@@G@@D->BCD@E@@@D LOAD X4,ADBK0S . ADD TO BLOCK 0 CHAIN QD )@@G@@@#@@@DLXSNBF2 LABEL @D@@@D LOAD A3,SDNXDC,X4 . OLD 1STQE )@@G@@ IN CHAIN @C@@@D STORE X3,SDNXDC,X4 . NEW FIRST @E@@@DQF )@@G@@ STORE A3,SDNXDC,X3 . OLD FIRST NOW SECOND @E@@@D QG )@@G@@ IF SDBDLK,ZERO THEN,LXSNBF . -> NO PSEUDO VAR SD@D@@@D LOAQH )@@G@@D X4,SDBDLK . GET PSEUDO VAR SD @D@@@D LOAD A7,SDLNTHQI )@@G@@,I . GET SPACE FOR IT @^@@@D LINK PLALC . @H@@@D QJ )@@G@@ MOVE SDCLS4-(IN 0,7,0,0),W1,SDBIFS . MOVE SD TO WORKSPACE QK )@@G@@@C@@@D STORE X2,SDBCHI,X3 . SET SD->BCD @C@@@D LOAQL )@@G@@D X4,SDBCLK,X2 . GET BIF SD @C@@@D STORE X3,SDBDLK,X4 . QM )@@G@@ BIF SD->PV SD@E@@@D GOTO LXSNBF2 . ->ADD TO BLOCQN )@@G@@K 0 CHAIN @#@@@DLXSNBF LABEL . @C@@@D LOAD X4,A8 . QO )@@G@@ REST HTBL PTR@C@@@D GOTO LXSRTN. ->RETURN QP )@@G@@@A@@@D/. LXHASH HASH FUNCTION @C@@@D. ENTRY A8= SIZE QQ )@@G@@OF STRING IN WORDS @ @@@D. DLXCON=STRING @A@@@D. QR )@@G@@ EXIT A7=INITIAL VALUE @C@@@D. A8=INCREMENT USED IF QS )@@G@@COLLISION @#@@@DLXHASH LLOC. @C@@@D LOAD A7,0,I. QT )@@G@@ GET CONSTANT @D@@@D LOADA X2,DLXCON . SET TO READ SQU )@@G@@TRING @E@@@D LOADXI X2,1,I . SET AUTO INCREMENT OF 1 QV )@@G@@@F@@@D SETL A8 . SET NUMBER OF WORDS TO LOOP ON QW )@@G@@@#@@@DLXHLOP LABEL. @D@@@D ADD A7,0,*X2 . ADD IN QX )@@G@@NEW WORD @E@@@D LOOP A8,LXHLOP . -> LOOP FOR ALL WORQY )@@G@@DS @^@@@D SRBD A7,36 . @ @@@D DIV A7,1023,I . QZ )@@G@@@C@@@D LOAD A7,A8 . SET REMAINDER@E@@@D LOARA )@@G@@D A8,31,I. SET INCREMENTAL VALUE @ @@@D LJMP. RB )@@G@@ -> RETURN @#@@@DLEXI CSECT 3. @^@@@DDLXZER SF '000E' . @^@@@DRC )@@G@@FILL(1) SF '+000' @#@@@D CEND @G@@@D/. OPERATOR RD )@@G@@CRACKER A8=CHARACTER , X3=A(LXTRTB ENTRY) @#@@@DLXSPEC LABRE )@@G@@EL . @^@@@D LOAD X3,A8 . @F@@@D LOADA X3,LXTRTB,X3 . RF )@@G@@ POINT TO OPERATOR TABLE CODE @^@@@D USING WORD,X3 @D@@@DRG )@@G@@ LOAD X3,W1Q1 . GET OPTBL OFFSET @F@@@D LOARH )@@G@@DA X4,LXOPTB-2,X3 . X4=A(OPTBL ENTRY FOR OPERATOR) @ @@@D USIRI )@@G@@NG WORD,X4 . @C@@@D MOVE DLXACN,W1H1 . SETUP ACN RJ )@@G@@@C@@@D MOVE DLXCLN,W1Q3 . MOVE CLASS @F@@@D IF RK )@@G@@ W1Q4,ZERO THEN,LXCRTN . -> ONE CHARACTER OPERATOR @F@@@D GETRL )@@G@@C . READ POSSIBLE SPLIT OPERATOR @H@@@D SETRM )@@G@@L A7,W1Q4 . SET NUM. OF 2 CHAR ACTER OPS TO LOOK AT @#@@@DRN )@@G@@LXSPC0 LABEL . @E@@@D ADD X4,1,I . GO TO NEXT TARO )@@G@@BLE ENTRY @E@@@D IF A8,EQ,W1Q4 THEN,LXSPC1 . -> FOUND OPERARP )@@G@@TOR @E@@@D LOOP A7,LXSPC0 . -> TRY NEXT TABLE ENTRY RQ )@@G@@@E@@@D LINK LXNEXTC . NOT SPLIT, SSAVE CHAR @C@@@DRR )@@G@@ GOTO LXCRTN . -> RETURN @#@@@DLXSPC1 LABEL . RS )@@G@@@E@@@D MOVE DLXACN,W1H1 . SET 2 CHAR OPERATOR CLASS@ @@@DRT )@@G@@ MOVE DLXCLN,W1Q3 . @D@@@D LOAD A15,DLXACN . SRU )@@G@@EE IF COMMENT @F@@@D IF A15,GT,ACECMT,I THEN,LXCR1 . -> NRV )@@G@@OT COMMENT, RETURN@E@@@D IF 1,ON,DLXDOP THEN,LXSP56 . -> /*D RW )@@G@@OPTION ON @G@@@D IF A15,EQ,ACCMT,I THEN,LXSP57 ELSE,LXCRAC RX )@@G@@. CMMT , IGNORE @D@@@DLXSP56 LABEL . DEBUG OPTION RY )@@G@@ON @E@@@D IF A15,EQ,ACCMT,I THEN,LXCRAC . -> IGNORE /* RZ )@@G@@@D@@@D MOVE DLXDOP,0,I . SET END OF DEBUG @C@@@D SA )@@G@@ GOTO LXCRAC . -> NEXT TOKEN@E@@@DLXSP57 LABEL . SB )@@G@@ FOUND COMMENT, IS IT /*D @#@@@D GETC . @E@E@D SC )@@G@@ SET 040,OFF,A8 . TURN LOWER CASE TO UPPER @F@E@D IF SD )@@G@@ A8,NE,'D',I THEN,LXSP55 . ->NOT /*D @C@@@E LOASE )@@G@@D A3,A8 . SEE IF LC 'D'@^@@@E AND,U A3,0737 .@D@@@ESF )@@G@@ IF A4,NE,'D',I THEN,LXSP55 . -> NOT 'D' @G@@@D IF SG )@@G@@ 01,OFF,LIMALX THEN,LXSP55 . -> OPTION OFF @D@@@D SH )@@G@@ MOVE DLXDOP,1,I . SET FLAG - IN /*D @^@@@D GOTO LXCSI )@@G@@RAC . @#@@@DLXSP53 LABEL . @C@@@D GETC . GSJ )@@G@@ET SYMBOL @#@@@DLXSP55 LABEL . @E@@@D IF A8,EQ,'*',I THESK )@@G@@N,LXSP52 . -> POSSIBLE */ @#@@@DLXSP54 LABEL . @D@@@D IF SL )@@G@@ A8,NE,LXSTOP,I THEN,LXSP53 . -> NOT EOF@H@@@D LXERR LXER11 . SM )@@G@@ [ERROR MESSAGE ,COMMENT AT END OF CARD ] @D@@@D GOTSN )@@G@@O LXCDND . -> READ NEXT CARD @#@@@DLXSP52 LABEL . @C@@@DSO )@@G@@ GETC . READ '/' @E@@@D IF A8,SP )@@G@@EQ,'*',I THEN,LXSP52 . -> POSSIBLE * OF */@G@@@D IF A8,NE,'/'SQ )@@G@@,I THEN,LXSP54 . ->NOT */, SEARCH FOR IT AGAIN@D@@@D COUNT DSRSR )@@G@@CMT . UP COMMENT COUNT @F@@@D GOTO LXCRAC . SS )@@G@@ -> FOUND COMMENT, IGNORE IT @B@@@D. LXOPTB SH ALPHA CODE FOR ST )@@G@@OPERATOR @ @@@D. SQ LEXICAL CLASS @D@@@D. SQ NUMSU )@@G@@BER OF SPLIT OPERATORS (ON FIRST) @E@@@D. SECOND OPERATORSV )@@G@@ CHARACTER (ON REMAINING) @A@@@DLXOPTB LXOP ACLPAR,LXLP,0 . (SW )@@G@@@A@@@D LXOP ACRPAR,LXRP,0 . )@A@@@D LXOP ACAND,LXBSX )@@G@@N,0 . &@A@@@D LXOP ACBPL,LXPS,0 . +@A@@@D LXOSY )@@G@@P ACSEMI,LXRSWD,0 . ;@A@@@D LXOP ACCOLN,LXRSWD,0 . :@A@@@DSZ )@@G@@ LXOP ACBMN,LXPS,1 . -@B@@@D LXOP ACPTQ,LXQN,'>' TA )@@G@@. -> @A@@@D LXOP ACGT,LXBN,1 . >@B@@@D LXOTB )@@G@@P ACGE,LXBN,'=' . >= @A@@@D LXOP ACLT,LXBN,1 . ' . ^> @B@@@D LXOP ACNL,LXBNTF )@@G@@,'<' . ^< . @A@@@D LXOP ACEQ,LXBN,0 . =@A@@@D TG )@@G@@ LXOP ACML,LXMU,2 . *@B@@@D LXOP ACEPON,LXBN,'*' . *TH )@@G@@* @B@@@D LXOP ACECMT,LXRSWD,'/' . */ @A@@@D LXOTI )@@G@@P ACOR,LXBN,1 . !@B@@@D LXOP ACCAT,LXBN,'!' . !! TJ )@@G@@@A@@@D LXOP ACDV,LXBN,1 . /@B@@@D LXOP ACCMT,LXRTK )@@G@@SWD,'*' . /* @A@@@D LXOP ACCOMA,LXCM,0 . ,@A@@@D TL )@@G@@ LXOP ACBSLH,LXRSWD,0 . \@A@@@D/. PARSE NUMBER CONSTANTS TM )@@G@@@^@@@D. DLXFLG SET TO: @ @@@D. BIT 0 - E PRESENT @ @@@DTN )@@G@@. BIT 1 - I PRESENT @ @@@D. BIT 2 - B PRESENT @ @@@DTO )@@G@@. BIT 3 - . PRESENT @G@@@DLXNDEC LABEL . ITP )@@G@@NITIAL . SEE IF QUALIFIED NAME SEP. @^@@@D LOAD R1,X1 @^@@@DTQ )@@G@@ LOAD R2,A1 @C@@@D GETC . GET DIGTR )@@G@@IT @D@E@D IF A8,GE,'0',I THEN,LXNDC2 . -> NUMBER @D@@@ETS )@@G@@ IF A8,LT,'9'+1,I THEN,LXNDC2 . -> NUMBER @#@@@ELXNDC3 LABTT )@@G@@EL . @E@@@D LOAD A3,ACQNS,I . SET QUALIFIED NAME SEPARATOR TU )@@G@@@ @@@D STORE A3,DLXACN . @C@@@D MOVE DLXCLN,LXQN,I .TV )@@G@@ SET CLASS @F@@@D STORE A8,DLXCHR . SAVE CHARACTETW )@@G@@R FOR NEXT TIME @C@@@D GOTO LXCRTN . -> RETURN TX )@@G@@@#@@@DLXNDC2 LABEL . @F@@@E IF A8,LT,'0',I THEN,LXNDC3 . -TY )@@G@@>NOT BETWWEEN 0 AND 9 @F@@@E LOAD A8,'.',I . RESET TZ )@@G@@DECIMAL POINT AS CHAR @^@@@D LOAD X1,R1 . @^@@@D LOAUA )@@G@@D A1,R2 . @C@E@D LOAD A8,'.',I . SET . TO READ@C@@@DUB )@@G@@LXNCON LABEL. NUMBER CONSTANT ENTRY POINT @E@@@D LOAD F,0UC )@@G@@010,I. SET FLAG REG TO LZ SWITCH@D@@@D LOADA A3,KFZEROUD )@@G@@ . CLEAR TO '000000' @G@@@D LOADA A2,DLXCON . UE )@@G@@ *******@G@@@D LOAD R1,18,I . UF )@@G@@ *******@G@@@D LINK MO$VEZ . UG )@@G@@ FILL WIRH ZEROES *******@C@@@D MOVE DLXUH )@@G@@CON+18,DLXZER,2 . SET 0E+000 @E@@@D MOVE DCVINT,0,I . SUI )@@G@@ET PREVIOUS DIGIT TO 0 @F@@@D MOVE DCVSV,KBLANK . CLEAR WUJ )@@G@@ORD 1 OF DIGIT AREA @E@@@D LOAD A3,1,I . INITIALUK )@@G@@IZE AT 1 WORD @C@@@D SETL A4,4,I . 4 CHAR/WORD UL )@@G@@@C@@@D STORED A3,DCVFFT . SAVE VALUES @G@@@D SETUM )@@G@@PC 4,DLXCON. STORE NUMBER INTO COLLEXTION AREA @#@@@D UN )@@G@@ PUTC . @D@@@D MOVE DLXCS,'+',I. SET TO + NUMBER UO )@@G@@@C@@@D LOAD A9,0,I. # DIGITS=0 @D@@@D LOAUP )@@G@@D A10,0,I. # LEADING O'S =0 @G@@@D STORE A8,DCVINTUQ )@@G@@ . SAVE FIRST CHAR FOR SYM TAB SRCH @E@@@D GOTO LXNUR )@@G@@LQ1 . -> HAVE FIRST CHARACTER @#@@@DLXNLOP LABEL. @D@@@DUS )@@G@@ GETC. GET NEXT CHARACTER @#@@@DLXNLQ LABUT )@@G@@EL. @C@@@D LINK LXPC . SAVE CHAR @#@@@DLXNLQ1UU )@@G@@ LABEL . @^@@@D USING WORD,X3. @G@@@D LOADA X3,LXTRTBUV )@@G@@. POINT TO MAIN TOKEN CRACKING TABLE @G@@@D ADD X3,UW )@@G@@A8. POINT TO ENTRY FOR THIS CHARACTER @G@@@D LOAUX )@@G@@D X3,W1Q2. HEY OFFSET IN NUMBER CRACKING PART @C@@@D UY )@@G@@ GOTO LXNQP,X3. GO TO ROUTINE@B@@@DLXNQP LABEL. STARTUZ )@@G@@ OF NUMBER CRACKER@F@@@D GOTO LXNLPN. SAVE CHARACTEVA )@@G@@R AND ENT NUMBER @#@@@DLXNLP2 LABEL. @C@@@D SET 0001,ON. VB )@@G@@ B IS ILLEGAL @#@@@DLXNLP1 LABEL. @D@@@D SET 001VC )@@G@@0,OFF. TURN OFF LZ SWITCH @#@@@DLXNLP3 LABEL . @F@@@D VD )@@G@@ PUTC . PUT DIGIT IN COLLEXTION AREA @#@@@DLXNLP5VE )@@G@@ LABEL. @F@@@D ADD A9,1,I. ADD ONE TO NUMBER OVF )@@G@@F DIGITS @C@@@D GOTO LXNLOP. -> NEXT DIGIT@C@@@DVG )@@G@@LXNLPZ LABEL. ZERO FOUND @A@@@D IF 001VH )@@G@@0,OFF THEN,LXNLP3.@F@@@D ADD A10,1,I. ADD 1 IF SIGNVI )@@G@@IFICANT DIGIT @C@@@D SET 0004,ON. LZ SWITCH ON VJ )@@G@@@A@@@D IF 0040,OFF THEN,LXNLOP.@E@@@D SUB A11,1,I. VK )@@G@@ ADJUST CURRENT MODIFIER @C@@@D GOTO LXNLOP. VL )@@G@@ -> NEXT DIGIT@^@@@DLXNLPD LABEL. DIGIT@E@@@D IF 0040,OVM )@@G@@N THEN,LXNER1. -> TWO DECIMAL POINTS @C@@@D SET 0040,ON. VN )@@G@@ SET . FLAG @C@@@D LOAD A11,A9 . SET MODVO )@@G@@IFIER @D@@@D GOTO LXNLOP. -> GET NEXT DIGIT @#@@@DVP )@@G@@LXNEXF LABEL . @#@@@D UPPERC . @ @@@DLXNEXP LABEL. E FOUVQ )@@G@@ND @C@@@D STORE A11,DLXCMD. SAVE MODIFIER@D@@@D VR )@@G@@ LOADA X4,DLXCON+19 . POINT TO EXPONENT @C@@@D SET 040VS )@@G@@0,ON. SET E FOUND @A@@@D. LOOK FOR EXPONENT SIGN VT )@@G@@@#@@@DLXNESG LABEL. @A@@@D GETC. READ NEXY SYMBOL @C@@@DVU )@@G@@ LINK LXPC . SAVE CHAR @C@@@D IF A8,VV )@@G@@EQ,'+',I THEN,LXNEPL. ->+ SIGN@C@@@D IF A8,EQ,'-',I THEN,LXNEMI VW )@@G@@. - FOUND @B@@@D IF A8,LT,'0',I THEN,LXNER4. @D@@@D VX )@@G@@ IF A8,GE,'9'+1,I THEN,LXNER4 ELSE,LXNEDG .@^@@@D USING WORVY )@@G@@D,X4 @A@@@DLXNEMI LABEL. MINUS SIGN FOUND @ @@@D MOVE W1QVZ )@@G@@1,'-',I . @#@@@DLXNEPL LABEL. @C@@@D GETC. WA )@@G@@ READ EXPONENT@D@@@D SET 0002,ON. SET SIGN SWITWB )@@G@@CH @C@@@D LINK LXPC . SAVE CHAR @C@@@D WC )@@G@@ IF A8,LT,'0',I THEN,LXNER5. ->ERROR @B@@@D IF A8,GE,'9'WD )@@G@@+1,I THEN,LXNER5 .@#@@@DLXNEDG LABEL. @F@@@D LOAD A3,W1Q2WE )@@G@@ . GET FIRST DIGIT OF EXPONENT @G@@@D IF A3,NE,'0'WF )@@G@@,I THEN,LXNER3. -> TOO MANY DIGITS IN EXPONENT @#@@@DLXNDG1 LABEL. WG )@@G@@@C@@@D LOAD A3,W1Q1 . GET EXP SIGN @B@@@D LOAWH )@@G@@D A4,W1 . +DDD @B@@@D SLB A4,9 . DDWI )@@G@@D0 @B@@@D ADD A4,A8 . DDDD @D@@@D STOWJ )@@G@@RE A4,W1 . RESET NEW DIGITS @C@@@D STORE A3,W1Q1 WK )@@G@@. RESET SIGN @A@@@D GETC. READ NEXT CHARACTER @E@@@DWL )@@G@@ IF A8,GE,'9'+1,I THEN,LXNLPN . -> END OF NUMBER @C@@@D WM )@@G@@ LINK LXPC . SAVE CHAR @C@@@D IF A8,GE,'0'WN )@@G@@,I THEN,LXNEDG. -> DIGIT@E@@@D IF A8,EQ,'B',I THEN,LXNBNE . -WO )@@G@@> BINARY NUMBER @E@@@D IF A8,EQ,0142,I THEN,LXNBNF . -> LOWWP )@@G@@ER CASE B @#@@@DLXNED2 LABEL. @C@@@D IF A8,EQ,'I',I THEN,LWQ )@@G@@XNCMP. IMAGINARY @D@@@D IF A8,EQ,0151,I THEN,LXNCMQ . -> LOWER WR )@@G@@CASE I@A@@@DLXNLPN LABEL. END OF NUMER LOOP@E@@@D LINK LXNWS )@@G@@EXTC . SAVE CHAR FOR NEXT TIME @A@@@D IF 0040,ON TWT )@@G@@HEN,LXNLO. @C@@@D LOAD A11,A9. SAVE MODIFIER@#@@@DWU )@@G@@LXNLO LABEL. @C@@@D STORE A11,DLXCMD. SAVE MODIFIERWV )@@G@@@B@@@D ADD A9,A10. ADD LZ @D@@@D STORE A9,WW )@@G@@DLXPRE . SAVE PRECISION @D@@@D STORE F,DLXFLG. WX )@@G@@ SAVE FLAGS FOR SYNA@^@@@D. CONVERT NUMBER @E@@@D MOVWY )@@G@@E DCVSV+6,DLXCON,6 . SAVE COLLECTED DIGITS @E@@@D MOVE DLXWZ )@@G@@CON,DCVSV,6 . MOVE IN ORIGINAL STRING @D@@@D LOAD A9,DCVFFTXA )@@G@@ . SET CALL TO LXSRCH @D@@@D SLB A9,2 . XB )@@G@@SIZE IN CHARS @D@@@D IF 0200,OFF THEN,LXN01 . -> NOT COMPXC )@@G@@LEX @^@@@D ADD A9,1,I . @#@@@DLXN01 LABEL . @D@@@D XD )@@G@@ LINK LXSRCH . SEARCH HASH TABLE @D@@@D MOVE DLXXE )@@G@@CON,DCVSV+6,6 . RESTORE DIGITS @ @@@D USING SDBCD,X2 . XF )@@G@@@E@@@D SET 0001+SDBCON,ON,SDBCL4 . SET SD ENTRY BIT @C@@@DXG )@@G@@ STORE X2,DLXIDN . SET PTR TO SD@D@@@D LOADA X3,XH )@@G@@SDBBCD . POINT TO BCD STRING@ @@@D STORE X3,DLXBCN . XI )@@G@@@D@@@D MOVE DLXSZN,SDBCNT . SET SIZE OF STRING @C@@@D XJ )@@G@@ LOAD X3,SDBCLK . SET BCLK PTR @F@@@D IF SDBCLK,NZXK )@@G@@ERO THEN,LXND40 . -> ALREADY CONVERTED @ @@@D USING SDSECT,X3XL )@@G@@ . @G@@@D USING SDBCD,X2 . CONVERT NUMBER (DCVFLG INXM )@@G@@ F REG) @^@@@D LINK CVNUM . @C@@@D LOAD F,DCVFLG XN )@@G@@. SET FLAG REG @D@@@D MOVE DLXCLN,LXIDDN,I . SET XO )@@G@@NUMBER CLASS@E@@@D IF SDDCBN,ON THEN,LXND01 . -> BINARY NUMBEXP )@@G@@R @#@@@DLXND10 LABEL . @D@@@D LINK LXNSD1 . -XQ )@@G@@> ALLOCATE SD @C@@@D MOVE SD2SP,DCVDQP . SET P AND Q XR )@@G@@@E@@@D IF SDFXFL,ON THEN,LXNSDL . -> FLOATING NUMBER @D@@@DXS )@@G@@ MOVE SDFXPT,DCVFFT,2 . SET FUMNY FLOAT @D@@@D IF XT )@@G@@ SDSCAL,NZERO THEN,LXND20 . -> Q "= 0 . @D@@@D MOVE SDFXPT+1,XU )@@G@@DCVINT . SET INTEGER VALUE @D@@@D MOVE SDFXPT,0,I . SXV )@@G@@ET INTEGER VALUE @C@@@D GOTO LXND41 . -> REUTRN XW )@@G@@@D@@@DLXPC LLOC . SAVE CHAR IN NUMBER@C@@@D XX )@@G@@ LOADD A3,DCVFFT . SET REGS @C@@@D LOAD A6,DCVSV-XY )@@G@@1,A3 . GET WORD @E@@@D SLB A6,9 . LEAVE SXZ )@@G@@PACE FOR CHARACTER@D@@@D ADD A6,DCVINT . ADD LAST CHARYA )@@G@@ACTER @E@@@D STORE A8,DCVINT . SAVE DIGIT FOR NECT TIME YB )@@G@@@ @@@D STORE A6,DCVSV-1,A3 .@E@@@D LOOP A4,LXPC2 . YC )@@G@@ -> MORE CHARS IN WORD @C@@@D ADD A3,1,I . AYD )@@G@@DD 1 TO WORD@^@@@D SETL A4,4,I . @D@@@D LOAD A6,KBLANKYE )@@G@@ . CLEAR NEXT WORD @ @@@D STORE A6,DCVSV-1,A3 .@#@@@DYF )@@G@@LXPC2 LABEL . @C@@@D STORED A3,DCVFFT . RESET REGS YG )@@G@@@C@@@D LJMP . -> RETURN @#@@@DLXND20 LABYH )@@G@@EL . @E@@@D MOVE DLXCLN,LXIDCN,I . SET NON INTEGER NUMBER YI )@@G@@@D@@@D MOVE SDFLPT,DCVFLT,2 . SET FLOATING VALUE @C@@@D YJ )@@G@@ GOTO LXND41 . -> RETURN @#@@@DLXND01 LABEL . @D@@@DYK )@@G@@ LINK LXNSD1 . ALLOCATE SPACE @D@@@D SETYL )@@G@@ SDDCBN,ON,SDCLS1 . SET BINARY FLAG @E@@@D MOVE DLXCLN,LXYM )@@G@@IDCN,I . SET NON INTEGER FLAG @E@@@D MOVE SD2SP,DCVBQP . YN )@@G@@ SET SCALE AND PRECISION @D@@@D IF SDFXFL,ON THEN,LXNSDL . YO )@@G@@-> FLOATING POINT @D@@@D MOVE SDFXPT+1,DCVINT . SET INTEGER VYP )@@G@@ALUE @C@@@D GOTO LXND41 . -> RETURN @#@@@DLXNSDLYQ )@@G@@ LABEL . @D@@@D MOVE DLXCLN,LXIDCN,I . SET NON INTEGER YR )@@G@@@E@@@D SET SDFXFL,ON,SDCLS1 . SET FLOATING POINT BIT @C@@@DYS )@@G@@ MOVE SDSCAL,0,I . SET SCALE =0 @C@@@D GOTO LXNYT )@@G@@D41 . -> RETUEN @#@@@DLXND40 LABEL . @D@@@D MOVYU )@@G@@E DLXCLN,SDBCLS . SET CLASS BYTE @C@@@D STSDP X2,DLXIDNYV )@@G@@ . SET TOKEN PTR@C@@@D GOTO LXCRTN . -> RETUYW )@@G@@RN @#@@@DLXND41 LABEL . @D@@@D MOVE SDBCLS,DLXCLN . SYX )@@G@@ET CLASS BYTE @C@@@D STSDP X2,DLXIDN . SET TOKEN PTRYY )@@G@@@E@@@D STSDP X2,SDBCHI . SET LINKAGE TO BCD ENTRY @E@@@DYZ )@@G@@ IF 0200,OFF,DLXFLG THEN,LXND43 . -> IMAG NUMBER @C@@@D ZA )@@G@@ SET SDRLCX,ON,SDCLS1 . COMPLEX FLAG @#@@@DLXND43 LABEL . @C@@@DZB )@@G@@ LOADA A3,SDFLPT . SET SD PTR @ @@@D STSDP A3,ZC )@@G@@SDLCOF . @C@@@D GOTO LXCRTN . -> RETURN @#@@@DZD )@@G@@LXNSD1 LOCAL . @F@@@D LOAD A7,10,I . ALLOCATE 10 WZE )@@G@@ORD SD FOR NUMBER @^@@@D LINK PLALC . @C@@@D STSDP X3,ZF )@@G@@SDBCLK . SABE PTR @C@@@D MOVE SDCLS4,SDBCSD,I . ZG )@@G@@ SET SD BIT@I@@@D MOVE SDCLS0-(IN 0,Q1-H1,0,0),SD0ART*512+SDVRZH )@@G@@CN,I . SET ARITH CONST BIT @D@@@D MOVE SDFLPT,DCVFLT,2 . SZI )@@G@@ET FLOATING VALUE @D@@@D LINK LXBLK0 . ADD TO BLOCK ZJ )@@G@@0 @#@@@D JMP . @[@@@D. @[@@@D. @#@@@DLXBLK0 LLOZK )@@G@@C . @C@@@D LOAD A3,ADBK0S . LINK SD @ @@@D ZL )@@G@@ STORE A3,SDBKLK . @ @@@D USING SDSECT,A3 . @ @@@D ZM )@@G@@ LOAD A4,SDNXDC . @ @@@D STORE X3,SDNXDC . @ @@@D ZN )@@G@@ USING SDSECT,X3 . @ @@@D STORE A4,SDNXDC . @D@@@D ZO )@@G@@ LJMP . RETURN TO CALLER @[@@@D/. @^@@@D ZP )@@G@@ USING WORD,X4 .@#@@@DLXNBNF LABEL . @#@@@D UPPERC . @C@@@DZQ )@@G@@LXNBNE LABEL . FOUND 'B' @#@@@DLXNBIN LABEL . ZR )@@G@@@D@@@D IF 0001,ON THEN,LXNER6 . -> ILLEGAL 'B' @#@@@DLXNBN2ZS )@@G@@ LABEL . @C@@@D SET 0100,ON . SET B FOUND @^@@@DZT )@@G@@ LINK LXPC . @#@@@DLXNBN3 LABEL . @D@@@D GETC . ZU )@@G@@ GET NEXT CHARACTER @D@@@D IF A8,EQ,0151,I THZV )@@G@@EN,LXNCMQ . LOWER CASE I@D@@@D IF A8,NE,'I',I THEN,LXNLPN . -ZW )@@G@@> END NUMBER@#@@@DLXNCMQ LABEL . @#@@@D UPPERC . @#@@@DLXNCMPZX )@@G@@ LABEL . @D@@@D SET 0200,ON . SET 'I' SWITCH ZY )@@G@@@D@@@D LINK LXPC . SAVE I IN STRING @D@@@D ZZ )@@G@@ GETC . READ NEXT CHARACTER@C@@@D GOTO LXNAA )@@G@@LPN . -> END NUMBER@^@@@D. ERROR MESSAGES @#@@@DLXNER1AB )@@G@@ LABEL . @D@@@D LXERR LXER20 . 2 DECIMAL POINTS AC )@@G@@@C@@@D GOTO LXNLPN . -> END NUMBER@#@@@DLXNER2 LABAD )@@G@@EL . @D@@@D LXERR LXER21 . E AT END OF CARD @C@@@DAE )@@G@@ GOTO LXNLPN . -> END NUMBER@#@@@DLXNER3 LABEL . AF )@@G@@@G@@@D LXERR LXER22 . TOO MANY DIGITS USE LASE 3 (IN AG )@@G@@EXP) @D@@@D GOTO LXNDG1 . -> FINISH EXPONENT @#@@@DAH )@@G@@LXNE3A LABEL . @D@@@D LXERR LXER22 . TOO MANY DIGIAI )@@G@@TS @C@@@D GOTO LXNED2 . -> USE LAST 3@#@@@DLXNER5AJ )@@G@@ LABEL . @#@@@DLXNER4 LABEL . @D@@@D LXERR LXER23 . AK )@@G@@ ILLEGAL EXPONENT @C@@@D GOTO LXNLPN . -> END AL )@@G@@NUMBER@#@@@DLXNER6 LABEL . @E@@@D LXERR LXER24 . IAM )@@G@@LLEGAL BUNARY NUMBER @E@@@D GOTO LXNBN3 . -> TREAAN )@@G@@T AS NON BINARY @^@@@D/. PARSE STRINGS @#@@@DLXSCON LABEL . AO )@@G@@@E@@@D MOVE DLXCON,KBLANK,20 . CLEAR COLLECTION AREA @F@@@DAP )@@G@@ SETPC 4,DLXCON . SETUP STRING COLLECTION AREA @C@@@DAQ )@@G@@ LOAD A9,0,I . LENGTH=0 @D@@@D LOAD F,0AR )@@G@@,I . CLEAR FLAG REG @#@@@DLXSCLP LABEL . @D@@@D AS )@@G@@ GETC . GET NEXT CGARACTER @B@@@D IF A8,AT )@@G@@EQ,'0',I THEN,LXSCD1 . @F@@@D IF A8,EQ,'1',I THEN,LXSCD1 . -AU )@@G@@> POSSIBLE BINARY STRING@E@@@D IF A8,NE,'''',I THEN,LXSC2 . -AV )@@G@@> NOT BIT STRING @B@@@DLXSC1 LABEL . FOUND '@D@@@DAW )@@G@@ GETC . READ SECOND QUOTE @F@@@D IF AX )@@G@@ A8,NE,'''',I THEN,LXSCND . -> NOT ' , END STRING @#@@@DLXSCAD LABAY )@@G@@EL . @F@@@D SET 0001,ON . SET NOT VALID BIT STRING AZ )@@G@@DLAG @#@@@DLXSCD1 LABEL . @D@@@D ADD A9,1,I . ABA )@@G@@DD ONE TO LENGTH @#@@@DLXSCD2 LABEL . @G@@@D PUTC . BB )@@G@@ PUT CHARACTER INTO COLLECTION AREA @D@@@D GOTO LXSBC )@@G@@CLP . -> READ NEXT INPUT @#@@@DLXSC2 LABEL . @C@@@D BD )@@G@@ IF A8,NE,LXSTOP,I THEN,LXSCAD . @C@@@D LXERR LXER05 . BE )@@G@@ END OF CARD @I@@@D LOAD A8,LXSTOP,I . SETBF )@@G@@ TOKEN TYPE FOR NEXT TOKEN (END CARD) @ @@@D STORE A8,DLXCHRBG )@@G@@ . @E@@@D LOAD A8,'''',I . SET TERMINAL CHARACTER BH )@@G@@@#@@@D PUTC . @F@@@D GOTO LXSCE1 . LOOKUPBI )@@G@@ STRING IN SYMBOL TBLE @#@@@DLXSCND LABEL . @B@@@D LINK LXNBJ )@@G@@EXTC . SAVE CHAR@D@@@D LOAD A8,'''',I . SET DUMBK )@@G@@MY ' AT END @#@@@D PUTC . @F@@@D IF 0001,OFF THEN,LBL )@@G@@XSCBD . -> SO FAR VALID BIT STRING@#@@@DLXSCE1 LABEL . @E@@@D BM )@@G@@ MOVE DLXCLN,LXIDCS,I . SET CHARACTER STRING FLAG@F@@@D ADDBN )@@G@@ A9,1,I . ADJUST LENGTH FOR ' AT ENDS @D@@@D STOBO )@@G@@RE A9,DLXSZN . SET SIZE OF STRING @D@@@D LINK LXSRCH . BP )@@G@@ SEARCH FOR STRING @ @@@D USING SDBCD,X2 . @ @@@DBQ )@@G@@ STORE X2,DLXIDN . @^@@@D LOADA X3,2,X2 .@ @@@D BR )@@G@@ STORE X3,DLXBCN . @B@@@D SET 0001+SDBCON,ON,SDBCL4 . BS )@@G@@@D@@@D LSDP X3,SDBCLK . SET SD POINTER @D@@@D BT )@@G@@ IF SDBCLK,NZERO THEN,LXSC11 . -> SD EXISTZ@C@@@D LOAD A7,BU )@@G@@8,I . GET 8 WORD SD@^@@@D LINK PLALC . @C@@@D BV )@@G@@ STSDP X3,SDBCLK . SAVE POINTER @C@@@D MOVE SDBCLS,LXBW )@@G@@IDCS,I . SET STRING SD@ @@@D USING SDSECT,X3 . @C@@@D BX )@@G@@ MOVE SDCLS4,SDBCSD,I . SET SD FLAG @D@@@D STSDP X2,SDBCHIBY )@@G@@ . -> PTR TO BCD FIELD@C@@@D LOADA A7,SDSTDV . PBZ )@@G@@OINT TO DV @E@@@D STSDP A7,SDLCOF . SET SD POINTER TO BCA )@@G@@E NEG @G@@@D MOVE SDCLSS,SD0STR*512+SDARST+SDVRCN,I . SET STRINCB )@@G@@G CONSTANT @D@@@D LSDP X2,SDBCHI . POINT TO BCD STRING CC )@@G@@@F@@@D LOADA X2,SDBBCD . POINT TO ACTUAL STRING IN BCD BLK CD )@@G@@@D@@@D LOAD X4,DLXSZN . GET SIZE OF STRING @D@@@D CE )@@G@@ SUB X4,1,I . DELETE ' AT END @E@@@D IF 000CF )@@G@@2,OFF THEN,LXSDCO . -> NOT BIT STRING @ @@@D SUB X4,1,I . CG )@@G@@-1 BIT@D@@@D SET SDCHBT,ON,SDCLS1 . SET BIT STRING BIT @F@E@DCH )@@G@@ LOADXI X2,ARBTCH*0100,I . SET BIT STRING CONSTANT IN DV @F@@@ECI )@@G@@ LOADXI X2,ARCHBT*0100,I . SET BIT STRING CONSTANT IN DV @#@@@DCJ )@@G@@LXSDCO LABEL . @ @@@D STORE X4,DLXSZN . @C@@@D STOCK )@@G@@RE X4,SDSTML . MAX LENGTH @D@@@D STORE X4,SDSTCL . CL )@@G@@ CURRENT LENGTH @C@@@D STORE X2,SDSTDV . SET -> CM )@@G@@TO DV @D@@@D LINK LXBLK0 . ADD TO BLOCK 0 @#@@@DCN )@@G@@LXSC11 LABEL . @C@@@D GOTO LXCRTN . -> REUTRN CO )@@G@@@#@@@DLXSCBD LABEL . @D@@@D LOAD A8,DLXCHR . GET NEXCP )@@G@@T SYMBOL @C@@@D IF A8,EQ,'B',I THEN,LXSCB1 . -> B @F@@@DCQ )@@G@@ IF A8,NE,0142,I THEN,LXSCE1 . -> NOT LOWER CASE B @C@@@DCR )@@G@@ SET 040,OFF,A8 . MAKE IT UPPER CASE @#@@@DLXSCB1 LABEL . CS )@@G@@@D@@@D ADD A9,1,I . ADD B TO STRING @#@@@D CT )@@G@@ PUTC . @F@@@D MOVE DLXCHR,0,I . CLEAR OUT NEXT SYMBCU )@@G@@OL BYTE @ @@@D LOAD F,0002,I . @C@@@D GOTO LXSCV )@@G@@CE1 . -> RETURN @ @@@D/. END OF CARD RPUTINE @ @@@DCW )@@G@@. X1 AND X2 ARE UPDATED@#@@@DLXCDND LABEL . @D@@@D IF CX )@@G@@ DLXDOP,ZERO THEN,LXCND1 . -> NOT IN /*D@^@@@D LXERR LXER11 . CY )@@G@@@C@@@D MOVE DLXDOP,0,I . CLOSE OUT /*D@#@@@DLXCND1 LABCZ )@@G@@EL . @E@@@D TC OFF . SAVE REGS FOR READING DA )@@G@@@ @@@D. FORMAT THE PRINT LINE@^@@@D USING WORD,X3 .@I@@@DDB )@@G@@ LOAD X3,DLXCDD . -> CARD IMAGE ... DONE BY EXDC )@@G@@EC 8 ... @I@@@D ADD X3,DLXSMC . GET LAST COLUMN DD )@@G@@ .. DONE BY EXEC 8 ... @I@@@D MOVE W1Q1,DLXCSV . RDE )@@G@@ESTORE STORE CHARACTER .. DONE BY EXEC 8 ... @C@@@D LOAD X3,DF )@@G@@DLXCDD . POINT TO CARD@E@@@D IF 0020,OFF,LIMALX THEN,DG )@@G@@LXCD03 . -> NOSOURCE @E@@@D LOAD A7,DZZSIR . GET FILDH )@@G@@E LINE NUMBER @D@@@D CVE A7,R . CONVERT TO FIDI )@@G@@ELDATA@ @@@D STORE A4,DGOLIN . @E@@@D LOAD A7,DLXSMCDJ )@@G@@ . NOMBER OF WORDS IN CARD @E@@@D IF 0040,OFF,DGOPT3DK )@@G@@ THEN,LXCD01 . -> BATCH JOB @F@@@E IF 0100,OFF,DGOPT4 THEN,DL )@@G@@LXCD10 . -> NO PARAGRAPHER @^@@@E LINK LXPARA @F@@@E DM )@@G@@ +20,DGOLIN+2-(IN 63,0,1,0) . 16 WORDS BEGINNING A +2 @^@@@E DN )@@G@@ GOTO LXCD11 . @#@@@ELXCD10 LABEL . @E@@@D MOVE DGOLIN+3,DO )@@G@@W1,R,A7 . MOVE CARD TO PRINT AREA @#@@@ELXCD11 LABEL . @E@@@D DP )@@G@@ LOAD A7,DSALSN . GET STATEMEET NUMBER @ @@@D STODQ )@@G@@RE A7,DGOLIN+1 . @C@@@D LOADA X1,DGOLIN . PRINT SOURCE DR )@@G@@@^@@@D GOTO LXCD03 . @#@@@DLXCD01 LABEL . @C@@@E IF DS )@@G@@ 0100,OFF,DGOPT4 THEN,LXCD12 . @^@@@E LINK LXPARA @A@@@EDT )@@G@@ +27,DGOLIN+6-(IN 63,0,1,0) @^@@@E GOTO LXCD13 @#@@@EDU )@@G@@LXCD12 LABEL . @E@@@D MOVE DGOLIN+7,W1,R,A7 . MOVE IMAGE TODV )@@G@@ OUTPUT AREA@#@@@ELXCD13 LABEL . @^@@@D USING WORD,X1 .@D@@@DDW )@@G@@ LOADA X1,DGOLIN . POINT TO PRINT LINE@E@@@D IF DX )@@G@@ DLXPFG,ZERO THEN,LXCDPR . PRINT CARD ONLY @ @@@D LOAD A3,DY )@@G@@DSALCN . @^@@@D STORE A3,W1+1 .@ @@@D LOADD A3,DSALBNDZ )@@G@@ . @^@@@D LDSC A3,9 . @ @@@D STORED A3,W1+3 . EA )@@G@@@F@@@D MOVE W1+5,DSALSN . SETUP STMT, DEPTH, DO AND BLOCKEB )@@G@@@#@@@DLXCD03 LABEL . @D@@@D MOVE DLXPFG,0,I . TURN OFEC )@@G@@F PRINT FLAG@#@@@DLXCDPR LABEL . @F@@@D IF 0020,OFF,LIMALXED )@@G@@ THEN,LXNWCD . -> NO PRINT WANTED @C@@@D LINK GOPRTL . EE )@@G@@ PRINT LINE @#@@@DLXNWCD LABEL . @C@@@D LINK GORDCD . EF )@@G@@ READ CARD @G@@@D LOAD F,DGOCDF . SET FLAEG )@@G@@G REG WITH RETURN FROM READCD @A@@@D IF 0004,ON THEN,LXCDSC .EH )@@G@@@E@@@D IF DGOCDF,NZERO THEN,LXPGND . -> END OF SOURCE @#@@@DEI )@@G@@LXCDSC LABEL . @E@@@D STORE X1,DLXCDD . SAVE CARD IMAEJ )@@G@@GE POINTER @#@@@DLXIN1 LABEL . @^@@@D USING WORD,X1 .@I@@@DEK )@@G@@ ADD X1,DLXSMC . GET LAST COLUMN .. DONE BY EXEL )@@G@@EC 8 ... @I@@@D MOVE DLXCSV,W1Q1 . SAVE STOP CHARACTEREM )@@G@@ .. DONE BY EXEC 8 ... @I@@@D MOVE W1Q1,LXSTOP,I . SEN )@@G@@ET EOF .. DONE BY EXEC 8 ... @I@@@D LOAD X1,EO )@@G@@DLXCDD . GET START .. DONE BY EXEC 8 ... @C@@@DEP )@@G@@ SETGC 4,W1 . START READING@G@@@D. GETC . EQ )@@G@@ COL 1 IBM COMPATIBILITY - IGNORED @E@@@D. IF ER )@@G@@ A8,EQ,' ',I THEN,LXIN2 . SET COL 1 BLANK @C@@@D. SUB A1,1,ES )@@G@@I . REREAD COL 1 @D@@@D. MOVE DLXPCK,1,I . SET )@@G@@ET COL 1 NOT BLANK@#@@@DLXIN2 LABEL . @ @@@D MOVE DLXCHR,0,EU )@@G@@I . @D@@@D IF 0004,OFF THEN,LXCRIN . -> NO * RETURN @C@@@DEV )@@G@@ LOAD A3,ACSCS,I . SET * ON CARD @ @@@D STORE A3,EW )@@G@@DLXACN . @E@@@D MOVE DLXCLN,LXRSWD,I . SAET RESERVED WORD EX )@@G@@RETURN@C@@@D MOVE DGOCDF,0,I . NORAL CARD @C@@@D EY )@@G@@ GOTO LXCRTN . -> REUTRN @#@@@DLXPGND LABEL . @E@@@DEZ )@@G@@ LOAD A3,ACEST,I . SET END OF SOURCE TOKEN @ @@@D FA )@@G@@ STORE A3,DLXACN . @A@@@D MOVE DLXCLN,LXRSWD,I . @^@@@DFB )@@G@@ GOTO LXCRTN . @B@@@D. ENTER HERE FOR EACH NEW PROGRAM FC )@@G@@@E@@@DLXINIT* LOCAL . INITIAL ENTRY FROM SYNA @C@@@EFD )@@G@@ MOVE DERCTK,0,I . TOKEN COUNT=0 @G@@@D MOVE DSAFE )@@G@@LSN,KBLANK . SET INITIAL STMT NUMBER TO BLANKS @F@@@D MOVFF )@@G@@E DSDPNM,100,I . START NEW LABELS AT $$L100 @ @@@D STOFG )@@G@@RE X2,DLXSV1 . @ @@@D STORE A2,DLXSV2 . @D@@@D LOAFH )@@G@@D X1,DLXCDD . GET CARD ADDRESS @E@@@D MOVE DLXEST,0,FI )@@G@@I . ZERO ERR STACK LEVEL @D@@@D MOVE DLXERN,0,I . FJ )@@G@@ CLEAR ERROR FLAG @D@@@D LOAD A14,0,I . SET TOPFK )@@G@@KEN = NULL @F@@@D LOAD F,DGOCDF . SET FLAG REG TO CARFL )@@G@@D CONTENTS @D@@@D GOTO LXIN1 . -> NORMAL NEW CARD FM )@@G@@@B@@@E/ . LXPARA - AUTOMATIC PARAGRAPHER @[@@@E. @[@@@E. FN )@@G@@@^@@@E. X3= INPUT IMAGE@A@@@E. A7= NMBER OF WORDS OF INPUTFO )@@G@@@B@@@E. X11->MAX SIZE OF FIELD,START LOC @[@@@E. @B@@@E. FP )@@G@@ FIND NUMBER OF NON-BLANK WORDS @[@@@E. @#@@@ELXPARA LLOC . FQ )@@G@@@^@@@E USING WORD,X3 .@^@@@E SETGC 4,W1 @D@@@E FR )@@G@@ LOAD X2,W1H2,X11 . PTR TO OUTPUT FIELD@^@@@E USING WORFS )@@G@@D,X2 @^@@@E SETPC 4,W1 @^@@@E USING WORD,X1 @^@@@EFT )@@G@@ LOAD A8,KBLANK@#@@@ELXPAR2 LABEL . @E@@@E IF A8,FU )@@G@@NE,W1 THEN,LXPAR1 . -. SKIP BLANK WORDS @^@@@E ADD X1,1,I . FV )@@G@@@D@@@E LOOP A7,LXPAR2 . ->TRY NEXT WORD @E@@@E FW )@@G@@ ADD A7,1,I . SET 0 WORDS TO MOVE @F@@@E LJMFX )@@G@@P 2 . ->BLANK WORD, DO NORMAL THING @#@@@ELXPAR1 LABFY )@@G@@EL . @D@@@E LOAD A8,DSADPA . GET WORDS TO INDENT@^@@@EFZ )@@G@@ LOAD A3,A8 . @E@@@E ADD A3,A7 . GET RIGGA )@@G@@HTMOST MARGIN @^@@@E USING WORD,X11 @C@@@E IF A3,GB )@@G@@LT,W1H1 THEN,LXPAR3 . -> OK @D@@@E LOAD A8,W1H1 . TGC )@@G@@OO LONG, MOVE LEFT@E@@@E SUB A8,A7 . ADJUST FOR STGD )@@G@@RNG LENGTH @#@@@ELXPAR3 LABEL . @C@@@E ADD X2,A8 . GE )@@G@@ SKIP BLANKS @E@@@E SLB A7,2 . NUMBER OF CHAGF )@@G@@RS TO MOVE @^@@@E SETL A7 . @#@@@ELXPAR5 LABEL . @E@@@EGG )@@G@@ GETC . GET FIRSST NON-BLANK @B@@@E GH )@@G@@ IF A8,NE,' ',I THEN,LXPAR7 . @ @@@E LOOP A7,LXPAR5 . GI )@@G@@@#@@@ELXPAR4 LABEL . @#@@@E GETC . @#@@@ELXPAR7 LABEL . GJ )@@G@@@#@@@E PUTC . @ @@@E LOOP A7,LXPAR4 . @F@@@E GK )@@G@@ LJMP 1 . ->RETURN @B@@@D/. GL )@@G@@ LEXICAL STATEMENT START ROUTINE @C@@@D. CALLED AT THE START OGM )@@G@@F EACH STATEMENT @#@@@DLXPRND* LABEL . @D@@@D MOVE DLXPFG,0,GN )@@G@@I . FORCE ERR PRINTING@#@@@DLXSTST* LOCAL . @G@@@D IF GO )@@G@@ DLXPFG,NZERO THEN,LXSTPH . -> PUSH STACK IF ERRORS PRES@#@@@DLXSTP1GP )@@G@@ LABEL . @E@@@D LOAD A7,DLXEST . GET CURRENT ERROR SGQ )@@G@@TACK @G@@@D IF A7,EQ,0,I THEN,LXSTST3 . -> EMPTY STACK, GR )@@G@@DON'T PRINT @E@@@D LOADA X4,DLXESE-2 . POINT TO TOP OF STAGS )@@G@@CK @G@@@D SETL A7 . LOOP FOR NUMBER OF ENTRIEGT )@@G@@S IN STACK @#@@@DLXSTST1 LABEL . @^@@@D USING WORD,X4 .@F@E@DGU )@@G@@ MOVE DLXRVP,W1H1 . SET REVERSE CALL WITH ST NUMBER@^@E@DGV )@@G@@ ADD X4,1,I . @F@@@D STORE X4,DLXRVE . POINT TGW )@@G@@O ERROR STACK ENTRY @D@@@D LINK PLRVSE . REVERSEGX )@@G@@ STATEMENT @D@E@D SUB X4,3,I . BACKUP ONE ENTRY GY )@@G@@@D@@@E SUB X4,2,I . BACKUP ONE ENTRY @E@@@D GZ )@@G@@ LOOP A7,LXSTST1 . -> LOOP FOR NEXT ENTRY @#@@@DLXSTST3 LABHA )@@G@@EL . @C@@@D MOVE DLXEST,0,I . RESET COUNTER@D@@@D HB )@@G@@ LOAD A7,DLXPFG . GET PRINT FLAG @F@@@D IF A7,HC )@@G@@NE,2,I THEN,LXSTST4 . -> STACK OVERFLOW @ @@@D MOVE DLXHD )@@G@@PFG,1,I . @C@@@D GOTO LXSTPH . -> PUSH STACK@#@@@DHE )@@G@@LXSTST4 LABEL . @E@E@D MOVE DLXRVP,DSALSP . SET CURRENT SHF )@@G@@TMT START @F@@@E MOVE DSAESK-1+FH1,DSALSP . SET CURRENT SHG )@@G@@TMT START @A@@@E MOVE DSAESK-1+FH2,DSAECT .@D@E@D MOVHH )@@G@@E DLXRVE,DSAESK,I . CURRENT ERROR LIST @E@@@E MOVE DLXRVE,DSHI )@@G@@AESK-1,I . CURRENT ERROR LIST @B@@@D LINK PLRVSE . HJ )@@G@@ REVERSE@G@@@D LOAD X4,DSALSP . SEE IF SUPPLIED STAHK )@@G@@TEMENT NUMBER @^@@@D USING WORD,X4 .@D@@@D IF 040HL )@@G@@0,ON,W1Q2 THEN,JMP . -> YES, QUIT @E@@@D MOVE DLXPFG,1,I . HM )@@G@@ SET ST NUMBER SUPPLIED @G@@@D LOAD A7,DSADCN . CHN )@@G@@ONVERT BLOCK NUMBER TO FIELDATA @^@@@D CVE A7,R . @ @@@DHO )@@G@@ STORE A4,DSALCN . @D@@@D LOAD A7,DSADBN . CHP )@@G@@ONVERT BLOCK DEPTH@^@@@D CVE A7,R . @ @@@D STORE A4,HQ )@@G@@DSALBN . @D@@@D LOAD A4,KBLANK . ASSUME NO DO LEVEL HR )@@G@@@C@@@D LOAD A7,DSADDN . DO NEST LEVEL@C@@@D IF HS )@@G@@ A7,EQ,0,I THEN,LXSTX4 . -> NO DO @^@@@D CVE A7,R . @#@@@DHT )@@G@@LXSTX4 LABEL . @ @@@D STORE A4,DSALDN . @D@@@D LOAHU )@@G@@D A7,DSADSN . STATEMENT NUMBER @^@@@D CVE A7,R . HV )@@G@@@ @@@D STORE A4,DSALSN . @C@@@E LOAD A7,DSADBN . HW )@@G@@ BLOCK DEPTH @E@@@E ADD A7,DSADDN . DO DEPTH (TOTHX )@@G@@AL DEPTH) @E@@@E STORE A7,DSADPA . PARAGRAPHER INDENTAHY )@@G@@TION @D@@@DLXSTOT LABEL . RETURN TO SYNA @#@@@DHZ )@@G@@ JMP . @F@@@DLXSTPH LABEL . PUSH THIS STAIA )@@G@@TEMENT ON STATE @D@@@D LOAD A7,DLXEST . LEVEL OF ERROIB )@@G@@R @B@@@D ADD A7,1,I . +1 . @D@E@D LOAIC )@@G@@DA X4,DSAESK . GET NEW STCK ENTRY @^@E@D USING WORD,X4 .ID )@@G@@@E@E@D IF W1S1,ZERO THEN,JMP . -> NO ERRORS, RETURN @E@@@EIE )@@G@@ IF DSAECN,ZERO THEN,JMP . -> NO ERRORS, RETURN @F@@@D IF )@@G@@ IF A7,GE,4,I THEN,LXSTPP . ->STACK OVERFLOW, POP FIRST@D@@@D IG )@@G@@ STORE A7,DLXEST . SET NEW STACK LEVEL@C@@@D SLB A7,IH )@@G@@1 . MPY BY -2 @^@@@D LOADN A7,A7 . @D@@@D II )@@G@@ ADD A7,DLXESE,I . POINT TO ENTRY @^@@@D LOAD X3,IJ )@@G@@A7 . @^@@@D USING WORD,X3 .@E@@@D MOVE W1H1,DSALSP . IK )@@G@@ SET STATEMENT POINTER @C@@@E MOVE W1H2,DSAECT . EIL )@@G@@RROR COUNT @ @@@E MOVE DSAECT,0,I . @D@@@D MOVE W1+IM )@@G@@1,DSAESK . MOVE ERROR STACK @C@@@D GOTO LXSTOT IN )@@G@@ . -> RETURN @#@@@DLXSTPP LABEL . @E@@@D MOVE DLXPFG,2,IO )@@G@@I . SET TO OVERFLOW STATUS @C@@@D GOTO LXSTP1 . IP )@@G@@ -> POP STACK @E@@@DLXER25 EQU 23 . COLUMN 1 USEDIQ )@@G@@ ILLEGALLY @E@@@DLXER02 EQU 11 . NAME > 31 CHARACTERIR )@@G@@S @D@@@DLXER04 EQU 12 . ILLEGAL SYMBOL @E@@@DIS )@@G@@LXER11 EQU 13 . COMMENT AT END OF CARD @F@@@DLXER21IT )@@G@@ EQU 14 . NUMBER ACROSS CARD BOUNDARY @F@@@DLXER05IU )@@G@@ EQU 15 . STRING ACROSS CARD BOUNDARY @E@@@DLXER03IV )@@G@@ EQU 16 . TABLE OVERFLOW - HASH @F@@@DLXER20 EQUIW )@@G@@ 17 . 2 DECIMAL POINTS IN NUMBER @F@@@DLXER22 EQUIX )@@G@@ 18 . TOO MANY DIGITS IN EXPONENT @D@@@DLXER23 EQUIY )@@G@@ 19 . ILLEGAL EXPONENT @E@@@DLXER24 EQU 20 . IZ )@@G@@ ILLEGAL BINARY NUMBER @E@@@DLXER26 EQU 21 . JA )@@G@@ ILLEGAL SYMBOL IN NUMBER @^@@@DERLXCT EQU 22 . @^@@@D/. JB )@@G@@ SD MANAGER @D@@@DSDNINT EQU ARSTLK+1 . FIRST ACT RECJC )@@G@@ PTR @#@@@D. ENTRY @A@@@D. SDXVE - EXPLICIT VARIABLE JD )@@G@@@A@@@D. SDXVI - IMPLICIT VARIABLE @A@@@D. SDXBE - EXPLICIJE )@@G@@T BLOCK @[@@@D. @C@@@D. ROUTINES USE REGS X2,X3,X4 AND A7JF )@@G@@, A8 @[@@@D. @ @@@D. BLOCK SD ROUTINE @[@@@D. @G@@@DJG )@@G@@. IMPLICIT CALL . IF THERE IS AN EXPLICIT SD FOR THIS VARIABLE JH )@@G@@@G@@@D. IN THIS BLOCK, THEN NONE IS CREATED. IF NOT ONE IS CREATEJI )@@G@@D IN @E@@@D. BLOCK LEVEL 1, UNLESS IT ALREADY EXISTS THERE. JJ )@@G@@@#@@@DSDVXI* LABEL . @E@@@D GOTO SDVXIA . CALL 0 JK )@@G@@IMPLICIT VARIABLE @F@@@D GOTO SDXVC . CALL 1 CONTEXJL )@@G@@TUAL VARIABEL @E@@@D GOTO SDXVE . CALL 2 EXPLICJM )@@G@@IT VARIABLE @C@@@D GOTO 0,X11 . CALL 3, NO OP@B@@@DJN )@@G@@SDVXIA LOCAL . ENTRY @C@@@D LINK SDXSTT . JO )@@G@@ INITIALIZE @G@@@D IF A15,EQ,ACLPAR,I THEN,JMP . JP )@@G@@-> ARRAY, NO IMPLICIT CALL @ @@@D USING SDBCD,X3 . @E@@@DJQ )@@G@@ IF LXBIF,SAME,SDBCLS THEN,JMP . -> BIF, RETURN @#@@@DSDXVO JR )@@G@@ LABEL . @E@@@D LOAD X5,DSBKSD . GET CURRENT BLOCK SJS )@@G@@D @D@@@D LINK SDXTB . IS SD IN THIS BLOCK@F@@@DJT )@@G@@ GOTO SDXVI1 . -> NO, TRY BLOCK LEVEL 1 SD @D@@@DJU )@@G@@ GOTO SDXRTN . -> FOUND SD, RETURN@#@@@DSDXVI1 LABJV )@@G@@EL . @E@@@D LOAD X5,DSAB1S . GET BLOCK LEVEL 1 SD JW )@@G@@@D@@@D LINK SDXTB . IS SD IN THIS BLOCK@D@@@D JX )@@G@@ GOTO SDXVNW . -> NEED NEW SD @D@@@D GOTO SDXJY )@@G@@RTN . -> RETURN, FOUND SD@#@@@DSDXBE* LOCAL . @F@@@D JZ )@@G@@ LINK SDXCNT . UP SD COUNT OF SD'S VREATED @C@@@D KA )@@G@@ LOAD A7,SDLNTH,I . ALLOCATE SD @^@@@D LINK PLALC . KB )@@G@@@ @@@D USING SDSECT,X3 . @E@@@D MOVE SDNMPM,SDNINT,IKC )@@G@@ . INITIAL ADDR FOR ACT REC @D@@@D MOVE SDCLS4,SDBCSD,I . SKD )@@G@@ET SD TYPE IN SD @E@@@D LOAD A6,DSBKSD . GET CURRENT BKE )@@G@@LOCK SD @D@@@D STSDP A6,SDBKLK . SET LINK TO IT KF )@@G@@@C@@@D GOTO SDXRTN . -> RETURN @[@@@E. @[@@@EKG )@@G@@. @B@@@E. CREATE SD (X3) IN CURRENT BLOCK)@#@@@ESDXB0* LOCKH )@@G@@AL . @ @@@E MOVE DSASD1,0,I . @ @@@E LOAD X5,DSBKSDKI )@@G@@ . @A@@@E GOTO SDXVNW . CREATE SD@[@@@D. @B@@@D. KJ )@@G@@ CREATE SD FOR EXPLICIT DECLARE @D@@@DSDXVE* LOCAL . KK )@@G@@ EXPLICIT VARIABEL @^@@@D LINK SDXSTT . @E@@@D MOVKL )@@G@@E DSASD1,1,I . SET EXPLICIT SD TYPE @E@@@D LOAD X5,KM )@@G@@DSBKSD . GET BLOCK SD POINTER @E@@@D IF DSAU4,NZEKN )@@G@@RO THEN,SDXVNW . -> FORCED CREATE@#@@@DSDXVE1 LABEL . @D@@@D KO )@@G@@ LINK SDXTB . IS THERE SD ALREADY@D@@@D GOTO SDXKP )@@G@@VNW . -> NEED NEW ONE @E@@@D MOVE DSASD0,1,I . KQ )@@G@@ SET SD ALREADY EXISTED @#@@@DSDXRS2 LABEL . @C@@@D STSKR )@@G@@DP X4,DLXID . SET PTR TO SD@#@@@DSDXRTN LABEL . @#@@@D KS )@@G@@ JMP . @#@@@DSDXVNW LABEL . @F@@@D LINK SDXNEW . KT )@@G@@ CREATE SD , KEEP CHAIN GOING @E@@@D LOAD A7,DSADSN . KU )@@G@@ GET STATEMENT NUMBER @ @@@D USING SDSECT,X4 . @D@@@DKV )@@G@@ STORE A7,SDDCNM . SET SD PTR IN DEC @E@@@D IF KW )@@G@@ DSASD1,ZERO THEN,JMP ELSE,SDXRS2 . -> RETURN @E@@@DSDXVC LOCAL . KX )@@G@@ CONTEXTUAL DECLARATION @C@@@D LINK SDXSTT . KY )@@G@@ INITIALIZE @ @@@D USING SDBCD,X3 . @F@@@D KZ )@@G@@ IF LXBIF,NSAME,SDBCLS THEN,SDXVO . -> NOT BUILTIN FCN @D@@@D LA )@@G@@ BAC ACCLCK,SDXVC0 . -> CLOCK BIF @C@@@F BAC ACOCLB )@@G@@BF,SDXVC0 . -> ONCHAR @D@@@F BAC ACOSBF,SDXVC0 . LC )@@G@@ -> ONSOURCE @E@@@D IF A15,NE,ACLPAR,I THEN,SDXVC1 . -> LD )@@G@@CREATE SD @#@@@DSDXVC0 LABEL . @D@@@D GETPL X4 . LE )@@G@@ GET GARBAGE SD AREA@^@@@D ADD X4,25,I .@^@@@D USILF )@@G@@NG WORD,X4 .@E@@@D MOVE W1,KKD0,2 . CLEAR BEGINNING ARELG )@@G@@A @C@@@D LOAD A7,DLXID . SET ID PTR @ @@@D LH )@@G@@ STORE A7,SDBCHI,X4 . @C@@@D GOTO SDXRTN . -> RETULI )@@G@@RN @#@@@DSDXVC1 LABEL . @^@@@D USING WORD,X3 .@E@@@D LJ )@@G@@ LOAD A7,W1 . ET FIRST 3 CHARS OF NAME @^@@@D SRBLK )@@G@@ A7,9 . @^@@@D SLB A7,9 . @E@@@D IF A7,EQ,SDSLL )@@G@@YS THEN,SDXVC0 . -> SYSIN OR PRINT @F@@@D LOAD X5,DSBKSD . LM )@@G@@ SEE IF ANY DCL'S FOR BIF NAME @#@@@DSDXVC3 LABEL . @E@@@D LN )@@G@@ LINK SDXTB . ANY DCL AT THIS LEVEL @B@@@D GOTLO )@@G@@O SDXVC2 . -> NO @D@@@D GOTO SDXRTN . LP )@@G@@-> YUP RETURN @#@@@DSDXVC2 LABEL . @D@@@D LOAD X5,SDBKLKLQ )@@G@@,X5 . GO BACK ONE LEVEL@ @@@D USING SDSECT,X5 . @G@@@DLR )@@G@@ IF SDBKDP,NZERO THEN,SDXVC3 . NOT BLOACK 1, TRY THIS BLOCK LS )@@G@@@E@@@D LOAD X5,DSAB1S . DCL VARIABLE AT LEVEL 1@C@@@DLT )@@G@@ GOTO SDXVNW . GET NEW DCL@[@@@D. @E@@@D. LU )@@G@@ THIS ROUTINE MOVES SD FROM ONE BLOCK TO ANOTHER. @D@@@D. X5=LV )@@G@@SD FOR BLOCK TO GET SD X3= SD TO BE MOCED @#@@@DSDRSN* LOCAL . @ @@@DLW )@@G@@ USING SDSECT,X3 . @D@@@D LSDP X4,SDBKLK . GLX )@@G@@ET BLOCK SD FOR SD@#@@@DSDRXL1 LABEL . @ @@@D USING SDSECT,X4LY )@@G@@ . @E@@@D LSDP A7,SDNXDC . GET NEXT DEC IN BLOCK LZ )@@G@@@G@@@D IF A7,EQ,X3 THEN,SDRXL2 . -> FOUND SD LOOKING FOR IN BMA )@@G@@LOCK @E@@@D LOAD X4,A7 . TRY NEXT SD IN BLOCK MB )@@G@@@^@@@D GOTO SDRXL1 . @#@@@DSDRXL2 LABEL . @ @@@D USIMC )@@G@@NG SDSECT,X3 . @E@@@D LOAD A7,SDNXDC . GET PTR AFTERMD )@@G@@ WANTED SD @ @@@D USING SDSECT,X4 . @E@@@D STORE A7,ME )@@G@@SDNXDC . UNHOOK SD FROM BLOCK @ @@@D USING SDSECT,X3MF )@@G@@ . @B@@@D LOAD A8,X3 . SAVE SD@D@@@D LSDMG )@@G@@P X3,SDBCHI . POINT TO BCD STRING@G@@@D LINK SDXTB . MH )@@G@@ IS SD WITH THIS BCD IN THIS VLOCK @E@@@D GOTO SDRMI )@@G@@XL3 . -> NOPE, ADD ENTRY HERE @E@@@D GOTO SDXRTN . MJ )@@G@@ -> RETURN FOUND ENTRY @#@@@DSDRXL3 LABEL . @D@@@D MK )@@G@@ LOAD X4,A8 . RESET SD POINTER @D@@@D LINK SDXML )@@G@@CHN . LINK TO BLOCK SHAIN@B@@@D JMP 1 . MM )@@G@@ RETURN @[@@@D. @ @@@D. SD SERVICE ROUTINES @#@@@DSDXCNTMN )@@G@@ LLOC . @C@@@D LOAD A7,DSDNOS . UP SD COUNT @^@@@DMO )@@G@@ ADD A7,1,I . @ @@@D STORE A7,DSDNOS . @C@@@D MP )@@G@@ LJMP . -> RETURN @A@@@D. SET X3= A(BCD SMQ )@@G@@TRING ENTRY)@#@@@DSDXSTT LLOC . @C@@@D MOVE DSASDF,0,I . MR )@@G@@ RESET FLAGS @D@@@D LSDP X3,DLXID . POINT TO SD EMS )@@G@@NTRY @ @@@D USING SDBCD,X3 . @D@@@D IF SDBCSD,ONMT )@@G@@,SDBCL4 THEN,JMP . SD, RETURN @D@@@D LOAD X5,SDBCUS . UMU )@@G@@P USAGE COUNT @^@@@D ADD X5,1,I . @ @@@D STORE X5,MV )@@G@@SDBCUS . @D@@@D IF SDBCON,ON,SDBCL4 THEN,JMP . ->CONSTANT MW )@@G@@@C@@@D LJMP . -> RETRN @[@@@D. @G@@@DMX )@@G@@. SEE IF SD EXISTS FOR BCD POINTED TO BY X3 IN BLOCK POINTED TO BMY )@@G@@@E@@@D. BY X5. IF ONE, X4 POINTS TO IT AND EXIT IS 1,X11 . @#@@@DMZ )@@G@@SDXTB LLOC . @C@@@D LOAD A7,X5 . SAVE PTR NA )@@G@@@ @@@D USING SDBCD,X3 . @E@@@D IF SDBCLK,NZERO THNB )@@G@@EN,SDXTB2 . -> DEC EXISTS @C@@@D LJMP . -NC )@@G@@> RETURN @#@@@DSDXTB2 LABEL . @C@@@D LOAD X4,X3 . ND )@@G@@ POINT TO BCD @ @@@D USING SDBCD,X4 . @ @@@D USINE )@@G@@NG SDSECT,X4 . @#@@@DSDXTB3 LABEL . @C@@@D LOAD X4,SDBCLKNF )@@G@@ . GET NEXT SD @D@@@D IF A7,EQ,SDBKLK THEN,LJMP1 . -NG )@@G@@> SAME BK SD@E@@@D IF SDBCLK,NZERO THEN,SDXTB3 . CHECK NEXTNH )@@G@@ SD @D@@@D LJMP . -> RETURN, FAIL @[@@@DNI )@@G@@. @G@@@D. CREATE AN SD FOR BCD POINTED TO BY X3, IN BLOCK X5.NJ )@@G@@ ADDR IN X4 @#@@@DSDXNEW LOCAL . @D@@@D LINK SDXCNT . NK )@@G@@ UP SD COUNT BY 1 @C@@@D LOAD A8,X3 . SAVE BCNL )@@G@@D PTR @F@@@D LOAD A7,SDLNTH,I . GET WORDS TO ALLOCATE S FNM )@@G@@OR SD @C@@@D LINK PLALC . ALLOCATE SD @ @@@D NN )@@G@@ USING SDSECT,X4 . @ @@@D USING SDBCD,X3 . @D@@@D NO )@@G@@ LOAD X4,X3 . SET REGS FOR RETURN@^@@@D LOAD X3,NP )@@G@@A8 . @C@@@D SET SDBCSD,ON,SDCLS4 . SET SD FLAG @D@@@D NQ )@@G@@ MOVE SDBDLK,SDBCLK . MOVE DEC CHAIN @E@@@D STSDP X4,NR )@@G@@SDBCLK . ADD NEW HEAD OF CHAIN @D@@@D STSDP X3,SDBCHINS )@@G@@ . SET BCD POINTER @F@@@D LINK SDXCHN . ANT )@@G@@DD TO CHAIN IN THIS BLOCK @D@@@D LOADA X3,SDXFBM . SNU )@@G@@ET FIXED MODE @F@@@D MOVE SDRTC,1,I . SET FIXED VARNV )@@G@@IABEL = 1 WORD @#@@@DSDXNED LABEL . @^@@@D USING WORD,X3 NW )@@G@@@E@@@D MOVE SD2SP,W1H1 . SET SCALE AND PRECISIOUN @E@@@DNX )@@G@@ MOVE SDCLSS,W1H2 . SET CLS0 AND CLS1 BYTES @B@@@D NY )@@G@@ JMP . RETURN @F@@@D. KEEPS KEXT DEC CHAIN NZ )@@G@@GOING FOR SD IN X4 AND BLOCK IN X2 @#@@@DSDXCHN LLOC . @ @@@D OA )@@G@@ USING SDSECT,X5 . @E@@@D LOAD A7,SDNXDC . MOVE NEOB )@@G@@XT DECLARATION @ @@@D STSDP X4,SDNXDC . @ @@@D USIOC )@@G@@NG SDSECT,X4 . @ @@@D STORE A7,SDNXDC . @D@@@D STOOD )@@G@@RE X5,SDBKLK . SET BLOCK LINK @C@@@D LJMP . OE )@@G@@ -> RETURN @#@@@DSDSPLY* LOCAL . @C@@@D STORE X2,OF )@@G@@DSPX2 . SAVE REGS @ @@@D STORE A2,DSPA2 . @D@@@DOG )@@G@@ LOAD A7,DSDPNM . UP LABEL $ NUMBER @^@@@D ADDOH )@@G@@ A7,1,I . @ @@@D STORE A7,DSDPNM . @D@@@D CVE A7,OI )@@G@@R . CREATE LABEL NAME @C@@@D LSSC A4,9 . OJ )@@G@@ SET NNNB @D@@@D STORE A4,DLXCON+1 . SETUP XXXNNOK )@@G@@N . @B@@@D LOAD A7,'$$',I . GET $$V@^@@@D SLBOL )@@G@@ A7,9 . @D@@@D ADD A7,DSAU3 . GET $$V OR $$E OM )@@G@@@D@@@D SLB A7,9 . SETUP $$VV OR $$EE@ @@@D ON )@@G@@ ADD A7,DSAU3 . @ @@@D STORE A7,DLXCON . @D@@@D OO )@@G@@ LOAD A9,7,I . SET SIZE OF ENTRY @C@@@D LINK LXSOP )@@G@@RCH . SEARCH FOR SD@C@@@D MOVE DSPID,DLXID . SOQ )@@G@@AVE DLXID @D@@@D STORE X2,DLXID . SET NEW ID PTR OR )@@G@@@C@@@D LINK SDXVE . CREATE SD @C@@@D LSDOS )@@G@@P X3,DLXID . SET ORIG ID @ @@@D MOVE DLXID,DSPID . OT )@@G@@@ @@@D LOAD X2,DSPX2 . @ @@@D LOAD A2,DSPA2 . OU )@@G@@@#@@@D JMP . @#@@@DSDLEXI CSECT 3 @#@@@DSDSYS SFW 0 .OV )@@G@@@ @@@D +'S','Y','S',0 . @#@@@DSDXFBM SFW 0 .@A@@@DFILL(1OW )@@G@@) SQ 0 . Q@A@@@DFILL(1) SQ 35 . POX )@@G@@@C@@@DFILL(1) SH (SD0AUT+SD0ART)*512+SDDCBN . @#@@@D CENOY )@@G@@D . @#@@@D END . ___@@D USING SDSECT,X3 . @E@@@DOZ )@@G@@ LOAD A7,SDNXDC*[S@@@*SDFF*@#@@@4 AXR$ . @C@@@5. COPA )@@G@@PYRIGHT 1976 BY THE UNIVERSITY OF MARYLAND@[@@@5. @D@@@5. QUESTIONPB )@@G@@S CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@5. @ @@@5. MARPC )@@G@@VIN V. ZELKOWITZ @B@@@5. DEPARTMENT OF COMPUTER SCIENCE @A@@@5PD )@@G@@. UNIVERSITY OF MARYLAND @B@@@5. COLLEGE PARK, MARYLANPE )@@G@@D 20742 @[@@@5. @G@@@5. PERMISSION TO USE THESE LISTINGS PF )@@G@@AND THE COMPUTER PROGRAMS THEY@E@@@5. REPRESENT IS GRANTED UNDER THE FPG )@@G@@OLLOWING CONDITIONS: @[@@@5. @G@@@5. 1. UNLIMITED USE MAY PH )@@G@@BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@5. THESE LISTINGS PROVIPI )@@G@@DED THAT THE NAME PLUM OR UNIVERSITY OF MARYLAND@E@@@5. PL/1 COMPILER PJ )@@G@@REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@5. @F@@@5. 2. PK )@@G@@MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDED: @[@@@5. @G@@@5PL )@@G@@. (A) ANY RESULTING PROGRAM, OR REPORT, PAPER OR DOCUMENTATION PM )@@G@@@G@@@5. DESCRIBING SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PRPN )@@G@@OGRAM @E@@@5. IS A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND PO )@@G@@@[@@@5. @G@@@5. (B) ALL SUCH MODIFICATIONS, OTHER THAN TRIVIAPP )@@G@@L CORRECTIONS @F@@@5. OF ERRORS IN THE SOURCE PROGRAMS, SHALLPQ )@@G@@ BE REPORTED AND @G@@@5. A BRIEF DESCRIPTION OF THE FEATURE ADDEPR )@@G@@D SHALL BE SUBMITTED @C@@@5. TO THE UNIVERSITY OF MARYLAND, ANPS )@@G@@D @[@@@5. @F@@@5. (C) NO PROGRAMS DERIVED FROM THESE LISTPT )@@G@@INGS SHALL BE SOLD@G@@@5. WITHOUT WRITTEN APPROVAL FROM THE UNIVEPU )@@G@@RSITY OF MARYLAND, AND @[@@@5. @F@@@5. (D) COPIES OF THESE PPV )@@G@@ROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@5. LOCATIONS PROVIDED THPW )@@G@@AT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@5. WHETHER THE PROPX )@@G@@GRAMS ARE EXACT COPIES OF THE UNIVERSITY OF @E@@@5. MARYLAND PY )@@G@@PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@5. @G@@@5. 3. PZ )@@G@@THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILER ITSELF, @F@@@5. ANQA )@@G@@D ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN USING PLUM. @E@@@5. THQB )@@G@@E PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USER TO @F@@@5. EXPERIMEQC )@@G@@NT WITH THE COMPILER AS LONG AS THE RESULTING PRODUCT @G@@@5. IS NOT SQD )@@G@@OLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT DEVELOPED @#@@@5. FRQE )@@G@@OM PLUM. @[@@@5. @[@@@5. @[@@@5. @[@@@5. @[@@@5. QF )@@G@@@[@@@5/. @#@@@4 DCLRG . @#@@@4 PLSD . @#@@@4 QG )@@G@@ PLAC . @#@@@4 PLWORD . @#@@@4 PLSYDS . @#@@@4 QH )@@G@@ UNLIST . @]@@@4@ADD PLTVDS @#@@@4 LIST . @]@@@4@ADD PLSAW QI )@@G@@@#@@@4 CEND . @D@@@4DECL CSECT 3 . DECLAREQJ )@@G@@ DRIVER @D@5@4SDENTM SFW 0 . ENTRY SACK ENTRY QK )@@G@@@D@@@5SDENTM SFW 0 . ENTRY STACK ENTRY @^@@@4 QL )@@G@@ +010000017000 .@D@@@4DECTBL SFW 0 . ATTRIBUTE TABQM )@@G@@LE @D@@@4DEBTBL SFW 0 . STRUCTURE TABLE @E@@@4QN )@@G@@FILL(1) SAC DECINS,DAPRNT . NO STRUCTURE PRINT @E@@@4FILL(1QO )@@G@@) SAC DECIDD,DAAUTO . DAD AUTOMATIC @E@@@4FILL(1) SACQP )@@G@@ DECISN,DABIN . SON BINARY @D@@@4FILL(1) SAC DECQQ )@@G@@IBR,DABIT . BROTHER BIT @E@@@4FILL(1) SAC DECIFS,DABLTN. QR )@@G@@ FACT SON BUILTIN @D@@@4FILL(1) SAC DECIFI,DACHAR . FQS )@@G@@ACT BROT INT. CHAR@E@@@4FILL(1) SAC DECIFB,DACPLX . FACT BROT QT )@@G@@ COMPLEX @E@@@4DAIBEG SFW 0 . STATE BEGIN FOR INIQU )@@G@@TIAL @A@@@4. STATE TABLE FOR INITIAL @[@@@4. @F@@@4. QV )@@G@@ 1=) 2=( 3=, 4=* 5=CONST,ID 6=SIGN 7=OTHER @[@@@4. QW )@@G@@@E@@@4FILL(1) SAC DAINSA,DADEC . DECIMAL @E@5@4QX )@@G@@FILL(1) SAC DAINPF,DANY . ENTRY @E@@@5FILL(1QY )@@G@@) SAC DAINPF,DAENTR . ENTRY @F@5@4. QZ )@@G@@ CHANGE DANY TO DAENTR WHEN ENTRY IS WORKING @[@5@4. @[@5@4RA )@@G@@. @[@5@4. @[@5@4. @F@@@4FILL(1) SAC DAINSA,DANY . RB )@@G@@ EXT (LATER) @E@@@4FILL(1) SAC DAINPA,DAFIX . RC )@@G@@ FIXED @E@@@4FILL(1) SAC DAINPN,DAFLT . RD )@@G@@ FLOAT @E@@@4FILL(1) SAC DAINPS,DAINTL . RE )@@G@@ INITIAL @E@@@4FILL(1) SAC DAINSA,DAINPT . INPURF )@@G@@T @D@@@4DAITRM SFW 0 . TERMINAL STATE @F@@@4RG )@@G@@FILL(1) SAC DAINRP,DANY . INTERNAL (LATER)@E@@@4RH )@@G@@FILL(1) SAC DAINSC,DALBL . LABEL @F@@@4FILL(1RI )@@G@@) SAC DAINPC,DANPL . LIKE - NO - @E@@@4FILL(1RJ )@@G@@) SAC DAINSC,DAOUTP . OUTPUT @D@@@4FILL(1) SACRK )@@G@@ DAINSC,DAREAL . REAL@E@@@4FILL(1) SAC DAINRL )@@G@@SC,DARTNS . RETURNS @F@@@4FILL(1) SAC DAINEX,DANRM )@@G@@PL . SEQ - NO - @D@@@4DAIITR SFW 0 . RN )@@G@@ ITERATION STATE @E@@@4FILL(1) SAC DAINIX,DASTAT . RO )@@G@@ STATIC @E@@@4FILL(1) SAC DAINAP,DASTRM . RP )@@G@@ STREAM @E@@@4FILL(1) SAC DAINIY,DAVAR . VARYRQ )@@G@@ING @E@@@4FILL(1) SAC DAINPA,DABSD . BASED RR )@@G@@@D@@@4FILL(1) SAC DAINPQ,DACTL . CTL @D@@@4FILL(1RS )@@G@@) SAC DAINPS,DAPTR . PTR @D@@@4FILL(1) SAC RT )@@G@@ DAINSA,DAFILE . FILE@E@@@5DAILLS LABEL . RU )@@G@@ INITIAL - TYPE OF LIST @E@5@4FILL(1) SAC 0,DANVAR . RV )@@G@@ NONVARYING@E@@@5FILL(1) SAC DAILIL,DANVAR . RW )@@G@@ OOPS NONVARYING@D@5@4FILL(1) SAC 0,DANPL . RX )@@G@@ AREA@D@@@5FILL(1) SAC DAILLB,DAAREA. LABEL AREA@E@5@4RY )@@G@@FILL(1) SAC 0,DANPL . REFER @E@@@5FILL(1RZ )@@G@@) SAC DAILST,DANPL . STRING REFER @E@@@5FILL(1) SACSA )@@G@@ DAILIL,DAKEYD . OOPS KEYED @E@@@5FILL(1) SAC SB )@@G@@ DAILAR,DARECD . ARITH RECORD @F@@@5FILL(1) SAC DAILSC )@@G@@IL,DANPL . OOPS ENVIRONMENT @E@@@5FILL(1) SAC DAILISD )@@G@@L,DAOFST . OOPS OFFSET @F@@@5FILL(1) SAC DAILIL,DADISE )@@G@@MS . OOPS DIMENSION @#@@@4 CEND . @^@@@4. SF )@@G@@ STATE FLAGS @A@@@4DECLLP EQU 0001 . (@A@@@4DECLRPSG )@@G@@ EQU 0002 . )@A@@@4DECLCM EQU 0004 . ,SH )@@G@@@B@@@4DECLDN EQU 0010 . DEC NUM@B@@@4DECLID EQU 002SI )@@G@@0 . ID @B@@@4DECLAT EQU 0040 . ATTR SJ )@@G@@@B@@@4DECLRT EQU 0100 . ),ATTR @B@@@4DECLDC EQU 020SK )@@G@@0 . DCL @B@@@4DECLAP EQU 0162 . ATTR OKSL )@@G@@@C@@@4. INITIAL STATE FLAGS (INITIAL ATTR) @B@@@4DAICLB EQUSM )@@G@@ 0001 . LABEL @C@@@4DAICNL EQU 0006 . SN )@@G@@NO LABEL @B@@@4DAICST EQU 0002 . STRING @C@@@4DAICNSSO )@@G@@ EQU 0005 . NO STRING @C@@@4DAICAR EQU 0004 . SP )@@G@@ ARITHMETIC @C@@@4DAICNA EQU 0003 . NO ARITSQ )@@G@@HMETIC@B@@@4DAICSA EQU 0020 . STATIC @B@5@4DAICSC EQUSR )@@G@@ 0040 . SCALAR @C@@@5DAICSC EQU 0040 . NSS )@@G@@O SCALAR @C@@@4DAIXTM EQU 0400 . ITEM FOUND @ @@@4ST )@@G@@. STRUCTURED STATE @C@@@4DDENON EQU 0 . NSU )@@G@@O STRUCTURE @C@@@4DDEDAD EQU 1 . DAD-MAJOR @C@@@4SV )@@G@@DDESON EQU 2 . SON-MEMBER @D@@@4DDEBR EQU 3 .SW )@@G@@ BROTHER- MEMBER @C@@@4DDEFSN EQU 4 . SX )@@G@@ FACTORED SON @D@@@4DDEFBI EQU 5 . FACTORED BROTSY )@@G@@ INIT @C@@@4DDEFBR EQU 6 . FACTORED BROT@[@@@4. SZ )@@G@@@^@@@4. ATTRIBUTE FLAGS@[@@@4. @B@@@4ST1BIN EQU 1 . TA )@@G@@ BIN @B@@@4ST1DEC EQU 1 . DEC @B@@@4TB )@@G@@ST1VAR EQU 2 . VARY @B@@@4ST1FFL EQU 4 . TC )@@G@@ FIX FLT@B@@@4ST1INT EQU 010 . INIT @C@@@4TD )@@G@@ST1RCX EQU 020 . REAL CMPLX @B@@@4ST1DIM EQU 040TE )@@G@@ . DIM @B@@@4ST1STG EQU 0100 . STRING TF )@@G@@@B@@@4ST1PRC EQU 0200 . PREC @C@@@4ST1NVR EQU 040TG )@@G@@0 . NONVARYING @^@@@4. PREDECESSOR @^@@@4SN1BINTH )@@G@@ EQU 0103 . @^@@@4SN1DEC EQU 0103 . @^@@@4SN1INT EQU 001TI )@@G@@0 . @^@@@4SN1STG EQU 0325 . @^@@@4SN1VAR EQU 0627 . @^@@@4TJ )@@G@@SN1FFL EQU 0104 . @^@@@4SN1RCX EQU 0120 . @^@@@4SN1LBL EQUTK )@@G@@ 0727 . @^@@@4SN1DAT EQU 0377 . @^@@@5SN1DIM EQU 0040 . TL )@@G@@@^@@@5SN1PTR EQU 0727 . @^@@@4. STORAGE CTL @B@@@4ST2PRITM )@@G@@ EQU 0010 . PRINT @B@@@4ST2FLE EQU 0001 . TN )@@G@@ FILE @B@@@4ST2INP EQU 0002 . INPUT @B@@@4ST2OUTTO )@@G@@ EQU 0004 . OUTPUT @B@@@5ST2KEY EQU 0400 . TP )@@G@@ KEYED @B@@@5ST2REC EQU 0020 . RECORD @B@@@4ST2BRCTQ )@@G@@ EQU 0177 . LABEL @E@@@4ST2BRL EQU 0200 . TR )@@G@@ BUILTIN ENTRY RETRNS LAB @B@@@4ST2STR EQU 0040 . STS )@@G@@TREAM @D@@@4SN2FLE EQU 0201 . FILE NOT PERMITTED @D@@@4TT )@@G@@SN2INP EQU 0216 . INPUT NOT PERMITTED@E@@@4SN2OUT EQUTU )@@G@@ 0206 . OUTPUT NOT PERMITTED @D@5@4SN2PRI EQU 021TV )@@G@@2 . PRINT NOT PERMITTED@D@@@5SN2PRI EQU 0632 . TW )@@G@@ PRINT NOT PERMITTED@B@5@4SN2STR EQU 0140 . STREAM TX )@@G@@@B@@@5SN2STR EQU 0560 . STREAM @D@@@5SN2KEY EQU 045TY )@@G@@0 . KEY NOT PERMITTED @E@@@5SN2REC EQU 0170 . TZ )@@G@@ RECORD NOT PERMITTED @^@5@4SN2FLA EQU 0777 . @^@@@5SN2FLAUA )@@G@@ EQU 0177 . @^@@@5SN2DIM EQU 0177 . @B@@@4ST3AUT EQU 1 UB )@@G@@ . AUTO @B@@@4ST3EXT EQU 2 . EXT UC )@@G@@@B@@@4ST3INT EQU 4 . INT @B@@@4ST3STT EQU 010UD )@@G@@ . STATIC @B@@@4ST3BSD EQU 0020 . BASED UE )@@G@@@C@@@4ST3CTL EQU 0400 . CONTROLLED @^@@@4SN3AUT EQUUF )@@G@@ 0777 . @^@@@4SN3EXT EQU 0217 . @^@@@4SN3INT EQU 0217 . UG )@@G@@@^@@@4SN3STT EQU 0777 . @D@@@4SN3BER EQU 0340 . BUH )@@G@@LTIN,ENTRY,RTNS @^@@@4SN3FLE EQU 0771 . @^@@@4ST3BLT EQU 020UI )@@G@@0 . @^@@@4ST3ENT EQU 0040 . @^@@@4ST3RTN EQU 0100 . @^@@@4UJ )@@G@@SN3ENT EQU 0477 . @^@@@4SN3RTN EQU 0537 . @^@@@4SN3BSD EQUUK )@@G@@ 0771 @^@@@4SN3CTL EQU 0771 @C@@@4ST4PTR EQU 0001 . UL )@@G@@ POINTER VAR @F@@@4ST4BPT EQU 0002 . BASED VUM )@@G@@ARIABLE WITH IMPLIED PTR@B@@@5ST4ARE EQU 0004 . AREA UN )@@G@@@C@@@5ST4OFA EQU 0010 . OFFSET(AREA) @^@@@4SN4PTR EQUUO )@@G@@ 0774 . @^@@@5SN4ARE EQU 0777 . @D@@@4SADCL* LABEL . UP )@@G@@ DECLARE DRIVER @E@@@8 IF 02,ON,DSAONB THEN,SAOUQ )@@G@@NIL . -> NO ON X DCL @D@@@4 LINK SATENT . 'THEN' UR )@@G@@OR'ELSE' @B@@@4 LINK SACDTS . CHECK @ @@@4 US )@@G@@ LOAD A7,DSAPFX . @^@@@4 AND,U A7,040 . @D@@@4 IF UT )@@G@@ A8,EQ,0,I THEN,DECL12 . -> NO LABEL @F@@@4 LINK SANLST . UU )@@G@@ SET NULL STMT BEFORE DCL . @ @@@4 LOAD A7,DSAPFXUV )@@G@@ . @#@@@4DECL12 LABEL . @D@@@4 AND,U A7,020 . -UW )@@G@@> LBL NOT REQ @B@@@4 IF A8,EQ,0,I THEN,DECL14 . @ @@@4UX )@@G@@ SUB A7,020,I . @ @@@4 STORE A7,DSAPFX . @C@@@4UY )@@G@@ SET 020,ON,DSPFXN . LBL REQ NEXT @#@@@4DECL14 LABEL . UZ )@@G@@@D@@@4 SZ,H2 DSDESC-(IN 63,Q3,1,0) . CLEAR IND.S @D@@@4 VA )@@G@@ MOVE DSADFSK,0,I . CLEAR FACTOR STACK@C@@@4 LOADA A7,VB )@@G@@DSADFSK . FACTOR STACK @ @@@4 STORE A7,DSDFTL . @C@@@4VC )@@G@@ LOADA A7,DSADSK-SACDSW . IDENT STACK @ @@@4 STORE A7,VD )@@G@@DSDITL . @D@@@4 USING STTMNT,X8 . GET STMT NUMBER VE )@@G@@@ @@@4 MOVE DSDSNM,STTNUM .@C@@@4 MOVE DSDEST,DECLDC,IVF )@@G@@ . INITIAL STATE@C@@@4 GOTO DECL36 . -> START VG )@@G@@@#@@@4DECL35 LABEL . @C@@@4 LINK SAPTAC . PUT BCOVH )@@G@@DE @#@@@4DECL36 LABEL . @B@@@4 BCL LXATTR,DEDCAT . -VI )@@G@@>ATTR @B@@@4 BCL LXCM,DEDCCM . ->COMMA@B@@@4 BCLVJ )@@G@@ LXLP,DEDCLP . ->'(' @F@@@4 BAC ACRELX,DEDCAT . -VK )@@G@@> REAL , KLUDGE SINCE ALSO BIF@F@@@5 BAC ACDIM,DEDATD . -VL )@@G@@> DIM, KLUDGE SSNCE ALSO BIF @B@@@4 BCLID DEDCID . -VM )@@G@@>ID @B@@@4 BCL LXRP,DEDCRP . ->')' @#@@@4DECL39 LABVN )@@G@@EL . @C@@@4 BCL LXIDDN,DEDCDN . -> DEC NO . @C@@@4 VO )@@G@@ BAC ACENTY,DEDCAN . -> 'ENTRY' @D@@@4DEDLTM LABEL . VP )@@G@@ TERMINATE DCL STMT @E@@@4 IF 01,OFF,DSALND THEN,DEVQ )@@G@@CTM1 . -> NOT STRUCTURE @ @@@4 LOAD X5,DSDITL . @D@@@4 VR )@@G@@ LINK DESFIN . TERMINATE STRUCTURE@#@@@4DECTM1 LABEL . VS )@@G@@@D@@@4 BINDZ DSDEVD,SADLT . ->NO DCL'S, DELETE @D@@@4 VT )@@G@@ LINK DEDLIM . CLEAR ID STACK @G@@@4 IF DECVU )@@G@@LRP+DECLID+DECLAT+DECLRT,ON,DSDEST THEN,DECTM7 . ->OK @ @@@4. CLEVV )@@G@@AR UP END B-CODE @E@@@4 IF DECLDN,OFF,DSDEST THEN,DECTM3 . -VW )@@G@@> NO NUM. @E@@@4 LOAD A7,SAEM85,I . IMPROPER STRUCTURE VX )@@G@@LEVEL @C@@@4 FLINK X10,SAESB8 . DELETE NO. @#@@@4DECTM3VY )@@G@@ LABEL . @D@@@4 LINK EABK1 . GET LAST B-CODE VZ )@@G@@@E@@@4 IF A8,NE,ACCOMA,I THEN,DECTM5 . ->LAST NOT COMMA@ @@@4WA )@@G@@ SAERR SAEM12,SAE . @^@@@4 GOTO DECTM3 . @#@@@4DECTM5WB )@@G@@ LABEL . @D@@@4 IF A8,NE,ACLPAR,I THEN,DECTM6 . ->NOT '(' WC )@@G@@@C@@@4 SAERR SAEM26,SAE . EXTRA '(' @D@@@4 LINWD )@@G@@K SACNDN . COUNT DOWN FACTOR @^@@@4 GOTO DECTM3 . WE )@@G@@@#@@@4DECTM6 LABEL . @C@@@4 PUTC . REPLACEWF )@@G@@ TOKEN@#@@@4DECTM7 LABEL . @D@@@4 BINDZ DSCNTI,SSTEND . NWG )@@G@@O OPEN FACTORS @^@@@4 LINK SACNDN . @B@@@4 LINK SASWH )@@G@@PRPE . ')' @C@@@4 GOTO DECTM7 . -> SEE WI )@@G@@IF END@ @@@4/. UNIMPLEMENTED FEATURE@#@@@4DECL25 LABEL . @#@@@4WJ )@@G@@XXXXXX LABEL . @F@@@4 MOVE DSALND,0,I . CLEAR FLAGS WK )@@G@@FORCING RETURN @A@@@4 LOADA A7,DSADSK-SACDSW,I . @ @@@4 WL )@@G@@ STORE A7,DSDITL . @ @@@4 SAERR SAEM99,SAE @C@@@4 WM )@@G@@ GOTO DEDLTM . ->DELETE STMT@#@@@4/. COMMA @#@@@4WN )@@G@@DEDCCM LABEL . @G@@@4 IF DECLID+DECLAT+DECLRT+DECLRP,OFF,DWO )@@G@@SDEST THEN,DECCM2 . ->NO@B@@@4 LINK SAPTAC . PUT , WP )@@G@@@#@@@4DECCM4 LABEL . @C@@@4 BNINDZ DSALND,DECCM5 . -> STRUWQ )@@G@@CTURE @D@@@4 BNINDZ DSCNTI,DECCM5 . -> OPEN FACTOR @D@@@4WR )@@G@@ LINK DEDLIM . CLEAR I/O STACK @#@@@4DECCM5 LABWS )@@G@@EL . @C@@@4 MOVE DSDEST,DECLCM,I . COMMA STATE @F@@@4 WT )@@G@@ IF 020,ON,DSALND THEN,DECCM9 . ->STRUCTURE, FACTORED @H@@@4 WU )@@G@@ MOVE DSDESC,DDENON,I . SET TO TERMINATE STRUCTURE IF NO NUMBER WV )@@G@@@#@@@4DECCM9 LABEL . @C@@@4 GOTO DECL36 . -> NEXTWW )@@G@@ TOKEN@#@@@4DECCM8 LABEL . @C@@@4 LINK SASPCM . MWX )@@G@@ISSING COMMA@^@@@4 GOTO DECCM4 . @#@@@4DECCM2 LABEL . @C@@@4WY )@@G@@ LINK EABK1 . DISCARD COMMA@^@@@4 GOTO DECWZ )@@G@@L36 . @#@@@4/. DIMENSION@#@@@4DEDCLP LABEL @G@@@4 IF XA )@@G@@ DECLDC+DECLLP+DECLCM+DECLDN,ON,DSDEST THEN,DEDC12 . ->FAC@G@@@4 XB )@@G@@ IF DECLRP+DECLID,OFF,DSDEST THEN,DECCM8 . -> SUPPLY COMMA @C@@@4XC )@@G@@ LINK DACM02 . DIM B CODE @C@@@4 GOTO DECXD )@@G@@L36 . -> ERROR @E@@@4 IF DECLID,ON,DSDEST THEXE )@@G@@N,DALP48 . ->NON FACT ID@C@@@4 MOVE DSDEST,DECLRT,I . ') ATTRXF )@@G@@' @D@@@4 LOAD X3,DSDFFB . FIRST FACTOR LEVEL @#@@@4XG )@@G@@DALP16 LABEL . @^@@@4 STORE X3,DSDIWL@^@@@4 USING STSXH )@@G@@BLK,X3@F@@@4 IF STDAT1-(IN 0,Q1,0,0),ZERO THEN,DALP14 . -> NOXI )@@G@@ ATTR @C@@@4 FLINK X10,SAEB8X . IMPROPER DIM @^@@@4 XJ )@@G@@ GOTO DALP20 . @#@@@4DALP14 LABEL . @A@5@4 MOVE STDAT1,STXK )@@G@@1DIM,I . @D@@@5 SET ST1DIM,ON,STDAT1 . SET DIMENSION ATTRXL )@@G@@@B@@@4 LSDP X5,STDID . SD @^@@@4 LINK DALXM )@@G@@P64 . @#@@@4DALP20 LABEL @^@@@4 LOAD A3,DSDIWL@B@@@4 XN )@@G@@ IF A3,EQ,DSDITL THEN,DECL36 . @ @@@4 ADD A3,SACDSW,I . XO )@@G@@@^@@@4 LOAD X3,A3 @C@@@4 GOTO DALP16 . -XP )@@G@@>NEXT ID @#@@@4DALP48 LABEL . @C@@@4 MOVE DSDEST,DECLAT,IXQ )@@G@@ . ATTR STATE @ @@@4 LOAD X3,DSDITL . @^@@@4 GOTXR )@@G@@O DALP16 . @^@@@4 USING SDSECT,X5@#@@@4DALP64 LLOC . @B@@@4XS )@@G@@ SET SDARRY,ON,SDCLS2 . 'ARRAY'@^@@@4 LOAD A7,DSDMCTXT )@@G@@@C@@@4 BNINDZ DSALND,DALP68 . -> IN STR @^@@@4 STOXU )@@G@@RE A7,SDNDIM@#@@@4DALP66 LOCAL . @^@@@4 ADD A7,A7 @C@@@4XV )@@G@@ ADD A7,3,I . DV= 2*DIMS+3 @ @@@4 STORE X5,XW )@@G@@DSSDPT . @^@@@4 LINK DADV @^@@@4 USING WORD,X3 .XX )@@G@@@B@@@4 MOVE W1H2,DSATP4 . B CODE @#@@@4 JMP . XY )@@G@@@#@@@4DALP68 LABEL . @D@@@4 ADD A7,SDNDIM . INHERITXZ )@@G@@ED DIMS @^@@@4 STORE A7,SDNDIM@ @@@4 MOVE SDDVA,DSAYA )@@G@@TP4 . @#@@@4 LJMP . @[@@@4. @ @@@4. WRITE DIM B-CODYB )@@G@@E @[@@@4. @#@@@4DADV LOCAL . @C@@@4 LOAD A8,A7 . YC )@@G@@ DV SPACE @^@@@4 LINK PLALC . @^@@@4 USIYD )@@G@@NG WORD,X3 .@C@@@4 STORE A8,W1Q1 . SAVE DV SIZE @D@@@4YE )@@G@@ LOAD X5,DSSDPT . SAVE DV PTR IN SD @ @@@4 USIYF )@@G@@NG SDSECT,X5 . @ @@@4 STORE X3,SDDVA,X5 . @#@@@4 JMPYG )@@G@@ . @[@@@4. @^@@@4. DIM B-CODE @[@@@4. @#@@@4DACM02YH )@@G@@ LOCAL . @B@@@4 MOVE DSDDST,0,I . CLR IND@C@@@4 YI )@@G@@ MOVE DSDMCT-(IN 0,Q3-H2,0,0),0,I . @C@@@4 LINK SAGBC . YJ )@@G@@ SAVE BCODE @ @@@4 STORE A3,DSATP4 . @B@@@4 YK )@@G@@ LINK SAPTAC . '(' @#@@@4DACM06 LABEL . @C@@@4 YL )@@G@@ LINK SAGBC . SAVE BCODE @ @@@4 STORE A3,DSATP2YM )@@G@@ . @#@@@4DACM07 LABEL . @^@@@4 SUPSYM ACDMUB @#@@@4DACM08YN )@@G@@ LABEL . @B@@@4 BCL LXMU,DACM13 . ->* @^@@@4 YO )@@G@@ EXPR ICDSYA @C@@@4 GOTO DACM16 . ->NO EXPR YP )@@G@@@B@@@4 SET 1,ON,DSDDST. EXPR @B@@@4 BAC ACCYQ )@@G@@OLN,DACM24 . ->: @#@@@4DACM10 LABEL . @C@@@4 COUNT DSDYR )@@G@@MCT . DIM COUNT @ @@@4 MOVE DSDMBI,0,I . @B@@@4YS )@@G@@ BAC ACRPAR,DACM36 . ->) @^@@@4 LINK SAPTCM . YT )@@G@@@^@@@4 GOTO DACM06 . @#@@@4DACM13 LABEL . @B@@@4 SUPYU )@@G@@SYM ACSTAR . '*' @ @@@4 SET 2,ON,DSDDST. @#@@@4YV )@@G@@DACM14 LABEL @B@@@4 LINK LXGET . NEXT @^@@@4YW )@@G@@ GOTO DACM10 . @#@@@4DACM16 LABEL @C@@@4 BNAC ACCYX )@@G@@OMA,DACM18 . -> NOT , @C@@@4 LINK SADLCM. DYY )@@G@@ELETE COMMA @^@@@4 GOTO DACM08 . @#@@@4DACM18 LABEL . @B@@@4YZ )@@G@@ BNAC ACRPAR,DACM20 . ->NOT )@D@@@4 LINK EABK1 . ZA )@@G@@ BACKUP TO COMMA @#@@@4DACM36 LABEL . @B@@@4 LINZB )@@G@@K SAPTAC . ')' @#@@@4DACM38 LABEL . @D@@@4 IF ZC )@@G@@ DSDMCT,NZERO THEN,DACM42 . SOME DIMS @D@@@4 SAERR SAEM86,SAZD )@@G@@E . IMPROPER DIMENSION @ @@@4 LOAD A3,DSATP1 . @^@@@4ZE )@@G@@ LINK SAGSBC @#@@@4 JMP . @#@@@4DACM20 LABEL ZF )@@G@@@C@@@4 FLINK X10,SAEB86 . IMPROPER DIM @ @@@4 LOAZG )@@G@@D A3,DSATP2 . @D@@@4 LINK SAGSBC . DELETE LAST PZH )@@G@@HASE @D@@@4 LINK EABK1 . DELETE LAST COMMA @^@@@4ZI )@@G@@ LINK SASPRPE .@^@@@4 GOTO DACM38 @#@@@4DACM24 LABZJ )@@G@@EL . @C@@@4 BIND DSDMBI,DACM28 . -> COLON @^@@@4 ZK )@@G@@ LINK SAPTAC . @ @@@4 LOAD A3,DSATP2 . @D@@@4 FIXZL )@@G@@UP A3,ACDMLB,I . CHANGE UB TO LB @ @@@4 MOVE DSDMBI,1,ZM )@@G@@I . @^@@@4 GOTO DACM07 . @#@@@4DACM28 LABEL @ @@@4 ZN )@@G@@ FLINK X10,SAEB86 . @^@@@4 GOTO DACM14 . @#@@@4DACM42 LABZO )@@G@@EL . @C@@@4 LOAD A3,DSDDST . SEE IF *,EXPR@B@@@4 ZP )@@G@@ IF A3,NE,3,I THEN,JMP1 . -> OR@ @@@4 FLINK X10,SAEB8X . ZQ )@@G@@@#@@@4 JMP . @#@@@4/. FACTOR LP@#@@@4DEDC12 LABEL . ZR )@@G@@@^@@@4 LOAD A7,DSDFTL@ @@@4 USING STSBLK,X5 . @E@@@4ZS )@@G@@ IF A7,GE,DSADFSKE,I THEN,DELP56. ->OVERFLOW @^@@@4 ZT )@@G@@ LOAD X5,A7 . @C@@@4 LOAD X3,X5 . PUSH STK ZU )@@G@@@ @@@4 ADD X5,SACDFSK,I . @ @@@4 STORE X5,DSDFTL . ZV )@@G@@@E@@@4 LOAD X11,DSDITL PTR TO 1ST ID OF FACT @ @@@4ZW )@@G@@ ADD X11,SACDSW,I . @ @@@4 STORE X11,STFFB,X5 . @C@@@4ZX )@@G@@ MOVE STFATR-(IN 0,Q3-H2,0,0),0,I . @E@@@4 IF DECZY )@@G@@LDN,OFF,DSDEST THEN,DELP24 . ->NO STR @E@@@4 IF DDEDAD,SAZZ )@@G@@ME,DSDESC THEN,DELP54 . -> MAJOR STR@ @@@4 USING STSBLK,X3 . AA )@@G@@@ @@@4 BIND STFSLF,DELP54 .@ @@@4 USING STSBLK,X5 . AB )@@G@@@C@@@4 MOVE STFSLF,1,I . NEW LEVEL @ @@@4 SETAC )@@G@@ 022,ON,DSALND .@F@@@4 IF DDESON,NSAME,DSDESC THEN,DELP25 .AD )@@G@@ ->NOT S@N STATE @E@@@4 MOVE DSDESC,DDEFSN,I . SET FACTORED SOAE )@@G@@N STATE @#@@@4DELP25 LABEL . @C@@@4 IF DDEBR,NSAME,DSDAF )@@G@@ESC THEN,DELP24 @A@@@4 MOVE DSDESC,DDEFBI,I . @#@@@4DELP24AG )@@G@@ LABEL . @C@@@4 MOVE DSDEST,DECLLP,I . STATE '(' @^@@@4AH )@@G@@ LINK SACNT . @^@@@4 GOTO DECL35 . @#@@@4DELP54 LABAI )@@G@@EL . @D@@@4 LOAD A7,SAEM36,I. IMPROPER FACTOR @#@@@4AJ )@@G@@DELP55 LABEL . @ @@@4 FLINK X10,SAESE . @^@@@4 GOTAK )@@G@@O DELP57 . @#@@@4DELP56 LABEL @D@@@4 FLINK X10,SAEB68 . AL )@@G@@ FACTOR TOO DEEP @#@@@4DELP57 LABEL . @^@@@4 LINK LXGAM )@@G@@ET. @^@@@4 GOTO DECL36 . @^@@@4/. RIGHT PAREN @#@@@4AN )@@G@@DEDCRP LABEL . @D@@@4 BINDZ DSCNTI,DARP68 . ->NO FACTORS AO )@@G@@OPEN @F@@@4 IF DECLID+DECLAT+DECLRT+DECLRP,ON,DSDEST THEN,DAAP )@@G@@RP12 .@C@@@4 IF DECLCM,OFF,DSDEST THEN,DARP68 . @C@@@4 AQ )@@G@@ LINK EABK1 . DELETE COMMA @^@@@4. CLOSE FACTOR AR )@@G@@@#@@@4DARP12 LABEL . @D@@@4 LOAD X5,DSDFTL . TOP FACAS )@@G@@TOR STACK @^@@@4 USING STSBLK,X5@ @@@4 MOVE DSDFFB,STAT )@@G@@FFB . @B@@@4 SUB X5,SACDFSK,I . UNSTK .@ @@@4 STOAU )@@G@@RE X5,DSDFTL . @C@@@4 LINK SACNDN . FACTORS-1 AV )@@G@@@ @@@4 BIND STFSLF,DARP24 .@D@@@4 SET 020,OFF,DSALND AW )@@G@@. CLEAR FACTOR IND @ @@@4 MOVE DSDESC,0,I . @#@@@4DARP24AX )@@G@@ LABEL . @ @@@4 MOVE DSDEST,DECLRP,I@^@@@4 GOTO DECAY )@@G@@L35 . @C@@@4DARP68 LABEL . EXTRA ')' @ @@@4 AZ )@@G@@ LOAD A7,SAEM81,I . @^@@@4 GOTO DELP55 . @A@@@4/. DECBA )@@G@@IMAL NUMBER - STRUCTURE @#@@@4DEDCDN LABEL . @H@@@4 IF DECBB )@@G@@LLP+DECLCM+DECLDC,OFF,DSDEST THEN,DEDC62 . ->NOT ALLOWED @E@@@4 BC )@@G@@ LOAD A7,DSDITL . GET PTR TO CURRENT LEVEL @F@@@4 IF BD )@@G@@ A7,EQ,DSADSKE,I THEN,DECI36 . ->OOPS, STACK FULL @^@@@4 LOABE )@@G@@D X5,A7 . @^@@@4 LOAD X3,A7 . @D@@@4 ADD X3,SACDSWBF )@@G@@,I . POINT TO NEXT LEVEL@D@@@4 LSDP X4,DLXID . GBG )@@G@@ET NUMBER BCD PTR @D@@@4 LSDP X4,SDBCLK,X4 . GET SD POINTEBH )@@G@@R @ @@@4 USING SDSECT,X4 . @E@@@4 IF SDRLCX,OFBI )@@G@@F,SDCLS1 THEN,DEDC04 . ->OK NUMBER @G@@@4 SAERR SAEM85,SAE . BJ )@@G@@ IMPROPER STRUCTURE NUMBER (COMPLEX) @#@@@4DEDC04 LABEL . @ @@@4BK )@@G@@ USING STSBLK,X3 . @D@@@4 LOAD A7,SDFXPT+1 . GBL )@@G@@ET LEVEL NUMBER @ @@@4 STORE A7,STDSL . @E@@@4 IF BM )@@G@@ A7,EQ,1,I THEN,DEDCNW . -> NEW STRUCTURE @D@@@4 IF A7,BN )@@G@@LT,256,I THEN,DEDX12 . -> VALID @ @@@4 SAERR SAEM85,SAE . BO )@@G@@@C@@@4 LOAD A7,255,I . SET MAX LEVEL@ @@@4 STOBP )@@G@@RE A7,STDSL . @#@@@4DEDX12 LABEL . @F@@@4 IF 01,OFF,DSBQ )@@G@@ALND THEN,DEDC64 . ->NOT IN STRUCTURE @E@@@4 IF 020,ON,DSBR )@@G@@ALND THEN,DEDC64 . ->FACTORED LEVEL @ @@@4 USING STSBLK,X5 . BS )@@G@@@D@@@4 IF A7,EQ,STDSL THEN,DEDCBR . ->BROTHER @C@@@4 BT )@@G@@ IF A7,GT,STDSL THEN,DEDCSN . ->SON @ @@@4. SEARCH FOR BROTBU )@@G@@HER @^@@@4 LOAD A3,X5 . @ @@@4 LOAD A8,STDSL . BV )@@G@@@#@@@4DEDC15 LABEL . @C@@@4 SUB A3,SACDSW,I . LAST ENBW )@@G@@TRY @ @@@4 USING STSBLK,A3 . @D@@@4 IF A8,LE,STDBX )@@G@@SL THEN,DEDC15 . ->NOT ONE @B@@@4 IF A7,NE,STDSL THEN,DEDCBY )@@G@@18 . @C@@@4 LOAD X5,A3 . FOUND BROTHER@A@@@4 BZ )@@G@@ GOTO DEDCBR . ->MERGE @#@@@4DEDC18 LABEL . @D@@@4 IF CA )@@G@@ A7,GT,STDSL THEN,DEDCBR . ->BROTHER @^@@@4 LOAD X5,A3 . CB )@@G@@@B@@@4 GOTO DEDC15 . ->TRYNEXT ONE @[@@@4. @#@@@4DEDC62CC )@@G@@ LABEL . @H@@@4 IF DECLRP+DECLID+DECLAT+DECLDN,ON,DSDEST TCD )@@G@@HEN,DECCM8 . ->PUT , @#@@@4DEDC64 LABEL . @E@@@4 LOAD A7,CE )@@G@@SAEM85,I . IMPROPER STRUCTURE NUMBER @C@@@4 GOTO DELP55 . CF )@@G@@ ->MESSAGE @A@@@4/. BROTHER STRUCTURE NUMBER @#@@@4CG )@@G@@DEDCBR LABEL . @C@@@4 LOAD A3,DDEBR,I . SET STATE CH )@@G@@@#@@@4DEBR02 LABEL . @ @@@4 USING STSBLK,X5 . @E@@@4 CI )@@G@@ STORE A3,DSDESC . SET STRUCTURE CONTROL @ @@@4 MOVCJ )@@G@@E DSDREL,STDID . @#@@@4DEBR05 LABEL . @F@@@4 MOVE DSDEST,DECK )@@G@@CLDN,I . SET STRUCTURE NUMBER STATE @C@@@4 GOTO DECI26 . CL )@@G@@ ->GET ID @[@@@4. @]@@@4. SON@[@@@4. @#@@@4CM )@@G@@DEDCSN LABEL . @C@@@4 LOAD A3,DDESON,I . SET SON STATECN )@@G@@@F@@@4 GOTO DEBR02 . - ->MERGE WITH BROTHER ROUTINE CO )@@G@@@[@@@4. @[@@@4. @[@@@4. @^@@@4. NEW STRUCTURE @[@@@4CP )@@G@@. @[@@@4. @#@@@4DEDCNW LABEL . @A@@@4 MOVE DSDESC,DDCQ )@@G@@EDAD,I . @D@@@4 BINDZ DSALND,DESFN4 . ->NO CURRENT STRUCTURE CR )@@G@@@^@@@4 LINK DESFIN . @#@@@4DESFN4 LABEL . @E@@@4 STOCS )@@G@@RE X3,DSSTTP . SAVE TOP OF STRUCTURE @E@@@4 MOVE DSACT )@@G@@LND,1,I . CLEAR STRUCTURE CONTROL @^@@@4 GOTO DEBR05 . CU )@@G@@@[@@@4. @[@@@4. @[@@@4. @[@@@4. @[@@@4. @[@@@4. CV )@@G@@@[@@@4. @ @@@4. TERMINATE STRUCTURE @[@@@4. @[@@@4. CW )@@G@@@[@@@4. @[@@@4. @[@@@4. @#@@@4DESFIN LOCAL . @E@@@4 CX )@@G@@ STORE X5,DSATP2 . SAVE TOP OF STRUCTURE @ @@@4 LOACY )@@G@@D X5,DSSTTP . @D@@@4 STORE X3,DSSTTP . TEMPORARY FORCZ )@@G@@ X3 @ @@@4 USING STSBLK,X5 . @D@@@4 LSDP X4,STDID DA )@@G@@. GET SD OF LAST SD @ @@@4 USING SDSECT,X4 . @ @@@5DB )@@G@@ STORE X4,DSATPZ . @G@@@4 LOAD A3,SDCLS0 . GDC )@@G@@ET STORAGE CLASS OF MAJOR MEMBER @^@@@4 AND,U A3,0360 .@D@@@4DD )@@G@@ STORE A4,DSATP9 . SAVE STORAGE CLASS @D@@@4 IF DE )@@G@@ SDSTRU,OFF,SDCLS4 THEN,DESF72 . ->DONE @C@@@4 LOAD A3,STDAT DF )@@G@@. GET ATTR WORD@A@@@4 AND A3,DESFF3 . MASKWORD @D@@@4DG )@@G@@ IF A4,NE,0,I THEN,DESF16 . ->IMPROPER ATTR@E@@@4DESF12 LABDH )@@G@@EL . NEXT DCL IN STRUCTURE @D@@@4 ADD X5,DI )@@G@@SACDSW,I . NEXT STACK ENTRY @^@@@4 LOAD A3,X5 . @C@@@4DJ )@@G@@ IF A3,GT,DSATP2 THEN,DESF72 . ->DONE@D@@@4 LSDP X4,DK )@@G@@STDID . SD OF DECLARED SD @B@@@4 STORE X4,DSSDPT . DL )@@G@@ SAVEIT @D@@@4 LOAD A7,SDCLS0 . SET STORAGE CLASS DM )@@G@@@^@@@4 AND,U A7,0017 .@ @@@4 ADD A8,DSATP9 . @ @@@4DN )@@G@@ STORE A8,SDCLS0 . @C@@@4 LOAD A7,STDAT . GDO )@@G@@ET ATTR @F@@@4 IF SDSTRU,OFF,SDCLS4 THEN,DESF24 . ->NOT SDP )@@G@@TRUCTURE @ @@@4 AND A7,DESFFM . @F@@@4 IF A8,DQ )@@G@@EQ,0,I THEN,DESF12 . ->NEXT DCL'D STRUCTURE ELT @#@@@4DESF16 LABEL . DR )@@G@@@G@@@4 LOAD A7,SAEM84,I . IMPROPER ATTRIN DCL'D STRUCTUREDS )@@G@@ ELT @ @@@4 FLINK X10,DEBDCL . @C@@@4 GOTO DESF12 . DT )@@G@@ ->NEXT DCL @B@@@4DESFFM +0337777777777 . DIMENSION MASK DU )@@G@@@B@@@4DESFF3 +0337777340774 . MAJOR STRUCTURE @A@@@4DESFF2 +00001777DV )@@G@@77003 . LEAF ATTR @[@@@4. @[@@@4. @#@@@4DESF24 LABEL . @C@@@4DW )@@G@@ AND,U A7,DESFF2 . CHECK ATTR @C@@@4 IF A8,DX )@@G@@EQ,0,I THEN,DESF26 . ->OK ATTR@ @@@4 LOAD A7,SAEM84,I . @ @@@4DY )@@G@@ FLINK X10,DEBDCL . @#@@@4DESF26 LABEL . @B@@@4 BINDZ )@@G@@DZ SDNDIM,DESF32 . ->NO DIMS @A@@@4 SET SDARRY,ON,SDCLS2 . EA )@@G@@@C@@@4 MOVE DSATP1,SDDVA . GET DV FOR ARRAY @ @@@4 LOAEB )@@G@@D A7,SDNDIM . @B@@@4 ADD A7,A7 . 2* NUM DIM. @C@@@4EC )@@G@@ ADD A7,3,I . SIZE OF DV @D@@@4 LOAD A9,ED )@@G@@X5 . SAVE X5 ACROSS CLL @^@@@4 LINK DADV . @^@@@4EE )@@G@@ USING WORD,X3 .@E@@@4 MOVE W1H2,DSATP1 . SET BCOEF )@@G@@DE PTR TO INFO @F@@@4 LOAD A7,SDNDIM,X4 . SET MAXIMUM DEG )@@G@@IMENSIONALITY @^@@@4 LOAD A3,X4 . @#@@@4DESF33 LABEL . EH )@@G@@@E@@@4 IF A3,ZERO THEN,DESF34 . -> DONE WITH STRUCTURE @ @@@4EI )@@G@@ USING SDSECT,A3 . @F@@@4 IF A7,LT,SDMXDM THEN,DESEJ )@@G@@F37 . -> NOT MAX DIMENSIONS @F@@@4 STORE A7,SDMXDM . NEK )@@G@@EW MAX GREATER THAN OLD MAX @#@@@4DESF37 LABEL . @ @@@4 LOAEL )@@G@@D A3,SDDAD,A3 . @^@@@4 GOTO DESF33 . @ @@@4 USING SDSEM )@@G@@ECT,X4 . @#@@@4DESF32 LABEL . @D@@@4 IF SDA1BS,ZERO THEEN )@@G@@N,DESF38 . ->NO LENGTH @B@@@4 LOAD A7,3,I . GET DV EO )@@G@@@^@@@4 LOAD A9,X5 . @^@@@4 LINK DADV . @D@@@4DESF34EP )@@G@@ LABEL . SET PTR TO LENGTH BCODE @^@@@4 LOAD X5,EQ )@@G@@A9 . @^@@@4 USING WORD,X3 .@C@@@4 MOVE W1H2+2,SDA1BS .ER )@@G@@ SET LENGTH @C@@@4 GOTO DESF12 . ->NEXT SD ES )@@G@@@#@@@4DESF38 LABEL . @C@@@4 LOAD A9,X5 . SAVE CURRENT STET )@@G@@K PTR @D@@@4 LOAD A7,2,I . GET 2 WORD D.V. @^@@@4EU )@@G@@ LINK DADV . @B@@@4 LOAD X5,A9 . RESET STK PTR EV )@@G@@@C@@@4 GOTO DESF12 . ->NEXT SD @[@@@4. @[@@@4EW )@@G@@. @[@@@4. @ @@@4. END OF STRUCTURE @[@@@4. @[@@@4EX )@@G@@. @#@@@4DESF72 LABEL . @ @@@4 MOVE DSALND,0,I . @[@@@5EY )@@G@@. @E@@@5. SET NUMBER OF STRING LEAVES INTO STRUCTURE SD'S EZ )@@G@@@B@@@5. FOR CODE GEN - MAX LENGTH MODE @D@@@5 LOAD X3,FA )@@G@@DSATPZ . START OF STRUCTURE @E@@@5DESF79 LABEL . FB )@@G@@ LOOP FOR SUBSTRUCTURE @G@@@5 LOAD A9,0,I . NFC )@@G@@UMBER OF STRING LEAVES=0 SO FAR @ @@@5 USING SDSECT,X3 . FD )@@G@@@#@@@5DESF76 LABEL . @E@@@5 IF SDSTRU,OFF,SDCLS4 THEN,DESFFE )@@G@@75 . -> FOUND LEAF@D@@@5 LSDP X3,SDSON . GO DOWN ONE LFF )@@G@@EVEL @E@@@5 GOTO DESF76 . TRY THIS ONE FOR BOTTOM .FG )@@G@@@D@@@5DESF75 LABEL . FOUND LEAF ELEMENT @E@@@5 FH )@@G@@ ADD A9,SDNSPS . 1=STRING 0=ARITHMETIC @#@@@5DESF80 LABFI )@@G@@EL . @G@@@5 IF SDBROT,ZERO THEN,DESF77 . ->NO BROTHER, GO UPFJ )@@G@@ ONE LEVEL @ @@@5 LSDP X3,SDBROT . @H@@@5 IF SDSFK )@@G@@TRU,OFF,SDCLS4 THEN,DESF75 . ->BROTHER IS NOT A STRUCTURE @G@@@5 FL )@@G@@ STORE A9,SDNSPS . SAVE COUNT FROM RIGHT SUBSTRUCTURE @E@@@5FM )@@G@@ GOTO DESF79 . PROCESS THIS SUBSTRUCTURE@#@@@5DESF77FN )@@G@@ LABEL . @#@@@5DESF81 LABEL . @F@@@5 IF SDMEMS,OFF,SDCLFO )@@G@@S2 THEN,DESF74 . -> END OF STRUCTURE@D@@@5 LSDP X3,SDDAD . FP )@@G@@ GO UP ONE LEVEL @G@@@5 LOAD A3,SDNSPS . GET COUFQ )@@G@@NT OF PREVIOUS SUBSTRUCTURES @F@@@5 STORE A9,SDNSPS . SFR )@@G@@ET COUNT OF THIS SUBSTRUCTURE @F@@@5 ADD A9,A3 . GFS )@@G@@ET COUNT FOR NEXT LEVEL UP @F@@@5 GOTO DESF80 . PFT )@@G@@ROCESS BROTHER OF THIS LNODE @[@@@5. @#@@@4DESF74 LABEL . @D@@@4FU )@@G@@ LOAD X3,DSSTTP . RESET SAVED REGS. @C@@@4 JMPFV )@@G@@ . ->RETURN @^@@@4/. IDENTIFIER @#@@@4FW )@@G@@DEDCID LABEL . @D@@@4 IF 0770,ON THEN,DECI08 . ->NOT CONSFX )@@G@@TANT @C@@@4 BNCL LXID,DECL39 . ->CONSTANT @#@@@4DECI08FY )@@G@@ LABEL . @G@@@4 IF DECLLP+DECLCM+DECLDN+DECLDC,OFF,DSDEST FZ )@@G@@THEN,DECCM8 . @#@@@4DECI12 LABEL . @D@@@4 LOAD A7,DSDITLGA )@@G@@ . SEE IF ID STK FULL @C@@@4 IF A7,EQ,DSADSKE,I THEN,GB )@@G@@DECI36 . @C@@@4 LINK SDXVE . CREATE SD @^@@@4GC )@@G@@ LOAD X3,X4 . @^@@@4 USING SDSECT,X3@E@@@4 IF GD )@@G@@ SD3ENT,ON,SDCLS3 THEN,DECI48 . ->PREVIOUS USE@#@@@4DECI13 LABEL . GE )@@G@@@E@@@4 IF 040,OFF,DSALND THEN,DECI16 . -> NO STRUCTURE@A@@@4GF )@@G@@ SET SDPARM,ON,SDCLS2 . @C@@@4 LOAD X4,DSSTTP . GG )@@G@@ PARM OFFSET @B@@@4 LSDP X4,STDID,X4 . SD @ @@@4GH )@@G@@ LOAD A7,SDPROF,X4 . @ @@@4 STORE A7,SDPROF,X3 . @#@@@4GI )@@G@@DECI16 LABEL . @C@@@4 MOVE DSDEVD,1,I . VALID ID GJ )@@G@@@C@@@4 MOVE SDDCNM,DSDSNM . SET DCL NUM. @A@@@4 SETGK )@@G@@ SD3CLR,ON,SDCLS3 . @B@@@4 SET SD4DCR+SD4RFE,ON,SDCLS4 . GL )@@G@@@C@@@4 STORE X3,DSSDPT . SAVE SD PTR @C@@@4 LOAGM )@@G@@D X5,DSDITL . PUSH STK @ @@@4 ADD X5,SACDSW,I . GN )@@G@@@ @@@4 STORE X5,DSDITL . @C@@@4 MOVE STDAT,0,I . GO )@@G@@ CLEAR WORD @D@@@4 STSDP X3,STDID,X5 . PUSH SD IN IDGP )@@G@@ STK @C@@@4 LSDP X4,DSDREL . REL STRU. @C@@@4 GQ )@@G@@ LOAD X1,DSDESC . STR. CTL. @C@@@4 MOVE DSDEST,0,GR )@@G@@I . CLR. IND. @C@@@4 LOAD X1,DEBTBL+FH1,X1 . STR ROUGS )@@G@@TINE @^@@@4 GOTO 0,X1 . @[@@@4. @A@@@4. FACTORED GT )@@G@@STRUCTURE LEVEL @ @@@4 USING STSBLK,X5 . @#@@@4DECIFB LABGU )@@G@@EL . @D@@@4 MOVE STDSL,DSDFSL . SET STRUCTURE LEVEL@^@@@4GV )@@G@@ MOVE X4,X5 . @B@@@4 SUB X4,SACDSW,I . LAST IDGW )@@G@@@ @@@4 LSDP X4,STDID,X4 . @[@@@4. @ @@@4. BROTHER -GX )@@G@@ INITIAL @[@@@4. @#@@@4DECIFI LABEL . @F@@@4 MOVE DSDGY )@@G@@ESC,DDEFBR,I . SET FACTORED BROTHER STATE @#@@@4DECIBR LABEL . GZ )@@G@@@ @@@4 USING SDSECT,X4 . @ @@@4 MOVE SDBROT,STDID . HA )@@G@@@ @@@4 LOAD A3,SDDAD . @ @@@4 USING SDSECT,X3 . HB )@@G@@@ @@@4 STORE A3,SDDAD . @E@@@4 LSDP X4,SDDAD . HC )@@G@@ GO TO FATHER NODE SD @B@@@4 GOTO DECIS4 . -HD )@@G@@>MERGE@[@@@4. @[@@@4. @C@@@4DECIFS LABEL . SHE )@@G@@ON INITIAL @F@@@4 MOVE DSDESC,DDEFBR,I . SET FACTORED BROTHEHF )@@G@@R STATE @#@@@4DECISN LABEL . @ @@@4 MOVE SDDAD,DSDREL . HG )@@G@@@ @@@4 USING SDSECT,X4 . @ @@@4 MOVE SDSON,STDID . HH )@@G@@@D@@@4 SET SDSTRU,ON,SDCLS4 . SET STRUCTURE ATTR @D@@@4 HI )@@G@@ LOAD A3,SDCLS0 . SET STRUCTURE FLAG @E@@@4 AND,U A3,HJ )@@G@@0360 . LEAVE STORAGE CLASS ONLY @ @@@4 ADD A4,SD0STUHK )@@G@@,I . @C@@@4 STORE A4,SDCLS0 . SET STRUCTURE@#@@@4DECIS4HL )@@G@@ LABEL . @ @@@4 USING SDSECT,X4 . @D@@@4 LOAD A3,HM )@@G@@SDNDIM . SET DIMENSIONALITY @ @@@4 USING SDSECT,X3 . HN )@@G@@@ @@@4 STORE A3,SDNDIM . @F@@@4 SET SDMEMS,ON,SDCLSHO )@@G@@2 . SET STRUCTURE MEMBERSHIP FLAG @D@@@4 IF SDNDIM,ZERO THEHP )@@G@@N,DECI24 . -> NOT ARRAY @F@@@4 SET SDARRY,ON,SDCLS2 . -> POSSHQ )@@G@@IBLY INHERITED DIMS @^@@@4 GOTO DECI24 . @#@@@4DECINS LABHR )@@G@@EL . @D@@@4 BINDZ DSALND,DECI24 . -> NO PREC. STR. @D@@@4HS )@@G@@ SUB X5,SACDSW,I . POP LAST MEMBER @D@@@4 LINHT )@@G@@K DESFIN . FINISH PREV. STR. @#@@@4DECI24 LABEL . @F@@@4HU )@@G@@DECIDD LABEL . DAD . MAJOR STRUCTURE LEVEL @C@@@4HV )@@G@@ MOVE DSDEST,DECLID,I . 'ID' STATE @#@@@4DECI26 LABEL . HW )@@G@@@C@@@4 LINK SAPTID . ID TOKEN @B@@@4 GOTHX )@@G@@O DECL36 . -> NEXT@#@@@4DECI36 LABEL . @D@@@4 SAEHY )@@G@@RR SAEM83,SAS . TOO MANY ID'S . @D@@@4 GOTO DEDLTM . HZ )@@G@@ -> TERMINATE DCL @#@@@4DECI48 LABEL . @E@@@4 IF IA )@@G@@ SDPARM,OFF,SDCLS2 THEN,DECI52 . ->NOT PARM@E@@@4 IF SD4IB )@@G@@DCR,ON,SDCLS4 THEN,DECI72 . ->PREV DCL@C@@@4 BINDZ DSALND,DEIC )@@G@@CI16 . -> NOT IN STR@C@@@4 SET 040,ON,DSALND . SET STRID )@@G@@ PARM @^@@@4 GOTO DECI16 . @#@@@4DECI52 LABEL . @B@@@4 IE )@@G@@ LOAD A6,DSDESC . STR CTL@C@@@4 IF A6,GE,2,I THEN,IF )@@G@@DECI62 . ->STR @B@@@4 LOAD A7,DSBKSD . BLK SD @C@@@4IG )@@G@@ LOAD X9,X3 . SD OF ID @#@@@4DECI54 LABEL . IH )@@G@@@ @@@4 USING SDSECT,X9 . @E@@@4 IF SD4ENT,ON,SDCLSII )@@G@@4 THEN,DECI72 . DUPL. ENTRY @E@@@4 IF SDDAD,ZERO THEN,DECI7IJ )@@G@@2 . -> NOT STR MEMBER @#@@@4DECI56 LABEL . @E@@@4 IF SDNIK )@@G@@XDC,ZERO THEN,DECI60 . -> END OF CHAIN @^@@@4 LSDP X9,SDNXDCIL )@@G@@@F@@@4 IF A7,NE,SDBKLK THEN,DECI56 . ->NOT IN SAME BLOCK IM )@@G@@@^@@@4 GOTO DECI54 . @#@@@4DECI60 LABEL . @ @@@4 USIIN )@@G@@NG SDSECT,X3 . @B@@@4 MOVE DLXID,SDBCHI . BCD PTR@ @@@4IO )@@G@@ MOVE DSAU4,1,I . @C@@@4 LINK SDXVE. FIP )@@G@@ORCE SD @C@@@4 LOAD X3,X4 . GET SD ADDR @ @@@4IQ )@@G@@ MOVE DSAU4,0,I . @^@@@4 GOTO DECI13 . @C@@@4DECI62IR )@@G@@ LABEL . STRUCTURE @F@@@4 IF DDEBR,NSAIS )@@G@@ME,DSDESC THEN,DECI63 . -> NOT UNFACT. @C@@@4 LSDP X9,DSDRELIT )@@G@@ . PTR TO BROT. @^@@@4 GOTO DECI64 . @#@@@4DECI63 LABIU )@@G@@EL . @F@@@4 IF DDEFBR,NSAME,DSDESC THEN,DECI60 . ->NOT FACT.IV )@@G@@ BROT.@C@@@4 LSDP X9,STDID,X5 . BROT PTR @#@@@4DECI64IW )@@G@@ LABEL . @B@@@4 LSDP X9,SDDAD,X9 . DAD @C@@@4 IX )@@G@@ LSDP X9,SDSON,X9 . LEFT SON @#@@@4DECI65 LABEL . @ @@@4IY )@@G@@ LOAD A3,SDBCHI,X9 . @B@@@4 IF A3,EQ,SDBCHI THEN,DECIZ )@@G@@I72 . @^@@@4 USING SDSECT,X9@B@@@4 IF SDBROT,ZERO THEJA )@@G@@N,DECI60 . @ @@@4 LSDP X9,SDBROT . @^@@@4 GOTO DECJB )@@G@@I65 . @#@@@4DECI72 LABEL . @C@@@4 SAERR SAEM96,SAE . MJC )@@G@@ULT. DCL @C@@@4 MOVE DSAU3,'V',I . $UND VAR @^@@@4JD )@@G@@ LINK SDSPLY . @C@@@4 STSDP X3,DLXID . CHANGE JE )@@G@@NAME @^@@@4 GOTO DECI13 . @A@@@4/. ELIMINATE SD FROM ID JF )@@G@@STK @#@@@4DEDLIM LOCAL. @C@@@4 MOVE DSATPG,0,I . CJG )@@G@@LEAR'EXT'CTL@C@@@4 LOADA X7,DSADSK-SACDSW . BASE ID STK @#@@@4JH )@@G@@DELM12 LABEL . @^@@@4 LOAD A3,X7 . @D@@@4 IF A3,JI )@@G@@NE,DSDITL THEN,DELM21 . ->NOT AT TOP@C@@@4 LOADA X7,DSADSK-SACDSJJ )@@G@@W . RESET IDSTK @ @@@4 STORE X7,DSDITL . @#@@@4 JMPJK )@@G@@ . @#@@@4DELM21 LABEL . @C@@@4 ADD X7,SACDSW,I . UJL )@@G@@P ONE LEVEL @B@@@4 LSDP X3,STDID,X7 . SD PTR @ @@@4 JM )@@G@@ USING SDSECT,X3 . @ @@@4 USING STSBLK,X7 . @ @@@4 JN )@@G@@ MOVE DSATPX,STDSL . @D@@@4 IF SDSTRU,ON,SDCLS4 THEN,DELM2JO )@@G@@3 . ->STR @F@@@4 LOAD A7,STDSL . SEE IF BASE OF STJP )@@G@@RUCTURE @D@@@4 IF A7,NE,1,I THEN,DELM22 . -> NOT BASE JQ )@@G@@@^@@@4 LOAD X5,X3. @ @@@4 LOAD A7,SAEM85,I . @ @@@4JR )@@G@@ FLINK X10,DEBDCL . @^@@@4 LOAD X3,X5 . @ @@@4 JS )@@G@@ USING SDSECT,X3 . @C@@@4 BINDZ SDNDIM,DELM22 . ->NO DIJT )@@G@@MS @C@@@4 STORE X7,DSATPH . SAVE STK PTR @ @@@4 JU )@@G@@ MOVE DSATPY,SDDVA . @ @@@4 MOVE SDDVA,0,I . @^@@@4 JV )@@G@@ LOAD X5,X3 . @B@@@4 LOAD X3,SDNDIM,X5 . # DIMS @B@@@4JW )@@G@@ LINK DALP66 . GET DV @^@@@4 LOAD X3,X5 . JX )@@G@@@ @@@4 LOAD X7,DSATPH . @#@@@4DELM22 LABEL . @E@@@4 JY )@@G@@ LINK SADRTC . CHECK RUN TIME CLASS @#@@@4DELM23 LABJZ )@@G@@EL . @D@@@4 MOVE DSATPH,DSBKSD . SETUP FOR DV CHAIN @ @@@4KA )@@G@@ LOAD A7,DSATPX . @C@@@4 IF A7,LT,1,I THEN,DEL239KB )@@G@@ . -> NO STR@C@@@4 LINK DEL231 . -> IN STR @#@@@4KC )@@G@@DEL239 LABEL . @D@@@4 MOVE DSATPG,0,I . CLEAR 'EXT' CKD )@@G@@TL @E@@@4 IF SDEXTN,OFF,SDCLS2 THEN,DECL3 . -> NOT EXT KE )@@G@@@D@@@4 GOTO DECL24 'EXT' ROUTINE @#@@@4DECL3 KF )@@G@@ LABEL . @E@@@4 IF SD0STA,OFF,SDCLS0 THEN,DECL6 . ->NOT STKG )@@G@@ATIC @#@@@4DECL4 LABEL . @B@@@4 LOAD A3,SDCLS0 . SEE IFKH )@@G@@ FILE @D@@@4 AND,U A3,017 . LEAVE CLASS BITS ONLY @D@@@4KI )@@G@@ IF A4,EQ,SD0FLE,I THEN,DELM12 . -> FILE @D@@@4 MOVKJ )@@G@@E DSATPH,ADBK0S . SETUP DV CHAIN @D@@@4 LINK DEDLSH . KK )@@G@@ ADD TO STATIC CHAIN@#@@@4DECL6 LABEL . @C@@@4 IF KL )@@G@@ SDDVA,ZERO THEN,DELM12 . ->NO DV@D@@@4 IF SDSTRU,ON,SDCLSKM )@@G@@4 THEN,DELM12 . ->STR @E@@@4. ? ? ? ? ? IF SDPARM,ON,SDCLS2 THEN,DKN )@@G@@ECLB . ->PARM @D@@@4 LOAD X5,DSATPH . PTR TO BLOCK KO )@@G@@SD @#@@@4DECL7 LABEL . @C@@@4 LINK DEDLDV . PKP )@@G@@UT ON CHAIN @^@@@4 GOTO DELM12 .@#@@@4DECLB LABEL . @D@@@4KQ )@@G@@ LOAD X5,DSALSB . CONTAINING BLK SD @^@@@4 GOTKR )@@G@@O DECL7 . @[@@@4. @[@@@4. @A@@@4. EXT TESTING SUBROUTINKS )@@G@@ES @[@@@4. @[@@@4. @ @@@4 USING SDSECT,X3 . @#@@@4KT )@@G@@DEC235 LABEL . @E@@@4 IF SDEXDM,ON,SDCLS2 THEN,DECL3 . ->DKU )@@G@@UMMY EXT @B@@@4 SET SDEXDM+SDEXTN,ON,SDCLS2 . @ @@@4 KV )@@G@@ MOVE SDEXPT,0,I . @A@@@4 GOTO DECL3 . ->CONTINUE @[@@@4KW )@@G@@. @#@@@4DEL233 LABEL . @D@@@4 BINDZ DSATPG,DECL3 . ->NOT KX )@@G@@EXT STRUCTURE @E@@@4 IF 0340,NSAME,DSATPG THEN,DEC235 . -KY )@@G@@>DUMMY EXT @A@@@4 SET SDEXTN,ON,SDCLS2 . @^@@@4 GOTKZ )@@G@@O DECL4 . @#@@@4DEL231 LABEL . @F@@@4 IF A7,NE,1,I THEN,LA )@@G@@DEL233 . ->NOT START OF STRUCTURE @C@@@4 IF SDEXTN,OFF,SDCLLB )@@G@@S2 THEN,DECL3 . @C@@@4 SET 0340,ON,DSATPG . SET EXT FLAG LC )@@G@@@[@@@4. @#@@@4DECL24 LLOC . @E@@@4 IF SD0FLE,SAME,SDCLD )@@G@@LS0 THEN,DELM12 . ->EXT FILE @ @@@4 LSDP X10,SDBCHI . @ @@@4LE )@@G@@ USING SDBCD,X10 . @E@@@4 IF BCDEPR,ON,SDBCL4 THENLF )@@G@@,DECL25 . ->PREV DCL @A@@@4 SET BCDEPR,ON,SDBCL4 . @A@@@4LG )@@G@@ GOTO DECL4 . ->CONTINUE @[@@@4. @^@@@4. ADD TO CHLH )@@G@@AIN @[@@@4. @^@@@4 USING SDSECT,X5@#@@@4DEDLDV LLOC . LI )@@G@@@E@@@4 IF SDDVC,ZERO THEN,DEDLD5 . ->CHAIN STARTED @D@@@4LJ )@@G@@ LSDP A3,SDDOOF . PTR TO LAST LINK @ @@@4 STSLK )@@G@@DP X3,SDDVCH,A3 . @#@@@4DEDLD3 LABEL . @ @@@4 STSDP X3,SDDOOFLL )@@G@@ . @#@@@4 LJMP . @#@@@4DEDLD5 LABEL . @B@@@4 STOLM )@@G@@RE X3,SDDVC . START CHAIN @^@@@4 GOTO DEDLD3 . @[@@@4. LN )@@G@@@^@@@4. STATIC CHAIN @[@@@4. @#@@@4DEDLSH LLOC . @ @@@4LO )@@G@@ LOAD A3,ADPCSS . @ @@@4 STORE X3,ADPCSS . @ @@@4LP )@@G@@ STSDP A3,SDSTCH,X3 . @#@@@4 LJMP . @ @@@4 USILQ )@@G@@NG STSBLK,X7 . @ @@@4 USING SDSECT,X3 . @[@@@4. @ @@@4LR )@@G@@. RUNTIME CLASS CHECK @[@@@4. @#@@@4SADRTC* LLOC . @F@@@4LS )@@G@@ IF SDINTL,OFF,SDCLS3 THEN,DERTCO . -> NOT INITIAL @D@@@4LT )@@G@@ LOAD A3,SDCLS0 . SEE IF LABEL . @D@@@4 ANDLU )@@G@@,U A3,017 . ATTR BITS ONLY @E@@@4 IF A4,NE,SD0LV )@@G@@LAB,I THEN,DERTA2 . -> NOT LABEL @E@5@4 IF SD0STA,OFF,SDCLLW )@@G@@S0 THEN,DERTA0 . -> NOT STATIC@E@@@5 IF SD0STA,OFF,SDCLS0 THELX )@@G@@N,DERTA2 . -> NOT STATIC@D@5@4 FLINK X10,SAE92X . -> IMPRLY )@@G@@OPER INITIAL@C@@@5 SAERR SAEMNS,SAE . STATIC NO GOOD @D@@@4LZ )@@G@@ LOAD A3,SDCLS0 . SET TO AUTOMATIC @A@@@4 XORMA )@@G@@,U A3,SD0AUT+SD0STA . @ @@@4 STORE A4,SDCLS0 . @A@@@4 MB )@@G@@ SET SDEXTN,OFF,SDCLS0 . @#@5@4DERTA0 LABEL . @ @5@4 LOAMC )@@G@@D A3,STDAT4 . @D@5@4 AND,U A3,DAICNL . CHECK NO LABEMD )@@G@@L @#@5@4DERTA1 LABEL . @C@5@4 IF A4,NE,0,I THEN,DERTAEME )@@G@@ . ->ERROR @^@5@4 GOTO DERTA6 . @#@@@4DERTA2 LABEL . @G@7@5MF )@@G@@ IF DAICSC,OFF,SDXREF THEN,DERTA1 . ->NO LIST, ARRAY OR SC OKMG )@@G@@@G@@@7 IF DAICSC,OFF,SDINCL THEN,DERTA1 . ->NO LIST, ARRAY ORMH )@@G@@ SC OK@F@@@5 IF SDARRY,ON,SDCLS2 THEN,DERTA1 . ->ARRAY, LIST MI )@@G@@OK @F@@@5 SAERR SAEMIT,SAE . ERROR, NO LIST INIT ON SCMJ )@@G@@ALAR @D@@@5 GOTO DERTAE . IGNORE INITIAL @#@@@5MK )@@G@@DERTA1 LABEL . @D@@@5. SEE IF INITIAL LIST MATCHES ATTRIBUTES OML )@@G@@F SD @[@@@5. @D@7@5 LOAD A3,SDXREF . GET TYPE OF MM )@@G@@LIST @D@@@7 LOAD A3,SDINCL . GET TYPE OF LIST @B@@@5MN )@@G@@ AND,U A3,DAICLB+DAICAR+DAICST . @B@@@5. 1=LABEL, MO )@@G@@2=STRING, 4=ARITH @^@@@5 LOAD A3,A4 . @E@@@5 LX,H1 X5,MP )@@G@@DAILLS,A3 . ROUTINE TO GO TO @D@@@5 LOAD A3,SDCLS0MQ )@@G@@ . GET DATA TYPE @E@@@5 AND,U A3,017 . MR )@@G@@LOW ORDER 4 BITS ONLY @^@@@5 GOTO 0,X5 . @#@@@5DAILLB LABEMS )@@G@@L . @D@@@5 IF A4,EQ,SD0LAB,I THEN,DERTA6 ELSE,DAILIL @#@@@5MT )@@G@@DAILST LABEL @D@@@5 IF A4,EQ,SD0STR,I THEN,DERTA6 ELSE,DMU )@@G@@AILIL @#@@@5DAILAR LABEL . @D@@@5 IF A4,EQ,SD0ART,I THEN,DMV )@@G@@ERTA6 ELSE,DAILIL @#@@@5DAILIL LABEL . @G@@@5 SAERR SAEMIA,SAMW )@@G@@E . IMPROPER INITIAL - ATTR DO NOT MATCH@C@@@5 GOTO DERMX )@@G@@TAE . IGNORE INITIAL @E@5@4 IF ST1STG,OFF,STDAT1 THEMY )@@G@@N,DERTA4 . ->NON STRING @ @5@4 LOAD A3,STDAT4 . @ @5@4 MZ )@@G@@ AND,U A3,DAICNS . @^@5@4 GOTO DERTA1 . @#@5@4DERTA4 LABNA )@@G@@EL . @D@5@4 IF DAICNA,ON,STDAT4 THEN,DERTAE . ->ERROR @#@@@4NB )@@G@@DERTA6 LABEL . @E@@@4 IF SD0STA,OFF,SDCLS0 THEN,DERTA8 . -NC )@@G@@>NON STATIC @E@5@4 IF DAICSA,OFF,STDAT4 THEN,DERTA8 . ->STATIND )@@G@@C NO @E@7@5 IF DAICSA,OFF,SDXREF THEN,DERTA8 . ->STATIC NO NE )@@G@@@E@@@7 IF DAICSA,OFF,SDINCL THEN,DERTA8 . ->STATIC NO @ @5@4NF )@@G@@ FLINK X10,SAE92X . @C@@@5 SAERR SAEMNS,SAE . SNG )@@G@@TATIC NOT OK@#@@@4DERTA8 LABEL . @C@@@4 BNINDZ SDNDIM,DERTCO NH )@@G@@. -> NOT SCALAR @E@5@4 IF DAICSC,OFF,STDAT4 THEN,DERTCO . -NI )@@G@@>SCALAR OK @E@7@5 IF DAICSC,OFF,SDXREF THEN,DERTCO . ->SCALANJ )@@G@@R OK @E@@@7 IF DAICSC,OFF,SDINCL THEN,DERTCO . ->SCALAR OK NK )@@G@@@C@@@4DERTAE LABEL . ERROR STATE @D@@@4 FLINL )@@G@@NK X10,SAE92X . IMPROPER INITIAL @D@@@4 SET SDINTL,OFNM )@@G@@F,SDCLS3 . TURN OFF INITIAL @F@@@4 MOVE SDINTM,0,I . CNN )@@G@@LEAR OUT B CODE PTR TO INITIAL@C@@@4 GOTO DERTCO . CNO )@@G@@HECK CLASS @D@@@4SAE92X LLOC . INITIAL ERROR STATENP )@@G@@@D@@@4 LOAD A7,SAEM92,I . IMPROPER INITIAL @E@5@4 NQ )@@G@@ SET 040,ON,DSAECT . TURN OFF 'COTRECTED:' @E@@@5 SETNR )@@G@@ 01000,ON,DSAECT . TURN OFF 'COTRECTED:' @^@@@4 GOTO SAENS )@@G@@SE . @#@@@4DERTCO LABEL . @E@@@4 LOAD A3,STDAT1 . NT )@@G@@ -> NO DATA TYPE@^@@@4 AND,U A3,0527 .@B@@@4 IF NU )@@G@@ A4,EQ,0,I THEN,LJMP . @^@@@4 LOAD A3,A4 . @G@@@4 NV )@@G@@ IF A3,EQ,ST1STG+ST1VAR,I THEN,DERTC8 . -> VARYING STRING @F@@@4NW )@@G@@ IF A3,EQ,ST1STG,I THEN,DERTC8X . ->SIMPLE CHAR STRING @F@@@4NX )@@G@@ IF A3,EQ,ST1STG+ST1NVR,I THEN,DERTC8X . ->NONVARYING @F@@@4NY )@@G@@ IF ST1VAR+ST1NVR,OFF,A3 THEN,DERTC1 . -> NO VARYING @ @@@4NZ )@@G@@ LOAD A7,SAEM97,I . @D@@@4 FLINK X10,DEBDCL . IOA )@@G@@MPROPER VARYING @#@@@4 LJMP . @#@@@4DERTC1 LABEL . @F@@@4OB )@@G@@ MOVE DSATPY,2,I . SET WORD SIZE FOR FIX DEC AND FLT@E@@@4OC )@@G@@ IF SDFXFL,OFF,SDCLS1 THEN,DERTC5 . -> FIXED @C@@@4 OD )@@G@@ BINDZ SDSCAL,DERTC2 . -> NO SCALE @D@@@4 LOAD A7,SAEM37OE )@@G@@,I . IMPROPER SCALE @ @@@4 FLINK X10,DEBDCL . @ @@@4OF )@@G@@ MOVE SDSCAL,0,I . @#@@@4DERTC2 LABEL . @E@@@4 IF OG )@@G@@ SDDCBN,OFF,SDCLS1 THEN,DERTC4 . -> DECIMAL @D@@@4 MOVE DSAOH )@@G@@TPH,074033,I . BIN FLT 60,24,2 @#@@@4DERTC3 LABEL @D@@@4 OI )@@G@@ LOAD A6,DSATPY . SET STORAGE SIZE @D@@@4 IF SDROJ )@@G@@LCX,OFF,SDCLS1 THEN,DERT32 . ->REAL @^@@@4 ADD A6,A6 @#@@@4OK )@@G@@DERT32 LABEL . @^@@@4 STORE A6,SDRTC @D@@@4 IF ST1OL )@@G@@PRC,ON,STDAT1 THEN,DERT34 . ->PREC @D@@@4 MOVE SDPREC,DSATPH-FOM )@@G@@H2+FQ4 . SET DEFAULT@B@@@4 LJMP. RETURN ON )@@G@@@D@@@4DERT34 LABEL . SET DEFAULT PREC @A@@@4 OO )@@G@@ LOAD A3,DSATPH-FH2+FQ3 . @D@@@4 IF A3,GE,SDPREC THEN,LJMOP )@@G@@P . -> OK VALUE @ @@@4 LOAD A7,SAEM43,I . @ @@@4 STOOQ )@@G@@RE A3,SDPREC . @C@@@4 FLINK X10,DEBDCL . IMPROPER PRECOR )@@G@@@#@@@4 LJMP . @#@@@4DERTC4 LABEL . @D@@@4 MOVE DSAOS )@@G@@TPH,022010,I . DEC FLT 18,8,2 @^@@@4 GOTO DERTC3 . @#@@@4OT )@@G@@DERTC5 LABEL . @D@@@4 IF SDDCBN,ON,SDCLS1 THEN,DERTC6 . ->OU )@@G@@BINARY@D@@@4 MOVE DSATPH,022012,I . DEC FLT 18,10,2 @B@@@4OV )@@G@@ GOTO DERTC3 . ->MERGE@#@@@4DERTC6 LABEL . @D@@@4OW )@@G@@ MOVE DSATPH,043043,I . FIX BIN 35,35,1 @ @@@4 MOVOX )@@G@@E DSATPY,1,I . @C@@@4 GOTO DERTC3 . -> MERGE OY )@@G@@@#@@@4DERTC8 LABEL . @C@@@4 SET SDFXVR,ON,SDCLS1 . SET VAROZ )@@G@@YING @#@@@4DERTC8X LABEL . @#@@@4 LJMP . @[@@@4. @[@@@4PA )@@G@@. @D@5@4 USING STSBLK,X9 . ID STACK ENTRY @D@@@5PB )@@G@@ USING STSBLK,X7 . ID STACK ENTRY @B@@@4 USIPC )@@G@@NG SDSECT,X3 . PROC SD@E@@@4SACDFT* LLOC . CPD )@@G@@HECK DCL VS DEFAULT ATTR@E@6@5 IF ST1DIM,OFF,STDAT1 THEN,LJMPPE )@@G@@ . -> NO DIM ATTR @D@6@5 SAERR SAEM86,SAE . DIMENSION ILLEPF )@@G@@GAL @E@6@5 SET SDARRY,OFF,SDCLS2 . TURN DIM ATTR OFF PROC PG )@@G@@@F@@@4 LJMP . TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP PH )@@G@@@ @@@4. LOAD A7,SD2SP . @E@@@4. IF SDFXFL,ON,STDPI )@@G@@AT2 THEN,DECDF3 . -> FLOAT @F@@@4. IF A7,NE,17,I THEN,DECPJ )@@G@@DF2 . -> IMPROPER SCALE @ @@@4. LOAD A7,SDCLS0 . @D@@@4PK )@@G@@. IF A7,NE,SD0ENT+SD0AUT,I THEN,DECDF2 . @ @@@4. LPL )@@G@@OAD A7,SDCLS1 . @F@@@4. IF A7,EQ,SDBLUS+SDDCBN,I THEN,LJMPPM )@@G@@ . -> OK, RETURN @D@@@4. DECDF2 LABEL . ERROR MESSAPN )@@G@@GE @E@@@4. LOADA A7,SAEM77,I . IMPROPER CONVERSION PO )@@G@@@ @@@4. FLINK X10,SAESW @C@@@4. LJMP . PP )@@G@@ RETURN @C@@@4. DECDF3 LABEL . FLOAT PROC PQ )@@G@@@E@@@4. IF A7,NE,6,I THEN,DECDF2 . -> IMPROPER SCALE@ @@@4PR )@@G@@. LOAD A7,SDCLS0 . @D@@@4. IF A7,NE,SD0ENT+SD0AUTPS )@@G@@,I THEN,DECDF2 . @ @@@4. LOAD A7,SDCLS1 . @F@@@4. IPT )@@G@@F A7,NE,SDFXFL+SDBLUS,I THEN,DECDF2 ELSE,LJMP . @^@@@4/. ATTPU )@@G@@RIBUTES @B@@@4DEDCAN LLOC . 'ENTRY' @F@@@4 PV )@@G@@ IF DECLAP,OFF,DSDEST THEN,DEDLTM . -> ATTR ILLEGAL @C@@@4 PW )@@G@@ LOAD A14,ACENTR,I . SET'ENTRY' @ @@@4 STORE A14,DLXACPX )@@G@@ . @^@@@4 GOTO DECT12 @[@@@5. @[@@@5. @[@@@5. PY )@@G@@@#@@@5. DIMENSION@[@@@5. @#@@@5DEDATD LABEL . @D@@@5 PZ )@@G@@ LOAD A14,ACDMAT,I . CHANGE A CODE @ @@@5 STORE A14QA )@@G@@,DLXAC . @[@@@5. @[@@@4. @ @@@4. OTHER ATTRIBUTES QB )@@G@@@[@@@4. @#@@@4DEDCAT LLOC . @E@@@4 IF DECLAP,OFF,DSDEQC )@@G@@ST THEN,DECI12 . -> ASSUME ID @#@@@4DECT12 LABEL . @E@@@4 LINQD )@@G@@K SADAT8 . SETUP LINK TO ATTR RTE. @C@@@4 MOVE DSAQE )@@G@@U1,0,I . CLR U1,U2 CTL@F@@@4 IF DECLRP+DECLRT,OFF,DSDQF )@@G@@EST THEN,DECT38 . ->NO FACTORS@E@@@4 LOAD X4,DSDFFB . AQG )@@G@@PPLY ATTR TO ALL FACTORS@#@@@4DECT24 LABEL . @C@@@4 STORE X4,QH )@@G@@DSDIWL . CURRENT LEVEL@C@@@4 LSDP X3,STDID,X4 . PQI )@@G@@TR TO SD @ @@@4 STORE X3,DSSDPT . @C@@@4 LOAD X11QJ )@@G@@,DSATP2 . ATTR ADDR . @^@@@4 LINK 0,X11 . @C@@@4 QK )@@G@@ GOTO $+2 . ->SUCCESS @B@@@4 GOTO DECL36 . QL )@@G@@ ->FAIL @D@@@4 LOAD A7,DSDIWL . GO TO NEXT LEQM )@@G@@VEL @C@@@4 IF A7,EQ,DSDITL THEN,DECT32 . -> TOP@ @@@4 QN )@@G@@ ADD A7,SACDSW,I . @^@@@4 LOAD X4,A7 . @E@@@4 GOTQO )@@G@@O DECT24 . -> PROCESS NEW FACTOR @#@@@4DECT32 LABEL . QP )@@G@@@F@@@4 IF DECLRP+DECLRT,OFF,DSDEST THEN,DECT34 . ->NO FACTOR QQ )@@G@@@B@@@4 MOVE DSDEST,DECLRT+DECLRP,I . @B@@@4 GOTO DECQR )@@G@@L36 . -> NEXT@#@@@4DECT34 LABEL . @A@@@4 MOVE DSDQS )@@G@@EST,DECLAT,I . @B@@@4 GOTO DECL36 . -> NEXT@#@@@4QT )@@G@@DECT38 LABEL . @B@@@4 LOAD X4,DSDITL . GET ID @C@@@4QU )@@G@@ GOTO DECT24 . PROCESS ATTR @[@@@4. @ @@@4. QV )@@G@@ SADAT8 - ATTR ADDRESS@[@@@4. @#@@@4SADAT8* LOCAL . @D@@@4 QW )@@G@@ LOAD A3,DLXIF . ATTR BITS 201XXX @C@@@4 LOAD A7,QX )@@G@@DECTBL+FH2,A3 . ATTR ROUTINE @ @@@4 STORE A7,DSATP2 . @ @@@4QY )@@G@@ MOVE DSDATR,DLXID @^@@@4 LINK SAPTAC . @B@@@4 QZ )@@G@@ LINK SAGBC . B-LODE @B@@@4 STORE A3,DSATPG . RA )@@G@@ SAVE IT@C@@@4 MOVE DSATP3,0,I . LNGTH PREC @ @@@4RB )@@G@@ MOVE DSATP4,0,I . @C@@@4 MOVE DSATP5,0,I . -RC )@@G@@> RETURN @]@@@4 JMP@^@@@4. ATTR ERROR @[@@@4. RD )@@G@@@#@@@4BATER* PROC *1 @D@@@4 IF BATER(1,2),ON,BATER(1,1) THRE )@@G@@EN,DEATER @#@@@4 END . @[@@@4. @^@@@4. SD OF ID RF )@@G@@IN X3 @^@@@4. STK IN X4 @#@8@4DEATER LOCAL . @#@@@8DEATERRG )@@G@@ LLOC . @F@@@4 IF DECLRP+DECLRT,ON,DSDEST THEN,DEATR4 . -RH )@@G@@>FACTOR @#@@@4DEATR2 LABEL . @C@@@4 LINK EABK1 . RI )@@G@@ DELETE TOKEN @D@@@4 SUB A0,1,I . CHANGE RETURNRJ )@@G@@ ADDR @^@@@4 LOAD A3,1,A0 .@^@@@4 ADD A3,1,I . @^@@@4RK )@@G@@ STACK A3 . @^@@@4 GOTO DEATR5 . @#@@@4DEATR4 LABRL )@@G@@EL . @E@5@4 SET 040,ON,DSAECT . TURN OFF 'CORRECTED:' RM )@@G@@@E@@@5 SET 01000,ON,DSAECT . TURN OFF 'CORRECTED:' @#@@@4RN )@@G@@DEATR5 LABEL . @ @@@4 SAERR SAEM99,SAE @#@@@4 JMPRO )@@G@@ . @^@@@4/. ATTR ROUTINES @[@@@4. @^@@@4. NOT IMPLERP )@@G@@MENTED@[@@@4. @^@@@4 USING STSBLK,X4@^@@@4 USING SDSRQ )@@G@@ECT,X3@C@@@4DANPL LLOC . NOT IN PLUM @ @@@4 RR )@@G@@ LOAD A7,SAEM101,I @^@@@4 GOTO DANY4 . @F@@@4DANY LLORS )@@G@@C . 'UNIMPLEMENTED' (TEMPORARY) @ @@@4 LOART )@@G@@D A7,SAEM100,I @#@@@4DANY4 LABEL . @ @@@4 FLINK X10,SAESBRU )@@G@@8 @#@@@4 LJMP 1 .@[@@@4. @[@@@5. @[@@@5. @#@@@5RV )@@G@@. AREA @[@@@5. @#@@@5DAAREA LOCAL . @E@@@5 IF RW )@@G@@ STDAT+FH1,NZERO THEN,DEATER . ->AREA ILLEGAL @ @@@5 BATER STDRX )@@G@@AT4,SN4ARE .@A@@@5 SET ST4ARE,ON,STDAT4 . @D@@@5 LINRY )@@G@@K DAARSZ . SET AREA(SIZE) @D@@@5 LINK DASETA . RZ )@@G@@ SET AREA TYPE SD @#@@@5 JMP . @[@@@5. @[@@@5SA )@@G@@. @F@@@5DASETA LLOC . SET ASB )@@G@@REA SD@ @@@5 LOAD A3,SDCLS0 . @D@@@5 AND,U A3,0760 .SC )@@G@@ SAVE STORAGE CLASS@ @@@5 ADD A4,SD0ARE,I . @ @@@5SD )@@G@@ STORE A4,SDCLS0 . @A@@@5 MOVE SDRTC,SDRTAR,I . SE )@@G@@@#@@@5 LJMP . @[@@@5. @[@@@5. @[@@@5. @[@@@5. SF )@@G@@@[@@@5. @#@@@4. AUTOMATIC@[@@@4. @#@@@4DAAUTO LOCAL . SG )@@G@@@D@@@4 BATER STDAT3,SN3AUT . ->AUTO ILLEGAL @C@@@4 SH )@@G@@ LINK DEPARM . PARAMETER @A@@@4 SET ST3AUT,ONSI )@@G@@,STDAT3 . @A@@@4 SET SD0AUT,ON,SDCLS0 @#@@@4 JMPSJ )@@G@@ . @#@@@4DEPARM LLOC . @C@@@4 IF SDPARM,ON,SDCLS2 THENSK )@@G@@,DEATER @#@@@4 LJMP @[@@@4. @#@@@4. BINARY SL )@@G@@@[@@@4. @#@@@4DABIN LOCAL . @ @@@4 BATER STDAT1,SN1BIN SM )@@G@@@A@@@4 SET ST1BIN,ON,STDAT1 @A@@@4 SET SDDCBN,ONSN )@@G@@,SDCLS1 @#@@@4DABIN4 LABEL . @C@5@4 LINK DAFLD . SO )@@G@@ FLOAT DEFAULT@^@@@4 GOTO DAPREC . @[@@@4. @[@@@4. SP )@@G@@@#@@@4. BUILTIN @[@@@4. @#@8@4DABLTN LABEL . @#@@@8DABLTNSQ )@@G@@ LOCAL . @G@@@4 IF STDAT,NZERO THEN,DEATER . -> SOME ATTR,SR )@@G@@ ILLEGAL BUILTIN @C@@@4 LOAD X5,X3 . SD POINTER SS )@@G@@@D@@@4 LOAD A8,ADBK0S . GET SD FOR BLOCK 0 @#@@@4DABLT2ST )@@G@@ LABEL . @E@@@4 LSDP X5,SDBCLK,X5 . LOOK FOR BLOCK 0 BISU )@@G@@F SD @D@@@4 IF X5,ZERO THEN,DEATER . -> NOT REALLY BIF@ @@@4SV )@@G@@ USING SDSECT,X5 . @E@@@4 IF A8,NE,SDBKLK THEN,DABSW )@@G@@LT2 . ->NOT BLOCK 0 SD @ @@@4 USING SDSECT,X3 . @E@@@4 SX )@@G@@ STORE X5,SDEXPT . SET PTR FROM SD TO BIF SD@C@@@4 SETSY )@@G@@ SDEXDM,ON,SDCLS2 . SET DUMMY EXT@A@@@4 MOVE STDAT2,ST2BRL,ISZ )@@G@@ . @A@@@4 MOVE STDAT3,ST3BLT,I . @A@@@4 MOVE SDCTA )@@G@@LS0,SD0ENT,I . @^@8@4 LJMP . ->RETURN@A@@@8 JMP . TB )@@G@@ ->RETURN @[@@@4. @[@@@4. @#@@@4. BASED @[@@@4TC )@@G@@. @#@@@4DABSD LOCAL . @ @@@4 BATER STDAT3,SN3BSD .@A@@@4TD )@@G@@ SET ST3BSD,ON,STDAT3 . @E@@@4 SET 0760,OFF,SDCLS0TE )@@G@@ . SET BASED STORAGE CLASS @A@@@4 SET SD0BSD,ON,SDCLS0 . TF )@@G@@@E@@@5 LINK DAPRET . SEE IF FIRST OR 2ND PASS @C@@@5TG )@@G@@ GOTO DABSD2 . ->PASS 2 @D@@@4 BNAC ACLTH )@@G@@PAR,JMP . ->NO IMPLIED PTR @E@@@4 STORE X4,DSATP3 . TI )@@G@@ SAVE STACK ELT ADDR. @C@@@4 LINK DABPTR . GTJ )@@G@@ET (PTR) @^@@@4 JMP . ->NO GOOD@ @@@4 LOAD X4,DSATP3TK )@@G@@ . @D@@@4 SET ST4BPT,ON,STDAT4 . SET (PTR) PRESENT @#@@@4TL )@@G@@ JMP . @[@@@4. @#@@@5DABSD2 LABEL . @E@@@5 IF TM )@@G@@ ST4BPT,OFF,STDAT4 THEN,JMP . ->NO BASED(P) @ @@@5 MOVE SDBTN )@@G@@PTR,DSATPK .@A@@@5 SET SD3BSD,ON,SDCLS3 . @#@@@5 JMPTO )@@G@@ . @[@@@4. @[@@@4. @^@@@4. CONTROLLED @[@@@4. TP )@@G@@@#@@@4DACTL LOCAL . @ @@@4 BATER STDAT3,SN3CTL .@A@@@4 TQ )@@G@@ SET 0760,OFF,SDCLS0 . @A@@@4 SET ST3CTL,ON,STDAT3 . TR )@@G@@@A@@@4 SET SD0CNT,ON,SDCLS0 . @E@@@5 LOAD A7,3,I . TS )@@G@@ CREATE STATIC PTR BASED ON@E@@@5 LINK PLALC . TT )@@G@@ BCD SPCE (IN X3) FOR PTR @C@@@5 LINK SDXB0 . CRTU )@@G@@EATE SD @C@@@5 LOAD A3,DSSDPT . CTL VARIABLE @ @@@5TV )@@G@@ USING SDSECT,A3 . @ @@@5 STORE X4,SDBPTR . @ @@@5TW )@@G@@ USING SDSECT,X3 . @^@@@5 LOAD X3,X4 . @C@@@5 TX )@@G@@ MOVE SDCLS0,SD0STA,I . SET STATIC PTR@B@@@5 LINK DASPTR . TY )@@G@@ SET PTR @D@@@5 MOVE DSATPH,DSBKSD . SD OF LOCK OFTZ )@@G@@ PTR @C@@@5 LINK DEDLSH . STATIC CHAIN @#@@@4 UA )@@G@@ JMP . @[@@@4. @[@@@4. @[@@@4. @[@@@4. @#@5@4DAFLD UB )@@G@@ LLOC . @C@5@4 IF ST1FFL,ON,STDAT1 THEN,LJMP . @A@5@4UC )@@G@@ SET SDFXFL,ON,SDCLS1 @#@5@4 LJMP . @[@@@4. UD )@@G@@@A@@@4. BIT AND CHAR WITH LENGTH @[@@@4. @ @5@4. BUIUE )@@G@@LTIN- NOT YET @[@@@4. @#@@@4. COMPLEX @[@@@4. @#@@@4UF )@@G@@DACPLX LOCAL . @A@@@4 SET SDRLCX,ON,SDCLS1 . @#@@@4DACPX4UG )@@G@@ LABEL . @C@@@4 BATER STDAT1,SN1RCX . ->NO REAL @A@@@4UH )@@G@@ SET ST1RCX,ON,STDAT1 @B@5@4 LINK DAFLD . UI )@@G@@ FLOAT @B@@@4 GOTO DAFL06 . ->MERGE@[@@@4. UJ )@@G@@@#@@@4. DECIMAL @[@@@4. @#@@@4DADEC LOCAL . @ @@@4 UK )@@G@@ BATER STDAT1,SN1DEC .@A@@@4 SET ST1DEC,ON,STDAT1 @A@@@4UL )@@G@@ SET SDDCBN,OFF,SDCLS1 @^@@@4 GOTO DABIN4 @[@@@5UM )@@G@@. @[@@@5. @#@@@5. DIMENSION@[@@@5. @#@@@5DADIMS LOCUN )@@G@@AL . @D@@@5 BATER STDAT1,SN1DIM . -> (*) ALREADY THERE @E@@@5UO )@@G@@ BATER STDAT2,SN2DIM . => LABEL, ENTRY, FILE, ETC. @B@@@5 UP )@@G@@ LINK DAPRET . FACTORED? @E@@@5 GOTO DADIP2 . UQ )@@G@@ -> YUP, USE GOTTEN RESULTS @C@@@5 LINK DACM02 . GET (UR )@@G@@*,*,*,...) @B@@@5 GOTO DADIFL . -> FAIL @#@@@5DADIP2US )@@G@@ LABEL . @B@@@5 LSDP X5,DSSDPT . GET SD @D@@@5 UT )@@G@@ LINK DALP64 . CHANGE SSD TO ARRAY @B@@@5 JMP . UU )@@G@@ -> ALL DONE@[@@@5. @#@@@5DADIFL LABEL . @A@@@5 UV )@@G@@ SAERR SAEM86,SAE . OOPS @C@@@5 JMP 1 . ->ERRUW )@@G@@OR RETURN @[@@@5. @[@@@5. @[@@@4. @#@@@4. ENTRY UX )@@G@@@[@@@4. @G@@@4DAENTR LOCAL . ENTRY(ATTR PARM1,ATUY )@@G@@TR PARM 2,...) @C@@@5 UNSTK X11. NOT IN YET UZ )@@G@@@^@@@5 GOTO DANY . @G@@@5 ON 0 . SVA )@@G@@AVE CODE FOR POSSIBLE FUTURE USE @D@@@4 LOAD A3,STDAT . VB )@@G@@ SEE IF ENTRY IS OK_@ @@@4 AND,U A3,SN3ENT . @D@@@4 VC )@@G@@ LINK DENTS . SEE IF ENTRY OK @C@@@4 SET ST3VD )@@G@@ENT,ON,STDAT3 . SET ENTRY @D@@@4 LINK DAEN96 . PVE )@@G@@UT ON ENTRY CHAIN @E@@@4 LINK DAEN92 . CHECK FOR FACVF )@@G@@TORED ATTR @^@@@4 GOTO DAEN72 . @C@@@4 BAC ACLPAR,DAVG )@@G@@EN12 . ATTR GIVEN @#@@@4DAEN09 LABEL . @E@@@4 MOVE DSDVH )@@G@@IWL,DSATPN . RESET STACK PTR @#@@@4DAEN10 LABEL . @D@@@4VI )@@G@@ MOVE SDNARG,DSAU2 . MOVE ARGUMENT COUNT@C@@@4 GOTVJ )@@G@@O DAEN11 . ->RETURN @D@@@4DAEN12 LABEL . VK )@@G@@ FOUND ATTR LIST @^@@@4 LINK SAPTAC . @#@@@4DAEN18 LABVL )@@G@@EL . @C@@@4 LOAD A9,DSAU2 . UP ARG COUNT @^@@@4 VM )@@G@@ ADD A9,1,I . @ @@@4 STORE A9,DSAU2 . @E@@@4 LOAVN )@@G@@D A7,13,I . GET SD SPACE FOR ARGUMENT@^@@@4 LINK PLAVO )@@G@@LC . @ @@@4 USING SDSECT,X3 . @C@@@4 MOVE SDCLS4,SDVP )@@G@@BCSD,I . SET SD BIT @C@@@4 MOVE SDCLS3,SD3ENT,I . SET ENTVQ )@@G@@RY @C@@@4 MOVE SDCLS2,SDPARM,I . SET PARAMETER@E@@@4 VR )@@G@@ MOVE SDCLS1,SDFXFL,I . SET FLOATING ARGUMENT @H@@@4 MOVVS )@@G@@E SDCLS0,SD0ART+SD0AUT,I . SET AUTOMATIC AND ARITH@C@@@4VT )@@G@@ MOVE SDPREC,6,I . PRECISION_ @D@@@4 MOVE SDDVU )@@G@@CNM,DSDSNM . SET DCL STMT NUMBER@C@@@4 STORE X3,DSSDPT . VV )@@G@@ SAVE SD PTR @F@@@4 LOADA X4,12,X3 . POINT TO PARAVW )@@G@@METER LIST ENTRY @ @@@4 STORE X3,W1H2,X4 . @E@@@4 IF VX )@@G@@ A9,NE,1,I THEN,DAEN20 . ->NOT FIRST PARAMETER@D@@@4 LOAD X11VY )@@G@@,DSATPK . POINT TO ENTRY SD @ @@@4 STORE X4,SDPLST,X11 .VZ )@@G@@@B@@@4 GOTO DAEN22 . ->MERGE@C@@@4DAEN20 LABEL . WA )@@G@@ NOT FIRST SD @D@@@4 LOAD X11,DSATPL . LWB )@@G@@AST PARM ENTRY @ @@@4 STORE X4,DSATPL . @D@@@4 STOWC )@@G@@RE X4,W1H1,X11 . SET FORWARD LINK @#@@@4DAEN22 LABEL . @E@@@4WD )@@G@@ LOADA X4,DRVSV1 . SET DUMMY STACK ENTRY @ @@@4 WE )@@G@@ STORE X4,DSDIWL . @ @@@4 USING STSBLK,X4 . @D@@@4 WF )@@G@@ MOVE STDAT,SDENTM . SET ENTRY TYPE @D@@@4 BNAC ACLWG )@@G@@PAR,DAEN24 . ->NOT DIMENSIONS @D@@@4 LINK DACM02 . WH )@@G@@ DIMENSION BCODE @B@@@4 LOAD X5,DSSDPT . SD PTR WI )@@G@@@^@@@4 LINK DALP64 . @#@@@4DAEN24 LABEL . @B@@@4 BCLWJ )@@G@@ LXATTR,DAEN48 . ->ATTR @#@@@4DAEN26 LABEL . @^@@@4 LOAWK )@@G@@D X3,DSSDPT@E@@@4 IF SDDVA,ZERO THEN,DAEN27 . ->NO DOPE VECTWL )@@G@@OR @E@@@4 LOAD X5,DSBKSD . SET CHAINED DOPE VECTOR WM )@@G@@@D@@@4 LINK DEDLDV . PUT NO DV CHAIN @#@@@4DAEN27WN )@@G@@ LABEL . @D@@@4 LOADA X7,DRVSV1 . CHECK ENTRY ATTR WO )@@G@@@^@@@4 LINK SADRTC . @D@@@4 BAC ACCOMA,DAEN12 . WP )@@G@@->ANOTHER PARM @#@@@4DAEN30 LABEL . @B@@@4 LINK SASPRP . WQ )@@G@@ PUT ) @C@@@4 LOAD X3,DSATPK . SD OF ENTRY WR )@@G@@@D@@@4 GOTO DAEN09 . ->END OF ENTRY ATTR@#@@@4DAEN48WS )@@G@@ LABEL . @D@@@4 LINK SADAT8 . GET ATTR ADDRESS WT )@@G@@@B@@@4 LOAD X3,DSSDPT . SD PTR @C@@@4 LOAD X4,WU )@@G@@DSDIWL . STACK ENTRY @C@@@4 LOAD X11,DSATP2 . RWV )@@G@@OUTINE ADDR @B@@@4 LINK 0,X11 . DO IT @B@@@4 WW )@@G@@ GOTO DAEN24 . OK @C@@@4 GOTO DAEN26 . WX )@@G@@ ->OOPS, ERROR@#@@@4DAEN72 LABEL . @C@@@4 LOAD X11,DSATPWY )@@G@@K . COPY PARM CHAIN@ @@@4 LOAD A3,SDPLST,X11 .@ @@@4 WZ )@@G@@ STORE A3,SDPLST,X3 . @D@@@4 GOTO DAEN10 . ->NEXT XA )@@G@@SD IN LIST @#@@@5 OFF . @[@@@4. @[@@@4. @#@@@4. XB )@@G@@ FILE @[@@@4. @#@@@4DAFILE LOCAL . @B@@@4 BATER STDXC )@@G@@AT2,SN2FLE . ->NO FILE @C@@@4 SET ST2FLE,ON,STDAT2 . SET FILXD )@@G@@E @#@@@4DAFLE2 LABEL . @C@@@4 BATER STDAT1,SN1DAT . ->SOMXE )@@G@@E DATA ATTR @B@@@4 BATER STDAT3,SN3FLE . ->FILE OK @D@@@4 XF )@@G@@ IF SDMEMS,ON,SDCLS2 THEN,DEATER . ->ERROR @^@@@4 LOAD X4,XG )@@G@@X3 . @ @@@4 FLINK X10,SAFDCL . @#@@@4 JMP . @#@@@4XH )@@G@@. FIXED @[@@@4. @#@@@4DAFIX LOCAL @ @@@4 BATXI )@@G@@ER STDAT1,SN1FFL .@A@@@4 SET SDFXFL,OFF,SDCLS1 . @^@@@4 XJ )@@G@@ GOTO DAFL04 . @[@@@4. @ @@@4. FLOAT - SEE PREC @[@@@4XK )@@G@@. @[@@@4. @#@@@4. LABEL @[@@@4. @#@@@4DALBL LOCXL )@@G@@AL @ @@@4 BATER STDAT1,SN1LBL .@^@@@4 LOAD A3,STDAT2XM )@@G@@@^@@@4 LINK DENTS5 @A@@@4 SET 017,OFF,SDCLS0 . XN )@@G@@@A@@@4 SET SD0LAB,ON,SDCLS0 . @ @5@4 MOVE SDCLS1,01XO )@@G@@00,I @G@@@5 MOVE SDCLS1,SDRLCX,I . FAKE OUT CODE GEN, SET XP )@@G@@SDVRCN OFF @F@@@4SDR8BT EQU 2 . WORDSIZE OF LABEL VXQ )@@G@@ARIABLE @A@@@4 MOVE SDRTC,SDR8BT,I . @ @5@4 MOVXR )@@G@@E SDINTL,0,I @C@5@4 BNAC ACLPAR,JMP . NOT SUBSCR XS )@@G@@@C@5@4 UNSTK X11 . -> NOT YET @^@5@4 GOTXT )@@G@@O DANY . @B@@@5 JMP . RETURN @[@@@4. XU )@@G@@@#@@@4DENTS LLOC . @D@@@4 IF A4,NE,0,I THEN,DEATER . ->NXV )@@G@@OT PERMITTED@A@@@4 SET ST2BRC,OFF,STDAT2 . @B@@@4 LOAXW )@@G@@D A3,STDAT+(IN 0,H1,0,0) . @#@@@4DENTS5 LLOC . @B@@@4 IF XX )@@G@@ A3,NE,0,I THEN,DEATER . @A@@@4 MOVE STDAT2,ST2BRL,I . XY )@@G@@@#@@@4 LJMP . @[@@@4. @#@@@4. INITIAL @[@@@4. XZ )@@G@@@#@@@4DAINTL LOCAL . @D@@@4 BATER STDAT1,SN1INT . ->NO INYA )@@G@@ITIAL YET @D@@@4 BATER STDAT2,SN2FLA . ->NO FILE ATTR YET YB )@@G@@@D@@@4 BATER STDAT3,SN3BER . ->BIF, ENTRY, RTNS @E@@@4 YC )@@G@@ IF SDPARM,ON,SDCLS2 THEN,DEATER . ->PARAMETER @E@@@4 IF YD )@@G@@ SDSTRU,ON,SDCLS4 THEN,DEATER . ->STRYCTURE @D@@@4 LINK DAPYE )@@G@@RET . PASS 1 (FACTERED) @B@@@4 GOTO DAIN36 . YF )@@G@@ =>NO @E@@@4 MOVE DSATPL,0,I . CLEAR CONSISTENCY CYG )@@G@@HECK @D@@@4. BNAC ACCALL,DAINLT . ->NOT INITIAL CALL @^@@@4YH )@@G@@ GOTO DAINLT . @[@@@4. @^@@@4. CALL INITIAL @[@@@4YI )@@G@@. @C@@@4. LINK SAPTAC . OUT 'CALL' @C@@@4. YJ )@@G@@ EXPR ICDYNY . PROC NAME @A@@@4. GOTO DALNGR . YK )@@G@@-> NOPE @D@@@4. SET DAICSA,ON,DSATPL . SET CALL. NO STATICYL )@@G@@@#@@@4DAIN36 LABEL . @D@@@4 LOAD X4,DSDIWL . PTR TO YM )@@G@@CURRENT SD @C@@@4 LOAD X3,DSSDPT . SET SD PTR @ @@@4YN )@@G@@ USING STSBLK,X4 . @ @@@4 USING SDSECT,X3 . @E@7@5YO )@@G@@ MOVE SDXREF,DSATPL . SAVE ATTR. OF INITIAL LIST @E@@@7 YP )@@G@@ MOVE SDINCL,DSATPL . SAVE ATTR. OF INITIAL LIST @D@@@4 SETYQ )@@G@@ SDINTL,ON,SDCLS3 . SET INITIAL ATTR @D@@@4 MOVE SDINTM,DSYR )@@G@@ATPG . MOVE B CODE PTR @C@5@4 SET ST1INT,ON,STDAT1 . SYS )@@G@@ETINITIAL @C@@@5 SET ST1INT,ON,STDAT1 . SET INITIAL @#@@@5YT )@@G@@DAIN38 LABEL . @C@@@4 JMP . ->RETURN YU )@@G@@@[@@@4. @C@@@4. FIRST PASS IN INITIAL STATE MACHNE @[@@@4YV )@@G@@. @#@@@4. DAIFPT LOCAL .@E@@@4. LINK SAGBC . YW )@@G@@ GET CURRENT LOCATION @C@@@4. STORE A3,DSATPF . SAVE YX )@@G@@IT @F@@@4. LOAD A8,0,I . CLEAR B CODE PTR IN B CYY )@@G@@ODE @#@@@4. PUTC . @C@@@4. JMP . YZ )@@G@@ ->RETURN @[@@@4. @ @@@4. INITIAL WITH A LIST @#@@@4DAINLTZA )@@G@@ LABEL . @C@@@4 BAC,ACLPAR,DAIN04 . ->NEXT IS '('@C@@@4ZB )@@G@@ SAERR SAEM05,SAE . MISSING '(' @C@@@4 GOTO DAIZC )@@G@@N06 . PUT IN '(' @#@@@4DAIN04 LABEL . @C@@@4 LINZD )@@G@@K LXGET . IGNRE '(' @#@@@4DAIN06 LABEL . @B@@@4 ZE )@@G@@ SUPSYM ACLPAR . PUT '('@C@@@4 MOVE DSAITL,0,I . ZF )@@G@@ NO PARENS YET@C@@@4 GOTO DAINCMS . INITIAL STATE ZG )@@G@@@[@@@4. @E@@@4. NEXT SYMBOL. 3 STATE, 7 SYMBOL FINITE STATE MZH )@@G@@ACHINE@H@5@4DAINAZ LABEL . X9 = ROTUINE FOR PROPER SZI )@@G@@YMBOL (ARC OF FSA)@H@@@5DAINAZ LABEL . X9 = ROUTINE ZJ )@@G@@FOR PROPER SYMBOL (ARC OF FSA)@C@5@4 BNAC ACLPAR,DAINZ2 . NZK )@@G@@EXT NOT '(' @C@@@5 LOAD A3,DLXAC . GET TOKEN @D@@@5ZL )@@G@@ IF A3,NE,ACLPAR,I THEN,DAINZ2 . -> NOT ( @E@@@4 LOAZM )@@G@@D A14,ACLLST,I . USE LIST ( INSTEAD OF ( @^@@@4 ADD X9,ZN )@@G@@1,I . @^@@@4 GOTO DAINBR . @#@@@4DAINZ2 LABEL . @C@@@4 ZO )@@G@@ BAC ACRPAR,DAINBR . FOUND '(' @B@@@4 BNAC ACCOMA,DAZP )@@G@@INZ4 . NOT ','@^@@@4 ADD X9,2,I . @^@@@4 GOTO DAIZQ )@@G@@NBR . @#@@@4DAINZ4 LABEL . @B@@@4 BNCL LXMU,DAINZ6 . NZR )@@G@@OT '*'@C@@@4 ADD X9,3,I . SET STATE @^@@@4 ZS )@@G@@ GOTO DAINBR . @#@@@4DAINZ6 LABEL . @C@@@4 BNCL LXPS,DAINZT )@@G@@Z8 . NOT SIGN @^@@@4 ADD X9,5,I . @^@@@4 GOTZU )@@G@@O DAINBR . @#@@@4DAINZ8 LABEL . @G@@@4 IF 0760,ON THEN,DAZV )@@G@@INZ9 . ->NOT CONST OR ID@^@@@4 ADD X9,4,I . ZW )@@G@@@^@@@4 GOTO DAINBR . @#@@@4DAINZ9 LABEL . @C@@@4 ADDZX )@@G@@ X9,6,I . SET OTHER @#@@@4DAINBR LABEL . @ @@@4 ZY )@@G@@ LOAD X9,W1H1,X9 . @^@@@4 GOTO 0,X9 . @[@@@4. @[@@@4ZZ )@@G@@. @[@@@4. @[@@@4. @#@@@4DAINPC LABEL . @F@@@4 LINAA )@@G@@K SAPTAC . PUT , IN BCODE@#@@@4DAIPC2 LABAB )@@G@@EL . @C@@@4 SET DAICSC,ON,DSATPL . SET SCALAR @C@@@4DAINCMAC )@@G@@S LABEL . INITIAL STATE@C@@@4 LOADA X9,DAIBEGAD )@@G@@ . SET STATE @E@@@4 GOTO DAINAZ . ->NEXT AE )@@G@@TRANSFORMATION @[@@@4. @#@@@4DAINSC LABEL . @C@@@4 LINAF )@@G@@K SASPCM . SUPPLY COMMA @D@@@4 GOTO DAIPC2 AG )@@G@@ . ->NEXT STATE @#@@@4DAINPA LABEL . @^@@@4 LINK LXGAH )@@G@@ET . @#@@@4DAIPAS LABEL . @C@@@4 SUPSYM AAI )@@G@@CSTAR . @#@@@4DAITPT LABEL . @C@@@4 LOADA X9,DAITRM . AJ )@@G@@ SET TERM STATE@E@@@4 GOTO DAINAZ . ->NEXT TRANSFAK )@@G@@ORMATION @[@@@4. @[@@@4. @#@@@4DAINPN LABEL . @#@@@4DAINPQAL )@@G@@ LABEL . @C@@@4 BCL LXIDCS,DAIPST . ->STRING @C@@@4AM )@@G@@ BCL LXIDCN,DAINPR . ->ARTHMETC @C@@@4 BCL LXIAN )@@G@@DDN,DAINPR . ->DEC CONST @E@@@4 IF DAICNL,OFF,DSATPL THEAO )@@G@@N,DAIPL4 . ->LABEL OK @#@@@4DAIPL2 LABEL . @D@@@4 FLINK X10AP )@@G@@,SAEB92 . IMPROPER INITIAL @C@@@4 GOTO DAINPA . AQ )@@G@@ SUPPLY * @#@@@4DAIPL4 LABEL . @C@@@4 SET DAICLB,ONAR )@@G@@,DSATPL . SET LABEL @B@5@4 EXPR ICDYHL . D=ANY,NHS,LAB AS )@@G@@@B@@@5. EXPR ICDYHL . D=ANY,NHS,LAB @E@@@5 EXPR ICAT )@@G@@DSYY . TEMP TEMP TEMP TEMP TEMP TEMP TEMP @B@@@4 GOTO DAIPL2 . AU )@@G@@ ->FAIL @H@@@4 GOTO DAITPT . AV )@@G@@ ->SUCCES, NEXT STATE @#@@@4DAIPST LABEL .. @F@@@4 IF AW )@@G@@ DAICNS,ON,DSATPL THEN,DAIPL2 . -> NO STRING ALLOWED@C@@@4 SETAX )@@G@@ DAICST,ON,DSATPL . SET STRING @C@@@4 SUPSYM ACSTEX . AY )@@G@@ PUT !- SD -! @^@@@4 LINK SAPTID . @^@@@4 SUPSYM ACAZ )@@G@@ENEX @C@@@4 GOTO DAITPT . ->NEXT STATE @[@@@4. BA )@@G@@@[@@@4. @[@@@4. @#@@@4DAINPR LABEL . @E@@@4 IF DAIBB )@@G@@CNA,ON,DSATPL THEN,DAIPL2 . ->NO ARITH @B@@@4 SUPSYM ACSTEX .BC )@@G@@ SET !- @#@@@4DAIPA2 LABEL . @F@@@4 SET DAICAR,ONBD )@@G@@,DSATPL . SET ARITHMETIC @D@@@4 LINK SAPTID . BE )@@G@@ PUT CONST IN B CODE@D@@@4 BCL LXPS,DAIPA7 . IBF )@@G@@S IT COMPLEX CONST@#@@@4DAIPA4 LABEL . @B@@@4 SUPSYM ACENEX .BG )@@G@@ SET -! @C@@@4 GOTO DAITPT . ->NEXT STATE BH )@@G@@@E@@@4DAIPA7 LABEL . POSSIBLY COMPLEX CONST @C@@@4BI )@@G@@ LINK SAPTAC . PUT SIGN @F@@@4 IF LXIBJ )@@G@@DCN,OFF THEN,DAIPA9 . ->NOPE, NOT IMAG PART @#@@@4DAIPA8 LABEL . BK )@@G@@@D@@@4 LSDP X3,DLXID . SEE IF COMPLEX @B@@@4 BL )@@G@@ LSDP X3,SDBCLK,X3 . GET SD @ @@@4 USING SDSECT,X3 . BM )@@G@@@G@@@4 IF SDRLCX,OFF,SDCLS1 THEN,DAIPA9 . ->ERROR, NOT COMPLEBN )@@G@@X @D@@@4 LINK SAPTID . PUT COMPLEX PART @B@@@4BO )@@G@@ GOTO DAIPA4 . SET -! @#@@@4DAIPA9 LABEL . @C@@@4BP )@@G@@ FLINK X10,SAEB92 . ERROR STATE @C@@@4 LINK EABBQ )@@G@@K1 . DELETE SIGN @E@@@4 GOTO DAIPA4 . SBR )@@G@@ET ERROR MSG, PUT -! @[@@@4. @B@@@4DAINPS LABEL . BS )@@G@@ SIGN @F@@@4 IF DAICNA,ON,DSATPL THEN,DAIPL2 . ->NO ARIBT )@@G@@TH ALLOWED @D@@@4 STORE X9,DSATPK . SAVE CURRENT STATE BU )@@G@@@E@@@4 LINK SAGBC . GET CURRENT LOCATION @B@@@4BV )@@G@@ LOAD X9,A3 . SAVE IT@B@@@4 SUPSYM ACSTEX .BW )@@G@@ SET !- @#@@@4DAIPS4 LABEL . @D@@@4 ADD A14,ACUPLBX )@@G@@-ACBPL,I . UNARY OPERATION @D@@@4 LINK SAPTAC . PBY )@@G@@UT INTO B CODE @B@@@4 BCL LXPS,DAIPS4 . SIGN @ @@@4BZ )@@G@@ BCL LXIDCN,DAIPA2 .@ @@@4 BCL LXIDDN,DAIPA2 .@B@@@4CA )@@G@@ FLINK X10,SAEB92 . ERROR @C@@@4 LOAD A3,X9 . CB )@@G@@ DELETE B CODE@^@@@4 LINK SAGSBC . @C@@@4 LOACC )@@G@@D X9,DSATPK . RESTORE STATE@E@@@4 GOTO DAINAZ . CD )@@G@@ ->NEXT TRANSFORMATION @#@@@4DAINBA LABEL . @D@@@4 LINCE )@@G@@K EABK1 . BACKUP- SUPPLY * @#@@@4DAINSA LABEL . @D@@@4CF )@@G@@ FLINK X10,SAEB92 . IMPROPER INITIAL @ @@@4 GOTCG )@@G@@O DAIPAS ... @[@@@4. @ @@@4. ITERATION FACTOR @[@@@4CH )@@G@@. @#@@@4DAINPF LABEL . @F@@@4 LINK SAGBC . SACI )@@G@@VE ADDR OF ( IN CASE NOT ITER @ @@@4 STORE A3,DSATPF . @D@@@4CJ )@@G@@ SUPSYM ACLPAR . ASSUME ITER FOR NOW @F@@@4 LINCK )@@G@@K LXGET . GET INSIDE ITERATION START @C@@@4 BCLCL )@@G@@,LXIDDN,DAIPF5 . ->DEC CONST @H@@@4 SET DAICSA,ON,DSATPCM )@@G@@L . . SET PROHIBIT STATIC @#@@@4DAIPF5 LABEL . CN )@@G@@@D@@@4 EXPR ICDSYA . D=(SCL,ANY,ARI) @B@@@4 CO )@@G@@ GOTO DAPRER . =>FAIL @D@@@4 LINK SAGBC . CP )@@G@@ SEE IF !- SD -! @C@@@4 SUB A3,4,I . POINT TCQ )@@G@@O !- @^@@@4 SLB A3,18 @^@@@4 SRB A3,18 @D@@@4CR )@@G@@ IF A3,NE,DSATPF THEN,DAIPF7 . ->NO STATIC @A@@@4 SETCS )@@G@@ DAICSA,ON,DSATPL . @#@@@4DAIPF7 LABEL . @D@@@4 LOADA X9,CT )@@G@@DAIITR . SET ITERATION STATE@D@@@4 BNCL LXRP,DAIPF8 . -CU )@@G@@>NOT ) SO NOT ITERATION @D@@@4 LINK SASPRP . PUT ) OCV )@@G@@F ITERATION @A@5@4 SET DAICSC,ON,DSATPL . @D@@@4 GOTCW )@@G@@O DAINAZ . NEXT TRANSFORMATION@E@@@4DAIPF8 LABEL . CX )@@G@@ CHANGE ITERATION TO LIST @^@@@4 COUNT DSAITL . @E@@@4CY )@@G@@ FLINK X10,DAITPR . CHANGE ITER( TO LIST( @^@@@4 CZ )@@G@@ GOTO DAITPT . @#@@@4DAINAP LABEL . @B@@@4 LINK SAPTAC . DA )@@G@@ PUT ( @D@@@4 COUNT DSAITL . UP PAREN COUNDB )@@G@@T @H@@@4 GOTO DAINCMS . RESTADC )@@G@@RT IN BEGIN STATE @[@@@4. @#@@@4DAINIX LABEL . @E@@@4 FLIDD )@@G@@NK X10,DAITPR . CHANGE ITER( TO LIST( @^@@@4 GOTO DAIDE )@@G@@NRP . @[@@@4. @#@@@4DAINIY LABEL . @ @@@4 FLINK X10,DAITDF )@@G@@PR . @^@@@4 GOTO DAINPC . @#@@@4DAINRP LABEL . @E@@@4 DG )@@G@@ LINK LXGET . IGNORE CURRENT SYMBOL @ @@@4 FLIDH )@@G@@NK X9,DAIRPS . @^@@@4 GOTO DAITPT . @#@@@4DAIRPS LLOC . DI )@@G@@@B@@@4 SUPSYM ACRPAR . SET ')'@B@@@4 BINDZ DSADJ )@@G@@ITL,DAIN36 . BASE @D@@@4 LOAD A8,DSAITL . DOWN CODK )@@G@@UNT BY 1 @^@@@4 SUB A8,1,I . @ @@@4 STORE A8,DSAITLDL )@@G@@ . @^@@@4 GOTO 0,X9 . @[@@@4. @D@@@4DAINEX LABEL . DM )@@G@@ CLEAR PAREN STACK @C@@@4 SAERR SAEM08,SAE . DN )@@G@@ MISSING ) @ @@@4 FLINK X9,DAIRPS . @D@@@4 GOTDO )@@G@@O DAINEX . CLEAR NEXT LEVEL @[@@@4. @F@@@4SAEB92 LLODP )@@G@@C . IMPROPER INITIAL ATTRIBUTE @ @@@4 LOADQ )@@G@@D A7,SAEM92,I . @^@@@4 GOTO SAESE @[@@@4. @[@@@4. DR )@@G@@@#@@@4DAITPR LLOC . @E@@@5 SET DAICAR,ON,DSATPL . SET ARITDS )@@G@@H AS FIRST IN LIST@D@@@4 LOAD A8,DSATPF . GET PTR TO ITEDT )@@G@@R( @D@@@4 SSC A8,1 . A8=ADDR, SIGN=H2 @C@@@4DU )@@G@@ LOAD X9,A8 . PUT IN X REG @ @@@4 LOAD A3,DV )@@G@@ACLLST,I . @C@@@4 IF A8,LT,0,I THEN,DASPR2 . ->H2 @^@@@4DW )@@G@@ USING WORD,X9 @^@@@4 STORE A3,W1H1 .@^@@@4 GOTDX )@@G@@O 0,X10 @#@@@4DASPR2 LABEL . @^@@@4 STORE A3,W1H2 @^@@@4DY )@@G@@ GOTO 0,X10 . @[@@@4. @[@@@4. @#@@@4. INPUT DZ )@@G@@@[@@@4. @#@@@4DAINPT LOCAL . @B@@@4 BATER STDAT2,SN2INP .EA )@@G@@ ->NO INPUT @A@@@4 SET ST2INP,ON,STDAT2 . @A@@@4 SETEB )@@G@@ SDIOIN,ON,SDIOAT . @B@@@4 GOTO DAFLE2 . ->MERGE, FILE EC )@@G@@@[@@@5. @[@@@5. @#@@@5. KEYED @[@@@5. @#@@@5DAKEYDED )@@G@@ LOCAL . @ @@@5 BATER STDAT2,SN2KEY @D@@@5 SET SDFEE )@@G@@LKY,ON,SDIOAT . SET KEYED FILE @A@@@5 SET ST2KEY,ON,STDATEF )@@G@@2 . @E@@@5 GOTO DAFLE2 . -> MERGE WITH FILE ATTREG )@@G@@@[@@@5. @#@@@5. OFFSET @[@@@5. @[@@@5. @#@@@5DAOFSTEH )@@G@@ LOCAL . @D@@@5 UNSTK X11 . TEMP - NOT IMPLEMENTED EI )@@G@@@^@@@5 GOTO DANY @[@@@5. @[@@@5. @#@@@5 ON EJ )@@G@@ 0 @E@@@5 IF STDAT+FH1,NZERO THEN,DEATER . ->SOME ATTR EK )@@G@@@ @@@5 BATER STDAT4,ST4PTR @C@@@5 LINK DASPTR . EL )@@G@@ SET POINTER CLASS@A@@@5 SET ST4PTR,ON,STDAT4 . @E@@@5 EM )@@G@@ SET SDPTOF,ON,SDCLS1 . OFFSET TYPE OF PTR @F@@@5 LINEN )@@G@@K DAPRET . SEE IF FIRST SCAN OF OFFSET @B@@@5 GOTEO )@@G@@O DAOFS1 . NOPE @D@@@5 BNAC ACLPAR,JMP . NEP )@@G@@OT OFFSET(AREA) @E@@@5 LOADA A4,DAOFS2 . SET EXPR RETUEQ )@@G@@RN POINT @ @@@5 STORE A4,DSARET . @ @@@5 MOVE DSAER )@@G@@SDR,DSASRO,I@ @@@5 MOVE DSAXSD,ICDXC,I @C@@@5 STORE X4,ES )@@G@@DSATP3 . SAVE STK PTR @^@@@5 PEXPR ICDSLP @C@@@5 ET )@@G@@ JMP . ->NO EXPR @ @@@5 LOAD X4,DSATP3EU )@@G@@ . @D@@@5 SET ST4OFA,ON,STDAT4 . SET OFFSET(AREA) @C@@@5EV )@@G@@ JMP . ->YUP- EXPR @[@@@5. @[@@@5. EW )@@G@@@D@@@5DAOFS2 LABEL . SUBRUTINE OF EXPR @C@@@5 EX )@@G@@ LOAD X3,DSSDPT . OFFSET SD @A@@@5 SET SD5OFA,ONEY )@@G@@,SDCLS5 . @ @@@5 STORE X4,SDOFPA . @C@@@5 STORE X4,EZ )@@G@@DSATPZ . SAVE SD @D@@@5 LOAD X3,X4 . SFA )@@G@@ET SD OF AREA @D@@@5 LINK DASETA . TURN TO TYPE FB )@@G@@AREA @D@@@5 GOTO EACNTD . ->RETURN TO EXPR @[@@@5FC )@@G@@. @[@@@5. @C@@@5DAOFS1 LABEL . NOT PASS 1 FD )@@G@@@B@@@5 IF ST4OFA,OFF,STDAT4 THEN,JMP @A@@@5 SET SD5FE )@@G@@OFA,ON,SDCLS5 @ @@@5 MOVE SDOFPA,DSATPZ .@#@@@5 JMPFF )@@G@@ . @#@@@5 OFF . @[@@@5. @[@@@4. @#@@@4. OUTFG )@@G@@PUT @[@@@4. @#@@@4DAOUTP LOCAL . @B@@@4 BATER STDAT2,SNFH )@@G@@2OUT . ->NO OUTPUT@A@@@4 SET ST2OUT,ON,STDAT2 . @#@@@4DAOUT4FI )@@G@@ LABEL . @A@@@4 SET SDIOOT,ON,SDIOAT . @B@@@4 GOTFJ )@@G@@O DAFLE2 . ->MERGE@[@@@4. @[@@@4. @[@@@4. @#@@@4FK )@@G@@. POINTER @[@@@4. @#@@@4DAPTR LOCAL . @E@5@4 IF FL )@@G@@ STDAT+FH1,NZERO THEN,DEATER . -> PTR ILLEGAL @ @@@5 BATER STDFM )@@G@@AT1,SN1PTR .@E@@@5 IF STDAT2,NZERO THEN,DEATER . -> FILE ATTRFN )@@G@@S @ @@@4 BATER STDAT4,ST4PTR .@D@@@4 LINK DASPTR . FO )@@G@@ SET PTR ATTRIBUTE @A@@@4 SET ST4PTR,ON,STDAT4 . FP )@@G@@@#@@@4 JMP . @[@@@4. @[@@@4. @#@@@4DASPTR* LLOC . FQ )@@G@@@D@@@4 USING SDSECT,X3 . SET PTR DATA TYPE @ @@@4 FR )@@G@@ LOAD A3,SDCLS0 . @E@@@4 AND,U A3,0760 . TURN OFFS )@@G@@F STORAGE TYPE @^@5@4 LOAD A3,A4 . @C@5@4 OR,U A3,FT )@@G@@SD0PTR . SET POINTER @C@@@5 ADD A4,SD0PTR,I . FU )@@G@@ SET POINTER@ @@@4 STORE A4,SDCLS0 . @F@@@4 MOVE SDRFV )@@G@@TC,SDRTPT,I . SET PTR STORAGE CLASS SIZE @C@@@4 LJMP . FW )@@G@@ -> RETURN @[@@@4. @D@@@4DABPTR* LOCAL . FX )@@G@@ FIND (POINTER) @C@@@4 LOADA A3,DABPT1 . SFY )@@G@@ET PTR TEST @E@@@4 STORE A3,DSARET . EXPR RETURNS HERE TO SET PTFZ )@@G@@R TYPE@A@@@4 MOVE DSASDR,DSASRO,I . @A@@@4 MOVE DSAGA )@@G@@XSD,ICDXC,I . @B@@@5 LINK SAGBC . BCODE PTR TO (@D@@@5GB )@@G@@ ADD A3,2,I . SKIP ( !-. POINT TO SD @B@@@5 STOGC )@@G@@RE A3,DSATPK . SAVE BCODE PTR@B@5@4 PEXPR ICDSYP. (GD )@@G@@PTR) @B@@@5 PEXPR ICDSLP. (PTR) @^@@@4 JMPGE )@@G@@ . ->NOPE @A@@@5 LOAD A3,DSSDPT . GET SD @E@@@5 LOAGF )@@G@@D A4,DSATPK . PUT IN SD OF BASED BCODE PTR @ @@@5 STORE A4,GG )@@G@@SDBPTR,A3 . @B@@@4 JMP 1. -> YUP @[@@@4. GH )@@G@@@#@@@4DABPT1 LABEL . @ @@@4 USING SDSECT,X3 . @E@@@4 GI )@@G@@ LOAD X3,DSSDPT . GET SD BEING DECLARED @F@@@4 SETGJ )@@G@@ SD3BSD,ON,SDCLS3 . SET IMPLIED BASED VARIABLE @F@5@4 STOGK )@@G@@RE X4,SDBPTR . SET PTR FROM BASED SD TO PTR SD@^@@@4 LOAGL )@@G@@D X3,X4 . @F@@@4 LINK DASPTR . SET PTR DATA TYPE IGM )@@G@@N PTR SD @E@@@4 GOTO EACNTD . RETURN TO EXPR ANALGN )@@G@@YZER @[@@@4. @[@@@4. @#@@@4. PRINT @[@@@4. @#@@@4GO )@@G@@DAPRNT LOCAL . @D@@@4 BATER STDAT2,SN2PRI . ->NO PRINT ALLOWEGP )@@G@@D @A@@@4 SET ST2PRI,ON,STDAT2 . @A@@@4 SET SDIGQ )@@G@@OPR,ON,SDIOAT . @D@@@4 GOTO DAOUT4 . ->SET OUTPUT GR )@@G@@FILE @[@@@4. @[@@@5. @[@@@5. @#@@@4. REAL @[@@@4GS )@@G@@. @#@@@4DAREAL LOCAL . @^@@@4 GOTO DACPX4 . @[@@@5. GT )@@G@@@#@@@5. RECORD @[@@@5. @#@@@5DARECD LOCAL . @ @@@5 GU )@@G@@ BATER STDAT2,SN2REC @A@@@5 SET SDFLRC,ON,SDIOAT . @A@@@5GV )@@G@@ SET ST2REC,ON,STDAT2 . @G@@@5 GOTO DAFLE2 . GW )@@G@@ -> MERGE WITH FILE PROCESSING @[@@@4. @#@@@4. RETGX )@@G@@URNS @[@@@4. @D@@@4DARTNS LOCAL . RETURNS ATTRIGY )@@G@@BUTE @ @@@4 LOAD A3,STDAT3 . @E@@@4 AND,U A3,SN3RTNGZ )@@G@@ . SEE IF RETURNS ALLOWED @E@@@4 LINK DENTS . HA )@@G@@ CHECK FOR ALLOWABILITY @C@@@4 SET ST3RTN,ON,STDAT3 . SHB )@@G@@ET RETURNS @G@@@4 LINK DAEN96 . CHECK FOR ENTRY CHAHC )@@G@@IN (FACTORED) @E@@@4 LINK DAEN92 . CHECK FOR FIRHD )@@G@@ST PASS @F@@@4 GOTO DART72 . -> NOT FIRST PASS (HE )@@G@@FACTORED) @D@@@4 LINK SASPLP . PUT ( IN B CODE HF )@@G@@@D@@@4 MOVE DSATPL,0,I . SET NO ATTR FOUND @C@@@4 HG )@@G@@ LOADA X4,DRVSV1 . DUMMY ENTRY @D@@@4 STORE X4,DSDIWLHH )@@G@@ . SET ENTRY ID ENTRY @D@@@4 LA A7,DAPRAM . GHI )@@G@@ET ATTRS FOR PROC @C@@@4 STORE A7,STDAT . SET ATTRS HJ )@@G@@@D@@@4 GOTO DART20 . ->GET ATTR LIST @#@@@4DART21HK )@@G@@ LABEL . @D@@@4 MOVE DSATPL,1,I . SET VALID ATTR HL )@@G@@@#@@@4DART20 LABEL . @D@@@4 BNCL LXATTR,DART48 . ->NOT AHM )@@G@@TTR, DONE @D@@@4 BAC ACVAR,DART36 . ->VARYING ATTR HN )@@G@@@#@@@4DART24 LABEL . @E@@@4 LINK SADAT8 . ADDR OFHO )@@G@@ ATTR ROUTINE @E@@@4 LOAD X4,DSDIWL . RESET STK ENTHP )@@G@@RY ADDR @C@@@4 LOAD X3,DSSDPT . RESET SD PTR @D@@@4HQ )@@G@@ LOAD X11,DSATP2 . GET ROUTINE ADDRESS@C@@@4 LINHR )@@G@@K 0,X11 . PROCESS ATTR @C@@@4 GOTO DART21 . HS )@@G@@ ->NEXT ATTR @D@@@4 FLINK X10,SAEB76 . OOPS! INVALIDHT )@@G@@ ATTR @C@@@4 GOTO DART20 . ->NEXT ATTR @[@@@4. HU )@@G@@@C@@@4DART48 LABEL . END OF LIST @D@@@4 LINHV )@@G@@K SASPRP . SEE IF ) IN B CODE @E@@@4 IF DSATPL,NZHW )@@G@@ERO THEN,DART52 . ->SOME ATTR FOUND @C@@@4 LINK EABK1 . HX )@@G@@ DELETE ) @D@@@4 SUB X2,1,I . DELETE 'RETURHY )@@G@@NS(' @E@@@4 FLINK X10,SAEB76 . ILLEGAL RETURNS ATTR. HZ )@@G@@@#@@@4DART52 LABEL . @C@@@4 MOVE DSDIWL,DSATPN . RESET SIA )@@G@@TACK @E@@@4 GOTO DAEN11 . ->RETURN FROM DCL DRIVER IB )@@G@@@#@@@4DART36 LABEL . @G@@@4 IF ST1STG,ON,STDAT1 THEN,DART2IC )@@G@@4 . ->SAW CHAR OR BIT, VAR OK @F@@@4 LINK SADR38 . SID )@@G@@EE IF CHAR OR BIT IS NEXT @D@@@4 GOTO DART20 . -IE )@@G@@>NOPE. INVALID @A@@@4 GOTO DART24 . ->OK@C@@@4DART72IF )@@G@@ LABEL . FACTORED ATTR@D@@@4 LOAD X5,DSATPKIG )@@G@@ . GET PTR TO FIRST SD@ @@@4 USING SDSECT,X5 . @F@@@4IH )@@G@@ LOAD A3,SD2SP . MOVE SCALE, PREC, CLASS BYTES @ @@@4II )@@G@@ USING SDSECT,X3 . @ @@@4 STORE A3,SD2SP . @ @@@4IJ )@@G@@ USING SDSECT,X5 . @ @@@4 LOAD A3,SDCLS . @ @@@4IK )@@G@@ USING SDSECT,X3 . @ @@@4 STORE A3,SDCLS . @C@@@4IL )@@G@@ MOVE STDAT,DRVSV1+1 . SET ATTR CTL @F@@@4 IF SDDIM )@@G@@VA,ZERO THEN,DAEN11 . ->NO D.V. @C@@@4 LOAD A7,IN )@@G@@3,I . ALLOCATE D.V.@^@@@4 LINK DADV . @ @@@4 IO )@@G@@ LOAD X5,DSATPK . @D@@@4 LOAD X5,SDDVA,X5 . POINT TIP )@@G@@O OLD D.V. @F@@@4 LOAD A3,W1H2+2,X5 . MOVE B CODE PTR FROIQ )@@G@@M OLD D.V. @C@@@4 STORE A3,W1H2+2,X3 . TO NEW D.V. @#@@@4IR )@@G@@DAEN11 LABEL . @C@@@4 MOVE DSATP2,DSATPX . RESET PTR IS )@@G@@@C@@@4 JMP . ->RETURN @[@@@4. @[@@@4IT )@@G@@. @^@@@4. ENTRY CONTROL @F@@@4DAEN92 LLOC . IU )@@G@@ CHECK FIRST PASS (FACTORED) @B@@@4 BIND DSAU1,LJMP . ->IV )@@G@@NOT PASS 1 @D@@@4 MOVE DSAU1,1,I . SET FIRSTTIME FLAG IW )@@G@@@ @@@4 STORE X4,DSATPN . @ @@@4 STORE X3,DSATPK . IX )@@G@@@C@@@4 MOVE DSATPX,DSATP2 . SAVE ATTR PTR@C@@@4 LJMIY )@@G@@P 1 . ->RETURN @[@@@4. @[@@@4. @#@@@4DAEN96IZ )@@G@@ LLOC . @C@@@4 LOAD X5,DSATBK . GET TOP BLOCK@#@@@4JA )@@G@@DAEN97 LABEL . @ @@@4 USING STSBLK,X5 . @E@@@4 IF JB )@@G@@ ICENPF,ON,STBTYP THEN,DAEN99 . ->PROC BLOCK @E@@@4 IF ICEJC )@@G@@NBF,ON,STBTYP THEN,DAEN98 . ->BEGN BLOCK @E@@@4 SUB X5,SACBSWJD )@@G@@,I . TRY NECT OUTER BLOCK @^@@@4 GOTO DAEN97 . @C@@@4JE )@@G@@DAEN98 LABEL . BEGIN BLOCK @^@@@4 UNSTK X11JF )@@G@@ . @B@@@4 GOTO DEATER . ->ERROR@#@@@4DAEN99 LABJG )@@G@@EL . @E@@@4 SET SD4ENT,ON,SDCLS4 . SET ENTRY TYPE IN SD JH )@@G@@@E@@@4 SET SDPREN+SDBLUS,ON,SDCLS1 . ENTRY + USERFCN @C@@@4JI )@@G@@ MOVE SDCLS0,SD0ENT,I . ENTRY TYPE @D@@@4 IF SDFJJ )@@G@@XFL,ON,SDCLS1 THEN,DAEN9X . ->FLOAT @F@@@4 MOVE SDRTC,1,I . JK )@@G@@ SET FIXED BINARY SIZE (1 WORD) @#@@@4DAEN9X LABEL . @C@@@4 JL )@@G@@ LOAD A3,STDAT3 . GET ATTR @D@@@4 XOR,U A3,ST3ENTJM )@@G@@+ST3RTN . SEE IF ATTR MATCH @B@@@4 IF A4,EQ,0,I THEN,LJMP .JN )@@G@@ ->OK @E@@@4 IF SDPARM,ON,SDCLS2 THEN,LJMP . ->PARAMETER JO )@@G@@@D@@@4 MOVE SDA1DP,STBECH . SET ENTRY CHAIN @ @@@4 JP )@@G@@ STORE X3,STBECH . @^@@@4 LJMP . ->RETURN@[@@@4. @#@@@4JQ )@@G@@. STATIC @[@@@4. @ @@@4 USING STSBLK,X4 . @#@@@4JR )@@G@@DASTAT LOCAL . @ @@@4 BATER STDAT3,SN3STT @E@@@4 LINJS )@@G@@K DEPARM . NO PARAMETER FOR STATIC @A@@@4 SET ST3JT )@@G@@STT,ON,STDAT3 @#@@@4DASTT4 LABEL . @ @@@4 SET 0760,OFF,JU )@@G@@SDCLS0@A@@@4 SET SD0STA,ON,SDCLS0 @#@@@4 JMP . JV )@@G@@@[@@@4. @#@@@4. STREAM @[@@@4. @#@@@4DASTRM LOCAL . JW )@@G@@@ @@@4 BATER STDAT2,SN2STR @A@@@4 SET ST2STR,ON,STDATJX )@@G@@2 @^@@@4 GOTO DAFLE2 @[@@@4. @#@@@4. VARYING JY )@@G@@@[@@@4. @#@@@4DAVAR LOCAL @ @@@4 BATER STDAT1,SN1VAR JZ )@@G@@@A@@@4 SET ST1VAR,ON,STDAT1 @#@@@4 JMP . @[@@@4KA )@@G@@. @[@@@4. @C@@@4DANVAR LOCAL . NONVARYING KB )@@G@@@ @@@4 BATER STDAT1,SN1VAR .@A@5@4 SET ST1NVAR,ON,STDAKC )@@G@@T1 . @A@@@5 SET ST1NVR,ON,STDAT1 . @#@@@4 JMP . KD )@@G@@@[@@@4. @[@@@4. @#@@@4. BIT-CHAR @[@@@4. @#@@@4DABIT KE )@@G@@ LLOC . @C@@@4 MOVE DSATP4,1,I . BIT STRING @#@@@4KF )@@G@@DACHAR LOCAL . @ @@@4 BATER STDAT1,SN1STG .@ @@@4 BATKG )@@G@@ER STDAT2,SN2FLA .@A@@@4 SET ST1STG,ON,STDAT1 . @^@@@4. KH )@@G@@ STRING LENGTH @#@@@5DAARS2 LABEL . @C@@@4 LINK DAPRET . KI )@@G@@ CHECK PASS 1 @C@@@4 GOTO DALN36 . ->NOT FKJ )@@G@@IRST @F@@@4 BNAC ACLPAR,DALN85 ^. NO (EXPR), USE VALUE (1KK )@@G@@) @B@@@4 LINK SASPLP . SET '('@B@@@4 BCLKL )@@G@@ LXMU,DALN12 . ->(*) @C@@@4 MOVE DSAD,ICDSYA,I . SKM )@@G@@CL,ANY,ARI @C@@@4 LINK EAEXPR . !- EXPR-! @C@@@4KN )@@G@@ GOTO DALN86 . -> ERROR @B@@@4 GOTO DALKO )@@G@@N16 . -> OK @#@@@4DALN12 LABEL . @D@@@4 LINK SAGKP )@@G@@BC . SET PTR TO '*' @C@@@4 STORE A3,DSATPB . KQ )@@G@@ SAVE IT @G@@@4 SUPSYM ACSTAR . SET MISSING KR )@@G@@EXPR, USE '*' AS EXPR @E@@@4 LINK LXGET . IGNOREKS )@@G@@ *, POINT TO ) @#@@@4DALN16 LABEL . @B@@@4 LINK SASPRP . KT )@@G@@ ')' @#@@@4DALN36 LABEL . @ @@@4 LOAD X5,DSSDPTKU )@@G@@ . @D@@@4 LOAD A9,DSATPB . POINT TO !-EXPR-!) @D@@@4KV )@@G@@ SUB A9,1,I . POINT TO (!-EXPR-!)@C@@@4 BINKW )@@G@@DZ DSALND,DALN43 . ->NOT STR @^@@@4 USING SDSECT,X5@D@@@4KX )@@G@@ STORE A9,SDA1BS . BCODE OF LENGTH @^@@@4 GOTKY )@@G@@O DALN44 . @#@@@4DALN43 LABEL . @C@@@4 BINDZ SDNDIM,DALN48 .KZ )@@G@@ ->NO DIM @^@@@4 LOAD X3,SDDVA @^@@@4 GOTO DALLA )@@G@@N50 . @#@@@4DALN48 LABEL . @C@@@4 LOAD A7,3,I . 3LB )@@G@@ DV WORDS @^@@@4 LINK DADV @#@@@4DALN50 LABEL . @^@@@4LC )@@G@@ USING WORD,X3 @D@@@4 STORE A9,W1H2+2 . SET BCOLD )@@G@@DE OF LENGTH@#@@@4DALN44 LABEL . @^@@@4 LOAD X3,DSSDPT@ @@@4LE )@@G@@ USING SDSECT,X3 . @E@@@4 IF SD0ENT,OFF,SDCLS0 THELF )@@G@@N,DALN62 . ->NOT ENTRY @D@@@4 LOAD X5,DSALSB . CONTAINLG )@@G@@ING BLOCK . @D@@@4 LINK DEDLDV . PUT ON DV CHAIN LH )@@G@@@^@@@4 LOAD X3,DSSDPT@^@@@4 GOTO DALN66 . @#@@@4DALN62LI )@@G@@ LABEL . @ @@@4 USING SDSECT,X3 . @ @@@4 SET 017LJ )@@G@@,OFF,SDCLS0 @A@@@4 SET SD0STR,ON,SDCLS0 @C@@@5 MOVLK )@@G@@E SDNSPS,1,I . STRING LEAF @#@@@4DALN66 LABEL . @A@@@4 LL )@@G@@ MOVE SDRTC,SDRTST,I . @A@@@4 SET SDARST,ON,SDCLS1 . LM )@@G@@@ @@@4 MOVE SD2SP,0,I . @B@@@4 BNIND DSATP4,DALN69 .LN )@@G@@ ->CHAR @A@@@4 SET SDCHBT,ON,SDCLS1 @#@@@4DALN69 LABLO )@@G@@EL . @#@@@4 JMP . @[@@@5. @[@@@5. @F@@@5DAARSZ LOCLP )@@G@@AL . ENTRY POINT FOR AREA(SIZE) @^@@@5 GOTLQ )@@G@@O DAARS2 . @[@@@5. @[@@@5. @#@@@4DALNGR LABEL . @^@@@4 LR )@@G@@ LOADA X5,DEATR2@#@@@4DALN64 LABEL @^@@@4 LOAD A3,DSATPELS )@@G@@@^@@@4 LINK SAGSBC . @^@@@4 GOTO 0,X5 @#@@@4DALN85LT )@@G@@ LABEL . @B@@@4 SUPSYM ACLPAR . '(' @#@@@4DALN86LU )@@G@@ LABEL . @D@@@4 LINK SAGBC . SET PTR TO 1 LV )@@G@@@ @@@4 STORE A3,DSATPB . @B@@@4 LOAD A8,ACSTEX+ICDSYLW )@@G@@A,I !- 1 -!@#@@@4 PUTC @^@@@4 LINK SAPTON @^@@@4LX )@@G@@ SUPSYM ACENEX @B@@@4 SUPSYM ACLPAR . ')' LY )@@G@@@^@@@4 GOTO DALN36 @[@@@4. @#@@@4. FLOAT @[@@@4LZ )@@G@@. @#@@@4DAFLT LOCAL @ @@@4 USING SDSECT,X3 . @ @@@4MA )@@G@@ BATER STDAT1,SN1FFL @A@@@4 SET SDFXFL,ON,SDCLS1 MB )@@G@@@#@@@4DAFL04 LABEL . @A@@@4 SET ST1FFL,ON,STDAT1 @#@@@4MC )@@G@@DAFL06 LABEL . @C@5@4 IF ST1BIN,ON,STDAT1 THEN,DAPREC . MD )@@G@@@A@5@4 SET SDDCBN,OFF,SDCLS1 . @D@@@4. ME )@@G@@ PRECISION SUBR. @#@@@4DAPREC LLOC . @B@@@4 BATMF )@@G@@ER STDAT2,SN2FLA . ->FILE @B@@@4 LINK DAPRET . PMG )@@G@@ASS1 @B@@@4 GOTO DAPR12 . ->NO @E@@@4 BACMH )@@G@@ ACLPAR,DAPR33 . ->NO SCALE OR PREC. @D@@@4 MOVE DSAMI )@@G@@TP5,0,I . CLEAR P INDICATOR @B@@@4 GOTO DAPR18 . MJ )@@G@@ RETURN @#@@@4DAPR33 LABEL . @^@@@4 LINK SAGBC . @D@@@4MK )@@G@@ STORE A3,DSATPE . SAVE START OF (P,Q)@B@@@4 LINML )@@G@@K SAPTAC . '(' @C@@@4 BNCL LXIDDN,DAPRER . -MM )@@G@@>NOT CONST @^@@@4 USING SDSECT,X4@ @@@4 LSDP X4,DLXID MN )@@G@@. @C@@@4 LOAD X4,SDBCLK,X4 . SD POINTER @C@@@4 MO )@@G@@ MOVE DSATP3,SDFXPT+1+FQ4. VALUE OF P @^@@@4 LINK SAPTID MP )@@G@@@B@@@4 BAC ACRPAR,DAPR10 . ->')' @B@@@4 LINK SAPMQ )@@G@@TCM P,Q @B@@@4DAPR31 BNCL LXIDDN,DAPR24 . ->Q MR )@@G@@@^@@@4 LSDP X4,DLXID @ @@@4 LOAD X4,SDBCLK,X4 . @ @@@4MS )@@G@@ LOAD A8,SDFXPT+1 @ @@@4 BINDZ DSATP4,DAPR32 @^@@@4MT )@@G@@ LOADN A8,A8 @A@@@4DAPR32 STORE A8,DSATP4 . Q@^@@@4MU )@@G@@ LINK SAPTID @#@@@4DAPR10 LABEL . @^@@@4 LINK SASMV )@@G@@PRP . @#@@@4DAPR12 LABEL . @^@@@4 USING STSBLK,X4@C@@@4 MW )@@G@@ LOAD X4,DSDIWL . CURRENT ID @B@@@4 BINDZ DSATP3,DAMX )@@G@@PR18 . ->NO P @C@@@4 IF ST1PRC,ON,STDAT1 THEN,DEATR4 MY )@@G@@@A@@@4 SET ST1PRC,ON,STDAT1 @^@@@4 LOAD X3,DSSDPTMZ )@@G@@@^@@@4 USING SDSECT,X3@ @@@4 MOVE SDPREC,DSATP3 @B@@@4NA )@@G@@ BINDZ DSATP4,DAPR18 . ->NO Q @ @@@4 MOVE SDSCAL,DSNB )@@G@@ATP4 @#@@@4DAPR18 LABEL . @#@@@4 JMP. @D@@@4DAPR24 LABNC )@@G@@EL . EXPR FOR P AND Q @C@@@4 BNCL LXPS,DAPRND )@@G@@ER . ->NOT SIGN @B@@@4 BNAC ACBPL,DAPR25 . ->NOT +NE )@@G@@@#@@@4DAPR26 LABEL . @^@@@4 LINK SAPTAC @^@@@4 GOTNF )@@G@@O DAPR31 . @#@@@4DAPR25 LABEL . @ @@@4 MOVE DSATP4 . NG )@@G@@@^@@@4 GOTO DAPR26 @#@@@4DAPRER LABEL @^@@@4 LOANH )@@G@@DA X5,DEATR4@^@@@4 GOTO DALN64 @[@@@4. @#@@@4DAPRET LLONI )@@G@@C . @ @@@4 BNINDZ DSATP5,LJMP @ @@@4 MOVE DSATP5,1,NJ )@@G@@I . @#@@@4 LJMP 1 .@#@@@4SAEB8X LABEL . @ @@@4 LOANK )@@G@@D A7,SAEM86,I . @^@@@4 GOTO DEBDCL . @#@@@4SAEB86 LABEL . NL )@@G@@@ @@@4 LOAD A7,SAEM86,I . @^@@@4 GOTO SAESE . @#@@@4NM )@@G@@DEBDCL LABEL . @D@5@4 SET 040,ON,DSAECT . TURN OFF CORRENN )@@G@@CTED @D@@@5 SET 01000,ON,DSAECT . TURN OFF CORRECTED@^@@@4NO )@@G@@ GOTO SAESE . @#@@@4SACNDN LLOC . @E@@@4 LOAD A3,NP )@@G@@DSCNTI . COUNT DOWN ATTR LIST @^@@@4 SUB A3,1,I . NQ )@@G@@@ @@@4 STORE A3,DSCNTI . @#@@@4 LJMP . @^@@@4/. NR )@@G@@ ERROR MESSAGES @C@@@4SAEM08 EQU 30 . MISSING ) NS )@@G@@@C@@@4SAEM05 EQU 33 . MISSING ( @C@@@4SAEM12 EQUNT )@@G@@ 34 . EXTRA COMMA @C@@@4SAEM26 EQU 29 . NU )@@G@@ EXTRA '(' @^@@@4SAEM37 EQU 75 . @^@@@4SAEM43 EQU 76 NV )@@G@@. @C@@@4SAEM83 EQU 77 . TOO MANY ID'S@E@@@4SAEM85NW )@@G@@ EQU 78 . IMPROPER STRUCTURE LEVEL @E@@@4SAEM96 EQUNX )@@G@@ 62 . MULTIPLE DECLARATION @D@@@4SAEM97 EQU 66 NY )@@G@@. IMPROPER VARYING @D@@@4SAEM99 EQU 79 . NZ )@@G@@ ATTRIBUTE ERROR @C@@@4SAEM100 EQU 60 . NOT IN OA )@@G@@PLUM @C@@@4SAEM101 EQU 73 . UNIMPLEMENTED@D@@@4SAEM86OB )@@G@@ EQU 80 . IMPROPER DIMENSION @D@@@4SAEM36 EQU 82 OC )@@G@@. . IMPROPER FACTOR @E@@@4SAEM77 EQU 81 . OD )@@G@@ IMPROPER CONVERSION @B@@@4SAEM81 EQU 84 . EXOE )@@G@@TRA ) @F@@@4SAEM84 EQU 83 . IMPROPER ATTRIBUTE IN STRUOF )@@G@@CTURE @F@@@4SAEM92 EQU 85 . IMPROPER INITIAL ATTRIBUTOG )@@G@@E @F@@@5SAEMIT EQU 86 . INITIAL ARRAY USED WITH SOH )@@G@@CALAR @H@@@5SAEMIA EQU 122 . ITEMS IN INITIAL LIST NOTOI )@@G@@ COM. WITH VAR @E@@@5SAEMNS EQU 123 . STATIC ATTR NOJ )@@G@@OT PERMITTED@]@@@4 END___DSATP4,DALN69 . ->CHAR @A@@@4 OK )@@G@@ SET SDCHBT,ON,SDCLS*[S@@@*SDFF*@C@J@I. COPYRIGHT 1975 BY UNIVERSIOL )@@G@@TY OF MARYLAND +@@@@[@F@M@J 0)^@)CTJE[TELDC9CE))AC9A85^[]FC)E(IDDQC(MOM )@@G@@ETDE-T^[JC0)D([ELTD-[D1^+@@@@@@C@@@M. COPYRIGHT 1975 BY UNIVERSITY OF ON )@@G@@MARYLAND @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @D@J@I. QUOO )@@G@@ESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: +@@@@[@H@M@J 0)^@)EDPC(NOP )@@G@@E-DD9IES)CTJD1#C(MD1DD1B^[OD[DES)ETCD9PD-^^[]C*)C-DEL CTOC(^^[OD8'+@@@@@OQ )@@G@@@D@@@M. QUESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@J@I. OR )@@G@@+@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @ @J@I. MARVIN V. ZELKOWITZ OS )@@G@@+@@@@[@B@M@J 0)^@)^@)^@)^[HCDME1DD0)E0,^[UC(GDTJE9DE-U+@@@@@@ @@@M. OT )@@G@@ MARVIN V. ZELKOWITZ @B@J@I. DEPARTMENT OF COMPUTER SCIENCE OU )@@G@@+@@@@[@E@M@J 0)^@)^@)^@)^[^C(KCDME-HC(IE))D9A^[#D9HE[PE- EK)ET#DD D1#C*)OV )@@G@@+@@@@@@B@@@M. DEPARTMENT OF COMPUTER SCIENCE @A@J@I. UNIOW )@@G@@VERSITY OF MARYLAND +@@@@[@C@M@J 0)^@)^@)^@)^[PD1DE1 ELNDDOFC)D9A^[HOX )@@G@@CDMFDGCDIC))+@@@@@@A@@@M. UNIVERSITY OF MARYLAND @B@J@I. OY )@@G@@ COLLEGE PARK, MARYLAND 20742 +@@@@[@E@M@J 0)^@)^@)^@)^[#D9GD- C9 OZ )@@G@@^[KCDMDS?^[HCDMFDGCDIC))AK0A84AK)^@)+@@@@@@B@@@M. COLLEGE PARK, MPA )@@G@@ARYLAND 20742 @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @G@J@IPB )@@G@@. PERMISSION TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEYPC )@@G@@+@@@@[@M@M@J 0)^@)^@)^@)^[KC(MD(DETNDDJD0)E-J^[PET ^[OD[ ET ^[GDDNE-DD1BPD )@@G@@ES)CDIC))E-CC*)CTJD(KE(OC(M^[KELJC9MCDHES)E-CC(T+@@@@@@G@@@M. PERPE )@@G@@MISSION TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEY@E@J@I. REPF )@@G@@PRESENT IS GRANTED UNDER THE FOLLOWING CONDITIONS: +@@@@[@I@M@J 0)^@)PG )@@G@@EL E[MC(NC(IE))DDN^[BEL[D1OC(^^[PD1^C(M^[OD[ ^[AD9GD-JE9DD1B^[#D9IC-DE-DPH )@@G@@D9IES'+@@@@@@E@@@M. REPRESENT IS GRANTED UNDER THE FOLLOWING CONDITIONPI )@@G@@S: @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @G@J@I. 1. PJ )@@G@@UNLIMITED USE MAY BE MADE OF THE PROGRAMS REPRESENTED BY +@@@@[@L@M@JPK )@@G@@ 0)^@)^@)^@)^@1 0)E(ID-DD(DE- C))E(NC*)D([FC)CL ^[HCD^C*)D9A^[OD[ ^[KELJPL )@@G@@C9MCDHES)EL E[MC(NC(IE- C))CLT+@@@@@@G@@@M. 1. UNLIMITED USE MAY PM )@@G@@BE MADE OF THE PROGRAMS REPRESENTED BY @G@J@I. THESE LISTINGS PROVIPN )@@G@@DED THAT THE NAME PLUM OR UNIVERSITY OF MARYLAND+@@@@[@M@M@J 0)^@)E-CC(NPO )@@G@@C*)D-DETODDIC9N^[KELJE1DC- C))E-CCDO^[OD[ ^[ICDHC*)E[GE(H^[JEK)E(IDDQC(MPP )@@G@@ETDE-T^[JC0)D([ELTD-[D1^+@@@@@@G@@@M. THESE LISTINGS PROVIDED THAT THEPQ )@@G@@ NAME PLUM OR UNIVERSITY OF MARYLAND@E@J@I. PL/1 COMPILER REMAINS ASSOPR )@@G@@CIATED WITH THESE PROGRAMS. +@@@@[@J@M@J 0)^@)E[G 81^[#D9HE[DD- EK)EL PS )@@G@@D([DDIES)CDNETJCTDCDOC(^^[RDDOD@)E-CC(NC*)E[MD9BEL[D(N 0)^@)+@@@@@@E@@@MPT )@@G@@. PL/1 COMPILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@J@I. PU )@@G@@+@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @F@J@I. 2. MODIFICATIONS MAY PV )@@G@@BE MADE TO THE LISTINGS PROVIDED: +@@@@[@K@M@J 0)^@)^@)^@)^@2 0)D(JC-DPW )@@G@@C1DCT[E-DD9IES)D([FC)CL ^[HCD^C*)E-J^[OD[ ^[GDDNE-DD1BES)E[MD9QDD^C(^BK)PX )@@G@@+@@@@@@F@@@M. 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDPY )@@G@@ED: @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @G@J@I. (A)PZ )@@G@@ ANY RESULTING PROGRAM, OR REPORT, PAPER OR DOCUMENTATION +@@@@[@M@M@JQA )@@G@@ 0)^@)^@)^@)^@*CC(^[[D1T^[MC(NE(GE-DD1B^[KELJC9MCDH ))D9M^[MC(KD9ME)?^[KQB )@@G@@CDKC(M^[JEK)C-JCTPD( D1OCDODDJD0)^@)+@@@@@@G@@@M. (A) ANY RESULTIQC )@@G@@NG PROGRAM, OR REPORT, PAPER OR DOCUMENTATION @G@J@I. DESCRIBINQD )@@G@@G SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PROGRAM +@@@@[@M@M@J 0)^@)QE )@@G@@^@)^@)^[^C(NCTMDD]DDIC8)ETPCTC^[KELJC9MCDH^[RDDGD))CTGC([ELGFC)DDIC-DCT[QF )@@G@@E- ^[OD[[E))E-CC*)E[MD9BEL[D*)+@@@@@@G@@@M. DESCRIBING SUCH PROGRQG )@@G@@AM WILL CLEARLY INDICATE THAT THE PROGRAM @E@J@I. IS A DIALECT OFQH )@@G@@ PLUM OR IS DERIVED FROM PLUM, AND +@@@@[@J@M@J 0)^@)^@)^@)^[DES)CC)C-DQI )@@G@@CDGC(#E))D9A^[KD-PD*)D9M^[DES)C- ELDE1 C))C1MD9H^[KD-PD*?^[[D1^^@)+@@@@@QJ )@@G@@@E@@@M. IS A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND @[@J@IQK )@@G@@. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @G@J@I. (B) ALL SUCH MOQL )@@G@@DIFICATIONS, OTHER THAN TRIVIAL CORRECTIONS +@@@@[@L@M@J 0)^@)^@)^@)QM )@@G@@^@*CK(^[[D-G^[NE(#D@)D(JC-DC1DCT[E-DD9IES?^[JE-CC(M^[OD[[D0)E-MDDQDD[D))QN )@@G@@CTJELMC(#E-DD9IES)+@@@@@@G@@@M. (B) ALL SUCH MODIFICATIONS, OTHERQO )@@G@@ THAN TRIVIAL CORRECTIONS @F@J@I. OF ERRORS IN THE SOURCE PROQP )@@G@@GRAMS, SHALL BE REPORTED AND +@@@@[@K@M@J 0)^@)^@)^@)^[JC0)C(MELJELN^[DQQ )@@G@@D0)E-CC*)ETJE(MCT ^[KELJC9MCDHES?^[ND[[D-G^[]C*)EL E[JELOC(^^[[D1^+@@@@@QR )@@G@@@F@@@M. OF ERRORS IN THE SOURCE PROGRAMS, SHALL BE REPORTED AND QS )@@G@@@G@J@I. A BRIEF DESCRIPTION OF THE FEATURE ADDED SHALL BE SUBMITTQT )@@G@@ED +@@@@[@L@M@J 0)^@)^@)^@)^[[^[]ELDC(A^[^C(NCTMDDKE-DD9I^[JC0)E-CC*)QU )@@G@@C1 CDOE(MC*)CD^C- C))ETCCDGD))CL ^[NE(]D(DE-OC(^+@@@@@@G@@@M. A BQV )@@G@@RIEF DESCRIPTION OF THE FEATURE ADDED SHALL BE SUBMITTED @C@J@I. QW )@@G@@ TO THE UNIVERSITY OF MARYLAND, AND +@@@@[@F@M@J 0)^@)^@)^@)^[OD8)QX )@@G@@E-CC*)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^ ))CDIC))+@@@@@@C@@@M. TO QY )@@G@@THE UNIVERSITY OF MARYLAND, AND @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@QZ )@@G@@@[@@@M. @F@J@I. (C) NO PROGRAMS DERIVED FROM THESE LISTINGS SRA )@@G@@HALL BE SOLD+@@@@[@L@M@J 0)^@)^@)^@)^@*CS(^[ID8)E[MD9BEL[D(N^[^C(MDDQC(^RB )@@G@@^[AELJD*)E-CC(NC*)D-DETODDIC9N^[ND[[D-G^[]C*)ETJD-^^@)+@@@@@@F@@@M. RC )@@G@@ (C) NO PROGRAMS DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@J@I. RD )@@G@@ WITHOUT WRITTEN APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND +@@@@[RE )@@G@@@M@M@J 0)^@)^@)^@)^[RDDOD[JE(O^[RELDE-OC(I^[[E[KELJE1[D))C1MD9H^[OD[ ^[PRF )@@G@@D1DE1 ELNDDOFC)D9A^[HCDMFDGCDIC)?^[[D1^^@)+@@@@@@G@@@M. WITHOUT WRG )@@G@@RITTEN APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND @[@J@I. +@@@@[RH )@@G@@@[@M@J 0)^@)+@@@@@@[@@@M. @F@J@I. (D) COPIES OF THESE PROGRAMRI )@@G@@S MAY BE TRANSMITTED TO OTHER +@@@@[@L@M@J 0)^@)^@)^@)^@*C)(^[#D9KDD ES)RJ )@@G@@D9A^[OD[ ET ^[KELJC9MCDHES)D([FC)CL ^[OEL[D1ND(DE-OC(^^[OD8)D9OD[ EK)^@)RK )@@G@@+@@@@@@F@@@M. (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTED TO RL )@@G@@OTHER @G@J@I. LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY IRM )@@G@@NDICATE +@@@@[@L@M@J 0)^@)^@)^@)^[GD9#CDODDJD1N^[KELJE1DC- C))E-CCDORN )@@G@@^[NE(#D@)E-MCDIETHDDOE-[D-N^[#D- CDMD-T^[DD1^DD#CDOC*)+@@@@@@G@@@M. RO )@@G@@ LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@J@IRP )@@G@@. WHETHER THE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF RQ )@@G@@+@@@@[@L@M@J 0)^@)^@)^@)^[RD[ E-CC(M^[OD[ ^[KELJC9MCDHES)CDMC*)C(SCD#E))RR )@@G@@CTJE[DC(N^[JC0)E-CC*)E(IDDQC(METDE-T^[JC0)+@@@@@@G@@@M. WHETHER TRS )@@G@@HE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF @E@J@I. MARRT )@@G@@YLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. +@@@@[@J@M@J 0)^@)^@)^@)RU )@@G@@^[HCDMFDGCDIC))E[GE(H^[#D9HE[DD- EK)D9M^[[EL ^[HD9^DDADD#CDODDJD1N^[OD8)RV )@@G@@DDO 0)+@@@@@@E@@@M. MARYLAND PLUM COMPILER OR ARE MODIFICATIONS TRW )@@G@@O IT. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @G@J@I. 3. RX )@@G@@THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILER ITSELF, +@@@@[@L@M@JRY )@@G@@ 0)^@)^@)^@)^@3 0)E-CC(NC*)CTJD1^DDODDJD1N^[JD1GFC)CDKE[GFC)E-J^[OD[ ^[KRZ )@@G@@D-PD*)CTJD(KDDGC(M^[DE-NC(GC0?+@@@@@@G@@@M. 3. THESE CONDITIONS OSA )@@G@@NLY APPLY TO THE PLUM COMPILER ITSELF, @F@J@I. AND ARE NOT MEANT TOSB )@@G@@ APPLY TO ANY PROGRAM WRITTEN USING PLUM. +@@@@[@L@M@J 0)^@)CDIC))CDMC*)SC )@@G@@D1JE))D( CDIE))E-J^[[E[KD-T^[OD8)CDIFC)E[MD9BEL[D*)E9MDDOE- D0)E(NDDIC8)SD )@@G@@E[GE(H 0)^@)+@@@@@@F@@@M. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRSE )@@G@@ITTEN USING PLUM. @E@J@I. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW SF )@@G@@ANY USER TO +@@@@[@J@M@J 0)^@)E-CC*)E[PELKD9NC*)D9A^[OD[ ET ^[#D9IC-DE-DSG )@@G@@D9IES)DDN^[OD8)CDGD-JE8)CDIFC)E(NC(M^[OD8)+@@@@@@E@@@M. THE PURPOSE OFSH )@@G@@ THESE CONDITIONS IS TO ALLOW ANY USER TO @F@J@I. EXPERIMENT WITH THE SI )@@G@@COMPILER AS LONG AS THE RESULTING PRODUCT +@@@@[@L@M@J 0)^@)C(SE[ ELDD( SJ )@@G@@D1O^[RDDOD@)E-CC*)CTJD(KDDGC(M^[[ES)D-JD1B^[[ES)E-CC*)EL ETPD-ODDIC8)E[MSK )@@G@@D9^E(#E))^@)+@@@@@@F@@@M. EXPERIMENT WITH THE COMPILER AS LONG AS THE SL )@@G@@RESULTING PRODUCT @G@J@I. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT SM )@@G@@THE PRODUCT DEVELOPED +@@@@[@M@M@J 0)^@)DDN^[ID9O^[ND9GC))CDIC))CDN^[GSN )@@G@@D9IC8)CDN^[DE))DDN^[FD1JE9I^[OD[[E))E-CC*)E[MD9^E(#E))C- E1 D-JE[ C))^@)SO )@@G@@+@@@@@@G@@@M. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT SP )@@G@@DEVELOPED @#@J@I. FROM PLUM. +@@@@[@^@M@J 0)^@)C1MD9H^[KD-PD*,^@)SQ )@@G@@+@@@@@@#@@@M. FROM PLUM. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@MSR )@@G@@. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @[@J@I. +@@@@[SS )@@G@@@[@M@J 0)^@)+@@@@@@[@@@M. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@MST )@@G@@. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@^@M@J^@)^@)SU )@@G@@^@)^@)^[[F[M^))^@)+@@@@@@#@@@M AXR$ +@@@@[@^@M@J^@)^@)^@)^@)SV )@@G@@^[^CTGELB^@)+@@@@@@#@@@M DCLRG @#@J@I UNLIST +@@@@[SW )@@G@@@^@M@J^@)^@)^@)^@)^[PD1GDDNE))+@@@@@@#@@@M UNLIST @]@J@I@ADD PSX )@@G@@LTVDS +@@@@[@#@M@JC[[C-^^[KD-OE1^ES)+@@@@@@]@@@M@ADD PLTVDS @]@J@I@ADD PSY )@@G@@LSAW +@@@@[@#@M@JC[[C-^^[KD-NCDR^@)+@@@@@@]@@@M@ADD PLSAW @#@J@I SZ )@@G@@ LIST +@@@@[@^@M@J^@)^@)^@)^@)^[GDDNE))^@)+@@@@@@#@@@M LISTA )@@G@@T @#@J@I PLWORD +@@@@[@^@M@J^@)^@)^@)^@)^[KD-RD9MC))+@@@@@TB )@@G@@@#@@@M PLWORD @#@J@I PLAC +@@@@[@^@M@J^@)^@)^@)^@)TC )@@G@@^[KD-[CS)^@)+@@@@@@#@@@M PLAC @#@J@I PLSD +@@@@[TD )@@G@@@^@M@J^@)^@)^@)^@)^[KD-NC))^@)+@@@@@@#@@@M PLSD @#@J@I TE )@@G@@ PLSYDS +@@@@[@^@M@J^@)^@)^@)^@)^[KD-NFD^ES)+@@@@@@#@@@M PLSTF )@@G@@YDS @#@J@ISYON CSECT 3.+@@@@[@ @M@JETTD9I^@)^@)^[#ET CTO^@)AS,^@)TG )@@G@@+@@@@@@#@@@MSYON CSECT 3.@ @J@I/. SIGNAL STATEMENT +@@@@[TH )@@G@@@B@M@J 8,^@)^@)^@)^[NDDBD1[D))ETOCDOC(HC(IE))^@)+@@@@@@ @@@M/. SIGTI )@@G@@NAL STATEMENT @#@J@ISASIGN* LLOC . +@@@@[@^@M@JET[ETDC9I K)^[GD-JTJ )@@G@@CS) 0)+@@@@@@#@@@MSASIGN* LLOC . @C@J@I LINK SYFCND . TK )@@G@@ GET CONDITION+@@@@[@G@M@J^@)^@)^@)^@)^[GDDIDS)^[NFDACTIC)) 0)^@)^@)TL )@@G@@^@)^@)^@)^[BC(O^[#D9IC-DE-DD9I+@@@@@@C@@@M LINK SYFCND . TM )@@G@@ GET CONDITION@B@J@I GOTO SYSGN2 . ->OOPS!+@@@@[TN )@@G@@@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NFDNC9IAK) 0)^@)^@)^@)^@)^@)^@!B1JD9KES-^@)TO )@@G@@+@@@@@@B@@@M GOTO SYSGN2 . ->OOPS!@E@J@I GOTTP )@@G@@O SSTEND . ->BACK TO DRIVER, DONE +@@@@[@J@M@J^@)^@)^@)^@)TQ )@@G@@^[BD9OD8)^[NETOC(IC)) 0)^@)^@)^@)^@)^@)^@!B1]CD#DS)E-J^[^ELDE1 EK?^[^D9ITR )@@G@@C*)^@)+@@@@@@E@@@M GOTO SSTEND . ->BACK TO DRIVER, DTS )@@G@@ONE @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @#@J@ISYSGN2 LABTT )@@G@@EL . +@@@@[@^@M@JETTETBD02^@)^[GCD]C(G^@,+@@@@@@#@@@MSYSGN2 LABEL . TU )@@G@@@D@J@I ADD A13,1,I . SET 1 CONDITION +@@@@[@H@M@JTV )@@G@@^@)^@)^@)^@)^[[C-^^@)^[[AC3 )1 -D^@,^@)^@)^@)^@)^@)^[NC(O^@1^[#D9IC-DE-DTW )@@G@@D9I^@)+@@@@@@D@@@M ADD A13,1,I . SET 1 CONDITION TX )@@G@@@ @J@I SAERR SAEMSG,SAE . +@@@@[@B@M@J^@)^@)^@)^@)^[NCD ELM^[NTY )@@G@@CD D(NC8?ET[C*) 0)+@@@@@@ @@@M SAERR SAEMSG,SAE . @E@J@I TZ )@@G@@ SUPSYM ACCDER . USE ERROR AS DEFAULT +@@@@[@I@M@J^@)^@)UA )@@G@@^@)^@)^[NE(KETTD*)CD#CT^C(M^@,^@)^@)^@)^@)^@)^[PET ^[ ELMD9M^[[ES)C- C1[UB )@@G@@E(GE))+@@@@@@E@@@M SUPSYM ACCDER . USE ERROR AS DEFAULUC )@@G@@T @C@J@I GOTO SSTEND . -> NEXT STMT +@@@@[@G@M@JUD )@@G@@^@)^@)^@)^@)^[BD9OD8)^[NETOC(IC)) 0)^@)^@)^@)^@)^@)^@!B0)D1 F[O^[NE-HE))UE )@@G@@+@@@@@@C@@@M GOTO SSTEND . -> NEXT STMT @[@J@I. UF )@@G@@+@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@UG )@@G@@@[@@@M. @ @J@I/. REVERT STATEMENT +@@@@[@B@M@J 8,^@)^@)^@)UH )@@G@@^[MC(QC(ME))ETOCDOC(HC(IE))^@)+@@@@@@ @@@M/. REVERT STATEMENT UI )@@G@@@#@J@ISARVRT* LLOC . +@@@@[@^@M@JET[ELQELO K)^[GD-JCS) 0)+@@@@@@#@@@MUJ )@@G@@SARVRT* LLOC . @#@J@ISYRVR4 LABEL . +@@@@[@^@M@JETTELQEK4^@)^[GCD]UK )@@G@@C(G^@,+@@@@@@#@@@MSYRVR4 LABEL . @D@J@I LINK SYFCND . UL )@@G@@ GET FIRST CONDITION+@@@@[@I@M@J^@)^@)^@)^@)^[GDDIDS)^[NFDACTIC)) 0)UM )@@G@@^@)^@)^@)^@)^@)^[BC(O^[ADDMETO^[#D9IC-DE-DD9I^@)+@@@@@@D@@@M LINUN )@@G@@K SYFCND . GET FIRST CONDITION@I@J@I GOTO SYSGN2 . UO )@@G@@ ->OOPS . NO CONDITION - USE ERROR AS DEFAULT +@@@@[@O@M@JUP )@@G@@^@)^@)^@)^@)^[BD9OD8)^[NFDNC9IAK) 0)^@)^@)^@)^@)^@)^@!B1JD9KES) 0)D1J^[#UQ )@@G@@D9IC-DE-DD9I^@!^[PET ^[ ELMD9M^[[ES)C- C1[E(GE))+@@@@@@I@@@M GOTUR )@@G@@O SYSGN2 . ->OOPS . NO CONDITION - USE ERROR AS DEFAULT US )@@G@@@E@J@I BNAC ACCOMA,SSTEND . -> NO COMMA, END OF STMT +@@@@[UT )@@G@@@I@M@J^@)^@)^@)^@)^[]D1[CS)^[[CT#D9HCC?ETNE- D1^^@,^@!B0)D1J^[#D9HD([ ))UU )@@G@@C(IC))D9A^[NE-HE))+@@@@@@E@@@M BNAC ACCOMA,SSTEND . -> NO COMMAUV )@@G@@, END OF STMT @C@J@I LINK SASPCM . PUT COMMA UW )@@G@@+@@@@[@G@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDKE-#D*) 0)^@)^@)^@)^@)^@)^@)E[PE))UX )@@G@@CTJD(HCC)^@)+@@@@@@C@@@M LINK SAPTCM . PUT COMMA UY )@@G@@@D@J@I GOTO SYRVR4 . -> NEXT CONDITION +@@@@[@I@M@JUZ )@@G@@^@)^@)^@)^@)^[BD9OD8)^[NFDME1MA)) 0)^@)^@)^@)^@)^@)^@) *"^[IC(SE))CTJD1^VA )@@G@@DDODDJD0)^@)+@@@@@@D@@@M GOTO SYRVR4 . -> NEXT CONDVB )@@G@@ITION +@@@@[@A@M@J 8) 0)^@)^@)^[JD0)ETOCDOC(HC(IE))^@)+@@@@@@^@@@M/ . VC )@@G@@ ON STATEMENT +@@@@[@^@M@JET[D9IETO K)^[GCD]C(G^@,+@@@@@@#@@@MSAONSTVD )@@G@@* LABEL . +@@@@[@H@M@J^@)^@)^@)^@)^[DC0)^@)^@2 -JD0?C-NCDJD1]^[OD[ D0?VE )@@G@@ET[C-GE)) 0)D1J^[JD0)F@)D9I^@)+@@@@@@D@@@M IF 2,ON,DSAONB THEVF )@@G@@N,SADLT . NO ON X ON +@@@@[@J@M@J^@)^@)^@)^@)^[GD9[C))^[[B@?A@?DC) 0)VG )@@G@@^@)^@)^@)^@)^@)^[NC(O^[KD-[CT ^[AD9M^[]D-JCTF^[NC))^@)+@@@@@@E@@@M VH )@@G@@ LOAD A8,0,I . SET PLACE FOR BLOCK SD +@@@@[@^@M@J^@)^@)VI )@@G@@^@)^@)^[KE(OCS) 0)+@@@@@@#@@@M PUTC . +@@@@[@^@M@JETTD9IA@2^@)VJ )@@G@@^[GCD]C(G^@,+@@@@@@#@@@MSYON02 LABEL . +@@@@[@G@M@J^@)^@)^@)^@)^[GDDIVK )@@G@@DS)^[NFDACTIC)) 0)^@)^@)^@)^@)^@)^[BC(O^[#D9IC-DE-DD9I+@@@@@@C@@@M VL )@@G@@ LINK SYFCND . GET CONDITION+@@@@[@H@M@J^@)^@)^@)^@)^[BD9OVM )@@G@@D8)^[NFDJD00AS) 0)^@)^@)^@)^@)^@)^@!B1ID9IC*?^[PET ^[ ELMD9M+@@@@@@D@@@MVN )@@G@@ GOTO SYON03 . ->NONE, USE ERROR +@@@@[@G@M@J^@)^@)VO )@@G@@^@)^@)^[]D1[CS)^[[CT#D9HCC?ETTD9IA@1^@,^@!B1 D1^ ))D1J^[#D(HCC)^@)+@@@@@VP )@@G@@@C@@@M BNAC ACCOMA,SYON01 . ->END, NO CMMA +@@@@[@A@M@J^@)^@)VQ )@@G@@^@)^@)^[GDDIDS)^[NCDKE-#D*) 0)+@@@@@@^@@@M LINK SAPTCM . +@@@@[VR )@@G@@@E@M@J^@)^@)^@)^@)^[BD9OD8)^[NFDJD00AK) 0) *"D1 F[O^[#D9IC-DE-DD9I+@@@@@VS )@@G@@@B@@@M GOTO SYON02 . ->NEXT CONDITION +@@@@[@^@M@JETTD9IA@3^@)VT )@@G@@^[GCD]C(G^@,+@@@@@@#@@@MSYON03 LABEL . +@@@@[@I@M@J^@)^@)^@)^@)^[[C-^VU )@@G@@^@)^[[AC3 )1 -D^@,^@)^@)^@)^@)^@)^[[C-^^@1^[HD9MC*)CTJD1^DDODDJD0)+@@@@@VV )@@G@@@E@@@M ADD A13,1,I . ADD 1 MORE CONDITION +@@@@[VW )@@G@@@F@M@J^@)^@)^@)^@)^[NE(KETTD*)CD#CT^C(M^@,^@)^@)^@)^@)^@)^[NC(O^[ ELMD9MVX )@@G@@+@@@@@@C@@@M SUPSYM ACCDER . SET ERROR +@@@@[@B@M@JVY )@@G@@^@)^@)^@)^@)^[NCD ELM^[NCD D(JAC?ET[C*)^@)+@@@@@@ @@@M SAERR SAEVZ )@@G@@MO1,SAE +@@@@[@H@M@K^@)^@)^@)^@)^[GDDIDS)^[GF[BC(O^@) 0)^@)^@)^@)^@)WA )@@G@@^@)^[BC(O^[IC(SE))E-JDT D0)^@)+@@@@@@D@@@M LINK LXGET . WB )@@G@@ GET NEXT TOKEN +@@@@[@^@M@JETTD9IA@1^@)^[GCD]C(G^@,+@@@@@@#@@@MWC )@@G@@SYON01 LABEL . +@@@@[@F@M@J^@)^@)^@)^@)^[]D1[CS)^[[CTND1[E@?ETTD9IA@4WD )@@G@@^@,^@!B1ID9O^[ND1[E@)^@)+@@@@@@B@@@M BNAC ACSNAP,SYON04 . ->NOTWE )@@G@@ SNAP +@@@@[@H@M@J^@)^@)^@)^@)^[[C-^^@)^[[AC3 )0A)0A@?DC) 0)^@)^@)^@)^[NWF )@@G@@C(O^[ND1[E@)E[MC(NC(IE))+@@@@@@D@@@M ADD A13,0400,I . SWG )@@G@@ET SNAP PRESENT +@@@@[@A@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDKE-[CS) 0)+@@@@@WH )@@G@@@^@@@M LINK SAPTAC . +@@@@[@^@M@JETTD9IA@4^@)^[GCD]C(G^@,+@@@@@WI )@@G@@@#@@@MSYON04 LABEL . +@@@@[@G@M@J^@)^@)^@)^@)^[HD9QC*)^[^ET[D9ICK?AC?WJ )@@G@@DC) 0)^@)^@)^@)^[NC(O^[JD0)ETOD(O^@)+@@@@@@C@@@M MOVE DSAONB,1,WK )@@G@@I . SET ON STMT +@@@@[@J@M@J^@)^@)^@)^@)^[NE-JEL ^[SA8?C-NCDJCL#WL )@@G@@^@,^@)^@)^@)^@)^[NCDQC*)E[OEK)E-J^[[CTJD0)CL#D9^C*)^@)+@@@@@@E@@@M WM )@@G@@ STORE X7,DSAOBC . SAVE PTR TO ACON BCODE +@@@@[@E@M@J 0)^@)WN )@@G@@^@)^@)^[]CD#^@)^[[CTNFDNE)?ETNE- D02^@,^@!B0)ETTETOC(H+@@@@@@B@@@M. WO )@@G@@ BAC ACSYST,SSTEN2 . -> SYSTEM +@@@@[@H@M@J^@)^@)^@)^@)^[OD1 -P^[[WP )@@G@@AC4 -[CTNFDNE)!A@4A@0A@0A@? LSA@) 0)C1PC-BC*)CD]D9QC*)+@@@@@@D@@@M WQ )@@G@@ TNE,U A14,ACSYST-0400000,*X0 . FUDGE ABOVE +@@@@[@A@M@J^@)^@)^@)^@)WR )@@G@@^[E^@)^@)^[NETOC(IAK) 0)+@@@@@@^@@@M J SSTEN2 . +@@@@[@B@M@JWS )@@G@@ 0)^@)^@)^@)^@)C(IC))D9A^[[CLJE1 ^[AE(^C9 +@@@@@@ @@@M. END OF AWT )@@G@@BOVE FUDGE +@@@@[@E@M@J^@)^@)^@)^@)^[]CD#^@)^[[CT]C9DD0?ETNE- D02^@,^@!WU )@@G@@B0)CLGD9#DS)+@@@@@@B@@@M BAC ACBGIN,SSTEN2 . -> BLOCK +@@@@[WV )@@G@@@L@M@J 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[NDDHE(GCDOC*)WW )@@G@@CL C9DD0) *)C(IC))CDMD9PD1^^[NE-HE))+@@@@@@G@@@M. WX )@@G@@ SIMULATE BEGIN - END AROUND STMT +@@@@[@H@M@J^@)^@)^@)^@)WY )@@G@@^[GDDIDS)^[NCDNE- D0) 0)^@)^@)^@)^@)^@)^[ D1^^[#ELMC(IE))ETOD(O^@)+@@@@@WZ )@@G@@@D@@@M LINK SASTEN . END CRRENT STMT +@@@@[@F@M@JXA )@@G@@^@)^@)^@)^@)^[GDDIDS)^[NCDNE-NE*) 0)^@)^@)^@)^@)^@)^[IC(R^[NE-HE))+@@@@@XB )@@G@@@C@@@M LINK SASTSU . NEW STMT +@@@@[@A@M@J^@)^@)XC )@@G@@^@)^@)^[GDDIDS)^[NCD[D-BD0) 0)+@@@@@@^@@@M LINK SAALGN . +@@@@[XD )@@G@@@ @M@J^@)^@)^@)^@)^[BC(OE[G^[SA8) 0)+@@@@@@^@@@M GETPL X7 . XE )@@G@@+@@@@[@B@M@J^@)^@)^@)^@)^[NE(KETTD*)CD#CLBDDI 9DCS%DD#+@@@@@@ @@@M XF )@@G@@ SUPSYM ACBGIN/IC*IC +@@@@[@G@M@J^@)^@)^@)^@)^[GDDIDS)^[NCD]C9IAK) 0)XG )@@G@@^@)^@)^@)^@)^@)^[]C(BDDI^[NE-HE))^@)+@@@@@@C@@@M LINK SABGN2 . XH )@@G@@ BEGIN STMT +@@@@[@B@M@J^@)^@)^@)^@)^[HD9QC*)^[^ET[D9ICK?A)?XI )@@G@@DC) 0)+@@@@@@ @@@M MOVE DSAONB,4,I . +@@@@[@A@M@J^@)^@)^@)^@)XJ )@@G@@^[BD9OD8)^[NETOC(IAK)^@)+@@@@@@^@@@M GOTO SSTEN2 +@@@@[@^@M@JXK )@@G@@ 8) 0)^@)^@)^[NFDNE- D*)+@@@@@@#@@@M/ . SYSTEM +@@@@[@^@M@JET[ETTXL )@@G@@ETO K)^[GCD]C(G^@,+@@@@@@#@@@MSASYST* LABEL . +@@@@[@J@M@J^@)^@)^@)^@)XM )@@G@@^[DC0)^@)^@1 -JC1A -^ET[D9ICK)E-CC(I -NCD^D-O^@,^@!B1ID9O^[[C1OC(M^[JD0)XN )@@G@@ETOD(O+@@@@@@E@@@M IF 1,OFF,DSAONB THEN,SADLT . ->NOT AFTER OXO )@@G@@N STMT+@@@@[@G@M@J^@)^@)^@)^@)^[GD9[C))^[SAS?C-NCDJCL#^@,^@)^@)^@)^@)^[KXP )@@G@@E-M^[OD8)CD#D9I^@)+@@@@@@C@@@M LOAD X3,DSAOBC . PTR TO XQ )@@G@@ACON +@@@@[@A@M@J^@)^@)^@)^@)^[PETDD1B^[RD9MC)?F@3^@)+@@@@@@^@@@M XR )@@G@@ USING WORD,X3 +@@@@[@C@M@J^@)^@)^@)^@)^[NC(O^@)^@0AK0A@?D9I -RADLAK)XS )@@G@@ 0)^@)+@@@@@@ @@@M SET 0200,ON,W1Q2 . +@@@@[@B@M@J^@)^@)^@)^@)XT )@@G@@^[HD9QC*)^[^ET[D9ICK?A@?DC) 0)+@@@@@@ @@@M MOVE DSAONB,0,I . XU )@@G@@+@@@@[@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NETOC(IC)) 0)^@)^@)^@)^@)^@)^@!B1IC(SXV )@@G@@E))^@)+@@@@@@B@@@M GOTO SSTEND . ->NEXT @B@J@I/. XW )@@G@@ FIND CONDITION - PUT IN BCODE +@@@@[@E@M@J 8,^@)^@)^@)^[ADDIC))CTJXX )@@G@@D1^DDODDJD0) *)E[PE))DDI^[]CTJC- ^@)+@@@@@@B@@@M/. FIND CONDITION XY )@@G@@- PUT IN BCODE @#@J@ISYFCND LOCAL . +@@@@[@^@M@JETTC1#D1^^@)^[GD9#XZ )@@G@@CDG^@,+@@@@@@#@@@MSYFCND LOCAL . @D@J@I LOAD A8,DLXIC . YA )@@G@@ GET ACODE TYPE +@@@@[@H@M@J^@)^@)^@)^@)^[GD9[C))^[[B@?C-GF[DCS)YB )@@G@@ 0)^@)^@)^@)^@)^[BC(O^[[CTJC- ^[OFDKC*)^@)+@@@@@@D@@@M LOAD A8,YC )@@G@@DLXIC . GET ACODE TYPE @E@J@I IF A8,EQ,ACCDSI/ICYD )@@G@@,I THEN,SYFCN1 . ->ACODE TYPE +@@@@[@J@M@J^@)^@)^@)^@)^[DC0)^@)^[[B@?C(LYE )@@G@@ -[CT#C-NDC\DD# -D^[OD[ D0?ETTC1#D01^@,^@!B1[CTJC- ^[OFDKC*)+@@@@@@E@@@MYF )@@G@@ IF A8,EQ,ACCDSI/IC,I THEN,SYFCN1 . ->ACODE TYPE @F@J@I YG )@@G@@ IF A8,EQ,ACCNSI/IC,I THEN,SYFCN2 . ->NO-ACODE TYPE +@@@@[@K@M@JYH )@@G@@^@)^@)^@)^@)^[DC0)^@)^[[B@?C(L -[CT#D1NDC\DD# -D^[OD[ D0?ETTC1#D02^@,^@!YI )@@G@@B1ID8!CD#D9^C*)E-TE[ ^@)+@@@@@@F@@@M IF A8,EQ,ACCNSI/IC,I THEYJ )@@G@@N,SYFCN2 . ->NO-ACODE TYPE @B@J@I BAC ACCHK,SYFCN3 . ->CHECYK )@@G@@K +@@@@[@E@M@J^@)^@)^@)^@)^[]CD#^@)^[[CT#D[F -NFDACTIAS) 0) *"CTCC(#YL )@@G@@DS)^@)+@@@@@@B@@@M BAC ACCHK,SYFCN3 . ->CHECK @B@J@I YM )@@G@@ BAC ACNCHK,SYFCN5 . -> NOCHECK +@@@@[@F@M@J^@)^@)^@)^@)^[]CD#^@)^[[YN )@@G@@CTICTCDS?ETTC1#D05^@,^@!B0)D1JCTCC(#DS)^@)+@@@@@@B@@@M BAC ACNYO )@@G@@CHK,SYFCN5 . -> NOCHECK +@@@@[@E@M@J^@)^@)^@)^@)^[]CD#^@)^[[CTICDHC*?ETTYP )@@G@@C1#D06^@,^@!B0)D1[D( ^@)+@@@@@@B@@@M BAC ACNAME,SYFCN6 . -> NAYQ )@@G@@ME @^@J@I JMP . ->OOPS +@@@@[@A@M@J^@)^@)^@)^@)^[ED(K^@,^@!YR )@@G@@B1JD9KES)^@)+@@@@@@^@@@M JMP . ->OOPS @[@J@I. +@@@@[@[@M@JYS )@@G@@ 0)^@)+@@@@@@[@@@M. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. YT )@@G@@@D@J@ISYFCN2 LABEL . DISABLED CONDITION +@@@@[@I@M@JYU )@@G@@ETTC1#D02^@)^[GCD]C(G^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^[^DDNCD]D- C))CTJD1^YV )@@G@@DDODDJD0)^@)+@@@@@@D@@@MSYFCN2 LABEL . DISABLED CONDYW )@@G@@ITION @F@J@I SUB A14,01000,I . CHANGE NO-X TO X CONDITIOYX )@@G@@N +@@@@[@K@M@J^@)^@)^@)^@)^[NE(]^@)^[[AC4 )0AC0A@0 -D^@,^@)^@)^@)^[#YY )@@G@@D[[D1BC*)D1J (S^[OD8)F@)CTJD1^DDODDJD0)^@)+@@@@@@F@@@M SUB A14YZ )@@G@@,01000,I . CHANGE NO-X TO X CONDITION @ @J@I SAERR SAEZA )@@G@@MSI,SAE . +@@@@[@B@M@J^@)^@)^@)^@)^[NCD ELM^[NCD D(NDC?ET[C*) 0)+@@@@@ZB )@@G@@@ @@@M SAERR SAEMSI,SAE . +@@@@[@A@M@J^@)^@)^@)^@)^[BD9OD8)^[NZC )@@G@@FDACTIAC) 0)+@@@@@@^@@@M GOTO SYFCN1 . +@@@@[@D@M@JETTC1#D06^@)ZD )@@G@@^[GCD]C(G^@,^@)^@)^@)^@)^@)^@)^@)^@)D1[D( +@@@@@@A@@@MSYFCN6 LABEL . ZE )@@G@@ NAME+@@@@[@C@M@J^@)^@)^@)^@)^[GD9[C))^[[AC4 -[CT#C-ICC?DC)ZF )@@G@@ 0)^@)+@@@@@@ @@@M LOAD A14,ACCDNA,I . +@@@@[@B@M@J^@)^@)^@)^@)ZG )@@G@@^[NE-JEL ^[[AC4 -^D-SCD#^@,^@)+@@@@@@ @@@M STORE A14,DLXAC . ZH )@@G@@@#@J@ISYFCN1 LABEL . +@@@@[@^@M@JETTC1#D01^@)^[GCD]C(G^@,+@@@@@@#@@@MZI )@@G@@SYFCN1 LABEL . @F@J@I LOAD A9,DLXIF . GET LOWER 9 BZJ )@@G@@ITS OF CONDITION +@@@@[@K@M@J^@)^@)^@)^@)^[GD9[C))^[[BC?C-GF[DC0) 0)^@)ZK )@@G@@^@)^@)^@)^[BC(O^[GD9RC(M^@9^[]DDOES)D9A^[#D9IC-DE-DD9I+@@@@@@F@@@M ZL )@@G@@ LOAD A9,DLXIF . GET LOWER 9 BITS OF CONDITION @C@J@I ZM )@@G@@ LINK SAPTAC . PUT IN B CODE@G@J@I IF A9,LT,(ACZN )@@G@@CDCD-ACCDSI),I THEN,SYFCNX . -> NO PARM FOR COND+@@@@[@M@M@J^@)^@)^@)^@)ZO )@@G@@^[DC0)^@)^[[BC?D-O -[CT#C-#C)!CD#CT^ETD -D^[OD[ D0?ETTC1#D1T^@,^@!B0)D1JZP )@@G@@^[KCDMD*)C1JEK)CTJD1^^@)+@@@@@@G@@@M IF A9,LT,ACCDCD-ACCDSI,IZQ )@@G@@ THEN,SYFCNY . -> NO PARM FOR COND +@@@@[@F@M@J^@)^@)^@)^@)^[GDDIDS)^[NZR )@@G@@CDKE-[CS) 0)^@)^@)^@)^@)^@)^[KE(O^[[CTJC- +@@@@@@C@@@M LINK SAPZS )@@G@@TAC . PUT ACODE @E@J@I PEXPR ICDYYY . TZT )@@G@@EMP TEMP TEMP TEMP TEMP +@@@@[@J@M@J^@)^@)^@)^@)^[KC(SE[M^[DCT^FDTFC) 0)ZU )@@G@@^@)^@)^@)^@)^@)^[OC(HE@)E- D(K^[OC(HE@)E- D(K^[OC(HE@)+@@@@@@E@@@M ZV )@@G@@ PEXPR ICDYYY . TEMP TEMP TEMP TEMP TEMP @H@J@I. ZW )@@G@@ FIX ICDYYY ---------ICDYYY ----------- +@@@@[ZX )@@G@@@N@M@J 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[ADDS^[DCT^FDTZY )@@G@@FC) *! *! *! *! (DCT^FDTFC) *! *! *! *! *! *)^@)+@@@@@@H@@@M. ZZ )@@G@@ FIX ICDYYY ---------ICDYYY ----------- @B@J@IAA )@@G@@ GOTO SYFCN4 . OOPS +@@@@[@E@L@J^@)^@)^@)^@)^[BD9OAB )@@G@@D8)^[NFDACTIA)) 0)^@)^@)^@)^@)^@)^[JD9KES)@E@M@L^@)^@)^@)^@)^[BD9OD8)^[NAC )@@G@@FDACT^AC) 0)^@)^@)^@)^@)^@)^[JD9KES)+@@@@@@B@@@M GOTO SYFCD1 . AD )@@G@@ OOPS +@@@@[@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NFDACTIF@) 0)^@)^@)AE )@@G@@^@)^@)^@)^@)EL E-PELI^@)+@@@@@@B@@@M GOTO SYFCNX . AF )@@G@@RETURN+@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@^@M@JETTC1#D1T^@)^[GCD]AG )@@G@@C(G^@,+@@@@@@#@@@MSYFCNY LABEL . +@@@@[@A@M@J^@)^@)^@)^@)^[GDDIDS)^[NAH )@@G@@CDKE-[CS) 0)+@@@@@@^@@@M LINK SAPTAC . @G@J@ISYFCNX LABEL . AI )@@G@@ VALID RETURN +@@@@[@L@M@JETTC1#AJ )@@G@@D1S^@)^[GCD]C(G^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AK )@@G@@^@)^[QCDGDD^^[MC(OE(MD0)+@@@@@@G@@@MSYFCNX LABEL . AL )@@G@@ VALID RETURN @D@J@I ADD A13,1,I . AM )@@G@@ ONE MORE PREFIX +@@@@[@H@M@J^@)^@)^@)^@)^[[C-^^@)^[[AC3 )1 -D^@,AN )@@G@@^@)^@)^@)^@)^@)^[JD1 ^[HD9MC*)E[MC(ADDS^@)+@@@@@@D@@@M ADD A13AO )@@G@@,1,I . ONE MORE PREFIX @#@J@I JMP 1 .+@@@@[@ @M@JAP )@@G@@^@)^@)^@)^@)^[ED(K^@)^@1^@,^@)+@@@@@@#@@@M JMP 1 .@[@J@I. AQ )@@G@@+@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@AR )@@G@@@[@@@M. +@@@@[@H@M@LIT9G1IK) [>J[0IK(^@)+@@@@@@D@@@MSYFCD1 LABEL . AT )@@G@@ IMPROPER (EXPR) +@@@@[@B@M@L^@)^@)^@)^@)^[3GD>IL2^@)IT-G(!GT= -3AU )@@G@@GD>^@)+@@@@@@ @@@M SAERR SAEMCD,SAE @#@J@ISYFCN4 LABEL . AV )@@G@@+@@@@[@^@M@JETTC1#D04^@)^[GCD]C(G^@,+@@@@@@#@@@MSYFCN4 LABEL . @G@J@IAW )@@G@@ LINK EABK1 . DELETE TYPE OF COND - NO EXPR FOUND AX )@@G@@+@@@@[@M@M@J^@)^@)^@)^@)^[GDDIDS)^[ CD]DS1^@,^@)^@)^@)^@)^@)^@)^[^C(GC(OAY )@@G@@C*)E-TE[ ^[JC0)CTJD1^^@!^[ID8)C(SE[M^[AD9PD1^^@)+@@@@@@G@@@M LINAZ )@@G@@K EABK1 . DELETE TYPE OF COND - NO EXPR FOUND @#@J@I BA )@@G@@ JMP . +@@@@[@^@M@J^@)^@)^@)^@)^[ED(K^@,^@)+@@@@@@#@@@M JMPBB )@@G@@ . @[@J@I. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. @#@J@ISYFCN5 LABBC )@@G@@EL . +@@@@[@^@M@JETTC1#D05^@)^[GCD]C(G^@,+@@@@@@#@@@MSYFCN5 LABEL . BD )@@G@@@E@J@I SUB A14,01000,I . CHANGE NOCHECK TO CHECK +@@@@[BE )@@G@@@J@M@J^@)^@)^@)^@)^[NE(]^@)^[[AC4 )0AC0A@0 -D^@,^@)^@)^@)^[#D[[D1BC*)D1JBF )@@G@@CTCC(#DS)E-J^[#D[ CTF^@)+@@@@@@E@@@M SUB A14,01000,I . CBG )@@G@@HANGE NOCHECK TO CHECK @ @J@I SAERR SAEMSI,SAE +@@@@[@B@M@JBH )@@G@@^@)^@)^@)^@)^[NCD ELM^[NCD D(NDC?ET[C*)^@)+@@@@@@ @@@M SAERR SAEBI )@@G@@MSI,SAE @#@J@ISYFCN3 LABEL . +@@@@[@^@M@JETTC1#D03^@)^[GCD]C(G^@,BJ )@@G@@+@@@@@@#@@@MSYFCN3 LABEL . +@@@@[@G@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDKE-[BK )@@G@@CS) 0)^@)^@)^@)E[PE))CTCC(#DS)DDI^[]CTJC- +@@@@@@C@@@M LINK SAPBL )@@G@@TAC . PUT CHECK IN BCODE@ @J@I LOAD A9,DLXIF . @^@J@IBM )@@G@@ LINK SAPTAC . @C@J@I LEXPR ICDYCY . CHECK LBN )@@G@@IST +@@@@[@G@M@J^@)^@)^@)^@)^[GC(SE[M^[DCT^FD#FC) 0)^@)^@)^@)^@)^@)^[#BO )@@G@@D[ CTF^[GDDNE))^@)+@@@@@@C@@@M LEXPR ICDYCY . CHECK LBP )@@G@@IST @B@J@I GOTO SYFCN4 . OOPS +@@@@[@E@M@J^@)^@)BQ )@@G@@^@)^@)^[BD9OD8)^[NFDACTIA)) 0)^@)^@)^@)^@)^@)^[JD9KES)+@@@@@@B@@@M BR )@@G@@ GOTO SYFCN4 . OOPS @C@J@I GOTO SYFCNX . BS )@@G@@ -> RETURN +@@@@[@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NFDACTIF@) 0)^@)^@)BT )@@G@@^@)^@)^@)^@!B0)EL E-PELI+@@@@@@C@@@M GOTO SYFCNX . -BU )@@G@@> RETURN +@@@@[@C@M@J 8,^@)^@)^@)^[#D9IC-DE-DD9I^[KEL C1DF@)C-MDDQC(MBV )@@G@@+@@@@@@A@@@M/. CONDITION PREFIX DRIVER +@@@@[@^@M@JET[CTOD-K K)BW )@@G@@^[GCD]C(G^@,+@@@@@@#@@@MSACTLP* LABEL . +@@@@[@K@M@J^@)^@)^@)^@)^[DC0)BX )@@G@@^@)^@0AC0A@?D9I -^ET[E[AF@)E-CC(I -NCD#E-^ES,^@!B1ID9O^[[D-GD9RC(^^[DC0)BY )@@G@@F-IF))+@@@@@@F@@@M IF 0100,ON,DSAPFX THEN,SACTDS. ->NOT ALLOWBZ )@@G@@ED IF \N\ +@@@@[@J@M@J^@)^@)^@)^@)^[GD9[C))^[[AC4 -[CT#D-KEK?DC) 0)^@)CA )@@G@@^@)^[NC(O^[#D9IC-DE-DD9I^[GC(AE))E[[C(I^@)+@@@@@@E@@@M LOAD A14CB )@@G@@,ACCLPR,I . SET CONDITION LEFT PAEN +@@@@[@H@M@J^@)^@)^@)^@)^[GDDICC )@@G@@DS)^[NCDKE-[CS) 0)^@)^@)^@)^@)^@)^[KE(O^[DD1OD8)CL#D9^C*)^@)+@@@@@@D@@@MCD )@@G@@ LINK SAPTAC . PUT INTO BCODE +@@@@[@I@M@J^@)^@)CE )@@G@@^@)^@)^[HD9QC*)^[^ET[CT^D0?A@?DC) 0)^@)^@)^@)^[ID8)E[MC(ADDSC(N^[JD0)FD CF )@@G@@E))^@)+@@@@@@D@@@M MOVE DSACDN,0,I . NO PREFIXES ON YET CG )@@G@@+@@@@[@H@M@J^@)^@)^@)^@)^[HD9QC*)^[^ET[CT^C0?A@?DC) 0)^@)^@)^@)^[ID9IC*)CH )@@G@@D9AC0)C(DE-CC(M^@)+@@@@@@D@@@M MOVE DSACDF,0,I . NONE OFCI )@@G@@F EITHER @D@@@M MOVE DSATPG+FQ3-FH2,0,I . NO PREFIXES YET CJ )@@G@@+@@@@[@J@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDBCL#^@,^@)^@)^@)^@)^@)^@)^[NCDQC*)CK )@@G@@E[OEK)E-J^[AD-[C8)CLTE- ES)^@)+@@@@@@E@@@M LINK SAGBC . CL )@@G@@ SAVE PTR TO FLAG BYTES +@@@@[@A@M@J^@)^@)^@)^@)^[NE-JEL ^[[AS?C-NCM )@@G@@CDOE@1+@@@@@@^@@@M STORE A3,DSATP1+@@@@[@H@M@J^@)^@)^@)^@)^[GD9[CN )@@G@@C))^[[B@?A@?DC) 0)^@)^@)^@)^@)^@)^[NC(O^[KD-[CT ^[CD9GC- ELN+@@@@@@D@@@MCO )@@G@@ LOAD A8,0,I . SET PLACE HOLDERS +@@@@[@^@M@J^@)^@)CP )@@G@@^@)^@)^[KE(OCS) 0)+@@@@@@#@@@M PUTC . +@@@@[@^@M@J^@)^@)^@)^@)CQ )@@G@@^[KE(OCS) 0)+@@@@@@#@@@M PUTC . +@@@@[@^@M@JET[CTKF@6^@)^[GCD]CR )@@G@@C(G^@,+@@@@@@#@@@MSACPX6 LABEL . +@@@@[@H@M@J^@)^@)^@)^@)^[GDDIDS)^[NCS )@@G@@CD#C)) 0)^@)^@)^@)^@)^@)^@)^[BC(O^[#D9IC-DE-DD9IES)^@)+@@@@@@D@@@M CT )@@G@@ LINK SACD . GET CONDITIONS +@@@@[@F@M@J^@)^@)^@)^@)CU )@@G@@^[BD9OD8)^[NCD#E@2A))^@)^@)^@)^@)^@)^@)^@,^@!B0)C1[DDG+@@@@@@C@@@M CV )@@G@@ GOTO SACP24 . -> FAIL +@@@@[@H@M@J^@)^@)^@)^@)^[HD9QCW )@@G@@C*)^[^ET[E-KC8:C1LAS!C1CAK?AC?DC) 0)^@)^[NE(#CT ETN^[DD1^ 0)+@@@@@@D@@@MCX )@@G@@ MOVE DSATPG+FQ3-FH2,1,I . SUCCESS IND. +@@@@[@H@M@J^@)^@)CY )@@G@@^@)^@)^[]CD#^@)^[[CTME[[EK?ET[CTKAC2^@,^@)^@)^@!B0)D1 F[O^[NFDH^@.^@$ C$CZ )@@G@@+@@@@@@D@@@M BAC ACRPAR,SACP12 . -> NEXT SYM = ')' +@@@@[DA )@@G@@@H@M@J^@)^@)^@)^@)^[]CD#^@)^[[CT#D9GD0?ET[CTKAC2^@,^@)^@)^@!B0)D1 F[O^[NDB )@@G@@FDH^@.^@$BK$+@@@@@@D@@@M BAC ACCOLN,SACP12 . -> NEXT SYM =DC )@@G@@ ':' +@@@@[@H@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDBCL#^@,^@)^@)^@)^@)^@)^@)^[NDD )@@G@@CDQC*)CL#D9^C*)E[JES)^@)+@@@@@@D@@@M LINK SAGBC . SDE )@@G@@AVE BCODE POS +@@@@[@B@M@J^@)^@)^@)^@)^[NE-JEL ^[[AS?C-NCDOE@3^@,^@)DF )@@G@@+@@@@@@ @@@M STORE A3,DSATP3 . +@@@@[@F@M@J^@)^@)^@)^@)^[GDDIDG )@@G@@DS)^[NCDKE-#D*) 0)^@)^@)^@)^@)^@)^[KE(O^[#D9HD([+@@@@@@C@@@M LINDH )@@G@@K SAPTCM . PUT COMMA +@@@@[@G@M@J^@)^@)^@)^@)^[BD9OD8)^[NDI )@@G@@CD#E[SA0) 0)^@)^@)^@)^@)^@)^@!B0)D1 F[O^[#D9HD([+@@@@@@C@@@M GOTDJ )@@G@@O SACPX6 . -> NEXT COMMA+@@@@[@^@M@JET[CTKAC2^@)^[GCD]C(G^@,DK )@@G@@+@@@@@@#@@@MSACP12 LABEL . +@@@@[@F@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDNE[MDL )@@G@@E@) 0)^@)^@)^@)^@)^@)^[KE(O^@$ C$^@)+@@@@@@B@@@M LINK SASPRP . DM )@@G@@ PUT ')'+@@@@[@I@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDBCL#^@,^@)^@)^@)DN )@@G@@^@)^@)^@)^[NCDQC*)CTPELMC(IE))D-JCT[E-DD9I+@@@@@@E@@@M LINK SAGDO )@@G@@BC . SAVE CURRENT LOCATION +@@@@[@B@M@J^@)^@)^@)^@)^[NE-JDP )@@G@@EL ^[[AS?C-NCDOE@2^@,^@)+@@@@@@ @@@M STORE A3,DSATP2 . +@@@@[DQ )@@G@@@K@M@J^@)^@)^@)^@)^[GD9[C))^[[AS?C-NCDOE@1^@,^@)^@)^@)^@)^[NC(O^[KE-M^[ODR )@@G@@D8)C1GCDBES)D9I^[[D1^^[JC1A^@)+@@@@@@F@@@M LOAD A3,DSATP1 . DS )@@G@@ SET PTR TO FLAGS ON AND OFF +@@@@[@A@M@J^@)^@)^@)^@)^[GDDIDS)^[NDT )@@G@@CDBET]CS) 0)+@@@@@@^@@@M LINK SAGSBC . +@@@@[@B@M@J^@)^@)^@)^@)DU )@@G@@^[GD9[C))^[[B@?C-NCD#C-I^@,^@)+@@@@@@ @@@M LOAD A8,DSACDN . DV )@@G@@+@@@@[@L@M@J^@)^@)^@)^@)^[KE(OCS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[ D1[CLGDW )@@G@@C(^^[KEL C1DF[ C))C1JD-GD9RDDIC8)CD#CTGE[M+@@@@@@G@@@M PUTC . DX )@@G@@ ENABLED PREFIXED FOLLOWING ACCLPR +@@@@[@H@M@J^@)^@)DY )@@G@@^@)^@)^[GD9[C))^[[B@?C-NCD#C-A^@,^@)^@)^@)^@)^[^DDNCD]D- C))E[MC(ADDSC(NDZ )@@G@@+@@@@@@D@@@M LOAD A8,DSACDF . DISABLED PREFIXES +@@@@[EA )@@G@@@^@M@J^@)^@)^@)^@)^[KE(OCS) 0)+@@@@@@#@@@M PUTC . +@@@@[@J@M@JEB )@@G@@^@)^@)^@)^@)^[GD9[C))^[[AS?C-NCDOE@2^@,^@)^@)^@)^@)^[MC(NC(O^[#E(MEL D1OEC )@@G@@^[KE(OCS)E[OEK)^@)+@@@@@@E@@@M LOAD A3,DSATP2 . RESET CED )@@G@@URRENT PUTC PTR +@@@@[@A@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDBET]CS) 0)+@@@@@EE )@@G@@@^@@@M LINK SAGSBC . +@@@@[@H@M@J^@)^@)^@)^@)^[DC0)^@)^@0A)0 -JEF )@@G@@D0?C-NCDKC1S^[OD[ D0?ET[C(]A@2^@,^@!B0)C(MELJEK)+@@@@@@D@@@M IF EG )@@G@@ 040,ON,DSAPFX THEN,SAEB02 . -> ERROR +@@@@[@I@M@J^@)^@)^@)^@)^[BD9OEH )@@G@@D8)^[NCDGCK0A0) 0)^@)^@)^@)^@)^@)^@!B0)E[PE))^8;^8)DDI^[]^[#D9^C*)+@@@@@EI )@@G@@@E@@@M GOTO SALB06 . -> PUT ';' IN B CODE +@@@@[EJ )@@G@@@^@M@JET[CTKAK4^@)^[GCD]C(G^@,+@@@@@@#@@@MSACP24 LABEL . +@@@@[@I@M@JEK )@@G@@^@)^@)^@)^@)^[]D1DD1^^[^ET[E-KC8:C1LAS!C1CAK?ET[CTICTK^@,^@!B0)C- D- E- EL )@@G@@^[KEL C1DF@)+@@@@@@E@@@M BNIND DSATPG+FQ3-FH2,SACNCP . -> DELETEEM )@@G@@ PREFIX +@@@@[@B@M@J^@)^@)^@)^@)^[GD9[C))^[[AS?C-NCDOE@3^@,^@)+@@@@@EN )@@G@@@ @@@M LOAD A3,DSATP3 . +@@@@[@A@M@J^@)^@)^@)^@)^[GDDIDS)^[NEO )@@G@@CDBET]CS) 0)+@@@@@@^@@@M LINK SAGSBC . +@@@@[@A@M@J^@)^@)^@)^@)EP )@@G@@^[BD9OD8)^[NCD#E@1AK) 0)+@@@@@@^@@@M GOTO SACP12 . +@@@@[@[@M@JEQ )@@G@@ 0)^@)+@@@@@@[@@@M. +@@@@[@F@M@J 0)^@)^@)^@)^[NCD#C))^[#D[ CTF^[JEK)ER )@@G@@D1J^[#D[ CTF^[KEL C1DF[ ES)^@)+@@@@@@B@@@M. SACD CHECK OR NO CHEES )@@G@@CK PREFIXES +@@@@[@^@M@JET[CT^^@)^@)^[GD9#CDG^@,+@@@@@@#@@@MSACD LOCET )@@G@@AL . +@@@@[@J@M@J^@)^@)^@)^@)^[GD9[C))^[[B@?C-GF[DCS) 0)^@)^@)^@)^@)^[NEU )@@G@@C( ^[DC0)CTJD1^DDODDJD0)E[MC(ADDS^@)+@@@@@@E@@@M LOAD A8,DLXIC EV )@@G@@. SEE IF CONDITION PREFIX +@@@@[@J@M@J^@)^@)^@)^@)^[DC0)^@)^[[EW )@@G@@B@?C(L -[CT#C-NDC\DD# -D^[OD[ D0?ETTCT^D9I^@,^@!B0)E[MC(ADDS^[JD0)+@@@@@EX )@@G@@@E@@@M IF A8,EQ,ACCDSI/IC,I THEN,SYCDON . -> PREFIX ON +@@@@[EY )@@G@@@J@M@J^@)^@)^@)^@)^[DC0)^@)^[[B@?C(L -[CT#D1NDC\DD# -D^[OD[ D0?ETTCT^D9AEZ )@@G@@^@,^@!B0)E[MC(ADDS^[JC1A+@@@@@@E@@@M IF A8,EQ,ACCNSI/IC,I THEFA )@@G@@N,SYCDOF . -> PREFIX OFF+@@@@[@F@M@J^@)^@)^@)^@)^[]CD#^@)^[[CT#D[F -NCD#FB )@@G@@C)0AC) 0)^@)^@)^@!B0)CTCC(#DS)+@@@@@@C@@@M BAC ACCHK,SACD01 . FC )@@G@@ -> CHECK +@@@@[@G@M@J^@)^@)^@)^@)^[]CD#^@)^[[CTICTCDS?ET[CT^A@1FD )@@G@@^@,^@)^@)^@!B0)D1JCTCC(#DS)^@)+@@@@@@C@@@M BAC ACNCHK,SACD01 .FE )@@G@@ -> NOCHECK +@@@@[@^@M@JET[CT^A@2^@)^[GCD]C(G^@,+@@@@@@#@@@MSACD02FF )@@G@@ LABEL . +@@@@[@K@M@J^@)^@)^@)^@)^[AD-DD1F^[SAC0 -NCD CK0A0) 0)^@)^@)FG )@@G@@^@)^@!B0)DDHE[MD9KC(M^[#D[ CTF^[#D9IC-DE-DD9I^@)+@@@@@@F@@@M FLIFH )@@G@@NK X10,SAEB06 . -> IMPROPER CHECK CONDITION +@@@@[@G@M@K^@)^@)FI )@@G@@^@)^@)^[GDDIDS)^[GF[BC(O^@,^@)^@)^@)^@)^@)^@)^[DC9ID9MC*)E-JDT D0)+@@@@@FJ )@@G@@@C@@@M LINK LXGET . IGNORE TOKEN +@@@@[@C@M@J^@)^@)FK )@@G@@^@)^@)^[ED(K^@,^@!B0)C1[DDG^[MC(OE(MD0)^@)+@@@@@@ @@@M JMP . -> FL )@@G@@FAIL RETURN +@@@@[@^@M@JET[CT^A@1^@)^[GCD]C(G^@,+@@@@@@#@@@MSACD01 LABFM )@@G@@EL . +@@@@[@J@M@J^@)^@)^@)^@)^[GDDIDS)^[NCDKE-[CS) 0)^@)^@)^@)^@)^@)^[KFN )@@G@@E(O^[#D9IC-DE-DD9I^[DD1OD8)CK)CTJC- +@@@@@@E@@@M LINK SAPTAC . FO )@@G@@ PUT CONDITION INTO B CODE+@@@@[@G@M@J^@)^@)^@)^@)^[HD9QC*)^[^FP )@@G@@ET[C)?DD#C-TCTT -D^@,^@)^@)^@*CDIFC?CTCDS?CDIFC(+@@@@@@C@@@M MOVFQ )@@G@@E DSAD,ICDYCY,I . (ANY,CHK,ANY)+@@@@[@G@M@J^@)^@)^@)^@)^[GDDIDS)^[NFR )@@G@@CD]ET^CS) 0)^@)^@)^@)^@)^@)^[BC(O^[]D-JCTF^[NC))+@@@@@@C@@@M LINFS )@@G@@K SABSDC . GET BLOCK SD +@@@@[@I@M@J^@)^@)^@)^@)^[HD9QC*)^[^FT )@@G@@ET]DTNE)?C-NCLFET^^@,^@)^@)^[NCDQC*)D9TE- EK)CLGD9#DS)ET^^@)+@@@@@@D@@@MFU )@@G@@ MOVE DSBKST,DSBKSD . SAVE OYTER BLOCK SD+@@@@[@B@M@J^@)^@)FV )@@G@@^@)^@)^[NE-JEL ^[SAS?C-NCLFET^^@,^@)+@@@@@@ @@@M STORE X3,DSBKSDFW )@@G@@ . +@@@@[@K@M@J^@)^@)^@)^@)^[DC0)^@)^[^ET[C-]D0?D1UC(MD8)E-CC(I -NCD#FX )@@G@@C)1AK) 0) *"^[NE-DD-G^[]D-JCTF^[UC(MD8)^@)+@@@@@@F@@@M IF DSAFY )@@G@@DBN,NZERO THEN,SACD12 . -> STILL BLOCK ZERO +@@@@[@I@M@J^@)^@)^@)^@)FZ )@@G@@^[NE-JEL ^[SAS?C-NCD]ADN^@,^@)^@)^@)^@)^[NC(O^[]D-JCTF^@1^[DD0)ETODS)^@)GA )@@G@@+@@@@@@D@@@M STORE X3,DSAB1S . SET BLOCK 1 IN STK +@@@@[GB )@@G@@@^@M@JET[CT^AC2^@)^[GCD]C(G^@,+@@@@@@#@@@MSACD12 LABEL . +@@@@[@H@M@JGC )@@G@@^@)^@)^@)^@)^[GDDIDS)^[ CDGC(SE@) 0)^@)^@)^@)^@)^@)^[BC(O^@*C(SE[M - F[KGD )@@G@@EK(^@)+@@@@@@D@@@M LINK EALEXP . GET (EXPR,EXPR) GE )@@G@@+@@@@[@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NCD#C)7AC) 0)^@)^@)^@)^@)^@)^@!B0)C1[GF )@@G@@DDG^@)+@@@@@@B@@@M GOTO SACD71 . -> FAIL+@@@@[@A@M@JGG )@@G@@^@)^@)^@)^@)^[GDDIDS)^[NCD#DS7A*) 0)+@@@@@@^@@@M LINK SACK75 . GH )@@G@@+@@@@[@^@M@JET[CT^AC3^@)^[GCD]C(G^@,+@@@@@@#@@@MSACD13 LABEL . +@@@@[GI )@@G@@@H@M@J^@)^@)^@)^@)^[NC(O^@)^@0AK0A@?D9I -^ET[E[AF@) 0)^@)^[NC(O^[#D[ CTFGJ )@@G@@^[KEL C1DF@)+@@@@@@D@@@M SET 0200,ON,DSAPFX . SET CHECK PREGK )@@G@@FIX +@@@@[@F@M@J^@)^@)^@)^@)^[ED(K^@)^@1^@,^@)^@)^@)^@)^@)^@)^@)^@)^[MGL )@@G@@C(OE(MD0)^@)+@@@@@@B@@@M JMP 1 . RETURN +@@@@[GM )@@G@@@^@M@JET[CT^A81^@)^[GCD]C(G^@,+@@@@@@#@@@MSACD71 LABEL . +@@@@[@A@M@JGN )@@G@@^@)^@)^@)^@)^[GDDIDS)^[NCD#DS7A*) 0)+@@@@@@^@@@M LINK SACK75 . GO )@@G@@+@@@@[@H@M@J^@)^@)^@)^@)^[NCD ELM^[NCD D*0A8?ET[C*) 0)^@)^@)^@)^[DD(KELJGP )@@G@@E[ EK)CTCC(#DS)^@)+@@@@@@D@@@M SAERR SAEM07,SAE . IMPROPEGQ )@@G@@R CHECK +@@@@[@H@M@J^@)^@)^@)^@)^[GDDIDS)^[ CD]DS1^@,^@)^@)^@)^@)^@)GR )@@G@@^@)^[]CD#DTPE@)^9#D[ CTF^8)^@)+@@@@@@D@@@M LINK EABK1 . GS )@@G@@ BACKUP 'CHECK' +@@@@[@^@M@J^@)^@)^@)^@)^[ED(K^@,^@)+@@@@@@#@@@MGT )@@G@@ JMP . +@@@@[@^@M@JET[CTFA85 K)^[GD-JCS) 0)+@@@@@@#@@@MSACK75GU )@@G@@* LLOC . +@@@@[@J@M@J^@)^@)^@)^@)^[GD9[C))^[[A8?C-NCLFET^^@,^@)^@)^@)GV )@@G@@^@)^[MC(NE-JEL ^[JE(OC(M^[]D-JCTF^[NC))^@)+@@@@@@E@@@M LOAD A7,GW )@@G@@DSBKSD . RESTORE OUTER BLOCK SD +@@@@[@C@M@J^@)^@)^@)^@)^[HD9QGX )@@G@@C*)^[^ET]DTNC)?C-NCLFETO^@,^@)+@@@@@@ @@@M MOVE DSBKSD,DSBKST .GY )@@G@@+@@@@[@B@M@J^@)^@)^@)^@)^[NE-JEL ^[[A8?C-NCLFETO^@,^@)+@@@@@@ @@@M GZ )@@G@@ STORE A7,DSBKST . +@@@@[@^@M@J^@)^@)^@)^@)^[GDLHE@) 0)+@@@@@@#@@@MHA )@@G@@ LJMP . +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)HB )@@G@@+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@H@M@JETTCT^HC )@@G@@D9A^@)^[GCD]C(G^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^[OE(MD0)D9AC0)C1 CDOE(MC*)HD )@@G@@+@@@@@@D@@@MSYCDOF LABEL . TURN OFF FEATURE +@@@@[HE )@@G@@@K@M@J^@)^@)^@)^@)^[GDDIDS)^[NFD#C-OES) 0)^@)^@)^@)^@)^@)^[NC( ^[DC0)D9KHF )@@G@@E-DD9I^[[D-MC([C-T^[DD0)ETOD(O+@@@@@@F@@@M LINK SYCDTS . HG )@@G@@ SEE IF OPTION ALREADY IN STMT +@@@@[@G@M@J^@)^@)^@)^@)^[BD9OD8)^[NHH )@@G@@FD#C- EK) 0)^@)^@)^@)^@)^@)^@!B1TE(K^@!^[ ELMD9M+@@@@@@C@@@M GOTHI )@@G@@O SYCDER . ->YUP - ERROR+@@@@[@H@M@J^@)^@)^@)^@)^[GD9[C))^[[HJ )@@G@@AS?C-NCD#C-A^@,^@)^@)^@)^@)^[OE(MD0)D9KE-DD9I^[JC1A^@)+@@@@@@D@@@M HK )@@G@@ LOAD A3,DSACDF . TURN OPTION OFF +@@@@[@A@M@J^@)^@)^@)^@)HL )@@G@@^[JEK)^@)^[[AS?CC9^@,^@)+@@@@@@^@@@M OR A3,A9 . +@@@@[@B@M@JHM )@@G@@^@)^@)^@)^@)^[NE-JEL ^[[A)?C-NCD#C-A^@,^@)+@@@@@@ @@@M STORE A4,HN )@@G@@DSACDF . +@@@@[@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NCD#C)1AS) 0)^@)^@)^@)^@)HO )@@G@@^@)^[MC(OE(MD0)^@)+@@@@@@B@@@M GOTO SACD13 . RETURN HP )@@G@@+@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. HQ )@@G@@+@@@@[@H@M@JETTCT^D9I^@)^[GCD]C(G^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^[ D1[CLGHR )@@G@@C*)CTJD1^DDODDJD0)+@@@@@@D@@@MSYCDON LABEL . ENABLE HS )@@G@@CONDITION +@@@@[@M@M@J^@)^@)^@)^@)^[GD9[C))^[[AS?C-GF[DC0) 0)^@)^@)^@)HT )@@G@@^@)^[NC( ^[DC0)D9IC*)D9A^@9^[ D1[CLGDDIC8)CTJD1^DDODDJD1N^@)+@@@@@@G@@@MHU )@@G@@ LOAD A3,DLXIF . SEE IF ONE OF 9 ENABLING CONDITIONS HV )@@G@@+@@@@[@J@M@J^@)^@)^@)^@)^[DC0)^@)^[[AS?C9O -[CT#C-UC)!CD#CT^ETD -D^[OD[ HW )@@G@@D0?ETTCT^C(M^@,^@!B1JD9KES)^@)+@@@@@@E@@@M IF A3,GT,ACCDZD-ACHX )@@G@@CDSI,I THEN,SYCDER . ->OOPS +@@@@[@I@M@J^@)^@)^@)^@)^[GDDIDS)^[NFD#C-OHY )@@G@@ES) 0)^@)^@)^@)^@)^@)^[NC( ^[DC0)CDKE[ CDMC(^^[TC(O^@)+@@@@@@D@@@M HZ )@@G@@ LINK SYCDTS . SEE IF APPEARED YET+@@@@[@E@M@J^@)^@)^@)^@)IA )@@G@@^[BD9OD8)^[NFD#C- EK) 0) *"FDPE@) *)C(MELJEK)^@)+@@@@@@B@@@M GOTIB )@@G@@O SYCDER . ->YUP - ERROR +@@@@[@B@M@J^@)^@)^@)^@)^[GD9[C))^[[AS?C-NIC )@@G@@CD#C-I^@,^@)+@@@@@@ @@@M LOAD A3,DSACDN . +@@@@[@A@M@J^@)^@)ID )@@G@@^@)^@)^[JEK)^@)^[[AS?CC9^@,^@)+@@@@@@^@@@M OR A3,A9 . +@@@@[IE )@@G@@@B@M@J^@)^@)^@)^@)^[NE-JEL ^[[A)?C-NCD#C-I^@,^@)+@@@@@@ @@@M STOIF )@@G@@RE A4,DSACDN . +@@@@[@F@M@J^@)^@)^@)^@)^[BD9OD8)^[NCD#C)1AS) 0)^@)^@)IG )@@G@@^@)^@)^@)^@!B1MC(OE(MD0)+@@@@@@C@@@M GOTO SACD13 . -IH )@@G@@>RETURN +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@^@M@JETTCT^C(M^@)II )@@G@@^[GCD]C(G^@,+@@@@@@#@@@MSYCDER LABEL . +@@@@[@G@M@J^@)^@)^@)^@)^[NCD IJ )@@G@@ELM^[NCD D(KC*?ET[C*) 0)^@)^@)^@)^[KEL C1DF@)C(MELJEK)+@@@@@@C@@@M IK )@@G@@ SAERR SAEMPE,SAE . PREFIX ERROR +@@@@[@H@M@J^@)^@)^@)^@)^[ED(KIL )@@G@@^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@!B1 ELMD9M^[MC(OE(MD0)^@)+@@@@@@D@@@MIM )@@G@@ JMP . ->ERROR RETURN +@@@@[@[@M@J 0)^@)IN )@@G@@+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)IO )@@G@@+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@K@M@JETTCT^IP )@@G@@E-N^@)^[GD-JCS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[NC( ^[DC0)E[MC(ADDS^[[E[MIQ )@@G@@C([C-T^[DD0)ETOD(O+@@@@@@F@@@MSYCDTS LLOC . SEE IF IR )@@G@@PREFIX APREADY IN STMT +@@@@[@J@M@J^@)^@)^@)^@)^[GD9[C))^[SA*?C-GF[DC0)IS )@@G@@ 0)^@)^@)^@)^@)^[BC(O^[GD9R^[JEL^C(M^[KEL C1DF@)E-TE[ +@@@@@@E@@@M IT )@@G@@ LOAD X5,DLXIF . GET LOW ORDER PREFIX TYPE+@@@@[@I@M@J^@)^@)IU )@@G@@^@)^@)^[GD9[C))^[[BC?AC?DC) 0)^@)^@)^@)^@)^@)^[NC(O^[GD9R^[JEL^C(M^[JD1 IV )@@G@@^[]DDO+@@@@@@E@@@M LOAD A9,1,I . SET LOW ORDER ONE BIW )@@G@@IT +@@@@[@J@M@J^@)^@)^@)^@)^[ND-]^@)^[[BC?A@?F@5^@,^@)^@)^@)^@)^@)^[NIX )@@G@@CT[D- ^[OD8)E[MD9KC(M^[GD9#CDODDJD0)+@@@@@@E@@@M SLB A9,0,X5 .IY )@@G@@ SCALE TO PROPER LOCATION +@@@@[@B@M@J^@)^@)^@)^@)^[GD9[C))^[[IZ )@@G@@A8?C-NCD#C-I^@,^@)+@@@@@@ @@@M LOAD A7,DSACDN . +@@@@[@A@M@JJA )@@G@@^@)^@)^@)^@)^[[D1^^@)^[[A8?CC9^@,^@)+@@@@@@^@@@M AND A7,A9 . JB )@@G@@+@@@@[@H@M@J^@)^@)^@)^@)^[DC0)^@)^[[B@?D1 )0 -D^[OD[ D0?D-ED(K^@,^@!B1[JC )@@G@@D-MC([C-T^[JD0)^@)+@@@@@@D@@@M IF A8,NE,0,I THEN,LJMP . ->ALRJD )@@G@@EADY ON +@@@@[@B@M@J^@)^@)^@)^@)^[GD9[C))^[[A8?C-NCD#C-A^@,^@)+@@@@@JE )@@G@@@ @@@M LOAD A7,DSACDF . +@@@@[@ @M@J^@)^@)^@)^@)^[[D1^^@)^[[JF )@@G@@A8?CC9+@@@@@@^@@@M AND A7,A9 +@@@@[@H@M@J^@)^@)^@)^@)^[DC0)JG )@@G@@^@)^[[B@?D1 )0 -D^[OD[ D0?D-ED(K^@,^@!B1[D-MC([C-T^[JC1A^@)+@@@@@@D@@@MJH )@@G@@ IF A8,NE,0,I THEN,LJMP . ->ALREADY OFF +@@@@[@^@M@J^@)^@)JI )@@G@@^@)^@)^[GD9#CDG^@,+@@@@@@#@@@M LOCAL . +@@@@[@J@M@J^@)^@)^@)^@)JJ )@@G@@^[GDDIDS)^[NCDKE-[CS) 0)^@)^@)^@)^@)^@)^[KE(O^[QCDGDD^^[KEL C1DF@)DDI^[]JK )@@G@@CTJC- +@@@@@@E@@@M LINK SAPTAC . PUT VALID PREFIX INJL )@@G@@ BCODE+@@@@[@G@M@J^@)^@)^@)^@)^[ED(K^@)^@1^@,^@)^@)^@)^@)^@)^@)^@)^@)^[QJM )@@G@@CDGDD^^[MC(OE(MD0)+@@@@@@C@@@M JMP 1 . VALID RJN )@@G@@ETURN +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@MJO )@@G@@. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@MJP )@@G@@. +@@@@[@[@M@J 0)^@)+@@@@@@[@@@M. +@@@@[@G@M@JET[C(HA@7^@)^[ EDPJQ )@@G@@^@)^@3B@) 0)^@)^@)^@)^@)^@)^@)^@)^[#D[ CTF^[ ELMD9M^@)+@@@@@@C@@@MSAEM07JR )@@G@@ EQU 38 . CHECK ERROR +@@@@[@H@M@LIT-G(!GT=^@)^[>ID5JS )@@G@@^@)^@6^@,^@)^@)^@)^@)^@)^@)^@)^@)^[!HD3IT(H1$^@*G(8I[2 C)^@)+@@@@@@D@@@MJT )@@G@@SAEMCD EQU 6 . MISSING (EXPR) +@@@@[@J@M@JET[C(HJU )@@G@@E[ ^@)^[ EDP^@)^@1AC4^@,^@)^@)^@)^@)^@)^@)^@)^@)^[KEL C1DF@)C(MELJEK) *)JV )@@G@@DDBD1JEL C))+@@@@@@E@@@MSAEMPE EQU 114 . PREFIX ERROJW )@@G@@R - IGNORED +@@@@[@J@M@JET[C(HAC0AK)^[ EDP^@)^@6A*) 0)^@)^@)^@)^@)^@)^@)JX )@@G@@^@)^[ID9#D[ CTF^[PET C))C1JEK)CTCC(#DS)^@)+@@@@@@E@@@MSAEM102 EQU 65 JY )@@G@@. NOCHECK USED FOR CHECK @#@J@ISAEMSG EQU 0 +@@@@[JZ )@@G@@@ @M@JET[C(HETB^@)^[ EDP^@)^@1AC2^@)+@@@@@@#@@@MSAEMSG EQU 112+@@@@[KA )@@G@@@K@M@JET[C(HD81^@)^[ EDP^@)^@1AC2^@,^@)^@)^@)^@)^@)^@)^@)^@)^[#D9IC-DE-DKB )@@G@@D9I^[ ELMD9M ))C(MELJEK)E(NC(^+@@@@@@F@@@MSAEMO1 EQU 112 . KC )@@G@@ CONDITION ERROR, ERROR USED @#@J@ISAEMSI EQU 0 +@@@@[@ @M@JKD )@@G@@ET[C(HETD^@)^[ EDP^@)^@1AC3^@)+@@@@@@#@@@MSAEMSI EQU 113@]@J@I KE )@@G@@ END+@@@@[@#@M@J^@)^@)^@)^@)^[ D1^+@@@@@@]@@@M END___ -KF )@@G@@>YUP - ERROR+@@@@[@H@M@J*[S@@@*SDFF*@ @@@P. EXPRESSION ANALYZER KG )@@G@@@A@@@P. DESTROYS REGISTERS X2-X6 A7-A8 @ @@@P. SETS X6=PAREN KH )@@G@@STACK @#@@@P AXR$ . @#@@@P DCLRG . @#@@@P REGKI )@@G@@S . @#@@@P ALREG . @#@@@P UNLIST . @]@@@P@ADD PLTVDS KJ )@@G@@@#@@@P LIST . @]@@@P@ADD PLSAW @#@@@P CEND . @C@@@PKK )@@G@@FJMP EQUF 0,X10 . FAST RETURN @#@@@P PLWORD . KL )@@G@@@#@@@P PLSD . @#@@@P PLAC . @[@@@P. @[@@@P. KM )@@G@@@#@@@PEXPR CSECT 3 .@E@@@PEANNN EQU 0000000 . PROH: *KN )@@G@@ , OPER IN EXPR @E@@@PEAYYY EQU 0010101 . PERM: * , OPEKO )@@G@@R IN EXPR @E@@@PEANNY EQU 0000001 . PROH: * , PERM: OPEKP )@@G@@R @ @@@P. PARENTHESIS TYPES @C@@@PSAPTEA EQU 0 . KQ )@@G@@ ARITHMETIC @B@@@PSAPTEB EQU 1 . LIST KR )@@G@@@C@@@PSAPTEE EQU 2 . EXPRESSION @C@@@PSAPTEV EQUKS )@@G@@ 3 . VARIABLE @B@@@PSAPTED EQU 4 . KT )@@G@@ DO @B@@@PSAPTEF EQU 7 . ANY @C@@@PSAPTEIKU )@@G@@ EQU 8 . INACCESSABLE @[@@@P. @^@@@P. TABKV )@@G@@LES FOR SYNA@D@@@P. +-------------------------------------------+KW )@@G@@@D@@@P. !RIGHT PAREN ROUTINES ! STATE !@D@@@P. KX )@@G@@ +---------------------+ TABLES !@D@@@P. !SYNA STMKY )@@G@@T DRIVERS ! !@D@@@P. +--------------------KZ )@@G@@-+ !@D@@@P. ! ////////// ! LA )@@G@@ !@D@@@P. +-------------------------------------------+LB )@@G@@@D@@@PEABTAB LABEL . ANALYZER IN STATE N@D@@@PEAPUTPLC )@@G@@ LABEL . RIGHT PAREN ROUTINE@^@@@P +EAPUA,EALD )@@G@@P10 . @^@@@P +EAPUB,EAPE1R .@^@@@P +EAPUE,EAPE1R .@^@@@PLE )@@G@@ +EAPUV,EAP7SR .@#@@@PEAPUNT LABEL . @^@@@P +EAPNA,EALF )@@G@@P5U . @^@@@P +EAPNB,EAP4U . @^@@@P +EAPNE,EAPLN . @^@@@PLG )@@G@@ +EAPNV,EAP120 .@D@@@PSACTBL* LABEL . SYNA STLH )@@G@@MT DRIVER @D@@@P +SACNCR,EA6NR4 . IMPROPER TOKEN, LI )@@G@@@B@@@P +SAEXIT,EAPEX4 . EXIT @B@@@PEABSTU LABEL . LJ )@@G@@ STATE U@B@@@P +SABGIN,EAP10 . BEGIN, LK )@@G@@@B@@@P +SACALL,EAPE1R . CALL @B@@@P +SACLOS,ELL )@@G@@APE1R . CLOSE @B@@@P +SADCL,EAPE1R . DCL LM )@@G@@@B@@@P +SAEND,EAP5U . END, @B@@@P +SAENTR,ELN )@@G@@AP4U . ENTRY @B@@@P +SAFMAT,EAPLN . FORMAT LO )@@G@@@B@@@P +SAGET,EAP140 . GET @B@@@P +SAGOTO,ELP )@@G@@A10NR . GOTO, @B@@@P +SAGO,EAPEX3 . GO [TO]LQ )@@G@@@B@@@PEABSTO LABEL . STATE O@B@@@P +SAIF,EA1LR )@@G@@10X . IF @B@@@P +SAOPEN,EAP2B2 . OPEN LS )@@G@@@C@@@P +SAPROC,EAP2B . PROCEDURE @B@@@P +SALT )@@G@@PUT,EAP2B . PUT @B@@@P +SARTRN,EAP2B . RLU )@@G@@ETURN @B@@@P +SASTOP,EAPE7B . STOP @B@@@P +SSLV )@@G@@TEN2,EAPBN . NULL @B@@@P +SADO,EAPUO . DLW )@@G@@O @C@@@P +SAESTX,EAP6NR . END SOURCE @C@@@P LX )@@G@@ +SASPC,EAPX . *PROCESS @B@@@PEABSTS LABEL . LY )@@G@@ STATE S@B@@@P +SATHEN,EAPE2O . THEN, @B@@@PLZ )@@G@@ +SAELSE,EAPE1R . ELSE @ @@@P +SAFLOW,EAPE1R MA )@@G@@. @ @Q@P +SANFLW,EAPE3S . @ @@@Q +SAONST,EAPE3S MB )@@G@@. @ @@@P +SASIGN,EAPE5U . @^@Q@P +0,EAPE4U . MC )@@G@@@ @@@Q +SAALLC,EAPE4U . @^@Q@P +0,EAPE6N . @ @@@QMD )@@G@@ +SAFREE,EAPE6N . @^@Q@P +0,EAPUO . @^@@@Q ME )@@G@@ +SALEAV,EAPUO .@^@Q@P +0,EAP6NR . @ @@@Q +SAREAD,EMF )@@G@@AP6NR . @^@Q@P +0,EAPEX2 . @ @@@Q +SAWRIT,EAPEX2 MG )@@G@@. @B@@@PEABSTB LABEL . STATE B@^@Q@P +0,MH )@@G@@EAP10 . @^@@@Q +SANFLW,EAP10 .@^@Q@P +0,EAPE1R . MI )@@G@@@ @@@Q +SARVRT,EAPE1R . @^@Q@P +0,EAPE1R . @ @@@QMJ )@@G@@ +SASYST,EAPE1R . @^@@@P +0,EAPE1R . @^@@@P MK )@@G@@ +0,EAP5U . @^@@@P +0,EAP4U . @^@@@P +0,EAPLN ML )@@G@@. @^@@@P +0,EAPE80 . @^@@@P +0,EA10NR . @^@@@PMM )@@G@@ +0,EAPEX1 . @E@@@PEAN EQU 0 . STATE NMN )@@G@@ - NO ELEMENT LAST@F@@@PEAU EQU EABSTU-EABTAB . U - UNAMO )@@G@@RY OPERATOR LAST @E@@@PEAO EQU EABSTO-EABTAB . O - OPEMP )@@G@@RAND LAST @F@@@PEAS EQU EABSTS-EABTAB . S - STAR OPERMQ )@@G@@AND LAST @F@@@PEAB EQU EABSTB-EABTAB . B - BUNARY OPMR )@@G@@ERATOR LAST @D@@@P/. ROUTINE TO WRITE AN EXPRESSION IN B CODE MS )@@G@@@A@@@P. CALL EAEXPR TO WRITE 'EXPR'@A@@@P. EAEXIO TO WRITEMT )@@G@@ 'EXPRIO' @ @@@P. WITH DSAD = D SPEC @ @@@P. DSASDR = MU )@@G@@SDRETURN @^@@@P. DSADXD=SD SPEC @A@@@P. RETURN 0=FAIL, MV )@@G@@1=SUCCESS @[@@@P. @B@@@P. ENTRY TO OMIT WRITING 'START-D' MW )@@G@@@#@@@PEAEASV* LOCAL . @D@@@P MOVE DSAEXP,EANNN,I . PROH: *MX )@@G@@ , OPER @C@@@P LOAD X5,SAPTEV,I . SET VARIABLE @C@@@PMY )@@G@@ GOTO EAEAS6 . -> COMMON @#@@@PEAEASN* LOCAL . MZ )@@G@@@E@@@P MOVE DSAEXP,EANNY,I . PROH: * , PERM: OPER @D@@@PNA )@@G@@ LOAD X5,SAPTEE,I . SET EXPRESSION @#@@@PEAEAS6 LABNB )@@G@@EL . @E@@@P LOAD X3,1,I . SET WITCH TO NO START-D NC )@@G@@@G@@@P LINK EAPSTK . SET PAREN STACK FOR STRT OF EXPND )@@G@@R @^@@@P GOTO EAEO6 . @[@@@P. @#@@@PEAVRIO* LOCAL . NE )@@G@@@D@@@P MOVE DSAEXP,EANNN,I . PROH: * , OPER @C@@@P NF )@@G@@ LOAD X5,SAPTEV,I . SET VARIABLE @^@@@P GOTO EAEXI4 . NG )@@G@@@#@@@PEAVAR* LOCAL . @D@@@P MOVE DSAEXP,EANNN,I . PROH: *NH )@@G@@ , OPER @C@@@P LOAD X5,SAPTEV,I . SET VARIABLE @^@@@PNI )@@G@@ GOTO EAEXP4 . @ @@@P. ENTRY GOR EXPRIO @#@@@PEAEXIONJ )@@G@@* LOCAL . @E@@@P MOVE DSAEXP,EANNY,I . PROH: * , PERM: NK )@@G@@OPER @D@@@P LOAD X5,SAPTEE,I . SET EXPRESSION @#@@@PNL )@@G@@EAEXI4 LABEL . @D@@@P LOAD X3,0,I . SET TO START NM )@@G@@D I/O @C@@@P LOAD X4,ACSTXI,I . SET START I/O@C@@@P NN )@@G@@ GOTO EAEO4 . -> MERGE @^@@@P. ENTRY FOR EXPR NO )@@G@@@#@@@PEAEXPR* LOCAL . @E@@@P MOVE DSAEXP,EANNY,I . PROHNP )@@G@@: * , PERM: OPER @D@@@P LOAD X5,SAPTEE,I . SET EXPRESSIONQ )@@G@@N @#@@@PEAEXP4 LABEL . @D@@@P LOAD X3,1,I . SNR )@@G@@ET TO START D @D@@@P LOAD X4,ACSTEX,I . GET START EXPNS )@@G@@R MARK@#@@@PEAEO4 LABEL . @C@@@P ADD X4,DSAD . INT )@@G@@NSERT D BYTE@C@@@P LOAD A8,X4 . PUT IN B CODE@F@@@PNU )@@G@@ LINK EAPSTK . PUT EXP BASE IN PAREN SACK @C@@@PNV )@@G@@ PUTC . PUT D BYTE @#@@@PEAEO6 LABEL . NW )@@G@@@ @@@P STORE X3,DSATPC . @D@@@P LINK SAGBC . NX )@@G@@ SAVE START OF EXPR @C@@@P SUB A3,1,I . POINT TNY )@@G@@O !- @ @@@P STORE A3,DSATPB . @E@@@P LOAD A8,0,I . NZ )@@G@@ CLEAR POINTER TOKENS @^@@@P GOTO $+1,X3 . @B@@@POA )@@G@@ PUTC . I/O @E@@@P MOVE DSANPR,0,OB )@@G@@I . CLEAR IN PARAN INDICATOR @D@@@P MOVE DSANOT,1,I . OC )@@G@@ SET OUTER INDIC @D@@@P LOAD X5,DSAXSD . SET SD OD )@@G@@CONTROL @ @@@P STORE X5,DSASDC . @D@@@P MOVE DSAOE )@@G@@STE,EAN,I . SET TO STATE N @D@@@P GOTO EACNTR . OF )@@G@@ -> EXPR ANALYZER @ @@@P. RETURN FROM ANALYZER @#@@@PEACNTXOG )@@G@@ LABEL . @ @@@P SUB X6,SACPSW,I . @C@@@P MOVE DSAOH )@@G@@XSD,0,I . RESET INPUT @B@@@P MOVE DSASDR,0,I . 'OI )@@G@@' @D@@@P LINK SAGBC . GET B CODE PTR @C@@@POJ )@@G@@ SUB A3,1,I . POINT BACK 1.@E@@@P IF DSAOK )@@G@@TPC,NZERO THEN,EAEO6X . -> NOT I/O EXPR @E@@@P SUB A3,1,I . OL )@@G@@ DELETE PTR FOR TYP SD @#@@@PEAEO6X LABEL . @F@@@P OM )@@G@@ IF A3,NE,DSATPB THEN,EAE12 . -> SUCCESSFUL RETURN @E@@@P ON )@@G@@ LOAD A3,DSATPB . RESET PTR TO DELETE EXPR @^@@@P LINOO )@@G@@K SAGSBC . @D@@@P JMP . -V ERROR RETURN OP )@@G@@@#@@@PEAE12 LABEL . @D@@@P SUPSYM ACENEX . SET ENDOQ )@@G@@ EXPR TOKEN @E@@@P JMP 1 . -> SUCCESSFUL RETUROR )@@G@@N @ @@@P/. ROUTINE FOR P(EXPR) @C@@@P. CALL EAPEX WITHOS )@@G@@ NEXT SYMBOL IN HASD @C@@@P. EASPEX TO SUPPLY '(' IF MISOT )@@G@@SING @D@@@P. OTHER CONTROLS - SEE ENTRY FOR EXPR @B@@@POU )@@G@@. ENTRY TO SUPPLY '(' IS MIDSING @#@@@PEASPEX* LOCAL . @D@@@POV )@@G@@ LINK SASPLP . PUT '(' IN B CODE @^@@@P GOTOW )@@G@@O EAPX09 . @D@@@P. ENTRY FOR P(EXPR) WITH NEXT SYMBOL IN HASD OX )@@G@@@#@@@PEAPEX* LOCAL . @D@@@P BAC ACLPAR,EAPX08 . -> NEXTOY )@@G@@ SYM '(' @#@@@PEAPX05 LABEL . @B@@@P JMP . OZ )@@G@@ -> FAIL@#@@@PEAPX08 LABEL . @D@@@P LINK SAPTAC . PA )@@G@@ PUT '(' IN B CODE @#@@@PEAPX09 LABEL . @C@@@P LINK EAEPB )@@G@@XPR . GET EXPR @D@@@P GOTO EAPX24 . -PC )@@G@@> EXPR NOT FOUND @#@@@PEAPX12 LABEL . @E@@@P LINK SASPRP . PD )@@G@@ PUT ')' IN B CODE @E@@@P JMP 1 . PE )@@G@@ -> RETURN SUCCESSFUL @#@@@PEAPX24 LABEL . @D@@@P FLIPF )@@G@@NK X10,SAEB74 . INCOMPLETE EXPR @#@@@PEAPX26 LABEL . @D@@@PPG )@@G@@ SUB X2,1,I . DELETE '(' NIL @D@@@P GOTPH )@@G@@O EAPX05 . -> FAIL RETURN @G@@@P/. ROUTINE FIR L(EPI )@@G@@XPR) THAT REQUIRES INITIAL '(' - USED FOR FMAT @#@@@PEALEXP* LABEL . PJ )@@G@@@E@@@P BNAC ACLPAR,EALRT . -> FAIL RETURN, NO '(' @#@@@PPK )@@G@@EASLEX* LOCAL . @C@@@P MOVE DSALXT,0,I . CLEAR COUNT PL )@@G@@@E@@@P LINK SASPLP . PUT '(' IN B CODE @#@@@PPM )@@G@@EASLX4 LABEL . @C@@@P LINK EAEXPR . GET EXPR PN )@@G@@@D@@@P GOTO EASLX9 . -> NO EXPR FOUND @D@@@P PO )@@G@@ COUNT DSALXT . COUNT 1 ELEMENT @D@@@P BNAC ACCPP )@@G@@OMA,EASLX6 . -> NEXT SYM NE ';' @D@@@P LINK SAPTAC . PQ )@@G@@ PUT AC IN B CODE @D@@@P GOTO EASLX4 . -> NEXTPR )@@G@@ ARGUMENT @#@@@PEALRT LABEL . @D@@@P LJMP . PS )@@G@@ -> FAIL RETURN @#@@@PEASLX6 LABEL . @G@@@P IF DSAPT )@@G@@LXT,NZERO THEN,EAPX12 ELSE,EAPX05 . AT LEAST 1 WLT @#@@@PEASLX9 LABPU )@@G@@EL . @E@@@P IF DSALXT,ZERO THEN,EAPX26 . -> NO ELEMENTS PV )@@G@@@D@@@P GOTO EAPX12 . -> SUCCESS RETURN @E@@@P/. PW )@@G@@ ROUTINE FOR L(EXPRIO) USED BY 'GET' AND 'PUT' @#@@@PEALXPR* LOCPX )@@G@@AL . @C@@@P MOVE DSAXIO,1,I . SET TO I/O @D@@@P PY )@@G@@ MOVE DSAXDI,DSAXSD . SAVE SD CONTROL @D@@@P MOVE DSAPZ )@@G@@LXT,0,I . CLEAR LIST COUNT @G@@@P LOAD A8,ACNIL,I . QA )@@G@@ LEAVE SPACE FOR PROC MISSING DO ( @#@@@P PUTC . @#@@@PQB )@@G@@ PUTC . @E@@@P LINK SADOMX . INCREASE DO NQC )@@G@@EXT LEVEL @D@@@P LOAD X5,SAPTED,I . LIST 'DO' PAREN QD )@@G@@@#@@@PEALX07 LABEL . @D@@@P LINK EAPSTK . PUT IN QE )@@G@@PAREN STACK @E@@@P LINK SADOMX . INCREASE TO NEST LEQF )@@G@@VEL @D@@@P LINK SASPLP . PUT ( IN B CODE @E@@@PQG )@@G@@ SUPSYM ACNIL . PUT SPACER IN B CODE @#@@@PEALX09QH )@@G@@ LABEL . @E@@@P BNAC ACLPAR,EALX11 . -> NEXT SYMBOL NE (QI )@@G@@'( @D@@@P LOAD X5,SAPTEA,I . SET ARITH PAREN @^@@@PQJ )@@G@@ GOTO EALX07 . @#@@@PEALX11 LABEL . @D@@@P MOVE DSAQK )@@G@@XSD,DSAXDI . RESTRE SD CONTROL @C@@@P LINK EAEXIO . QL )@@G@@ WRITE EXPRIO @C@@@P. RETURN FROM EXPR --- X6=TOP OF PAREN STACKQM )@@G@@@#@@@PEAXL12 LABEL . @D@@@P GOTO EALX14 . -> EXPRQN )@@G@@ NOT FOUND @^@@@P USING WORD,X6 .@D@@@P SET SAPTEI,ONQO )@@G@@,W1Q4 . MARK INACCESSABLEW @D@@@P LINK EABK1 . BQP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^@@]TCORE$ @@#@@@@@@@@@RB )@@G@@SORTF @@C@@@@@@@@@^@)^@)^@)^@)^@)^@0^@!^[>GT*H8)H(\G->^[(IS)H9&G0,RC )@@G@@@D@@@@^@)^@)^@)^@)^@)^@)^@)^@1^@!^[>GT*H8)H(\G->^[(IS)H9, 0)@C@@@@^@)^@)RD )@@G@@^@)^[>H9&G0)^@)^[>H1=^[\G0)G1(H->^[&H--G8,@C@@@@^@)^@)^@)^@)^@)^@)^@)^@0RE )@@G@@^@!^[,H94^[-I))G(\G0,^@)@E@@@@^@)^@)^@)^@)^@)^@)^@)^@1^@!^[?GD3I))G(6G(,RF )@@G@@I))I9-IS)G(\G0,^@)@D@@@@^@)^@)^@)^[&G0)^@)^@)^[&HD,G))GT\H(!GD,G))GT\I(,RG )@@G@@I->IK,@D@@@@^@)^@)^@)^@)^@)^@)^@)^@0^@!^[?GD3I))G1(H1=^[&GD(H->G),@K@@@@RH )@@G@@^@)^@)^@)^@)^@)^@)^@)^[,H9, ('G(2H8)I1-H-5G*)HD3^@<^[\G0)H-(H1>IS)G1\I(,RI )@@G@@G))GL9^[?GD3I))I(3G*,^@)@H@@@@^@)^@)^@)^[(H1!J@)^@)^[!GD8HD!I(!^[?HD,G*)RJ )@@G@@H->H1$I-*^[&H92^[(H10I(4^[!H9=G*,^@)@L@@@@^@)^@)^@)^[?GT\H))^@)^[IK,^@)@E@@@@RM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@0^@!^[?GD3I))H-\GT-I->^[&GD(H->G),^@)@K@@@@^@)^@)RN )@@G@@^@)^@)^@)^@)^@)^[,H9, ('G(2H8)I1-H-5G*)HD3^@<^[\G0)H-(H1>IS)H-\GT-I->G))RO )@@G@@GL9^[?GD3I))I(3G*,@F@@@@^@)^@)^@)^[!H-,^@)^@)^[H14^[?HD,G*)H15H(+RP )@@G@@G(2^[(H0)H(-GT2H8,@I@@@@^@)^@)^@)^[!IL0I))^@)^[H14^[6GD?I(>^[\G0)RQ )@@G@@H(-GT2H8)IL>I[>GD4^[RR )@@G@@H->H(>H14^[&H--G8,@G@@@@^@)^@)^@)^@)^@)^@)^@)^@0^@!^[(H10I(4^[>H->H(>H14RS )@@G@@^[7GD3^[0IL>IT>H14 0)^@)@J@@@@^@)^@)^@)^@)^@)^@)^@)^@1^@!^[ C-L^[=HD=^[,RT )@@G@@H94^[&HD,G))G(?G(!G(,I))H1-H(>^[(H0)G1(H-> 0)^@)@M@@@@^@)^@)^@)^[,G(7^@)RU )@@G@@^@)^[(G0)H1\H0!JL>IL\ ))GT5IL2G(,I))HD!GD$G*)I9-IS)GD=G->G))H92^[!H9=HD&RV )@@G@@HD>G))HD,^[4H[(IS)@C@@@@^@)^@)^@)^@)^@)^@)^@)^[>G-(I-(H1$^[3G(3IT(H9, 0)RW )@@G@@@J@@@@^@)^@)^@)^[\G1&^@)^@)^[6GD2HD-GL?G*)I9*H93G*)I1-H-5G*)HD3^@0^[&H92RX )@@G@@^[?H9$HD 0)@J@@@@^@)^@)^@)^[\H0)^@)^@)^[6GD2HD-GL?G*)I9*H93RY )@@G@@G*)I1-H-5G*)HD3^@1^[&H92^[?H9$HDIK)HD,^[H14SA )@@G@@^[(H(-G9> 0)@I@@@@^@)^@)^@)^[3GT?^@)^@)^[?G(&I))GT\H-5H(,^[!GD2G9(H0)IT>SB )@@G@@I))GL9^@$IT<^8)GT\H(!GD,G),^@)@I@@@@^@)^@)^@)^[3GT2^@)^@)^[2HD$H[4^[^[\G0)IT9H(+H9?HD<^[3I(+ (4JD0G*)H9&^[(H10I(4^[>SE )@@G@@H-4 0)@[@@@@ 8)^@)___H8)GL>^[=G(?G(4G(=^[&H--G8,@G@@@@^@)^@)^@)^@)^@)^@)SF )@@G@@*[@@@[*SDFF*@C@@_@C[G-1 -3JD3 L?HD+AC,G(=IC)@D@@_@SG )@@G@@C[G-1GS= -3JD3 L?HD+AK,G(=ID<^))___@J N@0KJ#'^@@J+SH )@@G@@R#K^[5/K@@J[R]0^@K @@^@D*[@@@@*SDFF*@^@@@@ AXR$ . @^@@@@SI )@@G@@ EDPC . @#@@@@$(1) . IBANK.@^@@@@ LIT SJ )@@G@@ . @B@@@@ ASCII . SET TO ASCII CHARS. @C@@@@ . SK )@@G@@ROUTINE TO HANDLE PRINT COMMANDS. @]@@@@ . @]@@@@PRINT1* . SL )@@G@@@F@@@@ SZ PMFLG . TURN OFF PRINT MODS FLAG. SM )@@G@@@]@@@@PRINT11 . @D@@@@ LMJ X10,GET . GET FIRSSN )@@G@@T ARG.@ @@@@ LMJ X10,BIN @D@@@@ S A10,SO )@@G@@PSTT . SAVE FIRST ARG@D@@@@ LMJ X10,GET SP )@@G@@ . LOOK FOR NEXT @C@@@@ JZ A1,PRINT12 . NO ARG2.SQ )@@G@@@C@@@@ LMJ X10,BIN . CONVERT @D@@@@ TGSR )@@G@@ A10,PSTT . FIRST BIGGER? @D@@@@ J PRINSS )@@G@@T3 . NO, NEW FORMAT@ @@@@PRINT12 . OLD FORM ENTRY. @E@@@@ST )@@G@@ L A10,PSTT . YES, RELOAD ARG ONE.@]@@@@PRINT2SU )@@G@@* . @E@@@@ TNZ PMFLG . IS PRINT MODS ON. SV )@@G@@@B@@@@ J PRINT21 . NO@D@@@@ L SW )@@G@@ A0,PMFLG . GET NON ZERO. @F@@@@ S A0,NLMOD SX )@@G@@ . SET LINE NUMBERING ON. @D@@@@ L A0,ASCBL SY )@@G@@ . GET BLANKS. @E@@@@ TZ AC1 . ADSZ )@@G@@DED THIS UPDATE? @D@@@@ L,U A0,'A' . GET AN 'TA )@@G@@A'. @E@@@@ TZ DC1 . DELETED THIS UPDATE?TB )@@G@@@C@@@@ L,U A0,'D' . GET 'D'.@F@@@@ S,TC )@@G@@Q2 A0,LNBFT . SET IN BUFFER NEXT TO *. @D@@@@ TNTD )@@G@@E A0,ASCBL . ANY CHANGE ? @D@@@@ J PRINTE )@@G@@T23 . NO, SKIP. @D@@@@ J PRINT22 TF )@@G@@ . YES, PRINT. @B@@@@PRINT21 . ENTRY IF NOT IN 'PM' MODE. @F@@_@TG )@@G@@ TZ ICW . DO NOT PRINT IF NO IMAGE. @A@@@@TH )@@G@@PRINT22 . ENTRY FROM PM MODE. @D@@@@ LMJ X10,TYPOUTTI )@@G@@ . PRINT IMAGE. @ @@@@PRINT23 . FOR SKIP IF 'PM'. @D@@@@ TJ )@@G@@ JZ A10,PREND . TO PRINT EXIT.@ @@@@ LMJ TK )@@G@@ X10,WRB @E@@@@ TZ OK . TEST FOR AT EOTL )@@G@@F. @ @@@@ LMJ X10,READ @^@@@@ J EOF TM )@@G@@@D@@@@ TNZ DC1 . FOR 'PM' MODE.@ @@@@ TN )@@G@@ JGD A10,PRINT2@F@@@@ J PRINT2 . DOTO )@@G@@ NOT DECR IF DELETED. @]@@@@PRINT3 . @D@@@@ AN A10,TP )@@G@@PSTT . NET LENGTH @D@@@@ L A9,PSTT TQ )@@G@@ . GET FIRST ARG.@C@@@@ LMJ X10,WRB . WRITE TR )@@G@@@D@@@@ LMJ X10,READ . READ NEXT @C@@@@ TS )@@G@@ J EOF . EOF EXIT@C@@@@ JGD A9,$TT )@@G@@-3 . LOOP @D@@@@ J PRINT2 . PRTU )@@G@@INT LINES @ @@@@PRINT4* . ENTRY FROM 'PM'. @D@@@@ S TV )@@G@@ A1,PMFLG . SET FLAG. @E@@@@ J PRINT11 TW )@@G@@ . ENTER MAIN CODE. @]@@@@ . @^@@@@PREND . EXIT CTX )@@G@@ODE. @F@@_@ TZ ICW . DO NOT DECODE IF NONTY )@@G@@E. @E@@@@ LMJ X10,DECOD1 . DECODE THE IMAGE. TZ )@@G@@@E@@@@ J NXRQ . ON TO NEXT REQUEST. @^@@@@UA )@@G@@ END . ___ LOOK FOR NEXT @C@@@@ JZ A1,PUB )@@G@@RINT12 . NO ARG2.@C@@@@ LMJ X10,BIN . COUC )@@G@@*[@@@@*SDFF*@^@@@@ AXR$ . @^@@@@ EDPC . UD )@@G@@@#@@@@$(1) . IBANK.@^@@@@ LIT . @ @@@@ ASUE )@@G@@CII . SET ASCII.@C@@@@ . THIS IS THE 'D' COMMAND HANDLER. UF )@@G@@@]@@@@ . @A@@@@DEL1* . ENTRY FOR 'D' COMMAND. @D@@@@ UG )@@G@@ LMJ X10,GET . GET ARG1. @ @@@@ LMJ UH )@@G@@ X10,BIN @D@@@@ S A10,PSTT . SAVE ARG ONE UI )@@G@@@D@@@@ LMJ X10,GET . GET ARG 2 @C@@@@ UJ )@@G@@ LMJ X10,BIN . CONVERT @C@@@@ JZ A10,UK )@@G@@$+3 . OLD FMT @E@@@@ TG A10,PSTT . ISUL )@@G@@ PSTT BIGGER? @D@@@@ J DEL3 . NO, NEW UM )@@G@@FMT @E@@@@ L A10,PSTT . RELOAD ARG ONE. UN )@@G@@@]@@@@DEL2 . @ @@@@ SZ LENGTH @C@@@@ L UO )@@G@@ A0,ICW . GET ICW.@F@@@@ TNZ A0 UP )@@G@@ . IS THERE A CURRENT IMAGE. @E@@@@ J DEL21 UQ )@@G@@ . SKIP DECR + WRITE. @E@@@@ SNA RC,DC1 UR )@@G@@ . IMAGE DELETED BY ED @C@@@@ L,U X10,1 . GEUS )@@G@@T 1 @F@@@@ S X10,NOCHGF . SET CHANGED THIS PASUT )@@G@@S. @E@@@@ TZ LCT . SKIP IF AT ZERO. UU )@@G@@@D@@@@ AN,U LCT,1 . YES, DECR. @ @@@@ UV )@@G@@ LMJ X10,WRB @]@@@@DEL21 . @E@@@@ S X10,UW )@@G@@DC2 . SET FOR 'U' COMMAND.@ @@@@ JZ A10,NXRQ UX )@@G@@@ @@@@ LMJ X10,READ @^@@@@ J EOF @ @@@@UY )@@G@@ JGD A10,DEL2 @D@@@@DEL3 AN A10,PSTT UZ )@@G@@ . NET LENGTH @D@@@@ L A9,PSTT . GET ARG VA )@@G@@1 @D@@@@ LMJ X10,WRB . WRITE CURRENT @D@@@@VB )@@G@@ LMJ X10,READ . READ NEXT @C@@@@ J VC )@@G@@ EOFC . EOF EXIT@C@@@@ JGD A9,$-3 VD )@@G@@ . LOOP @C@@@@ J DEL2 . DO IT. VE )@@G@@@]@@@@ . @D@@@@/ . THIS ROUTINE HANDLES 'N' AND 'G' COMVF )@@G@@MANDS.@]@@@@ . @A@@@@NEXT1* . ENTRY FOR 'N' COMMAND. @D@@@@VG )@@G@@ LMJ X10,GET . GET ARG1. @ @@@@ LMVH )@@G@@J X10,BIN @]@@@@NEXT2 . @ @@@@ LMJ X10,WRB VI )@@G@@@ @@@@ LMJ X10,READ @^@@@@ J EOFC@C@@@@VJ )@@G@@GOTO4A TNZ ILCT . 'GI'? @B@@@@ J VK )@@G@@ GOTO4 . NO@C@@@@ JN OLCT,GOTO4 . FOVL )@@G@@UND. @C@@@@ J NEXT2 . CONTINUE@]@@@@GOTO4*VM )@@G@@ . @ @@@@ JGD A10,NEXT2 @ @@@@ TZ BRIEVN )@@G@@F2 @ @@@@ LMJ X10,TYPOUT@F@@@@ TZ LCT VO )@@G@@ . DO NOT DECODE IF AT 0. @E@@@@ LMJ X10,VP )@@G@@DECOD1 . DECODE THE IMAGE. @^@@@@ J NXRQ@A@@@@VQ )@@G@@GOI1* . ENTRY FOR 'GI' COMMAND. @D@@@@ LMJ X10,GET VR )@@G@@ . GET COUNT. @D@@@@ LMJ X10,BIN . COVS )@@G@@NVERT IT. @D@@@@ LMJ X6,TOPS . GO TO TOP. VT )@@G@@@D@@@@ S A10,OLCT . SET COUNT. @D@@@@ VU )@@G@@ SZ A10 . CLEAR A10 @D@@@@ S VV )@@G@@ X10,ILCT . SET 'GI' FLAG.@C@@@@ J GOTO4A VW )@@G@@ . DO IT. @A@@@@GOTO1* . ENTRY FOR 'G' AND 'GO'. @D@@@@ VX )@@G@@ LMJ X10,GET . 'G' COMMAND. @D@@@@ TE,U VY )@@G@@ A1,'B'+040 . LOWER 'B'. @C@@@@ TNE,U A1,'B' VZ )@@G@@ . UPPER. @F@@@@ J GOBOT . GO TO BOWA )@@G@@TTOM IN EDIT. @C@@_@GOTO2* . ENTRY FROM NUMERIC AS OPERATOR. WB )@@G@@@G@@@@ LMJ X10,BIN0 . CONVERT SPEC FIELD TO BINWC )@@G@@ARY @E@@@@ JZ A10,TOP1 . 'GO TO 0'='TOP' WD )@@G@@@H@@@@ AN A10,LCT . IS REQUESTED LINE ABOVE WE )@@G@@POINTER? @D@@@@ JN A10,GOTO21 . MUST DO TOP. WF )@@G@@@F@@@@ TNZ DC2 . IS CURRENT IMAGE DELETED. WG )@@G@@@E@@@@ J GOTO4 . NO, CAN GO AHEAD. @]@@@@WH )@@G@@GOTO21 . @B@@@@ AA A10,LCT . @]@@@@GOTO3 WI )@@G@@ . @C@@@@ LMT @D@@@@ L A0,KEY2 WJ )@@G@@ . GET KEY2 AGAIN@C@@@@ LMJ X11,EFD1$ . SET IT WK )@@G@@@]@@@@APER . @C@@@@ L,U A0,'.' . SET WL )@@G@@@F@@@@ LMJ X11,EFD1$ . PERIOD TO TERM CSF SCAN WM )@@G@@@D@@@@ L A2,A1SAVE . GET SPEC #. @D@@@@ WN )@@G@@ TG,U A2,3 . IS IT 3RD. @C@@@@ J WO )@@G@@ ISAG1 . YES. @C@@@@ L,U A0,2 WP )@@G@@ . GET 2 @C@@@@ LMJ X11,ESKIP$ . SPACE @F@@@@WQ )@@G@@ DL A0,REJM . GET REJECTED MESS IN CASE @C@@@@WR )@@G@@ LMJ X11,EFD2$ . SET IT @C@@@@ E$SKIP WS )@@G@@ 1 . SPACE 1.@E@@@@ LMJ X11,ECOLN$ WT )@@G@@ . GET COLUMN POINTER @E@@@@ L A1,A0 . GEWU )@@G@@T POINTER IN A1 @F@@@@ A,U A1,12 . ADD 12 FWV )@@G@@OR REJECT CODE. @B@@@@ SZ A0 . X @D@@@@WW )@@G@@ DI,U A0,6 . GET WORDS @E@@@@ A,WX )@@G@@U A0,4 . ROUNDUP + HEADER. @C@@@@ TG,U WY )@@G@@ A0,14 . TOO BIG?@E@@@@ L,U A0,14 WZ )@@G@@ . MAX OR 101 STOP @F@@@@ S,S3 A0,ASGPK . SEXA )@@G@@T IN ERROR MESSAGE PKT. @A@@@@ L A0,(0,ASGIMG) @^@@@@XB )@@G@@ ER CSF$@D@@@@ JN A0,ASGERR . XC )@@G@@ASG FAILED @E@@@@ L A2,A1SAVE . GET FIELD POINXD )@@G@@TER. @G@@@@ AND,U A0,0100000 . TEST 2**15 (ASG TO AXE )@@G@@NOTHER). @C@@@@ S A1,ASGUP1,A2 . SET IT. @F@@@@XF )@@G@@ AND A0,RWKMSK . MASK OFF NON KEY JUNK. @G@@@@XG )@@G@@ JNZ A1,ISASG . TREAT NON-ZERO AS KEY ERROR. XH )@@G@@@D@@@@ L A0,KEY1 . GET READ KEY. @B@@@@ XI )@@G@@ TE A0,BLANKS . @E@@@@ S A2,RKEYIS,XJ )@@G@@A2 . SET IF PRESENT. @D@@@@ L A0,KEY2 XK )@@G@@ . WRITE KEY. @B@@@@ TE A0,BLANKS . @C@@@@XL )@@G@@ S A2,WKEYIS,A2 . SET. @]@@@@ISASG . @D@@@@XM )@@G@@ DL A0,BLANKS . GET BLANKS @C@@@@ DSXN )@@G@@ A0,QUAL . TO QUAL @D@@@@ S A0,KEY1 XO )@@G@@ . GET THE KEYS @C@@@@ S A0,KEY2 . NOXP )@@G@@W TOO.@E@@@@ S A0,FCY . AND THE F-CYCLE XQ )@@G@@@E@@@@ L A0,USEL . GET COL POINTER. @C@@@@XR )@@G@@ LMJ X11,ECOL$ . SET IT. @D@@@@ L,U XS )@@G@@ A1,6 . SIX CHARS @D@@@@ L,U A0,(' . XT )@@G@@ ') . SCAN TERM. @C@@@@ LMJ X11,ECOPY$ . COXU )@@G@@PY IT.@D@@@@ DL A0,USEI . GET USE INPUT.@F@@@@XV )@@G@@ L A2,A1SAVE . GET INPUT/OUT INDICATOR. @D@@@@XW )@@G@@ TE,U A2,1 . IS IT IN? @C@@@@ DLXX )@@G@@ A0,USEO . NO, OUT.@C@@@@ DS A0,ASGIMG XY )@@G@@ . SET IT. @D@@@@ L,U A0,ASGIMG . GET ADDRXZ )@@G@@. @C@@@@ ER CSF$ . DO USE. @C@@@@ YA )@@G@@ DL A0,ASGIMR . RESTORE @E@@@@ DS A0,AYB )@@G@@SGIMG . ASGIMG FOR NEXT ASG.@D@@@@ LMJ X11,EDITX$YC )@@G@@ . TERM EDIT. @ @@@@ISAG1 . ENTRY IF SPEC 3. @D@@@@ YD )@@G@@ L X11,X11SAV . RESTORE X11 @F@@@@ J YE )@@G@@ 1,X10 . RETURN SPEC FIELD IN INTBL@]@@@@ASGERR . @E@@@@YF )@@G@@ L,U A1,12 . EDIT 12 OCTAL CHARS.@C@@@@ YG )@@G@@ LMJ X11,EOCTF$ . CONV. @E@@@@ LMJ X11,YH )@@G@@EDITX$ . TERM THIS EDIT. @G@@@@ S X11,DOPTI YI )@@G@@ . GET TO SUPRESS CYCLE IN IDMSG. @D@@@@ LMJ X10,YJ )@@G@@IDMSG . PRINT ID. @C@@@@ L A0,ASGPK YK )@@G@@ . GET PKT.@D@@@@ ER PRINT$ . PRINT IT. YL )@@G@@@D@@@@ J FEXT . NORMAL TERM. @]@@@@/ YM )@@G@@ . @ @@@@FRP0 . HANDLE CYCLE. @D@@@@ SZ A2 YN )@@G@@ . CLEAR FOR MSI.@B@@@@ SZ A3 YO )@@G@@ . @E@@@@ S X11,CYCS . SET CYCLE SPECIFIED.YP )@@G@@@B@@@@ LDSL A3,6 . @F@@@@ TNZ YQ )@@G@@ CLASS,A3 . FIRST CHARACTER NUMBER? @C@@@@ J YR )@@G@@ FRP2 . YES @C@@@@ TNE,U A3,'-' YS )@@G@@ . MINUS @C@@@@ LNA A3,A3 . YES @B@@@@YT )@@G@@ TE,U A3,'+' . @B@@@@ JP A3,SYU )@@G@@YNERR . @B@@@@ SA,H1 A3,REL . @]@@@@YV )@@G@@FRP1 . @^@@@@ SZ A3 @D@@@@ LDSL A3,6YW )@@G@@ . GET CHARACTER@C@@@@ TNE,U A3,' ' YX )@@G@@ . SPACE? @ @@@@ J INFOR5 @C@@@@ TZ YY )@@G@@ CLASS,A3 . NUMBER?@C@@@@ J SYNERR YZ )@@G@@ . NO @B@@@@FRP2 . . @F@@@@ ZA )@@G@@ MSI,U A2,10 . CONVERT FD TO BINARY @B@@@@ ZB )@@G@@ ANA,U A3,060 . @B@@@@ AA A2,A3 ZC )@@G@@ . @ @@@@ S,H2 A2,REL @B@@@@ J ZD )@@G@@ FRP1 . @]@@@@PFS . @B@@@@ ER PFS$ZE )@@G@@ . @E@@@@ S X10,OK . SET NOT ZF )@@G@@AT EOF. @D@@@@ JZ A2,0,X10 . A2=0:FIND MADEZG )@@G@@@^@@@@ TNE,U A2,2@D@@@@ J IOERR ZH )@@G@@ . A2=2:IOERR @B@@@@ TNE,U A2,1 . @F@@@@ZI )@@G@@ J ELMERR . A2=1:NO ELEMENT FOUND @E@@@@ZJ )@@G@@ TNZ DOPTI . IS IT DATAFILE. @G@@@@ ZK )@@G@@ J PFERR . OTHERWISE:PROGRAM FILE UNDEFINED@F@@@@ZL )@@G@@ J 0,X10 . TAKE RETURN IF DATAFILE. @]@@@@ZM )@@G@@SYNERR . @ @@@@ PRINT E4,L4 @^@@@@ J ZN )@@G@@ FEXT@]@@@@ELMERR . @D@@@@ SZ RC . SEZO )@@G@@T REQ CYCLE.@D@@@@ SZ OK . SET AT EOF. ZP )@@G@@@C@@@@ L,U A0,1 . GET 1. @G@@@@ S ZQ )@@G@@ A0,NOCHGF . SET AS IF CHG TO FORCE SWITCH. @E@@@@ ZR )@@G@@ TZ DOPTI . IS INPUT DATAFILE. @E@@@@ J ZS )@@G@@ PRGASD . YES, SET WARNING. @F@@@@ S ZT )@@G@@ A0,ELMNF . SET ELEMENT NOT FOUND. @C@@@@ J ZU )@@G@@ 0,X10 . RETURN. @]@@@@PFERR . @C@@@@ L,U ZV )@@G@@ A0,1 . GET 1. @G@@@@ S A0,DOPTI ZW )@@G@@ . SET AS IF DATAFILE FOR IDMSG. @C@@@@ LMJ X10,IDMSG ZX )@@G@@ . SIGN ON.@A@@@@ PRINT IER5,LIER5,2 @^@@@@ ZY )@@G@@ J FEXT@D@@@@PFERR1 . OUTPUT IS PROG FILE AND GOT ERROR ONZZ )@@G@@ PFS$.@C@@@@ L,U A0,1 . FLAG. @E@@@@ AA )@@G@@ S A0,DOPTI . SET FOR SIGNON. @C@@@@ LMAB )@@G@@J X10,IDMSG . SIGNON. @D@@@@ PRINT IER51,LIERAC )@@G@@51,2 . PRINT ERROR. @C@@@@ J FEXT . TEAD )@@G@@RM. @B@@@@PRGASD . USER CALLING PF AS DATAFILE. @D@@@@ L,AE )@@G@@U A0,1 . GET FLAG. @G@@@@ S A0,AAF )@@G@@SCOUTF . SET ASCII OUT FOR DATAFILE. @F@@@@ S AG )@@G@@ A0,PIER6 . SET TO PRINT WARNING. @E@@@@ J AH )@@G@@ 0,X10 . ALLOW USER TO GO ON.@]@@@@IOERR . @ @@@@ AI )@@G@@ PRINT E3,L3 @D@@@@ J ERXT . ERAJ )@@G@@ROR EXIT @]@@@@IOERRA . @F@@@@ TE,U A5,5 AK )@@G@@ . IS IT READ UNASSGNED AREA.@E@@@@ J IOERRA1 AL )@@G@@ . NO, PRINT STATUS. @E@@@@ TNZ DOPTI . ISAM )@@G@@ INPUT DATAFILE. @E@@@@ J IOERRAB . NO, PRINAN )@@G@@T NO EOF. @D@@@@ SZ OK . SET AT EOF. AO )@@G@@@E@@@@ TZ POPT . TEST IF FD WANTED. @D@@@@AP )@@G@@ J 0,X10 . YES, RETURN. @E@@@@ L,AQ )@@G@@U A0,020 . GET ASCII CODE. @D@@@@ S AR )@@G@@ A0,QOPT . SET 'Q' OPT. @E@@@@ S,S2 A0,INTBL+5AS )@@G@@ . SET IN INTBL, TOO. @D@@@@ S,S2 A0,OUTBL+5 AT )@@G@@ . AND OUTBL. @C@@@@ J 0,X10 . RETURN AU )@@G@@@]@@@@IOERRAB . @D@@@@ PRINT E2B,L2B,2 . PRINT NOAV )@@G@@ EOF. @D@@@@ J ERXT . ERROR TERM. @]@@@@AW )@@G@@IOERRA1 . @B@@@@ L A6,BLANKS . @ @@@@ AX )@@G@@ L,U A7,0666666@^@@@@ DSL A5,3@^@@@@ DSAY )@@G@@C A6,3@ @@@@ JNZ A5,$-2 @^@@@@ SSC AZ )@@G@@ A6,6@ @@@@ S A6,E3+3 @ @@@@ PRINT E3,LBA )@@G@@3A @D@@@@ J ERXT . ERROR EXIT @A@@@@BB )@@G@@INTINIT . CONTINGENCY HANDLING. @C@@@@ S A0,A0LOC BC )@@G@@ . SAVE A0.@E@@@@ L,H2 A0,IBF . GET REENBD )@@G@@TRY ADDR @G@@@@ A,U A0,1 . ADD ONE DESPITBE )@@G@@E H/S HANDBOOK. @B@@@@ S,H2 A0,RETJP . @E@@@@BF )@@G@@ L,S3 A0,IBF . GET CONTIN TYPE. @E@@@@ BG )@@G@@ TE,U A0,010 . IS IT BREAK OR II. @C@@@@ J BH )@@G@@ INTRP2 . NO. @D@@@@ ER CEND$ BI )@@G@@ . END CONTIN. @E@@@@ L,S2 A0,IBF . GEBJ )@@G@@T ERROR CODE. @D@@@@ TNE,U A0,1 . IS IT TIBK )@@G@@MEOUT?@F@@@@ J IITIM . YES, FILE OUTPUT ANDBL )@@G@@ TERM.@E@@@@ PRINT E9,L9 . TELL USER OF II BM )@@G@@@E@@@@ L,U A0,E19A . GET MSG TO OPR. @C@@@@BN )@@G@@ ER COM$ . SEND IT.@D@@@@ L BO )@@G@@ A0,A0LOC . RESTORE A0. @C@@@@ J *RETJP BP )@@G@@ . RETURN @A@@@@INTRP2 . ERROR MODE INTERRUPT. @D@@@@ BQ )@@G@@ L,S1 A0,IBF . GET TYPE. @C@@@@ TE,U BR )@@G@@ A0,2 . IS IT 2.@C@@@@ J INTRP5 BS )@@G@@ . NO. @D@@@@ L,S2 A0,IBF . GET CODE. BT )@@G@@@E@@@@ TE,U A0,012 . IS IT UNASG OF FILE.@E@@@@BU )@@G@@ TNE,U A0,013 . OR ELT NOT FOUND. @C@@@@ BV )@@G@@ J $+2 . YES. @C@@@@ J INTRBW )@@G@@P5 . NO. @D@@@@ PRINT ASGIMG,12 . ADBX )@@G@@D FAILED. @D@@@@ L,S2 A0,IBF . GET CODE BACK.BY )@@G@@@D@@@@ TE,U A0,012 . IS IT UNASG. @E@@@@ BZ )@@G@@ J INTRPA1 . NO, MUST BE NO ELT. @E@@@@ PRCA )@@G@@INT E22,L22 . PRINT COULD NOT... @C@@@@ J CB )@@G@@ INTRPA2 . RETURN. @]@@@@INTRPA1 . @E@@@@ PRINT CC )@@G@@ E23,L23 . PRINT ELT NOT FOUND.@]@@@@INTRPA2 . @C@@@@ CD )@@G@@ L A0,A0LOC . GET A0 @C@@@@ J *RETCE )@@G@@JP . RETURN. @#@@@@INTRP5 . ERROR.@B@@@@ PRINT CF )@@G@@ E21,L21 . @D@@@@ L A0,(2,IBF) . GECG )@@G@@T LEN,ADDR. @C@@@@ S A0,SNPKT+1 . SET. @B@@@@CH )@@G@@ L,U A0,SNPKT . @C@@@@ ER SNAPCI )@@G@@$ . DO SNAP.@C@@@@ ER EXIT$ . ENCJ )@@G@@D. @[@@@@. @B@@@@. ROUTINE TO HANDLE TIMEOUT CONTINGENCY. @[@@@@CK )@@G@@. @D@@@@IITIM PRINT E20,L20 . TELL USER. @D@@@@CL )@@G@@ J ERXT . ERROR TERM. @]@@@@CYLERR . CM )@@G@@@D@@@@ LMJ X10,IDMSG . PRINT SIGNON. @B@@@@ CN )@@G@@ PRINT IER8,LIER8,2 . @^@@@@ J FEXT@B@@@@CO )@@G@@ERXT . ERROR TERMINATION HANDLING. @E@@@@ S X11,CP )@@G@@ERMD . SET ERROR FLAG. @]@@@@FEXT . @D@@@@ L,CQ )@@G@@U A1,07 . GET FD 'B'. @E@@@@ TNZ,S1 ASGSCR )@@G@@AV . TEST FOR WAS ASG. @C@@@@ S,S1 A1,FREUI+1CS )@@G@@ . SET 'B'.@D@@@@ L,U A0,FREUI . DO THE FCT )@@G@@REE. @B@@@@ ER CSF$ . @H@@@@ TZCU )@@G@@ NOSPE2 . WAS THERE A SEPARATE OUTPUT FILE? @C@@@@CV )@@G@@ J FEXT2 . NO. @E@@@@ TNZ,S1 CW )@@G@@ ASGSAV+2 . WAS OUTPUT ASG'ED. @D@@@@ S,S1 A1,FCX )@@G@@REUO+1 . NO, SET 'B'. @]@@@@FEXT2 . @C@@@@ L,U CY )@@G@@ A0,FREUO . DO THE @C@@@@ ER CSF$ CZ )@@G@@ . FREE. @D@@@@ PRINT AE8,AL8,1,1 . TYPE END EDQ. DA )@@G@@@B@@@@ ER EXIT$ . @C@@@@/ . INITIADB )@@G@@LIZATION I DANK DATA AREA. @[@@@@. @E@@@@INFOR RES 46 DC )@@G@@ . INFOR TABLE AREA. @E@@@@PIER2 + 0 DD )@@G@@ . FLAG TO PRINT R-O. @F@@@@PIER6 + 0 DE )@@G@@ . FLAG TO PRINT PF AS DATA. @B@@@@ ON P1SYS=0 DF )@@G@@ . @A@@@@SLIB 'LIB$ ' . LIB$ TEST. @#@@@@ OFF DG )@@G@@@[@@@@. @D@@@@ETAB2 F 0,0,12,LEVMSG . FOR ID LINE DH )@@G@@@D@@@@ RES 5 . EDIT$ PACKET. @]@@@@LEVEL DI )@@G@@ . @H@@@@. 'EDQ 1.0 ' . FIRST VERSION FROM FDJ )@@G@@LAP ANALYSIS. @H@@@@. 'EDQ 1.1 ' . FIRST MADK )@@G@@CRO HANDLING VERS MAY 72. @G@@@@. 'EDQ 1.5 ' DL )@@G@@ . FINAL BEFORE NEXT MAJOR -FEB. 73@G@@@@. 'EDQ 2.0 ' DM )@@G@@ . INTRODUCES VARIABLES.SEPT. 73. @H@@@@. 'EDQ 2.1 ' DN )@@G@@ . CLEANUP - BETTER PRINTFILE HANDLING. @G@@@@. 'EDO )@@G@@DQ 2.2 ' . RATIONALIZE L,F,C COMMANDS. @G@@@@ DP )@@G@@ . FIX BUGS IN COMPLEX MACROS. @C@@@@DQ )@@G@@. . MAR 74. @G@@@@. 'EDQ 2.3DR )@@G@@ ' . ADD TEXT CONCATINATE/EXPAND. @C@@@@ DS )@@G@@ . SEP 74 @H@@@@. 'EDQ 2.4 ' DT )@@G@@ . BUG FIXES TO MACROS AND VARIABLE NAME @H@@@@ DU )@@G@@ . HANDLING, ESP USE OF 'RP' IN MACROS. @E@@@@ DV )@@G@@ . EXPAND 'EX' COMMAND.@G@@@@ DW )@@G@@ . INTRO BUFFERS FOR L,F AND C. @C@@@@ DX )@@G@@ . NOV 74. @C@@@@ ON P1SYDY )@@G@@S=0 . PRE P1. @B@@@@ 'EDQ 2.4 ' . DZ )@@G@@@^@@@@ OFF . @B@@@@ ON P1SYS EA )@@G@@ . @B@@@@ 'EDQ 2.4P' . @^@@@@ OFEB )@@G@@F . @]@@@@LEVMSG . @G@@@@ RES 12 EC )@@G@@ . MORE SPACE FOR CYCLE AND TDATE. @D@@@@PQUAL ' ' ED )@@G@@ . QUAL FROM PCT.@E@@@@RQUAL ' ' . PREE )@@G@@OJID FROM PCT. @C@@@@KEY1 ' ' . KEY1 EF )@@G@@@C@@@@KEY2 ' ' . KEY2 @F@@@@RKEYIS + EG )@@G@@ 0 . FOR KEY CHECKS. SET IF: @E@@@@ + EH )@@G@@ 0 . INPUT READ KEY OK. @E@@@@ + EI )@@G@@ 0 . OUTPUT READ KEY OK. @C@@@@ . MUST BE ABLEEJ )@@G@@ TO READ OUTPUT TOC!! @E@@@@WKEYIS + 0 . SAEK )@@G@@ME FOR WRITE KEY. @B@@@@ + 0 . @B@@@@EL )@@G@@ + 0 . @F@@@@ASGUP1 + 0 EM )@@G@@ . FOR ASSIGNED TO ANOTHER. @B@@@@ + 0 EN )@@G@@ . @B@@@@ + 0 . @F@@@@EO )@@G@@NAMD 'NAME$ ' . DEFAULT ELT NAME IN TPF$. @^@@@@EP )@@G@@TAND 'AND ' . @^@@@@TAR 'ARE ' . @^@@@@TIS 'IEQ )@@G@@S ' . @B@@@@INUSE ' IN USE.' . @C@@@@STTAB ER )@@G@@ . POINTER ARRAY FOR TAB SETTINGS. @C@@@@ + 1,STES )@@G@@FN . NONE. @C@@@@ + 1,STFI . ELET )@@G@@T. @C@@@@ + 1,STAI . ASM. @C@@@@ EU )@@G@@ + 1,STCI . COB. @C@@@@ + 1,STEV )@@G@@FI . FOR. @D@@@@STTABL EQU $-STTAB-1 . LEEW )@@G@@NGTH-1. @B@@@@ . CURRENT END OF SUB-TYPES. @ @@@@STFN EX )@@G@@ . USED FOR NONE. @B@@@@ + 1,7 . 8 EY )@@G@@@B@@@@ + 1,15 . 16@B@@@@ + EZ )@@G@@ 1,41 . 42@C@@@@ + 1,72 . 73FA )@@G@@. @B@@@@ + 0 . @G@@@@STFI . FB )@@G@@USED FOR ELT, FOR, AND ALL OTHERS EXCEPT ASM,COB, AND NONE.@D@@@@ FC )@@G@@ + 1,6 . TAB TO 7. @B@@@@ + FD )@@G@@ 1,15 . 16@B@@@@ + 1,41 . FE )@@G@@@B@@@@ + 1,72 . @D@@@@ + FF )@@G@@ 0 . TERMINATOR. @^@@@@STAI . FOR ASM. @C@@@@FG )@@G@@ + 1,10 . COL 11. @B@@@@ + FH )@@G@@ 1,20 . @B@@@@ + 1,38 . FI )@@G@@@B@@@@ + 1,72 . @B@@@@ + FJ )@@G@@ 0 . @^@@@@STCI . FOR COB. @C@@@@ + FK )@@G@@ 1,7 . COL 8. @B@@@@ + 1,11 FL )@@G@@ . @B@@@@ + 1,72 . @D@@@@ FM )@@G@@ + 0 . TERMINATOR. @F@@@@RWKMSK + FN )@@G@@ 0001700000000 . MASK FOR CSF$ STATUS. @E@@@@REJM 'REJECTEFO )@@G@@D: ' . FOR ASG FAILED. @E@@@@BLANKS ' 'FP )@@G@@ . 2 WRDS FD BLANKS. @C@@@@FCY ' ' FQ )@@G@@ . F-CYCLE @E@@@@ASGPK P 1,7,ASGIMH . EDIT PKTFR )@@G@@ FOR @ASG @^@@@@FRMIMG ' '@F@@@@ RES 8 FS )@@G@@ . SPACE FOR ER FACIL$ PKT. @^@@@@FRMIMI ' 'FT )@@G@@@E@@@@ RES 8 . FACIT$ FOR INPUT. @^@@@@FU )@@G@@FRMIMO ' '@E@@@@ RES 8 . FAFV )@@G@@CIT$ FOR OUTPUT. @D@@@@FEDA 'EDIT$A ' . FACIL$ PFW )@@G@@KT. @B@@@@ RES 8 . @D@@@@FEDB 'EFX )@@G@@DIT$B ' . FACIL$ PKT B. @B@@@@ RES 8 FY )@@G@@ . @C@@@@TPFIMG 'TPF$ ' . TPF$ FZ )@@G@@@D@@@@EXTFNM ' ' . EXTERNAL TEMP.@D@@@@ASGIMRGA )@@G@@ '@ASG,A ' . ASG,A RESTORE.@E@@@@ADDIM '@ADD GB )@@G@@ ' . FOR LIBRARY ADD. @D@@@@USEI '@USE SI$, 'GC )@@G@@ . USE INPUT @D@@@@USEO '@USE SO$, ' GD )@@G@@ . USE OUTPUT. @C@@@@USEIN 'SI$ ' . USE SI. GE )@@G@@@C@@@@USEON 'SO$ ' . USE SO. @C@@@@FREUI '@GF )@@G@@FREE,A SI$. . ' . FREE SI @C@@@@FREUO '@FREE,A SO$. . ' GG )@@G@@ . FREE SO.@G@@@@USEL + 0 . SAVE OF GH )@@G@@COL POINTER FOR USE. @D@@@@MCLTBL RES 12 . SPGI )@@G@@EC 3 TABLE. @B@@@@ED1 '@ASG,T EDIT$A,F///1200 ' @B@@@@ED2 GJ )@@G@@ '@ASG,T EDIT$B,F///1200 ' @F@@@@. INITIALIZATION DATA AREA. (SGK )@@G@@HOULD NOT BE PART OF REENTRANT). @[@@@@. @A@@@@ ASCII GL )@@G@@ . ASCII MSGS. @B@@@@AE8 'END EDQ.' . @B@@@@GM )@@G@@AL8 EQU $-AE8 . @A@@@@ FIELDATA . BAGN )@@G@@CK TO FD. @[@@@@. @C@@@@CER1 '1101:MUST USE PROCESSOR CALL.' GO )@@G@@ . @B@@@@LCER1 EQU $-CER1 . @D@@@@IER1 '1GP )@@G@@102:UNABLE TO READ SPECIFICATION FIELD.' @B@@@@LIER1 EQU $-IEGQ )@@G@@R1 . @E@@@@IER2 '1204:OUTPUT FILE IS READ-ONLY. R-OPTIGR )@@G@@ON SET.' @B@@@@LIER2 EQU $-IER2 . @E@@@@IER3 GS )@@G@@ '1103:OUTPUT FILE REQUIRES READ OR WRITE KEY.' @B@@@@LIER3 EQGT )@@G@@U $-IER3 . @C@@@@IER4 '1104:INPUT FILE REQUIRES GU )@@G@@READ KEY.' @B@@@@LIER4 EQU $-IER4 . @E@@@@IER5 GV )@@G@@ '1105:INPUT FILE NOT IN PROGRAM FILE FORMAT.' @B@@@@LIER5 EQGW )@@G@@U $-IER5 . @E@@@@IER51 '1106:OUTPUT FILE NOT IN PGX )@@G@@ROGRAM FILE FORMAT.' @B@@@@LIER51 EQU $-IER51 . GY )@@G@@@G@@@@IER6 '1107:FILE IS EMPTY OR PROGRAM FILE. REQUIRES ELEMENT NAGZ )@@G@@ME OR'@^@@@@ ' D-OPTION.' @B@@@@LIER6 EQU $-IER6 HA )@@G@@ . @E@@@@IER7 '1209:**WARNING - FILE NEARLY FULL. PACK OR HB )@@G@@INCRE'@ @@@@ 'ASE MAX SIZE SOON!'@B@@@@LIER7 EQU $-IEHC )@@G@@R7 . @G@@@@IER9 '1210:**WARNING - OUTPUT ELEMENT ALREAHD )@@G@@DY EXISTS IN FILE.' @B@@@@LIER9 EQU $-IER9 . HE )@@G@@@C@@@@E2B '1202:NO EOF SENTINAL.' . @B@@@@L2B EQHF )@@G@@U $-E2B . @C@@@@E4 '1108:SYNTAX ERROR.' HG )@@G@@ . @B@@@@L4 EQU $-E4 . @C@@@@E9 HH )@@G@@ '1201:II KEYIN BY OPERATOR.' . @B@@@@L9 EQU $-E9HI )@@G@@ . @B@@@@NTMSG 'NOT IN' . @B@@@@HJ )@@G@@IER8 '1109:CYCLE # OUT OF RANGE.' @B@@@@LIER8 EQU $-IEHK )@@G@@R8 . @F@@@@IER10 '1112:INPUT FILE EQUIPMENT TYPE NOT SEHL )@@G@@CTOR FMT MS.' . @B@@@@LIER10 EQU $-IER10 . @F@@@@HM )@@G@@IER11 '1113:OUTPUT FILE EQUIPMENT TYPE NOT SECTOR FMT MS.' . @B@@@@HN )@@G@@LIER11 EQU $-IER11 . @H@@@@E15 '1110:OUTPUT WOHO )@@G@@ULD DESTROY INPUT P.F. : ''X'' OPTION REQUIRED.' . @B@@@@L15 EQHP )@@G@@U $-E15 . @D@@@@E19A C$OMPK 6*L19,E19 HQ )@@G@@ . COM$ PKT. @C@@@@E19 'EDITOR INIT ACTIVE.' . FOR OPR.HR )@@G@@@B@@@@L19 EQU $-E19 . @B@@@@E20 'EDITOR HS )@@G@@INIT TIMEOUT.' . @B@@@@L20 EQU $-E20 . HT )@@G@@@B@@@@E21 'EDQ INIT ERROR TERMINATION.' @B@@@@L21 EQU HU )@@G@@ $-E21 . @B@@@@E22 '1204:COULD NOT ASSIGN FILE.' .HV )@@G@@@B@@@@L22 EQU $-E22 . @D@@@@E23 '1205:ELHW )@@G@@EMENT COULD NOT BE FOUND IN FILE.' .@B@@@@L23 EQU $-E23 HX )@@G@@ . @F@@@@E24 '1114:OUTPUT FILE IS TOO FULL TO HOLD INPUT HY )@@G@@ELEMENT.' @B@@@@L24 EQU $-E24 . @E@@@@ HZ )@@G@@ END INIT . END OF INITIALIZATION. ___-CER1 IA )@@G@@ . @D@@@@IER1 '1102:UNABLE TO READ SPECIFICATION FIELD.' @B@@@@IB )@@G@@LIER1 EQU $-IER1 . @E@@@@IER2 '1204:OUTPUT FIC )@@G@@*[@@@@*SDFF*@ @@@@. NYU SYSTEM MACRO LIBRARY @D@@@@. THE FOLLOWING EDID )@@G@@Q MACROS SHOULD BE USEFUL TO MANY @C@@@@. USERS. SOME OF THEM DEFINE IE )@@G@@COMMANDS WHICH ARE@C@@@@. AVAILABLE IN @ED AND/OR @EDM, BUT NOT IN @EDQ.IF )@@G@@@[@@@@. @C@@@@. EDM'S 'O' COMMAND - PRINT THE NEXT 'N' LINES @^@@@@IG )@@G@@O = BR::N::P $(1)::V @[@@@@. @^@@@@. ED'S MOVE-UP COMMAND @]@@@@IH )@@G@@- = U $(1) @[@@@@. @B@@@@. EDM'S 'HOLD' COMMAND - GET CURRENT IMAGEII )@@G@@@]@@@@HOLD = IG @[@@@@. @C@@@@. EDM'S 'DUP' COMMAND - DUPLICATE HEIJ )@@G@@LD IMAGE @]@@@@DUP = IP @[@@@@. @E@@@@. EDM'S 'DHOLD' REVISED IK )@@G@@- HOLD IMAGE, AND DELETE N LINES @#@@@@DH = IG::D $(1) @[@@@@. IL )@@G@@@B@@@@. REPLACE CURRENT LINE WITH HELD IMAGE @]@@@@IR = D::IP @[@@@@IM )@@G@@. @A@@@@. ED'S PRINT-THE-WHOLE-THING COMMAND@#@@@@P! = T::P 99999 IN )@@G@@@[@@@@. @F@@@@. 'COM' MACRO HELPFUL FOR ADDING COMMENTS TO ASSEMBLY IO )@@G@@LISTINGS - @F@@@@. WILL ADD COMMENT STARTING AT COLUMN 41. IF COMMENT IP )@@G@@IS MORE THAN@E@@@@. ONE WORD, YOU CAN'T USE A SPACE AS THE DELIMITER, THIQ )@@G@@OUGH. @[@@@@. @ @@@@. EXAMPLES: COM COMMENT @A@@@@. IR )@@G@@ COM+THIS IS A COMMENT+@[@@@@. @C@@@@COM = A+41 . $(1) IS )@@G@@ @ @[@@@@. ___^[NE-[ELODDIC8)CDO^[#D9GE(HD0)A)1 0)^[DIT )@@G@@C0)CTJD(HC(IE))DDN^[HD9MC*)E-CCDI^@)@J@@@@ 0)D9IC*)E9JEL^ ))FDJE*)CT[D0$IU )@@G@@E))E(NC*)CC)ETKCD#C*)CDN^[OD[ ^[^C(GDDHDDOC(M ))*[@@@[*SDFF*@L@@@@C[ C-LIV )@@G@@^[DES)CC)E- F[O^[ C-DE-JEK)D([DDIE-[DDIC(^^[]FC)CDO^1O 0)DDOES)D([DDI^[[IW )@@G@@C-QCDIE-[C9 ES)D9QC(M^@)@G@@@@D9OD[ EK)E- F[O^[ C-DE-JELN^[[E1[DDGCD]D- IX )@@G@@^[JD0)E-CDDN^[NFDNE- D*)CDMC*'@H@@@@AC,^[DE))D[[ES)CC)C9JD9^^[NC(O^[JC0)IY )@@G@@E[MDDIE-ADDGC*)D[[D1^D-DD1B^[#D9HD([D1^ES,@C@@@@AK,^[DE))D[[D1^D- ES)C1PIZ )@@G@@D-G^[[ET#DDD^[#D9^C*,^@)@G@@@@AS,^[DE))D[[ES)E(NC(M^[QCDMDD[CLGC(N^[[D1^JA )@@G@@^[[^[HCD#ELJ^[AC([E-PEL 0)^@)@I@@@@C1JEK)C1PELOD[ EK)C- E-[DDGES?^[NC( JB )@@G@@^[OD[ ^[GD9IC8)E1 ELNDDJD0)D9A^[OD[DES)DDOC(H 0)@L@@@@C1JEK)CC)D([D1PCDGJC )@@G@@^[^C(NCTMDD]DDIC8)C[ C-L^[DD0)C9MC([E- EK)C- E-[DDG ))E(NC*)E-CC*)C1JD-GJD )@@G@@D9RDDIC8)^@)@A@@@@CTJD(HCDIC)'^[@D1 E9N -JD-H^[ C-L^@)@]@@@@ K% K% K%^@)JE )@@G@@@[@@@@^@)^@)@C@@@@I-*G*)H--I->IT4^[?G(6G(?^[\G0)C[>G-1^[(IS)AK,A),@[@@@@JF )@@G@@^@)^@)@G@@@@CDI^[ C-L^@2 04^[HCDIE([D))DDN^[[E1[DDGCD]D- BK)E(NC*)E-CC*)JG )@@G@@CTJD(HCDIC))@[@@@@^@)^@)@^@@@@C[IC(RES?D9GD*)^@)C(^EC)@[@@@@^@)^@)@#@@@@JH )@@G@@E-J^[KELDD1O^[DE),@[@@@@^@)^@)@D@@@@CC)ETPD(HCDMFC)D9A^[#D[[D1BC(N^[AD9GJI )@@G@@D-JE9N^[]C(GD9R 0)@[@@@@^@)^@)@[@@@@^@)^@)@[@@@@^@)^@)@F@@@@^@)^@)^@)^@)JJ )@@G@@^@)^@)^@)^[ C-L^@)AK,A))^@)^@)^[IH96G(!GL>IK)AC9A84^@)@[@@@@^@)^@)@L@@@@JK )@@G@@^@)^@)^@)^[OH[(IS)H->I1>H))H9&^[ C-L^[0IL\I1(G->IS)GC)H15H(+G(2^[\G0)H((JL )@@G@@H1\IK)GT\IL2G(^[-G-=G(=^[IS,@M@@@@^@)^@)^@)^[NG(6G(2GD?^[GT4HD\H13^[-H1=^[G(,^[!GD=G*)I-\^[4H[>^[4G(8I))H(\G->^@)@M@@@@H[-H1=H-(H1$ 0)E->JO )@@G@@J[4^[!H9=G*)GL5G1&G(2IS)GD2G*)H1\I8)GT\IL2G(H0)JD\JP )@@G@@I*)H->GD6G*)I->J[4@M@@@@H(\G-> ))IT\^[4H[>^[\H-=^[7GD2H1(H1$^[-GL\I(4^[7JQ )@@G@@H[>H0)I->J[4^[!H9=G*)GT\I(?G))IT-G1>H-9^[+G*)I-5IL,G(=^[\G1&@M@@@@H1\^[?JR )@@G@@H9,G9>IK)GD0I[?HD>IS,^[IH8)H-(H1>IS?^[\IK)I[-IL4HD-H))H-(H1>IS?^[7HD?H))JS )@@G@@GL>^[?H93I))I9*G(,^[4G(8I))^@)@ @@@@H(\G->^[(IS)I-5IL,G(=^[\G1& 0)@L@@@@JT )@@G@@^@)^@)^@)^[DH0)GD=G-(I-(H9, ))IT\H(>^[^[4H8)GL>JU )@@G@@I-4G(2^[*GD,G-?G*)^9*GD,G9(H1$@#@@@@I[-IL-G92GD0H[3^8,@M@@@@^@)^@)^@)^[[JV )@@G@@^[,I(!GL>IK)H9&^[&GD(IL?JC)I(,H-(HT>H-9^[+I($IS)I9>IL>^[&HD8G(=^[(H0)H(-JW )@@G@@GT2H8)H[-H1=H-(H1$ 0)DD,@M@@@@GD=G-(I-(H9, ))GC)H1>I8)GD2G95H(>H14^[2G(&JX )@@G@@G(2G(,GT>^[&H92H*)H[-IS)GL>G(,^[0IL\I1(G->G),^@= @% C?^[(G0)I(3G(=@L@@@@JY )@@G@@HD,^[-^[!GD^[-IL$JZ )@@G@@I(!G(,I))HD!GD$G*)I-\^[+G*)^@)@L@@@@HD,IT>IL4G(= ))HD,IT4G(-G))H9&^[%I(3KA )@@G@@I))GC)IT(H1$H->^[-IL$I(!G(,I),^[[H0)HD,I-2HD,IT(GS)I1-IL(GD+H-> ))@M@@@@KB )@@G@@D1[ELB ))HD3^[0IL\I1(G->G))I-\^[$HD6G*)I-*G*)H15H(+G(2^[\G0)GD2G95H(>H14KC )@@G@@IS)I9*HDIL>^[0IL>IT>H14^[\H0)@^@@@@I-*G*)H(-GT2H8)GT-H-? 0)@M@@@@KD )@@G@@^@)^@)^@)^[OH[>^[ F@)GT\H(!GD,G))H[-IS)GL>G(,^[>J[0GD,G->G))I-\^[-H-?H97KE )@@G@@^[4H[>^[&H92H*'^[ F@)^S) ))I9*G(2G*)@H@@@@^S)HD3^[4H[>^[?HD,G*)H15H(+G(2KF )@@G@@^[\G0)I-*G*)H-(H1>^[4H8)GL>^@$G(8G(^[?KG )@@G@@H9^[-^@$KH )@@G@@IL>I[>GD4^8)@M@@@@G1-GT(H-(I-9 0)E-*G(2G*)HD3^[\H1>^[2G(0G(-I))GL5G1&G(2KI )@@G@@^[&H92^[?H9IK)^@)@M@@@@G1\IK)GT*GD,KJ )@@G@@G9> 0)CC)H-\GT-I->^[\IK)G1(H1=^[J[4^[&H9?H-\I9(H1$^[(I))I9(KL )@@G@@H-?^[5IT>^[-IS)HD4IS)I->J[4^[4H[>^[3I-2HD,G8)G12H9!^[4H[>^[?GD3I))@M@@@@KM )@@G@@H-\GT-I->^[\IK)G1(H1= 0)ET(H((H--IL?JC?^[-^[J[4^[7HD?H))I(3G*)I-*G*)^@)@M@@@@I->J[4^[&IL\H*)I-*G*)I[2G(6HD\KO )@@G@@I(3^[^[5IT>G))GL>I-7KP )@@G@@G(>H0)@M@@@@I-*G*)GT\H(!GD,G))I-*GD4^[0IL\I1(G->G))I-*G*)I->J[4^[-H1=^[4KQ )@@G@@H[>^[G1>IL>H1^@)@^@@@@I[2G(6HD\I(3^[4G(8KR )@@G@@I),^@)@M@@@@^@)^@)^@)^[KIL\GL?G(!IS)I9(I-*^[4H[>^[5IT>^[\G0)I-*G*)D-JCD^KS )@@G@@^[G(,^[GT4G(= 0)^@)@H@@@@^@)^@)^@)^[[^[&G(7KT )@@G@@^[>G1&HDH1G(,^[!GD=G*,@L@@@@^@)^@)KU )@@G@@^@)^[OH[>^[*GD,G-?HD,G8)H9&^[[ET#DDD^[AD9ME-MCDI^[7IL(I-4G(,^[&HD?G(3^[*KV )@@G@@GD3^[+G(>H0)I->IT4G(= 0)@L@@@@^@)^@)^@)^[AHD,GD?H-9 ))H((H1\IK)I(0G--I->KW )@@G@@IS)I-\^[4H[>^[!GD,I(-H))I9>IL>^[!GD=G*)I-\^[2G(&H->GT4^[4H[>@ @@@@G(8I[-KX )@@G@@H1=G(=^[&GDIS,@[@@@@^@)^@)@[@@@@^@)^@)@[@@@@^@)^@)@G@@@@^@)^@)KY )@@G@@^@)^@)^@)^@)^@)^[ C-L^@)AK,AS)^@)^@)^@)ET>I[4G(!GL>IK)^@1BC7A))^@)@[@@@@KZ )@@G@@^@)^@)@[@@@@^@)^@)@M@@@@^@)^@)^@)^[OH[(IS)H->I1>H))H9&^[ C-L^@)I[2H96HD=LA )@@G@@G(3^[\H1>^[!GD(H0)H1>I8)G1>GD4I(2G*?^[-H1=^[-^[&G(7^[\I-*G(2@^@@@@H((H1\LB )@@G@@IK)GD=G-(I-(H9,IS,@[@@@@^@)^@)@M@@@@^@)^@)^@)^[OH[>^[!GD(H0)H1>I8)G1>GD4LC )@@G@@I(2G*)HD3^[4H[>^@$I-8^8)GT\H(!GD,G),^[OH[(IS)GT\H(!GD,G))GT-I(3G(3^[ C-LLD )@@G@@@M@@@@I-\^[>H14G(2^[\IK)H->GD6G*)^94G(8I))^[!H9=G*$ 0)^[OG(8I))H(\G->^[(LE )@@G@@IS)GC)H(\G->^[3I(^[?HD,G(3@M@@@@HD,^[4H[>^[&HD?G*)GD2G*)LF )@@G@@I-2G(-I->G))GD3^[4G(8I))IT4IL(H1$IS)GD,G))GD2G*)GT\H1IK)I-\ ))I9(I-*HD,^[4H[>^[?HD!HD4IS)H9&^[7H92G))LH )@@G@@GL\I(,G--IL(G(3 ))G1(I))I-*G*)H-(H1>IS)I9(I-*HD,^[4H[>@M@@@@H(-IL$HD,IS)LI )@@G@@IT0G(G))H9,^[4H[>^@)^94J@$^@)GT\H(!GD,G),^[OH[>^[0I(2I[\IT>^[\G0)LJ )@@G@@I-*HD3^[&GDG-(I-(H1$^@)H9&^@)I->J[4I(-H))^[!GD4G(2HD-H))^[(H0)^[4H[>@M@@@@LL )@@G@@IT9IT4G(! 0)DD,^[0GD2I-(GT5H--IK?^[(I))^[0G(2H((I-3^@)I-*G*)^[GT4LM )@@G@@HD\H0)^[\G0)^[4G(8I))^[+JC)IT(H(0H-9@M@@@@HD,IT>IL4HD,G8)GD,G))G->H->I-(LN )@@G@@H1$^[7H92G-3^@)I9(I-*H95I))IL>G9-IL=^[4H8)I-*G*)IL>IT5H-4HD,G8)H->H1$I-*LO )@@G@@IS)H9&@M@@@@H-(H1>IS,^[[G14G(2^[4H[>^[4G(8I))H[-IS)GL>G(,^[GT4G(=LP )@@G@@ ))GC)I[-IT3^[!GD9^[+G*)H(-G->^[4H[2H95G9*^[4H[>@H@@@@G1(H-> ))H92^[0GD2LQ )@@G@@I))H9&^[4H[>^[&HD?G*?^[7HD4H@)C(^EC)HD,^[4G(8I))H(\G-> 0)^@)@[@@@@^@)^@)LR )@@G@@@M@@@@^@)^@)^@)^[[H1\I-*G(2^[-G-=HD4HD\H0)^[(IS)^[4H[>^@)GD+HD?HD4JC)^[4LS )@@G@@H8)IL>GD=^[[ET#DDD^[AD9ME-MCDI^[7IL(I-4G(,@M@@@@G1\IL!GD4I->G))H95I-0I(4LT )@@G@@^[&HD?G(3 0)E-*HD3^[&GDG(!IS)I-\^[+G*)I9\IL:HD,G8?^[+I(4^[(LU )@@G@@I))IT*H95H-=@M@@@@H1\I))GL>^[IL>G))I-\^[+G*)^@$IT4GD+H->^8)^[5LV )@@G@@H14HD?^@)CDNCTDDC)^[AD9ME-MCDI^@)HD3^[2G(?G(-IT>G))GD3@M@@@@I-*G(2G*)H(-LW )@@G@@JC)^[3I-(H-?^[+G*)GT*GD,G9>IS)^[(H0)^[4H[>^@)G1\IL!GD4IS)^[\G0)^[4H[>^@)LX )@@G@@G1(H->IS)^[7H[(GT*^[-IL>@#@@@@G9>H1>IL-I->G),^@)@[@@@@^@)^@)@M@@@@^@)^@)LY )@@G@@^@)^[OH[>^[0IL(H1^[^@)H(-H15GD?^@)HD3^@)I-*LZ )@@G@@G*)^[-G-=HD4HD\H0)^[\G0)H(\IL>@M@@@@HD,G1\IL!GD4HD\H0)HD,^[4H[>^[DH14IL\MA )@@G@@G-5GT4HD\H0)^[4H8)^[0IL\I1(G->^@)GC)GL>I-4G(2^[(H1=HDI1>IK?^[(H0)^[-G-=HD4HD\H0?^[4H[>^[[I[0G(,MC )@@G@@G-(J@)H9,^[ C-L^[!G(3IT-G9>IS)H[-IS)GL>G(,@M@@@@GL2H95G9*I))I(0^[4H8)G--MD )@@G@@I-> ))GD,G))^[-H-?^@)IL>H->I1-H14^@)C(^EC)^[!G(3IT-G9>IS)^[,H97^@)GT\H14ME )@@G@@GD(H0)^[4H[>@G@@@@HD=G(,I-(G19HD,G8)I[-I[-G92GD0H@)H15H(+G(2^[(H0)I-*G*)MF )@@G@@CD0I[>H1=HD8 0)^@)@[@@@@^@)^@)@[@@@@^@)^@)@[@@@@^@)^@)@G@@@@^@)^@)^@)^@)MG )@@G@@^@)^@)^@)^[ C-L^@)D- E1 D))^@2 02^@)^@)^[EI(,G*)^@1BC7A))^@)@[@@@@^@)^@)MH )@@G@@@M@@@@^@)^@)^@)^[OH[(IS)H->I1>H))H9&^[ C-L^[!GD(H1?JC)G1(J[>IS)^[-^@)G1>MI )@@G@@I8)^[+I($IS)^[(H0)AK,AC)GD,G))I[2H96HD=G(3@M@@@@HD!I[2H96G(=^[>G1&HDMJ )@@G@@H1^@)GD,G))^[&HD,G))^@)GT\H(!GD,G-3 0)^@)D[\I9>I1>MK )@@G@@IK?^@)^[\H1>@M@@@@IT(G9,HD&HDG(,^[!GD=G*,^[OML )@@G@@H[>^@)IL>GD3H9,^[&H92^@)I-*HD3^@)GT*GD,G9>^@)HD3^@)I-\@M@@@@IT(H(0H-(G19MM )@@G@@^[4H[>^[ 0)ET0G(^@)GT*GD,MN )@@G@@G9>^@)HD3^@)I-*GD4^[4H[>@M@@@@G1\H-?H97HD,G8)GT\H(!GD,G-3^[,H97^[*GD6G*)MO )@@G@@GD?I->IL,GD4G*?^[0IL>G1>IL2G(= ))^[&H92H(3BK)G1< -?GS?G1= -?G)?G10@M@@@@MP )@@G@@H-0 ->= -?GT= 0)E-*G*)H1>I8)G1\IL!IS)I[2H96HD=G*)GC)IT(H(0H->IK)GD,G))MQ )@@G@@H(\IL>^[5H1(G1\IL!^[3GT*G(!G*,^[OH[>@M@@@@G15H1^[?^[-H1=^[&^[^[&MT )@@G@@H9?H-\I9(H1$^[4GD+H->^[$HD6G(3^[4H[>^[\H-=^[-H1=@#@@@@H1>I8)G1\IL!IS'^@)MU )@@G@@@[@@@@^@)^@)@ @@@@^@)^@)^@)^[\H-=^@)^@)^[,G(7^@)@ @@@@^@)^@)^@)^[&GS)^@)MV )@@G@@^@)^[& -<^@)@ @@@@^@)^@)^@)^[?GS)^@)^@)^[? -<^@)@ @@@@^@)^@)^@)^[&G))^@)MW )@@G@@^@)^[& -=^@)@ @@@@^@)^@)^@)^[?G))^@)^@)^[? -=^@)@ @@@@^@)^@)^@)^[&I@)^@)MX )@@G@@^@)^[& -0^@)@ @@@@^@)^@)^@)^[?I@)^@)^@)^[? -0^@)@ @@@@^@)^@)^@)^[>=^@)MY )@@G@@^@)^[& -< -=@ @@@@^@)^@)^@)^[?GT=^@)^@)^[? -< -=@[@@@@^@)^@)@M@@@@DD,^[-MZ )@@G@@G-=HD4HD\H0?^[4H[>IL>^[-IL>^[,G(7^[!H9=HD&HD>IL3^[7H[(GT*^@)H(-JC)^[+G*)NA )@@G@@^[3G(4^@)H9,^[4H[>^[?^[-H1=^[&@M@@@@GT\H(!GD,G-3 0)E-*G(3G*)GD2G*)G->ITG))HD,^[4H[>^@)H1>I8)H(-H15GD? 0)^[-H-3H8?^[4H[>^@$H0$^[-H1=^@$E*$NC )@@G@@@M@@@@GT\H(!GD,G-3^[*GD6G*)GL>G(,^[2G(0H--GT>G))GL9^@$ S/H0"^8)GD,G))^8!ND )@@G@@B-,B0$^@)G1\IK)^[!H96HD,G8)^[4H[>^@)H-(H1>@M@@@@I[\HD,I->IK)G-\I9,^[-H1=NE )@@G@@^[5I@)HD,^[4H[>^[&HD?G*?^[2G(3I[>GT4HD6G(?JC,^@)^[4H[>^@)H9?G))^[@M@@@@IT4HD?H))GD6GD(H--GL?G*)^[(H0)^[ C-L ))^[+I(4^[-IL>^[,NG )@@G@@H94^@)G->ITG))^[(H0)^[4H[>^@)H1>I8)^[!GD,I(-H),@M@@@@^@)^@)^@)^[ONH )@@G@@H[(IS)GT*GD,G9>^[2G(1I((IL>G))IT\H(>^[2G(,I(!GL>IL(H1$^@)H9&^[3G(^[!GD,I(-H),@M@@@@E-*G*)H(-HD,^[IL(H1$ ))^@)GD,G))^[4H[>@M@@@@NK )@@G@@GD=G-(I-(H9,^[\G0)^[4H[>^@)IT>GT4HD\H0)^[7H[(GT*^@)G->ITIS)^@)I-*NL )@@G@@G*)^[,G(7^@)H(\G-(G1(G(2IS,^@)E-*HD3@M@@@@GT*GD,G9>^[2G(=I(^[4NM )@@G@@H94GD?^[,I(!GL>IK)H9&^[^[,G(7^[=H9G(,^[0IL>I[-IL>G))I-\^[$H8)I9(I-*^[4H[(IS)I1>IL3HD\NO )@@G@@H0,^@)E-*G*)^[!H93I))^[(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ON )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ST )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@US )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ED )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ER )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ES )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ET )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[@@@@*SDFF*@F@@@@@SORTF IS A PROCESSOR DESIGNEDEV )@@G@@ TO ASSIGN THE MOST EFFICIENT SORT @D@@@@FILES FOR A PARTICULAR SORT. EW )@@G@@DETAILS IN LONG ITEM. @[@@@@******@[@@@@ @D@@@@THE CALL IS: @SOEX )@@G@@RTF<,OPTIONS> NREC,RECSIZ @[@@@@ @C@@@@WHERE NREC = NUMEY )@@G@@BER OF RECORDS TO BE SORTED @[@@@@ @G@@@@ RECSIZ = SIZE OF EEZ )@@G@@ACH RECORD, IN CHARACTERS. IF A '/W' FOLLOWS @D@@@@ THEFA )@@G@@ RECSIZ, THEN SIZE IS IN WORDS. @[@@@@ @G@@@@THE ONLY MEANINGFUFB )@@G@@L OPTION IS 'X', WHICH CAUSES SORTF TO JUST PRINT OUT @D@@_@THE SORT FILFC )@@G@@E ASSIGN IMAGES, AND NOT TO ASSIGN THEM. ___^@)@[@@@@^@)^@)@M@@@@E-CC*)FD )@@G@@D9ID-T^[HC([D1DD1BC1PD))D9KE-DD9I^[DES)^9S^8?^[R*[@@@@*SDFF*@F@@@@TCORE$FE )@@G@@* 0,$. MAKE THIS A 'NOP' BRANCH @^@@@@ FF )@@G@@ +0710000,$-1. @#@@@@ END. ___@@@@@@@@@@@@@@@@@@@@@@@@@@@FG )@@G@@)@@@K* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@9@@@@@FH )@@G@@@@@@@@AA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@^@@[@@ @@@@@ @@[@@D@@@@@@@@]TCORE$ @@@@@@FJ )@@G@@@@@@@@TED READ ATTEMPTED ON NON-FORMATTED DATA @_C^RHNON-FORMATTED READFK )@@G@@ ATTEMPTED ON FORMATTED DATA @[I^Q(@[^^Q7@@]@90*[@@@@*SDFF*@A@@@@ FL )@@G@@ SORTF @#@@@@4MODIFIED @SORTF @F@@@@ @SORTFFM )@@G@@ CAME ORIGINALLY FROM THE UNIVERSITY OF MARYLAND. @C@@@@ WE HAVE MODFN )@@G@@IFIED IT FOR OUR PURPOSES, THE MAJOR@F@@@@ CHANGE BEING THE USE OF REMOVFO )@@G@@ABLE DISC PACKS WHEN THE SIZE OF @A@@@@ THE 'XB' FILE IS LARGE ENOUGHFP )@@G@@. @[@@@@SPACE @F@@@@ WE HAVE ADDED CODE TO CAUSE @SORTF TO ASSIFQ )@@G@@GN XB TO A PACK @F@@@@ CALLED 'SORT01' IF ITS SIZE IS GREATER THAN 3 PFR )@@G@@OSITIONS, AND TO @D@@@@ USE TWO PACKS, 'SORT01' AND 'SORT02', IF ITS SIFS )@@G@@ZE IS @G@@@@ GREATER THAN 45 POSITIONS. WE ALSO LIMITED XB'S SIZE TO 90FT )@@G@@ POSITIONS @]@@@@ (2 PACKS). @[@@_@SPACE @E@@_@ ANOTHER CHANGE WE FU )@@G@@MADE WAS THE ELIMINATION OF THE @LOG@G@@_@ MESSAGES SHOWING THE ASSIGN IFV )@@G@@MAGES. IN A LONG RUN PERFORMING MANY @E@@_@ SORTS, THE NUMBER OF @LFW )@@G@@OG MESSAGES COULD EASILY EXCEED THE @A@@_@ SYSTEM MAXIMUM, DEFINED IN COFX )@@G@@NFIG. ___^@)^@)CDID9OD[ EK)CTCCDIC9 ^[RC*)D([C- ^[RCDN^[OD[ ^[ D-DD(DD1[FY )@@G@@E-DD9I^[JC0)E-CC*)C[GD9B@L@@_@^[HC(NET[C9 ES)ETC*[@@@@*SDFF*@G@@@@ FZ )@@G@@ AXR$. WALTER GILBERT UNIVERSITY OF MARYLAND ADMINISTRATION@^@@@@GA )@@G@@C 'SORTF 2.2 '@^@@@@ RES 25 @F@@@@RECSIZ +0GB )@@G@@. RECORD SIZE, CHARACTERS @E@@@@NREC +0GC )@@G@@. NUMBER OF RECORDS @E@@@@START L GD )@@G@@ A0,(0102,C) . PRINT SIGN-ON LINE@ @@@@ ER PRINGE )@@G@@T$. @G@@@@ L,U A0,C. GET @SORTF IMAGE IN GF )@@G@@INFOR FORMAT@ @@@@ ER READ$. @E@@@@ L GG )@@G@@ A0,C. PICKUP OPTIONS WORD @G@@@@ LSSL A0,3GH )@@G@@. SHIFT 'X' OPTION INTO POSITION 5@H@@@@ S,S1 GI )@@G@@ A0,WB. STORE 'X' OPTION INTO SIGN POSITION @H@@@@ GJ )@@G@@ L,U A0,010106. LOOK FOR ELEMENT NAME IN 1ST SUBFIELD GK )@@G@@@ @@@@ LMJ X11,FIND. @I@@@@ J TRY12. GL )@@G@@ NOT, FOUND, LOOK FOR A FILE NAME INSTEAD @I@@@@FLD1 LMGM )@@G@@J X11,CVB. CHECK & CONV FIELD FROM FIELDATA DECIMAL GN )@@G@@@I@@@@ S A3,NREC. TO BINARY. THIS IS 'NUMBERGO )@@G@@ OF RECORDS'. @H@@@@ L,U A0,010206. LOOK FORGP )@@G@@ ELEMENT NAME IN 2ND SUBFIELD @ @@@@ LMJ X11,FIND. @H@@@@GQ )@@G@@ J TRY22. NOT FOUND, MAY LOOK LIKE FILE NAGR )@@G@@ME @I@@@@ LMJ X11,CVB. CONVERT FROM FIELDATGS )@@G@@A DECIMAL TO BINARY @H@@@@ S A3,RECSIZ. THGT )@@G@@IS IS THE RECORD SIZE, CHAR OR WORDS@I@@@@ L,U A0,010207.GU )@@G@@ LOOK FOR VERSION NAME. IF IT STARTS WITH @I@@@@ LMGV )@@G@@J X11,FIND. 'W', ASSUME RECORD SIZE GIVEN IN WORDS, GW )@@G@@@H@@@@ J ENDSCN. OTHERWISE, ASSUME IT IS GIGX )@@G@@VEN IN CHAR.@E@@@@CH SSL A0,30. ISOLATE 1ST LEGY )@@G@@TTER @D@@@@ TE,U A0,'W'. IS IT A 'W'? @H@@@@GZ )@@G@@ J ENDSCN. NO, ASSUME SIZE GIVEN IN CHARACTHA )@@G@@ERS @G@@@@ L A1,RECSIZ. CONVERT FROM WORDS THB )@@G@@O CHARACTERS@ @@@@ MSI,U A1,6. @ @@@@ S HC )@@G@@ A1,RECSIZ.@G@@@@ENDSCN LMJ X11,SORTF. LINK UP WITH @HD )@@G@@ASG-CARD GENERATOR@F@@@@ +NREC. USE A FOHE )@@G@@RTRAN LINKAGE @#@@@@ +RECSIZ.@I@@@@WB +0,'WJG'. HF )@@G@@ FLAG TO RECOGNIZE THIS CALL BY. SIGN = X @C@@@@ HG )@@G@@ ER EXIT$. DONE. @H@@@@TRY12 L,U A0,0HH )@@G@@10102 LOOK FOR A FILE NAME IN 1ST SUBFIELD @ @@@@ LMHI )@@G@@J X11,FIND. @E@@@@ J ERR1. NOT FOUNHJ )@@G@@D, ERROR! @E@@@@ J FLD1. FOUND, ALL IS HK )@@G@@OK. @H@@@@TRY22 L,U A0,010202. LOOK FOR A FILE NAMEHL )@@G@@ IN 2ND SUBFIELD @ @@@@ LMJ X11,FIND. @F@@@@ J HM )@@G@@ ERR1. TWO STRIKES AND YER OUT. @E@@@@ LMHN )@@G@@J X11,CVB. CONVERT TO BINARY @F@@@@ S HO )@@G@@ A3,RECSIZ. THIS IS THE RECORD SIZE @I@@@@ L,U HP )@@G@@ A0,010203. SINCE RECSIZ WAS FILE NAME, TYPE (CHAR @H@@@@HQ )@@G@@ LMJ X11,FIND. OR WORDS) WILL LOOK LIKE A REAHR )@@G@@D KEY.@I@@@@ J ENDSCN. NO 'READ-KEY' FIELD HS )@@G@@GIVEN, ASSUME WORDS @H@@@@ J CH. 'RHT )@@G@@EAD-KEY' FIELD GIVEN, LOOK FOR A 'W'@C@@@@ERR1 L A0,(0200+EHU )@@G@@MSG-MSG,MSG). @F@@@@ ER PRINT$. PRINT ANHV )@@G@@ ERROR MESSAGE. @ @@@@ ER ERR$. @D@@@@MSG 'IHW )@@G@@LLEGAL OR MISSING FIELD ON @SORTF CARD'. @[@@@@EMSG. @I@@@@FIND L HX )@@G@@ A1,(1,1). SEARCH INFOR TABLE FOR PARTICULAR FIELD HY )@@G@@@ @@@@ J FINDB. @F@@@@FINDA A,S6 A1,C-1,A1.HZ )@@G@@ ADD IN WORD COUNT, 1 OR 2 @G@@@@FINDB TNZ C,A1. IA )@@G@@ LOOK FOR END OF INFOR IMAGE @G@@@@ J 0,X1IB )@@G@@1. END FOUND, TAKE 'NO-FIND' EXIT. @F@@@@ TE,H1 IC )@@G@@ A0,C,*A1. IS THIS THE RIGHT FIELD? @G@@@@ J ID )@@G@@ FINDA. NOT FOUND YET, LOOK FURTHER. @H@@@@ L,IE )@@G@@S6 A0,C-1,A1. FOUND, GET FIELD LENGTH, 1 OR 2 WORDS @I@@@@IF )@@G@@ TE,U A0,1. DECIDE WHETHER TO PAD WITH BLANKIG )@@G@@S OR NOT @ @@@@ J FINDC. @D@@@@ L IH )@@G@@ A0,C,A1. LOAD FIELD. @F@@@@ L A1,(' II )@@G@@ '). PAD WITH A WORD OF BLANKS@C@@@@ J 1,X11. IJ )@@G@@ RETURN @D@@@@FINDC DL A0,C,A1. LOAD FIEIK )@@G@@LD @G@@@@ LXM,U A1,050505. FORCE LAST 3 CHARACTIL )@@G@@ERS BLANK @ @@@@ J 1,X11. @I@@@@CVB SZ IM )@@G@@ A3. CONVERT LEFT JUSTIFIED FIELDATA DECIMAL @H@@@@IN )@@G@@CVBA LDSC A0,6. NUMBER IN A0 & A1 TO BINARY IIO )@@G@@N A3 @E@@@@ AND,U A1,077. ISOLATE CHARACTER IP )@@G@@@D@@@@ TNE,U A2,5. IS IT A BLANK?@D@@@@ IQ )@@G@@ J 0,X11. YES, DONE. @G@@@@ AN,U IR )@@G@@ A2,060. NO, CONVERT DIGIT TO BINARY @E@@@@ JNIS )@@G@@ A2,ERR1. ERROR IF NOT 0 - 9 @ @@@@ TG,U IT )@@G@@ A2,10. @ @@@@ J ERR1. @ @@@@ MSI,U IU )@@G@@ A3,10. @ @@@@ A A3,A2. @E@@@@ J IV )@@G@@ CVBA. GET NEXT DIGIT. @F@@@@ END STARIW )@@G@@T. WALTER GILBERT 8/4/71 ___@@@ LMJ X11,IX )@@G@@FIND. @F@@@@ J ERR1. )@@@K@)@V@8^[]@@*CK@*@@@IY )@@G@@R#@@@@'=@@@@R;@@@@'=@@@@R#@@[\@@@@@@@@@@@@2.2 SORTF AA@@@@)@+[KK[@K^[@IZ )@@G@@^[@@@@/K@@[@/,0@[NR;@[]AA#0@@W/,0@[JN )@@G@@%>Q%PZ#09YQ%PU(P/J#>9U(P%>R0/IR>%>Q%PZ#09YQ%PU(P/J#>9U(P%>R0/IR>%>Q%PZ#0JO )@@G@@*[@@@@*SDFF*@D@@@@. THE TAG 'TYPE' CAN BE SET TO 'F14', 'F24' , OR 'F40'JP )@@G@@@D@@@@. FOR F14 AND F24 A MAX OF 90 POS FOR XB IS ALLOWED @C@@@@. BUT JQ )@@G@@FOR F40 THE MAX CAN BE UP TO 150 POS. @ @@@@TYPE EQU '.,FJR )@@G@@14/' @B@@@@MSIZE EQU 300 . MSALL$/MCTBUF SIZE@F@@@@ AXJS )@@G@@R$. FORTRAN CALLABLE ROUTINE TO ASSIGN SORT FILES @^@@@@DISC + JT )@@G@@ 0 @ @@@@COMMA S,S2 A0,ASGXB+4@ @@@@ S,S4 JU )@@G@@ A0,ASGXB+4@ @@@@ S,S6 A0,ASGXB+4@ @@@@FREXB '@FREE XJV )@@G@@B. . '. @ @@@@FREXA '@FREE XA. . '. @ @@@@FRECOR '@FREE RJW )@@G@@$CORE. . '. @^@@@@ '@LOG '. @E@@@@ASGXB '@ASG,T XB.JX )@@G@@,F40/***/POS/***,SORT01/SORT02 . ' @^@@@@ '@LOG '. @B@@@@JY )@@G@@ASGXA '@ASG,T XA.,F///*** . '. @^@@@@ '@LOG '. JZ )@@G@@@B@@@@ASGCOR '@ASG,T R$CORE.,F2///** . '. @F@@@@MSPKT +060. KA )@@G@@ FOR MSCON$ CALL TO MSALL @^@@@@ +MSIZE,MKB )@@G@@SBUF. @]@@@@ +0@H@@@@MSBUF RES MSIZE. OUKC )@@G@@R MSCON$/MSALL BLOCK IS 33 WORDS @^@@@@SAV RES 1 @B@@@@KD )@@G@@E(1) 'RECORD SIZE NEGATIVE OR ZERO'. @C@@@@E(2) 'NUMBER OF RECKE )@@G@@ORDS NEGATIVE OR ZERO'. @C@@@@E(3) 'SORT VOLUME EXCEEDS 90 POSITIOKF )@@G@@NS.' @D@@@@E(4) 'XXXXXX POSITIONS IS TOO LARGE FOR @SORTF'. @F@@@@KG )@@G@@E(5) 'ONLY 90 POSITIONS ON 2 DISC PACKS, BUT SORT NEEDS XXX'@E@@@@KH )@@G@@E(6) 'SORT FILE ASSIGN REJECTED: XXXXXXXXXXXX'. @G@@@@E(7) KI )@@G@@' ONLY XXXXXX TRACKS OF STORAGE REMAIN, SORT NEEDS XXXXXX' @[@@@@KJ )@@G@@E(8). @^@@@@I DO 7 ,;@A@@@@EE(I) +0200+E(I+1)-E(I),E(KK )@@G@@I). @F@@@@XB +0. XB (LARGE) FILE SIZEKL )@@G@@, POS @F@@@@XA +0. XA (SMALL) FILE SIZEKM )@@G@@, TRK @G@@@@CORE +0. CORE SIZE, THOUSANDSKN )@@G@@ OF WORDS @F@@@@MGPS +2. 4 MERGE POWER LOKO )@@G@@OK-UP TABLE @^@@@@ +5. 5 @^@@@@ +9. 6 KP )@@G@@@^@@@@ +17. 7 @^@@@@ +26. 8 @^@@@@ KQ )@@G@@ +37. 9 @^@@@@ +53. 10 @^@@@@ +72. KR )@@G@@ 11 @^@@@@ +94. 12 @^@@@@ +121. 13 @^@@@@KS )@@G@@ +153. 14 @^@@@@ +190. 15 @^@@@@ +2KT )@@G@@32. 16 @^@@@@ +280. 17 @^@@@@ +335. 18 KU )@@G@@@^@@@@ +395. 19 @^@@@@ +460. 20 @^@@@@ KV )@@G@@ +530. 21 @F@@@@NMGPS EQU $-MGPS. NUMBER OKW )@@G@@F ENTRIES IN TABLE@F@@@@RETURN +0. RETURN AKX )@@G@@DDRESS STORE HERE @^@@@@MCTPKT + 0,MSBUF @^@@@@MCTSITE RES KY )@@G@@ 1 @]@@@@SORTF* . @ @@@@ L,U A0,MCTPKT @^@@@@ KZ )@@G@@ ER MCT$@A@@@@ L A0,MSBUF+021 @ @@@@ LA )@@G@@ S A0,MCTSITE@ @@@@ S A10,SAV @G@@@@ LB )@@G@@ L,U A1,'WJG'. LOAD @SORTF CALL IDENITY FLAG @H@@@@LC )@@G@@ SZ A4. SET FLAG. 0=SUBROUTINE CALL, _0=LD )@@G@@@SORTF@G@@@@ TNE,H2 A1,2,X11. IS THIS SORTF-DRIVERLE )@@G@@ CALLING? @H@@@@ L A4,2,X11. YES, LOAD ENTILF )@@G@@RE WORD TO GET SIGN FLAG@H@@@@ JN A4,GO. DOLG )@@G@@N'T ISSUE @FREE'S IF 'X' OPTION ON @H@@@@ L,U A0,FREXB. LH )@@G@@ FREE ALL OF THE FILES: XB, XA, R$CORE @ @@@@ ER LI )@@G@@ CSF$. @ @@@@ L,U A0,FREXA. @ @@@@ ER LJ )@@G@@ CSF$. @ @@@@ L,U A0,FRECOR.@ @@@@ ER LK )@@G@@ CSF$. @E@@@@GO L,U A0,3,X11. GET RETURN ADDLL )@@G@@RESS @C@@@@ S,H2 A0,RETURN. SAVE IT.@E@@@@ LM )@@G@@ L A1,*1,X11. LOAD RECORD SIZE. @ @@@@ JNLN )@@G@@ A1,ERR2. @ @@@@ A,U A1,11 . @^@@@@ SZLO )@@G@@ A0. @ @@@@ DI,U A0,6. @E@@@@ MSI LP )@@G@@ A0,*0,X11. NUMBER OF RECORDS @ @@@@ JN A0,ELQ )@@G@@RR1. @F@@@@ MI,U A0,11. ADD 10% SAFETY FACTOLR )@@G@@R @ @@@@ DI,U A0,10. @ @@@@ DSL A0,3LS )@@G@@6. @D@@@@ S A1,A2. SAVE VALUE. @E@@@@LT )@@G@@ DI,U A0,114688. GET FILE SIZE IN POS@G@@@@ LU )@@G@@ JZ A0,SMALL. JUMP IF LESS THAN 1 POSITION @D@@@@LV )@@G@@ A,U A0,1. ROUND UPWARD @ @@@@ S LW )@@G@@ A0,XB. @ @@@@ L A1,(TYPE) @B@@@@ TELX )@@G@@ A1,('.,F40/') . F40? @ @@@@ J NOT40 @E@@@@LY )@@G@@ TLE,U A0,151 . F40 GET UP TO 151 POS @^@@@@ LZ )@@G@@ J XBOK@A@@@@ L A0,('S 150 ') @ @@@@ MA )@@G@@ S A0,E(3)+3 @E@@@@NOT40 TG,U A0,91. MORE THANMB )@@G@@ 90 POSITIONS? @D@@@@ J ERR3. NO, ERROMC )@@G@@R. @F@@@@XBOK L,U R1,NMGPS. SEARCH MERGE-POWER TMD )@@G@@ABLE @ @@@@ L A2,(1,3). @ @@@@ L A0,XME )@@G@@B. @H@@@@ SG,H2 A0,MGPS-3,*A2. LOOKUP XB SIZE IN MEMF )@@G@@RGE-POWER TABLE @D@@@@ J ERR4. MUCH TOOMG )@@G@@ BIG! @G@@@@ L,U A1,0,A2. RESULT, MGP (MERGE-PMH )@@G@@OWER) IN A2 @I@@@@ MSI,U A1,1792. FIND AMOUNT OFMI )@@G@@ CORE USING 1792-WD BUFFER @G@@@@ A,U A1,2791. MJ )@@G@@ 2791=1792+999 = 1TRK + ROUNDING @^@@@@ SZ A0. @ @@@@MK )@@G@@ DI,U A0,1000. @G@@@@ S A0,CORE. ML )@@G@@ CORE REQUIRED IN THOUSANDS. @I@@@@ MI,U A0,15000. MM )@@G@@ 15 (1.5) IS DEFAULT BIAS, 1000 TO GET WD @H@@@@ ANMN )@@G@@,U A1,80640. CALC. EXPECTED STRING SIZE, 3*15*1792@H@@@@MO )@@G@@ DI,U A0,19712. 11*1792 TO GET TRKS, 11 = 10 ALMMP )@@G@@OST @D@@@@ S A0,A3. SAVE VALUE @F@@@@MQ )@@G@@ L A0,XB. NOW CALCULATE XA SIZE @E@@@@MR )@@G@@ DSL A0,30. (CONV POS TO TRK) @I@@@@ MS )@@G@@ DI,U A0,0,A2. XA = XB/(MGP)+1 ROUNDED UP TO STRING SMT )@@G@@IZ @I@@@@ AU A0,A3. NOW ROUND UP TO WHOLMU )@@G@@E EXPECTED ST. SIZE. @^@@@@ SZ A0. @ @@@@ DIMV )@@G@@ A0,A3. @ @@@@ MSI A0,A3. @E@@@@ S MW )@@G@@ A0,XA. STORE XA SIZE, TRKS @ @@@@ L MX )@@G@@ A0,XB @^@@@@ TLE,U A0,4@ @@@@ J MAVCMY )@@G@@HK @^@@@@DISCON L,U A0,1@ @@@@ S A0,DISC MZ )@@G@@@ @@@@ J CHEKD @ @@@@MAVCHK L,U A0,MSPKT NA )@@G@@@ @@@@ ER MSCON$. @^@@@@ SZ A10 @H@@@@NB )@@G@@ SZ A1. ADD UP FASTRAND + DISC POS AVAILNC )@@G@@ABLE @H@@@@ L,H1 A0,MSBUF. GET F-II/III SUBSYS ND )@@G@@TABLE POINTER @E@@@@ JZ A0,$+6. SKIP IF NE )@@G@@NO FASTRANDS@H@@@@ A,H2 A1,MSBUF+2,A0. LOAD # POS FASNF )@@G@@TRAND AVAILABLE (TOTAL) @E@@@@ L A0,MSBUF+1,A0 GETNG )@@G@@ TRACKS AVAIL @F@@@@ LSSL A0,12 GET RID NH )@@G@@OF ROT POINTER @ @@@@ SSL A0,12 @ @@@@ A NI )@@G@@ A10,A0 @G@@@@ L,H1 A0,MSBUF+5. GET 8414NJ )@@G@@ SUBSYSTEM TABLE POINTER@E@@@@ JZ A0,$+6. SKNK )@@G@@IP IF NO DISCS @G@@@@ A,H2 A1,MSBUF+2,A0. ADD IN PNL )@@G@@OS OF DISC AVAILABLE @E@@@@ L A0,MSBUF+1,A0 GETNM )@@G@@ TRACKS AVAIL @F@@@@ LSSL A0,12 GET RID NN )@@G@@OF ROT POINTER @ @@_@ SSL A0,12 @ @@@@ A NO )@@G@@ A10,A0 @G@@@@ L,H1 A0,MSBUF+6 GET 8440NP )@@G@@ DISC SS TBL POINTER @ @@@@ JZ A0,$+6 @A@@@@ NQ )@@G@@ A,H2 A1,MSBUF+2,A0 @E@@@@ L A0,MSBUF+1,A0 NR )@@G@@ GET POSITIONS AVAIL @F@@@@ LSSL A0,12 GENS )@@G@@T RID OF ROT POINTER @ @@_@ SSL A0,12 @ @@@@ NT )@@G@@ A A10,A0 @G@@@@ TLE A1,XB. ISNU )@@G@@ THERE ENOUGH FOR THE XB FILE?@ @@@@ J DISCON @ @@@@NV )@@G@@ L A1,XB @^@@@@ LSSL A1,6@ @@@@ NW )@@G@@ A A1,XA @ @@@@ A,U A1,1248 @ @@@@ NX )@@G@@ TLE A10,A1 @^@@@@ J ERR7@ @@@@CHEKD L NY )@@G@@ A0,XB @F@@@@ JZ A0,CVXA. SKIP IF NZ )@@G@@NO XB FILE NEEDED @G@@@@ LMJ X11,CV. CONVERT OA )@@G@@TO FIELDATA DECIMAL @^@@@@ SZ A0. @ @@@@ L OB )@@G@@ A1,A2. @ @@@@ LDSL A0,0,A3. @A@@@@ L OC )@@G@@ A1,('/POS/ '). @ @@@@ DSL A0,6. @ @@@@ OD )@@G@@ AN,U A3,6. @ @@@@ DSL A1,0,A3. @ @@@@ OE )@@G@@ SSC A0,0,A3. @ @@@@ A A1,A0. @A@@@@ OF )@@G@@ DS A1,ASGXB+3. @A@@@@ L A0,(5,ASGXB) OG )@@G@@@^@@@@ TNZ DISC@^@@@@ J DOIT@ @@@@ OH )@@G@@ L A2,MCTSITE@A@@@@ TNE A2,('N.Y.U.') @ @@@@OI )@@G@@ J YESNYU @A@@@@ TE A2,('NYU-WS') OJ )@@G@@@ @@@@ J NOTREM. @ @@@@ L A2,(TYPE) OK )@@G@@@A@@@@ TE A2,('.,F40/') @A@@@@ L A2,(OL )@@G@@'.,F24/') @ @@@@ S A2,ASGXB+2@ @@@@ J OM )@@G@@ ASGONLY1 @]@@@@NOTREM. @A@@@@ L A2,('.,F/ ') ON )@@G@@@ @@@@ S A2,ASGXB+2@ @@@@ DL A1,ASGXB+1OO )@@G@@@ @@@@ DSC A1,12 @ @@@@ DS A1,ASGXB+1OP )@@G@@@B@@@@ DL A1,(' ') @ @@@@ J OQ )@@G@@ ASGONLY1+1@]@@@@YESNYU. @ @@@@ L A2,(TYPE) @ @@@@OR )@@G@@ S A2,ASGXB+2@A@@@@ TNE A2,('.,F14/') OS )@@G@@@^@@@@ J CONT@A@@@@ TNE A2,('.,F24/') OT )@@G@@@ @@@@ J ASGONLY1 @A@@@@ TE A2,('.,F40OU )@@G@@/') @^@@@@ ER ERR$@B@@@@ASGONLY1 DL A1,('SORT0OV )@@G@@1 ') @ @@@@ DS A1,ASGXB+5@ @@@@ S,S1 OW )@@G@@ A2,ASGXB+7@^@@@@CONT SZ A2 @^@@@@ DI,U A2,6OX )@@G@@@B@@@@ L,U A0,056 . COMMA @ @@@@ EX OY )@@G@@ COMMA,A2 @A@@@@ L A0,(6,ASGXB) @ @@@@ L OZ )@@G@@ A1,XB @ @@@@ TG,U A1,46 @A@@@@ L PA )@@G@@ A0,(8,ASGXB) @ @@@@DOIT LMJ A3,ISSUE @ @@@@CVXA PB )@@G@@ L A0,XA. @H@@@@ LMJ X11,CV. COPC )@@G@@NVERT XA SIZE TO FIELDATA DECIMAL @F@@@@ A,U A2,070 PD )@@G@@ TURN A ' ' INTO A '.' @A@@@@ S A2,ASGXA+3PE )@@G@@. @A@@@@ L A0,(5,ASGXA). @G@@@@ LMJ PF )@@G@@ A3,ISSUE. DISPLAY & ISSUE @ASG,T XA. CARD @ @@@@ L PG )@@G@@ A0,CORE. @ @@@@ LMJ X11,CV. @ @@@@ SSPH )@@G@@C A2,24. @A@@@@ S,T2 A2,ASGCOR+3. @A@@@@ PI )@@G@@ L A0,(5,ASGCOR). @H@@@@ LMJ A3,ISSUE. PJ )@@G@@ DISPLAY & ISSUE @ASG,T R$CORE CARD @ @@@@ L A10,PK )@@G@@SAV @F@@@@ J *RETURN. RETURN TO CALLING PRPL )@@G@@OGRAM @G@@@@ISSUE JZ A4,ISSUE2 . JUMP IF NOT SORTF-PM )@@G@@DRIVER USE @ @@@@ S A0,A1 @F@@@@ A PN )@@G@@ A0,(2,0,0). SET IN DOUBLE-LINE SPACING@E@@@@ ER PO )@@G@@ PRINT$. PRINT @ASG CARD @H@@@@ JN A4,0PP )@@G@@,A3. DON'T ER CSF$ IF 'X' OPTION IS SET @ @@@@ L PQ )@@G@@ A0,A1 @F@@@@ISSUE2 ER CSF$. ISSUE THPR )@@G@@E @ASG CARD IMAGE @D@@@@ JP A0,0,A3. RETURN IPS )@@G@@F OK. @ @@@@ J ERR6. @I@@@@CV SZ A3. PT )@@G@@ CONVERT FROM BINARY TO FIELDATA DECIMAL @A@@@@ PU )@@G@@ L A2,(' '). @ @@@@CV1 DSL A0,36. @ @@@@PV )@@G@@ DI,U A0,10. @ @@@@ A,U A1,060. @ @@@@PW )@@G@@ DSL A1,6. @ @@@@ A,U A3,6. @ @@@@PX )@@G@@ JNZ A0,CV1. @ @@@@ J 0,X11. @ @@@@PY )@@G@@SMALL JZ A2,ERR0. @^@@@@ SZ A1. @D@@@@ PZ )@@G@@ A,U A2,1791. ROUND UPWARD @F@@@@ DI,U QA )@@G@@ A1,1792. CALC. XA SIZE IN TRKS @H@@@@ S QB )@@G@@ A1,XA. THIS IS THE XA FILE SIZE IN TRACKS @G@@@@ QC )@@G@@ TG,U A1,6. TEST FOR FEWER THAN 6 TRACKS. @G@@@@QD )@@G@@ J SM0. FILE IS GREATER THAN 5 TRACKS QE )@@G@@@H@@@@ LSSL A1,1. A1 NOW CONTAINS 2, 4, 6, 8QF )@@G@@, OR 10. @G@@@@ L,U A0,01226. 0,2,2,1,1,2 (FQG )@@G@@ORM 26,2,2,2,2,2) @I@@@@ SSC A0,0,A1. SELECT CQH )@@G@@ORE SIZE FOR 1,2,3,4, & 5 TRK XA @H@@@@ SSL A0,34. QI )@@G@@ (IF XA IS 1 TRK, DO IN-CORE SORT) @^@@@@ J QJ )@@G@@ SM2.@E@@@@SM0 MI,U A1,1792. GET CORE EQUIVALENT QK )@@G@@@E@@@@ DI,U A1,1000. WHAT IS THAT IN K? @F@@@@QL )@@G@@ L,U A0,1. (START WITH 2K OF CORE) @I@@@@QM )@@G@@ L A2,A1. NOW FIND CORE NEEDED BY TRIAL ANQN )@@G@@D ERROR @H@@@@SM1 AU,U A0,1,A0. (A0) = CORE INQO )@@G@@ K -1K, (A1) = 2*C-1 @I@@@@ MSI,U A1,1,A0. (AQP )@@G@@1) = C*(2*C-1). ASSUMING DRUM BUFFER @F@@@@ A,U A0,1QQ )@@G@@. OF 500 WORDS ( = 1/2 K)@H@@@@ TLE A1,AQR )@@G@@2. IS DRUM FOR THIS AMNT OF CORE ENOUGH? @G@@@@ J QS )@@G@@ SM1. NO, INCREASE CORE & TRY AGAIN. @C@@@@SM2 QT )@@G@@ S A0,CORE. YES. @F@@@@ J CVXAQU )@@G@@. GO GENERATE @ASG,T CARDS @D@@@@ERR0 TNZ *0,XQV )@@G@@11. IS NREC = 0? @ @@@@ J ERR2. @ @@@@QW )@@G@@ERR1 L A0,EE(1). @ @@@@ J PRTERR. @ @@@@QX )@@G@@ERR2 L A0,EE(2). @ @@@@ J PRTERR. @ @@@@QY )@@G@@ERR3 L A0,(TYPE) @A@@@@ TE A0,('.,F40/') QZ )@@G@@@ @@@@ J ERR3A @A@@@@ L A0,('S 150RA )@@G@@ ') @ @@@@ S A0,E(3)+3 @ @@@@ERR3A L A0,ERB )@@G@@E(3) @ @@@@ J PRTERR. @ @@@@ERR4 LMJ X11,RC )@@G@@CV. @ @@@@ S A2,E(4). @ @@@@ L A0,ERD )@@G@@E(4). @ @@@@ J PRTERR. @ @@@@ERR5 L A0,ARE )@@G@@1 @ @@@@ LMJ X11,CV @ @@@@ SSL A2,1RF )@@G@@8. @ @@@@ S,H1 A2,E(5)+1.@ @@@@ L A0,XRG )@@G@@B. @ @@@@ LMJ X11,CV. @ @@@@ SSL A2,1RH )@@G@@8. @ @@@@ S,H2 A2,E(5)+8.@ @@@@ L A2,(RI )@@G@@TYPE) @A@@@@ TNE A2,('.,F14/') @ @@@@ J RJ )@@G@@ ERR5A @^@@@@ L,U A0,1@ @@@@ S,S5 A0,ERK )@@G@@(5)+3 @A@@@@ TE A2,('.,F40/') @ @@@@ J RL )@@G@@ ERR5A @^@@@@ L,U A0,5@ @@@@ S,S1 A0,ERM )@@G@@(5)+1 @^@@@@ L,U A0,1@ @@@@ S,S6 A0,E(5) RN )@@G@@@ @@@@ERR5A L A0,EE(5). @ @@@@ J PRTERR. RO )@@G@@@ @@@@ERR7 L A0,A1 @ @@@@ LMJ X11,CV RP )@@G@@@ @@@@ S A2,E(7)+9 @ @@@@ L A0,A10 RQ )@@G@@@ @@@@ LMJ X11,CV @ @@@@ S A2,E(7)+1 RR )@@G@@@ @@@@ L A0,EE(7) @ @@@@ J PRTERR RS )@@G@@@E@@@@ERR6 L,U A2,5. WOOPS, AN ERROR @H@@@@RT )@@G@@ DSL A0,3. CONVERT STATUS TO OCTAL FOR MESSRU )@@G@@AGE. @ @@@@ SSL A1,3. @ @@@@ JGD A2,$RV )@@G@@-2. @A@@@@ A A1,('000000'). @C@@@@ JZ RW )@@G@@ A0,ERR6A. DONE? @E@@@@ S A1,E(6)+6. RX )@@G@@ SET IN RIGHT HALF @ @@@@ J ERR6. @E@@@@ERR6A RY )@@G@@ S A1,E(6)+5. SET IN LEFT HALF @ @@@@ L RZ )@@G@@ A0,EE(6). @ @@@@PRTERR ER PRINT$. @ @@@@ L SA )@@G@@ A10,SAV @ @@@@ ER ERR$. @F@@@@ ENSB )@@G@@D. WALTER GILBERT 7/4/71 ___D0)DDN^[NC(O^@)SC )@@G@@@B@@@@^@)^@)^@)^@)^@)D))^@)^@)^@)^@)CC0 -[AC)^@)@L@@@@DDNETPC*2^@)^@)C(MSD )@@G@@^@)^@)^@)^@)CTNC0= 0)^@)^@)^@)^@)^@)^@)^@)DDNETPC*)E-CC*)C[[ETB^[#CDMC))SE )@@G@@)@@[SK^[@@@@. . R$CORE@FREE XA. . @FREE XB. . @FREE A<@@@KA:@@@KA3@@@KSF )@@G@@@@@@@@AA@@@@)@F[S@@@@@@@@ASG,T@LOG 2 . /SORT0SORT01S/***,***/PO.,F40/SG )@@G@@ XB@ASG,T@LOG AB@@@@)@Q[S@@@@@@@@@@@@0 //** .E.,F2/ R$COR@ASG,TSH )@@G@@@LOG *** ..,F/// XAAC@@@@)@-@K*@@@@@@) K@8@@@@@@@ OF RENUMBERSI )@@G@@ZERO VE OR NEGATI SIZE RECORD@@@@@@@^?@@@@@@@U@@@@@L@@@@@D@@@@@ AJ@@@@)AS[@@@E@@@@)A-@C*@@@@@@SQ )@@G@@R;@@AZ@@@@@<@@@@@@@@@@CM@@@@BG@@@@AF@@@@ J@@@@^S@@@@#*AK@@@@)A+[L]@[@K^@SR )@@G@@@K])@@R;@@@^/H@@A1C[F@@]:^V@@] @@@@KR;KWJG[])@ JA#@@A)R#@@@4'=@@@@AL@@@@SS )@@G@@)A?[D]@^*CK@>[]@^K[@@@@@/GK@D9R#VK@[AB@@AYR;F@@#'=@@@@R;@@@C'=@@@@R;@@@AST )@@G@@'=@@@@AM@@@@)A5[S@K@@K@@/@@@DYW8@W@@A#K@@I;G@@@=W8@@@ES8@@@F/G@@D7T@FK@@SU )@@G@@W8@@@A @@@@GO;K@@FAN@@@@)B@[KK^[@K[@K^@@@@!8@@[VA#@@ YR#@@E2/K@@BF?8@@]RSV )@@G@@/K@@BD%@K@E1R#K@E0A#@@ADO;@@@[AO@@@@)BE[L@^[@K^@@@@@@@ @@@@GO;K@:$T8K@W@SW )@@G@@R;Y@@@/K@@E]5^I)ADR#@@ADR#)@E3N8K@@M/K@@D;AP@@@@)BO[SK@[@@@@ @@@@GK@@@@JSX )@@G@@W8I@@@;G@@@YR#@@ADA#@@@JW8@^4@P;KN?@S8@#%SA#@@AFW8@@J*AQ@@@@)BZ[K^[@^@K^SY )@@G@@@*@@@@R;@@@)/K@@CDA#@@@@R;@@@[/K@@B*?8@@@^R#@@ADA#@@AET@@@@JW@@@@JAR@@@@SZ )@@G@@)B([L]@C^[@K^@@@@@G])@@G;C@@@G;*@@@GR#G@@=OBW@@>/@@@B3RF@@@< @@@@H @@@@QTA )@@G@@'=@@@@AS@@@@)B3[L@K^[@@K^[@@@@OBW@@>/@@@C[RF@@@(G])@@G;C@@@G;*@@@GR#G@@=TB )@@G@@OBW@@>/@@@B'RF@@@*AT@@@@)B.[L@@K^[@^@@@@@@O;K@N)O#K@AE;*K@@AR#K@AD/K@@B>TC )@@G@@?@K@ADG])@@G;C@@@G;*@@@GR#G@@=AU@@@@)CB[KK^[@K@^@@@@@@;G@@@AR#K@E4;?J@@@TD )@@G@@R#K@@I @@@@G/,0@DP/@@@C"R#@@AD/K@@EV?])@@HAV@@@@)CL[K@K^[@K^[@@@@@:@)@E6TE )@@G@@R#)@A)/K@@C.(@@@@@R#@@E59*K@@JO#K@@G;@J@@@;GZ@@@P;0@@AAW@@@@)CV[D@K^[@K^TF )@@G@@[@K^@@@@@@@@R#)@E9/K@@C2A#)@@IR#)@E8%@)@E1R#)@E0/K@@C<%@)@E7/K@@C%AX@@@@TG )@@G@@)C=[L@K[@K^[@K^[@@/K@@C5:@)@E0A#)@@IR#)@E0/K@@C39?K@E'9*K@@H;^K@@G9?K@@HTH )@@G@@A#)@@IAY@@@@)C,[L@K^[]@H@K^@@@R;@@@,W8)@@A @@@@IA7)@@N9*K@@L9?K@E/'=@@@@TI )@@G@@%@)@E1/K@@C2:@)@E8AZ@@@@)C8[L@K^@K^[@K[@@@A#)@@SO;)@@8/,0@DPR#@@AE/\0@DGTJ )@@G@@R#@@E_!8K@@,R#K@ADR#@@E"')I@@[BA@@@@)D][L@K^[@^[@K^[@@/K@KAYC])@ J/\0@DGTK )@@G@@R#@@F[AV)@@Y;@)@@S/,0@DPR#@@AF/\0@DGR#@@F@BB@@@@)DG[L@^[]@K^C@L@@@ @@@@JTL )@@G@@/K@@E@@@@@5@@@@[C@@@@[Y@@@@[9@@@@]T@@@@]"@@@@#*UR )@@G@@@@@@^S@@@@ J@@@@AF@@@@BG@@@@CM@@@@@@@@@^@<@@@@@@R;@^AZ'=@@@-R#@^@4A#@^A)US )@@G@@[])^ JR;KWJG @@@@K:^V@@]C[F@@]/H@^A1R;@^@^'=@@@JR;@^@A'=@@@JR;@^@C'=@@@JUT )@@G@@R;F@@#AB@^AYR#VK@[/GK^D9O;K@@F @@@@GW8@@@AT@FK@@/G@^D7S8@@@FW8@@@E;G@@@=UU )@@G@@A#K@@IW8@W@@/@@^DYO;@@@[A#@^ADR#K^E0%@K^E1/K@^BD?8@@]R/K@^BFR#@^E2A#@^ YUV )@@G@@!8@@[V/K@^D;N8K@@MR#)^E3R#@^AD5^I=AD/K@^E]R;Y@@@T8K@W@O;K@:$ @@@@GW8@@J*UW )@@G@@A#@^AFS8@#%SP;KN?@W8@^4@A#@@@JR#@^AD;G@@@YW8I@@@K@@@@J @@@@GW@@@@JT@@@@JUX )@@G@@A#@^AER#@^AD?8@@@^/K@^B*R;@@@[A#@^@@/K@^CDR;@^@)'=@@[P @@@@Q @@@@HRF@^@R#G^@=;*@@@G;C@@@GG])@@GRF@^@*/@@^B'OBW^@>R#G^@=;*@@@G;C@@@GUZ )@@G@@G])@@GRF@^@(/@@^C[OBW^@>R#G^@=;*@@@G;C@@@GG])@@G?@K^AD/K@^B>R#K^AD;*K@@AVA )@@G@@O#K^AEO;K@N)?])@@H/K@^EVR#@^AD/@@^C"/,0^DP @@@@GR#K@@I;?J@@@R#K^E4;G@@@AVB )@@G@@P;0@@A;GZ@@@;@J@@@O#K@@G9*K^@JR#@^E5(@@^@@/K@^C.R#)^A):@)^E6/K@^C%%@)^E7VC )@@G@@/K@^C)DDE DSL A1,0,A3. @ @@@@ SSC WC )@@G@@ A0,0,A3. @ @@@@ A A1,A0. $IBANK @@@@@@$DBANKWD )@@G@@ @@@@@#. @A@@@@ L A0,(5,ASGXB) @^@@@@ WE )@@G@@ TNZ DISC@^@@@@ J DOIT@ @@@@ L WF )@@G@@@@@@@A)@@@@ @F ^@@@@@@@#)@@@@ @@]^F @@@@@D)@@@@ @[3^FB@ @@@@ J WG )@@G@@ YESNYU @A@@@@ TE A2,('NYU-WS') @ @@@@ WH )@@G@@ J NOTREM. SORTF @@@@A-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I@@@@HC,G*,^[-H-?^@1^[?WK )@@G@@G(4I->IK)GT\H(!GD,G-3 ))GD?H))AK)H->I-4G(2^[I-< 0)@[@@@@WL )@@G@@^@)^@)@[@@@@^@)^@)@B@@@@ET5GK!IT>GT4^@)CT\H(!GD,G))^[HG(-H1(H1$^@)@B@@@@WM )@@G@@ *! *! *! *! *! *! *! *! *! *! *! *! *!^@)@[@@@@^@)^@)@ @@@@AC)H->I-4G(2WN )@@G@@^[ (>J[>GT5I->^[0IL>I1(H95IS)GT\WP )@@G@@H(!GD,G),^@)@D@@@@A),AK,A*1^@)^@) 0)^@)^@)^@)^9#H9!H(>H14^8)GT\H(!GD,G),WQ )@@G@@@F@@@@A),AK,AK)^@)^@)GC)^@)^@)^@)CD?I->IK)I-*G*)GT5IL2G(,I))HD!GD$G*,^@)WR )@@G@@@J@@@@A),AK,AK8^@)^@)GK)^@)^@)^@)C9\^[4H8)GL\I-4H9!^[\G0)G1(H->^[-H1=^[>WS )@@G@@H14G(2^[(H10I(4^[!H9=G*,@H@@@@A),AC,AC0^@)^@)GS)^@)^@)^@)CT*GD,G9>^[-^[3WT )@@G@@I-2HD,G8)I-\^[-H1\I-*G(2^[3I-2HD,G8,@C@@@@A),AC,A*)^@)^@)G))^@)^@)^@)C->WU )@@G@@H->I->^[?HD,G(3 0)@J@@@@A),AC,A))^@)^@)G0)^@)^@)^@)C1(H1=^[-^[3I-2HD,G8)WV )@@G@@ [I[>H1=G(,I))IT>GD2GT* C,^@)@E@@@@A),AC,A0)^@)^@)G8)^@)^@)WW )@@G@@^@)C9\^[4H8)GC)G9(I1>H0)H-(H1> 0)^@)@E@@@@A),AC,AC)^@)^@)HC)^@)^@)^@)DD,WX )@@G@@IT>IL4^[-^[?HD,G*)H9&^[4G(8I),@F@@@@A8,A0,A))^@)^@)HK)^@)^@)^@)DL5H(0^[4WY )@@G@@H8)H-(H1>^[7HD4H[(H0)H(-GT2H8,@E@@@@A),AC,AS)^@)^@)H))^@)^@)^@)D-\GT-I->WZ )@@G@@^[-^[$HD6G(,^[3I-2HD,G8,@I@@@@A),AC,A8)^@)^@)H0)^@)^@)^@)D(\I1>^[\I1>IK)XA )@@G@@I-*G*)G9(I1>H0)H15H(+G(2^[\G0)H-(H1>IS,^@)@J@@@@A),AC,BC)^@)^@)I@)^@)^@)XB )@@G@@^@)E[2HD,I))I-*G*)^S)H9&^[?HD,G(3^[$HD6G(,^[(H0)I-*G*)GT\H(!GD,G),@M@@@@XC )@@G@@A),AC,AK)^@)^@)IK)^@)^@)^@)EL>I[?GD^[7HD4H@)XD )@@G@@H-(H1>^[$HD6G(,^[(H0)GT\H(!GD,G),^@)@M@@@@A),AK,AS)^@)^@)IS)^@)^@)^@)ET-XE )@@G@@I1>^[H14^[?HD,G*?^[4H[>H0)GT2G(-I->^[,G(7^[?HD,G*)GL9^[-H-4G(2GD4XF )@@G@@HD\H0,@H@@@@A),AC,B@)^@)^@)I*)^@)^@)^@)D(\I1>^[5I@)I-*G*)G9(I1>H0)H15H(+XG )@@G@@G(2^[\G0)H-(H1>IS,@E@@@@A),AK,AS8^@)^@)I0)^@)^@)^@)C(,I->IK)^96G(2HD&JC$XH )@@G@@^[!H9=G*,^@)@[@@@@^@)^@)@[@@@@^@)^@)@ @@@@AK)H->I-4G(2^[I->IL!HD,G*)GT\G->^[4JD0G*) [[ET#DDD^[\IK)C1DC(GC-[E-[ C,^@)XK )@@G@@@N@@@@A),AK,AK6^@)^@)GT(^@)^@)^@)^9<^8)GT\H(!GD,G))GD0I[?HD>G))H9,H-9^[4XL )@@G@@H8)I[2G(6HD\I(3H-9^[5H1I))G(?G(!G(,I))GT9GT?G*)H-(H((I),^@)@H@@@@A),AK,A)2^@)^@)GT!XN )@@G@@^@)^@)^@)ET>I))H-\I9>IK!I(0I[>IK)GT-IT>^[!GD3HS)H(\G-> 0)^@)@F@@@@A),AK,XO )@@G@@A*7^@)^@)G(8^@)^@)^@)^9 J[>GT5I->^8)GT5IL2G(,I))HD!GD$G*,^@)@N@@@@A),AK,XP )@@G@@B@)^@)^@)G1<^@)^@)^@)C1(H1=^[-H1=^[GD^[-H1=^[?HD,G*)H15H(+G(2 0)^@)@D@@@@A),AK,BC)^@)^@)G1=^@)^@)^@)C1(XR )@@G@@H1=^[-H1=^[=G(?G(4G*,^@)@F@@@@A),AK,AC0^@)^@)G10^@)^@)^@)E[2HD,I))HD!GD$XS )@@G@@G(3^[5H14HD?^@$G1(H1=^8,@N@@@@A),AK,AC4^@)^@)G9(^@)^@)^@)^9$^8)GT\H(!GD,XT )@@G@@G)?^[+I(4^[(G9,H92G(3^[H14^[-G-=HD4HD\H13^[\IK)G->H->I-(H9,IS,^@)XU )@@G@@@H@@@@A),AK,AC)^@)^@)HD+^@)^@)^@)DD,IT>IL4^[?HD,G*)GL>G1\IL>^[H14XV )@@G@@^[(H(-G9> 0)@E@@@@A),AK,A)7^@)^@)HD&^@)^@)^@)E->IT4^[?H9$HDXW )@@G@@ 0)^@)@F@@@@A),AK,A*3^@)^@)HD$^@)^@)^@)D-\GD=^[(H(-G9>^[3GD6G*)GL5G1&G(2XX )@@G@@ 0)^@)@F@@@@A),AK,AC9^@)^@)HD?^@)^@)^@)ET>I))HD!GD$G*)H->H1$I-*^[?HD!HD4XY )@@G@@ 0)^@)@C@@@@A),AK,A*2^@)^@)HD!^@)^@)^@)DD!GD$G*)H(\I1> 0)^@)@N@@@@A),AK,XZ )@@G@@AS4^@)^@)HD\^@)^@)^@)DD,I[5I))H9,H-9^[!H9=G*) [+H--H1:^[(H(-G9>^[7HD?H))YA )@@G@@H1\I))GT-I(3G*)G(=HD4^[!H9=G*( 0)^@)@G@@@@A),AK,A*4^@)^@)HD0^@)^@)^@)DD,YB )@@G@@IT>IL4^[(H(-G9>^[&IL\H*)IT-I1>^[+I(&G1>IK,@L@@@@A),AK,A)1^@)^@)H--^@)^@)YC )@@G@@^@)CT\H16G(2I))GD?I[*GD+G(4HD^[-H1=^[^[-H1=^[=G(?G(4G*,@D@@@@A),AK,AC6^@)YF )@@G@@^@)H-?^@)^@)^@)ET>I))H-(H1>^[?HD!HD4 0)^@)@F@@@@A),AK,AK9^@)^@)H-,^@)^@)YG )@@G@@^@)E[2HD,I))GT5IL2G(,I))H-(H1>^[,I(!GL>IK,@G@@@@A),AK,A0)^@)^@)H-0^@)^@)YH )@@G@@^@)E[2HD,I))HD!GD$G(3^[5H14HD?^@$H-\GT-I->^8,^@)@K@@@@A),AK,AS3^@)^@)H(^[!H92G*)H(>H(\IL9^[&H92^[+I(&G1>IL3^[-I))H1>J[4^[I))G(?G(!G(,I))G--I->^[4H8)GT5YK )@@G@@IL2G(,I))G--I->^[-H1=^[4HD!G*,@J@@@@A),AK,AK2^@)^@)I[$^@)^@)^@)ET>I))I[-YL )@@G@@G9>^[3HD'G*)G1\IK)I[-G9>^[&H92H(-I-4G(=^[0IL(H14HD,G8,@H@@@@A),AK,AC7^@)YM )@@G@@^@)I[?^@)^@)^@)ET>I))H(-J[(H(5H*)GT\H-5H(,^[0IL(H14^[?HD!HD4 0)^@)@N@@@@YN )@@G@@A),AK,AC3^@)^@)I[!^@)^@)^@)D-(HT>^@$I@$^[IS)GD,G))G->H->I-(H9,IS,^@)@F@@@@A),AK,A*5^@)^@)I[1^@)^@)YP )@@G@@^@)E[2HD,I))GD,G))IL>GD=^[-H-4G(2GD4HD\H0,@E@@@@A),AK,AC5^@)^@)IL0^@)^@)YQ )@@G@@^@)ET>I))IL>I[>GD4^[YR )@@G@@I1>IL4^[H14^[GT4HD\H13 0)^@)@G@@@@A),AK,AK1^@)^@)IT<^@)^@)YS )@@G@@^@)ET>I))GT\H-5H(,^[?HD!HD4IS)G1\IK)IT>GD2GT* 0)@J@@@@A),AK,AK3^@)^@)IT(YT )@@G@@^@)^@)^@)ET>I))HD,I[5I))HD!GD$G*)IT0GDI))G(=HD4H92^[?HD3I-(H1$^[?HD,G*)IT0YV )@@G@@GDI))I[2HD,I-&HD?G*)H-(H1>YW )@@G@@^[3I[-GT(H1$ 0)^@)@[@@@@^@)^@)@[@@@@^@)^@)@ @@@@AS)H->I-4G(2^[H))^@)^@)C->YZ )@@G@@H->I->^[(H10I(4^[>H->H(>H14 0)@F@@@@A),AK,AC1^@)^@)G1IL4ZB )@@G@@^[-^[*G(-G-(H1$ 0)@D@@@@A),AK,AK7^@)^@)H[=H))^@)^@)C->H->I->^[*G(-G-(H1$ZC )@@G@@IS,^@)@F@@@@A),AK,A8)^@)^@)H- ))GT\I(,I)?^[-H1=^[=G(?ZD )@@G@@G(4G*,@H@@@@A),AK,AS6^@)^@)H-(GS)^@)^@)D-(IT4^[-H-?^[(H14IL(H13HD<^[IC)^@)^@)D--GL>H))GD,G))IT>ID5G(,GT>^[4H[>^[&HD?ZI )@@G@@G*,^@)@D@@@@A),AK,A)4^@)^@)IT>I))^@)^@)ET>I))I--GK)I[\IT(I-(H9,IS,@I@@@@ZJ )@@G@@A),AK,A)3^@)^@)I--GK)^@)^@)C->G1(H1>^@$I--GK$^[G1-I(?ZK )@@G@@I))BS( 0)^@)@G@@@@A),AK,A)5^@)^@)I-I))^94IL-H13I[-IL>H14^8)ZL )@@G@@GT*GD2GDIL3 0)@[@@@@^@)^@)@[@@@@^@)^@)@ @@@@A))H->I-4G(2^[IK)IL>I@,^@)@E@@@@A),AK,AS9^@)^@)G(GT*H8$^[!H9=G*,^@)@G@@@@A),AK,A)9^@)^@)G1(H->^@)ZP )@@G@@^@)C1(H->^[H14^[&HD?G*)GT\H14G(,I-3 0)^@)@G@@@@A),AK,AK0^@)^@)HD,ZQ )@@G@@H-,^@)^@)ET>I))HD,I[5I))H-(H1>^[?G(,G94H@)H-(H((I),^@)@F@@@@A),AK,A)0^@)ZR )@@G@@^@)H-,I(!^@)^@)ET>I))^[?HD,G*)H15H(+G(2HD,G8)H(\G-> 0)@I@@@@A),AK,A*9^@)ZS )@@G@@^@)H-\GD=^@)^@)C1(H->^[H14^[&HD?G*)GD,G))H-\GD=^[-^[,G(7^[\H1> 0)ZT )@@G@@@D@@@@A8,A0,AS)^@)^@)H(>H1=^@)^@)D(-GT2H8)^92G(4I(2H0$ 0)^@)@H@@@@A),AK,ZU )@@G@@A)6^@)^@)I-9I[>^@)^@)ET>I))H92^[2G(1I(>IT4^[3JD!GL\H-(GS)IT5GK!I-9I[> 0)ZV )@@G@@@[@@@@^@)^@)@[@@@@^@)^@)@J@@@@CD?I[*GD+G(4HD<^[\I[>IL-H1=IS'^@)^@)^@)^@)ZW )@@G@@^@)^@)^@)^@)^@)CT\H(!GD,G-3^[7H[>IL>^[5IT>G),^@)@[@@@@^@)^@)@G@@@@^@)^@)ZX )@@G@@^@)^@)^@)GK)^@!^@)GL\I-4H9!^[?HD,G*)H9&^[&HD?G*,^@)^@)^@)^@)G8)^@)@G@@@@ZY )@@G@@^@)^@)^@)^@)^@)G8)^@!^@)G9?H9+GD?^[J[4^[\GTH1IL3BK)^@)^@)^@)^@)^@)AB )@@G@@^@)^@)^@)CT\H(!GD,G-3^[7H[>IL>^[5IT>G),^@)@[@@@@^@)^@)@H@@@@^@)^@)^@)^@)AC )@@G@@^@)G*)^@!^@)G(,G))H9&^[?HD,G*,^@)^@)^@)^@)^@)^@)^@)^@)GC?IS?GS)^@)@L@@@@AD )@@G@@^@)^@)^@)^@)^@)H0)^@!^@)H1\I),^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)H)?G0?AE )@@G@@H-< -&GS?H-0 -&I@?H-G1(H1(I-(H9,BK)^@)@[@@@@^@)^@)@E@@_@H(,GD!^@.^[?HD,G*)AC'BL?AG )@@G@@HD,G*)AK'BL?HD,G*)AS, 0,BK'H-(H1>^[,@[@@@@^@)^@)@ @@@@E1-IL(GD+H->^[^G(&AH )@@G@@HD,HD4HD\H0'@[@@@@^@)^@)@B@@@@I1,GD!^@'B*)I1-IL(GD+H->^[>J[0IL>IT3HD\H0)AI )@@G@@@[@@@@^@)^@)@B@@@@E1-IL(GD+H->^[QGD?I(>^[MG(0H--GT>H(>H14BK)@[@@@@^@)^@)AJ )@@G@@@B@@@@I1,GD!^@'B*'^[6GD2HD-GL?G*)G(8I[2G(3IT(H9,@[@@@@^@)^@)@[@@@@^@)^@)AK )@@G@@@D@@@@^@)^@)^@)^[OGD+H->^[\G0)DD,I-2HD,IT(GS)E1-IL(GD+H->IS,@[@@@@^@)^@)AL )@@G@@@A@@@@^@)^@)^@)^[ICDHC*)^@)^[HC([D1DD1B^@)@[@@@@^@)^@)@L@@@@^@)^@)^@)^[H14^[!GDH14^[2G(&AO )@@G@@G(2G(,GT>G), C)^@)@D@@@@^@)^@)^@)^[H14^[^[?HD!AP )@@G@@HD4 0)@E@@@@^@)^@)^@)^[^[\G0)GT*GD2GDIK)H(-IT: 0)AQ )@@G@@@F@@@@^@)^@)^@)^@)^@)^@)^@)^@0^@!^[,H8)H(-IT:HD,G8)H9&^[G))GD3^[>ID5GD? 0)^@)@C@@@@^@)^@)^@)^[AU )@@G@@H14^[ 0)^@)@C@@@@^@)^@)^@)^[H-=GD4GC,@B@@@@^@)^@)^@)^@)^@)^@)AW )@@G@@^@)^@1^@!^[-ITH-=GD4GC,@B@@@@^@)^@)^@)^@)AY )@@G@@^@)^@)^@)^@1^@!^[-ITIK,^@)@G@@@@^@)^@)^@)^@)^@)^@)^@)^@0^@!^[?GD3I))GT*GD,BA )@@G@@G9>^[G),^@)@K@@@@^@)^@)^@)^@)^@)^@)^@)^[,H9, ('G(2H8)BB )@@G@@I1-H-5G*)HD3^@<^[\G0)H-(H1>IS)GT*GD,G9>G))GL9^[?GD3I))I(3G*,@F@@@@^@)^@)BC )@@G@@^@)^[H14^[0GD3IS,@K@@@@^@)^@)BD )@@G@@^@)^@)^@)^@)^@)^@0^@!^[,H8)GT*GD,G9>^[4H8)I->J[4^[(H0)G1(H->^[=I(2HD,G8)BE )@@G@@I-*HD3^[0GD3IS,^@)@H@@@@^@)^@)^@)^@)^@)^@)^@)^@1^@!^[4G(8I))H[-IS)GL>G(,BF )@@G@@^[H14^[?BG )@@G@@HD!HD4^@*IL(G9*I))H(-IL$HD, C)IT>I))GL9^@$HD?^8)GT\H(!GD,G),@L@@@@^@)^@)BH )@@G@@^@)^[^[H14^[6GD?I(>^[3G(4^[+JC)^9?H)$^[H14^[?HD,G*)H15H(+G(2^[0H93HD4HD\H0)BM )@@G@@HD,^[4H[>^[&HD?G*,@D@@@@^@)^@)^@)^[H14^[0GD$G*)IT(JL>BN )@@G@@ 0)^@)@J@@@@^@)^@)^@)^[H14^[0GD$G*)H15H(+G(2^[(G0)I[-BO )@@G@@G9>^[,I(!GL>IL(H1$^[(IS)H9, 0)@M@@@@^@)^@)^@)^[H14^[ 0(^@)BQ )@@G@@@G@@@@^@)^@)^@)^[H14^[6GD?I(>^[\G0)IL>I[>GD4^[^[3G(4^[+JC)^93HC$^[^[3G(4^[+JC)^93H8$^[^[3G(4 BU @EOF @COPY,IO TEMP.1015-017-023,1015-017-023. @FREE TEMP.