diff --git a/src/ms/disp.gas3 b/src/ms/disp.gas3 new file mode 100644 index 00000000..20017227 --- /dev/null +++ b/src/ms/disp.gas3 @@ -0,0 +1,1644 @@ +TITLE GAS + +.MLLIT==1 + +TS==0 +TENF==0 ;1 IF FOR PDP-10 + +F=0 +A=1 +B=2 +C=3 +D=4 +E=5 +T=6 +TT=7 +S=10 +AA=11 +BB=12 +CC=13 +DD=14 +NPARTS=15 +I=16 +P=17 + +CRY1==2 +AROV==10 + +RON==1 +ALTERF==2 +QON==4 +MFLG==100 +DEF==1000 +DMF==2000 + +DISON==1 +DISRED==2 +FDIS==4 +CF==40 +NXYMOD==20 + +IFE TS,[ +CLKCHN==5 +TTYCHN==6 +DISCHN==7 +]IFN TS,[ +TYIC==1 +TYOC==2 +] +MAXN==100 +MAXW==40 + +LPDL==100 + +SIZE==2000 +LDIVS==6 ;LOG2 DIVISION SIZE +NDIVS==SIZE_<-LDIVS> ;NUMBER OF DIVISIONS +MAXR==1_ ;MAXIMUM RADIUS OF PARTICLES +IFL LPDL,MAXR+10,LPDL==MAXR+10 +DISL==*MAXN+20*MAXW +DISL2==*MAXN + +LHASHT==* +LEHASH==10*MAXW+MAXN + +IFN TS,DDT==0 +IFE TS,[ +DDT=34000 + +TTIL==100 +TTOL==100 +] +ZZ==. +LOC 41 + JSR UUOH +IFE TS,[ +LOC 40+2*CLKCHN + JSR CLKBRK + +LOC 40+2*TTYCHN + JSR TTYBRK + +LOC 40+2*DISCHN + BLKO DIS,DBLKO' + JSR DISBRK +] +IFN TS,[LOC 42 + JSR INT +]LOC ZZ + +INIT: +IFN TS,[.OPEN TYIC,[SIXBIT \ TTY\] + .VALUE + .OPEN TYOC,[SIXBIT \ !TTY\] + .VALUE + .CALL [SETZ + SIXBIT \TTYGET\ + 1000,,TYIC + 0 + 0 + 402000,,TTYSTS'] + .VALUE + .CALL [SETZ + SIXBIT \TTYSET\ + 1000,,TYIC + [234642424242] + [424242424242] + 400000,,TTYSTS] + .VALUE +] +IFE TS,[ CONO PI,11577 + CONO 633550+CLKCHN +] MOVE P,[-LPDL,,PDL-1] + PUSHJ P,INCGEN + MOVSI F,RON+QON + MOVE A,[440700,,QINITT] + MOVEM A,QINITB +IFE TS,[SETZM TTOCNT' + MOVE A,TTOI + MOVEM A,TTOP' + MOVEM A,ITTOP' + SETZM TTICNT' + MOVE A,TTII + MOVEM A,TTIP' + MOVEM A,OTTIP' + CONO TTY,3600+TTYCHN +]INIT1: MOVE I,[-DISL,,DISBUF-1] + SETZB NPARTS,NWLS' + SETZM RT + MOVE A,[RT,,RT+1] + BLT A,COLLT-1 + SETOM IHASHT + MOVE A,[IHASHT,,IHASHT+1] + BLT A,PDL-1 + PUSH I,[20117] + MOVEI A,3000 + MOVEM A,1(I) + MOVEI A,1 + MOVEM A,ITIME' + MOVNM A,TIME' +IFE TS, CONO PI,2200+1_<7-CLKCHN>+1_<7-DISCHN>+1_<7-TTYCHN> + MOVE A,[-LEHASH,,EHASHT-1] + MOVEM A,IEHP' +DISGEN: MOVE C,[-DISL2-1,,DISBF2-1] + MOVE A,NPARTS + TLNE F,DEF+DMF + JRST DISP2 +DISG1: SOJL A,DLDUN + HLR B,XT(A) + ADD B,RT(A) + HLL B,YT(A) + TLO B,220000 + SKIPG E,RT(A) + TROA B,22000 + TRO B,140000 + PUSH C,B + JUMPE E,DISG1 + CAILE E,MAXR + JRST GENCIR + MOVE E,INCTAB-1(E) +DISG2: PUSH C,(E) + AOBJN E,DISG2 + JRST DISG1 +GENCIR: PUSHJ P,CIRCLE ;E HAS RADIUS, C HAS LOC TO BE STORED INTO + JRST DISG1 + +DISBUF: BLOCK DISL + +DISP2: TLNE F,DEF + JRST DISPE +DISPM: PUSH C,[20134] + PUSH C,[220000,,123000] + PUSH C,[600400,,20134] + PUSH C,[221000,,122000] + PUSH C,[600001,,20137] +DISPM1: SOJL A,DLDUN + MOVE BB,UT(A) + MOVE CC,VT(A) + HRLZ TT,FXMT(A) + MULM TT,BB + MULM TT,CC + ADDI BB,1000 + ADDI CC,1000 + JUMPL BB,DISPM1 + JUMPL CC,DISPM1 + CAIGE BB,2000 + CAIL CC,2000 + JRST DISPM1 + HRL BB,CC + TDO BB,[220000,,22000] + PUSH C,BB + JRST DISPM1 + +DISPE: PUSH C,[20137] + SETZM ET + MOVE B,[ET,,ET+1] + BLT B,ET+176 +DISPE1: SOJL A,DISPE2 + MOVE BB,UT(A) + MOVE CC,VT(A) + TLC BB,210000 + TLC CC,210000 + FAD BB,BB + FAD CC,CC + FMPR BB,BB + FMPR CC,CC + FADR BB,CC + MOVN CC,YT(A) + SKIPLE DD,ACC + ADD CC,[2000,,] + MUL CC,DD + ASHC CC,22 + TLO CC,210000 + FAD CC,CC + FADR BB,CC + FMPR BB,MT(A) + MULI BB,400 + ASH CC,-243(BB) + MOVN BB,XT(A) + MOVE DD,EX + IMUL DD,QT(A) + SKIPLE DD + ADD BB,[2000,,] + MULM DD,BB + ADD CC,BB + MOVN BB,YT(A) + MOVE DD,EY + IMUL DD,QT(A) + SKIPLE DD + ADD BB,[2000,,] + MULM DD,BB + ADD CC,BB + ASH CC,-3 + CAIGE CC,200 + AOS ET(CC) + JRST DISPE1 + +ET: BLOCK 177 ;ENERGY HISTOGRAM + +DISPE2: MOVEI A,176 +DISPE3: HRL B,ET(A) + HRR B,A + LSH B,3 + TDO B,[220000,,22000] + PUSH C,B + SOJGE A,DISPE3 + +DLDUN: PUSH C,[3000] + ADDI C,1-DISBF2(I) + HRRM C,DLBLT + TLNE F,RON + JRST BLTDL +COOR: MOVE A,NPARTS + SOJL A,CORDUN + SETZM TMN + MOVSI B,(1.0) + MOVEM B,TMX' +COOR1: MOVE B,[IHASHT,,HASHT] + BLT B,HASHT+LHASHT-1 + SETOM COLLT + MOVE B,[COLLT,,COLLT+1] + BLT B,COLLT+MAXW-1 + MOVE B,[IEHSHT,,EHASHT] +IEBLT: BLT B,EHASHT-1 + MOVE S,IEHP +COOR2: TRNE F,NXYMOD + JRST GETXY +COORX: MOVE B,UT(A) + ADDB B,XT(A) +COORY: MOVE C,VT(A) + ADDB C,YT(A) + HASH: HLRE E,C + ASH E,-LDIVS + IMULI E,NDIVS+4 + HLRE T,B + ASH T,-LDIVS + ADDI E,NDIVS+5(T) + SKIPL AA,HASHT(E) + JRST BANG + MOVEM A,HASHT(E) +NBTST: MOVNI T,10 + SKIPL AA,@NBHDTB+10(T) + JRST BANG2 +CNBTST: AOJL T,.-2 + SOJGE A,COOR2 + + TRZE F,CF + JRST CAGAIN + TRZ F,NXYMOD +CORDUN: MOVE A,NPARTS + MOVE B,ACC' + SOJL A,DVDUN +DV: ADDM B,VT(A) + MOVE C,EX' + MUL C,QT(A) + DIV C,FXMT(A) + ADDM C,UT(A) + MOVE C,EY' + IMUL C,QT(A) + IDIV C,FXMT(A) + ADDM C,VT(A) + MOVE C,BFIELD' + IMUL C,QT(A) + IDIV C,FXMT(A) + MOVNM C,D + MULM C,D + ASH D,-1 + TLC D,400000 + MOVN E,VISCOS' + MUL E,RT(A) + DIV E,FXMT(A) + TLC E,400000 + MULM E,D + MOVMS D + MULM D,UT(A) + MULM D,VT(A) + MOVN E,UT(A) + MULM C,E + MUL C,VT(A) + ADDM C,UT(A) + ADDM E,VT(A) + SOJGE A,DV +DVDUN: +BLTDL: MOVEI A,1(I) + HRLI A,DISBF2 + TRNE F,DISON + JRST .-1 +DLBLT: BLT A,. + TRO F,DISRED+DISON + + TLNE F,RON + JRST RREAD + JRST DISGEN +IFN 0,[ +DEFINE ITBGEN A + -IL!A,,I!A +TERMIN + +INCTAB: REPEAT MAXR,ITBGEN \1+.RPCNT +] +INCTAB: BLOCK MAXR + +NBHDTB: HASHT+1(E) + HASHT-1(E) + HASHT+NDIVS+4(E) + HASHT-NDIVS-4(E) + HASHT+NDIVS+4+1(E) + HASHT+NDIVS+4-1(E) + HASHT-NDIVS-4+1(E) + HASHT-NDIVS-4-1(E) + + +TBL0: JUMPGE BB,NBM + JRST BADDM + +TCL0: JUMPGE CC,NCM + JRST CADDM + +BANG4: TLNE AA,777777 + JRA AA,BANG2 + JRST CNBTST + +BANG5: MOVE T,AA + SKIPA AA,@AA +BANG: MOVEI T,HASHT(E) +BANG2: CAIG NPARTS,(AA) + JRST WALLB + MOVE BB,XT(AA) + MOVE CC,YT(AA) + MOVE DD,RT(A) + ADD DD,RT(AA) + HRLZS DD + SUB BB,B + MOVMM BB,BBM' + MOVE TT,UT(AA) + SUB TT,UT(A) + JUMPL TT,TBL0 + JUMPLE BB,NBM + MOVNS TT +BADDM: ADDM TT,BBM +NBM: SUB CC,C + MOVMM CC,CCM' + MOVE TT,VT(AA) + SUB TT,VT(A) + JUMPL TT,TCL0 + JUMPLE CC,NCM + MOVNS TT +CADDM: ADDM TT,CCM +NCM: CAML DD,BBM + CAMGE DD,CCM + JRST BANG3 + + MOVEM T,TM' + MOVE B,UT(AA) + MOVE C,VT(AA) + SUB B,UT(A) + SUB C,VT(A) + TLC B,210000 + TLC C,210000 + TLC BB,210000 + TLC CC,210000 + TLC DD,210000 + FAD B,B + FAD C,C + FAD BB,BB + FAD CC,CC + FAD DD,DD + FMPR DD,DD + MOVE T,B + FMPR T,CC + MOVE TT,C + FMPR TT,BB + FSBR TT,T + FMPR TT,TT + MOVEM B,RSPD2' + FMPRM B,RSPD2 + MOVE T,C + FMPR T,T + FADRB T,RSPD2 + FMPR T,DD + FSBRB T,TT + JUMPLE T,BANG2A + + MOVEM S,SM' +SQ1: MOVE S,TT + FDVRM T,TT + FADRM S,TT + FSC TT,-1 + CAME S,TT + JRST SQ1 + + MOVE T,B + FMPR T,BB + MOVE TT,C + FMPR TT,CC + FADR T,TT + FADR T,S + FDVR T,RSPD2 + CAML T,TMN + CAMLE T,TMX + JRST BANG2B + + TRO F,CF + MOVEM T,TMN' + MOVEM A,AM' + HRRZM AA,AAM' + MOVEM DD,DDM' + +BANG2B: MOVE S,SM +BANG2A: MOVE T,TM +BANG2C: MOVE B,XT(A) + MOVE C,YT(A) + +BANG3: JUMPL T,BANG4 + HLRZS AA + JUMPN AA,BANG5 + PUSH S,A + HRLM S,@T + JRST NBTST + WALLB: MOVEI CC,-MAXN(AA) + CAIL CC,MAXW + JRST EWALLB + CAMN A,COLLT(CC) + JRST BANG3 + MOVEM A,COLLT(CC) + + MOVE DD,LWALL(CC) + IMUL DD,RT(A) + MOVE TT,UT(A) + IMUL TT,Y21(CC) + MOVE BB,VT(A) + IMUL BB,X21(CC) + SUB TT,BB + MOVE BB,C + MUL B,Y21(CC) + MUL BB,X21(CC) + SUB B,BB + JFCL CRY1,.+1 + SUB C,CC +IFE TENF, JFCL CRY1,[SOJA B,B1] +IFN TENF,[ JFCL CRY1,B1 + SOJA B,B1 +] +B1: JUMPGE TT,.+3 + MOVNS DD + SOS B + JFCL CRY1,.+1 + ADD C,DD + JFCL CRY1,[AOJA B,B2] +B2: MOVE BB,XY21-MAXN(AA) + MOVEI CC,0 + ASHC BB,-21 + JFCL CRY1,.+1 + ADD C,CC + JFCL CRY1,[AOJA B,B3] +B3: ADDB B,BB + JFCL AROV,.+1 + ASHC B,43 + JFCL AROV,BANG2C + + JUMPE B,WB2 + XOR BB,TT + JUMPL BB,BANG2C ;COLLISION IN FUTURE + + DIVB B,TT + JFCL AROV,BANG2C ;COLLISION TOO FAR IN PAST + + IDIVI B,400000 + SKIPE B + TLO B,211000 + TLO C,170000 + FADR B,C + CAML B,TMN + CAMLE B,TMX + JRST BANG2C + + MOVN C,UT(A) ;CHECK FOR IN BOUNDS + MULM TT,C + MOVN CC,VT(A) + MULM TT,CC + ADD C,XT(A) + ADD CC,YT(A) +WB1: MUL C,X21-MAXN(AA) + MUL CC,Y21-MAXN(AA) + ADD C,CC + JFCL CRY1,.+1 + ADD D,DD + JFCL CRY1,[AOJA C,C1] +C1: ASHC C,22 + ADD C,X2Y212-MAXN(AA) + SKIPGE C + SETCMM C + CAML C,LWALL2-MAXN(AA) + JRST BANG2C + + TRO F,CF + MOVEM B,TMN + MOVEM A,AM + HRRZM AA,AAM + MOVEM TT,TTM' + JRST BANG2C + +WB2: SKIPE TT,TMN + JRST BANG2C + MOVE C,XT(A) + MOVE CC,YT(A) + JRST WB1 + +EWALLB: HRLZ BB,X1-MAXW(CC) + HRLZ CC,Y1-MAXW(CC) + SUB B,BB + SUB C,CC + TLC B,210000 + TLC C,210000 + FAD B,B + FAD C,C + MOVEM B,XDM' + MOVEM C,YDM' + MOVE BB,UT(A) + MOVE CC,VT(A) + TLC BB,210000 + TLC CC,210000 + FAD BB,BB + FAD CC,CC + MOVEM BB,UM' + MOVEM CC,VM' + MOVE DD,RT(A) + IMUL DD,DD + MOVEM DD,D + TLC DD,232000 + FAD DD,DD + FMPR B,CC + FMPR C,BB + FSBR B,C + FMPR B,B + FMPR BB,BB + FMPR CC,CC + FADR BB,CC + FMPR DD,BB + FSBRB DD,B + JUMPLE DD,BANG2C + +WSQ1: MOVE C,B + FDVRM DD,B + FADRM C,B + FSC B,-1 + CAME C,B + JRST WSQ1 + MOVE CC,UM + FMPR CC,XDM + MOVE DD,VM + FMPR DD,YDM + FADR CC,DD + FADR B,CC + FDVR B,BB + CAML B,TMN + CAMLE B,TMX + JRST BANG2C + + TRO F,CF + MOVEM B,TMN + MOVEM A,AM + MOVEM AA,AAM + MOVEM D,DDM + JRST BANG2C + GETXY: MOVE B,XT(A) + MOVE C,YT(A) + JRST HASH + +CAGAIN: EXCH T,TMN ;(T)=0 + MOVEM T,TMX + MOVE A,AM + MOVE AA,AAM + CAIL AA,MAXN + JRST WALLC + + MULI T,400 + LSH TT,-200(T) + MOVN B,UT(A) + MULM TT,B + ADD B,XT(A) + MOVN C,VT(A) + MULM TT,C + ADD C,YT(A) + MOVN BB,UT(AA) + MULM TT,BB + ADD BB,XT(AA) + MOVN CC,VT(AA) + MULM TT,CC + ADD CC,YT(AA) + SUB BB,B + SUB CC,C + TLC BB,210000 + TLC CC,210000 + FAD BB,BB ;RX + FAD CC,CC ;RY + + MOVE B,UT(A) + SUB B,UT(AA) + MOVE C,VT(A) + SUB C,VT(AA) + TLC B,210000 + TLC C,210000 + FAD B,B ;U1-U2 + FAD C,C ;V1-V2 + FMPR B,BB + FMPR C,CC + FADR B,C + FSC B,1 ;2R . (V1-V2) + MOVE C,MT(AA) + MOVN S,C + MOVE T,MT(A) + FADR C,T ;M1+M2 + FMPR C,DDM ;* R^2 + FDVRB B,C + FMPRB B,BB + FMPRB C,CC + FMPR B,S ;DELTA U1 + FMPR C,S ;DELTA V1 + FMPR BB,T ;DELTA U2 + FMPR CC,T ;DELTA V2 + + MULI CC,400 + TSC CC,CC + ASH DD,-221(CC) + ADDM DD,VT(AA) + MULM TT,DD + ADDM DD,YT(AA) + + MULI BB,400 + TSC BB,BB + ASH CC,-221(BB) + ADDM CC,UT(AA) + MULM TT,CC + ADDM CC,XT(AA) + + MULI C,400 + TSC C,C + ASH D,-221(C) + ADDM D,VT(A) + MULM TT,D + ADDM D,YT(A) + + MULI B,400 + TSC B,B + ASH C,-221(B) + ADDM C,UT(A) + MULM TT,C + ADDM C,XT(A) + + MOVEI A,-1(NPARTS) + TRO F,NXYMOD + JRST COOR1 + WALLC: MOVE TT,TTM + MOVEI AA,-MAXN(AA) + CAIL AA,MAXW + JRST EWALLC + + MOVN B,UT(A) + ASH B,7 + MOVN BB,SINTH(AA) + MULM BB,B + MOVN C,VT(A) + ASH C,7 + MOVE CC,COSTH(AA) + MULM CC,C + ADD B,C + MOVE C,ELAST1(AA) + MULB C,B + MULB C,CC + MULM TT,CC + AOS CC + ASH CC,-3 + ADDM CC,YT(A) + AOS C + ASH C,-3 + ADDM C,VT(A) + MULB B,BB + MULM TT,BB + AOS BB + ASH BB,-3 + ADDM BB,XT(A) + AOS B + ASH B,-3 + ADDM B,UT(A) + +WC1: MOVEI A,-1(NPARTS) + TRO F,NXYMOD + JRST COOR1 + +EWALLC: MULI T,400 + LSH TT,-200(T) + MOVN B,UT(A) + MULM TT,B + MOVN C,VT(A) + MULM TT,C + ADDB B,XT(A) + ADDB C,YT(A) + HRLZ CC,Y1-MAXW(AA) + HRLZ AA,X1-MAXW(AA) + SUBB B,AA + SUBB C,CC + MUL AA,AA + MUL CC,CC + SUB AA,CC + JFCL CRY1,.+1 + SUB BB,DD +IFE TENF, JFCL CRY1,[SOJA AA,AA1] +IFN TENF,[ JFCL CRY1,AA1 + SOJA AA,AA1 +] +AA1: ASHC AA,-2 + DIV AA,DDM + MUL B,C + ASHC B,-1 + DIV B,DDM + MOVN C,UT(A) + ASH C,1 + MOVE CC,C + MOVE D,VT(A) + ASH D,1 + MOVE DD,D + MULM AA,C + MULM B,D + SUB C,D + MOVEM C,UT(A) + MULM AA,DD + MULM B,CC + ADD CC,DD + MOVEM CC,VT(A) + MULM TT,C + MULM TT,CC + ADDM C,XT(A) + ADDM CC,YT(A) + JRST WC1 + +IFN 0,[DEFINE VINCM A1 + CNT==0 + VWORD==1 + IL!A1==0 + I!A1: + CONS + FXY==0 + Y==0 + X==A1 + .TAG C1 + FXY==FXY+2*Y+1 + Y==Y+1 + IFGE FXY-X,[FXY==FXY-2*X+1 + X==X-1 + STRING CONS ,UL,UL, + .GO C3 + ] + STRING CONS ,U,L, + .TAG C3 + IFL Y,X-1,[STRING CONS ,[,][,] + .GO C1 + ] + IFN Y,X-1,STRING CONS ,[,], + U==2 + L==14 + UL==U+L + STRING [SCONC [IRPS A,,]],,[ + ADVINC A,A1 + TERMIN] + U==L + L==3 + UL==U+L + STRING [SCONC [IRPS A,,]],,[ + ADVINC A,A1 + TERMIN] + U==L + L==10 + UL==U+L + STRING [SCONC [IRPS A,,]],,[ + ADVINC A,A1 + TERMIN] + U==L + L==2 + UL==U+L + STRING [SCONC [IRPS A,,]],,[ + ADVINC A,A1 + TERMIN] + IFE CNT,20000 + IFN CNT,_20+400000020000 + IL!A1==IL!A1+1 +TERMIN + +DEFINE ADVINC VINC,A1 + VWORD==VWORD_4+VINC + CNT==CNT+1 + IFE CNT-4,VWORD==VWORD_2+1 + IFE CNT-10,[CNT==0 + VWORD + VWORD==1 + IL!A1==IL!A1+1 + ] +TERMIN + +DEFINE CONS X,Y +DEFINE STRING S1,S2,S3,S4 +S1[X!!S2][S3!!Y]D!TERMIN +TERMIN + +DEFINE SCONC S1,S2,S3,S4 +S1[S2!S3]S4 +TERMIN + +REPEAT MAXR,VINCM \1+.RPCNT +] + +INCGEN: MOVEI E,MAXR ;RADIUS + MOVEI C,INCS-1 ;TO BE STORED INTO +INCGN0: HRRZM C,INCTAB-1(E) ;ONE TOO SMALL + PUSHJ P,CIRCLE + HLLZ T,C + HRRZS C + MOVNS T + AOS T + ADDM T,INCTAB-1(E) + SOJG E,INCGN0 + POPJ P, + +CIRCLE: MOVEI S,3 ;QUADRANT + MOVEI D,4 ;HALF WORD INCREMENT COUNT + MOVEI TT,0 ;LEFT OR RIGHT HALF + MOVEI B,1 ;INCREMENT WORD BEING ASSEMBLED +INCG0: MOVE AA,E ;X + MOVEI BB,0 ;Y + MOVEI CC,0 ;F + PUSHJ P,INCGA + SOJGE S,INCG0 + JUMPE TT,INCG4 + LSH B,20 + TLO B,400000 ;ESCAPE +INCGD: IORI B,20000 ;POINT MODE + PUSH C,B + POPJ P, + +INCG4: MOVEI B,400000 + IORM B,(C) + JRST INCGD + +LTTAB: 2 +UPTAB: 10 + 3 + 14 + 2 + +INCGA: CAIN BB,-1(AA) + JRST INCGB +INCG1: ADD CC,BB + AOS BB + ADD CC,BB + LSH B,4 + IOR B,UPTAB(S) + MOVE T,LTTAB(S) + CAMGE CC,AA + JRST INCG2 + SUB CC,AA + SOS AA + SUB CC,AA + IOR B,LTTAB(S) + IOR T,UPTAB(S) +INCG2: PUSHJ P,INCSTO + HRLM T,(P) + CAIGE BB,-1(AA) + PUSHJ P,INCG1 + CAIE BB,-1(AA) + JRST INCG3 + LSH B,4 + IOR B,UPTAB(S) + IOR B,LTTAB(S) + PUSHJ P,INCSTO + AOS BB + SOS AA +INCG3: HLRZ CC,(P) + LSH B,4 + IOR B,CC +INCSTO: SOJG D,CPOPJ + MOVEI D,4 + TRCE TT,1 + JRST INCST1 + LSH B,2 + AOJA B,CPOPJ +INCST1: PUSH C,B + MOVEI B,1 + POPJ P, + +INCGB: LSH B,4 + IOR B,UPTAB(S) + IOR B,LTTAB(S) + JRST INCSTO + +INCS: BLOCK >/2 + +DISBF2: BLOCK DISL2 + +UUOH: 0 + PUSH P,UUOH + PUSH P,A + LDB A,[331100,,40] + JUMPE A,ZUUO + JRST 4,DDT +ZUUO: LDB A,[270400,,40] + JRST .+1(A) + JRST 4,DDT + JRST .PTUUO + JRST .EPTUUO + REPEAT 15,JRST 4,DDT + +.EPTUUO: IFE TS,CONO PI,1000+1_<7-CLKCHN>+1_<7-DISCHN> +.PTUUO: PUSH P,B + HRRZ B,40 + PUSHJ P,PRINT + POP P,B +POPAJ: POP P,A + POPJ P, + +PTUUO=1_27 +EPTUUO=2_27 + IFE TS,[ +DISBRK: 0 + CONO DIS,100 + TRZE F,FDIS + TRZ F,DISON + JRST 12,@DISBRK + +CLKBRK: 0 + CONSZ 200000 + JRST PDLOV + CONSO 1000 + JRST 4,DDT + PUSH P,A + AOSGE TIME + JRST CLKBK2 + TLNE F,RON + JRST .+3 + TRZN F,DISRED + AOSA A,ITIME + MOVE A,ITIME + MOVNM A,TIME + TRO F,FDIS +CLKBK3: MOVE A,[-DISL,,DISBUF-1] + TLNE F,DEF+DMF + MOVE A,I + MOVEM A,DBLKO + CONO DIS,100+TTYCHN_3+DISCHN +CLKBK1: POP P,A + CONO 1000+CLKCHN + JRST 12,@CLKBRK + +CLKBK2: CONSZ DIS,77 + JRST CLKBK1 + JRST CLKBK3 + +PDLOV: JUMPGE P,PSCREW + JUMPGE S,SSCREW + JUMPGE C,DBUFOV + EPTUUO [ASCIZ \ +RANDOM PDL OV\] + JRST 10,. +DBUFOV: PTUUO [ASCIZ \ +DISBF2 OV?\] + JRST 10,RREAD +PSCREW: EPTUUO [ASCIZ \ +PCE\] + JRST 10,. +SSCREW: EPTUUO [ASCIZ \ +EXT HASHT OV\] + JRST 10,. + + +TTYBRK: 0 + CONSO DIS,400 + JRST TTYB1 + TRZE F,FDIS + TRZ F,DISON + CONO DIS,100 +TTYB1: CONSZ DIS,5000 + CONO DIS,200+TTYCHN_3+DISCHN + PUSH P,A +TTI: CONSO TTY,40 + JRST TTO + DATAI TTY,A + ANDI A,177 + CAIN A,^D + JRST DDT + CAIN A,^R + JRST TRON. + HRRM A,TTI1 + MOVEI A,5*TTIL + CAMG A,TTICNT + JRST PQ +TTI1: MOVEI A,. + IDPB A,TTIP + AOS TTICNT + MOVE A,TTIP + CAMN A,TTIPND + HRRI A,TTIBUF-1 + HRRM A,TTIP +TTO: CONSZ TTY,20 + JRST POPAR + SOSGE TTOCNT + JRST NMTTO + MOVE A,TTOP + CAMN A,TTOPND + HRRI A,TTOBUF-1 + HRRM A,TTOP + ILDB A,TTOP + DATAO TTY,A +POPAR: POP P,A + JRST 12,@TTYBRK +NMTTO: SETZM TTOCNT + CONO TTY,200+TTYCHN + JRST POPAR + +PQ: MOVEI A,7 + DPB A,ITTOP + JRST TTO + +TRON.: TLO F,RON + JRST TTO + +TTIBUF: BLOCK TTIL +TTOBUF: BLOCK TTOL + +TTOPND: 10700,,TTOBUF+TTOL-1 +TTOI: 10700,,TTOBUF-1 +TTIPND: 10700,,TTIBUF+TTIL-1 +TTII: 10700,,TTIBUF-1 +] +NPRNT: IDIVI A,10 + HRLM B,(P) + SKIPE A + PUSHJ P,NPRNT + HLRZ A,(P) + TROA A,60 + +TYOCR: MOVEI A,15 +IFE TS,[ +TYO: PUSH P,A + MOVEI A,5*TTOL + CAMG A,TTOCNT + JRST .-1 + MOVE A,ITTOP + CAMN A,TTOPND + HRRI A,TTOBUF-1 + HRRM A,ITTOP + MOVE A,(P) + ANDI A,177 + CAIGE A,40 + JRST CNTRL +TYO1: POP P,A +TYO2: IDPB A,ITTOP + SKIPG TTOCNT + AOSA TTOCNT + AOSA TTOCNT + CONO PI,4000\1_<7-TTYCHN> + POPJ P, + +CNTRL: CAIN A,15 + JRST CRLF +CLF: CAIE A,12 + CAIN A,11 + JRST TYO1 + MOVEI A,"^ + PUSHJ P,TYO + MOVE A,(P) + TRO A,100 + PUSHJ P,TYO + JRST POPAJ + +CRLF: PUSHJ P,TYO2 + MOVEI A,12 + PUSHJ P,TYO + JRST POPAJ +] +IFN TS,[ +TYO: .IOT TYOC,A + POPJ P, +] +PRINT: TLOA B,440700 +PR1: PUSHJ P,TYO + ILDB A,B + JUMPN A,PR1 + POPJ P, + TYI: TLNE F,QON + JRST [ILDB A,QINITB + JUMPN A,TYO + TLZ F,QON + JRST .+1] +IFE TS,[ + SKIPG TTICNT + JRST .-1 + MOVE A,OTTIP + CAMN A,TTIPND + HRRI A,TTIBUF-1 + HRRM A,OTTIP + ILDB A,OTTIP + SOS TTICNT + JRST TYO +]IFN TS,[ + .IOT TYIC,A + POPJ P, +] +NUMGTE: MOVEI A,"= + PUSHJ P,TYO + +NUMGET: MOVEI B,0 + TLO F,MFLG + PUSHJ P,TYI + CAIE A,"- + TLZA F,MFLG +NUMG1: PUSHJ P,TYI + CAIL A,"0 + CAILE A,"9 + JRST NUMG2 + LSH B,3 + ADDI B,-"0(A) + JRST NUMG1 +NUMG2: TLNE F,MFLG + MOVNS B + CAIE A,177 + POPJ P, + MOVEI A,"? + PUSHJ P,TYO + JRST NUMGET + +EHASHT: BLOCK LEHASH ;LIST-STRUCTURED EXTENSION OF HASHT +IEHSHT: BLOCK LEHASH + +RT: BLOCK MAXN +XT: BLOCK MAXN +YT: BLOCK MAXN +UT: BLOCK MAXN +VT: BLOCK MAXN +MT: BLOCK MAXN +FXMT: BLOCK MAXN +QT: BLOCK MAXN + +COLLT: BLOCK MAXW +X1: BLOCK MAXW ;NORMAL INTEGER +X2: BLOCK MAXW +Y1: BLOCK MAXW +Y2: BLOCK MAXW +X21: BLOCK MAXW +Y21: BLOCK MAXW +XY21: BLOCK MAXW +X2Y212: BLOCK MAXW ;NORMAL INTEGER +LWALL: BLOCK MAXW ;LEFT HALF +LWALL2: BLOCK MAXW ;NORMAL INTEGER +SINTH: BLOCK MAXW ;BINARY POINT AFTER BIT 1 +COSTH: BLOCK MAXW ;" +ELAST1: BLOCK MAXW ;BINARY BPOIN AFTER BIT 2 + + REPEAT NDIVS+4,-1 +HASHT: BLOCK LHASHT + REPEAT NDIVS+4,-1 + +IHASHT: REPEAT LHASHT,-1 + +PDL: BLOCK LPDL + +RVRS: PTUUO [ASCIZ \EVERSE \] + MOVE A,NPARTS + SOJL A,RREAD +RV1: MOVNS UT(A) + MOVNS VT(A) + SOJGE A,RV1 + JRST CORDUN + +RREAD: PUSHJ P,TYOCR +RREAD0: TLZ F,ALTERF +RRD1: PUSHJ P,TYI +RRD2: CAIN A,"S + JRST START + CAIN A,"G + JRST GRAV + CAIN A,"E + JRST EF + CAIN A,"B + JRST BF + CAIN A,"V + JRST VISC + CAIN A,"C + JRST CLEART + CAIN A,"D + JRST DISP + CAIN A,"R + JRST RVRS + CAIN A,"P + JRST PARTIC + CAIN A,"A + JRST ALTER + CAIN A,"W + JRST WALL + CAIE A,15 + CAIN A,12 + JRST RREAD + MOVEI A,"? + PUSHJ P,TYO + JRST RREAD + +QINITB: 440700,,QINITT +QINITT: ASCIZ \W0,0 0,1777 +W0,1777 1777,1777 +W0,0 1777,0 +W1777,0 1777,1777 +\ + +WALL: PTUUO [ASCIZ \ALL \] + TLNE F,ALTERF + JRST AWALL + MOVE C,NWLS + CAIL C,MAXW + JRST WSE + MOVE A,C + PUSHJ P,NPRNT + PTUUO [ASCIZ \: \] +W1: PTUUO [ASCIZ \ PT1\] + PUSHJ P,NUMGTE + MOVEM B,X1(C) + PUSHJ P,NUMGET + MOVEM B,Y1(C) + PTUUO [ASCIZ \ PT2\] + PUSHJ P,NUMGTE + MOVEM B,X2(C) + PUSHJ P,NUMGET + MOVEM B,Y2(C) + MOVE BB,X2(C) + MOVE CC,Y2(C) + CAML BB,X1(C) + JRST W2 + EXCH BB,X1(C) + MOVEM BB,X2(C) + EXCH CC,Y1(C) + MOVEM CC,Y2(C) +W2: SUB BB,X1(C) + JUMPN BB,W3 + CAML CC,Y1(C) + JRST W3 + EXCH CC,Y1(C) + MOVEM CC,Y2(C) +W3: SUB CC,Y1(C) + MOVEM BB,X21(C) + MOVEM CC,Y21(C) + MOVE T,X1(C) + ADD T,X2(C) + IMUL T,BB + MOVE TT,Y1(C) + ADD TT,Y2(C) + IMUL TT,CC + ADD T,TT + MOVNM T,X2Y212(C) + MOVE T,X1(C) + IMUL T,Y2(C) + MOVE TT,Y1(C) + IMUL TT,X2(C) + SUB TT,T + MOVEM TT,XY21(C) + MOVE S,BB + IMUL S,S + MOVE T,CC + IMUL T,T + ADD S,T + MOVEM S,LWALL2(C) + MOVEI TT,0 + ASHC TT,44 + MOVSI DD,100 +SQA: MOVE B,DD + DIVM TT,DD + ADDM B,DD + AOS DD + ASH DD,-1 + CAME B,DD + JRST SQA + MOVEM B,LWALL(C) + MOVEI DD,0 + ASHC CC,22-1 + DIV CC,B + MOVEM CC,SINTH(C) + MOVEI CC,0 + ASHC BB,22-1 + DIV BB,B + MOVEM BB,COSTH(C) + + MOVE S,IEHP + MOVE B,[IEHSHT,,EHASHT] + BLT B,(S) + MOVEI DD,MAXN(C) + SKIPN X21(C) + JRST W4 + MOVE BB,X1(C) + TRZ BB,SIZE/NDIVS-1 +W5: MOVE T,BB + SUB T,X1(C) + IMUL T,Y21(C) + IDIV T,X21(C) + ADD T,Y1(C) + MOVE CC,T + PUSHJ P,HSHSTO + ADDI BB,SIZE/NDIVS + CAMG BB,X2(C) + JRST W5 +W4: SKIPN Y21(C) + JRST W6 + MOVE CC,Y1(C) + MOVE E,Y2(C) + SKIPG Y21(C) + EXCH E,CC +W7: MOVE T,CC + SUB T,Y1(C) + IMUL T,X21(C) + IDIV T,Y21(C) + ADD T,X1(C) + MOVE BB,T + PUSHJ P,HSHSTO + ADDI CC,SIZE/NDIVS + CAMG CC,E + JRST W7 +W6: ADDI DD,MAXW + MOVE BB,X1(C) + MOVE CC,Y1(C) + PUSHJ P,HSHSTO + ADDI DD,MAXW + MOVE BB,X2(C) + MOVE CC,Y2(C) + PUSHJ P,HSHSTO + MOVEM S,IEHP + HRRM S,IEBLT + MOVS B,[IEHSHT,,EHASHT] + BLT B,IEHSHT-EHASHT(S) + + MOVSI B,200000 + MOVEM B,ELAST1(C) + +W8: CAIN A,15 + JRST WD0 + PUSHJ P,TYI + CAIN A,"E + JRST GETEL + CAIE A,15 + JRST WD0 +W8Q: PTUUO [ASCIZ \? \] + JRST W8 + +GETEL: PTUUO [ASCIZ \LASTICITY\] ;ELASTICITY + PUSHJ P,NUMGTE + TLNN F,MFLG + CAIL B,3 + JRST W8Q + EQVI B,7 + CAIN A,". + PUSHJ P,NUMG1 + JUMPGE B,GETEL1 + LSH B,3 + JUMPL B,.-1 +GETEL1: JUMPE B,W8Q + ADD B,[100000,,] + MOVEM B,ELAST1(C) + JRST W8 + +WD0: TLNE F,ALTERF + JRST WE + MOVE B,X1(C) + HRL B,Y1(C) + TDO B,[220000,,102000] + PUSH I,B + MOVM E,Y21(C) + CAMG E,X21(C) + MOVE E,X21(C) + ADDI E,176 + IDIVI E,177 + MOVE BB,X1(C) + MOVE CC,Y1(C) +WD1: MOVEI B,0 +WD2: MOVE T,X2(C) + SUB T,BB + IDIV T,E + ADD BB,T + MOVE TT,Y2(C) + SUB TT,CC + IDIV TT,E + ADD CC,TT + JUMPGE TT,.+3 + MOVNS TT + TRO TT,200 + SKIPE B + HRLS B + HRRM T,B + DPB TT,[101000,,B] + TRO B,200000 + TLNE B,777777 + JRST WD3 + SOJG E,WD2 + TRO B,400000 + HRLS B + JRST WD4 +WD3: PUSH I,B + SOJG E,WD1 + MOVEI B,400000 + IORM B,(I) +WD4: HRRI B,20000 + PUSH I,B + MOVEI B,3000 + MOVEM B,1(I) + +WE: TLZN F,ALTERF + AOS NWLS + JRST DISGEN + +AWALL: PUSHJ P,NUMGET + MOVM C,B + CAMGE C,NWLS + JRST W1A + PTUUO [ASCIZ \? #\] + JRST AWALL +W1A: + JRST W8 + +HSHSTO: MOVE T,CC + ASH T,-LDIVS + AOJL T,CPOPJ + CAIL T,NDIVS+2 + POPJ P, + IMULI T,NDIVS+4 + MOVE TT,BB + ASH TT,-LDIVS + AOJL TT,CPOPJ + CAIL TT,NDIVS+2 + POPJ P, + ADDI T,IHASHT(TT) + SKIPL AA,@T + JRST HSHS1 + MOVEM DD,@T + POPJ P, +HSHS2: HLRZ T,AA + MOVE AA,@T +HSHS1: TLNE AA,777777 + JRST HSHS2 + CAMN AA,DD + POPJ P, + PUSH S,DD + HRLM S,@T +CPOPJ: POPJ P, + +START: PTUUO [ASCIZ \TART +\] + TLZ F,RON + JRST DISGEN + +CLEART: PTUUO [ASCIZ \LEAR \] + JRST INIT1 + +DISP: PTUUO [ASCIZ \ISPLAY \] + TLZ F,DEF+DMF +D1: PUSHJ P,TYI + CAIN A,"P + JRST DPART + CAIN A,"E + JRST DNRG + CAIN A,"M + JRST DMOM + PTUUO [ASCIZ \ ?\] + JRST D1 + +DPART: PTUUO [ASCIZ \ARTICLES \] + JRST DISGEN +DNRG: PTUUO [ASCIZ \NERGIES \] + TLO F,DEF + JRST DISGEN +DMOM: PTUUO [ASCIZ \OMENTA \] + TLO F,DMF + JRST DISGEN + +ALTER: PTUUO [ASCIZ \LTER \] + TLO F,ALTERF + JRST RRD1 + +GRAV: PUSHJ P,NUMGTE + IMULI B,111 + MOVEM B,ACC + JRST RREAD + +EF: PUSHJ P,NUMGTE + IMULI B,111 + MOVEM B,EX + PUSHJ P,NUMGET + IMULI B,111 + MOVEM B,EY + JRST RREAD + +BF: PUSHJ P,NUMGTE + MUL B,[4210421042] + MOVEM B,BFIELD + JRST RREAD + +VISC: PTUUO [ASCIZ \ISCOSITY=8^-5*\] + PUSHJ P,NUMGET + IMULI B,421042 + MOVMM B,VISCOS + JRST RREAD + +PARTIC: PTUUO [ASCIZ \ARTICLE \] + TLNE F,ALTERF + JRST APARTC + CAIL NPARTS,MAXN + JRST PSE + MOVSI A,(1.0) + MOVEM A,MT(NPARTS) + MOVEI A,1 + MOVEM A,FXMT(NPARTS) + MOVEM A,RT(NPARTS) + MOVE A,NPARTS + PUSHJ P,NPRNT + PTUUO [ASCIZ \: \] + MOVE C,NPARTS +P1: CAIN A,15 + AOJA NPARTS,DISGEN + PUSHJ P,TYI + CAIN A,"X + JRST SETX + CAIN A,"Y + JRST SETY + CAIN A,"R + JRST SETR + CAIN A,"U + JRST SETU + CAIN A,"V + JRST SETV + CAIN A,"M + JRST SETM. + CAIN A,"Q + JRST SETQ + CAIE A,15 + PTUUO [ASCIZ \? \] + JRST P1 + +APARTC: PUSHJ P,NUMGET + MOVM C,B + CAMGE C,NPARTS + SOJA NPARTS,P1 + PTUUO [ASCIZ \? #\] + JRST APARTC + +SETQ: PUSHJ P,NUMGTE + MOVEM B,QT(C) + JRST P1 + +SETM.: PTUUO [ASCIZ \ASS\] + PUSHJ P,NUMGTE + MOVMM B,FXMT(C) + TLC B,232000 + FAD B,B + MOVMM B,MT(C) + JRST P1 + +VTL: PTUUO [ASCIZ \? V\] + +SETV: PUSHJ P,NUMGTE + IMULI B,10421 + MOVEM B,VT(C) + CAMGE B,[MAXR,,] + CAMGE B,[-MAXR,,] + JRST VTL + JRST P1 + +UTL: PTUUO [ASCIZ \? U\] + +SETU: PUSHJ P,NUMGTE + IMULI B,10421 + MOVEM B,UT(C) + CAMGE B,[SIZE/NDIVS,,] + CAMGE B,[-SIZE/NDIVS,,] + JRST UTL + JRST P1 + +SETR: PTUUO [ASCIZ \ADIUS\] +SETR1: PUSHJ P,NUMGTE + MOVMS B + MOVEM B,RT(C) + CAIG B,MAXR + JRST P1 + PTUUO [ASCIZ \? R\] + JRST SETR1 + +SETY: PUSHJ P,NUMGTE + HRLZM B,YT(C) + JRST P1 + +SETX: PUSHJ P,NUMGTE + HRLZM B,XT(C) + JRST P1 + +PSE: PTUUO [ASCIZ \PSE\] + JRST RREAD + +WSE: PTUUO [ASCIZ \WSE\] + JRST RREAD + +PATCH: BLOCK 200 + + END INIT +  \ No newline at end of file