e V[3 XV   PP@(U W\X T(}e.(T0V0#X/8R S0V#BS40T8V"C !@!bR@ ( bvRg_qJ(|0}vdrRgkqKҋv0~rRgyf giH ( ((gIjIX3*O XVP  VXՑ([ҐҐҔ(/ AFAT LREOR,RT PA ETSTASU= RFMO TM:0OCYPIRHG(T)CGD,C9177LA LIRHGSTR SEREEVD(    $%{%{R$%%]thy#xj VrBF VT$&(*,  > C N Z | !!d!n!w!!!!!!!!!"""###,eV,e <(C&N,U7 ^6e5 l58 GG s +COPY REV 5.01 + o  o1B PC#C e I[ dG Ib o COPY o A o  I@' e g4 o E,: o   o E0: o   o,0# e g* eՐ@ fK@ + o00# e g+ eՐ@ fK@ +:>DP d, e<IDP f0 dGK+YB]DP d, e[jnMT d, el{DP d0 eMT d0 e5 oMT0 og MT1 og  o* o   d eK o,F# eӍ# d* e g* o} o , o|} o+ o   d eK o0F# e#- d+ e g+ o o 0 o o* o   d eK o,_F# e]#r d* e g* d eK o0F# e# d+ e g+ o* j**INITIALIATION FAILURE** +DISK SIZING ERROR  +INSUFFICIENT ARGUMENTS +INVALID ARGUMENT r?  (&  l!PC dC#C e# dC#C e$ dC# eC e%P f%K O#C I o I o*  I  o#PC f@ PK@4( I o I  o o# j**FATAL MULTITASKING ERROR** r @,ф ڄ lPC8#C eu I  o # exՐ@: dv+C Iy oxx o 4 + o  I oya oxxw o 4 G d4 exՐ@ W+ o ox o# j**FATAL MULTITASKING ERROR** r P`(&| {z lz}PC dWC8#C e# dWC6#C e$ dWC4# eSC e%P f%K OS#C I o IX oX+  IU' eV IX oW+  I oTB#PC fU@ 2PK o oW o# j**FATAL MULTITASKING ERROR** r @`,g[ pZwY lY\ d eCPC#C e It o Id ox  o 4  o  Im o  d4P g4 Im o d4 eՐ@ o# j**FATAL MULTITASKING ERROR** r P(& % l/ dC#C e# dC#C e$ dC# eC e%P f%K O #C I  o* I  o+ I ' e I  o+ L@4 o o o# r @ }`'C!8C)AK!>C+n#+1: !67 " " !#C)*K;"CC"C"C"C"C8PG` r!!D% P? 0 / J @&:Lb!-)%I+1&) IK)K)I))Iqrrug`@tnrx) -)I+31Q1)II )I)ގI)ҎIS)ώI)̎IS)ĎI1,Y Q ij! )19!(& G d }C/P d {C d yC o ! | #C o! v o" ~#/C o#" u#+K o" t#+'CK o#! s#+K#f#b o!#P * J d yC o ! #C#b#f#d[ o!#P I r#PC f }@ \ I! ~' e | f yP+C#  + ySEEK RETRY o ! z #C#f#b o!#P  J#PC f }@  I! ~ d yPC Y" S Q at/ + yREAD/WRITE RETRY# e x  -  o! w#C + y + yHARD DISK ERROR!PC ##C e x e rK I"!#PC d q+ LK o$## e rG + y C    kHIT ANY KEY TO CONTINUE r p(" UNIT CYL HEAD SECTOR STATUS"/1X,OI2,T9,OI4,T16,OI3,T26,OI3,T35,6OI1/)! r  } o o o #+'O f d  o #/G r r ! "`e! b) ae!@`[@ ((   + 5 + 5 o  5 o  2 * 4 # 6 )(S72)!P g o E r r ( < (( v w } F @  L I  v d tG I  w d tGPG e P j d g  d у g e sՐ@ o: #C e |   p d xG rPC d g  d у g e sՐ@ o: #C e | f yK+  o% w v#PC  o% t v v d g  l d у g e sՐ@ o: #C e P h e y  r o: #C e {Ր@  f zK@+ ' K I  w I  w'+ f ~ e rC I  w' e q3G j# e {C d p+ MPK I  K p d o+C o  r?H( /ZA 90 } ' e  r'P r + RDOS ERROR NO.  k r  } 'P r' e ̍ r R r - . } G  F Ӏ  I  , d 1G o% - - + oo 1# e /  o  o *# e 0  o% 1 - * - o  1 o  r(  } 7' e Ր@  E r' e  O R ' e  Y + **TAPE ERROR**' e  { + ILLEGAL COMMAND' e  + PARITY ERROR' e  + LOADPOINT' e  + BAD TAPE ERROR' e  + ODD CHARACTERS k r kREWIND TAPE AND MOUNT NEXT REEL- TYPE ANY KEY TO CONTINUE r  PC }'P02#P ? PGO r ?! }#/P zO r r (#/P+7P7. b r rCOPYRIGHT(C)DGC,1971,1972,1973,1974,1975ALL RIGHTS RESERVED.P  P " r9<@l i8 + d@+`3 )v)s3PZ0JP8 LS3 )\)W IV8 ;CS0)A:JBӀ@(0 2H!t ( PP  0 2 P 0B)PJ ] !U " !    jYKQ=8 +P+R!K)Z Z)7JJ)/J9-J9+Z9%K)WK1PZ9++J9SS! )ǥ1~ X wY9* I  )1"C)) 1 #B8 ;   ! o!I! w! w! w o#SYSTEM ERROR: NO MEMORY OR F$COM.CM F$COM.$$$TTOC '+P3 7 r R  ' r ' r ' r r #/  r #/ r R  # Or]aX:#@d?X    7 X3X2X 9#SB")B@X ) @X 9Y;  3) S* 9 K) )@X1!Q2 :)   )=J B* 1J)žZ9+S:J1ZI%)!I"X93 3) ))KSS) K" "FX0X9.Y. ` '> " Z8+J  0*N ")BQ1X: ) JZ + # M `2 IY993  * *K)J  )K911%ZX `. JN"   "X9 3 * *K8 X 8#B"X =v 2)t 9%1%P1$+ %=e !+M`C 0*K)\""*X 0PJB0B  "  1 "X )?B   0: -.JJ U*2 "0 2*UJZJ  X @B  `5 5 `$ $x0 P 0@"E"*:Y:X:2`7Y0BJZ8ZZ8@ZZ"F`Q YAI"9BJ93 *1 J!)S9 3@  '+ " r ' "rY tqqP qqPCK!TPCC!V`CA!NPC!N`C!HCCCCCCCCCCCC!;CPCC2S "C'C  3 )%" PS# {+ +3  BS"') +K1 n @*xBP 3 #C#%d# 9C!C# zK1 # 1N+"\m "KS 9C3"K 9C32kIˀEˀDˀFˀGOAPLS(,@/lZuW!W F)HXT"'WH#Ƃ +# (#++¦) 3S#)3 .%+3 #PSPSP3 D4 n# #Ƃ 3 3 ?|3!+ ! !  {##C 01J @|3!Da#C 8G1+ J#+ҋ 33"")''B3") tG+`P2` b3" "*'G+#K,3*K1B)J / \)83;"B843 #C3 B(#3 #C Bk# h#+A t {C#+A t)w {#3 ACPnn = 3+ J#B3ҜCSK 3 "C > #Ă#ł  W3#  ?PC ?3#  @  @ t3!CF#C+#3J # {3C#+P b_ 3#P ?US#)3A .CM3#  ?|S#)3A .C ) {3ҝ1+P1 b.3)J S#)3A .C)#P ?# {# z1 1 1 G t4FT 3# 3#S)3A .+A t)? ) {C'C3 CPC+r = 7") !ZS *3J+JR3C "G3B3" )3 C!33 "/ǎDODŽP3 "/4Z3"C3 C3 C > ) 3K ;+J3 CǓ C3 HC")K1"C1"C3#)J PS   3#P+ -CS @C#Á z1S #+A t) {# z 3ǂC 3#+ A4C wP# JKPC3"C 23#B# # ##Ƃ r# r#+A t) {#3 Ar#) # 3Br t\#C#C#C%ClLA.S#Ƃ N#  #) C) ) #+K+KO3B#BPB#`3` b3'N)%B"C 7C#C# #) ) 9+3K)# ^) tYR^F_DG+3 #SPSPP3 CnE' :+3 +K ;#+C+4#+K+#BC#3 ;+ë3K <#)ō 1 )#S3A .C *3)#S)K+#!J3# ;+3K <#+A t+ {#C#Â# :)֒ ;#C#))K)K3J#+1\L8S3̕ t, {4\83#D"+B84\8C3#B)`PB)ZBCBCC#C# zѪ 61R 1J 1H # zѪ '1C );1; .19 +17 $15 &13 #!+3#̂ 3S 1 5؀ t3#B# 3#4̅C 8+ΦC@0+-.ED \8+3SɶS3/ O4\8#C#C3Ʌ/ 4O\83JJ$CʅPC#ʂ S 1 53#Ђ6C C#ʂPC%Cʭ 43PC#ʂ S 2 43#ЂC C#ʂPC 648\83"(:\X$L")&B"9!$L9")B:\P<Z\83P*L9 ,D9"B,D")ݦB\ 43"99"D@P$@Dt@\8C3*K")B+ΎK΁ 33"##1 )3ҐҔ)z)3ҐҔ)uKC͢K+K+ #)d )`  +# +J##++Z+K3S/ $+3SɶS3/   1CCCC#  * /u 1),# {#+ͪ  # z1K {#3+J4FG\8!0P+\8CDžCCK' z#1: ) 3  P1* 1( !%1%1+Ǫ 3+ Z KC#+ȫ4#ǂ tY t +-9 \8KK[3 Dɪ#C#+ t,1a { {#4\8 K J26CȕSɅC3#ɖ#Ȗ0K#)83A .C#  #+A t)- {3 ?3S#)!3A .CCʅCȃCSCS#+A t) {#4 -*0\8S'KȅC#+A t)% {)"3S#)3A .C3 ?)3 S#) 3A .CCȍK40.q!! '  > r3")J!WBq! 7"G'WBrq)#q)K!= 32SC' z )K'7 t {+3 r!! ! 3 '7 t {3#Br3 q C!NCC q CKP #)@? {!C!;KCCC48\3 ~8S!,X#+@+ 1+9!8; KC48+9 ҀP\8#3 CC!= !>\#+94 +&"r(Jr#Cw! P8#J֠WrT0Z; \[;Z UBJ@J; 9L"K 'SX)C0H*"T0Z<T0Z393;08;X!*@##+38")33V3 XS1P o sJ uI u q" 0""*2qC2"9v+ME!kPC2)hπ# o!!?PR!; w# w!D w#+@ o!I# w!@ w#3J 1J;+; 1B(K, 3P  o!I# w!, w rV `@Br8AAFATAL RUNTIME ERROR A AT LOC. A, CALLED FROM LOC. A ?V!yqJ zr x3qCC!&C'pC#  !#S {33 #) { {3Br0!B'd qP)K)@)K)P@S {3 {3Brq ) s! q B X* !@8X1 #K@8q)K2*KJrC3*7 8Wrq)K2&(!Z\@\22X8+X82!\J @J22X83&X83C C*KJ)0K!)07]J2W0X9 Ɛ8X 9P@ @!8$TTI$TTO) )q9>+  %B!B -"9BE J 99#  K ) 9 #BK % ?"m!B """"""+ ""*#r($9$;#r"$$$)"""#"$#$$1$3"$5$7"""#*"""$="""#""""/"9W9 ;); "*#8"""###""""""#&(""""""""""""""""""""""$""""""#l$29  8 +9 ! A ! K(" 0#B*J +: K o*I1" Q! 3! 1 ) 1:0!"$F9 9 9 9 9 9 +u0' JN$fY*PA'#@Y$Ҁ*@9   9)   ) ) 9 G  A C#B;# T#  /0B#B"B !9 +(J!9+ 9(L"m       9 *X!B* *99597Z+$ J ;Z;# B"BJ `# # `S:]8 2 : S 8`#+ "a?)9#  !Z 2 :Z*  J   %Z9Z`=UZ$x9-3 " 0B!&E$) 3 K"  J `" ] `9 %-''%""mX:$M 'wY7{?I3Q31.2 :CK!*C!)C C(KQ @C"H!@l8 1 Y`8Y$9X1 9 `f?`"m:3P3tP)/  3ҐQ#+3;` A0 H0#B#B#B#B#B B 5 8] S=   COPYRIGHT (C) DGC,1971,1972,1973,1974,1975ALL RIGHTS RESERVEDe)i1YIhQh5g KJ J^\@@EP]K]K]KPMV)BP1?Z)=H18MG18B!4M:M:PU@ZZ  U0J JZ!(-&I$M"1*"   bIgI!@`= f?"m"a "%Z @  % TRSOR VE4 0. 0 & &E & &*:&&&:PCC A+\(9   )m*JPJ `A`Q  '  A1B Q S)S)  "1B A1 %Z1:2Q !5 ?12). )111)+A+9* 19(! ! &!1) !  ) 1:C! !1 8  _ az*8 ( (f(o((&) &&)&& M&&(Y(m((@(Y%f?&&AA A A A E!bL''m9KS(I)H`L1*: 0Z-  MI-P@1O MJ9li YgA@A e!!1 9  9-2 '+3;`) 9C!@C C C" A * A 1  C!@C C C%Z&9" P3  *J(KSC#CC E&&-19P@ @0BJ%B <''0 <<"+ 0"PPPPP"E"E !94%2+ + #B)(Z%#B 9 9++ E"E 9IAA %A  ''(;Zx0N) 6J6B !: " .," pB J Z*8`(BB9; ) C!`P9: PK "JBB9 !  "B ")  J*4 *! )p8#))C!'A!&C5 E 2" 5S$f#C#) C")  "a ZP** : *J J J   :  15+K0**:2!Y!"C#JPC :  # KC J9"CZ ZB:+')s*9u )p !rBK)g * !e   )a  : #B !YB )T )P :++9Ђ :#K:+*!@  *Ю ):J")-)(   #!+B:#J`C;ZK"J* : #K*K9 \ *4*ZZ B: # K "B ") bq#)ښ#:+c)ϧj)y:)z9z)x)y )l:  !)r:8* JZ B3)^: /* JJ )^J()J J)S*9H -)JJJ & J J*9= JJ)AJ Й4*=6!B)&: *9& -"  -:+K! B`K;Z)))d @@az P )x) )))) ) X:8N`@`b@ag@a@X) 2: C+9+*j:  :*KJ" J . !B!*  + 8JJ ) K "B!*   * ) *"#9" 8:;Z!`*B ;#B " B : +C": CK++V*fZB !B: J9 9Z !BB   **+ + ******** ; ZC# PC! 0 Z# PC!$f  %+;#B B  6 P 4  +';#B B * D: ;"CC0+X:#)512 *)0 *#999 ;;0X: )  " J " " B!+K c"m,MTCT Y 0  # 2Z#+;+ ;Z +J #)>998 4  991 -PPPB @": +C   BJ  )  Q P": +K * H E N " ,,X: ;! : ' Gb@)a)c)X:N+ Z) 9 : J9Z0@ " *) !* QZ)9B" BZQZ)9 *^*f,:*U*S*I,E,<,@" baf" djR,M,P,S,V,Y,\,_,bSYS5.LB h h h .GM4k$I@MqvMDM qM M qM D$$D@Zo @Zk @Zg D$$@Za *J*U9B"D$$R)* PJPKD$$O*K*8 UG Z B)2 PJ@Z=9D$$&,"8 Z5) J BB B.)PKK "D$$FFKKK"*:1 D$$T?!"): *J JKJ)D$$8bZ?"I$$*pBG18 KS#PD$$~C @Z:J) " BD$$qN J :i!;"J :#D$$Y`) :*KJ  :;K :D$$CÊ+C!#K :*K D$$J *K 9+ D$$! :#C :#++JL)d D$$2W *H)I D!0"K*D$$c ".J  "" :K3!C*D$$ǵ "J#+#B  &D$$9@B*PJ0 8 ;"@C"D$$ס C"C*K2S;`Y8D$$oz` * *D$$&JB*J*KB0D$$~423J*J2J0D($B:!ƒ P# *:V1D$$MPJ K ? ?V 0 D$$^K ? ?K 0 *:CD$$Kl) ) !0@Z1 "D$$CNz !KB!0 :+BD$$4 +;  Z) ) !DD$O0!P0"J1 ?DD$wn?wBJR BP@D$y/0 2B"$IПAG!spI롓a _]Qꠃ lF`i ;CxCvU<%wD$$:\91" ]+ "+  !DD(eg!PST,T-UQ,EoIK,LKD(%JRP,IcUS,SQDR,YUUR,NnED,QH$$4K*S 9 ,P/1!* 0D$%i8 !K9* ! D$,yF 5 !/  D$%ѓT+ !N!"D$$ob0 H 9R(QD$$pI GCAe1 :  9D$$̲~Pq!n1* : D$$Hj9)!&Q8+J+J+ JD$$KH#JPJ!` 0" 9D$$Tۨ 1B1B!L%$l>!2!: K8 PPD$$PPPPPS/ 3S+ KD$b;Y' K ]`X AD$$9A99S SK 1D$$^83Q (Y D$$9TSTA =P,IR = ONQ D$$I EUEUA ERAKOIT DON TCAITEVD$$NIUP TREORRLIOLIGAC LUQUED$&ERPGON TOF UODN$I$I$E!?N~F{l!+l!롓IVHLAIkIRP\顙C&?jt`G!GF.@ A _ag4$R IrG b I  P AN~!+l {l &?8`i ;CvCxU<vSbG$$.0`X  + 8)3S1E$$"!` 0 2 ZZX$$08 Y9PP1 9D$$*|1 z9w1 1 X$$Ԛ8XIA )#C)!X$FX39 `b[''oTX M1 Q 8+!KD$$Bb0! "</IC1+) , uK 0 2 -D$$}'p : 2*9 #)9D$$~J:YQ A! A! 1D%$mnj*!JT,*) D%t ! !  D$$ר0Y 83 Q*K )JBD%]v B @D$$]NIUP TREORRIT DON TOFNUD!D$$ P3I0Y7 89 1+I39D$$Y 2-9 $%9 9#)܆D$$g)SRRI Q9D$$w$) )1RSRD%$Ǩ29,J  c8$IgAzlFNպa  _ΈtrHRaH`k H  H@O `iU<Cv ;Cx$ulG8$`X " 8+ *9 .F9D$$7* B9*J9&*G$(J83)3S1BXĒ$b*8()#8+K$)KC !+G$$8K*9 8#!`D$8F 0 2PZ:Z P ? E$$t T*%ID 9Z*9J`bG$$ b X 0 2: 2 : D$$p ) ))JZ D(~` 0 2PZ:Z"`XXb;$ӌ   `X 0` Z  D$$O1X9 02*PPD$$Ǩ9*X9 !D'$ J0"9P `b[8GX 83@S I_pCպa#bA% _rֿ:D頙 }ie렓 `i ;CvCxU<vlG$$`X 3" $*X9 D$$UT9G9BH9@_*G!DQE D$"h =1 !   )8D$%=*6!B5!B2"1&1(Y$9D$$r&8 "A"+  "+D$$9CFY; 9 +SJb  9QD$$TZ1(D$ubAIM 9  k)D$$p3CS; !)9 D$$~3 3Y 83 *D$$CӌK J95)JZ#)BI+ D$$9v93) 1 J9 K+D$$  ;Y+1#D$$.]K3Q {sE$$x6P"  *20*D$$^ J **4! 0: JDb;$B `X   "J D'$*KB8S` BXD8d' 19 Q2 " )VH T$IIYz _@Zv A   `iU< ;hCxCv$Cv'"SGؒ$& `X0#Y ;  V X'"/K0*g9JB18D$$<<1#M`X?g`D$$] *'Y2  !1 2: 2D$$8  :@@CZJD$$~NߜFK 9K`11`[$$uTX `+ 0JS D$$Zb 0 2YI: 2 ) : )D$$}p  )Z)J Hf8RC _bAH@I H I I F `iU<CxCv ;$@5"3<dbG'$[`X +U 8S*BJPX$$8CN!B C*JD$\PK`X +2 2PD$b;e$*`9" B`X +Db;$8! !`X/ + )JPD$$\F`")99 B 8 +J2G$$bAT S11 Dؒ$b`X + `!:D$>spZ$I@ɔppczbAtpXC\Y _<ᬿ_@Rぬ@ 頒 頒 l_ CvCx ; vbG$$̮`X ):Z 8 ;+G8b;]   `X `X$8X 8 I +@ K)`IA$zpp _Dp| 退 `i즤Cv ;CxU<xlG$$`X + ) )`*K! D8$!J8)S3S10"H$$0!` 0 2Z:Z 2D$8!*  1 0 2P1Dк8)K1HI@pp.n-/pC7պa _Ɵyr@ _y `iCxCv ;U<xbG$ y`X `+!K@ _o~$+@O 2@O%@O렓 xD$0 " @?d _4̔4v$I$DIz<պ@_'}{S֍ U<CU~nzjppb@պ`\@x#HR*N`o @v ;p 렓 (X(?"H*  H$$X 0 2Z>O9 1 `D$$ 0 2 9* 2 D$$/7) EHA0Q: *3X!D$$* <1 Z )K 1 8#)D$$_8  "b"`""@"&@*:YD$j`$^F:X 8 S":2`  0 ZD0$kT`XT *@SK+D$$ibK` 8 SI 0))>YD$$EpQ2 :91*KZ0D$$~I+Y 8+JS&Y1 8`D$$9 SY 8 ; ; D$$bo"*K * 8 K ) D$x)ڴ Y 8 ;XCKSD$$KC 02! b C`C" C& CBF$$c 80@C C#+`XD$$6 S)ďR _ 83 7*K8+D$$sQ@J+JB) J) #B Q$$[,j` 8 + :  CD$$ Z JZ#)"B 8 +D J S`X C18SDƺ"@پ&D$$X&Y9 0 2  : 2DWq41@ƾ9D91E6!AԿA}iT _+x@Ԉ+x((H$$ 0 2*Z"*:X8:D$$12 !H`:Y:2`D$$HY8 ` 8 ;CKSD$$4*Z9(J+J@Z*ՠJD$O88H`@A+ _[ԍ lF _r`[C }i _I\Ԣ7 xD P1 O _##A$vA8`A0@A( A  _Y4@Y E$$`T`R`P`N`L`D$$ΣJ`H`F`bAbIbQbY\Y>)D$$ 8!E8!+ +CK 3"D$$*X*::2 83kQ"1S*H +D$$8dI1 S+_I0K`(J)EI_!AD$$qFAB9P#GB+II7 "E($T6 +1  (9D$$b`-Y' (I& &)>9+# !) PD$$p  Y !D%$%~  _ /BdBI((m]`DD06 vD$$!A 0" %EJ D$$Fs %A1%P9B%HAD$$Ʈ1Q1/KW)19D$$Pş1* @1!9 D$$/I1'A1)P>]D$$pYA91!8)Z` 8D$$) K1S*H)K`!%@ % - 5D$$4  =Y =   D$%Y 9*C  !d$IH"E&uvwxyAcD$$ݶ4=1!1!= D$DOB Q*MW PAE^ *HE"%PQvz = uB5D$$v^)!J * 9I#) D$$¯l/ Y9SPC$! AD$$=z 19+! 91)D$$*!  3! AD%$%!C8Y !11 "ED$^8]AY) ,WAD$$S)2 &QAM)  YI 9D$H ) !  de01YE$$8<  3)@0){0A ^D$$=l1)A%! 1Y!D$$.A ,) QG1)$II")QeD"E$  ]! Y  DDD3 ONe=-D$$~}"P 1]Y95Pj DD$n0@@=PA !)51D$$k>]BY 1!AIE$$L ! !C AE1Q"AD$$ZAC EE~A~A~A~A~AD$(#+h}A}A}AA}AE|E|EW e -kD$$Bvr1r% ?1z9j)j9D$$%`_1f!;ʐD$$mX9+CG!G) R D$$dFAb ?QL)K):12H!Q* D$$m1A5A-2!* -A+!D$(_{R> SR; 1I"A[Y D$$;1*)*1 (!1 9A3*Q:D%$YJDHI%zdoD$%bD}$ !1! BU?"I$$PeqUQ! !-9  D$$9)1  A- 1T D$$$Q!9 @41*K D$$NF,.  )1JAEL)!1D$$t:!H1)292ʶ D$$;HP)$ YIMD($V1 ݝ K$DD$/d -- PPD$$@rBBBC )DI%d -{ 86D$$xsEqAqYp=ooYnYn9nYnIe%D$$Re-l1 8d1"q]1"_D$$Y ;U*KQU9MD$$ 0LYK)+ C9*D!D$$ UDQ : ! H)D$$׫1E9睪BIB ?)D @-D$DP 3 :  ,  H%(  @   D$$#$ 5)ϒ!+ ID$$+! Y " 9dD$I$1$6e ]C+-@#=D$$Oj2 , $!/'_^<%;D$)$I/0@:&?*,78dd$I$I$InN}5D$$ \1=-2A2YK&-!*E+%D$$j%1%)  $)  % !)D$$gx 9IM ^=YPD"I$%MOY` e@iD$$uӖ5 5 ) 9"B $E($g: E` 85S %D$$)>' C -K"@)K D$$thCETMWLQABDFNYRD$$VJSKP=|:_;'&?u$I$I$Iy5:]胩$I$IH]D$$I>QQQQQQQH$DƺQ?f?f?f?f?f?f?f?f   E$HP  P`UR5'D$$"T5$M9 ! 0BQE N5D$$X0LUH @) D ?UY > 95)D$$}>   .5,1D$%'L *5 # "E%(E$ $ -# H$$hZv!ZE%R SR  5PDD"EhEp U"HI$$9v.E% ^I$$.΄Y  Y5-D$$-)  A! ! !D"E$j($s`e]<> TD$$y8 4!U U  f R /!O O  O1D$H _ K K!H H  H1R 8HYH1~gD$$v}tCBYB1~gt=xY 51{~gD$$`~g}t nnY~ga(1BhFD$$MTg%  !  ,   D$$[!  1"  SQ ! D)( 1 edS @E@D$$m;Y3!/AP1I5Y-!)A5!+AP0Q Dj$$zg#%A)*1" !)D$$/1#1" 1 ! AD$$?)" "I$$UM^U012345D$$)E[6789ABCDEF$I$I$Ii$I$I$Iܹw$I$%H ppZOCD$$gLRSSCPBDZND$$f#@ 0@@D$$ޯ@D$$``gD$$x?g?g??D$$s;oU{\Z(D$$U C) I ICD$$A D$$#8HD$$F$FzȓD$$::?Uigfu[?fD$$*-NrezeZ?d}]dt[?cD$$%;7zcZbs[?aIcaZD$$I``Iz`Nz@ D$$WW,\l{D$$=e`Ldo`ys`L<D$$aWsLbP xD$$Ё :d`[D$$]`[]`o`u!U# RD$$,- >*@@H:D$$hCZ: < <D$$TNB^nD$$<nͫ qH&`HD$$'()+`oZ,D$$}LZ.`G2""C"CD$$UR"~"~"`;"`;"MD$$eF"wT "k "`G "`L "D$$r :b"bV"z"c"bD$$/# "`"`[u"v.E"C"CD$$) "b6">7">"b~"D$$7 @"@"`t"b"D$$DSE ":!"q%"y&"M'"MD$$1mS ("9)"b*"]+"z.,"D$$ca -"L."/"@H0"D$$o 1"`B2"`C3"-4"6:-5" D$$R} 6"MW7"8"9":"D$$- `P ` 0 2*Z "*:X:D$j Y:2`!@P D$$# `Y 8 ;CKS1(KK*KD$$$c @S+KOCYPIRHG(T)CD$$fp GD,C91271,79,391471,@79A5LLR D$-k GITH SERESVRDE _ PLCNAK.EAT28.92');} MOVESRT := 8-POSITION MOD 8; POSITION := POSITION + MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); END; {OUTPUT TAB} BEGIN POSITION := 1; WITH LINE DO BEGIN FOR I := 1 TO LEN DO 8BEGIN IF STR[I] IN [' '..']'] THEN BEGIN { WRITE(' <',LINE.STR[I],'>');} PCHAR(ORD(STR[I])); POSITION := POSITION+1; END ELSE CASE ORD(STR[I]) OF {TAB} 9 : OUTPUTTAB(POSITION); {CR} 13 : PCHAR(13) END{CASE} END;{FOR DO} END;{WITH.} END;{WRITE STRING} CONSOLE.MCqr mCHATR CONSOLE.PA 0 CHATR CONSOLE.PX 0 DELETE/V CONSOLE.PA XFER CONSOLE CONSOLE.PA/R PASINTERP PASCALO/S/V CONSOLE CHATR CONSOLE.PA *WP CHATR CONSOLE.PX *WP ALMSPD.RB;;*a#GHT$$${GH#GH`#GH@#GH #GH@GH GHGHGHGHGHGH`GH@GH GH@$$$GH GHGHGHGHGHGH`GH@GH GH@GH GHGHGHGH$$$\GHGH`GH@GH PfGH@GH GHGHGHGHGHGH`GH@GH GH@ $$$GH GH GH GH GH GH GH` GH@ GH GH@GH GHGHGHGH$!GHGH`GH@GH  _INTERPOK.PX?? 8RINTERPOK Copyright (C) 1980 Rational Data Systems  8% ~?OUTPUT֥֦Interpreter OKʀ J, ?o)OUTPUT֥֦Interpreter OKʀ JT38. k(* T38 SUBSTRING TESTER*) PROGRAM T38 (INPUT,OUTPUT); TYPE STRING = ARRAY[1..10] OF INTEGER; VAR OUT,NBYTESREAD,ERROR,NBROTE,ST1S,ST1F,ST2S,ST2F,TTI,TTO : INTEGER; STRING2,STRING1 : STRING; PROCEDURE RDLI (CHANNEL:INTEGER; VAR BUFFER:STRING; VAR NBYTESREAD:INTEGER; VAR ERROR:INTEGER);EXTERNAL; PROCEDURE SUBSTR(VAR ST1:STRING;ST1S:INTEGER;ST1F:INTEGER; VAR ST2:STRING;ST2S:INTEGER;MAXBYTE:INTEGER);EXTERNAL; PROCEDURE WRSQ(CHANNEL:INTEGER VAR BUFFER:STRING; NBYTES:INTEGER; VAR NBWROTE:cyINTEGER; VAR ERROR:INTEGER);EXTERNAL; BEGIN WRITELN(OUTPUT,' ENTER STRING'); RDLI (1,STRING1,NBYTESREAD,ERROR); WRITELN(OUTPUT,' NBYTES=',NBYTESREAD); SUBSTR(STRING1,0,NBYTESREAD,STRING2,0,19); IF NBYTESREAD < 20 THEN OUT := NBYTESREAD ELSE OUT :R= 20; WRITELN(OUTPUT); WRSQ(2,STRING2,OUT,NBROTE,ERROR); WRITELN(OUTPUT); END. PRETTY.PA '(*************************************************************************** PROGRAM TITLE: PASCAL PRETTYPRINTING PROGRAM AUTHORS: JON F. HUERAS AND HENRY F. LEDGARD COMPUTER AND INFORMATION SCIENCE DEPARTMENT UNIVERSITY OF MASSACHU:SETTS, AMHERST - AUGUST, 1976 (EARLIER VERSIONS AND CONTRIBUTIONS BY RANDY CHOW AND JOHN GORMAN). BUGS CORRECTD BY CHARLES FISCHER, DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF WISCONSIN, MADISON. 1977. "INDICATED BY <<< . MODIFIED FOR CDC-6000 PASCAL RELEASE 3 BY RICK L. MARCUS UNIVERSITY COMPUTER CENTER, UNIVERSITY OF MINNESOTA. 30 SEPTEMBER 1978. PROGRAM SUMMARY: THIS PROGRAM TAKES AS INPUT A PASCAL PROGRAM AND REFORM(ATS THE PROGRAM ACCORDING TO A STANDARD SET OF PRETTYPRINTING RULES. THE PRETTYPRINTED PROGRAM IS GIVEN AS OUTPUT. THE PRETTYPRINTING RULES ARE GIVEN BELOW. AN IMPORTANT FEATURE IS THE PROVISION FOR THE USE OF EXTRA SPACES AND EXTRA BLANK LINES. TH'EY MAY BE FREELY INSERTED BY THE USER IN ADDITION TO THE SPACES AND BLANK LINES INSERTED BY THE PRETTYPRINTER. NO ATTEMPT IS MADE TO DETECT OR CORRECT SYNTACTIC ERRORS IN THE USER'S PROGRAM. HOWEVER, SYNTACTIC ERRORS MAY RESULT IN ERRONEOUS PRETTYPRINTING. INPUT FILE: INPUT - A FILE OF CHARACTERS, PRESUMABLY A PASCAL PROGRAM OR PROGRAM FRAGMENT. OUTPUT FILE: OUTPUT - THE PRETTYPRINTED PROGRAM. **********************************************************************iD**** ************************************************************************** PASCAL PRETTYPRINTING RULES GENERAL PRETTYPRINTING RULES 1. ANY SPACES OR BLANK LINES BEYOND THOSE GENERATED BY THE PRETTYPRINTER ARE LEFT ALONE. T ^HE USER IS ENCOURAGED, FOR THE SAKE OF READABILITY, TO MAKE USE OF THIS FACILITY. IN ADDITION, COMMENTS ARE LEFT WHERE THEY ARE FOUND, UNLESS THEY ARE SHIFTED RIGHT BY PRECEEDING TEXT ON A LINE. 2. ALL STATEMENTS AND DECLARATIONS BEGIN ON SEPARATE LINES. 3. NO LINE MAY BE GREATER THAN 72 CHARACTERS LONG. ANY LINE LONGER THAN THIS IS CONTINUED ON A SEPARATE LINE. 4. THE KEYWORDS "BEGIN", "END", "REPEAT", AND "RECORD" ARE FORCED TO STAND ON LINES BY THEMSELVES (OR POSSIBLY FOLLOWED BY SUPPORTING COMMENTS). IN ADDITION, THE "UNTIL" CLAUSE OF A "REPEAT-UNTIL" STATEMENT IS FORCED TO START ON A NEW LINE. 5. A BLANK LINE IS FORCED BEFORE THE KEYWORDS "PROGRAM", "PROCEDURE", "FUNCTION", "LABEL", "CONST","TYPE", AND "VAR". 6. A SPACE IS FORCED BEFOREN/ AND AFTER THE SYMBOLS ":=" AND "=". ADDITIONALLY, A SPACE IS FORCED AFTER THE SYMBOL ":". NOTE THAT ONLY "="S IN DECLARATIONS ARE FORMATTED. "="S IN EXPRESSIONS ARE IGNORED. <<<. INDENTATION RULES 1. THE BODIES OF "LABEL", "CONST", "TYPE", AND "VAR" DECLARATIONS ARE INDENTED FROM THEIR CORRESPONDING DECLARATION HEADER KEYWORDS. 2. THE BODIES OF "BEGIN-END", "REPEAT-UNTIL", "FOR", "WHILE", "WITH", AND "CASE" STATEMENTS, AS WELL AS "RECORD-END" STRUCTURES AND "CASE" VARIANTS (TO ONE LEVEL) ARE IINDENTED FROM THEIR HEADER KEYWORDS. 3. AN "IF-THEN-ELSE" STATEMENT IS INDENTED AS FOLLOWS: IF THEN ELSE **************************************************************************** **************************************************************************** GENERAL ALGORITHM THE STRATEGY OF THE PRETTYPRINTER IS TO SCAN SYMBOLS FROM THE INPUT PROGRAM AND MAP EACH SYMBOL INTO A PRETTYPRINTING ACTION, INDEPENRDENTLY OF THE CONTEXT IN WHICH THE SYMBOL APPEARS. THIS IS ACCOMPLISHED BY A TABLE OF PRETTYPRINTING OPTIONS. FOR EACH DISTINGUISHED SYMBOL IN THE TABLE, THERE IS AN ASSOCIATED SET OF OPTIONS. IF THE OPTION HAS BEEN SELECTED FOR THE SYMBOL BEING SC_ANNED, THEN THE ACTION CORRESPONDING WITH EACH OPTION IS PERFORMED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO= A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND GINVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS4# ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THpERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIHIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE- SYMBOL SCANNED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANKm LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] J` SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. **************************M*************************************************** *) PROGRAM PRETTYPRINT ( (* FROM *) INPUT, (* TO *) OUTPUT ); CONST MAXSYMBOLSSIZE = 200; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A*) (* SYMBOL SCANNED BY THE LEXICAL SCANNER. *) MAXSTAC,KSIZE = 100; (* THE MAXIMUM NUMBER OF SYMBOLS CAUSING *) (* INDENTATION THAT MAY BE STACKED. *) MAXKEYLENGTH = 10; (* THE MAXIMUM LENGTH (IN CHARACTERS) OF A *)  (* PASCAL RESERVED KEYWORD. *) MAXLINESIZE = 72; (* THE MAXIMUM SIZE 8(IN CHARACTERS) OF A *) (* LINE OUTPUT BY THE PRETTYPRINTER. *) SLOFAIL1 = 30; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT2". BEYOND *) (* THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE - ''; TYPE KEYSYMBO L = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP,  CRAFTER ); OPTIONSET = SET OF OPTION KEYSYMSET = SET OF KEYSYMBOL; TABLEENTRY = RECORD OPTIONSELECTED : OPTIONSET; DINDENTSYMBOLS : KEYSYMSET; GOBBLETERMINATORS : KEYSYMSET END; OPTIONTABLE = ARRAY [ KEYSYMBOL ] OF TABLEENTRY; KEY = PACKED ARRAY [ 1..MAXKEYLENGTH ] OF CHAR; KEYWORDTABLE = ARRAY [PROGSYM..UNTILSYM ] OF KEY; SPECIALCHAR = PACKED ARRAY [ 1..2 ] OF CHAR; DBLCHRSET = SET OF BECOMES..OPENCOMMENT; DBLCHARTABLE = ARRAY [ BECOMES..OPENCOMMENT ] OF SPECIALCHAR; S GLCHARTABLE = ARRAY [ SEMICOLON..PERIOD ] OF CHAR; STRING = ARRAY [ 1..MAXSYMBOLSIZE ] OF CHAR; SYMBOL = RECORD NAME : KEYSYMBOL; VALU : STRING; LENGTH : INTEGER; SPACESBEFORE : INTEGER; CRSBEFORE : INTEGER END; SYMBOLINFO = ^SYMBOL; CHARNAME = ( LETTER, DIGIT, BLANK, QUOTE, ENDOFLINE, FILEMARK, OTHERCHAR ); CHARINFO = RECORD NAME : CHARNAME; VALU : CHAR END; STACKENTRY = RECORD INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER END; SYMBOLSTACK = ARRAY [ 1..MAXSTACKSIZE ] OF STACKENTRY; VAR RECORDSEEN: BOOLEAN; CURRCHAR, NEXTCHAR: CHARINFO; CURRSYM, NEXTSYM: SYMBOLINFO; CRPENDING: BOOLEAN; PPOPTION: OPTIONTABLE; KEYWORD: KEYWORDTABLE; DBLCHARS: DBLCHRSET; DBLCHAR: DBLCHART;ABLE; SGLCHAR: SGLCHARTABLE; STACK: SYMBOLSTACK; TOP, STARTPOS, (*STARTING POSITION OF LAST SYMBOL WRITTEN <<< *) CURRLINEPOS, CURRMARGIN : INTEGER; PROCEDURE GETCHAR ( (* FROM INPUT *) (* UPDATING *) VAR NEXTCHAR : CHARINFO; (* RETURNING *) VAR CURRCHAR : CHARINFO ); BEGIN (* GETCHAR *) CURRCHAR := NEXTCHAR; WITH NEXTCHAR DO BEGIN IF EOF(INPUT) THEN NAME := FILEMARK ELSE IF EOLN(INPUT) THEN NAME := ENDOFLINE ELSE IF INPUT^IN ['A'..'Z'] THEN NAME := DIGIT ELSE "KIF INPUT^IN ['O'..'9'] THEN NAME := DIGIT ELSE IF INPUT^= '''' THEN NAME := QUOTE ELSE IF INPUT^= SPACE THEN NAME := BLANK ELSE NAME := OTHERCHAR; IF NAME IN [ FILEMARK, ENDOFLINE ] THEN VALU := SPACE ELSE VALU := INPUT^; IF NAMEh$ <> FILEMARK THEN GET(INPUT) END (*WITH*) END; (* GETCHAR *) PROCEDURE STORENEXTCHAR (* FROM INPUT *) (* UPDATING *) VAR LENGTH : INTEGER; VAR CURRCHAR, NEXTCHAR : CHARINFO; :( PLACING IN *) VAR VALU : STRING ); BEGIN (* SSTORENEXTCHAR *) GETCHAR( (* FROM INPUT *) (* UPDATING *) NEXTCHAR,  (* RETURNING *) CURRCHAR ); IF LENGTH < MAXSYMBOLSIZE THEN BEGIN LENGTH := LENGTH + 1; VALU [LENGTH] := CURRCHAR.VALU END END; (*STORENEXTCHAR *) q PROCEDURE SKIPSPACES ( (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR SPACESBEFORE, CRSBEFORE : INTEGER ); BEGIN (* SKIPSPACES *) SPACESBEFORE := 0; CRSBEFORE := 0; WHILE NEXTCHAR.NAME IN [ BLANK, EaNDOFLINE ] DO BEGIN GETCHAR( (* FROM INPUT *) (* UPDATING *) NEXTCHAR, :( RETURNING *) CURRCHAR ); CASE CURRCHAR.NAME OF BLANK, : SPACESBEFORE := SPACESBEFORE+1; ENDOFLINE : BEGIN CRSBEFORE := CRSBEFORE+1; SPACESBEFORE := 0 END E" ND (* CASE *) END (* WHILE *) END; (* SKIPSPACES *) PROCEDURE GETCOMMENT ( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEkGIN (* GET COMMENT *) NAME := OPENCOMMENT; WHILE NOT ( ((CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')')) OR (NEXTCHAR.NAME = ENDOFLINE) OR (NEXTCHAR.NAME = FILEMARK)) DO STORENEXTCHAR ( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); IF (CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')') THEN BEGIN STOENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, :( IN *) VALU ); NAME := CLOSECOMMENT END; (* GETCOMMENT *) FUNCTION IDTYPE( (* OF *) VALU : STRING; (* USING *) LENGTH : INTEGER ) (* RETURNING *) : KEYSYMBOL; VAR I: INTEGER; (* TED, THIS NEXT SECTION ARE SMALL I';S - JG *) KEYVALU: KEY; HIT: BOOLEAN; THISKEY: KEYSYMBOL; BEGIN (* IDTYPE *) IDTYPE := OTHERSYM; IF LENGTH <= MAXKEYLENGTH THEN BEGIN FOR I := 1 TO LENGTH DO KEYVALU [I] := VALU [I]; FOR I := LENGTH+1 TO MAXKEYLENGTH DO KEYVALU [I] := SPACE; THISKEY := PROGSYM; HIT :[= FALSE; WHILE NOT(HIT OR (THISKEY = SUCC(UNTILSYM))) DO IF KEYVALU = KEYWORD [THISKEY] THEN HIT := TRUE ELSE THISKEY := SUCC(THISKEY); IF HIT THEN IDTYPE := THISKEY END; END; (* IDTYPE *) PROCEDURE GETIDENTIFIER ( (* FROM INPUT *) ~ (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; :( RETURNING *) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETIDENTIFIER *) WHILE NEXTCHAR.NAME IN [ LETTER,DIGIT ] DO STORENEXTCHAR( (* FROM I LNPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); NAME := IDTYPE( (* OF *) VALU, (* USING *) LENGTH ); IF NAME IN [ RECORDSYM, CASESYM, ENDSYM ] THEN CASE NAME OF RECORDSYM : RECORDSEEN := TRUE; CASESYM ' : IF RECORDSEEN THEN NAME := CASEVARSYM; ENDSYM : RECORDSEEN := FALSE END (* CASE *) END; (* GETIDENTIFIER *) PROCEDURE GETNUMBER( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR NAME : KEYSY]'MBOL; VAR VALU  : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETNUMBER *) WHILE NEXTCHAR.NAME = DIGIT DO STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); NAME := OTHERSYM 1END; (* GETNUMBER *) PROCEDURE GETCHARLITERAL( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETCHARLITERAL *)  WHILE NEXTCHAR.NAME = QUOTE DO BEGIN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); WHILE NOT(NEXTCHAR.NAME IN [ QUOTE, ENDOFLINE, FILEMARK ]) DO STORENEXTCHAR( (*FROM INPUT *) (* XUPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); IF NEXTCHAR.NAME = QUOTE THEN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ) END; NAME := OLTHERSYM END; (* GETCHARLITERAL *) FUNCTION CHARTYPE( (* OF *) CURRCHAR, NEXTCHAR : CHARINFO ) (* RETURNING *) : KEYSYMBOL; VAR NEXTTWOCHARS: SPECIALCHAR; HIT: BOOLEAN; THISCHAR: KEYSYMBOL; BEGIN (* CHARTYPE *) NEXTTWOCHqrARS[1] := CURRCHAR.VALU; NEXTTWOCHARS[2] := NEXTCHAR.VALU; THISCHAR := BECOMES; := FALSE; WHILE NOT(HIT OR (THISCHAR = CLOSECOMMENT)) DO IF NEXTTWOCHARS = DBLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR); BEGIN (* GETCHARLITERAL *) WHILE NEXTCHAR.NAME = QUOTE DO BEGIN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); WHILE NOT(NEXTCHAR.NAME IN [ QUOTE, ENDOFLINE, FILEMARK ]) DO STORENEXTCHAR( (*FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); IF NEXTCHAR.NAME = QUOTE THEN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR,  (* IN *) VALU )}n END; NAME := OTHERSYM END; (* GETCHARLITERAL *) FUNCTION CHARTYPE( (* OF *) CURRCHAR, NEXTCHAR : CHARINFO ) (* RETURNING *) : KEYSYMBOL; VAR NEXTTWOCHARS: SPECIALCHAR; HIT: BOOLEAN; THISCHAR: KEYSYMBOL; BEGIN (* CHAƁRTYPE *) NEXTTWOCHARS[1] := CURRCHAR.VALU; NEXTTWOCHARS[2] := NEXTCHAR.VALU; THISCHAR := BECOMES; := FALSE; WHILE NOT(HIT OR (THISCHAR = CLOSECOMMENT)) DO IF NEXTTWOCHARS = DBLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(NTHISCHAR); IF NOT HIT THEN BEGIN THISCHAR := SEMICOLON; WHILE NOT(HIT OR (PRED(THISCHAR) = PERIOD)) DO IF CURRCHAR.VALU = SGLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR) END; IF HIT THEN CHARTYPE := THISCHAR ELSE CHARTYPE := OTHERSYM END; (* CHARTYPE *) PROCEDURE GETSPCIALCHAR( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING*) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGINv (* GETSPCIALCHAR *) STOENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); NAME := CHARTYPE( (* OF *) CURRCHAR, NEXTCHAR ); IF NAME IN DBLCHARS THEN STORENEXTCHAR( (* FROM INPUT *) v (* UPDATING *) LENGTH, CURRCHAR NEXTCHAR, (* IN *) VALU ) END; (* GETSPECIALCHAR *) PROCEDURE GETNEXTSYMBOL( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR NAME : KEYSYMBOL; gCVAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETNEXTSYMBOL *) CASE NEXTCHAR.NAME OF LETTER : GETIDENTIFIER( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ); DI9GIT : GETNUMBER( (* FROM INPUT *) (* UPDATING *) CURRCHAR NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ); QUOTE : GETCHARLITERAL( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME,  VALU LENGTH ); OTHERCHAR : BEGIN GETSPECIALCHAR( *)_( FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ); IF NAME = OPENCOMMENT THEN GETCOMMENT( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, NAME, VALU, LENGTH ) END; FILEMARK : NAME := ENDOFFILE END (* CASE *) END; (* GETNEXTSYMBOL *) PROCEDURE GETSYMBOL( (* FROM INPUT *) (* UPDATING *) VAR NEXT SYM : SYMBOLINFO; (* RETURNING *) VAR CURRSYM : SYMBOLINFO ); VAR DUMMY: SYMBOLINFO; BEGIN (* GETSYMBOL *) DUMMY := CURRSYM; CURRSYM := NEXTSYM; NEXTSYM := DUMMY ; WITH NEXTSYM^ DO BEGIN SKIPSPACES( (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *Au) SPACESBEFORE, CRSBEFORE ); LENGTH := 0; IF CURRSYM^.NAME = OPEN COMMENT THEN GETCOMMENT( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ) END (* WITH *) END; (* GETS sYMBOL *) PROCEDURE INITIALIZE( (* RETURNING *) VAR TOPOFSTACK : INTEGER; VAR CURRLINEPOS, CURRMARGIN : INTEGER; VAR KEYWORD : KEYWORDTABLE; VAR DBLCHARS : DBLCHRSET; VAR DBLCHAR : DBLCHARTABLE; VAR SGLCHAR : SGLCHARTABLE; *( VAR RECORDSEEN : BOOLEAN; VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR CURRSYM, NEXTSYM : SYMBOLINFO; VAR PPOPTION : OPTIONTABLE  ); BEGIN (* INITIALIZE *) LINELIMIT(OUTPUT,MAXINT); TOPOFSTACK := 0; CURRLINEPOS := 0UEH10T5GIN := 0; KEYWORD [ PROGSYM ] := 'PROGRAM '; KEYWORD [ FUNCSYM ] := 'FUNCTION '; KEYWORD [ PROCSYM ] := 'PROCEDURE '; KEYWORD [ LABELSYM ] := 'LABEL '; KEYWORD [ CONSTSYM ] := 'CONST '; KEYWORD [ TYPESYM ] := 'TYPE '; KEYWORD [ VARSYM ] := 'VAR '; KEYWORD [ BEGINSYM ] := 'BEGIkv'; CURRMARGIN := 0; KEYWORD [ PROGSYM ] := 'PROGRAM ';  KEYWORD [ FUNCSYM ] := 'FUNCTION '; KEYWORD [ PROCSYM ] := 'PROCEDURE '; KEYWORD [ LABELSYM ] := 'LABEL ';ˉ KEYWORD [ CONSTSYM ] := 'CONST '; KEYWORD [ TYPESYM ] := 'TYPE '; KEYWORD [ VARSYM ] := 'VAR '; KEYWORD [ BEGINSYM ] := 'BEGIN '; KEYWORD [ REPEATSYM ] := 'REPEAT '; KEYWORD [ RECORDSYM ] := 'RECORD '; KEYWORD [ CASESYM ] := Z'CASE '; KEYWORD [ CASEVARSYM ] := 'CASE '; KEYWORD [ OFSYM ] := 'OF '; KEYWORD [ FORSYM ] := 'FOR '; KEYWORD [ WHILESYM ] := 'WHILE '; KEYWORD [ WITHSYM ] := 'WITH '; KEYWORD [ DOSYM ] := 'DO '; KEYWORD [ IFSYM ] := 'NIF '; KEYWORD [ THENSYM ] := 'THEN '; KEYWORD [ ELSESYM ] := 'ELSE '; KEYWORD [ ENDSYM ] := 'END '; KEYWORD [ UNTILSYM ] := 'UNTIL '; DBLCHARS := [ BECOMES, OPENCOMMENT ]; DBLCHAR [ BECOMES ] := ':='; DBLCHAR [ OPENCOMMENT ] :yI= '(*'; SGLCHAR [ SEMICOLON ] := ';'; SGLCHAR [ COLON ] := ':'; SGLCHAR [ EQUALS ] := '='; SGLCHAR [ OPENPAREN ] := '('; SGLCHAR [ CLOSEPAREN ] := ')'; SGLCHAR [ PERIOD ] := '.'; RECORDSEEN := FALSE; GETCHART( (* FROM INPUT 8*) (* UPDATING *) NEXTCHAR, (* RETURNING *) CURRCHAR ); NEW(CURRSYM); NEW(NEXTSYM); GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [ PROGSYM ] DO BEGIN OPTIONSSELECTED := [BL˛ANKLINEBEFORE; SPACEAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ FUNCSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM TAPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PROCSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM, VARSYMp ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ LABELSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, SPACEAFTER, IDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CONSTSYM ] DO BEGIN OP TIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [LABELSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ TYPESYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDEÁNTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [LABELSYM, CONSTSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ VARSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDEN1TTOCLP ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ BEGINSYM ] DO BEGIN OPTIONSSELECTED := [DINDENTONKEYS, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ LABELSYMe, CONSTSYM, TYPESYM, VARSYM ]; GOBBLETERMINATORS  := [] END; WITH PPOPTION [ REPEATSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ RECLORDSYM ] DO BEGIN OPTIONSSELECTED := [ IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CASESYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAXFTER ]; DINDENTSYMBOLS := [] GOBBLETERMINATORS := [ OFSYM ] END; WITH PPOPTION [ CASEVARSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS } := [ OFSYM ] END; WITH PPOPTION [ OFSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; WITH PPOPTION [ FORSYM ] DO BEGIN OPTIONSSELECTED := SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS  := []; GOBBLETERMINATORS := [ DOSYM ] END; WITH PPOPTION [ WHILESYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; WIT6sH PPOPTION [ WITHSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; ) WITH PPOPTION [ DOSYM ] DO  BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ IFSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLoESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ THENSYM ] END; WITH PPOPTION [ THENSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WNITH PPOPTION [ ELSESYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, ELSESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDSYM ] DO BEGIN EOPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, CASEVARSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END[; WITH PPOPTION [ UNTILSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, SPACEAFTER, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSY0-M, COLON, EQUALS ]; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ]; END; WITH PPOPTION [ BECOMES ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; D GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ] END; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS :=^ [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; # GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ DOSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ IFSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS  := []; GOBBLETERMINATORS := [ THENSYM ] END; WITH PPOPTION [ THENSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ELSESYM ] DO BEGIN OPTIONSSELY ECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, ELSESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDEN¿TONKEYS, DINDENT, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, CASEVARSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ UNTILSYM ] DO BEGIN OPTIHONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, SPACEAFTER, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORSX := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ]; END; WITH PPOPTION [ BECOMES ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ] END; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSU3PPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM6, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTAION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OPENPAREN ] DO BEGIN OPTIONSSELECTED := [ GOBBLESYMBOLS ]; DINDENT*ISYMBOLS := []; GOBBLETERMINATORS := [ CLOSEPAREN] END; WITH PPOPTION [ CLOSEPAREN ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PERIOD ] DO BEGIN OPTIONSSELCTED q := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDOFFILE ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OTHERSYM ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMNATORS := [] END END; (* INITIALIZE *) FUNTION STACKEMPTY (* RETURNING *) : BOOLEAN; BEGIN (* STACKEMPTY *) IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE M 0 THEGN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; (* WRITECRS *)  PROCEDURE INSERTCR( (* UPDATING *) VAR CURRSYM : SMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; BEGIN (* INSERTE2&R *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END END; (* INSERTER *) PROCEDURE INSERTBLANKLINE( (* UPDATING *) VAR CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; TWICE - 2; BEGIN (* INSERTBLANKLINE *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) ELSE WRITECRS( T#WICE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END; (* INSERTBLANKLINE *) PROCEDURE 1SHIFTON( (* USING *) DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFTON *) IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( (* RETURNING *) INDENTSYMBOL, PR EVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( (* USING *) INDENTSYMBOL, PREVMARGIN ) ENcD END; (* 1SHIFTON *) PROCEDURE 1SHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFT *) IF NOT STACKEMPTY THEN BEGIN POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END;{ (* 1SHIFT *) PROCEDURE INSERTSPACE( (* USING *) VAR SYMBOL : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* INSERTSPACE *) IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMB(OL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END END; (* INSERTSPACE *) PROCEDURE MOVELINEPOST( (* TO *) NEWLINEPOS : INTEGER; (* FROM *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) );~ VAR I: INTEGER; (TED SMALL I) BEGIN (* MOVELINEPOS *) FOR I := CURRLINEPOS+1 TO NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; (* MOVELINEPOS *) PROCEDURE PRINTSYMBOL( (* IN *) CURRSYM : S{YMBOLINFO; (* UPDATING *) VAR CURRLINEPOS : INTEGER  (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* PRINTSYMBOL *) WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; (* SAVE START POS FOR TAB PURPOSES *) (* <<< *). CURRLINEPOS := CURRLINEPOS + LENGTH END (* WITH *) END; (* PRINTSYMBOL *) PROCEDURE PPSYMBOL( (* IN *) CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN (* PPSYMBOL *) WITH CURRSYM^ DO BEGIN WRITECRS( (* USING *) CRSBEFORE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPEN!COMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF CURRMARGINy + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( (* TO *) NEWLINEPOS, (* FROM *) CURRLINEPOS (* IN OUTPUT *) ); PRIpNTSYMBOL( (* IN *) CURRSYM, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END (* WITH *) END; (* PPSYMBOL *) PROCEDURE RSHIFTTOCLP( (* USING *) CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( (* SYMBOLS FROM INPUT *) (* zUP TO *) TERMINATORS : KEYSYMSET; (* UPDATING *) VAR CURRSYM, NEXTSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* GOBBLE *) RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); PPSYMBOL( (* IN*) CURRSYM (* WRITING TO OUTPUT *) ) END; (* WHILE *) 1SHIFT END; (* GOBBLE *) PROCEDURE RSHIFT( (* USING *) CURRSYNM : KEYSMBOL ); BEGIN (* RSHIFT *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); (* IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. *) (* <<< *). IF STARTPOS > CURRMARGIN (* <<< *). THEN ; (* <<< *). CURRMARGIN := STARTPOS; (* <<< *). IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDQ ENDOFFILE) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM,  (* RETURNING *) CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSEl END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_(* USNG *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN 1SHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELhECTED THEN 1SHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); PPSYMBOL( (* IN *) CURRSYM (* WRITING TO OUTPUT *) ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( (* USINzG *) NEXTSYM (* WRITING TO OUTPUT *) ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( (* USING *) CURRSYM^.NAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THE N GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) GOBBLETERMINATORS, (* UPDATING *) CURRSYM, NEXTSYM (* WRITING TO OUTPUT *) IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END (* WITH *) END; (* WHILE *) IF CRPENDING THEN WRIOTELN(OUTPUT) END. FUNTION STACKEMPTY (* RETURNING *) : BOOLEAN; BEGIN (* STACKEMPTY *) IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE END; (* STACKEMPTY *) FUNCTION STACKFULL (* RETURNING *) : BOOLEAN; BEGIN (* STACKFULL *)q IF TOP = MAXSTACKSIZE THEN STACKFULL := TRUE ELSE STACKFULL := FALSE END; (* STACKFULL *) PROCEDURE POPSTACK( (* RETURNING ): VAR INDENTSYMBOL : KEYSYMBOL; VAR PREVMARGIN : INTEGER); BEGIN (* POPSTACK *) IF NOT STACKEMPTY THEN BEGIN INDENTSYMBOL := STACK[TOP].INDENTSYMBOL; PREVMARGIN := STACK[TOP].PREVMARGIN; TOP := TOP - 1 END ELSE BEGIN INDENTSYMBOL := OTHERSYM; PREVMARGIN := 0 END END; (* POPSTACK *) PROCEDURE PUSHSTACK( (* USING *) INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER ); BEGIN (* PUSHSTACK *) TOP := TOP + 1 STACK[TOP].INDENTSYMBOL := INDENTSYMBOL; STACK[TOP].PREVMARGIN := PREVMARGIN END; (* PUSHSTACK *) PROCEDURE WRITECRS( (* USING *) NUMBEROFCRS : INTEGER; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED THIS IS SMALL I) BEGIN (* WRITECRS *) IF NUMBEROFCRS > 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 : END END; (* WRITECRS *) PROCEDURE INSERTCR( (* UPDATING *) VAR CURRSYM : SMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; BEGIN (* INSERTER *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS  (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END END; (* INSERTER *) PROCEDURE INSERTBLANKLINE( (* UPDATING *) VAR CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; TWICE - 2; BEGIN (* INSERTBLANKLINE *)> IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) ELSE WRITECRS( TWICE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE :r= 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END; (* INSERTBLANKLINE *) PROCEDURE 1SHIFTON( (* USING *) DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFTON *) IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL N=OT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( (* USING *) INDENTSYMBOL, PREVMARGIN ) END END; (* 1SHIFTON *) PROCEDURE 1SHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : IN6TEGER; BEGIN (* 1SHIFT *) IF NOT STACKEMPTY THEN BEGIN POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; (* 1SHIFT *) PROCEDURE INSERTSPACE( (* USING *) VAR SYMBOL : SYMBOLINFO (* WRITIN}G TO OUTPUT *) ); BEGIN (* INSERTSPACE *) IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END  END; (* INSERTSPACE *) PROCEDURE MOVELINEPOST( (* TO *) NEWLINEPOS : INTEGER; (* FROM *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* MOVELINEPOS *) FOR I := CURRLINEPOS+1 TO wNEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; (* MOVELINEPOS *) PROCEDURE PRINTSYMBOL( (* IN *) CURRSYM : SYMBOLINFO; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) );  VAR I: INTEGER; (TED SMALL I) BEGIN (* PRINTSYMBOL *) WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; (* SAVE START POS FOR TAB PURPOSES *) (* <<< *). CURRLINEPOS ::= CURRLINEPOS + LENGTH END (* WITH *) END; (* PRINTSYMBOL *) PROCEDURE PPSYMBOL( (* IN *) CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN (* PPSYMBOL *) WITH CURRSYM^ DO BEGIN  WRITECRS( (* USING *) CRSBEFORE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THE9N NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( (* TO *) NEWLINEPOS, (* FROM *) CURRLINEPOS (* IN OUTPUT *) ); PRINTSYMBOL( (* IN *) CURRSYM, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END (* WITH *) END; (* PPSYMBOL *) PROCEDURE RSHIFTTOCLP( (* USING *) CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) TERMINATORS : KEYSYMSET; (* UPDATING *) VAR CURRSYM, NEXTSYM : SYMBOLBINFO (* WRITING TO OUTPUT *) ); BEGIN (* GOBBLE *) RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); PPSYMBOL( (* IN*) CURRSYM (* WRITING TO OUTPUT *) ) END; (* WHILE *) 1SHIFT END; (* GOBBLE *) PROCEDURE RSHIFT( (* USING *) CURRSYM : KEYSMBOL ); BEGIN (* RSHIFT *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); (* IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. *) (* <<< *). IF STARTPOS > CURRMARGIN (* <<< *). THEN (* <<< *). CURRMARGIN := STARTPOS;  (* <<< *). IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; (* RSHIFT *) PROCEDURE RSHIFTTOCLP; BEGIN (* RSHIFTTOCLP *) IF NOT STACKtFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; (* RSHIFTTOCLP *) BEGIN (* PRETTYPRINT *) INITIALIZE( TOP CURRLINEPOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, ] CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(3CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_(* USNG *) C$URRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN 1SHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN 1SHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); PPSYMBOL( (* IN *) CURRSYM (* WRITING TO OUTPUT *) ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) NEXTSYM (* WRITING TO OUTPUT *) ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHRIFT( (* USING *) CURRSYM^.NAME );  IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) GOBBLETERMINATORS, (* UPDATING *) CURR8SYM, NEXTSYM (* WRITING TO OUTPUT *) IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END (* WITH *) END; (* WHILE *) IF CRPENDING THEN WRITELN(OUTPUT) END. CBOOK.PA MjPROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK,ERRORENTRY); FIELD = RECORD KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE IdNTEGER OF 1 : (IMREAL : REAL); 2 : (IMINT : INTEGER); 3 : (IMSTR : STRING[10]) END;{RECORD} VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; LOGFILE,OUTFILE,INFILE : TEXT;  NEXTFIELD : FIELD; NFIELD,CATEGORY : INTEGER; N : ARRAY [4..7] OF INTEGER; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} {$I GETFIELD.PI} PROCEDURE ERROR; BEGIN WRITELN(OUTFILE, WORDS SUB 1,0,SNR ;MAy+TCH WITH CALL? JMP @PCUPA ;YES -- GO DO IT CXERR: JSR @P4ER ;ERROR 412 ENT3C: 61003 PCUPA: PCUP ASMLV: LDA 3,SP ;CURRENT TOP OF STACK LDA 0,KM6 ADD 3,0 ;DIMINISH BY HOUSEKEEPING AREA SUB 1,0 ;AND BY # OF PARAM WORDS STA 0,SPOP ;TO GET PREVIOUS TOP-OF-STACK INC 0,0 ;SLOT ABOVE IS FUNCTION VALUE JMP 0,2 ;ENTER PROCEDURE KM6: -6 SPOP: .-. ;EXIT FROM MACHINE LEVEL BACK TO P-CODE ;BY EXECUTING (PSEUDOINSTRUCTION) "XPRET" ;WITH AC1 = 0 FOR PROCEDURE, 1 FOR INTEGER FUNCTION, ; 2 FOR REALՈ FUNCTION. .ZREL XPRET = JMP @. XXPR .NREL XXPR: LDA 2,SPOP ;GET PREVIOUS STACK TOP ADD 1,2 ;INCREASE BY RETURN VALUE IF ANY STA 2,SP ;SET STACK POINTER JMP @P4IX ;GO BACK TO INTERPRETER .END ;OF P4 MOD T17./2]PROGRAM T17(INPUT,OUTPUT); VAR CHR : ARRAY [1..80] OF CHAR; X,Y,Z : REAL; IPEN,I,J : INTEGER; TESTCHAR : CHAR; BEGIN TESTCHAR := 'A'; WHILE NOT EOF(INPUT) DO BEGIN I := 1; WRITELN(OUTPUT,'PROMPT T17'); WHILE NOT EOLN(INPUT) DO BEGIN WRITELN(OUTPUT,'TESTCHAR=',TESTCHAR); READ (INPUT,CHR[I]); TESTCHAR := CHR[I]; I := I+1; END; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,X,Y,Z,IPEN); END; READLN(INPUT); WRITELN(OUTPUT,' '); FOR J := 1 TO I DO WRITE(OUTPUT,H[CHR[J]); WRITE(OUTPUT,X,Y,Z,IPEN); WRITELN(OUTPUT,'A'); END END. BITS.7`; BIT SET AND CLEAR ROUTINES ; ; CALL VIA ; SBIT(BIT NO: INTEGER, VAR WORD : INTEGER);EXTERNAL; ; CBIT(BIT NO : INTEGER ; VAR WORD : INTEGER);EXTERNAL; ; TBIT(BIT NO:INTEGER;WORD:INTEGER;VAR VALUE:INTEGER); ; EXTERNAL; ; ; THE BIT SPECIFIED BY BIT NO( IS SET OR CLEARED IN WORD ; BITS ARE NUMBERED 0=LEFT MOST BIT 15=RIGHT MOST BIT .TITL BITS .ENT ?SBIT,?CBIT,?TBIT .EXTN XPRET .NREL TABLE: .+1 ;TABLE ADDRESS HERE 1B0 1B1 1B2 1B3 1B4 1B5 1B6 1B7 1B8 1B9 1B10 1B11 1B12 1B13 1B14 1B1A5 WORD=0 ;BYTE ADDRESS OF WORD ON STACK BIT=WORD-1 ;WORD ADDRESS OF BIT NO ?SBIT: STA 3,USP ;SAVE AC3 IN USER STACK POINTER LDA 0,BIT,3 ;GET VALUE OF BIT NO LDA 2,TABLE ;GET TABLE START ADDRESS ADD 0,2 ;ADD BIT OFFSET TO ADDRESS LDA 2,0,2 ;HAVE< BIT IN AC2 LDA 3,WORD,3 ;GET BYTE ADDRESS OF WORD MOVZR 3,3 ;MAKE IT A WORD ADDRESS LDA 0,0,3 ;GET VALUE OF WORD ; INCLUSIVE OR BIT IN AC2 TO WORD IN AC0 ; COM 2,2 AND 2,0 ADC 2,0 ;RESULT IS IN AC0 ; STA 0,0,3 ;RETURN RESULT TO PASCAL SUBO 1,01 ;CLEAR AC1 BEFORE RETURNING XPRET ;BACK TO PASCAL ?CBIT: LDA 0,BIT,3 ;GET VALUE OF BIT LDA 2,TABLE ;GET START OF TABLE ADD 0,2 ;ADDRESS OF BIT TO BE CLEARED LDA 2,0,2 ;BIT IN AC2 NOW LDA 3,WORD,3 ;BYTE ADDRESS OF WORD MOVZR 3,3 ;MAKE IT A 8KWORD ADDRESS LDA 0,0,3 ;GET VALUU OF WORD ; ; CLEAR BIT IN AC2 IN WORD IN AC0 ; COM 2,2 AND 2,0 ;RESULT IS I AC0 ; STA 0,0,3 ;RESULT TO PASCAL SUBO 1,1 XPRET ; TEST A BIT AND RETURN 1 FOR ON 0 FOR OFF ; ; CONTENTS OF AC3 = STACK ADDRESS VALUE=0 7 ;BYTE ADDRESS OF VALUE ON STACK WORD=-1 ;VALUE OF WORD ON STACK BITS=-2 ;VALUE OF BIT ON STACK ?TBIT: LDA 0,BITS,3 ;GET VALUE OF BITS LDA 2,TABLE ;GET TABLE START ADDRESS ADD 0,2 ;ADDRESS OF BIT PATTERN LDA 2,0,2 ;BIT PATTERN IN AC2 LDA 0,WORDx,3 ;GET VALUE OF WORD SUBO 1,1 ;SET UP AC1 FOR NOT SET AND 2,0,SZR ;RESULT IN AC0 SUBZL 1,1 ;SET AC1=1 IF SET LDA 3,VALUE,3 ;GET BYTE ADDRESS OF VALUE MOVZR 3,3 ;MAKE IT A WORD ADDRESS STA 1,0,3 ;RETURN VALUE TO PASCAL SUBO 1,1 XPRET .END TEDIT.SVD.SVTEST.02ǾPROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; I : INTEGER; {$I GETINTEGER.PI} BEGIN REPEAT BEGIN I := 1; READLN(STR); WRITELN(' ',GETINTEGER(STR,I),'=NUMB'); END; UNTIL EOF(INPUT); END. 1978.01 B 4196.05 C 2332 2000 C 2356 264.05 C 2355 280.60 D 23546.65 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 Co 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 E 4424.29 D 13878.50 C 2394 85.54 C c2395 1000. C 2396 405.38 C 2397 64. D 3885. C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 E 4499.72 W 5477.65 C 2402 80. 1978EMP.R1r* E 496 1177.09 E 495 1076.21 E 494 392.55 E 493 456.63 E 492 497.88 E 491 574.03 E 490 890.20 E 489 842.19 E 488 788.81 E 510 304.73 E 509 432.47 E 508 575.53 E 507 502.81 E 506 842.80 E 505 1033.57 E 504 254.00 W 503 702.05 W 502 4521.60 W 501 387.26 W 500] 372.80 W 499 561.91 W 498 497.97 E 497 926.48 E 519 84.76 E 520 483.00 E 511 830.88 E 537 464.55 E 531 356.37 E 529 589.96 E 530 436.65 E 528 393.86 E 527 888.88 E 526 1034.18 E 525 991.35 E 524 733.00 W 522 182.00 W 523 1549.00 W 521 2210.00 W 518 3391.8q90 W 517 277.10 E 516 259.01 E 515 439.51 E 514 398.75 E 513 1113.18 E 512 893.06 W 540 4601.70 E 532 1062.02 E 533 1122.84 E 534 999.70 E 535 538.32 E 536 643.20 E 538 386.34 E 539 105.03 W 541 1703.92 W 544 5.00 W 545 1345.38 E 546 924.04 E 547 982.73 E 5:48 873.83 E 549 473.57 E 550 542.91 E 551 440.27 E 553 299.63 E 552 185.93 E 568 343.38 E 569 304.73 E 567 596.15 E 566 465.02 E 565 948.24 E 564 985.99 E 563 991.80 E 557 473.57 E 558 601.00 E 560 265.01 E 555 991.16 E 554 927.77 E 556 852.47 W 562 4255.0^4 E 561 297.08 E 559 688.29 E 570 1050.61 E 571 1069.11 E 572 1019.07 E 573 566.88 E 574 630.97 E 575 269.88 E 576 472.09 E 577 346.43 W 578 4412.14 W 579 483.00 W 580 2210.00 W 581 38.36 E 582 1046.89 E 583 1151.39 E 584 996.51 E 585 627.63 E 586 732.19 E- 587 537.45 E 588 513.44 E 589 374.42 E 590 110.15 E 591 979.37 E 592 1426.28 E 594 531.30 E 596 500.91 W 599 5659.58 E 593 960.21 E 595 645.08 E 597 430.98 E 598 343.31 W 600 1863.74 W 602 850.20 E 603 796.26 E 604 802.32 E 605 379.26 E 606 542.91 E 607 283.06 E 608 180.93 E 609 282.18 E 615 369.00 W 617 2861.14 E 625 2210.00 E 627 1209.08 E 628 1158.89 E 629 552.62 E 630 596.12 E 632 359.96 W 634 800.03 E 635 921.48 E 636 1050.72 E 637 533.66 E 638 610.74 E 639 361.79 E 640 201.10 E 645 346.92 E 610 325.46 E 611 1020.87 E 612 922.47 E 613 505.84 E 614 595.69 E 616 258.02 E 618 1053.55 E 619 845.14 E 620 420.35 E 621 548.51 E 622 293.42 E 623 339.16 E 624 374.42 W 626 483.00 E 631 142.22 W 633 2792.12 E 660 484.10 W 662 2276.24 E 650 981.35 E 651 992.28 E 6$52 327.45 E 653 384.95 E 641 1081.13 E 642 1042.43 E 643 490.20 E 644 516.116 E 646 326.75 W 647 2424.72 W 648 393.57 W 649 251.13 E 654 373.60 E 657 1176.43 E 658 1184.18 E 659 566.46 E 661 247.78 E 663 393.62 E 664 40.27 TEST8. GPROGRAM TEST(INPUT,OUTPUT); CONST STRSIZE = 133; TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRI֛NG LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREF&IX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} VAR LINE : LINESTRING; I : INTEGER; NBYTES : INTEGER; FILENAME :BIGSTR; DATA :BIGSTR; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; FILEPOSITION : DPINTEGER; {$I GPOS.PI} {$I SPOS.PI} {$I GCHN.PI} {$I OPEN.BU} {$I CLOSE.PI} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I RDS.BU} {$I WRS.BU} PROCEDURE ADDZEROTO( VAR STR : BIGSTR); { ADD A ZERO BYTE TO STR TO MAKE IT RDOS COMPATIBLE AND LENGTHN THE STRING BY ONE} BEGIN {$R-} STR[0] := CHR(LENGTH(STR)+1); STR[LENGTH(STR)] := CHR(0); {$R^} END; BEGIN GCHN(I); WRITELN(' FREE CHANNEL = ',I); FILENAME := 'FOBAR'; ADDZEROTO(FILENAME); CRAND(FILENAME,SYSERROR,ERRORNUMBER); OPEN(I,FI%LENAME,SYSERROR,ERRORNUMBER); GPOS(I,FILEPOSITION); SPOS(I,FILEPOSITION); DATA := 'THIS IS A TEST'; ADDZEROTO (DATA); { NBYTES := 14; WRITESEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER);} WRITELINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERREOR,ERRORNUMBER); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); { NBYTES := 14; READSEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER);} READLINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN(OUTPUT,'LENGTH OF DATA =',LENGTH(DATA),' v cNBYTES=',NBYTES); WRITELN(OUTPUT,DATA); WRITELN(' HIT CTLA'); READLN; DELETE(FILENAME,SYSERROR,ERRORNUMBER); END. GETFIELD.PIsPPROCEDURE GETFIELD(STR : ALPHANUMERIC; FIELDNUMBER : INTEGER; VAR FIELDVAL : FIELD ); {TYPE FIELD = RECORD OF KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE INTEGER OF 1: (IMREAL : REAL); 2: (IMINT : INTEGER); 3: (IMSTR : STRING[10]) END; {C ASE} VAR I,J,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; J := 1; WHILE ( (I FIELDNUMBER) ) DO BEGIN {LEADING BLANKS AND TABS} WHILE ( (I -1) OR (BYTE = CTLZ) END. T17RL. #CROSSREF.BU  PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; ns WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : jALFA; F : TEXT; A : ARRAY [1..C1] OF CHAR; PROCEDURE PACK (A : ARRAY[1..C1] OF CHAR ; I : INTEGER ; VAR ID : ALFA ); VAR J : INTEGER; BEGIN FOR J := 1 TO C1 DO ID[J] := A[J-1+I] END (* PACK *) PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMRZEF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN S>9EARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;Ld := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRIcNTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN 6NON EMPTY LINE*) IF F^ IN ['A'..'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-I{1 UNTIL K1 = K; PACK(A,1,ID);SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GJ]ET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. TEST3.PXlTEST3 Copyright (C) 1980 Rational Data Systems襀ق   ȡ֦ Vس 襀عA֦ LINEFEED֦ UP֦ DELETEHEB/  '@"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~ l ƀƀƀOUTPUTAINPUTƀ֥ ƀ#lrR 1978.03 iB 5621.74 D 5532.20 C 2458 450.59 C 2459 75.65 C 2460 923. CC 2461 CC 2462 C 2463 25 C 2464 26 C 2465 50.50 C 2466 39 C 2467 4.80 CC 2468 C 2469 70 C 2470 500 C 2471 12 D 6157.00 C 2472 113.56 C 2473 9.95 CC 2474 C 2475 368 C 2476 616 C 2477 208.65 C 2478 380 C 2479 129 C 2480 3.95 C 2481 7.06 C 2482 30 C 2483 15 D 5631.50 CC 2484 C 2485 2000 C 2486 7 C 2487 34.03 C 2488 474.35 C 2489 179.46 C 2490 145 D 5395 C 2491 12.30 C 2492 7 C 2493 2 C 2494 3.50 C 2495 46.49 CC 2496 C 2497 117.03 E 5322. W 7656 CC2498 TOTAL. DPROGRAM TOTAL(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; TOTAL,AMOUNT : REAL; I,CHECKNUMBER : INTEGER; INFILE,OUTFILE : TEXT; (*$I GETREAL.PI *) (*$I REALPRINT.PI *) (*$I GETINTEGER.PI *) BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); TOTAL := 0.0; WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); I := 2; { CHECKNUMBER := GETINTEGER(SNTR,I);} AMOUNT := GETREAL(STR,I); TOTAL := TOTAL + AMOUNT; { WRITE(OUTFILE,STR[1],CHECKNUMBER : 10);} REALPRINT(OUTFILE,AMOUNT); WRITELN(OUTFILE); END; WRITE(OUTFILE,' ');REALPRINT(OUTFILE,TOTAL);WRITELN(OUTFILE); END. AS.RB1HI   D$$5[????? ? ?*"?Dk?(?'@ _CLOSE.PI 4PROCEDURE CLOSE(RDOSCHANNEL : INTEGER ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTCLOSE =6463; {.CLOSE} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTCLOSE; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN CLOSE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {CLOSE} 1978EMP.R3rr$E 496 1177.09 12 3 E 495 1076.21 12 3 E 494 392.55 12 1 E 493 456.63 12 1 E 492 497.88 12 1 E 491 574.03 12 1 E 490 890.20 12 1 E 489 842.19 12 1 E 488 788.81 12 1 E 510 304.73 12 5 E 509 432.47 12 5 E 508 575.53 12 5 E 507 502.81 12 5 E 506 842.80 12 5 E 42505 1033.57 12 5 E 504 254.00 12 4 W 503 702.05 14 4 W 502 4521.60 14 4 W 501 387.26 14 3 W 500 372.80 14 3 W 499 561.91 14 3 W 498 497.97 14 3 E 497 926.48 12 3 E 519 84.76 12 12 E 520 483.00 12 8 E 511 830.88 12 7 E 537 464.55 12 10 E 531 356.37 12 9 E 529 589.96 12 9 E 530 436.65 12 9 E 528 393.86 12 9 E 527 888.88 12 9 E 526 1034.18 12 9 E 525 991.35 12 9 E 524 733.00 12 8 W 522 182.00 14 8 W 523 1549.00 14 8 W 521 2210.00 14 8 W 518 3391.80 14 7 W 517 277.10 14 7 E 516 259.01 12 7 E 515 439.51 12 7 E 5}14 398.75 12 7 E 513 1113.18 12 7 E 512 893.06 12 7 W 540 4601.70 14 10 E 532 1062.02 12 10 E 533 1122.84 12 10 E 534 999.70 12 10 E 535 538.32 12 10 E 536 643.20 12 10 E 538 386.34 12 10 E 539 105.03 12 10 W 541 1703.92 14 11 W 544 5.00 14 11 W 545 1345.3q8 14 11 E 546 924.04 12 12 E 547 982.73 12 12 E 548 873.83 12 12 E 549 473.57 12 12 E 550 542.91 12 12 E 551 440.27 12 12 E 553 299.63 12 12 E 552 185.93 12 12 E 568 343.38 12 15 E 569 304.73 12 15 E 567 596.15 12 15 E 566 465.02 12 15 E 565 948.24 12 14 Eڧ 564 985.99 12 14 E 563 991.80 12 14 E 557 473.57 12 13 E 558 601.00 12 13 E 560 265.01 12 13 E 555 991.16 12 12 E 554 927.77 12 12 E 556 852.47 12 13 W 562 4255.04 14 13 E 561 297.08 12 13 E 559 688.29 12 13 E 570 1050.61 12 16 E 571 1069.11 12 16 E 572 1\019.07 12 16 E 573 566.88 12 16 E 574 630.97 12 16 E 575 269.88 12 16 E 576 472.09 12 16 E 577 346.43 12 16 W 578 4412.14 14 16 W 579 483.00 14 16 W 580 2210.00 14 16 W 581 38.36 14 16 E 582 1046.89 12 17 E 583 1151.39 12 17 E 584 996.51 12 17 E 585 627.63CA 12 17 E 586 732.19 12 17 E 587 537.45 12 17 E 588 513.44 12 17 E 589 374.42 12 17 E 590 110.15 12 17 E 591 979.37 12 18 E 592 1426.28 12 18 E 594 531.30 12 18 E 596 500.91 12 18 W 599 5659.58 14 18 E 593 960.21 12 0 E 595 645.08 12 0 E 597 430.98 12 0 E 5֠98 343.31 12 0 W 600 1863.74 14 18 W 602 850.20 14 18 E 603 796.26 12 20 E 604 802.32 12 20 E 605 379.26 12 20 E 606 542.91 12 20 E 607 283.06 12 20 E 608 180.93 12 20 E 609 282.18 12 20 E 615 369.00 12 21 W 617 2861.14 14 21 E 625 2210.00 12 23 E 627 1209`.08 12 24 E 628 1158.89 12 24 E 629 552.62 12 24 E 630 596.12 12 24 E 632 359.96 12 24 W 634 800.03 14 24 E 635 921.48 12 25 E 636 1050.72 12 25 E 637 533.66 12 25 E 638 610.74 12 25 E 639 361.79 12 25 E 640 201.10 12 25 E 645 346.92 12 26 E 610 325.46 12 N21 E 611 1020.87 12 21 E 612 922.47 12 21 E 613 505.84 12 21 E 614 595.69 12 21 E 616 258.02 12 21 E 618 1053.55 12 23 E 619 845.14 12 23 E 620 420.35 12 23 E 621 548.51 12 23 E 622 293.42 12 23 E 623 339.16 12 23 E 624 374.42 12 23 W 626 483.00 14 23 E 63Ix1 142.22 12 24 W 633 2792.12 14 24 E 660 484.10 12 29 W 662 2276.24 14 29 E 650 981.35 12 28 E 651 992.28 12 28 E 652 327.45 12 28 E 653 384.95 12 28 E 641 1081.13 12 26 E 642 1042.43 12 26 E 643 490.20 12 26 E 644 516.116 12 26 E 646 326.75 12 26 W 647 2424.72 14 26 W 648 393.57 14 26 W 649 251.13 14 26 E 654 373.60 12 28 E 657 1176.43 12 29 E 658 1184.18 12 29 E 659 566.46 12 29 E 661 247.78 12 29 E 663 393.62 12 29 E 664 40.27 12 29 DATA.BTwwM3B 4196.05 C 2332 2000 U21 1 C 2313 1804.52 V22 1 C 2337 43.50 A0 0 C 2338 6.00 A0 0 C 2345 53.35 A0 0 C 2347 38.00 A0 0 C 2348 50.00 X24 1 C 2356 264.05 A0 0 C 2354 50.00 T20 1 D 23546.64 DM 250.00 C 2355 280.60 V22 1 CC 2357 C 2358 J10 D3 1 C 2359 42.80 J910 1 C 2360 119.40 S19 1 C 2361 50 R18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 R18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 R18 1 CC 2372 CC 2373 C 2374 547.42 Q17 1 C 2375 86 F5 1 C 2376 500 U21 1 C 2377 1500 U21 1 C 2378 93.20 D3 2 C 2379 1562.80 lC2 2 C 2380 3.60 F5 2 C 2381 136.16 F5 2 C 2382 114.98 R18 2 DM 250 C 2383 139.24 E4 2 C 2384 155 F5 2 C 2385 60.30 F5 2 C 2386 1151 Q17 2 C 2387 L12 R18 2 C 2388 66.80 V22 2 C 2389 33.30 V22 2 C 2390 22.80 V22 2 C 2391 L12 R18 2 C 2392 39 V22 2 C 2393 64.65 Y25 2 C 2394 85.54 V22 2 D 13878.10 DM 1865.00 C 2395 1000. U21 3 C 2396 405.38 E4 3 C 2397 64. H8 3 D 3885. DM 250.00 C 2398 14.85 R18 3 DM 1865. C 2399 7.95 R18 3 C 2400 8.52 R18 3 C 2401 29.39 V22 3 C 2402 80. W23 3 D 3222.52 C 2403 1562.80 C2 5 C 2R404 1887.00 Q17 5 C 2405 28.26 U21 5 C 2406 52.68 F5 5 C 2407 53.35 F5 5 C 2408 27.00 F5 5 C 2409 301.50 U21 5 C 2410 32.23 F5 5 C 2411 110. P16 5 C 2412 1500 U21 0 C 2413 O15 R18 3 C 2414 286.41 F5 3 C 2415 12.68 F5 3 C 2416 93.20 D3 5 C 2417 7.75 K11 3 C 2418 66.34 E4 3 C 2419 1197.81 F5 5 C 2420 50 X24 3 C 2421 261.65 W23 5 C 2422 J10 P16 5 C 2423 2386 Q17 5 C 2424 28.15 W23 5 C 2425 8.95 R18 5 D 3727.5 C 2426 16.05 F5 7 C 2427 450.59 Q17 5 C 2428 621.73 H8 6 C 2429 4000. U21 6 C 2430 6.75 R18 6 C 2431 1dl10 F5 6 C 2432 991 P16 6 C 2433 41.5 T20 6 C 2434 52 F5 6 C 2435 675 H8 6 D 10674.20 D 8655.39 D 3056.00 C 2436 40 T20 6 CC 2437 C 2438 3.47 R18 6 C 2439 K11 R18 6 C 2440 339.45 V22 6 C 2441 28.76 R18 6 C 2442 589.40 E4 6 C 2443 19.89 V22 6 C 2444 16. R18 &6 CC 2445 C 2446 93.20 D3 6 C 2447 410.72 Y25 6 C 2448 695.00 H7 6 C 2449 50. A27 6 C 2450 13.00 Q17 6 C 2451 55.00 V22 7 C 2452 74.42 V22 7 C 2453 56.30 F5 7 C 2454 7.85 F5 7 C 2455 223.17 F5 7 C 2456 368.00 W23 7 C 2457 1562.80 C2 7 D 5534.20 C 2458 450.E59 Q17 8 C 2459 75.65 K11 8 C 2460 923. F5 8 CC 2461 CC 2462 C 2463 Y25 R18 8 C 2464 Z26 V22 8 C 2465 50.50 R18 8 C 2466 39 F5 8 C 2467 4.80 V22 8 CC 2468 C 2469 70 R18 8 C 2470 500 U21 8 C 2471 L12 V22 8 D 6157.00 C 2472 113.56 E4 8 C 2473 9.95 R18 8 CC 2474 C 2475 368 W23 8 C 2476 616 I9 8 C 2477 208.65 F5 8 C 2478 380 H7 9 C 2479 129 F5 9 C 2480 3.95 R18 9 C 2481 7.06 B1 9 C 2482 D30 R18 9 C 2483 O15 R18 9 D 5631.50 CC 2484 C 2485 2000 U21 9 C 2486 H7 B1 9 C 2487 34.03 V22 9 C 2488 474.35 F5 9 C 2489 179.46 F5 9 C 2490 145 F5 9 D 5395 C 2491 12.30 R18 9 C 2492 H7 B1 11 C 2493 C2 V22 9 C 2494 3.50 R18 9 C 2495 46.49 E4 10 CC 2496 C 2497 117.03 D3 10 CC 2498 C 2499 1773.70 C2 11 C 2500 94.90 V22 11 C 2501 50 T20 11 C 2502 21.85 K11 11 C 2503 89.37 H8 11 D 1pT0811.70 C 2504 547.42 Q17 11 C 2505 1203.31 V22 11 C 2506 368 W23 11 C 2507 616 I9 11 C 2508 10.80 R18 11 C 2509 23.30 F5 11 C 2510 27.60 F5 11 C 2511 126.00 F5 11 C 2512 168.26 F5 11 C 2513 230.66 Y25 11 C 2514 R18 18 11 C 2515 T20 R18 11 C 2516 42 Z26 11 C 2517 H8 R18 11 D 7237.50 C 2518 446.86 E4 11 C 2519 T20 Z26 12 C 2520 28.99 J10 12 C 2521 4.15 J10 12 C 2522 61.36 J10 12 C 2523 1210.49 J10 12 C 2524 H7 B1 12 C 2525 P16 J10 12 C 2526 45.45 F5 12 C 2527 13.30 F5 12 C 2528 387 Q17 12 C 2529 18.70 R18 12Q CC 2530 C 2531 1800 U21 13 C 2532 206.25 Z26 12 C 2533 1703.40 C2 0 D 3825 C 2534 3178.45 V22 14 CC 2535 C 2536 97.67 W23 14 C 2537 55.93 E4 14 C 2538 Z26 F5 14 C 2539 550 X24 14 C 2540 106.32 H8 14 C 2541 105 D3 14 C 2542 108.06 H8 14 D 6507.66 CC 2543 CT 2544 74.95 J10 14 C 2545 671.81 Q17 14 C 2546 262.60 F5 14 C 2547 50.50 F5 14 C 2548 11.70 Y25 14 C 2549 85 G6 14 C 2550 J10 R18 14 C 2551 34 G6 14 C 2552 200 F5 14 C 2553 368 W23 14 C 2554 912.90 I9 14 C 2555 500 U21 14 C 2556 90 J10 14 C 2557 120 B1 15 8C 2558 2.05 R18 15 C 2559 899 Q17 15 C 2560 267.58 V22 15 D 465 D 3182.36 C 2561 100 F5 15 CC 2562 DM 200 D 5187.50 C 2563 500 H8 15 C 2564 100.75 J10 15 C 2565 3000 U21 15 C 2566 1800 U21 17 C 2567 75.21 J10 15 C 2568 563.06 E4 15 C 2569 Z26 Q17 15 C 2570 192 V22 15 C 2571 14.30 F5 15 C 2572 184.25 F5 15 D 3000 C 2573 500 U21 15 C 2574 115 D3 16 D 11960.00 C 2575 42 Z26 16 C 2576 26.12 F5 16 C 2577 81.71 E4 16 C 2578 36.81 K11 16 C 2579 368.00 W23 16 C 2580 671.81 Q17 16 C 2581 37.70 R18 16 C 2582 72 G6 16( C 2583 350 U21 16 C 2584 23.95 H8 16 C 2585 1773.70 C2 16 CC 2586 C 2587 271.60 W23 17 CC 2588 D 2107.75 D 4990 C 2589 F5 B1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 H8 17 C 2591 311.54 H8 17 C 2593 770.94 Y25 17 C 2594 109.92 V22 17 CU 2595 432.25 E4 18 C 2596 B28 B1 18 C 2897 200 A27 18 C 2598 919 C2 18 C 2599 187.22 F5 18 C 2600 134 F5 18 C 2601 90.50 F5 18 C 2602 153.64 F5 18 C 2603 14850. V22 18 CC 2604 C 2605 50 X24 18 C 2606 186.36 H8 18 C 2607 85 B1 18 D 32927.50 C 2608 1352.93 Y25 19 C 2609 50 T20 19 CC 2610 CC 2611 DM 7.37 C 2612 Q17 G6 20 D 14750.00 D 2040 C 2613 33 F5 20 C 2614 9.22 F5 20 C 2615 115 D3 20 C 2616 1875.10 C2 20 C 2617 134 F5 20 C 2618 46.45 F5 20 C 2619 790.75 Q17 20 C 2620 33 Q17 20 C 2621 368 W23 28 C 2622 52.30 F5 20 C 2623 309.14 H8 20 C 2624 I9 R18 20 C 2625 1452.77 Y25 20 D 8742.50 C 2626 50 X24 20 C 2627 39.50 R18 20 CC 2628 C 2629 56 Q17 20 C 2630 164 F5 21 C 2631 400.88 E4 21 CC 2632 C 2633 8.75 R18 21 C 2634 7.50 B1 21 C 2635 48 E4 21 C 2636 12.55 K11 2KA1 C 2637 139.70 V22 21 D 538 C 2638 1200 U21 21 C 2639 1000 U21 21 C 2640 115 D3 21 C 2641 D30 F5 21 C 2642 101.39 E4 22 D 3000 DM 3000.00 C 2643 140 V22 21 C 2644 35 Z26 22 C 2645 671.81 Q17 22 C 2646 1850.16 C2 22 C 2647 70 W23 22 C 2648 14.20 W23 22 C 2ƒ649 500 X24 22 C 2650 13.05 K11 22 C 2651 205.74 V22 22 C 2652 199.40 F5 22 C 2653 17.16 F5 16 C 2654 19.94 F5 22 C 2655 34.12 V22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 U21 22 C 2657 116.89 B1 23 D 1545 C 2659 368 W23 22 C 2660 37 R18 22 C 2661 Y25 V22 22 C 2662 O15 R18 22 C 2663 500 U21 23 C 2664 25.35 F5 23 D 6212.50 CC 2665 C 2666 50 X24 23 C 2667 96.30 R18 23 C 2668 495.42 E4 23 C 2669 145 F5 23 C 2670 8.70 B1 24 C 2671 16.80 B1 24 C 2672 C29 F5 23 C 2673 11.48 V22 23 C 2674 1397.48 Y25 23 C 2675 200 B28 23 C 2676 500 H8 23 CC 2677 C 2678 49.56 H8 24 C 2679 10000 W23 24 C 2680 110 W23 24 C 2681 1007 W23 24 C 2682 37.64 V22 24 C 2683 2000. U21 24 C 2684 49.44 B1 25 D 4762.50 C 2685 1850.16 C2 25 C 2686 35.27 K11 25 C 2687 115 D3 25 C 2688 144.36 EH4 25 C 2689 50 V22 25 C 2690 39.85 R18 25 C 2691 141.22 E4 25 C 2692 552.87 Q17 25 C 2693 134.32 V22 25 CC 2694 D 1882.50 C 2695 500 H8 25 C 2696 500 H8 25 C 2697 20.32 F5 26 C 2698 750 C 2699 110.25 B1 25 C 2700 368 W23 25 C 2701 134.74 V22 25 C 2702 6.90 F5 25 C 2703 99 Q17 25 DM 11.49 DM 11.61 C 2704 36 R18 26 C 2705 635.69 A27 26 C 2706 18.50 R18 26 D 7130 C 2707 295 Z26 26 C 2708 472.87 E4 26 C 2709 O15 R18 26 C 2710 36.50 F5 26 C 2711 16.75 R18 26 C 2712 218.26 F5 26 C 2713 139.96 M13 16 CC 2714 C 271`5 50 V22 26 C 2716 1500 U21 27 C 2717 1500 U21 28 C 2718 11.56 F5 26 C 2719 4812.51 W23 27 D 1545 C 2720 3920.58 Q17 27 C 2721 115 D3 27 C 2722 76.99 V22 27 C 2723 40.30 F5 27 C 2724 117.43 E4 27 C 2725 552.87 Q17 27 C 2726 127.35 F5 27 C 2727 G6 R18 27 C 2728 T20 F5 27 C 2729 52.84 K11 27 C 2730 5.74 F5 27 DM 23.10 C 2731 50 X24 27 D 592.50 C 2732 911.35 Y25 27 C 2733 46.85 F5 27 C 2734 164.11 F5 27 C 2735 1850.16 C2 27 C 2736 140 B1 27 D 1997 C 2737 368 W23 27 D 1467.50 C 2738 154.01 F5 28 C 2739 33 R18 2Z8 C 2740 40 W23 28 C 2741 15.15 H8 28 C 2742 342.32 H8 28 C 2743 J10 Z26 28 C 2744 160 A27 28 C 2745 S19 Z26 28 C 2746 1136.47 G6 28 C 2747 174.34 H8 28 C 2748 208.22 Y25 28 C 2749 131.46 J10 28 D 13855 C 2750 145.75 J10 28 C 2751 D30 F5 28 C 2752 54 F5 28 C 2753 55 V22 28 C 2754 569.90 E4 28 C 2755 64.50 G6 28 C 2756 75 B28 29 CC 2757 C 2758 374 Q17 29 C 2759 115 D3 29 C 2760 500 U21 29 C 2761 500 U21 29 C 2762 1510 U21 29 E 496 1177.09 L12 3 E 495 1076.21 L12 3 E 494 392.55 L12 1 E 493 456.63 L12 1 E 492  497.88 L12 1 E 491 574.03 L12 1 E 490 890.20 L12 1 E 489 842.19 L12 1 E 488 788.81 L12 1 E 510 304.73 L12 5 E 509 432.47 L12 5 E 508 575.53 L12 5 E 507 502.81 L12 5 E 506 842.80 L12 5 E 505 1033.57 L12 5 E 504 254.00 L12 4 W 503 702.05 N14 4 W 502 4521.60 N14 4 W 501 387.26 N14 3 W 500 372.80 N14 3 W 499 561.91 N14 3 W 498 497.97 N14 3 E 497 926.48 L12 3 E 519 84.76 L12 12 E 520 483.00 L12 8 E 511 830.88 L12 7 E 537 464.55 L12 10 E 531 356.37 L12 9 E 529 589.96 L12 9 E 530 436.65 L12 9 E 528 393.86 L12 9 E c527 888.88 L12 9 E 526 1034.18 L12 9 E 525 991.35 L12 9 E 524 733.00 L12 8 W 522 182.00 N14 8 W 523 1549.00 N14 8 W 521 2210.00 N14 8 W 518 3391.80 N14 7 W 517 277.10 N14 7 E 516 259.01 L12 7 E 515 439.51 L12 7 E 514 398.75 L12 7 E 513 1113.18 L12 7 E 512 Z893.06 L12 7 W 540 4601.70 N14 10 E 532 1062.02 L12 10 E 533 1122.84 L12 10 E 534 999.70 L12 10 E 535 538.32 L12 10 E 536 643.20 L12 10 E 538 386.34 L12 10 E 539 105.03 L12 10 W 541 1703.92 N14 11 W 544 5.00 N14 11 W 545 1345.38 N14 11 E 546 924.04 L12 12 ͪE 547 982.73 L12 12 E 548 873.83 L12 12 E 549 473.57 L12 12 E 550 542.91 L12 12 E 551 440.27 L12 12 E 553 299.63 L12 12 E 552 185.93 L12 12 E 568 343.38 L12 15 E 569 304.73 L12 15 E 567 596.15 L12 15 E 566 465.02 L12 15 E 565 948.24 L12 14 E 564 985.99 L12* 14 E 563 991.80 L12 14 E 557 473.57 L12 13 E 558 601.00 L12 13 E 560 265.01 L12 13 E 555 991.16 L12 12 E 554 927.77 L12 12 E 556 852.47 L12 13 W 562 4255.04 N14 13 E 561 297.08 L12 13 E 559 688.29 L12 13 E 570 1050.61 L12 16 E 571 1069.11 L12 16 E 572 101at9.07 L12 16 E 573 566.88 L12 16 E 574 630.97 L12 16 E 575 269.88 L12 16 E 576 472.09 L12 16 E 577 346.43 L12 16 W 578 4412.14 N14 16 W 579 483.00 N14 16 W 580 2210.00 N14 16 W 581 38.36 N14 16 E 582 1046.89 L12 17 E 583 1151.39 L12 17 E 584 996.51 L12 17 E 585 627.63 L12 17 E 586 732.19 L12 17 E 587 537.45 L12 17 E 588 513.44 L12 17 E 589 374.42 L12 17 E 590 110.15 L12 17 E 591 979.37 L12 18 E 592 1426.28 L12 18 E 594 531.30 L12 18 E 596 500.91 L12 18 W 599 5659.58 N14 18 E 593 960.21 L12 0 E 595 645.08 L12 0 E 597 430.98 L12 0 E 598 343.31 L12 0 W 600 1863.74 N14 18 W 602 850.20 N14 18 E 603 796.26 L12 20 E 604 802.32 L12 20 E 605 379.26 L12 20 E 606 542.91 L12 20 E 607 283.06 L12 20 E 608 180.93 L12 20 E 609 282.18 L12 20 E 615 369.00 L12 21 W 617 2861.14 N14 21 E 625 2210.00 L12 23 E 627 1209.08 L12 24 E 628 1158.89 L12 24 E 629 552.62 L12 24 E 630 596.12 L12 24 E 632 359.96 L12 24 W 634 800.03 N14 24 E 635 921.48 L12 25 E 636 1050.72 L12 25 E 637 533.66 L12 25 E 638 610.74 L12 25 E 639 361.79 L12 25 E 640rr 201.10 L12 25 E 645 346.92 L12 26 E 610 325.46 L12 21 E 611 1020.87 L12 21 E 612 922.47 L12 21 E 613 505.84 L12 21 E 614 595.69 L12 21 E 616 258.02 L12 21 E 618 1053.55 L12 23 E 619 845.14 L12 23 E 620 420.35 L12 23 E 621 548.51 L12 23 E 622 293.42 L12 23s E 623 339.16 L12 23 E 624 374.42 L12 23 W 626 483.00 N14 23 E 631 142.22 L12 24 W 633 2792.12 N14 24 E 660 484.10 L12 29 W 662 2276.24 N14 29 E 650 981.35 L12 28 E 651 992.28 L12 28 E 652 327.45 L12 28 E 653 384.95 L12 28 E 641 1081.13 L12 26 E 642 1042.4_E3 L12 26 E 643 490.20 L12 26 E 644 516.116 L12 26 E 646 326.75 L12 26 W 647 2424.72 N14 26 W 648 393.57 N14 26 W 649 251.13 N14 26 E 654 373.60 L12 28 E 657 1176.43 L12 29 E 658 1184.18 L12 29 E 659 566.46 L12 29 E 661 247.78 L12 29 E 663 393.62 L12 29 E 664 40.27 L12 29 INTERPOK. [SGprogram interpok; var output : text; begin rewrite(output); writeln('Interpreter OK') end. TEST7.q +PROGRAM TEST(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR);  3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTEXR} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR LINE : LINESTRI^NG; I : INTEGER; NBYTES : INTEGER; STR :BIGSTR; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; {$I GCHN.PI} {$I OPEN.PI} {$I CLOSE.PI} {$I DELETE.PI} {$I CRAND.PI} {$I WRL.PI} {$I RDL.PI} {$I RDS.PI} {$I WRS.PI} PROCEDURE ADDZEROTO( VAR STR : BIGSTR); { ADD A ZERO BYTE TO STR TO MAKE IT RDOS COMPATIBLE AND LENGTHN THE STRING BY ONE} BEGIN {$R-} STR[0] := CHR(LENGTH(STR)+1); STR[LENGTH(STR)] := CHR(0); {$R^} END; BEGIN GCHN(I); STR := 'FOBAR'; ADDZEROTO(STR); CRAND(STR,SYSERROR,ERRORNUMBER); OPEN(I,STR,SYSERROR,ERRORNUMBER); WRITESEQUENTIAL(I,'THIS IS A TEST',14,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORNUMBER); OPEN(I,STR,SYSERROR,ERRORNUMBER); NBYTES := 14; READSEQUENTIAL(I,STR,NBYTES,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORHNUMBER); WRITELN(OUTPUT,'LENGTH OF STRING =',LENGTH(STR),' NBYTES=',NBYTES); WRITELN(OUTPUT,STR); WRITELN(' HIT CTLA');READLN; END. T16./ MPROGRAM T16(INPUT,OUTPUT); VAR CHR : ARRAY [1..80] OF CHAR; X,Y,Z : REAL; IPEN,I,J : INTEGER; TESTCHAR : CHAR; BEGIN WHILE NOT EOF(INPUT) DO BEGIN I := 1;TESTCHAR := 'A'; WRITELN(OUTPUT,'PROMPT T16'); WHILE TESTCHAR <> ' ' DO BEGIN READ (INPUT,CHR[I]); TESTCHAR := CHR[I]; I := I+1; END; READ(INPUT,X,Y,Z,IPEN); FOR J := 1 TO I DO WRITE(OUTPUT,CHR[J]); WRITE(OUTPUT,X,Y,Z,IPEN); WRITELN(OUTPUT,'A'); END END. SEDIT.SVSD.SVREALPRINT.PA :6PROGRAM TEST (INPUT,OUTPUT); VAR I,DIGIT : INTEGER; R,R1,R2 : REAL; STR : STRING(11); PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-R2*10); R1 := R2 WRITELN(' GETDIGIT,DIGIT=',DIGIT); END{GETDIGIT} BEGIN {MAIN} {do decimal part firslt} WRITELN(' ENTER A REAL NUMBER'); READLN(R); R1=R*100; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[11-I] := CHR(DIGIT) END I :=I+1 STR[11-I] :='.' {do integer part} R1 :=R; WHILE ( R1>0.0 AND I<8) DO BEGIN GETDIGIT; STR[11-I] :=CHR(D]'1IGIT) IF I = 6 THEN BEGIN I := I+1; STR[11-I] := ',' END I := I+1 END END. T3.MC CHATR TEST3.PX 0 CHATR TEST3.PA 0 DELETE/V TEST3.PA XFER TEST3 TEST3.PA/R CHATR TEST3.PA *P PASINTERP PASCALO/S/V/A/L TEST3 CHATR TEST3.PX *P C.MC3yCHATR CBOOK.(PA,PX) 0 DELETE/V CBOOK.PA XFER CBOOK CBOOK.PA/R CHATR CBOOK.PA *P PASINTERP PASCALO/A/S/V/L CBOOK CHATR CBOOK.PX *P 1978.04 /AlB 8273.34 C 2499 1773.70 C 2500 94.90 C 2501 50 C 2502 21.85 C 2503 89.37 D 10811.70 C 2504 547.42 C 2505 1203.31 C 2506 368 C 2507 616 C 2508 10.80 C 2509 23.30 C 2510 27.60 C 2511 126.00 C 2512 168.26 C 2513 230.66 C 2514 18 C 2515 20 C 2516 42 C 2517 8 }D 7237.50 C 2518 446.86 C 2519 20 C 2520 28.99 C 2521 4.15 C 2522 61.36 C 2523 1210.49 C 2524 7 C 2525 16 C 2526 45.45 C 2527 13.30 C 2528 387 C 2529 18.70 CC 2530 C 2531 1800 C 2532 206.25 C 2533 1703.40 D 3825 E 5096.35 W 4255.04 1878.05TOTAL.PA DPROGRAM TOTAL(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; TOTAL,AMOUNT : REAL; I,CHECKNUMBER : INTEGER; INFILE,OUTFILE : TEXT; (*$I GETREAL.PI *) (*$I REALPRINT.PI *) (*$I GETINTEGER.PI *) BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); TOTAL := 0.0; WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); I := 2; { CHECKNUMBER := GETINTEGER(SNTR,I);} AMOUNT := GETREAL(STR,I); TOTAL := TOTAL + AMOUNT; { WRITE(OUTFILE,STR[1],CHECKNUMBER : 10);} REALPRINT(OUTFILE,AMOUNT); WRITELN(OUTFILE); END; WRITE(OUTFILE,' ');REALPRINT(OUTFILE,TOTAL);WRITELN(OUTFILE); END. PL.MCrqpvCHATR PL.PA 0 CHATR PL.PX 0 DELETE PL.PA XFER PL PL.PA/R CHATR PL.PA *WP PASINTERP PASCALO/S PL CHATR PL.PX *WP 1978.05 HC 2534 3178.45 CC 2535 C 2536 97.67 C 2537 55.93 C 2538 26 C 2539 550 C 2540 106.32 C 2541 105 C 2542 108.06 D 6507.66 CC 2543 C 2544 74.95 C 2545 671.81 C 2546 262.60 C 2547 50.50 C 2548 11.70 C 2549 85 C 2550 10 C 2551 34 C 2552 200 C 2553 368 C 2554 912f.90 C 2555 500 C 2556 90 E 4635.31 C 2557 120 C 2558 2.05 C 2559 899 C 2560 267.58 D 465 D 3182.36 C 2561 100 CC 2562 DM 200 D 5187.50 C 2563 500 C 2564 100.75 C 2565 3000 C 2566 1800 C 2567 75.21 C 2568 563.06 C 2569 26 C 2570 192 C 2571 14.30 C 2572 184.w525 D 3000 C 2573 500 C 2574 115 C 2575 42 C 2576 26.12 C 2580 671.81 C 2581 37.70 C 2582 72 C 2583 350 C 2584 23.95 C 2585 1773.70 CC 2586 C 2587 271.60 CC 2588 T26.Ub`?PROGRAM T26; PROCEDURE PCHA (VAL : BOOLEAN);EXTERNAL; BEGIN PCHA ( TRUE ); PCHA (FALSE); END. CROSSREF.+PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*)  CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : A`LFA; F : TEXT; A : ARRAY [1..C1] OF CHAR; PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO :-E= N;X^.NEXT := NIL; W1 :=W END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN :END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A'..'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; PACK(A,1,ID);SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UN{TIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. TEST.MCl 'CHATR TEST.PA 0 CHATR TEST.PX 0 DELETE/V TEST.PA XFER TEST TEST.PA/R PASINTERP PASCALO/S/V TEST CHATR TEST.PA *WP CHATR TEST.PX *WP PL5.PXrq $PLO  Copyright (C) 1980 Rational Data Systems  * &֦ ****7 ^  6á "֦PROGRAM INCOMPLETE7  7  ' ֥襆7Q֥7 ֥Q Qc  áM ɡ_ ġث _   á_  ق-  -  ššd q6 šJ[+:á=áo[v)LTš ֦PROGRAM TOO LONG7 dػ  Z$8d٥ ٢ ع6š٢ /٢٢ ٢>+n d d  < á5 áá F á  NȡPdإ7 ۥo  áN h ֥饂áQ á 9d! $Cáš%á 2á@ ``(`á1 F á (á1 láDzt??Vڹ0; 3 + #   71+)áa á dˡ á ˡdá8Iˡ9 á #dááMֳá dáZֳ" "á ֳ" áYáT wֳá d d  š á& á áˡá& á áˡáeá (áٳá ֥ ֥饂dddߢ ֳ"  DDCxš!.֦ START OF PL/07ʁdູÚ˚ɚĚŚUȚ$ V/X>S7 ʁٚښNBm8á H>6á֦ END OF PL/07"<>dJƆ7ƆuƆ7OUTPUTƅƅƅINPUTƅƆ7A;ȡʆЫoʆá-  BEGIN - ? CALL -  CONST -  DO -  END -  IF -  ODD -  PROCEDURE -   THEN -   VAR -   WHILE dҤ d d d d d d d d  d  d  o+o-o*o/o(o)o=o,o.ץo! o< o> o" o# o;oLIT oOPR oLOD oSTO oCAL oINT oJMP oJPC 8P@֥7  ˡ á$֦ ERRORS IN PL/0 PROGRAM7֥7Ɔ7ƅ*~2  f  8H"dz&1980.D2 810 10 EM 810 17 15 811 11 EM 811 604.28 15 812 12 EM 812 643.69 15 813 16 C 813 980.89 14 814 18 CC 814 816 25 C 816 1581.88 12 817 17 C 817 205.18 12 818 55 EM 818 140 27 819 26 C 819 1581 12 820 56 EM 82V0 1581 12 821 65 EM 821 195.18 12 822 66 EM 822 1415.95 12 823 117 EM 823 1000 12 824 131 EM 824 333.14 15 825 132 EM 825 378.68 15 826 133 EM 826 2590.51 14 827 134 EM 827 425.95 12 828 135 EM 828 82.50 26 829 136 EM U829 138.70 14 830 138 EM 830 1425.95 12 831 139 EM 831 205.18 12 832 140 EM 832 209.37 12 833 57 EM 833 948.57 12 834 58 EM 834 912.14 12 835 59 EM 835 17 15 836 60 EM 836 181.73 14 837 61 EM 837 482.61 15 838 62 EM 838 2742.40 14 839 63 CC 839 840 64 EM 840 622.50 27 841 137 EM 841 1425.95 12 842 192 EM 842 209.37 12 843 197 EM 843 1527.87 12 844 193 EM 844 1527.87 12 845 194 EM 845 290.37 12 846 195 EM 846 3584 14 847 198 EM 847 1527.87 12 848 199 EM 848 209.37 12 849 200 EM 849 1000 12 850 201 EM 850 9000 12 851 221 EM 851 4000 36 852 227 EM 852 1527.87 12 853 239 EM 853 540 15 854 238 EM 854 48.65 12 3040 1 C 3040 704.45 3064 2 CC 3064 *A 3066 3 C 3066 250 27 3067 20 C 3067 62 1 3068 32 C 3068 10 18 3069 4 C 3069 96 4 3070 5 CC 3070 3071 22 C 3071 330 20 3075 6 C 3075 23 5 3076 7 C 3076 100 24 3077 8 C 3077 10.77 6 3078 9 C 3078 22.50 4 3081 19 C 3081 35 4 3082 267 C 3082 1350.12 25 3083 21 C 3083 34 6 3084 273 CC 3084 3085 23 C 3085 50.99 5 3086 33 C 3086 138.02 25 3087 24 CC 3087 3088 34 C 3088 1040 23 3089 274 CC 3089 3090 35 C 3090 5324 9 3091 36 C 3091 250 8 3092 37 C 3092 206.59 20 3093 38 C 3093 15.40 22 3094 39 C 3094 120.70 4 3095 40 C 3095 20 26 3096 41 C 3096 775 9 3097 42 C 3097 32.88 10 3098 43 C 3098 74.05 22 3099 45 C 3099 4000 32 3100 275 CC 3100 3101 46 C 3101 1557.44 25 3102 276 CC 3102 3103 48 C 3103 42.50 10 3104 47 C 3104 40 33 3105 49 C 3105 504.39 25 3106 50 C 3106 119.98 4 3107 51 C 3107 793.50 9 3108 52 C 3108 1537.50 27 3109  53 C 3109 3394.50 6 3110 54 C 3110 25 3 3111 277 CC 3111 3112 92 C 3112 25 26 3113 67 C 3113 79.95 5 3114 68 C 3114 69.95 10 3115 69 C 3115 200 20 3116 70 C 3116 225 27 3117 71 C 3117 4.65 10 3118 93 C 3118 1.30 11 3119 72 C 3119 48 18 3120 73 C 3120 1940.43 25 3121 74 C 3121 269.78 17 3122 94 C 3122 100 26 3123 75 C 3123 12.24 4 3124 76 C 3124 93.27 15 3125 77 C 3125 181.78 15 3126 78 C 3126 243.77 14 3127 79 C 3127 L68.45 23 3128 95 C 3128 7.86 22 3129 80 C 3129 128.35 5 3130 81 C 3130 25.98 5 3131 260 CC 3131 3132 82 C 3132 15.90 5 3133 83 C 3133 125.81 22 3134 84 C 3134 20.47 22 3135 85 C 3135 85.15 22 3136 268 C 3136 16.00w 1 3137 44 CC 3137 3138 96 C 3138 185.26 4 3139 97 C 3139 19.37 10 3140 98 C 3140 6.17 10 3141 99 C 3141 6.46 10 3142 100 C 3142 3.96 10 3143 101 C 3143 3.62 10 3144 102 C 3144 42.08 22 3145 103 C 3145 46.50 3 3146 104 C 3146 36.70 11 3147 105 C 3147 27.73 10 3148 106 C 3148 25.95 5 3149 107 C 3149 6 33 3150 108 C 3150 95 33 3151 109 C 3151 78.50 33 3152 110 C 3152 1000 25 3153 111 C 3153 227.40 25 3154 112 C 3154 100 8 3155 11o3 C 3155 160.43 4 3156 114 C 3156 835.38 25 3157 115 C 3157 781.68 25 3158 118 C 3158 21.92 5 3159 119 C 3159 12 33 3160 122 C 3160 155.47 17 3161 123 C 3161 34 10 3162 146 C 3162 39.95 18 3163 124 C 3163 594 17 3164 147{q C 3164 130.46 14 3165 120 C 3165 638.45 27 3166 125 C 3166 465 4 3167 121 C 3167 15 5 3168 126 C 3168 83.85 3 3169 127 C 3169 200 24 3170 148 C 3170 120.97 4 3171 149 C 3171 18 33 3172 150 C 3172 36.70 10 3173 151 C 317H3 947.50 25 3174 152 C 3174 80 26 3175 153 C 3175 204 5 3176 169 C 3176 50 22 3177 154 C 3177 496.56 25 3178 155 C 3178 136.20 25 3179 156 C 3179 729 17 3180 157 C 3180 170 23 3181 170 C 3181 950 7 3182 158 C 3182 121.30; 11 3183 159 C 3183 25.91 22 3184 160 C 3184 127 17 3185 171 C 3185 125 23 3186 161 C 3186 10.08 23 3187 172 C 3187 174.75 23 3188 173 C 3188 290.64 4 3189 174 C 3189 1372 27 3190 175 C 3190 3.28 5 3191 176 C 3191 18 5 v3192 177 C 3192 5.68 23 3193 179 C 3193 37.25 23 3194 180 C 3194 147.08 23 3195 181 C 3195 17 23 3196 182 C 3196 50 21 3198 116 C 3198 28.30 3 3199 183 C 3199 26 33 3200 162 C 3200 1020 27 3201 184 C 3201 2764.81 27 3202 185 C 3202 948.17 25 3203 178 C 3203 100 27 3204 186 C 3204 55.20 5 3205 187 C 3205 14.25 7 3206 188 C 3206 10 6 3207 189 C 3207 7.58 5 3208 190 C 3208 60.59 2 3209 191 C 3209 250.65 25 3210 202 C 3210 720 27 3211 20.3 C 3211 69.37 2 3212 204 C 3212 1.81 11 3213 205 C 3213 176.55 25 3214 206 C 3214 10.46 25 3215 207 C 3215 18.28 5 3216 269 C 3216 64.28 5 3217 209 C 3217 547.32 17 3218 210 C 3218 136.48 17 3219 211 C 3219 48.60 10 3220 _ 212 C 3220 170 23 3221 213 C 3221 10 8 3222 216 C 3222 450 27 3223 217 C 3223 10.64 5 3224 214 C 3224 227.40 17 3225 215 C 3225 36 5 3226 218 C 3226 93.71 4 3227 219 C 3227 74.13 2 3228 223 C 3228 102.08 4 3229 222 C 3|m229 2774.75 23 3230 220 C 3230 31 26 3231 224 C 3231 35 18 3232 228 C 3232 125 23 3233 229 C 3233 3654.15 23 3234 270 C 3234 298.80 25 3235 230 C 3235 37 33 3236 231 C 3236 42.50 33 3237 232 C 3237 2282.26 6 3238 233 C 3238 138.17 33 3239 234 C 3239 95.64 2 3240 235 C 3240 3.70 5 3241 236 C 3241 4.33 5 3242 237 C 3242 35.39 18 3243 245 C 3243 28.20 3 3244 246 C 3244 341.40 10 3245 247 C 3245 500 25 3246 248 C 3246 328.44 10 3247 249 C 3 247 784.13 25 3248 250 C 3248 125.30 11 3249 251 C 3249 5.76 23 3250 252 C 3250 50 24 3251 254 C 3251 100 2 3252 253 C 3252 1760 27 3253 255 C 3253 43 1 3254 256 C 3254 290.77 4 3255 257 C 3255 100 2 3258 258 C 3258 42.50 33 3259 259 C 3259 4.60 23 3260 261 C 3260 820.84 25 3261 262 C 3261 732.30 8 3262 271 C 3262 88.41 14 3263 263 C 3263 50 22 3264 264 C 3264 296.31 23 3265 265 C 3265 168.01 25 3268 272 C 3268 14.00 26 3276 278 C 3276] 146.75 11 3277 279 C 3277 60 1 3278 280 C 3278 19.01 11 3279 281 C 3279 72.18 5 BTREE.PXrr xBTREE Copyright (C) 1980 Rational Data Systems  $ɡ[ġ)ڢڢáڢ ȡá  Zڢġ)ڢڢáڢ ȡ*٢xáڢȡ,٢á٢ ȡ*٢á٢ٚ G3ٟá ؚ  ~  ܂ ȡ ġɡܕš#  *á    ɡآ٢آ٢š_  ȡ.  ٢ ܢ  áآܢآܚܢܢߕ ޮ ȡ.  ܢ ܢ ߂ á߂~  ȡ.  ٢ ܢ  áڮ  }ȡ.  آ آ  ááآš  ġ/   ٢ ߂٢  á٢آ٢ߕ  ġ/   ٢ ܢ ނ á٢ܢآܢآٚ߂oܢآܢ  ȡ.  ܢ ނ٢  á:uW \@ۢFmڟˡKآآɚ~ٟá0֦KEY IS NOT IN TR  EE   ۂ ȡ ġšá  ەšbߟáK  ɚݮ ȡ,    áP ؟ˡٮȡ֦ áȡ$ۢ á֥ȡ ۢá ^ƀƀƀOUTPUTFINPUTƀ֥ ˡl֦ SEARCH KEY ʁ ʁ ,́  蚧 ֥ ֥ ˡK DELETE KEY ʁ ʁ  á֥ ƀ` ,2INPUT.$.T36. PROGRAM T36(INPUT,OUTPUT); TYPE INTSTR = ARRAY [1..10] OF INTEGER; VAR INCHNL,OUTCHNL,NBYTE,NBYTESREAD,ERROR,NBYTESWROTE,BYTE:INTEGER; NEWBYTE,STRING:INTSTR; PROCEDURE RDSQ(IOCH:INTEGER;VAR BUFFER:INTSTR; NBYTES:INTEGER;VAR NBYTESREAD:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE PBYT(VAR BYTE:INTEGER;POSITION:INTEGER;STRING:INTSTR);EXTERNAL; PROCEDURE GBYT(VAR BYTE:INTEGER;POSITION:INTEGER;STRING:INTSTR);EXTERNAL; PROCEDURE SWAP(VAR WORD:INTEGER);EXTERNAL; PROCEDURE RDLI(CHANNEL:INTEGER;VAR STRING:INATSTR;VAR NBYTESREAD:INTEGER; VAR ERROR:INTEGER);EXTERNAL; PROCEDURE WRLI(CHANNEL:INTEGER;STRING:INTSTR;VAR NBYTESWROTE: INTEGER;VAR ERROR:INTEGER);EXTERNAL; BEGIN INCHNL:=1;OUTCHNL:=2; REPEAT WRITELN(OUTPUT,' ENTER S','TRING CR'); RDLI(INCHNL,STRING,-NBYTESREAD,ERROR); WRITELN(OUTPUT,' ENTER B','YTE TO B','E EXTRAC','TED'); READLN(INPUT,NBYTE); GBYT(BYTE,NBYTE,STRING); WRITELN(OUTPUT,BYTE); WRITELN(OUTPUT,' ENTER B','YTE TO BE PUT'); RDSQ(INCHNL,NEWBYTE,1,NBYTESREAD,ERROR); SWAP(NEWBYTE[1]); PB^qYT(NEWBYTE[1],NBYTE,STRING); WRLI(OUTCHNL,STRING,NBYTESWROTE,ERROR); UNTIL INCHNL = 2 END. T. & EDIT.SV -& VG l,x, t 9 tQ%COPYRIGHT (C) DGC,1972,1973,1974 ALL RIGHTS RESERVEDEDIT REV 01.00 \8) ))az h  8 3S9X0 )    1q  9l 8KKCCCGCCCCCCCCCCCa!G4 !E  PCCC)BKPCP  ):  C  !4 " )- ? S " )$ ? SSQ!"0 B 32! *3 *OFCOM.CMUY  (C#+ƥ)t 1#PC  k#)ePCC!] +!=G!0 B C 5)Y E)X 13 *3+P +1I   F!0 B D0Z""Ƃ2+J8PS!G (n#C)  ) +3 ))  ## +3 )*+  k#CCCC Z)c  U) )^ )\1XKK+PP;9K!Q7P8K :+K &)ˍ  ,)Ǎ  5)K/ (3 (# C7  ###C8S3 )1": -0I^@ >{{A VBCyD]E)F (G8H0IJxKTLMNPQRK(STU5WEX=Y RZ:+=7.> # !- - -88   "C3 ) 1 *   "KYEHDRNSCZ?`H#  (1$` (#  (b3 (#  ("1` ( ( ( XK+ ?  (+  (!` G+  /=3ۭ ? x  C ($#CRC))  p!n`)k` ()" k  + C 8S)  ($C[  R.SC0*8SCK):K)9KKC3 ))/ )) )) K3 *)K+ K3 S3 *#) K ($9.:8SCCPK3 )) !C3 )3 *3 *#C+ +  F+ߪ ? @3 ΅C3 C# %!`3 )? # 3 !`+ ] ' )`!`  CCCCC (41` (m!` F)PC!`)a ) !`  ).BU %#C u3 *# 3 #C i3 * +K a3 *#+  3! *8S#+ 1#)-` ,+)&`K (P3 (9#C 53 *5# ? ? ) ? ? q8SCK!YC3 )1 C3 )1 +  8S3 )) 8C3 ) /C)+ ;)) 2+  (>) !) 8#3 ?#  3# # 03 4CCCCC OCRWI+ -3 "K(+% ( +3 CC!` " 9\ ?4\ ?4!` +ઃ#C 3)7 )?. ?K)4  (d҄)'  (')"  ($!CC3) )? ?)  (FC)  (8  3 (8C+#+ +C )K\Ґ"))88S3KQPSK3 )+K u ) PK j 8S3    k 8S+38S3 8S3 ))* %# +#`1+ K+ 1 ( 1C (P? 8C#C#C 8D#CD8/#D8C#P+)XL (#邊C )MC (#C!C ) ) )l  3 *  k3 *# )(5& ? ?1 (d#5 ?3P5 ? 3ҐB  918SC#C#C3 )) C3 ))3ǵ #C#C#C (8C'S C C3 ) +3 )+1 8S +C  p\Ґ:) Z88C#C   8C#C  #3SSC3 )3 *8C#C v#+эK  C  3 ))]8#8S#邐C+3 +3+1͠K+9P3S3KKʐ'G)#1/ 3 *3 ))Í 3 *#C3 )3 *#C (.#+3 SQ8CK##+ C #Ђ 2R 8C#JPCȅC C  R8C#+C C #߂8C#@3ZPS3 ))P)L /+/)E 5#C#CK#+3KSCe S󂐍K'G#SG (#CCC3S ) +3+Ð?DM\8#+3+1 "P8C  C3 ) C)A # (0#PJ,+]+KC53 ) #3 ?#K3 )) 3 .?#ʂ # C 4 " WIK! O (3 ) +3 )) 8C#CKS#3+3 )1ו8#JS+UPP3)  )C˅  ! 3 ?  ( 98#8#S+ KK+8CCC 2 (N3 K#3 ?)K3 )3 )I   (N #+Zʍ#߂3 * (K!$ !! !"  (!3 *!3 * (+Ϋ  ! ( k \8CS14# 19SC7 !01* K +3 !3 + ! 8K+  +3 * 'd 0 t@+ 8C3 )1 *   (_ 5+ 8- ;O P! >? #C#+  3 )) )m !-#C!`C+ 3!^ *!`CCC C#C !18SC)I)D!?)' &): () K7S/K/7  KJ# *#+̦ %+!  !K+ !#) C!  $  \\8C! P3 3ڭP ? z98SP3!2P ? #)1ԧ 1 !C1"  +#3)1 1)3 S! % +ը! K +F@Z<  f?f?TEXT BUFFER FULL DURING INSERT TEXT BUFFER FULL WHILE READING COMMAND BUFFER FULL;EXECUTING COMMAND ??PARITY,LINE # STR NOT FOUND MACRO UNDEFINED OR ERROR IN MACROOUTPUT FILE IN USE NO OUTPUT FILENO INPUT FILEFILE NAME *IN USE-ILLEGAL FILE NAME-NO SUCH FILE-FILE CAN'T BE USED FOR INPUTFILE CAN'T BE USED FOR OUTPUTLINE TOO LONGDISK FILE READ ERRORSAVE COMMAND BUFFER?(1-YES, 0-NO) ENTER FILENAME ILLEGAL ARGUMENT IN COMMAND LINE SYSTEM ERROR # : INPUT IN UOSE!-OUTPUT IN FILE -RENAMING ERROR,OUTPUT IN -FILE IS IN USE!-INPUT FILE- UNKNOWN ERROR EXECUTION ABORTED EDITING FILE OPENED BY UY OR UN - USE UE,US OR UC TO CLOSE! ILLEGAL WINDOW WIDTH PAGE MODE LINES WIDE WINDOW MODE   ! )8#)/ +3 )!% 3## +C3 )Y83) ? u 8SC) ! #8) )W 3SPCC#3$ )  +C K## KK8+P#)*# :!&)3 ? ##!P ߂ C3! P ? # b fj 9 V5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`1978.06 iD 2107.75 D 4990 C 2589 5 DM 14.60 DM 7.50 D 5680 C 2590 105.78 C 2591 311.54 C 2595 432.25 C 2596 28 C 2897 200 C 2598 919 C 2599 187.22 C 2600 134 C 2601 90.50 C 2602 153.64 C 2603 14850. CC 2604 C 2605 50 C 2606 186.36 C 2607 85 E 5817.44 W 8373.52 D 32I{.927.50 C 2608 1352.93 C 2609 50 CC 2610 CC 2611 DM 7.37 C 2612 17 D 2040 DATA.rrB 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 0 0 C 2338 6.00 0 0 C 2345 53.35 0 0 C 2347 38.00 0 0 C 2348 50.00 24 1 C 2356 264.05 0 0 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 1 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C i2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 2 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 ľDM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 0 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65u 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.?20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.0+0 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18e 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 k10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 11 C 2503 89.37 8 11 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.00B 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 0 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106.32 8 tZ14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 C 2555 T500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 2568 563. 06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 ı16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 109.92 '22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2897 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 C 2621 368 23 28 C 2622 52.30 5 20 C 2623 309.14 8 2m0 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 C 2638 1200L 21 21 C 2639 1000 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 205.74 22 22 C `2652 199.40 5 22 C 2653 17.16 5 16 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 22 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 23 24 C 2680 11?0 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 24 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 C 2699 110.25 1 25 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 365.69 C 2706 18.50 18 26 D 7130 C 2707 295c 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 16 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 3920.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 2f08.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 C 2762 1510 21 29 1980.D3  1 C 3040 704.45 2 C 3066 250 27  3 C 3069 96 4 4 C 3075 23 5 5 C 3076 100 24 6 C 3077 10.77 6 7 C 3078 22.50 4 8 EM 810 17 15 9 EM 811 604.28 15 10 EM 812 643.69 15 11 D 140 34 12 D 8347.06 34 13 D 2086.75 14 C 813 980.89 14 15 C 817 205.18 12 16 C 3081 35 4 17 C 3067 62 1 18 C 3083 34 6 19 C 3071 330 20 20 C 3085 50.99 5 21 C 816 1581.88 12 22 C 819 1581 12 23 D 1468.38 34  24 D 871.98 34 25 D 13056 34 26 D 12436.99 34 27 D 435.99 34 28 C 3068 10 18 29 C 3086 138.02 25 30 C 3088 1040 23 31 C 3090 5324 9 32 C 3091 250 8 33 42C 3092 206.59 20 34 C 3093 15.40 22 35 C 3094 120.70 4 36 C 3095 20 26 37 C 3096 775 9 38 C 3097 32.88 10 39 C 3098 74.05 22 40 C 3099 4000 32 41 C 3101 1557.44 25 42 C 3104 40 33 43 C 3W103 42.50 10 44 C 3105 504.39 25 45 C 3106 119.98 4 46 C 3107 793.50 9 47 C 3108 1537.50 27 48 C 3109 3394.50 6 49 C 3110 25 3 50 EM 818 140 27 51 EM 820 1581 12 52 EM 833 948.57 12 53 EM 834 912.14 12 54 EM 835 17 15 55 EM 836 181.73 14 56 EM 837 482.61 15 57 EM 838 2742.40 14 58 EM 840 622.50 27 59 EM 821 195.18 12 60 EM 822 1415.95 12 61 C 3113 79.95 5 62 C 3114 69.95 10  | 63 C 3115 200 20 64 C 3116 225 27 65 C 3117 4.65 10 66 C 3119 48 18 67 C 3120 1940.43 25 68 C 3121 269.78 17 69 C 3123 12.24 4 70 C 3124 93.27 15 71 C 3125 181.78 15 72 C 3126 243.77 14  73 C 3127 68.45 23 74 C 3129 128.35 5 75 C 3130 25.98 5 76 C 3132 15.90 5 77 C 3133 125.81 22 78 C 3134 20.47 22 79 C 3135 85.15 22 80 D 435.99 34 81 D 906.32 34 82 D 435.99 34 83 Ds 1628 34 84 D 3000 34 85 D 11481.06 34 86 C 3112 25 26 87 C 3118 1.30 11 88 C 3122 100 26 89 C 3128 7.86 22 90 C 3138 185.26 4 91 C 3139 19.37 10 92 C 3140 6.17 10 93 C 3141 6.46 10  94 C 3142 3.96 10 95 C 3143 3.62 10 96 C 3144 42.08 22 97 C 3145 46.50 3 98 C 3146 36.70 11 99 C 3147 27.73 10 100 C 3148 25.95 5 101 C 3149 6 33 102 C 3150 95 33 103 C 3151 78.50 33 104 Czz 3152 1000 25 105 C 3153 227.40 25 106 C 3154 100 8 107 C 3155 160.43 4 108 C 3156 835.38 25 109 C 3157 781.68 25 110 C 3198 28.30 3 111 EM 823 1000 12 112 C 3158 21.92 5 113 C 3159 12 33 114 C 31765 638.45 27 115 C 3167 15 5 116 C 3160 155.47 17 117 C 3161 34 10 118 C 3163 594 17 119 C 3166 465 4 120 C 3168 83.85 3 121 C 3169 200 24 122 D 1834.55 34 123 D 435.99 34 124 D 802.29 34 125 ? EM 824 333.14 15 126 EM 825 378.68 15 127 EM 826 2590.51 14 128 EM 827 425.95 12 129 EM 828 82.50 26 130 EM 829 138.70 14 131 EM 841 1425.95 12 132 EM 830 1425.95 12 133 EM 831 205.18 12 134 EM 832 20Q9.37 12 135 D 905 34 136 D 594 34 137 D 520 34 138 D 435.99 34 139 DM 18.88 140 C 3162 39.95 18 141 C 3164 130.46 14 142 C 3170 120.97 4 143 C 3171 18 33 144 C 3172 36.70 10 145 C 3173 947.50 25 146 C 3174 80 26 147 C 3175 204 5 148 C 3177 496.56 25 149 C 3178 136.20 25 150 C 3179 729 17 151 C 3180 170 23 152 C 3182 121.30 11 153 C 3183 25.91 22 154 C 3184 127 17 155 C 3186 10.08 23 P 156 C 3200 1020 27 157 D 13331.89 34 158 D 11943.74 34 159 D 4546.81 34 160 D 129.24 34 161 D 3229.35 34 162 D 715 34 163 C 3176 50 22 164 C 3181 950 7 165 C 3185 125 23 166 C 3187 174.75 23 167 C 3188 290.64 4 168 C 3189 1372 27 169 C 3190 3.28 5 170 C 3191 18 5 171 C 3192 5.68 23 172 C 3203 100 27 173 C 3193 37.25 23 174 C 3194 147.08 23 175 C 3195 17 23 176 C 3196 50 21 177 Q)C 3199 26 33 178 C 3201 2764.81 27 179 C 3202 948.17 25 180 C 3204 55.20 5 181 C 3205 14.25 7 182 C 3206 10 6 183 C 3207 7.58 5 184 C 3208 60.59 2 185 C 3209 250.65 25 186 EM 842 209.37 12 187 EM KB844 1527.87 12 188 EM 845 290.37 12 189 EM 846 3584 14 190 D 531.21 34 191 EM 843 1527.87 12 192 EM 847 1527.87 12 193 EM 848 209.37 12 194 EM 849 1000 12 195 EM 850 9000 12 196 C 3210 720 27 197 _C 3211 69.37 2 198 C 3212 1.81 11 199 C 3213 176.55 25 200 C 3214 10.46 25 201 C 3215 18.28 5 202 3216 64.28 5 203 C 3217 547.32 17 204 C 3218 136.48 17 205 C 3219 48.60 10 206 C 3220 170 23 207 \C 3221 10 8 208 C 3224 227.40 17 209 C 3225 36 5 210 C 3222 450 27 211 C 3223 10.64 5 212 C 3226 93.71 4 213 C 3227 74.13 2 214 C 3230 31 26 215 EM 851 4000 36 216 C 3229 2774.75 23 217 C 3228 102D<.08 4 218 C 3231 35 18 219 D 4888.40 34 220 D 3435.99 34 221 EM 852 1527.87 12 222 C 3232 125 23 223 C 3233 3654.15 23 224 C 3235 37 33  225 C 3236 42.50 33 226 C 3237 2282.26 6 227 C 3238 138.17 3f3 228 C 3239 95.64 2 229 C 3240 3.70 5 230 C 3241 4.33 5 231 C 3242 35.39 18 232 EM 854 48.65 12 233 EM 853 540 15 234 D 3148 34 235 D 296.31 34 236 D 1403.43 34 237 D 174 34 238 D 2600 30  239 C 3243 28.20 3 240 C 3244 341.40 10 241 C 3245 500 25 242 C 3246 328.44 10 243 C 3247 784.13 25 244 C 3248 125.30 11 245 C 3249 5.76 23 246 C 3250 50 24 247 C 3252 1760 27 248 C 3251 100 2 1249 C 3253 43 1 250 C 3254 290.77 4 251 C 3255 100 2 252 C 3258 42.50 33 253 C 3259 4.60 23 254 C 3260 820.84 25 255 C 3261 732.30 8 256 C 3263 50 22 257 C 3264 296.31 23 258 C 3265 168.01 25 259Ѐ D 435.99 34 260 C 3082 1350.12 25 261 C 3136 16.00 1 262 C 3216 64.28 5 263 C 3234 298.80 25 264 C 3262 88.41 14 265 C 3268 14.00 26 266 C 3276 146.75 11 267 C 3277 60 1 268 C 3278 19.01 11 269 t C 3279 72.18 5 270 CC 3064 271 CC 3070 272 CC 814 273 CC 3087 274 CC 3137 275 CC 839 276 CC 3131 277 CC 3084 278 CC 3089 279 CC 3100 280 CC 3102 281 CC 3111 0 270 CC 3064 0 271 CC 3070 0 272 CC 814 0 273 CC 3087 0 274 CC 3137 0 275 CC 839 0 276 CC 3131 0 277 CC 3084 0 278 CC 3089 0 279 CC 3100 0 280 CC 3102 0 281 CC 3111 1 87 C 3118 1.30 11 1 198 C 3212 1.81 11 3 94 C 3142 3a.96 10 3 95 C 3143 3.62 10 3 169 C 3190 3.28 5 3 229 C 3240 3.70 5 4 65 C 3117 4.65 10 4 230 C 3241 4.33 5 4 253 C 3259 4.60 23 5 171 C 3192 5.68 23 5 245 C 3249 5.76 23 6 92 C 3140 6.17 10 6 93 C 3141 6.46 10 6l 101 C 3149 6 33 7 89 C 3128 7.86 22 7 183 C 3207 7.58 5 10 6 C 3077 10.77 6 10 28 C 3068 10 18 10 155 C 3186 10.08 23 10 182 C 3206 10 6 10 200 C 3214 10.46 25 10 207 C 3221 10 8 10 211 C 3223 10.64 5 12 69 C 3123 12.24 4 12 113 C 3159 12 33 14 181 C 3205 14.25 7 14 265 C 3268 14.00 26 15 34 C 3093 15.40 22 15 76 C 3132 15.90 5 15 115 C 3167 15 5 16 261 C 3136 16.00 1 17 8 EM 810 17 15 17 54 EM 835 17 15 17 175 C 3Ҩ195 17 23 18 143 C 3171 18 33 18 170 C 3191 18 5 18 201 C 3215 18.28 5 19 91 C 3139 19.37 10 19 268 C 3278 19.01 11 20 36 C 3095 20 26 20 78 C 3134 20.47 22 21 112 C 3158 21.92 5 22 7 C 3078 22.50 4 23 4 C 307 5 23 5 25 49 C 3110 25 3 25 75 C 3130 25.98 5 25 86 C 3112 25 26 25 100 C 3148 25.95 5 25 153 C 3183 25.91 22 26 177 C 3199 26 33 27 99 C 3147 27.73 10 28 110 C 3198 28.30 3 28 239 C 3243 28.20 3 31 214 C 3230 31*Q 26 32 38 C 3097 32.88 10 34 18 C 3083 34 6 34 117 C 3161 34 10 35 16 C 3081 35 4 35 218 C 3231 35 18 35 231 C 3242 35.39 18 36 98 C 3146 36.70 11 36 144 C 3172 36.70 10 36 209 C 3225 36 5 37 173 C 3193 37.25 23 ! 37 224 C 3235 37 33 39 140 C 3162 39.95 18 40 42 C 3104 40 33 42 43 C 3103 42.50 10 42 96 C 3144 42.08 22 42 225 C 3236 42.50 33 42 252 C 3258 42.50 33 43 249 C 3253 43 1 46 97 C 3145 46.50 3 48 66 C 3119 48 18  48 205 C 3219 48.60 10 48 232 EM 854 48.65 12 50 20 C 3085 50.99 5 50 163 C 3176 50 22 50 176 C 3196 50 21 50 246 C 3250 50 24 50 256 C 3263 50 22 55 180 C 3204 55.20 5 60 184 C 3208 60.59 2 60 267 C 3277 60 1 62   17 C 3067 62 1 64 262 C 3216 64.28 5 68 73 C 3127 68.45 23 69 62 C 3114 69.95 10 69 197 C 3211 69.37 2 72 269 C 3279 72.18 5 74 39 C 3098 74.05 22 74 213 C 3227 74.13 2 78 103 C 3151 78.50 33 79 61 C 3113 79.95 5 k 80 146 C 3174 80 26 82 129 EM 828 82.50 26 83 120 C 3168 83.85 3 85  79 C 3135 85.15 22 88 264 C 3262 88.41 14 93 70 C 3124 93.27 15 93 212 C 3226 93.71 4 95 102 C 3150 95 33 95 228 C 3239 95.64 2 96 3 C 3069 96 4 100 5 C 3076 100 24 100 88 C 3122 100 26 100 106 C 3154 100 8 100 172 C 3203 100 27 100 248 C 3251 100 2 100 251 C 3255 100 2 102 217 C 3228 102.08 4 119 45 C 3106 119.98 4 120 35 C 3094 120.70 4 120 142 C 3170ѭ 120.97 4 121 152 C 3182 121.30 11 125 77 C 3133 125.81 22 125 165 C 3185 125 23 125 222 C 3232 125 23 125 244 C 3248 125.30 11 127 154 C 3184 127 17 128 74 C 3129 128.35 5 130 141 C 3164 130.46 14 136 149 C 3178 136.20 25 136 204 C 3218 136.48 17 138 29 C 3086 138.02 25 138 130 EM 829 138.70 14 138 227 C 3238 138.17 33 140 50 EM 818 140 27 146 266 C 3276 146.75 11 147 174 C 3194 147.08 23 155 116 C 3160 155.47 17 160 107 C 3155 160b.43 4 168 258 C 3265 168.01 25 170 151 C 3180 170 23 170 206 C 3220 170 23 174 166 C 3187 174.75 23 176 199 C 3213 176.55 25 181 55 EM 836 181.73 14 181 71 C 3125 181.78 15 185 90 C 3138 185.26 4 195 59 EM 821 195.18 12 200 63 C 3115 200 20 200 121 C 3169 200 24 204 147 C 3175 204 5 205 15 C 817 205.18 12 205 133 EM 831 205.18 12 206 33 C 3092 206.59 20 209 134 EM 832 209.37 12 209 186 EM 842 209.37 12 209 193 EM 848 209.37 12 2T25 64 C 3116 225 27 227 105 C 3153 227.40 25 227 208 C 3224 227.40 17 243 72 C 3126 243.77 14 250 2 C 3066 250 27 250 32 C 3091 250 8 250 185 C 3209 250.65 25 269 68 C 3121 269.78 17 290 167 C 3188 290.64 4 290 V188 EM 845 290.37 12 290 250 C 3254 290.77 4 296 257 C 3264 296.31 23 298 263 C 3234 298.80 25 328 242 C 3246 328.44 10 330 19 C 3071 330 20 333 125 EM 824 333.14 15 341 240 C 3244 341.40 10 378 126 EM 825 378.68 15 425  128 EM 827 425.95 12 450 210 C 3222 450 27 465 119 C 3166 465 4 482 56 EM 837 482.61 15 496 148 C 3177 496.56 25 500 241 C 3245 500 25 504 44 C 3105 504.39 25 540 233 EM 853 540 15 547 203 C 3217 547.32 17 594 118 C 3163 594 17 604 9 EM 811 604.28 15 622 58 EM 840 622.50 27 638 114 C 3165 638.45 27 643 10 EM 812 643.69 15 704 1 C 3040 704.45 720 196 C 3210 720 27 729 150 C 3179 729 17 732 255 C 3261 732.30 8 775 37 C 3096 775| 9 781 109 C 3157 781.68 25 784 243 C 3247 784.13 25 793 46 C 3107 793.50 9 820 254 C 3260 820.84 25 835 108 C 3156 835.38 25 912 53 EM 834 912.14 12 947 145 C 3173 947.50 25 948 52 EM 833 948.57 12 948 179 C 3202 948,j.17 25 950 164 C 3181 950 7 980 14 C 813 980.89 14 1000 104 C 3152 1000 25 1000 111 EM 823 1000 12 1000 194 EM 849 1000 12 1020 156 C 3200 1020 27 1040 30 C 3088 1040 23 1350 260 C 3082 1350.12 25 1372 168 C 3189 1372  27 1415  60 EM 822 1415.95 12 1425 131 EM 841 1425.95 12 1425 132 EM 830 1425.95 12 1527 187 EM 844 1527.87 12 1527 191 EM 843 1527.87 12 1527 192 EM 847 1527.87 12 1527 221 EM 852 1527.87 12 1537 47 C 3108 1537.50 27 1557֔ 41 C 3101 1557.44 25 1581 21 C 816 1581.88 12 1581 22 C 819 1581 12 1581 51 EM 820 1581 12 1760 247 C 3252 1760 27 1940 67 C 3120 1940.43 25 2282 226 C 3237 2282.26 6 2590 127 EM 826 2590.51 14 2742 57 EM 838 2742.40 14 2764 178 C 3201 2764.81 27 2774 216 C 3229 2774.75 23 3394 48 C 3109 3394.50 6 3584 189 EM 846 3584 14 3654 223 C 3233 3654.15 23 4000 40 C 3099 4000 32 4000 215 EM 851 4000 36 5324 31 C 3090 5324 9 9000 195 EM 850 9000 12 IO.W .ENT ?OPEN,?ENDL,?ENDF,?RDLI,?WRLI,?CREA .NREL ; PROCEDURE OPEN (VAR FILENUMBER : INTEGER ; FILENUMBER : ALPHA OR ; INTEGER ; VAR ERRORNUMBER : INTEGER);EXTERNAL; ; PROCEDURE IS ENTERED WITH : ; C (AC3) ADDRESS OF BYTE ADDRESSOF ERROR NUMMBER ; C (AC3m-1) ADDRESS OF BYTE ADDRESS OF FILE NAME ; C (AC3-2) ADDRESS OF BYTE ADDRESS OF FILE NUMBER ; CALLER SUPPLIES FILE NAME ; OPEN RETURNS FILE NUMBER AND ERROR NUMBER .TITL OPEN .EXTN XPRET ?CREA: STA 3,USP LDA 0,-1,3 ;GET BYTE POINTER TO FILE NAME .SR YSTM .DELETE ;DELETE IT JMP .+1 .SYSTM .CRAND ;CREATE RANDOM FILE JMP ERTN ; OPEN FILE HERE ?OPEN: STA 3,USP LDA 0,-1,3 ;BYTE ADDRESS OF FILE NAME .SYSTM .GCHN ;GET FREE CHANNEL NO IN AC2  JMP ERTN SUBO 1,1 ;CLEAR AC0 .SYSTM .OPEN C_PU ;OPEN FILE UP JMP ERTN ; CHANNEL NO TO PASCAL LDA 3,-2,3 ;BYTE ADDRESS OF VAR FILENUMBER MOVZR 3,3 ;WORD ADDRESS NOW STA 2,0,3 ;CHANNEL NO BACK LDA 3,USP ;RESTORE AC3 LDA 2,BUFAD ADD 0,2 SUBO 1,1 STA 1,0,2 ADC 0,0 ;GENERATE -1 JMP SAVwIT ERTN: MOV 2,0 SAVIT: LDA 2,0,3 ;GET ADDRESS OF ERROR NO ;ERROR = -1 IF NO ERROR ELSE = SYSTMERR MOVZR 2,2 ;MAKE IT A WORD ADDRESS STA 0,0,2 ;ERROR TO PASCAL SUBO 1,1 ;GEN 0 TO WARN PASCAL ;PROCEDURE IS RETURNING XPRET ;BACK TO PASCAL Y ; BUFFER STATUS TABLE ; FOR CHANNEL N SEE ADDRESS BUFAD+N ; BIT 0 SET = END OF LINE ; BIT 15 SET = END OF FILE BUFAD: .+1 .BLK 30 ; FUNCTION ENDL (CHANNEL NUMBER : INTEGER );BOOLEAN;EXTERNAL; ?ENDL: STA 3,USP MOV 0,2 ;SAVE STACK PROINTER FOR FUNCTION VALUE IN AC2 LDA 0,0,3 ;GET CHANNEL NO INTO AC0 LDA 3,BUFAD ;GET BUFFER ADDRESS IN AC3 ADD 0,3 ;CHANNEL NO + BUFFER ADDRESS IN AC2 LDA 0,0,3 ;GET CHANNEL STATUS SUBZL 1,1 ;GENERATE TRUE MOVZL# 0,0,SNC ;SKIP IF BIT 0 = 1 SUB#O 1,1 ;GENERATE FALSE STA 1,0,2 ;TRUE OR FALSE IN AC1 BACK TO PASCAL SUBZL 1,1 ;TELL XPRET 1 ARG. TO BE COPIED LDA 3,USP XPRET ; FUNCTION ENDF(CHANNEL NO. : INTEGER );BOOLEAN;EXTERNAL; ?ENDF: STA 3,USP MOV 0,2 ;SAVE STACK POINTER IN AC2 LDAZ~ 0,0,3 ;GET CHANNEL NO INTO AC0 LDA 3,BUFAD ;GET BUFFER ADDRESS INTO AC3 ADD 0,3 ;CHANNEL NO + BUFFER ADDRESS IN AC2 LDA 0,0,3 ;GET CHANNEL STATUS SUBZL 1,1 ;GENERATE TRUE ( +1) MOVZR# 0,0,SNC ;SKIP IF BIT 0 = 1 SUBO 1,1 ;GENERATE FALSE STA 1m,0,2 ;TRUE OR FALSE IN AC1 BACK TO PASCAL SUBZL 1,1 ;TELL XPRET 1 ARG. TO BE COPIED LDA 3,USP XPRET ; PROCEDURE RDLI( CHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : ; INTEGER ; VAR ERROR : INTEGER );EXTERNAL; ; AC3 = ADDRESS OF BYTE ADDRESS OF ERROR ; AC3-1 = ADDRESS OF BYTE ADDRESS OF NBYTESREAD ; AC3-2 = ADDRESS OF BYTE ADDRESS OF BUFFER ; AC3-3 = ADDRESS OF CHANNEL NO ?RDLI: STA 3,USP  LDA 2,-3,3 ;GET CHANNEL NO INTO AC2 LDA 0,-2,3 ;GET ADDRESS OF BUFFER .SYSTM .RDL CPU JMP E.+2 ADC 2,2 ;GENERATE -1 FOR OK RETURN TO PASCAL MOV 2,0 ;ERROR NUMBER IN AC0 LDA 2,0,3 ;BYTE ADDRESS OF VAR ERROR MOVZR 2,2 ;MAKE IT A WORD ADDRESS STA 0,0,2 ;ERROR TO PASCAL ; ERROR NO = -1 FOR NORMAL RETURN ; = 0 OR MORE IFF AN ERROR SEE SDuYSTM ERROR AC2 'S ; CHECK IF AC2 = EREOF (END OF FILE) ; SENT NO OF BYTES READ INCL. TERMINATOR TO PASCAL LDA 3,-1,3 ;GET ADDRESS OF BYTE ADDRESSOF VAR NBYTESREAD MOVZR 3,3 STA 1,0,3 ;BACK TO PASCAL LDA 2,C6 SUBO 1,1 ;GENERATE 0 FOR NOT EOF S:6UBZ 2,0,SNR ;SKIP IF NOT EOFILE SUBZL 1,1 ;GENERATE 1 LDA 2,BUFAD LDA 3,USP LDA 0,-3,3 ;GET CH NO AGAIN ADD 0,2 ;BUFAD + CH NO IN AC2 STA 1,0,2 SUBO 1,1 ;WARN XPRET PROCEDURE RETURNING XPRET C6: 6 ;ERROR CODE 6 ;PROCEDURE WRLI(CHANNEL : INTEz0GER ;BUFFER : ALPHA ; ; VAR NBYTESWROTE : INTEGER ; VAR ERROR : INTEGER );EXTERNAL; ; AC3 = ADDRESS OF BYTE ADDRESS OF ERROR ; AC3-1 = ADDRESS OF BYTE ADDRESS OF NBYTESREAD ; AC3-2 = ADDRESS OF BYTE ADDRESS OF BUFFER ; AC3-3 = ADDRESS OF CHANNEL NO ?JWRLI: STA 3,USP LDA 2,-3,3 ;GET CHANNEL NO INTO AC2 LDA 0,-2,3 ;GET ADDRESS OF BUFFER .SYSTM .WRL CPU JMP .+2 ADC 2,2 ;GENERATE -1 FOR OK RETURN TO PASCAL MOV 2,0 ;ERROR NUMBER IN AC0 LDA 2,0,3 ;BYTE ADDRESS OF VAR ERROR MOVZR 2,2 ;MAKE IT A WORD ADDRESS STA 0,0,2 ;ERROR TO PASCAL ; ERROR NO = -1 FOR NORMAL RETURN ; = 0 OR MORE IFF AN ERROR SEE SYSTM ERROR AC2 'S ; CHECK IF AC2 = EREOF (END OF FILE) LDA 2,C6 SUBO 1,1 ;GENERATE 0 FOR NOT EOF SUBZ 2,0,SNR ;SKIP IF NOT EOFILE SUBZݱL 1,1 ;GENERATE 1 LDA 2,BUFAD LDA 3,USP LDA 0,-3,3 ;GET CH NO AGAIN ADD 0,2 ;BUFAD + CH NO IN AC2 STA 1,0,2 SUBO 1,1 ;WARN XPRET PROCEDURE RETURNING XPRET .END T15./1bPROGRAM T15; VAR I : 1..10; BEGIN I := 1 END. 1978.07fC 2613 33 C 2614 9.22 C 2615 115 C 2616 1875.10 C 2617 134 C 2618 46.45 C 2619 790.75 C 2620 33 C 2621 368 C 2622 52.30 E 3104.27 C 2623 309.14 C 2624 9 C 2625 1452.77 D 8742.50 C 2626 50 C 2627 39.50 CC 2628 C 2629 56 C 2630 164 C 2631 400.88 CC 2632 C 26c33 8.75 C 2634 7.50 C 2635 48 C 2636 12.55 C 2637 139.70 D 538 C 2639 1000 C 2640 115 C 2641 30 E 3991.35 W 2861.14 C 2642 101.39 D 3000 C 2643 140 FDUMP.SVDUMP.SVTEST6. 7PROGRAM TEST(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTRxW: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; u R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; VAR INSTR : STRING[132]; DESTINATION,SOURCE : TEXT; LINE : LINESTRING; {$I kPCHAR.PI} {$I READLINE.PI} {$I WRITELINE.PI} BEGIN WRITE(' INPUT FILE NAME? '); READLN(INSTR); FILETITLE(SOURCE,INSTR); RESET(SOURCE); WRITE(' OUTPUT FILE NAME? ');READLN(INSTR); FILETITLE(DESTINATION,INSTR); RESET(DESTINATION); REPEAT BEGIN VF READLINE(SOURCE,LINE); WRITELINE(DESTINATION,LINE); END UNTIL EOF(SOURCE) END. FOBAR.<@B 4196.05 C 2332 2000 C 2313 1804.52 C 2337 43.50 C 2338 6.00 C 2345 53.35 C 2347 38.00 C 2348 50.00 C 2356 264.05 C 2354 50.00 D 23546.64 DM 250.00 C 2355 280.60 CC 2357 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 23662 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 C 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 D 13878.10 DM 1865.00 C 2394 85.54 C 2395 1000. C 2396 405.38 C 2397 64. D 3885. DM 250.00 C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 C 2402 80. D 3222.52 C 2403 1562.80 C 2404 1887.00 C 2405 28.26 C 2406 52.68 C 2407 53.35 C 2408 27.00 C 2409 301.50 C 2410 32.23 C 2411 110. C 2412 1500 C 2413 15 C 2414 286.41 C 2415 12.68 C 2416 93.20 C 2417 7.75 C 2418 66.34 C 2419 1197.81 C 2420 50 C 2421 261.65 C 2422 10 C 2423 238[6 C 2424 28.15 C 2425 8.95 D 3727.5 C 2426 16.05 C 2427 450.59 C 2428 621.73 C 2429 4000. C 2430 6.75 C 2431 110 C 2432 991 C 2433 41.5 OPEN.BU"PROCEDURE OPEN(RDOSCHANNEL : INTEGER;FILENAME : BIGSTR ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTOPEN =6207; {.OPEN} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WRITELN(' ',FILEPTR^); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTOPEN; R0.SPTR := FILEPTR; R0.INT := R0.INT+1; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN OPEN = ',R2.INT); ERR := ERROR; ERRNUM ,I:= R2.INT; END; RELEASE(HEAP); END; {OPEN} GETREAL.BU UFUNCTION GETREAL( STR : BIGSTR;VAR I : INTEGER) : REAL; {STR : STRING[99] = INPUT LINE I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} LABEL 1,2; TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; SIGNOF = (PLUS,MINUS); VAR LEN : INTEGER; FGETREAL, PLACE :REAL; PART : WHOLORFRACT ; SIGN : SIGNOF; BEGIN SIGN := PLUS; PART := WHOLE;{assume while part first} FGETREAL := 0; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} IF NOT (STR[I] IN ['0'..'9','-','.']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN CASE PART OF WHOLE : BE1GIN FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); { REALPRINT(FGETREAL);} { WRITELN(' WHOLE');} END; FRACTIONAL : BEGIN FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; PLACE := PLACE*10; { REALPRINT(FGETREAL);} { WRITELN(' FP');} END END; {case} I := I+1; GOTO 2 END ELSE IF STR[I] = '.' THEN BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; { WRITE(' FRACTION.');} GOTO 2; END ELSE IF STR[I] = ',' THEN BEGIN I := I+1;GOTO 2 END; CASE SI`PGN OF PLUS : GETREAL := FGETREAL; MINUS : GETREAL := -FGETREAL; END;{case} END;{getreal} CBOOK.02s PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK,ERRORENTRY); VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,Y#I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; OUTFILE,INFILE : TEXT; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} PROCEDURE ERROR; BEGIN WRITELN(OUTFILE,' ERROR',STR); END;{erroŸr} PROCEDURE C1HECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(OUTFILE,' CK ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(OUTFILE,' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(OUTFILE,NEWBALANCEE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(OUTFILE,' DP ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT)4; REALPRINT(OUTFILE,NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(OUTFILE,' CM ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); 0 REALPRINT(OUTFILE,NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(OUTFILE,' DM ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OU%TFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(OUTFILE,' CC ',CHECKNUMBER : 10); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; CHECKNUMBMER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' EM ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' WH ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN ENTRY := ERRORENTRY; CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN lENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(LINE[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(LINE[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE INITIALIZE; BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; WRITELN(OUTFILE,' KEY TO TRANSACTION TYPES'); WRITELN(OUTFILE,' C CHECK CC CANCELLED CHECK'); WRITELN(OUTFILE,' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN(OUTFILE,' DP DEPOSIT BL FORCED BALANCE'); WRITELN#(OUTFILE,' EM EMPLOYEE CK WH  WITHOLDING CHECK'); WRITELN(OUTFILE); WRITELN(OUTFILE,' TYPE CHECK DEBIT CREDIT BALANCE'); END;{initialize} BEGIN INITIALIZE; WRITELN(OUTFILE); WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); GETENTRYTYPELINE (STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; ERRORENTRY : ERROR; END;{case} WRITELN(OUTFILE); END; WRITELN(OUTFILE);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTALS '); REALPRINT(OUTFILE,TOTALDEBITS);REALPRINT(OUTFILE,TOTALCREDITS); REALPRINT(OUTFILE,NEWBALANCE); WRITELN(OUTFkILE); WRITE(OUTFILE,' TOTAL CHECKS ');REALPRINT(OUTFILE,TOTALCHECKS);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL DEPOSITS');REALPRINT(OUTFILE,TOTALDEPOSITS);END. PL.CMqqv_CHATR PL.PA 0 CHATR PL.PX 0 DELETE PL.PA XFER PL PL.PA/R CHATR PL.PA *WP PASINTERP PASCALO/L/S/V/A PL CHATR PL.PX *WP 1980.D4 0 1 2 5 18 24 44 63 260 273 274 275 276 277 SEARCH KEY 0 1 C 3040 704.45 2 CC 3064 5 CC 3070 18 CC 814 24 CC 3087 44 CC 3137 63 CC 839 260 CC 313?1 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 AMOUNT = 7.044E+02 1 20 255 268 279 SEARCH KEY 1 20 C 3067 62 1 255 C 3253 43 1 268 C 3136 16.00 1 279 C 3277 60 1 AMOUNT = A 1.810E+02 2 190 203 219 234 254 257 SEARCH KEY 2 190 C 3208 60.59 2 203 C 3211 69.37 2 219 C 3227 74.13 2 234 C 3239 95.64 2 254 C 3251 100 2 257 C 3255 100 2 AMOUNT = 4.997E+02 3 54 1A03 116 126 245 SEARCH KEY 3 54 C 3110 25 3 103 C 3145 46.50 3 116 C 3198 28.30 3 126 C 3168 83.85 3 245 C 3243 28.20 3 AMOUNT = 2.118E+02 4  4 9 19 39 50 75 96 113 125 14-Q8 173 218 223 256 SEARCH KEY 4 4 C 3069 96 4 9 C 3078 22.50 4 19 C 3081 35 4 39 C 3094 120.70 4 50 C 3106 119.98 4 75 C 3123 12.24 4 96 C 3138 185.26 4 113 C 3155 160.43 4 125 C 3166 465 4  148 C 3170 120.97 4 173 C 3188 290.64 4 218 C 3226 93.71 4 223 C 3228 102.08 4 256 C 3254 290.77 4 AMOUNT = 2.115E+03 5 6 23 67  80 81 82 106 118 121 153 175 176 186 189 207a 215 217 235 236 269 281 SEARCH KEY 5 6 C 3075 23 5 23 C 3085 50.99 5 67 C 3113 79.95 5 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 106 C 3148 25.95 5 118 C 3158 21.92 5 lG 121 C 3167 15 5 153 C 3175 204 5 175 C 3190 3.28 5 176 C 3191 18 5 186 C 3204 55.20 5 189 C 3207 7.58 5 207 C 3215 18.28 5 215 C 3225 36 5 217 C 3223 10.64 5 235 C 3240 3.70 5 236 C 3241 4.33 5 269 C 3216 64.28 5 281 C 3279 72.18 5 AMOUNT = 8.845E+02 6 8 21 53 188 232 SEARCH KEY 6 8 C 3077 10.77 6 21 C 3083 34 6 53 C 3109 3394.50 6 188 C 3206 10 6 232 C 3237 2282.26 6 AMOUNT = 5.731E+03 R 7 170 187 SEARCH KEY 7 170 C 3181 950 7 187 C 3205 14.25 7 AMOUNT = 9.642E+02 8 36 112 213 262 SEARCH KEY 8 36 C 3091 250 8 112 C 3154 100 8 213 C 3221 10 8 262 C 3261 732.30 8 AMOUNT =l 1.092E+03 9 35 41 51 SEARCH KEY 9 35 C 3090 5324 9 41 C 3096 775 9 51 C 3107 793.50 9 AMOUNT = 6.892E+03 10 42 48 68 71 97 98 99 100 101 105 123 150 211 246  248 SEARCH KEY 10 42 C 3097 32.88 10 48 C 3103 42.50 10 68 C 3114 69.95 10 71 C 3117 4.65 10 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 105 C 314E7 27.73 10 123 C 3161 34 10 150 C 3172 36.70 10 211 C 3219 48.60 10 246 C 3244 341.40 10 248 C 3246 328.44 10 AMOUNT = 1.006E+03 11 93 104 158 204 250 278 280 SEARCH KEY 11 93 C 3118 1.30 11 10r`4 C 3146 36.70 11 158 C 3182 121.30 11 204 C 3212 1.81 11 250 C 3248 125.30 11 278 C 3276 146.75 11 280 C 3278 19.01 11 AMOUNT = 4.521E+02 12 17 25 26 56 57 58 65 66 117 134 137 138 139 140 192 193 194 197 198 199 200 201 227 238 SEARCH KEY 12 17 C 817 205.18 12 25 C 816 1581.88 12 26 C 819 1581 12 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12: 65 EM 821 195.18 12 66 EM 822 1415.95 12 117 EM 823 1000 12 134 EM 827 425.95 12 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 192 EM 842 209.37 12 193 EM 844 1527%.87 12 194 EM 845 290.37 12 197 EM 843 1527.87 12 198 EM 847 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 227 EM 852 1527.87 12 238 EM 854 48.65 12 AMOUNT = 2.998E+04 14 16 6=0 62 78 133 136 147 195 271 SEARCH KEY 14 16 C 813 980.89 14 60 EM 836 181.73 14 62 EM 838 2742.40 14 78 C 3126 243.77 14 133 EM 826 2590.51 14 136 EM 829 138.70 14 147 C 3164 130.46 14 P 195 EM 846 3584 14 271 C 3262 88.41 14 AMOUNT = 1.068E+04 15 10 11 12 59 61 76 77 131 132 239 SEARCH KEY 15 10 EM 810 17 15 11 EM 811 604.28 15 12 EM 812 643.69 15 59 EM 8 35 17 15 61 EM 837 482.61 15 76 C 3124 93.27 15 77 C 3125 181.78 15 131 EM 824 333.14 15 132 EM 825 378.68 15 239 EM 853 540 15 AMOUNT = 3.291E+03 17 74 122 124 156 160 209 210 214 SEARCH KEY 17 74 C 3121 269.78 17 122 C 3160 155.47 17 124 C 3163 594 17 156 C 3179 729 17 160 C 3184 127 17 209 C 3217 547.32 17 210 C 3218 136.48 17 214 C 3224 227.40 17 AMOUNT = 2.786E+03 18 32 72 146 22SC4 237 SEARCH KEY 18 32 C 3068 10 18 72 C 3119 48 18 146 C 3162 39.95 18 224 C 3231 35 18 237 C 3242 35.39 18 AMOUNT = 1.683E+02 20 22 37 69 SEARCH KEY 20 22 C 3071 330 20 37 C 3092 206.59 20 e 69 C 3115 200 20 AMOUNT = 7.365E+02 21 182 SEARCH KEY 21 182 C 3196 50 21 AMOUNT = 5.000E+01 22 38 43 83 84 85 95 102 159 169 263 SEARCH KEY 22 38 C 3093 15.40 22 43 CB 3098 74.05 22 83 C 3133 125.81 22 84 C 3134 20.47 22  85 C 3135 85.15 22 95 C 3128 7.86 22 102 C 3144 42.08 22 159 C 3183 25.91 22 169 C 3176 50 22 263 C 3263 50 22 AMOUNT = 4.967E+02 23 34 79 157 161 171 172 177 179 180 181 212 222 228 229 251 259 264 SEARCH KEY 23 34 C 3088 1040 23 79 C 3127 68.45 23 157 C 3180 170 23 161 C 3186 10.08 23 171 C 3185 125 23 172 uR C 3187 174.75 23 177 C 3192 5.68 23 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 17 23 212 C 3220 170 23 222 C 3229 2774.75 23 228 C 3232 125 23 229 C 3233 3654.15 23 251 C 3249 5.76 23 259 C 3259 4 =.60 23 264 C 3264 296.31 23 AMOUNT = 8.825E+03 24 7 127 252 SEARCH KEY 24 7 C 3076 100 24 127 C 3169 200 24 252 C 3250 50 24 AMOUNT = 3.500E+02 25 33 46 49 73 110 111 114 115 c 151 154 155 185 191 205 206 247 249 261 265 267 270 SEARCH KEY 25 33 C 3086 138.02 25 46 C 3101 1557.44 25 49 C 3105 504.39 25 73 C 3120 1940.43 25 110 C 3152 1000 25 111 C 3153x 227.40 25 114 C 3156 835.38 25 115 C 3157 781.68 25 151 C 3173 947.50 25 154 C 3177 496.56 25 155 C 3178 136.20 25 185 C 3202 948.17 25 191 C 3209 250.65 25 205 C 3213 176.55 25 206 C 3214 10.46 25 247 C 3245 500 25 249 C 3247 784.13 25 261 C 3260 820.84 25 265 C 3265 168.01 25 267 C 3082 1350.12 25 270 C 3234 298.80 25 AMOUNT = 1.387E+04 26 40 92 94 135 152 220 272 SEARCH KEY 26 40 C 3095 20 26 y 92 C 3112 25 26 94 C 3122 100 26 135 EM 828 82.50 26 152 C 3174 80 26 220 C 3230 31 26 272 C 3268 14.00 26 AMOUNT = 3.525E+02 27 3 52 55 64 70 120 162 174 178 184 202 216  253 SEARCH KEY 27 3 C 3066 250 27 52 C 3108 1537.50 27 55 EM 818 140 27 64 EM 840 622.50 27 70 C 3116 225 27 120 C 3165 638.45 27 162 C 3200 1020 27 174 C 3189 1372 27 178 C 3203 100 27 184 C 3201 2764.81 27 202 C 3210 720 27 216 C 3222 450 27 253 C 3252 1760 27 AMOUNT = 1.160E+04 32 45 SEARCH KEY 32 45 C 3099 4000 32 AMOUNT = 4.000E+03 33 47 107 108 109 119 149 183 230 2=31 233 258 SEARCH KEY 33 47 C 3104 40 33 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 119 C 3159 12 33 149 C 3171 18 33 183 C 3199 26 33 230 C 3235 37 33 231 C 3236 42.50 33 233 C 3238 138.17 33 258 C 3258 42.50 33 AMOUNT = 5.356E+02 36 221 SEARCH KEY 36 221 EM 851 4000 36 AMOUNT = 4.000E+03 284. R.PX%TEST  Copyright (C) 1980 Rational Data Systems7  4 d@L̃ȡ ە0 ە.A Ʉ&á ە, ە0֦ STRING= ^2E ƀƀƀOUTPUTAINPUTƀ֦ ENTER A REAL NUMBEŔʁʁ֥֥ ƀPpG. 1978.087AC 2644 35 C 2645 671.81 C 2646 1850.16 C 2647 70 C 2648 14.20 C 2649 500 C 2650 13.05 C 2651 205.74 C 2652 199.40 C 2653 17.16 C 2654 19.94 C 2655 34.12 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 C 2657 116.89 D 1545 E 3874.55 C 2659 368 C 2660 37 C 2661 2,5 C 2662 15 C 2663 500 C 2664 25.35 D 6212.50 CC 2665 C 2666 50 C 2667 96.30 C 2668 495.42 C 2669 145 BC 2670 8.70 C 2671 16.80 C 2672 29 C 2673 11.48 W 2210 W 483 C 2674 1397.48 C 2675 200 C 2676 500 CC 2677 C 2678 49.56 C 2679 10000 C 2680 110 C 2681 1006x,7 C 2682 37.64 E 4018.89 W 2792.12 W 800.03 D 4762.50 TEST.CMl9CHATR TEST.PA 0 CHATR TEST.PX 0 DELETE/V TEST.PA XFER TEST TEST.PA/R PASINTERP PASCALO/S/V/A/L TEST CHATR TEST.PA *WP CHATR TEST.PX *WP TEST.POll "nTEST Copyright (C) 1980 Rational Data Systems    ۢ*"ٞ# ۢ ٞ#!:٪ƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀ?ʀʀʀʀʀ ؚʀ#ʀ/֦ ERROR IN OPEN = Jʀʀ ʀʀʀƀ!M ݢ?ݢ ؚ۞#)֦ ERROR IN CLOSE = J !`تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ1֦ ERROR IN DELETE = Jʀo ʀʀʀƀ!تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ0֦ ERROR IN CRAND = Jʀʀ ʀʀʀƀ!٪ƀ ƀƀǀ\ʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ4֦ ERROR IN WRITELINE = Jʀʀ ʀʀʀƀ! ǀ ? ߚ    ؚݞ# /֦ ERROR IN READLINE = "J   ߪ ! ǀ ? ߚ    ؚݞ# 5֦ ERROR IN READSEQUENTIAL = J   ߪ ! ٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ:֦ ERROR IN WRITESEQUENTIAL = Jʀʀ ʀʀʀƀ! ƁJƁƁJOUTPUTƀƁƀȦINPUTƀƁJ֥DFFOBAR֥Fƥ֧DFƥ֧DTHIS IS A TESTƥ ֦ HIT CTLAJʁ֥ƁJƀ~$x:d, 1978.DO0 1 B 4196.05 2 C 2332 2000 21 1 3 C 2313 1804.52 22 1 4 C 2337 43.50 0 0 5 C 2338 6.00 0 0 6 C 2345 53.35 0 0 7 C 2347 38.00 0 0 8 C 2348 50.00 24 1 9  C 2356 264.05 0 0 10 C 2354 50.00 20 1 11 D 23546.64 12 DM 250.00 13 C 2355 280.60 22 1 14 CC 2357 15 C 2358 10 3 1 16 C 2359 42.80 10 1 17 C 2360 119.40 19 1 18 C 2361 50 18 1 19 CC 2362 20 CC 2363 21 CC 2r364 22 CC 2365 23 C 2366 50 18 1 24 CC 2367 25 CC 2368 26 CC 2369 27 CC 2370 28 C 2371 50 18 1 29 CC 2372 30 CC 2373 31 C 2374 547.42 17 1  32 C 2375 86 5 1 33 C 2376 500 21 1 34 C 2377 1500 21 3 35 C 2378 93.20 3 2 36 C 2379 1562.80 2 2 37 C 2380 3.60 5 2 38 C 2381 136.16 5 2 39 C 2382 114.98 18 2 40 DM 250 41 C 2383 139.24 4 2 42 C 2384 155 5 2 43 C 2385Y 60.30 5 2 44 C 2386 1151 17 2 45 C 2387 12 18 2 46 C 2388 66.80 22 2 47 C 2389 33.30 22 2 48 C 2390 22.80 22 3 49 C 2391 12 18 2 50 C 2392 39 22 2  51 C 2393 64.65 25 2 52 C 2394 85.54 22 2  53 D 13878.10 54 DM 1865.00 55 C 2395 1000. 21 3 56 C 2396 405.38 4 3 57 C 2397 64. 8 3 58 D 3885. 59 DM 250.00 60 C 2398 14.85 18 3 61 DM 1865. 62 C 2399 7.95 18 3 63 C 2400 8.52 18" 3 64 C 2401 29.39 22 3 65 C 2402 80. 23 3 66 D 3222.52 67 C 2403 1562.80 2 5 68 C 2404 1887.00 17 5 69 C 2405 28.26 21 5 70 C 2406 52.68 5 5 71 C 2407 53.35 5 5 72 C 2408 27.00 5 5 73 CH 2409 301.50 21 5 74 C 2410 32.23 5 5 75 C 2411 110. 16 5 76 C 2412 1500 21 10 77 C 2413 15 18 3 78 C 2414 286.41 5 3 79 C 2415 12.68 5 3 80 C 2416 93.20 3 5 81 C 2417 7.75 11 3 82 C 2418 66.34 4 3 83 C 2419 1197.81 5 5 84 C 2420 50 24 3 85 C 2421 261.65 23 5 86 C 2422 10 16 5 87 C 2423 2386 17 5 88 C 2424 28.15 23 5 89 C 2425 8.95 18 5 90 D 3727.5 91 C 2426 16.05 5 7 92 C 242)7 450.59 17 5 93 C 2428 621.73 8 6 94 C 2429 4000. 21 6 95 C 2430 6.75 18 6 96 C 2431 110 5 6 97 C 2432 991 16 6 98 C 2433 41.5 20 6 99 C 2434 52 5 6 100 C 2435 675 8 6 101 D 10674.20 102 D 8655.39 103 D 3056.00 104 C 2436 40 20 6 105 CC 2437 106 C 2438 3.47 18 6 107 C 2439 11 18 6 108 C 2440 339.45 22 6 109  C 2441 28.76 18 6 110 C 2442 589.40 4 6 111 C 2443 19.89 22 6 112 C 2444 16b. 18 6 113 CC 2445 114 C 2446 93.20 3 6 115 C 2447 410.72 25 6 116 C 2448 695.00 7 6 117 C 2449 50. 27 6 118 C 2450 13.00 17 6 119 C 2451 55.00 22 7 120 C 2452 74.42 22 7 121 C 2453 56.30 5 7 122 `C 2454 7.85 5 7 123 C 2455 223.17 5 7 124 C 2456 368.00 23 7 125 C 2457 1562.80 2 7 126 D 5534.20 127 C 2458 450.59 17 8 128 C 2459 75.65 11 8 129 C 2460 923. 5 8 130 CC 2461 131 CC 2462 132 C 246x3 25 18 8 133 C 2464 26 22 8 134 C 2465 50.50 18 8 135 C 2466 39 5 8 136 C 2467 4.80 22 8 137 CC 2468 138 C 2469 70 18 8 139 C 2470 500 21 8 140 C 2471 12 22 8 141 D 6157.00 142 C 2472 113.56 4 8  143 C 2473 9.95 18 8 144 CC 2474 145 C 2475 368 23 8 146 C 2476 616 9 8 147 C 2477 208.65 5 8 148 C 2478 380 7 9 149 C 2479 129 5 9 150 C 2480 3.95 18 9 151 C 2481 7.06 1 9 152 C 2482 30 18 9 153 C 2483 15 18 9 154 D 5631.50 155 CC 2484 156 C 2485 2000 21 9 157 C 2486 7 1 9 158 C 2487 34.03 22 9 159 C 2488 474.35 5 9 160 C 2489 179.46 5 9 161 C 2490 145 5 9 162 D 5395 163 C 2491 12.30 18 9 164 C 2492 7 1 11 165 C 2493 2 22 9 166 C 2494 3.50 18 9 167 C 2495 46.49 4 10 168 CC 2496 169 C 2497 117.03 3 10 170 CC 2498 171 C 2499 1773.70 2 11 172 C 2500 94.90 22 11 173 C 2501 50 20 11 174 C 2502 21.85 11 10 175 C 2503 89.37 8 10 176 D 10811.70 177 C 2504 547.42 17 11 178 C 2505 1203.31 22 11 179 C 2506 368 23 11 180 C 2507 616 9 11 181 C 2508 10.80 18 11 182 C 2509 23.30 5 11  183 C 2510 27.60 5 11 184 C 2511 126.00 5 11 185 C 2512 168.26 5 11 186 C 2513 230.66 25 11  187 C 2514 18 18 11 188 C 2515 20 18 11 189 C 2516 42 26 11 190 C 2517 8 18 11 191 D 7237.50 192 C 2518 446΍.86 4 11 193 C 2519 20 26 12 194 C 2520 28.99 10 12 195 C 2521 4.15 10 12 196 C 2522 61.36 10 12 197 C 2523 1210.49 10 12 198 C 2524 7 1 12 199 C 2525 16 10 12 200 C 2526 45.45 5 12 201 C 2527 13.30 5 1l2 202 C 2528 387 17 12 203 C 2529 18.70 18 12 204 CC 2530 205 C 2531 1800 21 13 206 C 2532 206.25 26 12 207 C 2533 1703.40 2 12 208 D 3825 209 C 2534 3178.45 22 14 210 CC 2535 211 C 2536 97.67 23 a14 212 C 2537 55.93 4 14 213 C 2538 26 5 14 214 C 2539 550 24 14 215 C 2540 106.32 8 14 216 C 2541 105 3 14 217 C 2542 108.06 8 14 218 D 6507.66 219 CC 2543 220 C 2544 74.95 10 14 221 C 2545 671.81 17 14 222 C 2546 262.60 5 14 223 C 2547 50.50 5 14 224 C 2548 11.70 25 14 225 C 2549 85 6 14 226 C 2550 10 18 14 227 C 2551 34 6 14 228 C 2552 200 5 14 229 C 2553 368 23 14 230 C 2554 912.90 9 14 [231 C 2555 500 21 14 232 C 2556 90 10 14 233 C 2557 120 1 15 234 C 2558 2.05 18 15 235 C 2559 899 17 15 236 C 2560 267.58 22 15 237 D 465 238 D 3182.36 239 C 2561 100 5 15 240 CC 2562 241 DM 200PO 242 D 5187.50 243 C 2563 500 8 15 244 C 2564 100.75 10 15  245 C 2565 3000 21 15 246 C 2566 1800 21 17 247 C 2567 75.21 10 15 248 C 2568 563.06 4 15 249 C 2569 26 17 15 250 C 2570 192 22 15 251 C 2571 14.30 5 15 252 C 2572 184.25 5 15 253 D 3000 254 C 2573 500 21 15 255 C 2574 115 3 16 256 D 11960.00 257 C 2575 42 26 16 258 C 2576 26.12 5 16 259 C 2577 81.71 4 16 260 C 2578 36.81 11 16 261 c" C 2579 368.00 23 16 262 C 2580 671.81 17 16 263 C 2581 37.70 18 16 264 C 2582 72 6 16 265 C 2583 350 21 16 266 C 2584 23.95 8 16 267 C 2585 1773.70 2 16 268 CC 2586 269 C 2587 271.60 23 17 270 CC 2588  271 D 2107.75 272 D 4990 273 C 2589 5 1 17 274 DM 14.60 275 DM 7.50 276 D 829.25 277 D 21228.50 278 D 5680 279 C 2590 105.78 8 17 280 C 2591 311.54 8 17 281 C 2593 770.94 25 17 282 C 25594 109.92 22 17 283 C 2595 432.25 4 18 284 C 2596 28 1 18 285 C 2597 200 27 18 286 C 2598 919 2 18 287 C 2599 187.22 5 18 288 C 2600 134 5 18 289 C 2601 90.50 5 18 290 C 2602 153.64 5 18 291 C 2603 148r50. 22 18 292 CC 2604 293 C 2605 50 24 18 294 C 2606 186.36 8 18 295 C 2607 85 1 18 296 D 32927.50 297 C 2608 1352.93 25 19 298 C 2609 50 20 19 299 CC 2610 300 CC 2611 301 DM 7.37 302 C 2612 17 6 20 303 D 14750.00 304 D 2040 305 C 2613 33 5 20 306 C 2614 9.22 5 20 307 C 2615 115 3 20 308 C 2616 1875.10 2 20 309 C 2617 134 5 20 310 C 2618 46.45 5 20 311 C 2619 790.75 17 20 312 C 2620 33 17 20 313 C 2621 368 23 20 314 C 2622 52.30 5 20 315 C 2623 309.14 8 20 316 C 2624 9 18 20 317 C 2625 1452.77 25 20 318 D 8742.50 319 C 2626 50 24 20 320 C 2627 39.50 18 20 321 CC 2628 322 C 26NY29 56 17 20 323 C 2630 164 5 21 324 C 2631 400.88 4 21 325 CC 2632 326 C 2633 8.75 18 21 327 C 2634 7.50 1 21 328 C 2635 48 4 21 329 C 2636 12.55 11 21 330 C 2637 139.70 22 21 331 D 538 332 C 2638 1200 21 22 333 C 2639 1000 21 21 334 C 2640 115 3 21 335 C 2641 30 5 21 336 C 2642 101.39 4 22 337 D 3000 338 DM 3000.00 339 C 2643 140 22 21 340 C 2644 35 26 22 341 C 2645 671.81 17 22 342 C 264(6 1850.16 2 22  343 C 2647 70 23 22 344 C 2648 14.20 23 22 345 C 2649 500 24 22 346 C 2650 13.05 11 22 347 C 2651 205.74 22 22 348 C 2652 199.40 5 22 349 C 2653 17.16 5 22 350 C 2654 19.94 5 22 351 C 265vu5 34.12 22 22 352 D 2530.69 353 D 20162.50 354 D 8992.41 355 C 2656 1500 21 23 356 C 2657 116.89 1 23 357 D 1545 358 C 2659 368 23 22 359 C 2660 37 18 22 360 C 2661 25 22 22 361 C 2662 15 18 22 G 362 C 2663 500 21 23 363 C 2664 25.35 5 23 364 D 6212.50 365 CC 2665 366 C 2666 50 24 23 367 C 2667 96.30 18 23 368 C 2668 495.42 4 23 369 C 2669 145 5 23 370 C 2670 8.70 1 24 371 C 2671 16.80 1 24 i 372 C 2672 29 5 23 373 C 2673 11.48 22 23 374 C 2674 1397.48 25 23 375 C 2675 200 28 23 376 C 2676 500 8 23 377 CC 2677 378 C 2678 49.56 8 24 379 C 2679 10000 23 24 380 C 2680 110 23 24 381 C 2681; 1007 23 24 382 C 2682 37.64 22 24 383 C 2683 2000. 21 25 384 C 2684 49.44 1 25 385 D 4762.50 386 C 2685 1850.16 2 25 387 C 2686 35.27 11 25 388 C 2687 115 3 25 389 C 2688 144.36 4 25 390 C 2689 50 22 25 391 C 2690 39.85 18 25 392 C 2691 141.22 4 25 393 C 2692 552.87 17 25 394 C 2693 134.32 22 25 395 CC 2694 396 D 1882.50 397 C 2695 500 8 25 398 C 2696 500 8 25 399 C 2697 20.32 5 26 400 C 2698 7 50 21 26 401 C 2699 110.25 1 26 402 C 2700 368 23 25 403 C 2701 134.74 22 25 404 C 2702 6.90 5 25 405 C 2703 99 17 25 406 DM 11.49 407 DM 11.61 408 C 2704 36 18 26 409 C 2705 635.69 27 26 410 C 2706 18.50 18 26 411 D 7130 412 C 2707 295 26 26 413 C 2708 472.87 4 26 414 C 2709 15 18 26 415 C 2710 36.50 5 26 416 C 2711 16.75 18 26 417 C 2712 218.26 5 26 418 C 2713 139.96 13 26  419 CC 2714 420 i C 2715 50 22 26 421 C 2716 1500 21 27 422 C 2717 1500 21 28 423 C 2718 11.56 5 26 424 C 2719 4812.51 23 27 425 D 1545 426 C 2720 3920.58 17 27 427 C 2721 115 3 27 428 C 2722 76.99 22 27 429 C 2723 40.30 5 27 430 C 2724 117.43 4 27 431 C 2725 552.87 17 27 432 C 2726 127.35 5 27 433 C 2727 6 18 27 434 C 2728 20 5 27 435 C 2729 52.84 11 27 436 C 2730 5.74 5 27 437 DM 23.10 438 C 2731 50 24 27 439 O D 592.50 440 C 2732 911.35 25 27 441 C 2733 46.85 5 27 442 C 2734 164.11 5 27 443 C 2735 1850.16 2 27 444 C 2736 140 1 27 445 D 1997 446 C 2737 368 23 27 447 D 1467.50 448 C 2738 154.01 5 28 449 uC 2739 33 18 28 450 C 2740 40 23 28 451 C 2741 15.15 8 28 452 C 2742 342.32 8 28 453 C 2743 10 26 28 454 C 2744 160 27 28 455 C 2745 19 26 28 456 C 2746 1136.47 6 28 457 C 2747 174.34 8 28 458 C 2748 20c8.22 25 28 459 C 2749 131.46 10 28 460 D 13855 461 C 2750 145.75 10 28 462 C 2751 30 5 28 463 C 2752 54 5 28 464 C 2753 55 22 28 465 C 2754 569.90 4 28 466 C 2755 64.50 6 28 467 C 2756 75 28 29 468  CC 2757 469 C 2758 374 17 29 470 C 2759 115 3 29 471 C 2760 500 21 29 472 C 2761 500 21 29 473 C 2762 1510 21 29 474 E 496 1177.09 12 3 475 E 495 1076.21 12 3 476 E 494 392.55 12 2 477 E 493 456.63 12 2 478 E 492 497.88 12 2 479 E 491 574.03 12 2 480 E 490 890.20 12 2 481 E 489 842.19 12 2 482 E 488 788.81 12 2 483 E 510 304.73 12 5 484 E 509 432.47 12 5 485 E 508 575.53 12 5 486 E 507 502.81 12 5 '; 487 E 506 842.80 12 5 488 E 505 1033.57 12 5 489 E 504 254.00 15 4 490 W 503 702.05 14 4 491 W 502 4521.60 14 4 492 W 501 387.26 12 3 493 W 500 372.80 12 3 494 W 499 561.91 12 3 495 W 498 497.97 12 3 1 496 E 497 926.48 12 3 497 E 519 84.76 12 12 498 E 520 483.00 15 8 499 E 511 830.88 12 7 500 E 537 464.55 12 10 501 E 531 356.37 12 9 502 E 529 589.96 12 9 503 E 530 436.65 12 9 504 E 528 393.86 12 9 50v5 E 527 888.88 12 9 506 E 526 1034.18 12 9 507 E 525 991.35 12 9 508 E 524 733.00 15 8 509 W 522 182.00 12 8 510 W 523 1549.00 14 8 511 W 521 2210.00 14 8 512 W 518 3391.80 14 7 513 W 517 277.10 12 7 5144 E 516 259.01 12 7 515 E 515 439.51 12 7 516 E 514 398.75 12 7 517 E 513 1113.18 12 7 518 E 512 893.06 12 7 519 W 540 4601.70 14 10 520 E 532 1062.02 12 10 521 E 533 1122.84 12 10 522 E 534 999.70 12 10 x 523 E 535 538.32 12 10 524 E 536 643.20 12 10 525 E 538 386.34 12 10 526 E 539 105.03 12 10 527 W 541 1703.92 15 11 528 W 544 5.00 14 11 529 W 545 1345.38 15 11 530 E 546 924.04 12 12 531 E 547 982.73 12 12 532 E 548 873.83 12 12 533 E 549 473.57 12 12 534 E 550 542.91 12 12 535 E 551 440.27 12 12 536 E 553 299.63 12 12 537 E 552 185.93 12 12 538 E 568 343.38 12 15 539 E 569 304.73 12 15 540 E 567 596.1c5 12 15 541 E 566 465.02 12 15 542 E 565 948.24 12 14 543 E 564 985.99 12 14 544 E 563 991.80 12 14 545 E 557 473.57 12 13 546 E 558 601.00 12 13 547 E 560 265.01 12 13 548 E 555 991.16 12 12 549 E 554  927.77 12 12 550 E 556 852.47 12 13 551 W 562 4255.04 14 13 552 E 561 297.08 12 13 553 E 559 688.29 12 13 554 E 570 1050.61 12 16 555 E 571 1069.11 12 16 556 E 572 1019.07 12 16 557 E 573 566.88 12 16 558 E 574 630.97 12 16 559 E 575 269.88 12 16 560 E 576 472.09 12 16 561 E 577 346.43 12 16 562 W 578 4412.14 14 16 563 W 579 483.00 15 16 564 W 580 2210.00 14 16 565 W 581 38.36 14 16 566 E 582 1046.89 12 17  567 E 583 1151.39 12 17 568 E 584 996.51 12 17 569 E 585 627.63 12 17 570 E 586 732.19 12 17 571 E 587 537.45 12 17 572 E 588 513.44 12 17 573 E 589 374.42 12 17 574 E 590 110.15 12 17 575 E 591 979.37 Of12 18 576 E 592 1426.28 12 18 577 E 593 960.21 12 18 578 E 595 645.08 12 18 579 E 597 430.98 12 18 580 E 598 343.31 12 18 581 E 594 531.30 12 18 582 E 596 500.91 12 18 583 W 599 5659.58 14 18 584 W 600 r1863.74 15 18 585 W 602 850.20 15 18 586 E 603 796.26 12 20 587 E 604 802.32 12 20 588 E 605 379.26 12 20 589 E 606 542.91 12 20 590 E 607 283.06 12 20 591 E 608 180.93 12 20 592 E 609 282.18 12 20 593 K[E 615 369.00 12 21 594 W 617 2861.14 14 21 595 E 625 2210.00 14 23 596 E 627 1209.08 12 24  597 E 628 1158.89 12 24 598 E 629 552.62 12 24 599 E 630 596.12 12 24 600 E 632 359.96 12 24 601 W 634 800.03 15 24  602 E 635 921.48 12 25 603 E 636 1050.72 12 25 604 E 637 533.66 12 25 605 E 638 610.74 12 25 606 E 639 361.79 12 25 607 E 640 201.10 12 25 608 E 645 346.92 12 26 609 E 610 325.46 12 21 610 E 611 1020.87 Q12 21 611 E 612 922.47 12 21 612 E 613 505.84 12 21 613 E 614 595.69 12 21 614 E 616 258.02 12 21 615 E 618 1053.55 12 23 616 E 619 845.14 12 23 617 E 620 420.35 12 23 618 E 621 548.51 12 23 619 E 622 2g93.42 12 23 620 E 623 339.16 12 23 621 E 624 374.42 12 23 622 W 626 483.00 15 23 623 E 631 142.22 12 24 624 W 633 2792.12 14 24 625 E 660 484.10 12 29 626 W 662 2276.24 14 29 627 E 650 981.35 12 28 628 ٷE 651 992.28 12 28 629 E 652 327.45 12 28 630 E 653 384.95 12 28 631  E 641 1081.13 12 26 632 E 642 1042.43 12 26 633 E 643 490.20 12 26 634 E 644 516.116 12 26 635 E 646 326.75 12 26 636 W 647 2424.72 14 26  637 W 648 393.57 15 26 638 W 649 251.13 15 26 639 E 654 373.60 12 28 640 E 657 1176.43 12 29 641 E 658 1184.18 12 29 642 E 659 566.46 12 29 643 E 661 247.78 12 29 644 E 663 393.62 15 29 645 E 664 40.27 1h5 29 646 W 656 483 15 29 647 W 655 2210. 14 29 648 CC 542 649 CC 543 650 CC 2592 651 CC 2658 488 482 E 488 788.81 12 2 489 481 E 489 842.19 12 2 490 480 E 490 890.20 12 2 491 479 E 491 574.03 12 2 492 10 478 E 492 497.88 12 2 493 477 E 493 456.63 12 2 494 476 E 494 392.55 12 2 495 475 E 495 1076.21 12 3 496 474 E 496 1177.09 12 3 497 496 E 497 926.48 12 3 498 495 W 498 497.97 12 3 499 494 W 499 561.91 12 3 500 493 W 500 372'H.80 12 3 501 492 W 501 387.26 12 3 502 491 W 502 4521.60 14 4 503 490 W 503 702.05 14 4 504 489 E 504 254.00 15 4 505 488 E 505 1033.57 12 5 506 487 E 506 842.80 12 5 507 486 E 507 502.81 12 5 508 485 E 508 575.53 12 5 509  484 E 509 432.47 12 5 510 483 E 510 304.73 12 5 511 499 E 511 830.88 12 7 512 518 E 512 893.06 12 7 513 517 E 513 1113.18 12 7 514 516 E 514 398.75 12 7 515 515 E 515 439.51 12 7 516 514 E 516 259.01 12 7 517 513 W 517 27;T7.10 12 7 518 512 W 518 3391.80 14 7 519 497 E 519 84.76 12 12 520 498 E 520 483.00 15 8 521 511 W 521 2210.00 14 8 522 509 W 522 182.00 12 8 523 510 W 523 1549.00 14 8 524 508 E 524 733.00 15 8 525 507 E 525 991.35 12 9 52ˮ6 506 E 526 1034.18 12 9 527 505 E 527 888.88 12 9 528 504 E 528 393.86 12 9 529 502 E 529 589.96 12 9 530 503 E 530 436.65 12 9 531 501 E 531 356.37 12 9 532 520 E 532 1062.02 12 10 533 521 E 533 1122.84 12 10 534 522 E H|534 999.70 12 10 535 523 E 535 538.32 12 10 536 524 E 536 643.20 12 10 537 500 E 537 464.55 12 10 538 525 E 538 386.34 12 10 539 526 E 539 105.03 12 10 540 519 W 540 4601.70 14 10 541 527 W 541 1703.92 15 11 542 648 CC 542 543 649 CC 543 544 528 W 544 5.00 14 11 545 529 W 545 1345.38 15 11 546 530 E 546 924.04 12 12 547 531 E 547 982.73 12 12 548 532 E 548 873.83 12 12 549 533 E 549 473.57 12 12 550 534 E 550 542.91 12 12 551 535 E 551 440.27 12 12 552 537 E 552 185.93 12 12 553 536 E 553 299.63 12 12 554 549 E 554 927.77 12 12 555 548 E 555 991.16 12 12 556 550 E 556 852.47 12 13 557 545 E 557 473.57 12 13 558 546 E 558 601.00 12 13 559 553 E 559 688.29 12 13\x 560 547 E 560 265.01 12 13 561 552 E 561 297.08 12 13 562 551 W 562 4255.04 14 13 563 544 E 563 991.80 12 14 564 543 E 564 985.99 12 14 565 542 E 565 948.24 12 14 566 541 E 566 465.02 12 15 567 540 E 567 596.15 12 15 568  538 E 568 343.38 12 15 569 539 E 569 304.73 12 15 570 554 E 570 1050.61 12 16 571 555 E 571 1069.11 12 16 572 556 E 572 1019.07 12 16 573 557 E 573 566.88 12 16 574 558 E 574 630.97 12 16 575 559 E 575 269.88 12 16 576 560Q E 576 472.09 12 16 577 561 E 577 346.43 12 16 578 562 W 578 4412.14 14 16 579 563 W 579 483.00 15 16 580 564 W 580 2210.00 14 16 581 565 W 581 38.36 14 16 582 566 E 582 1046.89 12 17 583 567 E 583 1151.39 12 17 584 568 E 5844 996.51 12 17 585 569 E 585 627.63 12 17 586 570 E 586 732.19 12 17 587 571 E 587 537.45 12 17 588 572 E 588 513.44 12 17 589 573 E 589 374.42 12 17 590 574 E 590 110.15 12 17 591 575 E 591 979.37 12 18 592 576 E 592 1426.2Є8 12 18 593 577 E 593 960.21 12 18 594 581 E 594 531.30 12 18 595 578 E 595 645.08 12 18 596 582 E 596 500.91 12 18 597 579 E 597 430.98 12 18 598 580 E 598 343.31 12 18 599 583 W 599 5659.58 14 18 600 584 W 600 1863.74 15 1 8 602 585 W 602 850.20 15 18 603 586 E 603 796.26 12 20 604 587 E 604 802.32 12 20 605 588 E 605 379.26 12 20 606 589 E 606 542.91 12 20 607 590 E 607 283.06 12 20 608 591 E 608 180.93 12 20 609 592 E 609 282.18 12 20 610  609 E 610 325.46 12 21 611 610 E 611 1020.87 12 21 612 611 E 612 922.47 12 21 613 612 E 613 505.84 12 21 614 613 E 614 595.69 12 21 615 593 E 615 369.00 12 21 616 614 E 616 258.02 12 21 617 594 W 617 2861.14 14 21 618 615 E 618 1053.55 12 23 619 616 E 619 845.14 12 23 620 617 E 620 420.35 12 23 621 618 E 621 548.51 12 23 622 619 E 622 293.42 12 23 623 620 E 623 339.16 12 23 624 621 E 624 374.42 12 23 625 595 E 625 2210.00 14 23 626 622 W 626 ,483.00 15 23 627 596 E 627 1209.08 12 24 628 597 E 628 1158.89 12 24 629 598 E 629 552.62 12 24 630 599 E 630 596.12 12 24 631 623 E 631 142.22 12 24 632 600 E 632 359.96 12 24 633 624 W 633 2792.12 14 24 634 601 W 634 800.0D=3 15 24 635 602 E 635 921.48 12 25 636 603 E 636 1050.72 12 25 637 604 E 637 533.66 12 25 638 605 E 638 610.74 12 25 639 606 E 639 361.79 12 25 640 607 E 640 201.10 12 25 641 631 E 641 1081.13 12 26 642 632 E 642 1042.43 12 }26 643 633 E 643 490.20 12 26 644 634 E 644 516.116 12 26 645 608 E 645 346.92 12 26 646 635 E 646 326.75 12 26 647 636 W 647 2424.72 14 26 648 637 W 648 393.57 15 26 649 638 W 649 251.13 15 26 650 627 E 650 981.35 12 28 65I1 628 E 651 992.28 12 28 652 629 E 652 327.45 12 28 653 630 E 653 384.95 12 28 654 639 E 654 373.60 12 28 655 647 W 655 2210. 14 29 656 646 W 656 483 15 29 657 640 E 657 1176.43 12 29 658 641 E 658 1184.18 12 29 659 642 Es 659 566.46 12 29 660 625 E 660 484.10 12 29 661 643 E 661 247.78 12 29 662 626 W 662 2276.24 14 29 663 644 E 663 393.62 15 29 664 645 E 664 40.27 15 29 2313 3 C 2313 1804.52 22 1 2332 2 C 2332 2000 21 1 2337 4 C 2337 %43.50 0 0 2338 5 C 2338 6.00 0 0 2345 6 C 2345 53.35 0 0 2347 7 C 2347 38.00 0 0 2348 8 C 2348 50.00 24 1 2354 10 C 2354 50.00 20 1 2355 13 C 2355 280.60 22 1 2356 9 C 2356 264.05 0 0 2357 14 CC 2357 2358 1j5 C 2358 10 3 1 2359 16 C 2359 42.80 10 1 2360 17 C 2360 119.40 19 1 2361 18 C 2361 50 18 1 2362 19 CC 2362 2363 20 CC 2363 2364 21 CC 2364 2365 22 CC 2365  2366 23 C 2366 50 18 1 2367 24 CC 2367 2368 25 CC 2368 2369 26 CC 2369 2370 27 CC 2370 2371 28 C 2371 50 18 1 2372 29 CC 2372 2373 30 CC 2373 2374 31 C 2374 547.42 17 1 2375 32 C 2375 86 5 1 2376 33 C 2376 500 21 1 2377 34 C 2377 1500 21 3 2378 35 C 2378 93.20 3 2 2379 36 C 2379 1562.80 2 2 2380 37 C 2380 3.60 5 2 2381 38 C 2381 136.16 5 2 2382 39 C 2382 114.98 18 2 2383 41 C 2383 139.24 4 2 2384 42 C 2384 155 5 2 2385 43 C 2385 60.30 5 2 2386 44 C 2386 1151 17 2 238d[7 45 C 2387 12 18 2 2388 46 C 2388 66.80 22 2 2389 47 C 2389 33.30 22 2 2390 48 C 2390 22.80 22 3 2391 49 C 2391 12 18 2 2392 50 C 2392 39 22 2 2393 51 C 2393 64.65 25 2 2394 52 C 2394 85.54 22 2 2395 55 C 2395 1iR000. 21 3 2396 56 C 2396 405.38 4 3 2397 57 C 2397 64. 8 3 2398 60 C 2398 14.85 18 3 2399 62 C 2399 7.95 18 3 2400 63 C 2400 8.52 18 3 2401  64 C 2401 29.39 22 3 2402 65 C 2402 80. 23 3 2403 67 C 2403 1562.80 2 5 240Fi4 68 C 2404 1887.00 17 5 2405 69 C 2405 28.26 21 5 2406 70 C 2406 52.68 5 5 2407 71 C 2407 53.35 5 5 2408 72 C 2408 27.00 5 5 2409 73 C 2409 301.50 21 5 2410 74 C 2410 32.23 5 5 2411 75 C 2411 110. 16 5 2412 76 CU 2412 1500 21 10 2413 77 C 2413 15 18 3 2414 78 C 2414 286.41 5 3 2415 79 C 2415 12.68 5 3 2416 80 C 2416 93.20 3 5 2417 81 C 2417 7.75 11 3 2418 82 C 2418 66.34 4 3 2419 83 C 2419 1197.81 5 5 2420 84 C 2420 50 24 3 p 2421 85 C 2421 261.65 23 5 2422 86 C 2422 10 16 5 2423 87 C 2423 2386 17 5 2424 88 C 2424 28.15 23 5 2425 89 C 2425 8.95 18 5 2426 91 C 2426 16.05 5 7 2427 92 C 2427 450.59 17 5 2428 93 C 2428 621.73 8 6 2429 94 C 2429 4000. 21 6 2430 95 C 2430 6.75 18 6 2431 96 C 2431 110 5 6 2432 97 C 2432 991 16 6 2433 98 C 2433 41.5 20 6 2434  99 C 2434 52 5 6 2435 100 C 2435 675 8 6 2436 104 C 2436 40 20 6 2437 105 CC 2437 2438 106 C 2̐438 3.47 18 6 2439 107 C 2439 11 18 6 2440 108 C 2440 339.45 22 6 2441 109 C 2441 28.76 18 6 2442 110 C 2442 589.40 4 6 2443 111 C 2443 19.89 22 6 2444 112 C 2444 16. 18 6 2445 113 CC 2445 2446 114 C 2446 93.20 3 6 2447 n115 C 2447 410.72 25 6 2448 116 C 2448 695.00 7 6 2449 117 C 2449 50. 27 6 2450 118 C 2450 13.00 17 6 2451 119 C 2451 55.00 22 7 2452 120 C 2452 74.42 22 7 2453 121 C 2453 56.30 5 7 2454 122 C 2454 7.85 5 7 2455 123 C 2455 2nu23.17 5 7 2456 124 C 2456 368.00 23 7 2457 125 C 2457 1562.80 2 7 2458 127 C 2458 450.59 17 8 2459 128 C 2459 75.65 11 8 2460 129 C 2460 923. 5 8 2461 130 CC 2461 2462 131 CC 2462 2463 132 C 2463 25 18 8 2464 133 C 2464 ԟ26 22 8 2465 134 C 2465 50.50 18 8 2466 135 C 2466 39 5 8 2467 136 C 2467 4.80 22 8 2468 137 CC 2468 2469 138 C 2469 70 18 8 2470 139 C 2470 500 21 8 2471 140 C 2471 12 22 8 2472 142 C 2472 113.56 4 8 2473 143 C 2473 9.95 18 8 2474 144 CC 2474 2475 145 C 2475 368 23 8 2476 146 C 2476 616 9 8 2477 147 C 2477 208.65 5 8 2478 148 C 2478 380 7 9 2479 149 C 2479 129 5 9 2480 150 C 2480 3.95 18 9 2481 151 C 2481 7.06 1 9 2482 152 C 2482 30 18 9 2483 153 C 2483 15 18 9 2484 155 CC 2484 2485 156 C 2485 2000 21 9 2486 157 C 2486 7 1 9 2487 158 C 2487 34.03 22 9 2488 159 C 2488 474.35 5 9 2489 160 C 2489 179.46 5 9 2490 161 C 2490 145 5 9 2491 163 C 2491 12.30 18 9 2492 164 C 2492 7 1 11 2493 165 C 2493 2 22 9 2494 166 C 2494 3.50 18 9 2495 167 C 2495 46.49 4 10 2496 168 CC 2496 2497 169 C 2497 117.03 3 10 2498 170 CC 2498 2499 171 C 2499 1773.70 2 11 2500 172 C 2500 94.90 22 1k1 2501 173 C 2501 50 20 11 2502 174 C 2502 21.85 11 10 2503 175 C 2503 89.37 8 10 2504 177 C 2504 547.42 17 11 2505 178 C 2505 1203.31 22 11 2506 179 C 2506 368 23 11 2507 180 C 2507 616 9 11 2508 181 C 2508 10.80 18 11 250a9 182 C 2509 23.30 5 11 2510 183 C 2510 27.60 5 11 2511 184 C 2511 126.00 5 11 2512 185 C 2512 168.26 5 11 2513 186 C 2513 230.66 25 11 2514 187 C 2514 18 18 11 2515 188 C 2515 20 18 11 2516 189 C 2516 42 26 11 2517 190 CX 2517 8 18 11 2518 192 C 2518 446.86 4 11 2519 193 C 2519 20 26 12 2520  194 C 2520 28.99 10 12 2521 195 C 2521 4.15 10 12 2522 196 C 2522 61.36 10 12 2523 197 C 2523 1210.49 10 12 2524 198 C 2524 7 1 12 2525 199 C 2525 16 10 12 2526 200 C 2526 45.45 5 12 2527 201 C 2527 13.30 5 12 2528 202 C 2528 387 17 12 2529 203 C 2529 18.70 18 12 2530 204 CC 2530 2531 205 C 2531 1800 21 13 2532 206 C 2532 206.25 26 12 2533 207 C 2533 1703.40 2 12 2534 209 C 2534 3178.45 22 14 2535 210 CC 2535 2536 211 C 2536 97.67 23 14 2537 212 C 2537 55.93 4 14 2538 213 C 2538 26 5 14 2539 214 C 2539 550 24 14 2540 215 C 2540 106.32 8 14 2541 216 C 2541 105 3 14 2542 217 C 2542 108.06 8 14 2543 219 CC 2543 2544 220 C 2544 74.95 10 14 2545 221 C 2545 671.81 17 14 2546 222 C 2546 262.60 5 14 2547 223 C 2547 50.50 5 14 2548 224 C 2548 11.70 25 14 2549 225 C 2549 85 6 14 2550 226 C 2550 10 18 14 2551 227 C C2551 34 6 14 2552 228 C 2552 200 5 14 2553 229 C 2553 368 23 14 2554 230 C 2554 912.90 9 14 2555 231 C 2555 500 21 14 2556 232 C 2556 90 10 14 2557 233 C 2557 120 1 15 2558 234 C 2558 2.05 18 15 2559 235 C 2559 899 17 15 25360 236 C 2560 267.58 22 15 2561 239 C 2561 100 5 15 2562 240 CC 2562 2563 243 C 2563 500 8 15 2564 244 C 2564 100.75 10 15 2565 245 C 2565 3000 21 15 2566 246 C 2566 1800 21 17 2567 247 C 2567 75.21 10 15 2568 248 C 2568 563.06 4 15 2569 249 C 2569 26 17 15 2570  250 C 2570 192 22 15 2571 251 C 2571 14.30 5 15 2572 252 C 2572 184.25 5 15 2573 254 C 2573 500 21 15 2574 255 C 2574 115 3 16 2575 257 C 2575 42 26 16 2576 258 C 2576 26.12 5 16 25477 259 C 2577 81.71 4 16 2578 260 C 2578 36.81 11 16 2579 261 C 2579 368.00 23 16 2580 262 C 2580 671.81 17 16 2581 263 C 2581 37.70 18 16 2582 264 C 2582 72 6 16 2583 265 C 2583 350 21 16 2584 266 C 2584 23.95 8 16 2585 >267 C 2585 1773.70 2 16 2586 268 CC 2586 2587 269 C 2587 271.60 23 17 2588 270 CC 2588 2589 273 C 2589 5 1 17 2590 279 C 2590 105.78 8 17 2591 280 C 2591 311.54 8 17 2592 650 CC 2592 2593 281 C 2593 770.94 25 17 2594 282 C 2594 109.92 22 17 2595 283 C 2595 432.25 4 18 2596 284 C 2596 28 1 18 2597 285 C 2597 200 27 18 2598 286 C 2598 919 2 18 2599 287 C 2599 187.22 5 18 2600 288 C 2600 134 5 18 2601 289 C 2601 90.50 5 18 2602 290 C 2602 153.64 5 18 2603 291 C 2603 14850. 22 18 2604 292 CC 2604 2605 293 C 2605 50 24 18 2606 294 C 2606 186.36 8 18 2607 295 C 2607 85 1 18 2608 297 C 2608 1352.93 25 19 2609 298 C 2609 50 20 19 2610 299 CC 2610 2611 300 CC 2611  2612 302 C 2612 17 6 20 2613 305 C 2613 33 5 20 2614 306 C 2614 9.22 5 20 2615 307 C 2615 115 3 20 2616 308 C 2616 1875.10 2 20 2617 309 C 2617 134 5 20 2618 310 C 2618 46.45 5 20 2619 311 C 2619 790.75 17 20 2620 312 C  2620 33 17 20 2621 313 C 2621 368 23 20 2622 314 C 2622 52.30 5 20 2623 315 C 2623 309.14 8 20 2624 316 C 2624 9 18 20 2625 317 C 2625 1452.77 25 20 2626 319 C 2626 50 24 20 2627 320 C 2627 39.50 18 20 2628 321 CC 2628 2629 322 C 2629 56 17 20 2630 323 C 2630 164 5 21 2631 324 C 2631 400.88 4 21 2632 325 CC 2632 2633 326 C 2633 8.75 18 21 2634 327 C 2634 7.50 1 21 2635 328 C 2635 48 4 21 2636 329 C 2636 12.55 11 21 2637 330 C 2637 139.70 22 21 2638 332 C 2638 1200 21 22 2639 333 C 2639 1000 21 21 2640 334 C 2640 115 3 21 2641 335 C 2641 30 5 21 2642 336 C 2642 101.39 4 22 2643 339 C 2643 140 22 21 2644 340 C 2644 35 26 22 2645 341 C 2645 671.81 17 22 2646 342 C 2646 1850.16 2 22 2647 343 C 2647 70 23 22 2648 344 C 2648 14.20 23 22 2649 345 C 2649 500 24 22 2650 346 C 2650 13.05 11 22 2651 347 C 2651 205.74 22 22 2652 348 C 2652 199.40 5 22 2653 349 C 2653 17.16 5 22 2654 350 C 2654 19.94 5 22 2655 351 C 2655 34.12 22 22 2656 355 C 2656 1500 21 23 2657 356 C 2657 116.89 1 23 2658 651 CC 2658 2659 358 C 2659 368 23 22 2660 359 C 2660 37 18 22 2661 360 C 2661 25 22 22 2662 361 C 2662 15 18 22 2663 362 C 2663 500 21 23 2664 363 C 2664 25.35 5 23 2665 365 CC 2665 2666 366 C 2666 50 24 23 2667 367 C 2667 96.30 18 23 2668 368 C 2668 495.42 4 23 2669 369 C 2669 145 5 23 2670 370 C 2670 8.70 1 24 2671  371 C 2671 16.80 1  24 2672 372 C 2672 29 5 23 2673 373 C 2673 11.48 22 23 2674 374 C 2674 1397.48 25 23 2675 375 C 2675 200 28 23 2676 376 C 2676 500 8 23 2677 377 CC 2677 2678 378 C 2678 49.56 8 24 2679 379 C 2679 10000 23 24 2680 380 C 2680 110 23 24 2681 381 C 2681 1007 23 24 2682 382 C 2682 37.64 22 24 2683 383 C 2683 2000. 21 25 2684 384 C 2684 49.44 1 25 2685 386 C 2685 1850.16 2 25 2686 387 C 2686 35.27 11 25 2687 388 C 2687 115 3 25 2688 389 C 2688 1 '44.36 4 25 2689 390 C 2689 50 22 25 2690 391 C 2690 39.85 18 25 2691 392 C 2691 141.22 4 25 2692 393 C 2692 552.87 17 25 2693 394 C 2693 134.32 22 25 2694 395 CC 2694 2695 397 C 2695 500 8 25 2696 398 C 2696 500 8 25 2697  399 C 2697 20.32 5 26 2698 400 C 2698 750 21 26 2699 401 C 2699 110.25 1 26 2700 402 C 2700 368 23 25 2701 403 C 2701 134.74 22 25 2702 404 C 2702 6.90 5 25 2703 405 C 2703 99 17 25 2704 408 C 2704 36 18 26 2705 409 C 2705Xl 635.69 27 26 2706 410 C 2706 18.50 18 26 2707 412 C 2707 295 26 26 2708 413 C 2708 472.87 4 26 2709 414 C 2709 15 18 26 2710 415 C 2710 36.50 5 26 2711 416 C 2711 16.75 18 26 2712 417 C 2712 218.26 5 26 2713 418 C 2713 139.96 13 26 2714 419 CC 2714 2715 420 C 2715 50 22 26 2716 421 C 2716 1500 21 27 2717 422 C 2717 1500 21 28 2718 423 C 2718 11.56 5 26 2719 424 C 2719 4812.51 23 27 2720 426 C 2720 3920.58 17 27 2721 427 C 2721 115 3 27 2722  428 C 2722 76.99 22 27 2723 429 C 2723 40.30 5 27 2724 430 C 2724 117.43 4 27 2725 431 C 2725 552.87 17 27 2726 432 C 2726 127.35 5 27 2727 433 C 2727 6 18 27 2728 434 C 2728 20 5 27 2729 435 C 2729 52.84 11 27 2730 436 C 2730 5.74 5 27 2731 438 C 2731 50 24 27 2732 440 C 2732 911.35 25 27 2733 441 C 2733 46.85 5 27 2734 442 C 2734 164.11 5 27 2735 443 C 2735 1850.16 2 27 2736 444 C 2736 140 1 27 2737 446 C 2737 368 23 27 2738 448 C 2738 154.01 5 28 2739 449 C 2739 33 18 28 2740 450 C 2740 40 23 28 2741 451 C 2741 15.15 8 28 2742 452 C 2742 342.32 8 28 2743 453 C 2743 10 26 28 2744 454 C 2744 160 27 28 2745 455 C 2745 19 26 28 2746 456 C 2746 1136.47 6 28 2747  457 C 2747 174.34 8 28 2748 458 C 2748 208.22 25 28 2749 459 C 2749 131.46 10 28 2750 461 C 2750 145.75 10 28 2751 462 C 2751 30 5 28 2752 463 C 2752 54 5 28 2753 464 C 2753 55 22 28 2754 465 C 2754 569.90 4 28 2755 466 CL" 2755 64.50 6 28 2756 467 C 2756 75 28 29 2757 468 CC 2757 2758 469 C 2758 374 17 29 2759 470 C 2759 115 3 29 2760 471 C 2760 500 21 29 2761 472 C 2761 500 21 29 2762 473 C 2762 1510 21 29 2733 441 SEARCH KEY 2733 -.I 441 C 2733 46.85 5 27 AMOUNT = 4.685E+01 NSB801215.'P15 December 1980 North Slope Borough P.O. Box 69 Barrow, Alaska 99723 Re: Services Rendered for Wainwright School Shop Addition Electrical 27 Oct. Fly PDX - Anch. 5 28 Oct. Meet with Claude Laws & Review Spex 1 Travel Anc Brw Wain 5 School Final Inspection 2 29 Oct. School final inspection 3 Travel Wain - Anc 5 Standby 3 30 Oct. Travel Anc - Pdx 5 10 Nov. Electrical Design 10 11 Nov. Electrical Design 8 12 Nov. Write Spex 8 13 Nov. Review plans & Spex \ 8 14 Nov. Review plans and spex 8 Mechanical 09 Oct. Conference w/ Creedon & Lunsford 3.5 02 Nov. Mark up spex 2.5 08 Nov. Review sheets M-1,M-2,M-3 per NSB 8.5 change request 09 Nov. Revise drawings 2.5 10 Nov. Review with Archit/ect .5 ==== 88.5 HRS 88.5 HRS @ $65.00 $5,752.50 Telephone 81.58 ======== Total $5,834.08 Status: Mechanical/Electrical design is complete. The Contract documents will be ready for bid Gafter final review and one on site visit to verify the actual design. OPEN. : ;PASCAL EXTERNAL PROCEDURE TO "OPEN" ;A FILE VARIABLE TO A FILE NAME ;PETE GOODEVE .TITL OPEN ;PJG 78:10:22 .ENT ?OPEN .EXTN XPRET .EXTN WRLIN .EXTD .GCH,CHAN,TEMP1,.FIND,CNTAD,TABAD SP=41 SYSER = JSR @50 ;RDOS ERROR FCH = -1 FST = -2 .NREL ;TYPE THINGFILE = FILE OF THINGS; ; NAME = ARRAY[1..16] OF INTEGER; ;... ;... ;PROCEDURE OPEN(VAR F:THINGFILE;FILENAME:NAME;MODE:INTEGER); ?OPEN: LDA 2,-2,3 ;FILE VARIABLE MOVZR 2,2 ;FORM WORD POINTER STA 2,FBAP ;HOLD IT SUB 1,1 STA 1,TEMP1 ;NUL3L FOR TEXT LINE TERMIN. STA 1,0,2 ;CLEAR FILE BUFFER JSR @.GCH ;GET CHAN ETC JMP CLOS ;RETURNS HERE IF NOT TEXT FILE LDA 1,FST,2 ;CHECK STATUS MOVZL 1,1,SNR ;FOR UNWRITTEN STUFF JSR @.WRLN ;FLUSH IF NEEDED LDA 2,CHAN JSR @ .FIND ;GET TEXT FILE DESCRIPTORS MOVZR 0,3 ;POINTER TO LINE BUFF. SUB 0,0 STA 0,0,3 ;MAKE BUFFER "EMPTY" STA 0,@CNTAD ;CLEAR CHAR COUNT STA 0,@TABAD ;AND TABBING CLOS: LDA 2,CHAN .SYSTM .CLOS 77 LDA 2,CHAN ;IGNORE FAILURE LDA 3,SP LDA 1,0,3 ;MODE LDA 0,-1,3 ;FILENAME zPOINTER MOV 1,1,SNR ;READ MODE? JMP OPN ;YES -- DO NOT CREATE MOVZR# 1,1,SZR ;REWRITE? JMP CREAT ;NO -- DON'T DELETE .SYSTM .DELET LDA 2,CHAN ;DON'T WORRY ABOUT ABSENCE CREAT: .SYSTM .CRAND LDA 2,CHAN ;IGNORE ANY ERROR MOVZR 1,1,SZR ;APPEND NMODE? JMP APPEN ;YES OPN: .SYSTM .OPEN 77 ;OPEN ON ORIGINAL CHANNEL JMP NOPN ;HANDLE A PROBLEM JMP WRCK APPEN: SUB 1,1 .SYSTM .APPEN 77 JMP NOPN WRCK: LDA 3,SP LDA 1,0,3 ;CHECK MODE MOV 1,1,SNR ;WRITE? SUBZL 2,2,SKP ;NO -- SET BUFFER EMPTY FLAG  SUBZR 2,2 ;YES -- SET EOF JMP STAT NOPN: LDA 3,DLECK SUB 2,3,SZR SYSER ;SERIOUS PROBLEM SUBZR 2,2 ;SET EOF ON FILE STAT: LDA 3,FBAP STA 2,FST,3 ;SET FILE VARIABLE STATUS XPRET .WRLN: WRLIN DLECK: 12 ;NON-EXISTENT FILE CHECK FBAP: .-. .END T35. PROGRAM T35(INPUT,OUTPUT); VAR BITNO,TABPOS,CURPOS,WORDNO : INTEGER; TABS : ARRAY [1..5] OF INTEGER; PROCEDURE SBIT(BITNO:INTEGER;VAR WORD:INTEGER);EXTERNAL; BEGIN FOR CURPOS := 1 TO 72 DO BEGIN TABPOS:= CURPOS*8-1; WORDNO:=CURPOS MOD 16; BITN|{O:=CURPOS-WORDNO*16; WRITELN(OUTPUT,' ',TABPOS,WORDNO,BITNO); SBIT(BITNO,TABS[WORDNO]); END; WRITELN(OUTPUT,' ',TABS[1],TABS[2],TABS[3],TABS[4],TABS[5]) END. TEST1.PX GETI.1978.097C 2685 1850.16 C 2686 35.27 C 2687 115 C 2688 144.36 C 2689 50 C 2690 39.85 C 2691 141.22 C 2692 552.87 C 2693 134.32 CC 2694 D 1882.50 C 2695 500 C 2696 500 C 2697 20.32 C 2698 750 C 2699 110.25 C 2700 368 C 2701 134.74 C 2702 6.90 C 2703 99 E 3679.49 C 2704 36 C 2705 365.69 C 2706 18.50 D 7130 C 2707 295 C 2708 472.87 C 2709 15 C 2710 36.50 C 2711 16.75 C 2712 218.26 C 2713 139.96 CC 2714 C 2715 50 C 2716 1500 C 2718 11.56 E 3803.54 W 3069.42 1978.R0B 4196.05 C 2332 2000 C 2356 264.05 C 2355 280.60 D 23546.65 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 Co 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 E 4424.29 D 13878.50 C 2394 85.54 C ƺ2395 1000. C 2396 405.38 C 2397 64. D 3885. C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 E 4499.72 W 5477.65 C 2402 80. D 3222.52 C 2403 1562.80 C 2404 1887.00 C 2405 28.26 C 2406 52.68 C 2407 53.35 C 2408 27.00 C 2409 301.50 C 2410 32.23 C 2411 110. C 2412 1500 C 2413 15 C 2414 286.41 C 2415 12.68 C 2416 93.20 C 2417 7.75 C 2418 66.34 C 2419 1197.81 C 2420 50 C 2421 261.65 C 2422 10 C 2423 2386 C 2424 28.15 C 2425 8.95 D 3727.5 C 2426 16.05 C 2427 450.59 C 2428 621.73 C 2429 4000. C 2430 6.751r C 2431 110 C 2432 991 C 2433 41.5 C 2434 52 C 2435 675 D 10674.20 C 2436 40 CC 2437 C 2438 3.47 C 2439 11 C 2440 339.45 C 2441 28.76 C 2442 589.40 C 2443 19.89 C 2444 16. C 2445 C 2446 93.20 C 2447 410.72 C 2448 695.00 C 2449 50. C 2450 13.00 C 2451 55.00j C 2452 74.42 C 2453 56.30 C 2454 7.85 C 2455 223.17 C 2456 368.00 C 2457 1562.80 E 4211.49 W 3391.80 D 5532.20 C 2458 450.59 C 2459 75.65 C 2460 923. CC 2461 CC 2462 C 2463 25 C 2464 26 C 2465 50.50 C 2466 39 C 2467 4.80 CC 2468 C 2469 70 C 2470 500 C 247/1 12 D 6157.00 C 2472 113.56 C 2473 9.95 CC 2474 C 2475 368 C 2476 616 C 2477 208.65 C 2478 380 C 2479 129 C 2480 3.95 C 2481 7.06 C 2482 30 C 2483 15 D 5631.50 CC 2484 C 2485 2000 C 2486 7 C 2487 34.03 C 2488 474.35 C 2489 179.46 C 2490 145 D 5395 C 2491 +-12.30 C 2492 7 C 2493 2 C 2494 3.50 C 2495 46.49 CC 2496 C 2497 117.03 E 5322. W 7656 CC2498 C 2499 1773.70 C 2500 94.90 C 2501 50 C 2502 21.85 C 2503 89.37 D 10811.70 C 2504 547.42 C 2505 1203.31 C 2506 368 C 2507 616 C 2508 10.80 C 2509 23.30 C 2510 27.6w0 C 2511 126.00 C 2512 168.26 C 2513 230.66 C 2514 18 C 2515 20 C 2516 42 C 2517 8 D 7237.50 C 2518 446.86 C 2519 20 C 2520 28.99 C 2521 4.15 C 2522 61.36 C 2523 1210.49 C 2524 7 C 2525 16 C 2526 45.45 C 2527 13.30 C 2528 387 C 2529 18.70 CC 2530 C 2531 18BJ00 C 2532 206.25 C 2533 1703.40 D 3825 E 5096.35 W 4255.04 C 2534 3178.45 CC 2535 C 2536 97.67 C 2537 55.93 C 2538 26 C 2539 550 C 2540 106.32 C 2541 105 C 2542 108.06 D 6507.66 CC 2543 C 2544 74.95 C 2545 671.81 C 2546 262.60 C 2547 50.50 C 2548 11.70 C 2549 85 C 2550 10 C 2551 34 C 2552 200 C 2553 368 C 2554 912.90 C 2555 500 C 2556 90 E 4635.31 C 2557 120 C 2558 2.05 C 2559 899 C 2560 267.58 D 465 D 3182.36 C 2561 100 CC 2562 DM 200 D 5187.50 C 2563 500 C 2564 100.75 C 2565 3000 C 2566 1800 C 2567 75.21 - C 2568 563.06 C 2569 26 C 2570 192 C 2571 14.30 C 2572 184.25 D 3000 C 2573 500 C 2574 115 C 2575 42 C 2576 26.12 C 2580 671.81 C 2581 37.70 C 2582 72 C 2583 350 C 2584 23.95 C 2585 1773.70 CC 2586 C 2587 271.60 CC 2588 D 2107.75 D 4990 C 2589 5 DM 14.60 DL*M 7.50 D 5680 C 2590 105.78 C 2591 311.54 C 2595 432.25 C 2596 28 C 2897 200 C 2598 919 C 2599 187.22 C 2600 134 C 2601 90.50 C 2602 153.64 C 2603 14850. CC 2604 C 2605 50 C 2606 186.36 C 2607 85 E 5817.44 W 8373.52 D 32927.50 C 2608 1352.93 C 2609 50 CC 2610 CC 2611 DM 7.37 C 2612 17 D 2040 C 2613 33 C 2614 9.22 C 2615 115 C 2616 1875.10 C 2617 134 C 2618 46.45 C 2619 790.75 C 2620 33 C 2621 368 C 2622 52.30 E 3104.27 C 2623 309.14 C 2624 9 C 2625 1452.77 D 8742.50 C 2626 50 C 2627 39.50 CC 2628 C 2629 56 8C 2630 164 C 2631 400.88 CC 2632 C 2633 8.75 C 2634 7.50 C 2635 48 C 2636 12.55 C 2637 139.70 D 538 C 2639 1000 C 2640 115 C 2641 30 E 3991.35 W 2861.14 C 2642 101.39 D 3000 C 2643 140 C 2644 35 C 2645 671.81 C 2646 1850.16 C 2647 70 C 2648 14.20 C 2649 50E0 C 2650 13.05 C 2651 205.74 C 2652 199.40 C 2653 17.16 C 2654 19.94 C 2655 34.12 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 C 2657 116.89 D 1545 E 3874.55 C 2659 368 C 2660 37 C 2661 25 C 2662 15 C 2663 500 C 2664 25.35 D 6212.50 CC 2665 C 2666 50 C 2667 96.30 C 2668 495.42 C 2669 145 C 2671 16.80 C 2672 29 C 2673 11.48 W 2210 W 483 C 2674 1397.48 C 2675 200 C 2676 500 CC 2677 C 2678 49.56 C 2679 10000 C 2680 110 C 2681 1007 C 2682 37.64 E 4018.89 W 2792.12 W 800.03 D 4762.50 C 2685 1850.16 C 2686 35.27 C N2687 115 C 2688 144.36 C 2689 50 C 2690 39.85 C 2691 141.22 C 2692 552.87 C 2693 134.32 CC 2694 D 1882.50 C 2695 500 C 2696 500 C 2697 20.32 C 2698 750 C 2699 110.25 C 2700 368 C 2701 134.74 C 2702 6.90 C 2703 99 E 3679.49 C 2704 36 C 2705 365.69 C 2706 18\.50 D 7130 C 2707 295 C 2708 472.87 C 2709 15 C 2710 36.50 C 2711 16.75 C 2712 218.26 C 2713 139.96 CC 2714 C 2715 50 C 2716 1500 C 2718 11.56 E 3803.54 W 3069.42 C 2717 1500 C 2719 4812.51 D 1545 C 2720 3920.58 C 2721 115 C 2722 76.99 C 2723 40.30 C 2724 -117.43 C 2725 552.87 C 2726 127.35 C 2727 6 C 2728 20 C 2729 52.84 C 2730 5.74 DM 23.10 C 2731 50 D 592.50 C 2732 911.35 C 2733 46.85 C 2734 164.11 C 2735 1850.16 C 2736 140 D 1997 E 3059.63 C 2737 368 D 1467.50 C 2738 154.01 C 2739 33 C 2740 40 C 2741 15.115 C 2742 342.32 C 2743 10 C 2744 160 C 2745 19 C 2746 1136.47 C 2747 174.34 C 2748 208.22 C 2749 131.46 C 2750 145.75 C 2751 30 C 2752 54 C 2753 55 C 2754 569.90 C 2755 64.50 C 2756 75 CC 2757 E 3685.95 W 2710.13 C 2758 374 C 2759 115 C 2760 500 C 2761 50I0 C 2762 1510 1978.DP  0 4 5 6 7 9 14 19 20 21 22 24 25 26 27 29 30 105 113 130 131 137 144 155 168 170 204 210 219 240 268 270 292 29_9 300 321 325 365 377 395 419 468 648 649 650 651 SEARCH KEY 0 4 C 2337 43.50 0 0 5 C 2338 6.00 0 0 6 C 2345 53.35 0 0 7 C 2347 38.00 0 0 9 C 2356 264.05 0 0 14 CC 2357 19 r CC 2362 20 CC 2363 21 CC 2364 22 CC 2365 24 CC 2367 25 CC 2368 26 CC 2369 27 CC 2370 29 CC 2372 30 CC 2373 105 CC 2437 113 CC 2445 130 CC 2461 131 CC 2462 137 CC 2468 144  CC 2474 155 CC 2484 168 CC 2496 170 CC 2498 204 CC 2530 210 CC 2535 219 CC 2543 240 CC 2562 268 CC 2586 270 CC 2588 292 CC 2604 299 CC 2610 300 CC 2611 321 CC 2628 325 CC 2632 365 C5C 2665 377 CC 2677 395 CC 2694 419 CC 2714 468 CC 2757 648 CC 542 649 CC 543 650 CC 2592 651 CC 2658 AMOUNT = 4.049E+02 1 151 157 164 198 233 273 284 295 327 356 370 371 384 401 444 SEARCH KEY 1 151 C 2481 7.06 1 9 157 C 2486 7 1 9 164 C 2492 7 1 11 198 C 2524 7 1 12 233 C 2557 120 1 15 273 C 2589 5 1 17 284 C 2596 28 1 18 295 C 2607 85 1 18 327 C 2634 7.50 1 21 35r;6 C 2657 116.89 1 23 370 C 2670 8.70 1 24 371 C 2671 16.80 1 24 384 C 2684 49.44 1 25 401 C 2699 110.25 1 26 444 C 2736 140 1 27 AMOUNT = 7.156E+02 2 36 67 125 171 207 267 286 308 342  U386 443 SEARCH KEY 2 36 C 2379 1562.80 2 2 67 C 2403 1562.80 2 5 125 C 2457 1562.80 2 7 171 C 2499 1773.70 2 11 207 C 2533 1703.40 2 12 267 C 2585 1773.70 2 16 286 C 2598 919 2 18 308 C 2616 1875.10 2 20 34nf2 C 2646 1850.16 2 22 386 C 2685 1850.16 2 25 443 C 2735 1850.16 2 27 AMOUNT = 1.828E+04 3 15 35 80 114 169 216 255 307 334 388 427 470 SEARCH KEY 3 15 C 2358 10 3 1 35 C 2378 93.220 3 2  80 C 2416 93.20 3 5 114 C 2446 93.20 3 6 169 C 2497 117.03 3 10 216 C 2541 105 3 14 255 C 2574 115 3 16 307 C 2615 115 3 20 334 C 2640 115 3 21 388 C 2687 115 3 25 427 C 2721 115 3 27 470 C 2759 115 3 29 AMOUNT = 1.201E+03 4 41 56 82 110 142 167 192 212 248 259 283 324 328 336 368 389 392 413 430 465 SEARCH KEY 4 41 C 2383 139.24 4 2 56 C 2396 405.38 4 3 Ȓ82 C 2418 66.34 4 3 110 C 2442 589.40 4 6 142 C 2472 113.56 4 8 167 C 2495 46.49 4 10 192 C 2518 446.86 4 11 212 C 2537 55.93 4 14 248 C 2568 563.06 4 15 259 C 2577 81.71 4 16 283 C 2595 432.25 4 18 324 C 2631 400.88 4 21 328 C 2635 48 4 21 336 C 2642 101.39 4 22 368 C 2668 495.42 4 23 389 C 2688 144.36 4 25 392 C 2691 141.22 4 25 413 C 2708 472.87 4 26 430 C 2724 117.43 4 27 465 C 2754 569.90 4 28 AMOUNT = 5.431E+03 } 5 32 37 38 42 43 70 71 72 74 78 79 83 91 96 99 121 122 123 129 135 147 149 159 160 161 182 183 184 185 200 201 213 222 || 223 228 239 251 252 258 287 288 289 290 305 306 309 310 314 323 335 348 349 350 363 369 372 399 404 415 417 423 429 432 434 436 441 442 448 462 463 SEARCH KEY 5 32 C 2375 86 5 1 37 C 2380 3.60 5 2 38 C 2381 136.16 5 2 42 C 2384 155 5 2 43 C 2385 60.30 5 2 70 C 2406 52.68 5 5 71 C 2407 53.35 5 5 72 C 2408 27.00 5 5 74 C 2410 32.23 5 5$ 78 C 2414 286.41 5 3 79 C 2415 12.68 5 3 83 C 2419 1197.81 5 5 91 C 2426 16.05 5 7 96 C 2431 110 5 6 99 C 2434 52 5 6 121 C 2453 56.30 5 7 122 C 2454 7.85 5 7 123 C 2455 223.17 5 7 129 C 2460 923. 5 j8 135 C 2466 39 5 8 147 C 2477 208.65 5 8 149 C 2479 129 5 9 159 C 2488 474.35 5 9 160 C 2489 179.46 5 9 161 C 2490 145 5 9 182 C 2509 23.30 5 11 183 C 2510 27.60 5 11 184 C 2511 126.00 5 11 185 C 2512 168.\&26 5 11 200 C 2526 45.45 5 12 201 C 2527 13.30 5 12 213 C 2538 26 5 14 222 C 2546 262.60 5 14 223 C 2547 50.50 5 14 228 C 2552 200 5 14 239 C 2561 100 5 15 251 C 2571 14.30 5 15 252 C 2572 184.25 5 15 258 C:` 2576 26.12 5 16 287 C 2599 187.22 5 18 288 C 2600 134 5 18 289 C 2601 90.50 5 18 290 C 2602 153.64 5 18 305 C 2613 33 5 20 306 C 2614 9.22 5 20 309 C 2617 134 5 20 310 C 2618 46.45 5 20 314 C 2622 52.30 5 20 1 323 C 2630 164 5 21 335 C 2641 30 5 21 348 C 2652 199.40 5 22 349 C 2653 17.16 5 22 350 C 2654 19.94 5 22 363 C 2664 25.35 5 23 369 C 2669 145 5 23 372 C 2672 29 5 23 399 C 2697 20.32 5 26 404 C 2702 6.90 5 2<5 415 C 2710 36.50 5 26 417 C 2712 218.26 5 26 423 C 2718 11.56 5 26 429 C 2723 40.30 5 27 432 C 2726 127.35 5 27 434 C 2728 20 5 27 436 C 2730 5.74 5 27 441 C 2733 46.85 5 27 442 C 2734 164.11 5 27 448 C 2u738 154.01 5 28 462 C 2751 30 5 28 463 C 2752 54 5 28 AMOUNT = 8.340E+03 6 225 227 264 302 456 466 SEARCH KEY 6 225 C 2549 85 6 14 227 C 2551 34 6 14 264 C 2582 72 6 16 302 C 2612 17 6 20 456 C 2u8746 1136.47 6 28 466 C 2755 64.50 6 28 AMOUNT = 1.409E+03 7 116 148 SEARCH KEY 7 116 C 2448 695.00 7 6 148 C 2478 380 7 9 AMOUNT = 1.075E+03 8 57 93 100 175 215 217 243 266 279 W280 294 315 376 378 397 398 451 452 457 SEARCH KEY 8 57 C 2397 64. 8 3 93 C 2428 621.73 8 6 100 C 2435 675 8 6 175 C 2503 89.37 8 10 215 C 2540 106.32 8 14 217 C 2542 108.06 8 14 243 C 25y63 500 8 15 266 C 2584 23.95 8 16 279 C 2590 105.78 8 17 280 C 2591 311.54 8 17 294 C 2606 186.36 8 18 315 C 2623 309.14 8 20 376 C 2676 500 8 23 378 C 2678 49.56 8 24 397 C 2695 500 8 25 398 C 2696 500 8 25 0 451 C 2741 15.15 8 28 452 C 2742 342.32 8 28 457 C 2747 174.34 8 28 AMOUNT = 5.182E+03 9 146 180 230 SEARCH KEY 9 146 C 2476 616 9 8 180 C 2507 616 9 11 230 C 2554 912.90 9 14 AMOUNT = 2.144E+03 10 % 16 194 195 196 197 199 220 232 244 247 459 461 SEARCH KEY 10 16 C 2359 42.80 10 1 194 C 2520 28.99 10 12 195 C 2521 4.15 10 12 196 C 2522 61.36 10 12 197 C 2523 1210.49 10 12 199 C 2525 16 10 12 220 C 2544 74.95 10 14 232 C 2556 90 10 14 244 C 2564 100.75 10 15 247 C 2567 75.21 10 15 459 C 2749 131.46 10 28  461 C 2750 145.75 10 28 AMOUNT = 1.981E+03 10 16 194 195 196 197 199 220 23Y42 244 247 459 461 SEARCH KEY 10 16 C 2359 42.80 10 1 194 C 2520 28.99 10 12 195 C 2521 4.15 10 12 196 C 2522 61.36 10 12 197 C 2523 1210.49 10 12 199 C 2525 16 10 12 220 C 2544 74.95 10 14 232 9 C 2556 90 10 14 244 C 2564 100.75 10 15 247 C 2567 75.21 10 15 459 C 2749 131.46 10 28 461 C 2750 145.75 10 28 AMOUNT = 1.981E+03 11 81 128 174 260 329 346 387 435 SEARCH KEY 11 81 C 2417 7.75 11 3  128 C 2459 75.65 11 8 174 C 2502 21.85 11 10 260 C 2578 36.81 11 16 329 C 2636 12.55 11 21 346 C 2650 13.05 11 22 387 C 2686 35.27 11 25 435 C 2729 52.84 11 27 AMOUNT = 2.557E+02 12 474 475 476 477 478 ~ 479 480 481 482 483 484 485 486 487 488 492 493 494 495 496 497 499  500 501 502 503 504 505 506 507 509 513 514 515 516 517 518 520 521 52T2 523 524 525 526 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 552 553 554 555 556 557 558 559 560 561 566 567 568 569 570 571 572 573 574 575 576 577 578  579 580 581 582 586 587 588 589 590 591 592 593 596 597 598 599 600 602 603 # 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 623 625 627 628 629 630 631 632 633 634 635 639 640 641 642 643 SE0HARCH KEY 12 474 E 496 1177.09 12 3 475 E 495 1076.21 12 3 476 E 494 392.55 12 2 477  E 493 456.63 12 2 478 E 492 497.88 12 2 479 E 491 574.03 12 2 480 E 490 890.20 12 2 481 E 489 842.19 12 2 482 E 488 788.81 12 207 483 E 510 304.73 12 5 484 E 509 432.47 12 5 485 E 508 575.53 12 5 486 E 507 502.81 12 5 487 E 506 842.80 12 5 488 E 505 1033.57 12 5 492 W 501 387.26 12 3 493 W 500 372.80 12 3 494 W 499 561.91 12 3 495 W ;498 497.97 12 3 496 E 497 926.48 12 3 497 E 519 84.76 12 12 499 E 511 830.88 12 7 500 E 537 464.55 12 10 501 E 531 356.37 12 9 502 E 529 589.96 12 9 503 E 530 436.65 12 9 504 E 528 393.86 12 9 505 E 527 888.88 1n2 9 506 E 526 1034.18 12 9 507 E 525 991.35 12 9 509 W 522 182.00 12 8 513 W 517 277.10 12 7 514 E 516 259.01 12 7 515 E 515 439.51 12 7 516 E 514 398.75 12 7 517 E 513 1113.18 12 7 518 E 512 893.06 12 7 520: E 532 1062.02 12 10 521 E 533 1122.84 12 10 522 E 534 999.70 12 10  523 E 535 538.32 12 10 524 E 536 643.20 12 10 525 E 538 386.34 12 10 526 E 539 105.03 12 10 530 E 546 924.04 12 12 531 E 547 982.73 12 12 532 E 548 873.83 12 12 533 E 549 473.57 12 12 534 E 550 542.91 12 12 535 E 551 440.27 12 12 536 E 553 299.63 12 12 537 E 552 185.93 12 12 538 E 568 343.38 12 15 539 E 569 304.73 12 15 540 E 567 596.15 12 15 541 E 566 465.02 12 15 542 E 565 948.24 12 14 543 E 564 985.99 12 14 544 E 563 991.80 12 14 545 E 557 473.57 12 13 546 E 558 601.00 12 13 547 E 560 265.01 12 13 548 E 555 991.16 12 12 549 E 554 927.77 12 12 550 E 556 85`2.47 12 13 552 E 561 297.08 12 13 553 E 559 688.29 12 13 554 E 570 1050.61 12 16 555 E 571 1069.11 12 16 556 E 572 1019.07 12 16 557 E 573 566.88 12 16 558 E 574 630.97 12 16 559 E 575 269.88 12 16 560 E 576 472i.09 12 16 561 E 577 346.43 12 16 566 E 582 1046.89 12 17 567 E 583 1151.39 12 17 568 E 584 996.51 12 17 569 E 585 627.63 12 17 570 E 586 732.19 12 17 571 E 587 537.45 12 17 572 E 588 513.44 12 17 573 E 589 374.42 12 17 574 E 590 110.15 12 17 575 E 591 979.37 12 18 576 E 592 1426.28 12 18 577 E 593 960.21 12 18 578 E 595 645.08 12 18 579 E 597 430.98 12 18 580 E 598 343.31 12 18 581 E 594 531.30 12 18 582 E 596 500.91 12 18 586 E 603 796.26 12 20 587 E 604 802.32 12 20 588 E 605 379.26 12 20 589 E 606 542.91 12 20 590 E 607 283.06 12 20 591 E 608 180.93 12 20 592 E 609 282.18 12 20 593 E 615 369.00 12 21 596 E 627 1209.08 12 24 597 E 628 1158.89 12 24 598 E 629 552.62 12 24 599 E 630 596.12 12 24 600 E 632 359.96 12 24 602 E 635 921.48 12 25 603 E 636 1050.72 12 25 604 E 637 533.66 12 25 605 E 638 610.74 12 25 606 E 639 361.79 12 25 f 607 E 640 201.10 12 25  608 E 645 346.92 12 26 609 E 610 325.46 12 21 610 E 611 1020.87 12 21 611 E 612 922.47 12 21 612 E 613 505.84 12 21 613 E 614 595.69 12 21 614 E 616 258.02 12 21 615 E 618 1053.55 12 23 &D 616 E 619 845.14 12 23 617 E 620 420.35 12 23 618 E 621 548.51 12 23 619 E 622 293.42 12 23 620 E 623 339.16 12 23 621 E 624 374.42 12 23 623 E 631 142.22 12 24 625 E 660 484.10 12 29 627 E 650 981.35 12 28 628 E 651 992.28 12 28 629 E 652 327.45 12 28 630 E 653 384.95 12 28 631 E 641 1081.13 12 26 632 E 642 1042.43 12 26 633 E 643 490.20 12 26 634 E 644 516.116 12 26 635 E 646 326.75 12 26 639 E 654 373.60 12 28 640 E 657 1176.43 12 29 641 E 658 1184.18 12 29 642 E 659 566.46 12 29 643 E 661 247.78 12 29 AMOUNT = 8.877E+04 13 418 SEARCH KEY 13 418 C 2713 139.96 13 26 AMOUNT = 1.399E+02 14 490 491 510 511 512 n519 528 551 562 564 565 583 594 595 624 626 636 647 SEARCH KEY 14 490 W 503 702.05 14 4 491 W 502 4521.60 14 4 510 W 523 1549.00 14 8 511 W 521 2210.00 14 8 512 W 518 3391.80 14 7 u 519 W 540 4601.70 14 10 528 W 544 5.00 14 11 551 W 562 4255.04 14 13 562 W 578 4412.14 14 16 564 W 580 2210.00 14 16 565 W 581 38.36 14 16 583 W 599 5659.58 14 18 594 W 617 2861.14 14 21 595 E 625 2210.00 14 23  624 W 633 2792.12 14 24 626 W 662 2276.24 14 29 636 W 647 2424.72 14 26 647 W 655 2210. 14 29 AMOUNT = 4.833E+04 15 489 498 508 527 529 563 584 585 601 622 637 638 644 645 646 SEARCHt KEY 15 489 E 504 254.00 15 4 498 E 520 483.00 15 8 508 E 524 733.00 15 8 527 W 541 1703.92 15 11 529 W 545 1345.38 15 11 563 W 579 483.00 15 16 584 W 600 1863.74 15 18 585 W 602 850.20 15 18 601 W 634 800.03 15l 24 622 W 626 483.00 15 23 637 W 648 393.57 15 26 638 W 649 251.13 15 26 644 E 663 393.62 15 29 645 E 664 40.27 15 29 646 W 656 483 15 29 AMOUNT = 1.056E+04 16 75 86 97 SEARCH KEY 16 75 C 2411 110. 16 5 86 C 2422 10 16 5 97 C 2432 991 16 6 AMOUNT = 1.111E+03 17 31 44 68 87 92 118 127 177 202 221 235 249 262 311 312 322 341 393 405 426  431 469 SEARCH KEY 17 31 C 2374 547.42 17 1 44 C 2386 1151 17 2 68 C 2404 1887.00 17 5 87 C 2423 2386 17 5 92 C 2427 450.59 17 5 118 C 2450 13.00 17 6 127 C 2458 450.59 17 8 177 C 2504 547.42 17 11 202 C 2528 387 17 12 22(;1 C 2545 671.81 17 14 235 C 2559 899 17 15 249 C 2569 26 17 15 262 C 2580 671.81 17 16 311 C 2619 790.75 17 20 312 C 2620 33 17 20 322 C 2629 56 17 20 341 C 2645 671.81 17 22 393 C 2692 552.87 17 25 405 C 2703 99 17 25 426 C 2720 3920.58 17 27 431 C 2725 552.87 17 27 469 C 2758 374 17 29 AMOUNT = 1.713E+04 21 2 33 34 55 69 73 76 94 139 156 205 231 245 246 254 265 332 3>33 355 362 383 400 421 422 471 472 473 SEARCH KEY 21 2 C 2332 2000 21 1 33 C 2376 500 21 1 34 C 2377 1500 21 3 55 C 2395 1000. 21 3 69 C 2405 28.26 21 5 73 C 2409 301.50 21 5 76 C 2[412 1500 21 10 94 C 2429 4000. 21 6 139 C 2470 500 21 8 156 C 2485 2000 21 9 205 C 2531 1800 21 13 231 C 2555 500 21 14 245 C 2565 3000 21 15 246 C 2566 1800 21 17 254 C 2573 500 21 15 265 C 2583 350 21 16 3332 C 2638 1200 21 22 333 C 2639 1000 21 21 355 C 2656 1500 21 23 362 C 2663 500 21 23 383 C 2683 2000. 21 25 400 C 2698 750 21 26 421 C 2716 1500 21 27 422 C 2717 1500 21 28 471 C 2760 500 21 29 472 C 2761 500E 21 29 473 C 2762 1510 21 29 AMOUNT = 3.374E+04 22 3 13 46 47 48 50 52 64 108 111 119 120 133 136 140 158 165 172 178 209 236 250 282 291 330 3(39 347 351 360 373 382 390 394 403 420 428 464 SEARCH KEY 22 3 C 2313 1804.52 22 1 13 C 2355 280.60 22 1 46 C 2388 66.80 22 2  47 C 2389 33.30 22 2 48 C 2390 22.80 22 3 50 C 2392 39 22˗ 2 52 C 2394 85.54 22 2 64 C 2401 29.39 22 3 108 C 2440 339.45 22 6 111 C 2443 19.89 22 6 119 C 2451 55.00 22 7 120 C 2452 74.42 22 7 133 C 2464 26 22 8 136 C 2467 4.80 22 8 140 C 2471 12 22 8 158 C 2487 M334.03 22 9 165 C 2493 2 22 9 172 C 2500 94.90 22 11 178 C 2505 1203.31 22 11 209 C 2534 3178.45 22 14 236 C 2560 267.58 22 15 250 C 2570 192 22 15 282 C 2594 109.92 22 17 291 C 2603 14850. 22 18 330 C 2637 139.7"0 22 21 339 C 2643 140 22 21 347 C 2651 205.74 22 22 351 C 2655 34.12 22 22 360 C 2661 25 22 22 373 C 2673 11.48 22 23 382 C 2682 37.64 22 24 390 C 2689 50 22 25 394 C 2693 134.32 22 25 403 C 2701 134.74 22 25  420 C 2715 50 22 26 428 C 2722 76.99 22 27 464 C 2753 55 22 28 AMOUNT = 2.392E+04 23 65 85 88 124 145 179 211 229  261 269 313 343 344 358 379 380 381 402 424 446 U450 SEARCH KEY 23 65 C 2402 80. 23 3 85 C 2421 261.65 23 5 88 C 2424 28.15 23 5 124 C 2456 368.00 23 7 145 C 2475 368 23 8 179 C 2506 368 23 11 211 C 2536 97.67 23 14 229 C 2553 368 23 14 261 C 2579 368.00 23 16 269 C 2587 271.60 23 17 313 C 2621 368 23 20 343 C 2647 70 23 22 344 C 2648 14.20 23 22 358 C 2659 368 23 22 379  C 2679 10000 23 24 380 C 2680 110 23 24 381 C 2681 1007 23 24 402 C 2700 368 23 25 424 C 2719 4812.51 23 27 446 C 2737 368 23 27 450 C 2740 40 23 28 AMOUNT = 2.010E+04 24 8 84 214 293 319 345 366 438 SEARCH KEY 24 8 C 2348 50.00 24 1 84 C 2420 50 24 3 214 C 2539 550 24 14 293 C 2605 50 24 18 319 C 2626 50 24 20 345 C 2649 500 24 22 366 C 2666 50 24 23 438 C 2731 50 24 27 AMOUNT = 1.350E+03 25 51 115 186 224 281 297 317 374 440 458 SEARCH KEY 25 51 C 2393 64.65 25 2 115 C 2447 410.72 25 6 186 C 2513 230.66 25 11 224 C 2548 11.70 25 14 281 C 2593 770.94 25 17 297 C 2608 1352.93 25 19 317 C 2625 1452.77 25 20 374 C 2674 1397.48 25 23 440 C 2732 911.35 25 27 458 C 2748 208.22 25 28 AMOUNT = 6.811E+03 26 189 193 206 257 340 412 453 455 SEARCH KEY 26 189 C 2516 42 26 11 193 C 2519 20 26 12 206 C 2532 206.25 26 12 257 C 2575 42 26 16 340 C 2644 35 26 22 412 C 2707 295 26 26 453 C 2743 10 26 28 455 C 2745 19 26 28 AMOUNT = 6.692E+02 27 117 285 409 454 SEARCH KEY 27 117 C 2449 50. 27 6 285 C 2597 200 27 18 409 C 2705 635.69 27 26 454 C 2744 160 27 28 AMOUNT = 1.045Et +03 28 375 467 SEARCH KEY 28 375 C 2675 200 28 23 467 C 2756 75 28 29 AMOUNT = 2.750E+02 1978CHECKS. B 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 1 1 C 2338 6.00 1 1 C 2345 53.35 1 1 C 2347 38.00 1 1 C 2348 50.00 24 1 C 2356 264.05 4 1 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 3 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C i2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 3 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 DM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5d 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 10 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65u 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.?20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.0+0 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18e 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 i10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 10 C 2503 89.37 8 10 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.004 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 26 11 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10x 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 12 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 1076.32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 yC 2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 25@68 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 .109.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2597 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 17 20 C 2621 368 23 20 C 2622 52.30 5 20 C 26U23 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 C 2638 1200 21 22 C 2639 1000 21 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 26510 205.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 22 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 23 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000P 23 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 25 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 21 26 C 2699 110.25 1 26 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 635.69 27 26 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 26 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 27?20 3920.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 4k6.85 5 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 / C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 2o1 29 C 2762 1510 21 29 E 496 1177.09 12 3 E 495 1076.21 12 3 E 494 392.55 12 2 E 493 456.63 12 2 E 492 497.88 12 2 E 491 574.03 12 2 E 490 890.20 12 2 E 489 842.19 12 2 E 488 788.81 12 2 E 510 304.73 12 5 E 509 432.47 12 5 E 508 575.53 12 5 E 507 502.81 12" 5 E 506 842.80 12 5 E 505 1033.57 12 5 E 504 254.00 15 4 W 503 702.05 14 4 W 502 4521.60 14 4 W 501 387.26 12 3 W 500 372.80 12 3 W 499 561.91 12 3 W 498 497.97 12 3 E 497 926.48 12 3 E 519 84.76 12 12 E 520 483.00 15 8 E 511 830.88 12 7 E 537 464.55 12 1u0 E 531 356.37 12 9 E 529 589.96 12 9 E 530 436.65 12 9 E 528 393.86 12 9 E 527 888.88 12 9 E 526 1034.18 12 9 E 525 991.35 12 9 E 524 733.00 15 8 W 522 182.00 12 8 W 523 1549.00 14 8 W 521 2210.00 14 8 W 518 3391.80 14 7 W 517 277.10 12 7 E 516 259.01 12 7 E 515 439.51 12 7 E 514 398.75 12 7 E 513 1113.18 12 7 E 512 893.06 12 7 W 540 4601.70 14 10 E 532 1062.02 12 10 E 533 1122.84 12 10 E 534 999.70 12 10 E 535 538.32 12 10 E 536 643.20 12 10 E 538 386.34 12 10 E 539 105.03 12 10 W 541 1703.92 15 11 W 544 y5.00 14 11 W 545 1345.38 15 11 E 546 924.04 12 12 E 547 982.73 12 12 E 548 873.83 12 12 E 549 473.57 12 12 E 550 542.91 12 12 E 551 440.27 12 12 E 553 299.63 12 12 E 552 185.93 12 12 E 568 343.38 12 15 E 569 304.73 12 15 E 567 596.15 12 15 E 566 465.02 12 G_15 E 565 948.24 12 14 E 564 985.99 12 14 E 563 991.80 12 14 E 557 473.57 12 13 E 558 601.00 12 13 E 560 265.01 12 13 E 555 991.16 12 12 E 554 927.77 12 12 E 556 852.47 12 13 W 562 4255.04 14 13 E 561 297.08 12 13 E 559 688.29 12 13 E 570 1050.61 12 16 E 57w1 1069.11 12 16 E 572 1019.07 12 16 E 573 566.88 12 16 E 574 630.97 12 16 E 575 269.88 12 16 E 576 472.09 12 16 E 577 346.43 12 16 W 578 4412.14 14 16 W 579 483.00 15 16 W 580 2210.00 14 16 W 581 38.36 14 16 E 582 1046.89 12 17 E 583 1151.39 12 17 E 584 996.51 12 17 E 585 627.63 12 17 E 586 732.19 12 17 E 587 537.45 12 17 E 588 513.44 12 17 E 589 374.42 12 17 E 590 110.15 12 17 E 591 979.37 12 18 E 592 1426.28 12 18 E 593 960.21 12 18 E 595 645.08 12 18 E 597 430.98 12 18 E 598 343.31 12 18 E 594 531.30 12 18 E 596 500.91 12 18 W 599 5659.58 14 18 W 600 1863.74 15 18 W 602 850.20 15 18 E 603 796.26 12 20 E 604 802.32 12 20 E 605 379.26 12 20 E 606 542.91 12 20 E 607 283.06 12 20 E 608 180.93 12 20 E 609 282.18 12 20 E 615 369.00 12 21 W 617 2861.14 14 21 E 6s25 2210.00 14 23 E 627 1209.08 12 24 E 628 1158.89 12 24 E 629 552.62 12 24 E 630 596.12 12 24 E 632 359.96 12 24 W 634 800.03 15 24 E 635 921.48 12 25 E 636 1050.72 12 25 E 637 533.66 12 25 E 638 610.74 12 25 E 639 361.79 12 25 E 640 201.10 12 25 E 645 3406.92 12 26 E 610 325.46 12 21 E 611 1020.87 12 21 E 612 922.47 12 21 E 613 505.84 12 21 E 614 595.69 12 21 E 616 258.02 12 21 E 618 1053.55 12 23 E 619 845.14 12 23 E 620 420.35 12 23 E 621 548.51 12 23 E 622 293.42 12 23 E 623 339.16 12 23 E 624 374.42 12 23 W 626 483.00 15 23 E 631 142.22 12 24 W 633 2792.12 14 24 E 660 484.10 12 29 W 662 2276.24 14 29 E 650 981.35 12 28 E 651 992.28 12 28 E 652 327.45 12 28 E 653 384.95 12 28 E 641 1081.13 12 26 E 642 1042.43 12 26 E 643 490.20 12 26 E 644 516.116 12 26 uE 646 326.75 12 26 W 647 2424.72 14 26 W 648 393.57 15 26 W 649 251.13 15 26 E 654 373.60 12 28 E 657 1176.43 12 29 E 658 1184.18 12 29 E 659 566.46 12 29 E 661 247.78 12 29 E 663 393.62 15 29 E 664 40.27 15 29 W 656 483 15 29 W 655 2210. 14 29 CC 542 CC 543 CC 2592 CC 2658 PL5.q PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL% OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VAIRSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF ALFA; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF Py-ACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER);s BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITE(CX\:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FgOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'}9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM :=> BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L :D= Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAHR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : IN]TEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM =?v IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5,L:3,A:5) END;{LIST CODEuG} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LE4VEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYM = LPAREN2V THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS);  IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP :e= SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYMB = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9);  LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BմEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN  GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+SNTATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0j,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATEMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CBONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END; IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM;  END ELSE[ ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYgM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE IyNTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR Bi1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])) END; 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]<=S[T+1]) END END ;{CASE} LOD : BEGIN T := T+1;S[T] := S[BASE(L)+A] END; STO : BEGIN S[BASE(L)+A] := S[T]; WRITELN(S[T]);T :=– T-1 END; CAL : BEGIN {GENERATE NEW BLOCK MARK} S[T+1] := BASE(L);S[T+2] := B; S[T+3] := P; B := T+1; P := A END; INT : T := T+A; JMP : P := A; JPC : BEGIN IF S[T] = 0 THEN P := A;T := T-1; END END {WITH,CASE} UNTIL P = 0; WRITE('END OF PL/"0'); END {INTERPRET}; BEGIN {MAIN PROGRAM} FOR CH := 'A' TO ';' DO SSYM[CH] := NUL; WORD[1] := 'BEGIN '; WORD[2] := 'CALL '; WORD[3] := 'CONST '; WORD[4] := 'DO '; WORD[5] := 'END '; WORD[6] := 'IF '; WORD[7] := 'ODD  '; WORD[8] := 'PROCEDURE '; WORD[9] := 'THEN '; WORD[10]:= 'VAR '; WORD[11]:= 'WHILE '; WSYM[1] := BEGINSYM; WSYM[2] := CALLSYM; WSYM[3] := CONSTSYM; WSYM[4] := DOSYM; WSYM[5] := ENDSYM; WSYM[6] := IFSYM; WSYM[7] := ODDSYM; WSYM[8] := PROCSYM; WSYM[9] := THENSYM; WSYM[10] := VARSYM; WSYM[11] := WHILESYM; SSYM['+'] := PLUS; SSYM['-'] := MINUS; SSYM['*'] := TIMES; SSYM['/'] := SLASH; SSYM['('] := LPAREN; SSYM[')'] := RPAREN; SSYM['='] := EQL; SSYM[','] := COMMA; SSYM['.'] := PERIOD; SSYM['!']X := NEQ; SSYM['<'] := LSS; SSYM['>'] := GTR; SSYM['"'] := LEQ; SSYM['#'] := GEQ; SSYM[';'] := SEMICOLN; MNEMONIC[LIT] := 'LIT '; MNEMONIC[OPR] := 'OPR '; MNEMONIC[LOD] := 'LOD ';MNEMONIC[STO] := 'STO '; MNEMONIC[CAL] := 'CAL '; MNEMONIC[INT] := 'INT l '; MNEMONIC[JMP] := 'JMP '; MNEMONIC[JPC] := 'JPC '; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONyIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EX:ECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF SYMBOL; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..T+MAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCEMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; *VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=C H END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(mCH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH ERND END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BE37GIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTE GER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; )6 END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1;  END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX;e WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BE/GIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PRO?CEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5;L:3;A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSN"YS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN P I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE x IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYN = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM } ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TE RM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION(zo[EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0X$,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I).KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; ENDXP; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = Y0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX21 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN^,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2]Y.A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTANTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOXLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSHYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTPERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1;g END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])); 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END;n_ 13 : BEGIN T := T-1;S[T] := ORD(S[T]=] := GTR; SSYM["] := LEQ; SSYM[#] := GEQ; SSYM[;] := SEMICOLN; MNEMONIC[LIT] := 'LIT'; MNEMONIC[OPR] := 'OPR'; MNEMONIC[LOD] := 'LOD';MNEMONIC[STO] := 'STO'; MNEMONIC[CAL] := 'CAL'; MNEMONIC[INT] := 'INT'; MNEMONIC[JMP] := 'JMP'; MNEMONIC[JPC] := 'JPC'; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBE)R,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. PINFO.PX?? PINFO Copyright (C) 1980 Rational Data Systems  Cؾȡ8ٛٛٛ á5Lˡٚ&ښٟá 0  ݢ ݢ ݢٚݢǀݢݣ ܞ#ݢݣ ݣ ݣ !!h  r ޢ ޢٚޢޢݞ#AAZ PAZȡ) AZAޢܕAáQAZ ZAZȡ) AZAޢܕQá!/i 5&!"AL ۢ%"ڞ#!2 AAZHAZIAZPAZQAZXAZYAZZAZ ֲscFCOM.CMֲsCOM.CMֲsc¾˲¾˄bcš:֦(F)COM.CM file is too long.!ֲsc sƀsCLIFILE y&¾ˡ¾ܿȡʀ¾AZAZȡ1ʀ"AZAʀáʀá¾ásDT40  ؟ ٹ  6!ۦWrong operating system.lÄ# Я6 ٨  ̀ȡ)ʀRʀ̀ʀʀ ̀ʀʀáʀ(d  ɡ 0!إ! $ڥ! ٹ֦January!֦May!֦ September!֦February!֦June!֦October!֦March!E֦July!s֦November!]֦April!J֦August!6֦December!  Ky@o4 ! 6 Dإ! :!:!2Ɓ!Ɓ_Ɓ!OUTPUT4rǯ`4CODE֥á,֥!֦No program name.!ʁc?;֥!֦PX PINFO program[.PU] [listing]!ʁȡ@ʁЫ蛾蛥蛾aAʁáɡ ́ƁcDƁ.PXfƁc֥ƁƁ.PX֥ƁƁ.PU ́ƁcƁ.PXfƁcˡ ֥!֥!֥4֥4֥! !ʁʁ !ʁ֦.==============================================ƁДƁʁ֥!ŕ<́0֦́ Compiled:! !'֦AOS.! ֦RDOS.! 1֧.!֧֥! !ʁ ֧֥! !ʁ S֧֥!֥!r 2֦Separately compiled subprogram.!ʁ֦)Contains unresolved assembler references.!ʁ򧁤Ĺ֦ PLINKed to:!ʁ ʁʁ !ʁ ֧$꧁֥! !ʁ ֧֥!;֦No assembler references.!ʁ5 ֦(Contains unresolved external references.!ʁs֦$External modules have been bound in.!ʁ:֦QNo external references.!ʁ4o֥!֦Segment ! ʁBytesʁBlockʁ֦------- ! ʁ-----ʁ-----ʁȡ_ʁЫˡ?֧@! ʁ ʁ ʁʁáˡ3֥!֦ Overlay size !ʁ ʁƁ!4<J ^ T z D ALLINK.l .LINK ALGOL.SV ALGOL:ALGOL.SV LINK AL1.SV ALGOL:AL1.SV LINK AL2.SV ALGOL:AL2.SV LINK ALGOL0.LB ALGOL:ALGOL0.LB LINK ALGOL1.LB ALGOL:ALGOL1.LB LINK ALGOL2.LB ALGOL:ALGOL2.LB LINK ALGOL3.LB ALGOL:ALGOL3.LB LINK TRACE.SV ALGOL:TRACE.SV LINK LIBRARY.CM ALGOL:LI (BRARY.CM T14..PROGRAM T14(INPUT,OUTPUT); VAR I:INTEGER; BEGIN REPEAT BEGIN READLN (INPUT,I); IF I<21 THEN CASE I OF 1,2,3,4,5,6,7,8,9,10 : WRITELN(OUTPUT,'BETWEEN 1 AND 10'); 11,12,13,14,15,16,17,18,19,20 : WRITELN(OUTPUT,'BETWEEN 2 AND 20') END ELSE END UNWTIL EOF(INPUT) END. R.BU gPROGRAM TEST (INPUT,OUTPUT); VAR I,J,DIGIT : INTEGER; R,R1,R2 : REAL; STR : STRING[10]; PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-TRUNC(R2)*10); R1 := R2; { WRITELN(' GETDIGIT,DIGIT=',DIGIT);} END; {GETDIGIT} BEGIN {MAIN} REPEAT  BEGIN {do decimal part first} WRITELN(' ENTER A REAL NUMBER'); READLN(R); { WRITELN( 'TRUNCR=',TRUNC(R));} STR :=' '; R1 := (R-TRUNC(R))*100 + 0.3; J :=0; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[10-J] := CHR(DIGIT+48); J :=J+1; { W|yRITELN(' CHR(DIGIT):=',CHR(DIGIT+48));} END; STR[10-J] :='.'; J := J+1; {do integer part} R1 :=R; WHILE ( (R1 > 1.0) AND (J < 9) ) DO BEGIN  GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); Xk; J :=J+1; END; WRITELN(' STRING=',STR); END;{OF REPEAT} UNTIL EOF(INPUT); END. 1978.DQ1978.R1w!<@B 4196.05 C 2332 2000 C 2313 1804.52 C 2337 43.50 C 2338 6.00 C 2345 53.35 C 2347 38.00 C 2348 50.00 C 2356 264.05 C 2354 50.00 D 23546.64 DM 250.00 C 2355 280.60 CC 2357 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 23662 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 C 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 D 13878.10 DM 1865.00 C 2394 85.54 C 2395 1000. C 2396 405.38 C 2397 64. D 3885. DM 250.00 C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 C 2402 80. D 3222.52 C 2403 1562.80 C 2404 1887.00 C 2405 28.26 C 2406 52.68 C 2407 53.35 C 2408 27.00 C 2409 301.50 C 2410 32.23 C 2411 110. C 2412 1500 C 2413 15 C 2414 286.41 C 2415 12.68 C 2416 93.20 C 2417 7.75 C 2418 66.34 C 2419 1197.81 C 2420 50 C 2421 261.65 C 2422 10 C 2423 23836 C 2424 28.15 C 2425 8.95 D 3727.5 C 2426 16.05 C 2427 450.59 C 2428 621.73 C 2429 4000. C 2430 6.75 C 2431 110 C 2432 991 C 2433 41.5 C 2434 52 C 2435 675 D 10674.20 D 8655.39 D 3056.00 C 2436 40 CC 2437 C 2438 3.47 C 2439 11 C 2440 339.45 C 2441 28.76 C 2442 589.40 C 2443 19.89 C 2444 16. CC 2445 C 2446 93.20 C 2447 410.72 C 2448 695.00 C 2449 50. C 2450 13.00 C 2451 55.00 C 2452 74.42 C 2453 56.30 C 2454 7.85 C 2455 223.17 C 2456 368.00 C 2457 1562.80 D 5534.20 C 2458 450.59 C 2459 75.65 C 2460 923. CC 7t2461 CC 2462 C 2463 25 C 2464 26 C 2465 50.50 C 2466 39 C 2467 4.80 CC 2468 C 2469 70 C 2470 500 C 2471 12 D 6157.00 C 2472 113.56 C 2473 9.95 CC 2474 C 2475 368 C 2476 616 C 2477 208.65 C 2478 380 C 2479 129 C 2480 3.95 C 2481 7.06 C 2482 30 C 2483 15 D 5: 631.50 CC 2484 C 2485 2000 C 2486 7 C 2487 34.03 C 2488 474.35 C 2489 179.46 C 2490 145 D 5395 C 2491 12.30 C 2492 7 C 2493 2 C 2494 3.50 C 2495 46.49 CC 2496 C 2497 117.03 CC 2498 C 2499 1773.70 C 2500 94.90 C 2501 50 C 2502 21.85 C 2503 89.37 D 10811.70  C 2504 547.42 C 2505 1203.31 C 2506 368 C 2507 616 C 2508 10.80 C 2509 23.30 C 2510 27.60 C 2511 126.00 C 2512 168.26 C 2513 230.66 C 2514 18 C 2515 20 C 2516 42 C 2517 8 D 7237.50 C 2518 446.86 C 2519 20 C 2520 28.99 C 2521 4.15 C 2522 61.36 C 2523 1210.4>9 C 2524 7 C 2525 16 C 2526 45.45 C 2527 13.30 C 2528 387 C 2529 18.70 CC 2530 C 2531 1800 C 2532 206.25 C 2533 1703.40 D 3825 C 2534 3178.45 CC 2535 C 2536 97.67 C 2537 55.93 C 2538 26 C 2539 550 C 2540 106.32 C 2541 105 C 2542 108.06 D 6507.66 CC 2543 C 2544 74.95 C 2545 671.81 C 2546 262.60 C 2547 50.50 C 2548 11.70 C 2549 85 C 2550 10 C 2551 34 C 2552 200 C 2553 368 C 2554 912.90 C 2555 500 C 2556 90 C 2557 120 C 2558 2.05 C 2559 899 C 2560 267.58 D 465 D 3182.36 C 2561 100 CC 2562 DM 200 D 5187.50 C 25w63 500 C 2564 100.75 C 2565 3000 C 2566 1800 C 2567 75.21 C 2568 563.06 C 2569 26 C 2570 192 C 2571 14.30 C 2572 184.25 D 3000 C 2573 500 C 2574 115 D 11960.00 C 2575 42 C 2576 26.12 C 2577 81.71 C 2578 36.81 C 2579 368.00 C 2580 671.81 C 2581 37.70 C 2582 72 C 2583 350 C 2584 23.95 C 2585 1773.70 CC 2586 C 2587 271.60 CC 2588 D 2107.75 D 4990 C 2589 5 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 C 2591 311.54 C 2593 770.94 C 2594 109.92 C 2595 432.25 C 2596 28 C 2897 200 C 2598 919 C 2599 187.L22 C 2600 134 C 2601 90.50 C 2602 153.64 C 2603 14850. CC 2604 C 2605 50 C 2606 186.36 C 2607 85 D 32927.50 C 2608 1352.93 C 2609 50 CC 2610 CC 2611 DM 7.37 C 2612 17 D 14750.00 D 2040 C 2613 33 C 2614 9.22 C 2615 115 C 2616 1875.10 C 2617 134 C 2618 46.45. C 2619 790.75 C 2620 33 C 2621 368 C 2622 52.30 C 2623 309.14 C 2624 9 C 2625 1452.77 D 8742.50 C 2626 50 C 2627 39.50 CC 2628 C 2629 56 C 2630 164 C 2631 400.88 CC 2632 C 2633 8.75 C 2634 7.50 C 2635 48 C 2636 12.55 C 2637 139.70 D 538 C 2638 1200 C 2639H 1000 C 2640 115 C 2641 30 C 2642 101.39 D 3000 DM 3000.00 C 2643 140 C 2644 35 C 2645 671.81 C 2646 1850.16 C 2647 70 C 2648 14.20 C 2649 500 C 2650 13.05 C 2651 205.74 C 2652 199.40 C 2653 17.16 C 2654 19.94 C 2655 34.12 D 2530.69 D 20162.50 D 8992.41 C .2656 1500 C 2657 116.89 D 1545 C 2659 368 C 2660 37 C 2661 25 C 2662 15 C 2663 500 C 2664 25.35 D 6212.50 CC 2665 C 2666 50 C 2667 96.30 C 2668 495.42 C 2669 145 C 2670 8.70 C 2671 16.80 C 2672 29 C 2673 11.48 C 2674 1397.48 C 2675 200 C 2676 500 CC 2677 Cy 2678 49.56 C 2679 10000 C 2680 110 C 2681 1007 C 2682 37.64 C 2683 2000. C 2684 49.44 D 4762.50 C 2685 1850.16 C 2686 35.27 C 2687 115 C 2688 144.36 C 2689 50 C 2690 39.85 C 2691 141.22 C 2692 552.87 C 2693 134.32 CC 2694 D 1882.50 C 2695 500 C 2696 500 CF 2697 20.32 C 2698 750 C 2699 110.25 C 2700 368 C 2701 134.74 C 2702 6.90 C 2703 99 DM 11.49 DM 11.61 C 2704 36 C 2705 365.69 C 2706 18.50 D 7130 C 2707 295 C 2708 472.87 C 2709 15 C 2710 36.50 C 2711 16.75 C 2712 218.26 C 2713 139.96 CC 2714 C 2715 50 C 2m716 1500 C 2717 1500 C 2718 11.56 C 2717 1500 C 2719 4812.51 D 1545 C 2720 3920.58 C 2721 115 C 2722 76.99 C 2723 40.30 C 2724 117.43 C 2725 552.87 C 2726 127.35 C 2727 6 C 2728 20 C 2729 52.84 C 2730 5.74 DM 23.10 C 2731 50 D 592.50 C 2732 911.35 C 2733 4:6.85 C 2734 164.11 C 2735 1850.16 C 2736 140 D 1997 C 2737 368 D 1467.50 C 2738 154.01 C 2739 33 C 2740 40 C 2741 15.15 C 2742 342.32 C 2743 10 C 2744 160 C 2745 19 C 2746 1136.47 C 2747 174.34 C 2748 208.22 C 2749 131.46 D 13855 C 2750 145.75 C 2751 30 C w`2752 54 C 2753 55 C 2754 569.90 C 2755 64.50 C 2756 75 CC 2757 C 2758 374 C 2759 115 C 2760 500 C 2761 500 C 2762 1510 TEST5. PROGRAM TEST5(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..0] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTRING = STRING[255]; STRPTR = ^BIGSTRING; WORDPTR = ^INTEGER; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE: SYSCALLTYPE; ERROR: BOOLEAN; CALLNUM: INTEGER; R0: REGISTER; R1: REGISTER; R2: REGISTER END; {SYSCALLPREFIX} SCALLPTR = ^SYSC ALLPREFIX; FUNCTION FOREGROUND : BOOLEAN; CONST DOTFGND = 8741; LASTBKGND = 5; VAR HEAP : ^ INTEGER; REQUESTPTR: SCALLPTR; BEGIN MARK(HEAP); NEW(REQUESTPTR); WITH REQUESTPTR^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTFGND; { SYSCALL (REQUESTPTR);} TFOREGROUND := (R1.INT > LASTBKGND); END; RELEASE(HEAP); END;{FOREGROUND) BEGIN IF FOREGROUND THEN WRITELN(' FOREGROUND') ELSE WRITELN(' BACKGROUND') END. MANUAL2.10 MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 1 This file contains information regarding the RDS Pascal Programmer's Manual. The current edition is 2.10. The previous edition was 2.00. ---------------- The old chapters n5 and 6 have been reorganized into chapters 5, 6, 7 and 8 due to the addition of separate compilation facilities to RDS Pascal. ---------------- The old chapters 7 and 8 have become chapters 9 and 10 respectively. ---------------- In Release 2.10 the f86ollowing changes have been made to the Programmer's Manual and to the file 'MANUAL': new --- 0-2 "Third Edition" added 0-3 A new table of contents 1-10 Added "PACKED ARRAY OF CHAR and STRING Compatibility" 2-3 Restriction on non-local GOT&O removed 2-4 Added "Data Limitations" 3-6 Changes to "Default Filenames in I/O Statements" 4-4 Rangechecking code now generated for CHR, SUCC, PRED 4-11 PASCALO no longer uses a separate 'overlay' (.PO) file 8-2 PINFO has new input file;name rules 8-5 Changes to rangechecking information 9-2 AOS: Compiler may generate .PU instead of .PX 10-2 RDOS/DOS: Compiler may generate .PU instead of .PX B PACK and UNPACK are now intrinsics C Changes to many Compiler error messa/ges D Runtime errors may now show Module #'s, changed "DIVIDEND" to "DIVISOR" in "MOD" error message, added a new message. Index Re-written MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 2 The following B} material has not yet been incorporated into the Programmer's Manual: 1. There has been some confusion regarding the differences between 'TEXT' files and 'FILE OF STRING[n]'. A FILE OF STRING[n] is composed of fixed length records, each one being a STRING[n]. Each of these records includes a 'current length' byte as described in the 'Data Representation' section of the manual. A TEXT file is a sequence of CHARs and 'linemarks'. The linemarks permit TEXT files to be read -P and written with READLN and WRITELN respectively. FILE OF STRING[n], being a typed file, can only be referenced using GET, PUT, READ and WRITE. TEXT files are compatible with your operating system's ASCII files which have been created using the standard text editors. FILEs OF STRING[n] are specialized, as are any other typed Pascal files. Examples are the compiler and runtime error files, PASCAL.ER and PASINTERP.ER, which are declared as 'FILE OF STRING[63]'. Each record of these files is exac0tly 64 bytes in length. (Remember the dynamic length byte!) These typed files can be accessed randomly using the RDS extension 'SEEK', whereas TEXT files may only be read or written sequentially. 2. RDS Pascal supports an assembler interface which allows access to features of the host system beyond those supported directly by standard Pascal. One common usage of this facility is to access the host system's I/O calls. However, for many of these calls information about an open file is required -- the channel number, for example. In order to permit users to obtain this information, we have documented below a portion of the 'FIB' (or 'file information block') used in RDS Pascal for all files. If you pass a file as a 'var' parameter,8 you are actually passing a byte pointer to the FIB. We strongly recommend that you not modify any fields within the FIB -- just read them. The interpreter uses the FIB in strange and mysterious ways. You can easily get a program into trouble if you 'innocently' modify a field. MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 3 The FIB consists of three major sections: (a) a 6-word 'SYSCALLPREFIX' (see the sections on SYSCALL in the Programmer's Manual), (b) a,*n AOS-style I/O packet, and (c) additional fields used only by the interpreter. Note that the second section (the AOS packet) is even used in the RDOS/DOS implementation to ensure that programs are fully portable between operating systems. The following pseudo-Pascal declaration will assist you in understanding the FIB design: offset fieldname type contents ------ --------- ---- -------- +0: mode: syscalltype; {see 'syscal:_l'} +1: error: boolean; +2: callnum: integer; +3: r0: register; +4: r1: register; +5: r2: register; +6: channel: integer; {i/o channel number} +7: isti: integer; {AOS ?ISTI} +8: aosfiletype: integer; {AOS ?ISTO} +9: fbufferp: byteptr; {^read/write buffer} +10: ires: integer; {AOS ?IRES} +11: reclen: integer; {# bytes/record} +12: xferred: integer; {# bytes transferred} +13: recnumhi: integer; {record #: hi-order} +14: recnumlo: integer; {record #: vlow-order} +15: fnamep: byteptr; {^filename} +16: blocksize: integer; {AOS ?IMRS} +17: deltabl: deltablptr; {AOS ?IDEL} {followed by interpreter-only portion of FIB} MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 4 3. On page 1-4 of the Programmer's Manual we discuss the input and output of STRINGs. It should be noted that a minimum field width for the output of a STRING to a TEXT file in a WRITE or WRITELN statement may be used. The syntax is: : If the length of the is less than characters, - length() spaces will precede the output of the . 4. The proposed standard specifies that the order of evaluation of a boolean expression shall be implementation dependent. For example: result := ifok(test) and expectation; A possible optimization in  the evaluation of the above expression is evaluation of the boolean function 'ifok' only if the boolean scalar 'expectation' is true. If 'expectation' yields 'false' then 'result' will be 'false' no matter what 'ifok' returns. RDS Pascal performs no such optimizations. All boolean expression will be fully evaluated.  In other words, if 'ifok' has some side effects, they must always be considered whenever the above statement is executed. Without the use of explicit parentheses, the evaluation of complex boolean expressions is in left-to-right order -- the fung;ction 'ifok' will be invoked and its result 'anded' with the scalar 'expectation'. 5. Both the RDOS/DOS and AOS compilers have an additional global switch: "/C" for 'conformance'. See the release notice for full details regarding its use. BREAK.SVll *"f  X(u(oOUXY&(o"YYYYY'HU'$Q(D(8)(*]H* noz(D("0IS[0i. !,MM+!!:" " Y""5%NO?¾¾ˡ ¾(( ڢ"ڢDڢ#ֲD(ڢ"ڢ?ڢٞ#ֲ?(!p' ۢ%"ڞ#Ś!,)$Iۢ  ȡ&ܢ?ܢ ؞#á ȡEܢܢڢܢڢڢ؞#áBs *ɡM 0 á޿ ھȡ ھޕ¾áL d+'Páئ2'PPɄPR Module  Segment P+?Q+?R+??  , Procedure ! , Offset +02),ؾȡ&u¾azȄ aAá#:%ֲb%b  b   b ȡ+ b¾؞#ڡ á'v-?F PASINTERP.ER? 2.B ERMESƀƀl ƀ 'V*ڢ ˡ2ɍáb-. PASINTERP.ER bB-šibš"b̀ƀbƀƀƀb̀ƀbƀFile: "ƀ-ƀ"ƀƀ,ƀš.b̀ƀbƀƀƀƀƀ-̀ʀˡʀ ٚʀ ڞ#*|l ޢޢؚޢٚݟˡ-ڢF!۞#!@//0 H CLIFILE'( "" "d""')-!*+,IǴ ȡ ʁI!ʁáֲ>)'> FCOM.CM COM.CM  ʁƀ!ʁȡʁ ʁá Há ʁƀ!Ձƀ!šƀ%ƀ.PXƀƀÍ"ƀ́Ɓƀ!Ɓ.PX$Ɓ!ƀƀ^ƀƀƀʁzʁ{ ō*ʁƁ'20 $ƀáʁá1ʀȡDʁ'ۤ́ƀۤ9́ʁʁʁʁʁښʁʁá'́ʁ́ʁʁʁʁʁ!ʁ&ʁʁ)" :1ȡֲá(2ƀƀƀCLIFILEƁ)ʁƀFCOM.CMƀCO0M.CMƀƀ2ƀ2,ˡUƀ ƀƀ 2ƀʁʁ-ֶ,2,,ƀeܢ ܢjܢlݢٚݢܢFݢݣ šܢ,ܢnڂ4ܢxܢzܢtܢrܢvܢ6 ܢp ܢ,ܢnݢܢ~ݢO ܣ7ۡ ܢ0,ظ,أ5(/پ!ġآF!!&/٪!%آF!آFNá//ݢ ݣ57ٹ$& .ݢFINPUTݢFOUTPUTDݢzݢFINPUT ݢFD!*Rˡ/ݢF?!ظ*ݢFݢFآzݢ.ٚá=ߢߢޣ ڞ# Äߢߢޣ ڞ#0ߢ*"ڞ#0ߢ?ߢޣ ߢڞ# ˡ0'VPI  ܓ áܡ ݢF! z//áߢڞ#ݣá#ߢڞ#á ݢrݣ8ݢrߢڞ#ݢjá ݢh$ݢh$ݣˡ& $أ5xۢ ڶ*˄*ۣۣ#ۢjۢlۢxۢvݢ?ݢ ڞ#0| ݢݢܣ ڞ#٢ ٢l٣4٣á٢v٢x٢r٢t4$ۢ ۣ8č'/ۢrٚۢڞ#ۢl> ٣;٣8٣٣á!٣6 !٣< ۢ ۣ5)/ۣ=)ֶ*#ݢ?ݢݢݢ ٞ#ܢ ;ڡ2ۣáۢ~ܢ ۢ~ܢ ۢl0ۢh3ڢ ڣ6 /ڣáڣ9ڣ:šJڣ?3ڢrڢtڣ=,ܢܢڢ~¾ٞ#0 áܢ $ڢ|ڢ~ڣ9¾ڢrڣ9ڢlڣ>Úڣ>ڢ6ڣ8ڢpڣ>ڢ| ڢxڢxڢl3ڣ6 ڢrڣ9 &أ9أ:šrڢ ڣ5)/ڣ=)ֶ*#ܢܢ ܢ?ٞ#ۢ áڢ~ۢ 0ڢtڢrtأáأ;&آvأ6 /&.٣;٣6٣Ä&٢v$! &آv !أ>آv#/!ڿܣ<ܣ>&ܣ<&3 J!ܣ> á&ܣ>+ܣ>-Í ܣ>-&ܣ> 0ܣ>&ۡڡ/5\ t !ݣ> á&ݣ>+ݣ>-Í ݣ>-&ݣ>ټ ݣ>0&ݣ>.áD&ݣ>$Kš/ټ£>0ܞ$ݣ>ݣ>eݣ>EÍړ>ݢv ڡ܀Kš/ɡ ټ܀$ ټܞ$ڡ/ۡټ ڢ ڢhܢܢ ڣڢ~ڣ9ܢ? ܢܢ?ٞ#0V4أ5)/ڢ m\ڣájڢ~ڣ9ڣ>ڢrڣ9ڣ9DŽڣ>7ۢ ڣ94ۢ ڢrڣ>áڢ~ܢܢ?ٞ# ڣ=)/ڣ8ڣ9ȡڢlڣ8ڣ9á ڢpڣ84ڢrڣ9 šآ| آ|ٚ (ڢ ڣá,ڣ9šۢ ڣ94ۢ ڢrٶ*á) J#š ەȡآ|¾ á @پȡš ەڮȡآ|¾ á Lآ| #آ| ##/s ١ True False*" ɡ ـȡ-32768 c-ġIٲ"ܤ00ńބݿ0ˡ ٲ"ܤáɡ`  BdX  ġ š Kš/  ڞ$5Jɡ šKš/  ڞ$5M 5ֶ6خȡ: 06  يon   á8 N7 $ $ɍKōKō$/ ݡ  @ܞ$  A5ޕܕȡ 6á-6 67.6ޮġ06>á7ɡ 5 @$5-6 67.67E6ȡ-6+6 ɡ06 z٦ńۂؾȄ۞ۿ+/8پؾȡؾپپؾ+/2ھšS¾پھ¾ȡ3ܕž šھگ:f1H x \ D d l " >Td `r$ PHZ   VH b BO\xn7n&{  8X6H**+ 8I8)6X6H**+ 8JR8)6H7(**+B 8I878)60-P-("H"(( < n0-P-("H" ;xV'|-vC0uYg^oM.86420 (33 >x#6E[PR]........ RRRRRRRRUUUUUUUUUUUUUUUU12(T(]) X(*2(T(] X(*P(T(] X(*$((B]0(" X(*B]1 /2(T(] X(* /2(T(] X(* /P(T(] X(* /$((B] W(* W(*(T(](T(] W(*2 X(*"(D(] W(*2 X(*P(T(] W(*2 X(*$((B]$((4((ӐB]4((Ӑ2(T(]1 4((Ӑ"(D(] W(*H*P7@80(P( " n- 8078("CP8)](L( W(*] W(*4((ӐH*P7@80(P( " n- 8078("1TCO W(*0(P(<((H*"CO4((Ґ"0I(D(]$((4((8IғH**JO$((/<((H*2(J(*(\(8)]H* n X(* $((4(((T(]H*P4(( p8)4(((T((*O X(*4(("(D(] X(*H*4((<((Ӑ"CKO X(*H*<((4(( W(*H*<((4((P7+ 0I@07 nOP7# 0I@07X7H88IҒ*J@(887O$((0H4((ӐB] W(*H*,(( q<(((\((* W(*H* p8j#8k+(D(O$((4((Ӑ2Ґ(T(]H*,(3x($((<((ҒP3SO$((Z(D(]$(((D(]$((4(( $((4(((T(]$((4((J JZJ[(T(]H* n,H*4((,((/ J r[  rZ  K/(L(O nH*4((,((J s(L(O0("(D(H*4((7/8(+J s8(JCO n n+$((4(((T(]$((4(((T(]$((P(D(]$(((D(]0(]]0(]]0(":ZB8)]0("(D(] X(*4(((T(]$((<((4((.J(T(8)]H* n$((4((Q(D(]$((4((P(T(]$((4((/P(D(]$(7b(4((JP(D(]$((4((JQ(D(]$((4((/Q(D(] P0@0A0B0C W(*9@R}G9KQgRRRR X(*H* K@6<((4((Ӑ#* L6K X(*H* L@6<((4((Ӑ#* K6L$((8H8-CP(\(:H*9#(D(8(3;X7Ґ" 8I@87P7+ 0I@07  FF D@6H6X7Ґ" 8I@87P7+ 0I@07&$68(3;X7Ґ" 8I@87P7+ 0I@07 P @ B<((4((,((KL X(*H*9+(L(8(3K; @6P7# 0I@07X7Ґ* 8I@876 W(*4(( ]=H*8("CX($(('H*0(P7@80(P( " n- 8078((D(/ "C,((CO$(((D((D(H*<((4(((T(O K n!8 nP6X7(G8k#(786(D(86(G8j+(6(D( 7(D(O$((0(P(H*** G+8l#P8)B(*] z H6"+J6P(O lH6"+J6 ]H6"+B6c90R?RO E H6"+6Q,((0(P(BO / H6"+6P  H6"+6Q  H6"+6QX6H*8(+3  8(+6 K8(+SK(D(0(P7@80(P( " n- 8078("C,((C?? @ @0(P(" A8)]0(P("B"B @" 48)]0("PB]0("PB]0( %P(8)]0( !P(8)]0( P(8)]0( P(8)]0("B"B% P(8)]H*0( P(O[|p!(D(!(D(0("K  P(8)]0( P(8)]@4((J!  ! "(D("(D(]K nLAABdC>D'EjE$FG_^H;I%@JHvJԤKLZM8N#O4WO jP"QVuR65S!T-TUYPVRW3X OY1YZ~7[N\1M]Л^Ba^_x^`K;Ka/bc)c]cdrYeGf,ogh'h)imyjDl9k*ãlFmlm 8nhgoA@p({q}MqrO"scut>:u&vOvwx^y;Xz%{.{D| }Z~8#_0+80(D((L((T((\(8,(\(8(X0] W(* W(*H*(\(80K8>PX6#/.PC#  n ((0<0- n ((000C0(X("C"86#(0H00CK863P,* J$((  P  0,"P+ 0@/P8) W(*H*00J0>*H, W(*H*00J(+0-0.00(:J,+0,<,K!I""K SP+"K99 0+P,"P+"@0I8) #;80C#PCX)0+"P7@80(P( " n- 807"PH*] W(*00J0;"P+ ;@, 1"o80#PCX)2 I!"@60(6$0+"(J@680X)/ W(*@6(J$,K1͕T!7 8>P#0)(BX) 6"C<8)#@,#P@0+3K 8)P+ 6  CX(H*0)(C"CX((*80#Z;PX)]$+(@ +H6,(($((0+ @"PP*$+0J  $,0I O3K(\( &<(( @"PS3PҐ"0J '0I 3PҐ"0I;l(6H* n "o0+ @"PP*+H6(6#PH63K(\( <(((6 "(I,((  $(("PSO(L( @"PS; W(*S0JJ0+"P]$((]$((*.*J *(A"P]P] W(*H*1RDK0RR lg' RRRRRRRRsiGIMKOQS+2Rz7YRRR4((Ӑ -PB]4((Ӑ"0- n0. n@-]$((4((Ӑ(-H-PJ < ( n H"(*] $<((C<((K<((SO  -0(0</(D(]$((P(D(]4((!!!$((<((4((/]X7H88IҒ/8*J@(8878)]$((<((4((/OX7Ґ* 8I@87P7@80I#C@ 807O$((<((4((JOX7Ґ* 8I@87P7@80I#C@ 807O8(+#C O#3$+KX7Ґ* 8I@87 98X7Ґ* 8I@87 ((+KX7Ґ* 8I@87 X7Ґ* 8I@87 #+C AX(O P @ A B C D0(4 8()X(X)X0CX1! C =(D()] J2H)H($,C#)  1""6"A"U nX6+8)'K;0JE'E3 @;#PUbcdX6$,0JE8+#E#P *E0; A""20C01@(@0 $6! (D((L(81X))]3X69Ɛ6X6 9 P@ @!6X7KKX8 p88Z7X7KKX8 q88Z72\2 @BB y<222\2 z @<222D2 u$222T29422 vOCXRSX6! YP3! YP2! YP4!P56 f n n2\284#+3;%84)H6+9 848B2\2<6P@@@2\6<2284CKS#(J42284)C2\204"*!bJ"*pB82!=X2!8C!6C BCCC+K/7 p823SG#+3CK#+KKG82!X2YD84!KX4 "834222\2841=05:X4PpSҊC!0CCCC 83422@2\284#11+ ZP#! X483422 nDK2\2841X4#+ # + P+834224832\2 0422 C B A @P2\22D2 |84!̝X4P#+ # + #PP$22 834222\284#+)C#+pK#+ ]1 (B 8402!SP2 BB!MB#+3 q02N84Z BB6+ p02:K C 1584#+ C 02 )84#C84)"C029P2841 X4 83422 n2\283(4KC*K w# w }! +C w {# x4222\28304"CB!K w } )H?C!A w | 4C w 4 w } # w!9 } !0 4 w# w { # w | ~!& w }# x+!=04:J83C! w ~#! w ~422 n(@FLjB!<C 4 w# w | # w { ~ 4 w 4 w } 4 w!*  !( ~ }# ! w } {! w }422P04B! BBBBB n@A @@3d@ry@o-T8BSP B]v1IfBZ,YAB>)B=1oB-\K߬u2\28304"2",Ca w04")J CpC!$ !" w }0404"+J BCS# w# w ~ {! w } #@4422 n@RL@*@9>N(@@@2\28304"CBCC"):!= w ~ 4 w!1 w  4 w!- w }!, w | !& w { ~ 4 w 4 w } 4 w! ! ~ }|! w {! w {#D4422AA2CZ0@ k,AzXLt@DQz{5XA!TD-FAɈg)2B}D@nVC>rWB3,1AB%ݣBϱS^UCʙ43FB3,1ޅ 2\28304*uPCB!! w } +ULK! w |+04 w 4 w } 4 w! ! ~ }422 f T / T>6--j@A17AP6QCZQFC;(:Dpԋ0ABsMʁ]pZDx%UXl@nND'8(3S;Ӑ B@6"+6'3p8(3ӐK22 $((<((b4((S(L(O hPE AP7@80(P( " n- 8078(3Ӑ!BBBB3Ӑ"3; F@6P7# 0I@07(\( -'X7H88IҒ*J@(887<((6P7# 0I@07(\( <(($(()))) ) ) 0:@Z`z8(33ӐB FK@63)o9pX7Ґ" 8I@87X7H88IҒ*J@(88768(3X7Ґ" 8I@87)E3Ӑ"C"PPPC!;3#C#PPP(T(;Ӑ B@6"+64((!8(#;C8(!X(O4((Ӑ"8(;C"8( A`6 o  P  #Ǫ f?FQfX1,)+H6)*H7*766) !  " 9PPP9)ٮPPP)־!0!D    H-H. <H" t  " WsX6 " 96X6 " 6ېX6#  K n) 1v!!!#+1S1S1S386C86OCPCKSO #X9! Y89ZP9!P " 89" *1k p<937 q<9K8!09 ZOX937+9 p893 '? OX93 ? 1 P89K1PCO@X9! YP889!P " 08" *10 p092 '? ! ZOH9X8P)! (: @:-)%%  ? % `P-Ӑb(98ge@?86X93) p893 '? 0)P893+ ? 89X6  n%/"5*Z"*:X8:2! H`:Y:2`' 'JY8 ` =CKS8Z9(J+J@Z*J8H`"2$0 d'$OFOBAR.PXPX$TTO$TTIJ ۢ*"ٞ# ۢ ٞ#!:٪ƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀ?ʀʀʀʀ ؚʀ#ʀ/֦ ERROR IN OPEN = Jʀʀ ʀʀʀƀ! ݢ?ݢ ؚ۞#)֦ ERROR IN CLOSE = J !`تƀ ƀƀǀʀ֦ JR|ʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ1֦ ERROR IN DELETE = Jʀʀ ʀʀʀƀ!تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀ+ʀ#ʀ0֦ ERROR IN CRAND = Jʀʀ ʀʀʀƀ!٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ4֦ ERROR IN WRITELINE = Jʀʀ ʀʀʀƀ!  ǀ ? ߚ    ؚݞ# /֦ ERROR IN READLINE = J   ߪ ! ǀ ? ߚ    ؚݞ# 5֦ ERROR IN yYREADSEQUENTIAL = J   ߪ ! ٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ:֦ ERROR IN WRITESEQUENTIAL = Jʀʀ ʀʀʀƀ! ƁJƁƁJOUTPUTƀƁƀȦINPUTƀƁJ֥DFFOBAR֥Fƥ֧DFƥ֧DTHIS IS A TESTƥ ֦ HIT CTLAJʁ֥ƁJƀ~$x:d, &2 Ӣ>}nߦLJL><b߮ ȡJ å¾0 ń ō  ¾0á" FOBAR߮ ȡ% ¾0á ޮġ+¾0ޕ$á ݮ ȡ ¾} 0 á á $  $$ f8Fj$ ?OÍNȡO ¾#$$TTI  쥀¾  쥀HM¾.á #쥀¾=á ' ( ( ' ) ¾ ?P  P>O )  $TTOT{w "$&(  HIT CTLA RAND = 9 OQSUWY[]_acegikmolrt}/á)O"L&p&{N"{ KQN"WNN"e :^NNNN"ɨeNNNNNN0á cÄ"JɡJ4P֥A  ڧs ڧQ 5 ֥ ֥= lš5֥֥l֥>>>J>>QQ&{O" xOOOOOO OOOOO?00O0ȡ"ٕáq֥yError at line ڧA ڦ in ڥxڦ of ڥt" ըQQQQQQR000ڥxڦ of ڥt:֥u ڥ֥u%q֥Error at line ڧA ڦ in ڥxڦ of ڥt:֥ ڥ֥% ġI ۤڟˡ,áڣkMЧ.á.Jhm9k,jlihښ۫ ؟áٟ ٥ˡٟ  ? ؾš ¾ؾń/ ƀؾƀ ؾ¾áؾ šeƀƀ֦ ƀƀƀؾٕƀn Yš¥9YٞقYقYY؍, ,5`֥YZZ9 ٕán|ƆƇ9ƆWORKCODEƈ9ƈwƈ9INCLFILEƉwƉƉwWORKSYMƄƅ1ƄOVTPVTƅuƅƅuANALFILEƅƆ5ƅLPƆyƆƆyERRFILE:֥OUTPUtT֥֥ 3 ˡO ˡAA :֥Ɔƈ9ƉwƄƅuƅƆyG6 <~102 R/,+-*). :`3H H ` ('&6%4FN',2 ӢEND  F {$I WRS.PI}I}}END.   !"$$$$AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END FILE .FO#R FUNCTION GOTO IF IN )LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROGRAM !RECORD -REPEAT SEGMENT 0SET *STRING 3THEN TO TYPE UNTIL 5- VAR WHILE WITH BNvj   & $*4:@Ȭ &٤ˡ"خ ۢ\, á;ت@&@$%$á%$¾&$$%%$ɡ6$$6@٦@OT~٪@$$@$ A$B6$ت@٪@F EEHHǀH/GH<á HHHE#HGHǀH$<á HHHE#F!F#֥֥A ۦ lines#֥u֥uA ۦ linesP#֥֥A ۦ lines֥uP֥ Mȡ ڤ áȡ8ڤȡܢ¾ ááȡ áʾȡ֥¾ áʾ.ȡ< á!ȡ á֧; ֧H ֧X ֧R ֧I ֧@ ֧<  ֧F ȡ á观+  *  ֧Z ɡ 槂,g֥ ZY!  ֥<֥3+* [եվU եվX֥ե֥{0Wwp2 ,W+,9:rB9/:95]]TEST.PX B$12$29$14.WK@TEST.PX *s7ŹF95r B$12$29$14.WK]rn7[F95rrr@  áPB$12$29$14.WK A ˡǖ   7x95snnAsn ń 弄 ;֥ 弄 á ݟˡˡ _hNJ ˡ ˡqݟˡL< D   ˡ  šNj   ˡL3á DB  @$ń ˡá CZáˡˡ nj áˡ  á ǘ   $ , $ 8  Í Ä  áP   ˡń  ˡÍ~áPK    OaáV  O >>  á#ˡń Ǎ E ޭ/162 #:á $k=0š ˡɡ % áVߣ á ߣ ˡ+ öÄ.á  ȡ ááٟá~ֲ"ٟ˄ڟˡ٣áȡqcÄÄǀ&  _  á 6çDeڧd d CÄ,'Pˡ ݕˡǎګ Há=ڣɡǿágá ˡǚٟˡ;á(ٟˡߣ á ߣ *ߣ á Nߣ ߣ á Sߣ  Mߣ ߣ  Rrt 42ܣ áܣ ޳``V޳`á޳@t ޳" ޹#$)*1ˡ ġe ˡ%eádá e ˡ%eádá e  >e +á Oe   ȡD  Nˡ eˡáǤ á ˡ eˡá% ,-ˡ eˡCb Dˡ eˡDc Z)RCExutq]ZW*,)g02*6Hߡá2vYeá d eá اd*3ddÍ34弄: 弄^ܣá 'ܣá   ˡá ꧂e ꧂d ác   _   á*7bˍ ˡbˡ LJ    á ˡˡ Lj  Ȅ  #áH   lj ޡȄ   ޡ   ߡ  ˫쓡á ߡ1"ppp  ppp U&N "$&(*,.02468:<>@BDHud@!(Z77'á   7 ܟ˄ 4ܧeeÄ/ܧddÄ   3ܧddÄ  pܧeeÄ  RܧeeÄ  4ܧbbÄ    .lP  $B6(`á   6eá á %dá á  ˡ  (á   6 ܟ˄ 4ܧeeÄ/ܧ躂ddÄ  y4ܧeeÄ/ܧddÄ  0ܧbbÄ    u.  5ˡ ەˡٚ,8JɡJ5)ácÍÄˡȡ   5cÍÄ ˡȡ ܟ˄ á+á   ǂ ˡ4 8  P֥ 8   ܧdá  ǃ DŽ  vUcÄ Aܧc1R         ˡ   4 ~ Dž 0 <5 F4 <1 20 (7 /  D<*6$b   nֲ@á ֲ30:ֲ9弄˫쓡 cá^:< D=  š á[ á   Ǜ؟ˡd ǏֲAáaֲˡGˡ9+ ؟ˡçD.. ǑǻֲǀoáHDֲ@ˡGˡ9+ ؟ˡçD.  7ֲ@á6! 6 9   áP ==ֲ9==  6 C!  @BJɡJ"ád ݤˡ ݤޟˡ* á ǥ   á0H弄 wȞ á&|ܣá :I߹(=;?6B1;,>'@"AC0/0/ !&I# @97D W؟á!t??----??x??----?? txbody أáá^ ˡ ˡákšY2 62 *ˡ Qޕ( á A> ܟˡܢ  nçş˄  ˡ V}2 2 >aánˡXşáKŢ;INPUT Я OUTPUT Я OV2 ǀ& ¾ á ȡ¾ áO VPO ˡV2 O ˡV2 Oֲ9弄˫쓡 á   ˡ! V2 O á-- ܟˡ$`mˡǨާW š륄Xߤ ؟á ֧ ֧  ?š7ٕ ֧s ֧n 88Z땧?ɡA?낫? !as?.tv#"*20 5Q=֥  á֧o蓼o ܓ-o áo 蓼o 弄ܓo á`<B˧3nÄ. =ݧoÍ $#~"! ̅ L  4`؄  6p 4^ *!$!l!D,F#m,GX>X@$:^VGXX,f$f$f0f$ff$f$f$f0f$? b{ (Ao#G.'@4G.Pt@ *P @ ( >FFJ *ȓ,P Y]Ȯ,Y\ $} WRITELN(' HIT CTLA');READLN;E(STR[I]);RRORNUMBER);m7G*,Y\ ;t*,Y\ .222ٛANNEL : IN*,Y\$  N&*,*#,Y\L WRITELN(' HIT CTLA');READLN;E(STR[I]);RRORNUMBER);*M,Y\ ;  Y] Y]DEq ; 444  Y] Y]  Y]*ȳ,Y\l$% ;nn Y]" Y] Y]8D Y]$ Y]z@4٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ@4 ~$x:d,  TƀƁƀȦINPUTƀƁJ֥DFFOBAR֥Fƥ֧DFƥ֧DTHIS IS A TESTƥ ֦ HIT CTLAJʁ֥ƁJƀ ? ߚ    ؚݞ# /֦ ERROR IN READLINE = J "  ߪ !ƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ4֦ ERROR IN WRITELINE = Jʀʀ ʀʀʀƀ!ʀʀʀʀʀʀ#ʀ0֦ ERROR IN CRAND = Jʀʀ ʀʀʀƀ!ʀʀ̀ʀʀʀʀʀʀʀ#ʀ1֦ ERROR IN DELETE = Jʀʀ ʀʀʀƀ!!`ʀhA֦ Jʀʀʀʀ̀ʀʀ?ʀʀʀʀʀ ؚʀ#ʀ/֦ ERROR IN OPEN = Jʀʀ ʀʀʀƀ!STRINGPOn@HEAP REQUEST DOTWRS @?tZ`X>ERRNUM @-ERR ܮ*BYTESOUT@BUFFER 22CHANNEL H@HWRITESEQ^ ERRNUM V@ERR l*BYTESREA@BUFFER CHANNEL خ@READSEQU ERRNUM @ERR &*&BYTESREA@<BUFFER RRCHANNEL @WORDPTR $VSTRPTR \Dn!&@4BIGSTR BYTEPTR tB@@ ®4BYTEARRA̅BB  OUTPUT INPUT PROGIRAM )BbISYSCALL P#`H!1bIg)%$RELEASE !MARK  ! K4!@ $SQRT :nEXP :nLN :nARCTAN :nLOG |Ԯ:nCOS | :nSIN :nTRUNC @nROUND @nICE DRIVER N:DED MEMAVAIL@PWROFTEN:$ SYSGEN ERRO@ INCHR )ODD (UNPACK B'PACK &SIZEOF ,%PUT #GET "RESET f!SEEK X CLOSE PAGE REWRITE v`APPEND TIME EXIT INDEX JSUBSTR EOLCHAR DATE LENGTH CONCAT RPURGE 4FILETITL NEW  ABS  SQR & ORD  SUCC[ :PRED EOLN <EOF D~WRITELN WRITE pREADLN READ . C# V @I \  !(C  NIL $TRUE *FALSE Z*MAXINT bh@RNTEXT v MBOOLEAN ֮*USCHAR Į4LEREAL : INTEGER ֮@ F@4Z]4v HIT CTLA TESTESEQUENTIAL =  DISK UNIT NOT READY DISK FORMAT ERROR DISK STATUS ERROR ILLEGAL MASTER DEVICE ou_[#^c&9; C19+ J+JU#Ed1 `1U8 CC5 B `Zv_3B$12$29$14WKll @   xTHIS IS A TESTrġ6aؤš֧?낥aؤ ֥aؤ á ֧r 땧?ɡE #TESTPXAl??CCOM.CM5  XGWXWWXWTEST.PXPXX%'XX%hkiiEv\ COM.CM=+J+J3X}ǀ$TTI$TTI@$TTO@beqY $TTO>> cjqYCOMMll *q}`TESTPXAll )q}AN`A1 ! 1 1 1 ! 1 d= ` ^Q1`WY) ! ))  !aPA`C)_A^CPA!ZP g1M9N c9 9J 9DEAR.qq,01234567890 1234567890 1979CHECKS.cC 3049 44.55 10 C 3065 223.70 32 C 2763 1850.16 2 C 2764 552.87 17 C 2765 314.49 8 C 2766 314.49 8 C 2767 100 8 C 2770 20.07 18 C 2771 630.50 4 C 2774 38.75 11 C 2777 47.70 5 C 2779 229.63 25 C 2780 6.94 5 C 2781 64.25 5 C 2786 228.23 8 EM 665 1102.70 12 EM 666 1209.04 12 EM 667 1350.43 12 EM 668 199.40 12 EM 669 550.32 12 EM 670 539.29 12 EM 671 526.45 12 EM 672 344.29 12 EM 673 2468.66 14 EM 680 411.53 12 EM 682 2234.86 14 D 1567 D 2945 D 7000 D 2500 D 6590 D 700 C 2768 677.50 20 C 2769 125 26 C 2772 736q 23 C 2773 13 1 C 2775 12.82 18 C 2776 7.30 23 C 2778 258.40 5 C 2782 160.96 5 C 2783 563.93 23 C 2784 67 26 C 2785 45.00 26 C 2788 93.70 5 C 2790 1000 8 C 2791 100 26 C 2792 1850.16 2 C 2793 115 3 C 2794 75 5 C 2795 114.48 24 C 2796 14 1 C 2797 150 5 EM 674 1360.43 12 EM 675 209.40 12 EM 676 1053.55 12 EM 677 1083.87 12 EM 678 516.30 12 EM 679 550.39 12 EM 681 276.95 12 EM 684 209.40 12 EM 685 1101.20 12 EM 686 1580.40 12 EM 687 533.66 12 EM 688 610.74 12 EM 689 422.46 12 EM 690 215.64 12 EM 698 3861.48 14e DM 2000 D 1575 D 3195 D 3144.56 D 2556 D 2000 D 7097 D 2000 EM 683 1360.43 12 EM 691 209.40 12 EM 692 981.35 12 EM 693 1050.72 12 EM 694 479.62 12 EM 695 554.62 12 EM 696 369.47 12 EM 697 329.08 12 EM 699 1398.97 12 EM 700 194.48 12 EM 701 1016.68 12 EM 702 1156.68 12 EM 703 563.99 12 EM 704 640.40 12 EM 705 470.84 12 EM 706 483.71 12 EM 707 2984.02 14 EM 708 555.34 14 EM 709 310.37 15 EM 710 1372.35 15 C 2800 38 20 C 2802 7 1 C 2803 1850.16 2 C 2804 12.45 C 2805 125 8 C 2806 2 1 C 2807 115 3 C 2808 1105.704 17 C 2809 23.35 1 C 2810 131 8 CM 1995 D 1377.50 D 1708.14 D 1885 D 24676.36 D 892.50 C 2812 63.75 6 C 2813 545 7 C 2814 1406.50 17 C 2815 368 23 C 2816 600 28 C 2817 151.18 25 C 2818 13.80 5 C 2819 30 5 C 2820 692 25 C 2821 100 25 C 2822 1291.19 4 C 2823 275.82 4 C 2824 100 26 C 2825 25 26 EM 711 1408.97 12 EM 712 204.48 12 EM 713 1091.05 12 EM 714 1096.88 12 EM 715 595.09 12 EM 716 613.84 12 EM 717 514.82 12 D 8907.50 34 D 4462 34 D 14386.25 34 D 527.50 34 EM 718 482.51 12 EM 719 3016.96 14 EM 720 125.2=b4 14 EM 721 879.67 15 C 2826 1850.16 2 C 2827 115 3 C 2828 552.87 17 C 2829 75 24 C 2830 88 18 C 2831 20 26 C 2832 108 26 D 3232.50 34 C 2833 64.59 4 C 2834 157.50 22 C 2835 8.93 1 C 2836 25 26 C 2837 30 5 C 2838 12.25 5 C 2839 10.94 5 C 2842 273.55 25 C 2A843 1444.50 17 C 2844 176 5 C 2845 446.10 5 C 2847 739.11 4 C 2848 108.10 4 C 2849 341.33 4 C 2850 428.08 25 C 2851 26.19 11 C 2853 611.53 17 C 2854 20.75 1 C 2855 500 27 C 2858 9.93 5 C 2860 28.50 5 EM 722 1032.90 12 EM 723 1408.97 12 EM 725 1166.68 12 EMi 726 527.17 12 EM 727 560.96 12 EM 728 492.78 12 EM 729 298.75 12 EM 730 2831.26 14 EM 739 2326.89 14 C 2840 770.93 25 C 2841 32.27 25 C 2846 33.44 5 C 2852 101.44 23 C 2856 513.12 23 C 2857 83.07 5 C 2864 25.83 8 C 2865 1850.16 2 C 2866 30.29 5 C 2867 115k 3 C 2868 27.76 14 C 2869 80 18 C 2870 736 23 C 2871 546.84 5 C 2872 68.98 5 C 2874 298.05 6 C 2875 766.49 6 C 2877 16 18 C 2878 121.92 1 C 2879 1633.42 23 C 2880 11.25 5 C 2881 23.85 5 C 2882 49.52 5 C 2883 9.80 5 C 2886 24.45 5 C 2889 77 5 EM 724 204.48 12 EM 731 1408.97 12 EM 732 204.48 12 EM 733 863.83 12 EM 734 915.34 12 EM 735 368.67 12 EM 736 514.29 12 EM 737 430.51 12 EM 738 322.85 12 EM 740 1420.97 12 EM 741 204.48 12 EM 742 1131.44 12 EM 743 1096.04 12 EM 744 551.67 12 EM 745 640.60 12 EM 746 385.40 12 EM 747 360.91 12 EM 748 2850.69 14 EM 751 1049.82 12 EM 758 2575.50 14 D 210 34 D 600 34 D 15954.41 34 D 1278.47 34 D 611.53 34 C 2861 611.53 17 C 2862 171.16 25 C 2863 32 8 C 2887 30 5 C 2888 41.62 5 C 2890 104.82 23 C 2891 129.76 8 C 2892 115 3 C 2893 27.46 5 C 2894 3.95 23 C 2895 244.30 25 C 2896 16.85 5 C 2897 1850.16 2 C 2898 601.53 17 C 2899 177 5 C 2900 717.86 4 C 2901 50 26 C 2902 3 18 C 2903 22 18 C 2904 169.04 5 C 2905 300 17 DM 7.50 C 2906 60 1 C 2909 81.22 15 EM 749 1424.97 12 EM 750 204.4"8 12 EM 752 992.88 12 EM 753 551.67 12 EM 754 550.23 12 EM 755 431.37 12 EM 756 343.46 12 EM 759 1391.48 15 EM 760 1569.95 15 EM 761 80.68 14 EM 762 1017.67 12 EM 763 929.08 12 EM 764 518.89 12 D 4302.50 34 D 1558.65 34 D 418.50 34 D 430 34 D 3475 34 EM y765 271.86 12 EM 766 384.02 12 EM 767 256.22 12 EM 782 2500 14 EM 783 1956.74 14 D 7202.98 34 D 3000 34 D 1240 34 C 2907 45 1 DM 6 D 552.50 34 D 1030 34 D 1547.28 34 D 1800 34 D 618 34 D 4310 34 D 368278 34 D 2675 34 DM 3000 C 2915 26 5 C 2918 336.98 27 C ˻2919 263.44 8 C 2920 153.50 6 C 2921 1159.13 25 C 2925 54 10 C 2926 306.79 17 C 2927 225 1 C 2928 1850.16 2 C 2929 395.75 2 C 2930 2839.54 14 C 2931 115 3 C 2932 18.02 5 C 2934 83.31 4 C 2935 56 33 C 2936 1390 28 EM 768 1426.97 12 EM 769 204.48 12 CC 770 C\5C 779 EM 771 864.72 12 EM 772 1001.57 12 EM 774 640.60 12 EM 775 302.19 12 EM 776 451.39 12 EM 777 429.02 12 EM 778 314.65 12 EM 780 568.52 12 EM 781 993.27 12 EM 784 551.67 12 EM 785 993.62 12 EM 786 993.62 12 EM 787 444.04 12 EM 788 375 12 EM 789 415.74 +12 EM 790 204.48 12 EM 791 1426.97 12 EM 792 1426.97 12 C 2914 101.18 5 C 2916 70.65 5 C 2917 76.47 5 C 2913 133.61 23 C 2910 897 15 C 2908 601.81 4 DM 52.15 C 2933 51.22 5 C 2937 398 17 C 2938 60.80 1 C 2939 19.75 18 C 2940 30.95 32 C 2941 31.65 32 C 2942 115 3 C 2943 350 27 C 2944 100 27 C 2945 1850.16 2 C 2946 20.76 11 C 2947 75.64 32 C 2948 124.89 17 C 2949 106.45 25 C 2950 150.70 10 C 2951 8.46 32 C 2952 1057.58 27 C 2953 830 27 C 2958 25 3 C 2961 100 22 C 2962 1000 17 EM 794 1426.97 12 EM 795 204.48 12 EM 796 2090.76 14 EM 793 561.13 12 D 2320.45 34 D 3314.44 34 D 4439 34 D 2039.96 34 D 2747.24 34 EM 797 360.94 15 C 2955 1301.13 32 C 2956 60 27 C 2957 125 27 C 2959 30 3 C 2960 10.35 32 C 2963 178.83 32 C 2964 270.22 32 C 2965 174.85 4 C 2966 81.63 32 C9[ 2967 365.44 32 C 2968 34.70 32 C 2970 22000 12 C 2971 1500 32 C 2972 398.04 32 C 2973 1550 9 C 2975 294.74 25 C 2976 548.34 32 C 2978 35 26 C 2979 500 7 C 2983 398.04 32 C 2985 1850.16 2 D 2197.25 34 D 5527.98 34 D 832.50 34 D 6471.12 34 D 12653.22 34 DM 1301.13 D 808.23 34 D 1890 34 C 2981 34 1 C 2984 7.68 10 C 2988 17.50 8 C 2991 31 1 C 2992 7.50 5 C 2994 196.14 22 C 2995 60.93 23 C 2996 202.41 23 C 2997 20.58 23 C 2998 118.46 23 C 2986 22 1 C 2987 47.20 5 C 2989 2 4 C 2990 890.60 4 C 2993 30.95 3 C 3003L 63.01 4 C 3004 5.80 23 C 3005 81.83 32 C 3006 190.25 4 C 3009 89.20 5 C 3011 61.95 5 C 3013 550 2 C 3014 93.39 2 C 3015 368.32 2 C 3018 414.75 2 EM 798 204.48 12 EM 799 204.48 12 EM 800 1426.97 12 EM 801 426.97 12 CC 806 CC 807 CC 808 D 660 34 D 2500 34 D 1332.87 34 D 7430.13 34 D 3561.07 34 EM 803 1207.97 27 EM 804 1426.97 12 EM 805 204.48 12 EM 809 1835.96 14 C 2999 80 10 C 3000 230 1 C 3001 359 1 C 3007 37.12 10 C 3008 12.40 10 C 3010 69 1 C 3012 600 3 C 3016 4 5 C 3017 1208.43 25 C 3019 31 5 C 3020 8 1s8 C 3021 262.25 22 C 3022 34.90 22 C 3023 535.05 3 C 3024 12.60 10 C 3025 547.25 27 C 3026 40 32 C 3027 327.12 4 C 3028 44.82 3 C 3029 397.33 23 C 3032 202.96 17 C 3033 215.05 3 C 3034 6.30 3 C 3035 230 3 C 3036 50 27 C 3037 288 27 C 3038 150 27 C 3039 55.)06 3 C 3042 88.17 3 C 3043 49.80 3 C 3045 10 1 C 3046 5428.82 6 C 3047 300 24 C 3051 164 17 C 3052 612.92 3 D 1029.72 34 D 440 34 D 16000 34 CC 2789 CC 2798 C 2799 157. 23 CC 2801 CC 2811 CC 2859 CC 2876 CC 2884 CC 2885 CC 2911 C 2912 787.00 17 CC 2922 CC t2923 C 2924 368 23 CC 2954 CC 2974 CC 2977 CC 2980 CC 2982 CC 2873 C 3030 626.30 23 C 3031 30 27 C 3041 3.57 4 C 3048 22.56 11 C 3050 35 26 C 3053 256.07 4 C 3054 1743.66 7 C 3055 1200 21 C 3057 60 26 C 3058 385 3 C 3059 172.14 8 C 3060 6.95 3 C 3061 646.33 8 C 3062 31 1 C 3063 30 26 C 3072 129.64 4 C 3074 2500 21 C 3077 10.77 6 C 3079 37.50 6 C 3080 1298.05 25 C 3056 10 26 C 660 484.10 12 EM 815 887.50 12 CC 2969 C 3073 1340.73 25 ALLOC. ;PASCAL "ALLOCATE" PROCEDURE ; -- GENERATES ANY SPECIFIED SIZE OF HEAP FRAME ;PETE GOODEVE 78:7:22 ;TYPICAL USE: ; VAR P:ARRAYPOINTER; (* MADE AS LARGE AS POSSIBLY NEEDED *); ; .... ; ALLOC(5) (* GET 5 WORDS OF SPACE *); ; MARK(P) (* MAKE IT AVAILABLE FOR USE *); ; .... (* PROGRAM MUST NOT EXCEED 5 WORD ACCESS RANGE!*) .TITL ALLOC ;78:7:22 .EXTN XPRET .ENT ?ALLOC SP=41 ;STACK POINTER HP=44 ;HEAP POINTER SL=45 ;CURRENT STACK LIMIT P4ERR=JSR @51 .NREL ;PROCEDURE ALLOC(I:INTEGER);EXTERNAL; A: ?ALLOC: LDA 0,0,3 ;NUMBER OF WORDS TO ALLOCATE LDA 2,HP ;CURRENT HEAP SUB 0,2 ;FORM NEW POINTER LDA 3,SL ;STACK LIMIT ADCZ# 3,2,SZC ;CLUNNK? JMP MAKE ;NO -- MAKE THE SPACE P4ERR 414 ;OVERFLOW ERROR MAKE: STA 2,HP ;NEW HEAP COM 0,0 ;SET COUNTERtm SUB 1,1 MLP: INC 0,0,SNR ;DONE? XPRET ;YUP STA 1,0,2 ;CLEAR SLOT INC 2,2 ;NEXT JMP MLP .END ;OF ALLOCATE T24.2PROGRAM T24(INPUT,OUTPUT); TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOTA,KLIG,IOFILE,FOBAR,GZYXX : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN (NUMBER : INTEGER ; IFILE : ALPHA ; VAR IOTA : INTEGER);EXTERNAL; BEGIN IOTA :=100; IOFILE := 8; FILEN]@AME := 'INPUTFILE0.SR'; OPEN (IOFILE , FILENAME,IOTA); WRITELN (OUTPUT,'IOTA= ',IOTA) END. 36. 8TKOM.01``PROGRAM TKOMPAR(INPUT,OUTPUT); TYPE COMPARATIVE = (LESS,GREATER,EQUAL); TEXT = PACKED ARRAY[1..10] OF CHAR; VAR A : TEXT; B : TEXT; I,J : INTEGER; FUNCTION KOMPAR ( A : TEXT; B : TEXT; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE; VAR I : INTEGER; T : COMPARATIVE; BEGIN T := EQUAL; I := NSTART; WHILE ( ( T = EQUAL ) AND ( I <= NEND ) ) DO BEGIN WRITELN(' ',A[I],' ',B[I]); BEGIN IF A[I] > B[I] THEN T := GREATER ELSE IF A[I] < B[I] THEN T := LESS END; I := I+1 END; KOMPAR := T END; BEGIN WHILE NOT EOF(INPUT) DO BEGIN I :=1; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,A[I]);I := I+1 END; RESET(INPUT); B[1] := 'P';B[2] := 'A';B[3] := 'S'; CASE KOMPAR(A,B,1,10) OF LESS : WRITELN ('LESS'); EQUAL : WRITELN ('EQU3AL'); GREATER : WRITELN ('GREATER') END END END. F. *zPROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : INTEGER; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARXRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : INTEGER; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : INTEGER; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGINr IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[*ZI] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1/; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROdCEDURE DELETE(X : INTEGER; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDUREZ UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.ES[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.EH[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REʇF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END ENDҹ END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DvO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY : 4); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THENz` BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN ABEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . REALPRINT.02  PROCEDURE REALPRINT (R : REAL); TYPE SIGNOF = (PLUS,MINUS); VAR I,J,CHARPOS : INTEGER; STR : STRING[15]; SIGN : SIGNOF; PROCEDURE DECDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,' CHARPOS=',CHARPOS);} R1 := TRUNC(R/PWROFTEN (J)); { WRITELN(' bjR1=',R1);} R := R-R1*PWROFTEN (J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; IF ((J = 6) OR (J = 3)) THEN BEGIN STR[CHARPOS] := ','; CHARPOS := CHARPOS+1; END; END;{DECDIGIT} PROCEDURE FRACTDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J='z,J,'CHARPOS=',CHARPOS);} R1 := TRUNC(R*PWROFTEN(J)); { WRITELN(' R1=',R1);} R := R-R1/PWROFTEN(J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; END;{FRACTDIGIT} BEGIN {do decimal part first} IF R >= 0 THEN SIGN := PLUS ELSE BEGIN R := -R; SvIGN := MINUS;END; R := R + 0.005; STR :=' '; I :=8; REPEAT I := I-1 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); CHARPOS := 2; IF SIGN = MINUS THEN STR[1] :='-'; FOR J := I DOWNTO 0 DO DECDIGIT; STR[CHARPOS] := '.'; CHARPOS := CHARPO9XS+1; FOR J := 1 TO 2 DO FRACTDIGIT; WRITE(STR); END; CBOOK.MCqs4HCHATR CBOOK.PA 0 CHATR CBOOK.PX 0 DELETE/V CBOOK.PA XFER CBOOK CBOOK.PA/R CHATR CBOOK.PA *WP PASINTERP PASCALO/S/V CBOOK CHATR CBOOK.PX *WP CONSOLE.PXsq . CONSOLE  Copyright (C) 1980 Rational Data Systems  (  C٨C ? ߚ    ؚݞ#ߨC /֦ ERROR IN READLINE = ծ   !٨CJ IKCKCILLL?LKLLL ؚI#L0֦ ERROR IN WRITELINE = :ծMML MLLLJ!H ۢ*"ٞ# ۢ ٞ#!:٨CI HJCJCHKKK?KJKKK ؚH#K+֦ ERROR IN OPEN = ծLLK LKKI!HQبCH GICICGJJJJIJJG#J-֦ ERROR IN DELETE = ծKKJ KJJH!HبCH GICICGJJJJIJJG#J,֦ ERROR IN CRAND = ծKKJ KJGJH!H ؚۢۢٞ# ۢ ٞ#!< ۢٞ# ۢ ٞ#!: قٮȡ á 4 بCEHٮGȡxHFFFFD޾? FD޾EE.FD޾ E   FGáuG آDŽڿ šܢDŽڿIٮġ+ܢDŽܢD޾áܢDŽڿ7 t š<ܮȡ*ۢDŽۢD޾á. P٨CHJڮIȡZJGGGGD޾ HHGD޾ á HHHGIáH[G zšVġڮȡ áڑȡáث3 hقٮȡ á֥H >֥H   ֥  ֥H á ֥֥"֧ROMN֥ MP:֧QOMN*2/,# % "$&(*,.02468:<>@BDFHJLNF;PRTVXZ\^`bdfhjlnprtvxz|~ N֦ INPUT FILE?ծHHEFDEFD֥R֧RFD֦ OUTPULT FILE?ծHHEFD֥QFDFD֧QFDHȡ á^֥ 2ƁƂƁզOUTPUTƁSƁƁSINPUTIƀIOUTPUTFIƀƁ ƀ˦INPUTFILƁSƁ\֥ HáPƁSIƀ;:V&Rz r ^v  F 6ASM.SVASM.SVMANUAL2.11?? MANUAL2.11 Update to RDS Pascal Programmer's Manual 14 October 1980 Note: There is no update to the Programmer's Manual for Release 2.11. However, be sure to read "MANUAL2.10" which includes important changes to the Release 2.00 manual. GETCOLUMN.BUsriyFUNCTION GETCOLUMN(STR : ALPHANUMERIC) : INTEGER; VAR I,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; {BYPASS FIELD 1} WHILE ( (I< LEN) AND (STR[I]IN ['!'..'}']) ) DO I := I+1; WRITELN('WHILE1',I); WHILE ( (I< LEN) AND NOT (STR[I] IN ['!'..'}']) ) DO I := I+1; WRITELN('WHILE2',I); WHILE ( (I 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITELN(' STRING=',STR); END;o{OF REALPRINT} BEGIN REPEAT BEGIN WRITELN(' ENTER A REAL NUMBER'); READ(R); REALPRINT(R); END; UNTIL EOF(INPUT); END. T34.6(*PROGRAM T34 TESTS BIT SET AND BIT CLEARING*) PROGRAM T34(INPUT,OUTPUT); VAR BIT,WORD,VALUE : INTEGER; CHR : CHAR; PROCEDURE TBIT(BIT:INTEGER;WORD:INTEGER;VAR VALUE:INTEGER);EXTERNAL; PROCEDURE BSET(BIT:INTEGER;VAR WORD:INTEGER);EXTERNAL; PROCEDURE CBIKT(BIT:INTEGER;VAR WORD:INTEGER);EXTERNAL; BEGIN WRITELN(OUTPUT,'ENTER S ','C OR T F','OR SET C','LEAR OR ','TEST BITS'); READLN(INPUT,CHR); IF CHR = 'S' THEN REPEAT WRITELN(OUTPUT,' BIT NO AND WORD'); READLN(BIT,WORD); BSET(BIT,WORD); WRITELN(OUTPUT,' WORD=',WORD); UNTIL EOF(INPUT) ELSE IF CHR = 'C' THEN REPEAT WORD:=32767; WRITELN(OUTPUT,' BIT NO'); READLN(INPUT,BIT); CBIT(BIT,WORD); WRITELN(OUTPUT,WORD); UNTIL EOF(INPUT) ELSE IF CHR = 'T' THEN REPEAT WRITELN(OUTPUT,' BIT,WORD'); REA(DLN(INPUT,BIT,WORD); TBIT(BIT,WORD,VALUE); WRITELN(OUTPUT,' BIT=',VALUE); UNTIL EOF(INPUT) ELSE WRITELN(OUTPUT,' ILLEGAL') END. REALPRINT.PI O PROCEDURE REALPRINT (VAR OUTFILE : TEXT;R : REAL); TYPE SIGNOF = (PLUS,MINUS); VAR I,J,CHARPOS : INTEGER; STR : STRING[15]; SIGN : SIGNOF; PROCEDURE DECDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,' CHARPOS=',CHARPOS);} R1 := TRUNC(R/PWROFTEN (J)); { WRITELN(' R1=',R1);} R := R-R1*PWROFTEN (J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; IF ((J = 6) OR (J = 3)) THEN BEGIN STR[CHARPOS] := ','; CHARPOS := CHARPOS+1; END; END;{DECDIGIT} PROCEDURE FRACTDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,'CHARPOS=',CHARPOS);} R1 := TRUNC(R*PWROFTEN(J)); { WRITELN(' R1=',R1);} R := R-R1/PWROFTEN(J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; END;{FRACTDIGIT} BEGIN {do decimal part first} IF R >= 0 THEN SIGN := PLUS ELSE!r BEGIN R := -R; SIGN := MINUS;END; R := R + 0.005; STR :=' '; I :=8; REPEAT I := I-1 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); CHARPOS := 15-I-3-I DIV 3; IF SIGN = MINUS THEN STR[CHARPOS-1] :='-'; FOR J := I DOWNTO 0 DO DECDIGIT; i STR[CHARPOS] := '.'; CHARPOS := CHARPOS+1; FOR J := 1 TO 2 DO FRACTDIGIT; WRITE(OUTFILE,STR); END; DELETE.PIr PROCEDURE DELETE(FILENAME : LINESTRING;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTDELETE =256; {.DELETE} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WIjTH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTDELETE; R0.LPTR := FILEPTR; R0.INT := R0.INT+2; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN DELETE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {DELETE} CRAND.PIr gJPROCEDURE CRAND(FILENAME : LINESTRING;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTCRAND = 3584; {.CRAND} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTCRAND; { APPEND 0 TO END OF STRING} R0.LPTR := FILEPTR; R0.INT := R0.INT+2; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN CRAND = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAPX); END; {CRAND} |PASCALO.PXl b|? /!COMPILEROPSYSINICOMPINITSHOWERROCOMPFINIDECSEGMEBODSEGME  Copyright (C) 1980 Rational Data Systems 4  H  ݢ ݢٚݢǀݢݣ ޢ ܞ#ݢݣ ݣ ݣ @!l֥֥&PX PASCAL[O][switches] sourcefile[.PA]֥switch meaning֥------ -------֥4!/A analysis to @OUTPUT֥/A=afile analysis to afile֥!/C conform to standard֥/E=efile errors to efile֥/L listing to @LIST֥/L=lfile listing to lfile֥!/N no codefile created֥"/S swap compiler phases֥"/V verbosity to @OUTPUT> ۢۢۢNڞ#!2ئ abcdefghi@bl ȡ4ݏ0ݤ ݏ0ݤ á.__?pidD.TMPH@0d 0 0 * ڪ@& ( ())*) )ٚ)ǀ)))))ǀ)) ** (#*<*''á)) ) ''š ) @ۦ@&!& VWƦAOSVP0-ihȡiCCCCChá  ? N,S0C6FFG1Gá"G¾G¾0FFAWEE֥u֥uihȡ)iDDDDDEDháL"S" "@LIST@֥"֥ihȡ(iDD*eDDDDháE_W"EE֥y֥yihȡ)iDDDDDEDháVP ֥վš0֥hվh.PA֥hվh@hh@h.PACh@֥w֥w,֥֥֥ kئ abcdefghi@ ȡ4܏0ܤ ܏0ܤ á$$M$@.WKC@FA@BA@& ֥֥0PX PASCAL[O][switches] sourcefile[.PA] [options]֥֥switch meaning֥------ -------֥!/+C conform to standard֥&/L listing to sourcefile.LS֥!/N no codefile created֥"/S swap compiler phases֥%/V verbosity to $TTO/$TTO1֥֥o/ption meaning֥------ -------֥afile/A analysis to afile֥efile/E errors to efile֥lfile/L listing to lfile֥p  ۢ%"ڞ#/!2 AZȡ,rA ۡܚá,H ت֥֥󮀂ʀ֥󮀂ʀ :ت֥֥ȡ0ʀ̀ʀ̀ʀʀʀʀá+ Z VW3ƦRDOSVP0-ȡؤá A H I P Q X Y ZֲFCOM.CMֲCOM.CMֲ~ ~>¾˲~¾˄Fcš ֦(F)COM.CM file is too long.ֲ~ j5 z~¾ˡ)²~¾¶ȡy~¾1  ȡ1rAáá~¾áɡ ? ղ@֥վš0֥վ.PA֥վ@ZT#pȡ}ز =á.¾¾0"֦Invalid local switch.֥u֥uȡ"٤٤á֥y֥yȡ"٤٤áZ}rLA֦Duplicate listing files.ֲAL Xáj 1rLA@.LSCrNA,rSA0rCA6rVAPب"ƀƁ ƀCLIFILE  ́!Ɓ!@Ɓ!.PACƁ!@֥w֥w,֥ ֥֥ƀB 0 ؾȡ3¾ ¾ á1 H$ #ȡ$ؤ#á<<<  2֥##Wrong operating system.# q$jvV ~PN  j(&iAA4ؤAND 4ؤ'4ؤ 4ؤARRAY 4ؤ,4ؤ BA4ؤBEGIN 4ؤ4ؤ CA4ؤCASE 4ؤ4ؤ 4ؤCONST 4ؤ4ؤ DA4ؤDIV 4ؤ'4ؤ 4ؤDO 4ؤ4ؤ 4ؤDOWNTO 4ؤ4ؤ EA4ؤELSE 4ؤ 4ؤ 4ؤEND 4ؤ 4ؤ FAF4ؤFILE 4ؤ.4ؤ 4ؤFOR 4ؤ4ؤ 4ؤFUNCTION4ؤ 4ؤ GA4ؤGOTO 4ؤ4ؤ HAIA4ؤIF 4ؤ4ؤ 4ؤIN 4ؤ)4ؤ JAKALA4ؤLABEL 4ؤ4ؤ MA4ؤMOD 4ؤ'4ؤ NA4ؤNOT 4ؤ&4ؤ OA4ؤOF 4ؤ 4ؤ 4ؤOR 4ؤ(4ؤ PA4ؤPACKED 4ؤ+4ؤ 4ؤPROCEDUR4ؤ4ؤ 4ؤPROGRAM 4ؤ!4ؤ QARA4ؤRECORD 4ؤ-4ؤ 4ؤREPEAT 4ؤ4ؤ SA6,4ؤSEGMENT 4ؤ04ؤ 4ؤSET 4ؤ*4ؤ 6,4ؤSTRING 4ؤ34ؤ TA4ؤTHEN  4ؤ 4ؤ 4ؤTO 4ؤ4ؤ 4ؤTYPE 4ؤ4ؤ UA4ؤUNTIL 4ؤ 4ؤ VA4ؤVAR 4ؤ4ؤ WA4ؤWHILE 4ؤ4ؤ 4ؤWITH 4ؤ4ؤ XAYAZAZAeeآآddآآccآآbbآآآ``&آآaa>Cآآc_ _آآآآeآ آ آcآ ۦINTEGER ۢ eۢ ۦREAL ۢ dۢ ۦCHAR ۢ cۢ ۦBOOLEAN ۢ 뺂bۢ ۦTEXT ۢ aۢ ۢۦMAXINT ۢۢ eȡV ܢ báܦFALSE ܦTRUE ܢؚܢښܢábٚ ۦNIL ۢ `ۢۢۢum mئ آ آl lئ آ آآآk kئ آ آآآآj jئ آ آآآiiئ آ آآآ آآآآآآOdآhhئ آ آآآ آآآآآآآXƀ `6ƀƀ1READ READLN WRITE WRITELN EOF EOL9N PRED SUCC  ORD  SQR  ABS  NEW  FILETITLPURGE CONCAT LENGTH DATE EOLCHAR FSUBSTR INDEX MOVELEFTMOVERIGHEXIT IDSEARCHTREESEARTIME FILLCHARAPPEND REWRITE PAGE CLOSE  }[SEEK !RESET "GET #PUT $SCAN %SIZEOF &PACK 'UNPACK (ODD )CHR )ȡ}ʀٳ0ƀRڡ  ̀ʀʀʀ ڡ ʀʀʀʀٚʀáxPWROFTEN?$MEMAVAIL?ROUND ?TRUNC ?SIN ?COS ?LOG ?ARCTAN ? LN ?  EXP ?  SQRT ?  MARK ?   RELEASE ? !SYSCALL ?#6 džpMLܠMONȡOܹ OO eOde~ OO dOeadZ OO `O< OO `O$nfM T:M[ݡ  OOOO?ݡO.O؟ˡآO ښOؚNápO8[Ys5432fUTS1QONWGrqFE.DA?>=+*¾ë90;0;d 0; "0; ȡ.ܤޢޢ ápǂCopyright (C)  Rational Data Systems(Py^4|t t  ɡ ddڏ ۂق܏B خ'Rational Data Systems Pascal Compiler [خrelease ٥. . ɡخ0خ Lخ , overlaidخ] خline seg procخ==== === ====gخA :٣  ٣  ڥt| ت ֶ ,ֶ  /  6خ"ۥ"ۦ cfompiled on ۲ ۧX ۲  ۧ; ۦ at R šخR :خR :I šخI :خ0ۧI :@ š خ@ خ0ۧ@ -6,0šخ վۦusing the optionšخs- ֦Byteswap6֦ Conformance, ֦Nocode0 ֦Swappingخ.  ;HX qSundayxMondayiTuesdayY WednesdayGThursday6Friday'Saturday_Ŭyl_QA2%H January February March April May June Julyr Augustc SeptemberQ OctoberA November0 December ~sh[K=.1֥Z ֥ ֥ line seg proc off nst ֥u ֥u ֥֥֥ ֥  ֥y ֥y  &] K;HX%RI@ ,֥Z n BMC ggPROGRAM   x declarations !áwátá>á"Ś˫á)áaF6;3srEXTERNALt֥ ֥u  o og ns  X^tLn\ Z xAخError Message Summaryخ===== ======= =======Xخ ٲ@$@ ERMSGFIL PASCAL.ERP֥֥u֥y֥;a`ȡtaإ Z P֥֥u֥y֥`áva <ZخSegment Numberڦ Segment Nameڦ Size (Bytes)ȡ>٤ˡ"خ ۢ á;ت@&@$%$á%$¾&$$%%$ɡ6$v$6@٦@OT~٪@$$@$ A$B6$ت@٪@F EEHHǀHGH<á HHHE#HGHǀH$<á HHHE#F!F#~֥֥A ۦ lines#֥u֥uA ۦ linesP#֥֥A ۦ lines֥uP֥ Mȡ ڤ áȡ8ڤȡܢ¾ ááȡ áʾȡ֥¾ áʾ.ȡ á!ȡ á֧; ֧H ֧X ֧R ֧I ֧@ ֧<  ֧F ȡz3 á观+  *  ֧Z ɡ 槂,g֥ ZY!  ֥<֥3+* եվU եվX֥ե֥{0Wwp2 Ȅ Gǀ  0ȡ ǀ  (ǀ &á+ ȡڢ¾ áBǀ 3áxáÄەݚš) ۮڮȡ^# áá cس0$@ L'Ȅق 4JȄق #Ȅق  @MÍǀ Jسášá ǀ :&n^ǀ Ȅ =á&ݧWWcáWWX '9á ݢښ  bˡ! ٢٢`m ۢˡ iΥXۢ뚧76`mɡ/ġ 9!٫¾¾<j ˡd˄ `ádá33Z3á' 6n-#&: <> ;% V˄ $ ˡ[Eá+ 8n;ˡ.';!=? M3!lˡnV&-M.á% 2n$ˡ"Ǿ6  ^K   W|      á ' 6n   á   !ná '6   8  Í Ä  áP   A ˡǖ   Eի ?ˡń 弄 ;֥ 弄 á ݟˡˡ NJ ˡ ˡqݟˡL< D   ˡ  š}Nj   ˡL3á DB  @$ń ˡáZáˡˡ nj áˡ  á ǘ   $ , $ 8  Í Ä  áP   ˡń  ˡÍ~á    OaáV  O >>  á#ˡń Ǎ `E /162 #:á $k0š ˡɡ % áVߣ á ߣ ˡ+ öÄ.á  xȡ ááٟá~ֲ"ٟ˄ڟˡ٣áȡqcÄÄǀ&  _  á 6çDeڧd d CÄ,'Pˡ ݕˡǎګ Há=ڣɡǿágá ˡǚٟˡˡá(ٟˡߣ á ߣ *ߣ á Nߣ ߣ á Sߣ  Mߣ ߣ  Rrt 42ܣ áܣ ޳``V޳`á޳@t ޳" ޹#$)*1ˡ ġe ˡ%eádá e ˡ%eádá e  >,e +á Oe   ȡD  ˡ eˡáǤ á ˡ eˡá% ,-ˡ eˡCPb Dˡ eˡDc Z)RCExutq]ZW*,)02*6Hߡá2vYeá d eá اd*3ddÍ3g>4弄: 弄^ܣá 'ܣá  ˡá ꧂e ꧂d ác   _   á*7bˍ ˡbˡ LJ    á ˡˡ Lj  Ȅ  #áH   lj ޡȄ   ޡ   ߡ  ˫쓡á ߡ1"ppp  ppp U&N "$=&(*,.02468:<>@BDHud@!(Z77'á   7 ܟ˄ 4ܧeeÄ/ܧddÄ   fe3ܧddÄ  pܧeeÄ  RܧeeÄ  4ܧbbÄ    .lP  $B6(`á   6eá á %dáJK á  ˡ  (á   6 ܟ˄ 4ܧeeÄ/ܧddÄ  y4ܧeeÄ/ܧddÄ  0ܧbbÄ    u.  5ˡ ەˡٚ,8JɡJ5)ácÍÄˡȡ   5cÍÄ ˡȡ ܟ˄ á+á   ǂ ˡ4 8  P֥ 8   ܧdá  ǃ DŽ  vUcÄ Aܧc1R9         ˡ   4  Dž 0 <5 F4 <1 20 (7 /  D<*6$b   ]nֲ@á ֲ30:ֲ9弄˫쓡 á^:< D=  š á[ á   Ǜ؟ˡd ǏֲAáaֲˡGˡ9+ ؟ˡçD. ǑǻֲǀoáHDֲ@ˡGˡ9+ ؟ˡçD.  7ֲ@á6! 6 9   áP ==ֲ9==  6 C!  @BJɡJ"ád ݤˡ ݤ,ޟˡ* á ǥ   á0H弄 á&|ܣá :I߹(=;?6B1;,>'@"AC0/0/ !&Il# @97D W؟á!t??----??x??----?? txbody أáá ˡ ˡákšY2 62 *ˡ Qޕ(Z á A> ܟˡܢ  nçş˄  ˡ V2 2 >aánˡXşáKŢ;INPUT Я OUTPUT Я OV2 ǀ& ¾ á ȡ¾ áO VO ˡV2 O ˡV2 Oֲ9弄˫쓡 á   ˡ! Vb2 O á-- ܟˡ$`mˡǨާW š륄Xߤ ؟á ֧ ֧  ?š7ٕ ֧s ֧n 88Z땧?ɡA?낫? !as?.tv#"*20 5Q=֥  á֧o蓼o ܓ-o áo 蓼o 弄ܓo á`<B˧3nÄb. =ݧoÍ $#~"! ̅ L  4`؄  6p 4^ *!$!l!DҖـڀɄńڂ0á ڀـܡ ڏ.弄弄á ˡ á=   ߚ   @  !"F"ˡߢ ߢ á,á  án  ǔ#á ߢ ˡ ߟˡvߢ~  ޚ #áǺ ߢ ˡkߟˡ7á-ˡ&dá$š fߚGܟ$q1 nٟ˶k٧e٧d˄8 1)ġ+á@š4 ɡڸsu2N @š  ڢ ڢڢڢ/ ł ڢڢ ˡ   ٶ˄/bڣ %ڣ áڢڣ ڣ Ȅ ڢڢ٢٢٢á   ٢ ٢٢٢. . á! ֶ á8áX  ˡ;ȡ/d  ءֶ n%ֲ&ֲ ł áW   ֲ ˡ o  ٢٢ ٢٢   ˫쓡áBJ9áXá ֲ(  š  öń ˡ%      ł  á%Nֲ-˫쓡  썡 jjS(   ááA    ߚ  A ˫쓡á. ˡ álˡ n á) Ǚ ޟˡ ߚ á ܟ+084p   آآál. . á+  إآ  آfآ f# ˡ ˡ    弄 弄弄á +á&弄Y,áá    ߚ  t ޟˡ7ȡ(ާdá mާeá Ǖ ޚ ˫á[ áT  ˡ á "ȡ   ˡ ;&t˂ KF@-  GHI ?š J ȡ '  ߟá-á ɡ   ł   ߚ w  á_*á áU ߟˡ%š ߧdߧeÍr  ߚߟˡ4 ɡTɡ ǩ.áW   á V ߚߟˡ!á6 >3á|ˡǴlߧeá8ō   _ ǀá\ Jܟá139;=?P$a/ "áY ؟{ٓˡ Ǧٓ!ۢۢڢؚ Bֲ ˫쓡ác ˡֲá ۥۢ ۢۢ) Äֲآ ٚآá%?ֲb ˡ"ֲá ݥݢ ݢ) ÄǗֲڢ ۚfٟˡ+گ٧fˡآfá%Kֲ>rvfˡ fx á/ ݢݥݢٚݢ ݢn#Lֲ˫쓡á1ֲٟˡ=ݢ ۚݢá ۟ˡb7áݢ  ؚá%Mֲ|弄fˡ f15 @ ֲáw@Oֲ!@á  áK   á ߚn  Pֲ.˫쓡 áNá@  ˡ á áy ȡ  / ޟˡ"    ˡ  (Q(á)@Rֲ!á+C+ݢꚟ ˡ< ޚáˡš   ޚܟN v, r   ns.`֥A :ڣ  ڣ  ڣ ȡ֥. á֥`֥uA :ڣ  ڣ  ڣ ȡ֥u. Bá֥u) 0áR3N !qrr8 ?Y ꫂQ5á֥ ˡFáÄ Äá Ä ÄǠáb^  nr횧3 Ä Ät#qšqqrǕárrá}ˡDˡ2    š ˡ& ˡU  r" is sn nɡ nn ɡ7 á áá|z ˡ x ˡˡ ֲ {ádåFORWARD ЯBǡápDֲASSEMBLEЯ61áS ֲ+ MˡVȡ¾ áˡ   ֧n 88Z땧?ɡB?낫?as{?!åEXTERNALЯ6áǯֲ* Mˡ<ȡ¾ á ֧n 88Z땧?ɡ?낫?as?Q !P tx declarations   o o o VV2\áZL á! ߟá   á ߢߚGteޟˡޢ  4 ޟˡ  6ˡٚښٟá, ޢޢ aޢnޢ֧aޢ  ݚRINPUT +INPUT ֦INPUT OUTPUT OUTPUT ֦OUTPUT ֥؟ˡ آ0֥+202á3nÄL á á á3nÄMTnç3 ˡ弄܄Q z@z V D x L<nV2f0`20 . oá 0Nǀۡ (áٟڟÍˡ'á á ٧`ڧ`ÍxlA/Í  ÄÄ}pf 弄2弄%á?ác( ާ_ ޢޢ ǂ  ݥ (`á pr ád   ˡAާeá á-ާdá" á   iT"á áeݥ5$á" á dݥj>ޚ  v ڟá #g ؚ8؞áeá ؞á٢ؚ٢ ؚآ آ<dMš 7ؿ(  Mš 79-áڿٿ ٿڿX á "اcá=ˡ > 4 15C9#֥9/41Bw/֥šۢ|¾Wádۢ|¾/¾پۢ|¾ɡᚹۢ|¾ɡg ؂?š ؂"AAP ž 5ꫂQ뫂Q4  ''¾0ɥ¾9ō ¾.áS¾.ˡG¾nZ¾ ¾ \¾-á  ¾+á¾ ɡáb߮ ȡJ å¾0 ń ō  ¾0á"% ܫ߮ ȡ% ¾0á ޮġ+¾0ޕ$á ݮ ȡ ¾0 á á $  $$ f8Fj$0ȥ¾ å¾ Íȡ /¾#$  쥀¾*á 쥀¾.á #쥀¾=á ' ( ( ' ) ¾   =>) )¾=á  '{{w "$&(*,.02ZT2=?ACEGIKMOQSUWY[]_acegikmolrt}.}/á)[  ,ۡ ۡǀ2ٟˡá cÄ"JɡJ4P֥A  ڧs ڧQ 5 ֥ ֥= lš5sꥅ֥l֥֥ml ֥ á֥֥4֥ERROR%  ٥ɡE֥ٕȡ"ٕáq֥yError at line ڧA ڦi in ڥxڦ of ڥt:֥y ڥ֥y%q֥uError at line ڧA ڦ in ڥxڦ of ڥt:֥u ڥ֥u%q֥Error at line ڧA ڦ in Eڥxڦ of ڥt:֥ ڥ֥% ġI ۤڟˡ,áڣk.á.Jhm9k,jlihښ۫^ ؟áٟ ٥ˡٟ  ? ؾš ¾ؾń/ ƀؾƀ ؾ¾áؾ šeƀƀ֦ ƀ6ƀƀؾٕƀn Yš¥9YٞقYقYY؍, ,֥YZZ9 ٕán|ƆƇ9ƆWORKCODEƈ9ƈwƈ9INCLFI*LEƉwƉƉwWORKSYMƄƅ1ƄOVTPVTƅuƅƅuANALFILEƅƆ5ƅLPƆyƆƆyERRFILE:֥OUTPUT֥֥ 3 ˡO ˡAA :L`֥Ɔƈ9ƉwƄƅuƅƆyG6 <~102 R/,+-*). :`3H H ` ('&6%FN'9-á ٕؕقɡMٮȡۂáخȡ#ۂɡۂá0ٮȡ#ەɡۂá$Xv ? ˡ ō  á c ˡȡ ܟ˄eád d \ cá LˡC  c˄%P ˡǁ6˄@ܫ ܫ  oDg ZS "cá)*ܣQ (%(ǒLxP_M!  TcÄFá:á5cá+pܢܢ󿧂p _ ˡ_ zֲ"ˡ)áˡááֲ"ٟáǞfˡǢXˡRاdÍǟ=-؟ˡá  A 3Pá`!á g؟ˡأ áأ أ fz8V2ֲ"ɡO˫쓡2ɡ šث _ ٚ f{ֲ2áǶֲ ˡ eˡáǷֲ  ˡ eˡO2٣ɡ ٣šث٫ 9láˡe ,:ֲ ˡ ˡ 1+$  "/Olֲ"ˡ ˡCá#ֲ  eˡO OO #Kֲ"ˡ ˡˡǪֲ ON=.ءINPUT OUTPUT  .ݟáء3caˡء4Hޣá ޣ á %ޣ 2nޣ ޣ ޣ á 'ޣ 6nޣ ޣ 3ֲ ˡˡ aˡOJˡgeO VdOEcO4'Oˡdz áDzt!*á1V6ֲ"!8@"lSVֲ" áaááعá: .ֲ"Q!"ǮRá .R!"R! .á[>> ֲ R(ǰ6OǸ X#D Vֲ"áaáOá O>.Oá/V6ֲ"S!&ڡtV.O6R!"١V6O VO $k0á+ֲ&ˡ eˡǹ[ ٧dáGءá,ֲ" ˡ eˡO٧eáءO ٧cáءOn٧báءO!YءOD7ˡ ءֶֶO (&~á#V6ֲ&%&*2'sdá  R8R6R4( Vֲ& áaá?Aáعá, .ֲ&%&' % .(&' .áR>>  ˡń ֲ 6O2} ,)\ Vֲ&aá5á O!.áֲ&%&%.(&'١V6O VO * =ֲ ˡ%ˡ}@a˄($O b ;O b /Oc #+! -+D ֲ ˡ ˡ!  OZ,Dֲ" 8á=ֲ"   ˡv ˡ9f <Xڶ 8ֶ  ٕD ˡـš8.&ֲ" 8ˡBˡ2;#˸ֶ ٕ8v/ء-6BDֶ$ @BP0       y,&á.á>//á?.ߟ ˄ ˡ:8 66I!١666P.ٓ0١6660١#ء;?ء:>9 "-lˡbˡsVdá5GçD%á áp1, ˶á&:<e"ˡ ڤˡ<١9]ٓ<ٓǧ7á ڤ ڤإ ڤ֧nەb ;jֲ á4==ֲ 9== á2 9 ==ֲ9==  >Cֲ  9ٟˡ٧dÍ ǐ á ֲٟˡcUܟˡ# ȡ áǜ   ܚ ޚ ۟áښǓ˫쓡Ká==ֲ9弄==ڟˡ9 ˫쓡 썡 ݟˡv ݚܟá , 9  š   ɡ  ݟá á]ONvwT ? ==ֲ9弄˫쓡== áֲ 5QS l@W ֲ@ áǼ==ֲ9==9 \Aá 'kֲBˡyám ɡ` á ۢۢۢ-8 ۢۢš˫쓡áǽ==ֲ9==ڕٕ C׃JJK]\\ɡ\\š\ \MMMMD M M MMM M M rM cM TMEM6M' uh[NA4L\^7 bDGoˡ 8 rأnso !o o3 o áobf4 ɡ ؚ ؗ ,/: V؟ˡ,٣`٣ á٣ á ٣u : rġ6aؤš֧?낥aؤ ֥aؤ á ֧r 땧?ɡE ?낚?8k ζ¾ ˡť¾Fš¾)å¾*ľ}Í¾*ÂC@q |~ئ ؾ¥¾ť¾ ;};)å¾*Äk xi@ ٥¾|Ú6!tc H¾-á,٥¾0٥¾0j"¾=áF"!"ۡڍڄٓ  ܡ+-¾R l /6ƀƀ@ (ƀ򥀗¾ƀ ֥[ ƀ ֥P ƀ ֥E P֥ƀ ֥D !~1*1֥9֥9C4/ gCr` m"$&(*,.02468:<>@1DFHJLPR(VX^ڹ ̀̀ʀʀ̀š )ʀ¥¾¾'á̀¾'ˡʀ̀% ʀʀá ¾-p̀ʀʀʀʀʀp #vپɡ ڮەġ¾ ˡáP X&g:^  0ۂÍ#) 6'g&٪@ɡ̀ʀ'ȡʀ&&&&ʀk&| ɡ̀&dɡ̀̀'ڥ&ʀ&('ڥ&&'ʀ&̀&ʀá'DŽšWخʀ'ƀDŽƀʀخ'ƀDž'DŽƀʀخʀ'ʀ'&J%"ړ@^˄ٹ܂ۂxp+^h$  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfv T13..QPROGRAM T13; VAR I:INTEGER; CHR : CHAR; FUNCTION GCHA:CHAR;EXTERNAL; PROCEDURE PCHA(CCHR:CHAR);EXTERNAL; BEGIN I :=1; FOR I := 1 TO 1000 DO BEGIN CHR := GCHA; PCHA(CHR) END END. P4ERRORS.II X'.00H@POSTFIX.PA1PROGRAM POSTFIX(INPUT,OUTPUT); VAR CH : CHAR; PROCEDURE FIND; BEGIN REPEAT READ(INPUT,CH) UNTIL (CH<>' ') AND NOT EOLN(INPUT) END; PROCEDURE EXPRESSION; VAR OP : CHAR; PROCEDURE TERM; VAR MULDIVOP : CHAR; PROCEDURE FACTOR; BEGIN IF CH ='(' THEN BEGIN FIND; EXPRESSION (*CH = ) *) END ELSE WRITE(OUTPUT,CH); FIND END; (* FACTOR *) BEGIN FACTOR; WHILE (CH = '*') OR (CH = '/') DO BEGIN MULDIVOP := CH;FIND; TERM; WRITE(OUTPUT,MULDIVOP) END END; (*TERM*) BEGIN TERM; WHISKLE (CH = '+') OR (CH = '-') DO BEGIN OP := CH; FIND; TERM; WRITE(OUTPUT,OP) END END; (*EXPRESSION*) (* POSTFIX BEGINS *) BEGIN REPEAT FIND; REPEAT WRITE(OUTPUT,' '); EXPRESSION; WRITELN(OUTPUT) UNTIL CH = '.' UNTIL EOF(INPUT) END. TEST4. 5mPROGRAM TEST(INPUT,OUTPUT); VAR SOURCE : TEXT; DATANAME,DATA : STRING[99]; BEGIN WRITE(' INPUT FILE NAME? '); READLN(DATANAME); FILETITLE(SOURCE,DATANAME); RESET(SOURCE); WHILE NOT EOF(SOURCE) DO BEGIN READLN(SOURCE,DATA); WRITELN(DATA);  END; END. READLINE.PI:FPROCEDURE READLINE(VAR INPUTFILE : TEXT;VAR LINE : LINESTRING); VAR BUFFER : STRING[132]; I : INTEGER; BEGIN WITH LINE DO BEGIN READLN(INPUTFILE,BUFFER); FOR I := 1 TO LENGTH(BUFFER) DO STR[I] := BUFFER[I]; LEN := LENGTH(BUFFER)+1; STR[LEN] := EOLCHAR; END; {DO} END; WRS.BUq W PROCEDURE WRITESEQUENTIAL( CHANNEL : INTEGER; BUFFER : BIGSTR; VAR BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7487; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REBQUEST); NEW(STRINGPOINTER); STRINGPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESOUT; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITESEQUENTIAL = ',R2.INT); ERR := ERROR; BYTESOUT := R1.INT; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE SEQUENTIAL} CONSOLE.BUrr/O.PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LENGTH} STR : PAdCKED ARRAY[1..132] OF CHAR {DATA} END; LINEPOINTER = ^LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR : LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR CHARVALUDkE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; NBYTES : INTEGER; DONE : BOOLEAN; DISKIN,DISKOUT : INTEGER; {$I RDL.PI} {$I WRL.PI} {$I GCHq3N.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: QLINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := USTR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE1(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN 2Y:= LEN -1; END {DO} END; {DELETE1} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -9MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNsALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CRETURNLINEFEED; BEGIN PCHAR(13);PCHAR(10); INSERT(LINE,INTERNALPOS,CHARACTER); LINE.LEN := INTERNALPOS; WRITESTRING(LINE); PCHAR(10); END; {OUTPUT CARRIAGE RETURN LINE FEED} PRMOCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE*2 LINE} BEGIN DELETE1(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE1(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : ; {UP} 11 : ; {CARRIAGE RET} 13 : CRETURNLINEFEED; {DELETE} 127 : DELETECHARACTER; END; {CASE} END; {ACTION} PROCEDURE GETLINE; BEGIN READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); LINE.LEN := LINE.LEN-1; {IGNORE C RETN} WRITES%{TRING(LINE); INTERNALPOS := LINE.LEN+1; DISPLAYPOS := CALCDISPLAYPOS(LINE,LINE.LEN); CURLINE := 1; DONE := SYSERROR; END; {GETLINE} PROCEDURE PUTLINE; BEGIN WRITELINE(DISKOUT,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; {PUTLINE} PROCEDURE OPENFILES;  VAR L : LINESTRING; NBYTES,ERRORNUMBER : INTEGER; SYSERROR : BOOLEAN; I : INTEGER; BEGIN WRITELN('INPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,L,SYSERROR,ERRORNUMBER); WRITELN('OUTPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(L,SYSERROR,ERRORNUMBER); CRAND(L,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,L,SYSERROR,ERRORNUMBER); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW CURSOR} BEGIN {MAIN PROGRAM} OPENFILES; REPEAT BEGIN GETLINE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL C0,HARVALUE = 13 ;{} PUTLINE; END UNTIL DONE END. READ.ME) $:File: READ.ME (RDOS/DOS Version) HOW TO INSTALL RATIONAL DATA SYSTEMS PASCAL ON RDOS/DOS The release consists of a PROGRAMMER'S MANUAL and either (a) a single reel of magnetic tape, or (b) one or more diskettes. The release files are divided into three groups: Group 0: PASINTERP.SV Pascal Interpreter PASINTERP.ER Runtime Error Message File PASCAL.PX Standard Pascal Compiler PASCALO.PX Overlayed Pascal Compiler PASCAL.ER Compiler Error Message File PINFO.PX Program Information Utility INTERPOK.PA Test Program: Source INTERPOK.PX Test Program: Executable TEST.MC CLI Macro to test things out MANUALn.nn Manual Update for Current Version RELEASEn.nn Release Notice for Current Version READ.ME (This file) Group 1: MANUAL Magnetic Copy of PROGRAMMER'S MANUAL Group 2: PASCALGEN.PX Custom Interpreter Generation Utility P****.RB Relocatable Binaries for PASCALGEN PLINK.PX Pascal Linker Utility Installation From Magnetic Tfape: ------------------------------- The system is delivered on 800 bpi 9-track magnetic tape. The tape contains three files in standard RDOS-Dump format. The first file (#0) is a dump of the Group 0 files, and so on. Load the files using a 5*sequence similar to the following: CDIR PASCAL DIR PASCAL INIT MT0 /Or whichever drive you are using LOAD/V MT0:(0,1,2) /Load the desired files PRINT RELEASEn.nn /Be sure to read the Release Notice! TEST /Try to execute and compile Installation fp rom Diskette: -------------------------- The system is delivered on two RDOS/DOS diskettes. The first diskette contains all the files from Groups #0 and #1 (above). The second diskette contains the files from Group #2 -- the PROGRAMMER'S MANUAL. Execute the following or equivalent: CDIR PASCAL INIT PASCAL DIR DP1 /Or your own diskette drive MOVE/V PASCAL DIR PASCAL PRINT RELEASEn.nn /Be sure to read the Release Notice! TEST /Try to execute and compile The TEST.MC Macro: ----0------------- The TEST.MC macro will attempt to execute a very small program and will then compile and re-execute the program. It is self-prompting as to the state of the software. File: READ.ME (RDOS/DOS Version, Page 2) Evaluation Release Restriction(7s: ------------------------------- 1) The interpreter shipped is customized for a particular hardware configuration. Neither the PASCALGEN utility nor the .RB files needed to generate an interpreter are supplied. Similarly, releases on diskette inRclude only one diskette -- only Group #0 files are supplied. 2) The interpreter will not operate beyond 60 days of the time the system was configured by Rational Data Systems. This date is obviously dependent upon your system date. Since system dates are so easy to change, we have implemented further restrictions. 3) A maximum of 10 files may be opened by any program at one time. This number includes the executable file, '.PX'. 4) All files opened by any Pascal program other thanL{ the compilers will be deleted by the interpreter. This includes the program file, '.PX'! 5) You may not use the APPEND procedure in the evaluation version. 6) Since PASCALGEN is not available, neither are the facilities of assembler interface. Note that the above checks are all performed at runtime, not by the compiler. We suggest that you run your programs via a CLI macro which first copies the program and input files, then executes the copy of the program file, using the copies of the input files. The only way to preserve output (which would be deleted if sent to disk) is to send it to a hard copy device or to mag tape. The Overlayed Compiler: ---------------------- On an unmapped system the interpreter and PSascal program must share your limited address space with the operating system. This restriction will manifest itself immediately if you attempt to compile a program with the standard compiler ("PASCAL"). We have designed an overlaid compiler especia"lly for the unmapped user called "PASCALO". You will have to use this version of the compiler on almost all unmapped configurations. For details, see the section entitled "Overlaid Compiler" in the new manual. In addition, study the use of the "/S" (sLwapping mode) switch when running the compiler. On many systems, you  will have to use both the overlaid compiler and the swapping mode. On all systems there are finite limitations regarding the size and complexity of programs which can be compiled. On a mapped system (AOS or RDOS) we can compile our compiler by using either the overlaid compiler or the "/S" switch. On an unmapped RDOS system, we cannot compile the compiler even using "PASCALO" with the "/S" switch. NOTE: e---- For standard releases (not Evaluation Releases) the default interpreter, 'PASINTERP.SV', has been generated for a minimal RDOS/DOS system, a Nova 1200 with no options. Until you generate your own interpreter you will be running with this interpreter which may be significantly slower than what you should be using. Build a customized interpreter using the PASCALGEN utility as soon as possible. MANUAL2.01 "File: MANUAL2.01 ================== Update 2.01 to RDS Pascal does not contain any formal updates to the Programmer's Manual. However, since the compiler error message file has been changed for this release, please make the following changes and padditions to Appendix C ('Compiler Error Messages'): 31. first argument of "READLN" must be variable 174. comma expected in argument list to "READ" of "TEXT" file 176. type conflict of file and destination variable in "READ" 184. comma expected afte5tr typed file name in "READ" argument list 206. "INPUT" not declared in this scope 208. "INPUT" not declared as "TEXT" in this scope 217. "RESET"/"REWRITE"/"APPEND" require file as argument 224. second argument of "SEEK" intrinsic must be integer 235. 1f"WRITE"/".LN" require int/bool/real/char/string/packd.ary.char 244. operand of unary plus or minus must be real or integer 267. comma expected in argument list of "WRITE" to "TEXT" file 305. type conflict of file and source expression in "WRITE" 306. cОJomma expected in argument list of "WRITE" to typed file 307. "OUTPUT" not declared in this scope 308. "OUTPUT" not declared as "TEXT" in this scope 309. real number may not be argument of "PRED" or "SUCC" INTERPOK.PAl [SGprogram interpok; var output : text; begin rewrite(output); writeln('Interpreter OK') end. T23.2FPROGRAM T23; TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOTA,IOFILE : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN (NUMBER : INTEGER ; IFILE : ALPHA ; IOTA : INTEGER);EXTERNAL; BEGIN IOTA :=100; IOFILE := 8; FILENAME := 'INPUTFILE0.SR'; OPEN (IOFILE , FILENAME,IOTA) END. GLOBA. GETINTEGER.PIr)rFUNCTION GETINTEGER( STR : ALPHANUMERIC;VAR I : INTEGER) : INTEGER; LABEL 1,2,3; TYPE SIGNOF = (PLUS,MINUS); VAR LEN,FNUMB : INTEGER; SIGN :SIGNOF; BEGIN FNUMB := 0; SIGN := PLUS; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN  IF NOT (STR[I] IN ['0'..'9','-']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END; 2 : IF STR[I] IN ['0'..'9'] THEN BEGIN { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMBӴx);} FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); I := I+1; IF I<= LEN THEN GOTO 2; END; 3: CASE SIGN OF PLUS : GETINTEGER := FNUMB; MINUS : GETINTEGER := -FNUMB END;{CASE} END;{getinteger} RDS.BUq !-NPROCEDURE READSEQUENTIAL( CHANNEL : INTEGER; VAR BUFFER : BIGSTR; VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); CONST DOTRDS = 6719; {.RDS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTRDS; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESREAD; R2.INT := CHANNEL; SYSCALL(REQUEST); {$R-} STRINGPOINTER^[0] := R1.CH; {$R^} IF ERROR רTHEN WRITELN(' ERROR IN READSEQUENTIAL = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; BUFFER := STRINGPOINTER^; BYTESREAD := R1.INT; END; RELEASE(HEAP); WRITELN(' BYTESREAD = ',BYTESREAD); END; {READ SEQUENTIAL} CBOOK.CMs4x/CHATR CBOOK.PA 0 CHATR CBOOK.PX 0 DELETE/V CBOOK.PA XFER CBOOK CBOOK.PA/R CHATR CBOOK.PA *WP PASINTERP PASCALO/S/V/L CBOOK CHATR CBOOK.PX *WP CTLA.% ;PASCAL EXTERNAL PROCEUDRE TO SET ;CONTROL-A/C INTERRUPT INTERCEPT ;PETE GOODEVE 78:7:30 .TITLE CTLA ;PJG 78:7:30 .ENT ?CTLA .EXTN XPRET SP=41 ;STACK POINTER MP=42 ;MARK STACK POINTER HP=44 ;HEAP POINTER PP=45 ;PARAMETER FRAME POINTER PC=20 ;r@P-CODE PROGRAM COUNTER P4IX=40 ;RETURN LINK TO INTERPRETER .NREL ;PROCEDURE CTLA; EXTERNAL; ?CTLA: INTDS ;NEEDED FOR SAFETY IF RESET STA 0,STKM ;= CALLER'S SP+1 DSZ STKM ;REMOVE THE +1 LDA 0,MP STA 0,MRKM ;MARK POINTER LDA 0,HP STA 0,HEAPM LDA{3 0,PP STA 0,PARM LDA 0,PC STA 0,PCM LDA 0,CTLXA ;DIVERSION ADDRESS STA 0,@A411 STA 0,@A412 INTEN XPRET STKM: .-. MRKM: .-. HEAPM: .-. PARM: .-. PCM: .-. A411: 411 A412: 412 CTLXA: .+1 LDA 0,STKM STA 0,PC LDA 0,MRKM STA 0,MP LDA 0,HEAPM ST|A 0,HP LDA 0,PARM STA 0,PP LDA 0,PCM STA 0,PC JMP @P4IX ;RETURN TO PASCAL INTERPRETER .END ;OF CONTROL CHAR DIVERSION T33."5(* READ SEQUENTIAL WRITE SEQUENTIAL TESTER*) PROGRAM T33 (INPUT,OUTPUT); TYPE ALPHA = ARRAY[1..20] OF INTEGER; VAR OCHANNEL,ICHANNEL,NBYTES,NBYTESREAD,NBYTESWRO,ERROR,BYTE : INTEGER; BUFFER : ALPHA; PROCEDURE RDSQ(CHANNEL:INTEGER ; BUFFER : ALPHA;NBYTEkS:INTEGER; VAR NBYTESREAD:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE WRSQ(CHANNEL:INTEGER;BUFFER:ALPHA;NBYTES:INTEGER; VAR NBYTESWROTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; BEGIN ICHANNEL:=1; OCHANNEL:=2; NBYTES:=1; REPEAT RDSQ(ICHANNEL,BUFFER<,NBYTES,NBYTESREAD,ERROR); WRSQ(OCHANNEL,BUFFER,NBYTES,NBYTESWRO,ERROR); BYTE:=BUFFER[1] DIV 256; WRITELN(' ',BYTE); UNTIL ERROR = 6; END. NODES. rkPROGRAM NODES (INPUT,OUTPUT); TYPE NODES = RECORD X, Y : REAL; LINKPOS : INTEGER END; LINKS = RECORD FROMNODE, TONODE, ATTRIBUTES :INTEGER END; VAR NODE : ARRAY [1..20] OF NODES; LINK : ARRAY [1..50] OF LINKS; NEWNODE : NODES; DELETEDNuODE : NODES; BEGIN NEWNODE.X := 2; DELETEDNODE.X :=4; IF NEWNODE = DELETEDNODE THEN WRITELN(OUTPUT,' NEW=DELETED') ELSE WRITELN(OUTPUT,' NEW<>DELETED'); NEWNODE := DELETEDNODE; WRITELN(OUTPUT,' ',NEWNODE.X,NEWNODE.Y) END. CROSSREF.PAr  PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; ns WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : |dALFA; F : TEXT; A : ARRAY [1..C1] OF CHAR; PROCEDURE PACK ( I : INTEGER); VAR J : INTEGER; BEGIN FOR J := 1 TO C1 DO ID[J] := A[J-1+I] END; (* PACK *) PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN ?eNEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO ]:= N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A'..'Z'] THjEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; PACK(1);SEARCH(ROOT)n END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTpPUT);PRINTTREE(ROOT); END. T11.PXT11 Copyright (C) 1980 Rational Data Systems#>ƀƀƀOUTPUTBINPUTƀ֥́ʁ š芉֥́ʁʁƀCFGhHAI(JK#  A A#  KA AABmCDD*EFFGhHAI(JK#  A A#&c  K@ AABmCDD*EFFGhHAI(JK#  A A#  K? AABmCDD*EFFGhHAI(JK#  A A# 3 K= AABmCDD*EFFGhHAI(JK# < A A# Q K= AABmCDD*EFFGhHAI(JK# Z A A# o K; A1980DEPS.GD 8347.06 D 140 D 1468.38 D 871.98 D 13056.00 D 5324 D 12436.99 D 435.99 D 435.99 D 906.32 D 3000 D 435.99 D 1628 D 11481.06 D 1834.55 D 435.99 D 802.29 D 905 D 594 D 435.99 D 520 D 13331.89 D 1527.87 D 129.24 D 4546.81 D 11943.74 D 715 D 3229.35 D 531.21 ;|D 3435.99 D 4888.40 D 1403.43 D 296.31 D 174 D 2600 D 3148 TOTAL.MC +CHATR TOTAL.PA 0 CHATR TOTAL.PX 0 DELETE/V TOTAL.PA XFER TOTAL TOTAL.PA/R PASINTERP PASCALO/S/L/V TOTAL CHATR TOTAL.PA *WP CHATR TOTAL.PX *WP CONSOLE.q O.PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LENGTH} STR : PAdCKED ARRAY[1..132] OF CHAR {DATA} END; LINEPOINTER = ^LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR : LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR CHARVALUDkE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; NBYTES : INTEGER; DONE : BOOLEAN; DISKIN,DISKOUT : INTEGER; {$I RDL.PI} {$I WRL.PI} {$I GCHq3N.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: QLINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := USTR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE1(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN 2Y:= LEN -1; END {DO} END; {DELETE1} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -9MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNӶALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CARRIAGERETURN; BEGIN INSERT(LINE,INTERNALPOS,CHARACTER); LINE.LEN := INTERNALPOS; END; {INSERT CARRIAGE RETURN AND MAKE LINE LENGTH=CRET POSITION} PROCEDURE DISPLAYLINE; BEGIN PCHAR(10);PCHAR(13); WRITESTRING(LINE); PCHAR(13);PCHAR(10); END; PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE1(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE1(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE GETLINE; BEGIN READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); LINE.LEN := LINE.LEN-1; {IGNORE C RETN} WRITESTRING(LINE); INTERNALPOS := LINE.LEN+1; DISPLAYPOS := CALCDISPLAYPOS(LINE,LINE.LEN); CURLINE := 1; DONE := SYSERROR; END; {GETLINE} PROCEDURE PUTLINE; BEGIN WRITELINE(DISKOUT,LINE,NBYTES,SYSERtROR,ERRORNUMBER); END; {PUTLINE} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : BEGIN DISPLAYLINE;PUTLINE;GETLINE END; {UP} 11 : ; {CXARR RETN} 13 : BEGIN DISPLAYLNE; CARRIAGERETURN;PUTLINE;GETLINE END; {DELETE} 127 : DELETECHARACTER END;{CASE} END;{ACTION} PROCEDURE OPENFILES; VAR L : LINESTRING; NBYTES,ERRORNUMBER : INTEGER; SYSERROR : BOOLEAN; I : INTEGER; BEGIN WRITELN('INPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,L,SYSERROR,ERRORNUMBER); WRITELN('OUTPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(L,SYSERQROR,ERRORNUMBER); CRAND(L,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,L,SYSERROR,ERRORNUMBER); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW C'9URSOR} BEGIN {MAIN PROGRAM} OPENFILES; REPEAT BEGIN GETLINE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 27 ;{ESC} END UNTIL DONE END. GLOBAL.&Є ;PASCAL "GLOBAL" ACCESS PROCEDURES ; -- PERMIT RETAINING POINTERS BETWEEN ; PROCEDURE INVOCATIONS. ;PETE GOODEVE 78:7:22 .TITL GLOBAL ;78:7:22 .EXTN XPRET .ENT ?KEEP,?GLOBAL GSIZE = 15 ;GLOBAL SLOT LIMIT SP=41 P4ERR = JSR @51 .NREL ;TYPEl INDEX = 0..GSIZE; ;PROCEDURE KEEP(P:ANYPOINTER; I:INDEX); EXTERNAL ;..OR: ;PROCEDURE KEEP(P:ANYPOINTER); EXTERNAL; ?KEEP: MOVZR 1,0,SNR ;1 OR 2 PARAMS? JMP ZERK ;DEFAULT SLOT 0 LDA 0,0,3 ;SLOT # DSZ SP ;POP STACK LDA 1,GLIM SUBO 0,1,SNC ;VALID SLOTB/? JMP ZERK ;YES BAD: P4ERR 412 ;ARBITRARY ERR CODE (TIL WE KNOW BETTER) ZERK: LDA 2,KBAS ;KEEP-AREA BASE ADD 0,2 ;SLOT ADDRESS LDA 0,@SP ;POINTER VALUE FROM STACK STA 0,0,2 ;IS STASHED SUB 1,1 ;RETURNS NO VALUE XPRET GLIM: GSIZE KBAS: GAREA HJ;FUNCTION GLOBAL(I:INDEX):ANYPOINTER; EXTERNAL ;.. OR ;FUNCTION GLOBAL:ANYPOINTER; EXTERNAL ?GLOB: MOV 1,1,SZR ;ANY PARAM? LDA 1,0,3 ;YES -- GET THE INDEX LDA 2,GLIM SUBO 1,2,SZC ;IN RANGE? JMP BAD ;NO LDA 2,KBAS ;BASE OF STORAGE ADD 1,2 ;DISPLACE1y TO SLOT MOV 0,3 ;FUNCTION VALUE POINTER LDA 0,0,2 ;PICK UP STORED POINTER STA 0,0,3 ;PASS IT BACK ;(CALLER SHOULD CHECK FOR NIL!) SUBZL 1,1 ;INTEGER FUNCTION XPRET GAREA: .BLK GSIZE+1 .END ;OF GLOBAL PROCEDURES T12..+;fPROGRAM T12; VAR I,CHR:INTEGER; FUNCTION GCHA:INTEGER;EXTERNAL; PROCEDURE PCHA(CCHR:INTEGER);EXTERNAL; BEGIN I :=1; FOR I := 1 TO 1000 DO BEGIN CHR := GCHA; PCHA(CHR) END END. TEST3. PROGRAM TEST3(INPUT,OUTPUT); VAR CH : CHAR; CURPOS : INTEGER; PROCEDURE BACKSPACE; BEGIN WRITE(CH); END; PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8-CURPOS MOD 8; CURPOS := CURPOS+MOVESRT; WRITELN(' ',MOVESRT,' ',CURPOS); FOR! I := 1 TO MOVESRT DO WRITE(' ') END; {HORIZTAB} PROCEDURE ACTION; VAR ORDCH : INTEGER; BEGIN ORDCH := ORD(CH); IF ORDCH IN [32..126] THEN WRITE(CH) ELSE CASE ORDCH OF {backspace} 8 : BACKSPACE; {horiz tab} 9 : HORIZTAB; {LINE FEED} 10 : WRITE(' LS-INEFEED'); {up} 11 : WRITE(' UP'); {delete} 127 : WRITE(' DELETE') END {case} END; {ACTION} PROCEDURE INITIALIZE{ALL VARIABLES}; BEGIN CURPOS := 1; {CURRENT CHARACTER POSITION} END; {INITIALIZE} BEGIN INITIALIZE; REPEAT BEGIN READ(CH); ACTION;  END UNTIL EOF END. T.PA PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK); VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER}; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; SOURCE : TEXT; ENTRY : ENTRYTYPES; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} PROCEDURE ERROR; BEGIN WRITELN(' ERROR'); END;{error} PROCEDURE C1HECK; BEGIN IO := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(' CK ',CHECKNUMBER : 15); REALPRINT(AMOUNT);WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(' DP ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(' CM ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE" := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(' DM ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(' CC ',CHECKNUMBER : 15); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' EM ',BLANKS); REALPRINT(AMOUNT );WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' LWH ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORDD(STR[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(STR[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE INITIALIZE; BEGIN FILETITLE(SOURCE,'1978'); RESET(SOURCE); BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; WRITELN(' KEY TO TRANSACTION TYPES'); WRITELN(' C CHECK CC CANCELLED CHECK'); WRITELN(' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN('  DP DEPOSIT BL FORCED BALANCE'); WRITELN(' EM EMPLOYEE CK WH WITHOLDING CHECK'); WRITELN; WRITELN(' TYPE CHECK DEBIT CREDIT BALANCE'); END;{initialize} BEGIN INITIALIZE; WRITELN; WHILE NOT EOF(SOURCE)q DO BEGIN READLN(SOURCE,STR); WRITELN; WRITELN; GETENTRYTYPELINE (STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; END;{case} IF ENTRY NOT CANCELLEDCHECK THEN WRITE(' _ _'); END; WRITELN;WRITELN; WRITE(' TOTALS '); REALPRINT(TOTALDEBITS);REALPRINT(TOTALCREDITS); REALPRINT(NEWBALANCE); / WRITELN; WRITELN; WRITE(' TOTAL CHECKS ');REALPRINT(TOTALCHECKS);WRITELN; WRITE(' TOTAL DEPOSITS');REALPRINT(TOTALDEPOSITS);WRITELN; END. PL.PXrq PLO Copyright (C) 1980 Rational Data Systems   ֦ ****7 ^  6á "֦PROGRAM INCOMPLETE7  7   ֥Q蚹֥7 ֥Q QY  á* ɡ_ ġث _   á_  ق-  -  ššd q6 š+:á=áo[v)LTš ֦PROGRAM TOO LONG7 dػ  Z$8d٥ ٢ ؚع6.Mš٢ /٢٢ ٢>+n d d  < á5 áá F á  "ȡPdإ7 ۥo  áN h ֥饂áQ á 9d! $Cáš%á Rá@ ``(`á1 F á (á1 lát??Vڹ0; 3 + #   71+)áa á dˡ á ˡdáIˡ9 á #dááMֳá dáZֳ" "á ֳ" áYáTֳá d d  š & á áˡá& á áˡáeá áٳá ֥ ֥饂dddߢ ֳ"  DDCxš!.֦ START OF PL/07ʁd|L2Ú˚ɚĚŚUȚ$S7 ʁٚښNB8:á H>6á֦ END OF PL/07"<>dJƆ7uƆ7OUTPUTƅƅƅINPUTƅƆ7A;ȡʆЫoʆá-  BEGIN -  CybALL -  CONST -  DO -  END -  IF -  ODD -  PROCEDURE -   THEN -   VAR -   WHILE d ]d d d d d d d d  d  d  o+o-o*o/o(o)o=o,o.o!W o< o> o" o# o;oLIT oOPR oLOD oSTO oCAL oINT oJMP oJPC 8P6w@  ˡ á$֦ ERRORS IN PL/0 PROGRAM7֥7Ɔ7ƅ$x, `  2B^t~&PX.SVPPASNP.SVT22.2.PROGRAM T22; TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOFILE : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN (IFILE : ALPHA);EXTERNAL; BEGIN IOFILE := 8; FILENAME := 'INPUTFILE0.DR'; OPEN (FILENAME) END. D. PRETTYINST.GG (*************************************************************************** PROGRAM TITLE: PASCAL PRETTYPRINTING PROGRAM AUTHORS: JON F. HUERAS AND HENRY F. LEDGARD COMPUTER AND INFORMATION SCIENCE DEPARTMENT UNIVERSITY OF MASSACHU:SETTS, AMHERST - AUGUST, 1976  (EARLIER VERSIONS AND CONTRIBUTIONS BY RANDY CHOW AND JOHN GORMAN). BUGS CORRECTD BY CHARLES FISCHER, DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF WISCONSIN, MADISON. 1977. "INDICATED BY <<< . MODIFIED FOR CDC-6000 PASCAL RELEASE 3 BY RICK L. MARCUS UNIVERSITY COMPUTER CENTER, UNIVERSITY OF MINNESOTA. 30 SEPTEMBER 1978. PROGRAM SUMMARY: THIS PROGRAM TAKES AS INPUT A PASCAL PROGRAM AND REFORM(ATS THE PROGRAM ACCORDING TO A STANDARD SET OF PRETTYPRINTING RULES. THE PRETTYPRINTED PROGRAM IS GIVEN AS OUTPUT. THE PRETTYPRINTING RULES ARE GIVEN BELOW. AN IMPORTANT FEATURE IS THE PROVISION FOR THE USE OF EXTRA SPACES AND EXTRA BLANK LINES. TH'EY MAY BE FREELY INSERTED BY THE USER IN ADDITION TO THE SPACES AND BLANK LINES INSERTED BY THE PRETTYPRINTER. NO ATTEMPT IS MADE TO DETECT OR CORRECT SYNTACTIC ERRORS IN THE USER'S PROGRAM. HOWEVER, SYNTACTIC ERRORS MAY RESULT IN ERRONEOUS PRETTYPRINTING. INPUT FILE: INPUT - A FILE OF CHARACTERS, PRESUMABLY A PASCAL PROGRAM OR PROGRAM FRAGMENT. OUTPUT FILE: OUTPUT - THE PRETTYPRINTED PROGRAM. **********************************************************************iD**** ************************************************************************** PASCAL PRETTYPRINTING RULES GENERAL PRETTYPRINTING RULES 1. ANY SPACES OR BLANK LINES BEYOND THOSE GENERATED BY THE PRETTYPRINTER ARE LEFT ALONE. T ^HE USER IS ENCOURAGED, FOR THE SAKE OF READABILITY, TO MAKE USE OF THIS FACILITY. IN ADDITION, COMMENTS ARE LEFT WHERE THEY ARE FOUND, UNLESS THEY ARE SHIFTED RIGHT BY PRECEEDING TEXT ON A LINE. 2. ALL STATEMENTS AND DECLARATIONS BEGIN ON SEPARATE LINES. 3. NO LINE MAY BE GREATER THAN 72 CHARACTERS LONG. ANY LINE LONGER THAN THIS IS CONTINUED ON A SEPARATE LINE. 4. THE KEYWORDS "BEGIN", "END", "REPEAT", AND "RECORD" ARE FORCED TO STAND ON LINES BY THEMSELVES (OR POSSIBLY FOLLOWED BY SUPPORTING COMMENTS). IN ADDITION, THE "UNTIL" CLAUSE OF A "REPEAT-UNTIL" STATEMENT IS FORCED TO START ON A NEW LINE. 5. A BLANK LINE IS FORCED BEFORE THE KEYWORDS "PROGRAM", "PROCEDURE", "FUNCTION", "LABEL", "CONST","TYPE", AND "VAR". 6. A SPACE IS FORCED BEFOREN/ AND AFTER THE SYMBOLS ":=" AND "=". ADDITIONALLY, A SPACE IS FORCED AFTER THE SYMBOL ":". NOTE THAT ONLY "="S IN DECLARATIONS ARE FORMATTED. "="S IN EXPRESSIONS ARE IGNORED. <<<. INDENTATION RULES 1. THE BODIES OF "LABEL", "CONST", "TYPE", AND "VAR" DECLARATIONS ARE INDENTED FROM THEIR CORRESPONDING DECLARATION HEADER KEYWORDS. 2. THE BODIES OF "BEGIN-END", "REPEAT-UNTIL", "FOR", "WHILE", "WITH", AND "CASE" STATEMENTS, AS WELL AS "RECORD-END" STRUCTURES AND "CASE" VARIANTS (TO ONE LEVEL) ARE IINDENTED FROM THEIR HEADER KEYWORDS. 3. AN "IF-THEN-ELSE" STATEMENT IS INDENTED AS FOLLOWS: IF THEN ELSE **************************************************************************** **************************************************************************** GENERAL ALGORITHM THE STRATEGY OF THE PRETTYPRINTER IS TO SCAN SYMBOLS FROM THE INPUT PROGRAM AND MAP EACH SYMBOL INTO A PRETTYPRINTING ACTION, INDEPENRDENTLY OF THE CONTEXT IN WHICH THE SYMBOL APPEARS. THIS IS ACCOMPLISHED BY A TABLE OF PRETTYPRINTING OPTIONS. FOR EACH DISTINGUISHED SYMBOL IN THE TABLE, THERE IS AN ASSOCIATED SET OF OPTIONS. IF THE OPTION HAS BEEN SELECTED FOR THE SYMBOL BEING SC_ANNED, THEN THE ACTION CORRESPONDING WITH EACH OPTION IS PERFORMED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO= A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND GINVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS4# ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF  THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THpERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIHIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE- SYMBOL SCANNED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANKm LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] J` SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. **************************9~*************************************************** *) TEST.PX )CROSSREF Copyright (C) 1981 Rational Data Systems " ! ۢ*"ٞ# ۢ ٞ#!:٪I HJCJ֦ ZKKJKHKKK?KJKKK ؚH#K+֦ ERROR IN OPEN = ZLLK LKKI!HتH GICIg*֦ ZJJIJGJJJJIJJG#J-֦ ERROR IN DELETE = ZKKJ KJJH!HتH GICI֦ ZKKIKGKKKKIKKG#K,֦ ERROR IN CRAND = ZLLK LKKH!I٪J IKCKILLL?LKLLLښL ؚI#L0֦ ERROR IN WRITELINE = ZMML MLLJ!H C ? ߚ   oJ ݞ# /֦ ERROR IN READLINE = Z   ߪ !֦ INPUT FILEZRQSRQS֥T֧TQS֦ OUTPUT FILEZ֥֥خDž֥U֥U ܢ?(ܢ ؚڞ#(֦ ERROR IN GCHN = Z ٢!` ٨ ޢ?'ޢښޢۚޢ ؚܞ#(֦ ERROR IN SPOS = Z !f ٪GIHHȡ5  Fq-á IG 0GHȡI GG PF ٪GIHIGH˄_IGI?IIIGI?IIHHIGá I "N|F ڪNMKHHȡ` -á NHȡVMFƁZƁƁZOUTPUTxƀƁƀئINPUTUƀUDISKOUTƀƁZ֦ WANT OUTPUT TO $TTO CONSOLE? Zʁ֦ WANT DATA BASE FILE PRINTED?Zʁ֦ WANT INDEX PRINTED? Zʁ֦' WANT TREEED RECORDS PRINTED dIN ORDER? Zʁ֦ SORT ON FILEN NO. 2,3,4,5? Z֥֥خʁ ʁ ֧T ֧TRQSQ ) Zʁ ʁܦ ʁܥ'֥U ʁ ʁܦ ʁܥ ֥1CW*  "$&(ASá֦ MEMORY LEFT = Zʁܞ ʁ E֦ SEARCH KEY =Z֥ ֥خʁ ʁˡƁZƀUed @h . . r",TEST3.PAPROGRAM TEST3(INPUT,OUTPUT); VAR CH : CHAR; CURPOS : INTEGER; PROCEDURE BACKSPACE; BEGIN WRITE(CH); END; PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8-CURPOS MOD 8; CURPOS := CURPOS+MOVESRT; WRITELN(' ',MOVESRT,' ',CURPOS); FOR! I := 1 TO MOVESRT DO WRITE(' ') END; {HORIZTAB} PROCEDURE ACTION; VAR ORDCH : INTEGER; BEGIN ORDCH := ORD(CH); IF ORDCH IN [32..126] THEN WRITE(CH) ELSE CASE ORDCH OF {backspace} 8 : BACKSPACE; {horiz tab} 9 : HORIZTAB; {LINE FEED} 10 : WRITE(' LS-INEFEED'); {up} 11 : WRITE(' UP'); {delete} 127 : WRITE(' DELETE') END {case} END; {ACTION} PROCEDURE INITIALIZE{ALL VARIABLES}; BEGIN CURPOS := 1;  {CURRENT CHARACTER POSITION} END; {INITIALIZE} BEGIN INITIALIZE; REPEAT BEGIN READ(CH); ACTION;  END UNTIL EOF END. WRL.PIr 7uPROCEDURE WRITELINE( CHANNEL : INTEGER; BUFFER : LINESTRING; BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7743; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; TEMPPOINTER : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUE`ST); NEW(TEMPPOINTER); TEMPPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.LPTR := TEMPPOINTER; R0.INT := R0.INT+2; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITELINE = ',R2.INT); ERR :X= ERROR; BYTESOUT := R1.INT; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE LINE} CATEGORIES.  1 MISC 2 RENT 3 MAINTENANCE 4 TELEPHONE 5 STAMPS, OFFICE SUPPLIES 6 ATTORNEY 7 ACCOUNTANT 8 BUSINESS TRIPS 9 AUTO CAPITAL EXP. 10 AUTO MAINTENANCE 11 GAS & OIL 12 EMPLOYEE CHECKS 13 PERS. PROP. TAX 14 IRS  15 AWT 16 MISC TAXES  17 INSURANCE 18 MAGAZINES AND BOOKS 19 BUSINESS ENTERTAINMENT 20 BUSINESS PROMOTION 21 CASH DRAWS 22 R&D EQUIPMENT EXPENSE 23 R&D MAINTENANCE EXPENSE 24 PETTY CASH 25 BANK AMERICARD & AMERICAN EXPRESS 26 LICENSES AND DUES 27 SUB CONTR…ACTORS 28 PRINCIPAL PAYMENTS 29 INTEREST PAYMENTS 30 LOAN INCOME 31 INTEREST EXPENSE 32 RELOCATION EXPENSE 33 MEDICAL REIMBURSABLES 34 INCOME 35 DEBIT MEMO 36 LOAN MADE(OUT) GETFILEDRE.BU 1979.D2! 660 516 C 660 484.10 12 665 16 EM 665 1102.70 12 666 17 EM 666 1209.04 12 667 18 EM 667 1350.43 12 668 19 EM 668 199.40 12 669 20 EM 669 550.32 12 670 21 EM 670 539.29 12 671 22 EM 671 526.45 12 672 23 EM 672 344wT.29 12 673 24 EM 673 2468.66 14 674 53 EM 674 1360.43 12 675 54 EM 675 209.40 12 676 55 EM 676 1053.55 12 677 56 EM 677 1083.87 12 678 57 EM 678 516.30 12 679 58 EM 679 550.39 12 680 25 EM 680 411.53 12 681 59 EM 681 276.95 12 682 26 EM 682 2234.86 14 683 76 EM 683 1360.43 12 684 60 EM 684 209.40 12 685 61 EM 685 1101.20 12 686 62 EM 686 1580.40 12 687 63 EM 687 533.66 12 688 64 EM 688 610.74 12 689 65 EM 689 422.46 12 69}0 66 EM 690 215.64 12 691 77 EM 691 209.40 12 692 78 EM 692 981.35 12 693 79 EM 693 1050.72 12 694 80 EM 694 479.62 12 695 81 EM 695 554.62 12 696 82 EM 696 369.47 12 697 83 EM 697 329.08 12 698 67 EM 698 3861.480 14 699 84 EM 699 1398.97 12 700 85 EM 700 194.48 12 701 86 EM 701 1016.68 12 702 87 EM 702 1156.68 12 703 88 EM 703 563.99 12 704 89 EM 704 640.40 12 705 90 EM 705 470.84 12 706 91 EM 706 483.71 12 707 92 EM 70T7 2984.02 14 708 93 EM 708 555.34 14 709 94 EM 709 310.37 15 710 95 EM 710 1372.35 15 711 126 EM 711 1408.97 12 712 127 EM 712 204.48 12 713 128 EM 713 1091.05 12 714 129 EM 714 1096.88 12 715 130 EM 715 595.09 12 716 BB 131 EM 716 613.84 12 717 132 EM 717 514.82 12 718 137 EM 718 482.51 12 719 138 EM 719 3016.96 14 720 139 EM 720 125.24 14 721 140 EM 721 879.67 15 722 170 EM 722 1032.90 12 723 171 EM 723 1408.97 12 724 205 EM 724 204.48 12CF 725 172 EM 725 1166.68 12 726 173 EM 726 527.17 12 727 174 EM 727 560.96 12 728 175 EM 728 492.78 12 729 176 EM 729 298.75 12 730 177 EM 730 2831.26 14 731 206 EM 731 1408.97 12 732 207 EM 732 204.48 12 733 208 EM 733 8[ 63.83 12 734 209 EM 734 915.34 12 735 210 EM 735 368.67 12 736 211 EM 736 514.29 12 737 212 EM 737 430.51 12 738 213 EM 738 322.85 12 739 178 EM 739 2326.89 14 740 214 EM 740 1420.97 12 741 215 EM 741 204.48 12 742 216 EM 742 1131.44 12 743 217 EM 743 1096.04 12 744 218 EM 744 551.67 12 745 219 EM 745 640.60 12 746 220 EM 746 385.40 12 747 221 EM 747 360.91 12 748 222 EM 748 2850.69 14 749 254 EM 749 1424.97 12 750 255 EM 750 204.48 12 751TX 223 EM 751 1049.82 12 752 256 EM 752 992.88 12 753 257 EM 753 551.67 12 754 258 EM 754 550.23 12 755 259 EM 755 431.37 12 756 260 EM 756 343.46 12 758 224 EM 758 2575.50 14 759 261 EM 759 1391.48 15 760 262 EM 760 1569.&95 15 761 263 EM 761 80.68 14 762 264 EM 762 1017.67 12 763 265 EM 763 929.08 12 764 266 EM 764 518.89 12 765 272 EM 765 271.86 12 766 273 EM 766 384.02 12 767 274 EM 767 256.22 12 768 307 EM 768 1426.97 12 769 308 EM 769 204.48 12 770 309 CC 770 771 311 EM 771 864.72 12 772 312 EM 772 1001.57 12 774 313 EM 774 640.60 12 775 314 EM 775 302.19 12 776 315 EM 776 451.39 12 777 316 EM 777 429.02 12 778 317 EM 778 314.65 12 779 310 CC 779 780 318 EM 780 568.52 12 781 319 EM 781 993.27 12 782 275 EM 782 2500 14 783 276 EM 783 1956.74 14 784 320 EM 784 551.67 12 785 321 EM 785 993.62 12 786 322 EM 786 993.62 12 787 323 EM 787 444.04 12 788 324 EM 788 375 12 789 325 EM 789 415.74 12 790 326 EM 790 204.48 12 791 327 EM 791 1426.97 12 792 328 EM 792 1426.97 12 793 360 EM 793 561.13 12 794 357 EM 794 1426.97 12 795 358 EM 795 204.48 12 796 359 EM 796 2090.76 14 797 366 EM 797 360.94 15 798 421 EM 798 204.48 12 799 422 EM 799 204.48 12 800 423 EM 800 1426.97 12 801 424 EM 801 426.97 12 803 433 EM 803 1207.97 27 804 434 EM 804 1426.97 12 805 435 EM 805 204.48 12 806 425 CC 806 807 426 CC 807 808 427 CC 808 809 436 EM 809 1835.96 14 815 517 EM 815 887.50 12 1995 106 CM 1995 2763 3 C 2763 1850.16 2 2764 4 C 2764 552.87 17 2765 5 C 2765 314.49 8 2766 6 C 2766 314.49 8 2767 7 C 2767 100 8 2768 33 C 2768 677.50 20 2769 34 C 2769 125 26 2770 8 C 2770 20.07 18 2771 9 C 2771 630.50 4 2772 35 C 2772 736 23 2773  36 C 2773 13 1 2774 10 C 2774 38.75 11 2775 37 C 2775 12.82 18 2776 38 C 2776 7.30 23 2777 11 C 2777 '47.70 5 2778 39 C 2778 258.40 5 2779 12 C 2779 229.63 25 2780 13 C 2780 6.94 5 2781 14 C 2781 64.25 5 2782 40 C 2782 160.96 5 2783 41 C 2783 563.93 23 2784 42 C 2784 67 26 2785 43 C 2785 45.00 26 2786 15 C 2786 228.23 8 2788 44 C 2788 93.70 5 2789 475 CC 2789 2790 45 C 2790 1000 8 2791 46 C 2791 100 26 2792  47 C 2792 1850.16 2 2793 48 C 2793 115 3 2794 49 C 2794 75 5 2795 50 C 2795 114.48 24 2796 51 C 2796 14 1 2797 . 52 C 2797 150 5 2798 476 CC 2798 2799 477 C 2799 157. 23 2800 96 C 2800 38 20 2801 478 CC 2801 2802 97 C 2802 7 1 2803 98 C 2803 1850.16 2 2804 99 C 2804 12.45 2805 100 C 2805 125 8 2806 101 C 2806 2 1 2807 102 C 2807 115 3 2808 103 C 2808 1105.74 17 2809 104 C 2809 23.35 1 2810 105 C 2810 131 8 2811  479 CC 2811 2812 112 C 2812 63.75 6 2813 113 C 2813 545 7 2814 114 C 2814 1406.50 17 2815 115 C 2815 368 23 2816 116 C 2816 600 28 2817 117 C 2817 151.18 25 2818 118 C 2818 13.80 5 2819 119 C 2819 30 5 2820 120 C 2820 692 25 2821 121 C 2821 100 25 2822 122 C 2822 1291.19 4 2823 123 C 2823 275.82 4 2824 124 C 2824 100 26 2825 125 C 2825 25 26 2826 141 C 2826 1850.16 2 2827 142 C 2827 115 3 2828 143 C 2828 552.87 17 2829 144 C 2829 75 24 2830 145 C 2830 88 18 2831 146 C 2831 20 26 2832 147 C 2832 108 26 2833 149 C 2833 64.59 4 2834 150 C 2834 157.50 22 2835 15f1 C 2835 8.93 1 2836 152 C 2836 25 26 2837 153 C 2837 30 5 2838 154 C 2838 12.25 5 2839 155 C 2839 10.94 5 2840 179 C 2840 770.93 25 2841 180 C 2841 32.27 25 2842 156 C 2842 273.55 25 2843 157 C 2843 1444.50 17 2844 158 JC 2844 176 5 2845 159 C 2845 446.10 5 2846 181 C 2846 33.44 5 2847 160 C 2847 739.11 4 2848 161 C 2848 108.10 4 2849 162 C 2849 341.33 4 2850 163 C 2850 428.08 25 2851 164 C 2851 26.19 11 2852 182 C 2852 101.44 23 2853 165 C 2853 611.53 17 2854 166 C 2854 20.75 1 2855 167 C 2855 500 27 2856 183 C 2856 513.12 23 2857 184 C 2857 83.07 5 2858 168 C 2858 9.93 5 2859 480 CC 2859 2860 169 C 2860 28.50 5 2861 230 C 2861 611.53 17 2862 231 C 2862 171.16 25 2863 232 C 2863 32 8 2864 185 C 2864 25.83 8 2865 186 C 2865 1850.16 2 2866 187 C 2866 30.29 5 2867 188 C 2867 115 3 2868 189 C 2868 27.76 14 2869 190 C 2869 80 18 2870 191 C 2870 736 23 2871 192 C 2871 546.84 5 2872 193 C 2872 68.98 5 2873 494 CC 2873 2874 194 C 2874 298.05 6 2875 195 C 2875 766.49 6 2876 481 CC 2876 2877 196 C 2877 16 18 2878 197 C 2878 121.92 1 2879 198 C 2879 1633.42 23 2880 199 C 2880 11.25 5 2881 i\200 C 2881 23.85 5 2882 201 C 2882 49.52 5 2883 202 C 2883 9.80 5 2884 482 CC 2884 2885 483 CC 2885 2886 203 C 2886 24.45 5 2887 233 C 2887 30 5 2888 234 C 2888 41.62 5 2889 204 C 2889 77 5 2890 235 C 2890 104.82 23 28911 236 C 2891 129.76 8 2892 237 C 2892 115 3 2893 238 C 2893 27.46 5 2894 239 C 2894 3.95 23 2895 240 C 2895 244.30 25 2896 241 C 2896 16.85 5 2897 242 C 2897 1850.16 2 2898 243 C 2898 601.53 17 2899 244 C 2899 177 5 2900E\ 245 C 2900 717.86 4 2901 246 C 2901 50 26 2902 247 C 2902 3 18 2903 248 C 2903 22 18 2904 249 C 2904 169.04 5 2905 250 C 2905 300 17 2906 252 C 2906 60 1 2907 280 C 2907 45 1 2908 334 C 2908 601.81 4 2909 253 C 2909 ^681.22 15 2910 333 C 2910 897 15 2911 484 CC 2911 2912 485 C 2912 787.00 17 2913 332 C 2913 133.61 23 2914 329 C 2914 101.18 5 2915 291 C 2915 26 5 2916 330 C 2916 70.65 5 2917 331 C 2917 76.47 5 2918 292 C 2918 336.98 27|< 2919 293 C 2919 263.44 8 2920 294 C 2920 153.50 6 2921 295 C 2921 1159.13 25 2922 486 CC 2922 2923 487 CC 2923 2924 488 C 2924 368 23 2925 296 C 2925 54 10 2926 297 C 2926 306.79 17 2927 298 C 2927 225 1 2928 299 C  @2928 1850.16 2 2929 300 C 2929 395.75 2 2930 301 C 2930 2839.54 14 2931 302 C 2931 115 3 2932 303 C 2932 18.02 5 2933 336 C 2933 51.22 5 2934 304 C 2934 83.31 4 2935 305 C 2935 56 33 2936 306 C 2936 1390 28 2937 337 C 29I37 398 17 2938 338 C 2938 60.80 1 2939 339 C 2939 19.75 18 2940 340 C 2940 30.95 32 2941 341 C 2941 31.65 32 2942 342 C 2942 115 3 2943 343 C 2943 350 27 2944 344 C 2944 100 27 2945 345 C 2945 1850.16 2 2946 346 C 2946 2?0.76 11 2947 347 C 2947 75.64 32 2948 348 C 2948 124.89 17 2949 349 C 2949 106.45 25 2950 350 C 2950 150.70 10 2951 351 C 2951 8.46 32 2952 352 C 2952 1057.58 27 2953 353 C 2953 830 27 2954 489 CC 2954 2955 367 C 2955 13/01.13 32 2956 368 C 2956 60 27 2957 369 C 2957 125 27 2958 354 C 2958 25 3 2959 370 C 2959 30 3 2960 371 C 2960 10.35 32 2961 355 C 2961 100 22 2962 356 C 2962 1000 17 2963 372 C 2963 178.83 32 2964 373 C 2964 270.22 32 m 2965 374 C 2965 174.85 4 2966 375 C 2966 81.63 32 2967 376 C 2967 365.44 32 2968 377 C 2968 34.70 32 2969 518 CC 2969 2970 378 C 2970 22000 12 2971 379 C 2971 1500 32 2972 380 C 2972 398.04 32 2973 381 C 2973 1550 9 297)4 490 CC 2974 2975 382 C 2975 294.74 25 2976 383 C 2976 548.34 32 2977 491 CC 2977 2978 384 C 2978 35 26 2979 385 C 2979 500 7 2980 492 CC 2980 2981 396 C 2981 34 1 2982 493 CC 2982 2983 386 C 2983 398.04 32 2984 397 C 2984 7.68 10 2985 387 C 2985 1850.16 2 2986 406 C 2986 22 1 2987 407 C 2987 47.20 5 2988 398 C 2988 17.50 8 2989 408 C 2989 2 4 2990 409 C 2990 890.60 4 2991 399 C 2991 31 1 2992 400 C 2992 7.50 5 2993 410 C 2993 3R0.95 3 2994 401 C 2994 196.14 22 2995 402 C 2995 60.93 23 2996 403 C 2996 202.41 23 2997 404 C 2997 20.58 23 2998 405 C 2998 118.46 23 2999 437 C 2999 80 10 3000 438 C 3000 230 1 3001 439 C 3001 359 1 3003 411 C 3003 63.01 4 3004 412 C 3004 5.80 23 3005 413 C 3005 81.83 32 3006 414 C 3006 190.25 4 3007 440 C 3007 37.12 10 3008 441 C 3008 12.40 10 3009 415 C 3009 89.20 5 3010 442 C 3010 69 1 3011 416 C 3011 61.95 5 3012  443 C 3012 600 3  3013 417 C 3013 550 2 3014 418 C 3014 93.39 2 3015 419 C 3015 368.32 2 3016 444 C 3016 4 5 3017 445 C 3017 1208.43 25 3018 420 C 3018 414.75 2 3019 446 C 3019 31 5 3020 447 C 3020 8 18 3021 448 C 3021 262.25 22 3022 D449 C 3022 34.90 22 3023 450 C 3023 535.05 3 3024 451 C 3024 12.60 10 3025 452 C 3025 547.25 27 3026 453 C 3026 40 32 3027 454 C 3027 327.12 4 3028 455 C 3028 44.82 3 3029 456 C 3029 397.33 23 3030 495 C 3030 626.30 23 3031+d 496 C 3031 30 27 3032 457 C 3032 202.96 17 3033 458 C 3033 215.05 3 3034 459 C 3034 6.30 3 3035 460 C 3035 230 3 3036 461 C 3036 50 27 3037 462 C 3037 288 27 3038 463 C 3038 150 27 3039 464 C 3039 55.06 3 3041 497 C 33041 3.57 4 3042 465 C 3042 88.17 3 3043 466 C 3043 49.80 3 3045 467 C 3045 10 1 3046 468 C 3046 5428.82 6 3047 469 C 3047 300 24 3048 498 C 3048 22.56 11 3049 1 C 3049 44.55 10 3050 499 C 3050 35 26 3051 470 C 3051 16%s4 17 3052 471 C 3052 612.92 3 3053 500 C 3053 256.07 4 3054 501 C 3054 1743.66 7 3055 502 C 3055 1200 21 3056 515 C 3056 10 26 3057 503 C 3057 60 26 3058 504 C 3058 385 3 3059 505 C 3059 172.14 8 3060 506 C 3060 6.95 3 jg3061 507 C 3061 646.33 8 3062 508 C 3062 31 1 3063 509 C 3063 30 26 3065 2 C 3065 223.70 32 3072 510 C 3072 129.64 4 3073 519 C 3073 1340.73 25 3074 511 C 3074 2500 21 3077 512 C 3077 10.77 6 3079 513 C 3079 37.50 6 30rR80 514 C 3080 1298.05 25 1978.D3 *3 0 14 CC 2357 0 19 CC 2362 0 20 CC 2363 0 21 CC 2364 0 22 CC 2365 0 24 CC 2367 0 25 CC 2368 0 26 CC 2369 0 27 CC 2370 0 29 CC 2372 0 30 CC 2373 0 105 CC 2437 0 113 CC 2445 0 130 CC 2461 0  131 CC 2462 0 137 CC 2468 0 144 CC 2474 0 155 CC 2484 0 168 CC 2496 0 170 CC 2498 0 204 CC 2530 0 210 CC 2535 0 219 CC 2543 0 240 CC 2562 0 268 CC 2586 0 270 CC 2588 0 292 CC 2604 0 299 CC 2610 0 30G0 CC 2611 0 321 CC 2628 0 325 CC 2632 0 365 CC 2665 0 377 CC 2677 0 395 CC 2694 0 419 CC 2714 0 468 CC 2757 0 648 CC 542 0 649 CC 543 0 650 CC 2592 0 651 CC 2658 2 165 C 2493 2 22 9 2 234 C 2558 2.05 18 1Q5 3 37 C 2380 3.60 5 2 3 106 C 2438 3.47 18 6 3 150 C 2480 3.95 18 9 3 166 C 2494 3.50 18 9 4 136 C 2467 4.80 22 8 4 195 C 2521 4.15 10 12 5 273 C 2589 5 1 17 5 436 C 2730 5.74 5 27 5 528 W 544 5.00 14 11 6 5 C 23i 38 6.00 1 1 6 95 C 2430 6.75 18 6 6 404 C 2702 6.90 5 25 6 433 C 2727 6 18 27 7 62 C 2399 7.95 18 3 7 81 C 2417 7.75 11 3 7 122 C 2454 7.85 5 7 7 151 C 2481 7.06 1 9 7 157 C 2486 7 1 9 7 164 C 2492 7 1 11 7 198 C X2524 7 1 12 7 327 C 2634 7.50 1 21 8 63 C 2400 8.52 18 3 8 89 C 2425 8.95 18 5 8 190 C 2517 8 18 11 8 326 C 2633 8.75 18 21 8 370 C 2670 8.70 1 24 9 143 C 2473 9.95 18 8 9 306 C 2614 9.22 5 20 9 316 C 2624 9 18 20 10  15 C 2358 10 3 1 10 86 C 2422 10 16 5 10 181 C 2508 10.80 18 11 10 226 C 2550 10 18 14 10 453 C 2743 10 26 28 11 107 C 2439 11 18 6 11 224 C 2548 11.70 25 14 11 373 C 2673 11.48 22 23 11 423 C 2718 11.56 5 26 12 45[ C 2387 12 18 2 12 49 C 2391 12 18 2 12 79 C 2415 12.68 5 3 12 140 C 2471 12 22 8 12  163 C 2491 12.30 18 9 12 329 C 2636 12.55 11 21 13 118 C 2450 13.00 17 6 13 201 C 2527 13.30 5 12 13 346 C 2650 13.05 11 22 14 60 C S2398 14.85 18 3 14 251 C 2571 14.30 5 15 14 344 C 2648 14.20 23 22 15 77 C 2413 15 18 3 15 153 C 2483 15 18 9 15 361 C 2662 15 18 22 15 414 C 2709 15 18 26 15 451 C 2741 15.15 8 28 16 91 C 2426 16.05 5 7 16 112 C 2444 16. 18 6 16 199 C 2525 16 10 12 16 371 C 2671 16.80 1 24 16 416 C 2711 16.75 18 26 17 302 C 2612 17 6 20 17 349 C 2653 17.16 5 22 18 187 C 2514 18 18 11 18 203 C 2529 18.70 18 12 18 410 C 2706 18.50 18 26 19 111 C 2443 1ز9.89 22 6 19 350 C 2654 19.94 5 22 19 455 C 2745 19 26 28 20 188 C 2515 20 18 11 20 193 C 2519 20 26 12 20 399 C 2697 20.32 5 26 20 434 C 2728 20 5 27 21 174 C 2502 21.85 11 10 22 48 C 2390 22.80 22 3 23 182 C 2509 23.3=0 5 11 23 266 C 2584 23.95 8 16 25 132 C 2463 25 18 8 25 360 C 2661 25 22 22 25 363 C 2664 25.35 5 23 26 133 C 2464 26 22 8 26 213 C 2538 26 5 14 26 249 C 2569 26 17 15 26 258 C 2576 26.12 5 16 27 72 C 2408 27.00 5 5 2j7 183 C 2510 27.60 5 11 28 69 C 2405 28.26 21 5 28 88 C 2424 28.15 23 5 28 109 C 2441 28.76 18 6 28 194 C 2520 28.99 10 12 28 284 C 2596 28 1 18 29 64 C 2401 29.39 22 3 29 372 C 2672 29 5 23 30 152 C 2482 30 18 9 30 d 335 C 2641 30 5 21 30 462 C 2751 30 5 28 32 74 C 2410 32.23 5 5 33 47 C 2389 33.30 22 2 33 305 C 2613 33 5 20 33 312 C 2620 33 17 20 33 449 C 2739 33 18 28 34 158 C 2487 34.03 22 9 34 227 C 2551 34 6 14 34 351 C 2655,u 34.12 22 22 35 340 C 2644 35 26 22 35 387 C 2686 35.27 11 25 36 260 C 2578 36.81 11 16 36 408 C 2704 36 18 26 36 415 C 2710 36.50 5 26 37 263 C 2581 37.70 18 16 37 359 C 2660 37 18 22 37 382 C 2682 37.64 22 24 38 7 C QE2347 38.00 1 1 38 565 W 581 38.36 14 16 39 50 C 2392 39 22 2 39 135 C 2466 39 5 8 39 320 C 2627 39.50 18 20 39 391 C 2690 39.85 18 25 40 104 C 2436 40 20 6 40 429 C 2723 40.30 5 27 40 450 C 2740 40 23 28 40 645 E 664 40t.27 15 29 41 98 C 2433 41.5 20 6 42 16 C 2359 42.80 10 1 42 189 C 2516 42 26 11 42 257 C 2575 42 26 16 43 4 C 2337 43.50 1 1 45 200 C 2526 45.45 5 12 46 167 C 2495 46.49 4 10 46 310 C 2618 46.45 5 20 46 441 C 2733 46&r.85 5 27 48 328 C 2635 48 4 21 49  378 C 2678 49.56 8 24 49 384 C 2684 49.44 1 25 50 8 C 2348 50.00 24 1 50 10 C 2354 50.00 20 1 50 18 C 2361 50 18 1 50 23 C 2366 50 18 1 50 28 C 2371 50 18 1 50 84 C 2420 50 24 3 X50 117 C 2449 50. 27 6 50 134 C 2465 50.50 18 8 50 173 C 2501 50 20 11 50 223 C 2547 50.50 5 14 50 293 C 2605 50 24 18 50 298 C 2609 50 20 19 50 319 C 2626 50 24 20 50 366 C 2666 50 24 23 50 390 C 2689 50 22 25 50 420 C 2715 50 22 26 50 438 C 2731 50 24 27 52 70 C 2406 52.68 5 5 52 99 C 2434 52 5 6 52 314 C 2622 52.30 5 20 52 435 C 2729 52.84 11 27 53 6 C 2345 53.35 1 1 53 71 C 2407 53.35 5 5 54 463 C 2752 54 5 28 55 119 C 2451 55.00 22 7 55 212 C 2537 55.93 4 14 55 464 C 2753 55 22 28 56 121 C 2453 56.30 5 7 56 322 C 2629 56 17 20 60 43 C 2385 60.30 5 2 61 196 C 2522 61.36 10 12 64 51 C 2393 64.65 25 2 64 57 C 2397 64. 8 3 64 466 C 2755 64.50 6 28 66 46 C 2388 66.80 22 2 66 82 C 2418 66.34 4 3 70 138 C 2469 70 18 8 70 343 C 2647 70 23 22 72 264 C 2582 72 6 16 74 120 C 2452 74.42 22 7 74 220 C 2544 74.95 10 14 75 128 C 2459 75.65 11 8 75 247 C 2567 75.21 x10 15 75 467 C 2756 75 28 29 76 428 C 2722 76.99 22 27 80 65 C 2402 80. 23 3 81 259 C 2577 81.71 4 16 84 497 E 519 84.76 12 12 85 52 C 2394 85.54 22 2 85 225 C 2549 85 6 14 85 295 C 2607 85 1 18 86 32 C 2375 86 5 1 8g9 175 C 2503 89.37 8 10 90 232 C 2556 90 10 14 90 289 C 2601 90.50 5 18 93 35 C 2378 93.20 3 2 93 80 C 2416 93.20 3 5 93 114 C 2446 93.20 3 6 94 172 C 2500 94.90 22 11 96 367 C 2667 96.30 18 23 97 211 C 2536 97.67 23 14 99 405 C 2703 99 17 25 100 239 C 2561 100 5 15 100 244 C 2564 100.75 10 15 101 336 C 2642 101.39 4 22 105 216 C 2541 105 3 14 105 279 C 2590 105.78 8 17 105 526 E 539 105.03 12 10 106 215 C 2540 106.32 8 14 108 217 C 25h,42 108.06 8 14 109 282 C 2594 109.92 22 17 110 75 C 2411 110. 16 5 110 96 C 2431 110 5 6 110 380 C 2680 110 23 24 110 401 C 2699 110.25 1 26 110 574 E 590 110.15 12 17 113 142 C 2472 113.56 4 8 114 39 C 2382 114.98 18 2 !115 255 C 2574 115 3 16 115 307 C 2615 115 3 20 115 334 C 2640 115 3 21 115 388 C 2687 115 3 25 115 427 C 2721 115 3 27 115 470 C 2759 115 3 29 116 356 C 2657 116.89 1 23 117 169 C 2497 117.03 3 10 117 430 C 2724 117.43 4 27 119 17 C 2360 119.40 19 1 120 233 C 2557 120 1 15 126 184 C 2511 126.00 5 11 127 432 C 2726 127.35 5 27 129 149 C 2479 129 5 9 131 459 C 2749 131.46 10 28 134 288 C 2600 134 5 18 134 309 C 2617 134 5 20 134 394 C 26793 134.32 22 25 134 403 C 2701 134.74 22 25 136 38 C 2381 136.16 5 2 139 41 C 2383 139.24 4 2 139 330 C 2637 139.70 22 21 139 418 C 2713 139.96 13 26 140 339 C 2643 140 22 21 140 444 C 2736 140 1 27 141 392 C 2691 141.22 4J 25 142 623 E 631 142.22 12 24 144 389 C 2688 144.36 4 25 145 161 C 2490 145 5 9 145 369 C 2669 145 5 23 145 461 C 2750 145.75 10 28 153 290 C 2602 153.64 5 18 154 448 C 2738 154.01 5 28 155 42 C 2384 155 5 2 160 454 C s2744 160 27 28 164 323 C 2630 164 5 21 164 442 C 2734 164.11 5 27 168 185 C 2512 168.26 5 11 174 457 C 2747 174.34 8 28 179 160 C 2489 179.46 5 9 180 591 E 608 180.93 12 20 182 509 W 522 182.00 12 8 184 252 C 2572 184.25 5 1R5 185 537 E 552 185.93 12 12 186 294 C 2606 186.36 8 18 187 287 C 2599 187.22 5 18 192 250 C 2570 192 22 15 199 348 C 2652 199.40 5 22 200 228 C 2552 200 5 14 200 285 C 2597 200 27 18 200 375 C 2675 200 28 23 201 607 E 6̼40 201.10 12 25 205 347 C 2651 205.74 22 22 206 206 C 2532 206.25 26 12 208 147 C 2477 208.65 5 8 208 458 C 2748 208.22 25 28 218 417 C 2712 218.26 5 26 223 123 C 2455 223.17 5 7 230 186 C 2513 230.66 25 11 247 643 E 661 247!.78 12 29 251 638 W 649 251.13 15 26 254 489 E 504 254.00 15 4 258 614 E 616 258.02 12 21 259 514 E 516 259.01 12 7 261 85 C 2421 261.65 23 5 262 222 C 2546 262.60 5 14 264 9 C 2356 264.05 4 1 265 547 E 560 265.01 12 13 267 236 C 2560 267.58 22 15 269 559 E 575 269.88 12 16 271 269 C 2587 271.60 23 17 277 513 W 517 277.10 12 7 280 13 C 2355 280.60 22 1 282 592 E 609 282.18 12 20 283 590 E 607 283.06 12 20 286 78 C 2414 286.41 5 3 293 6Z19 E 622 293.42 12 23 295 412 C 2707 295 26 26 297 552 E 561 297.08 12 13 299 536 E 553 299.63 12 12 301 73 C 2409 301.50 21 5 304 483 E 510 304.73 12 5 304 539 E 569 304.73 12 15 309 315 C 2623 309.14 8 20 311 280 C 2591 311.54 8 17 325 609 E 610 325.46 12 21 326 635 E 646 326.75 12 26 327 629 E 652 327.45 12 28 339 108 C 2440 339.45 22 6 339 620 E 623 339.16 12 23 342 452 C 2742 342.32 8 28 343 538 E 568 343.38 12 15 343 580 E 598 343.31 12 18 346 561 E 577 346.43 12 16 346 608 E 645 346.92 12 26 350 265 C 2583 350 21 16 356 501 E 531 356.37 12 9 359 600 E 632 359.96 12 24 361 606 E 639 361.79 12 25 368 124 C 2456 368.00 23 7 368 145 C 2475 368 23 8 368 179̔ C 2506 368 23 11 368 229 C 2553 368 23 14 368 261 C 2579 368.00 23 16 368 313 C 2621 368 23 20 368 358 C 2659 368 23 22 368 402 C 2700 368 23 25 368 446 C 2737 368 23 27 369 593 E 615 369.00 12 21 372 493 W 500 372.80 12 3 8 373 639 E 654 373.60 12 28 374 469 C 2758 374 17 29 374 573 E 589 374.42 12 17 374 621 E 624 374.42 12 23 379 588 E 605 379.26 12 20 380 148 C 2478 380 7 9 384 630 E 653 384.95 12 28 386 525 E 538 386.34 12 10 387 202 C K2528 387 17 12 387 492 W 501 387.26 12 3 392 476 E 494 392.55 12 2 393 504 E 528 393.86 12 9 393 637 W 648 393.57 15 26 393 644 E 663 393.62 15 29 398 516 E 514 398.75 12 7 400 324 C 2631 400.88 4 21 405 56 C 2396 405.38 4 3 410 115 C 2447 410.72 25 6 420 617 E 620 420.35 12 23 430 579 E 597 430.98 12 18 432 283 C 2595 432.25 4 18 432 484 E 509 432.47 12 5 436 503 E 530 436.65 12 9 439 515 E 515 439.51 12 7 440 535 E 551 440.27 12 12 446 1Dt92 C 2518 446.86 4 11 450 92 C 2427 450.59 17 5 450 127 C 2458 450.59 17 8 456 477 E 493 456.63 12 2 464 500 E 537 464.55 12 10 465 541 E 566 465.02 12 15 472 413 C 2708 472.87 4 26 472 560 E 576 472.09 12 16 473 533 E 549 A473.57 12 12 473 545 E 557 473.57 12 13 474 159 C 2488 474.35 5 9 483 498 E 520 483.00 15 8 483 563 W 579 483.00 15 16 483 622 W 626 483.00 15 23 483 646 W 656 483 15 29 484 625 E 660 484.10 12 29 490 633 E 643 490.20 12 26 ) 495 368 C 2668 495.42 4 23 497 478 E 492 497.88 12 2 497 495 W 498 497.97 12 3 500 33 C 2376 500 21 1 500 139 C 2470 500 21 8 500 231 C 2555 500 21 14 500 243 C 2563 500 8 15 500 254 C 2573 500 21 15 500 345 C 2649 500 24 22 500 362 C 2663 500 21 23 500 376 C 2676 500 8 23 500 397 C 2695 500 8 25 500 398 C 2696 500 8 25 500 471 C 2760 500 21 29 500 472 C 2761 500 21 29 500 582 E 596 500.91 12 18 502 486 E 507 502.81 12 5 505 612 E 613 505.84 12 21 513 572 E 588 513.44 12 17 516 634 E 644 516.116 12 26 531 581 E 594 531.30 12 18 533 604 E 637 533.66 12 25 537 571 E 587 537.45 12 17 538 523 E 535 538.32 12 10 542 534 E 550 542.91 12 12 542 589 E 606 542.91 x=12 20 547 31 C 2374 547.42 17 1 547 177 C 2504 547.42 17 11 548 618 E 621 548.51 12 23 550 214 C 2539 550 24 14 552 393 C 2692 552.87 17 25 552 431 C 2725 552.87 17 27 552 598 E 629 552.62 12 24 561 494 W 499 561.91 12 3 5q63 248 C 2568 563.06 4 15 566 557 E 573 566.88 12 16 566 642 E 659 566.46 12 29 569 465 C 2754 569.90 4 28 574 479 E 491 574.03 12 2 575 485 E 508 575.53 12 5 589 110 C 2442 589.40 4 6 589 502 E 529 589.96 12 9 595 613 E n/614 595.69 12 21 596 540 E 567 596.15 12 15 596 599 E 630 596.12 12 24 601 546 E 558 601.00 12 13 610 605 E 638 610.74 12 25 616 146 C 2476 616 9 8 616 180 C 2507 616 9 11 621 93 C 2428 621.73 8 6 627 569 E 585 627.63 12 17 630 558 E 574 630.97 12 16 635 409 C 2705 635.69 27 26 643 524 E 536 643.20 12 10 645 578 E 595 645.08 12 18 671 221 C 2545 671.81 17 14 671 262 C 2580 671.81 17 16 671 341 C 2645 671.81 17 22 675 100 C 2435 675 8 6 688 P 553 E 559 688.29 12 13 695 116 C 2448 695.00 7 6 702 490 W 503 702.05 14 4 732 570 E 586 732.19 12 17 733 508 E 524 733.00 15 8 750 400 C 2698 750 21 26 770 281 C 2593 770.94 25 17 788 482 E 488 788.81 12 2 790 311 C 2619 7_90.75 17 20 796 586 E 603 796.26 12 20 800 601 W 634 800.03 15 24 802 587 E 604 802.32 12 20 830 499 E 511 830.88 12 7 842 481 E 489 842.19 12 2 842 487 E 506 842.80 12 5 845 616 E 619 845.14 12 23 850 585 W 602 850.20 15 18N 852 550 E 556 852.47 12 13 873 532 E 548 873.83 12 12 888 505 E 527 888.88 12 9 890 480 E 490 890.20 12 2 893 518 E 512 893.06 12 7 899 235 C 2559 899 17 15 911 440 C 2732 911.35 25 27 912 230 C 2554 912.90 9 14 919 286 C 2598 919 2 18 921 602 E 635 921.48 12 25 922 611 E 612 922.47 12 21 923 129 C 2460 923. 5 8 924 530 E 546 924.04 12 12 926 496 E 497 926.48 12 3 927 549 E 554 927.77 12 12 948 542 E 565 948.24 12 14 960 577 E 593 960.21 1A2 18 979 575 E 591 979.37 12 18 981 627 E 650 981.35 12 28 982 531 E 547 982.73 12 12 985 543 E 564 985.99 12 14 991 97 C 2432 991 16 6 991 507 E 525 991.35 12 9 991 544 E 563 991.80 12 14 991 548 E 555 991.16 12 12 992 u% 628 E 651 992.28 12 28 996 568 E 584 996.51 12 17 999  522 E 534 999.70 12 10 1000 55 C 2395 1000. 21 3 1000 333 C 2639 1000 21 21 1007 381 C 2681 1007 23 24 1019 556 E 572 1019.07 12 16 1020 610 E 611 1020.87 12 21 1033 48bl8 E 505 1033.57 12 5 1034 506 E 526 1034.18 12 9 1042 632 E 642 1042.43 12 26 1046 566 E 582 1046.89 12 17 1050 554 E 570 1050.61 12 16 1050 603 E 636 1050.72 12 25 1053 615 E 618 1053.55 12 23 1062 520 E 532 1062.02 12 10 1069i' 555 E 571 1069.11 12 16 1076 475 E 495 1076.21 12 3 1081 631 E 641 1081.13 12 26 1113 517 E 513 1113.18 12 7 1122 521 E 533 1122.84 12 10 1136 456 C 2746 1136.47 6 28 1151 44 C 2386 1151 17 2 1151 567 E 583 1151.39 12 17 1=158 597 E 628 1158.89 12 24 1176 640 E 657 1176.43 12 29 1177 474 E 496 1177.09 12 3 1184 641 E 658 1184.18 12 29 1197 83 C 2419 1197.81 5 5 1200 332 C 2638 1200 21 22 1203 178 C 2505 1203.31 22 11 1209 596 E 627 1209.08 12 24 1210 197 C 2523 1210.49 10 12 1345 529 W 545 1345.38 15 11 1352 297 C 2608 1352.93 25 19 1397 374 C 2674 1397.48 25 23 1426 576 E 592 1426.28 12 18 1452 317 C 2625 1452.77 25 20 1500 34 C 2377 1500 21 3 1500 76 C 2412 1500 21 10 1500 355 C 2656 1500 21 23 1500 421 C 2716 1500 21 27 1500 422 C 2717 1500 21 28 1510 473 C 2762 1510 21 29 1549 510 W 523 1549.00 14 8 1562 36 C 2379 1562.80 2 2 1562 67 C 2403 1562.80 2 5 1562 125 C 2457 1562.8KJ0 2 7 1703 207 C 2533 1703.40 2 12 1703 527 W 541 1703.92 15 11 1773 171 C 2499 1773.70 2 11 1773 267 C 2585 1773.70 2 16 1800 205 C 2531 1800 21 13 1800 246 C 2566 1800 21 17 1804 3 C 2313 1804.52 22 1 1850 342 C 2646 185e-0.16 2 22 1850 386 C 2685 1850.16 2 25 1850 443 C 2735 1850.16 2 27 1863 584 W 600 1863.74 15 18 1875 308 C 2616 1875.10 2 20 1887 68 C 2404 1887.00 17 5 2000 2 C 2332 2000 21 1 2000 156 C 2485 2000 21 9 2000 383 C 2683 29000. 21 25 2210 511 W 521 2210.00 14 8 2210 564 W 580 2210.00 14 16 2210 595 E 625 2210.00 14 23 2210 647 W 655 2210. 14 29 2276 626 W 662 2276.24 14 29 2386 87 C 2423 2386 17 5 2424 636 W 647 2424.72 14 26 2792 624 W 633 2792.12 14 24 2861 594 W 617 2861.14 14 21 3000 245 C 2565 3000 21 15 3178 209 C 2534 3178.45 22 14 3391 512 W 518 3391.80 14 7 3920 426 C 2720 3920.58 17 27 4000 94 C 2429 4000. 21 6 4255 551 W 562 4255.04 14 13 4412 562 W 578 4412.14 14 16 4521 491 W 502 4521.60 14 4 4601 519 W 540 4601.70 14 10 4812 424 C 2719 4812.51 23 27 5659 583 W 599 5659.58 14 18 10000 379 C 2679 10000 23 24 14850 291 C 2603 14850. 22 18 PASCAL.ER?  Message #0. >left parenthesis or constant expected in simple type; skipping 1identifier expected after reserved word "PROGRAM"ype; skipping reserved word "PROGRAM" expecteded word "PROGRAM"ype; skipping F5right parenthesis expected to terminate argument list skipping 1colon expected after constant in "CASE" statementlist skipping .period expected to terminate program; skippingentlist skipping >colon/semicolon/left paren. expected after proc name; skipping /reserved word "OF" expected in "CASE" statement name; skipping >this proc/func requires argument(s); left parenthesis expected 5unexpected item at start of type definition; skipping expected )left bracket expected in array definitionon; skipping expected !0right bracket expected to terminate set constantpping expected 8reserved word "END" expected to terminate proc/func bodypected 1semicolon expected after proc/func body; skippingnc bodypected 4integer constant expected after reserved word "GOTO"bodypected :2*equal sign expected in constant definitionord "GOTO"bodypected 9reserved word "BEGIN" expected at start of proc/func bodyected -unexpected item in declaration part; skippingoc/func bodyected 5identifier or reserved word "CASE" expected; skippingbodyected ^n4comma expected in argument list of "INDEX" intrinsicgbodyected $period expected to terminate programINDEX" intrinsicgbodyected 5double period expected in definition of subrange typebodyected 4identifier expected in constant definition; skippingebodyected !identifier expected in field listefinition; skippingebodyected 0identifier expected in "FOR" statement; skippingpingebodyected %identifier expected in parameter listt; skippingpingebodyected 6type identifier expected after colon in parameter listodyected 9C)identifier expected in pointer definitionarameter listodyected identifier expected after reserved word "PROCEDURE"/"FUNCTION" +first argument of "READLN" must be variableOCEDURE"/"FUNCTION" / identifier expected after periodbe variableOCEDURE"/"FUNCTION" 5identifier expected in definition of enumeration typeFUNCTION" 0identifier expected in type definition; skipping typeFUNCTION" *identifier expected in variable definitionipping typeFUNCTION" ^$identifier expected in argument listnitionipping typeFUNCTION" +tag field type must be identifier; skippingpping typeFUNCTION" 0tag field identifier or type identifier expected typeFUNCTION" .identifier expected after reserved word "WITH"ed typeFUNCTION" ۂ5right parenthesis expected to terminate argument listFUNCTION" >right parenthesis expected to terminate program parameter list (right parenthesis expected in expressionprogram parameter list 6right parenthesis expected to terminate parameter listter list Wunexpected item after right paren. in parameter list; skippingg>;unexpected item follows procedure/function header; skippingingg2unexpected item in reference to variable; skipping skippinginggunexpected item after right paren. in record variant; skippingg4identifier or reserved word "VAR" expected; skipping; skippingg1+unexpected item in parameter list; skipping skipping; skippingg+unexpected item in parameter list; skipping skipping; skippingg+unexpected item in parameter list; skipping skipping; skippingg=semicolon expected after "assembler" in proc/func declarationggz/reserved word "OF" expected in array definitionnc declarationgg5reserved word "OF" expected in definition of set typelarationgg6reserved word "OF" expected after reserved word "FILE"arationgg7reserved word "OF" expected in header of record variantrationgg+left parenthesis expected in record variantcord variantrationgg8unexpected item follows reserved word "PACKED"; skippingationgg3right bracket expected to terminate array subscriptppingationgg*right bracket expected in array definitionsubscriptppingationggO5right bracket expected to terminate string definitioningationgg:reserved word "END" expected to terminate "CASE" statementionggincompatible types of constants in definition of subrange typegfile may not be field of record in definition of subrange typeg#array index may not be of type REALdefinition of subrange typeg6tag field of record variant must be scalar or subrangenge typegsemicolon expected after keyword "forward" in proc/func headerg)index of array must be scalar or subrange" in proc/func headerg-base type of set must not be REAL nor INTEGER proc/func headerg7intrinsics "PRED" and "SUCC" require scalar as argument headerg1may not read into packed fieldequire scalar as argument headerg8unsatisfied forward declaration of procedure or functionheaderg(semicolon expected after type definitiondure or functionheadergfile value parameter not allowed; file must be "VAR" parametergitem preceding uparrow must be reference to file or to pointerg>string literal argument not same length as packed array param.g8illegal type of loop control variable in "FOR" statementparam.gNB5illegal type of expression in "CASE" statement headerentparam.gsubrange bounds must be scalar; STRING is PACKED ARRAY OF CHARg&array index may not be of type INTEGER is PACKED ARRAY OF CHARg+assignment to standard function not allowedACKED ARRAY OF CHARg&equal sign expected in type definitionlowedACKED ARRAY OF CHARgIfno such field in this recorddefinitionlowedACKED ARRAY OF CHARg>identifier or "END" or "CASE" expected in field list; skippinggargument must be variableASE" expected in field list; skippinggargument of "EXIT" must be user-declared procedure or functiong>argument of "EXIT" must be user-declared procedure or functiong/first argument of "FILETITLE" must be file nameure or functiong6first argument of "GET"/"PUT"/"SEEK" must be file namefunctiong\3second argument of "SEEK" intrinsic must be integeramefunctiong7comma expected; "SEEK" intrinsic requires two argumentsunctiong?"READ"/"READLN" require integer, real, char, or string argument$error in type of intrinsic parameterl, char, or string argumentՋ$error in type of intrinsic parameterl, char, or string argument$error in type of intrinsic parameterl, char, or string argument$error in type of intrinsic parameterl, char, or string argumentstring argument required hererameterl, char, or string argumentf6second argument to "SUBSTR" must be integer expression argument5third argument to "SUBSTR" must be integer expressionn argument;"WRITE"/".LN" require integer expression after second colonment>"WRITE"/".LN" require int/bool/real/char/string/packd.ary.chart6explicit argument to "PAGE" intrinsic is not file nameary.charttoo few arguments to "PAGE" intrinsic is not file nameary.chart1type conflict of operands in assignment statement nameary.chart*type conflict of operands of "IN" operatoratement nameary.chart$0type conflict of operands of relational operatort nameary.chart>comparison of packed arrays of char requires identical lengthst8only equal/unequal comparisons permitted for array typesengthst9only equal/unequal comparisons permitted for record typesngthstm6operand of unary plus or minus must be real or integerpesngthst)illegal type of operand(s) of binary plusal or integerpesngthst*illegal type of operand(s) of binary minusl or integerpesngthst6illegal operand(s) of "OR" operator; check parenthesespesngthst,illegal type of operand(s) of multiplicationarenthesespesngthst+illegal type of operand(s) of real divisionnarenthesespesngthst?proc/func declaration is too deeply nested; display limit is 12>proc/func declaration too deeply nested; lex. level limit is 82.,illegal type of operand(s) of "DIV" operator. level limit is 829proc/func too long; use swapping and/or overlaid compiler is 82,illegal type of operand(s) of "MOD" operatorlaid compiler is 82)too many jumps in this procedure/functiontorlaid compiler is 82subrange bounds must be scalar; STRING is PACKED ARRAY OF CHAR29comma expected in argument list of "WRITE" to "TEXT" file CHAR236label on this statement was not declared in this blockile CHAR2;unexpected item follows procedure/function header; skippingHAR28reference to entire array expected in "PACK" or "UNPACK"ingHAR29explicit argument of "PAGE" intrinsic must be "TEXT" filengHAR2r&error in real constant; digit expectedmust be "TEXT" filengHAR27string maximum length must be in inclusive range 1..255lengHAR2.too many segments in this program; limit is 16ge 1..255lengHAR2-record too deeply nested; display limit is 126ge 1..255lengHAR2o7"WITH" statement too deeply nested; display limit is 12lengHAR2;too many procedures/functions in this segment; limit is 149HAR29proc/func too long; use swapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2֔error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2cannot create overlayentswapping and/or overlaid compiler49HAR2cannot create overlayentswapping and/or overlaid compiler49HAR29source line too long to process; split into several lines49HAR2+E.may not switch segments; rearrange source codeveral lines49HAR2>reserved word "PROCEDURE" or reserved word "FUNCTION" expected2=was declared both "forward" and "segment"; add "segment" hered2"record type of this file not knownegment"; add "segment" hered2;w#subrange of type REAL not permittedgment"; add "segment" hered2error in POINT statementt permittedgment"; add "segment" hered2cannot create overlayentt permittedgment"; add "segment" hered2(zero-length array elements not permitted"; add "segment" hered2:9explicit argument of "EOLN"/"EOLCHAR" must be "TEXT" filehered2/illegal character in source text; blank assumedTEXT" filehered21included file may not contain $I control commentsXT" filehered21procedure/function parameters not yet implementedXT" filehered2 0field addressing problem -- Please inform RDS.dXT" filehered23constant addressing problem -- Please inform RDS." filehered23indirect addressing problem -- Please inform RDS." filehered27unanticipated end of source file; check BEGIN/END pairslehered29program parameter not declared as file in outermost blockhered27assembler module must not be declared as Pascal segmentckhered28comma expected in argument list of "WRITE" to typed filekhered2#"OUTPUT" not declared in this scope"WRITE" to typed filekhered2L]-"OUTPUT" not declared as "TEXT" in this scope typed filekhered23real number may not be argument of "PRED" or "SUCC" filekhered2file of file not allowedrgument of "PRED" or "SUCC" filekhered25too much local data; stack frame limit is 16383 wordsilekhered2J>"PACK"/"UNPACK" offset not compatible with index type of array28reference to entire array expected in "PACK" or "UNPACK" array2>"PACK"/"UNPACK" require both arrays to have same element types26"PACK"/"UNPACK" require reference to packed array herent types2~:"PACK"/"UNPACK" require reference to non-packed array hereypes22comma expected in argument list of "PACK"/"UNPACK"ray hereypes22comma expected in argument list of "PACK"/"UNPACK"ray hereypes22comma expected in argument list of "PACK"/"UNPACK"ray hereypes2?illegal assignment; PACKED ARRAY OF CHAR should have lowbound=1segment too long; limit is 32KBY OF CHAR should have lowbound=1segment too long; limit is 32KBY OF CHAR should have lowbound=1)"ODD" intrinsic requires integer argumentshould have lowbound=1)"CHR" intrinsic requires integer argumentshould have lowbound=1segment too long; limit is 32KBr argumentshould have lowbound=11too many elements in packed array; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=11too many elements in packed array; limit is 32767ave lowbound=16W9global labels not permitted in separately compiled moduleound=10 DO BEGIN H:=H+1/N;N:=N-1; END; WRITELN(H) END. BTREE.zPROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : INTEGER; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARXRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : INTEGER; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : INTEGER; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGINr IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[*ZI] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1/; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROdCEDURE DELETE(X : INTEGER; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDUREZ UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.ES[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.EH[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REʇF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END ENDҹ END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DvO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY : 4); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THENz` BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN ABEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . BYTE.01|W; ROUUTINE TO WRITE A BYTE TO A GIVEN BYTE ADDRESS ; CONDITIONS ; ; ENTRY ; AC0 - BYTE TO BE WRITTEN IN RH BYTE ; AC1 - UNDEFINED ; AC2 - BYTE POINTER WHERE TO PUT BYTE ; AC3 - RETURN TO THIS ADDRESS ; ; RETURN ; AC0UNDEFINED ; AC1 - UNDEFINED ; AC2 - UNDEuUFINED ; AC3 - UNDEFINED ; .ENT BGET,BPUT .NREL .EXTD LHB,RHB BPUT: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;RIGHT HAND BYTE ADDRESS MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SKIP IF LHB ;NOTE CARRY IS SET IF LHB MOVS 0,0,SKP ;SWAP BYTEÈS IN WORD TO BE PUT ;AND SKIP NEXT INSTRUCTION MOVS 1,1 ;SWAP MASK IF LH BYTE LDA 3,0,2 ;LD AC3,WITH WORD TO RECEIVE BYTE AND 1,3 ;AND OUT OTHER BYTE ADD 0,3 ;ADD IN BYTE TO BE PUT STA 3,0,2 ;RESTORE UPDATED WORD JMP @USP ;RETURN TO CALLER J ; CONDITIONS ; ; ENTRY ; AC0 - UNDEFINED ; AC1 - UNDEFINED ; AC2 - BYTE POINTER TO BYTE LOCATION ; ; EXIT ; AC0 - VALUE OF BYTE IN RH BYTE (MASKED TO RHB) ; AC1 - UNDEFINED ; AC2 - UNDEFINED BGET: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;GET RHB MArVSK MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SET CARRY ;IF LHBYTE. SKIP IF LHBYTE MOVS 1,1 ;SWAP MASK BYTES TO MAKE LHB MASK LDA 0,0,2 ;GET WORD CONTAINING BYTE AND 1,0,SNC ;AND OUT OTHER BYTE AND SKIP IF LHBYTE MOVS 0,0 ;SWAP LHBYTE INTO *7RHBYTE JMP @USP ;RETURN TO CALLER .END TTT.PX 5xpTT Copyright (C) 1980 Rational Data Systems 5%2ť2ń2ń&22` hTEST2. ꉋPROGRAM TEST(INPUT,OUTPUT); VAR I : INTEGER; X : REAL; BEGIN WRITELN( 'WELCOME TO PROG TEST2'); X := 1.1; I := 3; X := I*X; WRITELN( ' LINE 1',X : 6 : 2,I); I := TRUNC(X); X := I; WRITELN(' LINE 2',I,X : 6 : 2) END. TEST.BUsr@PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR I : INTEGER; STR : ALPHANUMERIC; {$I GETINTEGER.PI} {$I GETCOLUMN.PI} BEGIN REPEAT WRITELN('ENTER STRING'); WRITELN; READLN(STR); WRITELN(STR); WRITELN(' ',GETCOLUMN(STR)); UNTIL EOF(INP UT) END. PL5.PAll2PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL% OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VAiRSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCEDURE); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} ԩ A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTBEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF SYMBOL; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACoKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCEDURE: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGDIN WRITELN(' ****',' ':CC-1;'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GO TO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH} BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RE(SERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOoMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GO TO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;DA := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DXC : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONS3TANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCEDURE : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; n VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN 3 BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT `THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5;L:3;A:5) END;{LIST CODE} PROCEEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL);  VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCEDURE : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYN = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSsxYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(qFSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM uTHEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8)]; NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION[ID]; IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETS#WYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION[ID]; IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCEDURE THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO ώ BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM &= DOSYM THEN GETSYM ELSE ERROR(18); STATMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN ;BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTANTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCEDURE);GETSYM; END ELSE ERROR(4); IFX SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S  : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BE-GIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGI0N T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])); 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := $ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]=NEQ; Z<LSS; Z>GTR; Z<=LEQ; Z>=GEQ; Z;SEMICOLN; MNEMONIC[LIT] := 'LIT'; Z[OPR] := 'OPR'; Z[LOD] := 'LOD';Z[STO] := 'STO'; Z[CAL] := 'CAL'; Z[INT] := 'INT'; Z[JMP] := 'JMP'; Z[JPC] := 'JPC'; DECLGEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CZ := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0.[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN "NPL/0 PROGRAM'); 99: WRITELN END. 1979.D4*"  0 99 106 309 310 425 426 427 475 476 478 479 480 481 482 483 484 486 487 489 490 491 492 493 494 518 SEARCH KEY 0 99 C 2804 12.45 106 CM 1995 A309 CC 770 310 CC 779 425 CC 806 426 CC 807 427 CC 808 475 CC 2789 476 CC 2798 478 CC 2801 479 CC 2811 480 CC 2859 481 CC 2876 482 CC 2884 483 CC 2885 484 CC 2911 486 CC 2922 487 CVC 2923 489 CC 2954 490 CC 2974 491 CC 2977 492 CC 2980 493 CC 2982 494 CC 2873 518 CC 2969 AMOUNT = 1.245E+01 1 36 51 97 101 104 151 166 197 252 280 298 338 396 399 X 406 438 439 442 467 508 SEARCH KEY 1 36 C 2773 13 1 51 C 2796 14 1 97 C 2802 7 1 101 C 2806 2 1 104 C 2809 23.35 1 151 C 2835 8.93 1 166 C 2854 20.75 1 197 C 2878 121.92 1  252 C 2906 @60 1 280 C 2907 45 1 298 C 2927 225 1 338 C 2938 60.80 1 396 C 2981 34 1 399 C 2991 31 1 406 C 2986 22 1 438 C 3000 230 1 439 C 3001 359 1 442 C 3010 69 1 467 C 3045 10 1 508 C 3062 31 1 AMOUNT = 1.387E+03 2 3 47 98 141 186 242 299 300 345 387 417 418 419 420 SEARCH KEY 2 3 C 2763 1850.16 2 47 C 2792 1850.16 2 98 C 2803 1850.16 2 141 C 2826 1850.16 2 186 C 2865 1850.16 2 242 C 2897 1850.16 2 299 C 2928 1850.16 2 300 C 2929 395.75 2 345 C 2945 1850.16 2 387 C 2985 1850.16 2 417 C 3013 550 2 418 C 3014 93.39 2 419 C 3015 368.32 2 420 C 3018 414.75 2 AMOUNT = 1.847E+04  3 48 102 142 188 237 302 342 354 370 410 443 450 455 458 459 460 464 465 466 471 504 506 SEARCH KEY 3 48 C 2793 115 3 102 C 2807 115 3 142 C 2827 115 3 188 C 28367 115 3 237 C 2892 115 3 302 C 2931 115 3 342 C 2942 115 3 354 C 2958 25 3 370 C 2959 30 3 410 C 2993 30.95 3 443 C 3012 600 3 450 C 3023 535.05 3 455 C 3028 44.82 3 458 C 3033 215.05 3 459 C 3034 6.3 0 3 460 C 3035 230 3 464 C 3039 55.06 3 465 C 3042 88.17 3 466 C 3043 49.80 3 471 C 3052 612.92 3 504 C 3058 385 3 506 C 3060 6.95 3 AMOUNT = 3.720E+03 4 9  122 123 149 160 161 162 245 Q 304 334 374 408 409 411 414 454 497 500 510 SEARCH KEY 4 9 C 2771 630.50 4 122 C 2822 1291.19 4 123 C 2823 275.82 4 149 C 2833 64.59 4 160 C 2847 739.11 4 161 C 2848 108.10 4 162  C 2849 341.33 4 245 C 2900 717.86 4 304 C 2934 83.31 4 334 C 2908 601.81 4 374 C 2965 174.85 4 408 C 2989 2 4 409 C 2990 890.60 4 411 C 3003 63.01 4 414 C 3006 190.25 4 454 C 3027 327.12 4 497 C 3041 3.57 4 500 C 3053 256.07 4 510 C 3072 129.64 4 AMOUNT = 6.890E+03 5 11 13 14 39 40 44 49 52 118 119 153 154 155 158 159 168 169 181 184 187 192 193 199 200 B 201 202 203 204 233 234 238 241 244 249 291 303 329 330 331 336 400 407 415 416 444 446 SEARCH KEY 5  11 C 2777 47.70 5 13 C 2780 6.94 5 14 C 2781 64.25 5 @39 C 2778 258.40 5 40 C 2782 160.96 5 44 C 2788 93.70 5 49 C 2794 75 5 52 C 2797 150 5 118 C 2818 13.80 5 119 C 2819 30 5 153 C 2837 30 5 154 C 2838 12.25 5 155 C 2839 10.94 5 158 C 2844 176 5 159 j C 2845 446.10 5 168 C 2858 9.93 5 169 C 2860 28.50 5 181 C 2846 33.44 5 184 C 2857 83.07 5 187 C 2866 30.29 5 192 C 2871 546.84 5 193 C 2872 68.98 5 199 C 2880 11.25 5 200 C 2881 23.85 5 201 C 2882 49.52 5# 202 C 2883 9.80 5 203 C 2886 24.45 5 204 C 2889 77 5 233 C 2887 30 5 234 C 2888 41.62 5 238 C 2893 27.46 5 241 C 2896 16.85 5 244 C 2899 177 5 249 C 2904 169.04 5 291 C 2915 26 5 303 C 2932 18.02 5  329 C 2914 101.18 5 330 C 2916 70.65 5 331 C 2917 76.47 5 336 C 2933 51.22 5 400 C 2992 7.50 5 407 C 2987 47.20 5 415 C 3009 89.20 5 416 C 3011 61.95 5 444 C 3016 4 5 446 C 3019 31 5 AMOUNT = 3.619E+03  6 112 194 195 294 468 512 513 SEARCH KEY 6 112 C 2812 63.75 6 194 C 2874 298.05 6 195 C 2875 766.49 6 294 C 2920 153.50 6 468 C 3046 5428.82 6 512 C 3077 10.77 6 513 C 3079 37.50 6 AMOUNT = 6.758E+03 7 113 385 501 SEARCH KEY 7 113 C 2813 545 7 385 C 2979 500 7 501 C 3054 1743.66 7 AMOUNT = 2.788E+03  8 5 6 7 15 45 100 105 185 232 236 293 398 505 507 SEARCH BKEY 8 5 C 2765 314.49 8 6 C 2766 314.49 8 7 C 2767 100 8 15 C 2786 228.23 8 45 C 2790 1000 8 100 C 2805 125 8 105 C 2810 131 8 185 C 2864 25.83 8 232 C 2863 32 8 236 C 2891 129.76 8 293 C 2919 w263.44 8 398 C 2988 17.50 8 505 C 3059 172.14 8 507 C 3061 646.33 8 AMOUNT = 3.500E+03 9 381 SEARCH KEY 9 381 C 2973 1550 9 AMOUNT = 1.550E+03 10 1 296 350 397 437 440 441 451 SEARCH KEY 10 1 C 3049 44.55 10 296 C 2925 54 10 350 C 2950 150.70 10 397 C 2984 7.68 10 437 C 2999 80 10 440 C 3007 37.12 10 441 C 3008 12.40 10 451 C 3024 12.60 10 AMOUNT = 3.990E+02 11 10 164 346 498 SEJARCH KEY 11 10 C 2774 38.75 11 164 C 2851 26.19 11 346 C 2946 20.76 11 498 C 3048 22.56 11 AMOUNT = 1.082E+02 12 16 17 18 19 20 21 22 23 25 53 54 55 56 57 58 59 D 60 61 62 63 64 65 66 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 126 127 128 129 130 131 132 137 170 171 qD 172 173 174 175 176 205 206 207 208 209 210 211 212 213 214  215 216 217 218 219 220 221 223 254 255 256 257 258 259 260 264 265 266 272 273 274 307 308 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 357 358 360 378 421 422 423 424 434 435 516 517 SEARCH #KEY 12 16 EM 665 1102.70 12 17 EM 666 1209.04 12 18 EM 667 1350.43 12 19 EM 668 199.40 12 20 EM 669 550.32 12 21 EM 670 539.29 12 22 EM 671 526.45 12 23 EM 672 344.29 12 25 EM 680 411.53 12 53 EM/ 674 1360.43 12 54 EM 675 209.40 12 55 EM 676 1053.55 12 56 EM 677 1083.87 12 57 EM 678 516.30 12 58 EM 679 550.39 12 59 EM 681 276.95 12 60 EM 684 209.40 12 61 EM 685 1101.20 12 62 EM 686 1580.40 12 o 63 EM 687 533.66 12 64 EM 688 610.74 12 65 EM 689 422.46 12 66 EM 690 215.64 12 76 EM 683 1360.43 12 77 EM 691 209.40 12 78 EM 692 981.35 12 79 EM 693 1050.72 12 80 EM 694 479.62 12 81 EM 695 554.62% 12 82 EM 696 369.47 12 83 EM 697 329.08 12 84 EM 699 1398.97 12 85 EM 700 194.48 12 86 EM 701 1016.68 12 87 EM 702 1156.68 12 88 EM 703 563.99 12 89 EM 704 640.40 12 90 EM 705 470.84 12 91 EM 706 483.71 12 126 EM 711 1408.97 12 127 EM 712 204.48 12 128 EM 713 1091.05 12 129 EM 714 1096.88 12 130 EM 715 595.09 12 131 EM 716 613.84 12 132 EM 717 514.82 12 137 EM 718 482.51 12 170 EM 722 1032.90 12 171 EM 723 1408.97 12 172 EM 725 1166.68 12 173 EM 726 527.17 12 174 EM 727 560.96 12 175 EM 728 492.78 12 176 EM 729 298.75 12 205 EM 724 204.48 12 206 EM 731 1408.97 12 207 EM 732 204.48 12 208 EM 733 863.83 12 E 209 EM 734 915.34 12 210 EM 735 368.67 12 211 EM 736 514.29 12 212 EM 737 430.51 12 213 EM 738 322.85 12 214 EM 740 1420.97 12 215 EM 741 204.48 12 216 EM 742 1131.44 12 217 EM 743 1096.04 12 218 EM 744 551].67 12 219 EM 745 640.60 12 220 EM 746 385.40 12 221 EM 747 360.91 12 223 EM 751 1049.82 12 254 EM 749 1424.97 12 255 EM 750 204.48 12 256 EM 752 992.88 12 257 EM 753 551.67 12 258 EM 754 550.23 12 259 EM Ҫ755 431.37 12 260 EM 756 343.46 12 264 EM 762 1017.67 12 265 EM 763 929.08 12 266 EM 764 518.89 12 272 EM 765 271.86 12 273 EM 766 384.02 12 274 EM 767 256.22 12 307 EM 768 1426.97 12 308 EM 769 204.48 12 31O1 EM 771 864.72 12 312 EM 772 1001.57 12 313 EM 774 640.60 12 314 EM 775 302.19 12 315 EM 776 451.39 12 316 EM 777 429.02 12 317 EM 778 314.65 12 318 EM 780 568.52 12 319 EM 781 993.27 12 320 EM 784 551.67 12  321 EM 785 993.62 12 322 EM 786 993.62 12 323 EM 787 444.04 12 324 EM 788 375 12 325 EM 789 415.74 12 326 EM 790 204.48 12 327 EM 791 1426.97 12 328 EM 792 1426.97 12 357 EM 794 1426.97 12 358 EM 795 204.48 B12 360 EM 793 561.13 12 378 C 2970 22000 12 421 EM 798 204.48 12 422 EM 799 204.48 12 423 EM 800 1426.97 12 424 EM 801 426.97 12 434 EM 804 1426.97 12 435 EM 805 204.48 12 516 C 660 484.10 12 517 EM 815 887.50 12 AMOUNT = 1.021E+05 14 24 26 67 92 93 138 139 177 178 189 222 224 263 275 276 301 359 436 SEARCH KEY 14 24 EM 673 2468.66 14 26 EM 682 2234.86 14 67 EM 69\8 3861.48 14 92 EM 707 2984.02 14 93 EM 708 555.34 14 138 EM 719 3016.96 14 139 EM 720 125.24 14 177 EM 730 2831.26 14 178 EM 739 2326.89 14 189 C 2868 27.76 14 222 EM 748 2850.69 14 224 EM 758 2575.50 14 263 EM 761 80.68 14 275 EM 782 2500 14 276 EM 783 1956.74 14 301 C 2930 2839.54 14 359 EM 796 2090.76 14 436 EM 809 1835.96 14 AMOUNT = 3.716E+04 15 94 95 140 253 261 262 333 366 SEARCH KEY 15 914 EM 709 310.37 15 95 EM 710 1372.35 15 140 EM 721 879.67 15 253 C 2909 81.22 15 261 EM 759 1391.48 15 262 EM 760 1569.95 15 333 C 2910 897 15 366 EM 797 360.94 15 AMOUNT = 6.863E+03 17 4 103 114 14c3  157 165 230 243 250 297 337 348 356 457 470 485 SEARCH KEY 17 4 C 2764 552.87 17 103 C 2808 1105.74 17 114 C 2814 1406.50 17 143 C 2828 552.87 17 157 C 2843 1444.50 17 165 C 2853 611.5_3 17 230 C 2861 611.53 17 243 C 2898 601.53 17 250 C 2905 300 17 297 C 2926 306.79 17 337 C 2937 398 17 348 C 2948 124.89 17 356 C 2962 1000 17 457 C 3032 202.96 17 470 C 3051 164 17 485 C 2912 787.00 17 AMOUNT = 1.017E+04 18 8 37 145 190 196 247 248 339 447 SEARCH KEY 18 8 C 2770 20.07 18 37 C 2775 12.82 18 145 C 2830 88 18 190 C 2869 80 18 196 C 2877 16 18 247 C 2902 3 18 248 C 2903 22 18 339 C 2939 19.75 18 447 C 3020 8 18 AMOUNT = 2.696E+02 20 33 96 SEARCH KEY 20 33 C 2768 677.50 20 96 C 2800 38 20 AMOUNT = 7.155E+02 21 502 511 SEARCH KEY 21 502  C 3055 1200 21  511 C 3074 2500 21 AMOUNT = 3.700E+03 22 150 355 401 448 449 SEARCH KEY 22 150 C 2834 157.50 22 355 C 2961 100 22 401 C 2994 196.14 22 448 C 3021 262.25 22 449 C 3022 34.90 22 AMOUNT = 7.507E+02  23 35 38 41 115 182 183 191 198 235 239 332 402 403 404 405 412 456 477 488 495 SEARCH KEY 23 35 C 2772 736 23 38 C 2776 7.30 23 41 C 2783 563.93 23 115 C 2815 368 23 182 C 2852 101.44 23 183 C 2856 513.12 23 191 C 2870 736 23 198 C 2879 1633.42 23 235 C 2890 104.82 23 239 C 2894 3.95 23 332 C 2913 133.61 23 402 C 2995 60.93 23 403 C 2996 202.41 23 404 C 2997 20.58"^ 23 405 C 2998 118.46 23 412 C 3004 5.80 23 456 C 3029 397.33 23 477 C 2799 157. 23 488 C 2924 368 23 495 C 3030 626.30 23 AMOUNT = 6.858E+03 24 50 144 469 SEARCH KEY 24 50 C 2795 114.48 24 144 Ce 2829 75 24 469 C 3047 300 24 AMOUNT = 4.894E+02 25 12 117 120 121 156 163 179 180 231 240 295 349 382 445 514 519 SEARCH KEY 25 12 C 2779 229.63 25 117 C 2817 151.18 25 120 C 2820 692 25 121 C 2821 100 25 156 C 2842 273.55 25 163 C 2850 428.08 25 179 C 2840 770.93 25 180 C 2841 32.27 25 231 C 2862 171.16 25 240 C 2895 244.30 25 295 C 2921 1159.13 25 349 C 2949 106.45 25 382 C 297q5 294.74 25 445 C 3017 1208.43 25 514 C 3080 1298.05 25 519 C 3073 1340.73 25 AMOUNT = 8.500E+03 26 34 42 43 46 124 125 146 147 152 246 384 499 503 509 515 SEARCH KEY 26 34 C 27u769 125 26 42 C 2784 67 26 43 C 2785 45.00 26 46 C 2791 100 26 124 C 2824 100 26 125 C 2825 25 26 146 C 2831 20 26 147 C 2832 108 26 152 C 2836 25 26 246 C 2901 50 26 384 C 2978 35 26 499 C 3050 35 }26 503 C 3057 60 26 509 C 3063 30 26 515 C 3056 10 26 AMOUNT = 8.350E+02 27 167 292 343 344 352 353 368 369 433 452 461 462 463 496 SEARCH KEY 27 167 C 2855 500 27 292 C 2918 336.98 27 343 C 2943 350 27 344 C 2944 100 27 352 C 2952 1057.58 27 353 C 2953 830 27 368 C 2956 60 27 369 C 2957 125 27 433 EM 803 1207.97 27 452 C 3025 547.25 27 461 C 3036 50 27 462 C 3037 288 27 463 C 3038 150 27 496 C 3031 30 27 AMOUNT = 5.632E+03 28 116 306 SEARCH KEY 28 116 C 2816 600 28 306 C 2936 1390 28 AMOUNT = 1.990E+03 32 2 340 341 347 351 367 371 372 373 375 376 Y377 379 380 383 386 413 453 SEARCH KEY 32 2 C 3065 223.70 32 340 C 2940 30.95 32 341 C 2941 31.65 32 347 C 2947 75.64 32 351 C 2951 8.46 32 367 C 2955 1301.13 32 371 C 2960 10.35 32 372 C 2963 178.83 32 373 C 2964 270.22 32 375 C 2966 81.63 32 376 C 2967 365.44 32 377 C 2968 34.70 32 379 C 2971 1500 32 380 C 2972 398.04 32 383 C 2976 548.34 32 386 C 2983 398.04 32 413 C 3005 81.83 32 453 C 3l/026 40 32 AMOUNT = 5.578E+03 33 305 SEARCH KEY 33 305 C 2935 56 33 AMOUNT = 5.600E+01 FLOAD.SVAD.SVSYS.LBSYS.BBTREE.PArrzPROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : INTEGER; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARXRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : INTEGER; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : INTEGER; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*)  NEW (B); IF R <= N THEN BEGINr IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[*ZI] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1/; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROdCEDURE DELETE(X : INTEGER; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDUREZ UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.ES[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.EH[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REʇF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END ENDҹ END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DvO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY : 4); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THENz` BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN ABEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*)  END END ; PRINTTREE(ROOT,1); READ(X) END END . T3. PROGRAM T3 (INPUT,OUTPUT); TYPE YEAR = 1800..2000; VAR YEARN : YEAR; BEGIN WHILE NOT EOF(INPUT) DO BEGIN READ (INPUT,YEARN); WRITELN (OUTPUT,YEARN); END; END. T21.2 <PROGRAM T21; TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOFILE : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN ( IOFILENUMBER : INTEGER );EXTERNAL; BEGIN IOFILE := 8; FILENAME := 'INPUTFILE0.DR'; OPEN (IOFILE) END. SEQ.7o; READ SEQUENTIAL SUBRUTINE ; CALL VIA..... ; ; RDSQ(IOCHANNEL:INTEGER; BUFFER:ARRAY OF CHAR OR INTEGER; ; NBYTES:INTEGER; VAR NBYTESREAD:INTEGER; ; VAR ERROR:INTEGER) ; CONTENTS OF DESCRIPTION ; AC3 ERROR BYTE ADDRESS IS ON THE STACK ; AC3-1 NBYTESREAD* BYTE ADDRESS IS ON THE STACK ; AC3-3 NBYTES INTEGER VARIABLE ON STACK ; AC3-4 BUFFER BYTE ADDRESS ON STACK ; AC3-5 IOCHANNEL INTEGER VALUE ON STACK .TITL SEQ .ENT ?RDSQ .EXTN XPRET .NREL ERROR=0 NBRED=ERROR-1 NBYTES=NBRED-1 BUFFER=NBYTES-1 IOׄCHAN=BUFFER-1 ?RDSQ: STA 3,USP ;SET UP USER STACK POINTER LDA 2,IOCHANNEL,3 ;GET CHANNEL NO LDA 1,NBYTES,3 ;GET NO OF BYTES TO READ IN LDA 0,BUFFER,3 ;GET BUFFER POINTER .SYSTM .RDS CPU JMP .+2 ;JUMP AROUND IF NOT OK ADC 2,2 ;GENERATE -1 OF NO ERRORS MOV 2,0 LDA 2,ERROR,3 ;GET ERROR BYTE ADDRESS MOVZR 2,2 ;MAKE IT AN ADDRESS STA 0,0,2 ;RETURN ERROR (IF ANY) TO PASCAL LDA 2,NBRED,3 ;GET BYTE ADDRESS OF NBRED MOVZR 2,2 ;MAKE IT AN ADDRESS STA 1,0,2 ;SEND NBRED TO PASCAL SUBO 1,1 ;WARN XPRET PROCEDURE RETURNS XPRET ; WRITE SEQUENTIAL SUBRUTINE ; CALL VIA..... ; ; WRSQ(IOCHANNEL:INTEGER; BUFFER:ARRAY OF CHAR OR INTEGER; ; NBYTES:INTEGER; VAR NBYTESWROTE:INTEGER; ; VAR ERROR:INTEGER) ; CONTENTS OF DESCRIPTION ; AC3 ERROR BYTE ADDRESS :IS ON THE STACK ; AC3-1 NBYTESWROTE BYTE ADDRESS IS ON THE STACK ; AC3-3 NBYTES INTEGER VARIABLE ON STACK ; AC3-4 BUFFER BYTE ADDRESS ON STACK ; AC3-5 IOCHANNEL INTEGER VALUE ON STACK .ENT ?WRSQ ERROR=0 NBWRO=ERROR-1 NBYTES=NBWRO-1 BUFFER=NBYTES-1 IOCHAN=BUFFER-1 ?WRSQ: STA 3,USP ;SET UP USER STACK POINTER LDA 2,IOCHANNEL,3 ;GET CHANNEL NO LDA 1,NBYTES,3 ;GET NO OF BYTES TO WRITE OUT LDA 0,BUFFER,3 ;GET BUFFER POINTER .SYSTM .WRS CPU JMP .+2 ;JUMP AROUND IF NOT OK ADC 2,2 ;GENERATE -1 OF NO ERRORS MOV 2,0 LDA 2,ERROR,3 ;GET ERROR BYTE ADDRESS MOVZR 2,2 ;MAKE IT AN ADDRESS STA 0,0,2 ;RETURN ERROR (IF ANY) TO PASCAL LDA 2,NBWRO,3 ;GET BYTE ADDRESS OF NBWRO MOVZR 2,2 ;MAKE IT AN ADDRESS STA 1,0,2 ;SEND NBWRO TO PASCAL SUBO 1,1-Ƅ ;WARN XPRET PROCEDURE RETURNS XPRET .END BYTE.02 ,{;PASCAL SUBROUTINES GET BYTE AND PUT BYTE ; ; CALL VIA PBYT(BYTE,BYTE POSITION,STRING) ; PBYT(VAR BYTE:INTEGER; POSITION:INTEGER;STRING:CHARS);EXTERNAL; ;OR PBYT(BYTE:CHAR;POSITION:INTEGER;STRING:CHARS);EXTERNAL; ; SWAP(VAR WORD;INTEGER);EXTERNAL; ; GBYTEx(VAR BYTE:INTEGER;POSITION:INTEGER; STRING:CHARS);EXTERNAL; ; WHERE CHARS IS ARRAY[1..N] OF CAHAR OR INTEGER .TITL BYTE .ENT ?SWAP,?PBYT,?GBYT .ENT PUTB,GETB .EXTD XPRET,RHB,LHB .NREL WORD=0 STRNG=0 POS=-1 BYTE=-2 ?SWAP: STA 3,USP ;RESTORE USP FOR NOW LDA 2,WORD,3 ;POINTER TO WORD MOVZR 2,2 ;MAKE ADDRESS AND SET CARRY IF RHBYTE LDA 0,0,2 ;GET WORD MOVS 0,0 STA 0,0,2 ;RETURN BYTE IN RHB TO PASCAL SUBO 1,1 ;PROCEDURE RETURNS TO PASCAL XPRET ?GBYTE: LDA 2,STRNG,3 ;POINTER TO STRING BEGINNING LDA 1,POS,3 ;VALUE OF BYTE POSTION TO BE GOTTEN ADD 1,2 ;MAKE POINTER TO BYTE POSITION JSR @.+1 GETB LDA 3,SP ;RESTORE STACK POINTER LDA 2,BYTE,3 ;GET POINTER TO BYTE IN PASCAL MOVZR 2,2 ;MAKE ADDRESS STA 0,0,2 ;RETURN BYTE TO PASCAL SUBO 1,1 XPRET ?PBYTE: LDA 2,BYTE,3 ;GET BYTE POINTER TO BYTE TO BE PUT MOVZR 2,2 ;GET BYTE ADDRESS IN AC2 LDA 0,0,2 ;BYTE NOW IN AC0 LDA 1,RHB ;GET RHB MASK AND 1,0 ;AND OUT LH BYTE LDA 2,STRNG,3 ;GET POINTER TO STRING START LDA 1,POS,3 ;GET, VALUE OF BYTE POSITION TO BE STUFFED ADD 1,2 ;POINTER TO BYTE IN AC2 JSR @.+1 PUTB SUBO 1,1 ;PROCEDURE RETURNING XPRET ; ROTINE TO WRITE A BYTE TO A GIVEN BYTE ADDRESS ; CONDITIONS ; CALL VIA ; JSR @+.1 ; PUTB ; ; ENTRY ; AC0 - BYTE TO BE WRITTEN IFN RH BYTE ; AC1 - UNDEFINED ; AC2 - BYTE POINTER WHERE TO PUT BYTE ; AC3 - RETURN TO THIS ADDRESS ; ; RETURN ; AC0UNDEFINED ; AC1 - UNDEFINED ; AC2 - UNDEFINED ; AC3 - UNDEFINED ; PUTB: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;RIGHT HAND BYTE ADDRES8BS MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SKIP IF LHB ;NOTE CARRY IS SET IF LHB MOVS 0,0,SKP ;SWAP BYTES IN WORD TO BE PUT ;AND SKIP NEXT INSTRUCTION MOVS 1,1 ;SWAP MASK IF LH BYTE LDA 3,0,2 ;LD AC3,WITH WORD TO RECEIVE BYTE AND 1,3 ;AND OUT OTHER BYTE ADD 0,3 ;ADD IN BYTE TO BE PUT STA 3,0,2 ;RESTORE UPDATED WORD LDA 3,USP JMP 1,3 ;RETURN TO CALLER +2 ; ROUTINE TO GET A BYTE ; CALL VIA ; JSR @.+1 ; GETB ; RETURNS TO HERE ; CONDITIONS ; ; ENTRY ; AC0 - UNDEFINED ; AC1 - UNDEdFFINED ; AC2 - BYTE POINTER TO BYTE LOCATION ; ; EXIT ; AC0 - VALUE OF BYTE IN RH BYTE (MASKED TO RHB) ; AC1 - UNDEFINED ; AC2 - UNDEFINED GETB: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;GET RHB MASK MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SET CA#RRY ;IF LHBYTE. SKIP IF LHBYTE MOVS 1,1 ;SWAP MASK BYTES TO MAKE LHB MASK LDA 0,0,2 ;GET WORD CONTAINING BYTE AND 1,0,SNC ;AND OUT OTHER BYTE AND SKIP IF LHBYTE MOVS 0,0 ;SWAP LHBYTE INTO RHBYTE LDA 3,USP JMP 1,3 ;RETURN TO CALLER +2 .END PRETTYPRIN.PX :TEST2.PA ꉋPROGRAM TEST(INPUT,OUTPUT); VAR I : INTEGER; X : REAL; BEGIN WRITELN( 'WELCOME TO PROG TEST2'); X := 1.1; I := 3; X := I*X; WRITELN( ' LINE 1',X : 6 : 2,I); I := TRUNC(X); X := I; WRITELN(' LINE 2',I,X : 6 : 2) END. GCHAR.PI JTPROCEDURE GCHAR( VAR CHARACTER : INTEGER); {GCHAR GETS ONS CHARACTER FROM THE SYSTEM CONSOLE} CONST DOTERTN = 3328; {15B7} DOTGCHAR = 3840; {.GCHAR} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN  MODE := SIMPLE; CALLNUM := DOTGCHAR; SYSCALL(REQUEST); IF ERROR THEN BEGIN MODE := SIMPLE; CALLNUM := DOTERTN; SYSCALL(REQUEST); END; CHARACTER := R0.INT; END; RELEASE(HEAP); END; {GCHAR} PL.rq PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL% OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VAIRSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF ALFA; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF Py-ACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER);~ BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITELN($CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN A BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A :=  Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : IN TEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT z: BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VjmAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN 8rBEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THQfEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5,L:3,A:5) END;{LIST CODE} PROCEDTURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSwYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYM = LPAREN THEN  BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETRSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERMQ(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYMU THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8,); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KINeD <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CO&NDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYSf DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF `SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATEMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM T+HEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END; IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; Rc WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4)p; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECL߽BEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET;C CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEG6 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 ,: BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])) END; 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-/1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]<=S[T+1]) END END ;{CASE} LOD : BEGIN T := T+1;S[T] := S[BASE(L)+A] END; STO : BEGIN S[BASE(L)+A] := S[T]; WRITELN((S[T]));T := T-1 END; CAL : BEGIN {GENERATE NEW BLOCK MARK} S[T+1] := BASE(L);S[T+2] := B; S[T+3] := P; B := T+1; P := A END; INT : T := T+A; JMP : P := A; JPC : BEGIN IF S[T] = 0 THEN P := A;T := T-1; END END {WITH,CASE} UNTIL P = 0; WRITE('END OF PL/0'); ENID {INTERPRET}; BEGIN {MAIN PROGRAM} FOR CH := 'A' TO ';' DO SSYM[CH] := NUL; WORD[1] := 'BEGIN '; WORD[2] := 'CALL '; WORD[3] := 'CONST '; WORD[4] := 'DO '; WORD[5] := 'END '; WORD[6] := 'IF '; WORD[7] := 'ODD '; WOhRD[8] := 'PROCEDURE '; WORD[9] := 'THEN '; WORD[10]:= 'VAR '; WORD[11]:= 'WHILE '; WSYM[1] := BEGINSYM; WSYM[2] := CALLSYM; WSYM[3] := CONSTSYM; WSYM[4] := DOSYM; WSYM[5] := ENDSYM; WSYM[6] := IFSYM; WSYM[7] := ODDSYM; WSYM[8] := PROCSYM; WSYM[9] := THENSYM; WSYM[10] := VARSYM; WSYM[11] := WHILESYM; SSYM['+'] := PLUS; SSYM['-'] := MINUS; SSYM['*'] := TIMES; SSYM['/'] := SLASH; SSYM['('] := LPAREN; SSYM[')'] := RPAREN; SSYM['='] := EQL; SSYM[','] := COMMA; SSYM['.'] := PERIOD; SSYM['!'] := NEQp; SSYM['<'] := LSS; SSYM['>'] := GTR; SSYM['"'] := LEQ; SSYM['#'] := GEQ; SSYM[';'] := SEMICOLN; MNEMONIC[LIT] := 'LIT '; MNEMONIC[OPR] := 'OPR '; MNEMONIC[LOD] := 'LOD ';MNEMONIC[STO] := 'STO '; MNEMONIC[CAL] := 'CAL '; MNEMONIC[INT] := 'INT '; MNEjMONIC[JMP] := 'JMP '; MNEMONIC[JPC] := 'JPC '; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD8]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIERs TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,OD[ZDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OFR{ SYMBOL;  FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOGD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} #d ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF SYMBOL; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCEMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; I PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IFe ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := oK+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PRO5sCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1*) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INgDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BAnEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAMEr <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VARb I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5;L:3;A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR AbDDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(IDo); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEnN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYN = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22)  END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERRM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS])o; IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,(GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I).KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = NFBECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELfSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END;  IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(F\SYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTANTDDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE E4RROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM;  IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMIC?OLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTIOQN; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1H: : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])); 8 : BEGIN T := T-1; .S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-18Q;S[T] := ORD(S[T]=] := GTR; SSYM["] := LEQ; SSYM[#] := GEQ; SSYM[;] := SEMICOLN; MNEMONIC[LIT] := 'LIT'; MNEMONIC[OPR] := 'OPR'; MNEMONIC[LOD] := 'LOD';M3NEMONIC[STO] := 'STO'; MNEMONIC[CAL] := 'CAL'; MNEMONIC[INT] := 'INT'; MNEMONIC[JMP] := 'JMP'; MNEMONIC[JPC] := 'JPC'; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. T4.) %lPROGRAM T4 (INPUT,OUTPUT); TYPE YEAR = 1800..2000; VAR YEARN : YEAR; BEGIN REPEAT READ (INPUT,YEARN); WRITELN (OUTPUT,YEARN) UNTIL EOF(INPUT); END. T31.@$(* FIX FLOT TESTER *) PROGRAM T31 (INPUT,OUTPUT); VAR I : INTEGER; X : REAL; FUNCTION FLOT ( I : INTEGER ):REAL;EXTERNAL; FUNCTION FIX ( X : REAL ):INTEGER;EXTERNAL; BEGIN REPEAT BEGIN WRITELN(OUTPUT,' ENTER X '); READLN (INPUT,X); I := FIX (X); 0 WRITELN(OUTPUT,' I=',I); END UNTIL I=0; END. TEST.% PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STR0ING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = i ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR CH : CHAR; PDATAFILE,PCONSOLE,PINDEX,PTREE : BOOLEAN; ROOT : WORDREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; LINE : BIGSTR;f` SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN : INTEGER; {INPUT DATA FILE} DISKOUT : TEXT ; {OUTPUT PASCAL FILE} FIELDNUMBER : INTEGER; {$WI GCHN.PI} {$I OPEN.BU} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} {$I GETINTEGER.BU} {$I GETFIELDINT.BU} {$I GETREAL.BU} {$I REALFIELD.BU} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF;Y BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTRECORDS(W : WORD); VAR X : ITEMREF; BEvTGIN X := W.FIRST; REPEAT BEGIN SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); X := X^.NEXT; END; UNTIL X = NIL; @ END; {PRINT IN ORDER} PROCEDURE PRINTINORDER(W : WORDREF); BEGIN IF W<> NIL THEN BEGIN PRINTINORDER(W^.LEFT); PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); END; END; PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN IF PCONSOLE THEN WRIT7E(' ',W.KEY : C1); WRITE(DISKOUT,' ',W.KEY : C1); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN L := 0; IF PCONSOLE THEN BEGIN WRITELN;WRITE(' ':C1+1); END; WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); END; L := L+1; IFo PCONSOLE THEN WRITE(' ',X^.LNO :C3); WRITE(DISKOUT,X^.LNO : C3); X := X^.NEXT; UNTIL X = NIL ; IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; WRITELN(DISKOUT); WRITELN(DISKOUT) END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BE.GIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; AMOUNT,CHECK : REAL; BEGIN AMOUNT := 0.0; IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); CHECK := REALFIELD(LINE,3); AMOUNT := AMOUNT+CHECK; X := X^.NEXT END UNTIL X = NIL; IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); END; {OF PRINT ALL LINES WITH KEY W.KEY} FUNCTION QUESTION : (BOOLEAN; BEGIN REPEAT WRITE(' ANSWER Y OR N '); READLN(CH) UNTIL (CH = 'Y') OR (CH = 'N'); QUESTION := CH = 'Y'; END; BEGIN OPENFILES; WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); PCONSOLE := QUESTION; WRITELN(' WANT DATA BASE FILE PRINTED?'); PDATAFILE := QUESTION; WRITELN(' WANT INDEX PRINTED? '); PINDEX := QUESTION; WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); PINDEX := QUESTION; WRITE(' SORT ON FILEN NO. 2,3,4,5? '); READLN(FIELDNUMBER); ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1; IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); IF PDATAFILE THEN WRITE(DISKOUT,' ',N : C3,' ',LINE); CASE LINE[1] OF 'C','E','W' : BEGIN ID := GETFIELD INT(LINE,FIELDNUMBER); SEARCH(ROOT); END; END; END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} IF PTREE THEN PRINTTREE(ROOT); WRITELN(' MEMORY LEFT = ',MEMAVAIL); IF PINDEX THEN PRINTINORDER(ROOT); WHILE NOT EOF(INPUT) DO BEGIN WRITE(' SEARCH p_KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN BEGIN PRINTWORD(WF^); PRINTLINES(WF^); END; END; END. CDC6000.PX T5.) *3KPROGRAM T5 (INPUT,OUTPUT); TYPE YEAR = 1800..2000; VAR YEARN : YEAR; BEGIN REPEAT READ (INPUT,YEARN); IF NOT EOF(INPUT) THEN WRITELN (OUTPUT,YEARN) UNTIL EOF(INPUT) ; END. OUTPUT.$P.T41.'&.ȅPROGRAM T41 (INPUT,OUTPUT); TYPE COORDINATES = RECORD X,Y,Z : INTEGER END; TESTS = (LESSTHAN,GREATERTHAN,EQUALTO,LESSEQUAL, GREATEREQUAL,NOTEQUAL); EQUALITYTEST = SET OF (TESTS); VAR XL,XG,YL,YG,ZL,ZG ,T1,T2 : BOOLEAN; COORD1,COORD2,DELTA : COORDINATES; TESTFOR : TESTS; DISTANCE : INTEGER;(*DISTANCE BETWEEN COORDINATES*) FUNCTION COMPARECOORD(COORD1 : COORDINATES; TESTFOR : TESTS; COORD2 : COORDINATES ; DISTANCE : INTEGER) : BOOLEAN; FUNCTION TESTEQUAL : BOOLEAN; BEGIN TESTEQUAL := NOT(XLN" OR XG OR YL OR YG OR ZL OR ZG) END; FUNCTION TESTLESS : BOOLEAN; BEGIN TESTLESS := XL OR NOT(XL OR XG)AND(YL OR NOT(YL OR YG)AND ZL) END; FUNCTION TESTGREATER : BOOLEAN; BEGIN TESTGREATER := XG OR NOT(XL OR XG)AND(YG OR NOT(YL OR YG)AND ZG) END; BEGINp2 DELTA.X := COORD1.X-COORD2.X; DELTA.Y := COORD1.Y-COORD2.Y; DELTA.Z := COORD1.Z-COORD2.Z; WITH DELTA DO DISTANCE := X*X + Y*Y +Z*Z; WITH DELTA DO BEGIN XL := X <0; XG := X >0; YL := Y <0; YG := Y >0; ZL := Z <0; ZG := Z >0; END; (*WITH*) IF XL THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F'); IF XG THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F');WRITELN; IF YL THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F'); IF YG THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F');WRITELN; IF ZL THEN WR0;ITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F'); IF ZG THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F');WRITELN; CASE TESTLESS OF TRUE : WRITELN(OUTPUT,' LESS TR','UE'); FALSE : WRITELN(OUTPUT,' LESS FA','LSE') END; CASE TESTGREATER OF TRUE : WRITELN(4OUTPUT,' GREATER',' TRUE'); FALSE : WRITELN(OUTPUT,' GREATER',' FALSE') END; CASE TESTEQUAL OF TRUE : WRITELN(OUTPUT,' EQUAL'); FALSE : WRITELN(OUTPUT,' NOT EQUAL') END; (*CASE*) END; BEGIN (*COMPARECOORD*) REPEAT WRITELN(OUTPUT,' ENTER XY>ZS'); WITH COORD1 DO BEGIN READLN(INPUT,X,Y,Z); WRITELN(OUTPUT,X,Y,Z) END; (*WITH*) WITH COORD2 DO BEGIN READLN(INPUT,X,Y,Z); WRITELN(OUTPUT,X,Y,Z) END; (*WITH*) WRITELN(' ENTER TEST'); WRITELN(' 1 LESS'); WRITELN(' 2 GREATER'); WRIT$ELN(' 3 EQUAL'); WRITELN(' 4 GREATERQ'); WRITELN(' 5 LESSEQ'); WRITELN(' 6 NOTEQ'); READ(DISTANCE); CASE DISTANCE OF 1: TESTFOR := LESSTHAN; 2: TESTFOR := GREATERTHAN; 3: TESTFOR := EQUALTO; 4: TESTFOR := GREATEREQUAL; 5: TESTFOR := LESSEQUAL; '6: TESTFOR := NOTEQUAL END; (*CASE*) CASE COMPARECOORD(COORD1,TESTFOR,COORD2,DISTANCE) OF LESSTHAN: WRITELN(' LESSTHAN'); GREATERTHAN: WRITELN(' GREATER'); EQUALTO: WRITELN(' EQUALTO'); LESSEQUAL: WRITELN(' LESSEQ'); GREATEREQUAL: WRITELN(' GREATEQo'); NOTEQUAL: WRITELN(' NOTEQUAL') END; (*CASE*) WRITELN(OUTPUT,' DIST=',DISTANCE); UNTIL EOF(INPUT) END. 1978.P9.ұNODES.01 MPROGRAM NODES (INPUT,OUTPUT); TYPE NODES = RECORD X, Y : REAL; LINKPOS : INTEGER END; LINKS = RECORD FROMNODE, TONODE, ATTRIBUTES :INTEGER END; VAR NODE : ARRAY [1..20] OF NODES; LINK : ARRAY [1..50] OF LINKS; NEWLINK : LINKS; NEWNODE s: NODES; DELETEDLINKNO, DELETEDNODENO, NUMBOFLINKS, NUMBOFNODES : INTEGER; PROCEDURE ADDNODE (NEWNODE:NODES); BEGIN NUMBOFNODES := NUMBOFNODES+1; NODE[NUMBOFNODES] := NEWNODE END; PROCEDURE DELETENODE (DELETEDNODENO:INTEGER); VAR I : INTEGER; c3 BEGIN FOR I := DELETEDNODENO TO NUMBOFNODES DO NODE[I] := NODE[I+1]; NUMBOFNODES := NUMBOFNODES-1 END; PROCEDURE EXPANDLINK (SPACE :INTEGER); VAR I : INTEGER; BEGIN FOR I := NUMBOFLINKS DOWNTO NODE[ NEWLINK.FROMNODE+1].LINKPOS DO LINK[I+1] := 4LINK[I]; WHILE (( LINK[I-1].TONODE > NEWLINK.TONODE ) AND (LINK[I-1].ATTRIBUTES > NEWLINK.ATTRIBUTES ) AND (LINK[I-1].FROMNODE = NEWLINK.FROMNODE )) DO BEGIN I := I-1; LINK[I+1] := LINK[I] END; SPACE := I END; PROCEDURE ADDLʎINK (NEWLINK : LINKS); VAR SPACE : INTEGER; BEGIN EXPANDLINK (SPACE); LINK[SPACE] := NEWLINK END; PROCEDURE DELETELINK( DELETEDLINKNO : INTEGER); VAR I : INTEGER; BEGIN FOR I := DELETEDLINKNO TO NUMBOFLINKS DO LINK[I] := LINK[I+1]; NUMBOFLINKSc := NUMBOFLINKS-1 END; BEGIN NODE[1].X := 2; NODE[2].X :=4; IF NODE[1] = NODE[2] THEN WRITELN(OUTPUT,' NEW=DELETED') ELSE WRITELN(OUTPUT,' NEW<>DELETED'); NODE[1] := NODE[2]; WRITELN(OUTPUT,' ',NODE[1].X,NODE[1].Y) END. CROSSREF.02w`PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TRACE = FALSE; (*SET FOR TRACE TYPE WRITELN='S*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; TEXT = FILE OF CHAR; WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; COMPARATIWVE = (LESS,GREATER,EQUAL); VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : ALFA; F : TEXT; A,B : ARRAY [1..C1] OF CHAR; FUNCTION KOMPAR ( A : ALFA; B : ALFA; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE; VAR I : INTEGER; T : COMPARATIVE; BEGIN T := EQUAL; I := NSTART; WHILE ( ( T = EQUAL ) AND ( I <= NEND ) ) DO BEGIN IF TRACE THEN WRITELN(' KOMPAR ',A[I],' ',B[I]) ; BEGIN IF A[I] > B[I] THEN T := GREATER ELSE IF A[I] < B[I] THEN T := LESS EyND; IF TRACE THEN BEGIN CASE T OF EQUAL : WRITELN(' KOMP ='); LESS : WRITELN(' KOMP <'); GREATER : WRITELN(' KOMP >'); END END; I := I+1 END; KOMPAR := T END; PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF;J : INTEGER; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN (* KEY := ID*) FOR J := 1 TO C1 DO BEGIN KEY[J] := A[J];IF TRACE THEN WRITELN(' KEY,A[J]',KEY[J],' ',A[J]) END; LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X  END; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE CASE KOMPAR (A,W^.KEY,1,C1) OF LESS : BEGIN IF TRACE THEN WRITELN(' LESS');SEARCH (W^.LEFT) END; GREATER : BEGIN IF TRACE THEN WRITELN(' GREATER'); SEARCH (W^.RIGHT) END; EQUAL : BEGIN IF TgDRACE THEN WRITELN(' EQUAL'); NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END (* IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LASdT^.NEXT := X;W^.LAST := X END *) END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NnIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A','B','C','D','E','F','G','H','I','J'Ц,'K' ,'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y' ,'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; (*PACK(A,1,ID);*)SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE" OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. TEST1. PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; NUMBERS = SET OF '0'..'9'; VAR CH : CHAR; DIGITS : NUMBERS; STR : ALPHANUMERIC; I : INTEGER; R : REAL; PROCEDURE NUMB( STR : ALPHANUMERIC); VAR CH : CHAR; I,LEN,CKNUMBER : INTEGER; BEGIN CKNUMBER := 0; I :=1; LEN := LENGTH(STR); WHILE I <= LEN DO BEGIN CH := STR[I]; IF CH IN DIGITS THEN BEGIN CKNUMBER := CKNUMBER*10+ORD(CH)-48; WRITELN(OUTPUT,I,' ',CH,' ',ORD(CH),' ',CH,' ',CKNUMBER); END; I := I+1; END; END; t BEGIN DIGITS := ['0'..'9']; REPEAT BEGIN READLN(STR); WRITELN(STR); NUMB(STR); END; UNTIL EOF(INPUT); END. R.PAPROGRAM TEST (INPUT,OUTPUT); VAR R : REAL; PROCEDURE REALPRINT (R : REAL); VAR I,J,DIGIT : INTEGER; R1,R2 : REAL; STR : STRING[10]; PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-TRUNC(R2)*10); R1 := R2; { WRITELN(' GETDIGIT,DIGIT=',DIGIT);} END; {GETDIGIT} BEGIN {do decimal part first} STR :=' '; R1 := (R-TRUNC(R))*100 + 0.3; J :=0; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[10-J] := CHR(DIGIT+48); J :=J+1; { WRITELN(' CHR(DIGIT):=',CHR(DIGIT+48));} END; nSTR[10-J] :='.'; J := J+1; {do integer part} R1 :=R; WHILE ( (R1 > 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITELN(' STRING=',STR); END;o{OF REALPRINT} BEGIN REPEAT BEGIN WRITELN(' ENTER A REAL NUMBER'); READ(R); REALPRINT(R); END; UNTIL EOF(INPUT); END. 1978EMP.f (gE 496 1177.09 E 495 1076.21 E 494 392.55 E 493 456.63 E 492 497.88 E 491 574.03 E 490 890.20 E 489 842.19 E 488 788.81 E 487 1787.44 E 486 389.02 E 484 305.68 E 482 626.76 E 481 554.04 E 480 1024.14 E 479 927.20 E 478 1092.27 E 510 304.73 E 509 432.47 E 508 575.53 E 507 502.81 E 506 842.80 E 505 1033.57 E 504 254.00 W 503 702.05 W 502 4521.60 W 501 387.26 W 500 372.80 W 499 561.91 W 498 497.97 E 497 926.48 E 519 84.76 E 520 483.00 E 511 830.88 E 537 464.55 E 531 356.37 E 529 589.96 E 530 436.65 E 528 393.86* E 527 888.88 E 526 1034.18 E 525 991.35 E 524 733.00 W 522 182.00 W 523 1549.00 W 521 2210.00 W 518 3391.80 W 517 277.10 E 516 259.01 E 515 439.51 E 514 398.75 E 513 1113.18 E 512 893.06 W 540 4601.70 E 532 1062.02 E 533 1122.84 E 534 999.70 E 535 538.32 E 536 643.20 E 538 386.34 E 539 105.03 W 541 1703.92 W 544 5.00 W 545 1345.38 E 546 924.04 E 547 982.73 E 548 873.83 E 549 473.57 E 550 542.91 E 551 440.27 E 553 299.63 E 552 185.93 E 568 343.38 E 569 304.73 E 567 596.15 E 566 465.02 E 565 948.24 E 564 985^.99 E 563 991.80 E 557 473.57 E 558 601.00 E 560 265.01 E 555 991.16 E 554 927.77 E 556 852.47 W 562 4255.04 E 561 297.08 E 559 688.29 E 570 1050.61 E 571 1069.11 E 572 1019.07 E 573 566.88 E 574 630.97 E 575 269.88 E 576 472.09 E 577 346.43 W 578 4412.14 W 579 483.00 W 580 2210.00 W 581 38.36 E 582 1046.89 E 583 1151.39 E 584 996.51 E 585 627.63 E 586 732.19 E 587 537.45 E 588 513.44 E 589 374.42 E 590 110.15 E 591 979.37 E 592 1426.28 E 594 531.30 E 596 500.91 W 599 5659.58 E 593 960.21 E 595 645.08 E 5977 430.98 E 598 343.31 W 600 1863.74 W 602 850.20 E 603 796.26 E 604 802.32 E 605 379.26 E 606 542.91 E 607 283.06 E 608 180.93 E 609 282.18 E 615 369.00 W 617 2861.14 E 625 2210.00 E 627 1209.08 E 628 1158.89 E 629 552.62 E 630 596.12 E 632 359.96 W 634 800Q.03 E 635 921.48 E 636 1050.72 E 637 533.66 E 638 610.74 E 639 361.79 E 640 201.10 E 645 346.92 E 610 325.46 E 611 1020.87 E 612 922.47 E 613 505.84 E 614 595.69 E 616 258.02 E 618 1053.55 E 619 845.14 E 620 420.35 E 621 548.51 E 622 293.42 E 623 339.16 E 624 374.42 W 626 483.00 E 631 142.22 W 633 2792.12 E 660 484.10 W 662 2276.24 E 650 981.35 E 651 992.28 E 652 327.45 E 653 384.95 E 641 1081.13 E 642 1042.43 E 643 490.20 E 644 516.116 E 646 326.75 W 647 2424.72 W 648 393.57 W 649 251.13 DATA.01srB 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 0 0 C 2338 6.00 0 0 C 2345 53.35 0 0 C 2347 38.00 0 0 C 2348 50.00 24 1 C 2356 264.05 0 0 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 1 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C i2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 2 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 ľDM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 0 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65u 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.?20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.0+0 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18e 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 k10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 11 C 2503 89.37 8 11 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.004 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 26 11 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 0 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106/.32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 CW 2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 256#8 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 1D09.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2897 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 17 20 C 2621 368 23 28 C 2622 52.30 5 20 C 262j3 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538e C 2638 1200 21 21 C 2639 1000 21 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 I205.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 16 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 22 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35q 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 e23 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 24 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 C 2699 110.25 1 25 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 635.69 27 26 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 16 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 392B0.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5J 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 CA[ 2762 1510 21 29 TST. Q 9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1 T6.)+PROGRAM T6 (INPUT,OUTPUT); TYPE COLORS = (BLUE,GREEN,PURPLE,RED,BLACK); VAR INCOLOR : COLORS; COLORTYPE : SET OF COLORS; BEGIN READLN (INPUT,COLORTYPE); IF COLORTYPE IN COLORS THEN BEGIN CASE COLORTYPE OF BLUE : WRITELN(OUTPUT,'BLUE'); GREEN,PUR~PLE : WRITELN(OUTPUT,'GREEN','PURPLE'); RED,BLACK : WRITELN(OUTPUT,'RED',' BLACK'); END; ELSE WRITELN (OUTPUT,"NOT IN ST"); END; END. T20.1wPROGRAM T20(INPUT,OUTPUT); VAR CHR : CHAR; BEGIN REPEAT READLN(INPUT,CHR) UNTIL (EOLN(INPUT) OR EOF(INPUT)) END. PRETTY.PX CBOOK.PX CBOOK  Copyright (C) 1981 Rational Data Systems  rP$ض$0öÍ,`$ض$0B ?zჽ ݞ$fݕá-ݮġáۛ.ȡáخC ڪc=<:77ȡ` -á =7ȡV<<:: 0򍊃0::0888  D./.á<8 ,á=:: ')+-9.٪c6877ȡ5  -á 86 067ȡ8 66 P5 تc687867˄_868?88868?887786áڢ8R5 ֥ͮ ERRORإ$<<=><@@>DD>HH>֥ͮ CK ا= ֥ͥ>֥ͮ3֥ͥ@~ <><@>֥ͮ BL ֥3`إ3إ3֥ͥ@T Uu<><@@>BB>FF>֥ͮ DP إ3إ3֥ͥ>֥ͥ@p <><@@>BB>֥ͮ CM إ3إ3֥ͥ>֥ͥ@d <><@@>DD>֥ͮ DM إ3֥ͥ>֥ͮ3֥ͥ@h <<=֥ͮ CC ا= ,<<=><@@>DD>HH>֥ͮ EM ا= ֥ͥ>֥ͮ3֥ͥ@~<>2N<@@>DD>HH>֥ͮ WH إ3֥ͥ>֥ͮ3֥ͥ@tتcJ áJCáJMáJ áJMáJm áJZ áJG áJ4BW,Af4  "$&(*E82 ֦ INPUT FILE NAME? `֥֥ޮc֥K֥K֦ OUTPUT FILE NAME? `֥֥ޮc֥֥֥ͥOLOGFILE֥O֦ENTER START AND END CATEoGORY`֥֥ޮ إ ֦ENTER START AND END PAGE`֥֥ޮ إ B3 @DBHFJ֥ͮ KEY TO TRANSACTION TYSPES֥ͮ. C CHECK CC CANCELLED CHECK֥ͮ) CM CREDIT MEMO DM DEBIT MEMO֥ͮ- DP DEPOSIT BL FORCED BALANCE֥ͮ/ EM EMPLOYEE CK WH WITHOLDING CHECK_ ֥֥ͮ: TYPE CHECK DEBIT CREDIT BALANCEXƂ`ƂƂ`OUTPUTƁƂƁަINPUTKƀKINFILEƀƁ ƀͦOUTFILEƁOƁƁOLOGFILEƁƂ`֥ȡʂ㫁ٹЫ٥ڧ䥁ڧȡʂ䫁عЫ֥֥ͮCATEGORYʂ䧁 ʂFIELDʂ䧁 ʂ֥KK ֥Kʂcʂ֥Oʂ֥٥á^ҧáU֥J- A< ;D7 2 - (#41+2*"֥֥֥֥ͮ TOTALS ֥ͥD֥ͥB֥ͥ@֥֥ͮ TOTAL CHECKS ֥ͥH֥֥ͮ TOTAL DEPOSITS֥ͥFʂá֦END1`ʂʂá֦END2`ʂƂ`ƁKƀƁO;/_4Rxh l J t   *REALPRINT.PTa{10/30/80 THIS PROCEDURE PRINTS A REAL NUMBER NO LARGER THAN 32767.00 IN A 10 FIELD STRING WITH 2 DECIMAL PLACES AND A COMMA IF REQUIRED} PROCEDURE REALPRINT (R : REAL); VAR I,J,DIGIT : INTEGER; R1,R2 : REAL; STR : STRING[10]; PROCEDURE GETDIGIT; bBEGIN R2 := R1/10; DIGIT := TRUNC(R1-TRUNC(R2)*10); R1 := R2; WRITELN(' GETDIGIT,DIGIT=',DIGIT); END; {GETDIGIT} BEGIN {do decimal part first} STR :=' '; R1 := (R-TRUNC(R))*100 + 0.3; J :=0; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[10-J] := CHR(DIGIT+48); J :=J+1; WRITELN(' CHR(DIGIT):=',CHR(DIGIT+48)); END; STR[10-J] :='.'; J := J+1; {do integer part} R1 :=R; WHILE ( (R1 > 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1;] END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITE(STR); END;{OF REALPRINT} TEST1.PA.PROGRAM TEST1(INPUT,OUTPUT); VAR CH : CHAR; BEGIN REPEAT BEGIN READ(CH); WRITELN(CH,ORD(CH),ORD(CH)-48); END UNTIL EOF(INPUT) END. T30.!&kPROGRAM T27(INPUT,OUTPUT); TYPE ALPHA = ARRAY [1..35] OF CHAR; VAR IOCH,BYTES,ERROR : INTEGER ; BUFFER : ALPHA; FILEEND : BOOLEAN; PROCEDURE OPEN ( VAR FILENO : INTEGER ; FILENAME : ALPHA ; VAR ERRORNUMBER : INTEGER );EXTERNAL; FUNCTION ENDL ( IOCHANNEL [ : INTEGER ):BOOLEAN;EXTERNAL; FUNCTION ENDF ( IOCHANNEL : INTEGER ) : BOOLEAN;EXTERNAL; PROCEDURE RDLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : INTEGER ; VAR ERRORNUM : INTEGER );EXTERNAL; PROCEDURE WRLI ( IOCHANNEL : INTEGER ; BUFFER : QALPHA ; VAR NBYTESWROTE : INTEGER ; VAR ERRORNUMBER : INTEGER );EXTERNAL; BEGIN (* OPEN (IOCH,'FOBAR',ERROR);*) REPEAT BEGIN RDLI (1,BUFFER,BYTES,ERROR); IF ERROR <> 6 THEN BEGIN WRLI(2,BUFFER,BYTES,ERROR); END ELSE END; UNTIL ENDF(IOCH) = TRUE END. T7.. PROGRAM T7 (INPUT,OUTPUT); TYPE PRIMARY = (BLUE,RED,YELLOW); COLOR = SET OF PRIMARY; VAR CH : CHAR; I : INTEGER; STRING : ARRAY[1..8] OF CHAR; HUE : COLOR; BEGIN I := 1; WHILE I<=8 DO BEGIN READ (INPUT,CH); STRING[I] := CH; WRITELN (OUTPUT,' 9',I); I :=I+1; END; WRITELN(OUTPUT,' ',STRING); END. TEST.LS )z FIELDNUMBER) ) DO 387 0 12 28 1 BEGIN 388 0 12 28 1 389 0 12 28 1 {LEADING BLANKS AND TABS} 390 0 12 28 1 WHILE ( (I FIELDNUMBER) ) DO 481 0 14 28 1 BEGIN 482 0 14 28 1 483 0 14 28 1 {LEADING BLANKS AND TABS} 484 0 14 28 1 WHILE ( (I<LEN) AND NOT (STR[I] IN ['!'..'}']) ) DO I := I+1; 485 0 14 72 1 486 0 14 72 1 {FIELD J} 487 0 14 72 1 WHILE ( (I< LEN) AND (STR[I]IN ['!'..'}']) ) DO I := I+1; 488 0 14 115 1 J := J+1; 489 0 14 121 1 ! 490 0 14 121 0 END; 491 0 14 123 0 492 0 14 123 0 IF I = LEN THEN REALFIELD := 0 ELSE 493 0 14 138 1 BEGIN 494 0 14 138 1 REALFIELD := GETREAL(STR,I); 495 0 14 151 0 END;Z 496 0 14 151 0 END; 497 0 14 170 0 {$I REALFIELD.BU} 498 0 14 170 0 499 0 14 170 0 500 0 15 1 PROCEDURE SEARCH (VAR W1:WORDREF); 501 0 15 2 VAR W:WORDREF;X:ITEMREF; 502 0 15 0 0  BEGIN W := W1; 503 0 15 4 0 IF W =NIL THEN 504 0 15 9 1 BEGIN NEW(W);NEW(X); 505 0 15 19 1 WITH W^ DO 506 0 15 22 2 BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; 507 0 15 35 2 FIRST := X;LAST := X 508 0 15 43 1 END; 509 0 15 45 1 X^.LNO := N;X^.NEXT := NIL; W1 :=W; 510 0 15 61 1 X^.POS := PRESPOS; {SAVE FILE POSITION} 511 0 15 68 0 END ELSE 512 0 15 70 1 IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE 513 0 15 84 2 IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE 514 0 15 98 3 BEGIN NEW(X);X^.LШNO := N;X^.NEXT := NIL; 515 0 15 116 3 X^.POS := PRESPOS; {SAVE FILE POSITION} 516 0 15 123 3 W^.LAST^.NEXT := X;W^.LAST := X 517 0 15 132 3 END 518 0 15 134 0 END; (*SEARCH*)) 519 0 15 146 0 520 0 16 1 PROCEDURE PRINTRECORDS(W : WORD); 521 0 16 7 522 0 16 7 VAR X : ITEMREF; 523 0 16 8 524 0 16 0 0 BEGIN 525 0 16 0 0 X :=  W.9.FIRST; 526 0 16 8 0 REPEAT 527 0 16 8 1 BEGIN 528 0 16 8 1 SPOS(DISKIN,X^.POS); 529 0 16 16 1 READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); 530 0 16 29 1 IF PCONSOLE, THEN WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); 531 0 16 75 1 WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); 532 0 16 116 1 X := X^.NEXT; 533 0 16 120 1 END; 534 0 16 120 0 UNTS IL X = NIL; 535 0 16 125 0 536 0 16 125 0 END; {PRINT IN ORDER} 537 0 16 140 0 538 0 17 1 PROCEDURE PRINTINORDER(W : WORDREF); 539 0 17 0 0 BEGIN IF W<> NIL THEN 540 0 17 5 1 3 BEGIN PRINTINORDER(W^.LEFT); 541 0 17 10 1 PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); 542 0 17 19 0 END; 543 0 17 19 0 END; 544 0 17 32 0 545 0 18 1  PROCEDURE PRINTWORD(W : WORD); 546 0 18 7 VAR L:INTEGER;X:ITEMREF; 547 0 18 0 0 BEGIN 548 0 18 0 0 IF PCONSOLE THEN WRITE(' ',W.KEY : C1); 549 0 18 26 0 WRITE(DISKOUT,' ',W.KEY : C1); 550 0 18 42 0 X := W.FIRST;L := 0; 551 0 18 48 1 REPEAT IF L = C2 THEN 552 0 18 53 2 BEGIN 553 0 18 53 2  L := 0; 554 0 18 %56 3 IF PCONSOLE THEN BEGIN 555 0 18 59 3 WRITELN;WRITE(' ':C1+1); 556 0 18 78 2 END; 557 0 18 78 2 1G WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); 558 0 18 94 1 END; 559 0 18 94 1 L := L+1; 560 0 18 99 1 IF PCONSOLE THEN WRITE(' ',X^.LNO :C3); 561 0 18 121e 1 WRITE(DISKOUT,X^.LNO : C3); 562 0 18 131 1 X := X^.NEXT; 563 0 18 135 0 UNTIL X = NIL ; 564 0 18 140 0 IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; 565 0 1lL8 155 0 WRITELN(DISKOUT); 566 0 18 160 0 WRITELN(DISKOUT) 567 0 18 165 0 END; 568 0 18 180 0 (*END OF PRINTWORD*) 569 0 18 180 0 570 0 19 1 PROCEDURE8 PRINTTREE(W : WORDREF); 571 0 19 0 0 BEGIN 572 0 19 0 0 IF W <> NIL THEN 573 0 19 5 1 BEGIN PRINTTREE(W^.LEFT); 574 0 19 10 1 PRINTWORD(W^);PRINTTREE(W^.RIGHT) 575 0 19 17  1 END 576 0 19 19 0 END; 577 0 19 32 0 (*END OF PRINTTREE*) 578 0 19 32 0 579 0 20 1 PROCEDURE FIND(W : WORDREF); 580 0 20 2 581 0 20 0 0 BEGIN IF W = NIL THEN 582 0c 20 5 0 BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE 583 0 20 47 1 IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE 584 0 20 60 2 IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE 585 0 20 73 2 J {FOUND MATCH} 586 0 20 73 3 WF := W 587 0 20 73 0 END; {FIND} 588 0 20 88 0 589 0 20 88 0 590 0 20 88 0 591 0 21 1 PROCEDURE PRINTLINES(W : WORD); 592 0 21 7 59|`3 0 21 7 VAR L : INTEGER; X : ITEMREF; 594 0 21 9 AMOUNT,CHECK : REAL; 595 0 21 13 596 0 21 0 0 BEGIN 597 0 21 0 0 AMOUNT := 0.0; 598 0 21 16 0 g IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); 599 0 21 55 0 WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); 600 0 21 89 0  X := W.FIRST;L := 0; 601 0 21 95 0 602 0 21 95 1 A REPEAT BEGIN 603 0 21 95 1 L := L+1; 604 0 21 100 1 SPOS(DISKIN,X^.POS); 605 0 21 108 1 READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); 606 0 21 121 1 *= IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); 607 0 21 161 1 WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); 608 0 21 196 1 609 0 21 196 1 CHECK := REALFIELD(LINE,3); 610 0 21 208  1 AMOUNT := AMOUNT+CHECK; 611 0 21 221 1 X := X^.NEXT 612 0 21 222 1 END 613 0 21 225 0 UNTIL X = NIL; 614 0 21 230 0 IF PCONSOLE THEN WRITELN(' AMOUNTk = ',AMOUNT : 10); 615 0 21 272 0 WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); 616 0 21 309 0 END; {OF PRINT ALL LINES WITH KEY W.KEY} 617 0 21 324 0 618 0 22 1 FUNCTION QUESTION : BOOLEAN; 619 0 22 2 m 620 0 22 0 0 BEGIN 621 0 22 0 0 REPEAT 622 0 22 0 1 WRITE(' ANSWER Y OR N '); 623 0 22 27 1 READLN(CH) 624 0 22 46 0 UNTIL (CH = 'Y') OR (CH = 'N'); 625 0 22 55 0 QUESTION := CH = 'Y'; 626 0 22 60 0 END; 627 0 22 74 0 628 0 22 74 0 629 0 1 0 0 BEGIN  OPENFILES; 630 0 1 93 0 WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); 631 0 1 142 0 PCONSOLE := QUESTION; 632& 0 1 148 0 WRITELN(' WANT DATA BASE FILE PRINTED?'); 633 0 1 196 0 PDATAFILE := QUESTION; 634 0 1 202 0 WRITELN(' WANT INDEX PRINTED? '); 635 0 1 242 0 PINDEX := QUESTION; 636 0 1 248 0 WRITELN(' WANT HtTREEED RECORDS PRINTED IN ORDER? '); 637 0 1 306 0 PINDEX := QUESTION; 638 0 1 312 0  639 0 1 312 0 WRITE(' SORT ON FILEN NO. 2,3,4,5? '); 640 0 1 353 0 READLN(FIELDNUMBER); 641 0 1 378 0 ROOT := NIL;N := (0; 642 0 1 384 0 REPEAT 643 0 1 384 0 644 0 1 384 1 BEGIN 645 0 1 384 1 GPOS(DISKIN,PRESPOS); 646 0 1 391 1 READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); 647 0 1 404 1  648 0 1 404 1 IF NOT SYSERROR THEN 649 0 1 409 2 BEGIN  650 0 1 409 2 N := N+1; 651 0 1 414 2 IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); 652 0 1 458 2 IF PDATAF3ILE THEN WRITE(DISKOUT,' ',N : C3,' ',LINE); 653 0 1 500 2 CASE LINE[1] OF 654 0 1 507 3 'C','E','W' : BEGIN 655 0 1 507 3 ID := GETFIELDINT(LINE,FIELDNUMBER); 656 0 1 518 3 SEARCH(ROOT); 657 0 1 523 2 END; 658 0 1 525 2 END; 659 0 1 574 1 END; 660 0 1 574 1 661 0 1 574 1 END; 662 0 1 574 0 UNTIL ERROZGRNUMBER = 6; {END OF FILE} 663 0 1 580 0 664 0 1 580 0 IF PTREE THEN PRINTTREE(ROOT); 665 0 1 587 0 666 0 1 587 0 WRITELN(' MEMORY LEFT = ',MEMAVAIL); 667 0 1 630 0 668 0 1 630 0 IF PINDEX THENÌ PRINTINORDER(ROOT); 669 0 1 637 0 670 0 1 637 0 WHILE NOT EOF(INPUT) DO 671 0 1 647 1 BEGIN 672 0 1 647 1 673 0 1 647 1 WRITE(' SEARCH KEY =');READLN(ID); 674 0 1 697 1 FIND(ROOT); 675 0 1 701 1 IF WF <> NIL THEN 676 0 1 706 2 BEGIN 677 0 1 706 2 PRINTWORD(WF^); 678 0 1 710 2 PRINTLINES(WF^); 679 0 1 714 1 END; 680 0 1 714 1 681N9 0 1 714 0 END; 682 0 1 716 0 683 0  1 716 0 END. RLDR.SVD.SVGETFIELDIN.BUFUNCTION GETFIELDINT(STR : BIGSTR; FIELDNUMBER : INTEGER) : INTEGER; VAR I,J,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; J := 1; WHILE ( (I FIELDNUMBER) ) DO BEGIN {LEADING BLANKS AND TABS} WHILE ( (I=30) AND (BYTE<=126) THEN WRITELN(OUTPUT,' ALPHANUM'); CASE BYTE OF 0,1,2,3,4,5,6,7 : ; 8 : IF CURSOR.COLUMN <> 1 THEN CURSOR.COLUMN := CURSOR.COLUMN-1; 9 : ; 10 : CURSOR.LINE := CURSOR.LINE+1; 9Y 11 : IF CURSOR.LINE >1 THEN CURSOR.LINE := CURSOR.LINE-1; 14 : CURSOR.COLUMN := CURSOR.COLUMN+1; 12 : BEGIN CURSOR.LINE := 1; CURSOR.COLUMN := 1 END; 13 : BEGIN CURSOR.LINE := CURSOR.LINE+1; CURSOR.COLUMN := NCOLUMNS*CURSOR.LI^NE END; END; WBYTE(OUTCH,BYTE,ERROR); UNTIL (ERROR <> -1) OR (BYTE = CONTROLZ) END. T40.","PROGRAM T40(INPUT,OUTPUT); (* POINTER TESTER *) TYPE XY=RECORD COLUMN,LINE : INTEGER END; LINK = ^ XY; VAR CURSOR : LINK; X,Y,ERROR: INTEGER; POS:XY; BEGIN MARK(CURSOR); NEW(CURSOR); CURSOR^.LINE := 1; CURSOR^.COLUMN := 2; WRITELN(OUTPUT,CURSOR^.LINE,CURSOR^.COLUMN); WRITELN(OUTPUT,POS.LINE,POS.COLUMN); NEW(CURSOR); WRITELN(OUTPUT,CURSOR^.LINE,CURSOR^.COLUMN); WRITELN(OUTPUT,POS.LINE,POS.COLUMN); RELEASE(CURSOR) END. CBOOK.BUs PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK); VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGERټ; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; SOURCE : TEXT; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} PROCEDURE ERROR; BEGIN WRITELN(' ERROR'); END;{error} PROCEDURE C1HECK; BEGIN IO := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(' CK ',CHECKNUMBER : 10); REALPRINT(AMOUNT);WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(' DP ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(' CM ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE" := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(' DM ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(' CC ',CHECKNUMBER : 10); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' EM ',BLANKS); REALPRINT(AMOUNT );WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' LWH ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(STR[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(STR[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE INITIALIZE; BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(SOURCE,STR); RESET(SOURCE); BLANK^yS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; WRITELN(' KEY TO TRANSACTION TYPES'); WRITELN(' C CHECK CC CANCELLED CHECK'); WRITELN(' CM CREDIT MEMO  DM DEBIT MEMO'); WRITELN(' DP DEPOSIT BL FORCED BALANCE'); WRITELN(' EM EMPLOYEE CK WH WITHOLDING CHECK'); WRITELN; WRITELN(' TYPE CHECK DEBIT CREDIT BALANCE'); END;{initialize} BEGIN INITIALIZME; WRITELN; WHILE NOT EOF(SOURCE) DO BEGIN READLN(SOURCE,STR); WRITELN; WRITELN; GETENTRYTYPELINE (STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; END;{case} END; WRITELN;WRITELN; WRITE(' TOTALS '); REALPRINT(TOTALDEBITS);REALPRINT(TOTALCREDITS); REALPRINT(NEWBALANCE); WRITELN; WRITE(' TOTAL CHaUECKS ');REALPRINT(TOTALCHECKS);WRITELN; WRITE(' TOTAL DEPOSITS');REALPRINT(TOTALDEPOSITS);END. GETREAL.01 eFUNCTION GETREAL( STR : ALPHANUMERIC;VAR I : INTEGER) : REAL; {STR : STRING[99] = INPUT LINE I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} LABEL 1,2; TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; VAR LEN : INTEGER; FGETREAL,PLACE :REAL; PART U : WHOLORFRACT ; BEGIN PART := WHOLE;{assume while part first} FGETREAL := 0; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} IF ORD(STR[I]) IN [9,32] THEN BEGIN I := I+1;GOTO 1; END $ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN CASE PART OF WHOLE : BEGIN FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); { REALPRINT(FGETREAL);} { WRITELN(' WHOLE');} END; FRACTIONAL : BEGIN FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; PLACE := PLACE*10; { REALPRINT(FGETREAL);} { WRITELN(' FP');} END END; {case} I := I+1; GETREAL := FGETREAL; GOTO 2 END ELSE IF STR[I] = '.' THEN BEGIN PART := FRACTIONAL;I := I+1 ;PL̗ACE := 10; { WRITE(' FRACTION.');} GOTO 2; END ELSE IF STR[I] = ',' THEN BEGIN I := I+1;GOTO 2 END ELSE EXIT(GETREAL) ELSE EXIT(GETREAL) END;{getreal} 1978EMP.10f 4lE 610 325.46 E 611 1020.87 E 612 922.47 E 613 505.84 E 614 595.69 E 616 258.02 E 618 1053.55 E 619 845.14 E 620 420.35 E 621 548.51 E 622 293.42 E 623 339.16 E 624 374.42 W 626 483.00 E 631 142.22 W 633 2792.12 CONSOLE.PArq O.PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LENGTH} STR : PAdCKED ARRAY[1..132] OF CHAR {DATA} END; LINEPOINTER = ^LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR : LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR CHARVALUDkE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; NBYTES : INTEGER; DONE : BOOLEAN; DISKIN,DISKOUT : INTEGER; {$I RDL.PI} {$I WRL.PI} {$I GCHq3N.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: QLINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := USTR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE1(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN 2Y:= LEN -1; END {DO} END; {DELETE1} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -9MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNӶALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CARRIAGERETURN; BEGIN INSERT(LINE,INTERNALPOS,CHARACTER); LINE.LEN := INTERNALPOS; END; {INSERT CARRIAGE RETURN AND MAKE LINE LENGTH=CRET POSITION} PROCEDURE DISPLAYLINE; BEGIN PCHAR(10);PCHAR(13); WRITESTRING(LINE); PCHAR(13);PCHAR(10); END; PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE1(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE1(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE GETLINE; BEGIN READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); LINE.LEN := LINE.LEN-1; {IGNORE C RETN} WRITESTRING(LINE); INTERNALPOS := LINE.LEN+1; DISPLAYPOS := CALCDISPLAYPOS(LINE,LINE.LEN); CURLINE := 1; DONE := SYSERROR; END; {GETLINE} PROCEDURE PUTLINE; BEGIN WRITELINE(DISKOUT,LINE,NBYTES,SYSERtROR,ERRORNUMBER); END; {PUTLINE} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : BEGIN DISPLAYLINE;PUTLINE;GETLINE END; {UP} 11 : ; {CXARR RETN} 13 : BEGIN DISPLAYLNE; CARRIAGERETURN;PUTLINE;GETLINE END; {DELETE} 127 : DELETECHARACTER END;{CASE} END;{ACTION} PROCEDURE OPENFILES; VAR L : LINESTRING; NBYTES,ERRORNUMBER : INTEGER; SYSERROR : BOOLEAN; I : INTEGER; BEGIN WRITELN('INPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,L,SYSERROR,ERRORNUMBER); WRITELN('OUTPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(L,SYSERQROR,ERRORNUMBER); CRAND(L,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,L,SYSERROR,ERRORNUMBER); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW C'9URSOR} BEGIN {MAIN PROGRAM} OPENFILES; REPEAT BEGIN GETLINE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 27 ;{ESC} END UNTIL DONE END. TEDIT.qTSS.T9.. PROGRAM T9 (INPUT,OUTPUT); TYPE COLOR = (RED,BLUE,GREEN); VAR STRING:CHAR; BEGIN STRING := 'E'; CASE STRING OF 'E' : WRITELN(OUTPUT,' END'); 'S' : WRITELN(OUTPUT,' START'); END; END. BTREE.01 PROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : REAL; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : REAL; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : REAL; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KE Y X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*)) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGIN IF R = NQ THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[I] := A^.q,E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; WRITELN(' L',L,' R',R,' K',K,' KEY',E[K].KEY); IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROCEDURE DELETE(X : REAL; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K\,L,R : INTEGER; Q : REF; PROCEDURE UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE rRIGHT OF A*) S := S+1; B := C^.E[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.E[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] :=ܕ B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K >I 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; lC^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (_*UNDERFLOW*) ; PROCEDURE DEL(P : REF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M];H M := M-1; H := M < N END END END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN5 R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN gWITH P^ DO BEGIN FOR I := 1 TO L DO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); ۩SEARCH(X,ROOT,H,U); IF H THEN BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DIELETE(X,ROOT,H); IF H THEN BEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . 1978EMP.11f "zaE 660 484.10 W 662 2276.24 E 650 981.35 E 651 992.28 E 652 327.45 E 653 384.95 E 641 1081.13 E 642 1042.43 E 643 490.20 E 644 516.116 E 646 326.75 W 647 2424.72 W 648 393.57 W 649 251.13 GPOS.PI:~PROCEDURE GPOS (RDOSCHANNEL : INTEGER;VAR FILEPOS : DPINTEGER); CONST DOTGPOS = 10303; {.GPOS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTGPOS; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN GCHN = ',R2.INT); FILEPOS.UPPER := R0.INT; FILEPOS.LOWER := R1.INT; END; RELEASE(HEAP); END; {GPOS} RLDR.OLD.PASCFLS.m ~4PASCFLS,^ P4COMPILER.,^ P4ASM.SV,^ P4MAC.SV,^ P4LIB.LB,^ PCMESSAGE.ER,^ P4CUE.RB,^ P4ERRSUM.SV,^ PASCAL.SV,^ PCODE.SV^ T.MC 8fCHATR TEST.PX 0 DELETE/V TEST.PA XFER TEST TEST.PA/R PASINTERP PASCALO/S/V/A/L TEST CHATR TEST.PX *WP REALPRINT.PX ;GETREAL.PI "HFUNCTION GETREAL( STR : ALPHANUMERIC;VAR I : INTEGER) : REAL; {STR : STRING[99] = INPUT LINE I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} LABEL 1,2; TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; SIGNOF = (PLUS,MINUS); VAR LEN : INTEGER; FGETREAL,PLACE :REAL; PART : WHOLORFRACT ; SIGN : SIGNOF; BEGIN SIGN := PLUS; PART := WHOLE;{assume while part first} FGETREAL := 0; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} IF NOT (STR[I<] IN ['0'..'9','-','.']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1;  END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN CASE PART OF WHOLE : ! BEGIN FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); { REALPRINT(FGETREAL);} { WRITELN(' WHOLE');} END; FRACTIONAL : BEGIN FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; PLACE := PLACE*10; { REALPRINT(FGETREAL);} { ;WRITELN(' FP');} END END; {case} I := I+1; GOTO 2 END ELSE IF STR[I] = '.' THEN BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; { WRITE(' FRACTION.');} GOTO 2; END ELSE IF STR[I] = ',' THEN BEGIN I := I+1;GOTO 2 END; Cf*ASE SIGN OF PLUS : GETREAL := FGETREAL; MINUS : GETREAL := -FGETREAL; END;{case} END;{getreal} TOTAL.PX y TOTAL Copyright (C) 1981 Rational Data Systems ( r ڪc=<:77ȡ` -á =7ȡV<<:: 00::0888  D./.á<8 ,á=:: ')+-9.$ض$0öÍ,`$ض$0B !?zჽ ݞ$ݕá-ݮġáۛ.ȡáخC ٪c6877ȡ5  -á 86 067ȡ8 66 P5 ƁƁƁOUTPUTƁ=Ɓ{Ɓ=INPUT9w9OUTFILEƀƀƀINFILEƁ=Ɓ֦ INPUT FILE NAME? A֥֥=AʂAcʂA?֥֥֦ OUTPUT FILE NAME? A֥֥=AʂAcʂA֥9֥95 E֥AʂAcʂA838553֥93֥9֥9A ֥95֥9ƁƁ=9ƀA#$ lX WRITELINE.01 fPROCEDURE WRITELINE( VAR OUTPUTFILE : TEXT;LINE : LINESTRING); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN FOR I := 1 TO LEN DO WRITE(OUTPUTFILE,STR[I]); END;{WITH} END; OPEN.PIr PROCEDURE OPEN(RDOSCHANNEL : INTEGER;FILENAME : LINESTRING ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTOPEN =6207; {.OPEN} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTOPEN; R0.LPTR := FILEPTR; R0.INT := R0.INT+2; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN OPEN = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {OPEN} 1979DEPS.&D 1567 D 2945 D 7000 D 2500 D 6590 D 700 D 1575 D 3195 D 3144.56 D 2556 D 2000 D 7097 D 2000 D 892.50 D 1885 D 1995 D 24676.36 D 1708.14 D 1377.50 D 3232.50 D 14386.25 D 527.50 D 4462 D 8907.50 D 611.53 D 15954.41 D 1278.47 D 600 D 210 D 1558.65 D 4302.50 D 418.50 D 430 D 3475 D 1240 D 3000 D 7202.98 D 4310 D 3682.78 D 618 D 552.50 D 2675 D 8750 D 1800 D 1547.28 D 1030 D 2320.45 D 3314.44 D 4439 D 2039.96 D 2747.24 D 2197.25 D 5527.98 D 15000 D 832.50 D 6471.12 D 12653.22 D 1890 D 808.23 D 660 D 2500 D 24480 C.33 D 7430.13 D 3561.07 D 440 D 1029.72 D 16000 DATA.TXss C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 4 4 C 1000 1.00 4 4 OC 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 SPOS.PI:LPROCEDURE SPOS( RDOSCHANNEL : INTEGER; FILEPOS : DPINTEGER); CONST DOTSPOS = 10047; {.SPOS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTSPOS; R0.INT := FILEPOS.UPPER; R1.INT := FILEPOS.LOWER; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN SPOS = ',R2.INT); END; RELEASE(HEAP); END; {SPOS} PASCAL.PXb? vtF 6/COMPILEROPSYSINICOMPINITSHOWERROCOMPFINIDECSEGMEBODSEGME Copyright (C) 1980 Rational Data* Systems )' R  ݢ ݢٚݢǀݢݣ ޢ ܞ#ݢݣ ݣ ݣ @!l֥֥&PX PASCAL[O][switches] sourcefile[.PA]֥֥switch meaning֥------ -------֥4!/A analysis to @OUTPUT֥/A=afile analysis to afile֥!/C conform to standard֥/E=efile errors to efile֥/L listing to @LIST֥/L=lfile listing to lfile֥!/N no codefile created֥"/S  swap compiler phases֥"/V verbosity to @OUTPUT֥> ۢۢۢNڞ#!2ئ abcdefghi@bl ȡ4ݏ0ݤ ݏ0ݤ á.__?pidD.TMPH@0d 0 0 * ڪ@& ( ())*) )ٚ)ǀ)))))ǀ)) ** (#*<*''á)) ) ''š ) @ۦ@&!& VWƦAOSVP0-ihȡiCCCCChá  ? N,S0C6FFG1Gá"G¾G¾0FFAWEE֥u֥uihȡ)iDDDDDEDháL"S" "@LIST@֥"֥ihȡ(iDD*eDDDDháE_W"EE֥y֥yihȡ)iDDDDDEDháVP ֥վš0֥hվh.PA֥hվh@hh@h.PACh@֥w֥w,֥֥֥ kئ abcdefghi@ ȡ4܏0ܤ ܏0ܤ á$$M$@.WKC@FA@BA@& ֥֥0PX PASCAL[O][switches] sourcefile[.PA] [options]֥֥switch meaning֥------ -------֥!/+C conform to standard֥&/L listing to sourcefile.LS֥!/N no codefile created֥"/S swap compiler phases֥%/V verbosity to $TTO/$TTO1֥֥o/ption meaning֥------ -------֥afile/A analysis to afile֥efile/E errors to efile֥lfile/L listing to lfile֥p  ۢ%"ڞ#/!2 AZȡ,rA ۡܚá,H ت֥֥󮀂ʀ֥󮀂ʀ :ت֥֥ȡ0ʀ̀ʀ̀ʀʀʀʀá+ Z VW3ƦRDOSVP0-ȡؤá A H I P Q X Y ZֲFCOM.CMֲCOM.CMֲ~ ~>¾˲~¾˄Fcš ֦(F)COM.CM file is too long.ֲ~ j5 z~¾ˡ)²~¾¶ȡy~¾1  ȡ1rAáá~¾áɡ ? ղ@֥վš0֥վ.PA֥վ@ZT#pȡ}ز =á.¾¾0"֦Invalid local switch.֥u֥uȡ"٤٤á֥y֥yȡ"٤٤áZ}rLA֦Duplicate listing files.ֲAL Xáj 1rLA@.LSCrNA,rSA0rCA6rVAPب"ƀƁ ƀCLIFILE  ́!Ɓ!@Ɓ!.PACƁ!@֥w֥w,֥ ֥֥ƀB 0 ؾȡ3¾ ¾ á1 H$ #ȡ$ؤ#á<<<  2֥##Wrong operating system.# q$jvV ~PN  j(&iAA4ؤAND 4ؤ'4ؤ 4ؤARRAY 4ؤ,4ؤ BA4ؤBEGIN 4ؤ4ؤ CA4ؤCASE 4ؤ4ؤ 4ؤCONST 4ؤ4ؤ DA4ؤDIV 4ؤ'4ؤ 4ؤDO 4ؤ4ؤ 4ؤDOWNTO 4ؤ4ؤ EA4ؤELSE 4ؤ 4ؤ 4END 4ؤ 4ؤ FAF4ؤFILE 4ؤ.4ؤ 4ؤFOR 4ؤ4ؤ 4ؤFUNCTION4ؤ 4ؤ GA4ؤGOTO 4ؤ4ؤ HAIA4ؤIF 4ؤ4ؤ 4ؤIN 4ؤ)4ؤ JAKALA4ؤLABEL 4ؤ4ؤ MA4ؤMOD 4ؤ'4ؤ NA4ؤNOT 4ؤ&4ؤ OA4ؤOF 4ؤ 4ؤ 4ؤOR 4ؤ(4ؤ PA4ؤPACKED 4ؤ+4ؤ 4ؤPROCEDUR4ؤ4ؤ 4ؤPROGRAM 4ؤ!4ؤ QARA4ؤRECORD 4ؤ-4ؤ 4ؤREPEAT 4ؤ4ؤ SA6,4ؤSEGMENT 4ؤ04ؤ 4ؤSET 4ؤ*4ؤ 6,4ؤSTRING 4ؤ34ؤ TA4ؤTHEN 4ؤ 4ؤ 4ؤTO 4ؤ4ؤ 4ؤTYPE 4ؤ4ؤ UA4ؤUNTIL 4ؤ 4ؤ VA4ؤVAR 4ؤ4ؤ WA4ؤWHILE 4ؤ4ؤ 4ؤWITH 4ؤ4ؤ XAYAZAZAeeآآddآآccآآbbآآآ``&آآaa>Cآآc_ _آآآآeآ آ آcآ ۦINTEGER ۢ eۢ ۦREAL ۢ dۢ ۦCHAR ۢ cۢ ۦBOOLEAN ۢ 뺂bۢ ۦTEXT ۢ aۢ ۢۦMAXINT ۢۢ eȡV ܢ báܦFALSE ܦTRUE ܢؚܢښܢábٚ ۦNIL ۢ `ۢۢۢum mئ آ آl lئ آ آآآk kئ آ آآآآj jئ آ آآآiiئ آ آآآ آآآآآآOdآhhئ آ آآآ آآآآآآآXƀ `6ƀƀ1READ READLN WRITE WRITELN EOF EOL9N PRED SUCC  ORD  SQR  ABS  NEW  FILETITLPURGE CONCAT LENGTH DATE EOLCHAR FSUBSTR INDEX MOVELEFTMOVERIGHEXIT IDSEARCHTREESEARTIME FILLCHARAPPEND REWRITE PAGE CLOSE  }[SEEK !RESET "GET #PUT $SCAN %SIZEOF &PACK 'UNPACK (ODD )CHR )ȡ}ʀٳ0ƀRڡ  ̀ʀʀʀ ڡ ʀʀʀʀٚʀáxPWROFTEN?$MEMAVAIL?ROUND ?TRUNC ?SIN ?COS ?LOG ?ARCTAN ? LN ?  EXP ?  SQRT ?  MARK ?   RELEASE ? !SYSCALL ?#6 džpMLܠMONȡOܹ OO eOde~ OO dOeadZ OO `O< OO `O$nfM T:M[ݡ  OOOO?ݡO.O؟ˡآO ښOؚNápO8[Ys5432fUTS1QONWGrqFE.DA?>=+*¾ë90;0;d 0; "0; ȡ.ܤޢޢ ápǂCopyright (C)  Rational Data Systems(Py^4|t t  ɡ ddڏ ۂق܏B خ'Rational Data Systems Pascal Compiler [خrelease ٥. . ɡخ0خ Lخ , overlaidخ] خline seg procخ==== === ====gخA :٣  ٣  ڥt| ت ֶ ,ֶ  /  6خ"ۥ"ۦ cfompiled on ۲ ۧX ۲  ۧ; ۦ at R šخR :خR :I šخI :خ0ۧI :@ š خ@ خ0ۧ@ -6,0šخ վۦusing the optionšخs- ֦Byteswap6֦ Conformance, ֦Nocode0 ֦Swappingخ.  ;HX qSundayxMondayiTuesdayY WednesdayGThursday6Friday'Saturday_Ŭyl_QA2%H January February March April May June Julyr Augustc SeptemberQ OctoberA November0 December ~sh[K=.1֥Z ֥ ֥ line seg proc off nst ֥u ֥u ֥֥֥ ֥  ֥y ֥y  &] K;HX%RI@ ,֥Z n BMC ggPROGRAM   x declarations !áwátá>á"Ś˫á)áaF6;3srEXTERNALt֥ ֥u  o og ns  X^tLn\ Z xAخError Message Summaryخ===== ======= =======Xخ ٲ@$@ ERMSGFIL PASCAL.ERP֥֥u֥y֥;a`ȡtaإ Z P֥֥u֥y֥`áva <ZخSegment Numberڦ Segment Nameڦ Size (Bytes)ȡ>٤ˡ"خ ۢ á;ت@&@$%$á%$¾&$$%%$ɡ6$v$6@٦@OT~٪@$$@$ A$B6$ت@٪@F EEHHǀHGH<á HHHE#HGHǀH$<á HHHE#F!F#~֥֥A ۦ lines#֥u֥uA ۦ linesP#֥֥A ۦ lines֥uP֥ Mȡ ڤ áȡ8ڤȡܢ¾ ááȡ áʾȡ֥¾ áʾ.ȡ á!ȡ á֧; ֧H ֧X ֧R ֧I ֧@ ֧<  ֧F ȡz3 á观+  *  ֧Z ɡ 槂,g֥ ZY!  ֥<֥3+* եվU եվX֥ե֥{0Wwp2 Ȅ Gǀ  0ȡ ǀ  (ǀ &á+ ȡڢ¾ áBǀ 3áxáÄەݚš) ۮڮȡ^# áá cس0$@ L'Ȅق 4JȄق #Ȅق  @MÍǀ Jسášá ǀ :&n^ǀ Ȅ =á&ݧWWcáWWX '9á ݢښ  bˡ! ٢٢`m ۢˡ iΥXۢ뚧76`mɡ/ġ 9!٫¾¾<j ˡd˄ `ádá33Z3á' 6n-#&: <> ;% V˄ $ ˡ[Eá+ 8n;ˡ.';!=? M3!lˡnV&-M.á% 2n$ˡ"Ǿ6  ^K   W|      á ' 6n   á   !ná '6   8  Í Ä  áP   A ˡǖ   Eի ?ˡń 弄 ;֥ 弄 á ݟˡˡ NJ ˡ ˡqݟˡL< D   ˡ  š}Nj   ˡL3á DB  @$ń ˡáZáˡˡ nj áˡ  á ǘ   $ , $ 8  Í Ä  áP   ˡń  ˡÍ~á    OaáV  O >>  á#ˡń Ǎ GE ޭ/162 #: ˡ ō  á c ˡȡ ܟ˄eád d \ cá LˡC  c˄%P ˡCǁ6˄@ܫ ܫ  oDg ZS "cá)*ܣQ (%(ǒLxP_M!  á $k^0ֲ"ˡ ˡCá#ֲ  eˡO OO #K.ءINPUT OUTPUT  .ݟáء3caˡء4Hޣá ޣ á %ޣ 2nޣ ޣ ޣ á 'ޣ 6nޣ ޣ š ˡgeO VdOEcO4'Oˡdz áDzt!á1V6ֲ"6!8@"Vֲ" áaááعá: .ֲ"Q!"ǮRá .R!"R! .á[m>> ֲ R(ǰ6OǸ X# Vֲ"áaáOá O>.Oá/V6ֲ"pS!&ڡtV.O6R!"١V6O VO $ˡɡ %á+ֲ&ˡ eˡǹ ٧dáGءá,ֲ" ˡ eˡzO٧eáءO ٧cáءOn٧báءO!YءOD7ˡ ءֶֶO (&á#V6ֲ&%&*2'Vֲ&  áaááعá, .ֲ&%&' % .(&' .áR>>  ˡń ֲ 6O2ڬ} ,) Vֲ&aá5á O!.áֲ&%&%.(&'١V6O VO *ˡbˡsVdá5GçD%áF áp1 áVߣ á ߣ ˡ+ öÄ.á  ȡ ááٟá~ֲ"ٟ˄ڟˡ٣áȡqcÄÄǀ&  / _  á 6çDeڧd d CÄ,'Pˡ ݕˡǎګ Há=ڣɡǿágá ˡǚٟˡˡái(ٟˡߣ á ߣ *ߣ á Nߣ ߣ á Sߣ  Mߣ ߣ  Rrt 42ܣ áܣ ޳``V޳`á޳@t ޳" ޹#$)*1ˡ ġe ˡ%eádá e ˡ%eádá e  >e +á Oe   ȡD  ˡ eˡáǤ á ˡ eˡá% ,-ˡ eˡCb Dˡ eˡDc Z)RCExutq]ZW*,)02*6Hߡá2vYeá d eá اd*3ddÍ34弄: 弄^ܣá 'ܣá 1 ˡá ꧂e ꧂d ác   _   á*7bˍ ˡbˡ LJ    á ˡˡ Lj  Ȅ  #áH   lj ޡȄ   ޡ   ߡ  ˫쓡9á ߡ1"ppp  ppp U&N "$&(*,.02468:<>@BDHud@!(Z7 7'á   7 ܟ˄ 4ܧeeÄ/ܧddÄ   3ܧddÄ  pܧeeÄ  RܧeeÄ  4ܧbbÄ    .lP  $B6(`á   6eá á %dá á  ˡ  (á   6 ܟ˄ 4ܧeeÄ/ܧdǾdÄ  y4ܧeeÄ/ddÄ  0ܧbbÄ    u.  5ˡ ەˡٚ,8JɡJ;5)ácÍÄˡȡ   5cÍÄ ˡȡ ܟ˄ á+á   ǂ ˡ4 8  P֥ 8 _  ܧdá  ǃ DŽ  vUcÄ Aܧc1R         ˡ   4   0 <5 F4 <1 20 (7 /  D<*6$b   nֲ@á ֲ30:ֲ9弄˫쓡 á^:< D=ֲ á4==ֲ 9== á2 9 ==ֲ9==  >ֲ  9ٟˡ٧dÍ ǐ á ֲÜٟˡcUܟˡ# ȡ áǜ   ܚ ޚ ۟áښǓ˫쓡á==ֲ9弄==ڟˡ9 ˫쓡 썡 ݟˡv ݚܟá ,ά 9     ɡ  ݟá á]ONvwT ? ==ֲ9弄˫쓡== áֲ 5QS l@ ֲ@m áǼ==ֲ9==9 \A  š á[ á   Ǜ؟ˡd ǏֲAáaֲfQˡGˡ9+ ؟ˡçD. ǑǻֲǀoáHDֲ@ˡGˡ9+ ؟ˡçD.  7ֲ@á6! 6 9   áP ==ֲ9==  6 C!  @Bá 'kֲBˡyám ɡ` á ۢۢۢ-8 ۢۢš˫쓡áǽ==ֲ9==ڕٕ CJɡJ"ád ݤˡ ݤޟˡ* á ǥ   á7K0H弄 á&|ܣá :I߹(=;?6B1;,>'@"AC0/0/ !&I# @97D W؟á!t??----??x??----?? txbody أáá ˡ ˡákšY2 62 *ˡ Qޕ( á A> ܟˡܢ /c nçş˄  ˡ V2 2 >aánˡXşáKŢ;INPUT Я OUTPUT Я OV2 ǀ& ¾ á ¾ áO VO ˡV2 O ˡV2 Oֲ9弄˫쓡 á   ˡ! V2 O á-- ܟˡ$`mˡǨާW š륄Xߤ ؟á ֧ ֧  ?š7ٕ ֧s ֧n 88Z땧?ɡA?낫? !as?.tv#"*20 5Q=֥  á֧o蓼o ܓ-o áo 蓼o 弄ܓo á`<B˧3nÄ. =ݧoÍ | ( t  RL64l  z" V "&"l" ##҄$h&$&0 *r*,,,+n,-v-./,/ZDҖـڀɄńڂ0á ڀـܡ ڏ.弄弄á ˡ á=   ߚ   @  !"F"ˡߢ ߢ á,á  án  ǔ#á ߢ ˡ ߟˡvߢ~  ޚ #áǺ ߢ ˡkߟˡ7á-ˡ&dá$š fߚGܟ$q1 nٟ˶k٧e٧d˄8 1)ġ+á@š4 ɡڸsu2N @š  ڢ ڢڢڢ/ ł ڢڢ ˡ   ٶ˄/bڣ %ڣ áڢڣ ڣ Ȅ ڢڢ٢٢٢á   ٢ ٢٢٢. . á! ֶ á8áX  ˡ;ȡ/d  ءֶ n%ֲ&ֲ ł áW   ֲ ˡ o  ٢٢ ٢٢   ˫쓡áBJ9áXá ֲ(  š  öń ˡ%      ł  á%Nֲ-˫쓡  썡 jjS(   ááA    ߚ  A ˫쓡á. ˡ álˡ n á) Ǚ ޟˡ ߚ á ܟ+084p   آآál. . á+  إآ  آfآ f# ˡ ˡ    弄 弄弄á +á&弄Y,áá    ߚ  t ޟˡ7ȡ(ާdá mާeá Ǖ ޚ ˫쓡á[ áT  ˡ á "ȡ   ˡ ;&t˂ KF@-  GHI ?š J ȡ '  ߟá-á  ɡ   ł   ߚ w  á_*á áU ߟˡ%š ߧdߧeÍr  ߚߟˡ4 ɡTɡ ǩ.áW   á V ߚߟˡ!á6 >3á|ˡǴlߧeá8ō   _ ǀá\ Jܟá139;=?P$a/ "áY ؟{ٓˡ Ǧٓ!ۢۢۢڢؚ Bֲ ˫쓡ác ˡֲá ۥۢ ۢۢ) Äֲآ ٚآá%?ֲb ˡ"ֲá ݥݢ ݢ) ÄǗֲڢ ۚfٟˡ+گ٧fˡآfá%Kֲ>rvfˡ fx á/ ݢݥݢٚݢ ݢn#Lֲ˫쓡á1ֲٟˡ=ݢ ۚݢá ۟ˡb7áݢ  ؚá%Mֲ|弄fˡ f15 @ ֲáw@Oֲ!@á  áK   á ߚn  Pֲ.˫쓡 áNá@  ˡ á áy ȡ  / ޟˡ"    ˡ  (Q(á)@Rֲ!á+C+ݢꚟ ˡ< ޚáˡš   ޚܟN v, r   ns.`֥A :ڣ  ڣ  ڣ ȡ֥. á֥`֥uA :ڣ  ڣ  ڣ ȡ֥u. Bá֥u) 0áR3N !qrr8 ?Y ꫂQ5á֥ ˡFáÄ Äá Ä ÄǠáb^  nr횧3 Ä Ät#qšqqrǕárrá}ˡDˡ2    š ˡ& ˡU  r" is sn nɡ nn ɡ7 á áá|z ˡ x ˡˡ ֲ {ádåFORWARD ЯBǡápDֲASSEMBLEЯ61áS ֲ+ MˡVȡ¾ áˡ   ֧n 88Z땧?ɡB?낫?as{?!åEXTERNALЯ6áǯֲ* Mˡ<ȡ¾ á ֧n 88Z땧?ɡ?낫?as?Q !P tx declarations   o o o VV2\áZL á! ߟá   á ߢߚGteޟˡޢ  4 ޟˡ  6ˡٚښٟá, ޢޢ aޢnޢ֧aޢ  ݚRINPUT +INPUT ֦INPUT OUTPUT OUTPUT ֦OUTPUT ֥؟ˡ آ0֥+202á3nÄL á á á3nÄMTnç3 ˡ弄܄Q z@z V D x L<nV2f0`20 . oá 0Nǀۡ (áٟڟÍˡ'á á ٧`ڧ`ÍxlA/Í  ÄÄ}pf 弄2弄%á?ác( ާ_ ޢޢ ǂ  ݥ (`á pr ád   ˡAާeá á-ާdá" á   iT"á áeݥ5$á" á dݥj>ޚ  v ڟá  ؚ8؞áeá ؞á٢ؚ٢ ؚآ آ<d؟ˡ,٣`٣ á٣ á ٣u : rġ6aؤš֧?낥aؤ ֥aؤ á ֧r 땧?ɡE ?낚?8k Mš 7ؿ(  Mš 79-áڿٿ ٿڿX á "اcáˡ > 4 15C9#֥9/41Bw/֥šۢ|¾Wádۢ|¾/¾پۢ|¾ɡۢ|¾ɡg )؂?š ؂"AAP ž 5ꫂQ뫂Q4¾ ˡť¾Fš¾)å¾*ľ}Í¾*ÂC@q |ئ |ؾ¥¾ť¾ ;};)å¾*Äk x@ ٥¾|Ú6! H¾-á,٥¾0٥¾0j"¾=áF"!"ۡڍڄٓ  ܡ+-¾R l 6ƀƀ@ (ƀ򥀗¾ƀ ֥[ ƀ ֥P' ƀ ֥E P֥ƀ ֥D !~1*1֥9֥9C4/ gCr` m"$&(*,.02468:<>`@1DFHJLPR(VX^ڹ ̀̀ʀʀ̀š )ʀ¥¾¾'á̀¾'ˡʀ̀% ʀʀá ¾-p̀ʀʀʀʀʀp =#  ''¾0ɥ¾9ō ¾.áS¾.ˡG¾¾ ¾ \¾-á  ¾+á¾ǽ ɡáb߮ ȡJ å¾0 ń ō  ¾0á" ܫ߮ ȡ% ¾0á ޮġ+0ޕ$á ݮ ȡ ~k¾0 á á $  $$ f8Fj$0ȥ¾ å¾ Íȡ /¾#$  쥀¾*á 쥀 ¾.á #쥀¾=á ' ( ( ' ) ¾   =>) )¾=á  '{{w "$&(*,.02ZT2=?A=CEGIKMOQSUWY[]_acegikmolrt}/á)[  ,ۡ ۡǀ2ٟˡá cÄ"JɡJ4P֥A  ڧs ڧQ 5 ֥ ֥= lš5֥֥l֥֥ml ֥ á֥֥4֥ERROR% ž ٥ɡE֥xٕȡ"ٕáq֥yError at line ڧA ڦ in ڥxڦ of ڥt:֥y ڥ֥y%q֥uError at line ڧA ڦ in ڥxڦ of ڥt:֥u ڥ֥u%q֥Error at line ڧA ڦ in ڥxڦ of ڥt:֥ ڥ֥% ړ@^˄ٹ܂ۂxwp+^h$  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfv ġI ۤڟˡ,áڣk.á.Jhm9k,Ujlihښ۫ ؟áٟ ٥ˡٟ  ? ؾš ¾ؾń/ ƀؾƀ ؾ¾áؾ šehƀƀ֦ ƀƀƀؾٕƀn Yš¥9YٞقYقYY؍, ,֥YZZ9 ٕán|ƆƇ9EƆWORKCODEƈ9ƈwƈ9INCLFILEƉwƉƉwWORKSYMƄƅ1ƄOVTPVTƅuƅƅuANALFILEƅƆ5ƅLPƆyƆƆyERRFILE:֥OUTPUT֥֥ 3 ˡO ˡhAA :֥Ɔƈ9ƉwƄƅuƅƆyG6 <~ |. F0:`4b`HBpN'9-á ٕؕقɡMٮȡۂáخȡ#ۂɡۂá0ٮȡ#ەɡۂá$Xv TcÄFá:á5cá+pܢܢ󿧂p _ ˡ_ zֲ"ˡ)áˡááֲ"ٟáǞfˡǢXˡRاdÍǟ=-؟ˡá  A 3Pá`!á g؟ˡأ áأ أ fz8V2ֲ"ɡO˫쓡2ɡ šث _ ٚ f{ֲ2áǶֲ ˡ eˡáǷֲ  ˡ eˡO2٣ɡ ٣šث٫ 9láˡe ,:ֲ ˡ ˡ 1+$  "/Olֲ"ˡ ˡˡǪֲ ON3ֲ ˡˡ aˡOJsdá  R8R6R4( =ֲ ˡ%ˡ}@a˄($O b ;O b /Oc #+! -+D ֲ ˡ ˡ!  OZ,Dֲ" 8á=ֲ"   ˡv ˡ9f <Xڶ 8ֶ  ٕD ˡـš8.&ֲ" 8ˡBˡ2;#˸ֶ ٕ8v/ء-6BDֶ$ @BP0       y,&á.á>//á?.ߟ ˄ ˡ:8 66I!١666P.ٓ0١6660١#ء;?ء:>9 "-, ˶á&:<e"ˡ ڤˡ<١9]ٓ<ٓǧ7á ڤ ڤإ ڤ֧nەb ;׃JJK]\\ɡ\\š\ \MMMMD M M MMM M M rM cM TMEM6M' uh[NA4L\^7 bDGoˡ 8 rأnso !o o3 o áobf4 ɡ ؚ ؗ ,/: Vvپɡ ڮەġ¾ ˡáP X&g:^  0ۂÍ#) 6'g&٪@ɡ̀ʀ'ȡʀ&&&&ʀk&| ɡ̀&dɡ̀̀'ڥ&ʀ&('ڥ&&'ʀ&̀&ʀá'DŽšWخʀ'ƀDŽƀʀخ'ƀDž'DŽƀʀخʀ'ʀ'&J%PASOPSYS.MCll 4YMESSAGE USE A 32K 2 STACK 6 EX. BUFFER 2 CELL $LPT MESSAGE NO MTAPE NO PLT 3 DISK 3 DIRECTORY RTC NO PWR FAIL MESSAGE SYSGEN IN SYS2L.SV OPENFILES.PI &YPROCEDURE OPENFILES; BEGIN WRITELN(' INPUT FILE'); READLINE(0,LINE,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,LINE,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,LINE,SYSERROR,ERRORNUMBER); WRITELN(' OUTPUT FILE'); {USE BELOW FOR RDOS FILE DISKO&UT MUST BE INTEGER} {READLINE(0,LINE,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(LINE,SYSERROR,ERRORNUMBER); CRAND(LINE,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,LINE,SYSERROR,ERRORNUMBER); } {USE BELOW FOR PASCAL FILE - DISKOUT MUST BE TEXT} READLN(LINEEs); FILETITLE(DISKOUT,LINE); RESET(DISKOUT); END; {OF OPEN FILES} 1980.02 | 1 C 3049 44.55 10 2 CC 3064 3 C 3065 223.70 32 4 C 3066 250 27 5 C 3069 96 4 6 CC 3070 7 C 3073 1340.63 25 8 C 3075 23 5 9 C 3076 100 24 10 C 3078 22.50 4 11 EM 810 17 1v5 12 EM 811 604.28 15 13 EM 812 643.69 15 14 D 140 34 15 D 8347.06 34 16 D 2086.75 17 C 813 980.89 14 18 C 817 205.18 12 19 CC 814 20 C 3081 35 4 21 C 3067 62 1 22 C 3083 34 6  23 C 3071 330 20 24 C 3085 50.99 5 25 C 3087 704.45 17 26 C 816 1581.88 12 27 C 819 1581 12 28 D 1468.38 34 29 D 871.98 34 30 D 13056 34 31 D 12436.99 34 32 D 435.99 34 33 C 3068 10 18 34 C 3086 138.02 25 35 C 3088 1040 23 36 C 3090 5324 9 37 C 3091 250 8 38 C 3092 206.59 20 39 C 3093 15.40 22 40 C 3094 120.70 4 41 C 3095 20 26 42 C 3096 775 9 43 C 3097 32 10 @44 C 3098 74.05 22 45 C 3099 4000 21 46 C 3101 1557.44 25 47 C 3104 40 33 48 C 3103 42.50 10 49 C 3105 504.39 25 50 C 3106 119.98 4 51 C 3107 793.50 9 52 C 3108 1537.50 27 53 C 3109 3394.50 6 54 C 3110 25 3 55 EM 818 140 27 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 59 EM 835 17 15 60 EM 836 181.73 14 61 EM 837 482.61 15 62 EM 838 2742.40 14 63 CC 839 64 Z EM 840 622.50 27 65 EM 821 195.18 12 66 EM 822 1415.95 12 67 C 3113 79.95 5 68 C 3114 69.95 10 69 C 3115 200 20 70 C 3116 225 27 71 C 3117 4.65 10 72 C 3119 48 18 73 C 3120 1940.43 25 74E C 3121 269.78 17 75 C 3123 12.24 4 76 C 3124 93.27 15 77 C 3125 181.78 15 78 C 3126 243.77 14 79 C 3127 68.45 23 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 83 C 3133 125.81 22 j 84 C 3134 20.47 22 85 C 3135 85.15 22 86 D 435.99 34 87 D 906.32 34 88 D 435.99 34 89 D 1628 34 90 D 3000 34 91 D 11481.06 34 92 C 3112 25 26 93 C 3118 1.30 11 94 C 3122 100 26  95 C 3128 7.86 22 96 C 3138 185.26 4 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 102 C 3144 42.08 22 103 C 3145 46.50 3 104 C 3146 36.70 11  105 C 3147 27.73 10 106 C 3148 25.98 5 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 110 C 3152 1000 25 111 C 3153 227.40 25 112 C 3154 100 8 113 C 3155 160.43 4 114 C 3156 835.38 25 115 C r3157 781.68 25 116 C 3198 28.30 3 117 EM 823 1000 12 118 C 3158 21.92 5 119 C 3159 12 33 120 C 3165 638.45 27 121 C 3167 15 5 122 C 3160 155.47 17 123 C 3161 34 10 124 C 3163 594 17 125 C 3166 465o 4 126 C 3168 83.85 3 127 C 3169 200 24 128 D 1834.55 34 129 D 435.99 34 130 D 802.29 34 131 EM 824 333.14 15 132 EM 825 378.68 15 133 EM 826 2590.51 14 134 EM 827 425.95 12 135 EM 828 82.50 26 w 136 EM 829 38.70 14 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 141 D 905 34 142 D 594 34 143 D 520 34 144 D 435.99 34 145 DM 18.88 146 C 3162 39.95 1C8 147 C 3164 130.46 14 148 C 3170 120.97 4 149 C 3171 18 33 150 C 3172 36.70 10 151 C 3173 947.50 25 152 C 3174 80 26 153 C 3175 204 5 154 C 3177 496.56 25 155 C 3178 136.20 25 156 C 3179 729 17 *" 157 C 3180 170 23 158 C 3182 121.30 11 159 C 3183 25.91 22 160 C 3184 27 17 161 C 3186 10.08 23 162 C 3200 1020 27 163 D 13331.89 34 164 D 11943.74 34 165 D 4546.81 34 166 D 129.24 34 167 D 3W229.35 34 168 D 715 34 169 C 3176 50 22 170 C 3181 950 7 171 C 3185 125 23 172 C 3187 174.75 23 173 C 3188 290.64 4 174 C 3189 1372 27 175 C 3190 3.28 5 176 C 3191 18 5 177 C 3192 5.68 23 178 F C 3203 100 27 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 7 23 182 C 3196 50 21 183 C 3199 26 33 184 C 3201 2764.81 27 185 C 3202 948.17 25 186 C 3204 55.20 5 187 C 3205 14.25 7 188 C 32ӈ06 10 6 189 C 3207 7.58 5 190 C 3208 60.59 2 191 C 3209 250.65 25 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 195 EM 846 3584 14 196 D 531.21 34 197 EM 843 1527.87 12 198 EM 84e7 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 202 C 3210 720 27 203 C 3211 69.37 2 204 C 3212 1.81 11 205 C 3213 176.55 25  206 C 3214 10.46 25 207 C 3215 18.28 5 208 321b6 64.28 5 209 C 3217 547.32 17 210 C 3218 136.48 17 211 C 3219 48.60 10 212 C 3220 170 23 213 C 3221 10 8 214 C 3224 227.40 17 215 C 3225 36 5 216 C 3222 450 27 217 C 3223 10.64 5 218 C 3226 93.71y 4 219 C 3227 74.13 2 220 C 3230 31 26 221 EM 851 4000 36 222 C 3229 2774.75 23 223 C 3228 102.08 4 224 C 3231 35 18 225 D 4888.40 34 226 D 3435.99 34 227 EM 852 1527.87 12 228 C 3232 125 23 2s29 C 3233 3654.15 23 230 C 3235 37 33 231 C 3236 42.50 33 232 C 3237 2282.26 6 233 C 3238 138.17 33 234 C 3239 95.64 2 235 C 3240 3.70 5 236 C 3241 4.33 5 237 C 3242 35.39 18 238 EM 854 48.65 12 2'39 EM 853 540 15 240 D 3148 34 241 D 296.31 34 242 D 1403.43 34 243 D 174 34 244 D 2600 30 245 C 3243 28.20 3 246 C 3244 341.40 10 247 C 3245 500 25 248 C 3246 328.44 10 249 C 3247 784.13 25  250 C 3248 125.30 11 251 C 3249 5.76 23 252 C 3250 50 24 253 C 3252 1760 27 254 C 3251 100 2 255 C 3253 43 1 256 C 3254 290.77 4 257 C 3255 100 2 258 C 3258 42.50 33 259 C 3259 4.60 23 260 CC *l3131 261 C 3260 820.84 25 262 C 3261 732.30 8 263 C 3263 50 22 264 C 3264 296.31 23 265 C 3265 168.01 25 266 D 435.99 34 267 C 3082 1350.12 25 268 C 3136 16.00 1 269 C 3216 64.28 5 270 C 3234 298.80 25 271 C 3262 88.41 14 272 C 3268 14.00 26 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 0 2 6 19 63 260 273 274 275 276 277 SEARCH KEY 0 2 DCC 3064 6 CC 3070 19 CC 814 63 CC 839 260 CC 3131 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102  277 CC 3111 AMOUNT = 0.000E+00 1 21 255 268 SEARCH KEY 1 21 C 3067 62 1 255 C 3253 43 1 268 C 3136 16.00 1 AMOUNT = 1.210E+02 2 190 203 219 234 254 257 SEARCH KEY 2 190 C 3208 60.59 2 203 C 3211 69.37 2 219 C 3227 74.13 2 234 C 3239 95.64 2 254 C 3251 100 2 257 C 3255 10v0 2 AMOUNT = 4.997E+02 3 54 103 116 126 245 SEARCH KEY 3 54 C 3110 25 3 103 C 3145 46.50 3 116 C 3198 28.30 3 126 C 3168 83.85 3 245 C 3243 28.20 3 AMOUNT = 2.118E+02 4 5 10 20 40 @ 50 75 96 113 125 148 173 218 223 256 SEARCH KEY 4 5 C 3069 96 4 10 C 3078 22.50 4 20 C 3081 35 4 40 C 3094 120.70 4 50 C 3106 119.98 4 75 C 3123 12.24 4 96 C 3138 185.26 4 113 C 3155 160.43 4 125 C 3166 465 4 148 C 3170 120.97 4 173 C 3188 290.64 4 218 C 3226 93.71 4  223 C 3228 102.08 4 256 C 3254 290.77 4 AMOUNT = 2.115E+03 5 8 24 67 80 81 82 106 118  121 153 175 176 186 189 207 215 217 235 236 269 SEARCH KEY 5 8 C 3075 23 5 24 C 3085 50.99 5 67 C 3113 79.95 5 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 106 C 3148 25.98 5 118 C 3158 21.92 5 121 C 3167 15 5 153 C 3175 204 5 175 C 3190 3.28 5 176 C 3191 18 5 186 C 3204 55.20 5 189 C 3207 7.58 5 207 C 3215 18.28 5 215 C 3225 36 5 217 C 3223 10.64 5 235 C 3240ԏ 3.70 5 236 C 3241 4.33 5 269 C 3216 64.28 5 AMOUNT = 8.123E+02 6 22 53 188 232 SEARCH KEY 6 22 C 3083 34 6 53 C 3109 3394.50 6 188 C 3206 10 6 232 C 3237 2282.26 6 AMOUNT = 5.720E+03 7 170 187 SEARCH KEY 7 170 C 3181 950 7 187 C 3205 14.25 7 AMOUNT = 9.642E+02  8 37 112 213 262 SEARCH KEY 8 37 C 3091 250 8 112 C 3154 100 8 213 C 3221 10 8 262 C 3261 732.30 8 AMOUNT = 1.092E+03 % 9 36 42 51 SEARCH KEY 9 36 C 3090 5324 9 42 C 3096 775 9 51 C 3107 793.50 9 AMOUNT = 6.892E+03 10 1 43 48 68 71 97 98 99 100 101 105 123 150 211 246 248 9qSEARCH KEY 10 1 C 3049 44.55 10 43 C 3097 32 10 48 C 3103 42.50 10 68 C 3114 69.95 10 71 C 3117 4.65 10 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10  105 C 3147 27.73 10 123 C 3161 34 10 150 C 3172 36.70 10 211 C 3219 48.60 10 246 C 3244 341.40 10 248 C 3246 328.44 10 AMOUNT = 1.050E+03 11 93 104 158 204 250 SEARCH KEY 11 93 C 3118 1.30 11 104 C 3146 36.70 11 158 C 3182 121.30 11 204 C 3212 1.81 11  250 C 3248 125.30 11 AMOUNT = 2.864E+02 12 18 26 27 56 57 58 65 66 117 134 137 138 139 140 192 193 194 L 197 198 199 200 201 227 238 SEARCH KEY 12 18 C 817 205.18 12 26 C 816 1581.88 12 27 C 819 1581 12 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 65 EM 821 195.18 12 66 EM 822 1415.9X5 12 117 EM 823 1000 12 134 EM 827 425.95 12 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 197 EM 843 e1527.87 12 198 EM 847 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 227 EM 852 1527.87 12 238 EM 854 48.65 12 AMOUNT = 2.998E+04 14 17 60 62 78 133 136 147 195  271 SEARCH KEY 14 17 C 813 980.89 14  60 EM 836 181.73 14 62 EM 838 2742.40 14 78 C 3126 243.77 14 133 EM 826 2590.51 14 136 EM 829 38.70 14 147 C 3164 130.46 14 195 EM 846 3584 14 271 C 3262 88.41 14 ATpMOUNT = 1.058E+04 15 11 12 13 59 61 76 77 131 132 239 SEARCH KEY 15 11 EM 810 17 15 12 EM 811 604.28 15 13 EM 812 643.69 15 59 EM 835 17 15 61 EM 837 482.61 15 76 C 3124 93.27 15 77 C 3125 181.78 15  131 EM 824 333.14 15 132 EM 825 378.68 15 239 EM 853 540 15 AMOUNT = 3.291E+03 17 25 74 122 124 156 160 209 210 214 SEARCH KEY 17 25 C 3087 704.45 17  74 C 3121 269.78 17 122 C 3160 155.47 17 124 C 3163 594 17 156 C 3179 729 17 160 C 3184 27 17 209 C 3217 547.32 17 210 C 3218 136.48 17 214 C 3224 227.40 17 AMOUNT = 3.390E+03 18 33 72 146 224 237_ SEARCH KEY 18 33 C 3068 10 18 72 C 3119 48 18 146 C 3162 39.95 18 224 C 3231 35 18 237 C 3242 35.39 18 AMOUNT = 1.683E+02 20 23 38 69 SEARCH KEY 20 23 C 3071 330 20 38 C 3092 206.59 20 69\ C 3115 200 20 AMOUNT = 7.365E+02 21 45 182 SEARCH KEY 21 45 C 3099 4000 21 182 C 3196 50 21 AMOUNT = 4.050E+03 22 39 44 83 84 85 95 102 159 169 263 SEARCH KEY 22 39 C 3093 15.40 22 44 C 3098 74.05 22 83 C 3133 125.81 22 84 C 3134 20.47 22 85 C 3135 85.15 22 95 C 3128 7.86 22 102 C 3144 42.08 22 159 C 3183 25.91 22 169 C 3176 50 22 263 C 3263 50 22 AMOUNT = 4.967E+02  23 35 79 157 161 171 172 177 179 180 181 212 222 228 229 251 259 264 SEARCH KEY 23 35 C 3088 1040 23 79 C 3127 68.45 23 157 C 3180 170 23 161 C 3186 10.08 23 171 eW C 3185 125 23 172 C 3187 174.75 23 177 C 3192 5.68 23 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 7 23 212 C 3220 170 23 222 C 3229 2774.75 23 228 C 3232 125 23 229 C 3233 3654.15 23 251 C 3249 5.7>&6 23 259 C 3259 4.60 23 264 C 3264 296.31 23 AMOUNT = 8.815E+03 24 9 127 252 SEARCH KEY 24 9 C 3076 100 24 127 C 3169 200 24 252 C 3250 50 24 AMOUNT = 3.500E+02 25 7 34 46 49  73 110 111 114 115 151 154 155 185 191 205 206 247 249 261 265 267 270 SEARCH KEY 25 7 C 3073 1340.63 25 34 C 3086 138.02 25 46 C 3101 1557.44 25 49 C 3105 504.39 25 73 C T3120 1940.43 25 110 C 3152 1000 25 111 C 3153 227.40 25 114 C 3156 835.38 25 115 C 3157 781.68 25 151 C 3173 947.50 25 154 C 3177 496.56 25 155 C 3178 136.20 25 185 C 3202 948.17 25 191 C 3209 250.65 25 205  C 3213 176.55 25 206 C 3214 10.46 25 247 C 3245 500 25 249 C 3247 784.13 25 261 C 3260 820.84 25 265 C 3265 168.01 25 267 C 3082 1350.12 25 270 C 3234 298.80 25 AMOUNT = 1.521E+04 26 41 92 94 135 9Q152 220 272 SEARCH KEY 26 41 C 3095 20 26 92 C 3112 25 26 94 C 3122 100 26 135 EM 828 82.50 26 152 C 3174 80 26 220 C 3230 31 26 272 C 3268 14.00 26 AMOUNT = 3.525E+02 27 4 52 55 64 70 # 120 162 174 178 184 202 216 253 SEARCH KEY 27 4 C 3066 250 27 52 C 3108 1537.50 27 55 EM 818 140 27 64 EM 840 622.50 27 70 C 3116 225 27 120 C 3165 638.45 27 162 C 3200 1020 27 174 xE C 3189 1372 27 178 C 3203 100 27 184 C 3201 2764.81 27 202 C 3210 720 27 216 C 3222 450 27 253 C 3252 1760 27 AMOUNT = 1.160E+04 32 3 SEARCH KEY 32 3 C 3065 223.70 32 AMOUNT = 2.237E+02 33 47 `$ 107 108 109 119 149 183 230 231 233 258 SEARCH KEY 33 47 C 3104 40 33 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 119 C 3159 12 33 149 C 3171 18 33 183 C 3199 26 33 230 C 30235 37 33 231 C 3236 42.50 33 233 C 3238 138.17 33 258 C 3258 42.50 33 AMOUNT = 5.356E+02 36 221 SEARCH KEY 36 221 EM 851 4000 36 AMOUNT = 4.000E+03 T11.PAbPROGRAM T11(INPUT,OUTPUT); VAR N:INTEGER; H : REAL; BEGIN READ(INPUT,N); H:=0; WHILE N>0 DO BEGIN H:=H+1/N;N:=N-1; END; WRITELN(H) END. 1978EMP.01f gE 496 1177.09 E 495 1076.21 E 494 392.55 E 493 456.63 E 492 497.88 E 491 574.03 E 490 890.20 E 489 842.19 E 488 788.81 E 487 1787.44 E 486 389.02 E 484 305.68 E 482 626.76 E 481 554.04 E 480 1024.14 E 479 927.20 E 478 1092.27 E 510 304.73 E 509 432.47 E 508 575.53 E 507 502.81 E 506 842.80 E 505 1033.57 E 504 254.00 W 503 702.05 W 502 4521.60 W 501 387.26 W 500 372.80 W 499 561.91 W 498 497.97 E 497 926.48 TL.MC pCHATR TOTAL.PA 0; CHATR TOTAL.PX 0 DELETE/V TOTAL.PA XFER TOTAL TOTAL.PA/R CHATR TOTAL.PA *P PASINTERP PASCALO/A/S/V/L TOTAL CHATR TOTAL.PX *P REALPRINT.BU( PROCEDURE REALPRINT (R : REAL); TYPE SIGNOF = (PLUS,MINUS); VAR I,J,CHARPOS : INTEGER; STR : STRING[15]; SIGN : SIGNOF; PROCEDURE DECDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,' CHARPOS=',CHARPOS);} R1 := TRUNC(R/PWROFTEN (J)); { WRITELN(' bjR1=',R1);} R := R-R1*PWROFTEN (J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; IF ((J = 6) OR (J = 3)) THEN BEGIN STR[CHARPOS] := ','; CHARPOS := CHARPOS+1; END; END;{DECDIGIT} PROCEDURE FRACTDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J='z,J,'CHARPOS=',CHARPOS);} R1 := TRUNC(R*PWROFTEN(J)); { WRITELN(' R1=',R1);} R := R-R1/PWROFTEN(J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; END;{FRACTDIGIT} BEGIN {do decimal part first} IF R >= 0 THEN SIGN := PLUS ELSE BEGIN R := -R; SIGN := MINUS;END; R := R + 0.005; STR :=' '; I :=8; REPEAT I := I-1 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); CHARPOS := 15-I-3-I DIV 3; IF SIGN = MINUS THEN STR[CHARPOS-1] :='-'; FOR J := I DOWNTO 0 DO DECDIGIT; STR[CHARPOS] := '.N6'; CHARPOS := CHARPOS+1; FOR J := 1 TO 2 DO FRACTDIGIT; WRITE(STR); END; GCHN.PI 7PROCEDURE GCHN(VAR FREECHANNEL : INTEGER); CONST DOTERTN = 3328; {15B7} DOTGCHN = 8746; {.GCHN} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTGCHN; SYSCALL(REQUESJT); IF ERROR THEN BEGIN MODE := SIMPLE; CALLNUM := DOTERTN; SYSCALL(REQUEST); END; FREECHANNEL := R2.INT; END; RELEASE(HEAP); END; {PCHAR} CRAND.BUl PROCEDURE CRAND(FILENAME : BIGSTR;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTCRAND = 3584; {.CRAND} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : STRPTR; TEMP  : STRING[1]; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := F?ILENAME; WRITELN(' ',FILEPTR^); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTCRAND; { APPEND 0 TO END OF STRING} R0.SPTR := FILEPTR; R0.INT := R0.INT+1; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN CRAND = ',R2.INT); ERR := ERROR; 4)ERRNUM := R2.INT; END; RELEASE(HEAP); END; {CRAND} DELETE.BUaUPROCEDURE DELETE(FILENAME : BIGSTR;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTDELETE  =256; {.DELETE} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WRITELN('  ',FILEPTR^); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTDELETE; R0.SPTR := FILEPTR; R0.INT := R0.INT+1; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN DELETE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {DELETE} PCHAR.PIgPROCEDURE PCHAR(CHARACTER : INTEGER); {PCHAR PUTS A LINE TO THE CONSOLE} CONST DOTERTN = 3328; {15B7} DOTPCHAR = 4096; {.PCHAR} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTPCHAR; R0.INT := CHARACTER; SYSCALL(REQUEST); IF ERROR THEN BEGIN MODE := SIMPLE; CALLNUM := DOTERTN; SYSCALL(REQUEST); END; END; RELEASE(HEAP); END; {PCHAR} PL.PArr .PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL% OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VAIRSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF ALFA; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF Py-ACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER);~ BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITELN($CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW;  REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN A BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A :=  Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : IN TEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT z: BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VjmAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN 8rBEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THQfEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5,L:3,A:5) END;{LIST CODE} PROCEDTURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN  TEST(FACBEGSYS,FSwYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYM = LPAREN THEN  BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETRSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERMQ(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYMU THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8,); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KINeD <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CO&NDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN  GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYSf DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF `SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATEMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM TPA.SVPPASNP.SVTEST.PA ! PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STR0ING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = i ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR CH : CHAR; PDATAFILE,PCONSOLE,PINDEX,PTREE : BOOLEAN; ROOT : WORDREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; LINE : BIGSTR;f` SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN : INTEGER; {INPUT DATA FILE} DISKOUT : TEXT ; {OUTPUT PASCAL FILE} FIELDNUMBER : INTEGER; {$WI GCHN.PI} {$I OPEN.BU} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} {$I GETINTEGER.BU} {$I GETFIELDINT.BU} {$I GETREAL.BU} {$I REALFIELD.BU} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF;Y BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTRECORDS(W : WORD); VAR X : ITEMREF; BEvTGIN X := W.FIRST; REPEAT BEGIN SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); X := X^.NEXT; END; UNTIL X = NIL; @ END; {PRINT IN ORDER} PROCEDURE PRINTINORDER(W : WORDREF); BEGIN IF W<> NIL THEN BEGIN PRINTINORDER(W^.LEFT); PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); END; END; PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN IF PCONSOLE THEN WRIT7E(' ',W.KEY : C1); WRITE(DISKOUT,' ',W.KEY : C1); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN L := 0; IF PCONSOLE THEN BEGIN WRITELN;WRITE(' ':C1+1); END; WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); END; L := L+1; IFo PCONSOLE THEN WRITE(' ',X^.LNO :C3);  WRITE(DISKOUT,X^.LNO : C3); X := X^.NEXT; UNTIL X = NIL ; IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; WRITELN(DISKOUT); WRITELN(DISKOUT) END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BE.GIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; AMOUNT,CHECK : REAL; BEGIN AMOUNT := 0.0; IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); CHECK := REALFIELD(LINE,3); AMOUNT := AMOUNT+CHECK; X := X^.NEXT END UNTIL X = NIL; IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); END; {OF PRINT ALL LINES WITH KEY W.KEY} FUNCTION QUESTION : (BOOLEAN; BEGIN REPEAT WRITE(' ANSWER Y OR N '); READLN(CH) UNTIL (CH = 'Y') OR (CH = 'N'); QUESTION := CH = 'Y'; END; BEGIN OPENFILES; WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); PCONSOLE := QUESTION; WRITELN(' WANT DATA BASE FILE PRINTED?'); PDATAFILE := QUESTION; WRITELN(' WANT INDEX PRINTED? '); PINDEX := QUESTION; WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); PINDEX := QUESTION; WRITE(' SORT ON FILEN NO. 2,3,4,5? '); READLN(FIELDNUMBER); ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1; IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); IF PDATAFILE THEN WRITE(DISKOUT,' ',N : C3,' ',LINE); CASE LINE[1] OF 'C','E','W' : BEGIN ID := GETFIELD INT(LINE,FIELDNUMBER); SEARCH(ROOT); END; END; END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} IF PTREE THEN PRINTTREE(ROOT); WRITELN(' MEMORY LEFT = ',MEMAVAIL); IF PINDEX THEN PRINTINORDER(ROOT); WHILE NOT EOF(INPUT) DO BEGIN WRITE(' SEARCH p_KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN BEGIN PRINTWORD(WF^); PRINTLINES(WF^); END; END; END. 1978EMP.03f E 519 84.76 E 520 483.00 E 511 830.88 E 537 464.55 E 531 356.37 E 529 589.96 E 530 436.65 E 528 393.86 E 527 888.88 E 526 1034.18 E 525 991.35 E 524 733.00 W 522 182.00 W 523 1549.00 W 521 2210.00 W 518 3391.80 W 517 277.10 E 516 259.01 E 515 439.51 E 514 0398.75 E 513 1113.18 E 512 893.06 W 540 4601.70 CONSOLE.01q$/PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); I := I+1 ELSE i IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERGNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CRETURNLINEFEED; BEGIN PCHAR(13);PCHAR(10); INSERT(LINE,INTERNALPOS,CHARACTER); {REMOVE NEXT 3 LINES AS APPROPRIATE} WRITESTRING(LINE); PCHAR(10); LINE.LEN :=0; INTERNALPOS :=1; DISPLAYPOS :=1; CURLINE := CURLINE+1; END; {OUTPUT CARRIAGE RETURN LINE FEED} PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : ; {UP} 11 : ; {CARRIAGE RET} 13 : CRETURNLINEFEED; {DELETE} 127 : DELETECHARACTER; END; {CASE} END; {ACTION} PROCEDURE INITIALIZE; {ALL VARIABLES} BEGIN LINE.LEN := 0; INTERNALPOS := 1; {POSITION OF CURSOR IN MEMORY} DISPLAYPOS := 1; {POSITION OF CURSOR ON SCREEN} CURLINE := 1; END; {INITIALIZE} PROCEDURE OPENFILES; VAR INSTRING : STRING[32]; BEGIN WRITE(' INPUT FILE NAME? ');READLN(INSTRING); FILET*ITLE(INPUTFILE,INSTRING);RESET(INPUTFILE); WRITE(' OUTPUT FILE NAME? ');READLN(INSTRING); FILETITLE(OUTPUTFILE,INSTRING);RESET(OUTPUTFILE); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PC;\HAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW CURSOR} BEGIN {MAIN PROGRAM} INITIALIZE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 0 ;{CTRL P} END. GETINTEGER.BUlRFUNCTION GETINTEGER( STR : BIGSTR;VAR I : INTEGER) : INTEGER; LABEL 1,2,3; TYPE SIGNOF = (PLUS,MINUS); VAR LEN,FNUMB : INTEGER; SIGN :SIGNOF; BEGIN FNUMB := 0; SIGN := PLUS; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN IF NOwT (STR[I] IN ['0'..'9','-']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END; 2 : IF STR[I] IN ['0'..'9'] THEN BEGIN { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB);} ! FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); I := I+1; IF I<= LEN THEN GOTO 2; END; 3: CASE SIGN OF PLUS : GETINTEGER := FNUMB; MINUS : GETINTEGER := -FNUMB END;{CASE} END;{getinteger} BTREE.MCrr{CHATR BTREE.PA 0 CHATR BTREE.PX 0 DELETE/V BTREE.PA XFER BTREE BTREE.PA/R PASINTERP PASCALO/S/V/A/L BTREE.PA CHATR BTREE.PX *WP DATA.R1s B 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 0 0 C 2338 6.00 0 0 C 2345 53.35 0 0 C 2347 38.00 0 0 C 2348 50.00 24 1 C 2356 264.05 0 0 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 1 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C i2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 2 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 DM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5$ 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 0 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.2 '0 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.00@ 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18 z$8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 24 82 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 1r0 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 11 C 2503 89.37 8 11 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.00  5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 26 11 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 0 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106.D_32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 C l2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 25688 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 1039.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2897 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 17 20 C 2621 368 23 28 C 2622 52.30 5 20 C 2623/ 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 zC 2638 1200 21 21 C 2639 1000 21 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 20 05.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 16 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 22 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 2'3 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 24 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 C 2699 110.25 1 25 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 635.69 27 26 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 16 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 3920.F58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5 2I7 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 C 2E762 1510 21 29 E 496 1177.09 12 3 E 495 1076.21 12 3 E 494 392.55 12 1 E 493 456.63 12 1 E 492 497.88 12 1 E 491 574.03 12 1 E 490 890.20 12 1 E 489 842.19 12 1 E 488 788.81 12 1 E 510 304.73 12 5 E 509 432.47 12 5 E 508 575.53 12 5 E 507 502.81 12 5 E 506 842.80 12 5 E 505 1033.57 12 5 E 504 254.00 12 4 W 503 702.05 14 4 W 502 4521.60 14 4 W 501 387.26 14 3 W 500 372.80 14 3 W 499 561.91 14 3 W 498 497.97 14 3 E 497 926.48 12 3 E 519 84.76 12 12 E 520 483.00 12 8 E 511 830.88 12 7 E 537 464.55 12 10 E 531 r356.37 12 9 E 529 589.96 12 9 E 530 436.65 12 9 E 528 393.86 12 9 E 527 888.88 12 9 E 526 1034.18 12 9 E 525 991.35 12 9 E 524 733.00 12 8 W 522 182.00 14 8 W 523 1549.00 14 8 W 521 2210.00 14 8 W 518 3391.80 14 7 W 517 277.10 14 7 E 516 259.01 12 7 E 515 w439.51 12 7 E 514 398.75 12 7 E 513 1113.18 12 7 E 512 893.06 12 7 W 540 4601.70 14 10 E 532 1062.02 12 10 E 533 1122.84 12 10 E 534 999.70 12 10 E 535 538.32 12 10 E 536 643.20 12 10 E 538 386.34 12 10 E 539 105.03 12 10 W 541 1703.92 14 11 W 544 5.00 14 TE11 W 545 1345.38 14 11 E 546 924.04 12 12 E 547 982.73 12 12 E 548 873.83 12 12 E 549 473.57 12 12 E 550 542.91 12 12 E 551 440.27 12 12 E 553 299.63 12 12 E 552 185.93 12 12 E 568 343.38 12 15 E 569 304.73 12 15 E 567 596.15 12 15 E 566 465.02 12 15 E 565 948.24 12 14 E 564 985.99 12 14 E 563 991.80 12 14 E 557 473.57 12 13 E 558 601.00 12 13 E 560 265.01 12 13 E 555 991.16 12 12 E 554 927.77 12 12 E 556 852.47 12 13 W 562 4255.04 14 13 E 561 297.08 12 13 E 559 688.29 12 13 E 570 1050.61 12 16 E 571 1069.1W1 12 16 E 572 1019.07 12 16 E 573 566.88 12 16 E 574 630.97 12 16 E 575 269.88 12 16 E 576 472.09 12 16 E 577 346.43 12 16 W 578 4412.14 14 16 W 579 483.00 14 16 W 580 2210.00 14 16 W 581 38.36 14 16 E 582 1046.89 12 17 E 583 1151.39 12 17 E 584 996.51 12 17 E 585 627.63 12 17 E 586 732.19 12 17 E 587 537.45 12 17 E 588 513.44 12 17 E 589 374.42 12 17 E 590 110.15 12 17 E 591 979.37 12 18 E 592 1426.28 12 18 E 594 531.30 12 18 E 596 500.91 12 18 W 599 5659.58 14 18 E 593 960.21 12 0 E 595 645.08 12 0 E 597 [430.98 12 0 E 598 343.31 12 0 W 600 1863.74 14 18 W 602 850.20 14 18 E 603 796.26 12 20 E 604 802.32 12 20 E 605 379.26 12 20 E 606 542.91 12 20 E 607 283.06 12 20 E 608 180.93 12 20 E 609 282.18 12 20 E 615 369.00 12 21 W 617 2861.14 14 21 E 625 2210.00 12 23 E 627 1209.08 12 24 E 628 1158.89 12 24 E 629 552.62 12 24 E 630 596.12 12 24 E 632 359.96 12 24 W 634 800.03 14 24 E 635 921.48 12 25 E 636 1050.72 12 25 E 637 533.66 12 25 E 638 610.74 12 25 E 639 361.79 12 25 E 640 201.10 12 25 E 645 346.92 12 26 EZ 610 325.46 12 21 E 611 1020.87 12 21 E 612 922.47 12 21 E 613 505.84 12 21 E 614 595.69 12 21 E 616 258.02 12 21 E 618 1053.55 12 23 E 619 845.14 12 23 E 620 420.35 12 23 E 621 548.51 12 23 E 622 293.42 12 23 E 623 339.16 12 23 E 624 374.42 12 23 W 626 483.00 14 23 E 631 142.22 12 24 W 633 2792.12 14 24 E 660 484.10 12 29 W 662 2276.24 14 29 E 650 981.35 12 28 E 651 992.28 12 28 E 652 327.45 12 28 E 653 384.95 12 28 E 641 1081.13 12 26 E 642 1042.43 12 26 E 643 490.20 12 26 E 644 516.116 12 26 E 646 326.75C 12 26 W 647 2424.72 14 26 W 648 393.57 14 26 W 649 251.13 14 26 E 654 373.60 12 28 E 657 1176.43 12 29 E 658 1184.18 12 29 E 659 566.46 12 29 E 661 247.78 12 29 E 663 393.62 12 29 E 664 40.27 12 29 T19.0.8PROGRAM T19(INPUT,OUTPUT); CONST NUL=0; SOH=1; STX=2; ETX=3; EOT=4; ENQ=5; ACK=6; BEL=7; BS=8; HT=9; LF=10; VT=11; FF=12; CR=13; SO=14; SI=15; DLE=16; DC1=17; DC2=18; DC3=19; DC4=20; NAK=21; SYN=22; ETB=23; CAN=24; EM=25; SUB=26; ESC=27; FS=28; GS=29; RS=30; US=31; SPACE=32; DELETE=127; TYPE MODETYPE = (INSERT,REPLACE); VAR CHARIN : INTEGER; ALFA: BOOLEAN; MODE : MODETYPE; FUNCTION GCHA:INTEGER;EXTERNAL; PROCEDURE PCHA(CHRIN:INTEGER);EXTERNAL; PROCEDURE ACTION(CCHR:INTEGER); BEGIN WRITELNZ7(OUTPUT,'ACTION') END; BEGIN MODE := INSERT; REPEAT BEGIN CHARIN := GCHA; ALFA := ((CHARIN >= SPACE) AND (CHARIN < DELETE)); IF ALFA THEN CASE MODE OF INSERT : BEGIN WRITELN(OUTPUT,'INSERT ');PCHA(CHARIN) END; REPLACE : BEGIN WRITELN(OUTPUT,Uh'REPLACE ');PCHA(CHARIN)END; END ELSE ACTION(CHARIN) END UNTIL EOF(INPUT) END. TKOM.__ APROGRAM TKOMPAR(INPUT,OUTPUT); TYPE COMPARATIVE = (LESS,GREATER,EQUAL); TEXT = ARRAY[1..10] OF CHAR; VAR A : TEXT; B : TEXT; I,J : INTEGER; FUNCTION KOMPAR ( A : TEXT; B : TEXT; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE ; EXTERNAL; BEGIN I :=-1; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,A[I]);I := I+1 END; RESET(INPUT); J := 1; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,B[J]);J := J+1; END; CASE KOMPAR(A,B,1,10) OF LESS : WRITELN ('LESS'); EQUAL : WRITELN ('EQUAL'); GREATER :z WRITELN ('GREATER') END END. FIXFL.@; THIS ROUTINE INTERFACES WITH PASCAL AND FIXES AND FLOATS ; CALL VIA ; FUNCTION FIX (X:REAL);INTEGER;EXTERNAL; ; FUNCTION FLOT (I:INTEGER);REAL;EXTERNAL; ; X=FLOT(I) ; I=FIX(X) .TITL FIXFL .ENT ?FIX,?FLOT .EXTN FENT,XPRET .EXTD WSA .NREL ?FLOT: ~JMP .+1 STA 0 FVAL ;SAVE POINTER TO FUNCTION RETURN LDA 3 @SP ;GET INTEGER ISZ SP ;CONVERT SINGLE WORD INTEGER TO DOUBLE WORD INTEGER SUB 2 2 ;CLEAR AC2  MOVL# 3 3 SZC ;SET LST. SIG. WORD TO -1 IF NEGATIVE ADC 2 2 STA 3 @SP ;STORE NEW D W INbTEGER ON STACK DSZ SP STA 2 @SP SUB 3 3 ;CLEAR AC3 LDA 2 WSA ;AND ZERO WSA WITH IT STA 3 0 2 FENT ;ENTER RFPI FFLO @SP ;FLOAT DOUBLE WORD INTEGER TO SING PREC REAL FEXT ;EXIT RFPI (REAL REPLACES INTEGER ON STACK) LDA 2 FVAL ;NOW SEND REAL TO CALLER LDA 0 @SP ISZ SP STA 0 0 2 LDA 0 @SP STA 0 1 2 SUBO 1 1 ;GENERATE +2 WORDS TO PASCAL INCZL 1 1 XPRET ;RETURN TO PASCAL FVAL: 0 ;AC2 STORED HERE ?FIX: DSZ SP ;SET ADDRESS TO BOTTOM OF REAL STA 0 FVAL ;SAVE POINTER TO FUNCTIOEN VALUE SUBO 2 2 ;GENERATE 0 LDA 3 WSA ;AND ZERO WSA WITH IT STA 2 0 3 FENT ;ENTER RFPI FFIX @SP ;FIX REAL NUMBER WHICH IS @ SP FEXT ;DP INTEGER NOW REPLACES REAL LDA 2 FVAL ;RETURN SP INTEGER(MS WORD) TO CALLER ISZ SP LDA 1 @SP STA 1 0G 2 SUBZL 1 1 ;GENERATE 1 WORD TO PASCAL XPRET ;AND RETURN .END T10.PA. ~PROGRAM T10(INPUT,OUTPUT); VAR CH : CHAR; BEGIN WRITELN(OUTPUT,'PROG T10'); READ(INPUT,CH); WRITELN(OUTPUT,' END'); END. 1978EMP.04f  E 532 1062.02 E 533 1122.84 E 534 999.70 E 535 538.32 E 536 643.20 E 538 386.34 E 539 105.03 W 541 1703.92 W 544 5.00 W 545 1345.38 E 546 924.04 E 547 982.73 E 548 873.83 E 549 473.57 E 550 542.91 E 551 440.27 E 553 299.63 TEST.22 PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STR0ING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = O^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD  LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR ROOT : WOR6DREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; F : TEXT; INFILE : TEXT; LINE : LINESTRING; SYSERROR: BOOLEAN; {SYS"TEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN,DISKOUT : INTEGER; {INPUT OUTPUT DATA FILES} RECORDPOS : ARRAY [1..100] OF DPINTEGER; L : INTEGER; {$I GCHN.PI} {$I s?OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I WRL.PI} {$I RDL.PI} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^y.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN W$nRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(HEW^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF;  BEGIN WRITE(' ITEM KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; WRITE(X^.LNO:C3,' '); SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); X := X^.NEXT END UNTIL X = NIL END; {OF PRINT ALL LINES WITH KEY W.KEY} BEGIN OPENFILES; ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); WRITELN(' FILE POS ',PRESPOS.UPPER,PRESPOS.LOWER); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1;WRITELN(N:C3); {WRITE LINE NO} RECORDPOS[N] := PRESPOS; WRITELINE(2,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} FOR L := N DOWNTO 1 DO BEGIN WRITELN(' FILLE POS ',RECORDPOS[L].UPPER,RECORDPOS[L].LOWER,' '); SPOS(DISKIN,RECORDPOS[L]); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(DISKOUT,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; { WRITELN(OUTPUT,ID); SPOS(3,PRESPOS); READLN(INFILE,LINE);WRITEΨLN(' STRING ',LINE); SEARCH(ROOT); END; PRINTTREE(ROOT); WHILE NOT EOF(INPUT) DO BEGIN WRITE(' SEARCH KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN PRINTWORD(WF^); PRINTLINES(WF^); END; } END. T29.W$kPROGRAM T27(INPUT,OUTPUT); TYPE ALPHA = ARRAY [1..35] OF CHAR; VAR IOCH,BYTES,ERROR : INTEGER ; BUFFER : ALPHA; FILEEND : BOOLEAN; PROCEDURE OPEN ( VAR FILENO : INTEGER ; FILENAME : ALPHA ; VAR ERRORNUMBER : INTEGER );EXTERNAL; FUNCTION ENDL ( IOCHANNEL [ : INTEGER ):BOOLEAN;EXTERNAL; FUNCTION ENDF ( IOCHANNEL : INTEGER ) : BOOLEAN;EXTERNAL; PROCEDURE RDLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : INTEGER ; VAR ERRORNUM : INTEGER );EXTERNAL; PROCEDURE WRLI ( IOCHANNEL : INTEGER ; BUFFER : fALPHA ; VAR NBYTESWROTE : INTEGER ; VAR ERRORNUMBER : INTEGER );EXTERNAL; BEGIN OPEN (IOCH,'FOBAR',ERROR); BYTES := 127; FILEEND := ENDF(IOCH); REPEAT BEGIN RDLI (IOCH,BUFFER,BYTES,ERROR); IF ERROR <> 6 THEN BEGIN WRLI(2,BUFFER,BYTES,ERROR); END+ ELSE END; UNTIL ENDF(IOCH) = TRUE END. KOMPAR.\7:3SEGMENT(INPUT,OUTPUT); TYPE COMPARATIVE = (LESS,GREATER,EQUAL); CHARACTERS = ARRAY[1..10] OF CHAR; FUNCTION KOMPAR ( A : CHARACTERS; B : CHARACTERS; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE; VAR I : INTEGER; T : COMPARATIVE; BEGIN T := EQUAL; I := NSTART; WHILE ( ( T = EQUAL ) AND ( I <= NEND ) ) DO BEGIN WRITELN(' ',A[I],' ',B[I]); BEGIN IF A[I] > B[I] THEN T := GREATER ELSE IF A[I] < B[I] THEN T := LESS END; I := I+1 END; KOMPAR := T END. T100.!! +( PROGRAM T100(INPUT,OUTPUT); BEGIN END. TTT.PA 6PROGRAM TT; TYPE NODE = RECORD X,Y : REAL;POINT : INTEGER END; LINKS = RECORD FROMNODE,TONODE,ATTRIBUTES : INTEGER END; VAR NEWLINK : LINKS; LINK : ARRAY[1..50] OF LINKS; I : INTEGER; BEGIN WHILE ((LINK[I-1].ATTRIBUTES > NEWLINK.ATTRIBUTES) AND (LINK[Q3I-1].TONODE > NEWLINK.TONODE) AND (LINK[I-1].FROMNODE > NEWLINK.FROMNODE)) DO BEGIN I := I-1; LINK[I+1] := LINK[I] END END. R.MC TCCHATR R.PX 0 DELETE/V R.PA XFER R R.PA/R PASINTERP PASCALO/S/V/A/L R CHATR R.PX *WP 1978EMP.05f hE 552 185.93 E 568 343.38 E 569 304.73 E 567 596.15 E 566 465.02 E 565 948.24 E 564 985.99 E 563 991.80 E 557 473.57 E 558 601.00 E 560 265.01 E 555 991.16 E 554 927.77 E 556 852.47 W 562 4255.04 E 561 297.08 E 559 688.29 WRS.PIr PROCEDURE WRITESEQUENTIAL( CHANNEL : INTEGER; BUFFER : LINESTRING; VAR BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7487; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; TEMPPOINTER : LINEPOINTER; BEGIN MARK(HEAP);{ NEW(REQUEST); NEW(TEMPPOINTER); TEMPPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.LPTR := TEMPPOINTER; R0.INT := R0.INT+2; R1.INT := BYTESOUT; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IxN WRITESEQUENTIAL = ',R2.INT); ERR := ERROR; BYTESOUT := R1.INT; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE SEQUENTIAL} TEST.23. PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STR0ING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = i ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR CH : CHAR; PCONSOLE,PINDEX,PTREE : BOOLEAN; ROOT : WORDREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; LINE : BIGSTR; SYSERRORa|: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN : INTEGER; {INPUT DATA FILE} DISKOUT : TEXT ; {OUTPUT PASCAL FILE} FIELDNUMBER : INTEGER; {$I GCHN.PI}X {$I OPEN.BU} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} {$I GETINTEGER.BU} {$I GETFIELDINT.BU} {$I GETREAL.BU} {$I REALFIELD.BU} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEF/T) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTRECORDS(W : WORD); VAR X : ITEMREF; BEGIN X := W<.FIRST; REPEAT BEGIN SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); X := X^.NEXT; END; UNTIL X = NIL; END; {PRINT IN ORDER} PRO^CEDURE PRINTINORDER(W : WORDREF); BEGIN IF W<> NIL THEN BEGIN PRINTINORDER(W^.LEFT); PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); END; END; PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN IF PCONSOLE THEN WRITE(' ',W.KEY : C1); WRITE(zDISKOUT,' ',W.KEY : C1); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN L := 0; IF PCONSOLE THEN BEGIN WRITELN;WRITE(' ':C1+1); END; WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); END; L := L+1; IF PCONSOLE THEN WRITE(' ',X^X.LNO :C3); WRITE(DISKOUT,X^.LNO : C3); X := X^.NEXT; UNTIL X = NIL ; IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; WRITELN(DISKOUT); WRITELN(DISKOUT) END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; AMOUNT,CHECK : REAL; BEGIN AMOUNT := 0.0; IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); WRITELN(DISKOUT,' SEARCH]i KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); CHECK := REALFIELD(L#WINE,3); AMOUNT := AMOUNT+CHECK; X := X^.NEXT END UNTIL X = NIL; IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); END; {OF PRINT ALL LINES WITH KEY W.KEY} FUNCTION QUESTION : BOOLEAN; BEGIN REPEAT WRIaTE(' ANSWER Y OR N '); READLN(CH) UNTIL (CH = 'Y') OR (CH = 'N'); QUESTION := CH = 'Y'; END; BEGIN OPENFILES; WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); PCONSOLE := QUESTION; WRITELN(' WANT INDEX PRINTED? '); PINDEX := QUESTION; WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); PINDEX := QUESTION; WRITE(' SORT ON FILEN NO. 2,3,4,5? '); READLN(FIELDNUMBER); ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1; IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); WRITE(DISKOUT,' ',N : C3,' ',LINE); CASE LINE[1] OF 'C','E','W' : BEGIN ID := GETFIELDINT(LINE,FIELDNUMBER); SEARCH(ROOT); END; END; END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} IF PTREE THEN PRINTTREE(ROOT); WRITELN(' MEMORY LEFT = ',MEMAVAIL); WHILE NOT EOF(INPUT) DO BEGIN IF PINDEX THEN PRINTINORDER(ROOT); WRITE(' SEARCH KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN BEGIN PRINTWORD(WF^); PRINTLINES(WF^); END; END; END.. TEST10.q]PROGRAM TEST(INPUT,OUTPUT); CONST STRSIZE = 15; TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..STRSIZE] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLP8REFIX; VAR LINE : LINESTRING; I,J : INTEGER; NBYTES : INTEGER; FILENAME : LINESTRING; DATA :LINESTRING; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; { $I CRAND.PI} {$I RDL.PI} {$I WRL.PI } BEGIN WRITELN('ENTER DATA'); READLINE(0,DATA,NBYTES,SĒYSERROR,ERRORNUMBER); WRITELINE(2,DATA,NBYTES,SYSERROR,ERRORNUMBER); DATA.STR[NBYTES] := CHR(0); CRAND(DATA,SYSERROR,ERRORNUMBER); END. PASINTERP.SVld z"f  $Q(D(8)(*]H* noz(D("0IS[0i. !,MM+!k" " """@% C¾¾ˡ ¾(( ڢ"ڢDڢٞ#ֲD(ڢ"ڢ?ڢٞ#ֲ?(!p' ۢ%"ڞ#Ś!,)$Iۢ  ȡ&ܢ?ܢ ؞#á ȡEܢܢڢܢڢڢ؞#áBs *ɡM 0 á޿ ھȡ ھޕ¾áL d+'Páئ2'PPɄPR Module  Segment P+?Q+?R+??  , Procedure ! , Offset +02),ؾȡ&u¾azȄ aAá#:%ֲb%b  b   b ȡ+ b¾؞#ڡ á'v-?F PASINTERP.ER? 2.B ERMESƀƀl ƀ 'V*ڢ ˡ2ɍáb-. PASINTERP.ER bB-šibš"b̀ƀbƀƀƀb̀ƀbƀFile: "ƀ-ƀ"ƀƀ,ƀš.b̀ƀbƀƀƀƀƀ-̀ʀˡʀ ٚʀ ڞ#*|l ޢޢؚޢٚݟˡ-ڢF!۞#!@//0 H CLIFILE'( "" "d""')-!*+,IǴ ȡ ʁI!ʁáֲ>)'> FCOM.CM COM.CM  ʁƀ!ʁȡʁ ʁá Há ʁƀ!Ձƀ!šƀ%ƀ.PXƀƀÍ"ƀ́Ɓƀ!Ɓ.PX$Ɓ!ƀƀ^ƀƀƀʁzʁ{ ō*ʁƁ'20 $ƀáʁá1ʀȡDʁ'ۤ́ƀۤ9́ʁʁʁʁʁښʁʁá'́ʁ́ʁʁʁʁʁ!ʁ&ʁʁ)" :1ȡֲá(2ƀƀƀCLIFILEƁ)ʁƀFCOM.CMƀCO0M.CMƀƀ2ƀ2,ˡUƀ ƀƀ 2ƀʁʁ-ֶ,2,,ƀeܢ ܢjܢlݢٚݢܢFݢݣ šܢ,ܢnڂ4ܢxܢzܢtܢrܢvܢ6 ܢp ܢ,ܢnݢܢ~ݢO ܣ7ۡ ܢ0,ظ,أ5(/پ!ġآF!!&/٪!%آF!آFNá//ݢ ݣ57ٹ$& .ݢFINPUTݢFOUTPUTDݢzݢFINPUT ݢFD!*Rˡ/ݢF?!ظ*ݢFݢFآzݢ.ٚá=ߢߢޣ ڞ# Äߢߢޣ ڞ#0ߢ*"ڞ#0ߢ?ߢޣ ߢڞ# ˡ0'VPI  ܓ áܡ ݢF! z//áߢڞ#ݣá#ߢڞ#á ݢrݣ8ݢrߢڞ#ݢjá ݢh$ݢh$ݣˡ& $أ5xۢ ڶ*˄*ۣۣ#ۢjۢlۢxۢvݢ?ݢ ڞ#0| ݢݢܣ ڞ#٢ ٢l٣4٣á٢v٢x٢r٢t4$ۢ ۣ8č'/ۢrٚۢڞ#ۢl> ٣;٣8٣٣á!٣6 !٣< ۢ ۣ5)/ۣ=)ֶ*#ݢ?ݢݢݢ ٞ#ܢ ;ڡ2ۣáۢ~ܢ ۢ~ܢ ۢl0ۢh3ڢ ڣ6 /ڣáڣ9ڣ:šJڣ?3ڢrڢtڣ=,ܢܢڢ~¾ٞ#0 áܢ $ڢ|ڢ~ڣ9¾ڢrڣ9ڢlڣ>Úڣ>ڢ6ڣ8ڢpڣ>ڢ| ڢxڢxڢl3ڣ6 ڢrڣ9 &أ9أ:šrڢ ڣ5)/ڣ=)ֶ*#ܢܢ ܢ?ٞ#ۢ áڢ~ۢ 0ڢtڢrtأáأ;&آvأ6 /&.٣;٣6٣Ä&٢v$! &آv !أ>آv#/!ڿܣ<ܣ>&ܣ<&3 J!ܣ> á&ܣ>+ܣ>-Í ܣ>-&ܣ> 0ܣ>&ۡڡ/5\ t !ݣ> á&ݣ>+ݣ>-Í ݣ>-&ݣ>ټ ݣ>0&ݣ>.áD&ݣ>$Kš/ټ£>0ܞ$ݣ>ݣ>eݣ>EÍړ>ݢv ڡ܀Kš/ɡ ټ܀$ ټܞ$ڡ/ۡټ ڢ ڢhܢܢ ڣڢ~ڣ9ܢ? ܢܢ?ٞ#0V4أ5)/ڢ m\ڣájڢ~ڣ9ڣ>ڢrڣ9ڣ9DŽڣ>7ۢ ڣ94ۢ ڢrڣ>áڢ~ܢܢ?ٞ# ڣ=)/ڣ8ڣ9ȡڢlڣ8ڣ9á ڢpڣ84ڢrڣ9 šآ| آ|ٚ (ڢ ڣá,ڣ9šۢ ڣ94ۢ ڢrٶ*á) J# ەȡآ|¾ á @پȡš ەڮȡآ|¾ á Lآ| #آ| ##/s ١ True False*" ɡ ـȡ-32768 c-ġIٲ"ܤ00ńބݿ0ˡ ٲ"ܤáɡ`  BdX  ġ š Kš/  ڞ$5Jɡ šKš/  ڞ$5M 5ֶ6خȡ: 06  يon   á8 N7 $ $ɍKōKō$/ ݡ  @ܞ$  A5ޕܕȡ 6á-6 67.6ޮġ06>á7ɡ 5 @$5-6 67.67E6ȡ-6+6 ɡ06 z٦ńۂؾȄ۞ۿ+/8پؾȡؾپپؾ+/2ھšS¾پھ¾ȡ3ܕž šھگ:f1H x \ D d l " >Td `r$ PHZ   VH b B"[xn7  8X6H**+ 8I8)6X6H**+ 8JR8)6H7(**+B 8I878)60-P-("H"(( < n0-P-("H" ;xV'|-vC0uYg^oM.86420 (33 >x#6E[PR]........ RRRRRRRRUUUUUUUUUUUUUUUU12(T(]) X(*2(T(] X(*P(T(] X(*$((B]0(" X(*B]1 /2(T(] X(* /2(T(] X(* /P(T(] X(* /$((B] W(* W(*(T(](T(] W(*2 X(*"(D(] W(*2 X(*P(T(] W(*2 X(*$((B]$((4((ӐB]4((Ӑ2(T(]1 4((Ӑ"(D(] W(*H*P7@80(P( " n- 8078("CP8)](L( W(*] W(*4((ӐH*P7@80(P( " n- 8078("1TCO W(*0(P(<((H*"CO4((Ґ"0I(D(]$((4((8IғH**JO$((/<((H*2(J(*(\(8)]H* n X(* $((4(((T(]H*P4(( p8)4(((T((*O X(*4(("(D(] X(*H*4((<((Ӑ"CKO X(*H*<((4(( W(*H*<((4((P7+ 0I@07 nOP7# 0I@07X7H88IҒ*J@(887O$((0H4((ӐB] W(*H*,(( q<(((\((* W(*H* p8j#8k+(D(O$((4((Ӑ2Ґ(T(]H*,(3x($((<((ҒP3SO$((Z(D(]$(((D(]$((4(( $((4(((T(]$((4((J JZJ[(T(]H* n,H*4((,((/ J r[  rZ  K/(L(O nH*4((,((J s(L(O0("(D(H*4((7/8(+J s8(JCO n n+$((4(((T(]$((4(((T(]$((P(D(]$(((D(]0(]]0(]]0(":ZB8)]0("(D(] X(*4(((T(]$((<((4((.J(T(8)]H* n$((4((Q(D(]$((4((P(T(]$((4((/P(D(]$(7b(4((JP(D(]$((4((JQ(D(]$((4((/Q(D(] P0@0A0B0C W(*9@R}G9KQgRRRR X(*H* K@6<((4((Ӑ#* L6K X(*H* L@6<((4((Ӑ#* K6L$((8H8-CP(\(:H*9#(D(8(3;X7Ґ" 8I@87P7+ 0I@07  FF D@6H6X7Ґ" 8I@87P7+ 0I@07&$68(3;X7Ґ" 8I@87P7+ 0I@07 P @ B<((4((,((KL X(*H*9+(L(8(3K; @6P7# 0I@07X7Ґ* 8I@876 W(*4(( ]=H*8("CX($(('H*0(P7@80(P( " n- 8078((D(/ "C,((CO$(((D((D(H*<((4(((T(O K n!8 nP6X7(G8k#(786(D(86(G8j+(6(D( 7(D(O$((0(P(H*** G+8l#P8)B(*] z H6"+J6P(O lH6"+J6 ]H6"+B6c90R?RO E H6"+6Q,((0(P(BO / H6"+6P  H6"+6Q  H6"+6QX6H*8(+3  8(+6 K8(+SK(D(0(P7@80(P( " n- 8078("C,((C?? @ @0(P(" A8)]0(P("B"B @" 48)]0("PB]0("PB]0( %P(8)]0( !P(8)]0( P(8)]0( P(8)]0("B"B% P(8)]H*0( P(O[|p!(D(!(D(0("K  P(8)]0( P(8)]@4((J!  ! "(D("(D(]K nLAABdC>D'EjE$FG_^H;I%@JHvJԤKLZM8N#O4WO jP"QVuR65S!T-TUYPVRW3X OY1YZ~7[N\1M]Л^Ba^_x^`K;Ka/bc)c]cdrYeGf,ogh'h)imyjDl9k*ãlFmlm 8nhgoA@p({q}MqrO"scut>:u&vOvwx^y;Xz%{.{D| }Z~8#_0+80(D((L((T((\(8,(\(8(X0] W(* W(*H*(\(80K8>PX6#/.PC#  n ((0<0- n ((000C0(X("C"86#(0H00CK863P,* J$((  P  0,"P+ 0@/P8) W(*H*00J0>*H, W(*H*00J(+0-0.00(:J,+0,<,K!I""K SP+"K99 0+P,"P+"@0I8) #;80C#PCX)0+"P7@80(P( " n- 807"PH*] W(*00J0;"P+ ;@, 1"o80#PCX)2 I!"@60(6$0+"(J@680X)/ W(*@6(J$,K1͕T!7 8>P#0)(BX) 6"C<8)#@,#P@0+3K 8)P+ 6  CX(H*0)(C"CX((*80#Z;PX)]$+(@ +H6,(($((0+ @"PP*$+0J  $,0I O3K(\( &<(( @"PS3PҐ"0J '0I 3PҐ"0I;l(6H* n "o0+ @"PP*+H6(6#PH63K(\( <(((6 "(I,((  $(("PSO(L( @"PS; W(*S0JJ0+"P]$((]$((*.*J *(A"P]P] W(*H*1RDK0RR lg' RRRRRRRRsiGIMKOQS+2Rz7YRRR4((Ӑ -PB]4((Ӑ"0- n0. n@-]$((4((Ӑ(-H-PJ < ( n H"(*] $<((C<((K<((SO  -0(0</(D(]$((P(D(]4((!!!$((<((4((/]X7H88IҒ/8*J@(8878)]$((<((4((/OX7Ґ* 8I@87P7@80I#C@ 807O$((<((4((JOX7Ґ* 8I@87P7@80I#C@ 807O8(+#C O#3$+KX7Ґ* 8I@87 98X7Ґ* 8I@87 ((+KX7Ґ* 8I@87 X7Ґ* 8I@87 #+C AX(O P @ A B C D0(4 8()X(X)X0CX1! C =(D()] J2H)H($,C#)  1""6"A"U nX6+8)'K;0JE'E3 @;#PUbcdX6$,0JE8+#E#P *E0; A""20C01@(@0 $6! (D((L(81X))]3X69Ɛ6X6 9 P@ @!6X7KKX8 p88Z7X7KKX8 q88Z72\2 @BB y<222\2 z @<222D2 u$222T29422 vOCXRSX6! YP3! YP2! YP4!P56 f n n2\284#+3;%84)H6+9 848B2\2<6P@@@2\6<2284CKS#(J42284)C2\204"*!bJ"*pB82!=X2!8C!6C BCCC+K/7 p823SG#+3CK#+KKG82!X2YD84!KX4 "834222\2841=05:X4PpSҊC!0CCCC 83422@2\284#11+ ZP#! X483422 nDK2\2841X4#+ # + P+834224832\2 0422 C B A @P2\22D2 |84!̝X4P#+ # + #PP$22 834222\284#+)C#+pK#+ ]1 (B 8402!SP2 BB!MB#+3 q02N84Z BB6+ p02:K C 1584#+ C 02 )84#C84)"C029P2841 X4 83422 n2\283(4KC*K w# w }! +C w {# x4222\28304"CB!K w } )H?C!A w | 4C w 4 w } # w!9 } !0 4 w# w { # w | ~!& w }# x+!=04:J83C! w ~#! w ~422 n(@FLjB!<C 4 w# w | # w { ~ 4 w 4 w } 4 w!*  !( ~ }# ! w } {! w }422P04B! BBBBB n@A @@3d@ry@o-T8BSP B]v1IfBZ,YAB>)B=1oB-\K߬u2\28304"2",Ca w04")J CpC!$ !" w }0404"+J BCS# w# w ~ {! w } #@4422 n@RL@*@9>N(@@@2\28304"CBCC"):!= w ~ 4 w!1 w  4 w!- w }!, w | !& w { ~ 4 w 4 w } 4 w! ! ~ }|! w {! w {#D4422AA2CZ0@ k,AzXLt@DQz{5XA!TD-FAɈg)2B}D@nVC>rWB3,1AB%ݣBϱS^UCʙ43FB3,1ޅ 2\28304*uPCB!! w } +ULK! w |+04 w 4 w } 4 w! ! ~ }422 f T / T>6--j@A17AP6QCZQFC;(:Dpԋ0ABsMʁ]pZDx%UXl@nND'8(3S;Ӑ B@6"+6'3p8(3ӐK22 $((<((b4((S(L(O hPE AP7@80(P( " n- 8078(3Ӑ!BBBB3Ӑ"3; F@6P7# 0I@07(\( -'X7H88IҒ*J@(887<((6P7# 0I@07(\( <(($(()))) ) ) 0:@Z`z8(33ӐB FK@63)o9pX7Ґ" 8I@87X7H88IҒ*J@(88768(3X7Ґ" 8I@87)E3Ӑ"C"PPPC!;3#C#PPP(T(;Ӑ B@6"+64((!8(#;C8(!X(O4((Ӑ"8(;C"8( A`6 o  P  #Ǫ f?FQfX1,)+H6)*H7*766) !  " 9PPP9)ٮPPP)־!0!D    H-H. <H" t  " WsX6 " 96X6 " 6ېX6#  K n) 1v!!!#+1S1S1S386C86OCPCKSO #X9! Y89ZP9!P " 89" *1k p<937 q<9K8!09 ZOX937+9 p893 '? OX93 ? 1 P89K1PCO@X9! YP889!P " 08" *10 p092 '? ! ZOH9X8P)! (: @:-)%%  ? % `P-Ӑz(98ge@?86X93) p893 '? 0)P893+ ? 89X6  n%/"5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`ADDRESS. - ;PASCAL EXTERNAL FUNCTION ;TO RETURN EXTERNAL BYTE ADDRESS ;FROM TABLE OF WORD ADDRESSES ; (SUPPLIED BY USER) .TITL ADDR ;PETE GOODEVE 78:8:5 .ENT ?ADDR .EXTN XPRET,ADRTB .NREL ;FUNCTION ADDRESS(I:INDEX):ANYBYTADDR; EXTERNAL; ;FUNCTION ADDRESS(PTR:BYTADDR;I:INDEX):... ?ADDR: MOVZR# 1,1,SZR JMP P2 LDA 2,ABAS ;GET TABLE BASE GETBA: LDA 1,0,3 ;GET INDEX ADD 1,2 ;FORM ACCESSOR MOV 0,3 ;RETURN-POINTER LDA 0,0,2 ;GET WORD ADDRESS FROM TABLE COM 0,0,SZR ;RETURN NIL IF UNDEF. COMZL 0,0 ;CHANGE TOߝ POINTER FORM NOVAL: STA 0,0,3 ;RETURN TO USER SUBZL 1,1 ;(1 WORD RETURN) XPRET ABAS: ADRTB P2: LDA 2,-1,3 ;BASE BYTE ADDR MOVZR 2,2,SZR ;-> WORD JMP GETBA MOV 0,3 SUB 0,0 ;NIL POINTER RETURNS NIL JMP NOVAL .END T39. PROGRAM T39(INPUT,OUTPUT); CONST CURSORLEFT=8; CURSORRIGHT=14; CURSORUP=10; CURSORDOWN=11; EOS=29; EOL=28; CLEAR=15; HOME=12; TAB=9; ESC=27; CONTROLZ=26; LINEFEED=10; CARRIAGERET=13; DELETE=127; BACKSLASH=92; (*DISPLAY SIZE IS 25 LINES BY 80 C7OLUMNS*) NLINES=24; NCOLUMNS=80; TYPE XY = RECORD COLUMN,LINE :INTEGER END; ABSREL = (ABSOLUTE,RELATIVE); INTARRAY = ARRAY[1..20] OF INTEGER; VAR ROW,WORD,BIT,INCH,OUTCH,BYTE,ERROR,ANS,DUMMY:INTEGER; SPACE,T : INTEGER; TABS : ARRAY [1..5] OF INTEGERt; TEST : BOOLEAN; PREVCURSOR,CURSOR : XY; MOVE : ABSREL; NBROTE : INTEGER; ESCF : ARRAY[1..2] OF INTEGER; PROCEDURE TBIT( BITNO : INTEGER;WORD : INTEGER;VAR VALUE : INTEGER);EXTERNAL; PROCEDURE CBIT(BITNO : INTEGER;VAR WORD : INTEGER);EXTERNAL; PROCEDURE SBIT(BITNO : INTEGER;VAR WORD : INTEGER);EXTERNAL; PROCEDURE SWAP (VAR WORD:INTEGER);EXTERNAL; PROCEDURE WRSQ(IOCH:INTEGER;VAR BUFFER:INTARRAY;NBYTES:INTEGER; VAR NBROTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE RBYTE(INCH:INTEGER;VAR BYTE:IN|6TEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE WBYTE(INCH:INTEGER;VAR BYTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE CURSORMOVE (X:INTEGER;Y:INTEGER;MOVE:ABSREL); BEGIN CASE MOVE OF RELATIVE : BEGIN CURSOR.LINE:=CURSOR.LINE+Y;CURSOR.COLUMN:=CURSOR.COLUMN+X; IF CURSOR.COLUMN = 0 THEN BEGIN CURSOR.LINE := CURSOR.LINE-1; CURSOR.COLUMN:=1; END ELSE IF CURSOR.COLUMN = NCOLUMNS+1 THEN BEGIN CURSOR.COLUMN:=1; CURSOR.LINE := CURSOR.LINE+1;  END; IF CURSOR.LINE<1 THEN CURSOR.LvGINE:=1; (*MOVE CURSOR SEND ESC F LINE COLUMN. OFFSET COORDS BY 37OCTAL (31DEC) *) ESCF[1]:=6982; (*15506 OCTAL*) ESCF[2]:=CURSOR.LINE+31; SWAP(ESCF[2]); ESCF[2]:=ESCF[2]+CURSOR.COLUMN+31; WRSQ(OUTCH,ESCF,4,NBROTE,ERROR); IF TEST THEN WRITELN(OUTPUT,' ',X,Y,CURSOR.COLUMN,CURSOR.LINE,'RELATIVE') ELSE END; ABSOLUTE : BEGIN ESCF[1] := 6982; ESCF[2] := 31+Y;CURSOR.LINE := Y; SWAP(ESCF[2]); ESCF[2] := ESCF[2]+31+X;CURSOR.COLUMN := X; WRSQ(OUTCH,ESCF,4,NBROTE,ERROR); gA IF TEST THEN WRITELN(OUTPUT,' ',X,Y,CURSOR.COLUMN,CURSOR.LINE,'ABS') ELSE END END END; PROCEDURE CLEARSCREEN; BEGIN DUMMY := CLEAR; WBYTE(OUTCH,DUMMY,ERROR) (*17 OCTAL IS A CLEAR SCREEN*) END; (*INITIALIZE THE TAB ARRAY*) PROCEDUR4E INITTABS; BEGIN FOR ROW := 1 TO 5 DO TABS[ROW] := 0 END; PROCEDURE TABBIT; VAR VALUE,TABSEG : INTEGER; BEGIN WRITELN(OUTPUT,' ','TABS ARE',' SET AS ','FOLLOWS'); WRITE(OUTPUT,' ');  FOR ROW := 1 TO NCOLUMNS DO BEGIN WORD := ROW MOD 16;BIT := RӋOW-WORD*16; TABSEG := TABS[WORD];TBIT(BIT,TABSEG,VALUE); WRITELN(OUTPUT,'ROW,WORD',',BIT,TAB','SEG,VALU','E'); WRITELN(OUTPUT,ROW,WORD,BIT,TABSEG,VALUE); IF VALUE = 1 THEN WRITE(OUTPUT,'T') ELSE WRITE(OUTPUT,' '); WRITELN(OUTPUT) END END; 5PROCEDURE ESCFUNCTION; BEGIN PREVCURSOR:=CURSOR; CURSORMOVE(1,NLINES,ABSOLUTE); DUMMY:=27;WBYTE(OUTCH,DUMMY,ERROR); DUMMY:=77;WBYTE(OUTCH,DUMMY,ERROR); RBYTE(INCH,BYTE,ERROR); IF BYTE = 94 THEN TABBIT; CURSORMOVE(PREVCURSOR.COLUMN,PREVCURSOR.LINE,ABӌSOLUTE) END; BEGIN INCH:=1;OUTCH:=2; CURSOR.LINE:=1;CURSOR.COLUMN:=1; SPACE := 50;(*SPACE = 40 OCTAL*) T := 94; (*LETTER T=94 DEC*) WRITELN(OUTPUT,'ENTER 0 ','FOR NO T','ESTING OR 1 FOR '); READLN(INPUT,ANS);IF ANS = 0 THEN TEST := FALSE ELSE T@EST := TRUE; CLEARSCREEN; INITTABS; REPEAT RBYTE(INCH,BYTE,ERROR); IF TEST THEN WRITELN(OUTPUT,BYTE) ELSE IF(BYTE>=32) AND (BYTE<=126) THEN BEGIN  WBYTE(OUTCH,BYTE,ERROR);CURSORMOVE(1,0,RELATIVE) END ELSE CASE BYTE OF (*LEFT*) T8 : CURSORMOVE(-1,0,RELATIVE); (*DELETE*) 127 : CURSORMOVE(-1,0,RELATIVE); (*DOWN*) 10 : CURSORMOVE(0,1,RELATIVE); (*UP*) 11 : CURSORMOVE(0,-1,RELATIVE); (*HOME*) 12 : CURSORMOVE(1,1,ABSOLUTE); (*CARR RET*) 13 : BEGIN CURSORMOVE(0,1,RELATIVE4X);CURSORMOVE(1,CURSOR.LINE,ABSOLUTE) END; (*RIGHT*) 14 : CURSORMOVE(1,0,RELATIVE); (*CLEAR*) 15 : BEGIN CURSORMOVE(1,1,ABSOLUTE);CLEARSCREEN END; (*ESC*) 27 : ESCFUNCTION; 0,1,2,3,4,5,6,7,9,16,17,18,19,20,21,22,23, 24,25,2R6,28,29,30,31 : ; END (*CASE*) UNTIL (ERROR <> -1) OR (BYTE = CONTROLZ) END. CDC6000.<\ ([A=20,B+,R=1-100,I=2,S=2]) FORMATTER DIRECTIVES.) ( ******************************************************************************* PASCAL PROGRAM FORMATTER ------------------------ AUTHOR:  MICHAEL N. CONDICT, L975 LEHIGH UNIVERSITY CURRENT ADDRESS: PAR CORP 228 LIBERTY PLAZA ROME, NY 13440 UPDATED: AUGUST, 1978 ***************************************************************************** ) PROGRAM FORMAT(IN1PUT,OUTPUT); LABEL 13; CONST ALFALENG = 10; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( MINIMUM AND MAXIMUM CHAR VALUES. ) MINCHAR = 0 MAXCHAR = 127; LASTPASCSYMBOL = 29; ( THE FOLLOWING CONSTANTS MUST ALL BE CHANGED TOGETHER, SO THAT THEIIR VALUES AGREE WITH THEIR NAMES: ) BUFFERSIZE = 160; BUFFSZP1 = 161; BUFFSZM1 = 159; BUFFSZDIV10 = 16; ( ) MAXREADRIGHTCOL = 999; MAXWRITERIGHTCOL = 72; TYPE ALFA = PACKED ARRAY [1 .. ALFALENG] OF CHAR; ( !!!!!!!! IMPLEMENTATION DEPE7NDENCY: !!!!!!!! ) ( SET SIZE MAY NOT ALLOW SET OF CHAR. ) CHARSET = SET OF CHAR; STATMNTTYPES = (FORWITHWHILESTATEMENT, REPEATSTATEMENT, IFSTATEMENT, CASESTATEMENT, COMPOUNDSTATEMENT, OTHERSTATEMENT); SYMBOLS = (PROGSYMBOL, COMMENT, BEGINSYMBOL, E~NDSYMBOL, SEMICOLON, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, COLONSYMBOL, EQUALSYMBOL, PERIODSYMBOL, RANGE, CASESYMBOL, OTHERSYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYeMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LEFTBRACKET, RIGHTBRACKET, COMMASYMBOL, LABELSYMBOL, LEFTPARENTH, RIGHTPARENTH, ALPHAOPERATOR); WIDTH = 0 ..BUFFERSIZE; MARGINS = - 100 ..BUFFERSIZE; SYMBOLSET = SET OF SYMBOLS; OPTIONSIZE = - 99 .. 99; COMMENTTEXT = ARRAY [1 .. BUFFSZDIV10] OF ALFA; SYMBOLSTRING = ARRAY [WIDTH] OF CHAR; VAR CHISEOL, NEXTCHISEOL: BOOLEAN; I: INTEGER (USED AS FOR LOOP INDEX); CHARACTER: CHAR; READCOLUMN, READRIGHTCOL: 0 .. 1000; OUTPUTCOL, W"RITECOLUMN, LEFTMARGIN, ACTUALLEFTMARGIN, READLEFTCOL, WRITELEFTCOL, WRITERIGHTCOL: MARGINS; DISPLAYISON, PROCNAMESWANTED, ENDCOMMENTSWANTED, PACKERISOFF, SAVEDBUNCH, BUNCHWANTED, NOFORMATTING: BOOLEAN; LINENUMBER, INCREMENT: INTEGER; INDENTINDEX, LONGLINEINDENT, SYMBOLGAP, DECLARALIGNMENT, STATMTSEPARATION, PROCSEPARATION: OPTIONSIZE; LASTSYMBOL, SYMBOLNAME: SYMBOLS; ALPHASYMBOLS, ENDLABEL, ENDCONST, ENDTYPE, ENDVAR: SYMBOLSET; SYMBOL: SYMBOLSTRING; LENGTH: WIDTH; SYMBOLISNUMBER, LASTPROGPARTWASBODY: BOOLEAN; DIGITS, LETTERSANDDIGITS: CHARSET; OLDEST: WIDTH; CHARCOUNT: INTEGER ( COUNT OF TOTAL CHARS READ, BUT IS OFF BY BUFFERSIZE AFTER END OF FIRST BODY. IT IS IMPERATIVE THAT CHARCOUNT BE MONOTONICALLY II|NCREASING DURING PROCESSING OF A BODY, AND THAT IT NEVER RETURN TO A VALUE <- BUFFERSIZE, AFTER PASSING THAT POINT. THUS "DOBLOCK" MAY RESET IT AS LOW AS POSSIBLE, LIMITING THE LENGTH OF A PROCEDURE TO "MAXINT - BUFFERSIZE" CHARACTERS. ); MAIN:  COMMENTTEXT; MAINNMLENGTH: WIDTH; BLANKS, ZEROES: ALFA; UNDERWRITTEN: ARRAY (WIDTH) OF RECORD CH: CHAR; CHISENDLINE: BOOLEAN INDENTAFTEREOL: MARGINS END; PASCALSYMBOL: ARRAY [1 ..LASTPASCSYMBOL] OF ALFA; PASCSYMBOLNAME: ARRAY [1 ..LASTPASCSYMBOL] OF SYMBOLS; NAMEOF: ARRAY [CHAR] OF SYMBOLS; STATEMENTTYPEOF: ARRAY [SYMBOLS] OF STATMNTTYPES; PROCEDURE CONSTANTSINITIALIZATION; BEGIN MAIN[1] := 'MAIN '; MAINNMLENGTH := 4; BLANKS *= '; ZEROES *= '0000000000'; FOR I := 0 TO BUFFSZM1 DO WITH UNWRITTEN[I] DO BEGIN CH := 'A'; CHISENDLINE := FALSE; INDENTAFTEREOL := 0 END; FOR CHARACTER := CHR(MINCHAR) TO CHR(MAXCHAR) DO NAMEOF[CHARACTER] := OTHERSYMBOL; CHARACTER := ' '; NAMEOF['('] := LEFTPARENTH; NAMEOF[')'] :2= RIGHTPARENTH; NAMEOF['='] := EQUALSYMBOL; NAMEOF[','] := COMMASYMBOL; NAMEOF['.'] := PERIODSYMBOL; NAMEOF['['] := LEFTBRACKT; NAMEOF[']'] := RIGHTBRACKET; NAMEOF[':'] := COLONSYMBOL; NAMEOF['<'] := EQUALSYMBOL; NAMEOF['>'] := EQUALSYMBOL; NAMEOF[';'] := SEMICOLON; PASCALSYMBOL[1] := 'PROGRAM '; PASCALSYMBOL[2] := 'BEGIN '; PASCALSYMBOL[3] := 'END '; PASCALSYMBOL[4] := 'CONST '; PASCALSYMBOL[5] := 'TYPE '; PASCALSYMBOL[6] := 'VAR  '; PASCALSYMBOL[7] := 'RECORD '; PASCALSYMBOL[8] := 'CASE '; PASCALSYMBOL[9] := 'IF '; PASCALSYMBOL[10] := 'THEN '; PASCALSYMBOL[11] := 'ELSE '; PASCALSYMBOL[12] := 'DO '; PASCALSYMBOL[13] := 'OF '; PASCALSYMBOL[14] := 'FOR '; PASCALSYMBOL[15] := 'WHILE '; PASCACLSYMBOL[16] := 'WITH '; PASCALSYMBOL[17] := 'REPEAT '; PASCALSYMBOL[18] := 'UNTIL '; PASCALSYMBOL[19] := 'PROCEDURE '; PASCALSYMBOL[20] := 'FUNCTION '; PASCALSYMBOL[21] := 'LABEL  '; PASCALSYMBOL[22] := 'IN '; PASCALSYMBOL[23] := 'MOD X '; PASCALSYMBOL[24] := 'DIV '; PASCALSYMBOL[25] := 'AND '; PASCALSYMBOL[26] := 'OR '; PASCALSYMBOL[27] := 'NOT '; PASCALSYMBOL[28] := 'ARRAY '; PASCALSYMBOL[29] := 'NOSYMBOL '; PASCSYMBOLNAME[1] := PROGSYMBOL; PASCSYMBOLNAME[2]@! := BEGINSYMBOL; PASCSYMBOLNAME[3] := ENDSYMBOL; PASCSYMBOLNAME[4] := CONSTSYMBOL; PASCSYMBOLNAME[5] := TYPESYMBOL; PASCSYMBOLNAME[6] := VARSYMBOL; PASCSYMBOLNAME[7] := RECORDSYMBOL; PASCSYMBOLNAME[8] := CASESYMBOL; PASCSYMBOLNAME[9] := IFSYMBOL; PASCS(|YMBOLNAME[10] := THENSYMBOL; PASCSYMBOLNAME[11] := ELSESYMBOL; PASCSYMBOLNAME[12] := DOSYMBOL; PASCSYMBOLNAME[13] := OFSYMBOL; PASCSYMBOLNAME[14] := PASCSYMBOLNAME[15] := WHILESYMBOL; PASCSYMBOLNAME[16] := WITHSYMBOL; PASCSYMBOLNAME[17] := REPEATSYMBOL; PASCSYMBOLNAME[18] := UNTILSYMBOL; PASCSYMBOLNAME[19] := PROCSYMBOL; PASCSYMBOLNAME[20] := FUNCSYMBOL; PASCSYMBOLNAME[21] := LABELSYMBOL; PASCSYMBOLNAME[29] := IDENTIFIER; FOR I := 22 TO 28 DO PASCSYMBOLNAME[I] := ALPHAOPERATOR; FOR SYMBOLNAME := PROGSYMBOL TO ALPHAOPERATOR DO STATEMENTTYPEOF[SYMBOLNAME] := OTHERSTATEMENT; STATEMENTTYPEOF[BEGINSYMBOL] := COMPOUNDSTATEMENT; STATEMENTTYPEOF[CASESYMBOL] := CASESTATEMENT; STATEMENTTYPEOF[IFSYMBOL] := IFSTATEMENT; STATEMENTTYPEOF[FORSYMBOL] := FOlRWITHWHILESTATEMENT; STATEMENTTYPEOF[WHILESYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WITHSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[REPEATSYMBOL] := REPEATSTATEMENT; END (CONSTANTSINITIALIZATION); PROCEDURE WRITEA(CHARACTER: CHAR); VAR I: WIDTH; TESTNO: INTEGER; BEGIN CHARCOUNT := CHARCOUNT + 1; OLDEST := CHARCOUNT MOD BUFFERSIZE; WITH UNWRITTEN[OLDEST] DO BEGIN IF CHARCOUNT > BUFFSZP1 THEN BEGIN IF CHISENDLINE THEN BEGIN IF IDENTAFTEREOL < O THEN BEGIN WRITE(BLANKS: - INDENTAFTEREOL); OUTPUTCOL := OUTPUTCOL - IDENTAFTEREOL; END ELSE BEGIN IF INCREMENT < O THEN BEGIN I := WRITERIGHTCOL - OUTPUTCOL + 1; IF I > O THEN WRITE(BLANKS: I); TESTNO := LINENUMBER; I := O REPEAT TESTNO := TESTNO DIV 10; I := I +He 1; UNTIL TESTNO - O; WRITE(ZEROES: (6 - I), LINENUMBER: I); LINENUMBER := LINENUMBER - INCREMENT; IF LINENUMBER > 9999 THEN LINENUMBER := LINENUMBER - 10000; WRITELN; END ELSE BEGIN WRITELN; IF INCREMENT > O THEN BEGIN WRITE(LINENUMBER: 4, 'u '); LINENUMBER := LINENUMBER + INCREMENT; END END IF IDENTAFTEREOL > O THEN WRITE(BLANKS: IDENTAFTEREOL; OUTPUTCOL := IDENTAFTEREOL + 1; END; CHISENDLINE := FALSE; END (IF CHISENDLINE) ELSE BEGIN WRITE(CH); OUTPUTCOL := OUTPUTCOL +1; END (ELSE); END (IF CHARCOUNT > ); CH := CHARACTER; WRITECOLUMN := WRITECOLUMN +1; END (WITH); END (WRITEA); PROCEDURE FLUSHUNWRITTENBUFFER; BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IDENTAFTEREOL := O; END; WRITECOLUMN := O; FOR I := O TO BUFFSZM1 DO WRITEA(' '); END *(FLUSHUNWRITTENBUFFER)*; PROCEDURE STARTNEWLINEANDINDENT; BEGIN IF PACKERISOFF AND DISPLAYISON THEN BEGIN WRITEA(' '); LASTSYMBOL := PERIODSYMBOL; WITH UNWRITTEN [OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL + LEFTMARGIN - 1; END; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN; END *(IF PACKERISOFF)*; END *(STARTNEWLINEANDINDENT)*; PROCEDURE READACHARACTER; BEGIN IF READCOLUMN > READRIGHTCOL THEN BEGIN IF READRIGHTCOL < MAXREADRIGHTCOL THEN BEGIN NEXTCHISEOL := TRUE; READLN END ELSE READCOLUMN := 2; END ELSE IF READCOLUMN = 1 THEN WHILE READCOLUMN < READLEFTCOL DO BEGIN IF EOLN(INPUT) THEN READCOLUMN := 1 ELSE BEGIN READCOLUMN := READCOLUMN + 1; GET(INPUT@e) END END; IF NEXTCHISEOL THEN BEGIN CHARACTER := ''; NEXTCHISEOL := FALSE; CHISEOL := TRUE; READCOLUMN := 1; IF NOFORMATTING THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL - 1; ENŧD WRITECOLUMN := WRITELEFTCOL; END END ELSE IF NOT EOF(INPUT) THEN BEGIN CHARACTER := INPUT ^; READCOLUMN := READCOLUMN +1; NEXTCHISEOL := EOLN(INPUT); GET(INPUT); CHISEOL := FALSE; IF NOFORMATTING THEN WRITEA(CHARACTER); END ELSE BEGIN FLUSHUNWRITTENBUFFER; GOTO 13 END END *(READACHARACTER)*; PROCEDURE WRITESYMBOL; VAR I: WIDTH; NUMBER BLANKSTOWRITE: OPTIONSIZE; BEGIN IF DISPLAYISON THEN BEGIN NUMBERBLANKSTOWRITE := SYMBOLGAP; IF (LASTSYMBOL IN [LEFTPARENTH,LEFTBRACKET,PERIODSYYMBOL]) OR (SYMBOLNAME IN [SEMICOLON, RIGHTPARENTH,RIGHTBRACKET, COMMASYMBOL, PERIODSYMBOL, COLONSYMBOL]) OR (SYMBOLNAME IN [LEFTBRACKET, LEFTPARENTH]) AND (LASTSYMBOL = IDENTIFIER) THEN NUMBERBLANKSTOWRITE := O ELSE IF (SYMBOLNAME IN ALPHAS!YMBOLS) AND (LASTSYMBOL IN ALPHASYMBOLS) THEN IF WRITECOLUMN <= WRITERIGHTCOL THEN BEGIN WRITEA(' '); NUMBERBLANKSTOWRITE := SYMBOLGAP -1; END; IF WRITECOLUMN + LENGTH + NUMBERBLANKSTOWRITE -1> WRITERIGHTCOL THEN BEGIN WRITEA(' '); WITH| UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IF PACKERISOFF THEN BEGIN IF WRITELEFTCOL + LEFTMARGIN + LONGLINEINDENT + LENGTH -1> WRITERIGHTCOL THEN LENGTH := 10; INDENTAFTEREOL := WRITELEFTCOL -1 + LEFTMARGIN + LONGLINEINDENT; WRITECOrLUMN := WRITELEFTCOL + LEFTMARGIN + LONGLINE INDENT; END ELSE BEGIN IFLENGTH > WRITERIGHTCOL - WRITELEFTCOL + 1; THEN LENGTH := WRITERIGHT COL - WRITELEFTCOL + 1; INDENTAFTEREOL := WRITELEFTCOL - 1; WRITECOLUMN := WRITELEFTCOL; END; END *(WITH)*; END ELSE FOR I := 1 TO NUMBERBLANKSTOWRITE DO WRITEA(' '); FOR I := 1 TO LENGTH DO WRITEA(SYMBOL[I]); END *(IF DISPLAYISON)*; LASTSYMBOL := SYMBOLNAME; END *(WRITESYMBOL)*; PROCEDURE COPYACHARACTER; BEGIN IF DISPLAYISON THEN BEGIN IF WRITECOLUMN > WRITERIGHTCOL THEN BEGIN WHILE (CHARACTER = ' ') AND NOT CHISEOL DO READACHARACTER; IF NOT CHISEOL THEN STARTNEWLINEANDINDENT; END; IF CHISEOL THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END YBELSE WRITEA(CHARACTER); END; READACHARACTER END *(COPYACHARACTER)*; PROCEDURE DOFORMATTERDIRECTIVES; CONST INVALID = - 1; TYPE PARAMCOUNT = 1 .. 2; PARAMS = ARRAY [PARAMCOUNT] OF INTEGER; VAR SPECIFICATION: PARAMS; FORMATOPTION: CHAR; { PREVDISPLAY, PREVNOFORMATTING: BOOLEAN; ENDDIRECTV: CHARSET; PROCEDURE READIN(N: PARAMCOUNT; VAR SPCIFICATION: PARAMS); VAR I: PARAMCOUNT; BEGIN FOR I := 1 TO N DO BEGIN WHILE NOT (CHARACTER IN (DIGITS + ENDDIRECTV)) DO COPYACHARACTER; sSPECIFICATION[I] := O; IF NOT (CHARACTER IN ENDDIRECTV) THEN REPEAT SPECIFICATION [I] := 10 * SPECIFICATION[I] + ORD(CHARACTER) - ORD('O'); COPYACHARACTER; UNTIL NOT (CHARACTER IN DIGITS) ELSE SPECIFICATION[I] := INVALID; END *(FOR)*; END *(R[EADIN)*; BEGIN *(DOFORMATTERDIRECTIVES)* ENDDIRECTV := ['*', ']']; REPEAT IF CHARACTER IN ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I', 'L', 'N', 'P', 'R', 'S', 'W'] THEN BEGIN FORMATOPTION := CHARACTER; CASE FORMATOPTION OF 'A', 'E', 'I', 'G'Y, 'P', 'L', 'S': BEGIN READIN(1, SPECIFICATION); IF (SPECIFICATION[1] 1; ENDCOMMENTSWANTED := ODD(SPECIFICATION[1]); END 'G' : SYMBOLGAP := SPECIFICATION[1]; 'I' : INDENTINDEX := SPECIFICATION[1]; 'L' : LONGLINEINDE***ECIFICATION[1]; 'P' : PROCSEPARATION := SPECIFICATION[1]; 'S' :s STATMTSEPARATION := SPCIFICATION[1] END *(CASE)*; END *(SINGLE PARAMETERS)*; 'W', 'R', 'N': BEGIN READIN(2, SPECIFICATION); IF SPECIFICATION[2] <> INVALID THEN CASE FORMATOPTION OF 'W': IF SPECIFICATION[1] > O) AND SPECIFICATION[2] < BUFFERSIZE -2) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8) THEN BEGIN WRITELEFTCOL := SPECIFICATION[1]; WRITERIGHTCOL := SPECIFICATION[2]; END 'R': IF (SPECIFICATION[1] > O) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8 THEN BEGIN READLEFTCOL := SGPECIFICATION[1]; READRIGHTCOL := SPECIFICATION[2]; END 'N': BEGIN LINENUMBER := SPECIFICATION[1]; INCREMENT := SPECIFICATION[2]; WHILE NOT (CHARACTER IN (['<'] + ENDDIRECTV)) AND (CHARACTER<> '>') DO COPYACHARACTER; IF CHARACTER = '>' THEN INCRE3MENT := - INCREMENT END END *(CASE)*; END *(DOUBLE PARAMETERS)*; 'B', 'C', 'D', 'F': BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN (['+', '-'] + ENDDIRECTV); IF CHARACTER IN ['+', '-'] THEN CASE FORMATOPTION OF 'B': IF DISPLAYISON THEN BQUNCHWANTED := CHARACTER = '+'; 'C': PACKERISOFF := CHARACTER = '-'; 'D': BEGIN PREVDISPLAY := DISPLAYISON; DISPLAYISON := CHARACTER = '+'; IF PREVDISPLAY AND NOT DISPLAYISON THEN BEGIN WRITEA('*'); WRITEA(')'); SAVEDBUNCH := BUNCHWANTED; BUNCHWAdNTED := FALSE; END ELSE IF NOT PREVDISPLAY AND DISPLAYISON THEN BEGIN STARTNEWLINEANDINDENT; WRITEA('('); WRITEA'_('*'); BUNCHWANTED := SAVEDBUNCH; END *(IF NOT PREV)*; END *('D':)*; 'F': BEGIN PREVNOFORMATTING := NOFORMATTING; NOFORMATTING :=! CHARACTER = '-'; DISPLAYISON := NOT NOFORMATTING IF PREVNOFORMATTING AND NOT NOFORMATTING THEN READACHARACTER; IF NOT PREVNOFORMATTING AND NOFORMATTING THEN WRITEA('-'); END; END *(CASE)*; END *(BOOLEAN PARAMETERS)* END *(CASE)*; END *(THEN)* cELSE IF NOT (CHARACTER IN ENDDIRECTV) THEN COPYACHARACTER; UNTIL CHARACTER IN ENDDIRECTV; IF (CHARACTER = ']') THEN COPYACHARACTER; END *(DOFORMATTERDIRECTIVES)*; PROCEDURE READSYMBOL; CONST READNEXTCH = TRUE; DONTREADNEXTCH = FALSE; VAR TEST&SYMBOL: ALFA; CHARNUMBER: WIDTH; I: WIDTH; PROCEDURE SKIPCOMMENT; BEGIN REPEAT WHILE CHARACTER <> '*' DO READACHARACTER; READACHARACTER UNTIL CHARACTER = ')'; READACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL END *(SKIPCOMMENT)*; PROCEDURE DOCOMMENT; VAR I: OPTIONSIZE; PROCEDURE COMPILERDIRECTIVES; BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN ['[', '*'] END *(COMPILERDIRECTIVES)*; BEGIN *(DOCOMMENT)* BEGIN IF LASTSYMBOL IN [COMMENT, SEMICOLON] THEN BEGIN LEFTMARGIN := O; SWTARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END; WRITESYMBOL; IF CHARACTER = '$' THEN COMPILERDIRECTIVES; IF CHARACTER = '[' THEN DOFORMATTERDIRECTIVES; REPEAT WHILE CHARACTER <> '*' DO COPYACHARACTER; COPYACHARACTER; UNTIL CHARACTER = ')'; COPYACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL; END; END *(DOCOMMENT)*; PROCEDURE CHECKFOR(SECONDCHAR: CHAR; TWOCHARSYMBOL: SYMBOLS; READALLOWED: BOOLEAN); BEGIN IF READALLOWED THEN  BEGIN LENGTH := 1; SYMBOL[1] := CHARACTER; SYMBOLNAME*C := NAMEOF[CHARACTER]; READACHARACTER; END; IF CHARACTER = SECONDCHAR THEN BEGIN SYMBOL[2] := CHARACTER; LENGTH := 2; SYMBOLNAME := TWOCHARSYMBOL; READACHARACTER; IF (NOT PACKERISOFF) AND (SYMBOLNAME = COMMENT) THEN LENGTH := O END END *(CHECKFORd)*; BEGIN *(READSYMBOL)* IF (CHARACTER IN ['A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K','L','M','N','O','P','Q','R','S','T','U','V','W', 'X','Y','Z','0' ..'9','','(', '.', ':'. '''', '<', '>']) THEN CASE CHARACTER OF '(': BEGIN CHECKFOR('*', COMMENT, READNEXTCH); IF (SYMBOLNAME = COMMENT) AND PACKERISOFF THEN DOCOMMENT ELSE IF SYMBOLNAME = COMMENT THEN SKIPCOMMENT; END; 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', i'X', 'Y', 'Z': BEGIN CHARNUMBER := 1; SYMBOLISNUMBER := FALSE; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN LETTERSANDDIGITS); LENGTH := CHARNUMBER -1; FOR CHARNUMBER := CHARNUMBER TO ALFALENG DO SYMBOL[CHARNUMBER] := ''; PACK(SYMBOL, 1, TESTSYMBOL); I := 1; PASCALSYMBOL[LASTPASCSYMBOL- := TESTSYMBOL; WHILE PASCALSYMBOL[I] <> TESTSYMBOL DO I := I + 1; SYMBOLNAME := PASCSYMBOLNAME[I]; END *(LETTER)*; '0', '1', '2', '3', '4', '5','6', '7', '8', '9': BEGIN SYMBOLISNUMBER := TRUE; CHARNUMBER := 1; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS + ['.']); IF CHARACTER IN 1'B', 'E'] THEN BEGIN SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1; IF CHARACTER IN DIGITS + ['+', '-'] THEN REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS) END LENGTH := CHARNUMBER ''; READSYMBOL END; '>', ':': CHECKFOR('=', OTHERSYMBOL, READNEXTCH): '<': BEGIN CHECKFOR('=', OTHERSYMBOL, READNEXTCH); IF SYMBOLNAME <> OTHERSYMBOL L THEN CHECKFOR('>', OTHERSYMBOL, DONTREADNEXTCH); END '.': IF LASTSYMBOL <> ENDSYMBOL THEN CHECKFOR('.', RANGE, READNEXTCH) ELSE SYMBOLNAME := PERIODSYMBOL; '''': BEGIN CHARNUMBER := 1; REPEAT REPEAT SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER +1; READACHARACTER; UNTIL CHARACTER = ''''; SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER + 1; READACHARACTER; UNTIL CHARACTER <>''''; LENGTH := CHARNUMBER -1; SYMBOLNAME := OTHERSYMBOL; IF LENGTH > WRITERIFHTCOL - WRITELEFTCOL +1 THEN BEGIN FLUSHUNWRITTENBUFFER; WRITELN; WRITELN('***STRING TOO LONG.'); GOTO 13 END; END *(STRING)* END *(CASE)* ELSE BEGIN SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; LENGTH := 1; READACHARACTER END END *(READSYMBOL)*; PROCEDURE CHANGEMARGINTO(NEWLEFTMARGIN: MARGINS); VAR INDENTEDLEFTMARGIN: MARGINS; BEGIN ACTUALLEFTMARGIN := NEWLEFTMARGIN; LEFTMARGIN := NEWLEFTMARGIN; IF LEFTMARGIN < O THEN LEFTMARGIN := O ELSE BEGIN INDENTEDLEFTMARGIN := WRITERIGHTCOL - 9 - LONGLINEINDENT; IF LEFTMARGIN > INDENTEDLEFTMARGIN THEN LEFTMARGIN := IDENTEDLEFTMARGIN END END *(CHANGEMARGINTO)*; PROCEDURE DODECLARATIONUNTIL(ENDDECLARATION: SYMBOLSET); PROCEDURE DOPARANTHESES; VAR SAVEDLGLNID: OPTIONSIZE; BEGIN SADVEDLGLNID := LONGLINEINDENT; IF DECLARALIGNMENT >O THEN BEGIN LONGLINEINDENT := WRITECOLUMN + SYMBOLGAP +1 - LEFTMARGIN - WRITELEFTCOL; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; END ELSE BEGIN 6 LONGLINEINDENT := 1; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN = INDENTINDEX); END *(ELSE)*; LONGLINEINDENT := SAVELGLNID; END *(DOPARENTHESES)*; PROCEDURE DOFIELDLISTUNTIL(ENDFIELDLIST: SYMBOLSET); VAR LASTEOL: MARGINS; ALIGNCOLUMN: WIDTH; PROCEDURE DORECORD; VAR SAVEDLEFTMARGIN: WIDTH; BEGIN SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; WR6ITESYMBOL; READSYMBOL; CHANGEMARGINTO(WRITECOLUMN - 6 + INDENTINDEX - WRITELEFTCOL); STARTNEWLINEANDINDENT; DOFIELDLISTUNTIL([ENDSYMBOL]); CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAy9VEDLEFTMARGIN); END *(DORECORD)*; PROCEDURE DOVARIANTRECORDPART; VAR SAVEDLEFTMARGIN, OTHERSAVEDMARGIN: MARGINS; BEGIN OTHERSAVEDMARGIN := ACTUALLEFTMARGIN; IF DECLARALIGNMENT > O THEN BEGIN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME {IN [COLONSYMBOL, OFSYMBOL]; IF SYMBOLNAME = COLONSYMBOL THEN BEGIN WRITESYMBOL; READSYMBOL; WITH UNWRITTEN[LASTEOL] DO BEGIN IDENTAFTEREOL := IDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITECOLUMN := ALIGNCOLUMN; CHANGEMARGINTO(ACTUALLEFTMARGIN + ALIGNCOLUMN - WRITECOLUMN); END END IF SYMBOLNAME <> OFSYMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = OFSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN+ IDENTINDEX); REPEAT WRITESYMBOL; READSYMBOL; IF SYMBOLNAME <> ENDSYMBOL THEN BEGIN STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [LEFTPARENTH, SEMICOLON, ENDSYMBOL]; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; READSYMBOL; SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; CHANGEMARGINTO(WRITECOLUMN - WRITELEFTCOL); DOFIELDLISTUNTIL([RIGHTPARENTH]); WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END; END; UNTIL SYMBOLNAME <> SEMICOLON; CHANGEMARGINTO(OTHERSAVEDMARGIN); END *(DOVARIANTRECSORDPART)*; BEGIN *(DOFIELDLISTUNTIL)*; LASTEOL := OLDEST; IF LASTSYMBOL = LEFTPARENTH THEN FOR I := 1 TO DECLARALIGNMENT - LENGTH DO WRITEA(''); ALIGNCOLUMN := LEFTMARGIN + WRITELEFTCOL + DECLARALIGNMENT + 1; WHILE NOT (SYMBOLNAME IN ENDFIELDLIST)$H DO BEGIN IF LASTSYMBOL IN [SEMICOLON, COMMENT] THEN IF SYMBOLNAME <> SEMICOLON THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST END; IF SYMBOLNAME IN [RECORDSYMBOL, CASESYMBOL, LEFTPARENTH, COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL] THEN CASE SY3MBOLNAME OF RECORDSYMBOL- DORECORD; CASESYMBOL: DOVARIANTRECORDPART; LEFTPARENTH: DOPARENTHESES; COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL: BEGIN WRITESYMBOL; IF DECLARALIGNMENT > O THEN IF NOT (ENDLABEL <= ENDFIELDLIST) THEN BEGIN WITH UNWRITTEN[jLASTEOL] DO BEGIN IDENTAFTEREOL := INDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; WRITECOLUMN := ALIGNCOLUMN; END; IF SYMBOLNAME = COMMASYMBOL THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST; END;  AND *(IF DECLARALIGNMENT)*; READSYMBOL; END *( , : - )* END *(CASE)* ELSE BEGIN WRITESYMBOL; READSYMBOL END; END *(WHILE)*; END *(DOFIELDLISTUNTIL)*; BEGIN *(DODECLARATIONUNTIL)* STARTNEWLINEANDINDENT; WRITESYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; READSYMBOL; DOFIELDLISTUNTIL(ENDDECLARATION); STARTNEWLINEANDINDENT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END *(DODECLARATIONUNTIL)*; PROCEDURE DOBLOCK(BLOCKNAME: COMMENTEXT; BLOCKNMLENGTH: WIDTH);I VAR I: WIDTH; IFTHENBUNCHNEEDED: BOOLEAN; ATPROCBEGINNIN: BOOLEAN; PROCEDURE DOPROCEDURES; VAR I: O .. 20; PROCNAME: COMMENTTEXT; PROCNMLENGTH: WIDTH; BEGIN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; STARTNEWLINEANDINDWENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, I * ALFALENG +1, PROCNAME[I + 1]); PROCNMLENGTH := LENGTH; WRITESYMBOL; READSYMBOL; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; REPREAT READSYMBOL; WRITESYMBOL UNTIL SYMBOLNAME = RIGHT PARENTH; READSYMBOL; END; IF SYMBOLNAME = COLONSMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; LASTPROGPARTWASBODY := FALSE; DOBLOCK(PROCNAME, PROCNMLENGTH); LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; END *(DOPROCEDURES)*; PROCEDURE DOSTATEMENT(VAR ADDEDBLANKS: WIDTH; STATMTSYMBOL: COMMENTTEXT; STMTSYMLENGTH: WIDTH); VAR I:WIDTH; STATMTBEGINNING: INTEGER; STATMTPART: ARRAY [1..4] OF INTEGER; BLKSONCURRNTLINE, BLKSADDEDBYTHISSTMT: INTEGER; SUCCESSFUL: BOOLEAN; PROCEDURE BUNCH(BEGINNING, BREAKPT, ENDING: INTEGER; STATMTSEPARATION: OPTIONSIZE); BEGIN IF BUNCHWANTED OR IFTHENBUNCHNEEDED THEN BEGIN IF STMTSEPARATION <1 THEN STATMTSEPARATION := 1; BLKSONCURRNTLINE := BLKSONCURRNTLINE + STATMTSEPARATION - 1; SUCCESSFUL := (ENDING - BEGINNING + BLKS>:ONCURRNTLINE + UNWRITTEN[BEGINNING MOD BUFFERSIZE]. IDENTAFTEREOL) < WRITERIGHTCOL) AND (CHARCOUNT - BEGINNING ENDLIST THEN BEGIN IF PROCNAMESWANTED THEN IF ATPROCBEGINNING THEN IF LASTPROGPARTWASBODY THEN IF LASTSYMBOL = BEGINSYMBOL THEN WRITECOMMENT; ATPROCBEGINNING := FALSE; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSAF5TERPRT2 := ADDEDBLANKS; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; WHILE SYMBOLNAME <> ENDLIST DO BEGIN WRITESMBOL; READSYMBOL; IF SYMBOLNAME <> ENDLIST THEN BEGIN STATMTPART[3] := CHARCOUNT + 1; DOSTATEMENT(ADDEDBLANKS, STATMTSwYMBOL, STATMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS + BLKSAFTERPRT2; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; BUNCH(STATMTPART[2], STATMTPART[3], CHARCOUNT, STATMTSEPARATION); IF NOT SUCCESSFUL THEN BEGIN BLKSAFTERPRT2 :X= ADDEDB;AMLS\ STATMTPART[2] := STATMTPART[3]; END ELSE BLKSAFTERPRT2 := BLKSONCURRNTLINE; END; END *(WHILE SYMBOLNAME <> ENDLIST)*; END *(IF SYMBOLNAME <> ENDLIST)*; BLKSONCURRNTLINE := BLKSADDEDBYTHISSTATMT; BUNCH(STATMTBEGINNING, STATMTPART[1], fCHARCOUNT, SYMBOLGAP9; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL, PERIODSYMBOL]; IF SUCCESSFUL THEN BEGIN IF ENDLIST = UNTILSYMBOL THENԚ STATMTPART[4] := STATMTSEPARATION ELSE STATMTPART[4] := SYMBOLGAP; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTPART[4]; END *(IF SUCCESSFUL)*; IF NOT (SUCCESSFUL AND BUNCHWANTED) THEN IF ENDLIST = ENDSYMBOL THEN IF LASTSYMBOL = ENDSYf$MBOL THEN IF ATPROCEND AND PROCNAMESWANTED THEN WRITECOMMENT ELSE IF ENDCOMMENTSWANTED THEN WRITECOMMENT; END *(DOSTMTLIST)*; BEGIN *(DOSTATEMENT) BLKSONCURRNTLINE := O; SUCCESSFUL := FALSE; BLKSADDEDBYTHISSTMT := O; CHANGEMARGINTO(ACTUALLEFTMARGIN + IDENTINDEX); STARTNEWLINEANDINDENT; STATMTBEGINNING := CHARCOUNT; IF SYMBOLISNUMBER THEN BEGIN WITH UNWRITTEN[OLDEST] DO BEGIN INDENTAFTEREOL := IDENTAFTEREOL - 1 LENGTH - SYMBOLGAP; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITESY}_MBOL; READSYMBOL *(WRITE LABEL)*; WRITESYMBOL; READSYMBOL *(WRITE COLON)*; END FORWITHWHILESTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = DOSYMBOL; WRITESYMBOL; READSYMMBOL; STATMTPART[1] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := BLKSONCURRNTLINE + ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SY=MBOLGAP); END; REPEATSTATEMENT: DOSTMTLIST (UNTILSYMBOL); IFSTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = THENSYMBOL; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT;C WRITESYMBOL; READSYMBOL; STATMTPART[2] := CHARCOUNT +1; DOSTATMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); IF SUCCESSF\UL THEN BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTSEPARATION) ELSE IFTHENBUNCHNEEDED := TRUE; IF SYMBOLNAME = ELSESYMBOL THEN BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; IFTHENBUNCHNEEDED := FALSE; STARTNEWLINEAN&DINDENT; STATMTPART[3] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[4] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STMTiPART[3], STATMTPART[4], CHARCOUNT, SYMBOLGAP); BLKSONCURRNTLINE := BLKSADDEDBYTHISSTMT; IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[3], CHARCOUNT, STATMTSEPARATION); END ELSE IF (CHARCOUNT - STATMTBEGINNING) < BUFFERSIZE THEN BEGIN BUNCHWANTED := NOT BUNCHWANTED; BLKSONCURRNTLINE := O; BUNCH(STATMTBEGINNING, STATMTPART[1], STATMTPART[2], SYMBOLGAP); BUNCHWANTED := NOT BUNCHWANTED; END; IFTHENBUNCHNEEDED := FALSE; END *(IFSTATEMENT)*; CASESTATEMENT; BEGIN REPEAT WRITESYMBOL; RE"ADSYMBOL UNTIL SYMBOLNAME = OFSYMBOL; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); WHILE SYMBOLNAME <> ENDSYMBOL DO BEGIN STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PA2CK(SYMBOL, (I * ALFALENG + 1), STATMTSYMBOL[I + 1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = COLONSYMBOL; WRITESYMBOL; READSYMBOL; IF NOT (SYMBOLNAME IN [SEMICOLON, ENDSYMBOL]) THEN BEGIN STATMTPART[2] := CHARCOUNGLT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); END *(IF NOT(SYMBOLNAME...))*; IF NSYMBOLNAME - SEMICOLON THEN BEGIN WRITESYMBOL; READSYMBOL; END; END; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; IF ENDCOMMENTSWANTED AND (LASTSYMBOL = ENDSYMBOL) THEN BEGIN STATMTSYMBOL[1] := 'CASE '; STMTSYMLENGTH := 4; WRITECOMMENT; END; END *(CASESTATEMENT)*; OTHERSTATEMENT; BEGIN WHILE NOT (SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL]) DO BEGIN WRITESYMBOL; READSYMBOL END; END *(OTHER)*; COMPOUNDSTATEMENT: DOSTMTLIST(ENDSYMBOL) END *(CASE)*; ADDEDBLANKS := BLKSADDEDBYTHISSTMT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END *(DOSTATEMENT)*; BEGIN *(DOBLOCK)* LASTPROGPARTWASBODY := LASTPROGPARTWASBODY AND (SYMBOLNAME = BEGINSYMBOL); IF SYMBOLNAME = LABELSY MBOL THEN DODECLARATIONUNTIL(ENDLABEL); IF SYMBOLNAME = CONSTSYMBOL THEN DODECLARATIONUNTIL(ENDCONST); IF SYMBOLNAME = TYPESYMBOL THEN DODECLARATIONUNTIL(ENDTYPE); IF SYMBOLNAME = VARSYMBOL THEN DODECLARATIONUNTIL(ENDVAR); WHILE SYMBOLNAME IN [FUNCSYMBOL, PROCSYMBOL] DO DOPROCEDURES; IF SYMBOLNAME = BEGINSYMBOL THEN BEGIN IF LASTPROGPARTWASBODY THEN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; IFTHENBUNCHNEEDED := FALSE; ATPROCBEGINNING := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENT6bINDEX); DOSTATEMENT(I, BLOCKNAME, BLOCKNMLENGTH) *( I IS DUMMY PARAM )*; LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); END ELSE BEGIN WRITESMBOL; READSYMBOL *(WRITE FORWARD)* END END *(DOBLOCK)*; PROCEDURE INITIALIZIE; VAR I: WIDTH; BEGIN *( CONSTANTS: )* DIGITS := ['O' .. '9']; LETTERSANDDIGITS := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Z'] + DIGITS; ALPHASYMBOLS := [PROGSYMBʉOL, BEGINSYMBOL, ENDSYMBOL, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, CASESYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LABELSYMBjOL, ALPHAOPERATOR]; ENDLABEL := [CONSTSYMBOL, TYPESYMBOL, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, BEGINSYMBOL]; ENDCONST := ENDLABEL - [CONSTSYMBOL]; ENDTYPE := ENDCONST - [TYPESYMBOL]; ENDVAR := ENDTYPE - [VARSYMBOL]; *( INITIALIZE COLUMN DATA:)* WRITECOLUMN := O; LEFTMARGIN := O; ACTUALLEFTMARGIN := O; OUTPUTCOL := 1; READLEFTCOL := 1; READRIGHTCOL := MAXREADRIGHTCOL; WRITELEFTCOL := 1; WRITERIGHCOL := MAXWRITERIGHTCOL; OLDEST := 1; CHARCOUNT := 1; LINENUMBER := O; INCREMENT := O; *( INITIALIZE BOOLEA-pN PARAMETERS: )* PACKERISOFF := TRUE; BUNCHWANTED := FALSE; DISPLAYISON := TRUE; PROCNAMESWANTED := TRUE; ENDCOMMENTSWANTED := FALSE; NOFORMATTING := FALSE; *( INITIALIZE NUMERIC PARAMETERS: )* INDENTINDEX := 3; LONGLINEINDENT := 3; PROCSEPARATION := 2.; SYMBOLGAP := 1; STATMTSEPARATION := 3; DECLARALIGNMENT := O; *( INITIALIZE INPUT CONTEXT DATA: )* READCOLUMN := 1; CHISEOL := FALSE; NEXTCHISEOL := FALSE; FOR I := O TO BUFFERSIZE DO SYMBOL[I] := ''; LASTSYMBOL := PERIODSMBOL; LASTPROGPARTWASBODY :=0 FALSE; END *(INITIALIZE)*;  BEGIN *(MAINPROGRAM)* CONSTANTSINITIALIZATION; INITIALIZE; IF EOF(INPUT) THEN WRITELN('*** NO PROGRAM FOUND TO FORMAT.') ELSE BEGIN READACHARACTER; READSYMBOL; IF SYMBOLNAME <> PROGSYMBOL THEN WRITELN('***"PROGRAM" EXDKPECTED.') ELSE BEGIN *( ********************************************************************* F O R M A T T H E P R O G R A M - - - - - - - - - - - - - - - - ******************************************************************** *) STAERTNWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), MAIN[I + 1]); MAINNMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; START||NEWLINEANDINDENT; DOBLOCK(MAIN, MAINNMLENGTH); WRITEA('.'); FLUSHUNWRITTENBUFFER; END; END; 13: END *(MAINPROGRAM)*. 1980.DO| 1 C 3049 44.55 10 2 CC 3064 3 C 3065 223.70 32 4 C 3066 250 27 5 C 3069 96 4  6 CC 3070 7 C 3073 1340.63 25 8 C 3075 23 5 9 C 3076 100 24 10 C 3078 22.50 4 11 EM 810 17 1v5 12 EM 811 604.28 15 13 EM 812 643.69 15 14 D 140 34 15 D 8347.06 34 16 D 2086.75 17 C 813 980.89 14 18 C 817 205.18 12 19 CC 814 20 C 3081 35 4 21 C 3067 62 1 22 C 3083 34 6  23 C 3071 330 20 24 C 3085 50.99 5 25 C 3087 704.45 17 26 C 816 1581.88 12 27 C 819 1581 12 28 D 1468.38 34 29 D 871.98 34 30 D 13056 34 31 D 12436.99 34 32 D 435.99 34 33 C 3068 10 18 34 C 3086 138.02 25 35 C 3088 1040 23 36 C 3090 5324 9 37 C 3091 250 8 38 C 3092 206.59 20 39 C 3093 15.40 22 40 C 3094 120.70 4 41 C 3095 20 26 42 C 3096 775 9 43 C 3097 32 10 @44 C 3098 74.05 22 45 C 3099 4000 21 46 C 3101 1557.44 25 47 C 3104 40 33 48 C 3103 42.50 10 49 C 3105 504.39 25 50 C 3106 119.98 4 51 C 3107 793.50 9 52 C 3108 1537.50 27 53 C 3109 3394.50 6 54 C 3110 25 3 55 EM 818 140 27 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 59 EM 835 17 15 60 EM 836 181.73 14 61 EM 837 482.61 15 62 EM 838 2742.40 14 63 CC 839 64 Z EM 840 622.50 27 65 EM 821 195.18 12 66 EM 822 1415.95 12 67  C 3113 79.95 5 68 C 3114 69.95 10 69 C 3115 200 20 70 C 3116 225 27 71 C 3117 4.65 10 72 C 3119 48 18 73 C 3120 1940.43 25 74E C 3121 269.78 17 75 C 3123 12.24 4 76 C 3124 93.27 15 77 C 3125 181.78 15 78 C 3126 243.77 14 79 C 3127 68.45 23 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 83 C 3133 125.81 22 j 84 C 3134 20.47 22 85 C 3135 85.15 22 86 D 435.99 34 87 D 906.32 34 88 D 435.99 34 89 D 1628 34 90 D 3000 34 91 D 11481.06 34 92 C 3112 25 26 93 C 3118 1.30 11 94 C 3122 100 26  95 C 3128 7.86 22 96 C 3138 185.26 4 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 102 C 3144 42.08 22 103 C 3145 46.50 3 104 C 3146 36.70 11 105 C 3147 27.73 10 106 C 3148 25.98 5 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 110 C 3152 1000 25 111 C 3153 227.40 25 112 C 3154 100 8 113 C 3155 160.43 4 114 C 3156 835.38 25 115 C r3157 781.68 25 116 C 3198 28.30 3 117 EM 823 1000 12 118 C 3158 21.92 5 119 C 3159 12 33 120 C 3165 638.45 27 121 C 3167 15 5 122 C 3160 155.47 17 123 C 3161 34 10 124 C 3163 594 17 125 C 3166 465o 4 126 C 3168 83.85 3 127 C 3169 200 24 128 D 1834.55 34 129 D 435.99 34 130 D 802.29 34 131 EM 824 333.14 15 132 EM 825 378.68 15 133 EM 826 2590.51 14 134 EM 827 425.95 12 135 EM 828 82.50 26 w 136 EM 829 38.70 14 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 141 D 905 34 142 D 594 34 143 D 520 34 144 D 435.99 34 145 DM 18.88 146 C 3162 39.95 1C8 147 C 3164 130.46 14 148 C 3170 120.97 4 149 C 3171 18 33 150 C 3172 36.70 10 151 C 3173 947.50 25 152 C 3174 80 26 153 C 3175 204 5 154 C 3177 496.56 25 155 C 3178 136.20 25 156 C 3179 729 17 *" 157 C 3180 170 23 158 C 3182 121.30 11 159 C 3183 25.91 22 160 C 3184 27 17 161 C 3186 10.08 23 162 C 3200 1020 27 163 D 13331.89 34 164 D 11943.74 34 165 D 4546.81 34 166 D 129.24 34 167 D 3W229.35 34 168 D 715 34 169 C 3176 50 22 170 C 3181 950 7 171 C 3185 125 23 172 C 3187 174.75 23 173 C 3188 290.64 4 174 C 3189 1372 27 175 C 3190 3.28 5 176 C 3191 18 5 177 C 3192 5.68 23 178 F C 3203 100 27 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 7 23 182 C 3196 50 21 183 C 3199 26 33 184 C 3201 2764.81 27 185 C 3202 948.17 25 186 C 3204 55.20 5 187 C 3205 14.25 7 188 C 32ӈ06 10 6  189 C 3207 7.58 5 190 C 3208 60.59 2 191 C 3209 250.65 25 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 195 EM 846 3584 14 196 D 531.21 34 197 EM 843 1527.87 12 198 EM 84e7 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 202 C 3210 720 27 203 C 3211 69.37 2 204 C 3212 1.81 11 205 C 3213 176.55 25 206 C 3214 10.46 25 207 C 3215 18.28 5 208 321b6 64.28 5 209 C 3217 547.32 17 210 C 3218 136.48 17 211 C 3219 48.60 10 212 C 3220 170 23 213 C 3221 10 8 214 C 3224 227.40 17 215 C 3225 36 5 216 C 3222 450 27 217 C 3223 10.64 5 218 C 3226 93.71y 4 219 C 3227 74.13 2 220 C 3230 31 26 221 EM 851 4000 36 222 C 3229 2774.75 23 223 C 3228 102.08 4 224 C 3231 35 18 225 D 4888.40 34 226 D 3435.99 34 227 EM 852 1527.87 12 228 C 3232 125 23 2s29 C 3233 3654.15 23 230 C 3235 37 33 231 C 3236 42.50 33 232 C 3237 2282.26 6 233 C 3238 138.17 33 234 C 3239 95.64 2 235 C 3240 3.70 5 236 C 3241 4.33 5 237 C 3242 35.39 18 238 EM 854 48.65 12 2'39 EM 853 540 15 240 D 3148 34 241 D 296.31 34 242 D 1403.43 34 243 D 174 34 244 D 2600 30 245 C 3243 28.20 3 246 C 3244 341.40 10 247 C 3245 500 25 248 C 3246 328.44 10 249 C 3247 784.13 25  250 C 3248 125.30 11 251 C 3249 5.76 23 252 C 3250 50 24 253 C 3252 1760 27 254 C 3251 100 2 255 C 3253 43 1 256 C 3254 290.77 4 257 C 3255 100 2 258 C 3258 42.50 33 259 C 3259 4.60 23 260 CC *l3131 261 C 3260 820.84 25 262 C 3261 732.30 8 263 C 3263 50 22 264 C 3264 296.31 23 265 C 3265 168.01 25 266 D 435.99 34 267 C 3082 1350.12 25 268 C 3136 16.00 1 269 C 3216 64.28 5 270 C 3234 298.80 25 271 C 3262 88.41 14 272 C 3268 14.00 26 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 810 11 EM 810 17 15 811 12 EM 811 604.28 15 812 13 EM 812 643.69 15 813 17 C 813 980.89 ^14 814 19 CC 814 816 26 C 816 1581.88 12 817 18 C 817 205.18 12 818 55 EM 818 140 27 819 27 C 819 1581 12 820 56 EM 820 1581 12 821 65 EM 821 195.18 12 822 66 EM 822 1415.95 12 823 117 EM 823 1000 12 824 131 zEM 824 333.14 15 825 132 EM 825 378.68 15 826 133 EM 826 2590.51 14 827 134 EM 827 425.95 12 828 135 EM 828 82.50 26 829 136 EM 829 38.70 14 830 138 EM 830 1425.95 12 831 139 EM 831 205.18 12 832 140 EM 832 209.37 12 833 _ 57 EM 833 948.57 12 834 58 EM 834 912.14 12 835 59 EM 835 17 15 836 60 EM 836 181.73 14 837 61 EM 837 482.61 15 838 62 EM 838 2742.40 14 839 63 CC 839 840 64 EM 840 622.50 27 841 137 EM 841 1425.95 12 842 192 EMB 842 209.37 12 843 197 EM 843 1527.87 12 844 193 EM 844 1527.87 12 845 194 EM 845 290.37 12 846 195 EM 846 3584 14 847 198 EM 847 1527.87 12 848 199 EM 848 209.37 12 849 200 EM 849 1000 12 850 201 EM 850 9000 12 851 221 EM 851 4000 36 852 227 EM 852 1527.87 12 853 239 EM 853 540 15 854 238 EM 854 48.65 12 3049 1 C 3049 44.55 10 3064 2 CC 3064 3065 3 C 3065 223.70 32 3066  4 C 3066 250 27 3067 21 C 3067 62 1 3068 33 C 3068 10 18 3069 5 C 3069 96 4 3070 6 CC 3070 3071 23 C 3071 330 20 3073 7 C 3073 1340.63 25 3075 8 C 3075 23 5 3076 9 C 3076 100 24 3078 10 C 3078 22.50 4 3081 20 C 3081 35 4 3082 267 C 3082 1350.12 25 3083 22 C 3083 34 6 3084 273 CC 3084 3085 24 C 3085 50.99 5 3086 34 C 3086 138.02 25 3087 25 C 3087 704.45 17 3088 35 C 3088 1040 23 3089 274 CC 3089 3090  36 C 3090 5324 9 3091 37 C 3091 250 8 3092 38 C 3092 206.59 20 3093 39 C 3093 15.40 22 3094 40 C 3094 120.70 4 3095 41 C 3095 20 26 3096 42 C 3096 775 9 3097 43 C 3097 32 10 3098 44 C 3098 74.05 22 3099 45 C 3099 4000 21 3100 275 CC 3100 3101 46 C 3101 1557.44 25 3102 276 CC 3102 3103 48 C 3103 42.50 10 3104 47 C 3104 40 33 3105 49 C 3105 504.39 25 3106 50 C 3106 119.98 4 3107 51 C 3107 793.50 9 3108 52 C 3108 1537.50 27 3109 53 C 3109 3394.50 6 3110 54 C 3110 25 3 3111 277 CC 3111 ` 3112 92 C 3112 25 26 3113 67 C 3113 79.95 5 3114 68 C 3114 69.95 10 3115 69 C 3115 200 20 3116 70 C 3116 225 27 3117 71 C 3117 4.65 10 3118 93 C 3118 1.30 11 3119 72 C 3119 48 18 3120 73 C 3120 1940.43 25 3121  74 C 3121 269.78 17 3122 94 C 3122 100 26 3123 75 C 3123 12.24 4 3124 76 C 3124 93.27 15 3125 77 C 3125 181.78 15 3126 78 C 3126 243.77 14 3127 79 C 3127 68.45 23 3128 95 C 3128 7.86 22 3129 80 C 3129 128.35 5 3130 81 C 3130 25.98 5 3131 260 CC 3131 3132 82 C 3132 15.90 5 3133 83 C 3133 125.81 22 3134 84 C 3134 20.47 22 3135 85 C 3135 85.15 22 3136 268 C 3136 16.00 1 3138 96 C 3138 185.26 4 3139 97 C 3139 19.37 10 3140 R: 98 C 3140 6.17 10 3141 99 C 3141 6.46 10 3142 100 C 3142 3.96 10 3143 101 C 3143 3.62 10 3144 102 C 3144 42.08 22 3145  103 C 3145 46.50 3 3146 104 C 3146 36.70 11 3147 105 C 3147 27.73 10 3148 106 C 3148 25.98 5 3149  107 C 3149 6 33 3150 108 C 3150 95 33 3151 109 C 3151 78.50 33 3152 110 C 3152 1000 25 3153 111 C 3153 227.40 25 3154 112 C 3154 100 8 3155 113 C 3155 160.43 4 3156 114 C 3156 835.38 25 3157 115 C 3157 781.68 25 3158 1148 C 3158 21.92 5 3159 119 C 3159 12 33 3160 122 C 3160 155.47 17 3161 123 C 3161 34 10 3162 146 C 3162 39.95 18  3163 124 C 3163 594 17 3164 147 C 3164 130.46 14 3165 120 C 3165 638.45 27 3166 125 C 3166 465 4 3167 121 C L3167 15 5 3168 126 C 3168 83.85 3 3169 127 C 3169 200 24 3170 148 C 3170 120.97 4 3171 149 C 3171 18 33 3172 150 C 3172 36.70 10 3173 151 C 3173 947.50 25 3174 152 C 3174 80 26 3175 153 C 3175 204 5 3176 169 C 3176 50 22- 3177 154 C 3177 496.56 25 3178 155 C 3178 136.20 25 3179 156 C 3179 729 17 3180 157 C 3180 170 23 3181 170 C 3181 950 7 3182 158 C 3182 121.30 11 3183 159 C 3183 25.91 22 3184 160 C 3184 27 17 3185 171 C 3185 125 23 31J86 161 C 3186 10.08 23 3187 172 C 3187 174.75 23 3188 173 C 3188 290.64 4 3189 174 C 3189 1372 27 3190 175 C 3190 3.28 5 3191 176 C 3191 18 5 3192 177 C 3192 5.68 23 3193 179 C 3193 37.25 23 3194 180 C 3194 147.08 23 3195 181 C 3195 7 23 3196 182 C 3196 50 21 3198 116 C 3198 28.30 3 3199 183 C 3199 26 33 3200 162 C 3200 1020 27 3201 184 C 3201 2764.81 27 3202 185 C 3202 948.17 25 3203 178 C 3203 100 27 3204 186 C 3204 55.20 5 3205 18}(7 C 3205 14.25 7 3206 188 C 3206 10 6 3207 189 C 3207 7.58 5 3208 190 C 3208 60.59 2 3209 191 C 3209 250.65 25 3210 202 C 3210 720 27 3211 203 C 3211 69.37 2 3212 204 C 3212 1.81 11 3213 205 C 3213 176.55 25 3214 206 C 3_m214 10.46 25 3215 207 C 3215 18.28 5 3216 269 C 3216 64.28 5 3217 209 C 3217 547.32 17 3218 210 C 3218 136.48 17 3219 211 C 3219 48.60 10 3220 212 C 3220 170 23 3221 213 C 3221 10 8 3222 216 C 3222 450 27 3223 217 C 3223 10.64 5 3224 214 C 3224 227.40 17 3225 215 C 3225 36 5 3226 218 C 3226 93.71 4 3227 219 C 3227 74.13 2 3228 223 C 3228 102.08 4 3229 222 C 3229 2774.75 23 3230 220 C 3230 31 26 3231 224 C 3231 35 18 3232 228 C 3232 125 (23 3233 229 C 3233 3654.15 23 3234 270 C 3234 298.80 25 3235 230 C 3235 37 33 3236 231 C 3236 42.50 33 3237 232 C 3237 2282.26 6 3238 233 C 3238 138.17 33 3239 234 C 3239 95.64 2 3240 235 C 3240 3.70 5 3241 236 C 3241 4.q33 5 3242 237 C 3242 35.39 18 3243 245 C 3243 28.20 3 3244 246 C 3244 341.40 10 3245 247 C 3245 500 25 3246 248 C 3246 328.44 10 3247 249 C 3247 784.13 25 3248 250 C 3248 125.30 11 3249 251 C 3249 5.76 23 3250 252 C 3250&d 50 24 3251 254 C 3251 100 2 3252 253 C 3252 1760 27 3253  255 C 3253 43 1 3254 256 C 3254 290.77 4 3255 257 C 3255 100 2 3258 258 C 3258 42.50 33 3259 259 C 3259 4.60 23 3260 261 C 3260 820.84 25 3261 262 C 3261 732.30 l*8 3262 271 C 3262 88.41 14 3263 263 C 3263 50 22 3264 264 C 3264 296.31 23 3265 265 C 3265 168.01 25 3268 272 C 3268 14.00 26 PRETTYPRIN.PA (************************************************************************** PROGRAM TITLE: PASCAL PRETTYPRINTING PROGRAM AUTHORS: JON F. HUERAS AND HENRY F. LEDGARD COMPUTER AND INFORMATION SCIENCE DEPARTMENT UNIVERSITY OF MASSACHUSETTS, AMHERST - AUGUST, 1976 (EARLIER VERSIONS AND CONTRIBUTIONS BY RANDY CHOW AND JOHN GORMAN). BUGS CORRECTD BY CHARLES FISCHER, DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF WISCONSIN, MADISON. 1977. IKNDICATED BY <<<. MODIFIED FOR CDC-6000 PASCAL RELEASE 3 BY RICK L. MARCUS UNIVERSITY COMPUTER CENTER, UNIVERSITY OF MINNESOTA. 30 SEPTEMBER 1978. PROGRAM SUMMARY: THIS PROGRAM TAKES AS INPUT A PASCAL PROGRAM AND REFORMAT,S THE PROGRAM ACCORDING TO A STANDARD SET OF PRETTYPRINTING RULES. THE PRETTYPRINTED PROGRAM IS GIVEN AS OUTPUT. THE PRETTYPRINTING RULES ARE GIVEN BELOW. AN IMPORTANT FEATURE IS THE PROVISION FOR THE USE OF EXTRA SPACES AND EXTRA BLANK LINES. THEY4 MAY BE FREELY INSERTED BY THE USER IN ADDITION TO THE SPACES AND BLANK LINES INSERTED BY THE PRETTYPRINTER. NO ATTEMPT IS MADE TO DETECT OR CORRECT SYNTACTIC ERRORS IN THE USER'S PROGRAM. HOWEVER, SYNTACTIC ERRORS MAY RESULT IN ERRONEOUS PREaTTYPRINTING. INPUT FILE: INPUT - A FILE OF CHARACTERS, PRESUMABLY A PASCAL PROGRAM OR PROGRAM FRAGMENT. OUTPUT FILE: OUTPUT - THE PRETTYPRINTED PROGRAM. ************************************************************************_** ************************************************************************** PASCAL PRETTYPRINTING RULES GENERAL PRETTYPRINTING RULES 1. ANY SPACES OR BLANK LINES BEYOND THOSE GENERATED BY THE PRETTYPRINTER ARE LEFT ALONE. THE USER IS ENCOURAGED, FOR THE SAKE OF READABILITY, TO MAKE USE OF THIS FACILITY. IN ADDITION, COMMENTS ARE LEFT WHERE THEY ARE FOUND, UNLESS THEY ARE SHIFTED RIGHT BY PRECEEDING TEXT ON A LINE. 2. ALL STATEMENTS AND DECLARATIONS BEGIN ON SEPARATE LINES. 3. NO LINE MAY BE GREATER THAN 72 CHARACTERS LONG. ANY LINE LONGER THAN THIS IS CONTINUED ON A SEPARATE LINE. 4. THE KEYWORDS "BEGIN", "END", "REPEAT", AND "RECORD" ARE FORCED TO STAND ON LINES BY THEMSELVES (OR POSSIBLY FOLLOWED BY SUPPORTING COM'MENTS). IN ADDITION, THE "UNTIL" CLAUSE OF A "REPEAT-UNTIL" STATEMENT IS FORCED TO START ON A NEW LINE. 5. A BLANK LINE IS FORCED BEFORE THE KEYWORDS "PROGRAM", "PROCEDURE", "FUNCTION", "LABEL", "CONST","TYPE", AND "VAR". 6. A SPACE IS FORCED BEFORE NOAND AFTER THE SYMBOLS ":=" AND "=". ADDITIONALLY, A SPACE IS FORCED AFTER THE SYMBOL ":". NOTE THAT ONLY "="S IN DECLARATIONS ARE FORMATTED. "="S IN EXPRESSIONS ARE IGNORED. <<<. INDENTATION RULES 1. THE BODIES OF "LABEL", "CONST", "TYPE", AND "VAՋR" DECLARATIONS ARE INDENTED FROM THEIR CORRESPONDING DECLARATION HEADER KEYWORDS. 2. THE BODIES OF "BEGIN-END", "REPEAT-UNTIL", "FOR", "WHILE", "WITH", AND "CASE" STATEMENTS, AS WELL AS "RECORD-END" STRUCTURES AND "CASE" VARIANTS (TO ONE LEVEL) ARE INDENTED FROM THEIR HEADER KEYWORDS. 3. AN "IF-THEN-ELSE" STATEMENT IS INDENTED AS FOLLOWS: IF THEN ELSE **************************************************************************** ****ԋ************************************************************************ GENERAL ALGORITHM THE STRATEGY OF THE PRETTYPRINTER IS TO SCAN SYMBOLS FROM THE INPUT PROGRAM AND MAP EACH SYMBOL INTO A PRETTYPRINTING ACTION, INDEPENDs_ENTLY OF THE CONTEXT IN WHICH THE SYMBOL APPEARS. THIS IS ACCOMPLISHED BY A TABLE OF PRETTYPRINTING OPTIONS. FOR EACH DISTINGUISHED SYMBOL IN THE TABLE, THERE IS AN ASSOCIATED SET OF OPTIONS. IF THE OPTION HAS BEEN SELECTED FOR THE SYMBOL BEING SCANNED, THEN THE ACTION CORRESPONDING WITH EACH OPTION IS PERFORMED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO= A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND GINVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS4# ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THpERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIHIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANMK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS. NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT []L) SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTiBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. *************************Jy**************************************************** PROGRAM PRETTYPRINT *( FROM )* INPUT, *( TO )* OUTPUT ); CONST MAXSYMBOLSSIZE = 200; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A)* *( SYMBOL SCANNED BY THE LEXICAL SCANNER. )* MAXSTACKSIZE = 100; *( THE MAXIMUM NUMBER OF SYMBOLS CAUSING )* *( INDENTATION THAT MAY BE STACKED. )* MAXKEYLENGTH = 10; *( THE MAXIMUM LENGTH (IN CHARACTERS) OF A )* *( PASCAL RESERVED KEYWORD. )* MAXLINESIZE = 72; *( THE MAXIMUM SIZE (IN, CHARACTERS) OF A )* *( LINE OUTPUT BY THE PRETTYPRINTER. )* SLOFAIL1 = 30; *( UP TO THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; *( UP TOÆ THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT2". BEYOND )* *( THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE - ''; TYPE KEYSYMBOL =c ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSEC\OMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, 9CRAFTER ); PROGRAM PRETTYPRINT *( FROM )* INPUT, *( TO )* OUTPUT ); CONST MAXSYMBOLSSIZE = 200; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A)* *( SYMBOL SCANNED BY THE LEXICAL SCANNER. )* MAXSTACKSIZE = 100; *( THE MAXIMUM NUMBER OF SYMBOLS CAUSING )* *( INDENTATION THAT MAY BE STACKED. )* MAXKEYLENGTH = 10; *( THE MAXIMUM LENGTH (IN CHARACTERS) OF A )* *( PASCAL RESERVED KEYWORD. )* MAXLINESIZE = 72; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A )* *( LINE OUTPUT BY THE PRETTYPRINTER. )* SLOFAIL1 = 30; *( UP TO THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; *( UP TO THIS COLUMN POSITION, EACH TIME )*  *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT2". BEYOND )* *( THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE - ''; TYPE KEYSYMBOL = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM,  ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, O PENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, CRAFTER ); OPTIONSET = SET OF OPTION  KEYSYMSET = SET OF KEYSYMBOL; TABLEENTRY = RECORD OPTIONSELECTED : OPTIONSET; DINDENTSYMBOLS : KEYSYMSET; GOBBLETERMINATORS : KEYSYMSET  END; OPTIONTABLE = ARRAY [ KEYSYMBOL ] OF TABLEENTRY; KEY = PACKED ARRAY [ 1..MAXKEYLENGTH ] OF CHAEuR; KEYWORDTABLE = ARRAY [PROGSYM..UNTILSYM ] OF KEY; SPECIALCHAR = PACKED ARRAY [ 1..2 ] OF CHAR; DBLCHRSET = SET OF BECOMES..OPENCOMMENT; DBLCHARTABLE = ARRAY [ BECOMES..OPENCOMMENT ] OF SPECIALCHAR; SGLCHARTABLE = ARRAY [ SEMICOLON..PERIOD ] OFZ CHAR; STRING = ARRAY [ 1..MAXSYMBOLSIZE ] OF CHAR; SYMBOL = RECORD NAME : KEYSYMBOL; VALU : STRING; LENGTH : INTEGER; SPACESBEFORE : INTEGER; CRSBEFORE : INTEGER END; SYMBOLINFO = ^SYMBOL; CHARNAME = ( LETTER, DIGIT, BLANK, QUOTE, ENDOFLINE, FILEMARK, OTHERCHAR ); CHARINFO = RECORD NAME : CHARNAME; VALU : CHAR END; STACKENTRY = RECORD INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER END; SYMBOLSTACK = ARRAY [ 1..MAXSTACKSIZE ] OF STACKENTRY; VAR RECORDSEEN: BOOLEAN; CURRCHAR, NEXTCHAR: CHARINFO; CURRSYM, NEXTSYM: SYMBOLINFO; CRPENDING: BOOLEAN; PPOPTION: OPTIONTABLE; KEYWORD: KEYWORDTABLE; DBLCHARS: DBLCHRSET; DBLCHAR: DBLCHARTABLE; SGLCHAR: SGLCHARTABLE; STACK: SYMBOLSTACK; TOP : INTEGER; STARTPOS, *(STARTING POSITION OF LAST SYMBOL WRITTEN )* <<<. CURRLINEPOS, CURRMARGIN : INTEGER; PROCEDURE GETCHAR ( *( FROM INPUT )* *( UPDATING )* VAR NEXTCHAR : CHARINFO; *( RETURNING )* VAR CURRCHAR : CHARINFO A); BEGIN *( GETCHAR )* CURRCHAR := NEXTCHAR; WITH NEXTCHAR DO BEGIN IF EOF(INPUT) THEN NAME := FILEMARK ELSE IF EOLN(INPUT) THEN NAME := ENDOFLINE ELSE IF INPUT^IN ['A'..'Z'] THEN NAME := DIGIT ELSE IF INPUT^IN ['O'..'9'] THEN NA5ME := DIGIT ELSE IF INPUT^= '''' THEN NAME := QUOTE ELSE IF INPUT^= SPACE THEN NAME := BLANK ELSE NAME := OTHERCHAR; IF NAME IN [ FILEMARK, ENDOFLINE ] THEN VALU := SPACE ELSE VALU := INPUT^; IF NAME <> FILEMARK THEN GET(INPUT)  END *(WITH)* END; *( GETCHAR )* PROCEDURE STORENEXTCHAR *( FROM INPUT )* *( UPDATING )* VAR LENGTH : INTEGER; VAR CURRCHAR, NEXTCHAR : CHARINFO; :( PLACING IN )* VAR VALU : STRING ); BEGIN *( STORENEXTCHAR )* GETCHAR( *( EFROM INPUT )* *( UPDATING )* NEXTCHAR, *( RETURNING )* CURRCHAR ); IF LENGTH < MAXSYMBOLSIZE THEN BEGIN LENGTH := LENGTH + 1; VALU [LENGTH] := CURRCHAR.VALU END END; *(STORENEXTCHAR )* PROCEDURE SKIPSPACES ( *( UP DATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; *( RETURNING )* VAR SPACESBEFORE,  CRSBEFORE : INTEGER ); BEGIN *( SKIPSPACES )* SPACESBEFORE := 0; CRSBEFORE := 0; WHILE NEXTCHAR.NAME IN [ BLANK, ENDOFLINE ] DO BEGIN GETCHAR-( *( FROM INPUT )* *( UPDATING )* NEXTCHAR, :( RETURNING )* CURRCHAR ); CASE CURRCHAR.NAME OF BLANK, : SPACESBEFORE := SPACESBEFORE+1; ENDOFLINE : BEGIN CRSBEFORE := CRSBEFORE+1; SPACESBEFORE := 0 END END *( CASE )* END *( WHILE )WM* END; *( SKIPSPACES )* PROCEDURE GETCOMMENT ( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GET COMMENT )* NAME := OPENCOMMENT; WHILE NOT ( ((CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')')) OR (NEXTCHAR.NAME = ENDOFLINE) OR (NEXTCHAR.NAME = FILEMARK)) DO STORENEXTCHAR ( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( I 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; *( WRITECRS )* PROCEDURE INSERTCR( *( UPDATING )* VAR CURRSYM : SMBOLINFO *( WRITING TO OUTPUT )* ); CONST ONCE = 1; BEGIN *( INSERTER )* IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); CURRSYM^.SPACESBEFORE := 0 END END; *( INSERTER )* PROCEDURE INSERTBLANKLINE( *( UPDATING )* VAR CURRSYM : SYMBOLINFO *( WRITING TO OUTPUT )* ); CONST ONCE = 1; TWICE - 2; BEGIN *( INSERTBLANKLINE )* f IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ) ELSE WRITECRS( TWICE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); CURRSYM^.SPACESBEFORE := u0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ) END; *( INSERTBLANKLINE )* PROCEDURE 1SHIFTON( *( USING )* DINDENTSYMBOLS : KEYSYMSET ); VAR INDE,NTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN *( 1SHIFTON )* IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( *( RETURNING )* INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOXT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( *( USING )* INDENTSYMBOL, PREVMARGIN ) END END; *( 1SHIFTON )* PROCEDURE 1SHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTZEGER; BEGIN *( 1SHIFT )* IF NOT STACKEMPTY THEN BEGIN POPSTACK( *( RETURNING )* INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; *( 1SHIFT )* PROCEDURE INSERTSPACE( *( USING )* VAR SYMBOL : SYMBOLINFO *( WRITING|Q TO OUTPUT )* ); BEGIN *( INSERTSPACE )* IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END  END; *( INSERTSPACE )* PROCEDURE MOVELINEPOST( *( TO )* NEWLINEPOS : INTEGER; *( FROM )* VAR CURRLINEPOS : INTEGER *( WRITING TO OUTPUT )* ); VAR I: INTEGER; (TED SMALL I) BEGIN *( MOVELINEPOS )* FOR I := CURRLINEPOS+1 TO }NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; *( MOVELINEPOS )* PROCEDURE PRINTSYMBOL( *( IN )* CURRSYM : SYMBOLINFO; *( UPDATING )* VAR CURRLINEPOS : INTEGER *( WRITING TO OUTPUT )* ); f VAR I: INTEGER; (TED SMALL I) BEGIN *( PRINTSYMBOL )* WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; *( SAVE START POS FOR TAB PURPOSES )* <<<. CURRLINEPOS := CUReRLINEPOS + LENGTH END *( WITH )* END; *( PRINTSYMBOL )* PROCEDURE PPSYMBOL( *( IN )* CURRSYM : SYMBOLINFO *( WRITING TO OUTPUT )* ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN *( PPSYMBOL )* WITH CURRSYM^ DO BEGIN WRIJTECRS( *( USING )* CRSBEFORE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( *( TO )* NEWLINEPOS, *( FROM )* CURRLINEPOS *( IN OUTPUT )* ); PRINTSYMBOL( *( IN )* CURRSYM, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ) E6#ND *( WITH )* END; *( PPSYMBOL )* PROCEDURE RSHIFTTOCLP( *( USING )* CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( *( SYMBOLS FROM INPUT )* *( UP TO )* TERMINATORS : KEYSYMSET; *( UPDATING )* VAR CURRSYM, NEXTSYM : SYMBOLINFO % *( WRITING TO OUTPUT )* ); BEGIN *( GOBBLE )* RSHIFTTOCLP( *( USING )* CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( *( FROM INPUT )* *( UPDATING )* NEXTSYM, *( RETURNING )* CURRSYM  ); PPSYMBOL( *( IN)* CURRSYM *( WRITING TO OUTPUT )* ) END; *( WHILE )* 1SHIFT END; *( GOBBLE )* PROCEDURE RSHIFT( *( USING )* CURRSYM : KEYSMBOL ); BEGIN *( RSHIFT )* IF NOT STACKFULL THEN PUSHSTACK( *( USING )* CURRSYM,  CURRMARGIN); *( IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. )* <<<. IF STARTPOS > CURRMARGIN <<<. THEN <<<. CURRMARGIN := STARTPOS; <<<. IgF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; *( RSHIFT )* PROCEDURE RSHIFTTOCLP; BEGIN *( RSHIFTTOCLP )* IF NOT STACKFULL THEN PUSHSTACK( *( USING )* CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; *( RSHIFTTOCLP )* BEGIN *( PRETTYPRINT )* INITIALIZE( TOP CURRLINEPOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSYMBOL( *( FROM INPUT )* *( UPDATING )* NEXTSYM, *( RETURNING )* CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTV]ED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( *( USING )* CURRSYM *( WRITING TO OUTPUT )* ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_*( USNG )* CURRSYM *( WRITING TO OUTS|PUT )* ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN 1SHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN 1SHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( *( USING )* CURRSYM *( WRITING TO OUTPUT 8)* ); PPSYMBOL( *( IN )* CURRSYM *( WRITING TO OUTPUT )* ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( *( USING )* NEXTSYM *( WRITING TO OUTPUT )* ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( *( USING )* CURRSYM^.mmNAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( *( USING )* CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( *( SYMBOLS FROM INPUT )* *( UP TO )* GOBBLETERMINATORS, *( UPDATING )* CURRSYM,  NEXTSYM *( WRITPING TO OUTPUT )* IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END *( WITH )* END; *( WHILE )* IF CRPENDING THEN WRITELN(OUTPUT) END. TOTAL.LS ҘRational Data Systems Pascal Compiler [release RDOS.2.11, overlaid] "TOTAL.PA" compiled on Thursday 1 January 1981 at 12:29:40 using the option /Swapping. line seg proc off nst 1 0 1 1 PROGRAM TOTAL(INPUT,OUTPUT); 2 0 1  1 3 0 1 1 TYPE ALPHANUMERIC = STRING[99]; 4 0 1 1 5 0 1 1 VAR STR : ALPHANUMERIC; 6 0 1 51 TOTAL,AMOUNT : REAL; 7 0 1 55 I,CHECKNUMBER : INTEGER; 8 0 1 57 INFILE,OUTFILE : TEXT; 9 0 1 317 10 0 1 317 11 0 2 1 FUNCTION GETREAL( STR : ALPHANUMERIC;VAR I : INTEGER) : REAL; 12 0 2 55 {STR : STRING[99] = INPUT LINE 13!L 0 2 55 I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} 14 0 2 55 15 0 2 55 LABEL 1,2; 16 0 2 55 17 0 2 55 TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; 18 0 2 55 3 SIGNOF = (PLUS,MINUS); 19 0 2 55 20 0 2 55 VAR LEN : INTEGER; 21 0 2 56 FGETREAL,PLACE :REAL; 22 0 2 60 PART : WHOLORFRACT ; 23 0 2 61 a SIGN : SIGNOF; 24 0 2 62 25 0 2 62 26 0 2 0 0 BEGIN 27 0 2 0 0 SIGN := PLUS; 28 0 2 8 0 PART := WHOLE;{assume while part first} 29 0 2 11 0 | FGETREAL := 0; 30 0 2 17 0 LEN := LENGTH(STR); 31 0 2 22 0 { WRITELN('LEN=',LEN);} 32 0 2 22 0 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} 33 0 2 29 2  IF NOT (STR[I] IN ['0'..'9','-','.']) THEN BEGIN 34 0 2 51 2 I := I+1;GOTO 1; 35 0 2 59 2 END 36 0 2 59 1 ELSE 37 0 2 61 3 IF STR[I] = '-' THEN BEGIN 38 0 2 71 3 I := I+1; 39 0 2 77 3 SIGN := MINUS; 40 0 2 80 3 \ GOTO 1; 41 0 2 82 3 END 42 0 2 82 2 ELSE 43 0 2 84 3 2: IF I <= LEN THEN 44 0 2 91 4 IF STR[I] IN ['0'..'9'] THEN 45 0 2 112 5 BEGIN 46 0 2 112 5 CASE PART OF 47 0 2 116 5 WHOLE : 48 0 2 116 6 BEGIN  49 0 2 116 6 FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); 50 0 2 138 6 { REALPRINT(FGETREAL);} 51 0 2 138 6 { WRITELN(' WHOLE');} 52 0 ߵ2 138 5 END; 53 0 2 140 5 54 0 2 140 6 FRACTIONAL : BEGIN 55 0 2 140 6 FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; 56׭ 0 2 163 6 PLACE := PLACE*10; 57 0 2 174 6 { REALPRINT(FGETREAL);} 58 0 2 174 6 { WRITELN(' FP');} 59 0 2 174 6  END 60 0 2 174 5 END; {case} 61 0 2 188 5 I := I+1; 62 0 2 194 5 GOTO 2 63 0 2 196 5  END 64 G 0 2 196 5 ELSE IF STR[I] = '.' THEN 65 0 2 208 6 BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; 66 0 2 223 6 { WRITE(' FRACTION.');} 67 0 2 223 6  GOTO 2; 68 0 2 225 6 END 69 0 2 225 6 70 0 2 225 6 ELSE IF STR[I] = ',' THEN 71 0 2 237 0  BEGIN I := I+1;GOTO 2 END; 72 0 2> 245 0 73 0 2 245 0 CASE SIGN OF 74 0 2 249 0 PLUS : GETREAL := FGETREAL; 75 0 2 259 0 MINUS : GETREAL := -FGETREAL; 76 0 2 270 0 END;{ca-se} 77 0 2 282 0 END;{getreal} 78 0 2 306 0 79 0 2 306 0 (*$I GETREAL.PI *) 80 0 2 306 0 81 0 3 1 PROCEDURE REALPRINT (VAR OUTFILE : TEXT;R : REAL); 82 0 3 4 TYPE SIGNOF = (PLUS,MINUS); 83 0 3 4 84 0 3 4 VAR I,J,CHARPOS : INTEGER; 85 0 3 7 STR : STRING[15]; 86 0 3 15 SIGN : SIGNOF; 87 0 3 16 88 0 3 16 89 0 3 16 90 0 4 1 PROCEDURE DECDIGIT; 91 0 4 1 92 0 4 1 VAR R1 : INTEGER; 93 0 4 2 94 0 4 0 0 BEGIN 95 0 4 0 0 { WRITE(' J=',J,' .CHARPOS=',CHARPOS);} 96 0 4 0 0 R1 := TRUNC(R/PWROFTEN (J)); 97 0 4 15 0 { WRITELN(' R1=',R1);} 98 0 4 15 0 R := R-R1*PWROFTEN (J); 99 0 4 34 0 STR[CHARPOS] := CHR(R1+48); 100 0 4 50 0 CHARPOS := CHARPOS+1; 101 0 4 58 0 IF ((J = 6) OR (J = 3)) THEN 102 0 4 71 1 BEGIN STR[CHARPOS] := ','; 103 0 4 80 1 CHARPOS := CHARPOS+1; 104 0 4 88 0 END; 105 0 4 88 0 END;{DECDIGIT} 106 0 4 100 0 107 0 5 1 PROCEDURE FRACTDIGIT; 108 0 5 1 109 0 5 1 VAR R1 : INTEGER; 110 0 5 2 111 0 5 0 0X BEGIN 112 0 5 0 0 { WRITE(' J=',J,'CHARPOS=',CHARPOS);} 113 0 5 0 0 R1 := TRUNC(R*PWROFTEN(J)); 114 0 5 15 0 { WRITELN(' R1=',R1);} 115 0 5 15 0 R := R-R1/PWROFTEN(J); 116 0 5 34 0 STR[CHARPOS] := CHR(R1+48); 117 0 5 50 0 CHARPOS := CHARPOS+1; 118 0 5 58 0 END;{FRACTDIGIT} 119 0 5 70 0 120 0 5 70 0 121 0 3 0 0 BEGIN 122 0 3 0 0 ]{do decimal part first} 123 0 3 0 0 124 0 3 0 0 IF R >= 0 THEN SIGN := PLUS ELSE 125 0 3 15 0  BEGIN R := -R; SIGN := MINUS;END; 126 0 3 27 0 R := R + 0.005; 127 0 3 43 20 128 0 3 43 0 STR :=' '; 129 0 3 64 0 I :=8; 130 0 3 67 0 131 0 3 67 1 REPEAT I := I-1 132 0 3 68 0 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); 133 0  3 87 0 134 0 3 87 0 CHARPOS := 15-I-3-I DIV 3; 135 0 3 98 0 IF SIGN = MINUS THEN STR[CHARPOS-1] :='-'; 136 0 3 112 0 137 0 3 112 0 FOR J := I DOWNTO 0 DO DECDIGIT; 138 0 3 1416O 0 139 0 3 141 0 STR[CHARPOS] := '.'; 140 0 3 147 0 CHARPOS := CHARPOS+1; 141 0 3 152 0 142 0 3 152 0 FOR J := 1 TO 2 DO FRACTDIGIT; 143 0 3 180 0 144 0 3 180 0  WRITE(OUTFILE,STR); 145 0 3 189 0 END; 146 0 3 208 0 (*$I REALPRINT.PI *) 147 0 6 1 FUNCTION GETINTEGER( STR : ALPHANUMERIC;VAR I : INTEGER) : INTEGER; 148 0 6 54 149 0 6 54 150 0 6 5%4 LABEL 1,2,3; 151 0 6 54 152 0 6 54 TYPE SIGNOF = (PLUS,MINUS); 153 0 6 54 VAR LEN,FNUMB : INTEGER; 154 0 6 56 SIGN :SIGNOF; 155 0 6 57 156 0 6 57 |, 157 0 6 0 0 BEGIN 158 0 6 0 0 FNUMB := 0; 159 0 6 8 0 SIGN := PLUS; 160 0 6 11 0 LEN := LENGTH(STR); 161 0 6 16 0 { WRITELN('LEN=',LEN);} 162 0 6 16 0  1: IF I <= LEN THEN 163 0 6 23 2 IF NOT (STR[I] IN ['0'..'9','-']) THEN BEGIN 164 0 6 45 2 I := I+1;GOTO 1; 165 0 6 53 2 END o~ 166 0 6 53 3 ELSE IF STR[I] = '-' THEN BEGIN 167 0 6 65 3  I := I+1; 168 0 6 71 3 SIGN := MINUS; 169 0 6 74 3  GOTO 1; 170 0 6 76 0 END; 171 0 6 76 0 2 : IF STR[I] IN ['0'..'9'] THEN 172 0 6 96 1 BEGIN 173 0 6 96 1 { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB);} 174 0 6 96  1 FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); 175 0 6 111 1 I := I+1; 176 0 6 117 1  IF I<= LEN THEN GOTO 2; 177 0 6 126 0 END; 178 0 6 126 0 3: CASE SIGN OF 179 0 6 130 0 PLUS : GETINTEGER := FNUMB; 180 0 6 136 1 x MINUS : GETINTEGER := -FNUMB 181 0 6 136 0  END;{CASE} 182 0 6 154 0 END;{getinteger} 183 0 6 170 0 (*$I GETINTEGER.PI *) 184 0 6 170 0 185 0 1 0 0 BEGIN 186 0 1 B] 0 0 WRITE(' INPUT FILE NAME? '); 187 0 1 145 0 READLN(STR); 188 0 1 170 0 FILETITLE(INFILE,STR); 189 0 1 178 0 RESET(INFILE); 190 0 1 185 0 191 0 1 185 0 WRITE(' OUTPUT FILE NAME? '); 192 0 1 217 0 READLN(STR); 193 0 1 242 0 FILETITLE(OUTFILE,STR); 194 0 1 249 0 RESET(OUTFILE); 195 0 1 255 0 196 0 1 255 0 TOTAL := 0.0; 197 0 Ž1 266 0 WHILE NOT EOF(INFILE) 198 0 1 273 1 DO BEGIN 199 0 1 276 1 200 0 1 276 1 READLN(INFILE,STR); 201 0 1 300 1 202 0 1 300 1 I := 2; 203 0 1 303 1 { W CHECKNUMBER := GETINTEGER(STR,I);} 204 0 1 303 1 AMOUNT := GETREAL(STR,I); 205 0 1 316 1 206 0 1 316 1 TOTAL := TOTAL + AMOUNT; 207 0 1 329 1 { WRITE(OUTFILE,STR[1],CHECKNUMBER : 10);} 208  0 1 329 1 REALPRINT(OUTFILE,AMOUNT); 209 0 1 338 1 WRITELN(OUTFILE); 210 0 1 343 0 END; 211 0 1 345 0 212 0 1 345 0 WRITE(OUTFILE,' ');REALPRINT(OUTFILE,TOTAL);WRITEC)LN(OUTFILE); 213 0 1 381 0 214 0 1 381 0 END. 1978.10 C 2717 1500 C 2719 4812.51 D 1545 C 2720 3920.58 C 2721 115 C 2722 76.99 C 2723 40.30 C 2724 117.43 C 2725 552.87 C 2726 127.35 C 2727 6 C 2728 20 C 2729 52.84 C 2730 5.74 DM 23.10 C 2731 50 D 592.50 C 2732 911.35 C 2733 46.85 C 2734 164.11 C 2735 1850.16 C 2736 140 D 1997 E 3059.63 C 2737 368 D 1467.50 C 2738 154.01 C 2739 33 C 2740 40 C 2741 15.15 C 2742 342.32 C 2743 10 C 2744 160 C 2745 19 C 2746 1136.47 C 2747 174.34 C 2748 208.22 C 2749 131.46 C 2750 145.75 C 2751 30 C 2752 54 C 2753 55 C 2754 569.90 kuC 2755 64.50 C 2756 75 CC 2757 E 3685.95 W 2710.13 C 2758 374 C 2759 115 C 2760 500 C 2761 500 C 2762 1510 1978EMP.06f _E 570 1050.61 E 571 1069.11 E 572 1019.07 E 573 566.88 E 574 630.97 E 575 269.88 E 576 472.09 E 577 346.43 W 578 4412.14 W 579 483.00 W 580 2210.00 W 581 38.36 1978EMP.MCff 'JAPPEND 1978EMP 1978EMP.01 1978EMP.03 1978EMP.04 1978EMP.05 1978EMP.06 ^ 1978EMP.07 1978EMP.08 1978EMP.09 1978EMP.10 1978EMP.11 RDS.PIr PROCEDURE READSEQUENTIAL( CHANNEL : INTEGER; VAR BUFFER : LINESTRING; VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); CONST DOTRDS = 6719; {.RDS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; TEMPPOINTER : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(TEMPPOINTER); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTRDS; R0.LPTR := TEMPPOINTER; R0.INT := R0.INT+2; R1.INT := BYTESREAD; R2.INT := CHANNEL; SYSCALL(REQUEST); BUFFER.LEN := R1.INT;  IF ERROR THEN WRITELN(' ERROR IN READSEQUENTIAL = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; BUFFER := TEMPPOINTER^; BYTESREAD := R1.INT; END; RELEASE(HEAP); WRITELN(' BYTESREAD = ',BYTESREAD); END; {READ SEQUENTIAL} WRL.BU5uPROCEDURE WRITELINE( CHANNEL : INTEGER; BUFFER : BIGSTR; BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7743; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); STRINGPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESOUT; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITELINEW = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE LINE} TEST11.qq-]PROGRAM TEST(INPUT,OUTPUT); CONST STRSIZE = 15; TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..STRSIZE] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPS-REFIX; VAR LINE : LINESTRING; I,J : INTEGER; NBYTES : INTEGER; FILENAME : LINESTRING; DATA :LINESTRING; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; {$I DELETE.PI} {$I WRS.PI} {$I RDS.PI} {$I CLOSE.PI} {$I CRAND.PI} {$I GCHN.PI } {$I OPEN.PI} UW{$I WRL.PI } {$I RDL.PI} BEGIN WRITELN('ENTER FILENAME'); READLINE(0,FILENAME ,NBYTES,SYSERROR,ERRORNUMBER); FILENAME.STR[NBYTES] := CHR(0); CRAND(FILENAME,SYSERROR,ERRORNUMBER); WRITELN('CRAND'); GCHN(I); WRITELN('OPEN'); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); { DATA.STR := '1234567890 '; DATA.STR[11] := CHR(13);} WRITELN(' ENTER DATA'); READLINE(0,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN('WRITE LINE TO DISK'); WRITELINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,DATA,NBYTES,SYSERaROR,ERRORNUMBER); WRITELN('CLOSE'); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN('OPEN'); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); READLINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); FOR J := 1 TO NBYTES DO WRITE(OUTPUT,DATA.STR[J]);WRITELN; WRITESEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN('CLOSE'); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN('OPEN'); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); READSEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); FOR J := 1 TO NBYTES DO WRITE(OUTPUT,DATA.STR[J]);WRITEL{ELN; WRITESEQUENTIAL(2,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN; WRITELN('CLOSE'); CLOSE(I,SYSERROR,ERRORNUMBER); END. PASINTERP.ER? r Unknown P-Machine Error #Unimplemented P-Machine Instruction Range Error on SET Operationruction Subscript or Subrange Errornruction Integer Divide-by-ZeroErrornruction String Range ErrorZeroErrornruction SYSCALL Parameter Errorrrornruction  Error Reported by Host Systemuction $Dangling Pointer (Value not in Heap) Heap Overflowter (Value not in Heap) %Attempt to EXIT an Inactive Procedure .Called Segment Can't Fit into Available Memory `\Call to a Non-Existent SegmentAvailable Memory 5Incomplete Read of a Segment by Host Operating System 0Attempt to Open Multiple Files Entitled 'OUTPUT'ystem .Heap Overflow During Internal ALLOCATE RoutineT'ystem ^Program Filename Too Longrnal ALLOCATE RoutineT'ystem Integer Multiply Overflowrnal ALLOCATE RoutineT'ystem +Unknown Error From Floating Point OperationineT'ystem (Overflow From REAL to INTEGER ConversionionineT'ystem VFloating Point UnderflowTEGER ConversionionineT'ystem Floating Point OverflowwTEGER ConversionionineT'ystem Floating Point Divide-by-Zero ConversionionineT'ystem No User Program SpecifiedZero ConversionionineT'ystem Xs/Attempt to Execute a Separately Compiled Module'ystem -Current Interpreter Does Not Support Compilerle'ystem Error on READ of Integer or Realport Compilerle'ystem Error on READ of Realger or Realport Compilerle'ystem 'PWROFTEN Function Argument Out Of Rangempilerle'ystem Overflow From EXP Function Out Of Rangempilerle'ystem "Negative Argument To SQRT FunctionRangempilerle'ystem +Non-Positive Argument To LOG or LN Functionerle'ystem ڎAttempted GET Past End of filer LN Functionerle'ystem +Error #33: Report to Rational Data Systemserle'ystem +Error #34: Report to Rational Data Systemserle'ystem 1Requires Capability Not Generated for Interpreterstem ̟)Field Width in Output Format Out of Rangeerpreterstem Security Violationput Format Out of Rangeerpreterstem External File Name Too Longt Out of Rangeerpreterstem "Record Number Out of Range in SEEKf Rangeerpreterstem &!FILETITLE Applied to an Open FileKf Rangeerpreterstem !Attempted I/O to an Unopened FileKf Rangeerpreterstem ,Program/Interpreter Revision Incompatibilityreterstem %Non-Positive Divisor in MOD Operationibilityreterstem  Integer ADD or SUBTRACT Overflowationibilityreterstem Stack Overflow SUBTRACT Overflowationibilityreterstem &Number Stack Overflow (Internal Error)bilityreterstem )Limitation of Evaluation Release Exceededityreterstem 2Unresolved Assembler References -- Must Be PLINKedtem 1Unresolved External References -- Must Be PLINKeddtem 'Program not PLINKed to this InterpreterBe PLINKeddtem I.PX "VINTERPOK  Copyright (C) 1980 Rational Data Systems r?OUTPUT֥֦Interpreter OK̀ʀʀ NT18.0)QzPROGRAM T18(INPUT,OUTPUT); CONST AU = 65; BU = 66; CU = 67; DU = 68; AL = 97; BL = 98; CL = 99; DL = 100; VAR CHRIN : INTEGER; FUNCTION GCHA:INTEGER;EXTERNAL; PROCEDURE PCHA(CHRIN:INTEGER);EXTERNAL; BEGIN REPEAT BEGIN CHRIN := GCHA; PCHA(CHRIN); b IF((CHRIN >= 65) AND (CHRIN<=68)) OR ((CHRIN >=97) AND (CHRIN<=100)) THEN CASE CHRIN OF AU,BU,CU,DU : WRITELN(OUTPUT,'UPPERCASE'); AL,BL,CL,DL : WRITELN(OUTPUT,'LOWERCASE'); END END UNTIL EOF(INPUT) END. INTGET.*9PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; I : INTEGER; FUNCTION NUMB( STR : ALPHANUMERIC) : INTEGER; LABEL 1,2; VAR I,LEN,FNUMB : INTEGER; BEGIN FNUMB := 0; I :=1; LEN := LENGTH(STR); WRITELN('LEN=',LBEN); 1: IF I <= LEN THEN IF ORD(STR[I]) IN [9,32] THEN BEGIN I := I+1;GOTO 1; END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB); FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); I# := I+1; NUMB := FNUMB; GOTO 2 END ELSE EXIT(NUMB) ELSE EXIT(NUMB) END; BEGIN REPEAT BEGIN READLN(STR); WRITELN(' ',NUMB(STR),'=NUMB'); END; UNTIL EOF(INPUT); END. PETTYPRIN.01I =)PROGRAM PRETTYPRINT ( (* FROM *) INPUT, (* TO *) OUTPUT ); CONST MAXSYMBOLSSIZE = 200; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A*) (* SYMBOL SCANNED BY THE LEXICAL SCANNER. *) MAXSTACKSIZE = 100; (* THE MAXIMUM NUMBER OF SYMBOLS CAUSING *) 3 (* INDENTATION THAT MAY BE STACKED. *) MAXKEYLENGTH = 10; (* THE MAXIMUM LENGTH (IN CHARACTERS) OF A *) (* PASCAL RESERVED KEYWORD. *) MAXLINESIZE = 72; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A *) (* LINE OUTPUT BY THE PBRETTYPRINTER. *) SLOFAIL1 = 30; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENETBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT2". BEYOND *) (* THIS, NO INDENTATION OCCURS. INDENT1 = 3;  INDENT2 = 1; SPACE = ''; TYPE KEYSYMBOL = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYچPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLKOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE,  SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, CRAFTER ); OPTIONSET = SET OF OPTION KEYSYMSET = SET OF KEYSYMBOL; TABLEENTRY = RECORD OPTIONSELECTED : OPTIONSET; DINDENTSYMBOLS : KEYSYMSET; GOBBLETERMINATORS : KEYSYMSET END; OPTIONTABLE = ARRAY [ KEYSYMBOL ] OF TABLEENTRY; KEY = PACKED ARRAY [ 1..MAXKEYLENGTH ] OF CHAR; KEYWORDT@ABLE = ARRAY [PROGSYM..UNTILSYM ] OF KEY; SPECIALCHAR = PACKED ARRAY [ 1..2 ] OF CHAR; DBLCHRSET = SET OF BECOMES..OPENCOMMENT; DBLCHARTABLE = ARRAY [ BECOMES..OPENCOMMENT ] OF SPECIALCHAR; SGLCHARTABLE = ARRAY [ SEMICOLON..PERIOD ] OF CHAR; STR>7ING = ARRAY [ 1..MAXSYMBOLSIZE ] OF CHAR; SYMBOL = RECORD NAME : KEYSYMBOL; VALU : STRING; LENGTH : INTEGER; SPACESBEFORE : INTEGER; CRSBEFORE : INTEGER END; SYMBOLINFO = ^SYMBOL; CHARNAME = ( LETTER, DIGIT, BLANK, QUOTE, H ENDOFLINE, FILEMARK, OTHERCHAR ); CHARINFO = RECORD NAME : CHARNAME; VALU : CHAR END; STACKENTRY = RECORD INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER END; SYMBOLSTACK = ARRAY [ 1..MAXSTACKSIZE ] OF STACKENTRY; VAR RECORDSEEN: BOOLEAN; CURRCHAR, NEXTCHAR: CHARINFO; CURRSYM, NEXTSYM: SYMBOLINFO; CRPENDING: BOOLEAN; PPOPTION: OPTIONTABLE; KEYWORD: KEYWORDTABLE; DBLCHARS: DBLCHRSET; DBLCHAR: DBLCHARTABLE; SGLCHAR: SGLCHARTABLE; STACK: SYMBOLSTACK; TOP, (*STARTING POSITION OF LAST SYMBOL WRITTEN *) STARTPOS, CURRLINEPOS, CURRMARGIN : INTEGER; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPT(ION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYd&MBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM,  COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLhS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OPENPAREN ] DOн BEGIN OPTIONSSELECTED := [ GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ CLOSEPAREN] END; WITH PPOPTION [ CLOSEPAREN ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PERIOD ] DO BEGIN OPTIONSSELCTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDOFFILE ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATNhORS := [] END; WITH PPOPTION [ OTHERSYM ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMNATORS := [] END END; (* INITIALIZE *) FUNTION STACKEMPTY (* RETURNING *) : BOOLEAN; BEGIN (* STACKEMPTY *) IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE END; (* STACKEMPTY *) FUNCTION STACKFULL (* RETURNING *) : BOOLEAN; BEGIN (* STACKFULL *) IF TOP = MAXSTACKSIZE THEN STACKFULL := TRUE ELSE STACKFULL := FALSE END; (* STACKFULL *) PROCEDURE POPSTACK( (* RETURNING ): VAR INDENTSYMBOL : KEYSYMBOL; VAR PREVMARGIN : INTEGER); BEGIN (* POPSTACK *) IF NOT STACKEMPTY THEN BEGIN INDENTSYMBOL := STACK[TOP].INDENTSYMBOL; PREVMARGIN := STACK[TOP].PREVMARGIN; TOP := TOP >- 1 END ELSE BEGIN INDENTSYMBOL := OTHERSYM; PREVMARGIN := 0 END END; (* POPSTACK *) PROCEDURE PUSHSTACK( (* USING *) INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER ); BEGIN (* PUSHSTACK *) TOP := TOP + 1 STACK[TOP].INDENTSoYMBOL := INDENTSYMBOL; STACK[TOP].PREVMARGIN := PREVMARGIN END; (* PUSHSTACK *) PROCEDURE WRITECRS( (* USING *) NUMBEROFCRS : INTEGER; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED THIS bxIS SMALL I) BEGIN (* WRITECRS *) IF NUMBEROFCRS > 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; (* WRITECRS *) PROCEDURE INSERTCR( (* UPDATING *) VAR CURRSYM : SMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; BEGIN (* INSERTER *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END END; (* INSERTER *) PROCEDURE IN!SERTBLANKLINE( (* UPDATING *) VAR CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; TWICE - 2; BEGIN (* INSERTBLANKLINE *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) ELSE WRITECRS( TWICE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, (* UPDATINTG *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END; (* INSERTBLANKLINE *) PROCEDURE LSHIFTON( (* USING *) DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* LSHIFTON *) IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN $PUSHSTACK( (* USING *) INDENTSYMBOL, PREVMARGIN ) END END; (* LSHIFTON *) PROCEDURE LSHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* LSHIFT *) IF NOT STACKEMPTY THEN BEGIN POPSTACK( (* RETURNING *) INDENTSYMBOL, p PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; (* LSHIFT *) PROCEDURE INSERTSPACE( (* USING *) VAR SYMBOL : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* INSERTSPACE *) IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END END; (* INSERTSPACE *) PROCEDURE MOVELINEPOST( (* TO *) NEWLINEPOS : INTEGER;  (* FROM *) VAqR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* MOVELINEPOS *) FOR I := CURRLINEPOS+1 TO NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; (* MOVELINEP OS *) PROCEDURE PRINTSYMBOL( (* IN *) CURRSYM : SYMBOLINFO; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* PRINTSYMBOL *) WITH CURRSYM^ DO BEGIN FOR I := 1 T_ O LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; (* SAVE START POS FOR TAB PURPOSES *) (* <<< *) CURRLINEPOS := CURRLINEPOS + LENGTH END (* WITH *) END; (* PRINTSYMBOL *) PROCEDURE PPSYMBOL( (* IN *) CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN (* PPSYMBOL *) WITH CURRSYM^ DO BEGIN WRITECRS( (* USING *) CRSBEFORE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF6 (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( (* TO *) NEWLINEPOS,X (* FROM *) CURRLINEPOS (* IN OUTPUT *) ); PRINTSYMBOL( (* IN *) CURRSYM, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END (* WITH *) END; (* PPSYMBOL *) PROCEDURE RSHIFTTOCLP( (* USING *) CURRSYM : KEYSYMBOL ); FN ORWARD; PROCEDURE GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) TERMINATORS : KEYSYMSET; (* UPDATING *) VAR CURRSYM, NEXTSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* GOBBLE *) RSHIFTTOCLP( (* USING *) CURRSYM^.NAME );IB WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); PPSYMBOL( (* IN*) CURRSYM (* WRITING TO OUTPUT *) ) END; (* WHILE *) LSHIFT  END; (* GOBBLE *) PROCEDURE RSHIFT( (* USING *) CURRSYM : KEYSMBOL ); BEGIN (* RSHIFT *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); (* IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. *) (* <<< *) IF STARTPOS > CU@4RRMARGIN (* <<< *) THEN (* <<< *) CURRMARGIN := STARTPOS; (* <<< *) IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRLMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; (* RSHIFT *) PROCEDURE RSHIFTTOCLP; BEGIN (* RSHIFTTOCLP *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; (* RSHIFTT OCLP *) BEGIN (* PRETTYPRINT *) INITIALIZE( TOP CURRLINEPOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSY5MBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_(* USNG *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THE>FN LSHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN LSHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); PPSYMBOL( (* IN *) CURRSYM (* WRITING TO OUTPUT *) ); IF SP-ACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) NEXTSYM (* WRITING TO OUTPUT *) ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( (* USING *) CURRSYM^.NAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( (* USING *) CURRS*YM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) GOBBLETERMINATORS, (* UPDATING *) CURRSYM, NEXTSYM (* WRITING TO OUTPUT *) IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END (J/2* WITH *) END; (* WHILE *) IF CRPENDING THEN WRITELN(OUTPUT) END. CDC6000.PA (******************************************************************************* PASCAL PROGRAM FORMATTER ------------------------ AUTHOR: MICHAEL N. CONDICT, L975 LEHIGH UNIVERSITY CURRENT ADDRESS: PAR CORP  228 LIBERTY PLAZA ROME, NY 13440 UPDATED: AUGUST, 1978 ***************************************************************************** ) PROGRAM FORMAT(INPUT,OUTPUT); LABEL 13; CONST ALFALENG = 10; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( MINIMUM AND MAXIMUM CHAR VALUES. ) MINCHAR = 0 MAXCHAR = 127; LASTPASCSYMBOL = 29; ( THE FOLLOWING CONSTANTS MUST ALL BE CHANGED TOGETHER, SO THAT THEIR VALUES AGREE WITH THEIR NAMES: ) BUFFERSIZE = 160; BUFFSZP1 = 161; BUFFSZM1 = 159; BUFFSZDIV10 = 16; ( ) MAXREADRIGHTCOL = 999; MAXWRITERIGHTCOL = 72; TYPE ALFA = PACKED ARRAY [1 .. ALFALENG] OF CHAR; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( SET SIZE MAY NOT ALLOW SET OF CHAR. )  \ CHARSET = SET OF CHAR; STATMNTTYPES = (FORWITHWHILESTATEMENT, REPEATSTATEMENT, IFSTATEMENT, CASESTATEMENT, COMPOUNDSTATEMENT, OTHERSTATEMENT); SYMBOLS = (PROGSYMBOL, COMMENT, BEGINSYMBOL, ENDSYMBOL, SEMICOLON, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBQOL, COLONSYMBOL, EQUALSYMBOL, PERIODSYMBOL, RANGE, CASESYMBOL, OTHERSYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LEFTBRACKET, RIGHTBRACKET, COMMASYMBOL, LABELSYMBOL, LEFTPARENTH, RIGHTPARENTH, ALPHAOPERATOR); WIDTH = 0 ..BUFFERSIZE; MARGINS = - 100 ..BUFFERSIZE; SYMBOLSET = SET OF SYMBOLS; OPTIONSIZE = - 99 .. 99; COMMENTTEXT = ARRAY [1 .. BUFFSZDIV10] O?TF ALFA; SYMBOLSTRING = ARRAY [WIDTH] OF CHAR; VAR CHISEOL, NEXTCHISEOL: BOOLEAN; I: INTEGER (USED AS FOR LOOP INDEX); CHARACTER: CHAR; READCOLUMN, READRIGHTCOL: 0 .. 1000; OUTPUTCOL, WRITECOLUMN, LEFTMARGIN, ACTUALLEFTMARGIN, READLEFTCOL, WRITELEFTCOL, WRITERIGHTCOL: MARGINS; DISPLAYISON, PROCNAMESWANTED, ENDCOMMENTSWANTED, PACKERISOFF, SAVEDBUNCH, BUNCHWANTED, NOFORMATTING: BOOLEAN; LINENUMBER, INCREMENT: INTEGER; INDENTINDEX, LONGLINEINDENT, SYMBOLGAP,  DECLARALIGNMENT, ST0!ATMTSEPARATION, PROCSEPARATION: OPTIONSIZE; LASTSYMBOL, SYMBOLNAME: SYMBOLS; ALPHASYMBOLS, ENDLABEL, ENDCONST, ENDTYPE, ENDVAR: SYMBOLSET; SYMBOL: SYMBOLSTRING; LENGTH: WIDTH; SYMBOLISNUMBER, LASTPROGPARTWASBODY: BOOLEAN; DIGITS, LETTERSANDDIGITS: CHARSET; OLDEST: WIDTH; CHARCOUNT: INTEGER (* COUNT OF TOTAL CHARS READ, BUT IS OFF BY BUFFERSIZE AFTER END OF FIRST BODY. IT IS IMPERATIVE THAT CHARCOUNT BE MONOTONICALLY INCREASING DURING PROCESSING OF A BODY, AND THAT IT NEVER RETURN TO A VALUE <- BUFFERSIZE, AFTER PASSING THAT POINT. THUS "DOBLOCK" MAY RESET IT AS LOW AS POSSIBLE, LIMITING THE LENGTH OF A PROCEDURE TO "MAXINT - BUFFERSIZE" CHARACTERS. }; MAIN: COMMENTTEXT; MAINNMLENGTH: WIDTH; BLANKS, ZEROES: ALFaQA; UNDERWRITTEN: ARRAY (WIDTH) OF RECORD CH: CHAR; CHISENDLINE: BOOLEAN INDENTAFTEREOL: MARGINS END; PASCALSYMBOL: ARRAY [1 ..LASTPASCSYMBOL] OF ALFA; PASCSYMBOLNAME: ARRAY [1 ..LASTPASCSYMBOL] OF SYMBOLS; NAMEOF: ARRAY [CHAR]q OF SYMBOLS; STATEMENTTYPEOF: ARRAY [SYMBOLS] OF STATMNTTYPES; PROCEDURE CONSTANTSINITIALIZATION; BEGIN MAIN[1] := 'MAIN '; MAINNMLENGTH := 4; BLANKS := ' '; ZEROES := '0000000000'; FOR I := 0 TO BUFFSZM1 DO WITH UNWRITTEN[I] DO BEGIN CH := 'A'; CHISENDLINE := FALSE; INDENTAFTEREOL := 0 END; FOR CHARACTER := CHR(MINCHAR) TO CHR(MAXCHAR) DO NAMEOF[CHARACTER] := OTHERSYMBOL; CHARACTER := ' '; NAMEOF['('] := LEFTPARENTH; NAMEOF[')'] := RIGHTPARENTH; NAMEOF['='] := EQUALSYMBOL; NAMEOF[','] :#= COMMASYMBOL; NAMEOF['.'] := PERIODSYMBOL; NAMEOF['['] := LEFTBRACKT; NAMEOF[']'] := RIGHTBRACKET; NAMEOF[':'] := COLONSYMBOL; NAMEOF['<'] := EQUALSYMBOL; NAMEOF['>'] := EQUALSYMBOL; NAMEOF[';'] := SEMICOLON; PASCALSYMBOL[1] := 'PROGRAM '; PASCALSYM BOL[2] := 'BEGIN '; PASCALSYMBOL[3] := 'END '; PASCALSYMBOL[4] := 'CONST '; PASCALSYMBOL[5] := 'TYPE '; PASCALSYMBOL[6] := 'VAR '; PASCALSYMBOL[7] := 'RECORD '; PASCALSYMBOL[8] := 'CASE '; PASCALSYMBOL[9] := 'IF '; PASCALSYMBOL[10] := 'THEN '; PASCALSYMBOL[11] := 'ELSE '; PASCALSYMBOL[12] := 'DO '; PASCALSYMBOL[13] := 'OF '; PASCALSYMBOL[14] := 'FOR '; PASCALSYMBOL[15] := 'WHILE '; PASCALSYMBOL[16] := 'WITH '; PASCALSYMBOL[17] := 'REPEAT '; PASCALSYMBOL[18] := 'UNTIL '; PASCALSYMBOL[19] := 'PROCEDURE '; PASCALSYMBOL[20] := 'FUNCTION '; PASCALSYMBOL[21] := 'LABEL '; PASCALSYMBOL[22] := 'IN '; PASCALSYMBOL[23] := 'MOD '; PASCALSYMBOL[24] := 'DIV '; PASCALSYMBOL[25] :=Y` 'AND '; PASCALSYMBOL[26] := 'OR '; PASCALSYMBOL[27] := 'NOT '; PASCALSYMBOL[28] := 'ARRAY '; PASCALSYMBOL[29] := 'NOSYMBOL '; PASCSYMBOLNAME[1] := PROGSYMBOL; PASCSYMBOLNAME[2] := BEGINSYMBOL; PASCSYMBOLNAME[3] := ENDSYMBOL; PASCSYMBy`OLNAME[4] := CONSTSYMBOL; PASCSYMBOLNAME[5] := TYPESYMBOL; PASCSYMBOLNAME[6] := VARSYMBOL; PASCSYMBOLNAME[7] := RECORDSYMBOL; PASCSYMBOLNAME[8] := CASESYMBOL; PASCSYMBOLNAME[9] := IFSYMBOL; PASCSYMBOLNAME[10] := THENSYMBOL; PASCSYMBOLNAME[11] := ELSESYMlBOL; PASCSYMBOLNAME[12] := DOSYMBOL; PASCSYMBOLNAME[13] := OFSYMBOL; PASCSYMBOLNAME[14] := PASCSYMBOLNAME[15] := WHILESYMBOL; PASCSYMBOLNAME[16] := WITHSYMBOL; PASCSYMBOLNAME[17] := REPEATSYMBOL; PASCSYMBOLNAME[18] := UNTILSYMBOL; PASCSYMBOLNAME[19] := PROCSYMBOL; PASCSYMBOLNAME[20] := FUNCSYMBOL; PASCSYMBOLNAME[21] := LABELSYMBOL; PASCSYMBOLNAME[29] := IDENTIFIER; FOR I := 22 TO 28 DO PASCSYMBOLNAME[I] := ALPHAOPERATOR; FOR SYMBOLNAME := PROGSYMBOL TO ALPHAOPERATOR DO STATEMENTTYPEOF[SYMBOLNAeuME] := OTHERSTATEMENT; STATEMENTTYPEOF[BEGINSYMBOL] := COMPOUNDSTATEMENT; STATEMENTTYPEOF[CASESYMBOL] := CASESTATEMENT; STATEMENTTYPEOF[IFSYMBOL] := IFSTATEMENT; STATEMENTTYPEOF[FORSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WHILESYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WITHSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[REPEATSYMBOL] := REPEATSTATEMENT; END (CONSTANTSINITIALIZATION); PROCEDURE WRITEA(CHARACTER: CHAR); VAR I: WIDTH; TESTNO: INTEGER; BEGIN CHARCOUNT :=5 CHARCOUNT + 1; OLDEST := CHARCOUNT MOD BUFFERSIZE; WITH UNWRITTEN[OLDEST] DO BEGIN IF CHARCOUNT > BUFFSZP1 THEN BEGIN IF CHISENDLINE THEN BEGIN IF IDENTAFTEREOL < O THEN BEGIN WRITE(BLANKS: - INDENTAFTEREOL); OUTPUTCOL := OUTPUTCOL - IDENTAFTEREOL; END ELSE BEGIN IF INCREMENT < O THEN BEGIN I := WRITERIGHTCOL - OUTPUTCOL + 1; IF I > O THEN WRITE(BLANKS: I);  TESTNO := LINENUMBER; I := O REPEAT TESTNO := TESTNO DIV 10; I := I + 1; UNTIL TESTNO - O; WRITE(ZEROES: (6 - I), LINENUMBER: I); LINENUMBER := LINENUMBER - INCREMENT; IF LINENUMBER > 9999 THEN LINENUMBER := LINENUMBER - 10000; WRITELN; END ELSE BEGIN WRITELN; IF INCREMENT > O THEN BEGIN WRITE(LINENUMBER: 4, ' '); LINENUMBER := LINENUMBER + INCREMENT; END END IF IDENTAFTEREOL > O THEN WRITE(BLANKS: IDENTAFTEREOL; OUTPUTCOL := IDENTAFTEREOL + 1; END; CHISENDLINE := FALSE;  END (IF CHISENDLINE) ELSE BEGIN WRITE(CH); OUTPUTCOL := OUTPUTCOL +1; END (ELSE); END (IF CHARCOUNT > ); CH := CHARACTER; WRITECOLUMN := WRITECOLUMN +1; END (WITH); END (WRITEA); PROCEDURE FLUSHUNWRITTENBUFFER; BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IDENTAFTEREOL := O; END; WRITECOLUMN := O; FOR I := O TO BUFFSZM1 DO WRITEA(' '); END *(FLUSHUr8NWRITTENBUFFER)*; PROCEDURE STARTNEWLINEANDINDENT; BEGIN IF PACKERISOFF AND DISPLAYISON THEN BEGIN WRITEA(' '); LASTSYMBOL := PERIODSYMBOL; WITH UNWRITTEN [OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL + LEFTMARGIN - 1; ) END; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN; END {IF PACKERISOFF}; END {STARTNEWLINEANDINDENT}; PROCEDURE READACHARACTER; BEGIN IF READCOLUMN > READRIGHTCOL THEN BEGIN IF READRIGHTCOL < MAXREADRIGHTCOL THEN BEGIN NEXTCHISEOL := TRUE; READL]N END ELSE READCOLUMN := 2; END ELSE IF READCOLUMN = 1 THEN WHILE READCOLUMN < READLEFTCOL DO BEGIN IF EOLN(INPUT) THEN READCOLUMN := 1 ELSE BEGIN READCOLUMN := READCOLUMN + 1; GET(INPUT) END END; IF NEXTCHISEOL THEN BEGIN CHARACTER := ''; NEX֏TCHISEOL := FALSE; CHISEOL := TRUE; READCOLUMN := 1; IF NOFORMATTING THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL - 1; END WRITECOLUMN := WRITELEFTCOL; END END ELSE IF NOT EOF(INSRPUT) THEN BEGIN CHARACTER := INPUT ^; READCOLUMN := READCOLUMN +1; NEXTCHISEOL := EOLN(INPUT); GET(INPUT); CHISEOL := FALSE; IF NOFORMATTING THEN WRITEA(CHARACTER); END ELSE BEGIN FLUSHUNWRITTENBUFFER; GOTO 13 END END {READACHARACTER}; PROCEDURE WRITESYMBOL; VAR I: WIDTH; NUMBER BLANKSTOWRITE: OPTIONSIZE; BEGIN IF DISPLAYISON THEN BEGIN NUMBERBLANKSTOWRITE := SYMBOLGAP; IF (LASTSYMBOL IN [LEFTPARENTH,LEFTBRACKET,PERIODSYMBOL]) OR (SYMBOLNAME IN [SEMICOLON, RIGHTPARENTH,RIGHTBRACNKET, COMMASYMBOL, PERIODSYMBOL, COLONSYMBOL]) OR (SYMBOLNAME IN [LEFTBRACKET, LEFTPARENTH]) AND (LASTSYMBOL = IDENTIFIER) THEN NUMBERBLANKSTOWRITE := O ELSE IF (SYMBOLNAME IN ALPHASYMBOLS) AND (LASTSYMBOL IN ALPHASYMBOLS) THEN IF WRITECOLUUMN <= WRITERIGHTCOL THEN BEGIN WRITEA(' '); NUMBERBLANKSTOWRITE := SYMBOLGAP -1; END; IF WRITECOLUMN + LENGTH + NUMBERBLANKSTOWRITE -1> WRITERIGHTCOL THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IF PACKERISO5FF THEN BEGIN IF WRITELEFTCOL + LEFTMARGIN + LONGLINEINDENT + LENGTH -1> WRITERIGHTCOL THEN LENGTH := 10; INDENTAFTEREOL := WRITELEFTCOL -1 + LEFTMARGIN + LONGLINEINDENT; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN + LONGLINE INDENT; END ELSE BEGIN IFLENGTH > WRITERIGHTCOL - WRITELEFTCOL + 1; THEN LENGTH := WRITERIGHT COL - WRITELEFTCOL + 1; INDENTAFTEREOL := WRITELEFTCOL - 1; WRITECOLUMN := WRITELEFTCOL; END; END {WITH}; END ELSE FOR I := 1 TO NUMBERBLANKSTOWRITE DO WRITEA(' '); D%FOR I := 1 TO LENGTH DO WRITEA(SYMBOL[I]);  END {IF DISPLAYISON}; LASTSYMBOL := SYMBOLNAME; END {WRITESYMBOL}; PROCEDURE COPYACHARACTER; BEGIN IF DISPLAYISON THEN BEGIN IF WRITECOLUMN > WRITERIGHTCOL THEN BEGIN WHILE (CHARACTER = ' ') AND NOT CHISEOL DO READACHARACTER; IF NOT CHISEOL THEN STARTNEWLINEANDINDENT; END; IF CHISEOL THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END ELSE WRITEA(CHARACTER); END; READACHARACTER END {COPYACHARACTER}L1T ; PROCEDURE DOFORMATTERDIRECTIVES; CONST INVALID = - 1; TYPE PARAMCOUNT = 1 .. 2; PARAMS = ARRAY [PARAMCOUNT] OF INTEGER; VAR SPECIFICATION: PARAMS; FORMATOPTION: CHAR; PREVDISPLAY, PREVNOFORMATTING: BOOLEAN; ENDDIRECTV: CHARSET; PR4OCEDURE READIN(N: PARAMCOUNT; VAR SPCIFICATION: PARAMS); VAR I: PARAMCOUNT; BEGIN FOR I := 1 TO N DO BEGIN WHILE NOT (CHARACTER IN (DIGITS + ENDDIRECTV)) DO COPYACHARACTER; SPECIFICATION[I] := O; IF NOT (CHARACTER IN ENDDIRECTV) THEN REPEAAsT SPECIFICATION [I] := 10 * SPECIFICATION[I] + ORD(CHARACTER) - ORD('O'); COPYACHARACTER; UNTIL NOT (CHARACTER IN DIGITS) ELSE SPECIFICATION[I] := INVALID; END {FOR}L1T; END {READIN}L1T; BEGIN {DOFORMATTERDIRECTIVES}L1T ENDDIRECTV := ['*', ']']; REPEAT IF CHARACTER IN ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I', 'L', 'N', 'P', 'R', 'S', 'W'] THEN BEGIN FORMATOPTION := CHARACTER; CASE FORMATOPTION OF 'A', 'E', 'I', 'G', 'P', 'L', 'S': BEGIN READIN(1, SPECIFICATION); IF (SPECIFICAT4ION[1]  1; ENDCOMMENTSWANTED := ODD#(SPECIFICATION[1]); END 'G' : SYMBOLGAP := SPECIFICATION[1]; 'I' : INDENTINDEX := SPECIFICATION[1]; 'L' : LONGLINEINDE***ECIFICATION[1]; 'P' : PROCSEPARATION := SPECIFICATION[1]; 'S' : STATMTSEPARATION := SPCIFICATION[1] END {CASE}L1T; END {SINGLE PARAMETERS}L1T; 'W', 'R', 'N': BEGIN READIN(2, SPECIFICATION); IF SPECIFICATION[2] <> INVALID THEN CASE FORMATOPTION OF 'W': IF SPECIFICATION[1] > O) AND SPECIFICATION[2] < BUFFERSIZE -2) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8) THEN vBEGIN WRITELEFTCOL := SPECIFICATION[1]; WRITERIGHTCOL := SPECIFICATION[2]; END 'R': IF (SPECIFICATION[1] > O) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8 THEN BEGIN READLEFTCOL := SPECIFICATION[1]; READRIGHTCOL := SPECIFICATION[2];  END 'N': {BEGIN LINENUMBER := SPECIFICATION[1]; INCREMENT := SPECIFICATION[2]; WHILE NOT (CHARACTER IN (['<'] + ENDDIRECTV)) AND (CHARACTER<> '>') DO COPYACHARACTER; IF CHARACTER = '>' THEN INCREMENT := - INCREMENT END END {CASE}; END {DOUBLE PARAMETERS}; ޖ 'B', 'C', 'D', 'F': BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN (['+', '-'] + ENDDIRECTV); IF CHARACTER IN ['+', '-'] THEN CASE FORMATOPTION OF 'B': IF DISPLAYISON THEN BUNCHWANTED := CHARACTER = '+'; 'C': PACKERISOFF := CHARACTER = '-';C 'D': BEGIN PREVDISPLAY := DISPLAYISON; DISPLAYISON := CHARACTER = '+'; IF PREVDISPLAY AND NOT DISPLAYISON THEN BEGIN WRITEA('*'); WRITEA(')'); SAVEDBUNCH := BUNCHWANTED; BUNCHWANTED := FALSE; END ELSE IF NOT PREVDISPLAY AND DISPLAYISON THEN sBEGIN STARTNEWLINEANDINDENT; WRITEA('('); WRITEA'_('*'); BUNCHWANTED := SAVEDBUNCH; END {IF NOT PREV}; END {'D':}; 'F': BEGIN PREVNOFORMATTING := NOFORMATTING; NOFORMATTING := CHARACTER = '-'; DISPLAYISON := NOT NOFORMATTING IF PREVNOFORMATTING ]AND NOT NOFORMATTING THEN READACHARACTER; IF NOT PREVNOFORMATTING AND NOFORMATTING THEN WRITEA('-'); END; END {CASE}; END {BOOLEAN PARAMETERS} END {CASE}; END {THEN} ELSE IF NOT (CHARACTER IN ENDDIRECTV) THEN COPYACHARACTER; UNTIL CHARACTER IN E#NDDIRECTV; IF (CHARACTER = ']') THEN COPYACHARACTER; END {DOFORMATTERDIRECTIVES}; PROCEDURE READSYMBOL; CONST READNEXTCH = TRUE; DONTREADNEXTCH = FALSE; VAR TESTSYMBOL: ALFA; CHARNUMBER: WIDTH;  I: WIDTH; PROCEDURE SKIPCOMMENT; BEGIN REPEAT WHILE CHARACTER <> '*' DO READACHARACTER; READACHARACTER UNTIL CHARACTER = ')'; READACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL END {SKIPCOMMENT}; PROCEDURE DOCOMMENT; VAR I: OPTIONSIZE; PROCEDURE COMPILERDIRECTIVES; BEGIN REPEAT COP YACHARACTER; UNTIL CHARACTER IN ['[', '*'] END {COMPILERDIRECTIVES}; BEGIN {DOCOMMENT} BEGIN IF LASTSYMBOL IN [COMMENT, SEMICOLON] THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END; WRITESYMBOL; IF CHARACTER != '$' THEN COMPILERDIRECTIVES; IF CHARACTER = '[' THEN DOFORMATTERDIRECTIVES; REPEAT WHILE CHARACTER <> '*' DO COPYACHARACTER; COPYACHARACTER; UNTIL CHARACTER = ')'; COPYACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL; END; END {DOCOMMENT}; PROCE9DURE CHECKFOR(SECONDCHAR: CHAR; TWOCHARSYMBOL: SYMBOLS; READALLOWED: BOOLEAN); BEGIN IF READALLOWED THEN BEGIN LENGTH := 1; SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; READACHARACTER; END; IF CHARACTER = SECONDCHAR THEN BEGIN SYMBOL[2] := CHARACTER; LENGTH := 2; SYMBOLNAME := TWOCHARSYMBOL; READACHARACTER; IF (NOT PACKERISOFF) AND (SYMBOLNAME = COMMENT) THEN LENGTH := O END END {CHECKFOR}; BEGIN {READSYMBOL} IF (CHARACTER IN ['A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K','L','M','N','O','P','Q','R','S','T','U','V','W', 'X','Y','Z','0' ..'9','','(', '.', ':'. '''', '<', '>']) THEN CASE CHARACTER OF '(': BEGIN CHECKFOR('*', COMMENT, READNEXTCH); IF (SYMBOLNAME = COMMENT) AND PACKERISOFF THEN DOCOMMENT ELSE IF ZSYMBOLNAME = COMMENT THEN SKIPCOMMENT; END; 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': BEGIN CHARNUMBER := 1; SYMBOLISNUMBER := FALSE; REPEAT SYMBOL[CHARNUMBER] [:= CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN LETTERSANDDIGITS); LENGTH := CHARNUMBER -1; FOR CHARNUMBER := CHARNUMBER TO ALFALENG DO SYMBOL[CHARNUMBER] := ''; PACK(SYMBOL, 1, TESTSYMBOL); I := 1; PASCALSYMBOL[L-ASTPASCSYMBOL- := TESTSYMBOL; WHILE PASCALSYMBOL[I] <> TESTSYMBOL DO I := I + 1; SYMBOLNAME := PASCSYMBOLNAME[I]; END {LETTER}; '0', '1', '2', '3', '4', '5','6', '7', '8', '9': BEGIN SYMBOLISNUMBER := TRUE; CHARNUMBER := 1; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS + ['.']); IF CHARACTER IN 1'B', 'E'] THEN BEGIN SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1; IF CHARACTER IN DIGITS + ['+', '-'] THEN REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS) END LENGTH := CHARNUMBER - 1; SYMBOLNAME := IDENTIFIER; END {NUMBER}; '': BEGIN REPEAT READACHARACTER UNTIL CHARACTECnR <> ''; READSYMBOL END; '>', ':': CHECKFOR('=', OTHERSYMBOL, READNEXTCH): '<': BEGIN CHECKFOR('=', OTHERSYMBOL, READNEXTCH); IF SYMBOLNAME <> OTHERSYMBOL THEN CHECKFOR('>', OTHERSYMBOL, DONTREADNEXTCH); END '.': IF LASTSYMBOL <> ENDSYMBOL THEN CEHECKFOR('.', RANGE, READNEXTCH) ELSE SYMBOLNAME := PERIODSYMBOL; '''': BEGIN CHARNUMBER := 1; REPEAT REPEAT SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER +1; READACHARACTER; UNTIL CHARACTER = ''''; SYMBOL[CHARNUMBER] := CHARACTER; CH2ARNUMBER := CHARNUMBER + 1; READACHARACTER; UNTIL CHARACTER <>''''; LENGTH := CHARNUMBER -1; SYMBOLNAME := OTHERSYMBOL; IF LENGTH > WRITERIFHTCOL - WRITELEFTCOL +1 THEN BEGIN FLUSHUNWRITTENBUFFER; WRITELN; WRITELN('***STRING TOO LONG.'); GOTO 13 EkND; END {STRING} END {CASE} ELSE BEGIN SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; LENGTH := 1; READACHARACTER END END {READSYMBOL}; PROCEDURE CHANGEMARGINTO(NEWLEFTMARGIN: MARGINS); VAR INDENTEDLEFTMARGIN: MARGINS; BEGIN ACTߦUALLEFTMARGIN := NEWLEFTMARGIN; LEFTMARGIN := NEWLEFTMARGIN; IF LEFTMARGIN < O THEN LEFTMARGIN := O ELSE BEGIN INDENTEDLEFTMARGIN := WRITERIGHTCOL - 9 - LONGLINEINDENT; IF LEFTMARGIN > INDENTEDLEFTMARGIN THEN LEFTMARGIN := IDENTEDLEFTMARGIN END END= {CHANGEMARGINTO}; PROCEDURE DODECLARATIONUNTIL(ENDDECLARATION: SYMBOLSET); PROCEDURE DOPARANTHESES; VAR SAVEDLGLNID: OPTIONSIZE; BEGIN SAVEDLGLNID := LONGLINEINDENT; IF DECLARALIGNMENT >O THEN BEGIN LONGLINEINDENT := WRITECOLUMN + SYMBOLGAPo +1 - LEFTMARGIN - WRITELEFTCOL; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; END ELSE BEGIN LONGLINEINDENT := 1; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; REPEAT WRIAjTESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN = INDENTINDEX); END {ELSE}; LONGLINEINDENT := SAVELGLNID; END {DOPARENTHESES}; PROCEDURE DOFIELDLISTUNTIL(ENDFIELDLIST: SYMBOLSET); 5VAR LASTEOL: MARGINS; ALIGNCOLUMN: WIDTH; PROCEDURE DORECORD; VAR SAVEDLEFTMARGIN: WIDTH; BEGIN SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(WRITECOLUMN - 6 + INDENTINDEX - WRITELEFTCOL); STARTNEWLINEANDINDENT; 7+DOFIELDLISTUNTIL([ENDSYMBOL]); CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END {DORECORD}; PROCEDURE DOVARIANTRECORDPART; VAR SAVEDLEFTMARGIN, OTHERSAVEDMARGIN: 3MARGINS; BEGIN OTHERSAVEDMARGIN := ACTUALLEFTMARGIN; IF DECLARALIGNMENT > O THEN BEGIN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [COLONSYMBOL, OFSYMBOL]; IF SYMBOLNAME = COLONSYMBOL THEN BEGIN WRITESYMBOL; READSYMBOL; WITH UNWRITTEN[ӺLASTEOL] DO BEGIN IDENTAFTEREOL := IDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITECOLUMN := ALIGNCOLUMN; CHANGEMARGINTO(ACTUALLEFTMARGIN + ALIGNCOLUMN - WRITECOLUMN); END END IF SYMBOLNAME <> O-FSYMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = OFSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN+ IDENTINDEX); REPEAT WRITESYMBOL; READSYMBOL; IF SYMBOLNAME <> ENDSYMBOL THEN BEGIN STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [LEFTPARENTH, SEMICOLON, ENDSYMBOL]; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; READSYMBOL; SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; CHANGEMARGINTO(WRITECOLUMN - WRITELEFTCOL); DOFIELDLISTUNTIL([RIGHTPARENTH]); WRITESYMBOL; s READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END;  END; UNTIL SYMBOLNAME <> SEMICOLON; CHANGEMARGINTO(OTHERSAVEDMARGIN); END {DOVARIANTRECORDPART}; BEGIN {DOFIELDLISTUNTIL}; LASTEOL := OLDEST; IF LASTSYMBOL = LEFTPARENTH THEN FOR I := 1 TO DECLARALIGNMENT - LENGTH DO WRITEA(''); ALIGNCOLUMN := LEFTMARGIN + WRITELEFTCOL + DECLARALIGNMENT + 1; WHILE NOT (SYMBOLNAME IN ENDFIELDLIST) DO BEGIN IF LASTSYMBOL IN [SEMICOLON, COMMENT] THEN IF SYMBOLNAME <> SEMICOLON THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST END; IF SYMBOLNAME IN [RECORDSYMBOL, CASESYMBOL, LEFTPARENTH, COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL] THEN CASE SYMBOLNAME OF RECORDSYMBOL- DORECORD; CASESYMBOL: DOVARIANTRECORDPART; LEFTPARENTH: DOPARENTHESES; COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL: BEGIN WRITESYMBOL; IF DECLARALIGNMENT > O THEN IF NOT (ENDLABEL <= ENDFIELDLIST) THEN BEGIN WITH UNWRITTEN[LASTEOL] DO BEGIN IDENTAFTEREOL := INDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTA=FTEREOL := O; WRITECOLUMN := ALIGNCOLUMN; END; IF SYMBOLNAME = COMMASYMBOL THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST; END; AND {IF DECLARALIGNMENT}; READSYMBOL; END { , : - } END {CASE} ELSE BEGIN WRITESYMBOL; READSYMBOL END; END {WHILE}; END {DOFIELDLISTUNTIL}; BEGIN {DODECLARATIONUNTIL} STARTNEWLINEANDINDENT; WRITESYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; READSYMBOL; DOFIELDLISTUNTIL(ENDDECLARATION); STARTNEWLINEANDINDENT; CHANGEMARGINTO(7ACTUALLEFTMARGIN - INDENTINDEX); END {DODECLARATIONUNTIL}; PROCEDURE DOBLOCK(BLOCKNAME: COMMENTEXT; BLOCKNMLENGTH: WIDTH); VAR I: WIDTH; IFTHENBUNCHNEEDED: BOOLEAN; ATPROCBEGINNIN: BOOLEAN; PROCEDURE DOPROCEDURES; VAR I: O .. 20; PROCNAME: COMMENTTEXT; PROCNMLENGTH: WIDTH; BEGIN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, I * ALFALENG +1, PROCNAME[I + 1]); PROCNMBLENGTH := LENGTH; WRITESYMBOL; READSYMBOL; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; REPREAT READSYMBOL; WRITESYMBOL UNTIL SYMBOLNAME = RIGHT PARENTH; READSYMBOL; END; IF SYMBOLNAME = COLONSMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; LASTPROGPARTWASBODY := FALSE; DOBLOCK(PROCNAME, PROCNMLENGTH); LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; END {DOPROCEDURES}; PROCEDURE DOSTATEMENT(VAR ADDEDBLANKS: WIDTH; STATMTSYMBOL: COMMENTTEXT; STMTSYMLENGTH: WIDTH); VAR I:WIDTH; STATMTBEGINNING: INTEGER; STATMTPART: ARRAY [1..4] OF INTEGER; BLKSONCURRNTLINE, BLKSADDEDBYTHISSTMT: INTEGER; SUCCESSFUL: BOOLEAN; PROCEDURE BUNCH(BEGINNING, BREAKPT, ENDING: INTEGER; STATMTSEPARATION: OPTIONSIZE); BEGIN IF BUNCHWANTED OR IFTHENBUNCHNEEDED THEN BEGIN IF STMTSEPARATION <1 THEN ST:ATMTSEPARATION := 1; BLKSONCURRNTLINE := BLKSONCURRNTLINE + STATMTSEPARATION - 1; SUCCESSFUL := (ENDING - BEGINNING + BLKSONCURRNTLINE + UNWRITTEN[BEGINNING MOD BUFFERSIZE]. IDENTAFTEREOL) < WRITERIGHTCOL) AND (CHARCOUNT - BEGINNING ENDLIST THEN BEGIN IF PROCNAMESWANTED THEN IF ATPROCBEGINNING THEN IF LASTPROGPARTWASBODY THEN IF LASTSYMBOL = BEGDdINSYMBOL THEN WRITECOMMENT; ATPROCBEGINNING := FALSE; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSAFTERPRT2 := ADDEDBLANKS; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; WHILE SYMBOLNAME <> ENDLIST DO BEGIN WRITESMBOWL; READSYMBOL; IF SYMBOLNAME <> ENDLIST THEN BEGIN STATMTPART[3] := CHARCOUNT + 1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS + BLKSAFTERPRT2; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANEDKS; BUNCH(STATMTPART[2], STATMTPART[3], CHARCOUNT, STATMTSEPARATION); IF NOT SUCCESSFUL THEN BEGIN BLKSAFTERPRT2 := ADDEDB;AMLS\ STATMTPART[2] := STATMTPART[3]; END ELSE BLKSAFTERPRT2 := BLKSONCURRNTLINE; END; END {WHILE SYMBOLNAME <> ENDLIST};  END {IF SYMBOLNAME <> ENDLIST}; BLKSONCURRNTLINE := BLKSADDEDBYTHISSTATMT; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SYMBOLGAP9; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL, PERIODSYMBOL]; IF SUCCESSFUL THEN BEGIN IF ENDLIST = UNTILSYMBOL THEN STATMTPART[4] := STATMTSEPARATION ELSE STATMTPART[4] := SYMBOLGAP; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTPART[4]; END {IF SUCCESSFUL}; IF NOT (SUCCESSFUL AND BUNCHWANTED) THEN IF ENDLIST = ENDSYMBOL THEN IF LASTSYMBOL = ENDSYMBOL THEN IF ATPROCEND AND PROCNAMESWANTED THEN WRITECOMMENT ELSE IF ENDCOMMENTSWANTED THEN WRITECOMMENT; END {DOSTMTLIST}; BEGIN {DOSTA*eTEMENT) BLKSONCURRNTLINE := O; SUCCESSFUL := FALSE; BLKSADDEDBYTHISSTMT := O; CHANGEMARGINTO(ACTUALLEFTMARGIN + IDENTINDEX); STARTNEWLINEANDINDENT; STATMTBEGINNING := CHARCOUNT; IF SYMBOLISNUMBER THEN BEGIN WITH UNWRITTEN[OLDEST] DO BEGIN INDENTAFTEREOL := IDENTAFTEREOL - 1 LENGTH - SYMBOLGAP; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITESYMBOL; READSYMBOL {WRITE LABEL}; WRITESYMBOL; READSYMBOL {WRITE COLON}; END FORWITHWHILESTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); S],TMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = DOSYMBOL; WRITESYMBOL; READSYMBOL; STATMTPART[1] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := BLKSONCURRNTLINE + ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SYMBOLGAP); END; REPEATSTATEMENT: DOSTMTLIST (UNTILSYMBOL); IFSTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT [WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = THENSYMBOL; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[2] := CHARCOUNT +1; DOSTATMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTSEPARATION) ELSE IFTHENBUNCHNEEDED := TRUE; IF SYMBOLNAME = ELSESYMBOL THEN BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; IFTHENBUNCHNEEDED := FALSE; STARTNEWLINEANDINDENT; STATMTPART[3] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[4] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH)C; BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STMTPART[3], STATMTPART[4], CHARCOUNT, SYMBOLGAP); BLKSONCURRNTLINE := BLKSADDEDBYTHISSTMT; IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[3], AdCHARCOUNT, STATMTSEPARATION); END ELSE IF (CHARCOUNT - STATMTBEGINNING) < BUFFERSIZE THEN BEGIN BUNCHWANTED := NOT BUNCHWANTED; BLKSONCURRNTLINE := O; BUNCH(STATMTBEGINNING, STATMTPART[1], STATMTPART[2], SYMBOLGAP); BUNCHWANTED := NOT BUNCHWANTED; END; IFTHENBUNCHNEEDED := FALSE; END {IFSTATEMENT}; CASESTATEMENT; BEGIN REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = OFSYMBOL; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); WHILE SYMBOLNAME <> ENDSYMBOL DO BE3GIN STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), STATMTSYMBOL[I + 1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = COLONSYMBOL; WRITESA5YMBOL; READSYMBOL; IF NOT (SYMBOLNAME IN [SEMICOLON, ENDSYMBOL]) THEN BEGIN STATMTPART[2] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDdBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); END {IF NOT(SYMBOLNAME...)}; IF SYMBOLNAME - SEMICOLON THEN BEGIN WRITESYMBOL; READSYMBOL; END; END; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; IF ENDCOMMENTSWANTED AND (LASTSYMBOL = ENDSYMBOL) THEN BEGIN STATMTSYMBOL[1] := 'CASE '; STMTSYMLENGTH := 4; WRITECOMMENT; END; END {CASESTATEMENT}; OTHERSTATEMENT; BEGIN WHILE NOT (SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, & ELSESYMBOL]) DO BEGIN WRITESYMBOL; READSYMBOL END; END {OTHER}; COMPOUNDSTATEMENT: DOSTMTLIST(ENDSYMBOL) END {CASE}; ADDEDBLANKS := BLKSADDEDBYTHISSTMT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END {DOSTATEMENT}; BEGIN {DOBLOCK} LASTPROGPARTWASBODY := LASTPROGPARTWASBODY AND (SYMBOLNAME = BEGINSYMBOL); IF SYMBOLNAME = LABELSYMBOL THEN DODECLARATIONUNTIL(ENDLABEL); IF SYMBOLNAME = CONSTSYMBOL THEN DODECLARATIONUNTIL(ENDCONST); IF SYMBOLNAME = TYPESYMBOL THEN DODECLARATIONUNTIL(ENDTYPE1); IF SYMBOLNAME = VARSYMBOL THEN DODECLARATIONUNTIL(ENDVAR); WHILE SYMBOLNAME IN [FUNCSYMBOL, PROCSYMBOL] DO DOPROCEDURES; IF SYMBOLNAME = BEGINSYMBOL THEN BEGIN IF LASTPROGPARTWASBODY THEN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; I FTHENBUNCHNEEDED := FALSE; ATPROCBEGINNING := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); DOSTATEMENT(I, BLOCKNAME, BLOCKNMLENGTH) { I IS DUMMY PARAM }; LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); END ELSE BEGIN WRITESMBOL; READSYMBOL {WRITE FORWARD} END END {DOBLOCK}; PROCEDURE INITIALIZE; VAR I: WIDTH; BEGIN { CONSTANTS: } DIGITS := ['O' .. '9']; LETTERSANDDIGITS := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Z'] + DIGITS; ALPHASYMBOLS := [PROGSYMBOL, BEGINSYMBOL, ENDSYMBOL, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, CASESYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LABELSYMBOL, ALPHAOPERATOR]; ENDLABEL := [CONSTSYMBOL, TYPESYMBOL, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, BEGINSYMBOL]; ENDCONST := ENDLABEL - [CONSTSYMBOL]; ENDTYPE := ENDCONST - R[TYPESYMBOL]; ENDVAR := ENDTYPE - [VARSYMBOL]; { INITIALIZE COLUMN DATA:} WRITECOLUMN := O; LEFTMARGIN := O; ACTUALLEFTMARGIN := O; OUTPUTCOL := 1; READLEFTCOL := 1; READRIGHTCOL := MAXREADRIGHTCOL; WRITELEFTCOL := 1; WRITERIGHCOL := MAXWRITERIGHTCOL; ZOLDEST := 1; CHARCOUNT := 1; LINENUMBER := O; INCREMENT := O; { INITIALIZE BOOLEAN PARAMETERS: } PACKERISOFF := TRUE; BUNCHWANTED := FALSE; DISPLAYISON := TRUE; PROCNAMESWANTED := TRUE; ENDCOMMENTSWANTED := FALSE; NOFORMATTING := FALSE; { INITIALIZE NUeMERIC PARAMETERS: } INDENTINDEX := 3; LONGLINEINDENT := 3; PROCSEPARATION := 2; SYMBOLGAP := 1; STATMTSEPARATION := 3; DECLARALIGNMENT := O; { INITIALIZE INPUT CONTEXT DATA: } READCOLUMN := 1; CHISEOL := FALSE; NEXTCHISEOL := FALSE; FOR I := O TO BUFFERSIZE DO SYMBOL[I] := ''; LASTSYMBOL := PERIODSMBOL; LASTPROGPARTWASBODY := FALSE; END {INITIALIZE}; BEGIN {MAINPROGRAM} CONSTANTSINITIALIZATION; INITIALIZE; IF EOF(INPUT) THEN WRITELN('*** NO PROGRAM FOUND TO FORMAT.') ELSE BEGIN READACHARACTER; READSYMBOL; IF SYMBOLNAME <> PROGSYMBOL THEN WRITELN('***"PROGRAM" EXPECTED.') ELSE BEGIN { ********************************************************************* F O R M A T T H E P R O G R A M - - - - - - - - - - - - - - - - ******************************************************************** } STARTNWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), MAIN[I + 1]); MAINNMLENGTH := LENGTH; REPEAT WRITESYMBOL; RE6RADSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; DOBLOCK(MAIN, MAINNMLENGTH); WRITEA('.'); FLUSHUNWRITTENBUFFER; END; END; 13: END {MAINPROGRAM}. 1978EMP.07f E 582 1046.89 E 583 1151.39 E 584 996.51 E 585 627.63 E 586 732.19 E 587 537.45 E 588 513.44 E 589 374.42 E 590 110.15 E 591 979.37 E 592 1426.28 E 594 531.30 E 596 500.91 W 599 5659.58 AS.0 .TITL AS .NREL .RDS CPU .WRS CPU .RDL CPU .WRL CPU .RDB CPU .WRB CPU .ERTN .OPEN CPU .CRAND .PCHAR .GCHAR .GCHN .DELETE .CLOSE CPU .GPOS CPU .SPOS CPU .END XREF.SV.SVRDL.BU67PROCEDURE READLINE( CHANNEL : INTEGER; VAR BUFFER : BIGSTR; VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); CONST DOTRDL = 6975; {.RDL} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTRDL; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESREAD; R2.INT := CHANNEL; SYSCALL(REQUEST); {$R-} STRINGPOINTER^[0] := R1.CH; {$R^} IF ERROR THEN W8RITELN(' ERROR IN READLINE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; BUFFER := STRINGPOINTER^; BYTESREAD := R1.INT; END; RELEASE(HEAP); END; {READ LINE} TEST12.s*>EPROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; FIELD = RECORD KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE INTEGER OF 1 : (IMREAL : REAL); 2 : (IMINT : INTEGER); 3 : (IMSTR : STRING[10]) END;{CASE} VAR I : INTEGER; STR : ALPHANUMERIC; NEXTFIELD: FIELD; {$I GETINTEGER.PI} {$I GETFIELD.PI} BEGIN REPEAT WRITELN('ENTER STRING'); WRITELN; READLN(STR); WRITELN(STR); GETFIELD(STR,3,NEXTFIELD); CASE NEXTFIELD.KIND OF IAMREAL : WRITELN('REAL',NEXTFIELD.IMREAL); IAMINTEGER : WRIgzTELN('INTEGER',NEXTFIELD.IMINT); NIL : WRITELN('FIELD DOES NOT EXIST') END{CASE} UNTIL EOF(INPUT) END. TSST. 1 C 3048 22.56 11 2 C 3041 3.57 4 3 C 3049 44.55 10 4 C 3050 35 26 5 C 3053 256.07 4 6 C 3054 1743.66 7 7 C 3055 1200 21 8 C 3065 10 26 9 C 3057 60 26 10 C 3058 385 3 11 C 3059 172.14 8 12 C 3060 6.95 3 13 C 3061 646.33 8 14 C 3062 31 1 15 C 3063 30 26 16 CC 3064 17 C 3065 223.70 32 18 C 3066 250 27 19 C 3069 96 4 20 CC 3070 21 C 3072 129.64 4 22  C 3073 1340.63 25 23 C 3074 2500 21 24 C 3075 23 5 25 C 3076 100 24 26 C 3078 22.50 4 27 EM 810 17 15 28 EM 811 604.28 15 29 EM 812 643.69 15 30 D 140 34 31 D 8347.06 34 32 D 2086.75 7 33 C 3077 10.77 6 34 C 813 980.89 14 35 C 817 205.18 12 36 C 815 887.50 12 37 C 3081 35 4 38 C 3067 62 1 39 C 3083 34 6 40 C 3002 1350.12 25 41 C 3071 330 20 42 C 3085 50.99 5 43 C 3087 704.45 17 44 C 3080 1298.05 25 45 C 816 1581.88 12 46 C 3079 37.50 6 47 C 819 1581 12 48 C 3090 5324 9 49 D 1468.38 34 50 D 871.98 34 51 D 13056 34 52 D 12436.99 34 53 D 435.99 34 1 54 C 3068 10 18 55 C 3086 138.02 25 56 C 3088 1040 23 57 C 3090 5324 9 58 C 3091 250 8 59 C 3092 206.59 20 60 C 3093 15.40 22 61 C 3094 120.70 4 62 C 3095 20 26 63 C 3096 775 9 64 / C 3097 32 10 65 C 3098 74.05 22 66 C 3099 4000 21 67 C 3101 1557.44 25 68 C 3104 40 33 69 C 3103 42.50 10 70 C 3105 504.39 25 71 C 3106 119.98 4 72 C 3107 793.50 9 73 C 3108 1537.50 27 74Gf C 3109 3394.50 6 75 C 3110 25 3 76 EM 818 140 27 77 EM 820 1581 12 78 EM 833 948.57 12 79 EM 834 912.14 12 80 EM 835 17 15 81 EM 836 181.73 14 82 EM 837 482.61 15 83 EM 838 2742.40 14 8L4 EM 840 622.50 27 85 EM 821 195.18 12 86 EM 822 1415.95 12 87 C 3113 79.95 5 88 C 3114 69.95 10 89 C 3115 200 20 90 C 3116 225 27 91 C 3117 4.65 10 92 C 3119 48 18 93 C 3120 1940.43 25 94 C 3121 269.78 17 95 C 3123 12.24 4 96 C 3124 93.27 15 97 C 3125 181.78 15 98 C 3126 243.77 14 99 C 3127 68.45 23 100 C 3129 128.35 5 101 C 3130 25.98 5 102 C 3132 15.90 5 103 C 3133 125.81 22  104 C 3134 20..47 22 105 C 3135 85.15 22 106 D 435.99 34 107 D 906.32 34 108 D 435.99 34 109 D 1628 34 110 D 3000 34 111 D 11481.06 34 112 C 3112 25 26 113 C 3118 1.30 11 114 C 3122 100 26  115 C 3128 7.86 22 116 C 3138 185.26 4 117 C 3139 19.37 10 118 C 3140 6.17 10 119 C 3141 6.46 10 120 C 3142 3.96 10 121 C 3143 3.62 10 122 C 3144 42.08 22 123 C 3145 46.50 3 124  C 3146 36.70 11 X 125 C 3147 27.73 10 126 C 3148 25.98 5 127 C 3149 6 33 128 C 3150 95 33 129 C 3151 78.50 33 130 C 3152 1000 25 131 C 3153 227.40 25 132 C 3154 100 8 133 C 3155 160.43 4 134 C 3156 835.38 25 135 s C 3157 781.68 25 136 C 3198 28.30 3 137 EM 823 1000 12 138 C 3158 21.92 5 139 C 3159 12 33 140 C 3165 638.45 27 141 C 3167 15 5 142 C 3160 155.47 17 143 C 3161 34 10 144  C 3163 594 17 145 C 3166 ȏ465 4 146 C 3168 83.85 3 147 C 3169 200 24 148 D 1834.55 34 149 D 435.99 34 150 D 802.29 34 151 EM 824 333.14 15 152 EM 825 378.68 15 153 EM 826 2590.51 14 154 EM 827 425.95 12 155 EM 828 82.50 26 156 EM 829 38.70 14 157 EM 841 1425.95 12 158 EM 830 1425.95 12 159 EM 831 205.18 12 160 EM 832 209.37 12 161 D 905 34 162 D 594 34 163 D 520 34 164 D 435.99 34 165 DM 18.88 166 C 3162 39.9p5 18 167 C 3164 130.46 14 168 C 3170 120.97 4 169 C 3171 18 33 170 C 3172 36.70 10 171 C 3173 947.50 25 172 C 3174 80 26 173 C 3175 204 5 174 C 3177 496.56 25 175 C 3178 136.20 25 176 C 3179 729 17 177 C 3180 170 23 178 C 3182 121.30 11 179 C 3183 2591 22 180 C 3184 27 17 181 C 3186 10.08 23 182 C 3200 1020 27 183 D 13331.89 34 184 D 11943.74 34  185 D 4546.81 34 186 D 129.24 34 187 Dt 3229.35 34 188 D 715 34 189 C 3176 50 22 190 C 3181 950 7 191 C 3185 125 23 192 C 3187 174.75 23 193 C 3188 290.64 4 194 C 3189 1372 27 195 C 3190 3.28 5 196 C 3191 18 5 197 C 3192 5.68 23 19'8 C 3203 100 27 199 C 3193 37.25 23 200 C 3194 147.08 23 201 C 3195 7 23 202 C 3196 50 21 203 C 3199 26 33 204 C 3201 2764.81 27 205 C 3202 948.17 25 206 C 3204 55.20 5 207 C 3205 14.25 7 208 C l3206 10 6 209 C 3207 7.58 5 210 C 3208 60.59 2 211 C 3209 250.65 25 212 EM 842 209.37 12 213 EM 844 1527.87 12 214 EM 845 290.37 12 215 EM 846 3584 14 216 D 531.21 34 217 EM 843 1527.87 12 218 EM k847 1527.87 12 219 EM 848 209.37 12 220 EM 849 1000 12 221 EM 850 9000 12 222 C 3210 720 27 223 C 3211 69.37 2 224 C 3212 1.81 11 225 C 3213 176.55 25 226 C 3214 10.46 25 227 C 3215 18.28 5 228 3n216 64.28 5 229 C 3217 547.32 17 230 C 3218 136.48 17 231 C 3219 48.60 10 232 C 3220 170 23 233 C 3221 10 8 234 C 3224 227.40 17 235 C 3225 36 5 236 C 3222 450 27 237 C 3223 10.64 5 238 C 3226 93.͂71 4 239 C 3227 74.13 2 240 C 3230 31 26 241 EM 851 4000 36 242 C 3229 2774.75 23 243 C 3228 102.08 4 244 C 3231 35 18 245  D 4888.40 34 246 D 3435.99 34 247 EM 852 1527.87 12 248 C 3232 125 23 D< 249 C 3233 3654.15 23 250 C 3235 37 33 251 C 3236 42.50 33 252 C 3237 2282.26 6 253 C 3238 138.17 33 254 C 3239 95.64 2 255 C 3240 3.70 5 256 C 3241 4.33 5 257 C 3242 535.39 18 258 EM 854 48.65 12  259 EM 853 540 15 260 D 3148 34 261 D 296.31 34 262 D 1403.43 34 263 D 174 34 264 D 2600 30 265 C 323 298.80 25  266 C 3243 28.20 3 267 C 3244 341.40 10 268 C 3245 500 25 269 C 3246 328.44 10 ; 270 C 3247 784.13 25 271 C 3248 125.30 11 272 C 3249 5.76 23 273 C 3250 50 24 274 C 3252 1760 27 275 C 3251 100 2 276 C 3253 43 1 277 C 3254 290.77 4 278 C 3255 100 2 279 C 3258 42.50 33 280 G C 3259 4.60 23 281 C 32600 820.84 25 282 C 3261 732.30 8 283 C 3263 50 22 284 C 3264 296.31 23 285 C 3265 168.01 25 286 D 435.99 34 0 16 20 1 14 38 276 2 210 223 239 # 254 275 278 3 10 12 75 123 136 146 266 4 2 5 19 21 26 37 61 71 95 116 133 145 168 193 238 243 277 5 24 42 87 100 101 {Y102 126 138 141 173 195 196 206 209 227 235 237 255 256 6 33 39 46 74 208 252 7 6 190 207 8 11 13 58 132 233 282 9 48 \ 57 63 72 10 3 64 69 88 91 117 118 119 120 121 125 143 170 231 267 269 11 1 113 124 178 224 271 12 35 36 45 47 77 78 79 85  86 137 154 157 158 159 160 212 213 214 217 218 219 220 221 247  258 14 34 81 83 98 153 156 167 215 15 27 28 29 80 82 96 97 151  152 259 17 43 94 142 144 176 180 229 230 234 18 54 92 166 244 257 20 41 59 89 21 7 23 66 202 22 60 65 103 104 105 11T5 122 179 189 283 23 56 99 177 181 191 192 197 199  200 201 232 242 248 249 272 280 284 24 25 147 273 25 22 40 44 55 67 70B 93 130 131 134 135 171 174 175 205 211 225 226 265 268 270 281 285 26 4 8 9 15 62 112 114 155 172 240 27 18 73 76 84 90  140 182 194 198 204 222 236 274 32 17 33  68 127 128 129 139 169 203 250 251 253 279 36 241 1 14 38 276 SEARCH KEY 1 14 C 3062 31 1 er 38 C 3067 62 1 276 C 3253 43 1 AMOUNT = 1.360E+02 2 210 223 239 254 275 278 SEARCH KEY 2 210 C 3208 60.59 2 223 C 3211 69.37 2 239 C 3227 74.13 2 254 C 3239 95.64 2 275 C 3251 100 2 278 C 32&k55 100 2 AMOUNT = 4.997E+02 3 10 12 75 123 136 146 266 SEARCH KEY 3 10 C 3058 385 3 12 C 3060 6.95 3 75 C 3110 25 3 123 C 3145 46.50 3 136 C 3198 28.30 3 146 C 3168 83.85 3 266 C 3243 28.f20 3 AMOUNT = 6.038E+02 4 2 5 19 21 26 37 61 71 95 116 133 145 168 193 238 243 277 SEARCH KEY 4 2 C 3041 3.57 4 5 C 3053 256.07 4 19 C 3069 96 4 21 - C 3072 129.64 4 26 C 3078 22.50 4 37 C 3081 35 4 61 C 3094 120.70 4 71 C 3106 119.98 4 95 C 3123 12.24 4 116 C 3138 185.26 4 133 C 3155 160.43 4 145 C 3166 465 4 168 C 3170 120.97 4 193 C 3188 290.64 k4 238 C 3226 93.71 4 243 C 3228 102.08 4 277 C 3254 290.77 4 AMOUNT = 2.504E+03 5 24 42 87 100 101 102 126 138 141 173 195 196 206 209 227 235 237 255 256 SEARCH: KEY 5 24 C 3075 23 5 42 C 3085 50.99 5  87 C 3113 79.95 5 100 C 3129 128.35 5 101 C 3130 25.98 5 102 C 3132 15.90 5 126 C 3148 25.98 5 138 C 3158 21.92 5 141 C 3167 15 5 173 C 3175 204 5 195 C 3190 c3.28 5 196 C 3191 18 5 206 C 3204 55.20 5 209 C 3207 7.58 5 227 C 3215 18.28 5 1980.DPC 8,347.06 140.00 1,468.38 871.98 13,056.00 5,324.00 12,436.99 435.99 435.99 906.32 3,000.00  435.99 1,628.00 11,481.06 1,834.55 435.99 C 802.29 905.00 594.00 435.99 520.00 13,331.89 1,527.87 129.24 4,546.80 11,943.74 715.00 3,229.35 531.21 3,435.99 4,888.40 1,403.43 [ 296.31 174.00 2,600.00 3,148.00 117,396.31 1980CHECKS. q C 3040 704.45 C 3066 250 27 C 3069 96 4 C 3075 23 5 C 3076 100 24 C 3077 10.77 6 C 3078 22.50 4 EM 810 17 15 EM 811 604.28 15 EM 812 643.69 15 D 140 34 D 8347.06 34 D 2086.75 C 813 980.89 14 C 817 205.18 12 C 3081 35 4 C 3067 62 1 C 3083 34 6 C 3071 330 290 C 3085 50.99 5 C 816 1581.88 12 C 819 1581 12 D 1468.38 34 D 871.98 34 D 13056 34 D 12436.99 34 D 435.99 34 C 3068 10 18 C 3086 138.02 25 C 3088 1040 23 C 3090 5324 9 C 3091 250 8 C 3092 206.59 20 C 3093 15.40 22 C 3094 120.70 4 C 3095 20 26 C 3096 775 9~ C 3097 32.88 10 C 3098 74.05 22 C 3099 4000 32 C 3101 1557.44 25 C 3104 40 33 C 3103 42.50 10 C 3105 504.39 25 C 3106 119.98 4 C 3107 793.50 9 C 3108 1537.50 27 C 3109 3394.50 6 C 3110 25 3 EM 818 140 27 EM 820 1581 12 EM 833 948.57 12 EM 834 912.14 12 EM} 835 17 15 EM 836 181.73 14 EM 837 482.61 15 EM 838 2742.40 14 EM 840 622.50 27 EM 821 195.18 12 EM 822 1415.95 12 C 3113 79.95 5 C 3114 69.95 10 C 3115 200 20 C 3116 225 27 C 3117 4.65 10 C 3119 48 18 C 3120 1940.43 25 C 3121 269.78 17 C 3123 12.24 4 C 31Q24 93.27 15 C 3125 181.78 15 C 3126 243.77 14 C 3127 68.45 23 C 3129 128.35 5 C 3130 25.98 5 C 3132 15.90 5 C 3133 125.81 22 C 3134 20.47 22 C 3135 85.15 22 D 435.99 34 D 906.32 34 D 435.99 34 D 1628 34 D 3000 34 D 11481.06 34 C 3112 25 26 C 3118 1.30 11 C@ 3122 100 26 C 3128 7.86 22 C 3138 185.26 4 C 3139 19.37 10 C 3140 6.17 10 C 3141 6.46 10 C 3142 3.96 10 C 3143 3.62 10 C 3144 42.08 22 C 3145 46.50 3 C 3146 36.70 11 C 3147 27.73 10 C 3148 25.95 5 C 3149 6 33 C 3150 95 33 C 3151 78.50 33 C 3152 1000 25 C 3153 227.40 25 C 3154 100 8 C 3155 160.43 4 C 3156 835.38 25 C 3157 781.68 25 C 3198 28.30 3 EM 823 1000 12 C 3158 21.92 5 C 3159 12 33 C 3165 638.45 27 C 3167 15 5 C 3160 155.47 17 C 3161 34 10 C 3163 594 17 C 3166 465 4 C 3168 83.85 3 C 3169 200 24 D 183.4.55 34 D 435.99 34 D 802.29 34 EM 824 333.14 15 EM 825 378.68 15 EM 826 2590.51 14 EM 827 425.95 12 EM 828 82.50 26 EM 829 138.70 14 EM 841 1425.95 12 EM 830 1425.95 12 EM 831 205.18 12 EM 832 209.37 12 D 905 34 D 594 34 D 520 34 D 435.99 34 DM 18.88 C 3162 39.95 18 C 3164 130.46 14 C 3170 120.97 4 C 3171 18 33 C 3172 36.70 10 C 3173 947.50 25 C 3174 80 26 C 3175 204 5 C 3177 496.56 25 C 3178 136.20 25 C 3179 729 17 C 3180 170 23 C 3182 121.30 11 C 3183 25.91 22 C 3184 127 17 C 3186 10.08 23 C 3200 1020 27 D 13331.89 34 D 11943.74 34 D 4546.81 34 D 129.24 34 D 3229.35 34 D 715 34 C 3176 50 22 C 3181 950 7 C 3185 125 23 C 3187 174.75 23 C 3188 290.64 4 C 3189 1372 27 C 3190 3.28 5 C 3191 18 5 C 3192 5.68 23 C 3203 100 27 C 3193 37.25 23 C 3194 147.08 23 C 31F%95 17 23 C 3196 50 21 C 3199 26 33 C 3201 2764.81 27 C 3202 948.17 25 C 3204 55.20 5 C 3205 14.25 7 C 3206 10 6 C 3207 7.58 5 C 3208 60.59 2 C 3209 250.65 25 EM 842 209.37 12 EM 844 1527.87 12 EM 845 290.37 12 EM 846 3584 14 D 531.21 34 EM 843 1527.87 12 EM 847 1527.87 12 EM 848 209.37 12 EM 849 1000 12 EM 850 9000 12 C 3210 720 27 C 3211 69.37 2 C 3212 1.81 11 C 3213 176.55 25 C 3214 10.46 25 C 3215 18.28 5 3216 64.28 5 C 3217 547.32 17 C 3218 136.48 17 C 3219 48.60 10 C 3220 170 23 C 3221 10 8 C 3224 227Jy.40 17 C 3225 36 5 C 3222 450 27 C 3223 10.64 5 C 3226 93.71 4 C 3227 74.13 2 C 3230 31 26 EM 851 4000 36 C 3229 2774.75 23 C 3228 102.08 4 C 3231 35 18 D 4888.40 34 D 3435.99 34 EM 852 1527.87 12 C 3232 125 23 C 3233 3654.15 23 C 3235 37 33 C 3236 42.50 3B3 C 3237 2282.26 6 C 3238 138.17 33 C 3239 95.64 2 C 3240 3.70 5 C 3241 4.33 5 C 3242 35.39 18 EM 854 48.65 12 EM 853 540 15 D 3148 34 D 296.31 34 D 1403.43 34 D 174 34 D 2600 30 C 3243 28.20 3 C 3244 341.40 10 C 3245 500 25 C 3246 328.44 10 C 3247 784.13 I25 C 3248 125.30 11 C 3249 5.76 23 C 3250 50 24 C 3252 1760 27 C 3251 100 2 C 3253 43 1 C 3254 290.77 4 C 3255 100 2 C 3258 42.50 33 C 3259 4.60 23 C 3260 820.84 25 C 3261 732.30 8 C 3263 50 22 C 3264 296.31 23 C 3265 168.01 25 D 435.99 34 C 3082 1350.12 25 C 3136 16.00 1 C 3216 64.28 5 C 3234 298.80 25 C 3262 88.41 14 C 3268 14.00 26 C 3276 146.75 11 C 3277 60 1 C 3278 19.01 11 C 3279 72.18 5 CC 3064 CC 3070 CC 814 CC 3087 CC 3137 CC 839 CC 3131 CC 3084 CC 3089 CC 3100 CC 3102 CC 3111 REALFIELD.BU FUNCTION REALFIELD(STR : BIGSTR; FIELDNUMBER : INTEGER) : REAL ; VAR I,J,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; J := 1; WHILE ( (I FIELDNUMBER) ) DO BEGIN {LEADING BLANKS AND TABS} WHILE ( (I>TEDITSV    SYS1NPDo\ff COMCM SYS1MPDpee SEDITSV  jj 9SYS2MPDpll!PDRdd $SYS5LB!@ h h PLCNAKT2892POSTFIXPX )SEQ01 CBOOK 7q 1978EMP08(f WRITESTRINPI)CONSOLEMC`qr ALMSPDRB+;;*INTERPOKPX?? 8T38R0PRETTYPA[3 'CBOOKPA  TEST011978EMP09f CROSSREFPXwr P4XAP0T17H/2BITS7TEDITSVTEDITSVTEST02197801 1978EMPR1r*TEST8v GETFIELDPIsT279 197802 CONSOLECMrg197815+#z 1978EMPR2rrCOMCM &SYS24KBYTET37y .T17RL #CROSSREFBUJ TEST3PX197803 TOTAL ASRBY1CLOSEPI1978EMPR3rrDATABTDwwINTERPOK[ TEST7mq +T16/ SEDITSVSEDITSVREALPRINTPA]  :T3MC  CMC3197804 /187805TOTALPA  PLMCprq197805 T26bUCROSSREF+TESTMCl PL5PX rq $1980D2 ]BTREEPX rrINPUT$TTIT36^* T. &EDITSV  / 197806I> DATA6rr1980D3  IOAWT151K/197807MFDUMPSVFDUMPSVTEST6V FOBARcOPENBU,Y"GETREALBU`8 CBOOK02 s PLCMv&qq1980D4 284P RPXQGT 1978086U7TESTCMl9TESTPOll "1978DOD-90NSB801215G 5'OPENT35^ TEST1PX" GETIc197809d71978R0 f1978DP&t 1978CHECKS& PL5/ Fq PINFOPXw?? ALLINK |l .T14~.RBUX 1978DQ1978R1 ww!TEST5 MANUAL210 m BREAKSV Y^ll *DEAR qq,1979CHECKS ALLOCtT24]236 8TKOM013``F  *REALPRINT029 CBOOKMC'qs4CONSOLEPX sq ASMSVASMSVMANUAL211{?? GETCOLUMNBUAsrRT346REALPRINTPIi DELETEPIr CRANDPISr PASCALOPX { l T13 .P4ERRORSX II POSTFIXPA 1TEST4  5READLINEPI:WRSBUq CONSOLEBU 0rr/README ) $MANUAL201 "INTERPOKPA["l T23$2GLOBA& GETINTEGERPIVr)RDSBU -q !CBOOKCMs4CTLA|+%T33/"NODES2 CROSSREFPA4r T11PX:1980DEPS; TOTALMC +CONSOLE  q GLOBALE&T12I.+TEST3K TPA$ PLPX Irq PXSVPPASINTERPSVT22O2DQ PRETTYINST9SGG TESTPX  )TEST3PAdWRLPIXr 7CATEGORIESq GETFILEDREBU 1979D2!1978D3!o *PASCALER*? T1) T321@"T10PXPm +BEDITSVBEDITSV1979D3w^ $RDLPIMq;DATATOss T2f) $T11.BTREE BYTE01*TTTPX 5TEST2 TESTBU UsrPL5PA"ll21979D4l*FLOADSVFLOADSVSYSLBSYSLBBTREEPA rrT3 T212 SEQ-7BYTE02 PRETTYPRINPX :TEST2PA GCHARPI PL/ rq T4) %T310@$TEST p%CDC6000PX T5) *OUTPUT$LPTT41o'&.1978P1978R1NODES01 CROSSREF02w`TEST1t RPA1978EMPf (DATA01 +srTST Q ; T6)+T20w 1PRETTYPX  CBOOKPX REALPRINTPT] TEST1PA .T30 !&T79 . TESTLSEN  )RLDRSVRLDRSVGETFIELDINBU )T8 . T39A^  T40 ",CBOOKBUaTs GETREAL01 ( 1978EMP10 ,f CONSOLEPA xrq TEDIT qTSSpT9 .. BTREE01  0 1978EMP11 <f "GPOSPI :RLDROLRLDROLPASCFLS~m TMCf @ 8REALPRINTPX B ;GETREALPIf D "TOTALPX WRITELINE01 OPENPIRr 1979DEPS0&DATATX bss SPOSPI:PASCALPXjb? PASOPSYSMCBll 4OPENFILESPIEr &198002 T11PA 1978EMP01 f TLMC  REALPRINTBUN(GCHNPI CRANDBU4l DELETEBUPCHARPIgPLPArr .PASVPPASINTERPSVTESTPA p !1978EMP030 f CONSOLE01Zq$GETINTEGERBUBTREEMC`rrDATAR1s T19U 0.TKOM __ FIXFLG @T10PA~ . 1978EMP04 f TEST22 :T29+ W$KOMPAR \7T100( !! +TTTPA  6RMCT  1978EMP05 f WRSPIr TEST23 .TEST10 *qPASINTERPSV ")ld ADDRESS ? T39R B CDC6000B| L<1980DOnPRETTYPRINPAM  TOTALLSC 197810k % 1978EMP06 ?f 1978EMPMC\ff 'RDSPIjr WRLBUW5TEST11{ qq-PASINTERPERM? IPX J T18 M0)INTGET O*PETTYPRIN01J RI CDC6000PAB l 1978EMP07 f AS0XREFSVXREFSVRDLBU6TEST12gs*TSSTcj1980DP[ 1980CHECKS  REALFIELDBU TEMPCSYS2LM); FDUMPSV jj 9BOOTSV  ^kI9SYS2LPDqff CLIS0 CLISV ==.GHMASV 'ee SYS1NSV v ff &ASMSV  "CLIER=. GAMESDRfee BIORYTHMNRB p . . $GHMASV (ee BIORYTHMNFR i m . "GHMAT+e } BIORYTHMNSV  . . &GHMARBr.ee CLIOLS0=. CLICM&||!SYS1NOL7;ff SYS1MSV {ee SYS2MSV wull SYS1MOL7ee SYS2MOL7pll!SYS2LSV zff BEDITSV   )TT -SYS2LOL7ff SYSSVSYS2MSVFLOADSV Wjj 9SYSLB' qm=*SYSOLSYS2MOLSYS1NLM(sff USERSDR ddATCSALCM ex,ERASE du8DRABSALt e3%SIAL$ e2 OUTSTAL e4TEDITSVDP0TEDITSVPLOTBU d  PTABSAL] e3 COMCMCvee P2STTAL e4ADRAWAL e9IEIAL$ e2INPUT dSOAL e2CLIPLAL #e4TANKSV 'dd 0LOCSSR5 Le2RMOVEAL| Oe9KS2PTRALD Re4P2STRAL Ue4DRRELALt Xe3$PUTCSR [e4SCORE ^d$/CURVESV  a99 BOMB zd3EOAL e2ASMSVASMSVBOMB1 d !PTRELAL# e4GCOUTSR e9 "MVABSAL@ e3#ATCSLB xx0DRAFTSYSBS eu PLOT d NIAL$ e2TFORTSVFORT4TFORTSVATCSCM e9 INPPIALF e4MOONBS  exCURVEAL e9 TINITAL e4ERASEAL e6VECTOR{ d INIT  du2VIEWPORTAL e4RPOINTAL} e6RINPSIAL e9 ;MOVEAL[ e2DRAWALZ e2SYSLBSYSLBGETCSR e4SPLOT% dNOAL e2ANMODEAL e4INSTRAL e9_RAND e INPPAL| e4AMOVEAL e9IMVRELALh e3"MASTER d-FORTSVFORT4FORTSVHOMEAL 4e4ATCSSRCM, 6ex.WIAL$ 8e2,RLDRSVRLDRSVINPSAL :e9 /RLDROLRLDROLRDRAWAL\ >e6NPUTCo Bu :TEKPACKSR$ Eej &WOAL We2WINDOWAL Ye4BUILDCURVEMC \dx7FIVSVFORT4FIVSVAPOINTAL9 ^e4CHARSR ae9 XFRMAL fe3&GLOBALSSR ie4BUILDATCSCLn le9wCREATETANKMC mdu;XREFSVXREFSVPAGESVDP0PAGESVRLDRSV  m= SYS1MLM(ee GHMAT*e } SYS2MLM)ll RLDROL/ m= SYS2LLM)ff GHMARBr,ee LOGCM&`dd PAGESV  XREFSV  p"EFSV  p"BOOTSYSOL@ ?>>mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmTEDITSV     VG l, t 9 t%COPYRIGHT (C) DGC,1972,1973,1974 ALL RIGHTS RESERVEDEDIT REV 01.00 \8) ))az h  8 3S9X0 )    1q  9l 8KKCCCGCCCCCCCCCCC!G4 !E  PCCC)BKPCP  ):  C  !4 " )- ? S " )$ ? SSQ!"0 B 32! *3 *OFCOM.CMUY  (C#+ƥ)t 1#PC  k#)ePCC!] +!=G!0 B C 5)Y E)X 13 *3+P +1I   F!0 B D0Z""Ƃ2+J8PS!G (n#C)  ) +3 ))  ## +3 )*+  k#CCCC Z)c  U) )^ )\1XKK+PP;9K!QP8K :+K &)ˍ  ,)Ǎ  5)K/ (3 (# C7  ###C8S3 )1": -0I^@ >~~A VBCyD]E)F (G8H0IJxKTLMNPQRSTU5WEX=Y RZ:+=7.> # !- - -88   "C3 ) 1 *   "KYEHDRNSCZ?`H#  (1$` (#  (b3 (#  ("1` ( ( ( XK+  (+  (!` G+  /=3ۭ ? x  C ($#CRC))  p!n`)k` ()" k  + C 8S)  ($C[  R.SC0*8SCK):K)9KKC3 ))/ )) )) K3 *)K+ K3 S3 *#) K ($9.:8SCCPK3 )) !C3 )3 *3 *#C+ +  F+ߪ ? @3 ΅C3 C# %!`3 )? # 3 !`+ ] ' )`!`  CCCCC (41` (!` F)PC!`)a ) !`  ).BU %#C u3 *# 3 #C i3 * +K a3 *#+  3! *8S#+ 1#)-` ,+)&`K (P3 (9#C 53 *5# ? ? ) ? ? 8SCK!YC3 )1 C3 )1 +  8S3 )) 8C3 ) /C)+ ;)) 2+  (>) !) 8#3 ?#  3# # 03 4CCCCC OCRWI+ -3 "K(+% ( +3 CC!` " 9\ ?4\ ?4!` +ઃ#C 3)7 )?. ?K)4  (d҄)'  (')"  ($!CC3) )? ?)  (FC)  (8  3 (8C+#+ +C )K\Ґ"))88S3KPSK3 )+K u ) PK j 8S3    k 8S+38S3 8S3 ))* %# +#`1+ K+ 1 ( 1C (P? 8C#C#C 8D#CD8#D8C#P+)XL (#邊C )MC (#C!C ) ) )l  3 *  k3 *# )(5& ? ?1 (d#5 ?3P5 ? 3ҐB  918SC#C#C3 )) C3 ))3ǵ #C#C#C (8C'S C C3 ) +3 )+1 8S +C  p\Ґ:) Z88C#C   8C#C  #3SSC3 )3 *8C#C v#+эK  C  3 ))]8#8S#邐C+3 +3+1͠K+9P3S3KKʐ'G)#1/ 3 *3 ))Í 3 *#C3 )3 *#C (.#+3 SQ8CK##+ C #Ђ  8C#JPCȅC C  R8C#+C C #߂8C#@3ZPS3 ))P)L /+/)E 5#C#CK#+3KSCe S󂐍K'G#SG (#CCC3S ) +3+Ð?DM\8#+3+1 "P8C  C3 ) C)A # (0#PJ,+]+KC53 ) #3 ?#K3 )) 3 .?#ʂ # C 4 " WIK! O (3 ) +3 )) 8C#CKS#3+3 )1ו8#JS+UPP3)  )C˅  ! 3 ?  ( 98#8#S+ KK+8CCC 2 (N3 K#3 ?)K3 )3 )I   (N #+ʍ#߂3 * (K!$ !! !"  (!3 *!3 * (+Ϋ  ! ( k \8CS14# 19SC7 !01* K +3 !3 + ! 8K+  +3 * 'd 0 @+ 8C3 )1 *   (_ 5+ 8- ;O P! >? #C#+  3 )) )m !-#C!`C+ 3!^ *!`CCC C#C !18SC)I)D!?)' &): () K7S/K/7  KJ# *#+̦ %+!  !K+ !#) C!  $  \\8C! P3 3ڭP ? 98SP3!2P ? #)1ԧ 1 !C1"  +#3)1 1)3 S! % +ը! K +@Z<  f?f?TEXT BUFFER FULL DURING INSERT TEXT BUFFER FULL WHILE READING COMMAND BUFFER FULL;EXECUTING COMMAND ??PARITY,LINE # STR NOT FOUND MACRO UNDEFINED OR ERROR IN MACROOUTPUT FILE IN USE NO OUTPUT FILENO INPUT FILEFILE NAME IN USE-ILLEGAL FILE NAME-NO SUCH FILE-FILE CAN'T BE USED FOR INPUTFILE CAN'T BE USED FOR OUTPUTLINE TOO LONGDISK FILE READ ERRORSAVE COMMAND BUFFER?(1-YES, 0-NO) ENTER FILENAME ILLEGAL ARGUMENT IN COMMAND LINE SYSTEM ERROR # : INPUT IN USE!-OUTPUT IN FILE -RENAMING ERROR,OUTPUT IN -FILE IS IN USE!-INPUT FILE- UNKNOWN ERROR EXECUTION ABORTED EDITING FILE OPENED BY UY OR UN - USE UE,US OR UC TO CLOSE! ILLEGAL WINDOW WIDTH PAGE MODE LINES WIDE WINDOW MODE   ! )8#)/ +3 )!% 3## +C3 )Y83) ? u 8SC) ! #8) )W 3SPCC#3$ )  +C K## KK8+P#)*# !&)3 ? ##!P ߂ C3! P ? # b fj 9 V5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`SYS1NPDo\ff  PATCH DIALOG FILE DATE LAST PATCHED: 11/22/80 12:6:6 SAVE FILE PATCH INSTALLED AT LOCATION 55564 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 422 * SAVE FILE PATCH INSTALLED AT LOCATION 61 * OVERLAY FILE PATCH INSTALLED AT LOCATION 14436 * SAVE FILE PATCH INSTALLED AT LOCATION 51414 * SAVE FILE PATCH INSTALLED AT LOCATION 64 * SAVE FILE PATCH INSTALLED AT LOCATION 65 * SAVE FILE PATCH INSTALLED AT LOCATION  66 * SAVE FILE PATCH INSTALLED AT LOCATION 67 * SAVE FILE PATCH INSTALLED AT LOCATION 401 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 55013 * SAVE FILE PATCH INSTALLED AT LOCATION 57120 * SAVE FILE PATCH INSTALLED AT LOCATION 57123 15 APPLICABLE PATCH(ES) 14 PATCH(ES) NEEDED TO BE INSTALLED COMCM FDUMPMT0:3ATE LAST PATCHED: 11/22/80 12:6:6 SAVE FILE PATCH INSTALLED AT LOCATION 55564 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 422 * SAVE FILE PATCH INSTALLED AT LOCATION 61 * OVERLAY FILE PATCH INSTALLED AT LOCATION 14436 * SAVE FILE PATCH INSTALLED AT LOCATION 51414 * SAVE FILE PATCH INSTALLED AT LOCATION 64 * SAVE FILE PATCH INSTALLED AT LOCATION 65 * SAVE FILE PATCH INSTALLED AT LOCATION 6SYS1MPDpee  PATCH DIALOG FILE DATE LAST PATCHED: 11/21/80 12:5:25 SAVE FILE PATCH INSTALLED AT LOCATION 60641 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 422 * SAVE FILE PATCH INSTALLED AT LOCATION 61 * OVERLAY FILE PATCH INSTALLED AT LOCATION 14436 * SAVE FILE PATCH INSTALLED AT LOCATION 54471 * SAVE FILE PATCH INSTALLED AT LOCATION 64 * SAVE FILE PATCH INSTALLED AT LOCATION 65 * SAVE FILE PATCH INSTALLED AT LOCATION 66 * SAVE FILE PATCH INSTALLED AT LOCATION 67 * SAVE FILE PATCH INSTALLED AT LOCATION 401 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 60070 * SAVE FILE PATCH INSTALLED AT LOCATION 62175 * SAVE FILE PATCH INSTALLED AT LOCATION 62200 15 APPLICABLE PATCH(ES) 14 PATCH(ES) NEEDED TO BE INSTALLED E FILE PATCH INSTALLED AT LOCATION 64 * SAVE FILE PATCH INSTALLED AT LOCATION 65 * SAVE FILE PATCH INSTALLED AT LOCATION 6SEDITSV  jj 9 uDEE+ 1 ) B=pFq%.H2 ƅ5! A~A~A~A~A~EwEwA|A|A|A|A|A|A|A|A|A|AEAE z z3y1? 1r 1 q1 oo1| m9m)m1, y)g1f )e1e )d1d9dK9iI1H!^ҩ;ʐ9 +C!2)/ AA A A& BQAA )i)h12!2Q .t!* A g % &" )Y!ނR 'SB $A!$A1"!"Qԍ!!˂RQ̂SRQ1PQA!SRQQAA*t 1 A!A n!1 AA!A dPA A )A 1 V Y S1  O j36 +-@#= , $!/'_^[*]<%;:&\ I 55 i O y* ȅfo 'mQ5 %W-*=  5O ]1 !5< 5;   E9- 1 U0%31*J.@ -5JKҝ9v EE) 1ȵ)  ]13DY=%=1R2)R6=)3 *2PPJ\ 8@)I - P- $ ]ĎMM9 L K$ -) P* 138<AEHKOSX[ais{``g?g?g?``?``QEQ N=H-H12Ҝʧ G=C]A]:]?575"P e@@=߄EY5 X   S9 *K M   * # aDHJKMNORSWZ=:_;'&\ gnj\" S i S % % % % % % %Y  )1 !QE  } !E  !B  Y;=>  4=8 A9/\ (1 !  PI! P  )! $LPTERROR IN ACCESSING PRINTER $?U +ZOCLRSSCPBDZN#@ 0@@@ *E)A)Y'=&%YY|9~YI{%-1} D1t"q1m" Kh Kd*K` 9\W;9UYS@)O/ 9D*!DQGA="*9?5=6  -= 1-"%')59*!I ]Y#]%%A12!9!-)6 5 91!) @*. 5  1)93"B / A + " ݅P`QsY )2Y1 *: 9 % @`cg`?ȇHȇȀ???(?((?(h((h?(?88888xxxxxx     Y{A{ !zQy2Qx2)s w 1q){YjAj)p9vYkji=h  c9eY^1fQY [ 9W 6 | _ ~2 e0 b _ o R q P o N ; A d G f ` L!0 8)81-97IY 1)V S! -S # G I 0 @ # B * '@ " 2  "  H5) Ғ!+I +!Y " 9 #2R $!88OTO8Y ɫ   @1Q") ") #!J I I) ) 5)ޮZV )  O   Y 5 2 1I1 E%2 /1 E-* 'Y 0-#@ Wh E$)PI1-J) M)  M R-J1 ӐP  3*J ?Uo{\Z( C) IAb-N IC 8HF$FzȀU?igf[uf?rNezeZd?}]d[tc?7zcZb[sa?IcaZ``Iz`Nz@ \,{lc&f?`rN؂8 ؂GH3YF\zāH؄H֚HZ[ uHu새nZrȌZrOɄ8`HOԄ세d}TDžtH셈U4 HbHMH^Ȍ_zČ8`<8`՗2LϜ8` d87a>֦_؄ȿȪZN87bfx7\"t_HȑZȑZ8Pa?K_FȌ(eՀheƀhh(ghgfMf>(eςhFeςhFh(ghFgfGFfG(g~hFg~hFh(g{hFgfFf(Ugφ(sg(eĦ(hrh9hhfzhf憨gݎhhKhhKhKhhƨshΨFh֨hިh}h~h hNhhghhKfZh-h)(fhgL`doy`sL`<LbP x :d[`[`]o`u`!U#R $DQ-> *@@H:Z: < <NB^nn q H&H`'()+o`Z,Z.G`2""C"C"~"~";`";`"MF"wT" k" G`" L`" :b"bV"z"c"b"`"[`u"vE"C"C"b6">7">"b~"@"@"t`"b"" :"!q"%y"&M"'M"(9")b"*]"+z.","-L"."/@H"0"1B`"2C`"3-"4-"5 "6MW"7"8"9PA9 %:-=164Y2 B54Y-  2 00%/ %, 2 00]& (5#!AM ! !K EA 5U 2 1E AC '+- % -Q E- Y I @)! < <101)H u UW - -h E- "΅ E- Y !A ) Q*M PEA E%   2 # -Y%A l5!;Ҝ Ҕ% \Y%-'I"-! Y9 Ҝ-9911 ! ! :- JR0:[.?1%1"1"Q Y!7K!6J  YQ91 9911& 1 2@ 'd .H@( -+YI!1F9)D 9)B 9Y9C9@) 1 Q !1QY  !*Y!( Y  Y1))  A ! ! !  `<>! !    DONE. PI[ =TTAOYO!MK ^EN)R PIM!X X1G 1> 2 119)9 ! H)5 K E11 2 118 A3 !0 ? 7)$ : 4)'I'&1 2 1 0!)9/PYIMAA !1  =YP] % #* 2 ; +/\ (My-w [0 !v 1Ex/1o 1)u/vEm Ie lI_9\%^KP [ -R=OR 'V)GMHPP N1D!QP , 9? )~ - -!DP  9E% ), -.5'9)g)"QP5*)Z1S O. %! ! !  6$INSUFFICIENT MEMORY FOR OVLY TABLE ILLEGAL OVERLAY NODE NUMBER PROBLEMS OPENING OVERLAY FILE +LOY 8CKS14X381-0X#+30\9"Ɛ8\ (*!K )\ (! ړ3C ))COPYRIGHT (C) DGC,1977 ALL RIGHTS RESERVEDLICENSED MATERIAL-PROPERTY OF DATA GENERAL CORPORATION8.X!|8 1S ; !p "  )v )d1vIY)a!X1rAU!X q  p!Q )f g , 1^ t)W -)V - - -!/ &( 1H 1  A)1C 1A& SI#IZ!)JM JIM1 19C) !I 8  FCOM.CM@.VS ! !!  ! !    ! ! ! 0T~SEDIT REV 0.10 SOME PROBLEM READING SOURCE FILE: NO INPUT FILE NAME GIVEN IN COMMAND LINE HAD A PROBLEM OPENING FILE: NOT ENOUGH MEMORY FOR SYMBOL TABLE FILE NOT FOUND: FILE IS SEQUENTIAL: \ (@I-w9w J  4 ! )\ (@A-e9e J  3 )8C )! / \ (QJ0YK)K )@YD9>YI9<#)D#@15%A7+I41.;Q6#10Q1)/1!-!2J ,)( *1!9"'1!8SPY9 )) Y 9 ) X!!  )  NO OVERLAY LOADED ILLEGAL OVERLAY ADDRESS Y: @)!  IQ111%CAA!A  ?1()9:#!!;9YA ) K)1 U!!  ?9 dY P% ) 9)p5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`SYS2MPDpll! PATCH DIALOG FILE DATE LAST PATCHED: 11/28/80 0:32:56 SAVE FILE PATCH INSTALLED AT LOCATION 56264 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 422 * SAVE FILE PATCH INSTALLED AT LOCATION 61 * OVERLAY FILE PATCH INSTALLED AT LOCATION 14436 * SAVE FILE PATCH INSTALLED AT LOCATION 52114 * SAVE FILE PATCH INSTALLED AT LOCATION 64 * SAVE FILE PATCH INSTALLED AT LOCATION 65 * SAVE FILE PATCH INSTALLED AT LOCATION 66 * SAVE FILE PATCH INSTALLED AT LOCATION 67 * SAVE FILE PATCH INSTALLED AT LOCATION 401 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 55513 * SAVE FILE PATCH INSTALLED AT LOCATION 57620 * SAVE FILE PATCH INSTALLED AT LOCATION 57623 15 APPLICABLE PATCH(ES) 14 PATCH(ES) NEEDED TO BE INSTKALLED PDRdd $SYS5LB!@ h h  .GM4k$I@MqvMDM qM M qM D$$D@Zo @Zk @Zg D$$@Za *J*U9B"D$$R)* PJPKD$$O*K*8 UG Z B)2 PJ@Z=9D$$"8 Z5) J BB B.)PKK "D$$FFKKK"*:1 D$$T?!"): *J JKJ)D$$8bZ?"I$$*pBG18 KS#PD$$~C @Z:J) " BD$$qN J :i!;"J :#D$$Y`) :*KJ  :;K :D$$CÊ+C!#K :*K D$$J *K 9+ D$$! :#C :#++JL)d D$$2W *H)I D!0"K*D$$c "J  "" :K3!C*D$$ǵ "J#+#B  &D$$9@B*PJ0 8 ;"@C"D$$ס C"C*K2S;`Y8D$$oz` * *D$$&JB*J*KB0D$$~42J*J2J0D($B:!ƒ P# *:V1D$$MPJ K ? ?V 0 D$$^K ? ?K 0 *:CD$$Kl) ) !0@Z1 "D$$CNz !KB!0 :+BD$$4 +;  Z) ) !DD$O0!P0"J1 ?DD$wn?wBJR BP@D$y/0 2B"$IПAG!spI롓a _]Qꠃ lF`i ;CxCvU<%wD$$:\91" ]+ "+  !DD(eg!PST,T-UQ,EoIK,LKD(%JRP,IcUS,SQDR,YUUR,NnED,QH$$4K*S 9 ,P/1!* 0D$%i8 !K9* ! D$,yF 5 !/  D$%ѓT+ !N!"D$$ob0 H 9R(QD$$pI GCAe1 :  9D$$̲~Pq!n1* : D$$Hj9)!&Q8+J+J+ JD$$KH#JPJ! 0" 9D$$Tۨ 1B1B!L%$l>!2!: K8 PPD$$PPPPPS/ 3S+ KD$b;Y' K ]`X AD$$9A99S SK 1D$$^83Q (Y D$$9TSTA =P,IR = ONQ D$$I EUEUA ERAKOIT DON TCAITEVD$$NIUP TREORRLIOLIGAC LUQUED$&ERPGON TOF UODN$I$I$E!?N~F{l!+l!롓IVHLAIkIRP\顙C&?`G!GF.@ A _ag4$R IrG b I  P AN~!+l {l &?8`i ;CvCxU<vSbG$$.0`X  + 8)3S1E$$"!` 0 2 ZZX$$08 Y9PP1 9D$$*|1 z9w1 1 X$$Ԛ8XIA )#C)!X$FX39 `b[''oTX M1 Q 8+!KD$$Bb0! "</IC1+) , 0 2 -D$$}'p : 2*9 #)9D$$~J:YQ A! A! 1D%$mnj*!JT,*) D%t ! !  D$$ר0Y 83 Q*K )JBD%]v B @D$$]NIUP TREORRIT DON TOFNUD!D$$ P3I0Y7 89 1+I39D$$Y 2-9 $%9 9#)܆D$$g)SRRI Q9D$$w$) )1RSRD%$Ǩ29,J  8$IgAzlFNպa  _ΈtrHRaH`k H  H@O `iU<Cv ;Cx$ulG8$`X " 8+ *9 .F9D$$7* B9*J9*G$(J83)3S1BXĒ$b*8()#8+K$)KC !+G$$8K*9 8#!`D$8F 0 2PZ:Z P ? E$$t T*%ID 9Z*9J`bG$$ b X 0 2: 2 :D$$p ) ))JZ D(~` 0 2PZ:Z"`XXb;$ӌ   `X 0` Z  D$$O1X9 02*PPD$$Ǩ9*X9 !D'$ J0"9P `b[8GX 83@S I_pCպa#bA% _rֿ:D頙 }ie렓 `i ;CvCxU<vlG$$`X 3" $*X9 D$$UT9G9BH9@*G!DQE D$"h =1 !   )8D$%=*6!B5!B2"1&1(Y$9D$$r&8 "A"+  "+D$$9CFY; 9 +SJb  9QD$$TZ1(D$ubAIM 9  )D$$p3CS; !)9 D$$~3 3Y 83 *D$$CӌK J95)JZ#)BI+ D$$9v93) 1 J9 K+D$$  ;Y+1#D$$.]K3Q E$$x6P"  *20*D$$^ J **4! 0: JDb;$B `X   "J D'$*KB8S` BXD8d' 19 Q2 " )VH T$IIYz _@Zv A   `iU< ;CxCv$Cv'"SGؒ$& `X0#Y ;  V X'"/K0*g9JB18D$$<<1#M`X?g`D$$] *'Y2  !1 2: 2D$$8  :@@CZJD$$ߜFK 9K`11`[$$uTX `+ 0JS D$$Zb 0 2YI: 2 ) : )D$$}p  )Z)J Hf8RC _bAH@I H I I F `iU<CxCv ;$@5"3<dbG'$[`X +U 8S*BJPX$$8CN!B C*JD$\PK`X +2 2PD$b;e$*`9" B`X +Db;$8! !`X + )JPD$$\F`")99 B 8 +J2G$$bAT S11 Dؒ$b`X + `!:D$>spZ$I@ɔppczbAtpXC\Y _<ᬿ_@Rぬ@ 頒 頒 l_ CvCx ; vbG$$̮`X ):Z 8 ;+G8b;]   `X `X$8X 8 I +@ K)`IA$zpp _D| 退 `i즤Cv ;CxU<xlG$$`X + ) )`*K! D8$!J8)S3S10"H$$0!` 0 2Z:Z 2D$8!*  1 0 2P1Dк81HI@pp.n-/pC7պa _Ɵyr@ _y `iCxCv ;U<xbG$ y`X `+!K@ _o~$+@O 2@O%@O렓 xD$0 " @?d _4̔4v$I$DIz<պ@_'}{S֍ U<CU~nzjppb@պ`\@x#HR*N`o @v ;p 렓 (X("H*  H$$X 0 2Z>O9 1 `D$$ 0 2 9* 2 D$$/7) EHA0Q: *3X!D$$* <1 Z )K 1 8#)D$$_8  "b"`""@"&@*:YD$$^F:X 8 S":2`  0 ZD0$kT`XT *@SK+D$$ibK` 8 SI 0))>YD$$EpQ2 :91*KZ0D$$~I+Y 8+JS&Y1 8`D$$9 SY 8 ; ; D$$b*K * 8 K ) D$x)ڴ Y 8 ;XCKSD$$KC 02! b C`C" C& CBF$$c 80@C C#+`XD$$6 S)ďR _ 83 7*K8+D$$sQ@J+JB) J) #B Q$$[j` 8 + :  CD$$ Z JZ#)"B 8 +D J S`X C18SDƺ"@پ&D$$X&Y9 0 2  : 2DWq41@ƾ9D91E6!AA}iT _+x@Ԉ+x((H$$ 0 2*Z"*:X8:D$$12 !H`:Y:2`D$$HY8 ` 8 ;CKSD$$4*Z9(J+J@Z*JD$O88H`@A+ _[ԍ lF _r`[C }i _I\Ԣ7 xD P1 O _#A$vA8`A0@A( A  _Y4@Y E$$`T`R`P`N`L`D$$ΣJ`H`F`bAbIbQbY\Y>)D$$ 8!E8!+ +CK 3"D$$**::2 83kQ"1S*H +D$$8dI1 S+_I0K`(J)EI_!AD$$qFAB9P#GB+II7 "E($T6 +1  (9D$$b`-Y' (I& &)>9+# !) PD$$p  Y !D%$%~  /BdBI((m]`DD06 vD$$!A 0" %EJ D$$Fs %A1%P9B%HAD$$Ʈ1Q1/KW)19D$$Pş1* @1!9 D$$/I1'A1)P>]D$$pYA91!8)Z` 8D$$) K1S*H)K`!%@ % - 5D$$4  =Y =   D$%Y 9*C  !d$IH"E&uvwxycD$$ݶ4=1!1!= D$DOB Q*MW PAE^ *HE"%PQvz = uB5D$$v^)!J * 9I#) D$$¯l/ Y9SPC$! AD$$=z 19+! 91)D$$*!  3! AD%$%!C8Y !11 "ED$^8]AY) ,WAD$$S)2 &QAM)  YI 9D$H ) !  de01YE$$8<  3)@0)0A ^D$$=l1)A%! 1Y!D$$.A ,) QG1)$II")QeD"E$  ]! Y  DDD3 ONe=-D$$~}"P 1]Y95P DD$n0@@=PA !)51D$$k>]BY 1!AIE$$L ! !C AE1Q"AD$$ZAC EE~A~A~A~A~AD$(#+h}A}A}AA}AE|E|EW e -kD$$Bvr1r% ?1z9j)j9D$$%`_1f!;ʐD$$mX9+CG!G) R D$$dFAb ?QL)K):12H!Q* D$$m1A5A-2!* -A+!D$(_{R> SR; 1I"A[Y D$$;1*)*1 (!1 9A3*D%$YJDHI%zdoD$%bD}$ !1! BU?"I$$PeqUQ! !-9  D$$9)1  A- 1T D$$$Q!9 @41*K D$$NF,.  )1JAEL)!1D$$t:!H1)292ʶ D$$;HP)$ YIMD($V1 ݝ K$DD$/d -- PPD$$@rBBBC )DI% -{ 86D$$xsEqAqYp=ooYnYn9nYnIe%D$$Re-l1 8d1"q]1"_D$$Y ;U*KQU9MD$$ 0LYK)+ C9*D!D$$ UDQ' C -K"@)K D$$thCETMWLQABDFNYRD$$VJSKP=:_;'&?u$I$I$Iy5:]胩$I$IH]D$$I>QQQQQQQH$DƺQ?f?f?f?f?f?f?f?f   E$HP  P`UR5'D$$"T5$M9 ! QE N5D$$X0LUH @) D ?UY > 95)D$$}>   .5,1D$%'L *5 # "E%(E$ $ -# H$$hZv!ZE%R SR  5PDD"EhEp U"HI$$9v.E% ^I$$.΄Y  Y5-D$$-)  A! ! !D"E$j($s`e]<> TD$$y8 4!U U  f R /!O O  O1D$H _ K K!H H  H1R 8HYH1~gD$$v}tCBYB1~gt=xY 51~gD$$`~g}t nnY~ga(1BhFD$$MTg%  !  ,   D$$[!  1"  SQ ! D)( 1 edS @E@D$$m;Y3!/AP1I5Y-!)A5!+AP0Q D$$zg#%A)*1" !)D$$/1#1" 1 ! AD$$?)" "I$$UM^U012345D$$)E[6789ABCDEF$I$I$Ii$I$I$Iܹw$I$%H ppZOCD$$gLRSSCPBDZND$$f#@ 0@@D$$ޯ@D$$``gD$$?g?g??D$$s;oU{\Z(D$$U C) I ICD$$A D$$#8HD$$F$FzȓD$$:?Uigfu[?fD$$*-NrezeZ?d}]dt[?cD$$%;7zcZbs[?aIcaZD$$I``Iz`Nz@ D$$WW,\l{D$$=e`Ldo`ys`L<D$$aWsLbP xuD$$Ё :d`[D$$]`[]`o`u!U# RD$$,- >*@@H:D$$hCZ: < <D$$TNB^nD$$<n qH&`HD$$'()+`oZ,D$$}LZ.`G2""C"CD$$UR"~"~"`;"`;"MD$$eF"wT "k "`G "`L "D$$r :b"bV"z"c"bD$$/# "`"`[u"vE"C"CD$$) "b6">7">"b~"D$$7 @"@"`t"b"D$$DSE ":!"q%"y&"M'"MD$$1mS ("9)"b*"]+"z.,"D$$ca -"L."/"@H0"D$$o 1"`B2"`C3"-4"-5" D$$R} 6"MW7"8"9":"D$$- `P ` 0 2*Z "*:X:D$j Y:2`!@P D$$# `Y 8 ;CKS1(KK*KD$$$c @S+KOCYPIRHG(T)CD$$fp GD,C91271,79,391471,79A5LLR D$-k GITH SERESVRDE _ PLCNAKAT2892PROGRAM T27(INPUT,OUTPUT); TYPE ALPHA = ARRAY [1..35] OF CHAR; VAR IOCH,BYTES,ERROR : INTEGER ; BUFFER : ALPHA; FILEEND : BOOLEAN; PROCEDURE OPEN ( VAR FILENO : INTEGER ; FILENAME : ALPHA ; VAR ERRORNUMBER : INTEGER );EXTERNAL; FUNCTION ENDL ( IOCHANNEL : INTEGER ):BOOLEAN;EXTERNAL; FUNCTION ENDF ( IOCHANNEL : INTEGER ) : BOOLEAN;EXTERNAL; PROCEDURE RDLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : INTEGER ; VAR ERRORNUM : INTEGER );EXTERNAL; PROCEDURE WRLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESWROTE : INTEGER ; VAR ERRORNUMBER : INTEGER );EXTERNAL; BEGIN OPEN (IOCH,'FOBAR',ERROR); WRITELN (OUTPUT,'OPEN, IOCH=',IOCH,' ERROR=',ERROR); BYTES := 127; FILEEND := ENDF(IOCH); CASE FILEEND OF FALSE : BEGIN RDLI (IOCH,BUFFER,BYTES,ERROR); WRITELN(OUTPUT,' RDLI, IOCH=',IOCH,'BYTES=',BYTES,'ERROR=',ERROR); WRLI(2,BUFFER,BYTES,ERROR); WRITELN(OUTPUT,' 2,ERROR=',ERROR); END; TRUE : WRITELN(OUTPUT,' FILE ENDS'); END END. POSTFIXPX )<POSTFIX Copyright (C) 1980 Rational Data Systems )֥إ   "(á ֥$*/Í֥!,+-Í֥!,ƀƀƀOUTPUT@INPUTƀ֥́ʁ ֥.á ƀ65~ = 'PROCEDURE '; KEYWORD [ LABELSYM ] := 'LABEL '; KEYWORD [ CONSTSYM ] := 'CONST '; KEYWORD [ TYPESYM ] := 'TYPE '; KEYWORD [ VARSYM ] := 'VAR '; KEYWORD [ BEGINSYM ] := 'BESEQ01 ; READ SEQUENTIAL SUBRUTINE ; CALL VIA..... ; ; RDSQ(IOCHANNEL:INTEGER; BUFFER:ARRAY OF CHAR OR INTEGER; ; NBYTES:INTEGER; VAR NBYTESREAD:INTEGER; ; VAR ERROR:INTEGER) ; CONTENTS OF DESCRIPTION ; AC3 ERROR BYTE ADDRESS IS ON THE STACK ; AC3-1 NBYTESREAD BYTE ADDRESS IS ON THE STACK ; AC3-3 NBYTES INTEGER VARIABLE ON STACK ; AC3-4 BUFFER BYTE ADDRESS ON STACK ; AC3-5 IOCHANNEL INTEGER VALUE ON STACK .TITL SEQ .ENT ?RDSQ .EXTN XPRET .NREL ERROR=0 NBRED=ERROR-1 NBYTES=NBRED-1 BUFFER=NBYTES-1 IOCHAN=BUFFER-1 ?RDSQ: STA 3,USP ;SET UP USER STACK POINTER LDA 2,IOCHANNEL,3 ;GET CHANNEL NO LDA 1,NBYTES,3 ;GET NO OF BYTES TO READ IN LDA 0,BUFFER,3 ;GET BUFFER POINTER .SYSTM .RDS CPU JMP .+2 ;JUMP AROUND IF NOT OK ADC 2,2 ;GENERATE -1 OF NO ERRORS MOV 2,0 LDA 2,ERROR,3 ;GET ERROR BYTE ADDRESS MOVZR 2,2 ;MAKE IT AN ADDRESS STA 0,0,2 ;RETURN ERROR (IF ANY) TO PASCAL LDA 2,NBRED,3 ;GET BYTE ADDRESS OF NBRED MOVZR 2,2 ;MAKE IT AN ADDRESS STA 1,0,2 ;SEND NBRED TO PASCAL SUBO 1,1 ;WARN XPRET PROCEDURE RETURNS XPRET ; WRITE SEQUENTIAL SUBRUTINE ; CALL VIA..... ; ; WRSQ(IOCHANNEL:INTEGER; BUFFER:ARRAY OF CHAR OR INTEGER; ; NBYTES:INTEGER; VAR NBYTESWROTE:INTEGER; ; VAR ERROR:INTEGER) ; CONTENTS OF DESCRIPTION ; AC3 ERROR BYTE ADDRESS IS ON THE STACK ; AC3-1 NBYTESWROTE BYTE ADDRESS IS ON THE STACK ; AC3-3 NBYTES INTEGER VARIABLE ON STACK ; AC3-4 BUFFER BYTE ADDRESS ON STACK ; AC3-5 IOCHANNEL INTEGER VALUE ON STACK .ENT ?WRSQ ERROR=0 NBWRO=ERROR-1 NBYTES=NBWRO-1 BUFFER=NBYTES-1 IOCHAN=BUFFER-1 ?WRSQ: STA 3,USP ;SET UP USER STACK POINTER LDA 2,IOCHANNEL,3 ;GET CHANNEL NO LDA 1,NBYTES,3 ;GET NO OF BYTES TO WRITE OUT LDA 0,BUFFER,3 ;GET BUFFER POINTER .SYSTM .WRS CPU JMP .+2 ;JUMP AROUND IF NOT OK ADC 2,2 ;GENERATE -1 OF NO ERRORS MOV 2,0 LDA 2,ERROR,3 ;GET ERROR BYTE ADDRESS MOVZR 2,2 ;MAKE IT AN ADDRESS STA 0,0,2 ;RETURN ERROR (IF ANY) TO PASCAL LDA 2,NBWRO,3 ;GET BYTE ADDRESS OF NBWRO MOVZR 2,2 ;MAKE IT AN ADDRESS STA 1,0,2 ;SEND NBWRO TO PASCAL SUBO 1,1 ;WARN XPRET PROCEDURE RETURNS XPRET ; ; READBYTE.......CALL VIA ; RBYTE(IOCHANNEL,BUFFER,ERROR) ; ; PROCEDURE RBYTE(IOCHAN:INTEGER;VAR BUFFER:ARRAY[1.10] OF INTEGER; ; VAR ERROR:INTEGER);EXTERNAL; .ENT ?RBYTE ERROR=0 BUFFER=-1 IOCHAN=-2 ?RBYTE: STA 3,USP SUBZL 1,1 ;ONE BYTE TO READ LDA 0,BUFFER,3 ;POINTER TO LHBYTE OF BUFFER INC 0,0 ;INCREMENT BY ONE LDA 2,IOCHAN,3 ;CHANNEL IN AC2 .SYSTM .RDS CPU ;READ ONE BYTE INTO RHB OF BUFFER JMP .+2 ADC 2,2 ;GENERATE -1 FOR NO ERRORS MOV 2,0 ;ERROR CODE IN AC0 NOW LDA 2,ERROR,3 ;GET ERROR POINTER MOVZR 2,2 ;MAKE IT ADDRESS STA 0,0,2 ;RETURN ERROR TO PASCAL SUBO 1,1 XPRET ;0 AC0 AND RETURN TO PASCAL ; ; ; WBYTE(IOCHANNEL,BUFFER,ERROR) ; PROCEDURE WBYTE(IOCH:INTEGER;VAR BUFFER:INTEGER;VAR ERROR:INTEGER); ; EXTERNAL; ; WRITES ONE RHBYTE TO IOCHANNEL ; .ENT ?WBYTE ERROR=0 BUFFER=-1 IOCH=-2 ?WBYTE: STA 3,USP SUBZL 1,1 ;GENERATE 1 BYTE TO WRITE LDA 0,BUFFER,3 ;POINTER TO BUFFER BEGINNING (LHBYTE) INC 0,0 ;MAKE IT RHBYTE LDA 2,IOCH,3 ;GET CHANNEL NO .SYSTM .WRS CPU JMP .+2 ADC 2,2 MOV 2,0 ;ERROR IN AC0 NOW LDA 2,ERROR,3 ;GET ERROR POINTER MOVZR 2,2 ;MAKE ADDRESS STA 2,0,3 ;RETURN ERROR TO PASCAL SUBO 1,1 ;0 TO SAY PROCEDURE RETURNING XPRET .END CBOOK 7q PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK,ERRORENTRY); FIELD = RECORD KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE INTEGER OF 1 : (IMREAL : REAL); 2 : (IMINT : INTEGER); 3 : (IMSTR : STRING[10]) END;{RECORD} VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; LOGFILE,OUTFILE,INFILE : TEXT; NEXTFIELD : FIELD; NFIELD,CATEGORY : INTEGER; N : ARRAY [4..7] OF INTEGER; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} {$I GETFIELD.PI} PROCEDURE ERROR; BEGIN WRITELN(OUTFILE,' ERROR',STR); END;{error} PROCEDURE C1HECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(OUTFILE,' CK ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(OUTFILE,' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(OUTFILE,' DP ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); REALPRINT(OUTFILE,NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(OUTFILE,' CM ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); REALPRINT(OUTFILE,NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(OUTFILE,' DM ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(OUTFILE,' CC ',CHECKNUMBER : 10); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' EM ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' WH ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN ENTRY := ERRORENTRY; CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(LINE[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(LINE[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE OPENFILES; BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); FILETITLE(LOGFILE,'LOGFILE'); RESET(LOGFILE); WRITE('ENTER START AND END CATEGORY'); READLN(N[4],N[6]); WRITE('ENTER START AND END PAGE'); READLN(N[5],N[7]); END; {OPENFILES} PROCEDURE INITIALIZE; BEGIN BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; END;{INITIALIZE} PROCEDURE HEADER1; BEGIN WRITELN(OUTFILE,' KEY TO TRANSACTION TYPES'); WRITELN(OUTFILE,' C CHECK CC CANCELLED CHECK'); WRITELN(OUTFILE,' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN(OUTFILE,' DP DEPOSIT BL FORCED BALANCE'); WRITELN(OUTFILE,' EM EMPLOYEE CK WH WITHOLDING CHECK'); END;{HEADER1} PROCEDURE HEADER2; BEGIN WRITELN(OUTFILE); WRITELN(OUTFILE,' TYPE CHECK DEBIT CREDIT BALANCE'); END;{HEADER1} BEGIN OPENFILES; INITIALIZE; HEADER1; WRITELN(OUTFILE); FOR NFIELD :=4 TO 5 DO BEGIN FOR CATEGORY := N[NFIELD] TO N[NFIELD+2] DO BEGIN INITIALIZE; WRITELN(OUTFILE); WRITELN(OUTFILE,'CATEGORY',CATEGORY,'FIELD',NFIELD); HEADER2; RESET(INFILE); WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); WRITELN(LOGFILE,STR); GETFIELD(STR,NFIELD,NEXTFIELD); IF NEXTFIELD.KIND = IAMINTEGER THEN IF NEXTFIELD.IMINT = CATEGORY THEN BEGIN GETENTRYTYPE(STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; ERRORENTRY : ERROR; END;{case} WRITELN(OUTFILE); END; END; WRITELN(OUTFILE);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTALS '); REALPRINT(OUTFILE,TOTALDEBITS);REALPRINT(OUTFILE,TOTALCREDITS); REALPRINT(OUTFILE,NEWBALANCE); WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL CHECKS ');REALPRINT(OUTFILE,TOTALCHECKS);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL DEPOSITS');REALPRINT(OUTFILE,TOTALDEPOSITS); END; WRITELN('END1'); END; WRITELN('END2'); END. 1978EMP08(f E 593 960.21 E 595 645.08 E 597 430.98 E 598 343.31 W 600 1863.74 W 602 850.20 E 603 796.26 E 604 802.32 E 605 379.26 E 606 542.91 E 607 283.06 E 608 180.93 E 609 282.18 E 615 369.00 W 617 2861.14 WRITESTRINPI)PROCEDURE WRITESTRING(LINE : LINESTRING); {NOTE WRITESTRING DOES NOT OUTPUT A LINE FEED} {TYPE LINESTRING = RECORD LEN : INTEGER STRING LENGTH STR : PACKED ARRAY[1..132] OF CHAR} VAR I,POSITION : INTEGER; PROCEDURE OUTPUTTAB(VAR POSITION : INTEGER); VAR I,MOVESRT : INTEGER; BEGIN {WRITE(' <',ORD(LINE.STR[I]),'>');} MOVESRT := 8-POSITION MOD 8; POSITION := POSITION + MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); END; {OUTPUT TAB} BEGIN POSITION := 1; WITH LINE DO BEGIN FOR I := 1 TO LEN DO BEGIN IF STR[I] IN [' '..']'] THEN BEGIN { WRITE(' <',LINE.STR[I],'>');} PCHAR(ORD(STR[I])); POSITION := POSITION+1; END ELSE CASE ORD(STR[I]) OF {TAB} 9 : OUTPUTTAB(POSITION); {CR} 13 : PCHAR(13) END{CASE} END;{FOR DO} END;{WITH} END;{WRITE STRING} CONSOLEMC`qr CHATR CONSOLE.PA 0 CHATR CONSOLE.PX 0 DELETE/V CONSOLE.PA XFER CONSOLE CONSOLE.PA/R PASINTERP PASCALO/S/V CONSOLE CHATR CONSOLE.PA *WP CHATR CONSOLE.PX *WP ALMSPDRB+;;*a#GHT$$${GH#GH`#GH@#GH #GH@GH GHGHGHGHGHGH`GH@GH GH@$$$GH GHGHGHGHGHGH`GH@GH GH@GH GHGHGHGH$$$\GHGH`GH@GH GH@GH GHGHGHGHGHGH`GH@GH GH@ $$$GH GH GH GH GH GH GH` GH@ GH GH@GH GHGHGHGH$!GH$GH`GH@GH  _INTERPOKPX?? 8RINTERPOK Copyright (C) 1980 Rational Data Systems  8% ?OUTPUT֥֦Interpreter OKʀ J, ?OUTPUT֥֦Interpreter OKʀ JT38R0(* T38 SUBSTRING TESTER*) PROGRAM T38 (INPUT,OUTPUT); TYPE STRING = ARRAY[1..10] OF INTEGER; VAR OUT,NBYTESREAD,ERROR,NBROTE,ST1S,ST1F,ST2S,ST2F,TTI,TTO : INTEGER; STRING2,STRING1 : STRING; PROCEDURE RDLI (CHANNEL:INTEGER; VAR BUFFER:STRING; VAR NBYTESREAD:INTEGER; VAR ERROR:INTEGER);EXTERNAL; PROCEDURE SUBSTR(VAR ST1:STRING;ST1S:INTEGER;ST1F:INTEGER; VAR ST2:STRING;ST2S:INTEGER;MAXBYTE:INTEGER);EXTERNAL; PROCEDURE WRSQ(CHANNEL:INTEGER VAR BUFFER:STRING; NBYTES:INTEGER; VAR NBWROTE:INTEGER; VAR ERROR:INTEGER);EXTERNAL; BEGIN WRITELN(OUTPUT,' ENTER STRING'); RDLI (1,STRING1,NBYTESREAD,ERROR); WRITELN(OUTPUT,' NBYTES=',NBYTESREAD); SUBSTR(STRING1,0,NBYTESREAD,STRING2,0,19); IF NBYTESREAD < 20 THEN OUT := NBYTESREAD ELSE OUT := 20; WRITELN(OUTPUT); WRSQ(2,STRING2,OUT,NBROTE,ERROR); WRITELN(OUTPUT); END. PRETTYPA[3 '(*************************************************************************** PROGRAM TITLE: PASCAL PRETTYPRINTING PROGRAM AUTHORS: JON F. HUERAS AND HENRY F. LEDGARD COMPUTER AND INFORMATION SCIENCE DEPARTMENT UNIVERSITY OF MASSACHUSETTS, AMHERST - AUGUST, 1976 (EARLIER VERSIONS AND CONTRIBUTIONS BY RANDY CHOW AND JOHN GORMAN). BUGS CORRECTD BY CHARLES FISCHER, DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF WISCONSIN, MADISON. 1977. INDICATED BY <<< . MODIFIED FOR CDC-6000 PASCAL RELEASE 3 BY RICK L. MARCUS UNIVERSITY COMPUTER CENTER, UNIVERSITY OF MINNESOTA. 30 SEPTEMBER 1978. PROGRAM SUMMARY: THIS PROGRAM TAKES AS INPUT A PASCAL PROGRAM AND REFORMATS THE PROGRAM ACCORDING TO A STANDARD SET OF PRETTYPRINTING RULES. THE PRETTYPRINTED PROGRAM IS GIVEN AS OUTPUT. THE PRETTYPRINTING RULES ARE GIVEN BELOW. AN IMPORTANT FEATURE IS THE PROVISION FOR THE USE OF EXTRA SPACES AND EXTRA BLANK LINES. THEY MAY BE FREELY INSERTED BY THE USER IN ADDITION TO THE SPACES AND BLANK LINES INSERTED BY THE PRETTYPRINTER. NO ATTEMPT IS MADE TO DETECT OR CORRECT SYNTACTIC ERRORS IN THE USER'S PROGRAM. HOWEVER, SYNTACTIC ERRORS MAY RESULT IN ERRONEOUS PRETTYPRINTING. INPUT FILE: INPUT - A FILE OF CHARACTERS, PRESUMABLY A PASCAL PROGRAM OR PROGRAM FRAGMENT. OUTPUT FILE: OUTPUT - THE PRETTYPRINTED PROGRAM. ************************************************************************** ************************************************************************** PASCAL PRETTYPRINTING RULES GENERAL PRETTYPRINTING RULES 1. ANY SPACES OR BLANK LINES BEYOND THOSE GENERATED BY THE PRETTYPRINTER ARE LEFT ALONE. THE USER IS ENCOURAGED, FOR THE SAKE OF READABILITY, TO MAKE USE OF THIS FACILITY. IN ADDITION, COMMENTS ARE LEFT WHERE THEY ARE FOUND, UNLESS THEY ARE SHIFTED RIGHT BY PRECEEDING TEXT ON A LINE. 2. ALL STATEMENTS AND DECLARATIONS BEGIN ON SEPARATE LINES. 3. NO LINE MAY BE GREATER THAN 72 CHARACTERS LONG. ANY LINE LONGER THAN THIS IS CONTINUED ON A SEPARATE LINE. 4. THE KEYWORDS "BEGIN", "END", "REPEAT", AND "RECORD" ARE FORCED TO STAND ON LINES BY THEMSELVES (OR POSSIBLY FOLLOWED BY SUPPORTING COMMENTS). IN ADDITION, THE "UNTIL" CLAUSE OF A "REPEAT-UNTIL" STATEMENT IS FORCED TO START ON A NEW LINE. 5. A BLANK LINE IS FORCED BEFORE THE KEYWORDS "PROGRAM", "PROCEDURE", "FUNCTION", "LABEL", "CONST","TYPE", AND "VAR". 6. A SPACE IS FORCED BEFORE AND AFTER THE SYMBOLS ":=" AND "=". ADDITIONALLY, A SPACE IS FORCED AFTER THE SYMBOL ":". NOTE THAT ONLY "="S IN DECLARATIONS ARE FORMATTED. "="S IN EXPRESSIONS ARE IGNORED. <<<. INDENTATION RULES 1. THE BODIES OF "LABEL", "CONST", "TYPE", AND "VAR" DECLARATIONS ARE INDENTED FROM THEIR CORRESPONDING DECLARATION HEADER KEYWORDS. 2. THE BODIES OF "BEGIN-END", "REPEAT-UNTIL", "FOR", "WHILE", "WITH", AND "CASE" STATEMENTS, AS WELL AS "RECORD-END" STRUCTURES AND "CASE" VARIANTS (TO ONE LEVEL) ARE INDENTED FROM THEIR HEADER KEYWORDS. 3. AN "IF-THEN-ELSE" STATEMENT IS INDENTED AS FOLLOWS: IF THEN ELSE **************************************************************************** **************************************************************************** GENERAL ALGORITHM THE STRATEGY OF THE PRETTYPRINTER IS TO SCAN SYMBOLS FROM THE INPUT PROGRAM AND MAP EACH SYMBOL INTO A PRETTYPRINTING ACTION, INDEPENDENTLY OF THE CONTEXT IN WHICH THE SYMBOL APPEARS. THIS IS ACCOMPLISHED BY A TABLE OF PRETTYPRINTING OPTIONS. FOR EACH DISTINGUISHED SYMBOL IN THE TABLE, THERE IS AN ASSOCIATED SET OF OPTIONS. IF THE OPTION HAS BEEN SELECTED FOR THE SYMBOL BEING SCANNED, THEN THE ACTION CORRESPONDING WITH EACH OPTION IS PERFORMED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. ***************************************************************************** *) PROGRAM PRETTYPRINT ( (* FROM *) INPUT, (* TO *) OUTPUT ); CONST MAXSYMBOLSSIZE = 200; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A*) (* SYMBOL SCANNED BY THE LEXICAL SCANNER. *) MAXSTACKSIZE = 100; (* THE MAXIMUM NUMBER OF SYMBOLS CAUSING *) (* INDENTATION THAT MAY BE STACKED. *) MAXKEYLENGTH = 10; (* THE MAXIMUM LENGTH (IN CHARACTERS) OF A *) (* PASCAL RESERVED KEYWORD. *) MAXLINESIZE = 72; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A *) (* LINE OUTPUT BY THE PRETTYPRINTER. *) SLOFAIL1 = 30; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT2". BEYOND *) (* THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE - ''; TYPE KEYSYMBOL = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, CRAFTER ); OPTIONSET = SET OF OPTION KEYSYMSET = SET OF KEYSYMBOL; TABLEENTRY = RECORD OPTIONSELECTED : OPTIONSET; DINDENTSYMBOLS : KEYSYMSET; GOBBLETERMINATORS : KEYSYMSET END; OPTIONTABLE = ARRAY [ KEYSYMBOL ] OF TABLEENTRY; KEY = PACKED ARRAY [ 1..MAXKEYLENGTH ] OF CHAR; KEYWORDTABLE = ARRAY [PROGSYM..UNTILSYM ] OF KEY; SPECIALCHAR = PACKED ARRAY [ 1..2 ] OF CHAR; DBLCHRSET = SET OF BECOMES..OPENCOMMENT; DBLCHARTABLE = ARRAY [ BECOMES..OPENCOMMENT ] OF SPECIALCHAR; SGLCHARTABLE = ARRAY [ SEMICOLON..PERIOD ] OF CHAR; STRING = ARRAY [ 1..MAXSYMBOLSIZE ] OF CHAR; SYMBOL = RECORD NAME : KEYSYMBOL; VALU : STRING; LENGTH : INTEGER; SPACESBEFORE : INTEGER; CRSBEFORE : INTEGER END; SYMBOLINFO = ^SYMBOL; CHARNAME = ( LETTER, DIGIT, BLANK, QUOTE, ENDOFLINE, FILEMARK, OTHERCHAR ); CHARINFO = RECORD NAME : CHARNAME; VALU : CHAR END; STACKENTRY = RECORD INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER END; SYMBOLSTACK = ARRAY [ 1..MAXSTACKSIZE ] OF STACKENTRY; VAR RECORDSEEN: BOOLEAN; CURRCHAR, NEXTCHAR: CHARINFO; CURRSYM, NEXTSYM: SYMBOLINFO; CRPENDING: BOOLEAN; PPOPTION: OPTIONTABLE; KEYWORD: KEYWORDTABLE; DBLCHARS: DBLCHRSET; DBLCHAR: DBLCHARTABLE; SGLCHAR: SGLCHARTABLE; STACK: SYMBOLSTACK; TOP, STARTPOS, (*STARTING POSITION OF LAST SYMBOL WRITTEN <<< *) CURRLINEPOS, CURRMARGIN : INTEGER; PROCEDURE GETCHAR ( (* FROM INPUT *) (* UPDATING *) VAR NEXTCHAR : CHARINFO; (* RETURNING *) VAR CURRCHAR : CHARINFO ); BEGIN (* GETCHAR *) CURRCHAR := NEXTCHAR; WITH NEXTCHAR DO BEGIN IF EOF(INPUT) THEN NAME := FILEMARK ELSE IF EOLN(INPUT) THEN NAME := ENDOFLINE ELSE IF INPUT^IN ['A'..'Z'] THEN NAME := DIGIT ELSE IF INPUT^IN ['O'..'9'] THEN NAME := DIGIT ELSE IF INPUT^= '''' THEN NAME := QUOTE ELSE IF INPUT^= SPACE THEN NAME := BLANK ELSE NAME := OTHERCHAR; IF NAME IN [ FILEMARK, ENDOFLINE ] THEN VALU := SPACE ELSE VALU := INPUT^; IF NAME <> FILEMARK THEN GET(INPUT) END (*WITH*) END; (* GETCHAR *) PROCEDURE STORENEXTCHAR (* FROM INPUT *) (* UPDATING *) VAR LENGTH : INTEGER; VAR CURRCHAR, NEXTCHAR : CHARINFO; :( PLACING IN *) VAR VALU : STRING ); BEGIN (* STORENEXTCHAR *) GETCHAR( (* FROM INPUT *) (* UPDATING *) NEXTCHAR, (* RETURNING *) CURRCHAR ); IF LENGTH < MAXSYMBOLSIZE THEN BEGIN LENGTH := LENGTH + 1; VALU [LENGTH] := CURRCHAR.VALU END END; (*STORENEXTCHAR *) PROCEDURE SKIPSPACES ( (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR SPACESBEFORE, CRSBEFORE : INTEGER ); BEGIN (* SKIPSPACES *) SPACESBEFORE := 0; CRSBEFORE := 0; WHILE NEXTCHAR.NAME IN [ BLANK, ENDOFLINE ] DO BEGIN GETCHAR( (* FROM INPUT *) (* UPDATING *) NEXTCHAR, :( RETURNING *) CURRCHAR ); CASE CURRCHAR.NAME OF BLANK, : SPACESBEFORE := SPACESBEFORE+1; ENDOFLINE : BEGIN CRSBEFORE := CRSBEFORE+1; SPACESBEFORE := 0 END END (* CASE *) END (* WHILE *) END; (* SKIPSPACES *) PROCEDURE GETCOMMENT ( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GET COMMENT *) NAME := OPENCOMMENT; WHILE NOT ( ((CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')')) OR (NEXTCHAR.NAME = ENDOFLINE) OR (NEXTCHAR.NAME = FILEMARK)) DO STORENEXTCHAR ( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); IF (CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')') THEN BEGIN STOENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, :( IN *) VALU ); NAME := CLOSECOMMENT END; (* GETCOMMENT *) FUNCTION IDTYPE( (* OF *) VALU : STRING; (* USING *) LENGTH : INTEGER ) (* RETURNING *) : KEYSYMBOL; VAR I: INTEGER; (* TED, THIS NEXT SECTION ARE SMALL I';S - JG *) KEYVALU: KEY; HIT: BOOLEAN; THISKEY: KEYSYMBOL; BEGIN (* IDTYPE *) IDTYPE := OTHERSYM; IF LENGTH <= MAXKEYLENGTH THEN BEGIN FOR I := 1 TO LENGTH DO KEYVALU [I] := VALU [I]; FOR I := LENGTH+1 TO MAXKEYLENGTH DO KEYVALU [I] := SPACE; THISKEY := PROGSYM; HIT := FALSE; WHILE NOT(HIT OR (THISKEY = SUCC(UNTILSYM))) DO IF KEYVALU = KEYWORD [THISKEY] THEN HIT := TRUE ELSE THISKEY := SUCC(THISKEY); IF HIT THEN IDTYPE := THISKEY END; END; (* IDTYPE *) PROCEDURE GETIDENTIFIER ( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; :( RETURNING *) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETIDENTIFIER *) WHILE NEXTCHAR.NAME IN [ LETTER,DIGIT ] DO STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); NAME := IDTYPE( (* OF *) VALU, (* USING *) LENGTH ); IF NAME IN [ RECORDSYM, CASESYM, ENDSYM ] THEN CASE NAME OF RECORDSYM : RECORDSEEN := TRUE; CASESYM : IF RECORDSEEN THEN NAME := CASEVARSYM; ENDSYM : RECORDSEEN := FALSE END (* CASE *) END; (* GETIDENTIFIER *) PROCEDURE GETNUMBER( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETNUMBER *) WHILE NEXTCHAR.NAME = DIGIT DO STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); NAME := OTHERSYM END; (* GETNUMBER *) PROCEDURE GETCHARLITERAL( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETCHARLITERAL *) WHILE NEXTCHAR.NAME = QUOTE DO BEGIN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); WHILE NOT(NEXTCHAR.NAME IN [ QUOTE, ENDOFLINE, FILEMARK ]) DO STORENEXTCHAR( (*FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); IF NEXTCHAR.NAME = QUOTE THEN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ) END; NAME := OTHERSYM END; (* GETCHARLITERAL *) FUNCTION CHARTYPE( (* OF *) CURRCHAR, NEXTCHAR : CHARINFO ) (* RETURNING *) : KEYSYMBOL; VAR NEXTTWOCHARS: SPECIALCHAR; HIT: BOOLEAN; THISCHAR: KEYSYMBOL; BEGIN (* CHARTYPE *) NEXTTWOCHARS[1] := CURRCHAR.VALU; NEXTTWOCHARS[2] := NEXTCHAR.VALU; THISCHAR := BECOMES; := FALSE; WHILE NOT(HIT OR (THISCHAR = CLOSECOMMENT)) DO IF NEXTTWOCHARS = DBLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR); BEGIN (* GETCHARLITERAL *) WHILE NEXTCHAR.NAME = QUOTE DO BEGIN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); WHILE NOT(NEXTCHAR.NAME IN [ QUOTE, ENDOFLINE, FILEMARK ]) DO STORENEXTCHAR( (*FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); IF NEXTCHAR.NAME = QUOTE THEN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ) END; NAME := OTHERSYM END; (* GETCHARLITERAL *) FUNCTION CHARTYPE( (* OF *) CURRCHAR, NEXTCHAR : CHARINFO ) (* RETURNING *) : KEYSYMBOL; VAR NEXTTWOCHARS: SPECIALCHAR; HIT: BOOLEAN; THISCHAR: KEYSYMBOL; BEGIN (* CHARTYPE *) NEXTTWOCHARS[1] := CURRCHAR.VALU; NEXTTWOCHARS[2] := NEXTCHAR.VALU; THISCHAR := BECOMES; := FALSE; WHILE NOT(HIT OR (THISCHAR = CLOSECOMMENT)) DO IF NEXTTWOCHARS = DBLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR); IF NOT HIT THEN BEGIN THISCHAR := SEMICOLON; WHILE NOT(HIT OR (PRED(THISCHAR) = PERIOD)) DO IF CURRCHAR.VALU = SGLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR) END; IF HIT THEN CHARTYPE := THISCHAR ELSE CHARTYPE := OTHERSYM END; (* CHARTYPE *) PROCEDURE GETSPCIALCHAR( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING*) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETSPCIALCHAR *) STOENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR, NEXTCHAR, (* IN *) VALU ); NAME := CHARTYPE( (* OF *) CURRCHAR, NEXTCHAR ); IF NAME IN DBLCHARS THEN STORENEXTCHAR( (* FROM INPUT *) (* UPDATING *) LENGTH, CURRCHAR NEXTCHAR, (* IN *) VALU ) END; (* GETSPECIALCHAR *) PROCEDURE GETNEXTSYMBOL( (* FROM INPUT *) (* UPDATING *) VAR CURRCHAR, NEXTCHAR : CHARINFO; (* RETURNING *) VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN (* GETNEXTSYMBOL *) CASE NEXTCHAR.NAME OF LETTER : GETIDENTIFIER( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ); DIGIT : GETNUMBER( (* FROM INPUT *) (* UPDATING *) CURRCHAR NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ); QUOTE : GETCHARLITERAL( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU LENGTH ); OTHERCHAR : BEGIN GETSPECIALCHAR( *)_( FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ); IF NAME = OPENCOMMENT THEN GETCOMMENT( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, NAME, VALU, LENGTH ) END; FILEMARK : NAME := ENDOFFILE END (* CASE *) END; (* GETNEXTSYMBOL *) PROCEDURE GETSYMBOL( (* FROM INPUT *) (* UPDATING *) VAR NEXT SYM : SYMBOLINFO; (* RETURNING *) VAR CURRSYM : SYMBOLINFO ); VAR DUMMY: SYMBOLINFO; BEGIN (* GETSYMBOL *) DUMMY := CURRSYM; CURRSYM := NEXTSYM; NEXTSYM := DUMMY ; WITH NEXTSYM^ DO BEGIN SKIPSPACES( (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) SPACESBEFORE, CRSBEFORE ); LENGTH := 0; IF CURRSYM^.NAME = OPEN COMMENT THEN GETCOMMENT( (* FROM INPUT *) (* UPDATING *) CURRCHAR, NEXTCHAR, (* RETURNING *) NAME, VALU, LENGTH ) END (* WITH *) END; (* GETSYMBOL *) PROCEDURE INITIALIZE( (* RETURNING *) VAR TOPOFSTACK : INTEGER; VAR CURRLINEPOS, CURRMARGIN : INTEGER; VAR KEYWORD : KEYWORDTABLE; VAR DBLCHARS : DBLCHRSET; VAR DBLCHAR : DBLCHARTABLE; VAR SGLCHAR : SGLCHARTABLE; VAR RECORDSEEN : BOOLEAN; VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR CURRSYM, NEXTSYM : SYMBOLINFO; VAR PPOPTION : OPTIONTABLE ); BEGIN (* INITIALIZE *) LINELIMIT(OUTPUT,MAXINT); TOPOFSTACK := 0; CURRLINEPOS := 0UEH10TGIN := 0; KEYWORD [ PROGSYM ] := 'PROGRAM '; KEYWORD [ FUNCSYM ] := 'FUNCTION '; KEYWORD [ PROCSYM ] := 'PROCEDURE '; KEYWORD [ LABELSYM ] := 'LABEL '; KEYWORD [ CONSTSYM ] := 'CONST '; KEYWORD [ TYPESYM ] := 'TYPE '; KEYWORD [ VARSYM ] := 'VAR '; KEYWORD [ BEGINSYM ] := 'BEGIkv'; CURRMARGIN := 0; KEYWORD [ PROGSYM ] := 'PROGRAM '; KEYWORD [ FUNCSYM ] := 'FUNCTION '; KEYWORD [ PROCSYM ] := 'PROCEDURE '; KEYWORD [ LABELSYM ] := 'LABEL '; KEYWORD [ CONSTSYM ] := 'CONST '; KEYWORD [ TYPESYM ] := 'TYPE '; KEYWORD [ VARSYM ] := 'VAR '; KEYWORD [ BEGINSYM ] := 'BEGIN '; KEYWORD [ REPEATSYM ] := 'REPEAT '; KEYWORD [ RECORDSYM ] := 'RECORD '; KEYWORD [ CASESYM ] := 'CASE '; KEYWORD [ CASEVARSYM ] := 'CASE '; KEYWORD [ OFSYM ] := 'OF '; KEYWORD [ FORSYM ] := 'FOR '; KEYWORD [ WHILESYM ] := 'WHILE '; KEYWORD [ WITHSYM ] := 'WITH '; KEYWORD [ DOSYM ] := 'DO '; KEYWORD [ IFSYM ] := 'IF '; KEYWORD [ THENSYM ] := 'THEN '; KEYWORD [ ELSESYM ] := 'ELSE '; KEYWORD [ ENDSYM ] := 'END '; KEYWORD [ UNTILSYM ] := 'UNTIL '; DBLCHARS := [ BECOMES, OPENCOMMENT ]; DBLCHAR [ BECOMES ] := ':='; DBLCHAR [ OPENCOMMENT ] := '(*'; SGLCHAR [ SEMICOLON ] := ';'; SGLCHAR [ COLON ] := ':'; SGLCHAR [ EQUALS ] := '='; SGLCHAR [ OPENPAREN ] := '('; SGLCHAR [ CLOSEPAREN ] := ')'; SGLCHAR [ PERIOD ] := '.'; RECORDSEEN := FALSE; GETCHART( (* FROM INPUT *) (* UPDATING *) NEXTCHAR, (* RETURNING *) CURRCHAR ); NEW(CURRSYM); NEW(NEXTSYM); GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [ PROGSYM ] DO BEGIN OPTIONSSELECTED := [BLANKLINEBEFORE; SPACEAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ FUNCSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM TAPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PROCSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ LABELSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, SPACEAFTER, IDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CONSTSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [LABELSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ TYPESYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [LABELSYM, CONSTSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ VARSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ BEGINSYM ] DO BEGIN OPTIONSSELECTED := [DINDENTONKEYS, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ REPEATSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ RECORDSYM ] DO BEGIN OPTIONSSELECTED := [ IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CASESYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [] GOBBLETERMINATORS := [ OFSYM ] END; WITH PPOPTION [ CASEVARSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ OFSYM ] END; WITH PPOPTION [ OFSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; WITH PPOPTION [ FORSYM ] DO BEGIN OPTIONSSELECTED := SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; WITH PPOPTION [ WHILESYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; WITH PPOPTION [ WITHSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ DOSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ IFSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ THENSYM ] END; WITH PPOPTION [ THENSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ELSESYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, ELSESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, CASEVARSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ UNTILSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, SPACEAFTER, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ]; END; WITH PPOPTION [ BECOMES ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ] END; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ DOSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ IFSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ THENSYM ] END; WITH PPOPTION [ THENSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ELSESYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, ELSESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, CASEVARSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ UNTILSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, SPACEAFTER, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ]; END; WITH PPOPTION [ BECOMES ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ] END; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OPENPAREN ] DO BEGIN OPTIONSSELECTED := [ GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ CLOSEPAREN] END; WITH PPOPTION [ CLOSEPAREN ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PERIOD ] DO BEGIN OPTIONSSELCTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDOFFILE ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OTHERSYM ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := [];  GOBBLETERMNATORS := [] END END; (* INITIALIZE *) FUNTION STACKEMPTY (* RETURNING *) : BOOLEAN; BEGIN (* STACKEMPTY *) IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE END; (* STACKEMPTY *) FUNCTION STACKFULL (* RETURNING *) : BOOLEAN; BEGIN (* STACKFULL *) IF TOP = MAXSTACKSIZE THEN STACKFULL := TRUE ELSE STACKFULL := FALSE END; (* STACKFULL *) PROCEDURE POPSTACK( (* RETURNING ): VAR INDENTSYMBOL : KEYSYMBOL; VAR PREVMARGIN : INTEGER); BEGIN (* POPSTACK *) IF NOT STACKEMPTY THEN BEGIN INDENTSYMBOL := STACK[TOP].INDENTSYMBOL; PREVMARGIN := STACK[TOP].PREVMARGIN; TOP := TOP - 1 END ELSE BEGIN INDENTSYMBOL := OTHERSYM; PREVMARGIN := 0 END END; (* POPSTACK *) PROCEDURE PUSHSTACK( (* USING *) INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER ); BEGIN (* PUSHSTACK *) TOP := TOP + 1 STACK[TOP].INDENTSYMBOL := INDENTSYMBOL; STACK[TOP].PREVMARGIN := PREVMARGIN END; (* PUSHSTACK *) PROCEDURE WRITECRS( (* USING *) NUMBEROFCRS : INTEGER; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED THIS IS SMALL I) BEGIN (* WRITECRS *) IF NUMBEROFCRS > 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; (* WRITECRS *) PROCEDURE INSERTCR( (* UPDATING *) VAR CURRSYM : SMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; BEGIN (* INSERTER *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END END; (* INSERTER *) PROCEDURE INSERTBLANKLINE( (* UPDATING *) VAR CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; TWICE - 2; BEGIN (* INSERTBLANKLINE *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) ELSE WRITECRS( TWICE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END; (* INSERTBLANKLINE *) PROCEDURE 1SHIFTON( (* USING *) DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFTON *) IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( (* USING *) INDENTSYMBOL, PREVMARGIN ) END END; (* 1SHIFTON *) PROCEDURE 1SHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFT *) IF NOT STACKEMPTY THEN BEGIN POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; (* 1SHIFT *) PROCEDURE INSERTSPACE( (* USING *) VAR SYMBOL : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* INSERTSPACE *) IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END END; (* INSERTSPACE *) PROCEDURE MOVELINEPOST( (* TO *) NEWLINEPOS : INTEGER; (* FROM *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* MOVELINEPOS *) FOR I := CURRLINEPOS+1 TO NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; (* MOVELINEPOS *) PROCEDURE PRINTSYMBOL( (* IN *) CURRSYM : SYMBOLINFO; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* PRINTSYMBOL *) WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; (* SAVE START POS FOR TAB PURPOSES *) (* <<< *). CURRLINEPOS := CURRLINEPOS + LENGTH END (* WITH *) END; (* PRINTSYMBOL *) PROCEDURE PPSYMBOL( (* IN *) CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN (* PPSYMBOL *) WITH CURRSYM^ DO BEGIN WRITECRS( (* USING *) CRSBEFORE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( (* TO *) NEWLINEPOS, (* FROM *) CURRLINEPOS (* IN OUTPUT *) ); PRINTSYMBOL( (* IN *) CURRSYM, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END (* WITH *) END; (* PPSYMBOL *) PROCEDURE RSHIFTTOCLP( (* USING *) CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) TERMINATORS : KEYSYMSET; (* UPDATING *) VAR CURRSYM, NEXTSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* GOBBLE *) RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); PPSYMBOL( (* IN*) CURRSYM (* WRITING TO OUTPUT *) ) END; (* WHILE *) 1SHIFT END; (* GOBBLE *) PROCEDURE RSHIFT( (* USING *) CURRSYM : KEYSMBOL ); BEGIN (* RSHIFT *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); (* IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. *) (* <<< *). IF STARTPOS > CURRMARGIN (* <<< *). THEN (* <<< *). CURRMARGIN := STARTPOS; (* <<< *). IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; (* RSHIFT *) PROCEDURE RSHIFTTOCLP; BEGIN (* RSHIFTTOCLP *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; (* RSHIFTTOCLP *) BEGIN (* PRETTYPRINT *) INITIALIZE( TOP CURRLINEPOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_(* USNG *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN 1SHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN 1SHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); PPSYMBOL( (* IN *) CURRSYM (* WRITING TO OUTPUT *) ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) NEXTSYM (* WRITING TO OUTPUT *) ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( (* USING *) CURRSYM^.NAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) GOBBLETERMINATORS, (* UPDATING *) CURRSYM, NEXTSYM (* WRITING TO OUTPUT *) IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END (* WITH *) END; (* WHILE *) IF CRPENDING THEN WRITELN(OUTPUT) END. FUNTION STACKEMPTY (* RETURNING *) : BOOLEAN; BEGIN (* STACKEMPTY *) IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE END; (* STACKEMPTY *) FUNCTION STACKFULL (* RETURNING *) : BOOLEAN; BEGIN (* STACKFULL *) IF TOP = MAXSTACKSIZE THEN STACKFULL := TRUE ELSE STACKFULL := FALSE END; (* STACKFULL *) PROCEDURE POPSTACK( (* RETURNING ): VAR INDENTSYMBOL : KEYSYMBOL; VAR PREVMARGIN : INTEGER); BEGIN (* POPSTACK *) IF NOT STACKEMPTY THEN BEGIN INDENTSYMBOL := STACK[TOP].INDENTSYMBOL; PREVMARGIN := STACK[TOP].PREVMARGIN; TOP := TOP - 1 END ELSE BEGIN INDENTSYMBOL := OTHERSYM; PREVMARGIN := 0 END END; (* POPSTACK *) PROCEDURE PUSHSTACK( (* USING *) INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER ); BEGIN (* PUSHSTACK *) TOP := TOP + 1 STACK[TOP].INDENTSYMBOL := INDENTSYMBOL; STACK[TOP].PREVMARGIN := PREVMARGIN END; (* PUSHSTACK *) PROCEDURE WRITECRS( (* USING *) NUMBEROFCRS : INTEGER; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED THIS IS SMALL I) BEGIN (* WRITECRS *) IF NUMBEROFCRS > 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; (* WRITECRS *) PROCEDURE INSERTCR( (* UPDATING *) VAR CURRSYM : SMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; BEGIN (* INSERTER *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END END; (* INSERTER *) PROCEDURE INSERTBLANKLINE( (* UPDATING *) VAR CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; TWICE - 2; BEGIN (* INSERTBLANKLINE *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) ELSE WRITECRS( TWICE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END; (* INSERTBLANKLINE *) PROCEDURE 1SHIFTON( (* USING *) DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFTON *) IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( (* USING *) INDENTSYMBOL, PREVMARGIN ) END END; (* 1SHIFTON *) PROCEDURE 1SHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* 1SHIFT *) IF NOT STACKEMPTY THEN BEGIN POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; (* 1SHIFT *) PROCEDURE INSERTSPACE( (* USING *) VAR SYMBOL : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* INSERTSPACE *) IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END END; (* INSERTSPACE *) PROCEDURE MOVELINEPOST( (* TO *) NEWLINEPOS : INTEGER; (* FROM *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* MOVELINEPOS *) FOR I := CURRLINEPOS+1 TO NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; (* MOVELINEPOS *) PROCEDURE PRINTSYMBOL( (* IN *) CURRSYM : SYMBOLINFO; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* PRINTSYMBOL *) WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; (* SAVE START POS FOR TAB PURPOSES *) (* <<< *). CURRLINEPOS := CURRLINEPOS + LENGTH END (* WITH *) END; (* PRINTSYMBOL *) PROCEDURE PPSYMBOL( (* IN *) CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN (* PPSYMBOL *) WITH CURRSYM^ DO BEGIN WRITECRS( (* USING *) CRSBEFORE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( (* TO *) NEWLINEPOS, (* FROM *) CURRLINEPOS (* IN OUTPUT *) ); PRINTSYMBOL( (* IN *) CURRSYM, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END (* WITH *) END; (* PPSYMBOL *) PROCEDURE RSHIFTTOCLP( (* USING *) CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) TERMINATORS : KEYSYMSET; (* UPDATING *) VAR CURRSYM, NEXTSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* GOBBLE *) RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); PPSYMBOL( (* IN*) CURRSYM (* WRITING TO OUTPUT *) ) END; (* WHILE *) 1SHIFT END; (* GOBBLE *) PROCEDURE RSHIFT( (* USING *) CURRSYM : KEYSMBOL ); BEGIN (* RSHIFT *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); (* IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. *) (* <<< *). IF STARTPOS > CURRMARGIN (* <<< *). THEN (* <<< *). CURRMARGIN := STARTPOS; (* <<< *). IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; (* RSHIFT *) PROCEDURE RSHIFTTOCLP; BEGIN (* RSHIFTTOCLP *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; (* RSHIFTTOCLP *) BEGIN (* PRETTYPRINT *) INITIALIZE( TOP CURRLINEPOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_(* USNG *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN 1SHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN 1SHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); PPSYMBOL( (* IN *) CURRSYM (* WRITING TO OUTPUT *) ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) NEXTSYM (* WRITING TO OUTPUT *) ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( (* USING *) CURRSYM^.NAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) GOBBLETERMINATORS, (* UPDATING *) CURRSYM, NEXTSYM (* WRITING TO OUTPUT *) IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END (* WITH *) END; (* WHILE *) IF CRPENDING THEN WRITELN(OUTPUT) END. iCBOOKPA  PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK,ERRORENTRY); FIELD = RECORD KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE INTEGER OF 1 : (IMREAL : REAL); 2 : (IMINT : INTEGER); 3 : (IMSTR : STRING[10]) END;{RECORD} VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; LOGFILE,OUTFILE,INFILE : TEXT; NEXTFIELD : FIELD; NFIELD,CATEGORY : INTEGER; N : ARRAY [4..7] OF INTEGER; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} {$I GETFIELD.PI} PROCEDURE ERROR; BEGIN WRITELN(OUTFILE,' ERROR',STR); END;{error} PROCEDURE C1HECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(OUTFILE,' CK ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(OUTFILE,' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(OUTFILE,' DP ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); REALPRINT(OUTFILE,NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(OUTFILE,' CM ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); REALPRINT(OUTFILE,NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(OUTFILE,' DM ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(OUTFILE,' CC ',CHECKNUMBER : 10); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' EM ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' WH ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN ENTRY := ERRORENTRY; CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(LINE[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(LINE[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE OPENFILES; BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); FILETITLE(LOGFILE,'LOGFILE'); RESET(LOGFILE); WRITE('ENTER START AND END CATEGORY'); READLN(N[4],N[6]); WRITE}('ENTER START AND END PAGE'); READLN(N[5],N[7]); END; {OPENFILES} PROCEDURE INITIALIZE; BEGIN BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; END;{INITIALIZE} PROCEDURE HEADER1; BEGIN WRITELN(OUTFILE,' KEY TO TRANSACTION TYPES'); WRITELN(OUTFILE,' C CHECK CC CANCELLED CHECK'); WRITELN(OUTFILE,' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN(OUTFILE,' DP DEPOSIT BL FORCED BALANCE'); WRITELN(OUTFILE,' EM EMPLOYEE CK WH WITHOLDING CHECK'); END;{HEADER1} PROCEDURE HEADER2; BEGIN WRITELN(OUTFILE); WRITELN(OUTFILE,' TYPE CHECK DEBIT CREDIT BALANCE'); END;{HEADER1} BEGIN OPENFILES; INITIALIZE; HEADER1; WRITELN(OUTFILE); FOR NFIELD :=4 TO 5 DO BEGIN FOR CATEGORY := N[NFIELD] TO N[NFIELD+2] DO BEGIN INITIALIZE; WRITELN(OUTFILE); WRITELN(OUTFILE,'CATEGORY',CATEGORY,'FIELD',NFIELD); HEADER2; RESET(INFILE); WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); WRITELN(LOGFILE,STR); GETFIELD(STR,NFIELD,NEXTFIELD); IF NEXTFIELD.KIND = IAMINTEGER THEN IF NEXTFIELD.IMINT = CATEGORY THEN BEGIN GETENTRYTYPE(STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; ERRORENTRY : ERROR; END;{case} WRITELN(OUTFILE); END; END; WRITELN(OUTFILE);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTALS '); REALPRINT(OUTFILE,TOTALDEBITS);REALPRINT(OUTFILE,TOTALCREDITS); REALPRINT(OUTFILE,NEWBALANCE); WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL CHECKS ');REALPRINT(OUTFILE,TOTALCHECKS);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL DEPOSITS');REALPRINT(OUTFILE,TOTALDEPOSITS); END; WRITELN('END1'); END; WRITELN('END2'); END. TEST01PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; I : INTEGER; {$I REALPRINT.PI} {$I GETREAL.PI} BEGIN REPEAT BEGIN READLN(STR); I := 1; REALPRINT (GETREAL(STR,I)); END UNTIL EOF(INPUT); END. 1978EMP09f E 625 2210.00 E 627 1209.08 E 628 1158.89 E 629 552.62 E 630 596.12 E 632 359.96 W 634 800.03 E 635 921.48 E 636 1050.72 E 637 533.66 E 638 610.74 E 639 361.79 E 640 201.10 E 645 346.92 CROSSREFPXwr @CROSSREF Copyright (C) 1980 Rational Data Systems 2  ȡ( ¥؂ á& <ٟá8 ۥ ۢۢۢ ښۢ ښ'ڢٚ=ٵ ٢- ٢'ڢښ٢ ښب    á֥    á֥C  j؟ˡأƀƀƀOUTPUT H Fƀ ֥֥  'á륀  ֥ H ɡ ֥ H֥ H֥ ֥ Hġ  á֥z֥ H'á&֥ H֥ ֥ H'á0֥ H%á$֥ H֥ ֥ H#á֥ H֥ ֥֥ ֥ƀ y+Mm1&p P4XAP0 ;PASCAL P4 LIBRARY ADDITION TO ALLOW ;CALLS TO ASSEMBLY LEVEL PROCEDURES ;PETE GOODEVE 78:7:22 ;THIS MODULE SHOULD BE INSERTED IN P4LIB.LB ;IMMEDIATELY BEFORE MODULE R2SAD. IT USURPS THE ;ORIGINAL "PCXP" (EXTERNAL PROCEDURE) FUNCTION. .TITL P4XAP ;78:7:22 .ENT PCXP ;USURPS ORIGINAL P4 ROUTINE .ENT XPRET ;USE TO RETURN TO P-CODE .EXTN PCUP P4IX = 40 ;EXIT LINK TO INTERPRETER SP = 41 ;STACK POINTER P4ER = 51 ;INTERPRETER ERROR .NREL ; MODIFICATION TO PASCAL "CALL EXTERNAL PROCEDURE" ; TO EXIT TO MACHINE LEVEL IF PROCEDURE IS NOT P-CODE ; -- ENTERS ASSEMBLY PROCEDURE WITH: ; AC1 = # OF PARAMETER WORDS ; AC0 = FRAME BASE POINTER ; = VALUE RETURN SLOT ; AC3 = TOP OF STACK ; = C(LOC 41) PCXP: LDA 2,0,2 ;GET ADDRESS OF PROCEDURE COM# 2,2,SNR ;WAS IT LOADED? JMP CXERR ;NO LDA 0,4,2 ;LOOK FOR P-CODE IDENTIFICATION ("ENT 3") LDA 3,ENT3C SUB 0,3,SZR ;IS IT P-CODE? JMP ASMLV ;NO -- SET UP ASSEMBLY ENTRY LDA 0,5,2 ;# OF PARAMS NEEDED MOVZR 0,0 ;-> WORDS SUB 1,0,SNR ;MATCH WITH CALL? JMP @PCUPA ;YES -- GO DO IT CXERR: JSR @P4ER ;ERROR 412 ENT3C: 61003 PCUPA: PCUP ASMLV: LDA 3,SP ;CURRENT TOP OF STACK LDA 0,KM6 ADD 3,0 ;DIMINISH BY HOUSEKEEPING AREA SUB 1,0 ;AND BY # OF PARAM WORDS STA 0,SPOP ;TO GET PREVIOUS TOP-OF-STACK INC 0,0 ;SLOT ABOVE IS FUNCTION VALUE JMP 0,2 ;ENTER PROCEDURE KM6: -6 SPOP: .-. ;EXIT FROM MACHINE LEVEL BACK TO P-CODE ;BY EXECUTING (PSEUDOINSTRUCTION) "XPRET" ;WITH AC1 = 0 FOR PROCEDURE, 1 FOR INTEGER FUNCTION, ; 2 FOR REAL FUNCTION. .ZREL XPRET = JMP @. XXPR .NREL XXPR: LDA 2,SPOP ;GET PREVIOUS STACK TOP ADD 1,2 ;INCREASE BY RETURN VALUE IF ANY STA 2,SP ;SET STACK POINTER JMP @P4IX ;GO BACK TO INTERPRETER .END ;OF P4 MOD T17H/2PROGRAM T17(INPUT,OUTPUT); VAR CHR : ARRAY [1..80] OF CHAR; X,Y,Z : REAL; IPEN,I,J : INTEGER; TESTCHAR : CHAR; BEGIN TESTCHAR := 'A'; WHILE NOT EOF(INPUT) DO BEGIN I := 1; WRITELN(OUTPUT,'PROMPT T17'); WHILE NOT EOLN(INPUT) DO BEGIN WRITELN(OUTPUT,'TESTCHAR=',TESTCHAR); READ (INPUT,CHR[I]); TESTCHAR := CHR[I]; I := I+1; END; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,X,Y,Z,IPEN); END; READLN(INPUT); WRITELN(OUTPUT,' '); FOR J := 1 TO I DO WRITE(OUTPUT,CHR[J]); WRITE(OUTPUT,X,Y,Z,IPEN); WRITELN(OUTPUT,'A'); END END. BITS7; BIT SET AND CLEAR ROUTINES ; ; CALL VIA ; SBIT(BIT NO: INTEGER, VAR WORD : INTEGER);EXTERNAL; ; CBIT(BIT NO : INTEGER ; VAR WORD : INTEGER);EXTERNAL; ; TBIT(BIT NO:INTEGER;WORD:INTEGER;VAR VALUE:INTEGER); ; EXTERNAL; ; ; THE BIT SPECIFIED BY BIT NO IS SET OR CLEARED IN WORD ; BITS ARE NUMBERED 0=LEFT MOST BIT 15=RIGHT MOST BIT .TITL BITS .ENT ?SBIT,?CBIT,?TBIT .EXTN XPRET .NREL TABLE: .+1 ;TABLE ADDRESS HERE 1B0 1B1 1B2 1B3 1B4 1B5 1B6 1B7 1B8 1B9 1B10 1B11 1B12 1B13 1B14 1B15 WORD=0 ;BYTE ADDRESS OF WORD ON STACK BIT=WORD-1 ;WORD ADDRESS OF BIT NO ?SBIT: STA 3,USP ;SAVE AC3 IN USER STACK POINTER LDA 0,BIT,3 ;GET VALUE OF BIT NO LDA 2,TABLE ;GET TABLE START ADDRESS ADD 0,2 ;ADD BIT OFFSET TO ADDRESS LDA 2,0,2 ;HAVE BIT IN AC2 LDA 3,WORD,3 ;GET BYTE ADDRESS OF WORD MOVZR 3,3 ;MAKE IT A WORD ADDRESS LDA 0,0,3 ;GET VALUE OF WORD ; INCLUSIVE OR BIT IN AC2 TO WORD IN AC0 ; COM 2,2 AND 2,0 ADC 2,0 ;RESULT IS IN AC0 ; STA 0,0,3 ;RETURN RESULT TO PASCAL SUBO 1,1 ;CLEAR AC1 BEFORE RETURNING XPRET ;BACK TO PASCAL ?CBIT: LDA 0,BIT,3 ;GET VALUE OF BIT LDA 2,TABLE ;GET START OF TABLE ADD 0,2 ;ADDRESS OF BIT TO BE CLEARED LDA 2,0,2 ;BIT IN AC2 NOW LDA 3,WORD,3 ;BYTE ADDRESS OF WORD MOVZR 3,3 ;MAKE IT A WORD ADDRESS LDA 0,0,3 ;GET VALUU OF WORD ; ; CLEAR BIT IN AC2 IN WORD IN AC0 ; COM 2,2 AND 2,0 ;RESULT IS I AC0 ; STA 0,0,3 ;RESULT TO PASCAL SUBO 1,1 XPRET ; TEST A BIT AND RETURN 1 FOR ON 0 FOR OFF ; ; CONTENTS OF AC3 = STACK ADDRESS VALUE=0 ;BYTE ADDRESS OF VALUE ON STACK WORD=-1 ;VALUE OF WORD ON STACK BITS=-2 ;VALUE OF BIT ON STACK ?TBIT: LDA 0,BITS,3 ;GET VALUE OF BITS LDA 2,TABLE ;GET TABLE START ADDRESS ADD 0,2 ;ADDRESS OF BIT PATTERN LDA 2,0,2 ;BIT PATTERN IN AC2 LDA 0,WORD,3 ;GET VALUE OF WORD SUBO 1,1 ;SET UP AC1 FOR NOT SET AND 2,0,SZR ;RESULT IN AC0 SUBZL 1,1 ;SET AC1=1 IF SET LDA 3,VALUE,3 ;GET BYTE ADDRESS OF VALUE MOVZR 3,3 ;MAKE IT A WORD ADDRESS STA 1,0,3 ;RETURN VALUE TO PASCAL SUBO 1,1 XPRET .END TEDITSVTEDITSVTEST02PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; I : INTEGER; {$I GETINTEGER.PI} BEGIN REPEAT BEGIN I := 1; READLN(STR); WRITELN(' ',GETINTEGER(STR,I),'=NUMB'); END; UNTIL EOF(INPUT); END. 197801 B 4196.05 C 2332 2000 C 2356 264.05 C 2355 280.60 D 23546.65 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 C 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 E 4424.29 D 13878.50 C 2394 85.54 C 2395 1000. C 2396 405.38 C 2397 64. D 3885. C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 E 4499.72 W 5477.65 C 2402 80. 1978EMPR1r*E 496 1177.09 E 495 1076.21 E 494 392.55 E 493 456.63 E 492 497.88 E 491 574.03 E 490 890.20 E 489 842.19 E 488 788.81 E 510 304.73 E 509 432.47 E 508 575.53 E 507 502.81 E 506 842.80 E 505 1033.57 E 504 254.00 W 503 702.05 W 502 4521.60 W 501 387.26 W 500 372.80 W 499 561.91 W 498 497.97 E 497 926.48 E 519 84.76 E 520 483.00 E 511 830.88 E 537 464.55 E 531 356.37 E 529 589.96 E 530 436.>65 E 528 393.86 E 527 888.88 E 526 1034.18 E 525 991.35 E 524 733.00 W 522 182.00 W 523 1549.00 W 521 2210.00 W 518 3391.80 W 517 277.10 E 516 259.01 E 515 439.51 E 514 398.75 E 513 1113.18 E 512 893.06 W 540 4601.70 E 532 1062.02 E 533 1122.84 E 534 999.70 E 535 538.32 E 536 643.20 E 538 386.34 E 539 105.03 W 541 1703.92 W 544 5.00 W 545 1345.38 E 546 924.04 E 547 982.73 E 548 873.83 E 549 473.57 E 550 542.91 E 551 440.27 E 553 299.63 E 552 185.93 E 568 343.38 E 569 304.73 E 567 596.15 E 566 465.02 E 565 948.24 E 564 985.99 E 563 991.80 E 557 473.57 E 558 601.00 E 560 265.01 E 555 991.16 E 554 927.77 E 556 852.47 W 562 4255.04 E 561 297.08 E 559 688.29 E 570 1050.61 E 571 1069.11 E 572 1019.07 E 573 566.88 E 574 630.97 E 575 269.88 E 576 472.09 E 577 346.43 W 578 4412.14 W 579 483.00 W 580 2210.00 W 581 38.36 E 582 1046.89 E 583 1151.39 E 584 996.51 E 585 627.63 E 586 732.19 E 587 537.45 E 588 513.44 E 589 374.42 E 590 110.15 E 591 979.37 E 592 1426.28 E 594 531.30 E 596 500.91 W 599 5659.58 E 593 960.21 E 595 645.08 E 597 430.98 E 598 343.31 W 600 1863.74 W 602 850.20 E 603 796.26 E 604 802.32 E 605 379.26 E 606 542.91 E 607 283.06 E 608 180.93 E 609 282.18 E 615 369.00 W 617 2861.14 E 625 2210.00 E 627 1209.08 E 628 1158.89 E 629 552.62 E 630 596.12 E 632 359.96 W 634 800.03 E 635 921.48 E 636 1050.72 E 637 533.66 E 638 610.74 E 639 361.79 E 640 201.10 E 645 346.92 E 610 325.46 E 611 1020.87 E 612 922.47 E 613 505.84 E 614 595.69 E 616 258.02 E 618 1053.55 E 619 845.14 E 620 420.35 E 621 548.51 E 622 293.42 E 623 339.16 E 624 374.42 W 626 483.00 E 631 142.22 W 633 2792.12 E 660 484.10 W 662 2276.24 E 650 981.35 E 651 992.28 E 652 327.45 E 653 384.95 E 641 1081.13 E 642 1042.43 E 643 490.20 E 644 516.116 E 646 326.75 W 647 2424.72 W 648 393.57 W 649 251.13 E 654 373.60 E 657 1176.43 E 658 1184.18 E 659 566.46 E 661 247.78 E 663 393.62 E 664 40.27 TEST8v PROGRAM TEST(INPUT,OUTPUT); CONST STRSIZE = 133; TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} VAR LINE : LINESTRING; I : INTEGER; NBYTES : INTEGER; FILENAME :BIGSTR; DATA :BIGSTR; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; FILEPOSITION : DPINTEGER; {$I GPOS.PI} {$I SPOS.PI} {$I GCHN.PI} {$I OPEN.BU} {$I CLOSE.PI} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I RDS.BU} {$I WRS.BU} PROCEDURE ADDZEROTO( VAR STR : BIGSTR); { ADD A ZERO BYTE TO STR TO MAKE IT RDOS COMPATIBLE AND LENGTHN THE STRING BY ONE} BEGIN {$R-} STR[0] := CHR(LENGTH(STR)+1); STR[LENGTH(STR)] := CHR(0); {$R^} END; BEGIN GCHN(I); WRITELN(' FREE CHANNEL = ',I); FILENAME := 'FOBAR'; ADDZEROTO(FILENAME); CRAND(FILENAME,SYSERROR,ERRORNUMBER); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); GPOS(I,FILEPOSITION); SPOS(I,FILEPOSITION); DATA := 'THIS IS A TEST'; ADDZEROTO (DATA); { NBYTES := 14; WRITESEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER);} WRITELINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORNUMBER); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); { NBYTES := 14; READSEQUENTIAL(I,DATRA,NBYTES,SYSERROR,ERRORNUMBER);} READLINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN(OUTPUT,'LENGTH OF DATA =',LENGTH(DATA),' NBYTES=',NBYTES); WRITELN(OUTPUT,DATA); WRITELN(' HIT CTLA'); READLN; DELETE(FILENAME,SYSERROR,ERRORNUMBER); END. GETFIELDPIsPROCEDURE GETFIELD(STR : ALPHANUMERIC; FIELDNUMBER : INTEGER; VAR FIELDVAL : FIELD ); {TYPE FIELD = RECORD OF KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE INTEGER OF 1: (IMREAL : REAL); 2: (IMINT : INTEGER); 3: (IMSTR : STRING[10]) END; {CASE} VAR I,J,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; J := 1; WHILE ( (I FIELDNUMBER) ) DO BEGIN {LEADING BLANKS AND TABS} WHILE ( (I -1) OR (BYTE = CTLZ) END. T17RL #CROSSREFBUJ  PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : ALFA; F : TEXT; A : ARRAY [1..C1] OF CHAR; PROCEDURE PACK (A : ARRAY[1..C1] OF CHAR ; I : INTEGER ; VAR ID : ALFA ); VAR J : INTEGER; BEGIN FOR J := 1 TO C1 DO ID[J] := A[J-1+I] END (* PACK *) PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X EN:D; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A'..'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; PACK(A,1,ID);SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. TEST3PXlTEST3 Copyright (C) 1980 Rational Data Systems襀ق   ȡ֦ Vس 襀عA֦ LINEFEED֦ UP֦ DELETEHEB/  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~ l ƀƀƀOUTPUTAINPUTƀ֥ ƀ#lrR 197803 B 5621.74 D 5532.20 C 2458 450.59 C 2459 75.65 C 2460 923. CC 2461 CC 2462 C 2463 25 C 2464 26 C 2465 50.50 C 2466 39 C 2467 4.80 CC 2468 C 2469 70 C 2470 500 C 2471 12 D 6157.00 C 2472 113.56 C 2473 9.95 CC 2474 C 2475 368 C 2476 616 C 2477 208.65 C 2478 380 C 2479 129 C 2480 3.95 C 2481 7.06 C 2482 30 C 2483 15 D 5631.50 CC 2484 C 2485 2000 C 2486 7 C 2487 34.03 C 2488 474.35 C 2489 179.46 C 2490 145 D 5395 C 2491 12.30 C 2492 7 C 2493 2 C 2494 3.50 C 2495 46.49 CC 2496 C 2497 117.03 E 5322. W 7656 CC2498 aTOTAL PROGRAM TOTAL(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; TOTAL,AMOUNT : REAL; I,CHECKNUMBER : INTEGER; INFILE,OUTFILE : TEXT; (*$I GETREAL.PI *) (*$I REALPRINT.PI *) (*$I GETINTEGER.PI *) BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); TOTAL := 0.0; WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); I := 2; { CHECKNUMBER := GETINTEGER(STR,I);} AMOUNT := GETREAL(STR,I); TOTAL := TOTAL + AMOUNT; { WRITE(OUTFILE,STR[1],CHECKNUMBER : 10);} REALPRINT(OUTFILE,AMOUNT); WRITELN(OUTFILE); END; WRITE(OUTFILE,' ');REALPRINT(OUTFILE,TOTAL);WRITELN(OUTFILE); END. ASRBY1HI   D$$5[????? ? ?*"?Dk?(?'@ _CLOSEPIPROCEDURE CLOSE(RDOSCHANNEL : INTEGER ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTCLOSE =6463; {.CLOSE} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTCLOSE; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN CLOSE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {CLOSE} 1978EMPR3rrE 496 1177.09 12 3 E 495 1076.21 12 3 E 494 392.55 12 1 E 493 456.63 12 1 E 492 497.88 12 1 E 491 574.03 12 1 E 490 890.20 12 1 E 489 842.19 12 1 E 488 788.81 12 1 E 510 304.73 12 5 E 509 432.47 12 5 E 508 575.53 12 5 E 507 502.81 12 5 E 506 842.80 12 5 E 505 1033.57 12 5 E 504 254.00 12 4 W 503 702.05 14 4 W 502 4521.60 14 4 W 501 387.26 14 3 W 500 372.80 14 3 W 499 561.91 14 3 W 498 497.97 14 3 E 497 926.48 12 3 E 519 84.76 12 12 E 520 483.00 12 8 E 511 830.88 12 7 E 537 464.55 12 10 E 531 356.37 12 9 E 529 589.96 12 9 E 530 436.65 12 9 E 528 393.86 12 9 E 527 888.88 12 9 E 526 1034.18 12 9 E 525 991.35 12 9 E 524 733.00 12 8 W 522 182.00 14 8 W 523 1549.00 14 8 W 521 2210.00 14 8 W 518 3391.80 14 7 W 517 277.10 14 7 E 516 259.01 12 7 E 515 439.51 12 7 E 514 398.75 12 7 E 513 1113.18 12 7 E 512 893.06 12 7 W 540 4601.70 14 10 E 532 1062.02 12 10 E 533 1122.84 12 10 E 534 999.70 12 10 E 535 538.32 12 10 E 536 643.20 12 10 E 538 386.34 12 10 E 539 105.03 12 10 W 541 1703.92 14 11 W 544 5.00 14 11 W 545 1345.38 14 11 E 546 924.04 12 12 E 547 982.73 12 12 E 548 873.83 12 12 E 549 473.57 12 12 E 550 542.91 12 12 E 551 440.27 12 12 E 553 299.63 12 12 E 552 185.93 12 12 E 568 343.38 12 15 E 569 304.73 12 15 E 567 596.15 12 15 E 566 465.02 12 15 E 565 948.24 12 14 E 564 985.99 12 14 E 563 991.80 12 14 E 557 473.57 12 13 E 558 601.00 12 13 E 560 265.01 12 13 E 555 991.16 12 12 E 554 927.77 12 12 E 556 852.47 12 13 W 562 4255.04 14 13 E 561 297.08 12 13 E 559 688.29 12 13 E 570 1050.61 12 16 E 571 1069.11 12 16 E 572 1019.07 12 16 E 573 566.88 12 16 E 574 630.97 12 16 E 575 269.88 12 16 E 576 472.09 12 16 E 577 346.43 12 16 W 578 4412.14 14 16 W 579 483.00 14 16 W 580 2210.00 14 16 W 581 38.36 14 16 E 582 1046.89 12 17 E 583 1151.39 12 17 E 584 996.51 12 17 E 585 627.63 12 17 E 586 732.19 12 17 E 587 537.45 12 17 E 588 513.44 12 17 E 589 374.42 12 17 E 590 110.15 12 17 E 591 979.37 12 18 E 592 1426.28 12 18 E 594 531.30 12 18 E 596 500.91 12 18 W 599 5659.58 14 18 E 593 960.21 12 0 E 595 645.08 12 0 E 597 430.98 12 0 E 598 343.31 12 0 W 600 1863.74 14 18 W 602 850.20 14 18 E 603 796.26 12 20 E 604 802.32 12 20 E 605 379.26 12 20 E 606 542.91 12 20 E 607 283.06 12 20 E 608 180.93 12 20 E 609 282.18 12 20 E 615 369.00 12 21 W 617 2861.14 14 21 E 625 2210.00 12 23 E 627 1209.08 12 24 E 628 1158.89 12 24 E 629 552.62 12 24 E 630 596.12 12 24 E 632 359.96 12 24 W 634 800.03 14 24 E 635 921.48 12 25 E 636 1050.72 12 25 E 637 533.66 12 25 E 638 610.74 12 25 E 639 361.79 12 25 E 640 201.10 12 25 E 645 346.92 12 26 E 610 325.46 12 21 E 611 1020.87 12 21 E 612 922.47 12 21 E 613 505.84 12 21 E 614 595.69 12 21 E 616 258.02 12 21 E 618 1053.55 12 23 E 619 845.14 12 23 E 620 420.35 12 23 E 621 548.51 12 23 E 622 293.42 12 23 E 623 339.16 12 23 E 624 374.42 12 23 W 626 483.00 14 23 E 631 142.22 12 24 W 633 2792.12 14 24 E 660 484.10 12 29 W 662 2276.24 14 29 E 650 981.35 12 28 E 651 992.28 12 28 E 652 327.45 12 28 E 653 384.95 12 28 E 641 1081.13 12 26 E 642 1042.43 12 26 E 643 490.20 12 26 E 644 516.116 12 26 E 646 326.75 12 26 W 647 2424.72 14 26 W 648 393.57 14 26 W 649 251.13 14 26 E 654 373.60 12 28 E 657 1176.43 12 29 E 658 1184.18 12 29 E 659 566.46 12 29 E 661 247.78 12 29 E 663 393.62 12 29 E 664 40.27 12 29 DATABTDwwB 4196.05 C 2332 2000 U21 1 C 2313 1804.52 V22 1 C 2337 43.50 A0 0 C 2338 6.00 A0 0 C 2345 53.35 A0 0 C 2347 38.00 A0 0 C 2348 50.00 X24 1 C 2356 264.05 A0 0 C 2354 50.00 T20 1 D 23546.64 DM 250.00 C 2355 280.60 V22 1 CC 2357 C 2358 J10 D3 1 C 2359 42.80 J10 1 C 2360 119.40 S19 1 C 2361 50 R18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 R18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 R18 1 CC 2372 CC 2373 C 2374 547.42 Q17 1 C 2375 86 F5 1 C 2376 500 U21 1 C 2377 1500 U21 1 C 2378 93.20 D3 2 C 2379 1562.80 C2 2 C 2380 3.60 F5 2 C 2381 136.16 F5 2 C 2382 114.98 R18 2 DM 250 C 2383 139.24 E4 2 C 2384 155 F5 2 C 2385 60.30 F5 2 C 2386 1151 Q17 2 C 2387 L12 R18 2 C 2388 66.80 V22 2 C 2389 33.30 V22 2 C 2390 22.80 V22 2 C 2391 L12 R18 2 C 2392 39 V22 2 C 2393 64.65 Y25 2 C 2394 85.54 V22 2 D 13878.10 DM 1865.00 C 2395 1000. U21 3 C 2396 405.38 E4 3 C 2397 64. H8 3 D 3885. DM 250.00 C 2398 14.85 R18 3 DM 1865. C 2399 7.95 R18 3 C 2400 8.52 R18 3 C 2401 29.39 V22 3 C 2402 80. W23 3 D 3222.52 C 2403 1562.80 C2 5 C 2404 1887.00 Q17 5 C 2405 28.26 U21 5 C 2406 52.68 F5 5 C 2407 53.35 F5 5 C 2408 27.00 F5 5 C 2409 301.50 U21 5 C 2410 32.23 F5 5 C 2411 110. P16 5 C 2412 1500 U21 0 C 2413 O15 R18 3 C 2414 286.41 F5 3 C 2415 12.68 F5 3 C 2416 93.20 D3 5 C 2417 7.75 K11 3 C 2418 66.34 E4 3 C 2419 1197.81 F5 5 C 2420 50 X24 3 C 2421 261.65 W23 5 C 2422 J10 P16 5 C 2423 2386 Q17 5 C 2424 28.15 W23 5 C 2425 8.95 R18 5 D 3727.5 C 2426 16.05 F5 7 C 2427 450.59 Q17 5 C 2428 621.73 H8 6 C 2429 4000. U21 6 C 2430 6.75 R18 6 C 2431 110 F5 6 C 2432 991 P16 6 C 2433 41.5 T20 6 C 2434 52 F5 6 C 2435 675 H8 6 D 10674.20 D 8655.39 D 3056.00 C 2436 40 T20 6 CC 2437 C 2438 3.47 R18 6 C 2439 K11 R18 6 C 2440 339.45 V22 6 C 2441 28.76 R18 6 C 2442 589.40 E4 6 C 2443 19.89 V22 6 C 2444 16. R18 6 CC 2445 C 2446 93.20 D3 6 C 2447 410.72 Y25 6 C 2448 695.00 H7 6 C 2449 50. A27 6 C 2450 13.00 Q17 6 C 2451 55.00 V22 7 C 2452 74.42 V22 7 C 2453 56.30 F5 7 C 2454 7.85 F5 7 C 2455 223.17 F5 7 C 2456 368.00 W23 7 C 2457 1562.80 C2 7 D 5534.20 C 2458 450.59 Q17 8 C 2459 75.65 K11 8 C 2460 923. F5 8 CC 2461 CC 2462 C 2463 Y25 R18 8 C 2464 Z26 V22 8 C 2465 50.50 R18 8 C 2466 39 F5 8 C 2467 4.80 V22 8 CC 2468 C 2469 70 R18 8 C 2470 500 U21 8 C 2471 L12 V22 8 D 6157.00 C 2472 113.56 E4 8 C 2473 9.95 R18 8 CC 2474 C 2475 368 W23 8 C 2476 616 I9 8 C 2477 208.65 F5 8 C 2478 380 H7 9 C 2479 129 F5 9 C 2480 3.95 R18 9 C 2481 7.06 B1 9 C 2482 D30 R18 9 C 2483 O15 R18 9 D 5631.50 CC 2484 C 2485 2000 U21 9 C 2486 H7 B1 9 C 2487 34.03 V22 9 C 2488 474.35 F5 9 C 2489 179.46 F5 9 C 2490 145 F5 9 D 5395 C 2491 12.30 R18 9 C 2492 H7 B1 11 C 2493 C2 V22 9 C 2494 3.50 R18 9 C 2495 46.49 E4 10 CC 2496 C 2497 117.03 D3 10 CC 2498 C 2499 1773.70 C2 11 C 2500 94.90 V22 11 C 2501 50 T20 11 C 2502 21.85 K11 11 C 2503 89.37 H8 11 D 10811.70 C 2504 547.42 Q17 11 C 2505 1203.31 V22 11 C 2506 368 W23 11 C 2507 616 I9 11 C 2508 10.80 R18 11 C 2509 23.30 F5 11 C 2510 27.60 F5 11 C 2511 126.00 F5 11 C 2512 168.26 F5 11 C 2513 230.66 Y25 11 C 2514 R18 18 11 C 2515 T20 R18 11 C 2516 42 Z26 11 C 2517 H8 R18 11 D 7237.50 C 2518 446.86 E4 11 C 2519 T20 Z26 12 C 2520 28.99 J10 12 C 2521 4.15 J10 12 C 2522 61.36 J10 12 C 2523 1210.49 J10 12 C 2524 H7 B1 12 C 2525 P16 J10 12 C 2526 45.45 F5 12 C 2527 13.30 F5 12 C 2528 387 Q17 12 C 2529 18.70 R18 12 CC 2530 C 2531 1800 U21 13 C 2532 206.25 Z26 12 C 2533 1703.40 C2 0 D 3825 C 2534 3178.45 V22 14 CC 2535 C 2536 97.67 W23 14 C 2537 55.93 E4 14 C 2538 Z26 F5 14 C 2539 550 X24 14 C 2540 106.32 H8 14 C 2541 105 D3 14 C 2542 108.06 H8 14 D 6507.66 CC 2543 C 2544 74.95 J10 14 C 2545 671.81 Q17 14 C 2546 262.60 F5 14 C 2547 50.50 F5 14 C 2548 11.70 Y25 14 C 2549 85 G6 14 C 2550 J10 R18 14 C 2551 34 G6 14 C 2552 200 F5 14 C 2553 368 W23 14 C 2554 912.90 I9 14 C 2555 500 U21 14 C 2556 90 J10 14 C 2557 120 B1 15 C 2558 2.05 R18 15 C 2559 899 Q17 15 C 2560 267.58 V22 15 D 465 D 3182.36 C 2561 100 F5 15 CC 2562 DM 200 D 5187.50 C 2563 500 H8 15 C 2564 100.75 J10 15 C 2565 3000 U21 15 C 2566 1800 U21 17 C 2567 75.21 J10 15 C 2568 563.06 E4 15 C 2569 Z26 Q17 15 C 2570 192 V22 15 C 2571 14.30 F5 15 C 2572 184.25 F5 15 D 3000 C 2573 500 U21 15 C 2574 115 D3 16 D 11960.00 C 2575 42 Z26 16 C 2576 26.12 F5 16 C 2577 81.71 E4 16 C 2578 36.81 K11 16 C 2579 368.00 W23 16 C 2580 671.81 Q17 16 C 2581 37.70 R18 16 C 2582 72 G6 16 C 2583 350 U21 16 C 2584 23.95 H8 16 C 2585 1773.70 C2 16 CC 2586 C 2587 271.60 W23 17 CC 2588 D 2107.75 D 4990 C 2589 F5 B1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 H8 17 C 2591 311.54 H8 17 C 2593 770.94 Y25 17 C 2594 109.92 V22 17 C 2595 432.25 E4 18 C 2596 B28 B1 18 C 2897 200 A27 18 C 2598 919 C2 18 C 2599 187.22 F5 18 C 2600 134 F5 18 C 2601 90.50 F5 18 C 2602 153.64 F5 18 C 2603 14850. V22 18 CC 2604 C 2605 50 X24 18 C 2606 186.36 H8 18 C 2607 85 B1 18 D 32927.50 C 2608 1352.93 Y25 19 C 2609 50 T20 19 CC 2610 CC 2611 DM 7.37 C 2612 Q17 G6 20 D 14750.00 D 2040 C 2613 33 F5 20 C 2614 9.22 F5 20 C 2615 115 D3 20 C 2616 1875.10 C2 20 C 2617 134 F5 20 C 2618 46.45 F5 20 C 2619 790.75 Q17 20 C 2620 33 Q17 20 C 2621 368 W23 28 C 2622 52.30 F5 20 C 2623 309.14 H8 20 C 2624 I9 R18 20 C 2625 1452.77 Y25 20 D 8742.50 C 2626 50 X24 20 C 2627 39.50 R18 20 CC 2628 C 2629 56 Q17 20 C 2630 164 F5 21 C 2631 400.88 E4 21 CC 2632 C 2633 8.75 R18 21 C 2634 7.50 B1 21 C 2635 48 E4 21 C 2636 12.55 K11 21 C 2637 139.70 V22 21 D 538 C 2638 1200 U21 21 C 2639 1000 U21 21 C 2640 115 D3 21 C 2641 D30 F5 21 C 2642 101.39 E4 22 D 3000 DM 3000.00 C 2643 140 V22 21 C 2644 35 Z26 22 C 2645 671.81 Q17 22 C 2646 1850.16 C2 22 C 2647 70 W23 22 C 2648 14.20 W23 22 C 2649 500 X24 22 C 2650 13.05 K11 22 C 2651 205.74 V22 22 C 2652 199.40 F5 22 C 2653 17.16 F5 16 C 2654 19.94 F5 22 C 2655 34.12 V22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 U21 22 C 2657 116.89 B1 23 D 1545 C 2659 368 W23 22 C 2660 37 R18 22 C 2661 Y25 V22 22 C 2662 O15 R18 22 C 2663 500 U21 23 C 2664 25.35 F5 23 D 6212.50 CC 2665 C 2666 50 X24 23 C 2667 96.30 R18 23 C 2668 495.42 E4 23 C 2669 145 F5 23 C 2670 8.70 B1 24 C 2671 16.80 B1 24 C 2672 C29 F5 23 C 2673 11.48 V22 23 C 2674 1397.48 Y25 23 C 2675 200 B28 23 C 2676 500 H8 23 CC 2677 C 2678 49.56 H8 24 C 2679 10000 W23 24 C 2680 110 W23 24 C 2681 1007 W23 24 C 2682 37.64 V22 24 C 2683 2000. U21 24 C 2684 49.44 B1 25 D 4762.50 C 2685 1850.16 C2 25 C 2686 35.27 K11 25 C 2687 115 D3 25 C 2688 144.36 E4 25 C 2689 50 V22 25 C 2690 39.85 R18 25 C 2691 141.22 E4 25 C 2692 552.87 Q17 25 C 2693 134.32 V22 25 CC 2694 D 1882.50 C 2695 500 H8 25 C 2696 500 H8 25 C 2697 20.32 F5 26 C 2698 750 C 2699 110.25 B1 25 C 2700 368 W23 25 C 2701 134.74 V22 25 C 2702 6.90 F5 25 C 2703 99 Q17 25 DM 11.49 DM 11.61 C 2704 36 R18 26 C 2705 635.69 A27 26 C 2706 18.50 R18 26 D 7130 C 2707 295 Z26 26 C 2708 472.87 E4 26 C 2709 O15 R18 26 C 2710 36.50 F5 26 C 2711 16.75 R18 26 C 2712 218.26 F5 26 C 2713 139.96 M13 16 CC 2714 C 2715 50 V22 26 C 2716 1500 U21 27 C 2717 1500 U21 28 C 2718 11.56 F5 26 C 2719 4812.51 W23 27 D 1545 C 2720 3920.58 Q17 27 C 2721 115 D3 27 C 2722 76.99 V22 27 C 2723 40.30 F5 27 C 2724 117.43 E4 27 C 2725 552.87 Q17 27 C 2726 127.35 F5 27 C 2727 G6 R18 27 C 2728 T20 F5 27 C 2729 52.84 K11 27 C 2730 5.74 F5 27 DM 23.10 C 2731 50 X24 27 D 592.50 C 2732 911.35 Y25 27 C 2733 46.85 F5 27 C 2734 164.11 F5 27 C 2735 1850.16 C2 27 C 2736 140 B1 27 D 1997 C 2737 368 W23 27 D 1467.50 C 2738 154.01 F5 28 C 2739 33 R18 28 C 2740 40 W23 28 C 2741 15.15 H8 28 C 2742 342.32 H8 28 C 2743 J10 Z26 28 C 2744 160 A27 28 C 2745 S19 Z26 28 C 2746 1136.47 G6 28 C 2747 174.34 H8 28 C 2748 208.22 Y25 28 C 2749 131.46 J10 28 D 13855 C 2750 145.75 J10 28 C 2751 D30 F5 28 C 2752 54 F5 28 C 2753 55 V22 28 C 2754 569.90 E4 28 C 2755 64.50 G6 28 C 2756 75 B28 29 CC 2757 C 2758 374 Q17 29 C 2759 115 D3 29 C 2760 500 U21 29 C 2761 500 U21 29 C 2762 1510 U21 29 E 496 1177.09 L12 3 E 495 1076.21 L12 3 E 494 392.55 L12 1 E 493 456.63 L12 1 E 492 497.88 L12 1 E 491 574.03 L12 1 E 490 890.20 L12 1 E 489 842.19 L12 1 E 488 788.81 L12 1 E 510 304.73 L12 5 E 509 432.47 L12 5 E 508 575.53 L12 5 E 507 502.81 L12 5 E 506 842.80 L12 5 E 505 1033.57 L12 5 E 504 254.00 L12 4 W 503 702.05 N14 4 W 502 4521.60 N14 4 W 501 387.26 N14 3 W 500 372.80 N14 3 W 499 561.91 N14 3 W 498 497.97 N14 3 E 497 926.48 L12 3 E 519 84.76 L12 12 E 520 483.00 L12 8 E 511 830.88 L12 7 E 537 464.55 L12 10 E 531 356.37 L12 9 E 529 589.96 L12 9 E 530 436.65 L12 9 E 528 393.86 L12 9 E 527 888.88 L12 9 E 526 1034.18 L12 9 E 525 991.35 L12 9 E 524 733.00 L12 8 W 522 182.00 N14 8 W 523 1549.00 N14 8 W 521 2210.00 N14 8 W 518 3391.80 N14 7 W 517 277.10 N14 7 E 516 259.01 L12 7 E 515 439.51 L12 7 E 514 398.75 L12 7 E 513 1113.18 L12 7 E 512 893.06 L12 7 W 540 4601.70 N14 10 E 532 1062.02 L12 10 E 533 1122.84 L12 10 E 534 999.70 L12 10 E 535 538.32 L12 10 E 536 643.20 L12 10 E 538 386.34 L12 10 E 539 105.03 L12 10 W 541 1703.92 N14 11 W 544 5.00 N14 11 W 545 1345.38 N14 11 E 546 924.04 L12 12 E 547 982.73 L12 12 E 548 873.83 L12 12 E 549 473.57 L12 12 E 550 542.91 L12 12 E 551 440.27 L12 12 E 553 299.63 L12 12 E 552 185.93 L12 12 E 568 343.38 L12 15 E 569 304.73 L12 15 E 567 596.15 L12 15 E 566 465.02 L12 15 E 565 948.24 L12 14 E 564 985.99 L12 14 E 563 991.80 L12 14 E 557 473.57 L12 13 E 558 601.00 L12 13 E 560 265.01 L12 13 E 555 991.16 L12 12 E 554 927.77 L12 12 E 556 852.47 L12 13 W 562 4255.04 N14 13 E 561 297.08 L12 13 E 559 688.29 L12 13 E 570 1050.61 L12 16 E 571 1069.11 L12 16 E 572 1019.07 L12 16 E 573 566.88 L12 16 E 574 630.97 L12 16 E 575 269.88 L12 16 E 576 472.09 L12 16 E 577 346.43 L12 16 W 578 4412.14 N14 16 W 579 483.00 N14 16 W 580 2210.00 N14 16 W 581 38.36 N14 16 E 582 1046.89 L12 17 E 583 1151.39 L12 17 E 584 996.51 L12 17 E 585 627.63 L12 17 E 586 732.19 L12 17 E 587 537.45 L12 17 E 588 513.44 L12 17 E 589 374.42 L12 17 E 590 110.15 L12 17 E 591 979.37 L12 18 E 592 1426.28 L12 18 E 594 531.30 L12 18 E 596 500.91 L12 18 W 599 5659.58 N14 18 E 593 960.21 L12 0 E 595 645.08 L12 0 E 597 430.98 L12 0 E 598 343.31 L12 0 W 600 1863.74 N14 18 W 602 850.20 N14 18 E 603 796.26 L12 20 E 604 802.32 L12 20 E 605 379.26 L12 20 E 606 542.91 L12 20 E 607 283.06 L12 20 E 608 180.93 L12 20 E 609 282.18 L12 20 E 615 369.00 L12 21 W 617 2861.14 N14 21 E 625 2210.00 L12 23 E 627 1209.08 L12 24 E 628 1158.89 L12 24 E 629 552.62 L12 24 E 630 596.12 L12 24 E 632 359.96 L12 24 W 634 800.03 N14 24 E 635 921.48 L12 25 E 636 1050.72 L12 25 E 637 533.66 L12 25 E 638 610.74 L12 25 E 639 361.79 L12 25 E 640 201.10 L12 25 E 645 346.92 L12 26 E 610 325.46 L12 21 E 611 1020.87 L12 21 E 612 922.47 L12 21 E 613 505.84 L12 21 E 614 595.69 L12 21 E 616 258.02 L12 21 E 618 1053.55 L12 23 E 619 845.14 L12 23 E 620 420.35 L12 23 E 621 548.51 L12 23 E 622 293.42 L12 23 E 623 339.16 L12 23 E 624 374.42 L12 23 W 626 483.00 N14 23 E 631 142.22 L12 24 W 633 2792.12 N14 24 E 660 484.10 L12 29 W 662 2276.24 N14 29 E 650 981.35 L12 28 E 651 992.28 L12 28 E 652 327.45 L12 28 E 653 384.95 L12 28 E 641 1081.13 L12 26 E 642 1042.43 L12 26 E 643 490.20 L12 26 E 644 516.116 L12 26 E 646 326.75 L12 26 W 647 2424.72 N14 26 W 648 393.57 N14 26 W 649 251.13 N14 26 E 654 373.60 L12 28 E 657 1176.43 L12 29 E 658 1184.18 L12 29 E 659 566.46 L12 29 E 661 247.78 L12 29 E 663 393.62 L12 29 E 664 40.27 L12 29 INTERPOK[ program interpok; var output : text; begin rewrite(output); writeln('Interpreter OK') end. TEST7mq +PROGRAM TEST(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR LINE : LINESTRING; I : INTEGER; NBYTES : INTEGER; STR :BIGSTR; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; {$I GCHN.PI} {$I OPEN.PI} {$I CLOSE.PI} {$I DELETE.PI} {$I CRAND.PI} {$I WRL.PI} {$I RDL.PI} {$I RDS.PI} {$I WRS.PI} PROCEDURE ADDZEROTO( VAR STR : BIGSTR); { ADD A ZERO BYTE TO STR TO MAKE IT RDOS COMPATIBLE AND LENGTHN THE STRING BY ONE} BEGIN {$R-} STR[0] := CHR(LENGTH(STR)+1); STR[LENGTH(STR)] := CHR(0); {$R^} END; BEGIN GCHN(I); STR := 'FOBAR'; ADDZEROTO(STR); CRAND(STR,SYSERROR,ERRORNUMBER); OPEN(I,STR,SYSERROR,ERRORNUMBER); WRITESEQUENTIAL(I,'THIS IS A TEST',14,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORNUMBER); OPEN(I,STR,SYSERROR,ERRORNUMBER); NBYTES := 14; READSEQUENTIAL(I,STR,NBYTES,SYSERROR,ERRORNUMBER); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN(OUTPUT,'LENGTH OF STRING =',LENGTH(STR),' NBYTES=',NBYTES); WRITELN(OUTPUT,STR); WRITELN(' HIT CTLA');READLN; END. T16/ PROGRAM T16(INPUT,OUTPUT); VAR CHR : ARRAY [1..80] OF CHAR; X,Y,Z : REAL; IPEN,I,J : INTEGER; TESTCHAR : CHAR; BEGIN WHILE NOT EOF(INPUT) DO BEGIN I := 1;TESTCHAR := 'A'; WRITELN(OUTPUT,'PROMPT T16'); WHILE TESTCHAR <> ' ' DO BEGIN READ (INPUT,CHR[I]); TESTCHAR := CHR[I]; I := I+1; END; READ(INPUT,X,Y,Z,IPEN); FOR J := 1 TO I DO WRITE(OUTPUT,CHR[J]); WRITE(OUTPUT,X,Y,Z,IPEN); WRITELN(OUTPUT,'A'); END END. SEDITSVSEDITSVREALPRINTPA]  :PROGRAM TEST (INPUT,OUTPUT); VAR I,DIGIT : INTEGER; R,R1,R2 : REAL; STR : STRING(11); PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-R2*10); R1 := R2 WRITELN(' GETDIGIT,DIGIT=',DIGIT); END{GETDIGIT} BEGIN {MAIN} {do decimal part first} WRITELN(' ENTER A REAL NUMBER'); READLN(R); R1=R*100; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[11-I] := CHR(DIGIT) END I :=I+1 STR[11-I] :='.' {do integer part} R1 :=R; WHILE ( R1>0.0 AND I<8) DO BEGIN GETDIGIT; STR[11-I] :=CHR(DIGIT) IF I = 6 THEN BEGIN I := I+1; STR[11-I] := ',' END I := I+1 END END. T3MC  CHATR TEST3.PX 0 CHATR TEST3.PA 0 DELETE/V TEST3.PA XFER TEST3 TEST3.PA/R CHATR TEST3.PA *P PASINTERP PASCALO/S/V/A/L TEST3 CHATR TEST3.PX *P CMC3CHATR CBOOK.(PA,PX) 0 DELETE/V CBOOK.PA XFER CBOOK CBOOK.PA/R CHATR CBOOK.PA *P PASINTERP PASCALO/A/S/V/L CBOOK CHATR CBOOK.PX *P 197804 /B 8273.34 C 2499 1773.70 C 2500 94.90 C 2501 50 C 2502 21.85 C 2503 89.37 D 10811.70 C 2504 547.42 C 2505 1203.31 C 2506 368 C 2507 616 C 2508 10.80 C 2509 23.30 C 2510 27.60 C 2511 126.00 C 2512 168.26 C 2513 230.66 C 2514 18 C 2515 20 C 2516 42 C 2517 8 D 7237.50 C 2518 446.86 C 2519 20 C 2520 28.99 C 2521 4.15 C 2522 61.36 C 2523 1210.49 C 2524 7 C 2525 16 C 2526 45.45 C 2527 13.30 C 2528 387 C 2529 18.70 CC 2530 C 2531 1800 C 2532 206.25 C 2533 1703.40 D 3825 E 5096.35 W 4255.04 187805TOTALPA  PROGRAM TOTAL(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; TOTAL,AMOUNT : REAL; I,CHECKNUMBER : INTEGER; INFILE,OUTFILE : TEXT; (*$I GETREAL.PI *) (*$I REALPRINT.PI *) (*$I GETINTEGER.PI *) BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); TOTAL := 0.0; WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); I := 2; { CHECKNUMBER := GETINTEGER(STR,I);} AMOUNT := GETREAL(STR,I); TOTAL := TOTAL + AMOUNT; { WRITE(OUTFILE,STR[1],CHECKNUMBER : 10);} REALPRINT(OUTFILE,AMOUNT); WRITELN(OUTFILE); END; WRITE(OUTFILE,' ');REALPRINT(OUTFILE,TOTAL);WRITELN(OUTFILE); END. PLMCprqCHATR PL.PA 0 CHATR PL.PX 0 DELETE PL.PA XFER PL PL.PA/R CHATR PL.PA *WP PASINTERP PASCALO/S PL CHATR PL.PX *WP 197805 C 2534 3178.45 CC 2535 C 2536 97.67 C 2537 55.93 C 2538 26 C 2539 550 C 2540 106.32 C 2541 105 C 2542 108.06 D 6507.66 CC 2543 C 2544 74.95 C 2545 671.81 C 2546 262.60 C 2547 50.50 C 2548 11.70 C 2549 85 C 2550 10 C 2551 34 C 2552 200 C 2553 368 C 2554 912.90 C 2555 500 C 2556 90 E 4635.31 C 2557 120 C 2558 2.05 C 2559 899 C 2560 267.58 D 465 D 3182.36 C 2561 100 CC 2562 DM 200 D 5187.50 C 2563 500 C 2564 100.75 C 2565 3000 C 2566 1800 C 2567 75.21 C 2568 563.06 C 2569 26 C 2570 192 C 2571 14.30 C 2572 184.25 D 3000 C 2573 500 C 2574 115 C 2575 42 C 2576 26.12 C 2580 671.81 C 2581 37.70 C 2582 72 C 2583 350 C 2584 23.95 C 2585 1773.70 CC 2586 C 2587 271.60 CC 2588 T26bUPROGRAM T26; PROCEDURE PCHA (VAL : BOOLEAN);EXTERNAL; BEGIN PCHA ( TRUE ); PCHA (FALSE); END. CROSSREF+PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : ALFA; F : TEXT; A : ARRAY [1..C1] OF CHAR; PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A'..'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; PACK(A,1,ID);SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. TESTMCl CHATR TEST.PA 0 CHATR TEST.PX 0 DELETE/V TEST.PA XFER TEST TEST.PA/R PASINTERP PASCALO/S/V TEST CHATR TEST.PA *WP CHATR TEST.PX *WP PL5PX rq $PLO Copyright (C) 1980 Rational Data Systems  * ֦ ****7 ^  6á "֦PROGRAM INCOMPLETE7  7  ' ֥襆7Q蚹֥7 ֥Q Qc  á ɡ_ ġث _   á_  ق-  -  ššd q6 š+:á=áo[v)LTš ֦PROGRAM TOO LONG7 dػ  Z$8d٥ ٢ ؚع6š٢ /٢٢ ٢>+n d d  < á5 áá F á  ȡPdإ7 ۥo  áN h ֥饂áQ á 9d! $Cáš%á á@ ``(`á1 F á (á1 lát??Vڹ0; 3 + #   71+)áa á dˡ á ˡdáIˡ9 á #dááMֳá dáZֳ" "á ֳ" áYáTֳá d d  š á& á áˡá& á áˡáeá áٳá ֥ ֥饂dddߢ ֳ"  DDCxš!.֦ START OF PL/07ʁdູÚ˚ɚĚŚUȚ$ V/X>S7 ʁٚښNB8á H>6á֦ END OF PL/07"<>dJƆ7ƆuƆ7OUTPUTƅƅƅINPUTƅƆ7A;ȡʆЫoʆá-  BEGIN -  CALL -  CONST -  DO -  END -  IF -  ODD -  PROCEDURE -   THEN -   VAR -   WHILE d d d d d d d d d  d  d  o+o-o*o/o(o)o=o,o.o! o< o> o" o# o;oLIT oOPR oLOD oSTO oCAL oINT oJMP oJPC 8P@֥7  ˡ á$֦ ERRORS IN PL/0 PROGRAM7֥7Ɔ7ƅ*~2  f  8H"dz&1980D2 ] 810 10 EM 810 17 15 811 11 EM 811 604.28 15 812 12 EM 812 643.69 15 813 16 C 813 980.89 14 814 18 CC 814 816 25 C 816 1581.88 12 817 17 C 817 205.18 12 818 55 EM 818 140 27 819 26 C 819 1581 12 820 56 EM 820 1581 12 821 65 EM 821 195.18 12 822 66 EM 822 1415.95 12 823 117 EM 823 1000 12 824 131 EM 824 333.14 15 825 132 EM 825 378.68 15 826 133 EM 826 2590.51 14 827 134 EM 827 425.95 12 828 135 EM 828 82.50 26 829 136 EM 829 138.70 14 830 138 EM 830 1425.95 12 831 139 EM 831 205.18 12 832 140 EM 832 209.37 12 833 57 EM 833 948.57 12 834 58 EM 834 912.14 12 835 59 EM 835 17 15 836 60 EM 836 181.73 14 837 61 EM 837 482.61 15 838 62 EM 838 2742.40 14 839 63 CC 839 840 64 EM 840 622.50 27 841 137 EM 841 1425.95 12 842 192 EM 842 209.37 12 843 197 EM 843 1527.87 12 844 193 EM 844 1527.87 12 845 194 EM 845 290.37 12 846 195 EM 846 3584 14 847 198 EM 847 1527.87 12 848 199 EM 848 209.37 12 849 200 EM 849 1000 12 850 201 EM 850 9000 12 851 221 EM 851 4000 36 852 227 EM 852 1527.87 12 853 239 EM 853 540 15 854 238 EM 854 48.65 12 3040 1 C 3040 704.45 3064 2 CC 3064 3066 3 C 3066 250 27 3067 20 C 3067 62 1 3068 32 C 3068 10 18 3069 4 C 3069 96 4 3070 5 CC 3070 3071 22 C 3071 330 20 3075 6 C 3075 23 5 3076 7 C 3076 100 24 3077 8 C 3077 10.77 6 3078 9 C 3078 22.50 4 3081 19 C 3081 35 4 3082 267 C 3082 1350.12 25 3083 21 C 3083 34 6 3084 273 CC 3084 3085 23 C 3085 50.99 5 3086 33 C 3086 138.02 25 3087 24 CC 3087 3088 34 C 3088 1040 23 3089 274 CC 3089 3090 35 C 3090 5324 9 3091 36 C 3091 250 8 3092 37 C 3092 206.59 20 3093 38 C 3093 15.40 22 3094 39 C 3094 120.70 4 3095 40 C 3095 20 26 3096 41 C 3096 775 9 3097 42 C 3097 32.88 10 3098 43 C 3098 74.05 22 3099 45 C 3099 4000 32 3100 275 CC 3100 3101 46 C 3101 1557.44 25 3102 276 CC 3102 3103 48 C 3103 42.50 10 3104 47 C 3104 40 33 3105 49 C 3105 504.39 25 3106 50 C 3106 119.98 4 3107 51 C 3107 793.50 9 3108 52 C 3108 1537.50 27 3109 53 C 3109 3394.50 6 3110 54 C 3110 25 3 3111 277 CC 3111 3112 92 C 3112 25 26 3113 67 C 3113 79.95 5 3114 68 C 3114 69.95 10 3115 69 C 3115 200 20 3116 70 C 3116 225 27 3117 71 C 3117 4.65 10 3118 93 C 3118 1.30 11 3119 72 C 3119 48 18 3120 73 C 3120 1940.43 25 3121 74 C 3121 269.78 17 3122 94 C 3122 100 26 3123 75 C 3123 12.24 4 3124 76 C 3124 93.27 15 3125 77 C 3125 181.78 15 3126 78 C 3126 243.77 14 3127 79 C 3127 68.45 23 3128 95 C 3128 7.86 22 3129 80 C 3129 128.35 5 3130 81 C 3130 25.98 5 3131 260 CC 3131 3132 82 C 3132 15.90 5 3133 83 C 3133 125.81 22 3134 84 C 3134 20.47 22 3135 85 C 3135 85.15 22 3136 268 C 3136 16.00 1 3137 44 CC 3137 3138 96 C 3138 185.26 4 3139 97 C 3139 19.37 10 3140 98 C 3140 6.17 10 3141 99 C 3141 6.46 10 3142 100 C 3142 3.96 10 3143 101 C 3143 3.62 10 3144 102 C 3144 42.08 22 3145 103 C 3145 46.50 3 3146 104 C 3146 36.70 11 3147 105 C 3147 27.73 10 3148 106 C 3148 25.95 5 3149 107 C 3149 6 33 3150 108 C 3150 95 33 3151 109 C 3151 78.50 33 3152 110 C 3152 1000 25 3153 111 C 3153 227.40 25 3154 112 C 3154 100 8 3155 113 C 3155 160.43 4 3156 114 C 3156 835.38 25 3157 115 C 3157 781.68 25 3158 118 C 3158 21.92 5 3159 119 C 3159 12 33 3160 122 C 3160 155.47 17 3161 123 C 3161 34 10 3162 146 C 3162 39.95 18 3163 124 C 3163 594 17 3164 147 C 3164 130.46 14 3165 120 C 3165 638.45 27 3166 125 C 3166 465 4 3167 121 C 3167 15 5 3168 126 C 3168 83.85 3 3169 127 C 3169 200 24 3170 148 C 3170 120.97 4 3171 149 C 3171 18 33 3172 150 C 3172 36.70 10 3173 151 C 3173 947.50 25 3174 152 C 3174 80 26 3175 153 C 3175 204 5 3176 169 C 3176 50 22 3177 154 C 3177 496.56 25 3178 155 C 3178 136.20 25 3179 156 C 3179 729 17 3180 157 C 3180 170 23 3181 170 C 3181 950 7 3182 158 C 3182 121.30 11 3183 159 C 3183 25.91 22 3184 160 C 3184 127 17 3185 171 C 3185 125 23 3186 161 C 3186 10.08 23 3187 172 C 3187 174.75 23 3188 173 C 3188 290.64 4 3189 174 C 3189 1372 27 3190 175 C 3190 3.28 5 3191 176 C 3191 18 5 3192 177 C 3192 5.68 23 3193 179 C 3193 37.25 23 3194 180 C 3194 147.08 23 3195 181 C 3195 17 23 3196 182 C 3196 50 21 3198 116 C 3198 28.30 3 3199 183 C 3199 26 33 3200 162 C 3200 1020 27 3201 184 C 3201 2764.81 27 3202 185 C 3202 948.17 25 3203 178 C 3203 100 27 3204 186 C 3204 55.20 5 3205 187 C 3205 14.25 7 3206 188 C 3206 10 6 3207 189 C 3207 7.58 5 3208 190 C 3208 60.59 2 3209 191 C 3209 250.65 25 3210 202 C 3210 720 27 3211 203 C 3211 69.37 2 3212 204 C 3212 1.81 11 3213 205 C 3213 176.55 25 3214 206 C 3214 10.46 25 3215 207 C 3215 18.28 5 3216 269 C 3216 64.28 5 3217 209 C 3217 547.32 17 3218 210 C 3218 136.48 17 3219 211 C 3219 48.60 10 3220 212 C 3220 170 23 3221 213 C 3221 10 8 3222 216 C 3222 450 27 3223 217 C 3223 10.64 5 3224 214 C 3224 227.40 17 3225 215 C 3225 36 5 3226 218 C 3226 93.71 4 3227 219 C 3227 74.13 2 3228 223 C 3228 102.08 4 3229 222 C 3229 2774.75 23 3230 220 C 3230 31 26 3231 224 C 3231 35 18 3232 228 C 3232 125 23 3233 229 C 3233 3654.15 23 3234 270 C 3234 298.80 25 3235 230 C 3235 37 33 3236 231 C 3236 42.50 33 3237 232 C 3237 2282.26 6 3238 233 C 3238 138.17 33 3239 234 C 3239 95.64 2 3240 235 C 3240 3.70 5 3241 236 C 3241 4.33 5 3242 237 C 3242 35.39 18 3243 245 C 3243 28.20 3 3244 246 C 3244 341.40 10 3245 247 C 3245 500 25 3246 248 C 3246 328.44 10 3247 249 C 3247 784.13 25 3248 250 C 3248 125.30 11 3249 251 C 3249 5.76 23 3250 252 C 3250 50 24 3251 254 C 3251 100 2 3252 253 C 3252 1760 27 3253 255 C 3253 43 1 3254 256 C 3254 290.77 4 3255 257 C 3255 100 2 3258 258 C 3258 42.50 33 3259 259 C 3259 4.60 23 3260 261 C 3260 820.84 25 3261 262 C 3261 732.30 8 3262 271 C 3262 88.41 14 3263 263 C 3263 50 22 3264 264 C 3264 296.31 23 3265 265 C 3265 168.01 25 3268 272 C 3268 14.00 26 3276 278 C 3276 146.75 11 3277 279 C 3277 60 1 3278 280 C 3278 19.01 11 3279 281 C 3279 72.18 5 BTREEPX rr xBTREE Copyright (C) 1980 Rational Data Systems  ɡ[ġ)ڢڢáڢ ȡá  Zڢġ)ڢڢáڢ ȡ*٢áڢȡ,٢á٢ ȡ*٢á٢ٚ G3ٟá ؚ    ܂ ȡ ġɡܕš#  *á    ɡآ٢آ٢š  ȡ.  ٢ ܢ  áآܢآܚܢܢߕ ޮ ȡ.  ܢ ܢ ߂ á߂~  ȡ.  ٢ ܢ  áڮ  ȡ.  آ آ  ááآš  ġ/   ٢ ߂٢  á٢آ٢ߕ  ġ/   ٢ ܢ ނ á٢ܢآܢآٚ߂oܢآܢ  ȡ.  ܢ ނ٢  á4:uW \@ۢڟˡKآآɚ~ٟá0֦KEY IS NOT IN TR  EE   ۂ ȡ ġšá  ەšbߟáK  ɚݮ ȡ,    áP ؟ˡٮȡ֦ áȡ$ۢ á֥ȡ ۢá ^ƀƀƀOUTPUTFINPUTƀ֥ ˡl֦ SEARCH KEY ʁ ʁ ,́  蚧 ֥ ֥ ˡK֦ DELETE KEY ʁ ʁ  á֥ ƀ` ,2INPUT$TTIT36^* PROGRAM T36(INPUT,OUTPUT); TYPE INTSTR = ARRAY [1..10] OF INTEGER; VAR INCHNL,OUTCHNL,NBYTE,NBYTESREAD,ERROR,NBYTESWROTE,BYTE:INTEGER; NEWBYTE,STRING:INTSTR; PROCEDURE RDSQ(IOCH:INTEGER;VAR BUFFER:INTSTR; NBYTES:INTEGER;VAR NBYTESREAD:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE PBYT(VAR BYTE:INTEGER;POSITION:INTEGER;STRING:INTSTR);EXTERNAL; PROCEDURE GBYT(VAR BYTE:INTEGER;POSITION:INTEGER;STRING:INTSTR);EXTERNAL; PROCEDURE SWAP(VAR WORD:INTEGER);EXTERNAL; PROCEDURE RDLI(CHANNEL:INTEGER;VAR STRING:INTSTR;VAR NBYTESREAD:INTEGER; VAR ERROR:INTEGER);EXTERNAL; PROCEDURE WRLI(CHANNEL:INTEGER;STRING:INTSTR;VAR NBYTESWROTE: INTEGER;VAR ERROR:INTEGER);EXTERNAL; BEGIN INCHNL:=1;OUTCHNL:=2; REPEAT WRITELN(OUTPUT,' ENTER S','TRING CR'); RDLI(INCHNL,STRING,NBYTESREAD,ERROR); WRITELN(OUTPUT,' ENTER B','YTE TO B','E EXTRAC','TED'); READLN(INPUT,NBYTE); GBYT(BYTE,NBYTE,STRING); WRITELN(OUTPUT,BYTE); WRITELN(OUTPUT,' ENTER B','YTE TO BE PUT'); RDSQ(INCHNL,NEWBYTE,1,NBYTESREAD,ERROR); SWAP(NEWBYTE[1]); PBYT(NEWBYTE[1],NBYTE,STRING); WRLI(OUTCHNL,STRING,NBYTESWROTE,ERROR); UNTIL INCHNL = 2 END. T. &EDITSV  /  VG l, t 9 t%COPYRIGHT (C) DGC,1972,1973,1974 ALL RIGHTS RESERVEDEDIT REV 01.00 \8) ))az h  8 3S9X0 )    1q  9l 8KKCCCGCCCCCCCCCCC!G4 !E  PCCC)BKPCP  ):  C  !4 " )- ? S " )$ ? SSQ!"0 B 32! *3 *OFCOM.CMUY  (C#+ƥ)t 1#PC  k#)ePCC!] +!=G!0 B C 5)Y E)X 13 *3+P +1I   F!0 B D0Z""Ƃ2+J8PS!G (n#C)  ) +3 ))  ## +3 )*+  k#CCCC Z)c  U) )^ )\1XKK+PP;9K!QP8K :+K &)ˍ  ,)Ǎ  5)K/ (3 (# C7  ###C8S3 )1": -0I^@ >{{A VBCyD]E)F (G8H0IJxKTLMNPQRSTU5WEX=Y RZ:+=7.> # !- - -88   "C3 ) 1 *   "KYEHDRNSCZ?`H#  (1$` (#  (b3 (#  ("1` ( ( ( XK+  (+  (!` G+  /=3ۭ ? x  C ($#CRC))  p!n`)k` ()" k  + C 8S)  ($C[  R.SC0*8SCK):K)9KKC3 ))/ )) )) K3 *)K+ K3 S3 *#) K ($9.:8SCCPK3 )) !C3 )3 *3 *#C+ +  F+ߪ ? @3 ΅C3 C# %!`3 )? # 3 !`+ ] ' )`!`  CCCCC (41` (!` F)PC!`)a ) !`  ).BU %#C u3 *# 3 #C i3 * +K a3 *#+  3! *8S#+ 1#)-` ,+)&`K (P3 (9#C 53 *5# ? ? ) ? ? 8SCK!YC3 )1 C3 )1 +  8S3 )) 8C3 ) /C)+ ;)) 2+  (>) !) 8#3 ?#  3# # 03 4CCCCC OCRWI+ -3 "K(+% ( +3 CC!` " 9\ ?4\ ?4!` +ઃ#C 3)7 )?. ?K)4  (d҄)'  (')"  ($!CC3) )? ?)  (FC)  (8  3 (8C+#+ +C )K\Ґ"))88S3KPSK3 )+K u ) PK j 8S3    k 8S+38S3 8S3 ))* %# +#`1+ K+ 1 ( 1C (P? 8C#C#C 8D#CD8#D8C#P+)XL (#邊C )MC (#C!C ) ) )l  3 *  k3 *# )(5& ? ?1 (d#5 ?3P5 ? 3ҐB  918SC#C#C3 )) C3 ))3ǵ #C#C#C (8C'S C C3 ) +3 )+1 8S +C  p\Ґ:) Z88C#C   8C#C  #3SSC3 )3 *8C#C v#+эK  C  3 ))]8#8S#邐C+3 +3+1͠K+9P3S3KKʐ'G)#1/ 3 *3 ))Í 3 *#C3 )3 *#C (.#+3 SQ8CK##+ C #Ђ  8C#JPCȅC C  R8C#+C C #߂8C#@3ZPS3 ))P)L /+/)E 5#C#CK#+3KSCe S󂐍K'G#SG (#CCC3S ) +3+Ð?DM\8#+3+1 "P8C  C3 ) C)A # (0#PJ,+]+KC53 ) #3 ?#K3 )) 3 .?#ʂ # C 4 " WIK! O (3 ) +3 )) 8C#CKS#3+3 )1ו8#JS+UPP3)  )C˅  ! 3 ?  ( 98#8#S+ KK+8CCC 2 (N3 K#3 ?)K3 )3 )I   (N #+ʍ#߂3 * (K!$ !! !"  (!3 *!3 * (+Ϋ  ! ( k \8CS14# 19SC7 !01* K +3 !3 + ! 8K+  +3 * 'd 0 @+ 8C3 )1 *   (_ 5+ 8- ;O P! >? #C#+  3 )) )m !-#C!`C+ 3!^ *!`CCC C#C !18SC)I)D!?)' &): () K7S/K/7  KJ# *#+̦ %+!  !oK+ !#) C!  $  \\8C! P3 3ڭP ? z98SP3!2P ? #)1ԧ 1 !C1"  +#3)1 1)3 S! % +ը! K +@Z<  f?f?TEXT BUFFER FULL DURING INSERT TEXT BUFFER FULL WHILE READING COMMAND BUFFER FULL;EXECUTING COMMAND ??PARITY,LINE # STR NOT FOUND MACRO UNDEFINED OR ERROR IN MACROOUTPUT FILE IN USE NO OUTPUT FILENO INPUT FILEFILE NAME IN USE-ILLEGAL FILE NAME-NO SUCH FILE-FILE CAN'T BE USED FOR INPUTFILE CAN'T BE USED FOR OUTPUTLINE TOO LONGDISK FILE READ ERRORSAVE COMMAND BUFFER?(1-YES, 0-NO) ENTER FILENAME ILLEGAL ARGUMENT IN COMMAND LINE SYSTEM ERROR # : INPUT IN USE!-OUTPUT IN FILE -RENAMING ERROR,OUTPUT IN -FILE IS IN USE!-INPUT FILE- UNKNOWN ERROR EXECUTION ABORTED EDITING FILE OPENED BY UY OR UN - USE UE,US OR UC TO CLOSE! ILLEGAL WINDOW WIDTH PAGE MODE LINES WIDE WINDOW MODE   ! )8#)/ +3 )!% 3## +C3 )Y83) ? u 8SC) ! #8) )W 3SPCC#3$ )  +C K## KK8+P#)*# !&)3 ? ##!P ߂ C3! P ? # b fj 9 V5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`197806I> D 2107.75 D 4990 C 2589 5 DM 14.60 DM 7.50 D 5680 C 2590 105.78 C 2591 311.54 C 2595 432.25 C 2596 28 C 2897 200 C 2598 919 C 2599 187.22 C 2600 134 C 2601 90.50 C 2602 153.64 C 2603 14850. CC 2604 C 2605 50 C 2606 186.36 C 2607 85 E 5817.44 W 8373.52 D 32927.50 C 2608 1352.93 C 2609 50 CC 2610 CC 2611 DM 7.37 C 2612 17 D 2040 DATA6rrB 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 0 0 C 2338 6.00 0 0 C 2345 53.35 0 0 C 2347 38.00 0 0 C 2348 50.00 24 1 C 2356 264.05 0 0 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 1 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C 2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 2 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 DM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 0 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.00 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 11 C 2503 89.37 8 11 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.00 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 0 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106.32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 C 2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 2568 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 109.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2897 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 C 2621 368 23 28 C 2622 52.30 5 20 C 2623 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 C 2638 1200 21 21 C 2639 1000 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 205.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 16 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 22 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 23 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 24 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 C 2699 110.25 1 25 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 365.69 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 16 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 3920.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 C 2762 1510 21 29 1980D3   1 C 3040 704.45 2 C 3066 250 27 3 C 3069 96 4 4 C 3075 23 5 5 C 3076 100 24 6 C 3077 10.77 6 7 C 3078 22.50 4 8 EM 810 17 15 9 EM 811 604.28 15 10 EM 812 643.69 15 11 D 140 34 12 D 8347.06 34 13 D 2086.75 14 C 813 980.89 14 15 C 817 205.18 12 16 C 3081 35 4 17 C 3067 62 1 18 C 3083 34 6 19 C 3071 330 20 20 C 3085 50.99 5 21 C 816 1581.88 12 22 C 819 1581 12 23 D 1468.38 34 24 D 871.98 34 25 D 13056 34 26 D 12436.99 34 27 D 435.99 34 28 C 3068 10 18 29 C 3086 138.02 25 30 C 3088 1040 23 31 C 3090 5324 9 32 C 3091 250 8 33 C 3092 206.59 20 34 C 3093 15.40 22 35 C 3094 120.70 4 36 C 3095 20 26 37 C 3096 775 9 38 C 3097 32.88 10 39 C 3098 74.05 22 40 C 3099 4000 32 41 C 3101 1557.44 25 42 C 3104 40 33 43 C 3103 42.50 10 44 C 3105 504.39 25 45 C 3106 119.98 4 46 C 3107 793.50 9 47 C 3108 1537.50 27 48 C 3109 3394.50 6 49 C 3110 25 3 50 EM 818 140 27 51 EM 820 1581 12 52 EM 833 948.57 12 53 EM 834 912.14 12 54 EM 835 17 15 55 EM 836 181.73 14 56 EM 837 482.61 15 57 EM 838 2742.40 14 58 EM 840 622.50 27 59 EM 821 195.18 12 60 EM 822 1415.95 12 61 C 3113 79.95 5 62 C 3114 69.95 10 63 C 3115 200 20 64 C 3116 225 27 65 C 3117 4.65 10 66 C 3119 48 18 67 C 3120 1940.43 25 68 C 3121 269.78 17 69 C 3123 12.24 4 70 C 3124 93.27 15 71 C 3125 181.78 15 72 C 3126 243.77 14 73 C 3127 68.45 23 74 C 3129 128.35 5 75 C 3130 25.98 5 76 C 3132 15.90 5 77 C 3133 125.81 22 78 C 3134 20.47 22 79 C 3135 85.15 22 80 D 435.99 34 81 D 906.32 34 82 D 435.99 34 83 D 1628 34 84 D 3000 34 85 D 11481.06 34 86 C 3112 25 26 87 C 3118 1.30 11 88 C 3122 100 26 89 C 3128 7.86 22 90 C 3138 185.26 4 91 C 3139 19.37 10 92 C 3140 6.17 10 93 C 3141 6.46 10 94 C 3142 3.96 10 95 C 3143 3.62 10 96 C 3144 42.08 22 97 C 3145 46.50 3 98 C 3146 36.70 11 99 C 3147 27.73 10 100 C 3148 25.95 5 101 C 3149 6 33 102 C 3150 95 33 103 C 3151 78.50 33 104 C 3152 1000 25 105 C 3153 227.40 25 106 C 3154 100 8 107 C 3155 160.43 4 108 C 3156 835.38 25 109 C 3157 781.68 25 110 C 3198 28.30 3 111 EM 823 1000 12 112 C 3158 21.92 5 113 C 3159 12 33 114 C 3165 638.45 27 115 C 3167 15 5 116 C 3160 155.47 17 117 C 3161 34 10 118 C 3163 594 17 119 C 3166 465 4 120 C 3168 83.85 3 121 C 3169 200 24 122 D 1834.55 34 123 D 435.99 34 124 D 802.29 34 125 EM 824 333.14 15 126 EM 825 378.68 15 127 EM 826 2590.51 14 128 EM 827 425.95 12 129 EM 828 82.50 26 130 EM 829 138.70 14 131 EM 841 1425.95 12 132 EM 830 1425.95 12 133 EM 831 205.18 12 134 EM 832 209.37 12 135 D 905 34 136 D 594 34 137 D 520 34 138 D 435.99 34 139 DM 18.88 140 C 3162 39.95 18 141 C 3164 130.46 14 142 C 3170 120.97 4 143 C 3171 18 33 144 C 3172 36.70 10 145 C 3173 947.50 25 146 C 3174 80 26 147 C 3175 204 5 148 C 3177 496.56 25 149 C 3178 136.20 25 150 C 3179 729 17 151 C 3180 170 23 152 C 3182 121.30 11 153 C 3183 25.91 22 154 C 3184 127 17 155 C 3186 10.08 23 156 C 3200 1020 27 157 D 13331.89 34 158 D 11943.74 34 159 D 4546.81 34 160 D 129.24 34 161 D 3229.35 34 162 D 715 34 163 C 3176 50 22 164 C 3181 950 7 165 C 3185 125 23 166 C 3187 174.75 23 167 C 3188 290.64 4 168 C 3189 1372 27 169 C 3190 3.28 5 170 C 3191 18 5 171 C 3192 5.68 23 172 C 3203 100 27 173 C 3193 37.25 23 174 C 3194 147.08 23 175 C 3195 17 23 176 C 3196 50 21 177 C 3199 26 33 178 C 3201 2764.81 27 179 C 3202 948.17 25 180 C 3204 55.20 5 181 C 3205 14.25 7 182 C 3206 10 6 183 C 3207 7.58 5 184 C 3208 60.59 2 185 C 3209 250.65 25 186 EM 842 209.37 12 187 EM 844 1527.87 12 188 EM 845 290.37 12 189 EM 846 3584 14 190 D 531.21 34 191 EM 843 1527.87 12 192 EM 847 1527.87 12 193 EM 848 209.37 12 194 EM 849 1000 12 195 EM 850 9000 12 196 C 3210 720 27 197 C 3211 69.37 2 198 C 3212 1.81 11 199 C 3213 176.55 25 200 C 3214 10.46 25 201 C 3215 18.28 5 202 3216 64.28 5 203 C 3217 547.32 17 204 C 3218 136.48 17 205 C 3219 48.60 10 206 C 3220 170 23 207 C 3221 10 8 208 C 3224 227.40 17 209 C 3225 36 5 210 C 3222 450 27 211 C 3223 10.64 5 212 C 3226 93.71 4 213 C 3227 74.13 2 214 C 3230 31 26 215 EM 851 4000 36 216 C 3229 2774.75 23 217 C 3228 102.08 4 218 C 3231 35 18 219 D 4888.40 34 220 D 3435.99 34 221 EM 852 1527.87 12 222 C 3232 125 23 223 C 3233 3654.15 23 224 C 3235 37 33 225 C 3236 42.50 33 226 C 3237 2282.26 6 227 C 3238 138.17 33 228 C 3239 95.64 2 229 C 3240 3.70 5 230 C 3241 4.33 5 231 C 3242 35.39 18 232 EM 854 48.65 12 233 EM 853 540 15 234 D 3148 34 235 D 296.31 34 236 D 1403.43 34 237 D 174 34 238 D 2600 30 239 C 3243 28.20 3 240 C 3244 341.40 10 241 C 3245 500 25 242 C 3246 328.44 10 243 C 3247 784.13 25 244 C 3248 125.30 11 245 C 3249 5.76 23 246 C 3250 50 24 247 C 3252 1760 27 248 C 3251 100 2 249 C 3253 43 1 250 C 3254 290.77 4 251 C 3255 100 2 252 C 3258 42.50 33 253 C 3259 4.60 23 254 C 3260 820.84 25 255 C 3261 732.30 8 256 C 3263 50 22 257 C 3264 296.31 23 258 C 3265 168.01 25 259 D 435.99 34 260 C 3082 1350.12 25 261 C 3136 16.00 1 262 C 3216 64.28 5 263 C 3234 298.80 25 264 C 3262 88.41 14 265 C 3268 14.00 26 266 C 3276 146.75 11 267 C 3277 60 1 268 C 3278 19.01 11 269 C 3279 72.18 5 270 CC 3064 271 CC 3070 272 CC 814 273 CC 3087 274 CC 3137 275 CC 839 276 CC 3131 277 CC 3084 278 CC 3089 279 CC 3100 280 CC 3102 281 CC 3111 0 270 CC 3064 0 271 CC 3070 0 272 CC 814 0 273 CC 3087 0 274 CC 3137 0 275 CC 839 0 276 CC 3131 0 277 CC 3084 0 278 CC 3089 0 279 CC 3100 0 280 CC 3102 0 281 CC 3111 1 87 C 3118 1.30 11 1 198 C 3212 1.81 11 3 94 C 3142 3.96 10 3 95 C 3143 3.62 10 3 169 C 3190 3.28 5 3 229 C 3240 3.70 5 4 65 C 3117 4.65 10 4 230 C 3241 4.33 5 4 253 C 3259 4.60 23 5 171 C 3192 5.68 23 5 245 C 3249 5.76 23 6 92 C 3140 6.17 10 6 93 C 3141 6.46 10 6 101 C 3149 6 33 7 89 C 3128 7.86 22 7 183 C 3207 7.58 5 10 6 C 3077 10.77 6 10 28 C 3068 10 18 10 155 C 3186 10.08 23 10 182 C 3206 10 6 10 200 C 3214 10.46 25 10 207 C 3221 10 8 10 211 C 3223 10.64 5 12 69 C 3123 12.24 4 12 113 C 3159 12 33 14 181 C 3205 14.25 7 14 265 C 3268 14.00 26 15 34 C 3093 15.40 22 15 76 C 3132 15.90 5 15 115 C 3167 15 5 16 261 C 3136 16.00 1 17 8 EM 810 17 15 17 54 EM 835 17 15 17 175 C 3195 17 23 18 143 C 3171 18 33 18 170 C 3191 18 5 18 201 C 3215 18.28 5 19 91 C 3139 19.37 10 19 268 C 3278 19.01 11 20 36 C 3095 20 26 20 78 C 3134 20.47 22 21 112 C 3158 21.92 5 22 7 C 3078 22.50 4 23 4 C 3075 23 5 25 49 C 3110 25 3 25 75 C 3130 25.98 5 25 86 C 3112 25 26 25 100 C 3148 25.95 5 25 153 C 3183 25.91 22 26 177 C 3199 26 33 27 99 C 3147 27.73 10 28 110 C 3198 28.30 3 28 239 C 3243 28.20 3 31 214 C 3230 31 26 32 38 C 3097 32.88 10 34 18 C 3083 34 6 34 117 C 3161 34 10 35 16 C 3081 35 4 35 218 C 3231 35 18 35 231 C 3242 35.39 18 36 98 C 3146 36.70 11 36 144 C 3172 36.70 10 36 209 C 3225 36 5 37 173 C 3193 37.25 23 37 224 C 3235 37 33 39 140 C 3162 39.95 18 40 42 C 3104 40 33 42 43 C 3103 42.50 10 42 96 C 3144 42.08 22 42 225 C 3236 42.50 33 42 252 C 3258 42.50 33 43 249 C 3253 43 1 46 97 C 3145 46.50 3 48 66 C 3119 48 18 48 205 C 3219 48.60 10 48 232 EM 854 48.65 12 50 20 C 3085 50.99 5 50 163 C 3176 50 22 50 176 C 3196 50 21 50 246 C 3250 50 24 50 256 C 3263 50 22 55 180 C 3204 55.20 5 60 184 C 3208 60.59 2 60 267 C 3277 60 1 62 17 C 3067 62 1 64 262 C 3216 64.28 5 68 73 C 3127 68.45 23 69 62 C 3114 69.95 10 69 197 C 3211 69.37 2 72 269 C 3279 72.18 5 74 39 C 3098 74.05 22 74 213 C 3227 74.13 2 78 103 C 3151 78.50 33 79 61 C 3113 79.95 5 80 146 C 3174 80 26 82 129 EM 828 82.50 26 83 120 C 3168 83.85 3 85 79 C 3135 85.15 22 88 264 C 3262 88.41 14 93 70 C 3124 93.27 15 93 212 C 3226 93.71 4 95 102 C 3150 95 33 95 228 C 3239 95.64 2 96 3 C 3069 96 4 100 5 C 3076 100 24 100 88 C 3122 100 26 100 106 C 3154 100 8 100 172 C 3203 100 27 100 248 C 3251 100 2 100 251 C 3255 100 2 102 217 C 3228 102.08 4 119 45 C 3106 119.98 4 120 35 C 3094 120.70 4 120 142 C 3170 120.97 4 121 152 C 3182 121.30 11 125 77 C 3133 125.81 22 125 165 C 3185 125 23 125 222 C 3232 125 23 125 244 C 3248 125.30 11 127 154 C 3184 127 17 128 74 C 3129 128.35 5 130 141 C 3164 130.46 14 136 149 C 3178 136.20 25 136 204 C 3218 136.48 17 138 29 C 3086 138.02 25 138 130 EM 829 138.70 14 138 227 C 3238 138.17 33 140 50 EM 818 140 27 146 266 C 3276 146.75 11 147 174 C 3194 147.08 23 155 116 C 3160 155.47 17 160 107 C 3155 160.43 4 168 258 C 3265 168.01 25 170 151 C 3180 170 23 170 206 C 3220 170 23 174 166 C 3187 174.75 23 176 199 C 3213 176.55 25 181 55 EM 836 181.73 14 181 71 C 3125 181.78 15 185 90 C 3138 185.26 4 195 59 EM 821 195.18 12 200 63 C 3115 200 20 200 121 C 3169 200 24 204 147 C 3175 204 5 205 15 C 817 205.18 12 205 133 EM 831 205.18 12 206 33 C 3092 206.59 20 209 134 EM 832 209.37 12 209 186 EM 842 209.37 12 209 193 EM 848 209.37 12 225 64 C 3116 225 27 227 105 C 3153 227.40 25 227 208 C 3224 227.40 17 243 72 C 3126 243.77 14 250 2 C 3066 250 27 250 32 C 3091 250 8 250 185 C 3209 250.65 25 269 68 C 3121 269.78 17 290 167 C 3188 290.64 4 290 188 EM 845 290.37 12 290 250 C 3254 290.77 4 296 257 C 3264 296.31 23 298 263 C 3234 298.80 25 328 242 C 3246 328.44 10 330 19 C 3071 330 20 333 125 EM 824 333.14 15 341 240 C 3244 341.40 10 378 126 EM 825 378.68 15 425 128 EM 827 425.95 12 450 210 C 3222 450 27 465 119 C 3166 465 4 482 56 EM 837 482.61 15 496 148 C 3177 496.56 25 500 241 C 3245 500 25 504 44 C 3105 504.39 25 540 233 EM 853 540 15 547 203 C 3217 547.32 17 594 118 C 3163 594 17 604 9 EM 811 604.28 15 622 58 EM 840 622.50 27 638 114 C 3165 638.45 27 643 10 EM 812 643.69 15 704 1 C 3040 704.45 720 196 C 3210 720 27 729 150 C 3179 729 17 732 255 C 3261 732.30 8 775 37 C 3096 775 9 781 109 C 3157 781.68 25 784 243 C 3247 784.13 25 793 46 C 3107 793.50 9 820 254 C 3260 820.84 25 835 108 C 3156 835.38 25 912 53 EM 834 912.14 12 947 145 C 3173 947.50 25 948 52 EM 833 948.57 12 948 179 C 3202 948.17 25 950 164 C 3181 950 7 980 14 C 813 980.89 14 1000 104 C 3152 1000 25 1000 111 EM 823 1000 12 1000 194 EM 849 1000 12 1020 156 C 3200 1020 27 1040 30 C 3088 1040 23 1350 260 C 3082 1350.12 25 1372 168 C 3189 1372 27 1415 60 EM 822 1415.95 12 1425 131 EM 841 1425.95 12 1425 132 EM 830 1425.95 12 1527 187 EM 844 1527.87 12 1527 191 EM 843 1527.87 12 1527 192 EM 847 1527.87 12 1527 221 EM 852 1527.87 12 1537 47 C 3108 1537.50 27 1557 41 C 3101 1557.44 25 1581 21 C 816 1581.88 12 1581 22 C 819 1581 12 1581 51 EM 820 1581 12 1760 247 C 3252 1760 27 1940 67 C 3120 1940.43 25 2282 226 C 3237 2282.26 6 2590 127 EM 826 2590.51 14 2742 57 EM 838 2742.40 14 2764 178 C 3201 2764.81 27 2774 216 C 3229 2774.75 23 3394 48 C 3109 3394.50 6 3584 189 EM 846 3584 14 3654 223 C 3233 3654.15 23 4000 40 C 3099 4000 32 4000 215 EM 851 4000 36 5324 31 C 3090 5324 9 9000 195 EM 850 9000 12 IOAW .ENT ?OPEN,?ENDL,?ENDF,?RDLI,?WRLI,?CREA .NREL ; PROCEDURE OPEN (VAR FILENUMBER : INTEGER ; FILENUMBER : ALPHA OR ; INTEGER ; VAR ERRORNUMBER : INTEGER);EXTERNAL; ; PROCEDURE IS ENTERED WITH : ; C (AC3) ADDRESS OF BYTE ADDRESSOF ERROR NUMMBER ; C (AC3-1) ADDRESS OF BYTE ADDRESS OF FILE NAME ; C (AC3-2) ADDRESS OF BYTE ADDRESS OF FILE NUMBER ; CALLER SUPPLIES FILE NAME ; OPEN RETURNS FILE NUMBER AND ERROR NUMBER .TITL OPEN .EXTN XPRET ?CREA: STA 3,USP LDA 0,-1,3 ;GET BYTE POINTER TO FILE NAME .SYSTM .DELETE ;DELETE IT JMP .+1 .SYSTM .CRAND ;CREATE RANDOM FILE JMP ERTN ; OPEN FILE HERE ?OPEN: STA 3,USP LDA 0,-1,3 ;BYTE ADDRESS OF FILE NAME .SYSTM .GCHN ;GET FREE CHANNEL NO IN AC2 JMP ERTN SUBO 1,1 ;CLEAR AC0 .SYSTM .OPEN CPU ;OPEN FILE UP JMP ERTN ; CHANNEL NO TO PASCAL LDA 3,-2,3 ;BYTE ADDRESS OF VAR FILENUMBER MOVZR 3,3 ;WORD ADDRESS NOW STA 2,0,3 ;CHANNEL NO BACK LDA 3,USP ;RESTORE AC3 LDA 2,BUFAD ADD 0,2 SUBO 1,1 STA 1,0,2 ADC 0,0 ;GENERATE -1 JMP SAVIT ERTN: MOV 2,0 SAVIT: LDA 2,0,3 ;GET ADDRESS OF ERROR NO ;ERROR = -1 IF NO ERROR ELSE = SYSTMERR MOVZR 2,2 ;MAKE IT A WORD ADDRESS STA 0,0,2 ;ERROR TO PASCAL SUBO 1,1 ;GEN 0 TO WARN PASCAL ;PROCEDURE IS RETURNING XPRET ;BACK TO PASCAL ; BUFFER STATUS TABLE ; FOR CHANNEL N SEE ADDRESS BUFAD+N ; BIT 0 SET = END OF LINE ; BIT 15 SET = END OF FILE BUFAD: .+1 .BLK 30 ; FUNCTION ENDL (CHANNEL NUMBER : INTEGER );BOOLEAN;EXTERNAL; ?ENDL: STA 3,USP MOV 0,2 ;SAVE STACK POINTER FOR FUNCTION VALUE IN AC2 LDA 0,0,3 ;GET CHANNEL NO INTO AC0 LDA 3,BUFAD ;GET BUFFER ADDRESS IN AC3 ADD 0,3 ;CHANNEL NO + BUFFER ADDRESS IN AC2 LDA 0,0,3 ;GET CHANNEL STATUS SUBZL 1,1 ;GENERATE TRUE MOVZL# 0,0,SNC ;SKIP IF BIT 0 = 1 SUBO 1,1 ;GENERATE FALSE STA 1,0,2 ;TRUE OR FALSE IN AC1 BACK TO PASCAL SUBZL 1,1 ;TELL XPRET 1 ARG. TO BE COPIED LDA 3,USP XPRET ; FUNCTION ENDF(CHANNEL NO. : INTEGER );BOOLEAN;EXTERNAL; ?ENDF: STA 3,USP MOV 0,2 ;SAVE STACK POINTER IN AC2 LDA 0,0,3 ;GET CHANNEL NO INTO AC0 LDA 3,BUFAD ;GET BUFFER ADDRESS INTO AC3 ADD 0,3 ;CHANNEL NO + BUFFER ADDRESS IN AC2 LDA 0,0,3 ;GET CHANNEL STATUS SUBZL 1,1 ;GENERATE TRUE ( +1) MOVZR# 0,0,SNC ;SKIP IF BIT 0 = 1 SUBO 1,1 ;GENERATE FALSE STA 1,0,2 ;TRUE OR FALSE IN AC1 BACK TO PASCAL SUBZL 1,1 ;TELL XPRET 1 ARG. TO BE COPIED LDA 3,USP XPRET ; PROCEDURE RDLI( CHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : ; INTEGER ; VAR ERROR : INTEGER );EXTERNAL; ; AC3 = ADDRESS OF BYTE ADDRESS OF ERROR ; AC3-1 = ADDRESS OF BYTE ADDRESS OF NBYTESREAD ; AC3-2 = ADDRESS OF BYTE ADDRESS OF BUFFER ; AC3-3 = ADDRESS OF CHANNEL NO ?RDLI: STA 3,USP LDA 2,-3,3 ;GET CHANNEL NO INTO AC2 LDA 0,-2,3 ;GET ADDRESS OF BUFFER .SYSTM .RDL CPU JMP .+2 ADC 2,2 ;GENERATE -1 FOR OK RETURN TO PASCAL MOV 2,0 ;ERROR NUMBER IN AC0 LDA 2,0,3 ;BYTE ADDRESS OF VAR ERROR MOVZR 2,2 ;MAKE IT A WORD ADDRESS STA 0,0,2 ;ERROR TO PASCAL ; ERROR NO = -1 FOR NORMAL RETURN ; = 0 OR MORE IFF AN ERROR SEE SYSTM ERROR AC2 'S ; CHECK IF AC2 = EREOF (END OF FILE) ; SENT NO OF BYTES READ INCL. TERMINATOR TO PASCAL LDA 3,-1,3 ;GET ADDRESS OF BYTE ADDRESSOF VAR NBYTESREAD MOVZR 3,3 STA 1,0,3 ;BACK TO PASCAL LDA 2,C6 SUBO 1,1 ;GENERATE 0 FOR NOT EOF SUBZ 2,0,SNR ;SKIP IF NOT EOFILE SUBZL 1,1 ;GENERATE 1 LDA 2,BUFAD LDA 3,USP LDA 0,-3,3 ;GET CH NO AGAIN ADD 0,2 ;BUFAD + CH NO IN AC2 STA 1,0,2 SUBO 1,1 ;WARN XPRET PROCEDURE RETURNING XPRET C6: 6 ;ERROR CODE 6 ;PROCEDURE WRLI(CHANNEL : INTEGER ;BUFFER : ALPHA ; ; VAR NBYTESWROTE : INTEGER ; VAR ERROR : INTEGER );EXTERNAL; ; AC3 = ADDRESS OF BYTE ADDRESS OF ERROR ; AC3-1 = ADDRESS OF BYTE ADDRESS OF NBYTESREAD ; AC3-2 = ADDRESS OF BYTE ADDRESS OF BUFFER ; AC3-3 = ADDRESS OF CHANNEL NO ?WRLI: STA 3,USP LDA 2,-3,3 ;GET CHANNEL NO INTO AC2 LDA 0,-2,3 ;GET ADDRESS OF BUFFER .SYSTM .WRL CPU JMP .+2 ADC 2,2 ;GENERATE -1 FOR OK RETURN TO PASCAL MOV 2,0 ;ERROR NUMBER IN AC0 LDA 2,0,3 ;BYTE ADDRESS OF VAR ERROR MOVZR 2,2 ;MAKE IT A WORD ADDRESS STA 0,0,2 ;ERROR TO PASCAL ; ERROR NO = -1 FOR NORMAL RETURN ; = 0 OR MORE IFF AN ERROR SEE SYSTM ERROR AC2 'S ; CHECK IF AC2 = EREOF (END OF FILE) LDA 2,C6 SUBO 1,1 ;GENERATE 0 FOR NOT EOF SUBZ 2,0,SNR ;SKIP IF NOT EOFILE SUBZL 1,1 ;GENERATE 1 LDA 2,BUFAD LDA 3,USP LDA 0,-3,3 ;GET CH NO AGAIN ADD 0,2 ;BUFAD + CH NO IN AC2 STA 1,0,2 SUBO 1,1 ;WARN XPRET PROCEDURE RETURNING XPRET .END T151K/PROGRAM T15; VAR I : 1..10; BEGIN I := 1 END. 197807MC 2613 33 C 2614 9.22 C 2615 115 C 2616 1875.10 C 2617 134 C 2618 46.45 C 2619 790.75 C 2620 33 C 2621 368 C 2622 52.30 E 3104.27 C 2623 309.14 C 2624 9 C 2625 1452.77 D 8742.50 C 2626 50 C 2627 39.50 CC 2628 C 2629 56 C 2630 164 C 2631 400.88 CC 2632 C 2633 8.75 C 2634 7.50 C 2635 48 C 2636 12.55 C 2637 139.70 D 538 C 2639 1000 C 2640 115 C 2641 30 E 3991.35 W 2861.14 C 2642 101.39 D 3000 C 2643 140 FDUMPSVFDUMPSVTEST6V PROGRAM TEST(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; VAR INSTR : STRING[132]; DESTINATION,SOURCE : TEXT; LINE : LINESTRING; {$I PCHAR.PI} {$I READLINE.PI} {$I WRITELINE.PI} BEGIN WRITE(' INPUT FILE NAME? '); READLN(INSTR); FILETITLE(SOURCE,INSTR); RESET(SOURCE); WRITE(' OUTPUT FILE NAME? ');READLN(INSTR); FILETITLE(DESTINATION,INSTR); RESET(DESTINATION); REPEAT BEGIN READLINE(SOURCE,LINE); WRITELINE(DESTINATION,LINE); END UNTIL EOF(SOURCE) END. FOBARcB 4196.05 C 2332 2000 C 2313 1804.52 C 2337 43.50 C 2338 6.00 C 2345 53.35 C 2347 38.00 C 2348 50.00 C 2356 264.05 C 2354 50.00 D 23546.64 DM 250.00 C 2355 280.60 CC 2357 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 C 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 D 13878.10 DM 1865.00 C 2394 85.54 C 2395 1000. C 2396 405.38 C 2397 64. D 3885. DM 250.00 C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 C 2402 80. D 3222.52 C 2403 1562.80 C 2404 1887.00 C 2405 28.26 C 2406 52.68 C 2407 53.35 C 2408 27.00 C 2409 301.50 C 2410 32.23 C 2411 110. C 2412 1500 C 2413 15 C 2414 286.41 C 2415 12.68 C 2416 93.20 C 2417 7.75 C 2418 66.34 C 2419 1197.81 C 2420 50 C 2421 261.65 C 2422 10 C 2423 2386 C 2424 28.15 C 2425 8.95 D 3727.5 C 2426 16.05 C 2427 450.59 C 2428 621.73 C 2429 4000. C 2430 6.75 C 2431 110 C 2432 991 C 2433 41.5 "OPENBU,Y"PROCEDURE OPEN(RDOSCHANNEL : INTEGER;FILENAME : BIGSTR ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTOPEN =6207; {.OPEN} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WRITELN(' ',FILEPTR^); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTOPEN; R0.SPTR := FILEPTR; R0.INT := R0.INT+1; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN OPEN = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {OPEN} GETREALBU`8 FUNCTION GETREAL( STR : BIGSTR;VAR I : INTEGER) : REAL; {STR : STRING[99] = INPUT LINE I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} LABEL 1,2; TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; SIGNOF = (PLUS,MINUS); VAR LEN : INTEGER; FGETREAL,PLACE :REAL; PART : WHOLORFRACT ; SIGN : SIGNOF; BEGIN SIGN := PLUS; PART := WHOLE;{assume while part first} FGETREAL := 0; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} IF NOT (STR[I] IN ['0'..'9','-','.']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN CASE PART OF WHOLE : BEGIN FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); { REALPRINT(FGETREAL);} { WRITELN(' WHOLE');} END; FRACTIONAL : BEGIN FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; PLACE := PLACE*10; { REALPRINT(FGETREAL);} { WRITELN(' FP');} END END; {case} I := I+1; GOTO 2 END ELSE IF STR[I] = '.' THEN BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; { WRITE(' FRACTION.');} GOTO 2; END ELSE IF STR[I] = ',' THEN BEGIN I := I+1;GOTO 2 END; CASE SIGN OF PLUS : GETREAL := FGETREAL; MINUS : GETREAL := -FGETREAL; END;{case} END;{getreal} CBOOK02 s PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK,ERRORENTRY); VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; OUTFILE,INFILE : TEXT; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} PROCEDURE ERROR; BEGIN WRITELN(OUTFILE,' ERROR',STR); END;{error} PROCEDURE C1HECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(OUTFILE,' CK ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(OUTFILE,' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(OUTFILE,' DP ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); REALPRINT(OUTFILE,NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; \BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(OUTFILE,' CM ',BLANKS,BLANKS);REALPRINT(OUTFILE,AMOUNT); REALPRINT(OUTFILE,NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(OUTFILE,' DM ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(OUTFILE,' CC ',CHECKNUMBER : 10); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' EM ',CHECKNUMBER : 10); REALPRINT(OUTFILE,AMOUNT);WRITE(OUTFILE,BLANKS); REALPRINT(OUTFILE,NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(OUTFILE,' WH ',BLANKS);REALPRINT(OUTFILE,AMOUNT); WRITE(OUTFILE,BLANKS);REALPRINT(OUTFILE,NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN ENTRY := ERRORENTRY; CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(LINE[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(LINE[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE INITIALIZE; BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(INFILE,STR); RESET(INFILE); WRITE(' OUTPUT FILE NAME? '); READLN(STR); FILETITLE(OUTFILE,STR); RESET(OUTFILE); BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; WRITELN(OUTFILE,' KEY TO TRANSACTION TYPES'); WRITELN(OUTFILE,' C CHECK CC CANCELLED CHECK'); WRITELN(OUTFILE,' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN(OUTFILE,' DP DEPOSIT BL FORCED BALANCE'); WRITELN(OUTFILE,' EM EMPLOYEE CK WH WITHOLDING CHECK'); WRITELN(OUTFILE); WRITELN(OUTFILE,' TYPE CHECK DEBIT CREDIT BALANCE'); END;{initialize} BEGIN INITIALIZE; WRITELN(OUTFILE); WHILE NOT EOF(INFILE) DO BEGIN READLN(INFILE,STR); GETENTRYTYPELINE (STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; ERRORENTRY : ERROR; END;{case} WRITELN(OUTFILE); END; WRITELN(OUTFILE);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTALS '); REALPRINT(OUTFILE,TOTALDEBITS);REALPRINT(OUTFILE,TOTALCREDITS); REALPRINT(OUTFILE,NEWBALANCE); WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL CHECKS ');REALPRINT(OUTFILE,TOTALCHECKS);WRITELN(OUTFILE); WRITE(OUTFILE,' TOTAL DEPOSITS');REALPRINT(OUTFILE,TOTALDEPOSITS);END. PLCMv&qqCHATR PL.PA 0 CHATR PL.PX 0 DELETE PL.PA XFER PL PL.PA/R CHATR PL.PA *WP PASINTERP PASCALO/L/S/V/A PL CHATR PL.PX *WP p1980D4  0 1 2 5 18 24 44 63 260 273 274 275 276 277 SEARCH KEY 0 1 C 3040 704.45 2 CC 3064 5 CC 3070 18 CC 814 24 CC 3087 44 CC 3137 63 CC 839 260 CC 3131 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 AMOUNT = 7.044E+02 1 20 255 268 279 SEARCH KEY 1 20 C 3067 62 1 255 C 3253 43 1 268 C 3136 16.00 1 279 C 3277 60 1 AMOUNT = 1.810E+02 2 190 203 219 234 254 257 SEARCH KEY 2 190 C 3208 60.59 2 203 C 3211 69.37 2 219 C 3227 74.13 2 234 C 3239 95.64 2 254 C 3251 100 2 257 C 3255 100 2 AMOUNT = 4.997E+02 3 54 103 116 126 245 SEARCH KEY 3 54 C 3110 25 3 103 C 3145 46.50 3 116 C 3198 28.30 3 126 C 3168 83.85 3 245 C 3243 28.20 3 AMOUNT = 2.118E+02 4 4 9 19 39 50 75 96 113 125 148 173 218 223 256 SEARCH KEY 4 4 C 3069 96 4 9 C 3078 22.50 4 19 C 3081 35 4 39 C 3094 120.70 4 50 C 3106 119.98 4 75 C 3123 12.24 4 96 C 3138 185.26 4 113 C 3155 160.43 4 125 C 3166 465 4 148 C 3170 120.97 4 173 C 3188 290.64 4 218 C 3226 93.71 4 223 C 3228 102.08 4 256 C 3254 290.77 4 AMOUNT = 2.115E+03 5 6 23 67 80 81 82 106 118 121 153 175 176 186 189 207 215 217 235 236 269 281 SEARCH KEY 5 6 C 3075 23 5 23 C 3085 50.99 5 67 C 3113 79.95 5 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 106 C 3148 25.95 5 118 C 3158 21.92 5 121 C 3167 15 5 153 C 3175 204 5 175 C 3190 3.28 5 176 C 3191 18 5 186 C 3204 55.20 5 189 C 3207 7.58 5 207 C 3215 18.28 5 215 C 3225 36 5 217 C 3223 10.64 5 235 C 3240 3.70 5 236 C 3241 4.33 5 269 C 3216 64.28 5 281 C 3279 72.18 5 AMOUNT = 8.845E+02 6 8 21 53 188 232 SEARCH KEY 6 8 C 3077 10.77 6 21 C 3083 34 6 53 C 3109 3394.50 6 188 C 3206 10 6 232 C 3237 2282.26 6 AMOUNT = 5.731E+03 7 170 187 SEARCH KEY 7 170 C 3181 950 7 187 C 3205 14.25 7 AMOUNT = 9.642E+02 8 36 112 213 262 SEARCH KEY 8 36 C 3091 250 8 112 C 3154 100 8 213 C 3221 10 8 262 C 3261 732.30 8 AMOUNT = 1.092E+03 9 35 41 51 SEARCH KEY 9 35 C 3090 5324 9 41 C 3096 775 9 51 C 3107 793.50 9 AMOUNT = 6.892E+03 10 42 48 68 71 97 98 99 100 101 105 123 150 211 246 248 SEARCH KEY 10 42 C 3097 32.88 10 48 C 3103 42.50 10 68 C 3114 69.95 10 71 C 3117 4.65 10 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 105 C 3147 27.73 10 123 C 3161 34 10 150 C 3172 36.70 10 211 C 3219 48.60 10 246 C 3244 341.40 10 248 C 3246 328.44 10 AMOUNT = 1.006E+03 11 93 104 158 204 250 278 280 SEARCH KEY 11 93 C 3118 1.30 11 104 C 3146 36.70 11 158 C 3182 121.30 11 204 C 3212 1.81 11 250 C 3248 125.30 11 278 C 3276 146.75 11 280 C 3278 19.01 11 AMOUNT = 4.521E+02 12 17 25 26 56 57 58 65 66 117 134 137 138 139 140 192 193 194 197 198 199 200 201 227 238 SEARCH KEY 12 17 C 817 205.18 12 25 C 816 1581.88 12 26 C 819 1581 12 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 65 EM 821 195.18 12 66 EM 822 1415.95 12 117 EM 823 1000 12 134 EM 827 425.95 12 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 197 EM 843 1527.87 12 198 EM 847 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 227 EM 852 1527.87 12 238 EM 854 48.65 12 AMOUNT = 2.998E+04 14 16 60 62 78 133 136 147 195 271 SEARCH KEY 14 16 C 813 980.89 14 60 EM 836 181.73 14 62 EM 838 2742.40 14 78 C 3126 243.77 14 133 EM 826 2590.51 14 136 EM 829 138.70 14 147 C 3164 130.46 14 195 EM 846 3584 14 271 C 3262 88.41 14 AMOUNT = 1.068E+04 15 10 11 12 59 61 76 77 131 132 239 SEARCH KEY 15 10 EM 810 17 15 11 EM 811 604.28 15 12 EM 812 643.69 15 59 EM 835 17 15 61 EM 837 482.61 15 76 C 3124 93.27 15 77 C 3125 181.78 15 131 EM 824 333.14 15 132 EM 825 378.68 15 239 EM 853 540 15 AMOUNT = 3.291E+03 17 74 122 124 156 160 209 210 214 SEARCH KEY 17 74 C 3121 269.78 17 122 C 3160 155.47 17 124 C 3163 594 17 156 C 3179 729 17 160 C 3184 127 17 209 C 3217 547.32 17 210 C 3218 136.48 17 214 C 3224 227.40 17 AMOUNT = 2.786E+03 18 32 72 146 224 237 SEARCH KEY 18 32 C 3068 10 18 72 C 3119 48 18 146 C 3162 39.95 18 224 C 3231 35 18 237 C 3242 35.39 18 AMOUNT = 1.683E+02 20 22 37 69 SEARCH KEY 20 22 C 3071 330 20 37 C 3092 206.59 20 69 C 3115 200 20 AMOUNT = 7.365E+02 21 182 SEARCH KEY 21 182 C 3196 50 21 AMOUNT = 5.000E+01 22 38 43 83 84 85 95 102 159 169 263 SEARCH KEY 22 38 C 3093 15.40 22 43 C 3098 74.05 22 83 C 3133 125.81 22 84 C 3134 20.47 22 85 C 3135 85.15 22 95 C 3128 7.86 22 102 C 3144 42.08 22 159 C 3183 25.91 22 169 C 3176 50 22 263 C 3263 50 22 AMOUNT = 4.967E+02 23 34 79 157 161 171 172 177 179 180 181 212 222 228 229 251 259 264 SEARCH KEY 23 34 C 3088 1040 23 79 C 3127 68.45 23 157 C 3180 170 23 161 C 3186 10.08 23 171 C 3185 125 23 172 C 3187 174.75 23 177 C 3192 5.68 23 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 17 23 212 C 3220 170 23 222 C 3229 2774.75 23 228 C 3232 125 23 229 C 3233 3654.15 23 251 C 3249 5.76 23 259 C 3259 4.60 23 264 C 3264 296.31 23 AMOUNT = 8.825E+03 24 7 127 252 SEARCH KEY 24 7 C 3076 100 24 127 C 3169 200 24 252 C 3250 50 24 AMOUNT = 3.500E+02 25 33 46 49 73 110 111 114 115 151 154 155 185 191 205 206 247 249 261 265 267 270 SEARCH KEY 25 33 C 3086 138.02 25 46 C 3101 1557.44 25 49 C 3105 504.39 25 73 C 3120 1940.43 25 110 C 3152 1000 25 111 C 3153 227.40 25 114 C 3156 835.38 25 115 C 3157 781.68 25 151 C 3173 947.50 25 154 C 3177 496.56 25 155 C 3178 136.20 25 185 C 3202 948.17 25 191 C 3209 250.65 25 205 C 3213 176.55 25 206 C 3214 10.46 25 247 C 3245 500 25 249 C 3247 784.13 25 261 C 3260 820.84 25 265 C 3265 168.01 25 267 C 3082 1350.12 25 270 C 3234 298.80 25 AMOUNT = 1.387E+04 26 40 92 94 135 152 220 272 SEARCH KEY 26 40 C 3095 20 26 92 C 3112 25 26 94 C 3122 100 26 135 EM 828 82.50 26 152 C 3174 80 26 220 C 3230 31 26 272 C 3268 14.00 26 AMOUNT = 3.525E+02 27 3 52 55 64 70 120 162 174 178 184 202 216 253 SEARCH KEY 27 3 C 3066 250 27 52 C 3108 1537.50 27 55 EM 818 140 27 64 EM 840 622.50 27 70 C 3116 225 27 120 C 3165 638.45 27 162 C 3200 1020 27 174 C 3189 1372 27 178 C 3203 100 27 184 C 3201 2764.81 27 202 C 3210 720 27 216 C 3222 450 27 253 C 3252 1760 27 AMOUNT = 1.160E+04 32 45 SEARCH KEY 32 45 C 3099 4000 32 AMOUNT = 4.000E+03 33 47 107 108 109 119 149 183 230 231 233 258 SEARCH KEY 33 47 C 3104 40 33 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 119 C 3159 12 33 149 C 3171 18 33 183 C 3199 26 33 230 C 3235 37 33 231 C 3236 42.50 33 233 C 3238 138.17 33 258 C 3258 42.50 33 AMOUNT = 5.356E+02 36 221 SEARCH KEY 36 221 EM 851 4000 36 AMOUNT = 4.000E+03 284P RPXQTEST Copyright (C) 1980 Rational Data Systems  4 d@L̃ȡ ە0 ە.A Ʉ&á ە, ە0֦ STRING= ^ ƀƀƀOUTPUTAINPUTƀ֦ ENTER A REAL NUMBEŔʁʁ֥֥ ƀPpGT 1978086U7C 2644 35 C 2645 671.81 C 2646 1850.16 C 2647 70 C 2648 14.20 C 2649 500 C 2650 13.05 C 2651 205.74 C 2652 199.40 C 2653 17.16 C 2654 19.94 C 2655 34.12 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 C 2657 116.89 D 1545 E 3874.55 C 2659 368 C 2660 37 C 2661 25 C 2662 15 C 2663 500 C 2664 25.35 D 6212.50 CC 2665 C 2666 50 C 2667 96.30 C 2668 495.42 C 2669 145 BC 2670 8.70 C 2671 16.80 C 2672 29 C 2673 11.48 W 2210 W 483 C 2674 1397.48 C 2675 200 C 2676 500 CC 2677 C 2678 49.56 C 2679 10000 C 2680 110 C 2681 1007 C 2682 37.64 E 4018.89 W 2792.12 W 800.03 D 4762.50 TESTCMl9CHATR TEST.PA 0 CHATR TEST.PX 0 DELETE/V TEST.PA XFER TEST TEST.PA/R PASINTERP PASCALO/S/V/A/L TEST CHATR TEST.PA *WP CHATR TEST.PX *WP TESTPOll "nTEST Copyright (C) 1980 Rational Data Systems    ۢ*"ٞ# ۢ ٞ#!:٪ƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀ?ʀʀʀʀʀ ؚʀ#ʀ/֦ ERROR IN OPEN = Jʀʀ ʀʀʀƀ! ݢ?ݢ ؚ۞#)֦ ERROR IN CLOSE = J !`تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ1֦ ERROR IN DELETE = Jʀʀ ʀʀʀƀ!تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ0֦ ERROR IN CRAND = Jʀʀ ʀʀʀƀ!٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ4֦ ERROR IN WRITELINE = Jʀʀ ʀʀʀƀ! ǀ ? ߚ    ؚݞ# /֦ ERROR IN READLINE = J   ߪ ! ǀ ? ߚ    ؚݞ# 5֦ ERROR IN READSEQUENTIAL = J   ߪ ! ٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ:֦ ERROR IN WRITESEQUENTIAL = Jʀʀ ʀʀʀƀ! ƁJƁƁJOUTPUTƀƁƀȦINPUTƀƁJ֥DFFOBAR֥Fƥ֧DFƥ֧DTHIS IS A TESTƥ ֦ HIT CTLAJʁ֥ƁJƀ~$x:d, 1978DOD-90 1 B 4196.05 2 C 2332 2000 21 1 3 C 2313 1804.52 22 1 4 C 2337 43.50 0 0 5 C 2338 6.00 0 0 6 C 2345 53.35 0 0 7 C 2347 38.00 0 0 8 C 2348 50.00 24 1 9 C 2356 264.05 0 0 10 C 2354 50.00 20 1 11 D 23546.64 12 DM 250.00 13 C 2355 280.60 22 1 14 CC 2357 15 C 2358 10 3 1 16 C 2359 42.80 10 1 17 C 2360 119.40 19 1 18 C 2361 50 18 1 19 CC 2362 20 CC 2363 21 CC 2364 22 CC 2365 23 C 2366 50 18 1 24 CC 2367 25 CC 2368 26 CC 2369 27 CC 2370 28 C 2371 50 18 1 29 CC 2372 30 CC 2373 31 C 2374 547.42 17 1 32 C 2375 86 5 1 33 C 2376 500 21 1 34 C 2377 1500 21 3 35 C 2378 93.20 3 2 36 C 2379 1562.80 2 2 37 C 2380 3.60 5 2 38 C 2381 136.16 5 2 39 C 2382 114.98 18 2 40 DM 250 41 C 2383 139.24 4 2 42 C 2384 155 5 2 43 C 2385 60.30 5 2 44 C 2386 1151 17 2 45 C 2387 12 18 2 46 C 2388 66.80 22 2 47 C 2389 33.30 22 2 48 C 2390 22.80 22 3 49 C 2391 12 18 2 50 C 2392 39 22 2 51 C 2393 64.65 25 2 52 C 2394 85.54 22 2 53 D 13878.10 54 DM 1865.00 55 C 2395 1000. 21 3 56 C 2396 405.38 4 3 57 C 2397 64. 8 3 58 D 3885. 59 DM 250.00 60 C 2398 14.85 18 3 61 DM 1865. 62 C 2399 7.95 18 3  63 C 2400 8.52 18 3 64 C 2401 29.39 22 3 65 C 2402 80. 23 3 66 D 3222.52 67 C 2403 1562.80 2 5 68 C 2404 1887.00 17 5 69 C 2405 28.26 21 5 70 C 2406 52.68 5 5 71 C 2407 53.35 5 5 72 C 2408 27.00 5 5 73 C 2409 301.50 21 5 74 C 2410 32.23 5 5 75 C 2411 110. 16 5 76 C 2412 1500 21 10 77 C 2413 15 18 3 78 C 2414 286.41 5 3 79 C 2415 12.68 5 3 80 C 2416 93.20 3 5 81 C 2417 7.75 11 3 82 C 2418 66.34 4 3 83 C 2419 1197.81 5 5 84 C 2420 50 24 3 85 C 2421 261.65 23 5 86 C 2422 10 16 5 87 C 2423 2386 17 5 88 C 2424 28.15 23 5 89 C 2425 8.95 18 5 90 D 3727.5 91 C 2426 16.05 5 7 92 C 2427 450.59 17 5 93 C 2428 621.73 8 6 94 C 2429 4000. 21 6 95 C 2430 6.75 18 6 96 C 2431 110 5 6 97 C 2432 991 16 6 98 C 2433 41.5 20 6 99 C 2434 52 5 6 100 C 2435 675 8 6 101 D 10674.20 102 D 8655.39 103 D 3056.00 104 C 2436 40 20 6 105 CC 2437 106 C 2438 3.47 18 6 107 C 2439 11 18 6 108 C 2440 339.45 22 6 109 C 2441 28.76 18 6 110 C 2442 589.40 4 6 111 C 2443 19.89 22 6 112 C 2444 16. 18 6 113 CC 2445 114 C 2446 93.20 3 6 115 C 2447 410.72 25 6 116 C 2448 695.00 7 6 117 C 2449 50. 27 6 118 C 2450 13.00 17 6 119 C 2451 55.00 22 7 120 C 2452 74.42 22 7 121 C 2453 56.30 5 7 122 C 2454 7.85 5 7 123 C 2455 223.17 5 7 124 C 2456 368.00 23 7 125 C 2457 1562.80 2 7 126 D 5534.20 127 C 2458 450.59 17 8 128 C 2459 75.65 11 8 129 C 2460 923. 5 8 130 CC 2461 131 CC 2462 132 C 2463 25 18 8 133 C 2464 26 22 8 134 C 2465 50.50 18 8 135 C 2466 39 5 8 136 C 2467 4.80 22 8 137 CC 2468 138 C 2469 70 18 8 139 C 2470 500 21 8 140 C 2471 12 22 8 141 D 6157.00 142 C 2472 113.56 4 8 143 C 2473 9.95 18 8 144 CC 2474 145 C 2475 368 23 8 146 C 2476 616 9 8 147 C 2477 208.65 5 8 148 C 2478 380 7 9 149 C 2479 129 5 9 150 C 2480 3.95 18 9 151 C 2481 7.06 1 9 152 C 2482 30 18 9 153 C 2483 15 18 9 154 D 5631.50 155 CC 2484 156 C 2485 2000 21 9 157 C 2486 7 1 9 158 C 2487 34.03 22 9 159 C 2488 474.35 5 9 160 C 2489 179.46 5 9 161 C 2490 145 5 9 162 D 5395 163 C 2491 12.30 18 9 164 C 2492 7 1 11 165 C 2493 2 22 9 166 C 2494 3.50 18 9 167 C 2495 46.49 4 10 168 CC 2496 169 C 2497 117.03 3 10 170 CC 2498 171 C 2499 1773.70 2 11 172 C 2500 94.90 22 11 173 C 2501 50 20 11 174 C 2502 21.85 11 10 175 C 2503 89.37 8 10 176 D 10811.70 177 C 2504 547.42 17 11 178 C 2505 1203.31 22 11 179 C 2506 368 23 11 180 C 2507 616 9 11 181 C 2508 10.80 18 11 182 C 2509 23.30 5 11 183 C 2510 27.60 5 11 184 C 2511 126.00 5 11 185 C 2512 168.26 5 11 186 C 2513 230.66 25 11 187 C 2514 18 18 11 188 C 2515 20 18 11 189 C 2516 42 26 11 190 C 2517 8 18 11 191 D 7237.50 192 C 2518 446.86 4 11 193 C 2519 20 26 12 194 C 2520 28.99 10 12 195 C 2521 4.15 10 12 196 C 2522 61.36 10 12 197 C 2523 1210.49 10 12 198 C 2524 7 1 12 199 C 2525 16 10 12 200 C 2526 45.45 5 12 201 C 2527 13.30 5 12 202 C 2528 387 17 12 203 C 2529 18.70 18 12 204 CC 2530 205 C 2531 1800 21 13 206 C 2532 206.25 26 12 207 C 2533 1703.40 2 12 208 D 3825 209 C 2534 3178.45 22 14 210 CC 2535 211 C 2536 97.67 23 14 212 C 2537 55.93 4 14 213 C 2538 26 5 14 214 C 2539 550 24 14 215 C 2540 106.32 8 14 216 C 2541 105 3 14 217 C 2542 108.06 8 14 218 D 6507.66 219 CC 2543 220 C 2544 74.95 10 14 221 C 2545 671.81 17 14 222 C 2546 262.60 5 14 223 C 2547 50.50 5 14 224 C 2548 11.70 25 14 225 C 2549 85 6 14 226 C 2550 10 18 14 227 C 2551 34 6 14 228 C 2552 200 5 14 229 C 2553 368 23 14 230 C 2554 912.90 9 14 231 C 2555 500 21 14 232 C 2556 90 10 14 233 C 2557 120 1 15 234 C 2558 2.05 18 15 235 C 2559 899 17 15 236 C 2560 267.58 22 15 237 D 465 238 D 3182.36 239 C 2561 100 5 15 240 CC 2562 241 DM 200 242 D 5187.50 243 C 2563 500 8 15 244 C 2564 100.75 10 15 245 C 2565 3000 21 15 246 C 2566 1800 21 17 247 C 2567 75.21 10 15 248 C 2568 563.06 4 15 249 C 2569 26 17 15 250 C 2570 192 22 15 251 C 2571 14.30 5 15 252 C 2572 184.25 5 15 253 D 3000 254 C 2573 500 21 15 255 C 2574 115 3 16 256 D 11960.00 257 C 2575 42 26 16 258 C 2576 26.12 5 16 259 C 2577 81.71 4 16 260 C 2578 36.81 11 16 261 C 2579 368.00 23 16 262 C 2580 671.81 17 16 263 C 2581 37.70 18 16 264 C 2582 72 6 16 265 C 2583 350 21 16 266 C 2584 23.95 8 16 267 C 2585 1773.70 2 16 268 CC 2586 269 C 2587 271.60 23 17 270 CC 2588 271 D 2107.75 272 D 4990 273 C 2589 5 1 17 274 DM 14.60 275 DM 7.50 276 D 829.25 277 D 21228.50 278 D 5680 279 C 2590 105.78 8 17 280 C 2591 311.54 8 17 281 C 2593 770.94 25 17 282 C 2594 109.92 22 17 283 C 2595 432.25 4 18 284 C 2596 28 1 18 285 C 2597 200 27 18 286 C 2598 919 2 18 287 C 2599 187.22 5 18 288 C 2600 134 5 18 289 C 2601 90.50 5 18 290 C 2602 153.64 5 18 291 C 2603 14850. 22 18 292 CC 2604 293 C 2605 50 24 18 294 C 2606 186.36 8 18 295 C 2607 85 1 18 296 D 32927.50 297 C 2608 1352.93 25 19 298 C 2609 50 20 19 299 CC 2610 300 CC 2611 301 DM 7.37 302 C 2612 17 6 20 303 D 14750.00 304 D 2040 305 C 2613 33 5 20 306 C 2614 9.22 5 20 307 C 2615 115 3 20 308 C 2616 1875.10 2 20 309 C 2617 134 5 20 310 C 2618 46.45 5 20 311 C 2619 790.75 17 20 312 C 2620 33 17 20 313 C 2621 368 23 20 314 C 2622 52.30 5 20 315 C 2623 309.14 8 20 316 C 2624 9 18 20 317 C 2625 1452.77 25 20 318 D 8742.50 319 C 2626 50 24 20 320 C 2627 39.50 18 20 321 CC 2628 322 C 2629 56 17 20 323 C 2630 164 5 21 324 C 2631 400.88 4 21 325 CC 2632 326 C 2633 8.75 18 21 327 C 2634 7.50 1 21 328 C 2635 48 4 21 329 C 2636 12.55 11 21 330 C 2637 139.70 22 21 331 D 538 332 C 2638 1200 21 22 333 C 2639 1000 21 21 334 C 2640 115 3 21 335 C 2641 30 5 21 336 C 2642 101.39 4 22 337 D 3000 338 DM 3000.00 339 C 2643 140 22 21 340 C 2644 35 26 22 341 C 2645 671.81 17 22 342 C 2646 1850.16 2 22 343 C 2647 70 23 22 344 C 2648 14.20 23 22 345 C 2649 500 24 22 346 C 2650 13.05 11 22 347 C 2651 205.74 22 22 348 C 2652 199.40 5 22 349 C 2653 17.16 5 22 350 C 2654 19.94 5 22 351 C 2655 34.12 22 22 352 D 2530.69 353 D 20162.50 354 D 8992.41 355 C 2656 1500 21 23 356 C 2657 116.89 1 23 357 D 1545 358 C 2659 368 23 22 359 C 2660 37 18 22 360 C 2661 25 22 22 361 C 2662 15 18 22 362 C 2663 500 21 23 363 C 2664 25.35 5 23 364 D 6212.50 365 CC 2665 366 C 2666 50 24 23 367 C 2667 96.30 18 23 368 C 2668 495.42 4 23 369 C 2669 145 5 23 370 C 2670 8.70 1 24 371 C 2671 16.80 1 24 372 C 2672 29 5 23 373 C 2673 11.48 22 23 374 C 2674 1397.48 25 23 375 C 2675 200 28 23 376 C 2676 500 8 23 377 CC 2677 378 C 2678 49.56 8 24 379 C 2679 10000 23 24 380 C 2680 110 23 24 381 C 2681 1007 23 24 382 C 2682 37.64 22 24 383 C 2683 2000. 21 25 384 C 2684 49.44 1 25 385 D 4762.50 386 C 2685 1850.16 2 25 387 C 2686 35.27 11 25 388 C 2687 115 3 25 389 C 2688 144.36 4 25 390 C 2689 50 22 25 391 C 2690 39.85 18 25 392 C 2691 141.22 4 25 393 C 2692 552.87 17 25 394 C 2693 134.32 22 25 395 CC 2694 396 D 1882.50 397 C 2695 500 8 25 398 C 2696 500 8 25 399 C 2697 20.32 5 26 400 C 2698 750 21 26 401 C 2699 110.25 1 26 402 C 2700 368 23 25 403 C 2701 134.74 22 25 404 C 2702 6.90 5 25 405 C 2703 99 17 25 406 DM 11.49 407 DM 11.61 408 C 2704 36 18 26 409 C 2705 635.69 27 26 410 C 2706 18.50 18 26 411 D 7130 412 C 2707 295 26 26 413 C 2708 472.87 4 26 414 C 2709 15 18 26 415 C 2710 36.50 5 26 416 C 2711 16.75 18 26 417 C 2712 218.26 5 26 418 C 2713 139.96 13 26 419 CC 2714 420 C 2715 50 22 26 421 C 2716 1500 21 27 422 C 2717 1500 21 28 423 C 2718 11.56 5 26 424 C 2719 4812.51 23 27 425 D 1545 426 C 2720 3920.58 17 27 427 C 2721 115 3 27 428 C 2722 76.99 22 27 429 C 2723 40.30 5 27 430 C 2724 117.43 4 27 431 C 2725 552.87 17 27 432 C 2726 127.35 5 27 433 C 2727 6 18 27 434 C 2728 20 5 27 435 C 2729 52.84 11 27 436 C 2730 5.74 5 27 437 DM 23.10 438 C 2731 50 24 27 439 D 592.50 440 C 2732 911.35 25 27 441 C 2733 46.85 5 27 442 C 2734 164.11 5 27 443 C 2735 1850.16 2 27 444 C 2736 140 1 27 445 D 1997 446 C 2737 368 23 27 447 D 1467.50 448 C 2738 154.01 5 28 449 C 2739 33 18 28 450 C 2740 40 23 28 451 C 2741 15.15 8 28 452 C 2742 342.32 8 28 453 C 2743 10 26 28 454 C 2744 160 27 28 455 C 2745 19 26 28 456 C 2746 1136.47 6 28 457 C 2747 174.34 8 28 458 C 2748 208.22 25 28 459 C 2749 131.46 10 28 460 D 13855 461 C 2750 145.75 10 28 462 C 2751 30 5 28 463 C 2752 54 5 28 464 C 2753 55 22 28 465 C 2754 569.90 4 28 466 C 2755 64.50 6 28 467 C 2756 75 28 29 468 CC 2757 469 C 2758 374 17 29 470 C 2759 115 3 29 471 C 2760 500 21 29 472 C 2761 500 21 29 473 C 2762 1510 21 29 474 E 496 1177.09 12 3 475 E 495 1076.21 12 3 476 E 494 392.55 12 2 477 E 493 456.63 12 2 478 E 492 497.88 12 2 479 E 491 574.03 12 2 480 E 490 890.20 12 2 481 E 489 842.19 12 2 482 E 488 788.81 12 2 483 E 510 304.73 12 5 484 E 509 432.47 12 5 485 E 508 575.53 12 5 486 E 507 502.81 12 5 487 E 506 842.80 12 5 488 E 505 1033.57 12 5 489 E 504 254.00 15 4 490 W 503 702.05 14 4 491 W 502 4521.60 14 4 492 W 501 387.26 12 3 493 W 500 372.80 12 3 494 W 499 561.91 12 3 495 W 498 497.97 12 3 496 E 497 926.48 12 3 497 E 519 84.76 12 12 498 E 520 483.00 15 8 499 E 511 830.88 12 7 500 E 537 464.55 12 10 501 E 531 356.37 12 9 502 E 529 589.96 12 9 503 E 530 436.65 12 9 504 E 528 393.86 12 9 505 E 527 888.88 12 9 506 E 526 1034.18 12 9 507 E 525 991.35 12 9 508 E 524 733.00 15 8 509 W 522 182.00 12 8 510 W 523 1549.00 14 8 511 W 521 2210.00 14 8 512 W 518 3391.80 14 7 513 W 517 277.10 12 7 514 E 516 259.01 12 7 515 E 515 439.51 12 7 516 E 514 398.75 12 7 517 E 513 1113.18 12 7 518 E 512 893.06 12 7 519 W 540 4601.70 14 10 520 E 532 1062.02 12 10 521 E 533 1122.84 12 10 522 E 534 999.70 12 10 523 E 535 538.32 12 10 524 E 536 643.20 12 10 525 E 538 386.34 12 10 526 E 539 105.03 12 10 527 W 541 1703.92 15 11 528 W 544 5.00 14 11 529 W 545 1345.38 15 11 530 E 546 924.04 12 12 531 E 547 982.73 12 12 532 E 548 873.83 12 12 533 E 549 473.57 12 12 534 E 550 542.91 12 12 535 E 551 440.27 12 12 536 E 553 299.63 12 12 537 E 552 185.93 12 12 538 E 568 343.38 12 15 539 E 569 304.73 12 15 540 E 567 596.15 12 15 541 E 566 465.02 12 15 542 E 565 948.24 12 14 543 E 564 985.99 12 14 544 E 563 991.80 12 14 545 E 557 473.57 12 13 546 E 558 601.00 12 13 547 E 560 265.01 12 13 548 E 555 991.16 12 12 549 E 554 927.77 12 12 550 E 556 852.47 12 13 551 W 562 4255.04 14 13 552 E 561 297.08 12 13 553 E 559 688.29 12 13 554 E 570 1050.61 12 16 555 E 571 1069.11 12 16 556 E 572 1019.07 12 16 557 E 573 566.88 12 16 558 E 574 630.97 12 16 559 E 575 269.88 12 16 560 E 576 472.09 12 16 561 E 577 346.43 12 16 562 W 578 4412.14 14 16 563 W 579 483.00 15 16 564 W 580 2210.00 14 16 565 W 581 38.36 14 16 566 E 582 1046.89 12 17 567 E 583 1151.39 12 17 568 E 584 996.51 12 17 569 E 585 627.63 12 17 570 E 586 732.19 12 17 571 E 587 537.45 12 17 572 E 588 513.44 12 17 573 E 589 374.42 12 17 574 E 590 110.15 12 17 575 E 591 979.37 12 18 576 E 592 1426.28 12 18 577 E 593 960.21 12 18 578 E 595 645.08 12 18 579 E 597 430.98 12 18 580 E 598 343.31 12 18 581 E 594 531.30 12 18 582 E 596 500.91 12 18 583 W 599 5659.58 14 18 584 W 600 1863.74 15 18 585 W 602 850.20 15 18 586 E 603 796.26 12 20 587 E 604 802.32 12 20 588 E 605 379.26 12 20 589 E 606 542.91 12 20 590 E 607 283.06 12 20 591 E 608 180.93 12 20 592 E 609 282.18 12 20 593 E 615 369.00 12 21 594 W 617 2861.14 14 21 595 E 625 2210.00 14 23 596 E 627 1209.08 12 24 597 E 628 1158.89 12 24 598 E 629 552.62 12 24 599 E 630 596.12 12 24 600 E 632 359.96 12 24 601 W 634 800.03 15 24 602 E 635 921.48 12 25 603 E 636 1050.72 12 25 604 E 637 533.66 12 25 605 E 638 610.74 12 25 606 E 639 361.79 12 25 607 E 640 201.10 12 25 608 E 645 346.92 12 26 609 E 610 325.46 12 21 610 E 611 1020.87 12 21 611 E 612 922.47 12 21 612 E 613 505.84 12 21 613 E 614 595.69 12 21 614 E 616 258.02 12 21 615 E 618 1053.55 12 23 616 E 619 845.14 12 23 617 E 620 420.35 12 23 618 E 621 548.51 12 23 619 E 622 293.42 12 23 620 E 623 339.16 12 23 621 E 624 374.42 12 23 622 W 626 483.00 15 23 623 E 631 142.22 12 24 624 W 633 2792.12 14 24 625 E 660 484.10 12 29 626 W 662 2276.24 14 29 627 E 650 981.35 12 28 628 E 651 992.28 12 28 629 E 652 327.45 12 28 630 E 653 384.95 12 28 631 E 641 1081.13 12 26 632 E 642 1042.43 12 26 633 E 643 490.20 12 26 634 E 644 516.116 12 26 635 E 646 326.75 12 26 636 W 647 2424.72 14 26 637 W 648 393.57 15 26 638 W 649 251.13 15 26 639 E 654 373.60 12 28 640 E 657 1176.43 12 29 641 E 658 1184.18 12 29 642 E 659 566.46 12 29 643 E 661 247.78 12 29 644 E 663 393.62 15 29 645 E 664 40.27 15 29 646 W 656 483 15 29 647 W 655 2210. 14 29 648 CC 542 649 CC 543 650 CC 2592 651 CC 2658 488 482 E 488 788.81 12 2 489 481 E 489 842.19 12 2 490 480 E 490 890.20 12 2 491 479 E 491 574.03 12 2 492 478 E 492 497.88 12 2 493 477 E 493 456.63 12 2 494 476 E 494 392.55 12 2 495 475 E 495 1076.21 12 3 496 474 E 496 1177.09 12 3 497 496 E 497 926.48 12 3 498 495 W 498 497.97 12 3 499 494 W 499 561.91 12 3 500 493 W 500 372.80 12 3 501 492 W 501 387.26 12 3 502 491 W 502 4521.60 14 4 503 490 W 503 702.05 14 4 504 489 E 504 254.00 15 4 505 488 E 505 1033.57 12 5 506 487 E 506 842.80 12 5 507 486 E 507 502.81 12 5 508  485 E 508 575.53 12 5 509 484 E 509 432.47 12 5 510 483 E 510 304.73 12 5 511 499 E 511 830.88 12 7 512 518 E 512 893.06 12 7 513 517 E 513 1113.18 12 7 514 516 E 514 398.75 12 7 515 515 E 515 439.51 12 7 516 514 E 516 259.01 12 7 517 513 W 517 277.10 12 7 518 512 W 518 3391.80 14 7 519 497 E 519 84.76 12 12 520 498 E 520 483.00 15 8 521 511 W 521 2210.00 14 8 522 509 W 522 182.00 12 8 523 510 W 523 1549.00 14 8 524 508 E 524 733.00 15 8 525 507 E 525 991.35 12 9 526 506 E 526 1034.18 12 9 527 505 E 527 888.88 12 9 528 504 E 528 393.86 12 9 529 502 E 529 589.96 12 9 530 503 E 530 436.65 12 9 531 501 E 531 356.37 12 9 532 520 E 532 1062.02 12 10 533 521 E 533 1122.84 12 10 534 522 E 534 999.70 12 10 535 523 E 535 538.32 12 10 536 524 E 536 643.20 12 10 537 500 E 537 464.55 12 10 538 525 E 538 386.34 12 10 539 526 E 539 105.03 12 10 540 519 W 540 4601.70 14 10 541 527 W 541 1703.92 15 11 542 648 CC 542 543 649 CC 543 544 528 W 544 5.00 14 11 545 529 W 545 1345.38 15 11 546 530 E 546 924.04 12 12 547 531 E 547 982.73 12 12 548 532 E 548 873.83 12 12 549 533 E 549 473.57 12 12 550 534 E 550 542.91 12 12 551 535 E 551 440.27 12 12 552 537 E 552 185.93 12 12 553 536 E 553 299.63 12 12 554 549 E 554 927.77 12 12 555 548 E 555 991.16 12 12 556 550 E 556 852.47 12 13 557 545 E 557 473.57 12 13 558 546 E 558 601.00 12 13 559 553 E 559 688.29 12 13 560 547 E 560 265.01 12 13 561 552 E 561 297.08 12 13 562 551 W 562 4255.04 14 13 563 544 E 563 991.80 12 14 564 543 E 564 985.99 12 14 565 542 E 565 948.24 12 14 566 541 E 566 465.02 12 15 567 540 E 567 596.15 12 15 568 538 E 568 343.38 12 15 569 539 E 569 304.73 12 15 570 554 E 570 1050.61 12 16 571 555 E 571 1069.11 12 16 572 556 E 572 1019.07 12 16 573 557 E 573 566.88 12 16 574 558 E 574 630.97 12 16 575 559 E 575 269.88 12 16 576 560 E 576 472.09 12 16 577 561 E 577 346.43 12 16 578 562 W 578 4412.14 14 16 579 563 W 579 483.00 15 16 580 564 W 580 2210.00 14 16 581 565 W 581 38.36 14 16 582 566 E 582 1046.89 12 17 583 567 E 583 1151.39 12 17 584 568 E 584 996.51 12 17 585 569 E 585 627.63 12 17 586 570 E 586 732.19 12 17 587 571 E 587 537.45 12 17 588 572 E 588 513.44 12 17 589 573 E 589 374.42 12 17 590 574 E 590 110.15 12 17 591 575 E 591 979.37 12 18 592 576 E 592 1426.28 12 18 593 577 E 593 960.21 12 18 594 581 E 594 531.30 12 18 595 578 E 595 645.08 12 18 596 582 E 596 500.91 12 18 597 579 E 597 430.98 12 18 598 580 E 598 343.31 12 18 599 583 W 599 5659.58 14 18 600 584 W 600 1863.74 15 18 602 585 W 602 850.20 15 18 603 586 E 603 796.26 12 20 604 587 E 604 802.32 12 20 605 588 E 605 379.26 12 20 606 589 E 606 542.91 12 20 607 590 E 607 283.06 12 20 608 591 E 608 180.93 12 20 609 592 E 609 282.18 12 20 610 609 E 610 325.46 12 21 611 610 E 611 1020.87 12 21 612 611 E 612 922.47 12 21 613 612 E 613 505.84 12 21 614 613 E 614 595.69 12 21 615 593 E 615 369.00 12 21 616 614 E 616 258.02 12 21 617 594 W 617 2861.14 14 21 618 615 E 618 1053.55 12 23 619 616 E 619 845.14 12 23 620 617 E 620 420.35 12 23 621 618 E 621 548.51 12 23 622 619 E 622 293.42 12 23 623 620 E 623 339.16 12 23 624 621 E 624 374.42 12 23 625 595 E 625 2210.00 14 23 626 622 W 626 483.00 15 23 627 596 E 627 1209.08 12 24 628 597 E 628 1158.89 12 24 629 598 E 629 552.62 12 24 630 599 E 630 596.12 12 24 631 623 E 631 142.22 12 24 632 600 E 632 359.96 12 24 633 624 W 633 2792.12 14 24 634 601 W 634 800.03 15 24 635 602 E 635 921.48 12 25 636 603 E 636 1050.72 12 25 637 604 E 637 533.66 12 25 638 605 E 638 610.74 12 25 639 606 E 639 361.79 12 25 640 607 E 640 201.10 12 25 641 631 E 641 1081.13 12 26 642 632 E 642 1042.43 12 26 643 633 E 643 490.20 12 26 644 634 E 644 516.116 12 26 645 608 E 645 346.92 12 26 646 635 E 646 326.75 12 26 647 636 W 647 2424.72 14 26 648 637 W 648 393.57 15 26 649 638 W 649 251.13 15 26 650 627 E 650 981.35 12 28 651 628 E 651 992.28 12 28 652 629 E 652 327.45 12 28 653 630 E 653 384.95 12 28 654 639 E 654 373.60 12 28 655 647 W 655 2210. 14 29 656 646 W 656 483 15 29 657 640 E 657 1176.43 12 29 658 641 E 658 1184.18 12 29 659 642 E 659 566.46 12 29 660 625 E 660 484.10 12 29 661 643 E 661 247.78 12 29 662 626 W 662 2276.24 14 29 663 644 E 663 393.62 15 29 664 645 E 664 40.27 15 29 2313 3 C 2313 1804.52 22 1 2332 2 C 2332 2000 21 1 2337 4 C 2337 43.50 0 0 2338 5 C 2338 6.00 0 0 2345 6 C 2345 53.35 0 0 2347 7 C 2347 38.00 0 0 2348 8 C 2348 50.00 24 1 2354 10 C 2354 50.00 20 1 2355 13 C 2355 280.60 22 1 2356 9 C 2356 264.05 0 0 2357 14 CC 2357 2358 15 C 2358 10 3 1 2359 16 C 2359 42.80 10 1 2360 17 C 2360 119.40 19 1 2361 18 C 2361 50 18 1 2362 19 CC 2362 2363 20 CC 2363 2364 21 CC 2364 2365 22 CC 2365 2366 23 C 2366 50 18 1 2367 24 CC 2367 2368 25 CC 2368 2369 26 CC 2369 2370 27 CC 2370 2371 28 C 2371 50 18 1 2372 29 CC 2372 2373 30 CC 2373 2374 31 C 2374 547.42 17 1 2375 32 C 2375 86 5 1 2376 33 C 2376 500 21 1 2377 34 C 2377 1500 21 3 2378 35 C 2378 93.20 3 2 2379 36 C 2379 1562.80 2 2 2380 37 C 2380 3.60 5 2 2381 38 C 2381 136.16 5 2 2382 39 C 2382 114.98 18 2 2383 41 C 2383 139.24 4 2 2384 42 C 2384 155 5 2 2385 43 C 2385 60.30 5 2 2386 44 C 2386 1151 17 2 2387 45 C 2387 12 18 2 2388 46 C 2388 66.80 22 2 2389 47 C 2389 33.30 22 2 2390 48 C 2390 22.80 22 3 2391 49 C 2391 12 18 2 2392 50 C 2392 39 22 2 2393 51 C 2393 64.65 25 2 2394 52 C 2394 85.54 22 2 2395 55 C 2395 1000. 21 3 2396 56 C 2396 405.38 4 3 2397 57 C 2397 64. 8 3 2398 60 C 2398 14.85 18 3 2399 62 C 2399 7.95 18 3 2400 63 C 2400 8.52 18 3 2401 64 C 2401 29.39 22 3 2402 65 C 2402 80. 23 3 2403 67 C 2403 1562.80 2 5 2404 68 C 2404 1887.00 17 5 2405 69 C 2405 28.26 21 5 2406 70 C 2406 52.68 5 5 2407 71 C 2407 53.35 5 5 2408 72 C 2408 27.00 5 5 2409 73 C 2409 301.50 21 5 2410 74 C 2410 32.23 5 5 2411 75 C 2411 110. 16 5 2412 76 C 2412 1500 21 10 2413 77 C 2413 15 18 3 2414 78 C 2414 286.41 5 3 2415 79 C 2415 12.68 5 3 2416 80 C 2416 93.20 3 5 2417 81 C 2417 7.75 11 3 2418 82 C 2418 66.34 4 3 2419 83 C 2419 1197.81 5 5 2420 84 C 2420 50 24 3 2421 85 C 2421 261.65 23 5 2422 86 C 2422 10 16 5 2423 87 C 2423 2386 17 5 2424 88 C 2424 28.15 23 5 2425 89 C 2425 8.95 18 5 2426 91 C 2426 16.05 5 7 2427 92 C 2427 450.59 17 5 2428 93 C 2428 621.73 8 6 2429 94 C 2429 4000. 21 6 2430 95 C 2430 6.75 18 6 2431 96 C 2431 110 5 6 2432 97 C 2432 991 16 6 2433 98 C 2433 41.5 20 6 2434 99 C 2434 52 5 6 2435 100 C 2435 675 8 6 2436 104 C 2436 40 20 6 2437 105 CC 2437 2438 106 C 2438 3.47 18 6 2439 107 C 2439 11 18 6 2440 108 C 2440 339.45 22 6 2441 109 C 2441 28.76 18 6 2442 110 C 2442 589.40 4 6 2443 111 C 2443 19.89 22 6 2444 112 C 2444 16. 18 6 2445 113 CC 2445 2446 114 C 2446 93.20 3 6 2447 115 C 2447 410.72 25 6 2448 116 C 2448 695.00 7 6 2449 117 C 2449 50. 27 6 2450 118 C 2450 13.00 17 6 2451 119 C 2451 55.00 22 7 2452 120 C 2452 74.42 22 7 2453 121 C 2453 56.30 5 7 2454 122 C 2454 7.85 5 7 2455 123 C 2455 223.17 5 7 2456 124 C 2456 368.00 23 7 2457 125 C 2457 1562.80 2 7 2458 127 C 2458 450.59 17 8 2459 128 C 2459 75.65 11 8 2460 129 C 2460 923. 5 8 2461 130 CC 2461 2462 131 CC 2462 2463 132 C 2463 25 18 8 2464 133 C 2464 26 22 8 2465 134 C 2465 50.50 18 8 2466 135 C 2466 39 5 8 2467 136 C 2467 4.80 22 8 2468 137 CC 2468 2469 138 C 2469 70 18 8 2470 139 C 2470 500 21 8 2471 140 C 2471 12 22 8 2472 142 C 2472 113.56 4 8 2473 143 C 2473 9.95 18 8 2474 144 CC 2474 2475 145 C 2475 368 23 8 2476 146 C 2476 616 9 8 2477 147 C 2477 208.65 5 8 2478 148 C 2478 380 7 9 2479 149 C 2479 129 5 9 2480 150 C 2480 3.95 18 9 2481 151 C 2481 7.06 1 9 2482 152 C 2482 30 18 9 2483 153 C 2483 15 18 9 2484 155 CC 2484 2485 156 C 2485 2000 21 9 2486 157 C 2486 7 1 9 2487 158 C 2487 34.03 22 9 2488 159 C 2488 474.35 5 9 2489 160 C 2489 179.46 5 9 2490 161 C 2490 145 5 9 2491 163 C 2491 12.30 18 9 2492 164 C 2492 7 1 11 2493 165 C 2493 2 22 9 2494 166 C 2494 3.50 18 9 2495 167 C 2495 46.49 4 10 2496 168 CC 2496 2497 169 C 2497 117.03 3 10 2498 170 CC 2498 2499 171 C 2499 1773.70 2 11 2500 172 C 2500 94.90 22 11 2501 173 C 2501 50 20 11 2502 174 C 2502 21.85 11 10 2503 175 C 2503 89.37 8 10 2504 177 C 2504 547.42 17 11 2505 178 C 2505 1203.31 22 11 2506 179 C 2506 368 23 11 2507 180 C 2507 616 9 11 2508 181 C 2508 10.80 18 11 2509 182 C 2509 23.30 5 11 2510 183 C 2510 27.60 5 11 2511 184 C 2511 126.00 5 11 2512 185 C 2512 168.26 5 11 2513 186 C 2513 230.66 25 11 2514 187 C 2514 18 18 11 2515 188 C 2515 20 18 11 2516 189 C 2516 42 26 11 2517 190 C 2517 8 18 11 2518 192 C 2518 446.86 4 11 2519 193 C 2519 20 26 12 2520 194 C 2520 28.99 10 12 2521 195 C 2521 4.15 10 12 2522 196 C 2522 61.36 10 12 2523 197 C 2523 1210.49 10 12 2524 198 C 2524 7 1 12 2525 199 C 2525 16 10 12 2526 200 C 2526 45.45 5 12 2527 201 C 2527 13.30 5 12 2528 202 C 2528 387 17 12 2529 203 C 2529 18.70 18 12 2530 204 CC 2530 2531 205 C 2531 1800 21 13 2532 206 C 2532 206.25 26 12 2533 207 C 2533 1703.40 2 12 2534 209 C 2534 3178.45 22 14 2535 210 CC 2535 2536 211 C 2536 97.67 23 14 2537 212 C 2537 55.93 4 14 2538 213 C 2538 26 5 14 2539 214 C 2539 550 24 14 2540 215 C 2540 106.32 8 14 2541 216 C 2541 105 3 14 2542 217 C 2542 108.06 8 14 2543 219 CC 2543 2544 220 C 2544 74.95 10 14 2545 221 C 2545 671.81 17 14 2546 222 C 2546 262.60 5 14 2547 223 C 2547 50.50 5 14 2548 224 C 2548 11.70 25 14 2549 225 C 2549 85 6 14 2550 226 C 2550 10 18 14 2551 227 C 2551 34 6 14 2552 228 C 2552 200 5 14 2553 229 C 2553 368 23 14 2554 230 C 2554 912.90 9 14 2555 231 C 2555 500 21 14 2556 232 C 2556 90 10 14 2557 233 C 2557 120 1 15 2558 234 C 2558 2.05 18 15 2559 235 C 2559 899 17 15 2560 236 C 2560 267.58 22 15 2561 239 C 2561 100 5 15 2562 240 CC 2562 2563 243 C 2563 500 8 15 2564 244 C 2564 100.75 10 15 2565 245 C 2565 3000 21 15 2566 246 C 2566 1800 21 17 2567 247 C 2567 75.21 10 15 2568 248 C 2568 563.06 4 15 2569 249 C 2569 26 17 15 2570 250 C 2570 192 22 15 2571 251 C 2571 14.30 5 15 2572 252 C 2572 184.25 5 15 2573 254 C 2573 500 21 15 2574 255 C 2574 115 3 16 2575 257 C 2575 42 26 16 2576 258 C 2576 26.12 5 16 2577 259 C 2577 81.71 4 16 2578 260 C 2578 36.81 11 16 2579 261 C 2579 368.00 23 16 2580 262 C 2580 671.81 17 16 2581 263 C 2581 37.70 18 16 2582 264 C 2582 72 6 16 2583 265 C 2583 350 21 16 2584 266 C 2584 23.95 8 16 2585 267 C 2585 1773.70 2 16 2586 268 CC 2586 2587 269 C 2587 271.60 23 17 2588 270 CC 2588 2589 273 C 2589 5 1 17 2590 279 C 2590 105.78 8 17 2591 280 C 2591 311.54 8 17 2592 650 CC 2592 2593 281 C 2593 770.94 25 17 2594 282 C 2594 109.92 22 17 2595 283 C 2595 432.25 4 18 2596 284 C 2596 28 1 18 2597 285 C 2597 200 27 18 2598 286 C 2598 919 2 18 2599 287 C 2599 187.22 5 18 2600 288 C 2600 134 5 18 2601 289 C 2601 90.50 5 18 2602 290 C 2602 153.64 5 18 2603 291 C 2603 14850. 22 18 2604 292 CC 2604 2605 293 C 2605 50 24 18 2606 294 C 2606 186.36 8 18 2607 295 C 2607 85 1 18 2608 297 C 2608 1352.93 25 19 2609 298 C 2609 50 20 19 2610 299 CC 2610 2611 300 CC 2611 2612 302 C 2612 17 6 20 2613 305 C 2613 33 5 20 2614 306 C 2614 9.22 5 20 2615 307 C 2615 115 3 20 2616 308 C 2616 1875.10 2 20 2617 309 C 2617 134 5 20 2618 310 C 2618 46.45 5 20 2619 311 C 2619 790.75 17 20 2620 312 C 2620 33 17 20 2621 313 C 2621 368 23 20 2622 314 C 2622 52.30 5 20 2623 315 C 2623 309.14 8 20 2624 316 C 2624 9 18 20 2625 317 C 2625 1452.77 25 20 2626 319 C 2626 50 24 20 2627 320 C 2627 39.50 18 20 2628 321 CC 2628 2629 322 C 2629 56 17 20 2630 323 C 2630 164 5 21 2631 324 C 2631 400.88 4 21 2632 325 CC 2632 2633 326 C 2633 8.75 18 21 2634 327 C 2634 7.50 1 21 2635 328 C 2635 48 4 21 2636 329 C 2636 12.55 11 21 2637 330 C 2637 139.70 22 21 2638 332 C 2638 1200 21 22 2639 333 C 2639 1000 21 21 2640 334 C 2640 115 3 21 2641 335 C 2641 30 5 21 2642 336 C 2642 101.39 4 22 2643 339 C 2643 140 22 21 2644 340 C 2644 35 26 22 2645 341 C 2645 671.81 17 22 2646 342 C 2646 1850.16 2 22 2647 343 C 2647 70 23 22 2648 344 C 2648 14.20 23 22 2649 345 C 2649 500 24 22 2650 346 C 2650 13.05 11 22 2651 347 C 2651 205.74 22 22 2652 348 C 2652 199.40 5 22 2653 349 C 2653 17.16 5 22 2654 350 C 2654 19.94 5 22 2655 351 C 2655 34.12 22 22 2656 355 C 2656 1500 21 23 2657 356 C 2657 116.89 1 23 2658 651 CC 2658 2659 358 C 2659 368 23 22 2660 359 C 2660 37 18 22 2661 360 C 2661 25 22 22 2662 361 C 2662 15 18 22 2663 362 C 2663 500 21 23 2664 363 C 2664 25.35 5 23 2665 365 CC 2665 2666 366 C 2666 50 24 23 2667 367 C 2667 96.30 18 23 2668 368 C 2668 495.42 4 23 2669 369 C 2669 145 5 23 2670 370 C 2670 8.70 1 24 2671 371 C 2671 16.80 1 24 2672 372 C 2672 29 5 23 2673 373 C 2673 11.48 22 23 2674 374 C 2674 1397.48 25 23 2675 375 C 2675 200 28 23 2676 376 C 2676 500 8 23 2677 377 CC 2677 2678 378 C 2678 49.56 8 24 2679 379 C 2679 10000 23 24 2680 380 C 2680 110 23 24 2681 381 C 2681 1007 23 24 2682 382 C 2682 37.64 22 24 2683 383 C 2683 2000. 21 25 2684 384 C 2684 49.44 1 25 2685 386 C 2685 1850.16 2 25 2686 387 C 2686 35.27 11 25 2687 388 C 2687 115 3 25 2688 389 C 2688 144.36 4 25 2689 390 C 2689 50 22 25 2690 391 C 2690 39.85 18 25 2691 392 C 2691 141.22 4 25 2692 393 C 2692 552.87 17 25 2693 394 C 2693 134.32 22 25 2694 395 CC 2694 2695 397 C 2695 500 8 25 2696 398 C 2696 500 8 25 2697 399 C 2697 20.32 5 26 2698 400 C 2698 750 21 26 2699 401 C 2699 110.25 1 26 2700 402 C 2700 368 23 25 2701 403 C 2701 134.74 22 25 2702 404 C 2702 6.90 5 25 2703 405 C 2703 99 17 25 2704 408 C 2704 36 18 26 2705 409 C 2705 635.69 27 26 2706 410 C 2706 18.50 18 26 2707 412 C 2707 295 26 26 2708 413 C 2708 472.87 4 26 2709 414 C 2709 15 18 26 2710 415 C 2710 36.50 5 26 2711 416 C 2711 16.75 18 26 2712 417 C 2712 218.26 5 26 2713 418 C 2713 139.96 13 26 2714 419 CC 2714 2715 420 C 2715 50 22 26 2716 421 C 2716 1500 21 27 2717 422 C 2717 1500 21 28 2718 423 C 2718 11.56 5 26 2719 424 C 2719 4812.51 23 27 2720 426 C 2720 3920.58 17 27 2721 427 C 2721 115 3 27 2722 428 C 2722 76.99 22 27 2723 429 C 2723 40.30 5 27 2724 430 C 2724 117.43 4 27 2725 431 C 2725 552.87 17 27 2726 432 C 2726 127.35 5 27 2727 433 C 2727 6 18 27 2728 434 C 2728 20 5 27 2729 435 C 2729 52.84 11 27 2730 436 C 2730 5.74 5 27 2731 438 C 2731 50 24 27 2732 440 C 2732 911.35 25 27 2733 441 C 2733 46.85 5 27 2734 442 C 2734 164.11 5 27 2735 443 C 2735 1850.16 2 27 2736 444 C 2736 140 1 27 2737 446 C 2737 368 23 27 2738 448 C 2738 154.01 5 28 2739 449 C 2739 33 18 28 2740 450 C 2740 40 23 28 2741 451 C 2741 15.15 8 28 2742 452 C 2742 342.32 8 28 2743 453 C 2743 10 26 28 2744 454 C 2744 160 27 28 2745 455 C 2745 19 26 28 2746 456 C 2746 1136.47 6 28 2747 457 C 2747 174.34 8 28 2748 458 C 2748 208.22 25 28 2749 459 C 2749 131.46 10 28 2750 461 C 2750 145.75 10 28 2751 462 C 2751 30 5 28 2752 463 C 2752 54 5 28 2753 464 C 2753 55 22 28 2754 465 C 2754 569.90 4 28 2755 466 C 2755 64.50 6 28 2756 467 C 2756 75 28 29 2757 468 CC 2757 2758 469 C 2758 374 17 29 2759 470 C 2759 115 3 29 2760 471 C 2760 500 21 29 2761 472 C 2761 500 21 29 2762 473 C 2762 1510 21 29 2733 441 SEARCH KEY 2733 441 C 2733 46.85 5 27 AMOUNT = 4.685E+01 NSB801215G 5'15 December 1980 North Slope Borough P.O. Box 69 Barrow, Alaska 99723 Re: Services Rendered for Wainwright School Shop Addition Electrical 27 Oct. Fly PDX - Anch. 5 28 Oct. Meet with Claude Laws & Review Spex 1 Travel Anc Brw Wain 5 School Final Inspection 2 29 Oct. School final inspection 3 Travel Wain - Anc 5 Standby 3 30 Oct. Travel Anc - Pdx 5 10 Nov. Electrical Design 10 11 Nov. Electrical Design 8 12 Nov. Write Spex 8 13 Nov. Review plans & Spex 8 14 Nov. Review plans and spex 8 Mechanical 09 Oct. Conference w/ Creedon & Lunsford 3.5 02 Nov. Mark up spex 2.5 08 Nov. Review sheets M-1,M-2,M-3 per NSB 8.5 change request 09 Nov. Revise drawings 2.5 10 Nov. Review with Architect .5 ==== 88.5 HRS 88.5 HRS @ $65.00 $5,752.50 Telephone 81.58 ======== Total $5,834.08 Status: Mechanical/Electrical design is complete. The Contract documents will be ready for bid after final review and one on site visit to verify the actual design. OPEN ;PASCAL EXTERNAL PROCEDURE TO "OPEN" ;A FILE VARIABLE TO A FILE NAME ;PETE GOODEVE .TITL OPEN ;PJG 78:10:22 .ENT ?OPEN .EXTN XPRET .EXTN WRLIN .EXTD .GCH,CHAN,TEMP1,.FIND,CNTAD,TABAD SP=41 SYSER = JSR @50 ;RDOS ERROR FCH = -1 FST = -2 .NREL ;TYPE THINGFILE = FILE OF THINGS; ; NAME = ARRAY[1..16] OF INTEGER; ;... ;... ;PROCEDURE OPEN(VAR F:THINGFILE;FILENAME:NAME;MODE:INTEGER); ?OPEN: LDA 2,-2,3 ;FILE VARIABLE MOVZR 2,2 ;FORM WORD POINTER STA 2,FBAP ;HOLD IT SUB 1,1 STA 1,TEMP1 ;NULL FOR TEXT LINE TERMIN. STA 1,0,2 ;CLEAR FILE BUFFER JSR @.GCH ;GET CHAN ETC JMP CLOS ;RETURNS HERE IF NOT TEXT FILE LDA 1,FST,2 ;CHECK STATUS MOVZL 1,1,SNR ;FOR UNWRITTEN STUFF JSR @.WRLN ;FLUSH IF NEEDED LDA 2,CHAN JSR @ .FIND ;GET TEXT FILE DESCRIPTORS MOVZR 0,3 ;POINTER TO LINE BUFF. SUB 0,0 STA 0,0,3 ;MAKE BUFFER "EMPTY" STA 0,@CNTAD ;CLEAR CHAR COUNT STA 0,@TABAD ;AND TABBING CLOS: LDA 2,CHAN .SYSTM .CLOS 77 LDA 2,CHAN ;IGNORE FAILURE LDA 3,SP LDA 1,0,3 ;MODE LDA 0,-1,3 ;FILENAME POINTER MOV 1,1,SNR ;READ MODE? JMP OPN ;YES -- DO NOT CREATE MOVZR# 1,1,SZR ;REWRITE? JMP CREAT ;NO -- DON'T DELETE .SYSTM .DELET LDA 2,CHAN ;DON'T WORRY ABOUT ABSENCE CREAT: .SYSTM .CRAND LDA 2,CHAN ;IGNORE ANY ERROR MOVZR 1,1,SZR ;APPEND MODE? JMP APPEN ;YES OPN: .SYSTM .OPEN 77 ;OPEN ON ORIGINAL CHANNEL JMP NOPN ;HANDLE A PROBLEM JMP WRCK APPEN: SUB 1,1 .SYSTM .APPEN ;77 JMP NOPN WRCK: LDA 3,SP LDA 1,0,3 ;CHECK MODE MOV 1,1,SNR ;WRITE? SUBZL 2,2,SKP ;NO -- SET BUFFER EMPTY FLAG SUBZR 2,2 ;YES -- SET EOF JMP STAT NOPN: LDA 3,DLECK SUB 2,3,SZR SYSER ;SERIOUS PROBLEM SUBZR 2,2 ;SET EOF ON FILE STAT: LDA 3,FBAP STA 2,FST,3 ;SET FILE VARIABLE STATUS XPRET .WRLN: WRLIN DLECK: 12 ;NON-EXISTENT FILE CHECK FBAP: .-. .END T35^ PROGRAM T35(INPUT,OUTPUT); VAR BITNO,TABPOS,CURPOS,WORDNO : INTEGER; TABS : ARRAY [1..5] OF INTEGER; PROCEDURE SBIT(BITNO:INTEGER;VAR WORD:INTEGER);EXTERNAL; BEGIN FOR CURPOS := 1 TO 72 DO BEGIN TABPOS:= CURPOS*8-1; WORDNO:=CURPOS MOD 16; BITNO:=CURPOS-WORDNO*16; WRITELN(OUTPUT,' ',TABPOS,WORDNO,BITNO); SBIT(BITNO,TABS[WORDNO]); END; WRITELN(OUTPUT,' ',TABS[1],TABS[2],TABS[3],TABS[4],TABS[5]) END. TEST1PX" GETIc197809d7C 2685 1850.16 C 2686 35.27 C 2687 115 C 2688 144.36 C 2689 50 C 2690 39.85 C 2691 141.22 C 2692 552.87 C 2693 134.32 CC 2694 D 1882.50 C 2695 500 C 2696 500 C 2697 20.32 C 2698 750 C 2699 110.25 C 2700 368 C 2701 134.74 C 2702 6.90 C 2703 99 E 3679.49 C 2704 36 C 2705 365.69 C 2706 18.50 D 7130 C 2707 295 C 2708 472.87 C 2709 15 C 2710 36.50 C 2711 16.75 C 2712 218.26 C 2713 139.96 CC 2714 C 2715 50 C 2716 1500 C 2718 11.56 E 3803.54 W 3069.42 1978R0 fB 4196.05 C 2332 2000 C 2356 264.05 C 2355 280.60 D 23546.65 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 C 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 E 4424.29 D 13878.50 C 2394 85.54 C 2395 1000. C 2396 405.38 C 2397 64. D 3885. C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 E 4499.72 W 5477.65 C 2402 80. D 3222.52 C 2403 1562.80 C 2404 1887.00 C 2405 28.26 C 2406 52.68 C 2407 53.35 C 2408 27.00 C 2409 301.50 C 2410 32.23 C 2411 110. C 2412 1500 C 2413 15 C 2414 286.41 C 2415 12.68 C 2416 93.20 C 2417 7.75 C 2418 66.34 C 2419 1197.81 C 2420 50 C 2421 261.65 C 2422 10 C 2423 2386 C 2424 28.15 C 2425 8.95 D 3727.5 C 2426 16.05 C 2427 450.59 C 2428 621.73 C 2429 4000. C 2430 6.75 C 2431 110 C 2432 991 C 2433 41.5 C 2434 52 C 2435 675 D 10674.20 C 2436 40 CC 2437 C 2438 3.47 C 2439 11 C 2440 339.45 C 2441 28.76 C 2442 589.40 C 2443 19.89 C 2444 16. C 2445 C 2446 93.20 C 2447 410.72 C 2448 695.00 C 2449 50. C 2450 13.00 C 2451 55.00 C 2452 74.42 C 2453 56.30 C 2454 7.85 C 2455 223.17 C 2456 368.00 C 2457 1562.80 E 4211.49 W 3391.80 D 5532.20 C 2458 450.59 C 2459 75.65 C 2460 923. CC 2461 CC 2462 C 2463 25 C 2464 26 C 2465 50.50 C 2466 39 C 2467 4.80 CC 2468 C 2469 70 C 2470 500 C 2471 12 D 6157.00 C 2472 113.56 C 2473 9.95 CC 2474 C 2475 368 C 2476 616 C 2477 208.65 C 2478 380 C 2479 129 C 2480 3.95 C 2481 7.06 C 2482 30 C 2483 15 D 5631.50 CC 2484 C 2485 2000 C 2486 7 C 2487 34.03 C 2488 474.35 C 2489 179.46 C 2490 145 D 5395 C 2491 12.30 C 2492 7 C 2493 2 C 2494 3.50 C 2495 46.49 CC 2496 C 2497 117.03 E 5322. W 7656 CC2498 C 2499 1773.70 C 2500 94.90 C 2501 50 C 2502 21.85 C 2503 89.37 D 10811.70 C 2504 547.42 C 2505 1203.31 C 2506 368 C 2507 616 C 2508 10.80 C 2509 23.30 C 2510 27.60 C 2511 126.00 C 2512 168.26 C 2513 230.66 C 2514 18 C 2515 20 C 2516 42 C 2517 8 D 7237.50 C 2518 446.86 C 2519 20 C 2520 28.99 C 2521 4.15 C 2522 61.36 C 2523 1210.49 C 2524 7 C 2525 16 C 2526 45.45 C 2527 13.30 C 2528 387 C 2529 18.70 CC 2530 C 2531 1800 C 2532 206.25 C 2533 1703.40 D 3825 E 5096.35 W 4255.04 C 2534 3178.45 CC 2535 C 2536 97.67 C 2537 55.93 C 2538 26 C 2539 550 C 2540 106.32 C 2541 105 C 2542 108.06 D 6507.66 CC 2543 C 2544 74.95 C 2545 671.81 C 2546 262.60 C 2547 50.50 C 2548 11.70 C 2549 85 C 2550 10 C 2551 34 C 2552 200 C 2553 368 C 2554 912.90 C 2555 500 C 2556 90 E 4635.31 C 2557 120 C 2558 2.05 C 2559 899 C 2560 267.58 D 465 D 3182.36 C 2561 100 CC 2562 DM 200 D 5187.50 C 2563 500 C 2564 100.75 C 2565 3000 C 2566 1800 C 2567 75.21 C 2568 563.06 C 2569 26 C 2570 192 C 2571 14.30 C 2572 184.25 D 3000 C 2573 500 C 2574 115 C 2575 42 C 2576 26.12 C 2580 671.81 C 2581 37.70 C 2582 72 C 2583 350 C 2584 23.95 C 2585 1773.70 CC 2586 C 2587 271.60 CC 2588 D 2107.75 D 4990 C 2589 5 DM 14.60 DM 7.50 D 5680 C 2590 105.78 C 2591 311.54 C 2595 432.25 C 2596 28 C 2897 200 C 2598 919 C 2599 187.22 C 2600 134 C 2601 90.50 C 2602 153.64 C 2603 14850. CC 2604 C 2605 50 C 2606 186.36 C 2607 85 E 5817.44 W 8373.52 D 32927.50 C 2608 1352.93 C 2609 50 CC 2610 CC 2611 DM 7.37 C 2612 17 D 2040 C 2613 33 C 2614 9.22 C 2615 115 C 2616 1875.10 C 2617 134 C 2618 46.45 C 2619 790.75 C 2620 33 C 2621 368 C 2622 52.30 E 3104.27 C 2623 309.14 C 2624 9 C 2625 1452.77 D 8742.50 C 2626 50 C 2627 39.50 CC 2628 C 2629 56 C 2630 164 C 2631 400.88 CC 2632 C 2633 8.75 C 2634 7.50 C 2635 48 C 2636 12.55 C 2637 139.70 D 538 C 2639 1000 C 2640 115 C 2641 30 E 3991.35 W 2861.14 C 2642 101.39 D 3000 C 2643 140 C 2644 35 C 2645 671.81 C 2646 1850.16 C 2647 70 C 2648 14.20 C 2649 500 C 2650 13.05 C 2651 205.74 C 2652 199.40 C 2653 17.16 C 2654 19.94 C 2655 34.12 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 C 2657 116.89 D 1545 E 3874.55 C 2659 368 C 2660 37 C 2661 25 C 2662 15 C 2663 500 C 2664 25.35 D 6212.50 CC 2665 C 2666 50 C 2667 96.30 C 2668 495.42 C 2669 145 C 2671 16.80 C 2672 29 C 2673 11.48 W 2210 W 483 C 2674 1397.48 C 2675 200 C 2676 500 CC 2677 C 2678 49.56 C 2679 10000 C 2680 110 C 2681 1007 C 2682 37.64 E 4018.89 W 2792.12 W 800.03 D 4762.50 C 2685 1850.16 C 2686 35.27 C 2687 115 C 2688 144.36 C 2689 50 C 2690 39.85 C 2691 141.22 C 2692 552.87 C 2693 134.32 CC 2694 D 1882.50 C 2695 500 C 2696 500 C 2697 20.32 C 2698 750 C 2699 110.25 C 2700 368 C 2701 134.74 C 2702 6.90 C 2703 99 E 3679.49 C 2704 36 C 2705 365.69 C 2706 18.50 D 7130 C 2707 295 C 2708 472.87 C 2709 15 C 2710 36.50 C 2711 16.75 C 2712 218.26 C 2713 139.96 CC 2714 C 2715 50 C 2716 1500 C 2718 11.56 E 3803.54 W 3069.42 C 2717 1500 C 2719 4812.51 D 1545 C 2720 3920.58 C 2721 115 C 2722 76.99 C 2723 40.30 C 2724 117.43 C 2725 552.87 C 2726 127.35 C 2727 6 C 2728 20 C 2729 52.84 C 2730 5.74 DM 23.10 C 2731 50 D 592.50 C 2732 911.35 C 2733 46.85 C 2734 164.11 C 2735 1850.16 C 2736 140 D 1997 E 3059.63 C 2737 368 D 1467.50 C 2738 154.01 C 2739 33 C 2740 40 C 2741 15.15 C 2742 342.32 C 2743 10 C 2744 160 C 2745 19 C 2746 1136.47 C 2747 174.34 C 2748 208.22 C 2749 131.46 C 2750 145.75 C 2751 30 C 2752 54 C 2753 55 C 2754 569.90 C 2755 64.50 C 2756 75 CC 2757 E 3685.95 W 2710.13 C 2758 374 C 2759 115 C 2760 500 C 2761 500 C 2762 1510 1978DP&t  0 4 5 6 7 9 14 19 20 21 22 24 25 26 27 29 30 105 113 130 131 137 144 155 168 170 204 210 219 240 268 270 292 299 300 321 325 365 377 395 419 468 648 649 650 651 SEARCH KEY 0 4 C 2337 43.50 0 0 5 C 2338 6.00 0 0 6 C 2345 53.35 0 0 7 C 2347 38.00 0 0 9 C 2356 264.05 0 0 14 CC 2357 19 CC 2362 20 CC 2363 21 CC 2364 22 CC 2365 24 CC 2367 25 CC 2368 26 CC 2369 27 CC 2370 29 CC 2372 30 CC 2373 105 CC 2437 113 CC 2445 130 CC 2461 131 CC 2462 137 CC 2468 144 CC 2474 155 CC 2484 168 CC 2496 170 CC 2498 204 CC 2530 210 CC 2535 219 CC 2543 240 CC 2562 268 CC 2586 270 CC 2588 292 CC 2604 299 CC 2610 300 CC 2611 321 CC 2628 325 CC 2632 365 CC 2665 377 CC 2677 395 CC 2694 419 CC 2714 468 CC 2757 648 CC 542 649 CC 543 650 CC 2592 651 CC 2658 AMOUNT = 4.049E+02 1 151 157 164 198 233 273 284 295 327 356 370 371 384 401 444 SEARCH KEY 1 151 C 2481 7.06 1 9 157 C 2486 7 1 9 164 C 2492 7 1 11 198 C 2524 7 1 12 233 C 2557 120 1 15 273 C 2589 5 1 17 284 C 2596 28 1 18 295 C 2607 85 1 18 327 C 2634 7.50 1 21 356 C 2657 116.89 1 23 370 C 2670 8.70 1 24 371 C 2671 16.80 1 24 384 C 2684 49.44 1 25 401 C 2699 110.25 1 26 444 C 2736 140 1 27 AMOUNT = 7.156E+02 2 36 67 125 171 207 267 286 308 342 386 443 SEARCH KEY 2 36 C 2379 1562.80 2 2 67 C 2403 1562.80 2 5 125 C 2457 1562.80 2 7 171 C 2499 1773.70 2 11 207 C 2533 1703.40 2 12 267 C 2585 1773.70 2 16 286 C 2598 919 2 18 308 C 2616 1875.10 2 20 342 C 2646 1850.16 2 22 386 C 2685 1850.16 2 25 443 C 2735 1850.16 2 27 AMOUNT = 1.828E+04 3 15 35 80 114 169 216 255 307 334 388 427 470 SEARCH KEY 3 15 C 2358 10 3 1 35 C 2378 93.20 3 2 80 C 2416 93.20 3 5 114 C 2446 93.20 3 6 169 C 2497 117.03 3 10 216 C 2541 105 3 14 255 C 2574 115 3 16 307 C 2615 115 3 20 334 C 2640 115 3 21 388 C 2687 115 3 25 427 C 2721 115 3 27 470 C 2759 115 3 29 AMOUNT = 1.201E+03 4 41 56 82 110 142 167 192 212 248 259 283 324 328 336 368 389 392 413 430 465 SEARCH KEY 4 41 C 2383 139.24 4 2 56 C 2396 405.38 4 3 82 C 2418 66.34 4 3 110 C 2442 589.40 4 6 142 C 2472 113.56 4 8 167 C 2495 46.49 4 10 192 C 2518 446.86 4 11 212 C 2537 55.93 4 14 248 C 2568 563.06 4 15 259 C 2577 81.71 4 16 283 C 2595 432.25 4 18 324 C 2631 400.88 4 21 328 C 2635 48 4 21 336 C 2642 101.39 4 22 368 C 2668 495.42 4 23 389 C 2688 144.36 4 25 392 C 2691 141.22 4 25 413 C 2708 472.87 4 26 430 C 2724 117.43 4 27 465 C 2754 569.90 4 28 AMOUNT = 5.431E+03 5 32 37 38 42 43 70 71 72 74 78 79 83 91 96 99 121 122 123 129 135 147 149 159 160 161 182 183 184 185 200 201 213 222 223 228 239 251 252 258 287 288 289 290 305 306 309 310 314 323 335 348 349 350 363 369 372 399 404 415 417 423 429 432 434 436 441 442 448 462 463 SEARCH KEY 5 32 C 2375 86 5 1 37 C 2380 3.60 5 2 38 C 2381 136.16 5 2 42 C 2384 155 5 2 43 C 2385 60.30 5 2 70 C 2406 52.68 5 5 71 C 2407 53.35 5 5 72 C 2408 27.00 5 5 74 C 2410 32.23 5 5 78 C 2414 286.41 5 3 79 C 2415 12.68 5 3 83 C 2419 1197.81 5 5 91 C 2426 16.05 5 7 96 C 2431 110 5 6 99 C 2434 52 5 6 121 C 2453 56.30 5 7 122 C 2454 7.85 5 7 123 C 2455 223.17 5 7 129 C 2460 923. 5 8 135 C 2466 39 5 8 147 C 2477 208.65 5 8 149 C 2479 129 5 9 159 C 2488 474.35 5 9 160 C 2489 179.46 5 9 161 C 2490 145 5 9 182 C 2509 23.30 5 11 183 C 2510 27.60 5 11 184 C 2511 126.00 5 11 185 C 2512 168.26 5 11 200 C 2526 45.45 5 12 201 C 2527 13.30 5 12 213 C 2538 26 5 14 222 C 2546 262.60 5 14 223 C 2547 50.50 5 14 228 C 2552 200 5 14 239 C 2561 100 5 15 251 C 2571 14.30 5 15 252 C 2572 184.25 5 15 258 C 2576 26.12 5 16 287 C 2599 187.22 5 18 288 C 2600 134 5 18 289 C 2601 90.50 5 18 290 C 2602 153.64 5 18 305 C 2613 33 5 20 306 C 2614 9.22 5 20 309 C 2617 134 5 20 310 C 2618 46.45 5 20 314 C 2622 52.30 5 20 323 C 2630 164 5 21 335 C 2641 30 5 21 348 C 2652 199.40 5 22 349 C 2653 17.16 5 22 350 C 2654 19.94 5 22 363 C 2664 25.35 5 23 369 C 2669 145 5 23 372 C 2672 29 5 23 399 C 2697 20.32 5 26 404 C 2702 6.90 5 25 415 C 2710 36.50 5 26 417 C 2712 218.26 5 26 423 C 2718 11.56 5 26 429 C 2723 40.30 5 27 432 C 2726 127.35 5 27 434 C 2728 20 5 27 436 C 2730 5.74 5 27 441 C 2733 46.85 5 27 442 C 2734 164.11 5 27 448 C 2738 154.01 5 28 462 C 2751 30 5 28 463 C 2752 54 5 28 AMOUNT = 8.340E+03 6 225 227 264 302 456 466 SEARCH KEY 6 225 C 2549 85 6 14 227 C 2551 34 6 14 264 C 2582 72 6 16 302 C 2612 17 6 20 456 C 2746 1136.47 6 28 466 C 2755 64.50 6 28 AMOUNT = 1.409E+03 7 116 148 SEARCH KEY 7 116 C 2448 695.00 7 6 148 C 2478 380 7 9 AMOUNT = 1.075E+03 8 57 93 100 175 215 217 243 266 279 280 294 315 376 378 397 398 451 452 457 SEARCH KEY 8 57 C 2397 64. 8 3 93 C 2428 621.73 8 6 100 C 2435 675 8 6 175 C 2503 89.37 8 10 215 C 2540 106.32 8 14 217 C 2542 108.06 8 14 243 C 2563 500 8 15 266 C 2584 23.95 8 16 279 C 2590 105.78 8 17 280 C 2591 311.54 8 17 294 C 2606 186.36 8 18 315 C 2623 309.14 8 20 376 C 2676 500 8 23 378 C 2678 49.56 8 24 397 C 2695 500 8 25 398 C 2696 500 8 25 451 C 2741 15.15 8 28 452 C 2742 342.32 8 28 457 C 2747 174.34 8 28 AMOUNT = 5.182E+03 9 146 180 230 SEARCH KEY 9 146 C 2476 616 9 8 180 C 2507 616 9 11 230 C 2554 912.90 9 14 AMOUNT = 2.144E+03 10 16 194 195 196 197 199 220 232 244 247 459 461 SEARCH KEY 10 16 C 2359 42.80 10 1 194 C 2520 28.99 10 12 195 C 2521 4.15 10 12 196 C 2522 61.36 10 12 197 C 2523 1210.49 10 12 199 C 2525 16 10 12 220 C 2544 74.95 10 14 232 C 2556 90 10 14 244 C 2564 100.75 10 15 247 C 2567 75.21 10 15 459 C 2749 131.46 10 28 461 C 2750 145.75 10 28 AMOUNT = 1.981E+03 10 16 194 195 196 197 199 220 232 244 247 459 461 SEARCH KEY 10 16 C 2359 42.80 10 1 194 C 2520 28.99 10 12 195 C 2521 4.15 10 12 196 C 2522 61.36 10 12 197 C 2523 1210.49 10 12 199 C 2525 16 10 12 220 C 2544 74.95 10 14 232 C 2556 90 10 14 244 C 2564 100.75 10 15 247 C 2567 75.21 10 15 459 C 2749 131.46 10 28 461 C 2750 145.75 10 28 AMOUNT = 1.981E+03 11 81 128 174 260 329 346 387 435 SEARCH KEY 11 81 C 2417 7.75 11 3 128 C 2459 75.65 11 8 174 C 2502 21.85 11 10 260 C 2578 36.81 11 16 329 C 2636 12.55 11 21 346 C 2650 13.05 11 22 387 C 2686 35.27 11 25 435 C 2729 52.84 11 27 AMOUNT = 2.557E+02 12 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 492 493 494 495 496 497 499 500 501 502 503 504 505 506 507 509 513 514 515 516 517 518 520 521 522 523 524 525 526 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 552 553 554 555 556 557 558 559 560 561 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 586 587 588 589 590 591 592 593 596 597 598 599 600 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 623 625 627 628 629 630 631 632 633 634 635 639 640 641 642 643 SEARCH KEY 12 474 E 496 1177.09 12 3 475 E 495 1076.21 12 3 476 E 494 392.55 12 2 477 E 493 456.63 12 2 478 E 492 497.88 12 2 479 E 491 574.03 12 2 480 E 490 890.20 12 2 481 E 489 842.19 12 2 482 E 488 788.81 12 2 483 E 510 304.73 12 5 484 E 509 432.47 12 5 485 E 508 575.53 12 5 486 E 507 502.81 12 5 487 E 506 842.80 12 5 488 E 505 1033.57 12 5 492 W 501 387.26 12 3 493 W 500 372.80 12 3 494 W 499 561.91 12 3 495 W 498 497.97 12 3 496 E 497 926.48 12 3 497 E 519 84.76 12 12 499 E 511 830.88 12 7 500 E 537 464.55 12 10 501 E 531 356.37 12 9 502 E 529 589.96 12 9 503 E 530 436.65 12 9 504 E 528 393.86 12 9 505 E 527 888.88 12 9 506 E 526 1034.18 12 9 507 E 525 991.35 12 9 509 W 522 182.00 12 8 513 W 517 277.10 12 7 514 E 516 259.01 12 7 515 E 515 439.51 12 7 516 E 514 398.75 12 7 517 E 513 1113.18 12 7 518 E 512 893.06 12 7 520 E 532 1062.02 12 10 521 E 533 1122.84 12 10 522 E 534 999.70 12 10 523 E 535 538.32 12 10 524 E 536 643.20 12 10 525 E 538 386.34 12 10 526 E 539 105.03 12 10 530 E 546 924.04 12 12 531 E 547 982.73 12 12 532 E 548 873.83 12 12 533 E 549 473.57 12 12 534 E 550 542.91 12 12 535 E 551 440.27 12 12 536 E 553 299.63 12 12 537 E 552 185.93 12 12 538 E 568 343.38 12 15 539 E 569 304.73 12 15 540 E 567 596.15 12 15 541 E 566 465.02 12 15 542 E 565 948.24 12 14 543 E 564 985.99 12 14 544 E 563 991.80 12 14 545 E 557 473.57 12 13 546 E 558 601.00 12 13 547 E 560 265.01 12 13 548 E 555 991.16 12 12 549 E 554 927.77 12 12 550 E 556 852.47 12 13 552 E 561 297.08 12 13 553 E 559 688.29 12 13 554 E 570 1050.61 12 16 555 E 571 1069.11 12 16 556 E 572 1019.07 12 16 557 E 573 566.88 12 16 558 E 574 630.97 12 16 559 E 575 269.88 12 16 560 E 576 472.09 12 16 561 E 577 346.43 12 16 566 E 582 1046.89 12 17 567 E 583 1151.39 12 17 568 E 584 996.51 12 17 569 E 585 627.63 12 17 570 E 586 732.19 12 17 571 E 587 537.45 12 17 572 E 588 513.44 12 17 573 E 589 374.42 12 17 574 E 590 110.15 12 17 575 E 591 979.37 12 18 576 E 592 1426.28 12 18 577 E 593 960.21 12 18 578 E 595 645.08 12 18 579 E 597 430.98 12 18 580 E 598 343.31 12 18 581 E 594 531.30 12 18 582 E 596 500.91 12 18 586 E 603 796.26 12 20 587 E 604 802.32 12 20 588 E 605 379.26 12 20 589 E 606 542.91 12 20 590 E 607 283.06 12 20 591 E 608 180.93 12 20 592 E 609 282.18 12 20 593 E 615 369.00 12 21 596 E 627 1209.08 12 24 597 E 628 1158.89 12 24 598 E 629 552.62 12 24 599 E 630 596.12 12 24 600 E 632 359.96 12 24 602 E 635 921.48 12 25 603 E 636 1050.72 12 25 604 E 637 533.66 12 25 605 E 638 610.74 12 25 606 E 639 361.79 12 25 607 E 640 201.10 12 25 608 E 645 346.92 12 26 609 E 610 325.46 12 21 610 E 611 1020.87 12 21 611 E 612 922.47 12 21 612 E 613 505.84 12 21 613 E 614 595.69 12 21 614 E 616 258.02 12 21 615 E 618 1053.55 12 23 616 E 619 845.14 12 23 617 E 620 420.35 12 23 618 E 621 548.51 12 23 619 E 622 293.42 12 23 620 E 623 339.16 12 23 621 E 624 374.42 12 23 623 E 631 142.22 12 24 625 E 660 484.10 12 29 627 E 650 981.35 12 28 628 E 651 992.28 12 28 629 E 652 327.45 12 28 630 E 653 384.95 12 28 631 E 641 1081.13 12 26 632 E 642 1042.43 12 26 633 E 643 490.20 12 26 634 E 644 516.116 12 26 635 E 646 326.75 12 26 639 E 654 373.60 12 28 640 E 657 1176.43 12 29 641 E 658 1184.18 12 29 642 E 659 566.46 12 29 643 E 661 247.78 12 29 AMOUNT = 8.877E+04 13 418 SEARCH KEY 13 418 C 2713 139.96 13 26 AMOUNT = 1.399E+02 14 490 491 510 511 512 519 528 551 562 564 565 583 594 595 624 626 636 647 SEARCH KEY 14 490 W 503 702.05 14 4 491 W 502 4521.60 14 4 510 W 523 1549.00 14 8 511 W 521 2210.00 14 8 512 W 518 3391.80 14 7 519 W 540 4601.70 14 10 528 W 544 5.00 14 11 551 W 562 4255.04 14 13 562 W 578 4412.14 14 16 564 W 580 2210.00 14 16 565 W 581 38.36 14 16 583 W 599 5659.58 14 18 594 W 617 2861.14 14 21 595 E 625 2210.00 14 23 624 W 633 2792.12 14 24 626 W 662 2276.24 14 29 636 W 647 2424.72 14 26 647 W 655 2210. 14 29 AMOUNT = 4.833E+04 15 489 498 508 527 529 563 584 585 601 622 637 638 644 645 646 SEARCH KEY 15 489 E 504 254.00 15 4 498 E 520 483.00 15 8 508 E 524 733.00 15 8 527 W 541 1703.92 15 11 529 W 545 1345.38 15 11 563 W 579 483.00 15 16 584 W 600 1863.74 15 18 585 W 602 850.20 15 18 601 W 634 800.03 15 24 622 W 626 483.00 15 23 637 W 648 393.57 15 26 638 W 649 251.13 15 26 644 E 663 393.62 15 29 645 E 664 40.27 15 29 646 W 656 483 15 29 AMOUNT = 1.056E+04 16 75 86 97 SEARCH KEY 16 75 C 2411 110. 16 5 86 C 2422 10 16 5 97 C 2432 991 16 6 AMOUNT = 1.111E+03 17 31 44 68 87 92 118 127 177 202 221 235 249 262 311 312 322 341 393 405 426 431 469 SEARCH KEY 17 31 C 2374 547.42 17 1 44 C 2386 1151 17 2 68 C 2404 1887.00 17 5 87 C 2423 2386 17 5 92 C 2427 450.59 17 5 118 C 2450 13.00 17 6 127 C 2458 450.59 17 8 177 C 2504 547.42 17 11 202 C 2528 387 17 12 221 C 2545 671.81 17 14 235 C 2559 899 17 15 249 C 2569 26 17 15 262 C 2580 671.81 17 16 311 C 2619 790.75 17 20 312 C 2620 33 17 20 322 C 2629 56 17 20 341 C 2645 671.81 17 22 393 C 2692 552.87 17 25 405 C 2703 99 17 25 426 C 2720 3920.58 17 27 431 C 2725 552.87 17 27 469 C 2758 374 17 29 AMOUNT = 1.713E+04 21 2 33 34 55 69 73 76 94 139 156 205 231 245 246 254 265 332 333 355 362 383 400 421 422 471 472 473 SEARCH KEY 21 2 C 2332 2000 21 1 33 C 2376 500 21 1 34 C 2377 1500 21 3 55 C 2395 1000. 21 3 69 C 2405 28.26 21 5 73 C 2409 301.50 21 5 76 C 2412 1500 21 10 94 C 2429 4000. 21 6 139 C 2470 500 21 8 156 C 2485 2000 21 9 205 C 2531 1800 21 13 231 C 2555 500 21 14 245 C 2565 3000 21 15 246 C 2566 1800 21 17 254 C 2573 500 21 15 265 C 2583 350 21 16 332 C 2638 1200 21 22 333 C 2639 1000 21 21 355 C 2656 1500 21 23 362 C 2663 500 21 23 383 C 2683 2000. 21 25 400 C 2698 750 21 26 421 C 2716 1500 21 27 422 C 2717 1500 21 28 471 C 2760 500 21 29 472 C 2761 500 21 29 473 C 2762 1510 21 29 AMOUNT = 3.374E+04 22 3 13 46 47 48 50 52 64 108 111 119 120 133 136 140 158 165 172 178 209 236 250 282 291 330 339 347 351 360 373 382 390 394 403 420 428 464 SEARCH KEY 22 3 C 2313 1804.52 22 1 13 C 2355 280.60 22 1 46 C 2388 66.80 22 2 47 C 2389 33.30 22 2 48 C 2390 22.80 22 3 50 C 2392 39 22 2 52 C 2394 85.54 22 2 64 C 2401 29.39 22 3 108 C 2440 339.45 22 6 111 C 2443 19.89 22 6 119 C 2451 55.00 22 7 120 C 2452 74.42 22 7 133 C 2464 26 22 8 136 C 2467 4.80 22 8 140 C 2471 12 22 8 158 C 2487 34.03 22 9 165 C 2493 2 22 9 172 C 2500 94.90 22 11 178 C 2505 1203.31 22 11 209 C 2534 3178.45 22 14 236 C 2560 267.58 22 15 250 C 2570 192 22 15 282 C 2594 109.92 22 17 291 C 2603 14850. 22 18 330 C 2637 139.70 22 21 339 C 2643 140 22 21 347 C 2651 205.74 22 22 351 C 2655 34.12 22 22 360 C 2661 25 22 22 373 C 2673 11.48 22 23 382 C 2682 37.64 22 24 390 C 2689 50 22 25 394 C 2693 134.32 22 25 403 C 2701 134.74 22 25 420 C 2715 50 22 26 428 C 2722 76.99 22 27 464 C 2753 55 22 28 AMOUNT = 2.392E+04 23 65 85 88 124 145 179 211 229 261 269 313 343 344 358 379 380 381 402 424 446 450 SEARCH KEY 23 65 C 2402 80. 23 3 85 C 2421 261.65 23 5 88 C 2424 28.15 23 5 124 C 2456 368.00 23 7 145 C 2475 368 23 8 179 C 2506 368 23 11 211 C 2536 97.67 23 14 229 C 2553 368 23 14 261 C 2579 368.00 23 16 269 C 2587 271.60 23 17 313 C 2621 368 23 20 343 C 2647 70 23 22 344 C 2648 14.20 23 22 358 C 2659 368 23 22 379 C 2679 10000 23 24 380 C 2680 110 23 24 381 C 2681 1007 23 24 402 C 2700 368 23 25 424 C 2719 4812.51 23 27 446 C 2737 368 23 27 450 C 2740 40 23 28 AMOUNT = 2.010E+04 24 8 84 214 293 319 345 366 438 SEARCH KEY 24 8 C 2348 50.00 24 1 84 C 2420 50 24 3 214 C 2539 550 24 14 293 C 2605 50 24 18 319 C 2626 50 24 20 345 C 2649 500 24 22 366 C 2666 50 24 23 438 C 2731 50 24 27 AMOUNT = 1.350E+03 25 51 115 186 224 281 297 317 374 440 458 SEARCH KEY 25 51 C 2393 64.65 25 2 115 C 2447 410.72 25 6 186 C 2513 230.66 25 11 224 C 2548 11.70 25 14 281 C 2593 770.94 25 17 297 C 2608 1352.93 25 19 317 C 2625 1452.77 25 20 374 C 2674 1397.48 25 23 440 C 2732 911.35 25 27 458 C 2748 208.22 25 28 AMOUNT = 6.811E+03 26 189 193 206 257 340 412 453 455 SEARCH KEY 26 189 C 2516 42 26 11 193 C 2519 20 26 12 206 C 2532 206.25 26 12 257 C 2575 42 26 16 340 C 2644 35 26 22 412 C 2707 295 26 26 453 C 2743 10 26 28 455 C 2745 19 26 28 AMOUNT = 6.692E+02 27 117 285 409 454 SEARCH KEY 27 117 C 2449 50. 27 6 285 C 2597 200 27 18 409 C 2705 635.69 27 26 454 C 2744 160 27 28 AMOUNT = 1.045E+03 28 375 467 SEARCH KEY 28 375 C 2675 200 28 23 467 C 2756 75 28 29 AMOUNT = 2.750E+02 1978CHECKS& B 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 1 1 C 2338 6.00 1 1 C 2345 53.35 1 1 C 2347 38.00 1 1 C 2348 50.00 24 1 C 2356 264.05 4 1 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 3 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C 2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 3 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 DM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 10 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.00 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 10 C 2503 89.37 8 10 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.00 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 26 11 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 12 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106.32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 C 2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 2568 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 109.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2597 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 17 20 C 2621 368 23 20 C 2622 52.30 5 20 C 2623 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 C 2638 1200 21 22 C 2639 1000 21 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 205.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 22 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 23 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 23 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 25 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 21 26 C 2699 110.25 1 26 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 635.69 27 26 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 26 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 3920.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 C 2762 1510 21 29 E 496 1177.09 12 3 E 495 1076.21 12 3 E 494 392.55 12 2 E 493 456.63 12 2 E 492 497.88 12 2 E 491 574.03 12 2 E 490 890.20 12 2 E 489 842.19 12 2 E 488 788.81 12 2 E 510 304.73 12 5 E 509 432.47 12 5 E 508 575.53 12 5 E 507 502.81 12 5 E 506 842.80 12 5 E 505 1033.57 12 5 E 504 254.00 15 4 W 503 702.05 14 4 W 502 4521.60 14 4 W 501 387.26 12 3 W 500 372.80 12 3 W 499 561.91 12 3 W 498 497.97 12 3 E 497 926.48 12 3 E 519 84.76 12 12 E 520 483.00 15 8 E 511 830.88 12 7 E 537 464.55 12 10 E 531 356.37 12 9 E 529 589.96 12 9 E 530 436.65 12 9 E 528 393.86 12 9 E 527 888.88 12 9 E 526 1034.18 12 9 E 525 991.35 12 9 E 524 733.00 15 8 W 522 182.00 12 8 W 523 1549.00 14 8 W 521 2210.00 14 8 W 518 3391.80 14 7 W 517 277.10 12 7 E 516 259.01 12 7 E 515 439.51 12 7 E 514 398.75 12 7 E 513 1113.18 12 7 E 512 893.06 12 7 W 540 4601.70 14 10 E 532 1062.02 12 10 E 533 1122.84 12 10 E 534 999.70 12 10 E 535 538.32 12 10 E 536 643.20 12 10 E 538 386.34 12 10 E 539 105.03 12 10 W 541 1703.92 15 11 W 544 5.00 14 11 W 545 1345.38 15 11 E 546 924.04 12 12 E 547 982.73 12 12 E 548 873.83 12 12 E 549 473.57 12 12 E 550 542.91 12 12 E 551 440.27 12 12 E 553 299.63 12 12 E 552 185.93 12 12 E 568 343.38 12 15 E 569 304.73 12 15 E 567 596.15 12 15 E 566 465.02 12 15 E 565 948.24 12 14 E 564 985.99 12 14 E 563 991.80 12 14 E 557 473.57 12 13 E 558 601.00 12 13 E 560 265.01 12 13 E 555 991.16 12 12 E 554 927.77 12 12 E 556 852.47 12 13 W 562 4255.04 14 13 E 561 297.08 12 13 E 559 688.29 12 13 E 570 1050.61 12 16 E 571 1069.11 12 16 E 572 1019.07 12 16 E 573 566.88 12 16 E 574 630.97 12 16 E 575 269.88 12 16 E 576 472.09 12 16 E 577 346.43 12 16 W 578 4412.14 14 16 W 579 483.00 15 16 W 580 2210.00 14 16 W 581 38.36 14 16 E 582 1046.89 12 17 E 583 1151.39 12 17 E 584 996.51 12 17 E 585 627.63 12 17 E 586 732.19 12 17 E 587 537.45 12 17 E 588 513.44 12 17 E 589 374.42 12 17 E 590 110.15 12 17 E 591 979.37 12 18 E 592 1426.28 12 18 E 593 960.21 12 18 E 595 645.08 12 18 E 597 430.98 12 18 E 598 343.31 12 18 E 594 531.30 12 18 E 596 500.91 12 18 W 599 5659.58 14 18 W 600 1863.74 15 18 W 602 850.20 15 18 E 603 796.26 12 20 E 604 802.32 12 20 E 605 379.26 12 20 E 606 542.91 12 20 E 607 283.06 12 20 E 608 180.93 12 20 E 609 282.18 12 20 E 615 369.00 12 21 W 617 2861.14 14 21 E 625 2210.00 14 23 E 627 1209.08 12 24 E 628 1158.89 12 24 E 629 552.62 12 24 E 630 596.12 12 24 E 632 359.96 12 24 W 634 800.03 15 24 E 635 921.48 12 25 E 636 1050.72 12 25 E 637 533.66 12 25 E 638 610.74 12 25 E 639 361.79 12 25 E 640 201.10 12 25 E 645 346.92 12 26 E 610 325.46 12 21 E 611 1020.87 12 21 E 612 922.47 12 21 E 613 505.84 12 21 E 614 595.69 12 21 E 616 258.02 12 21 E 618 1053.55 12 23 E 619 845.14 12 23 E 620 420.35 12 23 E 621 548.51 12 23 E 622 293.42 12 23 E 623 339.16 12 23 E 624 374.42 12 23 W 626 483.00 15 23 E 631 142.22 12 24 W 633 2792.12 14 24 E 660 484.10 12 29 W 662 2276.24 14 29 E 650 981.35 12 28 E 651 992.28 12 28 E 652 327.45 12 28 E 653 384.95 12 28 E 641 1081.13 12 26 E 642 1042.43 12 26 E 643 490.20 12 26 E 644 516.116 12 26 E 646 326.75 12 26 W 647 2424.72 14 26 W 648 393.57 15 26 W 649 251.13 15 26 E 654 373.60 12 28 E 657 1176.43 12 29 E 658 1184.18 12 29 E 659 566.46 12 29 E 661 247.78 12 29 E 663 393.62 15 29 E 664 40.27 15 29 W 656 483 15 29 W 655 2210. 14 29 CC 542 CC 543 CC 2592 CC 2658 PL5/ Fq PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF ALFA; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5,L:3,A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYM = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATEMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END; IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN}  T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])) END; 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]<=S[T+1]) END END ;{CASE} LOD : BEGIN T := T+1;S[T] := S[BASE(L)+A] END; STO : BEGIN S[BASE(L)+A] := S[T]; WRITELN(S[T]);T := T-1 END; CAL : BEGIN {GENERATE NEW BLOCK MARK} S[T+1] := BASE(L);S[T+2] := B; S[T+3] := P; B := T+1; P := A END; INT : T := T+A; JMP : P := A; JPC : BEGIN IF S[T] = 0 THEN P := A;T := T-1; END END {WITH,CASE} UNTIL P = 0; WRITE('END OF PL/0'); END {INTERPRET}; BEGIN {MAIN PROGRAM} FOR CH := 'A' TO ';' DO SSYM[CH] := NUL; WORD[1] := 'BEGIN '; WORD[2] := 'CALL '; WORD[3] := 'CONST '; WORD[4] := 'DO '; WORD[5] := 'END '; WORD[6] := 'IF '; WORD[7] := 'ODD '; WORD[8] := 'PROCEDURE '; WORD[9] := 'THEN '; WORD[10]:= 'VAR '; WORD[11]:= 'WHILE '; WSYM[1] := BEGINSYM; WSYM[2] := CALLSYM; WSYM[3] := CONSTSYM; WSYM[4] := DOSYM; WSYM[5] := ENDSYM; WSYM[6] := IFSYM; WSYM[7] := ODDSYM; WSYM[8] := PROCSYM; WSYM[9] := THENSYM; WSYM[10] := VARSYM; WSYM[11] := WHILESYM; SSYM['+'] := PLUS; SSYM['-'] := MINUS; SSYM['*'] := TIMES; SSYM['/'] := SLASH; SSYM['('] := LPAREN; SSYM[')'] := RPAREN; SSYM['='] := EQL; SSYM[','] := COMMA; SSYM['.'] := PERIOD; SSYM['!'] := NEQ; SSYM['<'] := LSS; SSYM['>'] := GTR; SSYM['"'] := LEQ; SSYM['#'] := GEQ; SSYM[';'] := SEMICOLN; MNEMONIC[LIT] := 'LIT '; MNEMONIC[OPR] := 'OPR '; MNEMONIC[LOD] := 'LOD ';MNEMONIC[STO] := 'STO '; MNEMONIC[CAL] := 'CAL '; MNEMONIC[INT] := 'INT '; MNEMONIC[JMP] := 'JMP '; MNEMONIC[JPC] := 'JPC '; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF SYMBOL; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCEMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5;L:3;A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYN = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I).KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTANTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])); 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]=] := GTR; SSYM["] := LEQ; SSYM[#] := GEQ; SSYM[;] := SEMICOLN; MNEMONIC[LIT] := 'LIT'; MNEMONIC[OPR] := 'OPR'; MNEMONIC[LOD] := 'LOD';MNEMONIC[STO] := 'STO'; MNEMONIC[CAL] := 'CAL'; MNEMONIC[INT] := 'INT'; MNEMONIC[JMP] := 'JMP'; MNEMONIC[JPC] := 'JPC'; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. PINFOPXw?? PINFO Copyright (C) 1980 Rational Data Systems  ؾȡ8ٛٛٛ á5Lˡٚ&ښٟá 0  ݢ ݢ ݢٚݢǀݢݣ ܞ#ݢݣ ݣ ݣ !!h  ޢ ޢ ޢٚޢޢݞ#AAZ PAZȡ) AZAޢܕAáQAZ ZAZȡ) AZAޢܕQá!/i 5&!"AL ۢ%"ڞ#!2 AAZHAZIAZPAZQAZXAZYAZZAZ ֲsFCOM.CMֲsCOM.CMֲsc¾˲¾˄bcš:֦(F)COM.CM file is too long.!ֲsc sƀsCLIFILE &¾ˡ¾ܿȡʀ¾AZAZȡ1ʀ"AZAʀáʀá¾ásT40  ؟ ٹ  6!ۦWrong operating system.lÄ# Я6 ٨  ̀ȡ)ʀ̀ʀ̀ʀʀ ̀ʀʀáʀ(d  ɡ 0!إ! $ڥ! ٹ֦January!֦May!֦ September!֦February!֦June!֦October!֦March!֦July!s֦November!]֦April!J֦August!6֦December!  Ky@o4 ! 6 Dإ! :!:!2Ɓ!Ɓ_Ɓ!OUTPUT4rǯ4CODE֥á,֥!֦No program name.!ʁc?;֥!֦PX PINFO program[.PU] [listing]!ʁȡ@ʁЫ蛾蛥蛾aAʁáɡ ́ƁcƁ.PXfƁc֥ƁƁ.PX֥ƁƁ.PU ́ƁcƁ.PXfƁcˡ ֥!֥!֥4֥4֥! !ʁʁ !ʁ֦.==============================================ƁƁʁ֥!ŕ<́0֦́ Compiled:! !'֦AOS.! ֦RDOS.! 1֧.!֧֥! !ʁ ֧֥! !ʁ ֧֥!֥!r 2֦Separately compiled subprogram.!ʁ֦)Contains unresolved assembler references.!ʁ򧁤Ĺ֦ PLINKed to:!ʁ ʁʁ !ʁ ֧֥! !ʁ ֧֥!;֦No assembler references.!ʁ5 ֦(Contains unresolved external references.!ʁs֦$External modules have been bound in.!ʁ:֦No external references.!ʁ4o֥!֦Segment ! ʁBytesʁBlockʁ֦------- ! ʁ-----ʁ-----ʁȡ_ʁЫˡ?֧@! ʁ ʁ ʁʁáˡ3֥!֦ Overlay size !ʁ ʁƁ!4<J ^ T z D ALLINK |l .LINK ALGOL.SV ALGOL:ALGOL.SV LINK AL1.SV ALGOL:AL1.SV LINK AL2.SV ALGOL:AL2.SV LINK ALGOL0.LB ALGOL:ALGOL0.LB LINK ALGOL1.LB ALGOL:ALGOL1.LB LINK ALGOL2.LB ALGOL:ALGOL2.LB LINK ALGOL3.LB ALGOL:ALGOL3.LB LINK TRACE.SV ALGOL:TRACE.SV LINK LIBRARY.CM ALGOL:LIBRARY.CM T14~.PROGRAM T14(INPUT,OUTPUT); VAR I:INTEGER; BEGIN REPEAT BEGIN READLN (INPUT,I); IF I<21 THEN CASE I OF 1,2,3,4,5,6,7,8,9,10 : WRITELN(OUTPUT,'BETWEEN 1 AND 10'); 11,12,13,14,15,16,17,18,19,20 : WRITELN(OUTPUT,'BETWEEN 2 AND 20') END ELSE END UNTIL EOF(INPUT) END. RBUX PROGRAM TEST (INPUT,OUTPUT); VAR I,J,DIGIT : INTEGER; R,R1,R2 : REAL; STR : STRING[10]; PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-TRUNC(R2)*10); R1 := R2; { WRITELN(' GETDIGIT,DIGIT=',DIGIT);} END; {GETDIGIT} BEGIN {MAIN} REPEAT BEGIN {do decimal part first} WRITELN(' ENTER A REAL NUMBER'); READLN(R); { WRITELN( 'TRUNCR=',TRUNC(R));} STR :=' '; R1 := (R-TRUNC(R))*100 + 0.3; J :=0; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[10-J] := CHR(DIGIT+48); J :=J+1; { WRITELN(' CHR(DIGIT):=',CHR(DIGIT+48));} END; STR[10-J] :='.'; J := J+1; {do integer part} R1 :=R; WHILE ( (R1 > 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITELN(' STRING=',STR); END;{OF REPEAT} UNTIL EOF(INPUT); END. 1978DQ1978R1 ww!B 4196.05 C 2332 2000 C 2313 1804.52 C 2337 43.50 C 2338 6.00 C 2345 53.35 C 2347 38.00 C 2348 50.00 C 2356 264.05 C 2354 50.00 D 23546.64 DM 250.00 C 2355 280.60 CC 2357 C 2358 10 C 2359 42.80 C 2360 119.40 C 2361 50 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 CC 2372 CC 2373 C 2374 547.42 C 2375 86 C 2376 500 C 2377 1500 C 2378 93.20 C 2379 1562.80 C 2380 3.60 C 2381 136.16 C 2382 114.98 DM 250 C 2383 139.24 C 2384 155 C 2385 60.30 C 2386 1151 C 2387 12 C 2388 66.80 C 2389 33.30 C 2390 22.80 C 2391 12 C 2392 39 C 2393 64.65 C 2394 85.54 D 13878.10 DM 1865.00 C 2394 85.54 C 2395 1000. C 2396 405.38 C 2397 64. D 3885. DM 250.00 C 2398 14.85 DM 1865. C 2399 7.95 C 2400 8.52 C 2401 29.39 C 2402 80. D 3222.52 C 2403 1562.80 C 2404 1887.00 C 2405 28.26 C 2406 52.68 C 2407 53.35 C 2408 27.00 C 2409 301.50 C 2410 32.23 C 2411 110. C 2412 1500 C 2413 15 C 2414 286.41 C 2415 12.68 C 2416 93.20 C 2417 7.75 C 2418 66.34 C 2419 1197.81 C 2420 50 C 2421 261.65 C 2422 10 C 2423 2386 C 2424 28.15 C 2425 8.95 D 3727.5 C 2426 16.05 C 2427 450.59 C 2428 621.73 C 2429 4000. C 2430 6.75 C 2431 110 C 2432 991 C 2433 41.5 C 2434 52 C 2435 675 D 10674.20 D 8655.39 D 3056.00 C 2436 40 CC 2437 C 2438 3.47 C 2439 11 C 2440 339.45 C 2441 28.76 C 2442 589.40 C 2443 19.89 C 2444 16. CC 2445 C 2446 93.20 C 2447 410.72 C 2448 695.00 C 2449 50. C 2450 13.00 C 2451 55.00 C 2452 74.42 C 2453 56.30 C 2454 7.85 C 2455 223.17 C 2456 368.00 C 2457 1562.80 D 5534.20 C 2458 450.59 C 2459 75.65 C 2460 923. CC 2461 CC 2462 C 2463 25 C 2464 26 C 2465 50.50 C 2466 39 C 2467 4.80 CC 2468 C 2469 70 C 2470 500 C 2471 12 D 6157.00 C 2472 113.56 C 2473 9.95 CC 2474 C 2475 368 C 2476 616 C 2477 208.65 C 2478 380 C 2479 129 C 2480 3.95 C 2481 7.06 C 2482 30 C 2483 15 D 5631.50 CC 2484 C 2485 2000 C 2486 7 C 2487 34.03 C 2488 474.35 C 2489 179.46 C 2490 145 D 5395 C 2491 12.30 C 2492 7 C 2493 2 C 2494 3.50 C 2495 46.49 CC 2496 C 2497 117.03 CC 2498 C 2499 1773.70 C 2500 94.90 C 2501 50 C 2502 21.85 C 2503 89.37 D 10811.70 C 2504 547.42 C 2505 1203.31 C 2506 368 C 2507 616 C 2508 10.80 C 2509 23.30 C 2510 27.60 C 2511 126.00 C 2512 168.26 C 2513 230.66 C 2514 18 C 2515 20 C 2516 42 C 2517 8 D 7237.50 C 2518 446.86 C 2519 20 C 2520 28.99 C 2521 4.15 C 2522 61.36 C 2523 1210.49 C 2524 7 C 2525 16 C 2526 45.45 C 2527 13.30 C 2528 387 C 2529 18.70 CC 2530 C 2531 1800 C 2532 206.25 C 2533 1703.40 D 3825 C 2534 3178.45 CC 2535 C 2536 97.67 C 2537 55.93 C 2538 26 C 2539 550 C 2540 106.32 C 2541 105 C 2542 108.06 D 6507.66 CC 2543 C 2544 74.95 C 2545 671.81 C 2546 262.60 C 2547 50.50 C 2548 11.70 C 2549 85 C 2550 10 C 2551 34 C 2552 200 C 2553 368 C 2554 912.90 C 2555 500 C 2556 90 C 2557 120 C 2558 2.05 C 2559 899 C 2560 267.58 D 465 D 3182.36 C 2561 100 CC 2562 DM 200 D 5187.50 C 2563 500 C 2564 100.75 C 2565 3000 C 2566 1800 C 2567 75.21 C 2568 563.06 C 2569 26 C W2570 192 C 2571 14.30 C 2572 184.25 D 3000 C 2573 500 C 2574 115 D 11960.00 C 2575 42 C 2576 26.12 C 2577 81.71 C 2578 36.81 C 2579 368.00 C 2580 671.81 C 2581 37.70 C 2582 72 C 2583 350 C 2584 23.95 C 2585 1773.70 CC 2586 C 2587 271.60 CC 2588 D 2107.75 D 4990 C 2589 5 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 C 2591 311.54 C 2593 770.94 C 2594 109.92 C 2595 432.25 C 2596 28 C 2897 200 C 2598 919 C 2599 187.22 C 2600 134 C 2601 90.50 C 2602 153.64 C 2603 14850. CC 2604 C 2605 50 C 2606 186.36 C 2607 85 D 32927.50 C 2608 1352.93 C 2609 50 CC 2610 CC 2611 DM 7.37 C 2612 17 D 14750.00 D 2040 C 2613 33 C 2614 9.22 C 2615 115 C 2616 1875.10 C 2617 134 C 2618 46.45 C 2619 790.75 C 2620 33 C 2621 368 C 2622 52.30 C 2623 309.14 C 2624 9 C 2625 1452.77 D 8742.50 C 2626 50 C 2627 39.50 CC 2628 C 2629 56 C 2630 164 C 2631 400.88 CC 2632 C 2633 8.75 C 2634 7.50 C 2635 48 C 2636 12.55 C 2637 139.70 D 538 C 2638 1200 C 2639 1000 C 2640 115 C 2641 30 C 2642 101.39 D 3000 DM 3000.00 C 2643 140 C 2644 35 C 2645 671.81 C 2646 1850.16 C 2647 70 C 2648 14.20 C 2649 500 C 2650 13.05 C 2651 205.74 C 2652 199.40 C 2653 17.16 C 2654 19.94 C 2655 34.12 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 C 2657 116.89 D 1545 C 2659 368 C 2660 37 C 2661 25 C 2662 15 C 2663 500 C 2664 25.35 D 6212.50 CC 2665 C 2666 50 C 2667 96.30 C 2668 495.42 C 2669 145 C 2670 8.70 C 2671 16.80 C 2672 29 C 2673 11.48 C 2674 1397.48 C 2675 200 C 2676 500 CC 2677 C 2678 49.56 C 2679 10000 C 2680 110 C 2681 1007 C 2682 37.64 C 2683 2000. C 2684 49.44 D 4762.50 C 2685 1850.16 C 2686 35.27 C 2687 115 C 2688 144.36 C 2689 50 C 2690 39.85 C 2691 141.22 C 2692 552.87 C 2693 134.32 CC 2694 D 1882.50 C 2695 500 C 2696 500 C 2697 20.32 C 2698 750 C 2699 110.25 C 2700 368 C 2701 134.74 C 2702 6.90 C 2703 99 DM 11.49 DM 11.61 C 2704 36 C 2705 365.69 C 2706 18.50 D 7130 C 2707 295 C 2708 472.87 C 2709 15 C 2710 36.50 C 2711 16.75 C 2712 218.26 C 2713 139.96 CC 2714 C 2715 50 C 2716 1500 C 2717 1500 C 2718 11.56 C 2717 1500 C 2719 4812.51 D 1545 C 2720 3920.58 C 2721 115 C 2722 76.99 C 2723 40.30 C 2724 117.43 C 2725 552.87 C 2726 127.35 C 2727 6 C 2728 20 C 2729 52.84 C 2730 5.74 DM 23.10 C 2731 50 D 592.50 C 2732 911.35 C 2733 46.85 C 2734 164.11 C 2735 1850.16 C 2736 140 D 1997 C 2737 368 D 1467.50 C 2738 154.01 C 2739 33 C 2740 40 C 2741 15.15 C 2742 342.32 C 2743 10 C 2744 160 C 2745 19 C 2746 1136.47 C 2747 174.34 C 2748 208.22 C 2749 131.46 D 13855 C 2750 145.75 C 2751 30 C 2752 54 C 2753 55 C 2754 569.90 C 2755 64.50 C 2756 75 CC 2757 C 2758 374 C 2759 115 C 2760 500 C 2761 500 C 2762 1510 TEST5 PROGRAM TEST5(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..0] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTRING = STRING[255]; STRPTR = ^BIGSTRING; WORDPTR = ^INTEGER; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE: SYSCALLTYPE; ERROR: BOOLEAN; CALLNUM: INTEGER; R0: REGISTER; R1: REGISTER; R2: REGISTER END; {SYSCALLPREFIX} SCALLPTR = ^SYSCALLPREFIX; FUNCTION FOREGROUND : BOOLEAN; CONST DOTFGND = 8741; LASTBKGND = 5; VAR HEAP : ^ INTEGER; REQUESTPTR: SCALLPTR; BEGIN MARK(HEAP); NEW(REQUESTPTR); WITH REQUESTPTR^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTFGND; { SYSCALL (REQUESTPTR);} FOREGROUND := (R1.INT > LASTBKGND); END; RELEASE(HEAP); END;{FOREGROUND) BEGIN IF FOREGROUND THEN WRITELN(' FOREGROUND') ELSE WRITELN(' BACKGROUND') END. MANUAL210 m MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 1 This file contains information regarding the RDS Pascal Programmer's Manual. The current edition is 2.10. The previous edition was 2.00. ---------------- The old chapters 5 and 6 have been reorganized into chapters 5, 6, 7 and 8 due to the addition of separate compilation facilities to RDS Pascal. ---------------- The old chapters 7 and 8 have become chapters 9 and 10 respectively. ---------------- In Release 2.10 the following changes have been made to the Programmer's Manual and to the file 'MANUAL': new --- 0-2 "Third Edition" added 0-3 A new table of contents 1-10 Added "PACKED ARRAY OF CHAR and STRING Compatibility" 2-3 Restriction on non-local GOTO removed 2-4 Added "Data Limitations" 3-6 Changes to "Default Filenames in I/O Statements" 4-4 Rangechecking code now generated for CHR, SUCC, PRED 4-11 PASCALO no longer uses a separate 'overlay' (.PO) file 8-2 PINFO has new input filename rules 8-5 Changes to rangechecking information 9-2 AOS: Compiler may generate .PU instead of .PX 10-2 RDOS/DOS: Compiler may generate .PU instead of .PX B PACK and UNPACK are now intrinsics C Changes to many Compiler error messages D Runtime errors may now show Module #'s, changed "DIVIDEND" to "DIVISOR" in "MOD" error message, added a new message. Index Re-written MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 2 The following material has not yet been incorporated into the Programmer's Manual: 1. There has been some confusion regarding the differences between 'TEXT' files and 'FILE OF STRING[n]'. A FILE OF STRING[n] is composed of fixed length records, each one being a STRING[n]. Each of these records includes a 'current length' byte as described in the 'Data Representation' section of the manual. A TEXT file is a sequence of CHARs and 'linemarks'. The linemarks permit TEXT files to be read and written with READLN and WRITELN respectively. FILE OF STRING[n], being a typed file, can only be referenced using GET, PUT, READ and WRITE. TEXT files are compatible with your operating system's ASCII files which have been created using the standard text editors. FILEs OF STRING[n] are specialized, as are any other typed Pascal files. Examples are the compiler and runtime error files, PASCAL.ER and PASINTERP.ER, which are declared as 'FILE OF STRING[63]'. Each record of these files is exactly 64 bytes in length. (Remember the dynamic length byte!) These typed files can be accessed randomly using the RDS extension 'SEEK', whereas TEXT files may only be read or written sequentially. 2. RDS Pascal supports an assembler interface which allows access to features of the host system beyond those supported directly by standard Pascal. One common usage of this facility is to access the host system's I/O calls. However, for many of these calls information about an open file is required -- the channel number, for example. In order to permit users to obtain this information, we have documented below a portion of the 'FIB' (or 'file information block') used in RDS Pascal for all files. If you pass a file as a 'var' parameter, you are actually passing a byte pointer to the FIB. We strongly recommend that you not modify any fields within the FIB -- just read them. The interpreter uses the FIB in strange and mysterious ways. You can easily get a program into trouble if you 'innocently' modify a field. MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 3 The FIB consists of three major sections: (a) a 6-word 'SYSCALLPREFIX' (see the sections on SYSCALL in the Programmer's Manual), (b) an AOS-style I/O packet, and (c) additional fields used only by the interpreter. Note that the second section (the AOS packet) is even used in the RDOS/DOS implementation to ensure that programs are fully portable between operating systems. The following pseudo-Pascal declaration will assist you in understanding the FIB design: offset fieldname type contents ------ --------- ---- -------- +0: mode: syscalltype; {see 'syscall'}  +1: error: boolean; +2: callnum: integer; +3: r0: register; +4: r1: register; +5: r2: register; +6: channel: integer; {i/o channel number} +7: isti: integer; {AOS ?ISTI} +8: aosfiletype: integer; {AOS ?ISTO} +9: fbufferp: byteptr; {^read/write buffer} +10: ires: integer; {AOS ?IRES} +11: reclen: integer; {# bytes/record} +12: xferred: integer; {# bytes transferred} +13: recnumhi: integer; {record #: hi-order} +14: recnumlo: integer; {record #: low-order} +15: fnamep: byteptr; {^filename} +16: blocksize: integer; {AOS ?IMRS} +17: deltabl: deltablptr; {AOS ?IDEL} {followed by interpreter-only portion of FIB} MANUAL2.10 Update to RDS Pascal Programmer's Manual 21 August 1980 Page 4 3. On page 1-4 of the Programmer's Manual we discuss the input and output of STRINGs. It should be noted that a minimum field width for the output of a STRING to a TEXT file in a WRITE or WRITELN statement may be used. The syntax is: : If the length of the is less than characters, - length() spaces will precede the output of the . 4. The proposed standard specifies that the order of evaluation of a boolean expression shall be implementation dependent. For example: result := ifok(test) and expectation; A possible optimization in the evaluation of the above expression is evaluation of the boolean function 'ifok' only if the boolean scalar 'expectation' is true. If 'expectation' yields 'false' then 'result' will be 'false' no matter what 'ifok' returns. RDS Pascal performs no such optimizations. All boolean expression will be fully evaluated. In other words, if 'ifok' has some side effects, they must always be considered whenever the above statement is executed. Without the use of explicit parentheses, the evaluation of complex boolean expressions is in left-to-right order -- the function 'ifok' will be invoked and its result 'anded' with the scalar 'expectation'. 5. Both the RDOS/DOS and AOS compilers have an additional global switch: "/C" for 'conformance'. See the release notice for full details regarding its use. BREAKSV Y^ll *"f  X(u(oOUXY&(o"YYYYY'HU'$Q(D(8)(*]H* noz(D("0IS[0i. !,MM+!!" " Y""%NO?¾¾ˡ ¾(( ڢ"ڢDڢٞ#ֲD(ڢ"ڢ?ڢٞ#ֲ?(!p' ۢ%"ڞ#Ś!,)Iۢ  ȡ&ܢ?ܢ ؞#á ȡEܢܢڢܢڢڢ؞#áBs *ɡM 0 á޿ ھȡ ھޕ¾áL d+'Páئ2'PPɄPR Module  Segment P+?Q+?R+??  , Procedure ! , Offset +02),ؾȡ&¾azȄ aAá#:%ֲb%b  b   b ȡ+ b¾؞#ڡ á'v-?F PASINTERP.ER? 2.B ERMESƀƀ ƀ 'V*ڢ ˡ2ɍáb-. PASINTERP.ER bB-šibš"b̀ƀbƀƀƀb̀ƀbƀFile: "ƀ-ƀ"ƀƀ,ƀš.b̀ƀbƀƀƀƀƀ-̀ʀˡʀ ٚʀ ڞ#*|l ޢޢؚޢٚݟˡ-ڢF!۞#!@//0 H CLIFILE'( "" "d""')-!*+,IǴ ȡ ʁI!ʁáֲ>)'> FCOM.CM COM.CM  ʁƀ!ʁȡʁ ʁá Há ʁƀ!ʁƀ!šƀ%ƀ.PXƀƀÍ"ƀ́Ɓƀ!Ɓ.PX$Ɓ!ƀƀ^ƀƀƀʁzʁ{ ō*ʁƁ'20 $ƀáʁá1ʀȡDʁ'ۤ́ƀۤ́ʁʁʁʁʁښʁʁá'́ʁ́ʁʁʁʁʁ!ʁ&ʁʁ)" :1ȡֲá(2ƀƀƀCLIFILEƁ)ʁƀFCOM.CMƀCOM.CMƀƀ2ƀ2,ˡUƀ ƀƀ 2ƀʁʁ-ֶ,2,,ƀeܢ ܢjܢlݢٚݢܢFݢݣ šܢ,ܢnڂ4ܢxܢzܢtܢrܢvܢ6 ܢp ܢ,ܢnݢܢ~ݢ ܣ7ۡ ܢ0,ظ,أ5(/پ!ġآF!!&/٪!%آF!آFNá//ݢ ݣ57ٹ$& .ݢFINPUTݢFOUTPUTDݢzݢFINPUT ݢFD!*ˡ/ݢF?!ظ*ݢFݢFآzݢ.ٚá=ߢߢޣ ڞ# Äߢߢޣ ڞ#0ߢ*"ڞ#0ߢ?ߢޣ ߢڞ# ˡ0'VPI  ܓ áܡ ݢF! //áߢڞ#ݣá#ߢڞ#á ݢrݣ8ݢrߢڞ#ݢjá ݢh$ݢh$ݣˡ& $أ5xۢ ڶ*˄*ۣۣ#ۢjۢlۢxۢvݢ?ݢ ڞ#0ݢݢܣ ڞ#٢ ٢l٣4٣á٢v٢x٢r٢t4$ۢ ۣ8č'/ۢrٚۢڞ#ۢl> ٣;٣8٣٣á!٣6 !٣< ۢ ۣ5)/ۣ=)ֶ*#ݢ?ݢݢݢ ٞ#ܢ ;ڡ2ۣáۢ~ܢ ۢ~ܢ ۢl0ۢh3ڢ ڣ6 /ڣáڣ9ڣ:šJڣ?3ڢrڢtڣ=,ܢܢڢ~¾ٞ#0 áܢ ڢ|ڢ~ڣ9¾ڢrڣ9ڢlڣ>Úڣ>ڢ6ڣ8ڢpڣ>ڢ| ڢxڢxڢl3ڣ6 ڢrڣ9 &أ9أ:šrڢ ڣ5)/ڣ=)ֶ*#ܢܢ ܢ?ٞ#ۢ áڢ~ۢ 0ڢtڢrأáأ;&آvأ6 /&.٣;٣6٣Ä&٢v$! &آv !أ>آv#/!ڿܣ<ܣ>&ܣ<&3 J!ܣ> á&ܣ>+ܣ>-Í ܣ>-&ܣ> 0ܣ>&ۡڡ/5\ t !ݣ> á&ݣ>+ݣ>-Í ݣ>-&ݣ>ټ ݣ>0&ݣ>.áD&ݣ>$Kš/ټݣ>0ܞ$ݣ>ݣ>eݣ>EÍړ>ݢv ڡ܀Kš/ɡ ټ܀$ ټܞ$ڡ/ۡټ ڢ ڢhܢܢ ڣڢ~ڣ9ܢ? ܢܢ?ٞ#0V4أ5)/ڢ ڣájڢ~ڣ9ڣ>ڢrڣ9ڣ9DŽڣ>7ۢ ڣ94ۢ ڢrڣ>áڢ~ܢܢ?ٞ# ڣ=)/ڣ8ڣ9ȡڢlڣ8ڣ9á ڢpڣ84ڢrڣ9 šآ| آ|ٚ (ڢ ڣá,ڣ9šۢ ڣ94ۢ ڢrٶ*á) J#š ەȡآ|¾ á @پȡš ەڮȡآ|¾ á Lآ| #آ|  ##/ ١ True False*" ɡ ـȡ-32768 c-ġIٲ"ܤ00ńބݿ0ˡ ٲ"ܤáɡ`  Bd  ġ š Kš/  ڞ$5Jɡ šKš/  ڞ$5M 5ֶ6خȡ: 06  ي   á8 N7 $ $ɍKōKō$/ ݡ  @ܞ$  A5ޕܕȡ 6á-6 67.6ޮġ06á7ɡ 5 @$5-6 67.67E6ȡ-6+6 ɡ06 z٦ńۂؾȄ۞ۿ+/8پؾȡؾپپؾ+/2ھšS¾پھ¾ȡ3ܕž šھگ:f1H x \ D d l " >Td `r$ PHZ   VH b Bxn7n&{  8X6H**+ 8I8)6X6H**+ 8JR8)6H7(**+ 8I878)60-P-("H"(( < n0-P-("H" ;xV'|-vC0uYg^oM.86420 (33 >x#6E[PR]........RRRRRRRRUUUUUUUUUUUUUUUU12(T(]) X(*2(T(] X(*P(T(] X(*$((B]0(" X(*B]1 /2(T(] X(* /2(T(] X(* /P(T(] X(* /$((B] W(* W(*(T(](T(] W(*2 X(*"(D(] W(*2 X(*P(T(] W(*2 X(*$((B]$((4((ӐB]4((Ӑ2(T(]1 4((Ӑ"(D(] W(*H*P7@80(P( " n- 8078("CP8)](L( W(*] W(*4((ӐH*P7@80(P( " n- 8078("CO W(*0(P(<((H*"CO4((Ґ"0I(D(]$((4((8IғH**JO$((/<((H*2(J(*(\(8)]H* n X(* $((4(((T(]H*P4(( p8)4(((T((*O X(*4(("(D(] X(*H*4((<((Ӑ"CO X(*H*<((4(( W(*H*<((4((P7+ 0I@07 nOP7# 0I@07X7H88IҒ*J@(887O$((0H4((ӐB] W(*H*,(( q<(((\((* W(*H* p8j#8k+(D(O$((4((Ӑ2Ґ(T(]H*,(($((<((ҒP3SO$((Z(D(]$(((D(]$((4(( $((4(((T(]$((4((J JZJ[(T(]H* n,H*4((,((/ J r[  rZ  K/(L(O nH*4((,((J s(L(O0("(D(H*4((/8(+J s8(JCO n n+$((4(((T(]$((4(((T(]$((P(D(]$(((D(]0(]]0(]]0(":ZB8)]0("(D(] X(*4(((T(]$((<((4((.J(T(8)]H* n$((4((Q(D(]$((4((P(T(]$((4((/P(D(]$((4((JP(D(]$((4((JQ(D(]$((4((/Q(D(] P0@0A0B0C W(*9@R}G9KQgRRRR X(*H* K@6<((4((Ӑ#* L6K X(*H* L@6<((4((Ӑ#* K6L$((8H8-CP(\(H*9#(D(8(3;X7Ґ" 8I@87P7+ 0I@07  FF D@6H6X7Ґ" 8I@87P7+ 0I@07&$68(3;X7Ґ" 8I@87P7+ 0I@07 P @ B<((4((,((KL X(*H*9+(L(8(3; @6P7# 0I@07X7Ґ* 8I@876 W(*4(( ]=H*8("CX($(('H*0(P7@80(P( " n- 8078((D(/ "C,((CO$(((D((D(H*<((4(((T(O K n!8 nP6X7(G8k#(786(D(86(G8j+(6(D( 7(D(O$((0(P(H*** G+8l#P8)B(*] z H6"+J6P(O lH6"+J6 ]H6"+B690R?RO E H6"+6Q,((0(P(BO / H6"+6P  H6"+6Q  H6"+6QX6H*8(+3  8(+6 K8(+SK(D(0(P7@80(P( " n- 8078("C,((C?? @ @0(P(" A8)]0(P("B"B @" 48)]0("PB]0("PB]0( %P(8)]0( !P(8)]0( P(8)]0( P(8)]0("B"B P(8)]H*0( P(O[|p!(D(!(D(0("K  P(8)]0( P(8)]@4((J!  ! "(D("(D(]K nLAABdC>D'EjE$FG_^H;I%@JHvJԤKLZM8N#O4WO jP"QVuR65S!T-TUYPVRW3X OY1YZ~7[N\1M]Л^Ba^_x^`K;Ka/bc)c]cdrYeGf,ogh'h)imyjDl9k*ãlFmlm 8nhgoA@p({q}MqrO"scut>:u&vOvwx^y;Xz%{.{D| }Z~8#_0+80(D((L((T((\(8,(\(8(X0] W(* W(*H*(\(80K8>PX6#/.PC#  n ((0<0- n ((000C0(X("C"86#(0H00CK863P,* J$((  P  0,"P+ 0@/P8) W(*H*00J0>*H, W(*H*00J(+0-0.00(:J,+0,<,K!I""K SP+"K99 0+P,"P+"@0I8) #;80C#PCX)0+"P7@80(P( " n- 807"PH*] W(*00J0;"P+ ;@, 1"o80#PCX)2 I!"@60(6$0+"(J@680X)/ W(*@6(J$,K1͕T!7 8>P#0)(BX) 6"C8)#@,#P@0+3K 8)P+ 6  CX(H*0)(C"CX((*80#Z;PX)]$+(@ +H6,(($((0+ @"PP*$+0J  $,0I O3K(\( &<(( @"PS3PҐ"0J '0I 3PҐ"0I;(6H* n "o0+ @"PP*+H6(6#PH63K(\( <(((6 "(I,((  $(("PSO(L( @"PS; W(*S0JJ0+"P]$((]$((*.*J *(A"P]P] W(*H*1RDK0RR lg RRRRRRRRsiGIMKOQS+2Rz7YRRR4((Ӑ -PB]4((Ӑ"0- n0. n@-]$((4((Ӑ(-H-PJ < ( n H"(*] $<((C<((K<((SO  -0(0</(D(]$((P(D(]4((!!!$((<((4((/]X7H88IҒ*J@(8878)]$((<((4((/OX7Ґ* 8I@87P7@80I#C@ 807O$((<((4((JOX7Ґ* 8I@87P7@80I#C@ 807O8(+#C O#3$+KX7Ґ* 8I@87 98X7Ґ* 8I@87 ((+KX7Ґ* 8I@87 X7Ґ* 8I@87 #+C AX(O P @ A B C D0(4 8()X(X)X0CX1! C =(D()] J2H)H($,C#)  1""6"A"U nX6+8)'K;0JE'E3 @;#PUbcdX6$,0JE8+#E#P *E0; A""20C01@(@0 $6! (D((L(81X))]3X69Ɛ6X6 9 P@ @!6X7KKX8 p88Z7X7KKX8 q88Z72\2 @BB y<222\2 z @<222D2 u$222T29422 vOCXRSX6! YP3! YP2! YP4!P56 !<C 4 w# w | # w { ~ 4 w 4 w } 4 w!* !( ~ }# ! w } {! w }422P04B! BBBBB n@A @@3d@ry@o-T8BSP B]v1IfBZ,YAB>)B=1oB-\K߬u2\28304"2",C w04")J CpC!$ !" w }0404"+J BCS# w# w ~ {! w } #@4422 n@RL@*@9>N(@@@2\28304"CBCC"):!= w ~ 4 w!1 w  4 w!- w }!, w | !& w { ~ 4 w 4 w } 4 w! ! ~ }! w {! w {#D4422AA2CZ0@ k,AzXLt@DQz{5XA!TD-FAɈg)2B}D@nVC>rWB3,1AB%ݣBϱS^UCʙ43FB3,1ޅ 2\28304*uPCB!! w } +K! w |+04 w 4 w } 4 w! ! ~ }422 f T / T>6--j@A17AP6QCZQFC;(:Dpԋ0ABsMʁ]pZDx%UXl@nND'8(3S;Ӑ B@6"+6'3p8(3ӐK22 $((<((4((S(L(O hPE AP7@80(P( " n- 8078(3Ӑ!BBBB3Ӑ"3; F@6P7# 0I@07(\( -'X7H88IҒ*J@(887<((6P7# 0I@07(\( <(($(()))) ) ) 0:@Z`z8(33ӐB F@63)o9pX7Ґ" 8I@87X7H88IҒ*J@(88768(3X7Ґ" 8I@87)E3Ӑ"C"PPPC!;3#C#PPP(T(;Ӑ B@6"+64((!8(#;C8(!X(O4((Ӑ"8(;C"8( A`6 o  P  f?FQfX1,)+H6)*H7*766) !  " 9PPP9)ٮPPP)־!0!D    H-H. <H" t  " WsX6 " 96X6 " 6ېX6#  K n) 1v!!!#+1S1S1S386C86CPCKSO #X9! Y89ZP9!P " 89" *1k p<937 q<9K8!09 ZOX937+9 p893 '? OX93 ? 1 P89K1PCO@X9! YP889!P " 08" *10 p092 '? ! ZOH9X8P)! (: @:-)%%  ? % `P-Ӑ(98ge@?86X93) p893 '? 0)P893+ ? 89X6  n%/"5*Z"*:X8:2! H`:Y:2`' 'JY8 ` =CKS8Z9(J+J@Z*J8H`"2$0 d'$OFOBAR.PXPX$TTO$TTIJ ۢ*"ٞ# ۢ ٞ#!:٪ƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀ?ʀʀʀʀʀ ؚʀ#ʀ/֦ ERROR IN OPEN = Jʀʀ ʀʀʀƀ! ݢ?ݢ ؚ۞#)֦ ERROR IN CLOSE = J !`تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ1֦ ERROR IN DELETE = Jʀʀ ʀʀʀƀ!تƀ ƀƀǀʀ֦ Jʀʀʀʀ̀ʀʀʀʀʀʀʀ#ʀ0֦ ERROR IN CRAND = Jʀʀ ʀʀʀƀ!٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ4֦ ERROR IN WRITELINE = Jʀʀ ʀʀʀƀ! ǀ ? ߚ    ؚݞ# /֦ ERROR IN READLINE = J   ߪ ! ǀ ? ߚ    ؚݞ# 5֦ ERROR IN READSEQUENTIAL = J   ߪ ! ٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ:֦ ERROR IN WRITESEQUENTIAL = Jʀʀ ʀʀʀƀ! ƁJƁƁJOUTPUTƀƁƀȦINPUTƀƁJ֥DFFOBAR֥Fƥ֧DFƥ֧DTHIS IS A TESTƥ ֦ HIT CTLAJʁ֥ƁJƀ~$x:d, &2 Ӣ>}LJL><b߮ ȡJ å¾0 ń ō  ¾0á" FOBAR߮ ȡ% ¾0á ޮġ+¾0ޕ$á ݮ ȡ ¾0 á á $  $$ f8Fj$ ?OÍNȡO ¾#$$TTI  쥀¾  쥀¾.á #쥀¾=á ' ( ( ' ) ¾ ?P  P>O )  $TTOT{w "$&(  HIT CTLA RAND = 9 OQSUWY[]_acegikmolrt}/á)O"L&p&{N"{ KQN"WNN"e :^NNNN"ɨeNNNNNN0á cÄ"JɡJ4P֥A  ڧs ڧQ 5 ֥ ֥= lš5֥֥l֥>>>J>>QQ&{O" xOOOOOO OOOOO?00O0ȡ"ٕáq֥yError at line ڧA ڦ in ڥxڦ of ڥt" ըQQQQQQR000ڥxڦ of ڥt:֥u ڥ֥u%q֥Error at line ڧA ڦ in ڥxڦ of ڥt:֥ ڥ֥% ġI ۤڟˡ,áڣk.á.Jhm9k,jlihښ۫ ؟áٟ ٥ˡٟ  ? ؾš ¾ؾń/ ƀؾƀ ؾ¾áؾ šeƀƀ֦ ƀƀƀؾٕƀn Yš¥9YٞقYقYY؍, ,֥YZZ9 ٕán|ƆƇ9ƆWORKCODEƈ9ƈwƈ9INCLFILEƉwƉƉwWORKSYMƄƅ1ƄOVTPVTƅuƅƅuANALFILEƅƆ5ƅLPƆyƆƆyERRFILE:֥OUTPUT֥֥ 3 ˡO ˡAA :֥Ɔƈ9ƉwƄƅuƅƆyG6 <~102 R/,+-*). :`3H H ` ('&6%FN',2 ӢEND  F {$I WRS.PI}I}}END.   !"$$$$AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END FILE .FOR FUNCTION GOTO IF IN )LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROGRAM !RECORD -REPEAT SEGMENT 0SET *STRING 3THEN TO TYPE UNTIL VAR WHILE WITH BNvj   & $*4:@Ȭ &٤ˡ"خ ۢ á;ت@&@$%$á%$¾&$$%%$ɡ6$$6@٦@OT~٪@$$@$ A$B6$ت@٪@F EEHHǀHGH<á HHHE#HGHǀH$<á HHHE#F!F#֥֥A ۦ lines#֥u֥uA ۦ linesP#֥֥A ۦ lines֥uP֥ Mȡ ڤ áȡ8ڤȡܢ¾ ááȡ áʾȡ֥¾ áʾ.ȡ á!ȡ á֧; ֧H ֧X ֧R ֧I ֧@ ֧<  ֧F ȡ á观+  *  ֧Z ɡ 槂,g֥ ZY!  ֥<֥3+* եվU եվX֥ե֥{0Wwp2 ,W+,9:rB9/:95]]TEST.PX B$12$29$14.WK@TEST.PX s7ŹF95r B$12$29$14.WK]rn7[F95rrr@  áPB$12$29$14.WK A ˡǖ   7x95snnAsn ń 弄 ;֥ 弄 á ݟˡˡ NJ ˡ ˡqݟˡL< D   ˡ  šNj   ˡL3á DB  @$ń ˡáZáˡˡ nj áˡ  á ǘ   $ , $ 8  Í Ä  áP   ˡń  ˡÍ~á    OaáV  O >>  á#ˡń Ǎ E ޭ/162 #:á $k0š ˡɡ % áVߣ á ߣ ˡ+ öÄ.á  ȡ ááٟá~ֲ"ٟ˄ڟˡ٣áȡqcÄÄǀ&  _  á 6çDeڧd d CÄ,'Pˡ ݕˡǎګ Há=ڣɡǿágá ˡǚٟˡˡá(ٟˡߣ á ߣ *ߣ á Nߣ ߣ á Sߣ  Mߣ ߣ  Rrt 42ܣ áܣ ޳``V޳`á޳@t ޳" ޹#$)*1ˡ ġe ˡ%eádá e ˡ%eádá e  >e +á Oe   ȡD  ˡ eˡáǤ á ˡ eˡá% ,-ˡ eˡCb Dˡ eˡDc Z)RCExutq]ZW*,)02*6Hߡá2vYeá d eá اd*3ddÍ34弄: 弄^ܣá 'ܣá  ˡá ꧂e ꧂d ác   _   á*7bˍ ˡbˡ LJ    á ˡˡ Lj  Ȅ  #áH   lj ޡȄ   ޡ   ߡ  ˫쓡á ߡ1"ppp  ppp U&N "$&(*,.02468:<>@BDHud@!(Z77'á   7 ܟ˄ 4ܧeeÄ/ܧddÄ   3ܧddÄ  pܧeeÄ  RܧeeÄ  4ܧbbÄ    .lP  $B6(`á   6eá á %dá á  ˡ  (á   6 ܟ˄ 4ܧeeÄ/ܧddÄ  y4ܧeeÄ/ܧddÄ  0ܧbbÄ    u.  5ˡ ەˡٚ,8JɡJ5)ácÍÄˡȡ   5cÍÄ ˡȡ ܟ˄ á+á   ǂ ˡ4 8  P֥ 8   ܧdá  ǃ DŽ  vUcÄ Aܧc1R         ˡ   4  Dž 0 <5 F4 <1 20 (7 /  D<*6$b   nֲ@á ֲ30:ֲ9弄˫쓡 á^:< D=  š á[ á   Ǜ؟ˡd ǏֲAáaֲˡGˡ9+ ؟ˡçD. ǑǻֲǀoáHDֲ@ˡGˡ9+ ؟ˡçD.  7ֲ@á6! 6 9   áP ==ֲ9==  6 C!  @BJɡJ"ád ݤˡ ݤޟˡ* á ǥ   á0H弄 á&|ܣá :I߹(=;?6B1;,>'@"AC0/0/ !&I# @97D W؟á!t??----??x??----?? txbody أáá ˡ ˡákšY2 62 *ˡ Qޕ( á A> ܟˡܢ  nçş˄  ˡ V2 2 >aánˡXşáKŢ;INPUT Я OUTPUT Я OV2 ǀ& ¾ á ȡ¾ áO VO ˡV2 O ˡV2 Oֲ9弄˫쓡 á   ˡ! V2 O á-- ܟˡ$`mˡǨާW š륄Xߤ ؟á ֧ ֧  ?š7ٕ ֧s ֧n 88Z땧?ɡA?낫? !as?.tv#"*20 5Q=֥  á֧o蓼o ܓ-o áo 蓼o 弄ܓo á`<B˧3nÄ. =ݧoÍ $#~"! ̅ L  4`؄  6p 4^ *!$!l!D,F#m,GX>X@$:^VGXX,f$f$f0f$ff$f$f$f0f$? (Ao#G.'@4G.Pt@ *P @ ( FFJ *ȓ,P Y]Ȯ,Y\ $} WRITELN(' HIT CTLA');READLN;E(STR[I]);RRORNUMBER);m7G*,Y\ ;t*,Y\ .222ANNEL : IN*,Y\$  N&*,*#,Y\L WRITELN(' HIT CTLA');READLN;E(STR[I]);RRORNUMBER);*M,Y\ ;  Y] Y]DE ; 444  Y] Y]  Y]*ȳ,Y\l$% ;nn Y]" Y] Y]D Y]$ Y]@4٪ƀ ƀƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ@4 ~$x:d, TƀƁƀȦINPUTƀƁJ֥DFFOBAR֥Fƥ֧DFƥ֧DTHIS IS A TESTƥ ֦ HIT CTLAJʁ֥ƁJƀ ? ߚ    ؚݞ# /֦ ERROR IN READLINE = J   ߪ !ƀǀʀʀ̀ʀʀ?ʀʀʀʀʀښʀ ؚʀ#ʀ4֦ ERROR IN WRITELINE = Jʀʀ ʀʀʀƀ!ʀʀʀʀʀʀ#ʀ0֦ ERROR IN CRAND = Jʀʀ ʀʀʀƀ!ʀʀ̀ʀʀʀʀʀʀʀ#ʀ1֦ ERROR IN DELETE = Jʀʀ ʀʀʀƀ!!`ʀ֦ Jʀʀʀʀ̀ʀʀ?ʀʀʀʀʀ ؚʀ#ʀ/֦ ERROR IN OPEN = Jʀʀ ʀʀʀƀ!STRINGPOn@HEAP REQUEST DOTWRS @?tZ`X>ERRNUM @ERR ܮ*BYTESOUT@BUFFER 22CHANNEL H@HWRITESEQ^ ERRNUM V@ERR l*BYTESREA@BUFFER CHANNEL خ@READSEQU ERRNUM @ERR &*&BYTESREA@<BUFFER RRCHANNEL @WORDPTR $VSTRPTR \Dn!&@4BIGSTR BYTEPTR tB@@ ®4BYTEARRA̅BB  OUTPUT INPUT PROGRAM )BbISYSCALL P#`H!1bIg)%$RELEASE !MARK  ! K4!@ $SQRT :nEXP :nLN :nARCTAN :nLOG |Ԯ:nCOS :nSIN :nTRUNC @nROUND @nICE DRIVER N:DED MEMAVAIL@PWROFTEN:$ SYSGEN ERRO@ INCHR )ODD (UNPACK B'PACK &SIZEOF ,%PUT #GET "RESET f!SEEK X CLOSE PAGE REWRITE v`APPEND TIME EXIT INDEX JSUBSTR EOLCHAR DATE LENGTH CONCAT RPURGE 4FILETITL NEW  ABS  SQR & ORD  SUCC :PRED EOLN <EOF D~WRITELN WRITE pREADLN READ . C# V  \  !(C  NIL $TRUE *FALSE Z*MAXINT bh@RNTEXT v MBOOLEAN ֮*USCHAR Į4LEREAL : INTEGER ֮@ F@44v HIT CTLA TESTESEQUENTIAL =  DISK UNIT NOT READY DISK FORMAT ERROR DISK STATUS ERROR ILLEGAL MASTER DEVICE ou_[#^c&9; C19+ J+JU#Ed1 `1U8 CC5 B `Zv_3B$12$29$14WKll @   THIS IS A TESTrġ6aؤš֧?낥aؤ ֥aؤ á ֧r 땧?ɡE #TESTPXAl??CCOM.CM5  XGWXWWXWTEST.PXPXX%'XX%hkiiEv\ COM.CM=+J+J3X}ǀ$TTI$TTI@$TTO@beqY $TTO>> cjqYCOMMll *q}`TESTPXAll )q}AN`A1 ! 1 1 1 ! 1 d= ` `WY) ! ))  !aPA`C)_A^CPA!ZP g1M9N c9 9J 9 -Rw $TTI@ff @b` TESTPXAll )q}AN`AnDEAR qq,1234567890 1234567890 1979CHECKS C 3049 44.55 10 C 3065 223.70 32 C 2763 1850.16 2 C 2764 552.87 17 C 2765 314.49 8 C 2766 314.49 8 C 2767 100 8 C 2770 20.07 18 C 2771 630.50 4 C 2774 38.75 11 C 2777 47.70 5 C 2779 229.63 25 C 2780 6.94 5 C 2781 64.25 5 C 2786 228.23 8 EM 665 1102.70 12 EM 666 1209.04 12 EM 667 1350.43 12 EM 668 199.40 12 EM 669 550.32 12 EM 670 539.29 12 EM 671 526.45 12 EM 672 344.29 12 EM 673 2468.66 14 EM 680 411.53 12 EM 682 2234.86 14 D 1567 D 2945 D 7000 D 2500 D 6590 D 700 C 2768 677.50 20 C 2769 125 26 C 2772 736 23 C 2773 13 1 C 2775 12.82 18 C 2776 7.30 23 C 2778 258.40 5 C 2782 160.96 5 C 2783 563.93 23 C 2784 67 26 C 2785 45.00 26 C 2788 93.70 5 C 2790 1000 8 C 2791 100 26 C 2792 1850.16 2 C 2793 115 3 C 2794 75 5 C 2795 114.48 24 C 2796 14 1 C 2797 150 5 EM 674 1360.43 12 EM 675 209.40 12 EM 676 1053.55 12 EM 677 1083.87 12 EM 678 516.30 12 EM 679 550.39 12 EM 681 276.95 12 EM 684 209.40 12 EM 685 1101.20 12 EM 686 1580.40 12 EM 687 533.66 12 EM 688 610.74 12 EM 689 422.46 12 EM 690 215.64 12 EM 698 3861.48 14 DM 2000 D 1575 D 3195 D 3144.56 D 2556 D 2000 D 7097 D 2000 EM 683 1360.43 12 EM 691 209.40 12 EM 692 981.35 12 EM 693 1050.72 12 EM 694 479.62 12 EM 695 554.62 12 EM 696 369.47 12 EM 697 329.08 12 EM 699 1398.97 12 EM 700 194.48 12 EM 701 1016.68 12 EM 702 1156.68 12 EM 703 563.99 12 EM 704 640.40 12 EM 705 470.84 12 EM 706 483.71 12 EM 707 2984.02 14 EM 708 555.34 14 EM 709 310.37 15 EM 710 1372.35 15 C 2800 38 20 C 2802 7 1 C 2803 1850.16 2 C 2804 12.45 C 2805 125 8 C 2806 2 1 C 2807 115 3 C 2808 1105.74 17 C 2809 23.35 1 C 2810 131 8 CM 1995 D 1377.50 D 1708.14 D 1885 D 24676.36 D 892.50 C 2812 63.75 6 C 2813 545 7 C 2814 1406.50 17 C 2815 368 23 C 2816 600 28 C 2817 151.18 25 C 2818 13.80 5 C 2819 30 5 C 2820 692 25 C 2821 100 25 C 2822 1291.19 4 C 2823 275.82 4 C 2824 100 26 C 2825 25 26 EM 711 1408.97 12 EM 712 204.48 12 EM 713 1091.05 12 EM 714 1096.88 12 EM 715 595.09 12 EM 716 613.84 12 EM 717 514.82 12 D 8907.50 34 D 4462 34 D 14386.25 34 D 527.50 34 EM 718 482.51 12 EM 719 3016.96 14 EM 720 125.24 14 EM 721 879.67 15 C 2826 1850.16 2 C 2827 115 3 C 2828 552.87 17 C 2829 75 24 C 2830 88 18 C 2831 20 26 C 2832 108 26 D 3232.50 34 C 2833 64.59 4 C 2834 157.50 22 C 2835 8.93 1 C 2836 25 26 C 2837 30 5 C 2838 12.25 5 C 2839 10.94 5 C 2842 273.55 25 C 2843 1444.50 17 C 2844 176 5 C 2845 446.10 5 C 2847 739.11 4 C 2848 108.10 4 C 2849 341.33 4 C 2850 428.08 25 C 2851 26.19 11 C 2853 611.53 17 C 2854 20.75 1 C 2855 500 27 C 2858 9.93 5 C 2860 28.50 5 EM 722 1032.90 12 EM 723 1408.97 12 EM 725 1166.68 12 EM 726 527.17 12 EM 727 560.96 12 EM 728 492.78 12 EM 729 298.75 12 EM 730 2831.26 14 EM 739 2326.89 14 C 2840 770.93 25 C 2841 32.27 25 C 2846 33.44 5 C 2852 101.44 23 C 2856 513.12 23 C 2857 83.07 5 C 2864 25.83 8 C 2865 1850.16 2 C 2866 30.29 5 C 2867 115 3 C 2868 27.76 14 C 2869 80 18 C 2870 736 23 C 2871 546.84 5 C 2872 68.98 5 C 2874 298.05 6 C 2875 766.49 6 C 2877 16 18 C 2878 121.92 1 C 2879 1633.42 23 C 2880 11.25 5 C 2881 23.85 5 C 2882 49.52 5 C 2883 9.80 5 C 2886 24.45 5 C 2889 77 5 EM 724 204.48 12 EM 731 1408.97 12 EM 732 204.48 12 EM 733 863.83 12 EM 734 915.34 12 EM 735 368.67 12 EM 736 514.29 12 EM 737 430.51 12 EM 738 322.85 12 EM 740 1420.97 12 EM 741 204.48 12 EM 742 1131.44 12 EM 743 1096.04 12 EM 744 551.67 12 EM 745 640.60 12 EM 746 385.40 12 EM 747 360.91 12 EM 748 2850.69 14 EM 751 1049.82 12 EM 758 2575.50 14 D 210 34 D 600 34 D 15954.41 34 D 1278.47 34 D 611.53 34 C 2861 611.53 17 C 2862 171.16 25 C 2863 32 8 C 2887 30 5 C 2888 41.62 5 C 2890 104.82 23 C 2891 129.76 8 C 2892 115 3 C 2893 27.46 5 C 2894 3.95 23 C 2895 244.30 25 C 2896 16.85 5 C 2897 1850.16 2 C 2898 601.53 17 C 2899 177 5 C 2900 717.86 4 C 2901 50 26 C 2902 3 18 C 2903 22 18 C 2904 169.04 5 C 2905 300 17 DM 7.50 C 2906 60 1 C 2909 81.22 15 EM 749 1424.97 12 EM 750 204.48 12 EM 752 992.88 12 EM 753 551.67 12 EM 754 550.23 12 EM 755 431.37 12 EM 756 343.46 12 EM 759 1391.48 15 EM 760 1569.95 15 EM 761 80.68 14 EM 762 1017.67 12 EM 763 929.08 12 EM 764 518.89 12 D 4302.50 34 D 1558.65 34 D 418.50 34 D 430 34 D 3475 34 EM 765 271.86 12 EM 766 384.02 12 EM 767 256.22 12 EM 782 2500 14 EM 783 1956.74 14 D 7202.98 34 D 3000 34 D 1240 34 C 2907 45 1 DM 6 D 552.50 34 D 1030 34 D 1547.28 34 D 1800 34 D 618 34 D 4310 34 D 368278 34 D 2675 34 DM 3000 C 2915 26 5 C 2918 336.98 27 C 2919 263.44 8 C 2920 153.50 6 C 2921 1159.13 25 C 2925 54 10 C 2926 306.79 17 C 2927 225 1 C 2928 1850.16 2 C 2929 395.75 2 C 2930 2839.54 14 C 2931 115 3 C 2932 18.02 5 C 2934 83.31 4 C 2935 56 33 C 2936 1390 28 EM 768 1426.97 12 EM 769 204.48 12 CC 770 CC 779 EM 771 864.72 12 EM 772 1001.57 12 EM 774 640.60 12 EM 775 302.19 12 EM 776 451.39 12 EM 777 429.02 12 EM 778 314.65 12 EM 780 568.52 12 EM 781 993.27 12 EM 784 551.67 12 EM 785 993.62 12 EM 786 993.62 12 EM 787 444.04 12 EM 788 375 12 EM 789 415.74 12 EM 790 204.48 12 EM 791 1426.97 12 EM 792 1426.97 12 C 2914 101.18 5 C 2916 70.65 5 C 2917 76.47 5 C 2913 133.61 23 C 2910 897 15 C 2908 601.81 4 DM 52.15 C 2933 51.22 5 C 2937 398 17 C 2938 60.80 1 C 2939 19.75 18 C 2940 30.95 32 C 2941 31.65 32 C 2942 115 3 C 2943 350 27 C 2944 100 27 C 2945 1850.16 2 C 2946 20.76 11 C 2947 75.64 32 C 2948 124.89 17 C 2949 106.45 25 C 2950 150.70 10 C 2951 8.46 32 C 2952 1057.58 27 C 2953 830 27 C 2958 25 3 C 2961 100 22 C 2962 1000 17 EM 794 1426.97 12 EM 795 204.48 12 EM 796 2090.76 14 EM 793 561.13 12 D 2320.45 34 D 3314.44 34 D 4439 34 D 2039.96 34 D 2747.24 34 EM 797 360.94 15 C 2955 1301.13 32 C 2956 60 27 C 2957 125 27 C 2959 30 3 C 2960 10.35 32 C 2963 178.83 32 C 2964 270.22 32 C 2965 174.85 4 C 2966 81.63 32 C 2967 365.44 32 C 2968 34.70 32 C 2970 22000 12 C 2971 1500 32 C 2972 398.04 32 C 2973 1550 9 C 2975 294.74 25 C 2976 548.34 32 C 2978 35 26 C 2979 500 7 C 2983 398.04 32 C 2985 1850.16 2 D 2197.25 34 D 5527.98 34 D 832.50 34 D 6471.12 34 D 12653.22 34 DM 1301.13 D 808.23 34 D 1890 34 C 2981 34 1 C 2984 7.68 10 C 2988 17.50 8 C 2991 31 1 C 2992 7.50 5 C 2994 196.14 22 C 2995 60.93 23 C 2996 202.41 23 C 2997 20.58 23 C 2998 118.46 23 C 2986 22 1 C 2987 47.20 5 C 2989 2 4 C 2990 890.60 4 C 2993 30.95 3 C 3003 63.01 4 C 3004 5.80 23 C 3005 81.83 32 C 3006 190.25 4 C 3009 89.20 5 C 3011 61.95 5 C 3013 550 2 C 3014 93.39 2 C 3015 368.32 2 C 3018 414.75 2 EM 798 204.48 12 EM 799 204.48 12 EM 800 1426.97 12 EM 801 426.97 12 CC 806 CC 807 CC 808 D 660 34 D 2500 34 D 1332.87 34 D 7430.13 34 D 3561.07 34 EM 803 1207.97 27 EM 804 1426.97 12 EM 805 204.48 12 EM 809 1835.96 14 C 2999 80 10 C 3000 230 1 C 3001 359 1 C 3007 37.12 10 C 3008 12.40 10 C 3010 69 1 C 3012 600 3 C 3016 4 5 C 3017 1208.43 25 C 3019 31 5 C 3020 8 18 C 3021 262.25 22 C 3022 34.90 22 C 3023 535.05 3 C 3024 12.60 10 C 3025 547.25 27 C 3026 40 32 C 3027 327.12 4 C 3028 44.82 3 C 3029 397.33 23 C 3032 202.96 17 C 3033 215.05 3 C 3034 6.30 3 C 3035 230 3 C 3036 50 27 C 3037 288 27 C 3038 150 27 C 3039 55.06 3 C 3042 88.17 3 C 3043 49.80 3 C 3045 10 1 C 3046 5428.82 6 C 3047 300 24 C 3051 164 17 C 3052 612.92 3 D 1029.72 34 D 440 34 D 16000 34 CC 2789 CC 2798 C 2799 157. 23 CC 2801 CC 2811 CC 2859 CC 2876 CC 2884 CC 2885 CC 2911 C 2912 787.00 17 CC 2922 CC 2923 C 2924 368 23 CC 2954 CC 2974 CC 2977 CC 2980 CC 2982 CC 2873 C 3030 626.30 23 C 3031 30 27 C 3041 3.57 4 C 3048 22.56 11 C 3050 35 26 C 3053 256.07 4 C 3054 1743.66 7 C 3055 1200 21 C 3057 60 26 C 3058 385 3 C 3059 172.14 8 C 3060 6.95 3 C 3061 646.33 8 C 3062 31 1 C 3063 30 26 C 3072 129.64 4 C 3074 2500 21 C 3077 10.77 6 C 3079 37.50 6 C 3080 1298.05 25 C 3056 10 26 C 660 484.10 12 EM 815 887.50 12 CC 2969 C 3073 1340.73 25 ALLOCt ;PASCAL "ALLOCATE" PROCEDURE ; -- GENERATES ANY SPECIFIED SIZE OF HEAP FRAME ;PETE GOODEVE 78:7:22 ;TYPICAL USE: ; VAR P:ARRAYPOINTER; (* MADE AS LARGE AS POSSIBLY NEEDED *); ; .... ; ALLOC(5) (* GET 5 WORDS OF SPACE *); ; MARK(P) (* MAKE IT AVAILABLE FOR USE *); ; .... (* PROGRAM MUST NOT EXCEED 5 WORD ACCESS RANGE!*) .TITL ALLOC ;78:7:22 .EXTN XPRET .ENT ?ALLOC SP=41 ;STACK POINTER HP=44 ;HEAP POINTER SL=45 ;CURRENT STACK LIMIT P4ERR=JSR @51 .NREL ;PROCEDURE ALLOC(I:INTEGER);EXTERNAL; ?ALLOC: LDA 0,0,3 ;NUMBER OF WORDS TO ALLOCATE LDA 2,HP ;CURRENT HEAP SUB 0,2 ;FORM NEW POINTER LDA 3,SL ;STACK LIMIT ADCZ# 3,2,SZC ;CLUNNK? JMP MAKE ;NO -- MAKE THE SPACE P4ERR 414 ;OVERFLOW ERROR MAKE: STA 2,HP ;NEW HEAP COM 0,0 ;SET COUNTER SUB 1,1 MLP: INC 0,0,SNR ;DONE? XPRET ;YUP STA 1,0,2 ;CLEAR SLOT INC 2,2 ;NEXT JMP MLP .END ;OF ALLOCATE T24]2PROGRAM T24(INPUT,OUTPUT); TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOTA,KLIG,IOFILE,FOBAR,GZYXX : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN (NUMBER : INTEGER ; IFILE : ALPHA ; VAR IOTA : INTEGER);EXTERNAL; BEGIN IOTA :=100; IOFILE := 8; FILENAME := 'INPUTFILE0.SR'; OPEN (IOFILE , FILENAME,IOTA); WRITELN (OUTPUT,'IOTA= ',IOTA) END. 36 8TKOM013``PROGRAM TKOMPAR(INPUT,OUTPUT); TYPE COMPARATIVE = (LESS,GREATER,EQUAL); TEXT = PACKED ARRAY[1..10] OF CHAR; VAR A : TEXT; B : TEXT; I,J : INTEGER; FUNCTION KOMPAR ( A : TEXT; B : TEXT; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE; VAR I : INTEGER; T : COMPARATIVE; BEGIN T := EQUAL; I := NSTART; WHILE ( ( T = EQUAL ) AND ( I <= NEND ) ) DO BEGIN WRITELN(' ',A[I],' ',B[I]); BEGIN IF A[I] > B[I] THEN T := GREATER ELSE IF A[I] < B[I] THEN T := LESS END; I := I+1 END; KOMPAR := T END; BEGIN WHILE NOT EOF(INPUT) DO BEGIN I :=1; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,A[I]);I := I+1 END; RESET(INPUT); B[1] := 'P';B[2] := 'A';B[3] := 'S'; CASE KOMPAR(A,B,1,10) OF LESS : WRITELN ('LESS'); EQUAL : WRITELN ('EQUAL'); GREATER : WRITELN ('GREATER') END END END. F  *PROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : INTEGER; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : INTEGER; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : INTEGER; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGIN IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[I] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R&] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROCEDURE DELETE(X : INTEGER; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDURE UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.E[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.E[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END END END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY : 4); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THEN BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN BEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . REALPRINT029  PROCEDURE REALPRINT (R : REAL); TYPE SIGNOF = (PLUS,MINUS); VAR I,J,CHARPOS : INTEGER; STR : STRING[15]; SIGN : SIGNOF; PROCEDURE DECDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,' CHARPOS=',CHARPOS);} R1 := TRUNC(R/PWROFTEN (J)); { WRITELN(' R1=',R1);} R := R-R1*PWROFTEN (J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; IF ((J = 6) OR (J = 3)) THEN BEGIN STR[CHARPOS] :=: ','; CHARPOS := CHARPOS+1; END; END;{DECDIGIT} PROCEDURE FRACTDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,'CHARPOS=',CHARPOS);} R1 := TRUNC(R*PWROFTEN(J)); { WRITELN(' R1=',R1);} R := R-R1/PWROFTEN(J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; END;{FRACTDIGIT} BEGIN {do decimal part first} IF R >= 0 THEN SIGN := PLUS ELSE BEGIN R := -R; SIGN := MINUS;END; R := R + 0.005; STR :=' '; I :=8; REPEAT I := I-1 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); CHARPOS := 2; IF SIGN = MINUS THEN STR[1] :='-'; FOR J := I DOWNTO 0 DO DECDIGIT; STR[CHARPOS] := '.'; CHARPOS := CHARPOS+1; FOR J := 1 TO 2 DO FRACTDIGIT; WRITE(STR); END; CBOOKMC'qs4CHATR CBOOK.PA 0 CHATR CBOOK.PX 0 DELETE/V CBOOK.PA XFER CBOOK CBOOK.PA/R CHATR CBOOK.PA *WP PASINTERP PASCALO/S/V CBOOK CHATR CBOOK.PX *WP CONSOLEPX sq  CONSOLE Copyright (C) 1980 Rational Data Systems  (  C٨C ? ߚ    ؚݞ#ߨC /֦ ERROR IN READLINE = ծ   !٨CJ IKCKCILLL?LKLLL ؚI#L0֦ ERROR IN WRITELINE = ծMML MLLLJ!H ۢ*"ٞ# ۢ ٞ#!:٨CI HJCJCHKKK?KJKKK ؚH#K+֦ ERROR IN OPEN = ծLLK LKKI!HبCH GICICGJJJJIJJG#J-֦ ERROR IN DELETE = ծKKJ KJJH!HبCH GICICGJJJJIJJG#J,֦ ERROR IN CRAND = ծKKJ KJJH!H ؚۢۢٞ# ۢ ٞ#!< ۢٞ# ۢ ٞ#!: قٮȡ á 4 بCEHٮGȡxHFFFFD޾?FD޾EE.FD޾ E   FGáuG آDŽڿ šܢDŽڿIٮġ+ܢDŽܢD޾áܢDŽڿ7 t š<ٮȡ*ۢDŽۢD޾á. P٨CHJڮIȡZJGGGGD޾ HHGD޾ á HHHGIáH[G zšVġڮȡ áڑȡáث3 hقٮȡ á֥H >֥H   ֥  ֥H á ֥֥"֧ROMN֥ MP:t֧QOMN*2/,# % "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~ N֦ INPUT FILE?ծHHEFDEFD֥R֧RFD֦ OUTPUT FILE?ծHHEFD֥QFDFD֧QFDHȡ á^֥ 2ƁƂƁզOUTPUTƁSƁƁSINPUTIƀIOUTPUTFIƀƁ ƀ˦INPUTFILƁSƁ֥ HáPƁƁSIƀ;:V&Rz r ^v  F 6ASMSVASMSVMANUAL211{?? MANUAL2.11 Update to RDS Pascal Programmer's Manual 14 October 1980 Note: There is no update to the Programmer's Manual for Release 2.11. However, be sure to read "MANUAL2.10" which includes important changes to the Release 2.00 manual. GETCOLUMNBUAsrFUNCTION GETCOLUMN(STR : ALPHANUMERIC) : INTEGER; VAR I,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; {BYPASS FIELD 1} WHILE ( (I< LEN) AND (STR[I]IN ['!'..'}']) ) DO I := I+1; WRITELN('WHILE1',I); WHILE ( (I< LEN) AND NOT (STR[I] IN ['!'..'}']) ) DO I := I+1; WRITELN('WHILE2',I); WHILE ( (I 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITELN(' STRING=',STR); END;{OF REALPRINT} BEGIN REPEAT BEGIN WRITELN(' ENTER A REAL NUMBER'); READ(R); REALPRINT(R); END; UNTIL EOF(INPUT); END. T346(*PROGRAM T34 TESTS BIT SET AND BIT CLEARING*) PROGRAM T34(INPUT,OUTPUT); VAR BIT,WORD,VALUE : INTEGER; CHR : CHAR; PROCEDURE TBIT(BIT:INTEGER;WORD:INTEGER;VAR VALUE:INTEGER);EXTERNAL; PROCEDURE BSET(BIT:INTEGER;VAR WORD:INTEGER);EXTERNAL; PROCEDURE CBIT(BIT:INTEGER;VAR WORD:INTEGER);EXTERNAL; BEGIN WRITELN(OUTPUT,'ENTER S ','C OR T F','OR SET C','LEAR OR ','TEST BITS'); READLN(INPUT,CHR); IF CHR = 'S' THEN REPEAT WRITELN(OUTPUT,' BIT NO AND WORD'); READLN(BIT,WORD); BSET(BIT,WORD); WRITELN(OUTPUT,' WORD=',WORD); UNTIL EOF(INPUT) ELSE IF CHR = 'C' THEN REPEAT WORD:=32767; WRITELN(OUTPUT,' BIT NO'); READLN(INPUT,BIT); CBIT(BIT,WORD); WRITELN(OUTPUT,WORD); UNTIL EOF(INPUT) ELSE IF CHR = 'T' THEN REPEAT WRITELN(OUTPUT,' BIT,WORD'); READLN(INPUT,BIT,WORD); TBIT(BIT,WORD,VALUE); WRITELN(OUTPUT,' BIT=',VALUE); UNTIL EOF(INPUT) ELSE WRITELN(OUTPUT,' ILLEGAL') END. REALPRINTPIi  PROCEDURE REALPRINT (VAR OUTFILE : TEXT;R : REAL); TYPE SIGNOF = (PLUS,MINUS); VAR I,J,CHARPOS : INTEGER; STR : STRING[15]; SIGN : SIGNOF; PROCEDURE DECDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,' CHARPOS=',CHARPOS);} R1 := TRUNC(R/PWROFTEN (J)); { WRITELN(' R1=',R1);} R := R-R1*PWROFTEN (J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; IF ((J = 6) OR (J = 3)) THEN BEGIN STR[CHARPOS] := ','; CHARPOS := CHARPOS+1; END; END;{DECDIGIT} PROCEDURE FRACTDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,'CHARPOS=',CHARPOS);} R1 := TRUNC(R*PWROFTEN(J)); { WRITELN(' R1=',R1);} R := R-R1/PWROFTEN(J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; END;{FRACTDIGIT} BEGIN {do decimal part first} IF R >= 0 THEN SIGN := PLUS ELSE BEGIN R := -R; SIGN := MINUS;END; R := R + 0.005; STR :=' '; I :=8; REPEAT I := I-1 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); CHARPOS := 15-I-3-I DIV 3; IF SIGN = MINUS THEN STR[CHARPOS-1] :='-'; FOR J := I DOWNTO 0 DO DECDIGIT; STR[CHARPOS] := '.'; CHARPOS := CHARPOS+1; FOR J := 1 TO 2 DO FRACTDIGIT; WRITE(OUTFILE,STR); END; DELETEPIr PROCEDURE DELETE(FILENAME : LINESTRING;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTDELETE =256; {.DELETE} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTDELETE; R0.LPTR := FILEPTR; R0.INT := R0.INT+2; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN DELETE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {DELETE} CRANDPISr PROCEDURE CRAND(FILENAME : LINESTRING;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTCRAND = 3584; {.CRAND} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTCRAND; { APPEND 0 TO END OF STRING} R0.LPTR := FILEPTR; R0.INT := R0.INT+2; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN CRAND = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {CRAND} PASCALOPX { l ? /!COMPILEROPSYSINICOMPINITSHOWERROCOMPFINIDECSEGMEBODSEGME Copyright (C) 1980 Rational Data Systems 4  H  ݢ ݢٚݢǀݢݣ ޢ ܞ#ݢݣ ݣ ݣ @!l֥֥&PX PASCAL[O][switches] sourcefile[.PA]֥֥switch meaning֥------ -------֥!/A analysis to @OUTPUT֥/A=afile analysis to afile֥!/C conform to standard֥/E=efile errors to efile֥/L listing to @LIST֥/L=lfile listing to lfile֥!/N no codefile created֥"/S swap compiler phases֥"/V verbosity to @OUTPUT֥> ۢۢۢNڞ#!2ئ abcdefghi@ ȡ4ݏ0ݤ ݏ0ݤ á.__?pidD.TMPH@0d 0 0 * ڪ@& ( ())*) )ٚ)ǀ)))))ǀ)) ** (#*<*''á)) ) ''š ) @ۦ@&!& VWƦAOSVP0-ihȡiCCCCChá  ? N,S0C6FFG1Gá"G¾G¾0FFAWEE֥u֥uihȡ)iDDDDDEDháL"S" "@LIST@֥"֥ihȡ(iDDDDDDháE_W"EE֥y֥yihȡ)iDDDDDEDháVP ֥վš0֥hվh.PA֥hվh@hh@h.PACh@֥w֥w,֥֥֥ kئ abcdefghi@ ȡ4܏0ܤ ܏0ܤ á$$$@.WKC@FA@BA@& ֥֥0PX PASCAL[O][switches] sourcefile[.PA] [options]֥֥switch meaning֥------ -------֥!/C conform to standard֥&/L listing to sourcefile.LS֥!/N no codefile created֥"/S swap compiler phases֥%/V verbosity to $TTO/$TTO1֥֥option meaning֥------ -------֥afile/A analysis to afile֥efile/E errors to efile֥lfile/L listing to lfile֥p  ۢ%"ڞ#!2 AZȡ,rA ۡܚá,H ت֥֥󮀂ʀ֥󮀂ʀ :ت֥֥ȡ0ʀ̀ʀ̀ʀʀʀʀá+ Z VWƦRDOSVP0-ȡؤá A H I P Q X Y ZֲFCOM.CMֲCOM.CMֲ~ ~¾˲~¾˄Fcš ֦(F)COM.CM file is too long.ֲ~ j5 z~¾ˡ)²~¾¶ȡy~¾  ȡ1rAáá~¾áɡ ? ղ@֥վš0֥վ.PA֥վ@ZT#pȡز =á.¾¾0"֦Invalid local switch.֥u֥uȡ"٤٤á֥y֥yȡ"٤٤áZrLA֦Duplicate listing files.ֲAL Xáj 1rLA@.LSCrNA,rSA0rCA6rVAP"ƀƁ ƀCLIFILE  ́!Ɓ!@Ɓ!.PACƁ!@֥w֥w,֥ ֥֥ƀB 0 ؾȡ3¾ ¾ á1 H$ #ȡ$ؤ#á<<<  2֥##Wrong operating system.# q$jvV ~PN j(AA4ؤAND 4ؤ'4ؤ 4ؤARRAY 4ؤ,4ؤ BA4ؤBEGIN 4ؤ4ؤ CA4ؤCASE 4ؤ4ؤ 4ؤCONST 4ؤ4ؤ DA4ؤDIV 4ؤ'4ؤ 4ؤDO 4ؤ4ؤ 4ؤDOWNTO 4ؤ4ؤ EA4ؤELSE 4ؤ 4ؤ 4ؤEND 4ؤ 4ؤ FA4ؤFILE 4ؤ.4ؤ 4ؤFOR 4ؤ4ؤ 4ؤFUNCTION4ؤ 4ؤ GA4ؤGOTO 4ؤ4ؤ HAIA4ؤIF 4ؤ4ؤ 4ؤIN 4ؤ)4ؤ JAKALA4ؤLABEL 4ؤ4ؤ MA4ؤMOD 4ؤ'4ؤ NA4ؤNOT 4ؤ&4ؤ OA4ؤOF 4ؤ 4ؤ 4ؤOR 4ؤ(4ؤ PA4ؤPACKED 4ؤ+4ؤ 4ؤPROCEDUR4ؤ4ؤ 4ؤPROGRAM 4ؤ!4ؤ QARA4ؤRECORD 4ؤ-4ؤ 4ؤREPEAT 4ؤ4ؤ SA6,4ؤSEGMENT 4ؤ04ؤ 4ؤSET 4ؤ*4ؤ 6,4ؤSTRING 4ؤ34ؤ TA4ؤTHEN 4ؤ 4ؤ 4ؤTO 4ؤ4ؤ 4ؤTYPE 4ؤ4ؤ UA4ؤUNTIL 4ؤ 4ؤ VA4ؤVAR 4ؤ4ؤ WA4ؤWHILE 4ؤ4ؤ 4ؤWITH 4ؤ4ؤ XAYAZAZAeeآآddآآccآآbbآآآ``آآaa>Cآآc_ _آآآآeآ آ آcآ ۦINTEGER ۢ eۢ ۦREAL ۢ dۢ ۦCHAR ۢ cۢ ۦBOOLEAN ۢ bۢ ۦTEXT ۢ aۢ ۢۦMAXINT ۢۢ eȡV ܢ báܦFALSE ܦTRUE ܢؚܢښܢábٚ ۦNIL ۢ `ۢۢۢm mئ آ آl lئ آ آآآk kئ آ آآآآj jئ آ آآآiiئ آ آآآ آآآآآآآhhئ آ آآآ آآآآآآآXƀ `6ƀƀ1READ READLN WRITE WRITELN EOF EOLN PRED SUCC  ORD  SQR  ABS  NEW  FILETITLPURGE CONCAT LENGTH DATE EOLCHAR SUBSTR INDEX MOVELEFTMOVERIGHEXIT IDSEARCHTREESEARTIME FILLCHARAPPEND REWRITE PAGE CLOSE  SEEK !RESET "GET #PUT $SCAN %SIZEOF &PACK 'UNPACK (ODD )CHR )ȡ}ʀٳ0ƀRڡ  ̀ʀʀʀ ڡ ʀʀʀʀٚʀáxPWROFTEN?$MEMAVAIL?ROUND ?TRUNC ?SIN ?COS ?LOG ?ARCTAN ? LN ?  EXP ?  SQRT ?  MARK ?   RELEASE ? !SYSCALL ?#6 džpMMONȡOܹ OO eOde~ OO dOeadZ OO `O< OO `O$nfM T:M[ݡ  OOOO?ݡOO؟ˡآO ښOؚNápO8[Ys5432fUTS1QONWGrqFE.DA?>=+*¾ë90;0;d 0; 0; ȡ.ܤޢޢ ápǂCopyright (C)  Rational Data Systems(Py^4|t t  ɡ ddڏ ۂق܏B خ'Rational Data Systems Pascal Compiler [خrelease ٥. . ɡخ0خ خ , overlaidخ] خline seg procخ==== === ====gخA :٣  ٣  ڥt| ت ֶ ,ֶ  /  6خ"ۥ"ۦ compiled on ۲ ۧX ۲  ۧ; ۦ at R šخR :خR :I šخI :خ0ۧI :@ š خ@ خ0ۧ@ -6,0šخ վۦusing the optionšخs- ֦Byteswap6֦ Conformance, ֦Nocode0 ֦Swappingخ.  ;HX qSundayxMondayiTuesdayY WednesdayGThursday6Friday'Saturdayyl_QA2%H January February March April May June Julyr Augustc SeptemberQ OctoberA November0 December ~sh[K=.1֥ ֥ ֥ line seg proc off nst ֥u ֥u ֥֥֥ ֥  ֥y ֥y  &] K;HX%RI@ ,֥Z n BC ggPROGRAM   x declarations !áwátá>á"Ś˫á)áaF6;3srEXTERNALt֥ ֥u  o og ns  X^tLn\ xخError Message Summaryخ===== ======= =======Xخ ٲ@$@ ERMSGFIL PASCAL.ERP֥֥u֥y֥a`ȡtaإ Z P֥֥u֥y֥`áva <خSegment Numberڦ Segment Nameڦ Size (Bytes)ȡ>٤ˡ"خ ۢ á;ت@&@$%$á%$¾&$$%%$ɡ6$$6@٦@OT~٪@$$@$ A$B6$ت@٪@F EEHHǀHGH<á HHHE#HGHǀH$<á HHHE#F!F#֥֥A ۦ lines#֥u֥uA ۦ linesP#֥֥A ۦ lines֥uP֥ Mȡ ڤ áȡ8ڤȡܢ¾ ááȡ áʾȡ֥¾ áʾ.ȡ á!ȡ á֧; ֧H ֧X ֧R ֧I ֧@ ֧<  ֧F ȡ á观+  *  ֧Z ɡ 槂,g֥ ZY!  ֥<֥3+* եվU եվX֥ե֥{0Wwp2 Ȅ Gǀ  0ȡ ǀ  (ǀ &á+ ȡڢ¾ áBǀ 3áxáÄەݚš) ۮڮȡ áá cس0$@ L'Ȅق 4JȄق #Ȅق  @MÍǀ Jسášá ǀ n^ǀ Ȅ =á&ݧWWcáWWX '9á ݢښ  bˡ! ٢٢`m ۢˡ Xۢ뚧76`mɡ/ġ 9!٫¾¾<j ˡd˄ `ádá33Z3á' 6n-#&: <> ;% V˄ $ ˡ[Eá+ 8n;ˡ.';!=? M3!lˡnV&-M.á% 2n$ˡ"Ǿ6  ^K  |      á ' 6n   á   !ná '6   8  Í Ä  áP   A ˡǖ    ?ˡń 弄 ;֥ 弄 á ݟˡˡ NJ ˡ ˡqݟˡL< D   ˡ  šNj   ˡL3á DB  @$ń ˡáZáˡˡ nj áˡ  á ǘ   $ , $ 8  Í Ä  áP   ˡń  ˡÍ~á    OaáV  O >>  á#ˡń Ǎ E ޭ/162 #:á $k0š ˡɡ % áVߣ á ߣ ˡ+ öÄ.á  ȡ ááٟá~ֲ"ٟ˄ڟˡ٣áȡqcÄÄǀ&  _  á 6çDeڧd d CÄ,'Pˡ ݕˡǎګ Há=ڣɡǿágá ˡǚٟˡˡá(ٟˡߣ á ߣ *ߣ á Nߣ ߣ á Sߣ  Mߣ ߣ  Rrt 42ܣ áܣ ޳``V޳`á޳@t ޳" ޹#$)*1ˡ ġe ˡ%eádá e ˡ%eádá e  >e +á Oe   ȡD  ˡ eˡáǤ á ˡ eˡá% ,-ˡ eˡCb Dˡ eˡDc Z)RCExutq]ZW*,)02*6Hߡá2vYeá d eá اd*3ddÍ34弄: 弄^ܣá 'ܣá  ˡá ꧂e ꧂d ác   _   á*7bˍ ˡbˡ LJ    á ˡˡ Lj  Ȅ  #áH   lj ޡȄ   ޡ   ߡ  ˫쓡á ߡ1"ppp  ppp U&N "$&(*,.02468:<>@BDHud@!(Z77'á   7 ܟ˄ 4ܧeeÄ/ܧddÄ   3ܧddÄ  pܧeeÄ  RܧeeÄ  4ܧbbÄ    .lP  $B6(`á   6eá á %dá á  ˡ  (á   6 ܟ˄ 4ܧeeÄ/ܧddÄ  y4ܧeeÄ/ܧddÄ  0ܧbbÄ    u.  5ˡ ەˡٚ,8JɡJ5)ácÍÄˡȡ   5cÍÄ ˡȡ ܟ˄ á+á   ǂ ˡ4 8  P֥ 8   ܧdá  ǃ DŽ  vUcÄ Aܧc1R         ˡ   4  Dž 0 <5 F4 <1 20 (7 /  D<*6$b   nֲ@á ֲ30:ֲ9弄˫쓡 á^:< D=  š á[ á   Ǜ؟ˡd ǏֲAáaֲˡGˡ9+ ؟ˡçD. ǑǻֲǀoáHDֲ@ˡGˡ9+ ؟ˡçD.  7ֲ@á6! 6 9   áP ==ֲ9==  6 C!  @BJɡJ"ád ݤˡ ݤޟˡ* á ǥ   á0H弄 á&|ܣá :I߹(=;?6B1;,>'@"AC0/0/ !&I# @97D W؟á!t??----??x??----?? txbody أáá ˡ ˡákšY2 62 *ˡ Qޕ( á A> ܟˡܢ  nçş˄  ˡ V2 2 >aánˡXşáKŢ;INPUT Я OUTPUT Я OV2 ǀ& ¾ á ȡ¾ áO VO ˡV2 O ˡV2 Oֲ9弄˫쓡 á   ˡ! V2 O á-- ܟˡ$`mˡǨާW š륄Xߤ ؟á ֧ ֧  ?š7ٕ ֧s ֧n 88Z땧?ɡA?낫? !as?.tv#"*20 5Q=֥  á֧o蓼o ܓ-o áo 蓼o 弄ܓo á`<B˧3nÄ. =ݧoÍ $#~"! ̅ L  4`؄  6p 4^ *!$!l!DـڀɄńڂ0á ڀـܡ ڏ.弄弄á ˡ á=   ߚ     !"F"ˡߢ ߢ á,á  án  ǔ#á ߢ ˡ ߟˡvߢ  ޚ #áǺ ߢ ˡkߟˡ7á-ˡ&dá$š fߚGܟ$q1 nٟ˶k٧e٧d˄8 ġ+á@š4 ɡڸsu2N @š  ڢ ڢڢڢ/ ł ڢڢ ˡ   ٶ˄/ڣ %ڣ áڢڣ ڣ Ȅ ڢڢ٢٢٢á   ٢ ٢٢٢. . á! ֶ á8áX  ˡ;ȡ/d  ءֶ n%ֲ&ֲ ł áW   ֲ ˡ o  ٢٢ ٢٢   ˫쓡á9áXá ֲ(  š  öń ˡ%      ł  á%Nֲ-˫쓡  썡 jj   ááA    ߚ  A ˫쓡á. ˡ álˡ  á) Ǚ ޟˡ ߚ á ܟ+084p   آآál. . á+  إآ  آfآ f# ˡ ˡ    弄 弄弄á +á&弄Y,áá    ߚ   ޟˡ7ȡ(ާdá mާeá Ǖ ޚ ˫쓡á[ áT  ˡ á "ȡ   ˡ ;&˂ KF@-  GHI ?š J ȡ '  ߟá-á ɡ   ł   ߚ   á_*á áU ߟˡ%š ߧdߧeÍr  ߚߟˡ4 ɡTɡ ǩ.áW   á V ߚߟˡá6 >3á|ˡǴlߧeá8ō   _ ǀá\ Jܟá139;=?P$a/ "áY ؟ٓˡ Ǧٓ!ۢۢۢڢؚ Bֲ ˫쓡ác ˡֲá ۥۢ ۢۢ) Äֲآ ٚآá%?ֲb ˡ"ֲá ݥݢ ݢ) ÄǗֲڢ ۚfٟˡ+گ٧fˡآfá%Kֲvfˡ fx á/ ݢݥݢٚݢ ݢn#Lֲ˫쓡á1ֲٟˡ=ݢ ۚݢá ۟ˡáݢ  ؚá%Mֲ|弄fˡ f15 @ ֲáw@Oֲ!@á  áK   á ߚn  Pֲ.˫쓡 áNá@  ˡ á áy ȡ  / ޟˡ"    ˡ  (Q(á)@Rֲ!á+C+ݢꚟ ˡ< ޚáˡš   ޚܟN  r   ns.`֥A :ڣ  ڣ  ڣ ȡ֥. á֥`֥uA :ڣ  ڣ  ڣ ȡ֥u. á֥u) 0áR3N !qrr8 ?Y ꫂQ5á֥ ˡFáÄ Äá Ä ÄǠá  nr횧3 Ä Ät#qšqqrǕárrá}ˡDˡ2    š ˡ& ˡU  r" is sn nɡ nn ɡ7 á áá|z ˡ x ˡˡ ֲ {ádåFORWARD ЯBǡápDֲåASSEMBLEЯ61áS ֲ+ MˡVȡ¾ áˡ   ֧n 88Z땧?ɡB?낫?as?!åEXTERNALЯ6áǯֲ* Mˡ<ȡ¾ á ֧n 88Z땧?ɡ?낫?as? !P tx declarations   o o o VV2\áZL á! ߟá   á ߢߚGtޟˡޢ  4 ޟˡ  6ˡٚښٟá, ޢޢ aޢnޢ֧aޢ  ݚRINPUT INPUT ֦INPUT OUTPUT OUTPUT ֦OUTPUT ֥؟ˡ آ0֥+202á3nÄL á á á3nÄMnç3 ˡ弄܄Q z@z V D x L<nV2f020 . oá 0Nǀۡ (áٟڟÍˡ'á á ٧`ڧ`ÍxlA/Í  ÄÄ}pf 弄2弄%á?ác( ާ_ ޢޢ ǂ  ݥ (`á  ád   ˡAާeá á-ާdá" á   iT"á áeݥ5$á" á dݥj>ޚ  v ڟá ؚ8؞áeá ؞á٢ؚ٢ ؚآ آ<dMš 7ؿ(  Mš 79-áڿٿ ٿڿX á "اcáˡ > 4 15C9#֥9/41Bw/֥šۢ|¾Wádۢ|¾/¾پۢ|¾ɡۢ|¾ɡg ؂?š ؂"AAP ž 5ꫂQ뫂Q4  ''¾0ɥ¾9ō ¾.áS¾.ˡG¾¾ ¾ \¾-á  ¾+á¾ ɡáb߮ ȡJ å¾0 ń ō  ¾0á" ܫ߮ ȡ% ¾0á ޮġ+¾0ޕ$á ݮ ȡ ¾0 á á $  $$ f8Fj$0ȥ¾ å¾ Íȡ /¾#$  쥀¾*á 쥀¾.á #쥀¾=á ' ( ( ' ) ¾   =>) )¾=á  '{{w "$&(*,.02ZT2=?ACEGIKMOQSUWY[]_acegikmolrt}/á)[  ,ۡ ۡǀ2ٟˡá cÄ"JɡJ4P֥A  ڧs ڧQ 5 ֥ ֥= lš5֥֥l֥֥ml ֥ á֥֥4֥ERROR% ž ٥ɡE֥ٕȡ"ٕáq֥yError at line ڧA ڦ in ڥxڦ of ڥt:֥y ڥ֥y%q֥uError at line ڧA ڦ in ڥxڦ of ڥt:֥u ڥ֥u%q֥Error at line ڧA ڦ in ڥxڦ of ڥt:֥ ڥ֥% ġI ۤڟˡ,áڣk.á.Jhm9k,jlihښ۫ ؟áٟ ٥ˡٟ  ? ؾš ¾ؾń/ ƀؾƀ ؾ¾áؾ šeƀƀ֦ ƀƀƀؾٕƀn Yš¥9YٞقYقYY؍, ,֥YZZ9 ٕán|ƆƇ9ƆWORKCODEƈ9ƈwƈ9INCLFILEƉwƉƉwWORKSYMƄƅ1ƄOVTPVTƅuƅƅuANALFILEƅƆ5ƅLPƆyƆƆyERRFILE:֥OUTPUT֥֥ 3 ˡO ˡAA :֥Ɔƈ9ƉwƄƅuƅƆyG6 <~102 R/,+-*). :`3H H ` ('&6%FN'9-á ٕؕقɡMٮȡۂáخȡ#ۂɡۂá0ٮȡ#ەɡۂá$Xv  ˡ ō  á c ˡȡ ܟ˄eád d \ cá LˡC  c˄%P ˡǁ6˄@ܫ ܫ  oDg ZS "cá)*ܣQ (%(ǒLxP_M!  cÄFá:á5cá+pܢܢ󿧂p _ ˡ_ zֲ"ˡ)áˡááֲ"ٟáǞfˡǢXˡRاdÍǟ=-؟ˡá  A 3Pá`!á g؟ˡأ áأ أ f8V2ֲ"ɡO˫쓡2ɡ šث _ ٚ ֲ2áǶֲ ˡ eˡáǷֲ  ˡ eˡO2٣ɡ ٣šث٫ áˡe ,ֲ ˡ ˡ 1+$  "/Olֲ"ˡ ˡCá#ֲ  eˡO OO #Kֲ"ˡ ˡˡǪֲ ON.ءINPUT OUTPUT  .ݟáء3caˡء4Hޣá ޣ á %ޣ 2nޣ ޣ ޣ á 'ޣ 6nޣ ޣ 3ֲ ˡˡ aˡOJˡgeO VdOEcO4'Oˡdz áDzt!á1V6ֲ"!8@"Vֲ" áaááعá: .ֲ"Q!"ǮRá .R!"R! .á[>> ֲ R(ǰ6OǸ X# Vֲ"áaáOá O>.Oá/V6ֲ"S!&ڡtV.O6R!"١V6O VO $á+ֲ&ˡ eˡǹ ٧dáGءá,ֲ" ˡ eˡO٧eáءO ٧cáءOn٧báءO!YءOD7ˡ ءֶֶO (&á#V6ֲ&%&*2'dá  R8R6R4(Vֲ& áaááعá, .ֲ&%&' % .(&' .áR>>  ˡń ֲ 6O2} ,) Vֲ&aá5á O!.áֲ&%&%.(&'١V6O VO *=ֲ ˡ%ˡ}@a˄($O b ;O b /Oc #+! -+ֲ ˡ ˡ!  OZ,ֲ" 8á=ֲ"   ˡv ˡ9f <Xڶ 8ֶ  ٕD ˡـš8.ֲ" 8ˡBˡ2;#˸ֶ ٕ8v/ء-6BDֶ$ @BP0       &á.á>//á?.ߟ ˄ ˡ:8 66I!١666P.ٓ0١6660١#ء;?ء:>9 "-ˡbˡsVdá5GçD%á áp1 ˶á&:<"ˡ ڤˡ<١9]ٓ<ٓǧ7á ڤ ڤإ ڤ֧nەb ;ֲ á4==ֲ 9== á2 9 ==ֲ9==  >ֲ  9ٟˡ٧dÍ ǐ á ֲٟˡcUܟˡ# ȡ áǜ   ܚ ޚ ۟áښǓ˫쓡á==ֲ9弄==ڟˡ9 ˫쓡 썡 ݟˡv ݚܟá , 9  š   ɡ  ݟá á]ONvwT ? ==ֲ9弄˫쓡== áֲ 5QS l@ ֲ@ áǼ==ֲ9==9 \Aá 'kֲBˡyám ɡ` á ۢۢۢ-8 ۢۢš˫쓡áǽ==ֲ9==ڕٕ CJJK]\\ɡ\\š\ \MMMM M M MMM M M rM cM TMEM6M' uh[NA4L\^7 bDoˡ 8 rأnso !o o3 o áob4 ɡ ؚ ؗ ,/: V؟ˡ,٣`٣ á٣ á ٣u : rġ6aؤš֧?낥aؤ ֥aؤ á ֧r ?ɡE ?낚?8k ¾ ˡť¾Fš¾)å¾*ľ}Í¾*ÂC@q |ئ ؾ¥¾ť¾ ;};)å¾*Äk x@ ٥¾|Ú6! H¾-á,٥¾0٥¾0j"¾=áF"!"ۡڍڄٓ  ܡ+-¾R l 6ƀƀ@ (ƀ򥀗¾ƀ ֥[ ƀ ֥P ƀ ֥E P֥ƀ ֥D !~1*1֥9֥9C4/ gCr` m"$&(*,.02468:<>@1DFHJLPR(VX^ڹ ̀̀ʀʀ̀š )ʀ¥¾¾'á̀¾'ˡʀ̀% ʀʀá ¾-p̀ʀʀʀʀʀp #پɡ ڮەġ¾ ˡáP X&^  0ۂÍ#) 6'٪@ɡ̀ʀ'ȡʀ&&&&ʀk& ɡ̀&dɡ̀̀'ڥ&ʀ&('ڥ&&'ʀ&̀&ʀá'DŽšWخʀ'ƀDŽƀʀخ'ƀDž'DŽƀʀخʀ'ʀ'&J%ړ@^˄ٹ܂ۂxp+^h$  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfv T13 .PROGRAM T13; VAR I:INTEGER; CHR : CHAR; FUNCTION GCHA:CHAR;EXTERNAL; PROCEDURE PCHA(CCHR:CHAR);EXTERNAL; BEGIN I :=1; FOR I := 1 TO 1000 DO BEGIN CHR := GCHA; PCHA(CHR) END END. P4ERRORSX II .00H@POSTFIXPA 1PROGRAM POSTFIX(INPUT,OUTPUT); VAR CH : CHAR; PROCEDURE FIND; BEGIN REPEAT READ(INPUT,CH) UNTIL (CH<>' ') AND NOT EOLN(INPUT) END; PROCEDURE EXPRESSION; VAR OP : CHAR; PROCEDURE TERM; VAR MULDIVOP : CHAR; PROCEDURE FACTOR; BEGIN IF CH ='(' THEN BEGIN FIND; EXPRESSION (*CH = ) *) END ELSE WRITE(OUTPUT,CH); FIND END; (* FACTOR *) BEGIN FACTOR; WHILE (CH = '*') OR (CH = '/') DO BEGIN MULDIVOP := CH;FIND; TERM; WRITE(OUTPUT,MULDIVOP) END END; (*TERM*) BEGIN TERM; WHILE (CH = '+') OR (CH = '-') DO BEGIN OP := CH; FIND; TERM; WRITE(OUTPUT,OP) END END; (*EXPRESSION*) (* POSTFIX BEGINS *) BEGIN REPEAT FIND; REPEAT WRITE(OUTPUT,' '); EXPRESSION; WRITELN(OUTPUT) UNTIL CH = '.' UNTIL EOF(INPUT) END. TEST4  5PROGRAM TEST(INPUT,OUTPUT); VAR SOURCE : TEXT; DATANAME,DATA : STRING[99]; BEGIN WRITE(' INPUT FILE NAME? '); READLN(DATANAME); FILETITLE(SOURCE,DATANAME); RESET(SOURCE); WHILE NOT EOF(SOURCE) DO BEGIN READLN(SOURCE,DATA); WRITELN(DATA); END; END. jREADLINEPI:PROCEDURE READLINE(VAR INPUTFILE : TEXT;VAR LINE : LINESTRING); VAR BUFFER : STRING[132]; I : INTEGER; BEGIN WITH LINE DO BEGIN READLN(INPUTFILE,BUFFER); FOR I := 1 TO LENGTH(BUFFER) DO STR[I] := BUFFER[I]; LEN := LENGTH(BUFFER)+1; STR[LEN] := EOLCHAR; END; {DO} END; WRSBUq PROCEDURE WRITESEQUENTIAL( CHANNEL : INTEGER; BUFFER : BIGSTR; VAR BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7487; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); STRINGPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESOUT; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITESEQUENTIAL = ',R2.INT); ERR := ERROR; BYTESOUT := R1.INT; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE SEQUENTIAL} CONSOLEBU 0rr/PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LENGTH} STR : PACKED ARRAY[1..132] OF CHAR {DATA} END; LINEPOINTER = ^LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR : LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR CHARVALUE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; NBYTES : INTEGER; DONE : BOOLEAN; DISKIN,DISKOUT : INTEGER; {$I RDL.PI} {$I WRL.PI} {$I GCHN.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: LINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := STR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE1(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN := LEN -1; END {DO} END; {DELETE1} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CRETURNLINEFEED; BEGIN PCHAR(13);PCHAR(10); INSERT(LINE,INTERNALPOS,CHARACTER); LINE.LEN := INTERNALPOS; WRITESTRING(LINE); PCHAR(10); END; {OUTPUT CARRIAGE RETURN LINE FEED} PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE1(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE1(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : ; {UP} 11 : ; {CARRIAGE RET} 13 : CRETURNLINEFEED; {DELETE} 127 : DELETECHARACTER; END; {CASE} END; {ACTION} PROCEDURE GETLINE; BEGIN READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); LINE.LEN := LINE.LEN-1; {IGNORE C RETN} WRITESTRING(LINE); INTERNALPOS := LINE.LEN+1; DISPLAYPOS := CALCDISPLAYPOS(LINE,LINE.LEN); CURLINE := 1; DONE := SYSERROR; END; {GETLINE} PROCEDURE PUTLINE; BEGIN WRITELINE(DISKOUT,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; {PUTLINE} PROCEDURE OPENFILES; VAR L : LINESTRING; NBYTES,ERRORNUMBER : INTEGER; SYSERROR : BOOLEAN; I : INTEGER; BEGIN WRITELN('INPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,L,SYSERROR,ERRORNUMBER); WRITELN('OUTPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(L,SYSERROR,ERRORNUMBER); CRAND(L,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,L,SYSERROR,ERRORNUMBER); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW CURSOR} BEGIN {MAIN PROGRAM} OPENFILES; REPEAT BEGIN GETLINE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 13 ;{} PUTLINE; END UNTIL DONE END. README ) $File: READ.ME (RDOS/DOS Version) HOW TO INSTALL RATIONAL DATA SYSTEMS PASCAL ON RDOS/DOS The release consists of a PROGRAMMER'S MANUAL and either (a) a single reel of magnetic tape, or (b) one or more diskettes. The release files are divided into three groups: Group 0: PASINTERP.SV Pascal Interpreter PASINTERP.ER Runtime Error Message File PASCAL.PX Standard Pascal Compiler PASCALO.PX Overlayed Pascal Compiler PASCAL.ER Compiler Error Message File PINFO.PX Program Information Utility INTERPOK.PA Test Program: Source INTERPOK.PX Test Program: Executable TEST.MC CLI Macro to test things out MANUALn.nn Manual Update for Current Version RELEASEn.nn Release Notice for Current Version READ.ME (This file) Group 1: MANUAL Magnetic Copy of PROGRAMMER'S MANUAL Group 2: PASCALGEN.PX Custom Interpreter Generation Utility P****.RB Relocatable Binaries for PASCALGEN PLINK.PX Pascal Linker Utility Installation From Magnetic Tape: ------------------------------- The system is delivered on 800 bpi 9-track magnetic tape. The tape contains three files in standard RDOS-Dump format. The first file (#0) is a dump of the Group 0 files, and so on. Load the files using a sequence similar to the following: CDIR PASCAL DIR PASCAL INIT MT0 /Or whichever drive you are using LOAD/V MT0:(0,1,2) /Load the desired files PRINT RELEASEn.nn /Be sure to read the Release Notice! TEST /Try to execute and compile Installation from Diskette: -------------------------- The system is delivered on two RDOS/DOS diskettes. The first diskette contains all the files from Groups #0 and #1 (above). The second diskette contains the files from Group #2 -- the PROGRAMMER'S MANUAL. Execute the following or equivalent: CDIR PASCAL INIT PASCAL DIR DP1 /Or your own diskette drive MOVE/V PASCAL DIR PASCAL PRINT RELEASEn.nn /Be sure to read the Release Notice! TEST /Try to execute and compile The TEST.MC Macro: ----------------- The TEST.MC macro will attempt to execute a very small program and will then compile and re-execute the program. It is self-prompting as to the state of the software. File: READ.ME (RDOS/DOS Version, Page 2) Evaluation Release Restrictions: ------------------------------- 1) The interpreter shipped is customized for a particular hardware configuration. Neither the PASCALGEN utility nor the .RB files needed to generate an interpreter are supplied. Similarly, releases on diskette include only one diskette -- only Group #0 files are supplied. 2) The interpreter will not operate beyond 60 days of the time the system was configured by Rational Data Systems. This date is obviously dependent upon your system date. Since system dates are so easy to change, we have implemented further restrictions. 3) A maximum of 10 files may be opened by any program at one time. This number includes the executable file, '.PX'. 4) All files opened by any Pascal program other than the compilers will be deleted by the interpreter. This includes the program file, '.PX'! 5) You may not use the APPEND procedure in the evaluation version. 6) Since PASCALGEN is not available, neither are the facilities of assembler interface. Note that the above checks are all performed at runtime, not by the compiler. We suggest that you run your programs via a CLI macro which first copies the program and input files, then executes the copy of the program file, using the copies of the input files. The only way to preserve output (which would be deleted if sent to disk) is to send it to a hard copy device or to mag tape. The Overlayed Compiler: ---------------------- On an unmapped system the interpreter and Pascal program must share your limited address space with the operating system. This restriction will manifest itself immediately if you attempt to compile a program with the standard compiler ("PASCAL"). We have designed an overlaid compiler especially for the unmapped user called "PASCALO". You will have to use this version of the compiler on almost all unmapped configurations. For details, see the section entitled "Overlaid Compiler" in the new manual. In addition, study the use of the "/S" (swapping mode) switch when running the compiler. On many systems, you will have to use both the overlaid compiler and the swapping mode. On all systems there are finite limitations regarding the size and complexity of programs which can be compiled. On a mapped system (AOS or RDOS) we can compile our compiler by using either the overlaid compiler or the "/S" switch. On an unmapped RDOS system, we cannot compile the compiler even using "PASCALO" with the "/S" switch. NOTE: ---- For standard releases (not Evaluation Releases) the default interpreter, 'PASINTERP.SV', has been generated for a minimal RDOS/DOS system, a Nova 1200 with no options. Until you generate your own interpreter you will be running with this interpreter which may be significantly slower than what you should be using. Build a customized interpreter using the PASCALGEN utility as soon as possible. MANUAL201 "File: MANUAL2.01 ================== Update 2.01 to RDS Pascal does not contain any formal updates to the Programmer's Manual. However, since the compiler error message file has been changed for this release, please make the following changes and additions to Appendix C ('Compiler Error Messages'): 31. first argument of "READLN" must be variable 174. comma expected in argument list to "READ" of "TEXT" file 176. type conflict of file and destination variable in "READ" 184. comma expected after typed file name in "READ" argument list 206. "INPUT" not declared in this scope 208. "INPUT" not declared as "TEXT" in this scope 217. "RESET"/"REWRITE"/"APPEND" require file as argument 224. second argument of "SEEK" intrinsic must be integer 235. "WRITE"/".LN" require int/bool/real/char/string/packd.ary.char 244. operand of unary plus or minus must be real or integer 267. comma expected in argument list of "WRITE" to "TEXT" file 305. type conflict of file and source expression in "WRITE" 306. comma expected in argument list of "WRITE" to typed file 307. "OUTPUT" not declared in this scope 308. "OUTPUT" not declared as "TEXT" in this scope 309. real number may not be argument of "PRED" or "SUCC" INTERPOKPA["l program interpok; var output : text; begin rewrite(output); writeln('Interpreter OK') end. T23$2PROGRAM T23; TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOTA,IOFILE : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN (NUMBER : INTEGER ; IFILE : ALPHA ; IOTA : INTEGER);EXTERNAL; BEGIN IOTA :=100; IOFILE := 8; FILENAME := 'INPUTFILE0.SR'; OPEN (IOFILE , FILENAME,IOTA) END. GLOBA& GETINTEGERPIVr)FUNCTION GETINTEGER( STR : ALPHANUMERIC;VAR I : INTEGER) : INTEGER; LABEL 1,2,3; TYPE SIGNOF = (PLUS,MINUS); VAR LEN,FNUMB : INTEGER; SIGN :SIGNOF; BEGIN FNUMB := 0; SIGN := PLUS; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN IF NOT (STR[I] IN ['0'..'9','-']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END; 2 : IF STR[I] IN ['0'..'9'] THEN BEGIN { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB);} FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); I := I+1; IF I<= LEN THEN GOTO 2; END; 3: CASE SIGN OF PLUS : GETINTEGER := FNUMB; MINUS : GETINTEGER := -FNUMB END;{CASE} END;{getinteger} RDSBU -q !PROCEDURE READSEQUENTIAL( CHANNEL : INTEGER; VAR BUFFER : BIGSTR; VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); CONST DOTRDS = 6719; {.RDS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTRDS; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESREAD; R2.INT := CHANNEL; SYSCALL(REQUEST); {$R-} STRINGPOINTER^[0] := R1.CH; {$R^} IF ERROR THEN WRITELN(' ERROR IN READSEQUENTIAL = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; BUFFER := STRINGPOINTER^; BYTESREAD := R1.INT; END; RELEASE(HEAP); WRITELN(' BYTESREAD = ',BYTESREAD); END; {READ SEQUENTIAL} CBOOKCMs4CHATR CBOOK.PA 0 CHATR CBOOK.PX 0 DELETE/V CBOOK.PA XFER CBOOK CBOOK.PA/R CHATR CBOOK.PA *WP PASINTERP PASCALO/S/V/L CBOOK CHATR CBOOK.PX *WP CTLA|+% ;PASCAL EXTERNAL PROCEUDRE TO SET ;CONTROL-A/C INTERRUPT INTERCEPT ;PETE GOODEVE 78:7:30 .TITLE CTLA ;PJG 78:7:30 .ENT ?CTLA .EXTN XPRET SP=41 ;STACK POINTER MP=42 ;MARK STACK POINTER HP=44 ;HEAP POINTER PP=45 ;PARAMETER FRAME POINTER PC=20 ;P-CODE PROGRAM COUNTER P4IX=40 ;RETURN LINK TO INTERPRETER .NREL ;PROCEDURE CTLA; EXTERNAL; ?CTLA: INTDS ;NEEDED FOR SAFETY IF RESET STA 0,STKM ;= CALLER'S SP+1 DSZ STKM ;REMOVE THE +1 LDA 0,MP STA 0,MRKM ;MARK POINTER LDA 0,HP STA 0,HEAPM LDA 0,PP STA 0,PARM LDA 0,PC STA 0,PCM LDA 0,CTLXA ;DIVERSION ADDRESS STA 0,@A411 STA 0,@A412 INTEN XPRET STKM: .-. MRKM: .-. HEAPM: .-. PARM: .-. PCM: .-. A411: 411 A412: 412 CTLXA: .+1 LDA 0,STKM STA 0,PC LDA 0,MRKM STA 0,MP LDA 0,HEAPM STA 0,HP LDA 0,PARM STA 0,PP LDA 0,PCM STA 0,PC JMP @P4IX ;RETURN TO PASCAL INTERPRETER .END ;OF CONTROL CHAR DIVERSION T33/"(* READ SEQUENTIAL WRITE SEQUENTIAL TESTER*) PROGRAM T33 (INPUT,OUTPUT); TYPE ALPHA = ARRAY[1..20] OF INTEGER; VAR OCHANNEL,ICHANNEL,NBYTES,NBYTESREAD,NBYTESWRO,ERROR,BYTE : INTEGER; BUFFER : ALPHA; PROCEDURE RDSQ(CHANNEL:INTEGER ; BUFFER : ALPHA;NBYTES:INTEGER; VAR NBYTESREAD:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE WRSQ(CHANNEL:INTEGER;BUFFER:ALPHA;NBYTES:INTEGER; VAR NBYTESWROTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; BEGIN ICHANNEL:=1; OCHANNEL:=2; NBYTES:=1; REPEAT RDSQ(ICHANNEL,BUFFER,NBYTES,NBYTESREAD,ERROR); WRSQ(OCHANNEL,BUFFER,NBYTES,NBYTESWRO,ERROR); BYTE:=BUFFER[1] DIV 256; WRITELN(' ',BYTE); UNTIL ERROR = 6; END. NODES2 PROGRAM NODES (INPUT,OUTPUT); TYPE NODES = RECORD X, Y : REAL; LINKPOS : INTEGER END; LINKS = RECORD FROMNODE, TONODE, ATTRIBUTES :INTEGER END; VAR NODE : ARRAY [1..20] OF NODES; LINK : ARRAY [1..50] OF LINKS; NEWNODE : NODES; DELETEDNODE : NODES; BEyGIN NEWNODE.X := 2; DELETEDNODE.X :=4; IF NEWNODE = DELETEDNODE THEN WRITELN(OUTPUT,' NEW=DELETED') ELSE WRITELN(OUTPUT,' NEW<>DELETED'); NEWNODE := DELETEDNODE; WRITELN(OUTPUT,' ',NEWNODE.X,NEWNODE.Y) END. CROSSREFPA4r  PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : ALFA; F : TEXT; A : ARRAY [1..C1] OF CHAR; PROCEDURE PACK ( I : INTEGER); VAR J : INTEGER; BEGIN FOR J := 1 TO C1 DO ID[J] := A[J-1+I] END; (* PACK *) PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A'..'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; PACK(1);SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. T11PX:T11 Copyright (C) 1980 Rational Data Systems#ƀƀƀOUTPUTBINPUTƀ֥́ʁ š芉֥́ʁʁƀCFGhHAI(JK#  A A#  KA AABmCDD*EFFGhHAI(JK#  A A#  K@ AABmCDD*EFFGhHAI(JK#  A A#  K? AABmCDD*EFFGhHAI(JK#  A A# 3 K= AABmCDD*EFFGhHAI(JK# < A A# Q K= AABmCDD*EFFGhHAI(JK# Z A A# o K; A1980DEPS; D 8347.06 D 140 D 1468.38 D 871.98 D 13056.00 D 5324 D 12436.99 D 435.99 D 435.99 D 906.32 D 3000 D 435.99 D 1628 D 11481.06 D 1834.55 D 435.99 D 802.29 D 905 D 594 D 435.99 D 520 D 13331.89 D 1527.87 D 129.24 D 4546.81 D 11943.74 D 715 D 3229.35 D 531.21 D 3435.99 D 4888.40 D 1403.43 D 296.31 D 174 D 2600 D 3148 TOTALMC +CHATR TOTAL.PA 0 CHATR TOTAL.PX 0 DELETE/V TOTAL.PA XFER TOTAL TOTAL.PA/R PASINTERP PASCALO/S/L/V TOTAL CHATR TOTAL.PA *WP CHATR TOTAL.PX *WP CONSOLE  q PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LENGTH} STR : PACKED ARRAY[1..132] OF CHAR {DATA} END; LINEPOINTER = ^LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR : LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR CHARVALUE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; NBYTES : INTEGER; DONE : BOOLEAN; DISKIN,DISKOUT : INTEGER; {$I RDL.PI} {$I WRL.PI} {$I GCHN.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: LINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := STR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE1(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN := LEN -1; END {DO} END; {DELETE1} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CARRIAGERETURN; BEGIN INSERT(LINE,INTERNALPOS,CHARACTER); LINE.LEN := INTERNALPOS; END; {INSERT CARRIAGE RETURN AND MAKE LINE LENGTH=CRET POSITION} PROCEDURE DISPLAYLINE; BEGIN PCHAR(10);PCHAR(13); WRITESTRING(LINE); PCHAR(13);PCHAR(10); END; PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE1(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE1(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE GETLINE; BEGIN READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); LINE.LEN := LINE.LEN-1; {IGNORE C RETN} WRITESTRING(LINE); INTERNALPOS := LINE.LEN+1; DISPLAYPOS := CALCDISPLAYPOS(LINE,LINE.LEN); CURLINE := 1; DONE := SYSERROR; END; {GETLINE} PROCEDURE PUTLINE; BEGIN WRITELINE(DISKOUT,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; {PUTLINE} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : BEGIN DISPLAYLINE;PUTLINE;GETLINE END; {UP} 11 : ; {CARR RETN} 13 : BEGIN DISPLAYLNE; CARRIAGERETURN;PUTLINE;GETLINE END; {DELETE} 127 : DELETECHARACTER END;{CASE} END;{ACTION} PROCEDURE OPENFILES; VAR L : LINESTRING; NBYTES,ERRORNUMBER : INTEGER; SYSERROR : BOOLEAN; I : INTEGER; BEGIN WRITELN('INPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,L,SYSERROR,ERRORNUMBER); WRITELN('OUTPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(L,SYSERROR,ERRORNUMBER); CRAND(L,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,L,SYSERROR,ERRORNUMBER); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW CURSOR} BEGIN {MAIN PROGRAM} OPENFILES; REPEAT BEGIN GETLINE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 27 ;{ESC} END UNTIL DONE END. GLOBALE& ;PASCAL "GLOBAL" ACCESS PROCEDURES ; -- PERMIT RETAINING POINTERS BETWEEN ; PROCEDURE INVOCATIONS. ;PETE GOODEVE 78:7:22 .TITL GLOBAL ;78:7:22 .EXTN XPRET .ENT ?KEEP,?GLOBAL GSIZE = 15 ;GLOBAL SLOT LIMIT SP=41 P4ERR = JSR @51 .NREL ;TYPE INDEX = 0..GSIZE; ;PROCEDURE KEEP(P:ANYPOINTER; I:INDEX); EXTERNAL ;..OR: ;PROCEDURE KEEP(P:ANYPOINTER); EXTERNAL; ?KEEP: MOVZR 1,0,SNR ;1 OR 2 PARAMS? JMP ZERK ;DEFAULT SLOT 0 LDA 0,0,3 ;SLOT # DSZ SP ;POP STACK LDA 1,GLIM SUBO 0,1,SNC ;VALID SLOT? JMP ZERK ;YES BAD: P4ERR 412 ;ARBITRARY ERR CODE (TIL WE KNOW BETTER) ZERK: LDA 2,KBAS ;KEEP-AREA BASE ADD 0,2 ;SLOT ADDRESS LDA 0,@SP ;POINTER VALUE FROM STACK STA 0,0,2 ;IS STASHED SUB 1,1 ;RETURNS NO VALUE XPRET GLIM: GSIZE KBAS: GAREA ;FUNCTION GLOBAL(I:INDEX):ANYPOINTER; EXTERNAL ;.. OR ;FUNCTION GLOBAL:ANYPOINTER; EXTERNAL ?GLOB: MOV 1,1,SZR ;ANY PARAM? LDA 1,0,3 ;YES -- GET THE INDEX LDA 2,GLIM SUBO 1,2,SZC ;IN RANGE? JMP BAD ;NO LDA 2,KBAS ;BASE OF STORAGE ADD 1,2 ;DISPLACE TO SLOT MOV 0,3 ;FUNCTION VALUE POINTER LDA 0,0,2 ;PICK UP STORED POINTER STA 0,0,3 ;PASS IT BACK ;(CALLER SHOULD CHECK FOR NIL!) SUBZL 1,1 ;INTEGER FUNCTION XPRET GAREA: .BLK GSIZE+1 .END ;OF GLOBAL PROCEDURES T12I.+PROGRAM T12; VAR I,CHR:INTEGER; FUNCTION GCHA:INTEGER;EXTERNAL; PROCEDURE PCHA(CCHR:INTEGER);EXTERNAL; BEGIN I :=1; FOR I := 1 TO 1000 DO BEGIN CHR := GCHA; PCHA(CHR) END END. TEST3K PROGRAM TEST3(INPUT,OUTPUT); VAR CH : CHAR; CURPOS : INTEGER; PROCEDURE BACKSPACE; BEGIN WRITE(CH); END; PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8-CURPOS MOD 8; CURPOS := CURPOS+MOVESRT; WRITELN(' ',MOVESRT,' ',CURPOS); FOR I := 1 TO MOVESRT DO WRITE(' ') END; {HORIZTAB} PROCEDURE ACTION; VAR ORDCH : INTEGER; BEGIN ORDCH := ORD(CH); IF ORDCH IN [32..126] THEN WRITE(CH) ELSE CASE ORDCH OF {backspace} 8 : BACKSPACE; {horiz tab} 9 : HORIZTAB; {LINE FEED} 10 : WRITE(' LINEFEED'); {up} 11 : WRITE(' UP'); {delete} 127 : WRITE(' DELETE') END {case} END; {ACTION} PROCEDURE INITIALIZE{ALL VARIABLES}; BEGIN CURPOS := 1; {CURRENT CHARACTER POSITION} END; {INITIALIZE} BEGIN INITIALIZE; REPEAT BEGIN READ(CH); ACTION; END UNTIL EOF END. TPA$ PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK); VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; SOURCE : TEXT; ENTRY : ENTRYTYPES; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} PROCEDURE ERROR; BEGIN WRITELN(' ERROR'); END;{error} PROCEDURE C1HECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(' CK ',CHECKNUMBER : 15); REALPRINT(AMOUNT);WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(' DP ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(' CM ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(' DM ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(' CC ',CHECKNUMBER : 15); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' EM ',BLANKS); REALPRINT(AMOUNT);WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' WH ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(STR[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(STR[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE INITIALIZE; BEGIN FILETITLE(S(OURCE,'1978'); RESET(SOURCE); BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; WRITELN(' KEY TO TRANSACTION TYPES'); WRITELN(' C CHECK CC CANCELLED CHECK'); WRITELN(' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN(' DP DEPOSIT BL FORCED BALANCE'); WRITELN(' EM EMPLOYEE CK WH WITHOLDING CHECK'); WRITELN; WRITELN(' TYPE CHECK DEBIT CREDIT BALANCE'); END;{initialize} BEGIN INITIALIZE; WRITELN; WHILE NOT EOF(SOURCE) DO BEGIN READLN(SOURCE,STR); WRITELN; WRITELN; GETENTRYTYPELINE (STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; END;{case} IF ENTRY NOT CANCELLEDCHECK THEN WRITE(' _ _'); END; WRITELN;WRITELN; WRITE(' TOTALS '); REALPRINT(TOTALDEBITS);REALPRINT(TOTALCREDITS); REALPRINT(NEWBALANCE); WRITELN; WRITELN; WRITE(' TOTAL CHECKS ');REALPRINT(TOTALCHECKS);WRITELN; WRITE(' TOTAL DEPOSITS');REALPRINT(TOTALDEPOSITS);WRITELN; END. PLPX Irq PLO Copyright (C) 1980 Rational Data Systems   ֦ ****7 ^  6á "֦PROGRAM INCOMPLETE7  7   ֥Q蚹֥7 ֥Q QY  á ɡ_ ġث _   á_  ق-  -  ššd q6 š+:á=áo[v)LTš ֦PROGRAM TOO LONG7 dػ  Z$8d٥ ٢ ؚع6š٢ /٢٢ ٢>+n d d  < á5 áá F á  ȡPdإ7 ۥo  áN h ֥饂áQ á 9d! $Cáš%á á@ ``(`á1 F á (á1 lát??Vڹ0; 3 + #   71+)áa á dˡ á ˡdáIˡ9 á #dááMֳá dOáZֳ" "á ֳ" áYáTֳá d d  š á& á áˡá& á áˡáeá áٳá ֥ ֥饂dddߢ ֳ"  DDCxš!.֦ START OF PL/07ʁdູÚ˚ɚĚŚUȚ$ V/X>S7 ʁٚښNB8á H>6á֦ END OF PL/07"<>dJƆ7ƆuƆ7OUTPUTƅƅƅINPUTƅƆ7A;ȡʆЫoʆá-  BEGIN -  CALL -  CONST -  DO -  END -  IF -  ODD -  PROCEDURE -   THEN -   VAR -   WHILE d d d d d d d d d  d  d  o+o-o*o/o(o)o=o,o.o! o< o> o" o# o;oLIT oOPR oLOD oSTO oCAL oINT oJMP oJPC 8P@  ˡ á$֦ ERRORS IN PL/0 PROGRAM7֥7Ɔ7ƅ$x, `  2B^t~&PXSVPPASINTERPSVT22O2PROGRAM T22; TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOFILE : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN (IFILE : ALPHA);EXTERNAL; BEGIN IOFILE := 8; FILENAME := 'INPUTFILE0.DR'; OPEN (FILENAME) END. DQ vPRETTYINST9SGG (*************************************************************************** PROGRAM TITLE: PASCAL PRETTYPRINTING PROGRAM AUTHORS: JON F. HUERAS AND HENRY F. LEDGARD COMPUTER AND INFORMATION SCIENCE DEPARTMENT UNIVERSITY OF MASSACHUSETTS, AMHERST - AUGUST, 1976 (EARLIER VERSIONS AND CONTRIBUTIONS BY RANDY CHOW AND JOHN GORMAN). BUGS CORRECTD BY CHARLES FISCHER, DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF WISCONSIN, MADISON. 1977. INDICATED BY <<< . MODIFIED FOR CDC-6000 PASCAL RELEASE 3 BY RICK L. MARCUS UNIVERSITY COMPUTER CENTER, UNIVERSITY OF MINNESOTA. 30 SEPTEMBER 1978. PROGRAM SUMMARY: THIS PROGRAM TAKES AS INPUT A PASCAL PROGRAM AND REFORMATS THE PROGRAM ACCORDING TO A STANDARD SET OF PRETTYPRINTING RULES. THE PRETTYPRINTED PROGRAM IS GIVEN AS OUTPUT. THE PRETTYPRINTING RULES ARE GIVEN BELOW. AN IMPORTANT FEATURE IS THE PROVISION FOR THE USE OF EXTRA SPACES AND EXTRA BLANK LINES. THEY MAY BE FREELY INSERTED BY THE USER IN ADDITION TO THE SPACES AND BLANK LINES INSERTED BY THE PRETTYPRINTER. NO ATTEMPT IS MADE TO DETECT OR CORRECT SYNTACTIC ERRORS IN THE USER'S PROGRAM. HOWEVER, SYNTACTIC ERRORS MAY RESULT IN ERRONEOUS PRETTYPRINTING. INPUT FILE: INPUT - A FILE OF CHARACTERS, PRESUMABLY A PASCAL PROGRAM OR PROGRAM FRAGMENT. OUTPUT FILE: OUTPUT - THE PRETTYPRINTED PROGRAM. ************************************************************************** ************************************************************************** PASCAL PRETTYPRINTING RULES GENERAL PRETTYPRINTING RULES 1. ANY SPACES OR BLANK LINES BEYOND THOSE GENERATED BY THE PRETTYPRINTER ARE LEFT ALONE. THE USER IS ENCOURAGED, FOR THE SAKE OF READABILITY, TO MAKE USE OF THIS FACILITY. IN ADDITION, COMMENTS ARE LEFT WHERE THEY ARE FOUND, UNLESS THEY ARE SHIFTED RIGHT BY PRECEEDING TEXT ON A LINE. 2. ALL STATEMENTS AND DECLARATIONS BEGIN ON SEPARATE LINES. 3. NO LINE MAY BE GREATER THAN 72 CHARACTERS LONG. ANY LINE LONGER THAN THIS IS CONTINUED ON A SEPARATE LINE. 4. THE KEYWORDS "BEGIN", "END", "REPEAT", AND "RECORD" ARE FORCED TO STAND ON LINES BY THEMSELVES (OR POSSIBLY FOLLOWED BY SUPPORTING COMMENTS). IN ADDITION, THE "UNTIL" CLAUSE OF A "REPEAT-UNTIL" STATEMENT IS FORCED TO START ON A NEW LINE. 5. A BLANK LINE IS FORCED BEFORE THE KEYWORDS "PROGRAM", "PROCEDURE", "FUNCTION", "LABEL", "CONST","TYPE", AND "VAR". 6. A SPACE IS FORCED BEFORE AND AFTER THE SYMBOLS ":=" AND "=". ADDITIONALLY, A SPACE IS FORCED AFTER THE SYMBOL ":". NOTE THAT ONLY "="S IN DECLARATIONS ARE FORMATTED. "="S IN EXPRESSIONS ARE IGNORED. <<<. INDENTATION RULES 1. THE BODIES OF "LABEL", "CONST", "TYPE", AND "VAR" DECLARATIONS ARE INDENTED FROM THEIR CORRESPONDING DECLARATION HEADER KEYWORDS. 2. THE BODIES OF "BEGIN-END", "REPEAT-UNTIL", "FOR", "WHILE", "WITH", AND "CASE" STATEMENTS, AS WELL AS "RECORD-END" STRUCTURES AND "CASE" VARIANTS (TO ONE LEVEL) ARE INDENTED FROM THEIR HEADER KEYWORDS. 3. AN "IF-THEN-ELSE" STATEMENT IS INDENTED AS FOLLOWS: IF THEN ELSE **************************************************************************** **************************************************************************** GENERAL ALGORITHM THE STRATEGY OF THE PRETTYPRINTER IS TO SCAN SYMBOLS FROM THE INPUT PROGRAM AND MAP EACH SYMBOL INTO A PRETTYPRINTING ACTION, INDEPENDENTLY OF THE CONTEXT IN WHICH THE SYMBOL APPEARS. THIS IS ACCOMPLISHED BY A TABLE OF PRETTYPRINTING OPTIONS. FOR EACH DISTINGUISHED SYMBOL IN THE TABLE, THERE IS AN ASSOCIATED SET OF OPTIONS. IF THE OPTION HAS BEEN SELECTED FOR THE SYMBOL BEING SCANNED, THEN THE ACTION CORRESPONDING WITH EACH OPTION IS PERFORMED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. ***************************************************************************** *) TESTPX  )CROSSREF Copyright (C) 1981 Rational Data Systems "  ۢ*"ٞ# ۢ ٞ#!:٪I HJCJ֦ ZKKJKHKKK?KJKKK ؚH#K+֦ ERROR IN OPEN = ZLLK LKKI!HتH GICI֦ ZJJIJGJJJJIJJG#J-֦ ERROR IN DELETE = ZKKJ KJJH!HتH GICI֦ ZKKIKGKKKKIKKG#K,֦ ERROR IN CRAND = ZLLK LKKH!I٪J IKCKILLL?LKLLLښL ؚI#L0֦ ERROR IN WRITELINE = ZMML MLLJ!H C ? ߚ    ؚݞ# /֦ ERROR IN READLINE = Z   ߪ !֦ INPUT FILEZRQSRQS֥T֧TQS֦ OUTPUT FILEZ֥֥خDž֥U֥U ܢ?(ܢ ؚڞ#(֦ ERROR IN GCHN = Z ٢!` ٨ ޢ?'ޢښޢۚޢ ؚܞ#(֦ ERROR IN SPOS = Z !f ٪GIHHȡ5  -á IG 0GHȡI GG PF ٪GIHIGH˄_IGI?IIIGI?IIHHIGá I N|F ڪNMKHHȡ` -á NHȡVMFƁZƁƁZOUTPUTƀƁƀئINPUTUƀUDISKOUTƀƁZ֦ WANT OUTPUT TO $TTO CONSOLE? Zʁ֦ WANT DATA BASE FILE PRINTED?Zʁ֦ WANT INDEX PRINTED? Zʁ֦' WANT TREEED RECORDS PRINTED IN ORDER? Zʁ֦ SORT ON FILEN NO. 2,3,4,5? Z֥֥خʁ ʁ ֧T ֧TRQSQ ) Zʁ ʁܦ ʁܥ'֥U ʁ ʁܦ ʁܥ ֥1CW*  "$&(ASá֦ MEMORY LEFT = Zʁܞ ʁ E֦ SEARCH KEY =Z֥ ֥خʁ ʁˡƁZƀUed @h . . r,TEST3PAdPROGRAM TEST3(INPUT,OUTPUT); VAR CH : CHAR; CURPOS : INTEGER; PROCEDURE BACKSPACE; BEGIN WRITE(CH); END; PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8-CURPOS MOD 8; CURPOS := CURPOS+MOVESRT; WRITELN(' ',MOVESRT,' ',CURPOS); FOR I := 1 TO MOVESRT DO WRITE(' ') END; {HORIZTAB} PROCEDURE ACTION; VAR ORDCH : INTEGER; BEGIN ORDCH := ORD(CH); IF ORDCH IN [32..126] THEN WRITE(CH) ELSE CASE ORDCH OF {backspace} 8 : BACKSPACE; {horiz tab} 9 : HORIZTAB; {LINE FEED} 10 : WRITE(' LINEFEED'); {up} 11 : WRITE(' UP'); {delete} 127 : WRITE(' DELETE') END {case} END; {ACTION} PROCEDURE INITIALIZE{ALL VARIABLES}; BEGIN CURPOS := 1; {CURRENT CHARACTER POSITION} END; {INITIALIZE} BEGIN INITIALIZE; REPEAT BEGIN READ(CH); ACTION; END UNTIL EOF END. WRLPIXr 7PROCEDURE WRITELINE( CHANNEL : INTEGER; BUFFER : LINESTRING; BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7743; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; TEMPPOINTER : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(TEMPPOINTER); TEMPPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.LPTR := TEMPPOINTER; R0.INT := R0.INT+2; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITELINE = ',R2.INT); ERR := ERROR; BYTESOUT := R1.INT; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE LINE} CATEGORIESq 1 MISC 2 RENT 3 MAINTENANCE 4 TELEPHONE 5 STAMPS, OFFICE SUPPLIES 6 ATTORNEY 7 ACCOUNTANT 8 BUSINESS TRIPS 9 AUTO CAPITAL EXP. 10 AUTO MAINTENANCE 11 GAS & OIL 12 EMPLOYEE CHECKS 13 PERS. PROP. TAX 14 IRS 15 AWT 16 MISC TAXES 17 INSURANCE 18 MAGAZINES AND BOOKS 19 BUSINESS ENTERTAINMENT 20 BUSINESS PROMOTION 21 CASH DRAWS 22 R&D EQUIPMENT EXPENSE 23 R&D MAINTENANCE EXPENSE 24 PETTY CASH 25 BANK AMERICARD & AMERICAN EXPRESS 26 LICENSES AND DUES 27 SUB CONTRACTORS 28 PRINCIPAL PAYMENTS 29 INTEREST PAYMENTS 30 LOAN INCOME 31 INTEREST EXPENSE 32 RELOCATION EXPENSE 33 MEDICAL REIMBURSABLES 34 INCOME 35 DEBIT MEMO 36 LOAN MADE(OUT) GETFILEDREBU 1979D2! 660 516 C 660 484.10 12 665 16 EM 665 1102.70 12 666 17 EM 666 1209.04 12 667 18 EM 667 1350.43 12 668 19 EM 668 199.40 12 669 20 EM 669 550.32 12 670 21 EM 670 539.29 12 671 22 EM 671 526.45 12 672 23 EM 672 344.29 12 673 24 EM 673 2468.66 14 674 53 EM 674 1360.43 12 675 54 EM 675 209.40 12 676 55 EM 676 1053.55 12 677 56 EM 677 1083.87 12 678 57 EM 678 516.30 12 679 58 EM 679 550.39 12 680 25 EM 680 411.53 12 681 59 EM 681 276.95 12 682 26 EM 682 2234.86 14 683 76 EM 683 1360.43 12 684 60 EM 684 209.40 12 685 61 EM 685 1101.20 12 686 62 EM 686 1580.40 12 687 63 EM 687 533.66 12 688 64 EM 688 610.74 12 689 65 EM 689 422.46 12 690 66 EM 690 215.64 12 691 77 EM 691 209.40 12 692 78 EM 692 981.35 12 693 79 EM 693 1050.72 12 694 80 EM 694 479.62 12 695 81 EM 695 554.62 12 696 82 EM 696 369.47 12 697 83 EM 697 329.08 12 698 67 EM 698 3861.48 14 699 84 EM 699 1398.97 12 700 85 EM 700 194.48 12 701 86 EM 701 1016.68 12 702 87 EM 702 1156.68 12 703 88 EM 703 563.99 12 704 89 EM 704 640.40 12 705 90 EM 705 470.84 12 706 91 EM 706 483.71 12 707 92 EM 707 2984.02 14 708 93 EM 708 555.34 14 709 94 EM 709 310.37 15 710 95 EM 710 1372.35 15 711 126 EM 711 1408.97 12 712 127 EM 712 204.48 12 713 128 EM 713 1091.05 12 714 129 EM 714 1096.88 12 715 130 EM 715 595.09 12 716 131 EM 716 613.84 12 717 132 EM 717 514.82 12 718 137 EM 718 482.51 12 719 138 EM 719 3016.96 14 720 139 EM 720 125.24 14 721 140 EM 721 879.67 15 722 170 EM 722 1032.90 12 723 171 EM 723 1408.97 12 724 205 EM 724 204.48 12 725 172 EM 725 1166.68 12 726 173 EM 726 527.17 12 727 174 EM 727 560.96 12 728 175 EM 728 492.78 12 729 176 EM 729 298.75 12 730 177 EM 730 2831.26 14 731 206 EM 731 1408.97 12 732 207 EM 732 204.48 12 733 208 EM 733 863.83 12 734 209 EM 734 915.34 12 735 210 EM 735 368.67 12 736 211 EM 736 514.29 12 737 212 EM 737 430.51 12 738 213 EM 738 322.85 12 739 178 EM 739 2326.89 14 740 214 EM 740 1420.97 12 741 215 EM 741 204.48 12 742 216 EM 742 1131.44 12 743 217 EM 743 1096.04 12 744 218 EM 744 551.67 12 745 219 EM 745 640.60 12 746 220 EM 746 385.40 12 747 221 EM 747 360.91 12 748 222 EM 748 2850.69 14 749 254 EM 749 1424.97 12 750 255 EM 750 204.48 12 751 223 EM 751 1049.82 12 752 256 EM 752 992.88 12 753 257 EM 753 551.67 12 754 258 EM 754 550.23 12 755 259 EM 755 431.37 12 756 260 EM 756 343.46 12 758 224 EM 758 2575.50 14 759 261 EM 759 1391.48 15 760 262 EM 760 1569.95 15 761 263 EM 761 80.68 14 762 264 EM 762 1017.67 12 763 265 EM 763 929.08 12 764 266 EM 764 518.89 12 765 272 EM 765 271.86 12 766 273 EM 766 384.02 12 767 274 EM 767 256.22 12 768 307 EM 768 1426.97 12 769 308 EM 769 204.48 12 770 309 CC 770 771 311 EM 771 864.72 12 772 312 EM 772 1001.57 12 774 313 EM 774 640.60 12 775 314 EM 775 302.19 12 776 315 EM 776 451.39 12 777 316 EM 777 429.02 12 778 317 EM 778 314.65 12 779 310 CC 779 780 318 EM 780 568.52 12 781 319 EM 781 993.27 12 782 275 EM 782 2500 14 783 276 EM 783 1956.74 14 784 320 EM 784 551.67 12 785 321 EM 785 993.62 12 786 322 EM 786 993.62 12 787 323 EM 787 444.04 12 788 324 EM 788 375 12 789 325 EM 789 415.74 12 790 326 EM 790 204.48 12 791 327 EM 791 1426.97 12 792 328 EM 792 1426.97 12 793 360 EM 793 561.13 12 794 357 EM 794 1426.97 12 795 358 EM 795 204.48 12 796 359 EM 796 2090.76 14 797 366 EM 797 360.94 15 798 421 EM 798 204.48 12 799 422 EM 799 204.48 12 800 423 EM 800 1426.97 12 801 424 EM 801 426.97 12 803 433 EM 803 1207.97 27 804 434 EM 804 1426.97 12 805 435 EM 805 204.48 12 806 425 CC 806 807 426 CC 807 808 427 CC 808 809 436 EM 809 1835.96 14 815 517 EM 815 887.50 12 1995 106 CM 1995 2763 3 C 2763 1850.16 2 2764 4 C 2764 552.87 17 2765 5 C 2765 314.49 8 2766 6 C 2766 314.49 8 2767 7 C 2767 100 8 2768 33 C 2768 677.50 20 2769 34 C 2769 125 26 2770 8 C 2770 20.07 18 2771 9 C 2771 630.50 4 2772 35 C 2772 736 23 2773 36 C 2773 13 1 2774 10 C 2774 38.75 11 2775 37 C 2775 12.82 18 2776 38 C 2776 7.30 23 2777 11 C 2777 47.70 5 2778 39 C 2778 258.40 5 2779 12 C 2779 229.63 25 2780 13 C 2780 6.94 5 2781 14 C 2781 64.25 5 2782 40 C 2782 160.96 5 2783 41 C 2783 563.93 23 2784 42 C 2784 67 26 2785 43 C 2785 45.00 26 2786 15 C 2786 228.23 8 2788 44 C 2788 93.70 5 2789 475 CC 2789 2790 45 C 2790 1000 8 2791 46 C 2791 100 26 2792 47 C 2792 1850.16 2 2793 48 C 2793 115 3 2794 49 C 2794 75 5 2795 50 C 2795 114.48 24 2796 51 C 2796 14 1 2797 52 C 2797 150 5 2798 476 CC 2798 2799 477 C 2799 157. 23 2800 96 C 2800 38 20 2801 478 CC 2801 2802 97 C 2802 7 1 2803 98 C 2803 1850.16 2 2804 99 C 2804 12.45 2805 100 C 2805 125 8 2806 101 C 2806 2 1 2807 102 C 2807 115 3 2808 103 C 2808 1105.74 17 2809 104 C 2809 23.35 1 2810 105 C 2810 131 8 2811 479 CC 2811 2812 112 C 2812 63.75 6 2813 113 C 2813 545 7 2814 114 C 2814 1406.50 17 2815 115 C 2815 368 23 2816 116 C 2816 600 28 2817 117 C 2817 151.18 25 2818 118 C 2818 13.80 5 2819 119 C 2819 30 5 2820 120 C 2820 692 25 2821 121 C 2821 100 25 2822 122 C 2822 1291.19 4 2823 123 C 2823 275.82 4 2824 124 C 2824 100 26 2825 125 C 2825 25 26 2826 141 C 2826 1850.16 2 2827 142 C 2827 115 3 2828 143 C 2828 552.87 17 2829 144 C 2829 75 24 2830 145 C 2830 88 18 2831 146 C 2831 20 26 2832 147 C 2832 108 26 2833 149 C 2833 64.59 4 2834 150 C 2834 157.50 22 2835 151 C 2835 8.93 1 2836 152 C 2836 25 26 2837 153 C 2837 30 5 2838 154 C 2838 12.25 5 2839 155 C 2839 10.94 5 2840 179 C 2840 770.93 25 2841 180 C 2841 32.27 25 2842 156 C 2842 273.55 25 2843 157 C 2843 1444.50 17 2844 158 C 2844 176 5 2845 159 C 2845 446.10 5 2846 181 C 2846 33.44 5 2847 160 C 2847 739.11 4 2848 161 C 2848 108.10 4 2849 162 C 2849 341.33 4 2850 163 C 2850 428.08 25 2851 164 C 2851 26.19 11 2852 182 C 2852 101.44 23 2853 165 C 2853 611.53 17 2854 166 C 2854 20.75 1 2855 167 C 2855 500 27 2856 183 C 2856 513.12 23 2857 184 C 2857 83.07 5 2858 168 C 2858 9.93 5 2859 480 CC 2859 2860 169 C 2860 28.50 5 2861 230 C 2861 611.53 17 2862 231 C 2862 171.16 25 2863 232 C 2863 32 8 2864 185 C 2864 25.83 8 2865 186 C 2865 1850.16 2 2866 187 C 2866 30.29 5 2867 188 C 2867 115 3 2868 189 C 2868 27.76 14 2869 190 C 2869 80 18 2870 191 C 2870 736 23 2871 192 C 2871 546.84 5 2872 193 C 2872 68.98 5 2873 494 CC 2873 2874 194 C 2874 298.05 6 2875 195 C 2875 766.49 6 2876 481 CC 2876 2877 196 C 2877 16 18 2878 197 C 2878 121.92 1 2879 198 C 2879 1633.42 23 2880 199 C 2880 11.25 5 2881 200 C 2881 23.85 5 2882 201 C 2882 49.52 5 2883 202 C 2883 9.80 5 2884 482 CC 2884 2885 483 CC 2885 2886 203 C 2886 24.45 5 2887 233 C 2887 30 5 2888 234 C 2888 41.62 5 2889 204 C 2889 77 5 2890 235 C 2890 104.82 23 2891 236 C 2891 129.76 8 2892 237 C 2892 115 3 2893 238 C 2893 27.46 5 2894 239 C 2894 3.95 23 2895 240 C 2895 244.30 25 2896 241 C 2896 16.85 5 2897 242 C 2897 1850.16 2 2898 243 C 2898 601.53 17 2899 244 C 2899 177 5 2900 245 C 2900 717.86 4 2901 246 C 2901 50 26 2902 247 C 2902 3 18 2903 248 C 2903 22 18 2904 249 C 2904 169.04 5 2905 250 C 2905 300 17 2906 252 C 2906 60 1 2907 280 C 2907 45 1 2908 334 C 2908 601.81 4 2909 253 C 2909 81.22 15 2910 333 C 2910 897 15 2911 484 CC 2911 2912 485 C 2912 787.00 17 2913 332 C 2913 133.61 23 2914 329 C 2914 101.18 5 2915 291 C 2915 26 5 2916 330 C 2916 70.65 5 2917 331 C 2917 76.47 5 2918 292 C 2918 336.98 27 2919 293 C 2919 263.44 8 2920 294 C 2920 153.50 6 2921 295 C 2921 1159.13 25 2922 486 CC 2922 2923 487 CC 2923 2924 488 C 2924 368 23 2925 296 C 2925 54 10 2926 297 C 2926 306.79 17 2927 298 C 2927 225 1 2928 299 C 2928 1850.16 2 2929 300 C 2929 395.75 2 2930 301 C 2930 2839.54 14 2931 302 C 2931 115 3 2932 303 C 2932 18.02 5 2933 336 C 2933 51.22 5 2934 304 C 2934 83.31 4 2935 305 C 2935 56 33 2936 306 C 2936 1390 28 2937 337 C 2937 398 17 2938 338 C 2938 60.80 1 2939 339 C 2939 19.75 18 2940 340 C 2940 30.95 32 2941 341 C 2941 31.65 32 2942 342 C 2942 115 3 2943 343 C 2943 350 27 2944 344 C 2944 100 27 2945 345 C 2945 1850.16 2 2946 346 C 2946 20.76 11 2947 347 C 2947 75.64 32 2948 348 C 2948 124.89 17 2949 349 C 2949 106.45 25 2950 350 C 2950 150.70 10 2951 351 C 2951 8.46 32 2952 352 C 2952 1057.58 27 2953 353 C 2953 830 27 2954 489 CC 2954 2955 367 C 2955 1301.13 32 2956 368 C 2956 60 27 2957 369 C 2957 125 27 2958 354 C 2958 25 3 2959 370 C 2959 30 3 2960 371 C 2960 10.35 32 2961 355 C 2961 100 22 2962 356 C 2962 1000 17 2963 372 C 2963 178.83 32 2964 373 C 2964 270.22 32 2965 374 C 2965 174.85 4 2966 375 C 2966 81.63 32 2967 376 C 2967 365.44 32 2968 377 C 2968 34.70 32 2969 518 CC 2969 2970 378 C 2970 22000 12 2971 379 C 2971 1500 32 2972 380 C 2972 398.04 32 2973 381 C 2973 1550 9 2974 490 CC 2974 2975 382 C 2975 294.74 25 2976 383 C 2976 548.34 32 2977 491 CC 2977 2978 384 C 2978 35 26 2979 385 C 2979 500 7 2980 492 CC 2980 2981 396 C 2981 34 1 2982 493 CC 2982 2983 386 C 2983 398.04 32 2984 397 C 2984 7.68 10 2985 387 C 2985 1850.16 2 2986 406 C 2986 22 1 2987 407 C 2987 47.20 5 2988 398 C 2988 17.50 8 2989 408 C 2989 2 4 2990 409 C 2990 890.60 4 2991 399 C 2991 31 1 2992 400 C 2992 7.50 5 2993 410 C 2993 30.95 3 2994 401 C 2994 196.14 22 2995 402 C 2995 60.93 23 2996 403 C 2996 202.41 23 2997 404 C 2997 20.58 23 2998 405 C 2998 118.46 23 2999 437 C 2999 80 10 3000 438 C 3000 230 1 3001 439 C 3001 359 1 3003 411 C 3003 63.01 4 3004 412 C 3004 5.80 23 3005 413 C 3005 81.83 32 3006 414 C 3006 190.25 4 3007 440 C 3007 37.12 10 3008 441 C 3008 12.40 10 3009 415 C 3009 89.20 5 3010 442 C 3010 69 1 3011 416 C 3011 61.95 5 3012 443 C 3012 600 3 3013 417 C 3013 550 2 3014 418 C 3014 93.39 2 3015 419 C 3015 368.32 2 3016 444 C 3016 4 5 3017 445 C 3017 1208.43 25 3018 420 C 3018 414.75 2 3019 446 C 3019 31 5 3020 447 C 3020 8 18 3021 448 C 3021 262.25 22 3022 449 C 3022 34.90 22 3023 450 C 3023 535.05 3 3024 451 C 3024 12.60 10 3025 452 C 3025 547.25 27 3026 453 C 3026 40 32 3027 454 C 3027 327.12 4 3028 455 C 3028 44.82 3 3029 456 C 3029 397.33 23 3030 495 C 3030 626.30 23 3031 496 C 3031 30 27 3032 457 C 3032 202.96 17 3033 458 C 3033 215.05 3 3034 459 C 3034 6.30 3 3035 460 C 3035 230 3 3036 461 C 3036 50 27 3037 462 C 3037 288 27 3038 463 C 3038 150 27 3039 464 C 3039 55.06 3 3041 497 C 3041 3.57 4 3042 465 C 3042 88.17 3 3043 466 C 3043 49.80 3 3045 467 C 3045 10 1 3046 468 C 3046 5428.82 6 3047 469 C 3047 300 24 3048 498 C 3048 22.56 11 3049 1 C 3049 44.55 10 3050 499 C 3050 35 26 3051 470 C 3051 164 17 3052 471 C 3052 612.92 3 3053 500 C 3053 256.07 4 3054 501 C 3054 1743.66 7 3055 502 C 3055 1200 21 3056 515 C 3056 10 26 3057 503 C 3057 60 26 3058 504 C 3058 385 3 3059 505 C 3059 172.14 8 3060 506 C 3060 6.95 3 3061 507 C 3061 646.33 8 3062 508 C 3062 31 1 3063 509 C 3063 30 26 3065 2 C 3065 223.70 32 3072 510 C 3072 129.64 4 3073 519 C 3073 1340.73 25 3074 511 C 3074 2500 21 3077 512 C 3077 10.77 6 3079 513 C 3079 37.50 6 3080 514 C 3080 1298.05 25 1978D3!o * 0 14 CC 2357 0 19 CC 2362 0 20 CC 2363 0 21 CC 2364 0 22 CC 2365 0 24 CC 2367 0 25 CC 2368 0 26 CC 2369 0 27 CC 2370 0 29 CC 2372 0 30 CC 2373 0 105 CC 2437 0 113 CC 2445 0 130 CC 2461 0 131 CC 2462 0 137 CC 2468 0 144 CC 2474 0 155 CC 2484 0 168 CC 2496 0 170 CC 2498 0 204 CC 2530 0 210 CC 2535 0 219 CC 2543 0 240 CC 2562 0 268 CC 2586 0 270 CC 2588 0 292 CC 2604 0 299 CC 2610 0 300 CC 2611 0 321 CC 2628 0 325 CC 2632 0 365 CC 2665 0 377 CC 2677 0 395 CC 2694 0 419 CC 2714 0 468 CC 2757 0 648 CC 542 0 649 CC 543 0 650 CC 2592 0 651 CC 2658 2 165 C 2493 2 22 9 2 234 C 2558 2.05 18 15 3 37 C 2380 3.60 5 2 3 106 C 2438 3.47 18 6 3 150 C 2480 3.95 18 9 3 166 C 2494 3.50 18 9 4 136 C 2467 4.80 22 8 4 195 C 2521 4.15 10 12 5 273 C 2589 5 1 17 5 436 C 2730 5.74 5 27 5 528 W 544 5.00 14 11 6 5 C 2338 6.00 1 1 6 95 C 2430 6.75 18 6 6 404 C 2702 6.90 5 25 6 433 C 2727 6 18 27 7 62 C 2399 7.95 18 3 7 81 C 2417 7.75 11 3 7 122 C 2454 7.85 5 7 7 151 C 2481 7.06 1 9 7 157 C 2486 7 1 9 7 164 C 2492 7 1 11 7 198 C 2524 7 1 12 7 327 C 2634 7.50 1 21 8 63 C 2400 8.52 18 3 8 89 C 2425 8.95 18 5 8 190 C 2517 8 18 11 8 326 C 2633 8.75 18 21 8 370 C 2670 8.70 1 24 9 143 C 2473 9.95 18 8 9 306 C 2614 9.22 5 20 9 316 C 2624 9 18 20 10 15 C 2358 10 3 1 10 86 C 2422 10 16 5 10 181 C 2508 10.80 18 11 10 226 C 2550 10 18 14 10 453 C 2743 10 26 28 11 107 C 2439 11 18 6 11 224 C 2548 11.70 25 14 11 373 C 2673 11.48 22 23 11 423 C 2718 11.56 5 26 12 45 C 2387 12 18 2 12 49 C 2391 12 18 2 12 79 C 2415 12.68 5 3 12 140 C 2471 12 22 8 12 163 C 2491 12.30 18 9 12 329 C 2636 12.55 11 21 13 118 C 2450 13.00 17 6 13 201 C 2527 13.30 5 12 13 346 C 2650 13.05 11 22 14 60 C 2398 14.85 18 3 14 251 C 2571 14.30 5 15 14 344 C 2648 14.20 23 22 15 77 C 2413 15 18 3 15 153 C 2483 15 18 9 15 361 C 2662 15 18 22 15 414 C 2709 15 18 26 15 451 C 2741 15.15 8 28 16 91 C 2426 16.05 5 7 16 112 C 2444 16. 18 6 16 199 C 2525 16 10 12 16 371 C 2671 16.80 1 24 16 416 C 2711 16.75 18 26 17 302 C 2612 17 6 20 17 349 C 2653 17.16 5 22 18 187 C 2514 18 18 11 18 203 C 2529 18.70 18 12 18 410 C 2706 18.50 18 26 19 111 C 2443 19.89 22 6 19 350 C 2654 19.94 5 22 19 455 C 2745 19 26 28 20 188 C 2515 20 18 11 20 193 C 2519 20 26 12 20 399 C 2697 20.32 5 26 20 434 C 2728 20 5 27 21 174 C 2502 21.85 11 10 22 48 C 2390 22.80 22 3 23 182 C 2509 23.30 5 11 23 266 C 2584 23.95 8 16 25 132 C 2463 25 18 8 25 360 C 2661 25 22 22 25 363 C 2664 25.35 5 23 26 133 C 2464 26 22 8 26 213 C 2538 26 5 14 26 249 C 2569 26 17 15 26 258 C 2576 26.12 5 16 27 72 C 2408 27.00 5 5 27 183 C 2510 27.60 5 11 28 69 C 2405 28.26 21 5 28 88 C 2424 28.15 23 5 28 109 C 2441 28.76 18 6 28 194 C 2520 28.99 10 12 28 284 C 2596 28 1 18 29 64 C 2401 29.39 22 3 29 372 C 2672 29 5 23 30 152 C 2482 30 18 9 30 335 C 2641 30 5 21 30 462 C 2751 30 5 28 32 74 C 2410 32.23 5 5 33 47 C 2389 33.30 22 2 33 305 C 2613 33 5 20 33 312 C 2620 33 17 20 33 449 C 2739 33 18 28 34 158 C 2487 34.03 22 9 34 227 C 2551 34 6 14 34 351 C 2655 34.12 22 22 35 340 C 2644 35 26 22 35 387 C 2686 35.27 11 25 36 260 C 2578 36.81 11 16 36 408 C 2704 36 18 26 36 415 C 2710 36.50 5 26 37 263 C 2581 37.70 18 16 37 359 C 2660 37 18 22 37 382 C 2682 37.64 22 24 38 7 C 2347 38.00 1 1 38 565 W 581 38.36 14 16 39 50 C 2392 39 22 2 39 135 C 2466 39 5 8 39 320 C 2627 39.50 18 20 39 391 C 2690 39.85 18 25 40 104 C 2436 40 20 6 40 429 C 2723 40.30 5 27 40  450 C 2740 40 23 28 40 645 E 664 40.27 15 29 41 98 C 2433 41.5 20 6 42 16 C 2359 42.80 10 1 42 189 C 2516 42 26 11 42 257 C 2575 42 26 16 43 4 C 2337 43.50 1 1 45 200 C 2526 45.45 5 12 46 167 C 2495 46.49 4 10 46 310 C 2618 46.45 5 20 46 441 C 2733 46.85 5 27 48 328 C 2635 48 4 21 49 378 C 2678 49.56 8 24 49 384 C 2684 49.44 1 25 50 8 C 2348 50.00 24 1 50 10 C 2354 50.00 20 1 50 18 C 2361 50 18 1 50 23 C 2366 50 18 1 50 28 C 2371 50 18 1 50 84 C 2420 50 24 3 50 117 C 2449 50. 27 6 50 134 C 2465 50.50 18 8 50 173 C 2501 50 20 11 50 223 C 2547 50.50 5 14 50 293 C 2605 50 24 18 50 298 C 2609 50 20 19 50 319 C 2626 50 24 20 50 366 C 2666 50 24 23 50 390 C 2689 50 22 25 50 420 C 2715 50 22 26 50 438 C 2731 50 24 27 52 70 C 2406 52.68 5 5 52 99 C 2434 52 5 6 52 314 C 2622 52.30 5 20 52 435 C 2729 52.84 11 27 53 6 C 2345 53.35 1 1 53 71 C 2407 53.35 5 5 54 463 C 2752 54 5 28 55 119 C 2451 55.00 22 7 55 212 C 2537 55.93 4 14 55 464 C 2753 55 22 28 56 121 C 2453 56.30 5 7 56 322 C 2629 56 17 20 60 43 C 2385 60.30 5 2 61 196 C 2522 61.36 10 12 64 51 C 2393 64.65 25 2 64 57 C 2397 64. 8 3 64 466 C 2755 64.50 6 28 66 46 C 2388 66.80 22 2 66 82 C 2418 66.34 4 3 70 138 C 2469 70 18 8 70 343 C 2647 70 23 22 72 264 C 2582 72 6 16 74 120 C 2452 74.42 22 7 74 220 C 2544 74.95 10 14 75 128 C 2459 75.65 11 8 75 247 C 2567 75.21 10 15 75 467 C 2756 75 28 29 76 428 C 2722 76.99 22 27 80 65 C 2402 80. 23 3 81 259 C 2577 81.71 4 16 84 497 E 519 84.76 12 12 85 52 C 2394 85.54 22 2 85 225 C 2549 85 6 14 85 295 C 2607 85 1 18 86 32 C 2375 86 5 1 89 175 C 2503 89.37 8 10 90 232 C 2556 90 10 14 90 289 C 2601 90.50 5 18 93 35 C 2378 93.20 3 2 93 80 C 2416 93.20 3 5 93 114 C 2446 93.20 3 6 94 172 C 2500 94.90 22 11 96 367 C 2667 96.30 18 23 97 211 C 2536 97.67 23 14 99 405 C 2703 99 17 25 100 239 C 2561 100 5 15 100 244 C 2564 100.75 10 15 101 336 C 2642 101.39 4 22 105 216 C 2541 105 3 14 105 279 C 2590 105.78 8 17 105 526 E 539 105.03 12 10 106 215 C 2540 106.32 8 14 108 217 C 2542 108.06 8 14 109 282 C 2594 109.92 22 17 110 75 C 2411 110. 16 5 110 96 C 2431 110 5 6 110 380 C 2680 110 23 24 110 401 C 2699 110.25 1 26 110 574 E 590 110.15 12 17 113 142 C 2472 113.56 4 8 114 39 C 2382 114.98 18 2 115 255 C 2574 115 3 16 115 307 C 2615 115 3 20 115 334 C 2640 115 3 21 115 388 C 2687 115 3 25 115 427 C 2721 115 3 27 115 470 C 2759 115 3 29 116 356 C 2657 116.89 1 23 117 169 C 2497 117.03 3 10 117 430 C 2724 117.43 4 27 119 17 C 2360 119.40 19 1 120 233 C 2557 120 1 15 126 184 C 2511 126.00 5 11 127 432 C 2726 127.35 5 27 129 149 C 2479 129 5 9 131 459 C 2749 131.46 10 28 134 288 C 2600 134 5 18 134 309 C 2617 134 5 20 134 394 C 2693 134.32 22 25 134 403 C 2701 134.74 22 25 136 38 C 2381 136.16 5 2 139 41 C 2383 139.24 4 2 139 330 C 2637 139.70 22 21 139 418 C 2713 139.96 13 26 140 339 C 2643 140 22 21 140 444 C 2736 140 1 27 141 392 C 2691 141.22 4 25 142 623 E 631 142.22 12 24 144 389 C 2688 144.36 4 25 145 161 C 2490 145 5 9 145 369 C 2669 145 5 23 145 461 C 2750 145.75 10 28 153 290 C 2602 153.64 5 18 154 448 C 2738 154.01 5 28 155 42 C 2384 155 5 2 160 454 C 2744 160 27 28 164 323 C 2630 164 5 21 164 442 C 2734 164.11 5 27 168 185 C 2512 168.26 5 11 174 457 C 2747 174.34 8 28 179 160 C 2489 179.46 5 9 180 591 E 608 180.93 12 20 182 509 W 522 182.00 12 8 184 252 C 2572 184.25 5 15 185 537 E 552 185.93 12 12 186 294 C 2606 186.36 8 18 187 287 C 2599 187.22 5 18 192 250 C 2570 192 22 15 199 348 C 2652 199.40 5 22 200 228 C 2552 200 5 14 200 285 C 2597 200 27 18  200 375 C 2675 200 28 23 201 607 E 640 201.10 12 25 205 347 C 2651 205.74 22 22 206 206 C 2532 206.25 26 12 208 147 C 2477 208.65 5 8 208 458 C 2748 208.22 25 28 218 417 C 2712 218.26 5 26 223 123 C 2455 223.17 5 7 230 186 C 2513 230.66 25 11 247 643 E 661 247.78 12 29 251 638 W 649 251.13 15 26 254 489 E 504 254.00 15 4 258 614 E 616 258.02 12 21 259 514 E 516 259.01 12 7 261 85 C 2421 261.65 23 5 262 222 C 2546 262.60 5 14 264 9 C 2356 264.05 4 1 265 547 E 560 265.01 12 13 267 236 C 2560 267.58 22 15 269 559 E 575 269.88 12 16 271 269 C 2587 271.60 23 17 277 513 W 517 277.10 12 7 280 13 C 2355 280.60 22 1 282 592 E 609 282.18 12 20 283 590 E 607 283.06 12 20 286 78 C 2414 286.41 5 3 293 619 E 622 293.42 12 23 295 412 C 2707 295 26 26 297 552 E 561 297.08 12 13 299 536 E 553 299.63 12 12 301 73 C 2409 301.50 21 5 304 483 E 510 304.73 12 5 304 539 E 569 304.73 12 15 309 315 C 2623 309.14 8 20 311 280 C 2591 311.54 8 17 325 609 E 610 325.46 12 21 326 635 E 646 326.75 12 26 327 629 E 652 327.45 12 28 339 108 C 2440 339.45 22 6 339 620 E 623 339.16 12 23 342 452 C 2742 342.32 8 28 343 538 E 568 343.38 12 15 343 580 E 598 343.31 12 18 346 561 E 577 346.43 12 16 346 608 E 645 346.92 12 26 350 265 C 2583 350 21 16 356 501 E 531 356.37 12 9 359 600 E 632 359.96 12 24 361 606 E 639 361.79 12 25 368 124 C 2456 368.00 23 7 368 145 C 2475 368 23 8 368 179 C 2506 368 23 11 368 229 C 2553 368 23 14 368 261 C 2579 368.00 23 16 368 313 C 2621 368 23 20 368 358 C 2659 368 23 22 368 402 C 2700 368 23 25 368 446 C 2737 368 23 27 369 593 E 615 369.00 12 21 372 493 W 500 372.80 12 3 373 639 E 654 373.60 12 28 374 469 C 2758 374 17 29 374 573 E 589 374.42 12 17 374 621 E 624 374.42 12 23 379 588 E 605 379.26 12 20 380 148 C 2478 380 7 9 384 630 E 653 384.95 12 28 386 525 E 538 386.34 12 10 387 202 C 2528 387 17 12 387 492 W 501 387.26 12 3 392 476 E 494 392.55 12 2 393 504 E 528 393.86 12 9 393 637 W 648 393.57 15 26 393 644 E 663 393.62 15 29 398 516 E 514 398.75 12 7 400 324 C 2631 400.88 4 21 405 56 C 2396 405.38 4 3 410 115 C 2447 410.72 25 6 420 617 E 620 420.35 12 23 430 579 E 597 430.98 12 18 432 283 C 2595 432.25 4 18 432 484 E 509 432.47 12 5 436 503 E 530 436.65 12 9 439 515 E 515 439.51 12 7 440 535 E 551 440.27 12 12 446 192 C 2518 446.86 4 11 450 92 C 2427 450.59 17 5 450 127 C 2458 450.59 17 8 456 477 E 493 456.63 12 2 464 500 E 537 464.55 12 10 465 541 E 566 465.02 12 15 472 413 C 2708 472.87 4 26 472 560 E 576 472.09 12 16 473 533 E 549 473.57 12 12 473 545 E 557 473.57 12 13 474 159 C 2488 474.35 5 9 483 498 E 520 483.00 15 8 483 563 W 579 483.00 15 16 483 622 W 626 483.00 15 23 483 646 W 656 483 15 29 484 625 E 660 484.10 12 29 490 633 E 643 490.20 12 26 495 368 C 2668 495.42 4 23 497 478 E 492 497.88 12 2 497 495 W 498 497.97 12 3 500 33 C 2376 500 21 1 500 139 C 2470 500 21 8 500 231 C 2555 500 21 14 500 243 C 2563 500 8 15 500 254 C 2573 500 21 15 500 345 C 2649 500 24 22 500 362 C 2663 500 21 23 500 376 C 2676 500 8 23 500 397 C 2695 500 8 25 500 398 C 2696 500 8 25 500 471 C 2760 500 21 29 500 472 C 2761 500 21 29 500 582 E 596 500.91 12 18 502 486 E 507 502.81 12 5 505 612 E 613 505.84 12 21 513 572 E 588 513.44 12 17 516 634 E 644 516.116 12 26 531 581 E 594 531.30 12 18 533 604 E 637 533.66 12 25 537 571 E 587 537.45 12 17 538 523 E 535 538.32 12 10 542 534 E 550 542.91 12 12 542 589 E 606 542.91 12 20 547 31 C 2374 547.42 17 1 547 177 C 2504 547.42 17 11 548 618 E 621 548.51 12 23 550 214 C 2539 550 24 14 552 393 C 2692 552.87 17 25 552 431 C 2725 552.87 17 27 552 598 E 629 552.62 12 24 561 494 W 499 561.91 12 3 563 248 C 2568 563.06 4 15 566 557 E 573 566.88 12 16 566 642 E 659 566.46 12 29 569 465 C 2754 569.90 4 28 574 479 E 491 574.03 12 2 575 485 E 508 575.53 12 5 589 110 C 2442 589.40 4 6 589 502 E 529 589.96 12 9 595 613 E 614 595.69 12 21 596 540 E 567 596.15 12 15 596 599 E 630 596.12 12 24 601 546 E 558 601.00 12 13 610 605 E 638 610.74 12 25 616 146 C 2476 616 9 8 616 180 C 2507 616 9 11 621 93 C 2428 621.73 8 6 627 569 E 585 627.63 12 17 630 558 E 574 630.97 12 16 635 409 C 2705 635.69 27 26 643 524 E 536 643.20 12 10 645 578 E 595 645.08 12 18 671 221 C 2545 671.81 17 14 671 262 C 2580 671.81 17 16 671 341 C 2645 671.81 17 22 675 100 C 2435 675 8 6 688 553 E 559 688.29 12 13 695 116 C 2448 695.00 7 6 702 490 W 503 702.05 14 4 732 570 E 586 732.19 12 17 733 508 E 524 733.00 15 8 750 400 C 2698 750 21 26 770 281 C 2593 770.94 25 17 788 482 E 488 788.81 12 2 790 311 C 2619 790.75 17 20 796 586 E 603 796.26 12 20 800 601 W 634 800.03 15 24 802 587 E 604 802.32 12 20 830 499 E 511 830.88 12 7 842 481 E 489 842.19 12 2 842 487 E 506 842.80 12 5 845 616 E 619 845.14 12 23 850 585 W 602 850.20 15 18 852 550 E 556 852.47 12 13 873 532 E 548 873.83 12 12 888 505 E 527 888.88 12 9 890 480 E 490 890.20 12 2 893 518 E 512 893.06 12 7 899 235 C 2559 899 17 15 911 440 C 2732 911.35 25 27 912 230 C 2554 912.90 9 14 919 286 C 2598 919 2 18 921 602 E 635 921.48 12 25 922 611 E 612 922.47 12 21 923 129 C 2460 923. 5 8 924 530 E 546 924.04 12 12 926 496 E 497 926.48 12 3 927 549 E 554 927.77 12 12 948 542 E 565 948.24 12 14 960 577 E 593 960.21 12 18 979 575 E 591 979.37 12 18 981 627 E 650 981.35 12 28 982 531 E 547 982.73 12 12 985 543 E 564 985.99 12 14 991 97 C 2432 991 16 6 991 507 E 525 991.35 12 9 991 544 E 563 991.80 12 14 991 548 E 555 991.16 12 12 992 628 E 651 992.28 12 28 996 568 E 584 996.51 12 17 999 522 E 534 999.70 12 10 1000 55 C 2395 1000. 21 3 1000 333 C 2639 1000 21 21 1007 381 C 2681 1007 23 24 1019 556 E 572 1019.07 12 16 1020 610 E 611 1020.87 12 21 1033 488 E 505 1033.57 12 5 1034 506 E 526 1034.18 12 9 1042 632 E 642 1042.43 12 26 1046 566 E 582 1046.89 12 17 1050 554 E 570 1050.61 12 16 1050 603 E 636 1050.72 12 25 1053 615 E 618 1053.55 12 23 1062 520 E 532 1062.02 12 10 1069 555 E 571 1069.11 12 16 1076 475 E 495 1076.21 12 3 1081 631 E 641 1081.13 12 26 1113 517 E 513 1113.18 12 7 1122 521 E 533 1122.84 12 10 1136 456 C 2746 1136.47 6 28 1151 44 C 2386 1151 17 2 1151 567 E 583 1151.39 12 17 1158 597 E 628 1158.89 12 24 1176 640 E 657 1176.43 12 29 1177 474 E 496 1177.09 12 3 1184 641 E 658 1184.18 12 29 1197 83 C 2419 1197.81 5 5 1200 332 C 2638 1200 21 22 1203 178 C 2505 1203.31 22 11 1209 596 E 627 1209.08 12 24 1210 197 C 2523 1210.49 10 12 1345 529 W 545 1345.38 15 11 1352 297 C 2608 1352.93 25 19 1397 374 C 2674 1397.48 25 23 1426 576 E 592 1426.28 12 18 1452 317 C 2625 1452.77 25 20 1500 34 C 2377 1500 21 3 1500 76 C 2412 1500 21 10 1500 355 C 2656 1500 21 23 1500 421 C 2716 1500 21 27 1500 422 C 2717 1500 21 28 1510 473 C 2762 1510 21 29 1549 510 W 523 1549.00 14 8 1562 36 C 2379 1562.80 2 2 1562 67 C 2403 1562.80 2 5 1562 125 C 2457 1562.80 2 7 1703 207 C 2533 1703.40 2 12 1703 527 W 541 1703.92 15 11 1773 171 C 2499 1773.70 2 11 1773 267 C 2585 1773.70 2 16 1800 205 C 2531 1800 21 13 1800 246 C 2566 1800 21 17 1804 3 C 2313 1804.52 22 1 1850 342 C 2646 1850.16 2 22 1850 386 C 2685 1850.16 2 25 1850 443 C 2735 1850.16 2 27 1863 584 W 600 1863.74 15 18 1875 308 C 2616 1875.10 2 20 1887 68 C 2404 1887.00 17 5 2000 2 C 2332 2000 21 1 2000 156 C 2485 2000 21 9 2000 383 C 2683 2000. 21 25 2210 511 W 521 2210.00 14 8 2210 564 W 580 2210.00 14 16 2210 595 E 625 2210.00 14 23 2210 647 W 655 2210. 14 29 2276 626 W 662 2276.24 14 29 2386 87 C 2423 2386 17 5 2424 636 W 647 2424.72 14 26 2792 624 W 633 2792.12 14 24 2861 594 W 617 2861.14 14 21 3000 245 C 2565 3000 21 15 3178 209 C 2534 3178.45 22 14 3391 512 W 518 3391.80 14 7 3920 426 C 2720 3920.58 17 27 4000 94 C 2429 4000. 21 6 4255 551 W 562 4255.04 14 13 4412 562 W 578 4412.14 14 16 4521 491 W 502 4521.60 14 4 4601 519 W 540 4601.70 14 10 4812 424 C 2719 4812.51 23 27 5659 583 W 599 5659.58 14 18 10000 379 C 2679 10000 23 24 14850 291 C 2603 14850. 22 18 PASCALER*?  Message #0. >left parenthesis or constant expected in simple type; skipping 1identifier expected after reserved word "PROGRAM"ype; skipping reserved word "PROGRAM" expecteded word "PROGRAM"ype; skipping 5right parenthesis expected to terminate argument list skipping 1colon expected after constant in "CASE" statementlist skipping .period expected to terminate program; skippingentlist skipping >colon/semicolon/left paren. expected after proc name; skipping /reserved word "OF" expected in "CASE" statement name; skipping >this proc/func requires argument(s); left parenthesis expected 5unexpected item at start of type definition; skipping expected )left bracket expected in array definitionon; skipping expected 0right bracket expected to terminate set constantpping expected 8reserved word "END" expected to terminate proc/func bodypected 1semicolon expected after proc/func body; skippingnc bodypected 4integer constant expected after reserved word "GOTO"bodypected *equal sign expected in constant definitionord "GOTO"bodypected 9reserved word "BEGIN" expected at start of proc/func bodyected -unexpected item in declaration part; skippingoc/func bodyected 5identifier or reserved word "CASE" expected; skippingbodyected 4comma expected in argument list of "INDEX" intrinsicgbodyected $period expected to terminate programINDEX" intrinsicgbodyected 5double period expected in definition of subrange typebodyected 4identifier expected in constant definition; skippingebodyected !identifier expected in field listefinition; skippingebodyected 0identifier expected in "FOR" statement; skippingpingebodyected %identifier expected in parameter listt; skippingpingebodyected 6type identifier expected after colon in parameter listodyected )identifier expected in pointer definitionarameter listodyected identifier expected after reserved word "PROCEDURE"/"FUNCTION" +first argument of "READLN" must be variableOCEDURE"/"FUNCTION" identifier expected after periodbe variableOCEDURE"/"FUNCTION" 5identifier expected in definition of enumeration typeFUNCTION" 0identifier expected in type definition; skipping typeFUNCTION" *identifier expected in variable definitionipping typeFUNCTION" $identifier expected in argument listnitionipping typeFUNCTION" +tag field type must be identifier; skippingpping typeFUNCTION" 0tag field identifier or type identifier expected typeFUNCTION" .identifier expected after reserved word "WITH"ed typeFUNCTION" 5right parenthesis expected to terminate argument listFUNCTION" >right parenthesis expected to terminate program parameter list (right parenthesis expected in expressionprogram parameter list 6right parenthesis expected to terminate parameter listter list unexpected item after right paren. in parameter list; skippingg;unexpected item follows procedure/function header; skippingingg2unexpected item in reference to variable; skipping skippinginggunexpected item after right paren. in record variant; skippingg4identifier or reserved word "VAR" expected; skipping; skippingg+unexpected item in parameter list; skipping skipping; skippingg+unexpected item in parameter list; skipping skipping; skippingg+unexpected item in parameter list; skipping skipping; skippingg=semicolon expected after "assembler" in proc/func declarationgg/reserved word "OF" expected in array definitionnc declarationgg5reserved word "OF" expected in definition of set typelarationgg6reserved word "OF" expected after reserved word "FILE"arationgg7reserved word "OF" expected in header of record variantrationgg+left parenthesis expected in record variantcord variantrationgg8unexpected item follows reserved word "PACKED"; skippingationgg3right bracket expected to terminate array subscriptppingationgg*right bracket expected in array definitionsubscriptppingationgg5right bracket expected to terminate string definitioningationgg:reserved word "END" expected to terminate "CASE" statementionggincompatible types of constants in definition of subrange typegfile may not be field of record in definition of subrange typeg#array index may not be of type REALdefinition of subrange typeg6tag field of record variant must be scalar or subrangenge typegsemicolon expected after keyword "forward" in proc/func headerg)index of array must be scalar or subrange" in proc/func headerg-base type of set must not be REAL nor INTEGER proc/func headerg7intrinsics "PRED" and "SUCC" require scalar as argument headergmay not read into packed fieldequire scalar as argument headerg8unsatisfied forward declaration of procedure or functionheaderg(semicolon expected after type definitiondure or functionheadergfile value parameter not allowed; file must be "VAR" parametergitem preceding uparrow must be reference to file or to pointerg>string literal argument not same length as packed array param.g8illegal type of loop control variable in "FOR" statementparam.g5illegal type of expression in "CASE" statement headerentparam.gsubrange bounds must be scalar; STRING is PACKED ARRAY OF CHARg&array index may not be of type INTEGER is PACKED ARRAY OF CHARg+assignment to standard function not allowedACKED ARRAY OF CHARg&equal sign expected in type definitionlowedACKED ARRAY OF CHARgno such field in this recorddefinitionlowedACKED ARRAY OF CHARg>identifier or "END" or "CASE" expected in field list; skippinggargument must be variableASE" expected in field list; skippinggargument of "EXIT" must be user-declared procedure or functiong>argument of "EXIT" must be user-declared procedure or functiong/first argument of "FILETITLE" must be file nameure or functiong6first argument of "GET"/"PUT"/"SEEK" must be file namefunctiong3second argument of "SEEK" intrinsic must be integeramefunctiong7comma expected; "SEEK" intrinsic requires two argumentsunctiong?"READ"/"READLN" require integer, real, char, or string argument$error in type of intrinsic parameterl, char, or string argument$error in type of intrinsic parameterl, char, or string argument$error in type of intrinsic parameterl, char, or string argument$error in type of intrinsic parameterl, char, or string argumentstring argument required hererameterl, char, or string argument6second argument to "SUBSTR" must be integer expression argument5third argument to "SUBSTR" must be integer expressionn argument;"WRITE"/".LN" require integer expression after second colonment>"WRITE"/".LN" require int/bool/real/char/string/packd.ary.chart6explicit argument to "PAGE" intrinsic is not file nameary.charttoo few arguments to "PAGE" intrinsic is not file nameary.chart1type conflict of operands in assignment statement nameary.chart*type conflict of operands of "IN" operatoratement nameary.chart0type conflict of operands of relational operatort nameary.chart>comparison of packed arrays of char requires identical lengthst8only equal/unequal comparisons permitted for array typesengthst9only equal/unequal comparisons permitted for record typesngthst6operand of unary plus or minus must be real or integerpesngthst)illegal type of operand(s) of binary plusal or integerpesngthst*illegal type of operand(s) of binary minusl or integerpesngthst6illegal operand(s) of "OR" operator; check parenthesespesngthst,illegal type of operand(s) of multiplicationarenthesespesngthst+illegal type of operand(s) of real divisionnarenthesespesngthst?proc/func declaration is too deeply nested; display limit is 12>proc/func declaration too deeply nested; lex. level limit is 82,illegal type of operand(s) of "DIV" operator. level limit is 829proc/func too long; use swapping and/or overlaid compiler is 82,illegal type of operand(s) of "MOD" operatorlaid compiler is 82)too many jumps in this procedure/functiontorlaid compiler is 82subrange bounds must be scalar; STRING is PACKED ARRAY OF CHAR29comma expected in argument list of "WRITE" to "TEXT" file CHAR26label on this statement was not declared in this blockile CHAR2;unexpected item follows procedure/function header; skippingHAR28reference to entire array expected in "PACK" or "UNPACK"ingHAR29explicit argument of "PAGE" intrinsic must be "TEXT" filengHAR2&error in real constant; digit expectedmust be "TEXT" filengHAR27string maximum length must be in inclusive range 1..255lengHAR2.too many segments in this program; limit is 16ge 1..255lengHAR2-record too deeply nested; display limit is 126ge 1..255lengHAR27"WITH" statement too deeply nested; display limit is 12lengHAR2;too many procedures/functions in this segment; limit is 149HAR29proc/func too long; use swapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2error in POINT statementswapping and/or overlaid compiler49HAR2cannot create overlayentswapping and/or overlaid compiler49HAR2cannot create overlayentswapping and/or overlaid compiler49HAR29source line too long to process; split into several lines49HAR2.may not switch segments; rearrange source codeveral lines49HAR2>reserved word "PROCEDURE" or reserved word "FUNCTION" expected2=was declared both "forward" and "segment"; add "segment" hered2"record type of this file not knownegment"; add "segment" hered2#subrange of type REAL not permittedgment"; add "segment" hered2error in POINT statementt permittedgment"; add "segment" hered2cannot create overlayentt permittedgment"; add "segment" hered2(zero-length array elements not permitted"; add "segment" hered29explicit argument of "EOLN"/"EOLCHAR" must be "TEXT" filehered2/illegal character in source text; blank assumedTEXT" filehered21included file may not contain $I control commentsXT" filehered21procedure/function parameters not yet implementedXT" filehered20field addressing problem -- Please inform RDS.dXT" filehered23constant addressing problem -- Please inform RDS." filehered23indirect addressing problem --1 Please inform RDS." filehered27unanticipated end of source file; check BEGIN/END pairslehered29program parameter not declared as file in outermost blockhered27assembler module must not be declared as Pascal segmentckhered28comma expected in argument list of "WRITE" to typed filekhered2#"OUTPUT" not declared in this scope"WRITE" to typed filekhered2-"OUTPUT" not declared as "TEXT" in this scope typed filekhered23real number may not be argument of "PRED" or "SUCC" filekhered2file of file not allowedrgument of "PRED" or "SUCC" filekhered25too much local data; stack frame limit is 16383 wordsilekhered2>"PACK"/"UNPACK" offset not compatible with index type of array28reference to entire array expected in "PACK" or "UNPACK" array2>"PACK"/"UNPACK" require both arrays to have same element types26"PACK"/"UNPACK" require reference to packed array herent types2:"PACK"/"UNPACK" require reference to non-packed array hereypes22comma expected in argument list of "PACK"/"UNPACK"ray hereypes22comma expected in argument list of "PACK"/"UNPACK"ray hereypes22comma expected in argument list of "PACK"/"UNPACK"ray hereypes2?illegal assignment; PACKED ARRAY OF CHAR should have lowbound=1segment too long; limit is 32KBY OF CHAR should have lowbound=1segment too long; limit is 32KBY OF CHAR should have lowbound=1)"ODD" intrinsic requires integer argumentshould have lowbound=1)"CHR" intrinsic requires integer argumentshould have lowbound=1segment too long; limit is 32KBr argumentshould have lowbound=11too many elements in packed array; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=1array too large; limit is 32KBray; limit is 32767ave lowbound=11too many elements in packed array; limit is 32767ave lowbound=19global labels not permitted in separately compiled moduleound=10 DO BEGIN H:=H+1/N;N:=N-1; END; WRITELN(H) END. BTREE PROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : INTEGER; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : INTEGER; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : INTEGER; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGIN IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[I] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END E ND (*SEARCH*); PROCEDURE DELETE(X : INTEGER; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDURE UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.E[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.E[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END END END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY : 4); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THEN BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN BEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . BYTE01*; ROUUTINE TO WRITE A BYTE TO A GIVEN BYTE ADDRESS ; CONDITIONS ; ; ENTRY ; AC0 - BYTE TO BE WRITTEN IN RH BYTE ; AC1 - UNDEFINED ; AC2 - BYTE POINTER WHERE TO PUT BYTE ; AC3 - RETURN TO THIS ADDRESS ; ; RETURN ; AC0UNDEFINED ; AC1 - UNDEFINED ; AC2 - UNDEFINED ; AC3 - UNDEFINED ; .ENT BGET,BPUT .NREL .EXTD LHB,RHB BPUT: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;RIGHT HAND BYTE ADDRESS MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SKIP IF LHB ;NOTE CARRY IS SET IF LHB MOVS 0,0,SKP ;SWAP BYTES IN WORD TO BE PUT ;AND SKIP NEXT INSTRUCTION MOVS 1,1 ;SWAP MASK IF LH BYTE LDA 3,0,2 ;LD AC3,WITH WORD TO RECEIVE BYTE AND 1,3 ;AND OUT OTHER BYTE ADD 0,3 ;ADD IN BYTE TO BE PUT STA 3,0,2 ;RESTORE UPDATED WORD JMP @USP ;RETURN TO CALLER ; CONDITIONS ; ; ENTRY ; AC0 - UNDEFINED ; AC1 - UNDEFINED ; AC2 - BYTE POINTER TO BYTE LOCATION ; ; EXIT ; AC0 - VALUE OF BYTE IN RH BYTE (MASKED TO RHB) ; AC1 - UNDEFINED ; AC2 - UNDEFINED BGET: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;GET RHB MASK MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SET CARRY ;IF LHBYTE. SKIP IF LHBYTE MOVS 1,1 ;SWAP MASK BYTES TO MAKE LHB MASK LDA 0,0,2 ;GET WORD CONTAINING BYTE AND 1,0,SNC ;AND OUT OTHER BYTE AND SKIP IF LHBYTE MOVS 0,0 ;SWAP LHBYTE INTO RHBYTE JMP @USP ;RETURN TO CALLER .END TTTPX 5pTT Copyright (C) 1980 Rational Data Systems 5%2ť2ń2ń&22` hTEST2 PROGRAM TEST(INPUT,OUTPUT); VAR I : INTEGER; X : REAL; BEGIN WRITELN( 'WELCOME TO PROG TEST2'); X := 1.1; I := 3; X := I*X; WRITELN( ' LINE 1',X : 6 : 2,I); I := TRUNC(X); X := I; WRITELN(' LINE 2',I,X : 6 : 2) END. TESTBU UsrPROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR I : INTEGER; STR : ALPHANUMERIC; {$I GETINTEGER.PI} {$I GETCOLUMN.PI} BEGIN REPEAT WRITELN('ENTER STRING'); WRITELN; READLN(STR); WRITELN(STR); WRITELN(' ',GETCOLUMN(STR)); UNTIL EOF(INPUT) END. PL5PA"ll2PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCEDURE); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF SYMBOL; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCEDURE: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1;'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GO TO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH} BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GO TO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCEDURE : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5;L:3;A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCEDURE : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYN = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION[ID]; IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION[ID]; IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCEDURE THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTANTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCEDURE);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH mTABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])); 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]=NEQ; ZGTR; Z<=LEQ; Z>=GEQ; Z;SEMICOLN; MNEMONIC[LIT] := 'LIT'; Z[OPR] := 'OPR'; Z[LOD] := 'LOD';Z[STO] := 'STO'; Z[CAL] := 'CAL'; Z[INT] := 'INT'; Z[JMP] := 'JMP'; Z[JPC] := 'JPC'; DECLGEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CZ := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0.[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. 1979D4l* 0 99 106 309 310 425 426 427 475 476 478 479 480 481 482 483 484 486 487 489 490 491 492 493 494 518 SEARCH KEY 0 99 C 2804 12.45 106 CM 1995 309 CC 770 310 CC 779 425 CC 806 426 CC 807 427 CC 808 475 CC 2789 476 CC 2798 478 CC 2801 479 CC 2811 480 CC 2859 481 CC 2876 482 CC 2884 483 CC 2885 484 CC 2911 486 CC 2922 487 CC 2923 489 CC 2954 490 CC 2974 491 CC 2977 492 CC 2980 493 CC 2982 494 CC 2873 518 CC 2969 AMOUNT = 1.245E+01 1 36 51 97 101 104 151 166 197 252 280 298 338 396 399  406 438 439 442 467 508 SEARCH KEY 1 36 C 2773 13 1 51 C 2796 14 1 97 C 2802 7 1 101 C 2806 2 1 104 C 2809 23.35 1 151 C 2835 8.93 1 166 C 2854 20.75 1 197 C 2878 121.92 1 252 C 2906 60 1 280 C 2907 45 1 298 C 2927 225 1 338 C 2938 60.80 1 396 C 2981 34 1 399 C 2991 31 1 406 C 2986 22 1 438 C 3000 230 1 439 C 3001 359 1 442 C 3010 69 1 467 C 3045 10 1 508 C 3062 31 1 AMOUNT = 1.387E+03 2 3 47 98 141 186 242 299 300 345 387 417 418 419 420 SEARCH KEY 2 3 C 2763 1850.16 2 47 C 2792 1850.16 2 98 C 2803 1850.16 2 141 C 2826 1850.16 2 186 C 2865 1850.16 2 242 C 2897 1850.16 2 299 C 2928 1850.16 2 300 C 2929 395.75 2 345 C 2945 1850.16 2 387 C 2985 1850.16 2 417 C 3013 550 2 418 C 3014 93.39 2 419 C 3015 368.32 2 420 C 3018 414.75 2 AMOUNT = 1.847E+04 3 48 102 142 188 237 302 342 354 370 410 443 450 455 458 459 460 464 465 466 471 504 506 SEARCH KEY 3 48 C 2793 115 3 102 C 2807 115 3 142 C 2827 115 3 188 C 2867 115 3 237 C 2892 115 3 302 C 2931 115 3 342 C 2942 115 3 354 C 2958 25 3 370 C 2959 30 3 410 C 2993 30.95 3 443 C 3012 600 3 450 C 3023 535.05 3 455 C 3028 44.82 3 458 C 3033 215.05 3 459 C 3034 6.30 3 460 C 3035 230 3 464 C 3039 55.06 3 465 C 3042 88.17 3 466 C 3043 49.80 3 471 C 3052 612.92 3 504 C 3058 385 3 506 C 3060 6.95 3 AMOUNT = 3.720E+03 4 9 122 123 149 160 161 162 245 304 334 374 408 409 411 414 454 497 500 510 SEARCH KEY 4 9 C 2771 630.50 4 122 C 2822 1291.19 4 123 C 2823 275.82 4 149 C 2833 64.59 4 160 C 2847 739.11 4 161 C 2848 108.10 4 162 C 2849 341.33 4 245 C 2900 717.86 4 304 C 2934 83.31 4 334 C 2908 601.81 4 374 C 2965 174.85 4 408 C 2989 2 4 409 C 2990 890.60 4 411 C 3003 63.01 4 414 C 3006 190.25 4 454 C 3027 327.12 4 497 C 3041 3.57 4 500 C 3053 256.07 4 510 C 3072 129.64 4 AMOUNT = 6.890E+03 5 11 13 14 39 40 44 49 52 118 119 153 154 155 158 159 168 169 181 184 187 192 193 199 200 201 202 203 204 233 234 238 241 244 249 291 303 329 330 331 336 400 407 415 416 444 446 SEARCH KEY 5 11 C 2777 47.70 5 13 C 2780 6.94 5 14 C 2781 64.25 5 39 C 2778 258.40 5 40 C 2782 160.96 5 44 C 2788 93.70 5 49 C 2794 75 5 52 C 2797 150 5 118 C 2818 13.80 5 119 C 2819 30 5 153 C 2837 30 5 154 C 2838 12.25 5 155 C 2839 10.94 5 158 C 2844 176 5 159 C 2845 446.10 5 168 C 2858 9.93 5 169 C 2860 28.50 5 181 C 2846 33.44 5 184 C 2857 83.07 5 187 C 2866 30.29 5 192 C 2871 546.84 5 193 C 2872 68.98 5 199 C 2880 11.25 5 200 C 2881 23.85 5 201 C 2882 49.52 5 202 C 2883 9.80 5 203 C 2886 24.45 5 204 C 2889 77 5 233 C 2887 30 5 234 C 2888 41.62 5 238 C 2893 27.46 5 241 C 2896 16.85 5 244 C 2899 177 5 249 C 2904 169.04 5 291 C 2915 26 5 303 C 2932 18.02 5 329 C 2914 101.18 5 330 C 2916 70.65 5 331 C 2917 76.47 5 336 C 2933 51.22 5 400 C 2992 7.50 5 407 C 2987 47.20 5 415 C 3009 89.20 5 416 C 3011 61.95 5 444 C 3016 4 5 446 C 3019 31 5 AMOUNT = 3.619E+03 6 112 194 195 294 468 512 513 SEARCH KEY 6 112 C 2812 63.75 6 194 C 2874 298.05 6 195 C 2875 766.49 6 294 C 2920 153.50 6 468 C 3046 5428.82 6 512 C 3077 10.77 6 513 C 3079 37.50 6 AMOUNT = 6.758E+03 7 113 385 501 SEARCH KEY 7 113 C 2813 545 7 385 C 2979 500 7 501 C 3054 1743.66 7 AMOUNT = 2.788E+03 8 5 6 7 15 45 100 105 185 232 236 293 398 505 507 SEARCH KEY 8 5 C 2765 314.49 8 6 C 2766 314.49 8 7 C 2767 100 8 15 C 2786 228.23 8 45 C 2790 1000 8 100 C 2805 125 8 105 C 2810 131 8 185 C 2864 25.83 8 232 C 2863 32 8 236 C 2891 129.76 8 293 C 2919 263.44 8 398 C 2988 17.50 8 505 C 3059 172.14 8 507 C 3061 646.33 8 AMOUNT = 3.500E+03 9 381 SEARCH KEY 9 381 C 2973 1550 9 AMOUNT = 1.550E+03 10 1 296 350 397 437 440 441 451 SEARCH KEY 10 1 C 3049 44.55 10 296 C 2925 54 10 350 C 2950 150.70 10 397 C 2984 7.68 10 437 C 2999 80 10 440 C 3007 37.12 10 441 C 3008 12.40 10 451 C 3024 12.60 10 AMOUNT = 3.990E+02 11 10 164 346 498 SEARCH KEY 11 10 C 2774 38.75 11 164 C 2851 26.19 11 346 C 2946 20.76 11 498 C 3048 22.56 11 AMOUNT = 1.082E+02 12 16 17 18 19 20 21 22 23 25 53 54 55 56 57 58 59 60 61 62 63 64 65 66 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 126 127 128 129 130 131 132 137 170 171 172 173 174 175 176 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 223 254 255 256 257 258 259 260 264 265 266 272 273 274 307 308 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 357 358 360 378 421 422 423 424 434 435 516 517 SEARCH KEY 12 16 EM 665 1102.70 12 17 EM 666 1209.04 12 18 EM 667 1350.43 12 19 EM 668 199.40 12 20 EM 669 550.32 12 21 EM 670 539.29 12 22 EM 671 526.45 12 23 EM 672 344.29 12 25 EM 680 411.53 12 53 EM 674 1360.43 12 54 EM 675 209.40 12 55 EM 676 1053.55 12 56 EM 677 1083.87 12 57 EM 678 516.30 12 58 EM 679 550.39 12 59 EM 681 276.95 12 60 EM 684 209.40 12 61 EM 685 1101.20 12 62 EM 686 1580.40 12 63 EM 687 533.66 12 64 EM 688 610.74 12 65 EM 689 422.46 12 66 EM 690 215.64 12 76 EM 683 1360.43 12 77 EM 691 209.40 12 78 EM 692 981.35 12 79 EM 693 1050.72 12 80 EM 694 479.62 12 81 EM 695 554.62 12 82 EM 696 369.47 12 83 EM 697 329.08 12 84 EM 699 1398.97 12 85 EM 700 194.48 12 86 EM 701 1016.68 12 87 EM 702 1156.68 12 88 EM 703 563.99 12 89 EM 704 640.40 12 90 EM 705 470.84 12 91 EM 706 483.71 12 126 EM 711 1408.97 12 127 EM 712 204.48 12 128 EM 713 1091.05 12 129 EM 714 1096.88 12 130 EM 715 595.09 12 131 EM 716 613.84 12 132 EM 717 514.82 12 137 EM 718 482.51 12 170 EM 722 1032.90 12 171 EM 723 1408.97 12 172 EM 725 1166.68 12 173 EM 726 527.17 12 174 EM 727 560.96 12 175 EM 728 492.78 12 176 EM 729 298.75 12 205 EM 724 204.48 12 206 EM 731 1408.97 12 207 EM 732 204.48 12 208 EM 733 863.83 12 209 EM 734 915.34 12 210 EM 735 368.67 12 211 EM 736 514.29 12 212 EM 737 430.51 12 213 EM 738 322.85 12 214 EM 740 1420.97 12 215 EM 741 204.48 12 216 EM 742 1131.44 12 217 EM 743 1096.04 12 218 EM 744 551.67 12 219 EM 745 640.60 12 220 EM 746 385.40 12 221 EM 747 360.91 12 223 EM 751 1049.82 12 254 EM 749 1424.97 12 255 EM 750 204.48 12 256 EM 752 992.88 12 257 EM 753 551.67 12 258 EM 754 550.23 12 259  EM 755 431.37 12 260 EM 756 343.46 12 264 EM 762 1017.67 12 265 EM 763 929.08 12 266 EM 764 518.89 12 272 EM 765 271.86 12 273 EM 766 384.02 12 274 EM 767 256.22 12 307 EM 768 1426.97 12 308 EM 769 204.48 12 311 EM 771 864.72 12 312 EM 772 1001.57 12 313 EM 774 640.60 12 314 EM 775 302.19 12 315 EM 776 451.39 12 316 EM 777 429.02 12 317 EM 778 314.65 12 318 EM 780 568.52 12 319 EM 781 993.27 12 320 EM 784 551.67 12 321 EM 785 993.62 12 322 EM 786 993.62 12 323 EM 787 444.04 12 324 EM 788 375 12 325 EM 789 415.74 12 326 EM 790 204.48 12 327 EM 791 1426.97 12 328 EM 792 1426.97 12 357 EM 794 1426.97 12 358 EM 795 204.48 12 360 EM 793 561.13 12 378 C 2970 22000 12 421 EM 798 204.48 12 422 EM 799 204.48 12 423 EM 800 1426.97 12 424 EM 801 426.97 12 434 EM 804 1426.97 12 435 EM 805 204.48 12 516 C 660 484.10 12 517 EM 815 887.50 12 AMOUNT = 1.021E+05 14 24 26 67 92 93 138 139 177 178 189 222 224 263 275 276 301 359 436 SEARCH KEY 14 24 EM 673 2468.66 14 26 EM 682 2234.86 14 67 EM 698 3861.48 14 92 EM 707 2984.02 14 93 EM 708 555.34 14 138 EM 719 3016.96 14 139 EM 720 125.24 14 177 EM 730 2831.26 14 178 EM 739 2326.89 14 189 C 2868 27.76 14 222 EM 748 2850.69 14 224 EM 758 2575.50 14 263 EM 761 80.68 14 275 EM 782 2500 14 276 EM 783 1956.74 14 301 C 2930 2839.54 14 359 EM 796 2090.76 14 436 EM 809 1835.96 14 AMOUNT = 3.716E+04 15 94 95 140 253 261 262 333 366 SEARCH KEY 15 94 EM 709 310.37 15 95 EM 710 1372.35 15 140 EM 721 879.67 15 253 C 2909 81.22 15 261 EM 759 1391.48 15 262 EM 760 1569.95 15 333 C 2910 897 15 366 EM 797 360.94 15 AMOUNT = 6.863E+03 17 4 103 114 143 157 165 230 243 250 297 337 348 356 457 470 485 SEARCH KEY 17 4 C 2764 552.87 17 103 C 2808 1105.74 17 114 C 2814 1406.50 17 143 C 2828 552.87 17 157 C 2843 1444.50 17 165 C 2853 611.53 17 230 C 2861 611.53 17 243 C 2898 601.53 17 250 C 2905 300 17 297 C 2926 306.79 17 337 C 2937 398 17 348 C 2948 124.89 17 356 C 2962 1000 17 457 C 3032 202.96 17 470 C 3051 164 17 485 C 2912 787.00 17 AMOUNT = 1.017E+04 18 8 37 145 190 196 247 248 339 447 SEARCH KEY 18 8 C 2770 20.07 18 37 C 2775 12.82 18 145 C 2830 88 18 190 C 2869 80 18 196 C 2877 16 18 247 C 2902 3 18 248 C 2903 22 18 339 C 2939 19.75 18 447 C 3020 8 18 AMOUNT = 2.696E+02 20 33 96 SEARCH KEY 20 33 C 2768 677.50 20 96 C 2800 38 20 AMOUNT = 7.155E+02 21 502 511 SEARCH KEY 21 502 C 3055 1200 21 511 C 3074 2500 21 AMOUNT = 3.700E+03 22 150 355 401 448 449 SEARCH KEY 22 150 C 2834 157.50 22 355 C 2961 100 22 401 C 2994 196.14 22 448 C 3021 262.25 22 449 C 3022 34.90 22 AMOUNT = 7.507E+02 23 35 38 41 115 182 183 191 198 235 239 332 402 403 404 405 412 456 477 488 495 SEARCH KEY 23 35 C 2772 736 23 38 C 2776 7.30 23 41 C 2783 563.93 23 115 C 2815 368 23 182 C 2852 101.44 23 183 C 2856 513.12 23 191 C 2870 736 23 198 C 2879 1633.42 23 235 C 2890 104.82 23 239 C 2894 3.95 23 332 C 2913 133.61 23 402 C 2995 60.93 23 403 C 2996 202.41 23 404 C 2997 20.58 23 405 C 2998 118.46 23 412 C 3004 5.80 23 456 C 3029 397.33 23 477 C 2799 157. 23 488 C 2924 368 23 495 C 3030 626.30 23 AMOUNT = 6.858E+03 24 50 144 469 SEARCH KEY 24 50 C 2795 114.48 24 144 C 2829 75 24 469 C 3047 300 24 AMOUNT = 4.894E+02 25 12 117 120 121 156 163 179 180 231 240 295 349 382 445 514 519 SEARCH KEY 25 12 C 2779 229.63 25 117 C 2817 151.18 25 120 C 2820 692 25 121 C 2821 100 25 156 C 2842 273.55 25 163 C 2850 428.08 25 179 C 2840 770.93 25 180 C 2841 32.27 25 231 C 2862 171.16 25 240 C 2895 244.30 25 295 C 2921 1159.13 25 349 C 2949 106.45 25 382 C 2975 294.74 25 445 C 3017 1208.43 25 514 C 3080 1298.05 25 519 C 3073 1340.73 25 AMOUNT = 8.500E+03 26 34 42 43 46 124 125 146 147 152 246 384 499 503 509 515 SEARCH KEY 26 34 C 2769 125 26 42 C 2784 67 26 43 C 2785 45.00 26 46 C 2791 100 26 124 C 2824 100 26 125 C 2825 25 26 146 C 2831 20 26 147 C 2832 108 26 152 C 2836 25 26 246 C 2901 50 26 384 C 2978 35 26 499 C 3050 35 26 503 C 3057 60 26 509 C 3063 30 26 515 C 3056 10 26 AMOUNT = 8.350E+02 27 167 292 343 344 352 353 368 369 433 452 461 462 463 496 SEARCH KEY 27 167 C 2855 500 27 292 C 2918 336.98 27 343 C 2943 350 27 344 C 2944 100 27 352 C 2952 1057.58 27 353 C 2953 830 27 368 C 2956 60 27 369 C 2957 125 27 433 EM 803 1207.97 27 452 C 3025 547.25 27 461 C 3036 50 27 462 C 3037 288 27 463 C 3038 150 27 496 C 3031 30 27 AMOUNT = 5.632E+03 28 116 306 SEARCH KEY 28 116 C 2816 600 28 306 C 2936 1390 28 AMOUNT = 1.990E+03 32 2 340 341 347 351 367 371 372 373 375 376 377 379 380 383 386 413 453 SEARCH KEY 32 2 C 3065 223.70 32 340 C 2940 30.95 32 341 C 2941 31.65 32 347 C 2947 75.64 32 351 C 2951 8.46 32 367 C 2955 1301.13 32 371 C 2960 10.35 32 372 C 2963 178.83 32 373 C 2964 270.22 32 375 C 2966 81.63 32 376 C 2967 365.44 32 377 C 2968 34.70 32 379 C 2971 1500 32 380 C 2972 398.04 32 383 C 2976 548.34 32 386 C 2983 398.04 32 413 C 3005 81.83 32 453 C 3026 40 32 AMOUNT = 5.578E+03 33 305 SEARCH KEY 33 305 C 2935 56 33 AMOUNT = 5.600E+01 FLOADSVFLOADSVSYSLBSYSLBBTREEPA rrPROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : INTEGER; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : INTEGER; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : INTEGER; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGIN IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[I] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROCEDURE DELETE(X : INTEGER; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDURE UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,MB,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.E[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.E[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END END END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY : 4); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THEN BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN BEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . T3 PROGRAM T3 (INPUT,OUTPUT); TYPE YEAR = 1800..2000; VAR YEARN : YEAR; BEGIN WHILE NOT EOF(INPUT) DO BEGIN READ (INPUT,YEARN); WRITELN (OUTPUT,YEARN); END; END. T212 PROGRAM T21; TYPE ALPHA = PACKED ARRAY[1..13] OF CHAR; VAR IOFILE : INTEGER; FILENAME : ALPHA; PROCEDURE OPEN ( IOFILENUMBER : INTEGER );EXTERNAL; BEGIN IOFILE := 8; FILENAME := 'INPUTFILE0.DR'; OPEN (IOFILE) END. SEQ-7; READ SEQUENTIAL SUBRUTINE ; CALL VIA..... ; ; RDSQ(IOCHANNEL:INTEGER; BUFFER:ARRAY OF CHAR OR INTEGER; ; NBYTES:INTEGER; VAR NBYTESREAD:INTEGER; ; VAR ERROR:INTEGER) ; CONTENTS OF DESCRIPTION ; AC3 ERROR BYTE ADDRESS IS ON THE STACK ; AC3-1 NBYTESREAD BYTE ADDRESS IS ON THE STACK ; AC3-3 NBYTES INTEGER VARIABLE ON STACK ; AC3-4 BUFFER BYTE ADDRESS ON STACK ; AC3-5 IOCHANNEL INTEGER VALUE ON STACK .TITL SEQ .ENT ?RDSQ .EXTN XPRET .NREL ERROR=0 NBRED=ERROR-1 NBYTES=NBRED-1 BUFFER=NBYTES-1 IOCHAN=BUFFER-1 ?RDSQ: STA 3,USP ;SET UP USER STACK POINTER LDA 2,IOCHANNEL,3 ;GET CHANNEL NO LDA 1,NBYTES,3 ;GET NO OF BYTES TO READ IN LDA 0,BUFFER,3 ;GET BUFFER POINTER .SYSTM .RDS CPU JMP .+2 ;JUMP AROUND IF NOT OK ADC 2,2 ;GENERATE -1 OF NO ERRORS MOV 2,0 LDA 2,ERROR,3 ;GET ERROR BYTE ADDRESS MOVZR 2,2 ;MAKE IT AN ADDRESS STA 0,0,2 ;RETURN ERROR (IF ANY) TO PASCAL LDA 2,NBRED,3 ;GET BYTE ADDRESS OF NBRED MOVZR 2,2 ;MAKE IT AN ADDRESS STA 1,0,2 ;SEND NBRED TO PASCAL SUBO 1,1 ;WARN XPRET PROCEDURE RETURNS XPRET ; WRITE SEQUENTIAL SUBRUTINE ; CALL VIA..... ; ; WRSQ(IOCHANNEL:INTEGER; BUFFER:ARRAY OF CHAR OR INTEGER; ; NBYTES:INTEGER; VAR NBYTESWROTE:INTEGER; ; VAR ERROR:INTEGER) ; CONTENTS OF DESCRIPTION ; AC3 ERROR BYTE ADDRESS IS ON THE STACK ; AC3-1 NBYTESWROTE BYTE ADDRESS IS ON THE STACK ; AC3-3 NBYTES INTEGER VARIABLE ON STACK ; AC3-4 BUFFER BYTE ADDRESS ON STACK ; AC3-5 IOCHANNEL INTEGER VALUE ON STACK .ENT ?WRSQ ERROR=0 NBWRO=ERROR-1 NBYTES=NBWRO-1 BUFFER=NBYTES-1 IOCHAN=BUFFER-1 ?WRSQ: STA 3,USP ;SET UP USER STACK POINTER LDA 2,IOCHANNEL,3 ;GET CHANNEL NO LDA 1,NBYTES,3 ;GET NO OF BYTES TO WRITE OUT LDA 0,BUFFER,3 ;GET BUFFER POINTER .SYSTM .WRS CPU JMP .+2 ;JUMP AROUND IF NOT OK ADC 2,2 ;GENERATE -1 OF NO ERRORS MOV 2,0 LDA 2,ERROR,3 ;GET ERROR BYTE ADDRESS MOVZR 2,2 ;MAKE IT AN ADDRESS STA 0,0,2 ;RETURN ERROR (IF ANY) TO PASCAL LDA 2,NBWRO,3 ;GET BYTE ADDRESS OF NBWRO MOVZR 2,2 ;MAKE IT AN ADDRESS STA 1,0,2 ;SEND NBWRO TO PASCAL SUBO 1,1 ;WARN XPRET PROCEDURE RETURNS XPRET .END BYTE02  ;PASCAL SUBROUTINES GET BYTE AND PUT BYTE ; ; CALL VIA PBYT(BYTE,BYTE POSITION,STRING) ; PBYT(VAR BYTE:INTEGER; POSITION:INTEGER;STRING:CHARS);EXTERNAL; ;OR PBYT(BYTE:CHAR;POSITION:INTEGER;STRING:CHARS);EXTERNAL; ; SWAP(VAR WORD;INTEGER);EXTERNAL; ; GBYTE(VAR BYTE:INTEGER;POSITION:INTEGER; STRING:CHARS);EXTERNAL; ; WHERE CHARS IS ARRAY[1..N] OF CAHAR OR INTEGER .TITL BYTE .ENT ?SWAP,?PBYT,?GBYT .ENT PUTB,GETB .EXTD XPRET,RHB,LHB .NREL WORD=0 STRNG=0 POS=-1 BYTE=-2 ?SWAP: STA 3,USP ;RESTORE USP FOR NOW LDA 2,WORD,3 ;POINTER TO WORD MOVZR 2,2 ;MAKE ADDRESS AND SET CARRY IF RHBYTE LDA 0,0,2 ;GET WORD MOVS 0,0 STA 0,0,2 ;RETURN BYTE IN RHB TO PASCAL SUBO 1,1 ;PROCEDURE RETURNS TO PASCAL XPRET ?GBYTE: LDA 2,STRNG,3 ;POINTER TO STRING BEGINNING LDA 1,POS,3 ;VALUE OF BYTE POSTION TO BE GOTTEN ADD 1,2 ;MAKE POINTER TO BYTE POSITION JSR @.+1 GETB LDA 3,SP ;RESTORE STACK POINTER LDA 2,BYTE,3 ;GET POINTER TO BYTE IN PASCAL MOVZR 2,2 ;MAKE ADDRESS STA 0,0,2 ;RETURN BYTE TO PASCAL SUBO 1,1 XPRET ?PBYTE: LDA 2,BYTE,3 ;GET BYTE POINTER TO BYTE TO BE PUT MOVZR 2,2 ;GET BYTE ADDRESS IN AC2 LDA 0,0,2 ;BYTE NOW IN AC0 LDA 1,RHB ;GET RHB MASK AND 1,0 ;AND OUT LH BYTE LDA 2,STRNG,3 ;GET POINTER TO STRING START LDA 1,POS,3 ;GET VALUE OF BYTE POSITION TO BE STUFFED ADD 1,2 ;POINTER TO BYTE IN AC2 JSR @.+1 PUTB SUBO 1,1 ;PROCEDURE RETURNING XPRET ; ROTINE TO WRITE A BYTE TO A GIVEN BYTE ADDRESS ; CONDITIONS ; CALL VIA ; JSR @+.1 ; PUTB ; ; ENTRY ; AC0 - BYTE TO BE WRITTEN IN RH BYTE ; AC1 - UNDEFINED ; AC2 - BYTE POINTER WHERE TO PUT BYTE ; AC3 - RETURN TO THIS ADDRESS ; ; RETURN ; AC0UNDEFINED ; AC1 - UNDEFINED ; AC2 - UNDEFINED ; AC3 - UNDEFINED ; PUTB: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;RIGHT HAND BYTE ADDRESS MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SKIP IF LHB ;NOTE CARRY IS SET IF LHB MOVS 0,0,SKP ;SWAP BYTES IN WORD TO BE PUT ;AND SKIP NEXT INSTRUCTION MOVS 1,1 ;SWAP MASK IF LH BYTE LDA 3,0,2 ;LD AC3,WITH WORD TO RECEIVE BYTE AND 1,3 ;AND OUT OTHER BYTE ADD 0,3 ;ADD IN BYTE TO BE PUT STA 3,0,2 ;RESTORE UPDATED WORD LDA 3,USP JMP 1,3 ;RETURN TO CALLER +2 ; ROUTINE TO GET A BYTE ; CALL VIA ; JSR @.+1 ; GETB ; RETURNS TO HERE ; CONDITIONS ; ; ENTRY ; AC0 - UNDEFINED ; AC1 - UNDEFINED ; AC2 - BYTE POINTER TO BYTE LOCATION ; ; EXIT ; AC0 - VALUE OF BYTE IN RH BYTE (MASKED TO RHB) ; AC1 - UNDEFINED ; AC2 - UNDEFINED GETB: STA 3,USP ;SAVE RETURN ADDRESS LDA 1,RHB ;GET RHB MASK MOVZR 2,2,SNC ;MAKE ADDRESS FROM POINTER AND SET CARRY ;IF LHBYTE. SKIP IF LHBYTE MOVS 1,1 ;SWAP MASK BYTES TO MAKE LHB MASK LDA 0,0,2 ;GET WORD CONTAINING BYTE AND 1,0,SNC ;AND OUT OTHER BYTE AND SKIP IF LHBYTE MOVS 0,0 ;SWAP LHBYTE INTO RHBYTE LDA 3,USP JMP 1,3 ;RETURN TO CALLER +2 .END PRETTYPRINPX :TEST2PA PROGRAM TEST(INPUT,OUTPUT); VAR I : INTEGER; X : REAL; BEGIN WRITELN( 'WELCOME TO PROG TEST2'); X := 1.1; I := 3; X := I*X; WRITELN( ' LINE 1',X : 6 : 2,I); I := TRUNC(X); X := I; WRITELN(' LINE 2',I,X : 6 : 2) END. 3GCHARPI PROCEDURE GCHAR( VAR CHARACTER : INTEGER); {GCHAR GETS ONS CHARACTER FROM THE SYSTEM CONSOLE} CONST DOTERTN = 3328; {15B7} DOTGCHAR = 3840; {.GCHAR} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTGCHAR; SYSCALL(REQUEST); IF ERROR THEN BEGIN MODE := SIMPLE; CALLNUM := DOTERTN; SYSCALL(REQUEST); END; CHARACTER := R0.INT; END; RELEASE(HEAP); END; {GCHAR} PL/ rq PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF ALFA; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITELN(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5,L:3,A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYM = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATEMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END; IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])) END; 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]<=S[T+1]) END END ;{CASE} LOD : BEGIN T := T+1;S[T] := S[BASE(L)+A] END; STO : BEGIN S[BASE(L)+A] := S[T]; WRITELN((S[T]));T := T-1 END; CAL : BEGIN {GENERATE NEW BLOCK MARK} S[T+1] := BASE(L);S[T+2] := B; S[T+3] := P; B := T+1; P := A END; INT : T := T+A; JMP : P := A; JPC : BEGIN IF S[T] = 0 THEN P := A;T := T-1; END END {WITH,CASE} UNTIL P = 0; WRITE('END OF PL/0'); END {INTERPRET}; BEGIN {MAIN PROGRAM} FOR CH := 'A' TO ';' DO SSYM[CH] := NUL; WORD[1] := 'BEGIN '; WORD[2] := 'CALL '; WORD[3] := 'CONST '; WORD[4] := 'DO '; WORD[5] := 'END '; WORD[6] := 'IF '; WORD[7] := 'ODD '; WORD[8] := 'PROCEDURE '; WORD[9] := 'THEN '; WORD[10]:= 'VAR '; WORD[11]:= 'WHILE '; WSYM[1] := BEGINSYM; WSYM[2] := CALLSYM; WSYM[3] := CONSTSYM; WSYM[4] := DOSYM; WSYM[5] := ENDSYM; WSYM[6] := IFSYM; WSYM[7] := ODDSYM; WSYM[8] := PROCSYM; WSYM[9] := THENSYM; WSYM[10] := VARSYM; WSYM[11] := WHILESYM; SSYM['+'] := PLUS; SSYM['-'] := MINUS; SSYM['*'] := TIMES; SSYM['/'] := SLASH; SSYM['('] := LPAREN; SSYM[')'] := RPAREN; SSYM['='] := EQL; SSYM[','] := COMMA; SSYM['.'] := PERIOD; SSYM['!'] := NEQ; SSYM['<'] := LSS; SSYM['>'] := GTR; SSYM['"'] := LEQ; SSYM['#'] := GEQ; SSYM[';'] := SEMICOLN; MNEMONIC[LIT] := 'LIT '; MNEMONIC[OPR] := 'OPR '; MNEMONIC[LOD] := 'LOD ';MNEMONIC[STO] := 'STO '; MNEMONIC[CAL] := 'CAL '; MNEMONIC[INT] := 'INT '; MNEMONIC[JMP] := 'JMP '; MNEMONIC[JPC] := 'JPC '; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF SYMBOL; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCEMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITE(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH); WRITE(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5;L:3;A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYN = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I).KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM THEN BEGIN GETSYM; REPEAT CONSTDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM; CONSTANTDECLARATION END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT END IF SYM = VARSYM THEN BEGIN GETSYM; REPEAT VARDECLARATION; WHILE SYM = COMMA DO BEGIN GETSYM;VARDECLARATION; END; IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5) UNTIL SYM <> IDENT; END; WHILE SYM = PROCSYM DO BEGIN GETSYM; IF SYM = IDENT THEN BEGIN ENTER(PROCMNEMONIC);GETSYM; END ELSE ERROR(4); IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(5); BLOCK(LEV+1,TX,[SEMICOLN]+FSYS); IF SYM = SEMICOLN THEN BEGIN GETSYM;TEST(STATBEGSYS+[IDENT,PROCSYM],FSYS,6) END ELSE ERROR(5) END; TEST(STATBEGSYS+[IDENT],DECLBEGSYS,7) UNTIL NOT(SYM IN DECLBEGSYS); CODE[TABLE[TX0].ADR].A := CX; WITH TABLE[TX0] DO BEGIN ADR := CX; {START ADDRESS OF CODE} END; CX0 := CX; GEN(INT,0,DX); STATEMENT([SEMICOLN,ENDSYM]+FSYS); GEN(OPR,0,0); {RETURN} TEST(FSYS,[],8); LISTCODE; END; {BLOCK} PROCEDURE INTERPRET; CONST STACKSIZE = 500; VAR P,B,T : INTEGER; {PROGRAM,BASE,TOP OF STACK REGISTERS} I : INSTRUCTION; {INSTRUCTION REGISTER} S : ARRAY[1..STACKSIZE] OF INTEGER; {DATA STORE} FUNCTION BASE(L : INTEGER) : INTEGER; {FIND BASE L LEVELS DOWN} VAR B1 : INTEGER; BEGIN B1 := B; WHILE L > 0 DO BEGIN B1 := S[B1];L := L-1; END; BASE := B1; END; {BASE} BEGIN WRITELN ('START OF PL/0'); T := 0; B := 1;P := 0; S[1] := 0; S[2] := 0;S[3] := 0; REPEAT I := CODE[P];P := P+1; WITH I DO CASE F OF LIT : BEGIN T := T+1;S[T] := A;END; OPR : CASE A OF {OPERATOR} 0 : BEGIN {RETURN} T := B-1;P := S[T+3];B := S[T+2] END; 1 : S[T] := -S[T]; 2 : BEGIN T := T-1;S[T] := S[T]+S[T+1] END; 3 : BEGIN T := T-1;S[T] := S[T]-S[T+1] END; 4 : BEGIN T := T-1;S[T] := S[T]*S[T+1] END; 5 : BEGIN T := T-1;S[T] := S[T]DIV S[T+1] END; 6 : BEGIN S[T] := ORD(ODD(S[T])); 8 : BEGIN T := T-1;S[T] := ORD(S[T]=S[T+1]) END; 9 : BEGIN T := T-1;S[T] := ORD(S[T]<>S[T+1]) END; 10 : BEGIN T := T-1;S[T] := ORD(S[T]< S[T+1]) END; 11 : BEGIN T := T-1;S[T] := ORD(S[T]>=S[T+1]) END; 12 : BEGIN T := T-1;S[T] := ORD(S[T]>S[T+1]) END; 13 : BEGIN T := T-1;S[T] := ORD(S[T]=] := GTR; SSYM["] := LEQ; SSYM[#] := GEQ; SSYM[;] := SEMICOLN; MNEMONIC[LIT] := 'LIT'; MNEMONIC[OPR] := 'OPR'; MNEMONIC[LOD] := 'LOD';MNEMONIC[STO] := 'STO'; MNEMONIC[CAL] := 'CAL'; MNEMONIC[INT] := 'INT_'; MNEMONIC[JMP] := 'JMP'; MNEMONIC[JPC] := 'JPC'; DECLBEGSYS := [CONSTSYM,VARSYM,PROCSYM]; STATBEGSYS := [BEGINSYM,CALLSYM,IFSYM,WHILESYM]; FACBEGSYS := [IDENT,NUMBER,LPAREN]; PAGE(OUTPUT); ERR := 0; CC := 0;CX := 0;LL := 0;CH := ' '; KK := AL;GETSYM; BLOCK(0,0,[PERIOD]+DECLBEGSYS+STATBEGSYS); IF SYM <> PERIOD THEN ERROR (9); IF ERR = 0 THEN INTERPRET ELSE WRITE(' ERRORS IN PL/0 PROGRAM'); 99: WRITELN END. T4) %PROGRAM T4 (INPUT,OUTPUT); TYPE YEAR = 1800..2000; VAR YEARN : YEAR; BEGIN REPEAT READ (INPUT,YEARN); WRITELN (OUTPUT,YEARN) UNTIL EOF(INPUT); END. T310@$(* FIX FLOT TESTER *) PROGRAM T31 (INPUT,OUTPUT); VAR I : INTEGER; X : REAL; FUNCTION FLOT ( I : INTEGER ):REAL;EXTERNAL; FUNCTION FIX ( X : REAL ):INTEGER;EXTERNAL; BEGIN REPEAT BEGIN WRITELN(OUTPUT,' ENTER X '); READLN (INPUT,X); I := FIX (X); WRITELN(OUTPUT,' I=',I); END UNTIL I=0; END. TEST p%PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR CH : CHAR; PDATAFILE,PCONSOLE,PINDEX,PTREE : BOOLEAN; ROOT : WORDREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; LINE : BIGSTR; SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN : INTEGER; {INPUT DATA FILE} DISKOUT : TEXT ; {OUTPUT PASCAL FILE} FIELDNUMBER : INTEGER; {$I GCHN.PI} {$I OPEN.BU} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} {$I GETINTEGER.BU} {$I GETFIELDINT.BU} {$I GETREAL.BU} {$I REALFIELD.BU} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTRECORDS(W : WORD); VAR X : ITEMREF; BEGIN X := W.FIRST; REPEAT BEGIN SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); X := X^.NEXT; END; UNTIL X = NIL; END; {PRINT IN ORDER} PROCEDURE PRINTINORDER(W : WORDREF); BEGIN IF W<> NIL THEN BEGIN PRINTINORDER(W^.LEFT); PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); END; END; PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN IF PCONSOLE THEN WRITE(' ',W.KEY : C1); WRITE(DISKOUT,' ',W.KEY : C1); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN L := 0; IF PCONSOLE THEN BEGIN WRITELN;WRITE(' ':C1+1); END; WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); END; L := L+1; IF PCONSOLE THEN WRITE(' ',X^.LNO :C3); WRITE(DISKOUT,X^.LNO : C3); X := X^.NEXT; UNTIL X = NIL ; IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; WRITELN(DISKOUT); WRITELN(DISKOUT) END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; AMOUNT,CHECK : REAL; BEGIN AMOUNT := 0.0; IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); CHECK := REALFIELD(LINE,3); AMOUNT := AMOUNT+CHECK; X := X^.NEXT END UNTIL X = NIL; IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); END; {OF PRINT ALL LINES WITH KEY W.KEY} FUNCTION QUESTION : BOOLEAN; BEGIN REPEAT WRITE(' ANSWER Y OR N '); READLN(CH) UNTIL (CH = 'Y') OR (CH = 'N'); QUESTION := CH = 'Y'; END; BEGIN OPENFILES; WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); PCONSOLE := QUESTION; WRITELN(' WANT DATA BASE FILE PRINTED?'); PDATAFILE := QUESTION; WRITELN(' WANT INDEX PRINTED? '); PINDEX := QUESTION; WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); PINDEX := QUESTION; WRITE(' SORT ON FILEN NO. 2,3,4,5? '); READLN(FIELDNUMBER); ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1; IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); IF PDATAFILE THEN WRITE(DISKOUT,' ',N : C3,' ',LINE); CASE LINE[1] OF 'C','E','W' : BEGIN ID := GETFIELDINT(LINE,FIELDNUMBER); SEARCH(ROOT); END; END; END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} IF PTREE THEN PRINTTREE(ROOT); WRITELN(' MEMORY LEFT = ',MEMAVAIL); IF PINDEX THEN PRINTINORDER(ROOT); WHILE NOT EOF(INPUT) DO BEGIN WRITE(' SEARCH KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN BEGIN PRINTWORD(WF^); PRINTLINES(WF^); END; END; END. CDC6000PX T5) *PROGRAM T5 (INPUT,OUTPUT); TYPE YEAR = 1800..2000; VAR YEARN : YEAR; BEGIN REPEAT READ (INPUT,YEARN); IF NOT EOF(INPUT) THEN WRITELN (OUTPUT,YEARN) UNTIL EOF(INPUT) ; END. OUTPUT$LPTT41o'&.PROGRAM T41 (INPUT,OUTPUT); TYPE COORDINATES = RECORD X,Y,Z : INTEGER END; TESTS = (LESSTHAN,GREATERTHAN,EQUALTO,LESSEQUAL, GREATEREQUAL,NOTEQUAL); EQUALITYTEST = SET OF (TESTS); VAR XL,XG,YL,YG,ZL,ZG ,T1,T2 : BOOLEAN; COORD1,COORD2,DELTA : COORDINATES; TESTFOR : TESTS; DISTANCE : INTEGER;(*DISTANCE BETWEEN COORDINATES*) FUNCTION COMPARECOORD(COORD1 : COORDINATES; TESTFOR : TESTS; COORD2 : COORDINATES ; DISTANCE : INTEGER) : BOOLEAN; FUNCTION TESTEQUAL : BOOLEAN; BEGIN TESTEQUAL := NOT(XL OR XG OR YL OR YG OR ZL OR ZG) END; FUNCTION TESTLESS : BOOLEAN; BEGIN TESTLESS := XL OR NOT(XL OR XG)AND(YL OR NOT(YL OR YG)AND ZL) END; FUNCTION TESTGREATER : BOOLEAN; BEGIN TESTGREATER := XG OR NOT(XL OR XG)AND(YG OR NOT(YL OR YG)AND ZG) END; BEGIN DELTA.X := COORD1.X-COORD2.X; DELTA.Y := COORD1.Y-COORD2.Y; DELTA.Z := COORD1.Z-COORD2.Z; WITH DELTA DO DISTANCE := X*X + Y*Y +Z*Z; WITH DELTA DO BEGIN XL := X <0; XG := X >0; YL := Y <0; YG := Y >0; ZL := Z <0; ZG := Z >0; END; (*WITH*) IF XL THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F'); IF XG THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F');WRITELN; IF YL THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F'); IF YG THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F');WRITELN; IF ZL THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F'); IF ZG THEN WRITE(OUTPUT,' T') ELSE WRITE(OUTPUT,' F');WRITELN; CASE TESTLESS OF TRUE : WRITELN(OUTPUT,' LESS TR','UE'); FALSE : WRITELN(OUTPUT,' LESS FA','LSE') END; CASE TESTGREATER OF TRUE : WRITELN(OUTPUT,' GREATER',' TRUE'); FALSE : WRITELN(OUTPUT,' GREATER',' FALSE') END; CASE TESTEQUAL OF TRUE : WRITELN(OUTPUT,' EQUAL'); FALSE : WRITELN(OUTPUT,' NOT EQUAL') END; (*CASE*) END; BEGIN (*COMPARECOORD*) REPEAT WRITELN(OUTPUT,' ENTER XYZS'); WITH COORD1 DO BEGIN READLN(INPUT,X,Y,Z); WRITELN(OUTPUT,X,Y,Z) END; (*WITH*) WITH COORD2 DO BEGIN READLN(INPUT,X,Y,Z); WRITELN(OUTPUT,X,Y,Z) END; (*WITH*) WRITELN(' ENTER TEST'); WRITELN(' 1 LESS'); WRITELN(' 2 GREATER'); WRITELN(' 3 EQUAL'); WRITELN(' 4 GREATERQ'); WRITELN(' 5 LESSEQ'); WRITELN(' 6 NOTEQ'); READ(DISTANCE); CASE DISTANCE OF 1: TESTFOR := LESSTHAN; 2: TESTFOR := GREATERTHAN; 3: TESTFOR := EQUALTO; 4: TESTFOR := GREATEREQUAL; 5: TESTFOR := LESSEQUAL; 6: TESTFOR := NOTEQUAL END; (*CASE*) CASE COMPARECOORD(COORD1,TESTFOR,COORD2,DISTANCE) OF LESSTHAN: WRITELN(' LESSTHAN'); GREATERTHAN: WRITELN(' GREATER'); EQUALTO: WRITELN(' EQUALTO'); LESSEQUAL: WRITELN(' LESSEQ'); GREATEREQUAL: WRITELN(' GREATEQ'); NOTEQUAL: WRITELN(' NOTEQUAL') END; (*CASE*) WRITELN(OUTPUT,' DIST=',DISTANCE); UNTIL EOF(INPUT) END. 1978P1978R1NODES01  PROGRAM NODES (INPUT,OUTPUT); TYPE NODES = RECORD X, Y : REAL; LINKPOS : INTEGER END; LINKS = RECORD FROMNODE, TONODE, ATTRIBUTES :INTEGER END; VAR NODE : ARRAY [1..20] OF NODES; LINK : ARRAY [1..50] OF LINKS; NEWLINK : LINKS; NEWNODE : NODES; DELETEDLINKNO, DELETEDNODENO, NUMBOFLINKS, NUMBOFNODES : INTEGER; PROCEDURE ADDNODE (NEWNODE:NODES); BEGIN NUMBOFNODES := NUMBOFNODES+1; NODE[NUMBOFNODES] := NEWNODE END; PROCEDURE DELETENODE (DELETEDNODENO:INTEGER); VAR I : INTEGER; BEGIN FOR I := DELETEDNODENO TO NUMBOFNODES DO NODE[I] := NODE[I+1]; NUMBOFNODES := NUMBOFNODES-1 END; PROCEDURE EXPANDLINK (SPACE :INTEGER); VAR I : INTEGER; BEGIN FOR I := NUMBOFLINKS DOWNTO NODE[ NEWLINK.FROMNODE+1].LINKPOS DO LINK[I+1] := LINK[I]; WHILE (( LINK[I-1].TONODE > NEWLINK.TONODE ) AND (LINK[I-1].ATTRIBUTES > NEWLINK.ATTRIBUTES ) AND (LINK[I-1].FROMNODE = NEWLINK.FROMNODE )) DO BEGIN I := I-1; LINK[I+1] := LINK[I] END; SPACE := I END; PROCEDURE ADDLINK (NEWLINK : LINKS); VAR SPACE : INTEGER; BEGIN EXPANDLINK (SPACE); LINK[SPACE] := NEWLINK END; PROCEDURE DELETELINK( DELETEDLINKNO : INTEGER); VAR I : INTEGER; BEGIN FOR I := DELETEDLINKNO TO NUMBOFLINKS DO LINK[I] := LINK[I+1]; NUMBOFLINKS := NUMBOFLINKS-1 END; BEGIN NODE[1].X := 2; NODE[2].X :=4; IF NODE[1] = NODE[2] THEN WRITELN(OUTPUT,' NEW=DELETED') ELSE WRITELN(OUTPUT,' NEW<>DELETED'); NODE[1] := NODE[2]; WRITELN(OUTPUT,' ',NODE[1].X,NODE[1].Y) END. CROSSREF02w`PROGRAM CROSSREF (F,OUTPUT); (*CROSSREFERENCE GENERATOR USING BINARY TREES*) CONST C1 = 10; (*LENGTH OF WORDS*) C2 = 8; (*NUMBERS PER LINE*) C3 = 6; (*DIGITS PER NUMBER*) C4 = 9999; (*MAXIMUM LINE NUMBER*) TRACE = FALSE; (*SET FOR TRACE TYPE WRITELN'S*) TYPE ALFA = PACKED ARRAY [1..C1] OF CHAR; TEXT = FILE OF CHAR; WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : ALFA; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;NEXT : ITEMREF END; COMPARATIVE = (LESS,GREATER,EQUAL); VAR ROOT : WORDREF; K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) ID : ALFA; F : TEXT; A,B : ARRAY [1..C1] OF CHAR; FUNCTION KOMPAR ( A : ALFA; B : ALFA; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE; VAR I : INTEGER; T : COMPARATIVE; BEGIN T := EQUAL; I := NSTART; WHILE ( ( T = EQUAL ) AND ( I <= NEND ) ) DO BEGIN IF TRACE THEN WRITELN(' KOMPAR ',A[I],' ',B[I]) ; BEGIN IF A[I] > B[I] THEN T := GREATER ELSE IF A[I] < B[I] THEN T := LESS END; IF TRACE THEN BEGIN CASE T OF EQUAL : WRITELN(' KOMP ='); LESS : WRITELN(' KOMP <'); GREATER : WRITELN(' KOMP >'); END END; I := I+1 END; KOMPAR := T END; PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF;J : INTEGER; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN (* KEY := ID*) FOR J := 1 TO C1 DO BEGIN KEY[J] := A[J];IF TRACE THEN WRITELN(' KEY,A[J]',KEY[J],' ',A[J]) END; LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W END ELSE CASE KOMPAR (A,W^.KEY,1,C1) OF LESS : BEGIN IF TRACE THEN WRITELN(' LESS');SEARCH (W^.LEFT) END; GREATER : BEGIN IF TRACE THEN WRITELN(' GREATER'); SEARCH (W^.RIGHT) END; EQUAL : BEGIN IF TRACE THEN WRITELN(' EQUAL'); NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END END (* IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; W^.LAST^.NEXT := X;W^.LAST := X END *) END; (*SEARCH*) PROCEDURE PRINTTREE(W : WORDREF); PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTRE!E(W^.RIGHT) END END; (*END OF PRINTTREE*) BEGIN ROOT := NIL;N := 0;K1 := C1; PAGE(OUTPUT);RESET(F); WHILE NOT EOF(F) DO BEGIN IF N = C4 THEN N := 0; N := N+1;WRITE(N:C3); (*NEXT LINE*) WRITE(' '); WHILE NOT EOLN(F) DO BEGIN (*SCAN NON EMPTY LINE*) IF F^ IN ['A','B','C','D','E','F','G','H','I','J','K' ,'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y' ,'Z'] THEN BEGIN K := 0; REPEAT IF K= K1 THEN K1 := K ELSE REPEAT A[K1] := ' ';K1 := K1-1 UNTIL K1 = K; (*PACK(A,1,ID);*)SEARCH(ROOT) END ELSE BEGIN (*CHECK FOR QUOTE OR COMMENT*) IF F^ = '''' THEN REPEAT WRITE(F^);GET (F); UNTIL F^ = '''' ELSE IF F^ = '%' THEN REPEAT WRITE(F^);GET(F) UNTIL F^ = '#'; WRITE(F^);GET(F) END END; WRITELN;GET(F) END; PAGE(OUTPUT);PRINTTREE(ROOT); END. TEST1t PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; NUMBERS = SET OF '0'..'9'; VAR CH : CHAR; DIGITS : NUMBERS; STR : ALPHANUMERIC; I : INTEGER; R : REAL; PROCEDURE NUMB( STR : ALPHANUMERIC); VAR CH : CHAR; I,LEN,CKNUMBER : INTEGER; BEGIN CKNUMBER := 0; I :=1; LEN := LENGTH(STR); WHILE I <= LEN DO BEGIN CH := STR[I]; IF CH IN DIGITS THEN BEGIN CKNUMBER := CKNUMBER*10+ORD(CH)-48; WRITELN(OUTPUT,I,' ',CH,' ',ORD(CH),' ',CH,' ',CKNUMBER); END; I := I+1; END; END; BEGIN DIGITS := ['0'..'9']; REPEAT BEGIN READLN(STR); WRITELN(STR); NUMB(STR); END; UNTIL EOF(INPUT); END. RPAPROGRAM TEST (INPUT,OUTPUT); VAR R : REAL; PROCEDURE REALPRINT (R : REAL); VAR I,J,DIGIT : INTEGER; R1,R2 : REAL; STR : STRING[10]; PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-TRUNC(R2)*10); R1 := R2; { WRITELN(' GETDIGIT,DIGIT=',DIGIT);} END; {GETDIGIT} BEGIN {do decimal part first} STR :=' '; R1 := (R-TRUNC(R))*100 + 0.3; J :=0; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[10-J] := CHR(DIGIT+48); J :=J+1; { WRITELN(' CHR(DIGIT):=',CHR(DIGIT+48));} END; STR[10-J] :='.'; J := J+1; {do integer part} R1 :=R; WHILE ( (R1 > 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITELN(' STRING=',STR); END;{OF REALPRINT} BEGIN REPEAT BEGIN WRITELN(' ENTER A REAL NUMBER'); READ(R); REALPRINT(R); END; UNTIL EOF(INPUT); END. 1978EMPf (E 496 1177.09 E 495 1076.21 E 494 392.55 E 493 456.63 E 492 497.88 E 491 574.03 E 490 890.20 E 489 842.19 E 488 788.81 E 487 1787.44 E 486 389.02 E 484 305.68 E 482 626.76 E 481 554.04 E 480 1024.14 E 479 927.20 E 478 1092.27 E 510 304.73 E 509 432.47 E 508 575.53 E 507 502.81 E 506 842.80 E 505 1033.57 E 504 254.00 W 503 702.05 W 502 4521.60 W 501 387.26 W 500 372.80 W 499 561.91 W 498 497.97 E 497 926.48 E 519 84.76 E 520 483.00 E 511 830.88 E 537 464.55 E 531 356.37 E 529 589.96 E 530 436.65 E 528 393.86 E 527 888.88 E 526 1034.18 E 525 991.35 E 524 733.00 W 522 182.00 W 523 1549.00 W 521 2210.00 W 518 3391.80 W 517 277.10 E 516 259.01 E 515 439.51 E 514 398.75 E 513 1113.18 E 512 893.06 W 540 4601.70 E 532 1062.02 E 533 1122.84 E 534 999.70 E 535 538.32 E 536 643.20 E 538 386.34 E 539 105.03 W 541 1703.92 W 544 5.00 W 545 1345.3[8 E 546 924.04 E 547 982.73 E 548 873.83 E 549 473.57 E 550 542.91 E 551 440.27 E 553 299.63 E 552 185.93 E 568 343.38 E 569 304.73 E 567 596.15 E 566 465.02 E 565 948.24 E 564 985.99 E 563 991.80 E 557 473.57 E 558 601.00 E 560 265.01 E 555 991.16 E 554 927.77 E 556 852.47 W 562 4255.04 E 561 297.08 E 559 688.29 E 570 1050.61 E 571 1069.11 E 572 1019.07 E 573 566.88 E 574 630.97 E 575 269.88 E 576 472.09 E 577 346.43 W 578 4412.14 W 579 483.00 W 580 2210.00 W 581 38.36 E 582 1046.89 E 583 1151.39 E 584 996.51 E 585 627.63 E 586 732.19 E 587 537.45 E 588 513.44 E 589 374.42 E 590 110.15 E 591 979.37 E 592 1426.28 E 594 531.30 E 596 500.91 W 599 5659.58 E 593 960.21 E 595 645.08 E 597 430.98 E 598 343.31 W 600 1863.74 W 602 850.20 E 603 796.26 E 604 802.32 E 605 379.26 E 606 542.91 E 607 283.06 E 608 180.93 E 609 282.18 E 615 369.00 W 617 2861.14 E 625 2210.00 E 627 1209.08 E 628 1158.89 E 629 552.62 E 630 596.12 E 632 359.96 W 634 800.03 E 635 921.48 E 636 1050.72 E 637 533.66 E 638 610.74 E 639 361.79 E 640 201.10 E 645 346.92 E 610 325.46 E 611 1020.87 E 612 922.47 E 613 505.84 E 614 595.69 E 616 258.02 E 618 1053.55 E 619 845.14 E 620 420.35 E 621 548.51 E 622 293.42 E 623 339.16 E 624 374.42 W 626 483.00 E 631 142.22 W 633 2792.12 E 660 484.10 W 662 2276.24 E 650 981.35 E 651 992.28 E 652 327.45 E 653 384.95 E 641 1081.13 E 642 1042.43 E 643 490.20 E 644 516.116 E 646 326.75 W 647 2424.72 W 648 393.57 W 649 251.13 DATA01 +srB 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 0 0 C 2338 6.00 0 0 C 2345 53.35 0 0 C 2347 38.00 0 0 C 2348 50.00 24 1 C 2356 264.05 0 0 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 1 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C 2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 2 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 DM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 0 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.00 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 11 C 2503 89.37 8 11 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.00 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 26 11 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 0 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106.32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 C 2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 2568 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 109.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2897 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 17 20 C 2621 368 23 28 C 2622 52.30 5 20 C 2623 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 C 2638 1200 21 21 C 2639 1000 21 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 205.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 16 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 22 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 23 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 24 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 C 2699 110.25 1 25 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 635.69 27 26 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708p 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 16 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 3920.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 C 2762 1510 21 29 TSTQ ;  9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1 T6)+PROGRAM T6 (INPUT,OUTPUT); TYPE COLORS = (BLUE,GREEN,PURPLE,RED,BLACK); VAR INCOLOR : COLORS; COLORTYPE : SET OF COLORS; BEGIN READLN (INPUT,COLORTYPE); IF COLORTYPE IN COLORS THEN BEGIN CASE COLORTYPE OF BLUE : WRITELN(OUTPUT,'BLUE'); GREEN,PURPLE : WRITELN(OUTPUT,'GREEN','PURPLE'); RED,BLACK : WRITELN(OUTPUT,'RED',' BLACK'); END; ELSE WRITELN (OUTPUT,"NOT IN ST"); END; END. T20w 1PROGRAM T20(INPUT,OUTPUT); VAR CHR : CHAR; BEGIN REPEAT READLN(INPUT,CHR) UNTIL (EOLN(INPUT) OR EOF(INPUT)) END. PRETTYPX  CBOOKPX CBOOK Copyright (C) 1981 Rational Data Systems  $ض$0öÍ,`$ض$0B ?zჽ ݞ$ݕá-ݮġáۛ.ȡáخC ڪc=<:77ȡ` -á =7ȡV<<:: 00::0888  D./.á<8 ,á=:: ')+-9.٪c6877ȡ5  -á 86 067ȡ8 66 P5 تc687867˄_868?88868?887786áڢ8R5 ֥ͮ ERRORإ$<<=><@@>DD>HH>֥ͮ CK ا= ֥ͥ>֥ͮ3֥ͥ@~ <><@>֥ͮ BL ֥3`إ3إ3֥ͥ@T <><@@>BB>FF>֥ͮ DP إ3إ3֥ͥ>֥ͥ@p <><@@>BB>֥ͮ CM إ3إ3֥ͥ>֥ͥ@d <><@@>DD>֥ͮ DM إ3֥ͥ>֥ͮ3֥ͥ@h <<=֥ͮ CC ا= ,<<=><@@>DD>HH>֥ͮ EM ا= ֥ͥ>֥ͮ3֥ͥ@~<><@@>DD>HH>֥ͮ WH إ3֥ͥ>֥ͮ3֥ͥ@tتcJ áJCáJMáJ áJMáJm áJZ áJG áJ4BW,Af4  "$&(*E82 ֦ INPUT FILE NAME? `֥֥ޮc֥K֥K֦ OUTPUT FILE NAME? `֥֥ޮc֥֥֥ͥOLOGFILE֥O֦ENTER START AND END CATEGORY`֥֥ޮ إ ֦ENTER START AND END PAGE`֥֥ޮ إ B3 @DBHFJ֥ͮ KEY TO TRANSACTION TYPES֥ͮ. C CHECK CC CANCELLED CHECK֥ͮ) CM CREDIT MEMO DM DEBIT MEMO֥ͮ- DP DEPOSIT BL FORCED BALANCE֥ͮ/ EM EMPLOYEE CK WH WITHOLDING CHECK ֥֥ͮ: TYPE CHECK DEBIT CREDIT BALANCEXƂ`ƂƂ`OUTPUTƁƂƁަINPUTKƀKINFILEƀƁ ƀͦOUTFILEƁOƁƁOLOGFILEƁƂ`֥ȡʂ㫁ٹЫ٥ڧ䥁ڧȡʂ䫁عЫ֥֥ͮCATEGORYʂ䧁 ʂFIELDʂ䧁 ʂ֥KK ֥Kʂcʂ֥Oʂ֥٥á^ҧáU֥J- A< 7 2 - (#41+2*"֥֥֥֥ͮ TOTALS ֥ͥD֥ͥB֥ͥ@֥֥ͮ TOTAL CHECKS ֥ͥH֥֥ͮ TOTAL DEPOSITS֥ͥFʂá֦END1`ʂʂá֦END2`ʂƂ`ƁKƀƁO;/_4Rxh l J t   *REALPRINTPT] {10/30/80 THIS PROCEDURE PRINTS A REAL NUMBER NO LARGER THAN 32767.00 IN A 10 FIELD STRING WITH 2 DECIMAL PLACES AND A COMMA IF REQUIRED} PROCEDURE REALPRINT (R : REAL); VAR I,J,DIGIT : INTEGER; R1,R2 : REAL; STR : STRING[10]; PROCEDURE GETDIGIT; BEGIN R2 := R1/10; DIGIT := TRUNC(R1-TRUNC(R2)*10); R1 := R2; WRITELN(' GETDIGIT,DIGIT=',DIGIT); END; {GETDIGIT} BEGIN {do decimal part first} STR :=' '; R1 := (R-TRUNC(R))*100 + 0.3; J :=0; FOR I := 1 TO 2 DO BEGIN GETDIGIT; STR[10-J] := CHR(DIGIT+48); J :=J+1; WRITELN(' CHR(DIGIT):=',CHR(DIGIT+48)); END; STR[10-J] :='.'; J := J+1; {do integer part} R1 :=R; WHILE ( (R1 > 1.0) AND (J < 9) ) DO BEGIN GETDIGIT; IF J = 6 THEN BEGIN STR[10-J] :=','; J := J+1; END; STR[10-J] := CHR(DIGIT+48); J :=J+1; END; WRITE(STR); END;{OF REALPRINT} TEST1PA .PROGRAM TEST1(INPUT,OUTPUT); VAR CH : CHAR; BEGIN REPEAT BEGIN READ(CH); WRITELN(CH,ORD(CH),ORD(CH)-48); END UNTIL EOF(INPUT) END. T30 !&PROGRAM T27(INPUT,OUTPUT); TYPE ALPHA = ARRAY [1..35] OF CHAR; VAR IOCH,BYTES,ERROR : INTEGER ; BUFFER : ALPHA; FILEEND : BOOLEAN; PROCEDURE OPEN ( VAR FILENO : INTEGER ; FILENAME : ALPHA ; VAR ERRORNUMBER : INTEGER );EXTERNAL; FUNCTION ENDL ( IOCHANNEL : INTEGER ):BOOLEAN;EXTERNAL; FUNCTION ENDF ( IOCHANNEL : INTEGER ) : BOOLEAN;EXTERNAL; PROCEDURE RDLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : INTEGER ; VAR ERRORNUM : INTEGER );EXTERNAL; PROCEDURE WRLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESWROTE : INTEGER ; VAR ERRORNUMBER : INTEGER );EXTERNAL; BEGIN (* OPEN (IOCH,'FOBAR',ERROR);*) REPEAT BEGIN RDLI (1,BUFFER,BYTES,ERROR); IF ERROR <> 6 THEN BEGIN WRLI(2,BUFFER,BYTES,ERROR); END ELSE END; UNTIL ENDF(IOCH) = TRUE END. T79 . PROGRAM T7 (INPUT,OUTPUT); TYPE PRIMARY = (BLUE,RED,YELLOW); COLOR = SET OF PRIMARY; VAR CH : CHAR; I : INTEGER; STRING : ARRAY[1..8] OF CHAR; HUE : COLOR; BEGIN I := 1; WHILE I<=8 DO BEGIN READ (INPUT,CH); STRING[I] := CH; WRITELN (OUTPUT,' ',I); I :=I+1; END; WRITELN(OUTPUT,' ',STRING); END. TESTLSEN  )Rational Data Systems Pascal Compiler [release RDOS.2.11, overlaid] "TEST.PA" compiled on Thursday 1 January 1981 at 12:34:05 using the option /Swapping. line seg proc off nst 1 0 1 1 PROGRAM CROSSREF (INPUT,OUTPUT); 2 0 1 1 CONST STRSIZE = 133; 3 0 1 1 C1 = 10; {LENGTH OF WORDS} 4 0 1 1 C2 = 8; {NUMBERS PER LINE} 5 0 1 1 C3 = 6; {DIGITS PER NUMBER} 6 0 1 1 C4 = 9999; {MAXIMUM LINE NO} 7 0 1 1 8 0 1 1 9 0 1 1 TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; 10 0 1 1 BYTEPTR = ^BYTEARRAY; 11 0 1 1 BIGSTR = STRING[STRSIZE]; 12 0 1 1 STRPTR = ^BIGSTR; 13 0 1 1 WORDPTR = ^INTEGER; 14 0 1 1 CHARPTR = ^CHAR; 15 0 1 1 16 0 1 1 LINESTRING = RECORD 17 0 1 1 LEN : INTEGER; {STRING LNGTH} 18 0 1 1 STR : PACKED ARRAY[1..132] OF CHAR{DATA} 19 0 1 1 END; 20 0 1 1 LINEPOINTER = ^ LINESTRING; 21 0 1 1 22 0 1 1 REGISTER = RECORD 23 0 1 1 CASE INTEGER OF 24 0 1 1 1: (INT: INTEGER); 25 0 1 1 2: (BPTR: BYTEPTR); 26 0 1 1 3: (WPTR: WORDPTR); 27 0 1 1 4: (SPTR: STRPTR); 28 0 1 1 5: (CH: CHAR); 29 0 1 1 6: (LPTR: LINEPOINTER) 30 0 1 1 END; {REGISTER} 31 0 1 1 32 0 1 1 SYSCALLTYPE = (SIMPLE,AOSPACKET); 33 0 1 1 SYSCALLPREFIX = RECORD 34 0 1 1 MODE : SYSCALLTYPE; 35 0 1 1 ERROR : BOOLEAN; 36 0 1 1 CALLNUM : INTEGER; 37 0 1 1 R0 : REGISTER; 38 0 1 1 R1 : REGISTER; 39 0 1 1 R2 : REGISTER; 40 0 1 1 END;{SYSCALL PREFIX} 41 0 1 1 42 0 1 1 SCALLPTR = ^SYSCALLPREFIX; 43 0 1 1 DPINTEGER = RECORD 44 0 1 1 UPPER : INTEGER; 45 0 1 1 LOWER : INTEGER 46 0 1 1 END; {DOUBLE PRECISION INTEGER} 47 0 1 1 48 0 1 1 49 0 1 1 {CROSSREF TYPES} 50 0 1 1 51 0 1 1 WORDREF = ^WORD; 52 0 1 1 ITEMREF = ^ITEM; 53 0 1 1 WORD = RECORD KEY : INTEGER; 54 0 1 1 FIRST,LAST : ITEMREF; 55 0 1 1 LEFT,RIGHT : WORDREF 56 0 1 1 END; 57 0 1 1 ITEM = PACKED RECORD 58 0 1 1 LNO : 0..C4;{LINE NUMBER} 59 0 1 1 POS : DPINTEGER;{FILE POSITION} 60 0 1 1 NEXT : ITEMREF {POINTER TO NEXT} 61 0 1 1 END; 62 0 1 1 63 0 1 1 64 0 1 1 VAR CH : CHAR; 65 0 1 2 PDATAFILE,PCONSOLE,PINDEX,PTREE : BOOLEAN; 66 0 1 6 ROOT : WORDREF; 67 0 1 7 WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} 68 0 1 8 K,K1 : INTEGER; 69 0 1 10 N : INTEGER; (*CURRENT LINE NUMBER*) 70 0 1 11 PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} 71 0 1 13 ID : INTEGER; 72 0 1 14 LINE : BIGSTR; 73 0 1 81 SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} 74 0 1 82 NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} 75 0 1 83 ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} 76 0 1 84 DISKIN : INTEGER; {INPUT DATA FILE} 77 0 1 85 DISKOUT : TEXT ; {OUTPUT PASCAL FILE} 78 0 1 215 FIELDNUMBER : INTEGER; 79 0 2 1 PROCEDURE GCHN(VAR FREECHANNEL : INTEGER); 80 0 2 2 81 0 2 2  82 0 2 2 CONST DOTERTN = 3328; {15B7} 83 0 2 2 DOTGCHN = 8746; {.GCHN} 84 0 2 2 85 0 2 2 VAR REQUEST : SCALLPTR; 86 0 2 3 HEAP : ^INTEGER; 87 0 2 4 88 0 2 0 0 BEGIN 89 0 2 0 0 MARK(HEAP); 90 0 2 4 0 NEW(REQUEST); 91 0 2 9 0 WITH REQUEST^ DO 92 0 2 12 1 BEGIN 93 0 2 12 1 MODE := SIMPLE; 94 0 2 15 1 CALLNUM := DOTGCHN; 95 0 2 22 1 SYSCALL(REQUEST); 96 0 2 25 1 IF ERROR THEN 97 0 2 29 2 BEGIN 98 0 2 29 2 MODE := SIMPLE; 99 0 2 32 2 CALLNUM := DOTERTN; 100 0 2 39 2 SYSCALL(REQUEST); 101 0 2 42 1 END; 102 0 2 42 1 FREECHANNEL := R2.INT; 103 0 2 46 0 END; 104 0 2 46 0 RELEASE(HEAP); 105 0 2 50 0 END; {PCHAR} 106 0 2 62 0 {$I GCHN.PI} 107 0 3 1 PROCEDURE OPEN(RDOSCHANNEL : INTEGER;FILENAME : BIGSTR 108 0 3 2 ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); 109 0 3 72 CONST DOTOPEN =6207; {.OPEN} 110 0 3 72 111 0 3 72 112 0 3 72 VAR REQUEST : SCALLPTR; 113 0 3 73 HEAP : ^INTEGER; 114 0 3 74 FILEPTR : STRPTR; 115 0 3 75 116 0 3 0 0 BEGIN 117 0 3 0 0 MARK(HEAP); 118 0 3 9 0 NEW(REQUEST); 119 0 3 14 0 NEW(FILEPTR); 120 0 3 19 0 FILEPTR^ := FILENAME; 121 0 3 25 0 WRITELN(' ',FILEPTR^); 122 0 3 53 0 WITH REQUEST^ DO 123 0 3 57 1 BEGIN 124 0 3 57 1 MODE := SIMPLE; 125 0 3 61 1 CALLNUM := DOTOPEN; 126 0 3 69 1 R0.SPTR := FILEPTR; 127 0 3 76 1 R0.INT := R0.INT+1; 128 0 3 86 1 R2.INT := RDOSCHANNEL; 129 0 3 92 1 SYSCALL(REQUEST); 130 0 3 96 1 IF ERROR THEN WRITELN(' ERROR IN OPEN = ',R2.INT); 131 0 3 144 1 ERR := ERROR; 132 0 3 149 1 ERRNUM := R2.INT; 133 0 3 154 0 END; 134 0 3 154 0 RELEASE(HEAP); 135 0 3 158 0 END; {OPEN} 136 0 3 170 0 {$I OPEN.BU} 137 0 4 1 PROCEDURE DELETE(FILENAME : BIGSTR;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); 138 0 4 71 CONST DOTDELETE =256; {.DELETE} 139 0 4 71 140 0 4 71 141 0 4 71 VAR REQUEST : SCALLPTR; 142 0 4 72 HEAP : ^INTEGER; 143 0 4 73 FILEPTR : STRPTR; 144 0 4 74 145 0 4 0 0 BEGIN 146 0 4 0 0 MARK(HEAP); 147 0 4 9 0 NEW(REQUEST); 148 0 4 14 0 NEW(FILEPTR); 149 0 4 19 0 FILEPTR^ := FILENAME; 150 0 4 25 0 WRITELN(' ',FILEPTR^); 151 0 4 53 0 WITH REQUEST^ DO 152 0 4 57 1 BEGIN 153 0 4 57 1 MODE := SIMPLE; 154 0 4 61 1 CALLNUM := DOTDELETE; 155 0 4 69 1 R0.SPTR := FILEPTR; 156 0 4 76 1 R0.INT := R0.INT+1; 157 0 4 86 1 SYSCALL(REQUEST); 158 0 4 90 1 IF ERROR THEN WRITELN(' ERROR IN DELETE = ',R2.INT); 159 0 4 140 1 ERR := ERROR; 160 0 4 145 1 ERRNUM := R2.INT; 161 0 4 150 0 END; 162 0 4 150 0 RELEASE(HEAP); 163 0 4 154 0 END; {DELETE} 164 0 4 166 0 {$I DELETE.BU} 165 0 5 1 PROCEDURE CRAND(FILENAME : BIGSTR;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); 166 0 5 71 167 0 5 71 CONST DOTCRAND = 3584; {.CRAND} 168 0 5 71 169 0 5 71 170 0 5 71 VAR REQUEST : SCALLPTR; 171 0 5 72 HEAP : ^INTEGER; 172 0 5 73 FILEPTR : STRPTR; 173 0 5 74 TEMP : STRING[1]; 174 0 5 75 175 0 5 0 0 BEGIN 176 0 5 0 0 MARK(HEAP); 177 0 5 9 0 NEW(REQUEST); 178 0 5 14 0 NEW(FILEPTR); 179 0 5 19 0 FILEPTR^ := FILENAME; 180 0 5 25 0 WRITELN(' ',FILEPTR^); 181 0 5 53 0 WITH REQUEST^ DO 182 0 5 57 1 BEGIN 183 0 5 57 1 MODE := SIMPLE; 184 0 5 61 1 CALLNUM := DOTCRAND; 185 0 5 69 1 { APPEND 0 TO END OF STRING} 186 0 5 69 1 R0.SPTR := FILEPTR; 187 0 5 76 1 R0.INT := R0.INT+1; 188 0 5 86 1 SYSCALL(REQUEST); 189 0 5 90 1 IF ERROR THEN WRITELN(' ERROR IN CRAND = ',R2.INT); 190 0 5 139 1 ERR := ERROR; 191 0 5 144 1 ERRNUM := R2.INT; 192 0 5 149 0 END; 193 0 5 149 0 RELEASE(HEAP); 194 0 5 153 0 END; {CRAND} 195 0 5 166 0 {$I CRAND.BU} 196 0 6 1 PROCEDURE WRITELINE( CHANNEL : INTEGER; BUFFER : BIGSTR; 197 0 6 3 BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); 198 0 6 73 199 0 6 73 CONST DOTWRS = 7743; {.WRS} 200 0 6 73 201 0 6 73 VAR REQUEST : SCALLPTR; 202 0 6 74 HEAP : ^INTEGER; 203 0 6 75 STRINGPOINTER : STRPTR; 204 0 6 76 205 0 6 0 0 BEGIN 206 0 6 0 0 MARK(HEAP); 207 0 6 9 0 NEW(REQUEST); 208 0 6 14 0 NEW(STRINGPOINTER); 209 0 6 19 0 STRINGPOINTER^ := BUFFER; 210 0 6 25 0 WITH REQUEST^ DO 211 0 6 29 1 BEGIN 212 0 6 29 1 MODE := SIMPLE; 213 0 6 33 1 CALLNUM := DOTWRS; 214 0 6 41 1 R0.SPTR := STRINGPOINTER; 215 0 6 48 1 R0.INT := R0.INT+1; 216 0 6 58 1 R1.INT := BYTESOUT; 217 0 6 64 1 R2.INT := CHANNEL; 218 0 6 70 1 SYSCALL(REQUEST); 219 0 6 74 1 IF ERROR THEN WRITELN(' ERROR IN WRITELINE = ',R2.INT); 220 0 6 127 1 ERR := ERROR; 221 0 6 132 1 ERRNUM := R2.INT; 222 0 6 137 0 END; 223 0 6 137 0 RELEASE(HEAP); 224 0 6 141 0 END; {WRITE LINE} 225 0 6 154 0 {$I WRL.BU} 226 0 7 1 PROCEDURE READLINE( CHANNEL : INTEGER; VAR BUFFER : BIGSTR; 227 0 7 3 VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); 228 0 7 6 229 0 7 6 CONST DOTRDL = 6975; {.RDL} 230 0 7 6 231 0 7 6 VAR REQUEST : SCALLPTR; 232 0 7 7 233 0 7 7 HEAP : ^INTEGER; 234 0 7 8 STRINGPOINTER : STRPTR; 235 0 7 9 236 0 7 0 0 BEGIN 237 0 7 0 0 MARK(HEAP); 238 0 7 4 0 NEW(REQUEST); 239 0 7 9 0 NEW(STRINGPOINTER); 240 0 7 14 0 WITH REQUEST^ DO 241 0 7 17 1 BEGIN 242 0 7 17 1 MODE := SIMPLE; 243 0 7 21 1 CALLNUM := DOTRDL; 244 0 7 29 1 R0.SPTR := STRINGPOINTER; 245 0 7 35 1 R0.INT := R0.INT+1; 246 0 7 45 1 R1.INT := BYTESREAD; 247 0 7 52 1 R2.INT := CHANNEL; 248 0 7 58 1 SYSCALL(REQUEST); 249 0 7 61 1 250 0 7 61 1 {$R-} 251 0 7 61 1 STRINGPOINTER^[0] := R1.CH; 252 0 7 68 1 {$R^} 253 0 7 68 1 IF ERROR THEN WRITELN(' ERROR IN READLINE = ',R2.INT); 254 0 7 120 1 ERR := ERROR; 255 0 7 125 1 ERRNUM := R2.INT; 256 0 7 130 1 BUFFER := STRINGPOINTER^; 257 0 7 134 1 BYTESREAD := R1.INT; 258 0 7 139 0 END; 259 0 7 139 0 RELEASE(HEAP); 260 0 7 143 0 END; {READ LINE} 261 0 7 156 0 {$I RDL.BU} 262 0 8 1 PROCEDURE OPENFILES; 263 0 8 1 264 0 8 0 0 BEGIN 265 0 8 0 0 WRITELN(' INPUT FILE'); 266 0 8 27 0 READLINE(0,LINE,NBYTES,SYSERROR,ERRORNUMBER); 267 0 8 39 0 WRITELINE(2,LINE,NBYTES,SYSERROR,ERRORNUMBER); 268 0 8 51 0 GCHN(DISKIN); 269 0 8 56 0 OPEN(DISKIN,LINE,SYSERROR,ERRORNUMBER); 270 0 8 67 0 271 0 8 67 0 WRITELN(' OUTPUT FILE'); 272 0 8 95 0 273 0 8 95 0 {USE BELOW FOR RDOS FILE DISKOUT MUST BE INTEGER} 274 0 8 95 0 {READLINE(0,LINE,NBYTES,SYSERROR,ERRORNUMBER); 275 0 8 95 0 GCHN(DISKOUT); 276 0 8 95 0 DELETE(LINE,SYSERROR,ERRORNUMBER); 277 0 8 95 0 CRAND(LINE,SYSERROR,ERRORNUMBER); 278 0 8 95 0 OPEN(DISKOUT,LINE,SYSERROR,ERRORNUMBER); 279 0 8 95 0 } 280 0 8 95 0 {USE BELOW FOR PASCAL FILE - DISKOUT MUST BE TEXT} 281 0 8 95 0 READLN(LINE); 282 0 8 117 0 FILETITLE(DISKOUT,LINE); 283 0 8 124 0 RESET(DISKOUT); 284 0 8 130 0 285 0 8 130 0 286 0 8 130 0 END; {OF OPEN FILES} 287 0 8 142 0 288 0 8 142 0 289 0 8 142 0 {$I OPENFILES.PI} 290 0 8 142 0 291 0 9 1 PROCEDURE GPOS (RDOSCHANNEL : INTEGER;VAR FILEPOS : DPINTEGER); 292 0 9 3 293 0 9 3 294 0 9 3 295 0 9 3 CONST DOTGPOS = 10303; {.GPOS} 296 0 9 3 297 0 9 3 VAR REQUEST : SCALLPTR; 298 0 9 4 HEAP : ^INTEGER; 299 0 9 5 300 0 9 0 0 BEGIN 301 0 9 0 0 MARK(HEAP); 302 0 9 4 0 NEW(REQUEST); 303 0 9 9 0 WITH REQUEST^ DO 304 0 9 12 1 BEGIN 305 0 9 12 1 MODE := SIMPLE; 306 0 9 15 1 CALLNUM := DOTGPOS; 307 0 9 22 1 R2.INT := RDOSCHANNEL; 308 0 9 27 1 SYSCALL(REQUEST); 309 0 9 30 1 IF ERROR THEN 310 0 9 34 1 WRITELN(' ERROR IN GCHN = ',R2.INT); 311 0 9 74 1 FILEPOS.UPPER := R0.INT; 312 0 9 78 1 FILEPOS.LOWER := R1.INT; 313 0 9 84 0 END; 314 0 9 84 0 RELEASE(HEAP); 315 0 9 88 0 END; {GPOS} 316 0 9 100 0 {$I GPOS.PI} 317 0 10 1 PROCEDURE SPOS( RDOSCHANNEL : INTEGER; FILEPOS : DPINTEGER); 318 0 10 5 319 0 10 5 320 0 10 5 CONST DOTSPOS = 10047; {.SPOS} 321 0 10 5 322 0 10 5 323 0 10 5 VAR REQUEST : SCALLPTR; 324 0 10 6 HEAP : ^INTEGER; 325 0 10 7 326 0 10 0 0 BEGIN 327 0 10 0 0 MARK(HEAP); 328 0 10 9 0 NEW(REQUEST); 329 0 10 14 0 WITH REQUEST^ DO 330 0 10 17 1 BEGIN 331 0 10 17 1 MODE := SIMPLE; 332 0 10 20 1 CALLNUM := DOTSPOS; 333 0 10 27 1 R0.INT := FILEPOS.UPPER; 334 0 10 32 1 R1.INT := FILEPOS.LOWER; 335 0 10 37 1 R2.INT := RDOSCHANNEL; 336 0 10 42 1 SYSCALL(REQUEST); 337 0 10 45 1 IF ERROR THEN WRITELN(' ERROR IN SPOS = ',R2.INT); 338 0 10 89 0 END; 339 0 10  89 0 RELEASE(HEAP); 340 0 10 93 0 END; {SPOS} 341 0 10 106 0 {$I SPOS.PI} 342 0 11 1 FUNCTION GETINTEGER( STR : BIGSTR;VAR I : INTEGER) : INTEGER; 343 0 11 71 344 0 11 71 345 0 11 71 LABEL 1,2,3; 346 0 11 71 347 0 11 71 TYPE SIGNOF = (PLUS,MINUS); 348 0 11 71 VAR LEN,FNUMB : INTEGER; 349 0 11 73 SIGN :SIGNOF; 350 0 11 74 351 0 11 74 352 0 11 0 0 BEGIN 353 0 11 0 0 FNUMB := 0; 354 0 11 8 0 SIGN := PLUS; 355 0 11 11 0 LEN := LENGTH(STR); 356 0 11 16 0 { WRITELN('LEN=',LEN);} 357 0 11 16 0 1: IF I <= LEN THEN 358 0 11 23 2 IF NOT (STR[I] IN ['0'..'9','-']) THEN BEGIN 359 0 11 45 2 I := I+1;GOTO 1; 360 0 11 53 2 END 361 0 11 53 3 ELSE IF STR[I] = '-' THEN BEGIN 362 0 11 65 3 I := I+1; 363 0 11 71 3 SIGN := MINUS; 364 0 11 74 3 GOTO 1; 365 0 11 76 0 END; 366 0 11 76 0 2 : IF STR[I] IN ['0'..'9'] THEN 367 0 11 96 1 BEGIN 368 0 11 96 1 { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB);} 369 0 11 96 1 FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); 370 0 11 111 1 I := I+1; 371 0 11 117 1 IF I<= LEN THEN GOTO 2; 372 0 11 126 0 END; 373 0 11 126 0 3: CASE SIGN OF 374 0 11 130 0 PLUS : GETINTEGER := FNUMB; 375 0 11 136 1 MINUS : GETINTEGER := -FNUMB 376 0 11 136 0 END;{CASE} 377 0 11 154 0 END;{getinteger} 378 0 11 170 0 {$I GETINTEGER.BU} 379 0 12 1 FUNCTION GETFIELDINT(STR : BIGSTR; FIELDNUMBER : INTEGER) : INTEGER; 380 0 12 71 VAR I,J,LEN : INTEGER; 381 0 12 74 382 0 12 0 0 BEGIN 383 0 12 0 0 LEN := LENGTH(STR); 384 0 12 10 0 I := 1; 385 0 12 13 0 J := 1; 386 0 12 16 0 WHILE ( (I FIELDNUMBER) ) DO 387 0 12 28 1 BEGIN 388 0 12 28 1 389 0 12 28 1 {LEADING BLANKS AND TABS} 390 0 12 28 1 WHILE ( (I FIELDNUMBER) ) DO 481 0 14 28 1 BEGIN 482 0 14 28 1 483 0 14 28 1 {LEADING BLANKS AND TABS} 484 0 14 28 1 WHILE ( (I W^.KEY THEN SEARCH(W^.RIGHT) ELSE 514 0 15 98 3 BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; 515 0 15 116 3 X^.POS := PRESPOS; {SAVE FILE POSITION} 516 0 15 123 3 W^.LAST^.NEXT := X;W^.LAST := X 517 0 15 132 3 END 518 0 15 134 0 END; (*SEARCH*) 519 0 15 146 0 520 0 16 1 PROCEDURE PRINTRECORDS(W : WORD); 521 0 16 7 522 0 16 7 VAR X : ITEMREF; 523 0 16 8 524 0 16 0 0 BEGIN 525 0 16 0 0 X := W.FIRST; 526 0 16 8 0 REPEAT 527 0 16 8 1 BEGIN 528 0 16 8 1 SPOS(DISKIN,X^.POS); 529 0 16 16 1 READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); 530 0 16 29 1 IF PCONSOLE THEN WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); 531 0 16 75 1 WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); 532 0 16 116 1 X := X^.NEXT; 533 0 16 120 1 END; 534 0 16 120 0 UNTIL X = NIL; 535 0 16 125 0 536 0 16 125 0 END; {PRINT IN ORDER} 537 0 16 140 0 538 0 17 1 PROCEDURE PRINTINORDER(W : WORDREF); 539 0 17 0 0 BEGIN IF W<> NIL THEN 540 0 17 5 1 BEGIN PRINTINORDER(W^.LEFT); 541 0 17 10 1 PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); 542 0 17 19 0 END; 543 0 17 19 0 END; 544 0 17 32 0 545 0 18 1 PROCEDURE PRINTWORD(W : WORD); 546 0 18 7 VAR L:INTEGER;X:ITEMREF; 547 0 18 0 0 BEGIN 548 0 18 0 0 IF PCONSOLE THEN WRITE(' ',W.KEY : C1); 549 0 18 26 0 WRITE(DISKOUT,' ',W.KEY : C1); 550 0 18 42 0 X := W.FIRST;L := 0; 551 0 18 48 1 REPEAT IF L = C2 THEN 552 0 18 53 2 BEGIN 553 0 18 53 2 L := 0; 554 0 18 56 3 IF PCONSOLE THEN BEGIN 555 0 18 59 3 WRITELN;WRITE(' ':C1+1); 556 0 18 78 2 END; 557 0 18 78 2 WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); 558 0 18 94 1 END; 559 0 18 94 1 L := L+1; 560 0 18 99 1 IF PCONSOLE THEN WRITE(' ',X^.LNO :C3); 561 0 18 121 1 WRITE(DISKOUT,X^.LNO : C3); 562 0 18 131 1 X := X^.NEXT; 563 0 18 135 0 UNTIL X = NIL ; 564 0 18 140 0 IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; 565 0 18 155 0 WRITELN(DISKOUT); 566 0 18 160 0 WRITELN(DISKOUT) 567 0 18 165 0 END; 568 0 18 180 0 (*END OF PRINTWORD*) 569 0 18 180 0 570 0 19 1 PROCEDURE PRINTTREE(W : WORDREF); 571 0 19 0 0 BEGIN 572 0 19 0 0 IF W <> NIL THEN 573 0 19 5 1 BEGIN PRINTTREE(W^.LEFT); 574 0 19 10 1 PRINTWORD(W^);PRINTTREE(W^.RIGHT) 575 0 19 17 1 END 576 0 19 19 0 END; 577 0 19 32 0 (*END OF PRINTTREE*) 578 0 19 32 0 579 0 20 1 PROCEDURE FIND(W : WORDREF); 580 0 20 2 581 0 20 0 0 BEGIN IF W = NIL THEN 582 0 20 5 0 BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE 583 0 20 47 1 IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE 584 0 20 60 2 IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE 585 0 20 73 2 {FOUND MATCH} 586 0 20 73 3 WF := W 587 0 20 73 0 END; {FIND} 588 0 20 88 0 589 0 20 88 0 590 0 20 88 0 591 0 21 1 PROCEDURE PRINTLINES(W : WORD); 592 0 21 7 593 0 21 7 VAR L : INTEGER; X : ITEMREF; 594 0 21 9 AMOUNT,CHECK : REAL; 595 0 21 13 596 0 21 0 0 BEGIN 597 0 21 0 0 AMOUNT := 0.0; 598 0 21 16 0 IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); 599 0 21 55 0 WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); 600 0 21 89 0 X := W.FIRST;L := 0; 601 0 21 95 0 602 0 21 95 1 REPEAT BEGIN 603 0 21 95 1 L := L+1; 604 0 21 100 1 SPOS(DISKIN,X^.POS); 605 0 21 108 1 READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); 606 0 21 121 1 IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); 607 0 21 161 1 WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); 608 0 21 196 1 609 0 21 196 1 CHECK := REALFIELD(LINE,3); 610 0 21 208 1 AMOUNT := AMOUNT+CHECK; 611 0 21 221 1 X := X^.NEXT 612 0 21 222 1 END 613 0 21 225 0 UNTIL X = NIL; 614 0 21 230 0 IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); 615 0 21 272 0 WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); 616 0 21 309 0 END; {OF PRINT ALL LINES WITH KEY W.KEY} 617 0 21 324 0 618 0 22 1 FUNCTION QUESTION : BOOLEAN; 619 0 22 2 620 0 22 0 0 BEGIN 621 0 22 0 0 REPEAT 622 0 22 0 1 WRITE(' ANSWER Y OR N '); 623 0 22 27 1 READLN(CH) 624 0 22 46 0 UNTIL (CH = 'Y') OR (CH = 'N'); 625 0 22 55 0 QUESTION := CH = 'Y'; 626 0 22 60 0 END; 627 0 22 74 0 628 0 22 74 0 629 0 1 0 0 BEGIN OPENFILES; 630 0 1 93 0 WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); 631 0 1 142 0 PCONSOLE := QUESTION; 632 0 1 148 0 WRITELN(' WANT DATA BASE FILE PRINTED?'); 633 0 1 196 0 PDATAFILE := QUESTION; 634 0 1 202 0 WRITELN(' WANT INDEX PRINTED? '); 635 0 1 242 0 PINDEX := QUESTION; 636 0 1 248 0 WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); 637 0 1 306 0 PINDEX := QUESTION; 638 0 1 312 0 639 0 1 312 0 WRITE(' SORT ON FILEN NO. 2,3,4,5? '); 640 0 1 353 0 READLN(FIELDNUMBER); 641 0 1 378 0 ROOT := NIL;N := 0; 642 0 1 384 0 REPEAT 643 0 1 384 0 644 0 1 384 1 BEGIN 645 0 1 384 1 GPOS(DISKIN,PRELSPOS); 646 0 1 391 1 READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); 647 0 1 404 1 648 0 1 404 1 IF NOT SYSERROR THEN 649 0 1 409 2 BEGIN 650 0 1 409 2 N := N+1; 651 0 1 414 2 IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); 652 0 1 458 2 IF PDATAFILE THEN WRITE(DISKOUT,' ',N : C3,' ',LINE); 653 0 1 500 2 CASE LINE[1] OF 654 0 1 507 3 'C','E','W' : BEGIN 655 0 1 507 3 ID := GETFIELDINT(LINE,FIELDNUMBER); 656 0 1 518 3 SEARCH(ROOT); 657 0 1 523 2 END; 658 0 1 525 2 END; 659 0 1 574 1 END; 660 0 1 574 1 661 0 1 574 1 END; 662 0 1 574 0 UNTIL ERRORNUMBER = 6; {END OF FILE} 663 0 1 580 0 664 0 1 580 0 IF PTREE THEN PRINTTREE(ROOT); 665 0 1 587 0 666 0 1 587 0 WRITELN(' MEMORY LEFT = ',MEMAVAIL); 667 0 1 630 0 668 0 1 630 0 IF PINDEX THEN PRINTINORDER(ROOT); 669 0 1 637 0 670 0 1 637 0 WHILE NOT EOF(INPUT) DO 671 0 1 647 1 BEGIN 672 0 1 647 1 673 0 1 647 1 WRITE(' SEARCH KEY =');READLN(ID); 674 0 1 697 1 FIND(ROOT); 675 0 1 701 1 IF WF <> NIL THEN 676 0 1 706 2 BEGIN 677 0 1 706 2 PRINTWORD(WF^); 678 0 1 710 2 PRINTLINES(WF^); 679 0 1 714 1 END; 680 0 1 714 1 681 0 1 714 0 END; 682 0 1 716 0 683 0 1 716 0 END. RLDRSVRLDRSVGETFIELDINBU )FUNCTION GETFIELDINT(STR : BIGSTR; FIELDNUMBER : INTEGER) : INTEGER; VAR I,J,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; J := 1; WHILE ( (I FIELDNUMBER) ) DO BEGIN {LEADING BLANKS AND TABS} WHILE ( (I=30) AND (BYTE<=126) THEN WRITELN(OUTPUT,' ALPHANUM'); CASE BYTE OF 0,1,2,3,4,5,6,7 : ; 8 : IF CURSOR.COLUMN <> 1 THEN CURSOR.COLUMN := CURSOR.COLUMN-1; 9 : ; 10 : CURSOR.LINE := CURSOR.LINE+1; 11 : IF CURSOR.LINE >1 THEN CURSOR.LINE := CURSOR.LINE-1; 14 : CURSOR.COLUMN := CURSOR.COLUMN+1; 12 : BEGIN CURSOR.LINE := 1; CURSOR.COLUMN := 1 END; 13 : BEGIN CURSOR.LINE := CURSOR.LINE+1; CURSOR.COLUMN := NCOLUMNS*CURSOR.LINE END; END; WBYTE(OUTCH,BYTE,ERROR); UNTIL (ERROR <> -1) OR (BYTE = CONTROLZ) END. T40 ",PROGRAM T40(INPUT,OUTPUT); (* POINTER TESTER *) TYPE XY=RECORD COLUMN,LINE : INTEGER END; LINK = ^ XY; VAR CURSOR : LINK; X,Y,ERROR: INTEGER; POS:XY; BEGIN MARK(CURSOR); NEW(CURSOR); CURSOR^.LINE := 1; CURSOR^.COLUMN := 2; WRITELN(OUTPUT,CURSOR^.LINE,CURSOR^.COLUMN); WRITELN(OUTPUT,POS.LINE,POS.COLUMN); NEW(CURSOR); WRITELN(OUTPUT,CURSOR^.LINE,CURSOR^.COLUMN); WRITELN(OUTPUT,POS.LINE,POS.COLUMN); RELEASE(CURSOR) END. CBOOKBUaTs PROGRAM CBOOK(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; ENTRYTYPES = (CHECK,CANCELEDCHECK,BALANCE,DEPOSIT,CREDITMEMO, DEBITMEMO,EMPLOYEECHECK,WITHOLDINGCHECK); VAR STR : ALPHANUMERIC; BLANKS : STRING[15]; CH : CHAR; CHECKNUMBER,I : INTEGER; TOTALCHECKS,TOTALDEPOSITS,TOTALDEBITS,TOTALCREDITS,NEWBALANCE,AMOUNT : REAL; ENTRY : ENTRYTYPES; SOURCE : TEXT; {$I REALPRINT.PI} {$I GETREAL.PI} {$I GETINTEGER.PI} PROCEDURE ERROR; BEGIN WRITELN(' ERROR'); END;{error} PROCEDURE C1HECK; BEGIN I := 2; CHECKNUMBER := GETINTEGER(STR,I); AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE- AMOUNT; TOTALDEBITS := TOTALDEBITS+AMOUNT; TOTALCHECKS := TOTALCHECKS + AMOUNT; WRITE(' CK ',CHECKNUMBER : 10); REALPRINT(AMOUNT);WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{c.heck} PROCEDURE B1ALANCE; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := AMOUNT; WRITE(' BL ');WRITE(BLANKS,BLANKS,BLANKS); REALPRINT(NEWBALANCE); END;{B1ALANCE} PROCEDURE D1EPOSIT; BEGIN I :=2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE+ AMOUNT; TOTALCREDITS := TOTALCREDITS+AMOUNT; TOTALDEPOSITS := TOTALDEPOSITS+AMOUNT; WRITE(' DP ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{D1EPOSIT} PROCEDURE C1REDITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE + AMOUNT; TOTALCREDITS := TOTALCREDITS + AMOUNT; WRITE(' CM ',BLANKS,BLANKS);REALPRINT(AMOUNT); REALPRINT(NEWBALANCE); END;{c1reditmemo} PROCEDURE D1EBITMEMO; BEGIN I := 3; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; WRITE(' DM ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{D1EBITMEMO} PROCEDURE C1ANCELEDCHECK; BEGIN I := 3; CHECKNUMBER := GETINTEGER(STR,I); WRITE(' CC ',CHECKNUMBER : 10); END;{c1ancelledcheck} PROCEDURE E1MPLOYEECHECK; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' EM ',BLANKS); REALPRINT(AMOUNT);WRITE(BLANKS); REALPRINT(NEWBALANCE); END;{E1MPLOYEE CHECKS} PROCEDURE W1ITHOLDINGCHECKS; BEGIN I := 2; AMOUNT := GETREAL(STR,I); NEWBALANCE := NEWBALANCE - AMOUNT; TOTALDEBITS := TOTALDEBITS + AMOUNT; TOTALCHECKS := TOTALCHECKS+AMOUNT; WRITE(' WH ',BLANKS);REALPRINT(AMOUNT); WRITE(BLANKS);REALPRINT(NEWBALANCE); END;{W1HOLDINGCHECKS} PROCEDURE GETENTRYTYPE (LINE : ALPHANUMERIC); BEGIN CASE LINE[1] OF 'C' : IF ORD(LINE[2]) = 9 THEN ENTRY := CHECK ELSE IF LINE[2] = 'C' THEN ENTRY := CANCELEDCHECK ELSE IF LINE[2] = 'M' THEN ENTRY := CREDITMEMO ELSE ERROR; 'D' : IF ORD(LINE[2]) = 9 THEN ENTRY := DEPOSIT ELSE IF LINE[2] = 'M' THEN ENTRY := DEBITMEMO  ELSE ERROR; 'B' : IF ORD(LINE[2]) = 9 THEN ENTRY := BALANCE ELSE ERROR; 'E' : IF ORD(STR[2]) = 9 THEN ENTRY := EMPLOYEECHECK ELSE ERROR; 'W' : IF ORD(STR[2]) = 9 THEN ENTRY := WITHOLDINGCHECK ELSE ERROR; END; END; PROCEDURE INITIALIZE; BEGIN WRITE(' INPUT FILE NAME? '); READLN(STR); FILETITLE(SOURCE,STR); RESET(SOURCE); BLANKS := ' '; NEWBALANCE := 0.0 ; TOTALDEBITS := 0.0; TOTALCREDITS := 0.0; TOTALCHECKS := 0.0; TOTALDEPOSITS := 0.0; WRITELN(' KEY TO TRANSACTION TYPES'); WRITELN(' C CHECK CC CANCELLED CHECK'); WRITELN(' CM CREDIT MEMO DM DEBIT MEMO'); WRITELN(' DP DEPOSIT BL FORCED BALANCE'); WRITELN(' EM EMPLOYEE CK WH WITHOLDING CHECK'); WRITELN; WRITELN(' TYPE CHECK DEBIT CREDIT BALANCE'); END;{initialize} BEGIN INITIALIZE; WRITELN; WHILE NOT EOF(SOURCE) DO BEGIN READLN(SOURCE,STR); WRITELN; WRITELN; GETENTRYTYPELINE (STR); CASE ENTRY OF CHECK : C1HECK; CANCELEDCHECK : C1ANCELEDCHECK; CREDITMEMO : C1REDITMEMO; DEPOSIT : D1EPOSIT; DEBITMEMO : D1EBITMEMO; BALANCE : B1ALANCE; EMPLOYEECHECK : E1MPLOYEECHECK; WITHOLDINGCHECK : W1ITHOLDINGCHECK; END;{case} END; WRITELN;WRITELN; WRITE(' TOTALS '); REALPRINT(TOTALDEBITS);REALPRINT(TOTALCREDITS); REALPRINT(NEWBALANCE); WRITELN; WRITE(' TOTAL CHECKS ');REALPRINT(TOTALCHECKS);WRITELN; WRITE(' TOTAL DEPOSITS');REALPRINT(TOTALDEPOSITS);END. GETREAL01 ( FUNCTION GETREAL( STR : ALPHANUMERIC;VAR I : INTEGER) : REAL; {STR : STRING[99] = INPUT LINE I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} LABEL 1,2; TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; VAR LEN : INTEGER; FGETREAL,PLACE :REAL; PART : WHOLORFRACT ; BEGIN PART := WHOLE;{assume while part first} FGETREAL := 0; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} IF ORD(STR[I]) IN [9,32] THEN BEGIN I := I+1;GOTO 1; END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN CASE PART OF WHOLE : BEGIN FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); { REALPRINT(FGETREAL);} { WRITELN(' WHOLE');} END; FRACTIONAL : BEGIN FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; PLACE := PLACE*10; { REALPRINT(FGETREAL);} { WRITELN(' FP');} END END; {case} I := I+1; GETREAL := FGETREAL; GOTO 2 END ELSE IF STR[I] = '.' THEN BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; { WRITE(' FRACTION.');} GOTO 2; END ELSE IF STR[I] = ',' THEN BEGIN I := I+1;GOTO 2 END ELSE EXIT(GETREAL) ELSE EXIT(GETREAL) END;{getreal} 1978EMP10 ,f E 610 325.46 E 611 1020.87 E 612 922.47 E 613 505.84 E 614 595.69 E 616 258.02 E 618 1053.55 E 619 845.14 E 620 420.35 E 621 548.51 E 622 293.42 E 623 339.16 E 624 374.42 W 626 483.00 E 631 142.22 W 633 2792.12 CONSOLEPA xrq PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LENGTH} STR : PACKED ARRAY[1..132] OF CHAR {DATA} END; LINEPOINTER = ^LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR : LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR CHARVALUE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; NBYTES : INTEGER; DONE : BOOLEAN; DISKIN,DISKOUT : INTEGER; {$I RDL.PI} {$I WRL.PI} {$I GCHN.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: LINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := STR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE1(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN := LEN -1; END {DO} END; {DELETE1} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CARRIAGERETURN; BEGIN INSERT(LINE,INTERNALPOS,CHARACTER); LINE.LEN := INTERNALPOS; END; {INSERT CARRIAGE RETURN AND MAKE LINE LENGTH=CRET POSITION} PROCEDURE DISPLAYLINE; BEGIN PCHAR(10);PCHAR(13); WRITESTRING(LINE); PCHAR(13);PCHAR(10); END; PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE1(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE1(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE GETLINE; BEGIN READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); LINE.LEN := LINE.LEN-1; {IGNORE C RETN} WRITESTRING(LINE); INTERNALPOS := LINE.LEN+1; DISPLAYPOS := CALCDISPLAYPOS(LINE,LINE.LEN); CURLINE := 1; DONE := SYSERROR; END; {GETLINE} PROCEDURE PUTLINE; BEGIN WRITELINE(DISKOUT,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; {PUTLINE} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : BEGIN DISPLAYLINE;PUTLINE;GETLINE END; {UP} 11 : ; {CARR RETN} 13 : BEGIN DISPLAYLNE; CARRIAGERETURN;PUTLINE;GETLINE END; {DELETE} 127 : DELETECHARACTER END;{CASE} END;{ACTION} PROCEDURE OPENFILES; VAR L : LINESTRING; NBYTES,ERRORNUMBER : INTEGER; SYSERROR : BOOLEAN; I : INTEGER; BEGIN WRITELN('INPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,L,SYSERROR,ERRORNUMBER); WRITELN('OUTPUT FILE?'); READLINE(0,L,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(L,SYSERROR,ERRORNUMBER); CRAND(L,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,L,SYSERROR,ERRORNUMBER); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW CURSOR} BEGIN {MAIN PROGRAM} OPENFILES; REPEAT BEGIN GETLINE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 27 ;{ESC} END UNTIL DONE END. TEDIT qTSSpT9 .. PROGRAM T9 (INPUT,OUTPUT); TYPE COLOR = (RED,BLUE,GREEN); VAR STRING:CHAR; BEGIN STRING := 'E'; CASE STRING OF 'E' : WRITELN(OUTPUT,' END'); 'S' : WRITELN(OUTPUT,' START'); END; END. BTREE01  0 PROGRAM BTREE (INPUT,OUTPUT); (*B-TREE SEARCH,INSERTION AND DELETION*) CONST N = 2; NN = 4; (*PAGE SIZE*) TYPE REF = ^PAGE; ITEM = RECORD KEY : REAL; P : REF; COUNT : INTEGER END ; PAGE = RECORD M : 0..NN; (*NO.OF ITEMS*) P0 : REF; E : ARRAY [1..NN] OF ITEM END; VAR ROOT,Q : REF; X : REAL; H : BOOLEAN; U : ITEM; PROCEDURE SEARCH (X : REAL; A : REF;VAR H : BOOLEAN; VAR V : ITEM); (*SEARCH KEY X ON B-TREE WITH ROOT A; IF FOUND, INCREMENT COUNTER. OTHERWISE INSERT AN ITEM WITH KEY X AND COUNT 1 IN TREE. IF AN ITEM EMERGES TO BE PASSED TO A LOWER LEVEL, THEN ASSIGN IT TO V; H := 'TREE A HAS BECOME HIGHER'*) VAR K,L,R : INTEGER; Q : REF; U : ITEM; PROCEDURE INSERT; VAR I : INTEGER; B : REF; BEGIN (*INSERT U TO THE RIGHT OF A^.E[R]*) WITH A^ DO BEGIN IF M < NN THEN BEGIN M := M+1; H := FALSE; FOR I := M DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END ELSE BEGIN (*PAGE A^ IS FULL;SPLIT IT AND ASSIGN THE EMERGING ITEM TO V*) NEW (B); IF R <= N THEN BEGIN IF R = N THEN V := U ELSE BEGIN V := E[N]; FOR I := N DOWNTO R+2 DO E[I] := E[I-1]; E[R+1] := U END; FOR I := 1 TO N DO B^.E[I] := A^.E[I+N] END ELSE BEGIN (*INSERT U IN RIGHT PAGE*) R := R-N; V := E[N+1]; FOR I := 1 TO R-1 DO B^.E[I] := A^.E[I+N+1]; B^.E[R] := U; FOR I := R+1 TO N DO B^.E[I] := A^.E[I+N] END ; M := N; B^.M := N; B^.P0 := V .P; V .P := B END END (*WITH*) END (*INSERT*); BEGIN (*SEARCH KEY X ON PAGE A^; H = FALSE*) IF A = NIL THEN BEGIN (*ITEM WITH KEY X IS NOT IN TREE*) H := TRUE; WITH V DO BEGIN KEY := X; COUNT := 1; P := NIL END END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; WRITELN(' L',L,' R',R,' K',K,' KEY',E[K].KEY); IF X <= E [K] .KEY THEN R := K-1; IF X >= E [K] .KEY THEN L := K+1; UNTIL R < L; IF L-R > 1 THEN BEGIN (*FOUND*) E[K] .COUNT := E[K] .COUNT + 1; H := FALSE END ELSE BEGIN (*ITEM IS NOT ON THIS PAGE*) IF R = 0 THEN Q := P0 ELSE Q := E[R] .P; SEARCH (X,Q,H,U); IF H THEN INSERT END END END (*SEARCH*); PROCEDURE DELETE(X : REAL; A : REF; VAR H : BOOLEAN); (*SEARCH AND DELETE KEY X IN B-TREE A; IF A PAGE UNDERFLOW IS NECESSARY, BALANCE WITH ADJACENT PAGE IF POSSIBLE, OTHERWISE MERGE; H := 'PAGE A IS UNDERSIZE'*) VAR I,K,L,R : INTEGER; Q : REF; PROCEDURE UNDERFLOW(C,A : REF; S : INTEGER; VAR H : BOOLEAN); (*A = UNDERFLOW PAGE, C = ANCESTOR PAGE*) VAR B : REF; I,K,M5B,MC : INTEGER; BEGIN MC := C^.M; (*H = TRUE, A .M = N-1*) IF S < MC THEN BEGIN (*B := PAGE TO THE RIGHT OF A*) S := S+1; B := C^.E[S].P; MB := B^.M; K := (MB-N+1) DIV 2; (*K = NO. OF ITEMS AVAILABLE ON ADJACENT PAGE B*) A^.E[N] := C^.E[S]; A^.E[N] .P := B^.P0; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM B TO A*) FOR I := 1 TO K-1 DO A^.E[I+N] := B^.E[I]; C^.E[S] := B^.E[K]; C^.E[S] .P := B; B^.P0 := B^.E[K] .P; MB := MB-K; FOR I := 1 TO MB DO B^.E[I] := B^.E[I+K]; B^.M := MB; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) FOR I := 1 TO N DO A^.E[I+N] := B^.E[I]; FOR I := S TO MC-1 DO C^.E[I] := C^.E[I+1]; A^.M := NN; C^.M := MC-1; (*DISPOSE(B)*) END END ELSE BEGIN (*B := PAGE TO THE LEFT OF A*) IF S = 1 THEN B := C^.P0 ELSE B := C^.E[S-1] .P; MB := B^.M + 1; K := (MB-N) DIV 2; IF K > 0 THEN BEGIN (*MOVE K ITEMS FROM PAGE B TO A*) FOR I := N-1 DOWNTO 1 DO A^.E[I+K] := A^.E[I]; A^.E[K] := C^.E[S]; A^.E[K] .P := A^.P0; MB := MB-K; FOR I := K-1 DOWNTO 1 DO A^.E[I] := B^.E[I+MB]; A^.P0 := B^.E[MB] .P; C^.E[S] := B^.E[MB]; C^.E[S] .P := A; B^.M := MB-1; A^.M := N-1+K; H := FALSE END ELSE BEGIN (*MERGE PAGES A AND B*) B^.E[MB] := C^.E[S]; B^.E[MB] .P := A^.P0; FOR I := 1 TO N-1 DO B^.E[I+MB] := A^.E[I]; B^.M := NN; C^.M := MC-1; (*DISPOSE(A)*) END END END (*UNDERFLOW*) ; PROCEDURE DEL(P : REF; VAR H : BOOLEAN); VAR Q : REF; (*GLOBAL A,K*) BEGIN WITH P^ DO BEGIN Q := E[M] .P; IF Q <> NIL THEN BEGIN DEL(Q,H); IF H THEN UNDERFLOW(P,Q,M,H) END ELSE BEGIN P^.E[M] .P := A^.E[K] .P; A^.E[K] := P^.E[M]; M := M-1; H := M < N END END END (*DEL*); BEGIN (*DELETE*) IF A = NIL THEN BEGIN WRITELN ('KEY IS NOT IN TR','EE'); H := FALSE END ELSE WITH A^ DO BEGIN L := 1; R := M; (*BINARY ARRAY SEARCH*) REPEAT K := (L+R) DIV 2; IF X <= E[K].KEY THEN R := K-1; IF X >= E[K].KEY THEN L := K+1; UNTIL L > R; IF R=0 THEN Q := P0 ELSE Q := E[R] .P ; IF L-R > 1 THEN BEGIN (*FOUND, NOW DELETE E[K]*) IF Q = NIL THEN BEGIN (*A IS A TERMINAL PAGE*) M := M-1; H := M NIL THEN WITH P^ DO BEGIN FOR I := 1 TO L DO WRITE (' '); FOR I := 1 TO M DO WRITE(E[I].KEY); WRITELN; PRINTTREE(P0,L+1); FOR I := 1 TO M DO PRINTTREE(E[I] .P, L+1) END END ; BEGIN ROOT := NIL; READ(X); WHILE X <> 0 DO BEGIN WRITELN('SEARCH KEY',X); SEARCH(X,ROOT,H,U); IF H THEN BEGIN (*INSERT NEW BASE PAGE*) Q := ROOT; NEW(ROOT); WITH ROOT^ DO BEGIN M := 1; P0 := Q; E[1] := U END END ; PRINTTREE(ROOT,1); READ(X) END ; READ(X); WHILE X <> 0 DO BEGIN WRITELN('DELETE KEY', X); DELETE(X,ROOT,H); IF H THEN BEGIN (*BASE PAGE SIZE WAS REDUCED*) IF ROOT^.M = 0 THEN BEGIN Q := ROOT; ROOT := Q^.P0; (*DISP0SE(Q)*) END END ; PRINTTREE(ROOT,1); READ(X) END END . 1978EMP11 <f "E 660 484.10 W 662 2276.24 E 650 981.35 E 651 992.28 E 652 327.45 E 653 384.95 E 641 1081.13 E 642 1042.43 E 643 490.20 E 644 516.116 E 646 326.75 W 647 2424.72 W 648 393.57 W 649 251.13 GPOSPI :PROCEDURE GPOS (RDOSCHANNEL : INTEGER;VAR FILEPOS : DPINTEGER); CONST DOTGPOS = 10303; {.GPOS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTGPOS; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN GCHN = ',R2.oINT); FILEPOS.UPPER := R0.INT; FILEPOS.LOWER := R1.INT; END; RELEASE(HEAP); END; {GPOS} RLDROLRLDROLPASCFLS~m PASCFLS,^ P4COMPILER.,^ P4ASM.SV,^ P4MAC.SV,^ P4LIB.LB,^ PCMESSAGE.ER,^ P4CUE.RB,^ P4ERRSUM.SV,^ PASCAL.SV,^ PCODE.SV^ TMCf @ 8CHATR TEST.PX 0 DELETE/V TEST.PA XFER TEST TEST.PA/R PASINTERP PASCALO/S/V/A/L TEST CHATR TEST.PX *WP REALPRINTPX B ;GETREALPIf D "FUNCTION GETREAL( STR : ALPHANUMERIC;VAR I : INTEGER) : REAL; {STR : STRING[99] = INPUT LINE I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} LABEL 1,2; TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; SIGNOF = (PLUS,MINUS); VAR LEN : INTEGER; FGETREAL,PLACE :REAL; PART : WHOLORFRACT ; SIGN : SIGNOF; BEGIN SIGN := PLUS; PART := WHOLE;{assume while part first} FGETREAL := 0; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} IF NOT (STR[I] IN ['0'..'9','-','.']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN CASE PART OF WHOLE : BEGIN FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); { REALPRINT(FGETREAL);} { WRITELN(' WHOLE');} END; FRACTIONAL : BEGIN FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; PLACE := PLACE*10; { REALPRINT(FGETREAL);} { WRITELN(' FP');} END END; {case} I := I+1; GOTO 2 END ELSE IF STR[I] = '.' THEN BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; { WRITE(' FRACTION.');} GOTO 2; END ELSE IF STR[I] = ',' THEN BEGIN I := I+1;GOTO 2 END; CASE SIGN OF PLUS : GETREAL := FGETREAL; MINUS : GETREAL := -FGETREAL; END;{case} END;{getreal} TOTALPX  TOTAL Copyright (C) 1981 Rational Data Systems ( ڪc=<:77ȡ` -á =7ȡV<<:: 00::0888  D./.á<8 ,á=:: ')+-9.$ض$0öÍ,`$ض$0B ?zჽ ݞ$ݕá-ݮġáۛ.ȡáخC ٪c6877ȡ5  -á 86 067ȡ8 66 P5 ƁƁƁOUTPUTƁ=Ɓ{Ɓ=INPUT9w9OUTFILEƀƀƀINFILEƁ=Ɓ֦ INPUT FILE NAME? A֥֥=AʂAcʂA֥֥֦ OUTPUT FILE NAME? A֥֥=AʂAcʂA֥9֥95 E֥AʂAcʂA838553֥93֥9֥9A ֥95֥9ƁƁ=9ƀA#$lX WRITELINE01 PROCEDURE WRITELINE( VAR OUTPUTFILE : TEXT;LINE : LINESTRING); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN FOR I := 1 TO LEN DO WRITE(OUTPUTFILE,STR[I]); END;{WITH} END; OPENPIRr PROCEDURE OPEN(RDOSCHANNEL : INTEGER;FILENAME : LINESTRING ;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTOPEN =6207; {.OPEN} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTOPEN; R0.LPTR := FILEPTR; R0.INT := R0.INT+2; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN OPEN = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {OPEN} 1979DEPS0&D 1567 D 2945 D 7000 D 2500 D 6590 D 700 D 1575 D 3195 D 3144.56 D 2556 D 2000 D 7097 D 2000 D 892.50 D 1885 D 1995 D 24676.36 D 1708.14 D 1377.50 D 3232.50 D 14386.25 D 527.50 D 4462 D 8907.50 D 611.53 D 15954.41 D 1278.47 D 600 D 210 D 1558.65 D 4302.50 D 418.50 D 430 D 3475 D 1240 D 3000 D 7202.98 D 4310 D 3682.78 D 618 D 552.50 D 2675 D 8750 D 1800 D 1547.28 D 1030 D 2320.45 D 3314.44 D 4439 D 2039.96 D 2747.24 D 2197.25 D 5527.98 D 15000 D 832.50 D 6471.12 D 12653.22 D 1890 D 808.23 D 660 D 2500 D 2448.33 D 7430.13 D 3561.07 D 440 D 1029.72 D 16000  DATATX bss C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 1 1 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 2 2 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 3 3 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 4 4 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 C 1000 1.00 5 5 SPOSPI:PROCEDURE SPOS( RDOSCHANNEL : INTEGER; FILEPOS : DPINTEGER); CONST DOTSPOS = 10047; {.SPOS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTSPOS; R0.INT := FILEPOS.UPPER; R1.INT := FILEPOS.LOWER; R2.INT := RDOSCHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN SPOS = ',R2.INT); END; RELEASE(HEAP); END; {SPOS} PASCALPXjb? F 6/COMPILEROPSYSINICOMPINITSHOWERROCOMPFINIDECSEGMEBODSEGME Copyright (C) 1980 Rational Data Systems )' R  ݢ ݢٚݢǀݢݣ ޢ ܞ#ݢݣ ݣ ݣ @!l֥֥&PX PASCAL[O][switches] sourcefile[.PA]֥֥switch meaning֥------ -------֥!/A analysis to @OUTPUT֥/A=afile analysis to afile֥!/C conform to standard֥/E=efile errors to efile֥/L listing to @LIST֥/L=lfile listing to lfile֥!/N no codefile created֥"/S swap compiler phases֥"/V verbosity to @OUTPUT֥> ۢۢۢNڞ#!2ئ abcdefghi@ ȡ4ݏ0ݤ ݏ0ݤ á.__?pidD.TMPH@0d 0 0 * ڪ@& ( ())*) )ٚ)ǀ)))))ǀ)) ** (#*<*''á)) ) ''š ) @ۦ@&!& VWƦAOSVP0-ihȡiCCCCChá  ? N,S0C6FFG1Gá"G¾G¾0FFAWEE֥u֥uihȡ)iDDDDDEDháL"S" "@LIST@֥"֥ihȡ(iDDDDDDháE_W"EE֥y֥yihȡ)iDDDDDEDháVP ֥վš0֥hվh.PA֥hվh@hh@h.PACh@֥w֥w,֥֥֥ kئ abcdefghi@ ȡ4܏0ܤ ܏0ܤ á$$$@.WKC@FA@BA@& ֥֥0PX PASCAL[O][switches] sourcefile[.PA] [options]֥֥switch meaning֥------ -------֥!/C conform to standard֥&/L listing to sourcefile.LS֥!/N no codefile created֥"/S swap compiler phases֥%/V verbosity to $TTO/$TTO1֥֥option meaning֥------ -------֥afile/A analysis to afile֥efile/E errors to efile֥lfile/L listing to lfile֥p  ۢ%"ڞ#!2 AZȡ,rA ۡܚá,H ت֥֥󮀂ʀ֥󮀂ʀ :ت֥֥ȡ0ʀ̀ʀ̀ʀʀʀʀá+ Z VWƦRDOSVP0-ȡؤá A H I P Q X Y ZֲFCOM.CMֲCOM.CMֲ~ ~¾˲~¾˄Fcš ֦(F)COM.CM file is too long.ֲ~ j5 z~¾ˡ)²~¾¶ȡy~¾  ȡ1rAáá~¾áɡ ? ղ@֥վš0֥վ.PA֥վ@ZT#pȡز =á.¾¾0"֦Invalid local switch.֥u֥uȡ"٤٤á֥y֥yȡ"٤٤áZrLA֦Duplicate listing files.ֲAL Xáj 1rLA@.LSCrNA,rSA0rCA6rVAP"ƀƁ ƀCLIFILE  ́!Ɓ!@Ɓ!.PACƁ!@֥w֥w,֥ ֥֥ƀB 0 ؾȡ3¾ ¾ á1 H$ #ȡ$ؤ#á<<<  2֥##Wrong operating system.# q$jvV ~PN j(AA4ؤAND 4ؤ'4ؤ 4ؤARRAY 4ؤ,4ؤ BA4ؤBEGIN 4ؤ4ؤ CA4ؤCASE 4ؤ4ؤ 4ؤCONST 4ؤ4ؤ DA4ؤDIV 4ؤ'4ؤ 4ؤDO 4ؤ4ؤ 4ؤDOWNTO 4ؤ4ؤ EA4ؤELSE 4ؤ 4ؤ 4ؤEND 4ؤ 4ؤ FA4ؤFILE 4ؤ.4ؤ 4ؤFOR 4ؤ4ؤ 4ؤFUNCTION4ؤ 4ؤ GA4ؤGOTO 4ؤ4ؤ HAIA4ؤIF 4ؤ4ؤ 4ؤIN 4ؤ)4ؤ JAKALA4ؤLABEL 4ؤ4 MA4ؤMOD 4ؤ'4ؤ NA4ؤNOT 4ؤ&4ؤ OA4ؤOF 4ؤ 4ؤ 4ؤOR 4ؤ(4ؤ PA4ؤPACKED 4ؤ+4ؤ 4ؤPROCEDUR4ؤ4ؤ 4ؤPROGRAM 4ؤ!4ؤ QARA4ؤRECORD 4ؤ-4ؤ 4ؤREPEAT 4ؤ4ؤ SA6,4ؤSEGMENT 4ؤ04ؤ 4ؤSET 4ؤ*4ؤ 6,4ؤSTRING 4ؤ34ؤ TA4ؤTHEN 4ؤ 4ؤ 4ؤTO 4ؤ4ؤ 4ؤTYPE 4ؤ4ؤ UA4ؤUNTIL 4ؤ 4ؤ VA4ؤVAR 4ؤ4ؤ WA4ؤWHILE 4ؤ4ؤ 4ؤWITH 4ؤ4ؤ XAYAZAZAeeآآddآآccآآbbآآآ``آآaa>Cآآc_ _آآآآeآ آ آcآ ۦINTEGER ۢ eۢ ۦREAL ۢ dۢ ۦCHAR ۢ cۢ ۦBOOLEAN ۢ bۢ ۦTEXT ۢ aۢ ۢۦMAXINT ۢۢ eȡV ܢ báܦFALSE ܦTRUE ܢؚܢښܢábٚ ۦNIL ۢ `ۢۢۢm mئ آ آl lئ آ آآآk kئ آ آآآآj jئ آ آآآiiئ آ آآآ آآآآآآآhhئ آ آآآ آآآآآآآXƀ `6ƀƀ1READ READLN WRITE WRITELN EOF EOLN PRED SUCC  ORD  SQR  ABS  NEW  FILETITLPURGE CONCAT LENGTH DATE EOLCHAR SUBSTR INDEX MOVELEFTMOVERIGHEXIT IDSEARCHTREESEARTIME FILLCHARAPPEND REWRITE PAGE CLOSE  SEEK !RESET "GET #PUT $SCAN %SIZEOF &PACK 'UNPACK (ODD )CHR )ȡ}ʀٳ0ƀRڡ  ̀ʀʀʀ ڡ ʀʀʀʀٚʀáxPWROFTEN?$MEMAVAIL?ROUND ?TRUNC ?SIN ?COS ?LOG ?ARCTAN ? LN ?  EXP ?  SQRT ?  MARK ?   RELEASE ? !SYSCALL ?#6 džpMMONȡOܹ OO eOde~ OO dOeadZ OO `O< OO `O$nfM T:M[ݡ  OOOO?ݡOO؟ˡآO ښOؚNápO8[Ys5432fUTS1QONWGrqFE.DA?>=+*¾ë90;0;d 0; 0; ȡ.ܤޢޢ ápǂCopyright (C)  Rational Data Systems(Py^4|t t  ɡ ddڏ ۂق܏B خ'Rational Data Systems Pascal Compiler [خrelease ٥. . ɡخ0خ خ , overlaidخ] خline seg procخ==== === ====gخA :٣  ٣  ڥt| ت ֶ ,ֶ  /  6خ"ۥ"ۦ compiled on ۲ ۧX ۲  ۧ; ۦ at R šخR :خR :I šخI :خ0ۧI :@ š خ@ خ0ۧ@ -6,0šخ վۦusing the optionšخs- ֦Byteswap6֦ Conformance, ֦Nocode0 ֦Swappingخ.  ;HX qSundayxMondayiTuesdayY WednesdayGThursday6Friday'Saturdayyl_QA2%H January February March April May June Julyr Augustc SeptemberQ OctoberA November0 December ~sh[K=.1֥ ֥ ֥ line seg proc off nst ֥u ֥u ֥֥֥ ֥  ֥y ֥y  &] K;HX%RI@ ,֥Z n BC ggPROGRAM   x declarations !áwátá>á"Ś˫á)áaF6;3srEXTERNALt֥ ֥u  o og ns  X^tLn\ xخError Message Summaryخ===== ======= =======Xخ ٲ@$@ ERMSGFIL PASCAL.ERP֥֥u֥y֥a`ȡtaإ Z P֥֥u֥y֥`áva <خSegment Numberڦ Segment Nameڦ Size (Bytes)ȡ>٤ˡ"خ ۢ á;ت@&@$%$á%$¾&$$%%$ɡ6$$6@٦@OT~٪@$$@$ A$B6$ت@٪@F EEHHǀHGH<á HHHE#HGHǀH$<á HHHE#F!F#֥֥A ۦ lines#֥u֥uA ۦ linesP#֥֥A ۦ lines֥uP֥ Mȡ ڤ áȡ8ڤȡܢ¾ ááȡ áʾȡ֥¾ áʾ.ȡ á!ȡ á֧; ֧H ֧X ֧R ֧I ֧@ ֧<  ֧F ȡ á观+  *  ֧Z ɡ 槂,g֥ ZY!  ֥<֥3+* եվU եվX֥ե֥{0Wwp2 Ȅ Gǀ  0ȡ ǀ  (ǀ &á+ ȡڢ¾ áBǀ 3áxáÄەݚš) ۮڮȡ áá cس0$@ L'Ȅق 4JȄق #Ȅق  @MÍǀ Jسášá ǀ n^ǀ Ȅ =á&ݧWWcáWWX '9á ݢښ  bˡ! ٢٢`m ۢˡ Xۢ뚧76`mɡ/ġ 9!٫¾¾<j ˡd˄ `ádá33Z3á' 6n-#&: <> ;% V˄ $ ˡ[Eá+ 8n;ˡ.';!=? M3!lˡnV&-M.á% 2n$ˡ"Ǿ6  ^K  |      á ' 6n   á   !ná '6   8  Í Ä  áP   A ˡǖ    ?ˡń 弄 ;֥ 弄 á ݟˡˡ NJ ˡ ˡqݟˡL< D   ˡ  šNj   ˡL3á DB  @$ń ˡáZáˡˡ nj áˡ  á ǘ   $ , $ 8  Í Ä  áP   ˡń  ˡÍ~á    OaáV  O >>  á#ˡń Ǎ E ޭ/162 #: ˡ ō  á c ˡȡ ܟ˄eád d \ cá LˡC  c˄%P ˡǁ6˄@ܫ ܫ  oDg ZS "cá)*ܣQ (%(ǒLxP_M!  á $k0ֲ"ˡ ˡCá#ֲ  eˡO OO #K.ءINPUT OUTPUT  .ݟáء3caˡء4Hޣá ޣ á %ޣ 2nޣ ޣ ޣ á 'ޣ 6nޣ ޣ š ˡgeO VdOEcO4'Oˡdz áDzt!á1V6ֲ"!8@"Vֲ" áaááعá: .ֲ"Q!"ǮRá .R!"R! .á[>> ֲ R(ǰ6OǸ X# Vֲ"áaáOá O>.Oá/V6ֲ"S!&ڡtV.O6R!"١V6O VO $ˡɡ %á+ֲ&ˡ eˡǹ ٧dáGءá,ֲ" ˡ eˡO٧eáءO ٧cáءOn٧báءO!YءOD7ˡ ءֶֶO (&á#V6ֲ&%&*2'Vֲ& áaááعá, .ֲ&%&' % .(&' .áR>>  ˡń ֲ 6O2} ,) Vֲ&aá5á O!.áֲ&%&%.(&'١V6O VO *ˡbˡsVdá5GçD%á áp1 áVߣ á ߣ ˡ+ öÄ.á  ȡ ááٟá~ֲ"ٟ˄ڟˡ٣áȡqcÄÄǀ&  _  á 6çDeڧd d CÄ,'Pˡ ݕˡǎګ Há=ڣɡǿágá ˡǚٟˡˡá(ٟˡߣ á ߣ *ߣ á Nߣ ߣ á Sߣ  Mߣ ߣ  Rrt 42ܣ áܣ ޳``V޳`á޳@t ޳" ޹#$)*1ˡ ġe ˡ%eádá e ˡ%eádá e  >e +á Oe   ȡD  ˡ eˡáǤ á ˡ eˡá% ,-ˡ eˡCb Dˡ eˡDc Z)RCExutq]ZW*,)02*6Hߡá2vYeá d eá اd*3ddÍ34弄: 弄^ܣá 'ܣá  ˡá ꧂e ꧂d ác   _   á*7bˍ ˡbˡ LJ    á ˡˡ Lj  Ȅ  #áH   lj ޡȄ   ޡ   ߡ  ˫쓡á ߡ1"ppp  ppp U&N "$&(*,.02468:<>@BDHud@!(Z77'á   7 ܟ˄ 4ܧeeÄ/ܧddÄ   3ܧddÄ  pܧeeÄ  RܧeeÄ  4ܧbbÄ    .lP  $B6(`á   6eá á %dá á  ˡ  (á   6 ܟ˄ 4ܧeeÄ/ܧddÄ  y4ܧeeÄ/ܧddÄ  0ܧbbÄ    u.  5ˡ ەˡٚ,8JɡJ5)ácÍÄˡȡ   5cÍÄ ˡȡ ܟ˄ á+á   ǂ ˡ4 8  P֥ 8   ܧdá  ǃ DŽ  vUcÄ Aܧc1R         ˡ   4  Dž 0 <5 F4 <1 20 (7 /  D<*6$b   nֲ@á ֲ30:ֲ9弄˫쓡 á^:< D=ֲ á4==ֲ 9== á2 9 ==ֲ9==  >ֲ  9ٟˡ٧dÍ ǐ á ֲٟˡcUܟˡ# ȡ áǜ   ܚ ޚ ۟áښǓ˫쓡á==ֲ9弄==ڟˡ9 ˫쓡 썡 ݟˡv ݚܟá , 9  š   ɡ  ݟá á]ONvwT ? ==ֲ9弄˫쓡== áֲ 5QS l@ ֲ@ áǼ==ֲ9==9 \A  š á[ á   Ǜ؟ˡd ǏֲAáaֲˡGˡ9+ ؟ˡçD. ǑǻֲǀoáHDֲ@ˡGˡ9+ ؟ˡçD.  7ֲ@á6! 6 9   áP ==ֲ9==  6 C!  @Bá 'kֲBˡyám ɡ` á ۢۢۢ-8 ۢۢš˫쓡áǽ==ֲ9==ڕٕ CJɡJ"ád ݤˡ ݤޟˡ* á ǥ   á0H弄 á&|ܣá :I߹(=;?6B1;,>'@"AC0/0/ !&I# @97D W؟á!t??----??x??----?? txbody أáá ˡ ˡákšY2 62 *ˡ Qޕ( á A> ܟˡܢ  nçş˄  ˡ V2 2 >aánˡXşáKŢ;INPUT Я OUTPUT Я OV2 ǀ& ¾ á ȡ¾ áO VO ˡV2 O ˡV2 Oֲ9弄˫쓡 á   ˡ! V2 O á-- ܟˡ$`mˡǨާW š륄Xߤ ؟á ֧ ֧  ?š7ٕ ֧s ֧n 88Z땧?ɡA?낫? !as?.tv#"*20 5Q=֥  á֧o蓼o ܓ-o áo 蓼o 弄ܓo á`<B˧3nÄ. =ݧoÍ | ( t  RL64l  z" V "&"l" ##҄$h&$&0 *r*,,,+n,-v-./,/ZDـڀɄńڂ0á ڀـܡ ڏ.弄弄á ˡ á=   ߚ     !"F"ˡߢ ߢ á,á  án  ǔ#á ߢ ˡ ߟˡvߢ  ޚ #áǺ ߢ ˡkߟˡ7á-ˡ&dá$š fߚGܟ$q1 nٟ˶k٧e٧d˄8 ġ+á@š4 ɡڸsu2N @š  ڢ ڢڢڢ/ ł ڢڢ ˡ   ٶ˄/ڣ %ڣ áڢڣ ڣ Ȅ ڢڢ٢٢٢á   ٢ ٢٢٢. . á! ֶ á8áX  ˡ;ȡ/d  ءֶ n%ֲ&ֲ ł áW   ֲ ˡ o  ٢٢ ٢٢   ˫쓡á9áXá ֲ(  š  öń ˡ%      ł  á%Nֲ-˫쓡  썡 jj   ááA    ߚ  A ˫쓡á. ˡ álˡ  á) Ǚ ޟˡ ߚ á ܟ+084p   آآál. . á+  إآ  آfآ f# ˡ ˡ    弄 弄弄á +á&弄Y,áá    ߚ   ޟˡ7ȡ(ާdá mާeá Ǖ ޚ ˫쓡á[ áT  ˡ á "ȡ   ˡ ;&˂ KF@-  GHI ?š J ȡ '  ߟá-á ɡ   ł   ߚ   á_*á áU ߟˡ%š ߧdߧeÍr  ߚߟˡ4 ɡTɡ ǩ.áW   á V ߚߟˡá6 >3á|ˡǴlߧeá8ō   _ ǀá\ Jܟá139;=?P$a/ "áY ؟ٓˡ Ǧٓ!ۢۢۢڢؚ Bֲ ˫쓡ác ˡֲá ۥۢ ۢۢ) Äֲآ ٚآá%?ֲb ˡ"ֲá ݥݢ ݢ) ÄǗֲڢ ۚfٟˡ+گ٧fˡآfá%Kֲvfˡ fx á/ ݢݥݢٚݢ ݢn#Lֲ˫쓡á1ֲٟˡ=ݢ ۚݢá ۟ˡáݢ  ؚá%Mֲ|弄fˡ f15 @ ֲáw@Oֲ!@á  áK   á ߚn  Pֲ.˫쓡 áNá@  ˡ á áy ȡ  / ޟˡ"    ˡ  (Q(á)@Rֲ!á+C+ݢꚟ ˡ< ޚáˡš   ޚܟN  r   ns.`֥A :ڣ  ڣ  ڣ ȡ֥. á֥`֥uA :ڣ  ڣ  ڣ ȡ֥u. á֥u) 0áR3N !qrr8 ?Y ꫂQ5á֥ ˡFáÄ Äá Ä ÄǠá  nr횧3 Ä Ät#qšqqrǕárrá}ˡDˡ2    š ˡ& ˡU  r" is sn nɡ nn ɡ7 á áá|z ˡ x ˡˡ ֲ {ádåFORWARD ЯBǡápDֲåASSEMBLEЯ61áS ֲ+ MˡVȡ¾ áˡ   ֧n 88Z땧?ɡB?낫?as?!åEXTERNALЯ6áǯֲ* Mˡ<ȡ¾ á ֧n 88Z땧?ɡ?낫?as? !P tx declarations   o o o VV2\áZL á! ߟá   á ߢߚGtޟˡޢ  4 ޟˡ  6ˡٚښٟá, ޢޢ aޢnޢ֧aޢ  ݚRINPUT INPUT ֦INPUT OUTPUT OUTPUT ֦OUTPUT ֥؟ˡ آ0֥+202á3nÄL á á á3nÄMnç3 ˡ弄܄Q z@z V D x L<nV2f020 . oá 0Nǀۡ (áٟڟÍˡ'á á ٧`ڧ`ÍxlA/Í  ÄÄ}pf 弄2弄%á?ác( ާ_ ޢޢ ǂ  ݥ (`á  ád   ˡAާeá á-ާdá" á   iT"á áeݥ5$á" á dݥj>ޚ  v ڟá ؚ8؞áeá ؞á٢ؚ٢ ؚآ آ<d؟ˡ,٣`٣ á٣ á ٣u : rġ6aؤš֧?낥aؤ ֥aؤ á ֧r 땧?ɡE ?낚?8k Mš 7ؿ(  Mš 79-áڿٿ ٿڿX á "اcáˡ > 4 15C9#֥9/41Bw/֥šۢ|¾Wádۢ|¾/¾پۢ|¾ɡۢ|¾ɡg ؂?š ؂"AAP ž 5ꫂQ뫂Q4¾ ˡť¾Fš¾)å¾*ľ}Í¾*ÂC@q |ئ ؾ¥¾ť¾ ;};)å¾*Äk x@ ٥¾|Ú6! H¾-á,٥¾0٥¾0j"¾=áF"!"ۡڍڄٓ  ܡ+-¾R l 6ƀƀ@ (ƀ򥀗¾ƀ ֥[ ƀ ֥P ƀ ֥E P֥ƀ ֥D !~1*1֥9֥9C4/ gCr` m"$&(*,.02468:<>@1DFHJLPR(VX^ڹ ̀̀ʀʀ̀š )ʀ¥¾¾'á̀¾'ˡʀ̀% ʀʀá ¾-p̀ʀʀʀʀʀp #  ''¾0ɥ¾9ō ¾.áS¾.ˡG¾¾ ¾ \¾-á  ¾+á¾ ɡáb߮ ȡJ å¾0 ń ō  ¾0á" ܫ߮ ȡ% ¾0á ޮġ+¾0ޕ$á ݮ ȡ ¾0 á á $  $$ f8Fj$0ȥ¾ å¾ Íȡ /¾#$  쥀¾*á 쥀¾.á #쥀¾=á ' ( ( ' ) ¾   =>) )¾=á  '{{w "$&(*,.02ZT2=?ACEGIKMOQSUWY[]_acegikmolrt}/á)[  ,ۡ ۡǀ2ٟˡá cÄ"JɡJ4P֥A  ڧs ڧQ 5 ֥ ֥= lš5֥֥l֥֥ml ֥ á֥֥4֥ERROR% ž ٥ɡE֥ٕȡ"ٕáq֥yError at line ڧA ڦ in ڥxڦ of ڥt:֥y ڥ֥y%q֥uError at line ڧA ڦ in ڥxڦ of ڥt:֥u ڥ֥u%q֥Error at line ڧA ڦ in ڥxڦ of ڥt:֥ ڥ֥% ړ@^˄ٹ܂ۂxp+^h$  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfv ġI ۤڟˡ,áڣk.á.Jhm9k,jlihښ۫ ؟áٟ ٥ˡٟ  ? ؾš ¾ؾń/ ƀؾƀ ؾ¾áؾ šeƀƀ֦ ƀƀƀؾٕƀn Yš¥9YٞقYقYY؍, ,֥YZZ9 ٕán|ƆƇ9ƆWORKCODEƈ9ƈwƈ9INCLFILEƉwƉƉwWORKSYMƄƅ1ƄOVTPVTƅuƅƅuANALFILEƅƆ5ƅLPƆyƆƆyERRFILE:֥OUTPUT֥֥ 3 ˡO ˡAA :֥Ɔƈ9ƉwƄƅuƅƆyG6 <~ |. F0:`4b`HBpN'9-á ٕؕقɡMٮȡۂáخȡ#ۂɡۂá0ٮȡ#ەɡۂá$Xv cÄFá:á5cá+pܢܢ󿧂p _ ˡ_ zֲ"ˡ)áˡááֲ"ٟáǞfˡǢXˡRاdÍǟ=-؟ˡá  A 3Pá`!á g؟ˡأ áأ أ f8V2ֲ"ɡO˫쓡2ɡ šث _ ٚ ֲ2áǶֲ ˡ eˡáǷֲ  ˡ eˡO2٣ɡ ٣šث٫ áˡe ,ֲ ˡ ˡ 1+$  "/Olֲ"ˡ ˡˡǪֲ ON3ֲ ˡˡ aˡOJdá  R8R6R4(=ֲ ˡ%ˡ}@a˄($O b ;O b /Oc #+! -+ֲ ˡ ˡ!  OZ,ֲ" 8á=ֲ"   ˡv ˡ9f <Xڶ 8ֶ  ٕD ˡـš8.ֲ" 8ˡBˡ2;#˸ֶ ٕ8v/ء-6BDֶ$ @BP0       &á.á>//á?.ߟ ˄ ˡ:8 66I!١666P.ٓ0١6660١#ء;?ء:>9 "- ˶á&:<"ˡO ڤˡ<١9]ٓ<ٓǧ7á ڤ ڤإ ڤ֧nەb ;JJK]\\ɡ\\š\ \MMMM M M MMM M M rM cM TMEM6M' uh[NA4L\^7 bDoˡ 8 rأnso !o o3 o áob4 ɡ ؚ ؗ ,/: Vپɡ ڮەġ¾ ˡáP X&^  0ۂÍ#) 6'٪@ɡ̀ʀ'ȡʀ&&&&ʀk& ɡ̀&dɡ̀̀'ڥ&ʀ&('ڥ&&'ʀ&̀&ʀá'DŽšWخʀ'ƀDŽƀʀخ'ƀDž'DŽƀʀخʀ'ʀ'&J%PASOPSYSMCBll 4MESSAGE USE A 32K 2 STACK 6 EX. BUFFER 2 CELL $LPT MESSAGE NO MTAPE NO PLT 3 DISK 3 DIRECTORY RTC NO PWR FAIL MESSAGE SYSGEN IN SYS2L.SV OPENFILESPIEr &PROCEDURE OPENFILES; BEGIN WRITELN(' INPUT FILE'); READLINE(0,LINE,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,LINE,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKIN); OPEN(DISKIN,LINE,SYSERROR,ERRORNUMBER); WRITELN(' OUTPUT FILE'); {USE BELOW FOR RDOS FILE DISKOUT MUST BE INTEGER} {RvEADLINE(0,LINE,NBYTES,SYSERROR,ERRORNUMBER); GCHN(DISKOUT); DELETE(LINE,SYSERROR,ERRORNUMBER); CRAND(LINE,SYSERROR,ERRORNUMBER); OPEN(DISKOUT,LINE,SYSERROR,ERRORNUMBER); } {USE BELOW FOR PASCAL FILE - DISKOUT MUST BE TEXT} READLN(LINE); FILETITLE(DISKOUT,LINE); RESET(DISKOUT); END; {OF OPEN FILES} 198002  1 C 3049 44.55 10 2 CC 3064 3 C 3065 223.70 32 4 C 3066 250 27 5 C 3069 96 4 6 CC 3070 7 C 3073 1340.63 25 8 C 3075 23 5 9 C 3076 100 24 10 C 3078 22.50 4 11 EM 810 17 15 12 EM 811 604.28 15 13 EM 812 643.69 15 14 D 140 34 15 D 8347.06 34 16 D 2086.75 17 C 813 980.89 14 18 C 817 205.18 12 19 CC 814 20 C 3081 35 4 21 C 3067 62 1 22 C 3083 34 6 23 C 3071 330 20 24 C 3085 50.99 5 25 C 3087 704.45 17 26 C 816 1581.88 12 27 C 819 1581 12 28 D 1468.38 34 29 D 871.98 34 30 D 13056 34 31 D 12436.99 34 32 D 435.99 34 33 C 3068 10 18 34 C 3086 138.02 25 35 C 3088 1040 23 36 C 3090 5324 9 37 C 3091 250 8 38 C 3092 206.59 20 39 C 3093 15.40 22 40 C 3094 120.70 4 41 C 3095 20 26 42 C 3096 775 9 43 C 3097 32 10 44 C 3098 74.05 22 45 C 3099 4000 21 46 C 3101 1557.44 25 47 C 3104 40 33 48 C 3103 42.50 10 49 C 3105 504.39 25 50 C 3106 119.98 4 51 C 3107 793.50 9 52 C 3108 1537.50 27 53 C 3109 3394.50 6 54 C 3110 25 3 55 EM 818 140 27 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 59 EM 835 17 15 60 EM 836 181.73 14 61 EM 837 482.61 15 62 EM 838 2742.40 14 63 CC 839 64 EM 840 622.50 27 65 EM 821 195.18 12 66 EM 822 1415.95 12 67 C 3113 79.95 5 68 C 3114 69.95 10 69 C 3115 200 20 70 C 3116 225 27 71 C 3117 4.65 10 72 C 3119 48 18 73 C 3120 1940.43 25 74 C 3121 269.78 17 75 C 3123 12.24 4 76 C 3124 93.27 15 77 C 3125 181.78 15 78 C 3126 243.77 14 79 C 3127 68.45 23 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 83 C 3133 125.81 22 84 C 3134 20.47 22 85 C 3135 85.15 22 86 D 435.99 34 87 D 906.32 34 88 D 435.99 34 89 D 1628 34 90 D 3000 34 91 D 11481.06 34 92 C 3112 25 26 93 C 3118 1.30 11 94 C 3122 100 26 95 C 3128 7.86 22 96 C 3138 185.26 4 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 102 C 3144 42.08 22 103 C 3145 46.50 3 104 C 3146 36.70 11 105 C 3147 27.73 10 106 C 3148 25.98 5 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 110 C 3152 1000 25 111 C 3153 227.40 25 112 C 3154 100 8 113 C 3155 160.43 4 114 C 3156 835.38 25 115 C 3157 781.68 25 116 C 3198 28.30 3 117 EM 823 1000 12 118 C 3158 21.92 5 119 C 3159 12 33 120 C 3165 638.45 27 121 C 3167 15 5 122 C 3160 155.47 17 123 C 3161 34 10 124 C 3163 594 17 125 C 3166 465 4 126 C 3168 83.85 3 127 C 3169 200 24 128 D 1834.55 34 129 D 435.99 34 130 D 802.29 34 131 EM 824 333.14 15 132 EM 825 378.68 15 133 EM 826 2590.51 14 134 EM 827 425.95 12 135 EM 828 82.50 26 136 EM 829 38.70 14 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 141 D 905 34 142 D 594 34 143 D 520 34 144 D 435.99 34 145 DM 18.88 146 C 3162 39.95 18 147 C 3164 130.46 14 148 C 3170 120.97 4 149 C 3171 18 33 150 C 3172 36.70 10 151 C 3173 947.50 25 152 C 3174 80 26 153 C 3175 204 5 154 C 3177 496.56 25 155 C 3178 136.20 25 156 C 3179 729 17 157 C 3180 170 23 158 C 3182 121.30 11 159 C 3183 25.91 22 160 C 3184 27 17 161 C 3186 10.08 23 162 C 3200 1020 27 163 D 13331.89 34 164 D 11943.74 34 165 D 4546.81 34 166 D 129.24 34 167 D 3229.35 34 168 D 715 34 169 C 3176 50 22 170 C 3181 950 7 171 C 3185 125 23 172 C 3187 174.75 23 173 C 3188 290.64 4 174 C 3189 1372 27 175 C 3190 3.28 5 176 C 3191 18 5 177 C 3192 5.68 23 178 C 3203 100 27 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 7 23 182 C 3196 50 21 183 C 3199 26 33 184 C 3201 2764.81 27 185 C 3202 948.17 25 186 C 3204 55.20 5 187 C 3205 14.25 7 188 C 3206 10 6 189 C 3207 7.58 5 190 C 3208 60.59 2 191 C 3209 250.65 25 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 195 EM 846 3584 14 196 D 531.21 34 197 EM 843 1527.87 12 198 EM 847 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 202 C 3210 720 27 203 C 3211 69.37 2 204 C 3212 1.81 11 205 C 3213 176.55 25 206 C 3214 10.46 25 207 C 3215 18.28 5 208 3216 64.28 5 209 C 3217 547.32 17 210 C 3218 136.48 17 211 C 3219 48.60 10 212 C 3220 170 23 213 C 3221 10 8 214 C 3224 227.40 17 215 C 3225 36 5 216 C 3222 450 27 217 C 3223 10.64 5 218 C 3226 93.71 4 219 C 3227 74.13 2 220 C 3230 31 26 221 EM 851 4000 36 222 C 3229 2774.75 23 223 C 3228 102.08 4 224 C 3231 35 18 225 D 4888.40 34 226 D 3435.99 34 227 EM 852 1527.87 12 228 C 3232 125 23 229 C 3233 3654.15 23 230 C 3235 37 33 231 C 3236 42.50 33 232 C 3237 2282.26 6 233 C 3238 138.17 33 234 C 3239 95.64 2 235 C 3240 3.70 5 236 C 3241 4.33 5 237 C 3242 35.39 18 238 EM 854 48.65 12 239 EM 853 540 15 240 D 3148 34 241 D 296.31 34 242 D 1403.43 34 243 D 174 34 244 D 2600 30 245 C 3243 28.20 3 246 C 3244 341.40 10 247 C 3245 500 25 248 C 3246 328.44 10 249 C 3247 784.13 25 250 C 3248 125.30 11 251 C 3249 5.76 23 252 C 3250 50 24 253 C 3252 1760 27 254 C 3251 100 2 255 C 3253 43 1 256 C 3254 290.77 4 257 C 3255 100 2 258 C 3258 42.50 33 259 C 3259 4.60 23 260 CC 3131 261 C 3260 820.84 25 262 C 3261 732.30 8 263 C 3263 50 22 264 C 3264 296.31 23 265 C 3265 168.01 25 266 D 435.99 34 267 C 3082 1350.12 25 268 C 3136 16.00 1 269 C 3216 64.28 5 270 C 3234 298.80 25 271 C 3262 88.41 14 272 C 3268 14.00 26 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 0 2 6 19 63 260 273 274 275 276 277 SEARCH KEY 0 2 CC 3064 6 CC 3070 19 CC 814 63 CC 839 260 CC 3131 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 AMOUNT = 0.000E+00 1 21 255 268 SEARCH KEY 1 21 C 3067 62 1 255 C 3253 43 1 268 C 3136 16.00 1 AMOUNT = 1.210E+02 2 190 203 219 234 254 257 SEARCH KEY 2 190 C 3208 60.59 2 203 C 3211 69.37 2 219 C 3227 74.13 2 234 C 3239 95.64 2 254 C 3251 100 2 257 C 3255 100 2 AMOUNT = 4.997E+02 3 54 103 116 126 245 SEARCH KEY 3 54 C 3110 25 3 103 C 3145 46.50 3 116 C 3198 28.30 3 126 C 3168 83.85 3 245 C 3243 28.20 3 AMOUNT = 2.118E+02 4 5 10 20 40 50 75 96 113 125 148 173 218 223 256 SEARCH KEY 4 5 C 3069 96 4 10 C 3078 22.50 4 20 C 3081 35 4 40 C 3094 120.70 4 50 C 3106 119.98 4 75 C 3123 12.24 4 96 C 3138 185.26 4 113 C 3155 160.43 4 125 C 3166 465 4 148 C 3170 120.97 4 173 C 3188 290.64 4 218 C 3226 93.71 4 223 C 3228 102.08 4 256 C 3254 290.77 4 AMOUNT = 2.115E+03 5 8 24 67 80 81 82 106 118 121 153 175 176 186 189 207 215 217 235 236 269 SEARCH KEY 5 8 C 3075 23 5 24 C 3085 50.99 5 67 C 3113 79.95 5 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 106 C 3148 25.98 5 118 C 3158 21.92 5 121 C 3167 15 5 153 C 3175 204 5 175 C 3190 3.28 5 176 C 3191 18 5 186 C 3204 55.20 5 189 C 3207 7.58 5 207 C 3215 18.28 5 215 C 3225 36 5 217 C 3223 10.64 5 235 C 3240 3.70 5 236 C 3241 4.33 5 269 C 3216 64.28 5 AMOUNT = 8.123E+02 6 22 53 188 232 SEARCH KEY 6 22 C 3083 34 6 53 C 3109 3394.50 6 188 C 3206 10 6 232 C 3237 2282.26 6 AMOUNT = 5.720E+03 7 170 187 SEARCH KEY 7 170 C 3181 950 7 187 C 3205 14.25 7 AMOUNT = 9.642E+02 8 37 112 213 262 SEARCH KEY 8 37 C 3091 250 8 112 C 3154 100 8 213 C 3221 10 8 262 C 3261 732.30 8 AMOUNT = 1.092E+03 9 36 42 51 SEARCH KEY 9 36 C 3090 5324 9 42 C 3096 775 9 51 C 3107 793.50 9 AMOUNT = 6.892E+03 10 1 43 48 68 71 97 98 99 100 101 105 123 150 211 246 248 SEARCH KEY 10 1 C 3049 44.55 10 43 C 3097 32 10 48 C 3103 42.50 10 68 C 3114 69.95 10 71 C 3117 4.65 10 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 105 C 3147 27.73 10 123 C 3161 34 10 150 C 3172 36.70 10 211 C 3219 48.60 10 246 C 3244 341.40 10 248 C 3246 328.44 10 AMOUNT = 1.050E+03 11 93 104 158 204 250 SEARCH KEY 11 93 C 3118 1.30 11 104 C 3146 36.70 11 158 C 3182 121.30 11 204 C 3212 1.81 11 250 C 3248 125.30 11 AMOUNT = 2.864E+02 12 18 26 27 56 57 58 65 66 117 134 137 138 139 140 192 193 194 197 198 199 200 201 227 238 SEARCH KEY 12 18 C 817 205.18 12 26 C 816 1581.88 12 27 C 819 1581 12 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 65 EM 821 195.18 12 66 EM 822 1415.95 12 117 EM 823 1000 12 134 EM 827 425.95 12 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 197 EM 843 1527.87 12 198 EM 847 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 227 EM 852 1527.87 12 238 EM 854 48.65 12 AMOUNT = 2.998E+04 14 17 60 62 78 133 136 147 195 271 SEARCH KEY 14 17 C 813 980.89 14 60 EM 836 181.73 14 62 EM 838 2742.40 14 78 C 3126 243.77 14 133 EM 826 2590.51 14 136 EM 829 38.70 14 147 C 3164 130.46 14 195 EM 846 3584 14 271 C 3262 88.41 14 AMOUNT = 1.058E+04 15 11 12 13 59 61 76 77 131 132 239 SEARCH KEY 15 11 EM 810 17 15 12 EM 811 604.28 15 13 EM 812 643.69 15 59 EM 835 17 15 61 EM 837 482.61 15 76 C 3124 93.27 15 77 C 3125 181.78 15 131 EM 824 333.14 15 132 EM 825 378.68 15 239 EM 853 540 15 AMOUNT = 3.291E+03 17 25 74 122 124 156 160 209 210 214 SEARCH KEY 17 25 C 3087 704.45 17 74 C 3121 269.78 17 122 C 3160 155.47 17 124 C 3163 594 17 156 C 3179 729 17 160 C 3184 27 17 209 C 3217 547.32 17 210 C 3218 136.48 17 214 C 3224 227.40 17 AMOUNT = 3.390E+03 18 33 72 146 224 237 SEARCH KEY 18 33 C 3068 10 18 72 C 3119 48 18 146 C 3162 39.95 18 224 C 3231 35 18 237 C 3242 35.39 18 AMOUNT = 1.683E+02 20 23 38 69 SEARCH KEY 20 23 C 3071 330 20 38 C 3092 206.59 20 69 C 3115 200 20 AMOUNT = 7.365E+02 21 45 182 SEARCH KEY 21 45 C 3099 4000 21 182 C 3196 50 21 AMOUNT = 4.050E+03 22 39 44 83 84 85 95 102 159 169 263 SEARCH KEY 22 39 C 3093 15.40 22 44 C 3098 74.05 22 83 C 3133 125.81 22 84 C 3134 20.47 22 85 C 3135 85.15 22 95 C 3128 7.86 22 102 C 3144 42.08 22 159 C 3183 25.91 22 169 C 3176 50 22 263 C 3263 50 22 AMOUNT = 4.967E+02 23 35 79 157 161 171 172 177 179 180 181 212 222 228 229 251 259 264 SEARCH KEY 23 35 C 3088 1040 23 79 C 3127 68.45 23 157 C 3180 170 23 161 C 3186 10.08 23 171 C 3185 125 23 172 C 3187 174.75 23 177 C 3192 5.68 23 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 7 23 212 C 3220 170 23 222 C 3229 2774.75 23 228 C 3232 125 23 229 C 3233 3654.15 23 251 C 3249 5.76 23 259 C 3259 4.60 23 264 C 3264 296.31 23 AMOUNT = 8.815E+03 24 9 127 252 SEARCH KEY 24 9 C 3076 100 24 127 C 3169 200 24 252 C 3250 50 24 AMOUNT = 3.500E+02 25 7 34 46 49 73 110 111 114 115 151 154 155 185 191 205 206 247 249 261 265 267 270 SEARCH KEY 25 7 C 3073 1340.63 25 34 C 3086 138.02 25 46 C 3101 1557.44 25 49 C 3105 504.39 25 73 C 3120 1940.43 25 110 C 3152 1000 25 111 C 3153 227.40 25 114 C 3156 835.38 25 115 C 3157 781.68 25 151 C 3173 947.50 25 154 C 3177 496.56 25 155 C 3178 136.20 25 185 C 3202 948.17 25 191 C 3209 250.65 25 205 C 3213 176.55 25 206 C 3214 10.46 25 247 C 3245 500 25 249 C 3247 784.13 25 261 C 3260 820.84 25 265 C 3265 168.01 25 267 C 3082 1350.12 25 270 C 3234 298.80 25 AMOUNT = 1.521E+04 26 41 92 94 135 152 220 272 SEARCH KEY 26 41 C 3095 20 26 92 C 3112 25 26 94 C 3122 100 26 135 EM 828 82.50 26 152 C 3174 80 26 220 C 3230 31 26 272 C 3268 14.00 26 AMOUNT = 3.525E+02 27 4 52 55 64 70 120 162 174 178 184 202 216 253 SEARCH KEY 27 4 C 3066 250 27 52 C 3108 1537.50 27 55 EM 818 140 27 64 EM 840 622.50 27 70 C 3116 225 27 120 C 3165 638.45 27 162 C 3200 1020 27 174 C 3189 1372 27 178 C 3203 100 27 184 C 3201 2764.81 27 202 C 3210 720 27 216 C 3222 450 27 253 C 3252 1760 27 AMOUNT = 1.160E+04 32 3 SEARCH KEY 32 3 C 3065 223.70 32 AMOUNT = 2.237E+02 33 47 107 108 109 119 149 183 230 231 233 258 SEARCH KEY 33 47 C 3104 40 33 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 119 C 3159 12 33 149 C 3171 18 33 183 C 3199 26 33 230 C 3235 37 33 231 C 3236 42.50 33 233 C 3238 138.17 33 258 C 3258 42.50 33 AMOUNT = 5.356E+02 36 221 SEARCH KEY 36 221 EM 851 4000 36 AMOUNT = 4.000E+03 T11PA PROGRAM T11(INPUT,OUTPUT); VAR N:INTEGER; H : REAL; BEGIN READ(INPUT,N); H:=0; WHILE N>0 DO BEGIN H:=H+1/N;N:=N-1; END; WRITELN(H) END. 1978EMP01 f E 496 1177.09 E 495 1076.21 E 494 392.55 E 493 456.63 E 492 497.88 E 491 574.03 E 490 890.20 E 489 842.19 E 488 788.81 E 487 1787.44 E 486 389.02 E 484 305.68 E 482 626.76 E 481 554.04 E 480 1024.14 E 479 927.20 E 478 1092.27 E 510 304.73 E 509 432.47 E 508 575.53 E 507 502.81 E 506 842.80 E 505 1033.57 E 504 254.00 W 503 702.05 W 502 4521.60 W 501 387.26 W 500 372.80 W 499 561.91 W 498 497.97 E 497 926.48 TLMC  CHATR TOTAL.PA 0; CHATR TOTAL.PX 0 DELETE/V TOTAL.PA XFER TOTAL TOTAL.PA/R CHATR TOTAL.PA *P PASINTERP PASCALO/A/S/V/L TOTAL CHATR TOTAL.PX *P REALPRINTBUN( PROCEDURE REALPRINT (R : REAL); TYPE SIGNOF = (PLUS,MINUS); VAR I,J,CHARPOS : INTEGER; STR : STRING[15]; SIGN : SIGNOF; PROCEDURE DECDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,' CHARPOS=',CHARPOS);} R1 := TRUNC(R/PWROFTEN (J)); { WRITELN(' R1=',R1);} R := R-R1*PWROFTEN (J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; IF ((J = 6) OR (J = 3)) THEN BEGIN STR[CHARPOS] := ','; CHARPOS := CHARPOS+1; END; END;{DECDIGIT} PROCEDURE FRACTDIGIT; VAR R1 : INTEGER; BEGIN { WRITE(' J=',J,'CHARPOS=',CHARPOS);} R1 := TRUNC(R*PWROFTEN(J)); { WRITELN(' R1=',R1);} R := R-R1/PWROFTEN(J); STR[CHARPOS] := CHR(R1+48); CHARPOS := CHARPOS+1; END;{FRACTDIGIT} BEGIN {do decimal part first} IF R >= 0 THEN SIGN := PLUS ELSE BEGIN R := -R; SIGN := MINUS;END; R := R + 0.005; STR :=' '; I :=8; REPEAT I := I-1 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); CHARPOS := 15-I-3-I DIV 3; IF SIGN = MINUS THEN STR[CHARPOS-1] :='-'; FOR J := I DOWNTO 0 DO DECDIGIT; STR[CHARPOS] := '.'; CHARPOS := CHARPOS+1; FOR J := 1 TO 2 DO FRACTDIGIT; WRITE(STR); END; GCHNPI PROCEDURE GCHN(VAR FREECHANNEL : INTEGER); CONST DOTERTN = 3328; {15B7} DOTGCHN = 8746; {.GCHN} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTGCHN; SYSCALL(REQUEST); IF ERROR THEN BEGIN MODE := SIMPLE; CALLNUM := DOTERTN; SYSCALL(REQUEST); END; FREECHANNEL := R2.INT; END; RELEASE(HEAP); END; {PCHAR} CRANDBU4l PROCEDURE CRAND(FILENAME : BIGSTR;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTCRAND = 3584; {.CRAND} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : STRPTR; TEMP : STRING[1]; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WRITELN(' ',FILEPTR^); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTCRAND; { APPEND 0 TO END OF STRING} R0.SPTR := FILEPTR; R0.INT := R0.INT+1; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN CRAND = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {CRAND} DELETEBUPROCEDURE DELETE(FILENAME : BIGSTR;VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTDELETE =256; {.DELETE} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; FILEPTR : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(FILEPTR); FILEPTR^ := FILENAME; WRITELN(' ',FILEPTR^); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTDELETE; R0.SPTR := FILEPTR; R0.INT := R0.INT+1; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN DELETE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {DELETE} PCHARPIgPROCEDURE PCHAR(CHARACTER : INTEGER); {PCHAR PUTS A LINE TO THE CONSOLE} CONST DOTERTN = 3328; {15B7} DOTPCHAR = 4096; {.PCHAR} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; BEGIN MARK(HEAP); NEW(REQUEST); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTPCHAR; R0.INT := CHARACTER; SYSCALL(REQUEST); IF ERROR THEN BEGIN MODE := SIMPLE; CALLNUM := DOTERTN; SYSCALL(REQUEST); END; END; RELEASE(HEAP); END; {PCHAR} PLPArr .PROGRAM PLO(INPUT,OUTPUT); LABEL 99; CONST NORW = 11; {NO OF RESERVED WORDS} TMAX = 100; {LENGTH OF IDENTIFIER TABLE} NMAX = 14; {MAX NO OF DIGITS IN NUMBERS} AL = 10; {LENGTH OF IDENTIFIERS} AMAX = 207; {MAXIMUM ADDRESS} LEVMAX = 10; {MAXIMUM LEVEL OF BLOCK NESTING} CXMAX = 200; {SIZE OF CODE ARRAY} TYPE SYMBOL = (NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM, EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLN, PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM, WHILESYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM); ALFA = PACKED ARRAY[1..AL] OF CHAR; OBJECT = (CONSTANT,VARIABLE,PROCMNEMONIC); SYMSET = SET OF SYMBOL; FCT = (LIT,OPR,LOD,STO,CAL,INT,JMP,JPC);{FUNCTIONS} INSTRUCTION = PACKED RECORD F: FCT; {FUNCTION CODE} L: 0..LEVMAX; {LEVEL} A: 0..AMAX; {DISPLACEMENT ADDRESS} END; { LIT 0,A LOAD CONSTANT A OPR 0,A EXECUTE OPERATION A LOD L,A LOAD VARIABLE L,A STO L,A STORE VARIABLE L,A CAL L,A CALL PROCEDURE A AT LEVEL L INT 0,A INCREMENT T REGISTER BY A JMP 0,A JUMP TO A JPC 0,A JUMP CONDITIONAL TO A } VAR CH : CHAR; {LAST CHARACTER READ} SYM : SYMBOL; {LAST SYMBOL READ} ID : ALFA; {LAST IDENTIFIER READ} NUM : INTEGER; {LAST NUMBER READ} CC : INTEGER; {CHARACTER COUNT} LL : INTEGER; {LINE LENGTH} KK,ERR : INTEGER; CX : INTEGER; {CODE ALLOCATION INDEX} LINE : ARRAY[1..81] OF CHAR; A : ALFA; CODE : ARRAY[0..CXMAX] OF INSTRUCTION; WORD : ARRAY[1..NORW] OF ALFA; WSYM : ARRAY[1..NORW] OF SYMBOL; SSYM : ARRAY[CHAR] OF SYMBOL; MNEMONIC: ARRAY[FCT] OF PACKED ARRAY [1..5] OF CHAR; DECLBEGSYS,STATBEGSYS,FACBEGSYS : SYMSET; TABLE : ARRAY[0..TMAX] OF RECORD NAME : ALFA; CASE KIND : OBJECT OF CONSTANT : (VAL:INTEGER); VARIABLE,PROCMNEMONIC: (LEVEL,ADR:INTEGER) END; PROCEDURE ERROR(N:INTEGER); BEGIN WRITELN(' ****',' ':CC-1,'^',N:2); ERR := ERR+1; END;{ERROR} PROCEDURE GETSYM; VAR I,J,K : INTEGER; PROCEDURE GETCH; BEGIN IF CC=LL THEN BEGIN IF EOF(INPUT) THEN BEGIN WRITE('PROGRAM INCOMPLETE');GOTO 99 END; LL := 0;CC := 0;WRITELN(CX:5,' '); WHILE NOT EOLN(INPUT) DO BEGIN LL := LL+1; READ(CH);LINE[LL] :=CH END; WRITELN; LL := LL+1; READ(LINE[LL]) END; CC := CC+1;CH := LINE[CC] END {GETCH}; BEGIN {GETSYM} WHILE CH = ' ' DO GETCH; IF CH IN ['A'..'Z'] THEN BEGIN {IDENTIFIER OR RESERVED WORD} K := 0; REPEAT IF K = KK THEN KK := K ELSE REPEAT A[KK] := ' ';KK := KK-1 UNTIL KK =K; {SEARCH FOR RESERVED WORDS} ID := A;I := 1;J := NORW; REPEAT K := (I+J) DIV 2; IF ID <= WORD[K] THEN J := K-1; IF ID >= WORD[K] THEN I := K+1 UNTIL I>J; IF I-1 >J THEN SYM := WSYM[K] ELSE SYM := IDENT END ELSE {EXTRACT NUMBER FROM ASCII} IF CH IN ['0'..'9'] THEN BEGIN {NUMBER} K := 0; NUM := 0; SYM := NUMBER; REPEAT NUM := 10*NUM +(ORD(CH)-ORD(0)); K := K+1; GETCH UNTIL NOT (CH IN ['0'..'9']); IF K>NMAX THEN ERROR(30) END ELSE IF CH = ':' THEN BEGIN GETCH; IF CH = '=' THEN BEGIN SYM := BECOMES; GETCH; END ELSE SYM := NUL; END ELSE BEGIN SYM := SSYM[CH];GETCH END END; {GETSYM} PROCEDURE GEN(X : FCT; Y,Z : INTEGER); BEGIN IF CX>CXMAX THEN BEGIN WRITE('PROGRAM TOO LONG');GOTO 99 END; WITH CODE[CX] DO BEGIN F := X;L := Y;A := Z END; CX := CX+1; END;{GEN} PROCEDURE TEST(S1,S2 : SYMSET; N : INTEGER); BEGIN IF NOT (SYM IN S1) THEN BEGIN ERROR(N); S1 := S1 + S2; WHILE NOT (SYM IN S1) DO GETSYM END END; {TEST} PROCEDURE BLOCK( LEV,TX : INTEGER; FSYS : SYMSET); VAR DX : INTEGER; {DATA ALLOCATION INDEX} TX0 : INTEGER; {INITIAL TABLE INDEX} CX0 : INTEGER; {INITIAL CODE INDEX} PROCEDURE ENTER(K : OBJECT); BEGIN {ENTER OBJECT INTO TABLE} TX := TX+1; WITH TABLE[TX] DO BEGIN NAME := ID; KIND := K; CASE K OF CONSTANT : BEGIN IF NUM >AMAX THEN BEGIN ERROR(30); NUM := 0 END; VAL := NUM; END; VARIABLE : BEGIN LEVEL := LEV; ADR := DX; DX := DX+1; END; PROCMNEMONIC : LEVEL := LEV END {CASE} END END{ENTER}; FUNCTION POSITION(ID : ALFA) : INTEGER; VAR I : INTEGER; BEGIN {FIND IDENTIFIER IN ID TABLE} TABLE[0].NAME := ID;I := TX; WHILE TABLE[I].NAME <> ID DO I := I-1; POSITION := I; END;{POSITION} PROCEDURE CONSTDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN GETSYM; IF SYM IN [EQL,BECOMES] THEN BEGIN IF SYM = BECOMES THEN ERROR(1); GETSYM; IF SYM = NUMBER THEN BEGIN ENTER(CONSTANT);GETSYM; END ELSE ERROR(2) END ELSE ERROR(3) END ELSE ERROR(4) END;{CONSTDACLARATION} PROCEDURE VARDECLARATION; BEGIN IF SYM = IDENT THEN BEGIN ENTER(VARIABLE);GETSYM; END ELSE ERROR(4) END;{ VARDECLARATION} PROCEDURE LISTCODE; VAR I : INTEGER; BEGIN {LIST CODE GENERATED FOR THIS BLOCK} FOR I := CX0 TO CX-1 DO WITH CODE[I] DO WRITELN(I,MNEMONIC[F]:5,L:3,A:5) END;{LIST CODE} PROCEDURE STATEMENT(FSYS : SYMSET); VAR I,CX1,CX2 : INTEGER; PROCEDURE EXPRESSION(FSYS: SYMSET); VAR ADDOP : SYMBOL; PROCEDURE TERM(FSYS : SYMSET); VAR MULOP : SYMBOL; PROCEDURE FACTOR(FSYS: SYMSET); VAR I : INTEGER; BEGIN TEST(FACBEGSYS,FSYS,24); WHILE SYM IN FACBEGSYS DO BEGIN IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO CASE KIND OF CONSTANT : GEN(LIT,0,VAL); VARIABLE : GEN(LOD,LEV-LEVEL,ADR); PROCMNEMONIC : ERROR(21) END;{CASE} GETSYM; END ELSE IF SYM = NUMBER THEN BEGIN IF NUM > AMAX THEN N BEGIN ERROR(30);NUM := 0; END; GEN(LIT,0,NUM);GETSYM; END ELSE IF SYM = LPAREN THEN BEGIN GETSYM;EXPRESSION([RPAREN]+FSYS); IF SYM = RPAREN THEN GETSYM ELSE ERROR(22) END; TEST(FSYS,[LPAREN],23) END END;{FACTOR} BEGIN {TERM} FACTOR(FSYS+[TIMES,SLASH]); WHILE SYM IN [TIMES,SLASH] DO BEGIN MULOP := SYM;GETSYM;FACTOR(FSYS+[TIMES,SLASH]); IF MULOP = TIMES THEN GEN(OPR,0,4) ELSE GEN(OPR,0,5) END END;{TERM} BEGIN {EXPRESSION} IF SYM IN [PLUS,MINUS] THEN BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = MINUS THEN GEN(OPR,0,1) END ELSE TERM(FSYS+[PLUS,MINUS]); WHILE SYM IN [PLUS,MINUS] DO BEGIN ADDOP := SYM;GETSYM;TERM(FSYS+[PLUS,MINUS]); IF ADDOP = PLUS THEN GEN(OPR,0,2) ELSE GEN(OPR,0,3) END END;{EXPRESSION} PROCEDURE CONDITION(FSYS: SYMSET); VAR RELOP : SYMBOL; BEGIN IF SYM = ODDSYM THEN BEGIN GETSYM;EXPRESSION(FSYS);GEN(OPR,0,6) END ELSE BEGIN EXPRESSION([EQL,NEQ,LSS,GTR,LEQ,GEQ]+FSYS); IF NOT (SYM IN [EQL,NEQ,LSS,LEQ,GTR,GEQ]) THEN ERROR(20) ELSE BEGIN RELOP := SYM;GETSYM;EXPRESSION(FSYS); CASE RELOP OF EQL: GEN(OPR,0,8); NEQ: GEN(OPR,0,9); LSS: GEN(OPR,0,10); GEQ: GEN(OPR,0,11); GTR: GEN(OPR,0,12); LEQ: GEN(OPR,0,13) END{CASE} END END END{CONDITION}; BEGIN {STATEMENT} IF SYM = IDENT THEN BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE IF TABLE[I].KIND <> VARIABLE THEN BEGIN {ASSIGNMENT TO NON VARIABLE} ERROR(12); I := 0; END; GETSYM; IF SYM = BECOMES THEN GETSYM ELSE ERROR(13); EXPRESSION(FSYS); IF I <> 0 THEN WITH TABLE[I] DO GEN(STO,LEV-LEVEL,ADR) END ELSE IF SYM = CALLSYM THEN BEGIN GETSYM; IF SYM <> IDENT THEN ERROR(14) ELSE BEGIN I := POSITION(ID); IF I = 0 THEN ERROR(11) ELSE WITH TABLE[I] DO IF KIND = PROCMNEMONIC THEN GEN(CAL,LEV-LEVEL,ADR) ELSE ERROR(15); GETSYM; END END ELSE IF SYM = IFSYM THEN BEGIN GETSYM;CONDITION([THENSYM,DOSYM]+FSYS); IF SYM = THENSYM THEN GETSYM ELSE ERROR(16); CX1 := CX; GEN(JPC,0,0); STATEMENT(FSYS);CODE[CX1].A := CX END ELSE IF SYM = BEGINSYM THEN BEGIN GETSYM;STATEMENT([SEMICOLN,ENDSYM]+FSYS); WHILE SYM IN [SEMICOLN]+STATBEGSYS DO BEGIN IF SYM = SEMICOLN THEN GETSYM ELSE ERROR(10); STATEMENT([SEMICOLN,ENDSYM]+FSYS) END; IF SYM = ENDSYM THEN GETSYM ELSE ERROR(17) END ELSE IF SYM = WHILESYM THEN BEGIN CX1 := CX;GETSYM;CONDITION([DOSYM]+FSYS); CX2 := CX;GEN(JPC,0,0); IF SYM = DOSYM THEN GETSYM ELSE ERROR(18); STATEMENT(FSYS);GEN(JMP,0,CX1);CODE[CX2].A := CX END; TEST(FSYS,[],19) END; {STATEMENT} BEGIN {BLOCK} DX := 3;TX0 := TX;TABLE[TX].ADR := CX;GEN(JMP,0,0); IF LEV > LEVMAX THEN ERROR(32); REPEAT IF SYM = CONSTSYM TPASVPPASINTERPSVTESTPA p !PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR CH : CHAR; PDATAFILE,PCONSOLE,PINDEX,PTREE : BOOLEAN; ROOT : WORDREF;  WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; LINE : BIGSTR; SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN : INTEGER; {INPUT DATA FILE} DISKOUT : TEXT ; {OUTPUT PASCAL FILE} FIELDNUMBER : INTEGER; {$I GCHN.PI} {$I OPEN.BU} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} {$I GETINTEGER.BU} {$I GETFIELDINT.BU} {$I GETREAL.BU} {$I REALFIELD.BU} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTRECORDS(W : WORD); VAR X : ITEMREF; BEGIN X := W.FIRST; REPEAT BEGIN SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); X := X^.NEXT; END; UNTIL X = NIL; END; {PRINT IN ORDER} PROCEDURE PRINTINORDER(W : WORDREF); BEGIN IF W<> NIL THEN BEGIN PRINTINORDER(W^.LEFT); PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); END; END; PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN IF PCONSOLE THEN WRITE(' ',W.KEY : C1); WRITE(DISKOUT,' ',W.KEY : C1); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN L := 0; IF PCONSOLE THEN BEGIN WRITELN;WRITE(' ':C1+1); END; WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); END; L := L+1; IF PCONSOLE THEN WRITE(' ',X^.LNO :C3); WRITE(DISKOUT,X^.LNO : C3); X := X^.NEXT; UNTIL X = NIL ; IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; WRITELN(DISKOUT); WRITELN(DISKOUT) END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; AMOUNT,CHECK : REAL; BEGIN AMOUNT := 0.0; IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); CHECK := REALFIELD(LINE,3); AMOUNT := AMOUNT+CHECK; X := X^.NEXT END UNTIL X = NIL; IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); END; {OF PRINT ALL LINES WITH KEY W.KEY} FUNCTION QUESTION : BOOLEAN; BEGIN REPEAT WRITE(' ANSWER Y OR N '); READLN(CH) UNTIL (CH = 'Y') OR (CH = 'N'); QUESTION := CH = 'Y'; END; BEGIN OPENFILES; WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); PCONSOLE := QUESTION; WRITELN(' WANT DATA BASE FILE PRINTED?'); PDATAFILE := QUESTION; WRITELN(' WANT INDEX PRINTED? '); PINDEX := QUESTION; WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); PINDEX := QUESTION; WRITE(' SORT ON FILEN NO. 2,3,4,5? '); READLN(FIELDNUMBER); ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1; IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); IF PDATAFILE THEN WRITE(DISKOUT,' ',N : C3,' ',LINE); CASE LINE[1] OF 'C','E','W' : BEGIN ID := GETFIELDINT(LINE,FIELDNUMBER); SEARCH(ROOT); END; END; END; cEND; UNTIL ERRORNUMBER = 6; {END OF FILE} IF PTREE THEN PRINTTREE(ROOT); WRITELN(' MEMORY LEFT = ',MEMAVAIL); IF PINDEX THEN PRINTINORDER(ROOT); WHILE NOT EOF(INPUT) DO BEGIN WRITE(' SEARCH KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN BEGIN PRINTWORD(WF^); PRINTLINES(WF^); END; END; END. 1978EMP030 f E 519 84.76 E 520 483.00 E 511 830.88 E 537 464.55 E 531 356.37 E 529 589.96 E 530 436.65 E 528 393.86 E 527 888.88 E 526 1034.18 E 525 991.35 E 524 733.00 W 522 182.00 W 523 1549.00 W 521 2210.00 W 518 3391.80 W 517 277.10 E 516 259.01 E 515 439.51 E 514 398.75 E 513 1113.18 E 512 893.06 W 540 4601.70 CONSOLE01Zq$PROGRAM CONSOLE(INPUT,OUTPUT); TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[255]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; REGISTER = RECORD CASE INTEGER OF 1: (INT:INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; VAR CHARVALUE,CURLINE,DISPLAYPOS,INTERNALPOS : INTEGER; LINE : LINESTRING; CHARACTER : CHAR; INPUTFILE,OUTPUTFILE : TEXT; {$I PCHAR.PI} {$I GCHAR.PI} {$I WRITESTRING.PI} PROCEDURE REPLACE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER; CHARACTER : CHAR); BEGIN LINE.STR[INTERNALPOS] := CHARACTER; END; PROCEDURE INSERT(VAR LINE: LINESTRING; INTERNALPOS : INTEGER;CHARACTER : CHAR); VAR I : INTEGER; BEGIN WITH LINE DO BEGIN IF INTERNALPOS > LEN THEN BEGIN LEN := LEN+1; STR[LEN]:= CHARACTER END ELSE BEGIN LEN := LEN+1; FOR I := LEN DOWNTO INTERNALPOS DO STR[I] := STR[I-1]; STR[INTERNALPOS] := CHARACTER; END; END END; {INSERT} PROCEDURE DELETE(VAR LINE : LINESTRING;INTERNALPOS : INTEGER); VAR I : INTEGER; BEGIN WITH LINE DO IF LEN > 0 THEN BEGIN FOR I := INTERNALPOS TO LEN-1 DO STR[I] := STR[I-1]; LEN := LEN -1; END {DO} END; {DELETE} FUNCTION CALCDISPLAYPOSITION(LINE : LINESTRING;POSITION : INTEGER) : INTEGER; VAR I,J : INTEGER; BEGIN WITH LINE DO BEGIN I := 1; FOR J := 1 TO POSITION DO BEGIN IF ORD(STR[J]) IN [13,32..126] THEN I := I+1 ELSE IF ORD(STR[J]) = 9 {TAB} THEN I := I+8-(I MOD 8); END; END;{WITH} {WRITELN(' CALCDISPLAYPOS =',I);} CALCDISPLAYPOS := I; END; {CALCDISPLAYPOS} PROCEDURE GETPRECEEDINGLINE; BEGIN END; PROCEDURE BACKSPACE; VAR MOVES,I,NEWDISPLAYPOS : INTEGER; BEGIN IF DISPLAYPOS > 1 THEN BEGIN INTERNALPOS := INTERNALPOS-1; NEWDISPLAYPOS := CALCDISPLAYPOS(LINE,INTERNALPOS-1); MOVES := NEWDISPLAYPOS-DISPLAYPOS; IF MOVES >= 0 THEN BEGIN FOR I := 1 TO MOVES DO PCHAR(32); END ELSE BEGIN FOR I := 1 TO -MOVES DO PCHAR(8); END; DISPLAYPOS := NEWDISPLAYPOS; END; END; {BACKSPACE} PROCEDURE HORIZTAB; VAR MOVESRT,I : INTEGER; BEGIN MOVESRT := 8 - DISPLAYPOS MOD 8; DISPLAYPOS := DISPLAYPOS+MOVESRT; FOR I := 1 TO MOVESRT DO PCHAR(32); INSERT (LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {HORIZTAB} PROCEDURE CRETURNLINEFEED; BEGIN PCHAR(13);PCHAR(10); INSERT(LINE,INTERNALPOS,CHARACTER); {REMOVE NEXT 3 LINES AS APPROPRIATE} WRITESTRING(LINE); PCHAR(10); LINE.LEN :=0; INTERNALPOS :=1; DISPLAYPOS :=1; CURLINE := CURLINE+1; END; {OUTPUT CARRIAGE RETURN LINE FEED} PROCEDURE PRINTCHAR; BEGIN PCHAR(CHARVALUE); DISPLAYPOS := DISPLAYPOS+1; INSERT(LINE,INTERNALPOS,CHARACTER); INTERNALPOS := INTERNALPOS+1; END; {PRINT CHARACTER} PROCEDURE DELETECHARACTER; BEGIN IF INTERNALPOS - 1 = LINE.LEN THEN {WE'RE AT THE END OF THE LINE} BEGIN DELETE(LINE,INTERNALPOS-1); BACKSPACE; END ELSE DELETE(LINE,INTERNALPOS); END; {DELETE CHARACTER} PROCEDURE ACTION; BEGIN IF CHARVALUE IN [32..126] THEN PRINTCHAR ELSE CASE CHARVALUE OF {BACKSPACE} 8 : BACKSPACE; {HORIZ TAB} 9 : HORIZTAB; {LINE FEED} 10 : ; {UP} 11 : ; {CARRIAGE RET} 13 : CRETURNLINEFEED; {DELETE} 127 : DELETECHARACTER; END; {CASE} END; {ACTION} PROCEDURE INITIALIZE; {ALL VARIABLES} BEGIN LINE.LEN := 0; INTERNALPOS := 1; {POSITION OF CURSOR IN MEMORY} DISPLAYPOS := 1; {POSITION OF CURSOR ON SCREEN} CURLINE := 1; END; {INITIALIZE} PROCEDURE OPENFILES; VAR INSTRING : STRING[32]; BEGIN WRITE(' INPUT FILE NAME? ');READLN(INSTRING); FILETITLE(INPUTFILE,INSTRING);RESET(INPUTFILE); WRITE(' OUTPUT FILE NAME? ');READLN(INSTRING); FILETITLE(OUTPUTFILE,INSTRING);RESET(OUTPUTFILE); END; {OPEN INPUT AND OUTPUT FILES} PROCEDURE SHOWCURSOR; VAR I : INTEGER; BEGIN FOR I := 1 TO DISPLAYPOS -1 DO PCHAR(32{SPACE}); PCHAR(ORD('^'));WRITELN; END; {SHOW CURSOR} BEGIN {MAIN PROGRAM} INITIALIZE; REPEAT BEGIN GCHAR(CHARVALUE); CHARACTER := CHR(CHARVALUE); ACTION; END; UNTIL CHARVALUE = 0 ;{CTRL P} END. GETINTEGERBUFUNCTION GETINTEGER( STR : BIGSTR;VAR I : INTEGER) : INTEGER; LABEL 1,2,3; TYPE SIGNOF = (PLUS,MINUS); VAR LEN,FNUMB : INTEGER; SIGN :SIGNOF; BEGIN FNUMB := 0; SIGN := PLUS; LEN := LENGTH(STR); { WRITELN('LEN=',LEN);} 1: IF I <= LEN THEN IF NOT (STR[I] IN ['0'..'9','-']) THEN BEGIN I := I+1;GOTO 1; END ELSE IF STR[I] = '-' THEN BEGIN I := I+1; SIGN := MINUS; GOTO 1; END; 2 : IF STR[I] IN ['0'..'9'] THEN BEGIN { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB);} FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); I := I+1; IF I<= LEN THEN GOTO 2; END; 3: CASE SIGN OF PLUS : GETINTEGER := FNUMB; MINUS : GETINTEGER := -FNUMB END;{CASE} END;{getinteger} BTREEMC`rrCHATR BTREE.PA 0 CHATR BTREE.PX 0 DELETE/V BTREE.PA XFER BTREE BTREE.PA/R PASINTERP PASCALO/S/V/A/L BTREE.PA CHATR BTREE.PX *WP DATAR1s B 4196.05 C 2332 2000 21 1 C 2313 1804.52 22 1 C 2337 43.50 0 0 C 2338 6.00 0 0 C 2345 53.35 0 0 C 2347 38.00 0 0 C 2348 50.00 24 1 C 2356 264.05 0 0 C 2354 50.00 20 1 D 23546.64 DM 250.00 C 2355 280.60 22 1 CC 2357 C 2358 10 3 1 C 2359 42.80 10 1 C 2360 119.40 19 1 C 2361 50 18 1 CC 2362 CC 2363 CC 2364 CC 2365 C 2366 50 18 1 CC 2367 CC 2368 CC 2369 CC 2370 C 2371 50 18 1 CC 2372 CC 2373 C 2374 547.42 17 1 C 2375 86 5 1 C 2376 500 21 1 C 2377 1500 21 1 C 2378 93.20 3 2 C 2379 1562.80 2 2 C 2380 3.60 5 2 C 2381 136.16 5 2 C 2382 114.98 18 2 DM 250 C 2383 139.24 4 2 C 2384 155 5 2 C 2385 60.30 5 2 C 2386 1151 17 2 C 2387 12 18 2 C 2388 66.80 22 2 C 2389 33.30 22 2 C 2390 22.80 22 2 C 2391 12 18 2 C 2392 39 22 2 C 2393 64.65 25 2 C 2394 85.54 22 2 D 13878.10 DM 1865.00 C 2395 1000. 21 3 C 2396 405.38 4 3 C 2397 64. 8 3 D 3885. DM 250.00 C 2398 14.85 18 3 DM 1865. C 2399 7.95 18 3 C 2400 8.52 18 3 C 2401 29.39 22 3 C 2402 80. 23 3 D 3222.52 C 2403 1562.80 2 5 C 2404 1887.00 17 5 C 2405 28.26 21 5 C 2406 52.68 5 5 C 2407 53.35 5 5 C 2408 27.00 5 5 C 2409 301.50 21 5 C 2410 32.23 5 5 C 2411 110. 16 5 C 2412 1500 21 0 C 2413 15 18 3 C 2414 286.41 5 3 C 2415 12.68 5 3 C 2416 93.20 3 5 C 2417 7.75 11 3 C 2418 66.34 4 3 C 2419 1197.81 5 5 C 2420 50 24 3 C 2421 261.65 23 5 C 2422 10 16 5 C 2423 2386 17 5 C 2424 28.15 23 5 C 2425 8.95 18 5 D 3727.5 C 2426 16.05 5 7 C 2427 450.59 17 5 C 2428 621.73 8 6 C 2429 4000. 21 6 C 2430 6.75 18 6 C 2431 110 5 6 C 2432 991 16 6 C 2433 41.5 20 6 C 2434 52 5 6 C 2435 675 8 6 D 10674.20 D 8655.39 D 3056.00 C 2436 40 20 6 CC 2437 C 2438 3.47 18 6 C 2439 11 18 6 C 2440 339.45 22 6 C 2441 28.76 18 6 C 2442 589.40 4 6 C 2443 19.89 22 6 C 2444 16. 18 6 CC 2445 C 2446 93.20 3 6 C 2447 410.72 25 6 C 2448 695.00 7 6 C 2449 50. 27 6 C 2450 13.00 17 6 C 2451 55.00 22 7 C 2452 74.42 22 7 C 2453 56.30 5 7 C 2454 7.85 5 7 C 2455 223.17 5 7 C 2456 368.00 23 7 C 2457 1562.80 2 7 D 5534.20 C 2458 450.59 17 8 C 2459 75.65 11 8 C 2460 923. 5 8 CC 2461 CC 2462 C 2463 25 18 8 C 2464 26 22 8 C 2465 50.50 18 8 C 2466 39 5 8 C 2467 4.80 22 8 CC 2468 C 2469 70 18 8 C 2470 500 21 8 C 2471 12 22 8 D 6157.00 C 2472 113.56 4 8 C 2473 9.95 18 8 CC 2474 C 2475 368 23 8 C 2476 616 9 8 C 2477 208.65 5 8 C 2478 380 7 9 C 2479 129 5 9 C 2480 3.95 18 9 C 2481 7.06 1 9 C 2482 30 18 9 C 2483 15 18 9 D 5631.50 CC 2484 C 2485 2000 21 9 C 2486 7 1 9 C 2487 34.03 22 9 C 2488 474.35 5 9 C 2489 179.46 5 9 C 2490 145 5 9 D 5395 C 2491 12.30 18 9 C 2492 7 1 11 C 2493 2 22 9 C 2494 3.50 18 9 C 2495 46.49 4 10 CC 2496 C 2497 117.03 3 10 CC 2498 C 2499 1773.70 2 11 C 2500 94.90 22 11 C 2501 50 20 11 C 2502 21.85 11 11 C 2503 89.37 8 11 D 10811.70 C 2504 547.42 17 11 C 2505 1203.31 22 11 C 2506 368 23 11 C 2507 616 9 11 C 2508 10.80 18 11 C 2509 23.30 5 11 C 2510 27.60 5 11 C 2511 126.00 5 11 C 2512 168.26 5 11 C 2513 230.66 25 11 C 2514 18 18 11 C 2515 20 18 11 C 2516 42 26 11 C 2517 8 18 11 D 7237.50 C 2518 446.86 4 11 C 2519 20 26 12 C 2520 28.99 10 12 C 2521 4.15 10 12 C 2522 61.36 10 12 C 2523 1210.49 10 12 C 2524 7 1 12 C 2525 16 10 12 C 2526 45.45 5 12 C 2527 13.30 5 12 C 2528 387 17 12 C 2529 18.70 18 12 CC 2530 C 2531 1800 21 13 C 2532 206.25 26 12 C 2533 1703.40 2 0 D 3825 C 2534 3178.45 22 14 CC 2535 C 2536 97.67 23 14 C 2537 55.93 4 14 C 2538 26 5 14 C 2539 550 24 14 C 2540 106.32 8 14 C 2541 105 3 14 C 2542 108.06 8 14 D 6507.66 CC 2543 C 2544 74.95 10 14 C 2545 671.81 17 14 C 2546 262.60 5 14 C 2547 50.50 5 14 C 2548 11.70 25 14 C 2549 85 6 14 C 2550 10 18 14 C 2551 34 6 14 C 2552 200 5 14 C 2553 368 23 14 C 2554 912.90 9 14 C 2555 500 21 14 C 2556 90 10 14 C 2557 120 1 15 C 2558 2.05 18 15 C 2559 899 17 15 C 2560 267.58 22 15 D 465 D 3182.36 C 2561 100 5 15 CC 2562 DM 200 D 5187.50 C 2563 500 8 15 C 2564 100.75 10 15 C 2565 3000 21 15 C 2566 1800 21 17 C 2567 75.21 10 15 C 2568 563.06 4 15 C 2569 26 17 15 C 2570 192 22 15 C 2571 14.30 5 15 C 2572 184.25 5 15 D 3000 C 2573 500 21 15 C 2574 115 3 16 D 11960.00 C 2575 42 26 16 C 2576 26.12 5 16 C 2577 81.71 4 16 C 2578 36.81 11 16 C 2579 368.00 23 16 C 2580 671.81 17 16 C 2581 37.70 18 16 C 2582 72 6 16 C 2583 350 21 16 C 2584 23.95 8 16 C 2585 1773.70 2 16 CC 2586 C 2587 271.60 23 17 CC 2588 D 2107.75 D 4990 C 2589 5 1 17 DM 14.60 DM 7.50 D 829.25 D 21228.50 D 5680 C 2590 105.78 8 17 C 2591 311.54 8 17 C 2593 770.94 25 17 C 2594 109.92 22 17 C 2595 432.25 4 18 C 2596 28 1 18 C 2897 200 27 18 C 2598 919 2 18 C 2599 187.22 5 18 C 2600 134 5 18 C 2601 90.50 5 18 C 2602 153.64 5 18 C 2603 14850. 22 18 CC 2604 C 2605 50 24 18 C 2606 186.36 8 18 C 2607 85 1 18 D 32927.50 C 2608 1352.93 25 19 C 2609 50 20 19 CC 2610 CC 2611 DM 7.37 C 2612 17 6 20 D 14750.00 D 2040 C 2613 33 5 20 C 2614 9.22 5 20 C 2615 115 3 20 C 2616 1875.10 2 20 C 2617 134 5 20 C 2618 46.45 5 20 C 2619 790.75 17 20 C 2620 33 17 20 C 2621 368 23 28 C 2622 52.30 5 20 C 2623 309.14 8 20 C 2624 9 18 20 C 2625 1452.77 25 20 D 8742.50 C 2626 50 24 20 C 2627 39.50 18 20 CC 2628 C 2629 56 17 20 C 2630 164 5 21 C 2631 400.88 4 21 CC 2632 C 2633 8.75 18 21 C 2634 7.50 1 21 C 2635 48 4 21 C 2636 12.55 11 21 C 2637 139.70 22 21 D 538 C 2638 1200 21 21 C 2639 1000 21 21 C 2640 115 3 21 C 2641 30 5 21 C 2642 101.39 4 22 D 3000 DM 3000.00 C 2643 140 22 21 C 2644 35 26 22 C 2645 671.81 17 22 C 2646 1850.16 2 22 C 2647 70 23 22 C 2648 14.20 23 22 C 2649 500 24 22 C 2650 13.05 11 22 C 2651 205.74 22 22 C 2652 199.40 5 22 C 2653 17.16 5 16 C 2654 19.94 5 22 C 2655 34.12 22 22 D 2530.69 D 20162.50 D 8992.41 C 2656 1500 21 22 C 2657 116.89 1 23 D 1545 C 2659 368 23 22 C 2660 37 18 22 C 2661 25 22 22 C 2662 15 18 22 C 2663 500 21 23 C 2664 25.35 5 23 D 6212.50 CC 2665 C 2666 50 24 23 C 2667 96.30 18 23 C 2668 495.42 4 23 C 2669 145 5 23 C 2670 8.70 1 24 C 2671 16.80 1 24 C 2672 29 5 23 C 2673 11.48 22 23 C 2674 1397.48 25 23 C 2675 200 28 23 C 2676 500 8 23 CC 2677 C 2678 49.56 8 24 C 2679 10000 23 24 C 2680 110 23 24 C 2681 1007 23 24 C 2682 37.64 22 24 C 2683 2000. 21 24 C 2684 49.44 1 25 D 4762.50 C 2685 1850.16 2 25 C 2686 35.27 11 25 C 2687 115 3 25 C 2688 144.36 4 25 C 2689 50 22 25 C 2690 39.85 18 25 C 2691 141.22 4 25 C 2692 552.87 17 25 C 2693 134.32 22 25 CC 2694 D 1882.50 C 2695 500 8 25 C 2696 500 8 25 C 2697 20.32 5 26 C 2698 750 C 2699 110.25 1 25 C 2700 368 23 25 C 2701 134.74 22 25 C 2702 6.90 5 25 C 2703 99 17 25 DM 11.49 DM 11.61 C 2704 36 18 26 C 2705 635.69 27 26 C 2706 18.50 18 26 D 7130 C 2707 295 26 26 C 2708 472.87 4 26 C 2709 15 18 26 C 2710 36.50 5 26 C 2711 16.75 18 26 C 2712 218.26 5 26 C 2713 139.96 13 16 CC 2714 C 2715 50 22 26 C 2716 1500 21 27 C 2717 1500 21 28 C 2718 11.56 5 26 C 2719 4812.51 23 27 D 1545 C 2720 3920.58 17 27 C 2721 115 3 27 C 2722 76.99 22 27 C 2723 40.30 5 27 C 2724 117.43 4 27 C 2725 552.87 17 27 C 2726 127.35 5 27 C 2727 6 18 27 C 2728 20 5 27 C 2729 52.84 11 27 C 2730 5.74 5 27 DM 23.10 C 2731 50 24 27 D 592.50 C 2732 911.35 25 27 C 2733 46.85 5 27 C 2734 164.11 5 27 C 2735 1850.16 2 27 C 2736 140 1 27 D 1997 C 2737 368 23 27 D 1467.50 C 2738 154.01 5 28 C 2739 33 18 28 C 2740 40 23 28 C 2741 15.15 8 28 C 2742 342.32 8 28 C 2743 10 26 28 C 2744 160 27 28 C 2745 19 26 28 C 2746 1136.47 6 28 C 2747 174.34 8 28 C 2748 208.22 25 28 C 2749 131.46 10 28 D 13855 C 2750 145.75 10 28 C 2751 30 5 28 C 2752 54 5 28 C 2753 55 22 28 C 2754 569.90 4 28 C 2755 64.50 6 28 C 2756 75 28 29 CC 2757 C 2758 374 17 29 C 2759 115 3 29 C 2760 500 21 29 C 2761 500 21 29 C 2762 1510 21 29 E 496 1177.09 12 3 E 495 1076.21 12 3 E 494 392.55 12 1 E 493 456.63 12 1 E 492 497.88 12 1 E 491 574.03 12 1 E 490 890.20 12 1 E 489 842.19 12 1 E 488 788.81 12 1 E 510 304.73 12 5 E 509 432.47 12 5 E 508 575.53 12 5 E 507 502.81 12 5 E 506 842.80 12 5 E 505 1033.57 12 5 E 504 254.00 12 4 W 503 702.05 14 4 W 502 4521.60 14 4 W 501 387.26 14 3 W 500 372.80 14 3 W 499 561.91 14 3 W 498 497.97 14 3 E 497 926.48 12 3 E 519 84.76 12 12 E 520 483.00 12 8 E 511 830.88 12 7 E 537 464.55 12 10 E 531 356.37 12 9 E 529 589.96 12 9 E 530 436.65 12 9 E 528 393.86 12 9 E 527 888.88 12 9 E 526 1034.18 12 9 E 525 991.35 12 9 E 524 733.00 12 8 W 522 182.00 14 8 W 523 1549.00 14 8 W 521 2210.00 14 8 W 518 3391.80 14 7 W 517 277.10 14 7 E 516 259.01 12 7 E 515 439.51 12 7 E 514 398.75 12 7 E 513 1113.18 12 7 E 512 893.06 12 7 W 540 4601.70 14 10 E 532 1062.02 12 10 E 533 1122.84 12 10 E 534 999.70 12 10 E 535 538.32 12 10 E 536 643.20 12 10 E 538 386.34 12 10 E 539 105.03 12 10 W 541 1703.92 14 11 W 544 5.00 14 11 W 545 1345.38 14 11 E 546 924.04 12 12 E 547 982.73 12 12 E 548 873.83 12 12 E 549 473.57 12 12 E 550 542.91 12 12 E 551 440.27 12 12 E 553 299.63 12 12 E 552 185.93 12 12 E 568 343.38 12 15 E 569 304.73 12 15 E 567 596.15 12 15 E 566 465.02 12 15 E 565 948.24 12 14 E 564 985.99 12 14 E 563 991.80 12 14 E 557 473.57 12 13 E 558 601.00 12 13 E 560 265.01 12 13 E 555 991.16 12 12 E 554 927.77 12 12 E 556 852.47 12 13 W 562 4255.04 14 13 E 561 297.08 12 13 E 559 688.29 12 13 E 570 1050.61 12 16 E 571 1069.11 12 16 E 572 1019.07 12 16 E 573 566.88 12 16 E 574 630.97 12 16 E 575 269.88 12 16 E 576 472.09 12 16 E 577 346.43 12 16 W 578 4412.14 14 16 W 579 483.00 14 16 W 580 2210.00 14 16 W 581 38.36 14 16 E 582 1046.89 12 17 E 583 1151.39 12 17 E 584 996.51 12 17 E 585 627.63 12 17 E 586 732.19 12 17 E 587 537.45 12 17 E 588 513.44 12 17 E 589 374.42 12 17 E 590 110.15 12 17 E 591 979.37 12 18 E 592 1426.28 12 18 E 594 531.30 12 18 E 596 500.91 12 18 W 599 5659.58 14 18 E 593 960.21 12 0 E 595 645.08 12 0 E 597 430.98 12 0 E 598 343.31 12 0 W 600 1863.74 14 18 W 602 850.20 14 18 E 603 796.26 12 20 E 604 802.32 12 20 E 605 379.26 12 20 E 606 542.91 12 20 E 607 283.06 12 20 E 608 180.93 12 20 E 609 282.18 12 20 E 615 369.00 12 21 W 617 2861.14 14 21 E 625 2210.00 12 23 E 627 1209.08 12 24 E 628 1158.89 12 24 E 629 552.62 12 24 E 630 596.12 12 24 E 632 359.96 12 24 W 634 800.03 14 24 E 635 921.48 12 25 E 636 1050.72 12 25 E 637 533.66 12 25 E 638 610.74 12 25 E 639 361.79 12 25 E 640 201.10 12 25 E 645 346.92 12 26 E 610 325.46 12 21 E 611 1020.87 12 21 E 612 922.47 12 21 E 613 505.84 12 21 E 614 595.69 12 21 E 616 258.02 12 21 E 618 1053.55 12 23 E 619 845.14 12 23 E 620 420.35 12 23 E 621 548.51 12 23 E 622 293.42 12 23 E 623 339.16 12 23 E 624 374.42 12 23 W 626 483.00 14 23 E 631 142.22 12 24 W 633 2792.12 14 24 E 660 484.10 12 29 W 662 2276.24 14 29 E 650 981.35 12 28 E 651 992.28 12 28 E 652 327.45 12 28 E 653 384.95 12 28 E 641 1081.13 12 26 E 642 1042.43 12 26 E 643 490.20 12 26 E 644 516.116 12 26 E 646 326.75 12 26 W 647 2424.72 14 26 W 648 393.57 14 26 W 649 251.13 14 26 E 654 373.60 12 28 E 657 1176.43 12 29 E 658 1184.18 12 29 E 659 566.46 12 29 E 661 247.78 12 29 E 663 393.62 12 29 E 664 40.27 12 29 T19U 0.PROGRAM T19(INPUT,OUTPUT); CONST NUL=0; SOH=1; STX=2; ETX=3; EOT=4; ENQ=5; ACK=6; BEL=7; BS=8; HT=9; LF=10; VT=11; FF=12; CR=13; SO=14; SI=15; DLE=16; DC1=17; DC2=18; DC3=19; DC4=20; NAK=21; SYN=22; ETB=23; CAN=24; EM=25; SUB=26; ESC=27; FS=28; GS=29; RS=30; US=31; SPACE=32; DELETE=127; TYPE MODETYPE = (INSERT,REPLACE); VAR CHARIN : INTEGER; ALFA: BOOLEAN; MODE : MODETYPE; FUNCTION GCHA:INTEGER;EXTERNAL; PROCEDURE PCHA(CHRIN:INTEGER);EXTERNAL; PROCEDURE ACTION(CCHR:INTEGER); BEGIN WRITELN(OUTPUT,'ACTION') END; BEGIN MODE := INSERT; REPEAT BEGIN CHARIN := GCHA; ALFA := ((CHARIN >= SPACE) AND (CHARIN < DELETE)); IF ALFA THEN CASE MODE OF INSERT : BEGIN WRITELN(OUTPUT,'INSERT ');PCHA(CHARIN) END; REPLACE : BEGIN WRITELN(OUTPUT,'REPLACE ');PCHA(CHARIN)END; END ELSE ACTION(CHARIN) END UNTIL EOF(INPUT) END. TKOM __ PROGRAM TKOMPAR(INPUT,OUTPUT); TYPE COMPARATIVE = (LESS,GREATER,EQUAL); TEXT = ARRAY[1..10] OF CHAR; VAR A : TEXT; B : TEXT; I,J : INTEGER; FUNCTION KOMPAR ( A : TEXT; B : TEXT; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE ; EXTERNAL; BEGIN I :=1; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,A[I]);I := I+1 END; RESET(INPUT); J := 1; WHILE NOT EOLN(INPUT) DO BEGIN READ(INPUT,B[J]);J := J+1; END; CASE KOMPAR(A,B,1,10) OF LESS : WRITELN ('LESS'); EQUAL : WRITELN ('EQUAL'); GREATER : WRITELN ('GREATER') END END. FIXFLG @; THIS ROUTINE INTERFACES WITH PASCAL AND FIXES AND FLOATS ; CALL VIA ; FUNCTION FIX (X:REAL);INTEGER;EXTERNAL; ; FUNCTION FLOT (I:INTEGER);REAL;EXTERNAL; ; X=FLOT(I) ; I=FIX(X) .TITL FIXFL .ENT ?FIX,?FLOT .EXTN FENT,XPRET .EXTD WSA .NREL ?FLOT: JMP .+1 STA 0 FVAL ;SAVE POINTER TO FUNCTION RETURN LDA 3 @SP ;GET INTEGER ISZ SP ;CONVERT SINGLE WORD INTEGER TO DOUBLE WORD INTEGER SUB 2 2 ;CLEAR AC2 MOVL# 3 3 SZC ;SET LST. SIG. WORD TO -1 IF NEGATIVE ADC 2 2 STA 3 @SP ;STORE NEW D W INTEGER ON STACK DSZ SP STA 2 @SP SUB 3 3 ;CLEAR AC3 LDA 2 WSA ;AND ZERO WSA WITH IT STA 3 0 2 FENT ;ENTER RFPI FFLO @SP ;FLOAT DOUBLE WORD INTEGER TO SING PREC REAL FEXT ;EXIT RFPI (REAL REPLACES INTEGER ON STACK) LDA 2 FVAL ;NOW SEND REAL TO CALLER LDA 0 @SP ISZ SP STA 0 0 2 LDA 0 @SP STA 0 1 2 SUBO 1 1 ;GENERATE +2 WORDS TO PASCAL INCZL 1 1 XPRET ;RETURN TO PASCAL FVAL: 0 ;AC2 STORED HERE ?FIX: DSZ SP ;SET ADDRESS TO BOTTOM OF REAL STA 0 FVAL ;SAVE POINTER TO FUNCTION VALUE SUBO 2 2 ;GENERATE 0 LDA 3 WSA ;AND ZERO WSA WITH IT STA 2 0 3 FENT ;ENTER RFPI FFIX @SP ;FIX REAL NUMBER WHICH IS @ SP FEXT ;DP INTEGER NOW REPLACES REAL LDA 2 FVAL ;RETURN SP INTEGER(MS WORD) TO CALLER ISZ SP LDA 1 @SP STA 1 0 2 SUBZL 1 1 ;GENERATE 1 WORD TO PASCAL XPRET ;AND RETURN .END T10PA~ . PROGRAM T10(INPUT,OUTPUT); VAR CH : CHAR; BEGIN WRITELN(OUTPUT,'PROG T10'); READ(INPUT,CH); WRITELN(OUTPUT,' END'); END. 1978EMP04 f E 532 1062.02 E 533 1122.84 E 534 999.70 E 535 538.32 E 536 643.20 E 538 386.34 E 539 105.03 W 541 1703.92 W 544 5.00 W 545 1345.38 E 546 924.04 E 547 982.73 E 548 873.83 E 549 473.57 E 550 542.91 E 551 440.27 E 553 299.63 TEST22 :PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR ROOT : WORDREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT: FILE POSITION BEFORE READ} ID : INTEGER; F : TEXT; INFILE : TEXT; LINE : LINESTRING; SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN,DISKOUT : INTEGER; {INPUT OUTPUT DATA FILES} RECORDPOS : ARRAY [1..100] OF DPINTEGER; L : INTEGER; {$I GCHN.PI} {$I OPEN.PI} {$I DELETE.PI} {$I CRAND.PI} {$I WRL.PI} {$I RDL.PI} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN WRITE(' ',W.KEY); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN WRITELN; L := 0;WRITE(' ':C1+1) END; L := L+1;WRITE(X^.LNO:C3);X := X^.NEXT UNTIL X = NIL ; WRITELN END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; BEGIN WRITE(' ITEM KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; WRITE(X^.LNO:C3,' '); SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); X := X^.NEXT END UNTIL X = NIL END; {OF PRINT ALL LINES WITH KEY W.KEY} BEGIN OPENFILES; ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); WRITELN(' FILE POS ',PRESPOS.UPPER,PRESPOS.LOWER); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1;WRITELN(N:C3); {WRITE LINE NO} RECORDPOS[N] := PRESPOS; WRITELINE(2,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} FOR L := N DOWNTO 1 DO BEGIN WRITELN(' FILE POS ',RECORDPOS[L].UPPER,RECORDPOS[L].LOWER,' '); SPOS(DISKIN,RECORDPOS[L]); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(DISKOUT,LINE,NBYTES,SYSERROR,ERRORNUMBER); END; { WRITELN(OUTPUT,ID); SPOS(3,PRESPOS); READLN(INFILE,LINE);WRITELN(' STRING ',LINE); SEARCH(ROOT); END; PRINTTREE(ROOT); WHILE NOT EOF(INPUT) DO BEGIN WRITE(' SEARCH KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN PRINTWORD(WF^); PRINTLINES(WF^); END; } END. T29+ W$PROGRAM T27(INPUT,OUTPUT); TYPE ALPHA = ARRAY [1..35] OF CHAR; VAR IOCH,BYTES,ERROR : INTEGER ; BUFFER : ALPHA; FILEEND : BOOLEAN; PROCEDURE OPEN ( VAR FILENO : INTEGER ; FILENAME : ALPHA ; VAR ERRORNUMBER : INTEGER );EXTERNAL; FUNCTION ENDL ( IOCHANNEL : INTEGER ):BOOLEAN;EXTERNAL; FUNCTION ENDF ( IOCHANNEL : INTEGER ) : BOOLEAN;EXTERNAL; PROCEDURE RDLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESREAD : INTEGER ; VAR ERRORNUM : INTEGER );EXTERNAL; PROCEDURE WRLI ( IOCHANNEL : INTEGER ; BUFFER : ALPHA ; VAR NBYTESWROTE : INTEGER ; VAR ERRORNUMBER : INTEGER );EXTERNAL; BEGIN OPEN (IOCH,'FOBAR',ERROR); BYTES := 127; FILEEND := ENDF(IOCH); REPEAT BEGIN RDLI (IOCH,BUFFER,BYTES,ERROR); IF ERROR <> 6 THEN BEGIN WRLI(2,BUFFER,BYTES,ERROR); END ELSE END; UNTIL ENDF(IOCH) = TRUE END. NKOMPAR \7SEGMENT(INPUT,OUTPUT); TYPE COMPARATIVE = (LESS,GREATER,EQUAL); CHARACTERS = ARRAY[1..10] OF CHAR; FUNCTION KOMPAR ( A : CHARACTERS; B : CHARACTERS; NSTART : INTEGER;NEND : INTEGER) : COMPARATIVE; VAR I : INTEGER; T : COMPARATIVE; BEGIN T := EQUAL; I := NSTART; WHILE ( ( T = EQUAL ) AND ( I <= NEND ) ) DO BEGIN WRITELN(' ',A[I],' ',B[I]); BEGIN IF A[I] > B[I] THEN T := GREATER ELSE IF A[I] < B[I] THEN T := LESS END; I := I+1 END; KOMPAR := T END. T100( !! +PROGRAM T100(INPUT,OUTPUT); BEGIN END. TTTPA  6PROGRAM TT; TYPE NODE = RECORD X,Y : REAL;POINT : INTEGER END; LINKS = RECORD FROMNODE,TONODE,ATTRIBUTES : INTEGER END; VAR NEWLINK : LINKS; LINK : ARRAY[1..50] OF LINKS; I : INTEGER; BEGIN WHILE ((LINK[I-1].ATTRIBUTES > NEWLINK.ATTRIBUTES) AND (LINK[I-1].TONODE > NEWLINK.TONODE) AND (LINK[I-1].FROMNODE > NEWLINK.FROMNODE)) DO BEGIN I := I-1; LINK[I+1] := LINK[I] END END. RMCT  CHATR R.PX 0 DELETE/V R.PA XFER R R.PA/R PASINTERP PASCALO/S/V/A/L R CHATR R.PX *WP 1978EMP05 f E 552 185.93 E 568 343.38 E 569 304.73 E 567 596.15 E 566 465.02 E 565 948.24 E 564 985.99 E 563 991.80 E 557 473.57 E 558 601.00 E 560 265.01 E 555 991.16 E 554 927.77 E 556 852.47 W 562 4255.04 E 561 297.08 E 559 688.29 WRSPIr PROCEDURE WRITESEQUENTIAL( CHANNEL : INTEGER; BUFFER : LINESTRING; VAR BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7487; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; TEMPPOINTER : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(TEMPPOINTER); TEMPPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.LPTR := TEMPPOINTER; R0.INT := R0.INT+2; R1.INT := BYTESOUT; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITESEQUENTIAL = ',R2.INT); ERR := ERROR; BYTESOUT := R1.INT; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE SEQUENTIAL} TEST23 .PROGRAM CROSSREF (INPUT,OUTPUT); CONST STRSIZE = 133; C1 = 10; {LENGTH OF WORDS} C2 = 8; {NUMBERS PER LINE} C3 = 6; {DIGITS PER NUMBER} C4 = 9999; {MAXIMUM LINE NO} TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..132] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; DPINTEGER = RECORD UPPER : INTEGER; LOWER : INTEGER END; {DOUBLE PRECISION INTEGER} {CROSSREF TYPES} WORDREF = ^WORD; ITEMREF = ^ITEM; WORD = RECORD KEY : INTEGER; FIRST,LAST : ITEMREF; LEFT,RIGHT : WORDREF END; ITEM = PACKED RECORD LNO : 0..C4;{LINE NUMBER} POS : DPINTEGER;{FILE POSITION} NEXT : ITEMREF {POINTER TO NEXT} END; VAR CH : CHAR; PCONSOLE,PINDEX,PTREE : BOOLEAN; ROOT : WORDREF; WF : WORDREF; {POINTER TO WORD FOUND IF ID = KEY} K,K1 : INTEGER; N : INTEGER; (*CURRENT LINE NUMBER*) PRESPOS : DPINTEGER; {PRESENT FILE POSITION BEFORE READ} ID : INTEGER; LINE : BIGSTR; SYSERROR: BOOLEAN; {SYSTEM ERROR IF TRUE} NBYTES : INTEGER; {NO OF BYTES READ OR WRITTEN BY SYSTEM CALL} ERRORNUMBER : INTEGER; {SYSTEM ERROR NUMBER} DISKIN : INTEGER; {INPUT DATA FILE} DISKOUT : TEXT ; {OUTPUT PASCAL FILE} FIELDNUMBER : INTEGER; {$I GCHN.PI} {$I OPEN.BU} {$I DELETE.BU} {$I CRAND.BU} {$I WRL.BU} {$I RDL.BU} {$I OPENFILES.PI} {$I GPOS.PI} {$I SPOS.PI} {$I GETINTEGER.BU} {$I GETFIELDINT.BU} {$I GETREAL.BU} {$I REALFIELD.BU} PROCEDURE SEARCH (VAR W1:WORDREF); VAR W:WORDREF;X:ITEMREF; BEGIN W := W1; IF W =NIL THEN BEGIN NEW(W);NEW(X); WITH W^ DO BEGIN KEY := ID;LEFT := NIL;RIGHT := NIL; FIRST := X;LAST := X END; X^.LNO := N;X^.NEXT := NIL; W1 :=W; X^.POS := PRESPOS; {SAVE FILE POSITION} END ELSE IF ID < W^.KEY THEN SEARCH(W^.LEFT) ELSE IF ID > W^.KEY THEN SEARCH(W^.RIGHT) ELSE BEGIN NEW(X);X^.LNO := N;X^.NEXT := NIL; X^.POS := PRESPOS; {SAVE FILE POSITION} W^.LAST^.NEXT := X;W^.LAST := X END END; (*SEARCH*) PROCEDURE PRINTRECORDS(W : WORD); VAR X : ITEMREF; BEGIN X := W.FIRST; REPEAT BEGIN SPOS(DISKIN,X^.POS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); WRITE(' ',W.KEY,' ',X^.LNO : C3,' ',LINE); WRITE(DISKOUT,' ',W.KEY,' ',X^.LNO : C3,' ',LINE); X := X^.NEXT; END; UNTIL X = NIL; END; {PRINT IN ORDER} PROCEDURE PRINTINORDER(W : WORDREF); BEGIN IF W<> NIL THEN BEGIN PRINTINORDER(W^.LEFT); PRINTRECORDS(W^);PRINTINORDER(W^.RIGHT); END; END; PROCEDURE PRINTWORD(W : WORD); VAR L:INTEGER;X:ITEMREF; BEGIN IF PCONSOLE THEN WRITE(' ',W.KEY : C1); WRITE(DISKOUT,' ',W.KEY : C1); X := W.FIRST;L := 0; REPEAT IF L = C2 THEN BEGIN L := 0; IF PCONSOLE THEN BEGIN WRITELN;WRITE(' ':C1+1); END; WRITELN(DISKOUT);WRITE(DISKOUT,' ':C1+1); END; L := L+1; IF PCONSOLE THEN WRITE(' ',X^.LNO :C3); WRITE(DISKOUT,X^.LNO : C3); X := X^.NEXT; UNTIL X = NIL ; IF PCONSOLE THEN BEGIN WRITELN;WRITELN;END; WRITELN(DISKOUT); WRITELN(DISKOUT) END; (*END OF PRINTWORD*) PROCEDURE PRINTTREE(W : WORDREF); BEGIN IF W <> NIL THEN BEGIN PRINTTREE(W^.LEFT); PRINTWORD(W^);PRINTTREE(W^.RIGHT) END END; (*END OF PRINTTREE*) PROCEDURE FIND(W : WORDREF); BEGIN IF W = NIL THEN BEGIN WRITELN(' KEY NOT FOUND ',ID); WF := NIL END ELSE IF ID < W^.KEY THEN FIND (W^.LEFT) ELSE IF ID > W^.KEY THEN FIND (W^.RIGHT) ELSE {FOUND MATCH} WF := W END; {FIND} PROCEDURE PRINTLINES(W : WORD); VAR L : INTEGER; X : ITEMREF; AMOUNT,CHECK : REAL; BEGIN AMOUNT := 0.0; IF PCONSOLE THEN WRITELN(' SEARCH KEY ',W.KEY); WRITELN(DISKOUT,' SEARCH KEY ',W.KEY); X := W.FIRST;L := 0; REPEAT BEGIN L := L+1; SPOS(DISKIN,X^.POS);  READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF PCONSOLE THEN WRITE(' ',X^.LNO:C3,' ',LINE); WRITE(DISKOUT,' ',X^.LNO:C3,' ',LINE); CHECK := REALFIELD(LINE,3); AMOUNT := AMOUNT+CHECK; X := X^.NEXT END UNTIL X = NIL; IF PCONSOLE THEN WRITELN(' AMOUNT = ',AMOUNT : 10); WRITELN(DISKOUT,' AMOUNT = ',AMOUNT : 10); END; {OF PRINT ALL LINES WITH KEY W.KEY} FUNCTION QUESTION : BOOLEAN; BEGIN REPEAT WRITE(' ANSWER Y OR N '); READLN(CH) UNTIL (CH = 'Y') OR (CH = 'N'); QUESTION := CH = 'Y'; END; BEGIN OPENFILES; WRITELN(' WANT OUTPUT TO $TTO CONSOLE? '); PCONSOLE := QUESTION; WRITELN(' WANT INDEX PRINTED? '); PINDEX := QUESTION; WRITELN(' WANT TREEED RECORDS PRINTED IN ORDER? '); PINDEX := QUESTION; WRITE(' SORT ON FILEN NO. 2,3,4,5? '); READLN(FIELDNUMBER); ROOT := NIL;N := 0; REPEAT BEGIN GPOS(DISKIN,PRESPOS); READLINE(DISKIN,LINE,NBYTES,SYSERROR,ERRORNUMBER); IF NOT SYSERROR THEN BEGIN N := N+1; IF PCONSOLE THEN WRITE(' ',N : C3,' ',LINE); WRITE(DISKOUT,' ',N : C3,' ',LINE); CASE LINE[1] OF 'C','E','W' : BEGIN ID := GETFIELDINT(LINE,FIELDNUMBER); SEARCH(ROOT); END; END; END; END; UNTIL ERRORNUMBER = 6; {END OF FILE} IF PTREE THEN PRINTTREE(ROOT); WRITELN(' MEMORY LEFT = ',MEMAVAIL); WHILE NOT EOF(INPUT) DO BEGIN IF PINDEX THEN PRINTINORDER(ROOT); WRITE(' SEARCH KEY =');READLN(ID); FIND(ROOT); IF WF <> NIL THEN BEGIN PRINTWORD(WF^); PRINTLINES(WF^); END; END; END. TEST10 *qPROGRAM TEST(INPUT,OUTPUT); CONST STRSIZE = 15; TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..STRSIZE] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR LINE : LINESTRING; I,J : INTEGER; NBYTES : INTEGER; FILENAME : LINESTRING; DATA :LINESTRING; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; { $I CRAND.PI} {$I RDL.PI} {$I WRL.PI } BEGIN WRITELN('ENTER DATA'); READLINE(0,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,DATA,NBYTES,SYSERROR,ERRORNUMBER); DATA.STR[NBYTES] := CHR(0); CRAND(DATA,SYSERROR,ERRORNUMBER); END. PASINTERPSV ")ld "f  $Q(D(8)(*]H* noz(D("0IS[0i. !,MM+!" " """% C¾¾ˡ ¾(( ڢ"ڢDڢٞ#ֲD(ڢ"ڢ?ڢٞ#ֲ?(!p' ۢ%"ڞ#Ś!,)Iۢ  ȡ&ܢ?ܢ ؞#á ȡEܢܢڢܢڢڢ؞#áBs *ɡM 0 á޿ ھȡ ھޕ¾áL d+'Páئ2'PPɄPR Module  Segment P+?Q+?R+??  , Procedure ! , Offset +02),ؾȡ&¾azȄ aAá#:%ֲb%b  b   b ȡ+ b¾؞#ڡ á'v-?F PASINTERP.ER? 2.B ERMESƀƀ ƀ 'V*ڢ ˡ2ɍáb-. PASINTERP.ER bB-šibš"b̀ƀbƀƀƀb̀ƀbƀFile: "ƀ-ƀ"ƀƀ,ƀš.b̀ƀbƀƀƀƀƀ-̀ʀˡʀ ٚʀ ڞ#*|l ޢޢؚޢٚݟˡ-ڢF!۞#!@//0 H CLIFILE'( "" "d""')-!*+,IǴ ȡ ʁI!ʁáֲ>)'> FCOM.CM COM.CM  ʁƀ!ʁȡʁ ʁá Há ʁƀ!ʁƀ!šƀ%ƀ.PXƀƀÍ"ƀ́Ɓƀ!Ɓ.PX$Ɓ!ƀƀ^ƀƀƀʁzʁ{ ō*ʁƁ'20 $ƀáʁá1ʀȡDʁ'ۤ́ƀۤ́ʁʁʁʁʁښʁʁá'́ʁ́ʁʁʁʁʁ!ʁ&ʁʁ)" :1ȡֲá(2ƀƀƀCLIFILEƁ)ʁƀFCOM.CMƀCOM.CMƀƀ2ƀ2,ˡUƀ ƀƀ 2ƀʁʁ-ֶ,2,,ƀeܢ ܢjܢlݢٚݢܢFݢݣ šܢ,ܢnڂ4ܢxܢzܢtܢrܢvܢ6 ܢp ܢ,ܢnݢܢ~ݢ ܣ7ۡ ܢ0,ظ,أ5(/پ!ġآF!!&/٪!%آF!آFNá//ݢ ݣ57ٹ$& .ݢFINPUTݢFOUTPUTDݢzݢFINPUT ݢFD!*ˡ/ݢF?!ظ*ݢFݢFآzݢ.ٚá=ߢߢޣ ڞ# Äߢߢޣ ڞ#0ߢ*"ڞ#0ߢ?ߢޣ ߢڞ# ˡ0'VPI  ܓ áܡ ݢF! //áߢڞ#ݣá#ߢڞ#á ݢrݣ8ݢrߢڞ#ݢjá ݢh$ݢh$ݣˡ& $أ5xۢ ڶ*˄*ۣۣ#ۢjۢlۢxۢvݢ?ݢ ڞ#0ݢݢܣ ڞ#٢ ٢l٣4٣á٢v٢x٢r٢t4$ۢ ۣ8č'/ۢrٚۢڞ#ۢl> ٣;٣8٣٣á!٣6 !٣< ۢ ۣ5)/ۣ=)ֶ*#ݢ?ݢݢݢ ٞ#ܢ ;ڡ2ۣáۢ~ܢ ۢ~ܢ ۢl0ۢh3ڢ ڣ6 /ڣáڣ9ڣ:šJڣ?3ڢrڢtڣ=,ܢܢڢ~¾ٞ#0 áܢ ڢ|ڢ~ڣ9¾ڢrڣ9ڢlڣ>Úڣ>ڢ6ڣ8ڢpڣ>ڢ| ڢxڢxڢl3ڣ6 ڢrڣ9 &أ9أ:šrڢ ڣ5)/ڣ=)ֶ*#ܢܢ ܢ?ٞ#ۢ áڢ~ۢ 0ڢtڢrأá;&آvأ6 /&.٣;٣6٣Ä&٢v$! &آv !أ>آv#/!ڿܣ<ܣ>&ܣ<&3 J!ܣ> á&ܣ>+ܣ>-Í ܣ>-&ܣ> 0ܣ>&ۡڡ/5\ t !ݣ> á&ݣ>+ݣ>-Í ݣ>-&ݣ>ټ ݣ>0&ݣ>.áD&ݣ>$Kš/ټݣ>0ܞ$ݣ>ݣ>eݣ>EÍړ>ݢv ڡ܀Kš/ɡ ټ܀$ ټܞ$ڡ/ۡټ ڢ ڢhܢܢ ڣڢ~ڣ9ܢ? ܢܢ?ٞ#0V4أ5)/ڢ ڣájڢ~ڣ9ڣ>ڢrڣ9ڣ9DŽڣ>7ۢ ڣ94ۢ ڢrڣ>áڢ~ܢܢ?ٞ# ڣ=)/ڣ8ڣ9ȡڢlڣ8ڣ9á ڢpڣ84ڢrڣ9 šآ| آ|ٚ (ڢ ڣá,ڣ9šۢ ڣ94ۢ ڢrٶ*á) J#š ەȡآ|¾ á @پȡš ەڮȡآ|¾ á Lآ| #آ| ##/ ١ True False*" ɡ ـȡ-32768 c-ġIٲ"ܤ00ńބݿ0ˡ ٲ"ܤáɡ`  Bd  ġ š Kš/  ڞ$5Jɡ šKš/  ڞ$5M 5ֶ6خȡ: 06  ي   á8 N7 $ $ɍKōKō$/ ݡ  @ܞ$  A5ޕܕȡ 6á-6 67.6ޮġ06á7ɡ 5 @$5-6 67.67E6ȡ-6+6 ɡ06 z٦ńۂؾȄ۞ۿ+/8پؾȡؾپپؾ+/2ھšS¾پھ¾ȡ3ܕž šھگ:f1H x \ D d l " >Td `r$ PHZ   VH b Bxn7  8X6H**+ 8I8)6X6H**+ 8JR8)6H7(**+ 8I878)60-P-("H"(( < n0-P-("H" ;xV'|-vC0uYg^oM.86420 (33 >x#6E[PR]........RRRRRRRRUUUUUUUUUUUUUUUU12(T(]) X(*2(T(] X(*P(T(] X(*$((B]0(" X(*B]1 /2(T(] X(* /2(T(] X(* /P(T(] X(* /$((B] W(* W(*(T(](T(] W(*2 X(*"(D(] W(*2 X(*P(T(] W(*2 X(*$((B]$((4((ӐB]4((Ӑ2(T(]1 4((Ӑ"(D(] W(*H*P7@80(P( " n- 8078("CP8)](L( W(*] W(*4((ӐH*P7@80(P( " n- 8078("CO W(*0(P(<((H*"CO4((Ґ"0I(D(]$((4((8IғH**JO$((/<((H*2(J(*(\(8)]H* n X(* $((4(((T(]H*P4(( p8)4(((T((*O X(*4(("(D(] X(*H*4((<((Ӑ"CO X(*H*<((4(( W(*H*<((4((P7+ 0I@07 nOP7# 0I@07X7H88IҒ*J@(887O$((0H4((ӐB] W(*H*,(( q<(((\((* W(*H* p8j#8k+(D(O$((4((Ӑ2Ґ(T(]H*,(($((<((ҒP3SO$((Z(D(]$(((D(]$((4(( $((4(((T(]$((4((J JZJ[(T(]H* n,H*4((,((/ J r[  rZ  K/(L(O nH*4((,((J s(L(O0("(D(H*4((/8(+J s8(JCO n n+$((4(((T(]$((4(((T(]$((P(D(]$(((D(]0(]]0(]]0(":ZB8)]0("(D(] X(*4(((T(]$((<((4((.J(T(8)]H* n$((4((Q(D(]$((4((P(T(]$((4((/P(D(]$((4((JP(D(]$((4((JQ(D(]$((4((/Q(D(] P0@0A0B0C W(*9@R}G9KQgRRRR X(*H* K@6<((4((Ӑ#* L6K X(*H* L@6<((4((Ӑ#* K6L$((8H8-CP(\(H*9#(D(8(3;X7Ґ" 8I@87P7+ 0I@07  FF D@6H6X7Ґ" 8I@87P7+ 0I@07&$68(3;X7Ґ" 8I@87P7+ 0I@07 P @ B<((4((,((KL X(*H*9+(L(8(3; @6P7# 0I@07X7Ґ* 8I@876 W(*4(( ]=H*8("CX($(('H*0(P7@80(P( " n- 8078((D(/ "C,((CO$(((D((D(H*<((4(((T(O K n!8 nP6X7(G8k#(786(D(86(G8j+(6(D( 7(D(O$((0(P(H*** G+8l#P8)B(*] z H6"+J6P(O lH6"+J6 ]H6"+B690R?RO E H6"+6Q,((0(P(BO / H6"+6P  H6"+6Q  H6"+6QX6H*8(+3  8(+6 K8(+SK(D(0(P7@80(P( " n- 8078("C,((C?? @ @0(P(" A8)]0(P("B"B @" 48)]0("PB]0("PB]0( %P(8)]0( !P(8)]0( P(8)]0( P(8)]0("B"B P(8)]H*0( P(O[|p!(D(!(D(0("K  P(8)]0( P(8)]@4((J!  ! "(D("(D(]K nLAABdC>D'EjE$FG_^H;I%@JHvJԤKLZM8N#O4WO jP"QVuR65S!T-TUYPVRW3X OY1YZ~7[N\1M]Л^Ba^_x^`K;Ka/bc)c]cdrYeGf,ogh'h)imyjDl9k*ãlFmlm 8nhgoA@p({q}MqrO"scut>:u&vOvwx^y;Xz%{.{D| }Z~8#_0+80(D((L((T((\(8,(\(8(X0] W(* W(*H*(\(80K8>PX6#/.PC#  n ((0<0- n ((000C0(X("C"86#(0H00CK863P,* J$((  P  0,"P+ 0@/P8) W(*H*00J0>*H, W(*H*00J(+0-0.00(:J,+0,<,K!I""K SP+"K99 0+P,"P+"@0I8) #;80C#PCX)0+"P7@80(P( " n- 807"PH*] W(*00J0;"P+ ;@, 1"o80#PCX)2 I!"@60(6$0+"(J@680X)/ W(*@6(J$,K1͕T!7 8>P#0)(BX) 6"C8)#@,#P@0+3K 8)P+ 6  CX(H*0)(C"CX((*80#Z;PX)]$+(@ +H6,(($((0+ @"PP*$+0J  $,0I O3K(\( &<(( @"PS3PҐ"0J '0I 3PҐ"0I;(6H* n "o0+ @"PP*+H6(6#PH63K(\( <(((6 "(I,((  $(("PSO(L( @"PS; W(*S0JJ0+"P]$((]$((*.*J *(A"P]P] W(*H*1RDK0RR lg RRRRRRRRsiGIMKOQS+2Rz7YRRR4((Ӑ -PB]4((Ӑ"0- n0. n@-]$((4((Ӑ(-H-PJ < ( n H"(*] $<((C<((K<((SO  -0(0</(D(]$((P(D(]4((!!!$((<((4((/]X7H88IҒ*J@(8878)]$((<((4((/OX7Ґ* 8I@87P7@80I#C@ 807O$((<((4((JOX7Ґ* 8I@87P7@80I#C@ 807O8(+#C O#3$+KX7Ґ* 8I@87 98X7Ґ* 8I@87 ((+KX7Ґ* 8I@87 X7Ґ* 8I@87 #+C AX(O P @ A B C D0(4 8()X(X)X0CX1! C =(D()] J2H)H($,C#)  1""6"A"U nX6+8)'K;0JE'E3 @;#PUbcdX6$,0JE8+#E#P *E0; A""20C01@(@0 $6! (D((L(81X))]3X69Ɛ6X6 9 P@ @!6X7KKX8 p88Z7X7KKX8 q88Z72\2 @BB y<222\2 z @<222D2 u$222T29422 vOCXRSX6! YP3! YP2! YP4!P56 !<C 4 w# w | # w { ~ 4 w 4 w } 4 w!* !( ~ }# ! w } {! w }422P04B! BBBBB n@A @@3d@ry@o-T8BSP B]v1IfBZ,YAB>)B=1oB-\K߬u2\28304"2",C w04")J CpC!$ !" w }0404"+J BCS# w# w ~ {! w } #@4422 n@RL@*@9>N(@@@2\28304"CBCC"):!= w ~ 4 w!1 w  4 w!- w }!, w | !& w { ~ 4 w 4 w } 4 w! ! ~ }! w {! w {#D4422AA2CZ0@ k,AzXLt@DQz{5XA!TD-FAɈg)2B}D@nVC>rWB3,1AB%ݣBϱS^UCʙ43FB3,1ޅ 2\28304*uPCB!! w } +K! w |+04 w 4 w } 4 w! ! ~ }422 f T / T>6--j@A17AP6QCZQFC;(:Dpԋ0ABsMʁ]pZDx%UXl@nND'8(3S;Ӑ B@6"+6'3p8(3ӐK22 $((<((4((S(L(O hPE AP7@80(P( " n- 8078(3Ӑ!BBBB3Ӑ"3; F@6P7# 0I@07(\( -'X7H88IҒ*J@(887<((6P7# 0I@07(\( <(($(()))) ) ) 0:@Z`z8(33ӐB F@63)o9pX7Ґ" 8I@87X7H88IҒ*J@(88768(3X7Ґ" 8I@87)E3Ӑ"C"PPPC!;3#C#PPP(T(;Ӑ B@6"+64((!8(#;C8(!X(O4((Ӑ"8(;C"8( A`6 o  P  f?FQfX1,)+H6)*H7*766) !  " 9PPP9)ٮPPP)־!0!D    H-H. <H" t  " WsX6 " 96X6 " 6ېX6#  K n) 1v!!!#+1S1S1S386C86CPCKSO #X9! Y89ZP9!P " 89" *1k p<937 q<9K8!09 ZOX937+9 p893 '? OX93 ? 1 P89K1PCO@X9! YP889!P " 08" *10 p092 '? ! ZOH9X8P)! (: @:-)%%  ? % `P-Ӑ(98ge@?86X93) p893 '? 0)P893+ ? 89X6  n%/"5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`ADDRESS ?  ;PASCAL EXTERNAL FUNCTION ;TO RETURN EXTERNAL BYTE ADDRESS ;FROM TABLE OF WORD ADDRESSES ; (SUPPLIED BY USER) .TITL ADDR ;PETE GOODEVE 78:8:5 .ENT ?ADDR .EXTN XPRET,ADRTB .NREL ;FUNCTION ADDRESS(I:INDEX):ANYBYTADDR; EXTERNAL; ;FUNCTION ADDRESS(PTR:BYTADDR;I:INDEX):... ?ADDR: MOVZR# 1,1,SZR JMP P2 LDA 2,ABAS ;GET TABLE BASE GETBA: LDA 1,0,3 ;GET INDEX ADD 1,2 ;FORM ACCESSOR MOV 0,3 ;RETURN-POINTER LDA 0,0,2 ;GET WORD ADDRESS FROM TABLE COM 0,0,SZR ;RETURN NIL IF UNDEF. COMZL 0,0 ;CHANGE TO POINTER FORM NOVAL: STA 0,0,3 ;RETURN TO USER SUBZL 1,1 ;(1 WORD RETURN) XPRET ABAS: ADRTB P2: LDA 2,-1,3 ;BASE BYTE ADDR MOVZR 2,2,SZR ;-> WORD JMP GETBA MOV 0,3 SUB 0,0 ;NIL POINTER RETURNS NIL JMP NOVAL .END T39R B PROGRAM T39(INPUT,OUTPUT); CONST CURSORLEFT=8; CURSORRIGHT=14; CURSORUP=10; CURSORDOWN=11; EOS=29; EOL=28; CLEAR=15; HOME=12; TAB=9; ESC=27; CONTROLZ=26; LINEFEED=10; CARRIAGERET=13; DELETE=127; BACKSLASH=92; (*DISPLAY SIZE IS 25 LINES BY 80 COLUMNS*) NLINES=24; NCOLUMNS=80; TYPE XY = RECORD COLUMN,LINE :INTEGER END; ABSREL = (ABSOLUTE,RELATIVE); INTARRAY = ARRAY[1..20] OF INTEGER; VAR ROW,WORD,BIT,INCH,OUTCH,BYTE,ERROR,ANS,DUMMY:INTEGER; SPACE,T : INTEGER; TABS : ARRAY [1..5] OF INTEGER; TEST : BOOLEAN; PREVCURSOR,CURSOR : XY; MOVE : ABSREL; NBROTE : INTEGER; ESCF : ARRAY[1..2] OF INTEGER; PROCEDURE TBIT( BITNO : INTEGER;WORD : INTEGER;VAR VALUE : INTEGER);EXTERNAL; PROCEDURE CBIT(BITNO : INTEGER;VAR WORD : INTEGER);EXTERNAL; PROCEDURE SBIT(BITNO : INTEGER;VAR WORD : INTEGER);EXTERNAL; PROCEDURE SWAP (VAR WORD:INTEGER);EXTERNAL; PROCEDURE WRSQ(IOCH:INTEGER;VAR BUFFER:INTARRAY;NBYTES:INTEGER; VAR NBROTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE RBYTE(INCH:INTEGER;VAR BYTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE WBYTE(INCH:INTEGER;VAR BYTE:INTEGER;VAR ERROR:INTEGER);EXTERNAL; PROCEDURE CURSORMOVE (X:INTEGER;Y:INTEGER;MOVE:ABSREL); BEGIN CASE MOVE OF RELATIVE : BEGIN CURSOR.LINE:=CURSOR.LINE+Y;CURSOR.COLUMN:=CURSOR.COLUMN+X; IF CURSOR.COLUMN = 0 THEN BEGIN CURSOR.LINE := CURSOR.LINE-1; CURSOR.COLUMN:=1; END ELSE IF CURSOR.COLUMN = NCOLUMNS+1 THEN BEGIN CURSOR.COLUMN:=1; CURSOR.LINE := CURSOR.LINE+1; END; IF CURSOR.LINE<1 THEN CURSOR.LINE:=1; (*MOVE CURSOR SEND ESC F LINE COLUMN. OFFSET COORDS BY 37OCTAL (31DEC) *) ESCF[1]:=6982; (*15506 OCTAL*) ESCF[2]:=CURSOR.LINE+31; SWAP(ESCF[2]); ESCF[2]:=ESCF[2]+CURSOR.COLUMN+31; WRSQ(OUTCH,ESCF,4,NBROTE,ERROR); IF TEST THEN WRITELN(OUTPUT,' ',X,Y,CURSOR.COLUMN,CURSOR.LINE,'RELATIVE') ELSE END; ABSOLUTE : BEGIN ESCF[1] := 6982; ESCF[2] := 31+Y;CURSOR.LINE := Y; SWAP(ESCF[2]); ESCF[2] :'= ESCF[2]+31+X;CURSOR.COLUMN := X; WRSQ(OUTCH,ESCF,4,NBROTE,ERROR); IF TEST THEN WRITELN(OUTPUT,' ',X,Y,CURSOR.COLUMN,CURSOR.LINE,'ABS') ELSE END END END; PROCEDURE CLEARSCREEN; BEGIN DUMMY := CLEAR; WBYTE(OUTCH,DUMMY,ERROR) (*17 OCTAL IS A CLEAR SCREEN*) END; (*INITIALIZE THE TAB ARRAY*) PROCEDURE INITTABS; BEGIN FOR ROW := 1 TO 5 DO TABS[ROW] := 0 END; PROCEDURE TABBIT; VAR VALUE,TABSEG : INTEGER; BEGIN WRITELN(OUTPUT,' ','TABS ARE',' SET AS ','FOLLOWS'); WRITE(OUTPUT,' '); FOR ROW := 1 TO NCOLUMNS DO BEGIN WORD := ROW MOD 16;BIT := ROW-WORD*16; TABSEG := TABS[WORD];TBIT(BIT,TABSEG,VALUE); WRITELN(OUTPUT,'ROW,WORD',',BIT,TAB','SEG,VALU','E'); WRITELN(OUTPUT,ROW,WORD,BIT,TABSEG,VALUE); IF VALUE = 1 THEN WRITE(OUTPUT,'T') ELSE WRITE(OUTPUT,' '); WRITELN(OUTPUT) END END; PROCEDURE ESCFUNCTION; BEGIN PREVCURSOR:=CURSOR; CURSORMOVE(1,NLINES,ABSOLUTE); DUMMY:=27;WBYTE(OUTCH,DUMMY,ERROR); DUMMY:=77;WBYTE(OUTCH,DUMMY,ERROR); RBYTE(INCH,BYTE,ERROR); IF BYTE = 94 THEN TABBIT; CURSORMOVE(PREVCURSOR.COLUMN,PREVCURSOR.LINE,ABSOLUTE) END; BEGIN INCH:=1;OUTCH:=2; CURSOR.LINE:=1;CURSOR.COLUMN:=1; SPACE := 50;(*SPACE = 40 OCTAL*) T := 94; (*LETTER T=94 DEC*) WRITELN(OUTPUT,'ENTER 0 ','FOR NO T','ESTING OR 1 FOR '); READLN(INPUT,ANS);IF ANS = 0 THEN TEST := FALSE ELSE TEST := TRUE; CLEARSCREEN; INITTABS; REPEAT RBYTE(INCH,BYTE,ERROR); IF TEST THEN WRITELN(OUTPUT,BYTE) ELSE IF(BYTE>=32) AND (BYTE<=126) THEN BEGIN WBYTE(OUTCH,BYTE,ERROR);CURSORMOVE(1,0,RELATIVE) END ELSE CASE BYTE OF (*LEFT*) 8 : CURSORMOVE(-1,0,RELATIVE); (*DELETE*) 127 : CURSORMOVE(-1,0,RELATIVE); (*DOWN*) 10 : CURSORMOVE(0,1,RELATIVE); (*UP*) 11 : CURSORMOVE(0,-1,RELATIVE); (*HOME*) 12 : CURSORMOVE(1,1,ABSOLUTE); (*CARR RET*) 13 : BEGIN CURSORMOVE(0,1,RELATIVE);CURSORMOVE(1,CURSOR.LINE,ABSOLUTE) END; (*RIGHT*) 14 : CURSORMOVE(1,0,RELATIVE); (*CLEAR*) 15 : BEGIN CURSORMOVE(1,1,ABSOLUTE);CLEARSCREEN END; (*ESC*) 27 : ESCFUNCTION; 0,1,2,3,4,5,6,7,9,16,17,18,19,20,21,22,23, 24,25,26,28,29,30,31 : ; END (*CASE*) UNTIL (ERROR <> -1) OR (BYTE = CONTROLZ) END. CDC6000B| L< ([A=20,B+,R=1-100,I=2,S=2]) FORMATTER DIRECTIVES.) ( ******************************************************************************* PASCAL PROGRAM FORMATTER ------------------------ AUTHOR: MICHAEL N. CONDICT, L975 LEHIGH UNIVERSITY CURRENT ADDRESS: PAR CORP 228 LIBERTY PLAZA ROME, NY 13440 UPDATED: AUGUST, 1978 ***************************************************************************** ) PROGRAM FORMAT(INPUT,OUTPUT); LABEL 13; CONST ALFALENG = 10; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( MINIMUM AND MAXIMUM CHAR VALUES. ) MINCHAR = 0 MAXCHAR = 127; LASTPASCSYMBOL = 29; ( THE FOLLOWING CONSTANTS MUST ALL BE CHANGED TOGETHER, SO THAT THEIR VALUES AGREE WITH THEIR NAMES: ) BUFFERSIZE = 160; BUFFSZP1 = 161; BUFFSZM1 = 159; BUFFSZDIV10 = 16; ( ) MAXREADRIGHTCOL = 999; MAXWRITERIGHTCOL = 72; TYPE ALFA = PACKED ARRAY [1 .. ALFALENG] OF CHAR; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( SET SIZE MAY NOT ALLOW SET OF CHAR. ) CHARSET = SET OF CHAR; STATMNTTYPES = (FORWITHWHILESTATEMENT, REPEATSTATEMENT, IFSTATEMENT, CASESTATEMENT, COMPOUNDSTATEMENT, OTHERSTATEMENT); SYMBOLS = (PROGSYMBOL, COMMENT, BEGINSYMBOL, ENDSYMBOL, SEMICOLON, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, COLONSYMBOL, EQUALSYMBOL, PERIODSYMBOL, RANGE, CASESYMBOL, OTHERSYMBOL,  IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LEFTBRACKET, RIGHTBRACKET, COMMASYMBOL, LABELSYMBOL, LEFTPARENTH, RIGHTPARENTH, ALPHAOPERATOR); WIDTH = 0 ..BUFFERSIZE; MARGINS = - 100 ..BUFFERSIZE; SYMBOLSET = SET OF SYMBOLS; OPTIONSIZE = - 99 .. 99; COMMENTTEXT = ARRAY [1 .. BUFFSZDIV10] OF ALFA; SYMBOLSTRING = ARRAY [WIDTH] OF CHAR; VAR CHISEOL, NEXTCHISEOL: BOOLEAN; I: INTEGER (USED AS FOR LOOP INDEX); CHARACTER: CHAR; READCOLUMN, READRIGHTCOL: 0 .. 1000; OUTPUTCOL, WRITECOLUMN, LEFTMARGIN, ACTUALLEFTMARGIN, READLEFTCOL, WRITELEFTCOL, WRITERIGHTCOL: MARGINS; DISPLAYISON, PROCNAMESWANTED, ENDCOMMENTSWANTED, PACKERISOFF, SAVEDBUNCH, BUNCHWANTED, NOFORMATTING: BOOLEAN; LINENUMBER, INCREMENT: INTEGER; INDENTINDEX, LONGLINEINDENT, SYMBOLGAP, DECLARALIGNMENT, STATMTSEPARATION, PROCSEPARATION: OPTIONSIZE; LASTSYMBOL, SYMBOLNAME: SYMBOLS; ALPHASYMBOLS, ENDLABEL, ENDCONST, ENDTYPE, ENDVAR: SYMBOLSET; SYMBOL: SYMBOLSTRING; LENGTH: WIDTH; SYMBOLISNUMBER, LASTPROGPARTWASBODY: BOOLEAN; DIGITS, LETTERSANDDIGITS: CHARSET; OLDEST: WIDTH; CHARCOUNT: INTEGER ( COUNT OF TOTAL CHARS READ, BUT IS OFF BY BUFFERSIZE AFTER END OF FIRST BODY. IT IS IMPERATIVE THAT CHARCOUNT BE MONOTONICALLY INCREASING DURING PROCESSING OF A BODY, AND THAT IT NEVER RETURN TO A VALUE <- BUFFERSIZE, AFTER PASSING THAT POINT. THUS "DOBLOCK" MAY RESET IT AS LOW AS POSSIBLE, LIMITING THE LENGTH OF A PROCEDURE TO "MAXINT - BUFFERSIZE" CHARACTERS. ); MAIN: COMMENTTEXT; MAINNMLENGTH: WIDTH; BLANKS, ZEROES: ALFA; UNDERWRITTEN: ARRAY (WIDTH) OF RECORD CH: CHAR; CHISENDLINE: BOOLEAN INDENTAFTEREOL: MARGINS END; PASCALSYMBOL: ARRAY [1 ..LASTPASCSYMBOL] OF ALFA; PASCSYMBOLNAME: ARRAY [1 ..LASTPASCSYMBOL] OF SYMBOLS; NAMEOF: ARRAY [CHAR] OF SYMBOLS; STATEMENTTYPEOF: ARRAY [SYMBOLS] OF STATMNTTYPES; PROCEDURE CONSTANTSINITIALIZATION; BEGIN MAIN[1] := 'MAIN '; MAINNMLENGTH := 4; BLANKS *= '; ZEROES *= '0000000000'; FOR I := 0 TO BUFFSZM1 DO WITH UNWRITTEN[I] DO BEGIN CH := 'A'; CHISENDLINE := FALSE; INDENTAFTEREOL := 0 END; FOR CHARACTER := CHR(MINCHAR) TO CHR(MAXCHAR) DO NAMEOF[CHARACTER] := OTHERSYMBOL; CHARACTER := ' '; NAMEOF['('] := LEFTPARENTH; NAMEOF[')'] := RIGHTPARENTH; NAMEOF['='] := EQUALSYMBOL; NAMEOF[','] := COMMASYMBOL; NAMEOF['.'] := PERIODSYMBOL; NAMEOF['['] := LEFTBRACKT; NAMEOF[']'] := RIGHTBRACKET; NAMEOF[':'] := COLONSYMBOL; NAMEOF['<'] := EQUALSYMBOL; NAMEOF['>'] := EQUALSYMBOL; NAMEOF[';'] := SEMICOLON; PASCALSYMBOL[1] := 'PROGRAM '; PASCALSYMBOL[2] := 'BEGIN '; PASCALSYMBOL[3] := 'END '; PASCALSYMBOL[4] := 'CONST '; PASCALSYMBOL[5] := 'TYPE '; PASCALSYMBOL[6] := 'VAR '; PASCALSYMBOL[7] := 'RECORD '; PASCALSYMBOL[8] := 'CASE '; PASCALSYMBOL[9] := 'IF '; PASCALSYMBOL[10] := 'THEN '; PASCALSYMBOL[11] := 'ELSE '; PASCALSYMBOL[12] := 'DO '; PASCALSYMBOL[13] := 'OF '; PASCALSYMBOL[14] := 'FOR '; PASCALSYMBOL[15] := 'WHILE '; PASCALSYMBOL[16] := 'WITH '; PASCALSYMBOL[17] := 'REPEAT '; PASCALSYMBOL[18] := 'UNTIL '; PASCALSYMBOL[19] := 'PROCEDURE '; PASCALSYMBOL[20] := 'FUNCTION '; PASCALSYMBOL[21] := 'LABEL '; PASCALSYMBOL[22] := 'IN '; PASCALSYMBOL[23] := 'MOD '; PASCALSYMBOL[24] := 'DIV '; PASCALSYMBOL[25] := 'AND '; PASCALSYMBOL[26] := 'OR '; PASCALSYMBOL[27] := 'NOT '; PASCALSYMBOL[28] := 'ARRAY '; PASCALSYMBOL[29] := 'NOSYMBOL '; PASCSYMBOLNAME[1] := PROGSYMBOL; PASCSYMBOLNAME[2] := BEGINSYMBOL; PASCSYMBOLNAME[3] := ENDSYMBOL; PASCSYMBOLNAME[4] := CONSTSYMBOL; PASCSYMBOLNAME[5] := TYPESYMBOL; PASCSYMBOLNAME[6] := VARSYMBOL; PASCSYMBOLNAME[7] := RECORDSYMBOL; PASCSYMBOLNAME[8] := CASESYMBOL; PASCSYMBOLNAME[9] := IFSYMBOL; PASCSYMBOLNAME[10] := THENSYMBOL; PASCSYMBOLNAME[11] := ELSESYMBOL; PASCSYMBOLNAME[12] := DOSYMBOL; PASCSYMBOLNAME[13] := OFSYMBOL; PASCSYMBOLNAME[14] := PASCSYMBOLNAME[15] := WHILESYMBOL; PASCSYMBOLNAME[16] := WITHSYMBOL; PASCSYMBOLNAME[17] := REPEATSYMBOL; PASCSYMBOLNAME[18] := UNTILSYMBOL; PASCSYMBOLNAME[19] := PROCSYMBOL; PASCSYMBOLNAME[20] := FUNCSYMBOL; PASCSYMBOLNAME[21] := LABELSYMBOL; PASCSYMBOLNAME[29] := IDENTIFIER; FOR I := 22 TO 28 DO PASCSYMBOLNAME[I] := ALPHAOPERATOR; FOR SYMBOLNAME := PROGSYMBOL TO ALPHAOPERATOR DO STATEMENTTYPEOF[SYMBOLNAME] := OTHERSTATEMENT; STATEMENTTYPEOF[BEGINSYMBOL] := COMPOUNDSTATEMENT; STATEMENTTYPEOF[CASESYMBOL] := CASESTATEMENT; STATEMENTTYPEOF[IFSYMBOL] := IFSTATEMENT; STATEMENTTYPEOF[FORSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WHILESYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WITHSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[REPEATSYMBOL] := REPEATSTATEMENT; END (CONSTANTSINITIALIZATION); PROCEDURE WRITEA(CHARACTER: CHAR); VAR I: WIDTH; TESTNO: INTEGER; BEGIN CHARCOUNT := CHARCOUNT + 1; OLDEST := CHARCOUNT MOD BUFFERSIZE; WITH UNWRITTEN[OLDEST] DO BEGIN IF CHARCOUNT > BUFFSZP1 THEN BEGIN IF CHISENDLINE THEN BEGIN IF IDENTAFTEREOL < O THEN BEGIN WRITE(BLANKS: - INDENTAFTEREOL); OUTPUTCOL := OUTPUTCOL - IDENTAFTEREOL; END ELSE BEGIN IF INCREMENT < O THEN BEGIN I := WRITERIGHTCOL - OUTPUTCOL + 1; IF I > O THEN WRITE(BLANKS: I); TESTNO := LINENUMBER; I := O REPEAT TESTNO := TESTNO DIV 10; I := I + 1; UNTIL TESTNO - O; WRITE(ZEROES: (6 - I), LINENUMBER: I); LINENUMBER := LINENUMBER - INCREMENT; IF LINENUMBER > 9999 THEN LINENUMBER := LINENUMBER - 10000; WRITELN; END ELSE BEGIN WRITELN; IF INCREMENT > O THEN BEGIN WRITE(LINENUMBER: 4, ' '); LINENUMBER := LINENUMBER + INCREMENT; END END IF IDENTAFTEREOL > O THEN WRITE(BLANKS: IDENTAFTEREOL; OUTPUTCOL := IDENTAFTEREOL + 1; END; CHISENDLINE := FALSE; END (IF CHISENDLINE) ELSE BEGIN WRITE(CH); OUTPUTCOL := OUTPUTCOL +1; END (ELSE); END (IF CHARCOUNT > ); CH := CHARACTER; WRITECOLUMN := WRITECOLUMN +1; END (WITH); END (WRITEA); PROCEDURE FLUSHUNWRITTENBUFFER; BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IDENTAFTEREOL := O; END; WRITECOLUMN := O; FOR I := O TO BUFFSZM1 DO WRITEA(' '); END *(FLUSHUNWRITTENBUFFER)*; PROCEDURE STARTNEWLINEANDINDENT; BEGIN IF PACKERISOFF AND DISPLAYISON THEN BEGIN WRITEA(' '); LASTSYMBOL := PERIODSYMBOL; WITH UNWRITTEN [OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL + LEFTMARGIN - 1; END; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN; END *(IF PACKERISOFF)*; END *(STARTNEWLINEANDINDENT)*; PROCEDURE READACHARACTER; BEGIN IF READCOLUMN > READRIGHTCOL THEN BEGIN IF READRIGHTCOL < MAXREADRIGHTCOL THEN BEGIN NEXTCHISEOL := TRUE; READLN END ELSE READCOLUMN := 2; END ELSE IF READCOLUMN = 1 THEN WHILE READCOLUMN < READLEFTCOL DO BEGIN IF EOLN(INPUT) THEN READCOLUMN := 1 ELSE BEGIN READCOLUMN := READCOLUMN + 1; GET(INPUT) END END; IF NEXTCHISEOL THEN BEGIN CHARACTER := ''; NEXTCHISEOL := FALSE; CHISEOL := TRUE; READCOLUMN := 1; IF NOFORMATTING THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL - 1; END WRITECOLUMN := WRITELEFTCOL; END END ELSE IF NOT EOF(INPUT) THEN BEGIN CHARACTER := INPUT ^; READCOLUMN := READCOLUMN +1; NEXTCHISEOL := EOLN(INPUT); GET(INPUT); CHISEOL := FALSE; IF NOFORMATTING THEN WRITEA(CHARACTER); END ELSE BEGIN FLUSHUNWRITTENBUFFER; GOTO 13 END END *(READACHARACTER)*; PROCEDURE WRITESYMBOL; VAR I: WIDTH; NUMBER BLANKSTOWRITE: OPTIONSIZE; BEGIN IF DISPLAYISON THEN BEGIN NUMBERBLANKSTOWRITE := SYMBOLGAP; IF (LASTSYMBOL IN [LEFTPARENTH,LEFTBRACKET,PERIODSYMBOL]) OR (SYMBOLNAME IN [SEMICOLON, RIGHTPARENTH,RIGHTBRACKET, COMMASYMBOL, PERIODSYMBOL, COLONSYMBOL]) OR (SYMBOLNAME IN [LEFTBRACKET, LEFTPARENTH]) AND (LASTSYMBOL = IDENTIFIER) THEN NUMBERBLANKSTOWRITE := O ELSE IF (SYMBOLNAME IN ALPHASYMBOLS) AND (LASTSYMBOL IN ALPHASYMBOLS) THEN IF WRITECOLUMN <= WRITERIGHTCOL THEN BEGIN WRITEA(' '); NUMBERBLANKSTOWRITE := SYMBOLGAP -1; END; IF WRITECOLUMN + LENGTH + NUMBERBLANKSTOWRITE -1> WRITERIGHTCOL THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IF PACKERISOFF THEN BEGIN IF WRITELEFTCOL + LEFTMARGIN + LONGLINEINDENT + LENGTH -1> WRITERIGHTCOL THEN LENGTH := 10; INDENTAFTEREOL := WRITELEFTCOL -1 + LEFTMARGIN + LONGLINEINDENT; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN + LONGLINE INDENT; END ELSE BEGIN IFLENGTH > WRITERIGHTCOL - WRITELEFTCOL + 1; THEN LENGTH := WRITERIGHT COL - WRITELEFTCOL + 1; INDENTAFTEREOL := WRITELEFTCOL - 1; WRITECOLUMN := WRITELEFTCOL; END; END *(WITH)*; END ELSE FOR I := 1 TO NUMBERBLANKSTOWRITE DO WRITEA(' '); FOR I := 1 TO LENGTH DO WRITEA(SYMBOL[I]); END *(IF DISPLAYISON)*; LASTSYMBOL := SYMBOLNAME; END *(WRITESYMBOL)*; PROCEDURE COPYACHARACTER; BEGIN IF DISPLAYISON THEN BEGIN IF WRITECOLUMN > WRITERIGHTCOL THEN BEGIN WHILE (CHARACTER = ' ') AND NOT CHISEOL DO READACHARACTER; IF NOT CHISEOL THEN STARTNEWLINEANDINDENT; END; IF CHISEOL THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END ELSE WRITEA(CHARACTER); END; READACHARACTER END *(COPYACHARACTER)*; PROCEDURE DOFORMATTERDIRECTIVES; CONST INVALID = - 1; TYPE PARAMCOUNT = 1 .. 2; PARAMS = ARRAY [PARAMCOUNT] OF INTEGER; VAR SPECIFICATION: PARAMS; FORMATOPTION: CHAR; PREVDISPLAY, PREVNOFORMATTING: BOOLEAN; ENDDIRECTV: CHARSET; PROCEDURE READIN(N: PARAMCOUNT; VAR SPCIFICATION: PARAMS); VAR I: PARAMCOUNT; BEGIN FOR I := 1 TO N DO BEGIN WHILE NOT (CHARACTER IN (DIGITS + ENDDIRECTV)) DO COPYACHARACTER; SPECIFICATION[I] := O; IF NOT (CHARACTER IN ENDDIRECTV) THEN REPEAT SPECIFICATION [I] := 10 * SPECIFICATION[I] + ORD(CHARACTER) - ORD('O'); COPYACHARACTER; UNTIL NOT (CHARACTER IN DIGITS) ELSE SPECIFICATION[I] := INVALID; END *(FOR)*; END *(READIN)*; BEGIN *(DOFORMATTERDIRECTIVES)* ENDDIRECTV := ['*', ']']; REPEAT IF CHARACTER IN ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I', 'L', 'N', 'P', 'R', 'S', 'W'] THEN BEGIN FORMATOPTION := CHARACTER; CASE FORMATOPTION OF 'A', 'E', 'I', 'G', 'P', 'L', 'S': BEGIN READIN(1, SPECIFICATION); IF (SPECIFICATION[1] 1; ENDCOMMENTSWANTED := ODD(SPECIFICATION[1]); END 'G' : SYMBOLGAP := SPECIFICATION[1]; 'I' : INDENTINDEX := SPECIFICATION[1]; 'L' : LONGLINEINDE***ECIFICATION[1]; 'P' : PROCSEPARATION := SPECIFICATION[1]; 'S' : STATMTSEPARATION := SPCIFICATION[1] END *(CASE)*; END *(SINGLE PARAMETERS)*; 'W', 'R', 'N': BEGIN READIN(2, SPECIFICATION); IF SPECIFICATION[2] <> INVALID THEN CASE FORMATOPTION OF 'W': IF SPECIFICATION[1] > O) AND SPECIFICATION[2] < BUFFERSIZE -2) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8) THEN BEGIN WRITELEFTCOL := SPECIFICATION[1]; WRITERIGHTCOL := SPECIFICATION[2]; END 'R': IF (SPECIFICATION[1] > O) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8 THEN BEGIN READLEFTCOL := SPECIFICATION[1]; READRIGHTCOL := SPECIFICATION[2]; END 'N': BEGIN LINENUMBER := SPECIFICATION[1]; INCREMENT := SPECIFICATION[2]; WHILE NOT (CHARACTER IN (['<'] + ENDDIRECTV)) AND (CHARACTER<> '>') DO COPYACHARACTER; IF CHARACTER = '>' THEN INCREMENT := - INCREMENT END END *(CASE)*; END *(DOUBLE PARAMETERS)*; 'B', 'C', 'D', 'F': BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN (['+', '-'] + ENDDIRECTV); IF CHARACTER IN ['+', '-'] THEN CASE FORMATOPTION OF 'B': IF DISPLAYISON THEN BUNCHWANTED := CHARACTER = '+'; 'C': PACKERISOFF := CHARACTER = '-'; 'D': BEGIN PREVDISPLAY := DISPLAYISON; DISPLAYISON := CHARACTER = '+'; IF PREVDISPLAY AND NOT DISPLAYISON THEN BEGIN WRITEA('*'); WRITEA(')'); SAVEDBUNCH := BUNCHWANTED; BUNCHWANTED := FALSE; END ELSE IF NOT PREVDISPLAY AND DISPLAYISON THEN BEGIN STARTNEWLINEANDINDENT; WRITEA('('); WRITEA'_('*'); BUNCHWANTED := SAVEDBUNCH; END *(IF NOT PREV)*; END *('D':)*; 'F': BEGIN PREVNOFORMATTING := NOFORMATTING; NOFORMATTING := CHARACTER = '-'; DISPLAYISON := NOT NOFORMATTING IF PREVNOFORMATTING AND NOT NOFORMATTING THEN READACHARACTER; IF NOT PREVNOFORMATTING AND NOFORMATTING THEN WRITEA('-'); END; END *(CASE)*; END *(BOOLEAN PARAMETERS)* END *(CASE)*; END *(THEN)* ELSE IF NOT (CHARACTER IN ENDDIRECTV) THEN COPYACHARACTER; UNTIL CHARACTER IN ENDDIRECTV; IF (CHARACTER = ']') THEN COPYACHARACTER; END *(DOFORMATTERDIRECTIVES)*; PROCEDURE READSYMBOL; CONST READNEXTCH = TRUE; DONTREADNEXTCH = FALSE; VAR TESTSYMBOL: ALFA; CHARNUMBER: WIDTH; I: WIDTH; PROCEDURE SKIPCOMMENT; BEGIN REPEAT WHILE CHARACTER <> '*' DO READACHARACTER; READACHARACTER UNTIL CHARACTER = ')'; READACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL END *(SKIPCOMMENT)*; PROCEDURE DOCOMMENT; VAR I: OPTIONSIZE; PROCEDURE COMPILERDIRECTIVES; BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN ['[', '*'] END *(COMPILERDIRECTIVES)*; BEGIN *(DOCOMMENT)* BEGIN IF LASTSYMBOL IN [COMMENT, SEMICOLON] THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END; WRITESYMBOL; IF CHARACTER = '$' THEN COMPILERDIRECTIVES; IF CHARACTER = '[' THEN DOFORMATTERDIRECTIVES; REPEAT WHILE CHARACTER <> '*' DO COPYACHARACTER; COPYACHARACTER; UNTIL CHARACTER = ')'; COPYACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL; END; END *(DOCOMMENT)*; PROCEDURE CHECKFOR(SECONDCHAR: CHAR; TWOCHARSYMBOL: SYMBOLS; READALLOWED: BOOLEAN); BEGIN IF READALLOWED THEN BEGIN LENGTH := 1; SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; READACHARACTER; END; IF CHARACTER = SECONDCHAR THEN BEGIN SYMBOL[2] := CHARACTER; LENGTH := 2; SYMBOLNAME := TWOCHARSYMBOL; READACHARACTER; IF (NOT PACKERISOFF) AND (SYMBOLNAME = COMMENT) THEN LENGTH := O END END *(CHECKFOR)*; BEGIN *(READSYMBOL)* IF (CHARACTER IN ['A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K','L','M','N','O','P','Q','R','S','T','U','V','W', 'X','Y','Z','0' ..'9','','(', '.', ':'. '''', '<', '>']) THEN CASE CHARACTER OF '(': BEGIN CHECKFOR('*', COMMENT, READNEXTCH); IF (SYMBOLNAME = COMMENT) AND PACKERISOFF THEN DOCOMMENT ELSE IF SYMBOLNAME = COMMENT THEN SKIPCOMMENT; END; 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': BEGIN CHARNUMBER := 1; SYMBOLISNUMBER := FALSE; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN LETTERSANDDIGITS); LENGTH := CHARNUMBER -1; FOR CHARNUMBER := CHARNUMBER TO ALFALENG DO SYMBOL[CHARNUMBER] := ''; PACK(SYMBOL, 1, TESTSYMBOL); I := 1; PASCALSYMBOL[LASTPASCSYMBOL- := TESTSYMBOL; WHILE PASCALSYMBOL[I] <> TESTSYMBOL DO I := I + 1; SYMBOLNAME := PASCSYMBOLNAME[I]; END *(LETTER)*; '0', '1', '2', '3', '4', '5','6', '7', '8', '9': BEGIN SYMBOLISNUMBER := TRUE; CHARNUMBER := 1; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS + ['.']); IF CHARACTER IN 1'B', 'E'] THEN BEGIN SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1; IF CHARACTER IN DIGITS + ['+', '-'] THEN REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS) END LENGTH := CHARNUMBER - 1; SYMBOLNAME := IDENTIFIER; END *(NUMBER)*; '': BEGIN REPEAT READACHARACTER UNTIL CHARACTER <> ''; READSYMBOL END; '>', ':': CHECKFOR('=', OTHERSYMBOL, READNEXTCH): '<': BEGIN CHECKFOR('=', OTHERSYMBOL, READNEXTCH); IF SYMBOLNAME <> OTHERSYMBOL THEN CHECKFOR('>', OTHERSYMBOL, DONTREADNEXTCH); END '.': IF LASTSYMBOL <> ENDSYMBOL THEN CHECKFOR('.', RANGE, READNEXTCH) ELSE SYMBOLNAME := PERIODSYMBOL; '''': BEGIN CHARNUMBER := 1; REPEAT REPEAT SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER +1; READACHARACTER; UNTIL CHARACTER = ''''; SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER + 1; READACHARACTER; UNTIL CHARACTER <>''''; LENGTH := CHARNUMBER -1; SYMBOLNAME := OTHERSYMBOL; IF LENGTH > WRITERIFHTCOL - WRITELEFTCOL +1 THEN BEGIN FLUSHUNWRITTENBUFFER; WRITELN; WRITELN('***STRING TOO LONG.'); GOTO 13 END; END *(STRING)* END *(CASE)* ELSE BEGIN SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; LENGTH := 1; READACHARACTER END END *(READSYMBOL)*; PROCEDURE CHANGEMARGINTO(NEWLEFTMARGIN: MARGINS); VAR INDENTEDLEFTMARGIN: MARGINS; BEGIN ACTUALLEFTMARGIN := NEWLEFTMARGIN; LEFTMARGIN := NEWLEFTMARGIN; IF LEFTMARGIN < O THEN LEFTMARGIN := O ELSE BEGIN INDENTEDLEFTMARGIN := WRITERIGHTCOL - 9 - LONGLINEINDENT; IF LEFTMARGIN > INDENTEDLEFTMARGIN THEN LEFTMARGIN := IDENTEDLEFTMARGIN END END *(CHANGEMARGINTO)*; PROCEDURE DODECLARATIONUNTIL(ENDDECLARATION: SYMBOLSET); PROCEDURE DOPARANTHESES; VAR SAVEDLGLNID: OPTIONSIZE; BEGIN SAVEDLGLNID := LONGLINEINDENT; IF DECLARALIGNMENT >O THEN BEGIN LONGLINEINDENT := WRITECOLUMN + SYMBOLGAP +1 - LEFTMARGIN - WRITELEFTCOL; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; END ELSE BEGIN LONGLINEINDENT := 1; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN = INDENTINDEX); END *(ELSE)*; LONGLINEINDENT := SAVELGLNID; END *(DOPARENTHESES)*; PROCEDURE DOFIELDLISTUNTIL(ENDFIELDLIST: SYMBOLSET); VAR LASTEOL: MARGINS; ALIGNCOLUMN: WIDTH; PROCEDURE DORECORD; VAR SAVEDLEFTMARGIN: WIDTH; BEGIN SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(WRITECOLUMN - 6 + INDENTINDEX - WRITELEFTCOL); STARTNEWLINEANDINDENT; DOFIELDLISTUNTIL([ENDSYMBOL]); CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END *(DORECORD)*; PROCEDURE DOVARIANTRECORDPART; VAR SAVEDLEFTMARGIN, OTHERSAVEDMARGIN: MARGINS; BEGIN OTHERSAVEDMARGIN := ACTUALLEFTMARGIN; IF DECLARALIGNMENT > O THEN BEGIN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [COLONSYMBOL, OFSYMBOL]; IF SYMBOLNAME = COLONSYMBOL THEN BEGIN WRITESYMBOL; READSYMBOL; WITH UNWRITTEN[LASTEOL] DO BEGIN IDENTAFTEREOL := IDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITECOLUMN := ALIGNCOLUMN; CHANGEMARGINTO(ACTUALLEFTMARGIN + ALIGNCOLUMN - WRITECOLUMN); END END IF SYMBOLNAME <> OFSYMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = OFSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN+ IDENTINDEX); REPEAT WRITESYMBOL; READSYMBOL; IF SYMBOLNAME <> ENDSYMBOL THEN BEGIN STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [LEFTPARENTH, SEMICOLON, ENDSYMBOL]; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; READSYMBOL; SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; CHANGEMARGINTO(WRITECOLUMN - WRITELEFTCOL); DOFIELDLISTUNTIL([RIGHTPARENTH]); WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END; END; UNTIL SYMBOLNAME <> SEMICOLON; CHANGEMARGINTO(OTHERSAVEDMARGIN); END *(DOVARIANTRECORDPART)*; BEGIN *(DOFIELDLISTUNTIL)*; LASTEOL := OLDEST; IF LASTSYMBOL = LEFTPARENTH THEN FOR I := 1 TO DECLARALIGNMENT - LENGTH DO WRITEA(''); ALIGNCOLUMN := LEFTMARGIN + WRITELEFTCOL + DECLARALIGNMENT + 1; WHILE NOT (SYMBOLNAME IN ENDFIELDLIST) DO BEGIN IF LASTSYMBOL IN [SEMICOLON, COMMENT] THEN IF SYMBOLNAME <> SEMICOLON THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST END; IF SYMBOLNAME IN [RECORDSYMBOL, CASESYMBOL, LEFTPARENTH, COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL] THEN CASE SYMBOLNAME OF RECORDSYMBOL- DORECORD; CASESYMBOL: DOVARIANTRECORDPART; LEFTPARENTH: DOPARENTHESES; COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL: BEGIN WRITESYMBOL; IF DECLARALIGNMENT > O THEN IF NOT (ENDLABEL <= ENDFIELDLIST) THEN BEGIN WITH UNWRITTEN[LASTEOL] DO BEGIN IDENTAFTEREOL := INDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O;  WRITECOLUMN := ALIGNCOLUMN; END; IF SYMBOLNAME = COMMASYMBOL THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST; END; AND *(IF DECLARALIGNMENT)*; READSYMBOL; END *( , : - )* END *(CASE)* ELSE BEGIN WRITESYMBOL; READSYMBOL END; END *(WHILE)*; END *(DOFIELDLISTUNTIL)*; BEGIN *(DODECLARATIONUNTIL)* STARTNEWLINEANDINDENT; WRITESYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; READSYMBOL; DOFIELDLISTUNTIL(ENDDECLARATION); STARTNEWLINEANDINDENT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END *(DODECLARATIONUNTIL)*; PROCEDURE DOBLOCK(BLOCKNAME: COMMENTEXT; BLOCKNMLENGTH: WIDTH); VAR I: WIDTH; IFTHENBUNCHNEEDED: BOOLEAN; ATPROCBEGINNIN: BOOLEAN; PROCEDURE DOPROCEDURES; VAR I: O .. 20; PROCNAME: COMMENTTEXT; PROCNMLENGTH: WIDTH; BEGIN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, I * ALFALENG +1, PROCNAME[I + 1]); PROCNMLENGTH := LENGTH; WRITESYMBOL; READSYMBOL; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; REPREAT READSYMBOL; WRITESYMBOL UNTIL SYMBOLNAME = RIGHT PARENTH; READSYMBOL; END; IF SYMBOLNAME = COLONSMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; LASTPROGPARTWASBODY := FALSE; DOBLOCK(PROCNAME, PROCNMLENGTH); LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; END *(DOPROCEDURES)*; PROCEDURE DOSTATEMENT(VAR ADDEDBLANKS: WIDTH; STATMTSYMBOL: COMMENTTEXT; STMTSYMLENGTH: WIDTH); VAR I:WIDTH; STATMTBEGINNING: INTEGER; STATMTPART: ARRAY [1..4] OF INTEGER; BLKSONCURRNTLINE, BLKSADDEDBYTHISSTMT: INTEGER; SUCCESSFUL: BOOLEAN; PROCEDURE BUNCH(BEGINNING, BREAKPT, ENDING: INTEGER; STATMTSEPARATION: OPTIONSIZE); BEGIN IF BUNCHWANTED OR IFTHENBUNCHNEEDED THEN BEGIN IF STMTSEPARATION <1 THEN STATMTSEPARATION := 1; BLKSONCURRNTLINE := BLKSONCURRNTLINE + STATMTSEPARATION - 1; SUCCESSFUL := (ENDING - BEGINNING + BLKSONCURRNTLINE + UNWRITTEN[BEGINNING MOD BUFFERSIZE]. IDENTAFTEREOL) < WRITERIGHTCOL) AND (CHARCOUNT - BEGINNING ENDLIST THEN BEGIN IF PROCNAMESWANTED THEN IF ATPROCBEGINNING THEN IF LASTPROGPARTWASBODY THEN IF LASTSYMBOL = BEGINSYMBOL THEN WRITECOMMENT; ATPROCBEGINNING := FALSE; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSAFTERPRT2 := ADDEDBLANKS; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; WHILE SYMBOLNAME <> ENDLIST DO BEGIN WRITESMBOL; READSYMBOL; IF SYMBOLNAME <> ENDLIST THEN BEGIN STATMTPART[3] := CHARCOUNT + 1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS + BLKSAFTERPRT2; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; BUNCH(STATMTPART[2], STATMTPART[3], CHARCOUNT, STATMTSEPARATION); IF NOT SUCCESSFUL THEN BEGIN BLKSAFTERPRT2 := ADDEDB;AMLS\ STATMTPART[2] := STATMTPART[3]; END ELSE BLKSAFTERPRT2 := BLKSONCURRNTLINE; END; END *(WHILE SYMBOLNAME <> ENDLIST)*; END *(IF SYMBOLNAME <> ENDLIST)*; BLKSONCURRNTLINE := BLKSADDEDBYTHISSTATMT; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SYMBOLGAP9; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL, PERIODSYMBOL]; IF SUCCESSFUL THEN BEGIN IF ENDLIST = UNTILSYMBOL THEN STATMTPART[4] := STATMTSEPARATION ELSE STATMTPART[4] := SYMBOLGAP; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTPART[4]; END *(IF SUCCESSFUL)*; IF NOT (SUCCESSFUL AND BUNCHWANTED) THEN IF ENDLIST = ENDSYMBOL THEN IF LASTSYMBOL = ENDSYMBOL THEN IF ATPROCEND AND PROCNAMESWANTED THEN WRITECOMMENT ELSE IF ENDCOMMENTSWANTED THEN WRITECOMMENT; END *(DOSTMTLIST)*; BEGIN *(DOSTATEMENT) BLKSONCURRNTLINE := O; SUCCESSFUL := FALSE; BLKSADDEDBYTHISSTMT := O; CHANGEMARGINTO(ACTUALLEFTMARGIN + IDENTINDEX); STARTNEWLINEANDINDENT; STATMTBEGINNING := CHARCOUNT; IF SYMBOLISNUMBER THEN BEGIN WITH UNWRITTEN[OLDEST] DO BEGIN INDENTAFTEREOL := IDENTAFTEREOL - 1 LENGTH - SYMBOLGAP; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITESYMBOL; READSYMBOL *(WRITE LABEL)*; WRITESYMBOL; READSYMBOL *(WRITE COLON)*; END FORWITHWHILESTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = DOSYMBOL; WRITESYMBOL; READSYMBOL; STATMTPART[1] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := BLKSONCURRNTLINE + ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SYMBOLGAP); END; REPEATSTATEMENT: DOSTMTLIST (UNTILSYMBOL); IFSTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = THENSYMBOL; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[2] := CHARCOUNT +1; DOSTATMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTSEPARATION) ELSE IFTHENBUNCHNEEDED := TRUE; IF SYMBOLNAME = ELSESYMBOL THEN BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; IFTHENBUNCHNEEDED := FALSE; STARTNEWLINEANDINDENT; STATMTPART[3] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[4] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STMTPART[3], STATMTPART[4], CHARCOUNT, SYMBOLGAP); BLKSONCURRNTLINE := BLKSADDEDBYTHISSTMT; IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[3], CHARCOUNT, STATMTSEPARATION); END ELSE IF (CHARCOUNT - STATMTBEGINNING) < BUFFERSIZE THEN BEGIN BUNCHWANTED := NOT BUNCHWANTED; BLKSONCURRNTLINE := O; BUNCH(STATMTBEGINNING, STATMTPART[1], STATMTPART[2], SYMBOLGAP); BUNCHWANTED := NOT BUNCHWANTED; END; IFTHENBUNCHNEEDED := FALSE; END *(IFSTATEMENT)*; CASESTATEMENT; BEGIN REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = OFSYMBOL; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); WHILE SYMBOLNAME <> ENDSYMBOL DO BEGIN STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), STATMTSYMBOL[I + 1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = COLONSYMBOL; WRITESYMBOL; READSYMBOL; IF NOT (SYMBOLNAME IN [SEMICOLON, ENDSYMBOL]) THEN BEGIN STATMTPART[2] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); END *(IF NOT(SYMBOLNAME...))*; IF SYMBOLNAME - SEMICOLON THEN BEGIN WRITESYMBOL; READSYMBOL; END; END; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; IF ENDCOMMENTSWANTED AND (LASTSYMBOL = ENDSYMBOL) THEN BEGIN STATMTSYMBOL[1] := 'CASE '; STMTSYMLENGTH := 4; WRITECOMMENT; END; END *(CASESTATEMENT)*; OTHERSTATEMENT; BEGIN WHILE NOT (SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL]) DO BEGIN WRITESYMBOL; READSYMBOL END; END *(OTHER)*; COMPOUNDSTATEMENT: DOSTMTLIST(ENDSYMBOL) END *(CASE)*; ADDEDBLANKS := BLKSADDEDBYTHISSTMT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END *(DOSTATEMENT)*; BEGIN *(DOBLOCK)* LASTPROGPARTWASBODY := LASTPROGPARTWASBODY AND (SYMBOLNAME = BEGINSYMBOL); IF SYMBOLNAME = LABELSYMBOL THEN DODECLARATIONUNTIL(ENDLABEL); IF SYMBOLNAME = CONSTSYMBOL THEN DODECLARATIONUNTIL(ENDCONST); IF SYMBOLNAME = TYPESYMBOL THEN DODECLARATIONUNTIL(ENDTYPE); IF SYMBOLNAME = VARSYMBOL THEN DODECLARATIONUNTIL(ENDVAR); WHILE SYMBOLNAME IN [FUNCSYMBOL, PROCSYMBOL] DO DOPROCEDURES; IF SYMBOLNAME = BEGINSYMBOL THEN BEGIN IF LASTPROGPARTWASBODY THEN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; IFTHENBUNCHNEEDED := FALSE; ATPROCBEGINNING := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); DOSTATEMENT(I, BLOCKNAME, BLOCKNMLENGTH) *( I IS DUMMY PARAM )*; LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); END ELSE BEGIN WRITESMBOL; READSYMBOL *(WRITE FORWARD)* END END *(DOBLOCK)*; PROCEDURE INITIALIZE; VAR I: WIDTH; BEGIN *( CONSTANTS: )* DIGITS := ['O' .. '9']; LETTERSANDDIGITS := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Z'] + DIGITS; ALPHASYMBOLS := [PROGSYMBOL, BEGINSYMBOL, ENDSYMBOL, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, CASESYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LABELSYMBOL, ALPHAOPERATOR]; ENDLABEL := [CONSTSYMBOL, TYPESYMBOL, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, BEGINSYMBOL]; ENDCONST := ENDLABEL - [CONSTSYMBOL]; ENDTYPE := ENDCONST - [TYPESYMBOL]; ENDVAR := ENDTYPE - [VARSYMBOL]; *( INITIALIZE COLUMN DATA:)* WRITECOLUMN := O; LEFTMARGIN := O; ACTUALLEFTMARGIN := O; OUTPUTCOL := 1; READLEFTCOL := 1; READRIGHTCOL := MAXREADRIGHTCOL; WRITELEFTCOL := 1; WRITERIGHCOL := MAXWRITERIGHTCOL; OLDEST := 1; CHARCOUNT := 1; LINENUMBER := O; INCREMENT := O; *( INITIALIZE BOOLEAN PARAMETERS: )* PACKERISOFF := TRUE; BUNCHWANTED := FALSE; DISPLAYISON := TRUE; PROCNAMESWANTED := TRUE; ENDCOMMENTSWANTED := FALSE; NOFORMATTING := FALSE; *( INITIALIZE NUMERIC PARAMETERS: )* INDENTINDEX := 3; LONGLINEINDENT := 3; PROCSEPARATION := 2; SYMBOLGAP := 1; STATMTSEPARATION := 3; DECLARALIGNMENT := O; *( INITIALIZE INPUT CONTEXT DATA: )* READCOLUMN := 1; CHISEOL := FALSE; NEXTCHISEOL := FALSE; FOR I := O TO BUFFERSIZE DO SYMBOL[I] := ''; LASTSYMBOL := PERIODSMBOL; LASTPROGPARTWASBODY := FALSE; END *(INITIALIZE)*; BEGIN *(MAINPROGRAM)* CONSTANTSINITIALIZATION; INITIALIZE; IF EOF(INPUT) THEN WRITELN('*** NO PROGRAM FOUND TO FORMAT.') ELSE BEGIN READACHARACTER; READSYMBOL; IF SYMBOLNAME <> PROGSYMBOL THEN WRITELN('***"PROGRAM" EXPECTED.') ELSE BEGIN *( ********************************************************************* F O R M A T T H E P R O G R A M - - - - - - - - - - - - - - - - ******************************************************************** *) STARTNWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), MAIN[I + 1]); MAINNMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; DOBLOCK(MAIN, MAINNMLENGTH); WRITEA('.'); FLUSHUNWRITTENBUFFER; END; END; 13: END *(MAINPROGRAM)*. C1980DOn 1 C 3049 44.55 10 2 CC 3064 3 C 3065 223.70 32 4 C 3066 250 27 5 C 3069 96 4 6 CC 3070 7 C 3073 1340.63 25 8 C 3075 23 5 9 C 3076 100 24 10 C 3078 22.50 4 11 EM 810 17 15 12 EM 811 604.28 15 13 EM 812 643.69 15 14 D 140 34 15 D 8347.06 34 16 D 2086.75 17 C 813 980.89 14 18 C 817 205.18 12 19 CC 814 20 C 3081 35 4 21 C 3067 62 1 22 C 3083 34 6 23 C 3071 330 20 24 C 3085 50.99 5 25 C 3087 704.45 17 26 C 816 1581.88 12 27 C 819 1581 12 28 D 1468.38 34 29 D 871.98 34 30 D 13056 34 31 D 12436.99 34 32 D 435.99 34 33 C 3068 10 18 34 C 3086 138.02 25 35 C 3088 1040 23 36 C 3090 5324 9 37 C 3091 250 8 38 C 3092 206.59 20 39 C 3093 15.40 22 40 C 3094 120.70 4 41 C 3095 20 26 42 C 3096 775 9 43 C 3097 32 10 44 C 3098 74.05 22 45 C 3099 4000 21 46 C 3101 1557.44 25 47 C 3104 40 33 48 C 3103 42.50 10 49 C 3105 504.39 25 50 C 3106 119.98 4 51 C 3107 793.50 9 52 C 3108 1537.50 27 53 C 3109 3394.50 6 54 C 3110 25 3 55 EM 818 140 27 56 EM 820 1581 12 57 EM 833 948.57 12 58 EM 834 912.14 12 59 EM 835 17 15 60 EM 836 181.73 14 61 EM 837 482.61 15 62 EM 838 2742.40 14 63 CC 839 64 EM 840 622.50 27 65 EM 821 195.18 12 66 EM 822 1415.95 12 67 C 3113 79.95 5 68 C 3114 69.95 10 69 C 3115 200 20 70 C 3116 225 27 71 C 3117 4.65 10 72 C 3119 48 18 73 C 3120 1940.43 25 74 C 3121 269.78 17 75 C 3123 12.24 4 76 C 3124 93.27 15 77 C 3125 181.78 15 78 C 3126 243.77 14 79 C 3127 68.45 23 80 C 3129 128.35 5 81 C 3130 25.98 5 82 C 3132 15.90 5 83 C 3133 125.81 22 84 C 3134 20.47 22 85 C 3135 85.15 22 86 D 435.99 34 87 D 906.32 34 88 D 435.99 34 89 D 1628 34 90 D 3000 34 91 D 11481.06 34 92 C 3112 25 26 93 C 3118 1.30 11 94 C 3122 100 26 95 C 3128 7.86 22 96 C 3138 185.26 4 97 C 3139 19.37 10 98 C 3140 6.17 10 99 C 3141 6.46 10 100 C 3142 3.96 10 101 C 3143 3.62 10 102 C 3144 42.08 22 103 C 3145 46.50 3 104 C 3146 36.70 11 105 C 3147 27.73 10 106 C 3148 25.98 5 107 C 3149 6 33 108 C 3150 95 33 109 C 3151 78.50 33 110 C 3152 1000 25 111 C 3153 227.40 25 112 C 3154 100 8 113 C 3155 160.43 4 114 C 3156 835.38 25 115 C 3157 781.68 25 116 C 3198 28.30 3 117 EM 823 1000 12 118 C 3158 21.92 5 119 C 3159 12 33 120 C 3165 638.45 27 121 C 3167 15 5 122 C 3160 155.47 17 123 C 3161 34 10 124 C 3163 594 17 125 C 3166 465 4 126 C 3168 83.85 3 127 C 3169 200 24 128 D 1834.55 34 129 D 435.99 34 130 D 802.29 34 131 EM 824 333.14 15 132 EM 825 378.68 15 133 EM 826 2590.51 14 134 EM 827 425.95 12 135 EM 828 82.50 26 136 EM 829 38.70 14 137 EM 841 1425.95 12 138 EM 830 1425.95 12 139 EM 831 205.18 12 140 EM 832 209.37 12 141 D 905 34 142 D 594 34 143 D 520 34 144 D 435.99 34 145 DM 18.88 146 C 3162 39.95 18 147 C 3164 130.46 14 148 C 3170 120.97 4 149 C 3171 18 33 150 C 3172 36.70 10 151 C 3173 947.50 25 152 C 3174 80 26 153 C 3175 204 5 154 C 3177 496.56 25 155 C 3178 136.20 25 156 C 3179 729 17 157 C 3180 170 23 158 C 3182 121.30 11 159 C 3183 25.91 22 160  C 3184 27 17 161 C 3186 10.08 23 162 C 3200 1020 27 163 D 13331.89 34 164 D 11943.74 34 165 D 4546.81 34 166 D 129.24 34 167 D 3229.35 34 168 D 715 34 169 C 3176 50 22 170 C 3181 950 7 171 C 3185 125 23 172 C 3187 174.75 23 173 C 3188 290.64 4 174 C 3189 1372 27 175 C 3190 3.28 5 176 C 3191 18 5 177 C 3192 5.68 23 178 C 3203 100 27 179 C 3193 37.25 23 180 C 3194 147.08 23 181 C 3195 7 23 182 C 3196 50 21 183 C 3199 26 33 184 C 3201 2764.81 27 185 C 3202 948.17 25 186 C 3204 55.20 5 187 C 3205 14.25 7 188 C 3206 10 6 189 C 3207 7.58 5 190 C 3208 60.59 2 191 C 3209 250.65 25 192 EM 842 209.37 12 193 EM 844 1527.87 12 194 EM 845 290.37 12 195 EM 846 3584 14 196 D 531.21 34 197 EM 843 1527.87 12 198 EM 847 1527.87 12 199 EM 848 209.37 12 200 EM 849 1000 12 201 EM 850 9000 12 202 C 3210 720 27 203 C 3211 69.37 2 204 C 3212 1.81 11 205 C 3213 176.55 25 206 C 3214 10.46 25 207 C 3215 18.28 5 208 3216 64.28 5 209 C 3217 547.32 17 210 C 3218 136.48 17 211 C 3219 48.60 10 212 C 3220 170 23 213 C 3221 10 8 214 C 3224 227.40 17 215 C 3225 36 5 216 C 3222 450 27 217 C 3223 10.64 5 218 C 3226 93.71 4 219 C 3227 74.13 2 220 C 3230 31 26 221 EM 851 4000 36 222 C 3229 2774.75 23 223 C 3228 102.08 4 224 C 3231 35 18 225 D 4888.40 34 226 D 3435.99 34 227 EM 852 1527.87 12 228 C 3232 125 23 229 C 3233 3654.15 23 230 C 3235 37 33 231 C 3236 42.50 33 232 C 3237 2282.26 6 233 C 3238 138.17 33 234 C 3239 95.64 2 235 C 3240 3.70 5 236 C 3241 4.33 5 237 C 3242 35.39 18 238 EM 854 48.65 12 239 EM 853 540 15 240 D 3148 34 241 D 296.31 34 242 D 1403.43 34 243 D 174 34 244 D 2600 30 245 C 3243 28.20 3 246 C 3244 341.40 10 247 C 3245 500 25 248 C 3246 328.44 10 249 C 3247 784.13 25 250 C 3248 125.30 11 251 C 3249 5.76 23 252 C 3250 50 24 253 C 3252 1760 27 254 C 3251 100 2 255 C 3253 43 1 256 C 3254 290.77 4 257 C 3255 100 2 258 C 3258 42.50 33 259 C 3259 4.60 23 260 CC 3131 261 C 3260 820.84 25 262 C 3261 732.30 8 263 C 3263 50 22 264 C 3264 296.31 23 265 C 3265 168.01 25 266 D 435.99 34 267 C 3082 1350.12 25 268 C 3136 16.00 1 269 C 3216 64.28 5 270 C 3234 298.80 25 271 C 3262 88.41 14 272 C 3268 14.00 26 273 CC 3084 274 CC 3089 275 CC 3100 276 CC 3102 277 CC 3111 810 11 EM 810 17 15 811 12 EM 811 604.28 15 812 13 EM 812 643.69 15 813 17 C 813 980.89 14 814 19 CC 814 816 26 C 816 1581.88 12 817 18 C 817 205.18 12 818 55 EM 818 140 27 819 27 C 819 1581 12 820 56 EM 820 1581 12 821 65 EM 821 195.18 12 822 66 EM 822 1415.95 12 823 117 EM 823 1000 12 824 131 EM 824 333.14 15 825 132 EM 825 378.68 15 826 133 EM 826 2590.51 14 827 134 EM 827 425.95 12 828 135 EM 828 82.50 26 829 136 EM 829 38.70 14 830 138 EM 830 1425.95 12 831 139 EM 831 205.18 12 832 140 EM 832 209.37 12 833 57 EM 833 948.57 12 834 58 EM 834 912.14 12 835 59 EM 835 17 15 836 60 EM 836 181.73 14 837 61 EM 837 482.61 15 838 62 EM 838 2742.40 14 839 63 CC 839 840 64 EM 840 622.50 27 841 137 EM 841 1425.95 12 842 192 EM 842 209.37 12 843 197 EM 843 1527.87 12 844 193 EM 844 1527.87 12 845 194 EM 845 290.37 12 846 195 EM 846 3584 14 847 198 EM 847 1527.87 12 848 199 EM 848 209.37 12 849 200 EM 849 1000 12 850 201 EM 850 9000 12 851 221 EM 851 4000 36 852 227 EM 852 1527.87 12 853 239 EM 853 540 15 854 238 EM 854 48.65 12 3049 1 C 3049 44.55 10 3064 2 CC 3064 3065 3 C 3065 223.70 32 3066 4 C 3066 250 27 3067 21 C 3067 62 1 3068 33 C 3068 10 18 3069 5 C 3069 96 4 3070 6 CC 3070 3071 23 C 3071 330 20 3073 7 C 3073 1340.63 25 3075 8 C 3075 23 5 3076 9 C 3076 100 24 3078 10 C 3078 22.50 4 3081 20 C 3081 35 4 3082 267 C 3082 1350.12 25 3083 22 C 3083 34 6 3084 273 CC 3084 3085 24 C 3085 50.99 5 3086 34 C 3086 138.02 25 3087 25 C 3087 704.45 17 3088 35 C 3088 1040 23 3089 274 CC 3089 3090 36 C 3090 5324 9 3091 37 C 3091 250 8 3092 38 C 3092 206.59 20 3093 39 C 3093 15.40 22 3094 40 C 3094 120.70 4 3095 41 C 3095 20 26 3096 42 C 3096 775 9 3097 43 C 3097 32 10 3098 44 C 3098 74.05 22 3099 45 C 3099 4000 21 3100 275 CC 3100 3101 46 C 3101 1557.44 25 3102 276 CC 3102 3103 48 C 3103 42.50 10 3104 47 C 3104 40 33 3105 49 C 3105 504.39 25 3106 50 C 3106 119.98 4 3107 51 C 3107 793.50 9 3108 52 C 3108 1537.50 27 3109 53 C 3109 3394.50 6 3110 54 C 3110 25 3 3111 277 CC 3111 3112 92 C 3112 25 26 3113 67 C 3113 79.95 5 3114 68 C 3114 69.95 10 3115 69 C 3115 200 20 3116 70 C 3116 225 27 3117 71 C 3117 4.65 10 3118 93 C 3118 1.30 11 3119 72 C 3119 48 18 3120 73 C 3120 1940.43 25 3121 74 C 3121 269.78 17 3122 94 C 3122 100 26 3123 75 C 3123 12.24 4 3124 76 C 3124 93.27 15 3125 77 C 3125 181.78 15 3126 78 C 3126 243.77 14 3127 79 C 3127 68.45 23 3128 95 C 3128 7.86 22 3129 80 C 3129 128.35 5 3130 81 C 3130 25.98 5 3131 260 CC 3131 3132 82 C 3132 15.90 5 3133 83 C 3133 125.81 22 3134 84 C 3134 20.47 22 3135 85 C 3135 85.15 22 3136 268 C 3136 16.00 1 3138 96 C 3138 185.26 4 3139 97 C 3139 19.37 10 3140 98 C 3140 6.17 10 3141 99 C 3141 6.46 10 3142 100 C 3142 3.96 10 3143 101 C 3143 3.62 10 3144 102 C 3144 42.08 22 3145 103 C 3145 46.50 3 3146 104 C 3146 36.70 11 3147 105 C 3147 27.73 10 3148 106 C 3148 25.98 5 3149 107 C 3149 6 33 3150 108 C 3150 95 33 3151 109 C 3151 78.50 33 3152 110 C 3152 1000 25 3153 111 C 3153 227.40 25 3154 112 C 3154 100 8 3155 113 C 3155 160.43 4 3156 114 C 3156 835.38 25 3157 115 C 3157 781.68 25 3158 118 C 3158 21.92 5 3159 119 C 3159 12 33 3160 122 C 3160 155.47 17 3161 123 C 3161 34 10 3162 146 C 3162 39.95 18 3163 124 C 3163 594 17 3164 147 C 3164 130.46 14 3165 120 C 3165 638.45 27 3166 125 C 3166 465 4 3167 121 C 3167 15 5 3168 126 C 3168 83.85 3 3169 127 C 3169 200 24 3170 148 C 3170 120.97 4 3171 149 C 3171 18 33 3172 150 C 3172 36.70 10 3173 151 C 3173 947.50 25 3174 152 C 3174 80 26 3175 153 C 3175 204 5 3176 169 C 3176 50 22 3177 154 C 3177 496.56 25 3178 155 C 3178 136.20 25 3179 156 C 3179 729 17 3180 157 C 3180 170 23 3181 170 C 3181 950 7 3182 158 C 3182 121.30 11 3183 159 C 3183 25.91 22 3184 160 C 3184 27 17 3185 171 C 3185 125 23 3186 161 C 3186 10.08 23 3187 172 C 3187 174.75 23 3188 173 C 3188 290.64 4 3189 174 C 3189 1372 27 3190 175 C 3190 3.28 5 3191 176 C 3191 18 5 3192 177 C 3192 5.68 23 3193 179 C 3193 37.25 23 3194 180 C 3194 147.08 23 3195 181 C 3195 7 23 3196 182 C 3196 50 21 3198 116 C 3198 28.30 3 3199 183 C 3199 26 33 3200 162 C 3200 1020 27 3201 184 C 3201 2764.81 27 3202 185 C 3202 948.17 25 3203 178 C 3203 100 27 3204 186 C 3204 55.20 5 3205 187 C 3205 14.25 7 3206 188 C 3206 10 6 3207 189 C 3207 7.58 5 3208 190 C 3208 60.59 2 3209 191 C 3209 250.65 25 3210 202 C 3210 720 27 3211 203 C 3211 69.37 2 3212 204 C 3212 1.81 11 3213 205 C 3213 176.55 25 3214 206 C 3214 10.46 25 3215 207 C 3215 18.28 5 3216 269 C 3216 64.28 5 3217 20Y9 C 3217 547.32 17 3218 210 C 3218 136.48 17 3219 211 C 3219 48.60 10 3220 212 C 3220 170 23 3221 213 C 3221 10 8 3222 216 C 3222 450 27 3223 217 C 3223 10.64 5 3224 214 C 3224 227.40 17 3225 215 C 3225 36 5 3226 218 C 3226 93.71 4 3227 219 C 3227 74.13 2 3228 223 C 3228 102.08 4 3229 222 C 3229 2774.75 23 3230 220 C 3230 31 26 3231 224 C 3231 35 18 3232 228 C 3232 125 23 3233 229 C 3233 3654.15 23 3234 270 C 3234 298.80 25 3235 230 C 3235 37 33 3236 231 C 3236 42.50 33 3237 232 C 3237 2282.26 6 3238 233 C 3238 138.17 33 3239 234 C 3239 95.64 2 3240 235 C 3240 3.70 5 3241 236 C 3241 4.33 5 3242 237 C 3242 35.39 18 3243 245 C 3243 28.20 3 3244 246 C 3244 341.40 10 3245 247 C 3245 500 25 3246 248 C 3246 328.44 10 3247 249 C 3247 784.13 25 3248 250 C 3248 125.30 11 3249 251 C 3249 5.76 23 3250 252 C 3250 50 24 3251 254 C 3251 100 2 3252 253 C 3252 1760 27 3253 255 C 3253 43 1 3254 256 C 3254 290.77 4 3255 257 C 3255 100 2 3258 258 C 3258 42.50 33 3259 259 C 3259 4.60 23 3260 261 C 3260 820.84 25 3261 262 C 3261 732.30 8 3262 271 C 3262 88.41 14 3263 263 C 3263 50 22 3264 264 C 3264 296.31 23 3265 265 C 3265 168.01 25 3268 272 C 3268 14.00 26 PRETTYPRINPAM  (************************************************************************** PROGRAM TITLE: PASCAL PRETTYPRINTING PROGRAM AUTHORS: JON F. HUERAS AND HENRY F. LEDGARD COMPUTER AND INFORMATION SCIENCE DEPARTMENT UNIVERSITY OF MASSACHUSETTS, AMHERST - AUGUST, 1976 (EARLIER VERSIONS AND CONTRIBUTIONS BY RANDY CHOW AND JOHN GORMAN). BUGS CORRECTD BY CHARLES FISCHER, DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF WISCONSIN, MADISON. 1977. INDICATED BY <<<. MODIFIED FOR CDC-6000 PASCAL RELEASE 3 BY RICK L. MARCUS UNIVERSITY COMPUTER CENTER, UNIVERSITY OF MINNESOTA. 30 SEPTEMBER 1978. PROGRAM SUMMARY: THIS PROGRAM TAKES AS INPUT A PASCAL PROGRAM AND REFORMATS THE PROGRAM ACCORDING TO A STANDARD SET OF PRETTYPRINTING RULES. THE PRETTYPRINTED PROGRAM IS GIVEN AS OUTPUT. THE PRETTYPRINTING RULES ARE GIVEN BELOW. AN IMPORTANT FEATURE IS THE PROVISION FOR THE USE OF EXTRA SPACES AND EXTRA BLANK LINES. THEY MAY BE FREELY INSERTED BY THE USER IN ADDITION TO THE SPACES AND BLANK LINES INSERTED BY THE PRETTYPRINTER. NO ATTEMPT IS MADE TO DETECT OR CORRECT SYNTACTIC ERRORS IN THE USER'S PROGRAM. HOWEVER, SYNTACTIC ERRORS MAY RESULT IN ERRONEOUS PRETTYPRINTING. INPUT FILE: INPUT - A FILE OF CHARACTERS, PRESUMABLY A PASCAL PROGRAM OR PROGRAM FRAGMENT. OUTPUT FILE: OUTPUT - THE PRETTYPRINTED PROGRAM. ************************************************************************** ************************************************************************** PASCAL PRETTYPRINTING RULES GENERAL PRETTYPRINTING RULES 1. ANY SPACES OR BLANK LINES BEYOND THOSE GENERATED BY THE PRETTYPRINTER ARE LEFT ALONE. THE USER IS ENCOURAGED, FOR THE SAKE OF READABILITY, TO MAKE USE OF THIS FACILITY. IN ADDITION, COMMENTS ARE LEFT WHERE THEY ARE FOUND, UNLESS THEY ARE SHIFTED RIGHT BY PRECEEDING TEXT ON A LINE. 2. ALL STATEMENTS AND DECLARATIONS BEGIN ON SEPARATE LINES. 3. NO LINE MAY BE GREATER THAN 72 CHARACTERS LONG. ANY LINE LONGER THAN THIS IS CONTINUED ON A SEPARATE LINE. 4. THE KEYWORDS "BEGIN", "END", "REPEAT", AND "RECORD" ARE FORCED TO STAND ON LINES BY THEMSELVES (OR POSSIBLY FOLLOWED BY SUPPORTING COMMENTS). IN ADDITION, THE "UNTIL" CLAUSE OF A "REPEAT-UNTIL" STATEMENT IS FORCED TO START ON A NEW LINE. 5. A BLANK LINE IS FORCED BEFORE THE KEYWORDS "PROGRAM", "PROCEDURE", "FUNCTION", "LABEL", "CONST","TYPE", AND "VAR". 6. A SPACE IS FORCED BEFORE AND AFTER THE SYMBOLS ":=" AND "=". ADDITIONALLY, A SPACE IS FORCED AFTER THE SYMBOL ":". NOTE THAT ONLY "="S IN DECLARATIONS ARE FORMATTED. "="S IN EXPRESSIONS ARE IGNORED. <<<. INDENTATION RULES 1. THE BODIES OF "LABEL", "CONST", "TYPE", AND "VAR" DECLARATIONS ARE INDENTED FROM THEIR CORRESPONDING DECLARATION HEADER KEYWORDS. 2. THE BODIES OF "BEGIN-END", "REPEAT-UNTIL", "FOR", "WHILE", "WITH", AND "CASE" STATEMENTS, AS WELL AS "RECORD-END" STRUCTURES AND "CASE" VARIANTS (TO ONE LEVEL) ARE INDENTED FROM THEIR HEADER KEYWORDS. 3. AN "IF-THEN-ELSE" STATEMENT IS INDENTED AS FOLLOWS: IF THEN ELSE **************************************************************************** **************************************************************************** GENERAL ALGORITHM THE STRATEGY OF THE PRETTYPRINTER IS TO SCAN SYMBOLS FROM THE INPUT PROGRAM AND MAP EACH SYMBOL INTO A PRETTYPRINTING ACTION, INDEPENDENTLY OF THE CONTEXT IN WHICH THE SYMBOL APPEARS. THIS IS ACCOMPLISHED BY A TABLE OF PRETTYPRINTING OPTIONS. FOR EACH DISTINGUISHED SYMBOL IN THE TABLE, THERE IS AN ASSOCIATED SET OF OPTIONS. IF THE OPTION HAS BEEN SELECTED FOR THE SYMBOL BEING SCANNED, THEN THE ACTION CORRESPONDING WITH EACH OPTION IS PERFORMED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. THE BASIC ACTIONS INVOLVED IN PRETTYPRINTING ARE THE INDENT- ATION AND DE-INDENTATION OF THE MARGIN. EACH TIME THE MARGIN IS INDENTED, THE PREVIOUS VALUE OF THE MARGIN IS PUSHED ONTO A STACK, ALONG WITH THE NAME OF THE SYMBOL THAT CAUSED IT TO BE INDENTED. EACH TIME THE MARGIN IS DE-INDENTED, THE STACK IS POPPED OFF TO OBTAIN THE PREVIOUS VALUE OF THE MARGIN. THE PRETTYPRINTING OPTIONS ARE PROCESSED IN THE FOLLOWING ORDER, AND INVOKE THE FOLLOWING ACTIONS: CRSUPPRESS - IF A CARRIAGE RETURN HAS BEEN INSERTED FOLLOWING THE PREVIOUS SYMBOL, THEN IT IS INHIBITED UNTIL THE NEXT SYMBOL IS PRINTED. CRBEFORE - A CARRIAGE RETURN IS INSERTED BEFORE THE CURRENT SYMBOL (UNLESS ONE IS ALREADY THERE) BLNKLINEBEFORE - A BLANK LINE IS INSERTED BEFORE THE CURRENT  SYMBOL (UNLESS ALREADY THERE). DINDENTONKEYS - IF ANY OF THE SPECIFIED KEYS ARE ON TOP OF THE STACK, THE STACK IS POPPED, DE-INDENTING THE MARGIN. THE PROCESS IS REPEATED UNTIL THE TOP OF THE STACK IS NOT ONE OF THE SPECIFIED KEYS. DINDENT - THE STACK IS UNCONDITIONALLY POPPED AND THE MARGIN IS DE-INDENTED. SPACEBEFORE - A SPACE IS INSERTED BEFORE THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). THE SYMBOL IS PRINTED AT THIS POINT [] SPACEAFTER - A SPACE IS INSERTED AFTER THE SYMBOL BEING SCANNED (UNLESS ALREADY THERE). GOBBLESYMBOLS - SYMBOLS ARE CONTINUOUSLY SCANNED AND PRINTED WITHOUT ANY PROCESSING UNTIL ONE OF THE SPECIFIED SYMBOLS IS SEEN (BUT NOT GOBBLED). INDENTBYTAB - THE MARGIN IS INDENTED BY A STANDARD AMOUNT FROM THE PREVIOUS MARGIN. INDENTTOCLP - THE MARGIN IS INDENTED TO THE CURRENT LINE POSITION. CRAFTER - A CARRIAGE RETURN IS INSERTED FOLLOWING THE SYMBOL SCANNED. ***************************************************************************** PROGRAM PRETTYPRINT *( FROM )* INPUT, *( TO )* OUTPUT ); CONST MAXSYMBOLSSIZE = 200; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A)* *( SYMBOL SCANNED BY THE LEXICAL SCANNER. )* MAXSTACKSIZE = 100; *( THE MAXIMUM NUMBER OF SYMBOLS CAUSING )* *( INDENTATION THAT MAY BE STACKED. )* MAXKEYLENGTH = 10; *( THE MAXIMUM LENGTH (IN CHARACTERS) OF A )* *( PASCAL RESERVED KEYWORD. )* MAXLINESIZE = 72; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A )* *( LINE OUTPUT BY THE PRETTYPRINTER. )* SLOFAIL1 = 30; *( UP TO THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; *( UP TO THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT2". BEYOND )* *( THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE - ''; TYPE KEYSYMBOL = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, CRAFTER ); PROGRAM PRETTYPRINT *( FROM )* INPUT, *( TO )* OUTPUT ); CONST MAXSYMBOLSSIZE = 200; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A)* *( SYMBOL SCANNED BY THE LEXICAL SCANNER. )* MAXSTACKSIZE = 100; *( THE MAXIMUM NUMBER OF SYMBOLS CAUSING )* *( INDENTATION THAT MAY BE STACKED. )* MAXKEYLENGTH = 10; *( THE MAXIMUM LENGTH (IN CHARACTERS) OF A )* *( PASCAL RESERVED KEYWORD. )* MAXLINESIZE = 72; *( THE MAXIMUM SIZE (IN CHARACTERS) OF A )* *( LINE OUTPUT BY THE PRETTYPRINTER. )* SLOFAIL1 = 30; *( UP TO THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; *( UP TO THIS COLUMN POSITION, EACH TIME )* *( "IDENTBYTAB" IS INVOKED, THE MARGIN )* *( WILL BE INDENTED BY "INDENT2". BEYOND )* *( THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE - ''; TYPE KEYSYMBOL = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, CRAFTER ); OPTIONSET = SET OF OPTION KEYSYMSET = SET OF KEYSYMBOL; TABLEENTRY = RECORD OPTIONSELECTED : OPTIONSET; DINDENTSYMBOLS : KEYSYMSET; GOBBLETERMINATORS : KEYSYMSET END; OPTIONTABLE = ARRAY [ KEYSYMBOL ] OF TABLEENTRY; KEY = PACKED ARRAY [ 1..MAXKEYLENGTH ] OF CHAR; KEYWORDTABLE = ARRAY [PROGSYM..UNTILSYM ] OF KEY; SPECIALCHAR = PACKED ARRAY [ 1..2 ] OF CHAR; DBLCHRSET = SET OF BECOMES..OPENCOMMENT; DBLCHARTABLE = ARRAY [ BECOMES..OPENCOMMENT ] OF SPECIALCHAR; SGLCHARTABLE = ARRAY [ SEMICOLON..PERIOD ] OF CHAR; STRING = ARRAY [ 1..MAXSYMBOLSIZE ] OF CHAR; SYMBOL = RECORD NAME : KEYSYMBOL; VALU : STRING; LENGTH : INTEGER; SPACESBEFORE : INTEGER; CRSBEFORE : INTEGER END; SYMBOLINFO = ^SYMBOL; CHARNAME = ( LETTER, DIGIT, BLANK, QUOTE, ENDOFLINE, FILEMARK, OTHERCHAR ); CHARINFO = RECORD NAME : CHARNAME; VALU : CHAR END; STACKENTRY = RECORD INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER END; SYMBOLSTACK = ARRAY [ 1..MAXSTACKSIZE ] OF STACKENTRY; VAR RECORDSEEN: BOOLEAN; CURRCHAR, NEXTCHAR: CHARINFO; CURRSYM, NEXTSYM: SYMBOLINFO; CRPENDING: BOOLEAN; PPOPTION: OPTIONTABLE; KEYWORD: KEYWORDTABLE; DBLCHARS: DBLCHRSET; DBLCHAR: DBLCHARTABLE; SGLCHAR: SGLCHARTABLE; STACK: SYMBOLSTACK; TOP : INTEGER; STARTPOS, *(STARTING POSITION OF LAST SYMBOL WRITTEN )* <<<. CURRLINEPOS, CURRMARGIN : INTEGER; PROCEDURE GETCHAR ( *( FROM INPUT )* *( UPDATING )* VAR NEXTCHAR : CHARINFO; *( RETURNING )* VAR CURRCHAR : CHARINFO ); BEGIN *( GETCHAR )* CURRCHAR := NEXTCHAR; WITH NEXTCHAR DO BEGIN IF EOF(INPUT) THEN NAME := FILEMARK ELSE IF EOLN(INPUT) THEN NAME := ENDOFLINE ELSE IF INPUT^IN ['A'..'Z'] THEN NAME := DIGIT ELSE IF INPUT^IN ['O'..'9'] THEN NAME := DIGIT ELSE IF INPUT^= '''' THEN NAME := QUOTE ELSE IF INPUT^= SPACE THEN NAME := BLANK ELSE NAME := OTHERCHAR; IF NAME IN [ FILEMARK, ENDOFLINE ] THEN VALU := SPACE ELSE VALU := INPUT^; IF NAME <> FILEMARK THEN GET(INPUT) END *(WITH)* END; *( GETCHAR )* PROCEDURE STORENEXTCHAR *( FROM INPUT )* *( UPDATING )* VAR LENGTH : INTEGER; VAR CURRCHAR, NEXTCHAR : CHARINFO; :( PLACING IN )* VAR VALU : STRING ); BEGIN *( STORENEXTCHAR )* GETCHAR( *( FROM INPUT )* *( UPDATING )* NEXTCHAR, *( RETURNING )* CURRCHAR ); IF LENGTH < MAXSYMBOLSIZE THEN BEGIN LENGTH := LENGTH + 1; VALU [LENGTH] := CURRCHAR.VALU END END; *(STORENEXTCHAR )* PROCEDURE SKIPSPACES ( *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; *( RETURNING )* VAR SPACESBEFORE, CRSBEFORE : INTEGER ); BEGIN *( SKIPSPACES )* SPACESBEFORE := 0; CRSBEFORE := 0; WHILE NEXTCHAR.NAME IN [ BLANK, ENDOFLINE ] DO BEGIN GETCHAR( *( FROM INPUT )* *( UPDATING )* NEXTCHAR, :( RETURNING )* CURRCHAR ); CASE CURRCHAR.NAME OF BLANK, : SPACESBEFORE := SPACESBEFORE+1; ENDOFLINE : BEGIN CRSBEFORE := CRSBEFORE+1; SPACESBEFORE := 0 END END *( CASE )* END *( WHILE )* END; *( SKIPSPACES )* PROCEDURE GETCOMMENT ( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GET COMMENT )* NAME := OPENCOMMENT; WHILE NOT ( ((CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')')) OR (NEXTCHAR.NAME = ENDOFLINE) OR (NEXTCHAR.NAME = FILEMARK)) DO STORENEXTCHAR ( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); IF (CURRCHAR.VALU = '*') AND (NEXTCHAR.VALU = ')') THEN BEGIN STOENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, :( IN )* VALU ); NAME := CLOSECOMMENT END; *( GETCOMMENT )* FUNCTION IDTYPE( *( OF )* VALU : STRING; *( USING )* LENGTH : INTEGER ) *( RETURNING )* : KEYSYMBOL; VAR I: INTEGER; (TED, THIS NEXT SECTION ARE SMALL I';S - JG) KEYVALU: KEY; HIT: BOOLEAN; THISKEY: KEYSYMBOL; BEGIN *( IDTYPE )* IDTYPE := OTHERSYM;  IF LENGTH <= MAXKEYLENGTH THEN BEGIN FOR I := 1 TO LENGTH DO KEYVALU [I] := VALU [I]; FOR I := LENGTH+1 TO MAXKEYLENGTH DO KEYVALU [I] := SPACE; THISKEY := PROGSYM; HIT := FALSE; WHILE NOT(HIT OR (THISKEY = SUCC(UNTILSYM))) DO IF KEYVALU = KEYWORD [THISKEY] THEN HIT := TRUE ELSE THISKEY := SUCC(THISKEY); IF HIT THEN IDTYPE := THISKEY END; END; *( IDTYPE )* PROCEDURE GETIDENTIFIER ( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; :( RETURNING )* VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GETIDENTIFIER )* WHILE NEXTCHAR.NAME IN [ LETTER,DIGIT ] DO STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); NAME := IDTYPE( *( OF )* VALU, *( USING )* LENGTH ); IF NAME IN [ RECORDSYM, CASESYM, ENDSYM ] THEN CASE NAME OF RECORDSYM : RECORDSEEN := TRUE; CASESYM : IF RECORDSEEN THEN NAME := CASEVARSYM; ENDSYM : RECORDSEEN := FALSE END *( CASE )* END; *( GETIDENTIFIER )* PROCEDURE GETNUMBER( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; *( RETURNING )* VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GETNUMBER )* WHILE NEXTCHAR.NAME = DIGIT DO STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); NAME := OTHERSYM END; *( GETNUMBER )* PROCEDURE GETCHARLITERAL( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; *( RETURNING )* VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GETCHARLITERAL )* WHILE NEXTCHAR.NAME = QUOTE DO BEGIN STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); WHILE NOT(NEXTCHAR.NAME IN [ QUOTE, ENDOFLINE, FILEMARK ]) DO STORENEXTCHAR( *(FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); IF NEXTCHAR.NAME = QUOTE THEN STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ) END; NAME := OTHERSYM END; *( GETCHARLITERAL )* FUNCTION CHARTYPE( *( OF )* CURRCHAR, NEXTCHAR : CHARINFO ) *( RETURNING )* : KEYSYMBOL; VAR NEXTTWOCHARS: SPECIALCHAR; HIT: BOOLEAN; THISCHAR: KEYSYMBOL; BEGIN *( CHARTYPE )* NEXTTWOCHARS[1] := CURRCHAR.VALU; NEXTTWOCHARS[2] := NEXTCHAR.VALU; THISCHAR := BECOMES; := FALSE; WHILE NOT(HIT OR (THISCHAR = CLOSECOMMENT)) DO IF NEXTTWOCHARS = DBLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR); BEGIN *( GETCHARLITERAL )* WHILE NEXTCHAR.NAME = QUOTE DO BEGIN STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); WHILE NOT(NEXTCHAR.NAME IN [ QUOTE, ENDOFLINE, FILEMARK ]) DO STORENEXTCHAR( *(FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); IF NEXTCHAR.NAME = QUOTE THEN STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ) END; NAME := OTHERSYM END; *( GETCHARLITERAL )* FUNCTION CHARTYPE( *( OF )* CURRCHAR, NEXTCHAR : CHARINFO ) *( RETURNING )* : KEYSYMBOL; VAR NEXTTWOCHARS: SPECIALCHAR; HIT: BOOLEAN; THISCHAR: KEYSYMBOL; BEGIN *( CHARTYPE )* NEXTTWOCHARS[1] := CURRCHAR.VALU; NEXTTWOCHARS[2] := NEXTCHAR.VALU; THISCHAR := BECOMES; := FALSE; WHILE NOT(HIT OR (THISCHAR = CLOSECOMMENT)) DO IF NEXTTWOCHARS = DBLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR); IF NOT HIT THEN BEGIN THISCHAR := SEMICOLON; WHILE NOT(HIT OR (PRED(THISCHAR) = PERIOD)) DO IF CURRCHAR.VALU = SGLCHAR [THISCHAR] THEN HIT := TRUE ELSE THISCHAR := SUCC(THISCHAR) END; IF HIT THEN CHARTYPE := THISCHAR ELSE CHARTYPE := OTHERSYM END; *( CHARTYPE )* PROCEDURE GETSPCIALCHAR( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; *( RETURNING)* VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GETSPCIALCHAR )* STOENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR, NEXTCHAR, *( IN )* VALU ); NAME := CHARTYPE( *( OF )* CURRCHAR, NEXTCHAR ); IF NAME IN DBLCHARS THEN STORENEXTCHAR( *( FROM INPUT )* *( UPDATING )* LENGTH, CURRCHAR NEXTCHAR, *( IN )* VALU ) END; *( GETSPECIALCHAR )* PROCEDURE GETNEXTSYMBOL( *( FROM INPUT )* *( UPDATING )* VAR CURRCHAR, NEXTCHAR : CHARINFO; *( RETURNING )* VAR NAME : KEYSYMBOL; VAR VALU : STRING; VAR LENGTH : INTEGER ); BEGIN *( GETNEXTSYMBOL )* CASE NEXTCHAR.NAME OF LETTER : GETIDENTIFIER( *( FROM INPUT )* *( UPDATING )* CURRCHAR, NEXTCHAR, *( RETURNING )* NAME, VALU, LENGTH ); DIGIT : GETNUMBER( *( FROM INPUT )* *( UPDATING )* CURRCHAR NEXTCHAR, *( RETURNING )* NAME, VALU, LENGTH ); QUOTE : GETCHARLITERAL( *( FROM INPUT )* *( UPDATING )* CURRCHAR, NEXTCHAR, *( RETURNING )* NAME, VALU LENGTH ); OTHERCHAR : BEGIN GETSPECIALCHAR( *)_( FROM INPUT )* *( UPDATING )* CURRCHAR, NEXTCHAR, *( RETURNING )* NAME, VALU, LENGTH ); IF NAME = OPENCOMMENT THEN GETCOMMENT( *( FROM INPUT )* *( UPDATING )* CURRCHAR, NEXTCHAR, NAME, VALU, LENGTH ) END; FILEMARK : NAME := ENDOFFILE END *( CASE )* END; *( GETNEXTSYMBOL )* PROCEDURE GETSYMBOL( *( FROM INPUT )* *( UPDATING )* VAR NEXT SYM : SYMBOLINFO; *( RETURNING )* VAR CURRSYM : SYMBOLINFO ); VAR DUMMY: SYMBOLINFO; BEGIN *( GETSYMBOL )* DUMMY := CURRSYM; CURRSYM := NEXTSYM; NEXTSYM := DUMMY ; WITH NEXTSYM^ DO BEGIN SKIPSPACES( *( UPDATING )* CURRCHAR, NEXTCHAR, *( RETURNING )* SPACESBEFORE, CRSBEFORE ); LENGTH := 0; IF CURRSYM^.NAME = OPEN COMMENT THEN GETCOMMENT( *( FROM INPUT )* *( UPDATING )* CURRCHAR, NEXTCHAR, *( RETURNING )* NAME, VALU, LENGTH ) END *( WITH )* END; *( GETSYMBOL )* PROCEDURE INITIALIZE( *( RETURNING )* VAR TOPOFSTACK : INTEGER; VAR CURRLINEPOS, CURRMARGIN : INTEGER; VAR KEYWORD : KEYWORDTABLE; VAR DBLCHARS : DBLCHRSET; VAR DBLCHAR : DBLCHARTABLE; VAR SGLCHAR : SGLCHARTABLE; VAR RECORDSEEN : BOOLEAN; VAR CURRCHAR, NEXTCHAR : CHARINFO; VAR CURRSYM, NEXTSYM : SYMBOLINFO; VAR PPOPTION : OPTIONTABLE ); BEGIN *( INITIALIZE )* LINELIMIT(OUTPUT,MAXINT); TOPOFSTACK := 0; CURRLINEPOS := 0; CURRMARGIN := 0; KEYWORD [ PROGSYM ] := 'PROGRAM '; KEYWORD [ FUNCSYM ] := 'FUNCTION '; KEYWORD [ PROCSYM ] := 'PROCEDURE '; KEYWORD [ LABELSYM ] := 'LABEL '; KEYWORD [ CONSTSYM ] := 'CONST '; KEYWORD [ TYPESYM ] := 'TYPE '; KEYWORD [ VARSYM ] := 'VAR '; KEYWORD [ BEGINSYM ] := 'BEGIN '; KEYWORD [ REPEATSYM ] := 'REPEAT '; KEYWORD [ RECORDSYM ] := 'RECORD '; KEYWORD [ CASESYM ] := 'CASE '; KEYWORD [ CASEVARSYM ] := 'CASE '; KEYWORD [ OFSYM ] := 'OF '; KEYWORD [ FORSYM ] := 'FOR '; KEYWORD [ WHILESYM ] := 'WHILE '; KEYWORD [ WITHSYM ] := 'WITH '; KEYWORD [ DOSYM ] := 'DO '; KEYWORD [ IFSYM ] := 'IF '; KEYWORD [ THENSYM ] := 'THEN '; KEYWORD [ ELSESYM ] := 'ELSE '; KEYWORD [ ENDSYM ] := 'END '; KEYWORD [ UNTILSYM ] := 'UNTIL '; DBLCHARS := [ BECOMES, OPENCOMMENT ]; DBLCHAR [ BECOMES ] := ':='; DBLCHAR [ OPENCOMMENT ] := '(*'; SGLCHAR [ SEMICOLON ] := ';'; SGLCHAR [ COLON ] := ':'; SGLCHAR [ EQUALS ] := '='; SGLCHAR [ OPENPAREN ] := '('; SGLCHAR [ CLOSEPAREN ] := ')'; SGLCHAR [ PERIOD ] := '.'; RECORDSEEN := FALSE; GETCHART( *( FROM INPUT )* *( UPDATING )* NEXTCHAR, *( RETURNING )* CURRCHAR ); NEW(CURRSYM); NEW(NEXTSYM); GETSYMBOL( *( FROM INPUT )* *( UPDATING )* NEXTSYM, *( RETURNING )* CURRSYM ); WITH PPOPTION [ PROGSYM ] DO BEGIN OPTIONSSELECTED := [BLANKLINEBEFORE; SPACEAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ FUNCSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM TAPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PROCSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ LABELSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, SPACEAFTER, IDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CONSTSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [LABELSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ TYPESYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [LABELSYM, CONSTSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ VARSYM ] DO BEGIN OPTIONSSELECTED := [ BLANKLINEBEFORE, DINDENTONKEYS, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ BEGINSYM ] DO BEGIN OPTIONSSELECTED := [DINDENTONKEYS, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ LABELSYM, CONSTSYM, TYPESYM, VARSYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ REPEATSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ RECORDSYM ] DO BEGIN OPTIONSSELECTED := [ IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CASESYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [] GOBBLETERMINATORS := [ OFSYM ] END; WITH PPOPTION [ CASEVARSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ OFSYM ] END; WITH PPOPTION [ OFSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; WITH PPOPTION [ FORSYM ] DO BEGIN OPTIONSSELECTED := SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; WITH PPOPTION [ WHILESYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; WITH PPOPTION [ WITHSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ DOSYM ] END; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ DOSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ IFSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ THENSYM ] END; WITH PPOPTION [ THENSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ELSESYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, ELSESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, CASEVARSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ UNTILSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, SPACEAFTER, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ]; END; WITH PPOPTION [ BECOMES ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ] END; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ DOSYM ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, SPACEBEFORE ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ IFSYM ] DO BEGIN OPTIONSSELECTED := [ SPACEAFTER, IDENTBYTAB, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ THENSYM ] END; WITH PPOPTION [ THENSYM ] DO BEGIN OPTIONSSELECTED := [ INDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ELSESYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, IDENTBYTAB, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, ELSESYM ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, CASEVARSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ UNTILSYM ] DO BEGIN OPTIONSSELECTED := [ CRBEFORE, DINDENTONKEYS, DINDENT, SPACEAFTER, GOBBLESYMBOLS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ]; END; WITH PPOPTION [ BECOMES ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ ENDSYM, UNTILSYM, ELSESYM, SEMICOLON ] END; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OPENPAREN ] DO BEGIN OPTIONSSELECTED := [ GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ CLOSEPAREN] END; WITH PPOPTION [ CLOSEPAREN ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PERIOD ] DO BEGIN OPTIONSSELCTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDOFFILE ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OTHERSYM ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMNATORS := [] END END; *( INITIALIZE )* FUNTION STACKEMPTY *( RETURNING )* : BOOLEAN; BEGIN *( STACKEMPTY )* IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE END; *( STACKEMPTY )* FUNCTION STACKFULL *( RETURNING )* : BOOLEAN; BEGIN *( STACKFULL )* IF TOP = MAXSTACKSIZE THEN STACKFULL := TRUE ELSE STACKFULL := FALSE END; *( STACKFULL )* PROCEDURE POPSTACK( *( RETURNING ): VAR INDENTSYMBOL : KEYSYMBOL; VAR PREVMARGIN : INTEGER); BEGIN *( POPSTACK )* IF NOT STACKEMPTY THEN BEGIN INDENTSYMBOL := STACK[TOP].INDENTSYMBOL; PREVMARGIN := STACK[TOP].PREVMARGIN; TOP := TOP - 1 END ELSE BEGIN INDENTSYMBOL := OTHERSYM; PREVMARGIN := 0 END END; *( POPSTACK )* PROCEDURE PUSHSTACK( *( USING )* INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER ); BEGIN *( PUSHSTACK )* TOP := TOP + 1 STACK[TOP].INDENTSYMBOL := INDENTSYMBOL; STACK[TOP].PREVMARGIN := PREVMARGIN END; *( PUSHSTACK )* PROCEDURE WRITECRS( *( USING )* NUMBEROFCRS : INTEGER; *( UPDATING )* VAR CURRLINEPOS : INTEGER *( WRITING TO OUTPUT )* ); VAR I: INTEGER; (TED THIS IS SMALL I) BEGIN *( WRITECRS )* IF NUMBEROFCRS > 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; *( WRITECRS )* PROCEDURE INSERTCR( *( UPDATING )* VAR CURRSYM : SMBOLINFO *( WRITING TO OUTPUT )* ); CONST ONCE = 1; BEGIN *( INSERTER )* IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); CURRSYM^.SPACESBEFORE := 0 END END; *( INSERTER )* PROCEDURE INSERTBLANKLINE( *( UPDATING )* VAR CURRSYM : SYMBOLINFO *( WRITING TO OUTPUT )* ); CONST ONCE = 1; TWICE - 2; BEGIN *( INSERTBLANKLINE )* IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ) ELSE WRITECRS( TWICE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); CURRSYM^.SPACESBEFORE := 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ) END; *( INSERTBLANKLINE )* PROCEDURE 1SHIFTON( *( USING )* DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN *( 1SHIFTON )* IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( *( RETURNING )* INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( *( USING )* INDENTSYMBOL, PREVMARGIN ) END END; *( 1SHIFTON )* PROCEDURE 1SHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN *( 1SHIFT )* IF NOT STACKEMPTY THEN BEGIN POPSTACK( *( RETURNING )* INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; *( 1SHIFT )* PROCEDURE INSERTSPACE( *( USING )* VAR SYMBOL : SYMBOLINFO *( WRITING TO OUTPUT )* ); BEGIN *( INSERTSPACE )* IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END END; *( INSERTSPACE )*  PROCEDURE MOVELINEPOST( *( TO )* NEWLINEPOS : INTEGER; *( FROM )* VAR CURRLINEPOS : INTEGER *( WRITING TO OUTPUT )* ); VAR I: INTEGER; (TED SMALL I) BEGIN *( MOVELINEPOS )* FOR I := CURRLINEPOS+1 TO NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; *( MOVELINEPOS )* PROCEDURE PRINTSYMBOL( *( IN )* CURRSYM : SYMBOLINFO; *( UPDATING )* VAR CURRLINEPOS : INTEGER *( WRITING TO OUTPUT )* ); VAR I: INTEGER; (TED SMALL I) BEGIN *( PRINTSYMBOL )* WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; *( SAVE START POS FOR TAB PURPOSES )* <<<. CURRLINEPOS := CURRLINEPOS + LENGTH END *( WITH )* END; *( PRINTSYMBOL )* PROCEDURE PPSYMBOL( *( IN )* CURRSYM : SYMBOLINFO *( WRITING TO OUTPUT )* ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN *( PPSYMBOL )* WITH CURRSYM^ DO BEGIN WRITECRS( *( USING )* CRSBEFORE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( *( TO )* NEWLINEPOS, *( FROM )* CURRLINEPOS *( IN OUTPUT )* ); PRINTSYMBOL( *( IN )* CURRSYM, *( UPDATING )* CURRLINEPOS *( WRITING TO OUTPUT )* ) END *( WITH )* END; *( PPSYMBOL )* PROCEDURE RSHIFTTOCLP( *( USING )* CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( *( SYMBOLS FROM INPUT )* *( UP TO )* TERMINATORS : KEYSYMSET; *( UPDATING )* VAR CURRSYM, NEXTSYM : SYMBOLINFO *( WRITING TO OUTPUT )* ); BEGIN *( GOBBLE )* RSHIFTTOCLP( *( USING )* CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( *( FROM INPUT )* *( UPDATING )* NEXTSYM, *( RETURNING )* CURRSYM ); PPSYMBOL( *( IN)* CURRSYM *( WRITING TO OUTPUT )* ) END; *( WHILE )* 1SHIFT END; *( GOBBLE )* PROCEDURE RSHIFT( *( USING )* CURRSYM : KEYSMBOL ); BEGIN *( RSHIFT )* IF NOT STACKFULL THEN PUSHSTACK( *( USING )* CURRSYM, CURRMARGIN); *( IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. )* <<<. IF STARTPOS > CURRMARGIN <<<. THEN <<<. CURRMARGIN := STARTPOS; <<<. IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; *( RSHIFT )* PROCEDURE RSHIFTTOCLP; BEGIN *( RSHIFTTOCLP )* IF NOT STACKFULL THEN PUSHSTACK( *( USING )* CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; *( RSHIFTTOCLP )* BEGIN *( PRETTYPRINT )* INITIALIZE( TOP CURRLINEPOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSYMBOL( *( FROM INPUT )* *( UPDATING )* NEXTSYM, *( RETURNING )* CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( *( USING )* CURRSYM *( WRITING TO OUTPUT )* ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_*( USNG )* CURRSYM *( WRITING TO OUTPUT )* ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN 1SHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN 1SHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( *( USING )* CURRSYM *( WRITING TO OUTPUT )* ); PPSYMBOL( v*( IN )* CURRSYM *( WRITING TO OUTPUT )* ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( *( USING )* NEXTSYM *( WRITING TO OUTPUT )* ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( *( USING )* CURRSYM^.NAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( *( USING )* CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( *( SYMBOLS FROM INPUT )* *( UP TO )* GOBBLETERMINATORS, *( UPDATING )* CURRSYM, NEXTSYM *( WRITING TO OUTPUT )* IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END *( WITH )* END; *( WHILE )* IF CRPENDING THEN WRITELN(OUTPUT) END. TOTALLSC Rational Data Systems Pascal Compiler [release RDOS.2.11, overlaid] "TOTAL.PA" compiled on Thursday 1 January 1981 at 12:29:40 using the option /Swapping. line seg proc off nst 1 0 1 1 PROGRAM TOTAL(INPUT,OUTPUT); 2 0 1 1 3 0 1 1 TYPE ALPHANUMERIC = STRING[99]; 4 0 1 1 5 0 1 1 VAR STR : ALPHANUMERIC; 6 0 1 51 TOTAL,AMOUNT : REAL; 7 0 1 55 I,CHECKNUMBER : INTEGER; 8 0 1 57 INFILE,OUTFILE : TEXT; 9 0 1 317 10 0 1 317 11 0 2 1 FUNCTION GETREAL( STR : ALPHANUMERIC;VAR I : INTEGER) : REAL; 12 0 2 55 {STR : STRING[99] = INPUT LINE 13 0 2 55 I : INTEGER = START CHARACTER POSINTION IN LINE FOR SCANNER} 14 0 2 55 15 0 2 55 LABEL 1,2; 16 0 2 55 17 0 2 55 TYPE WHOLORFRACT = (WHOLE,FRACTIONAL) ; 18 0 2 55 SIGNOF = (PLUS,MINUS); 19 0 2 55 20 0 2 55 VAR LEN : INTEGER; 21 0 2 56 FGETREAL,PLACE :REAL; 22 0 2 60 PART : WHOLORFRACT ; 23 0 2 61 SIGN : SIGNOF; 24 0 2 62 25 0 2 62 26 0 2 0 0 BEGIN 27 0 2 0 0 SIGN := PLUS; 28 0 2 8 0 PART := WHOLE;{assume while part first} 29 0 2 11 0 FGETREAL := 0; 30 0 2 17 0 LEN := LENGTH(STR); 31 0 2 22 0 { WRITELN('LEN=',LEN);} 32 0 2 22 0 1: IF I <= LEN THEN {ignore leading spaces and tabs,etc.} 33 0 2 29 2 IF NOT (STR[I] IN ['0'..'9','-','.']) THEN BEGIN 34 0 2 51 2 I := I+1;GOTO 1; 35 0 2 59 2 END 36 0 2 59 1 ELSE 37 0 2 61 3 IF STR[I] = '-' THEN BEGIN 38 0 2 71 3 I := I+1; 39 0 2 77 3 SIGN := MINUS; 40 0 2 80 3 GOTO 1; 41 0 2 82 3 END 42 0 2 82 2 ELSE 43 0 2 84 3 2: IF I <= LEN THEN 44 0 2 91 4 IF STR[I] IN ['0'..'9'] THEN 45 0 2 112 5 BEGIN 46 0 2 112 5 CASE PART OF 47 0 2 116 5 WHOLE : 48 0 2 116 6 BEGIN 49 0 2 116 6 FGETREAL := FGETREAL*10-ORD('0')+ORD(STR[I]); 50 0 2 138 6 { REALPRINT(FGETREAL);} 51 0 2 138 6 { WRITELN(' WHOLE');} 52 0 2 138 5 END; 53 0 2 140 5 54 0 2 140 6 FRACTIONAL : BEGIN 55 0 2 140 6 FGETREAL := FGETREAL + (ORD(STR[I])-ORD('0'))/PLACE; 56 0 2 163 6 PLACE := PLACE*10; 57 0 2 174 6 { REALPRINT(FGETREAL);} 58 0 2 174 6 { WRITELN(' FP');} 59 0 2 174 6 END 60 0 2 174 5 END; {case} 61 0 2 188 5 I := I+1; 62 0 2 194 5 GOTO 2 63 0 2 196 5 END 64 0 2 196 5 ELSE IF STR[I] = '.' THEN 65 0 2 208 6 BEGIN PART := FRACTIONAL;I := I+1 ;PLACE := 10; 66 0 2 223 6 { WRITE(' FRACTION.');} 67 0 2 223 6 GOTO 2; 68 0 2 225 6 END 69 0 2 225 6 70 0 2 225 6 ELSE IF STR[I] = ',' THEN 71 0 2 237 0 BEGIN I := I+1;GOTO 2 END; 72 0 2 245 0 73 0 2 245 0 CASE SIGN OF 74 0 2 249 0 PLUS : GETREAL := FGETREAL; 75 0 2 259 0 MINUS : GETREAL := -FGETREAL; 76 0 2 270 0 END;{case} 77 0 2 282 0 END;{getreal} 78 0 2 306 0 79 0 2 306 0 (*$I GETREAL.PI *) 80 0 2 306 0 81 0 3 1 PROCEDURE REALPRINT (VAR OUTFILE : TEXT;R : REAL); 82 0 3 4 TYPE SIGNOF = (PLUS,MINUS); 83 0 3 4 84 0 3 4 VAR I,J,CHARPOS : INTEGER; 85 0 3 7 STR : STRING[15]; 86 0 3 15 SIGN : SIGNOF; 87 0 3 16 88 0 3 16 89 0 3 16 90 0 4 1 PROCEDURE DECDIGIT; 91 0 4 1 92 0 4 1 VAR R1 : INTEGER; 93 0 4 2 94 0 4 0 0 BEGIN 95 0 4 0 0 { WRITE(' J=',J,' CHARPOS=',CHARPOS);} 96 0 4 0 0 R1 := TRUNC(R/PWROFTEN (J)); 97 0 4 15 0 { WRITELN(' R1=',R1);} 98 0 4 15 0 R := R-R1*PWROFTEN (J); 99 0 4 34 0 STR[CHARPOS] := CHR(R1+48); 100 0 4 50 0 CHARPOS := CHARPOS+1; 101 0 4 58 0 IF ((J = 6) OR (J = 3)) THEN 102 0 4 71 1 BEGIN STR[CHARPOS] := ','; 103 0 4 80 1 CHARPOS := CHARPOS+1; 104 0 4 88 0 END; 105 0 4 88 0 END;{DECDIGIT} 106 0 4 100 0 107 0 5 1 PROCEDURE FRACTDIGIT; 108 0 5 1 109 0 5 1 VAR R1 : INTEGER; 110 0 5 2 111 0 5 0 0 BEGIN 112 0 5 0 0 { WRITE(' J=',J,'CHARPOS=',CHARPOS);} 113 0 5 0 0 R1 := TRUNC(R*PWROFTEN(J)); 114 0 5 15 0 { WRITELN(' R1=',R1);} 115 0 5 15 0 R := R-R1/PWROFTEN(J); 116 0 5 34 0 STR[CHARPOS] := CHR(R1+48); 117 0 5 50 0 CHARPOS := CHARPOS+1; 118 0 5 58 0 END;{FRACTDIGIT} 119 0 5 70 0 120 0 5 70 0 121 0 3 0 0 BEGIN 122 0 3 0 0 {do decimal part first} 123 0 3 0 0 124 0 3 0 0 IF R >= 0 THEN SIGN := PLUS ELSE 125 0 3 15 0 BEGIN R := -R; SIGN := MINUS;END; 126 0 3 27 0 R := R + 0.005; 127 0 3 43 0 128 0 3 43 0 STR :=' '; 129 0 3 64 0 I :=8; 130 0 3 67 0 131 0 3 67 1 REPEAT I := I-1 132 0 3 68 0 UNTIL ( (I =0) OR (PWROFTEN(I) <= R)); 133 0 3 87 0 134 0 3 87 0 CHARPOS := 15-I-3-I DIV 3; 135 0 3 98 0 IF SIGN = MINUS THEN STR[CHARPOS-1] :='-'; 136 0 3 112 0 137 0 3 112 0 FOR J := I DOWNTO 0 DO DECDIGIT; 138 0 3 141 0 139 0 3 141 0 STR[CHARPOS] := '.'; 140 0 3 147 0 CHARPOS := CHARPOS+1; 141 0 3 152 0 142 0 3 152 0 FOR J := 1 TO 2 DO FRACTDIGIT; 143 0 3 180 0 144 0 3 180 0 WRITE(OUTFILE,STR); 145 0 3 189 0 END; 146 0 3 208 0 (*$I REALPRINT.PI *) 147 0 6 1 FUNCTION GETINTEGER( STR : ALPHANUMERIC;VAR I : INTEGER) : INTEGER; 148 0 6 54 149 0 6 54 150 0 6 54 LABEL 1,2,3; 151 0 6 54 152 0 6 54 TYPE SIGNOF = (PLUS,MINUS); 153 0 6 54 VAR LEN,FNUMB : INTEGER; 154 0 6 56 SIGN :SIGNOF; 155 0 6 57 156 0 6 57 157 0 6 0 0 BEGIN 158 0 6 0 0 FNUMB := 0; 159 0 6 8 0 SIGN := PLUS; 160 0 6 11 0 LEN := LENGTH(STR); 161 0 6 16 0 { WRITELN('LEN=',LEN);} 162 0 6 16 0 1: IF I <= LEN THEN 163 0 6 23 2 IF NOT (STR[I] IN ['0'..'9','-']) THEN BEGIN 164 0 6 45 2 I := I+1;GOTO 1; 165 0 6 53 2 END 166 0 6 53 3 ELSE IF STR[I] = '-' THEN BEGIN 167 0 6 65 3 I := I+1; 168 0 6 71 3 SIGN := MINUS; 169 0 6 74 3 GOTO 1; 170 0 6 76 0 END; 171 0 6 76 0 2 : IF STR[I] IN ['0'..'9'] THEN 172 0 6 96 1 BEGIN 173 0 6 96 1 { WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB);} 174 0 6 96 1 FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); 175 0 6 111 1 I := I+1; 176 0 6 117 1 IF I<= LEN THEN GOTO 2; 177 0 6 126 0 END; 178 0 6 126 0 3: CASE SIGN OF 179 0 6 130 0 PLUS : GETINTEGER := FNUMB; 180 0 6 136 1 MINUS : GETINTEGER := -FNUMB 181 0 6 136 0 END;{CASE} 182 0 6 154 0 END;{getinteger} 183 0 6 170 0 (*$I GETINTEGER.PI *) 184 0 6 170 0 185 0 1 0 0 BEGIN 186 0 1 0 0 WRITE(' INPUT FILE NAME? '); 187 0 1 145 0 READLN(STR); 188 0 1 170 0 FILETITLE(INFILE,STR); 189 0 1 178 0 RESET(INFILE); 190 0 1 185 0 191 0 1 185 0 WRITE(' OUTPUT FILE NAME? '); 192 0 1 217 0 READLN(STR); 193 0 1 242 0 FILETITLE(OUTFILE,STR); 194 0 1 249 0 RESET(OUTFILE); 195 0 1 255 0 196 0 1 255 0 TOTAL := 0.0; 197 0 1 266 0 WHILE NOT EOF(INFILE) 198 0 1 273 1 DO BEGIN 199 0 1 276 1 200 0 1 276 1 READLN(INFILE,STR); 201 0 1 300 1 202 0 1 300 1 I := 2; 203 0 1 303 1 { CHECKNUMBER := GETINTEGER(STR,I);} 204 0 1 303 1 AMOUNT := GETREAL(STR,I); 205 0 1 316 1 206 0 1 316 1 TOTAL := TOTAL + AMOUNT; 207 0 1 329 1 { WRITE(OUTFILE,STR[1],CHECKNUMBER : 10);} 208 0 1 329 1 REALPRINT(OUTFILE,AMOUNT); 209 0 1 338 1 WRITELN(OUTFILE); 210 0 1 343 0 END; 211 0 1 345 0 212 0 1 345 0 WRITE(OUTFILE,' ');REALPRINT(OUTFILE,TOTAL);WRITELN(OUTFILE); 213 0 1 381 0 214 0 1 381 0 END. 197810k % C 2717 1500 C 2719 4812.51 D 1545 C 2720 3920.58 C 2721 115 C 2722 76.99 C 2723 40.30 C 2724 117.43 C 2725 552.87 C 2726 127.35 C 2727 6 C 2728 20 C 2729 52.84 C 2730 5.74 DM 23.10 C 2731 50 D 592.50 C 2732 911.35 C 2733 46.85 C 2734 164.11 C 2735 1850.16 C 2736 140 D 1997 E 3059.63 C 2737 368 D 1467.50 C 2738 154.01 C 2739 33 C 2740 40 C 2741 15.15 C 2742 342.32 C 2743 10 C 2744 160 C 2745 19 C 2746 1136.47 C 2747 174.34 C 2748 208.22 C 2749 131.46 C 2750 145.75 C 2751 30 C 2752 54 C 2753 55 C 2754 569.90 C 2755 64.50 C 2756 75 CC 2757 E 3685.95 W 2710.13 C 2758 374 C 2759 115 C 2760 500 C 2761 500 C 2762 1510 1978EMP06 ?f E 570 1050.61 E 571 1069.11 E 572 1019.07 E 573 566.88 E 574 630.97 E 575 269.88 E 576 472.09 E 577 346.43 W 578 4412.14 W 579 483.00 W 580 2210.00 W 581 38.36 1978EMPMC\ff 'APPEND 1978EMP 1978EMP.01 1978EMP.03 1978EMP.04 1978EMP.05 1978EMP.06 ^ 1978EMP.07 1978EMP.08 1978EMP.09 1978EMP.10 1978EMP.11 RDSPIjr PROCEDURE READSEQUENTIAL( CHANNEL : INTEGER; VAR BUFFER : LINESTRING; VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); CONST DOTRDS = 6719; {.RDS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; TEMPPOINTER : LINEPOINTER; BEGIN MARK(HEAP); NEW(REQUEST); NEW(TEMPPOINTER); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTRDS; R0.LPTR := TEMPPOINTER; R0.INT := R0.INT+2; R1.INT := BYTESREAD; R2.INT := CHANNEL; SYSCALL(REQUEST); BUFFER.LEN := R1.INT; IF ERROR THEN WRITELN(' ERROR IN READSEQUENTIAL = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; BUFFER := TEMPPOINTER^; BYTESREAD := R1.INT; END; RELEASE(HEAP); WRITELN(' BYTESREAD = ',BYTESREAD); END; {READ SEQUENTIAL} WRLBUW5PROCEDURE WRITELINE( CHANNEL : INTEGER; BUFFER : BIGSTR; BYTESOUT : INTEGER; VAR ERR : BOOLEAN; VAR ERRNUM : INTEGER); CONST DOTWRS = 7743; {.WRS} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); STRINGPOINTER^ := BUFFER; WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTWRS; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESOUT; R2.INT := CHANNEL; SYSCALL(REQUEST); IF ERROR THEN WRITELN(' ERROR IN WRITELINE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; END; RELEASE(HEAP); END; {WRITE LINE} TEST11{ qq-PROGRAM TEST(INPUT,OUTPUT); CONST STRSIZE = 15; TYPE BYTEARRAY = PACKED ARRAY [0..20] OF CHAR; BYTEPTR = ^BYTEARRAY; BIGSTR = STRING[STRSIZE]; STRPTR = ^BIGSTR; WORDPTR = ^INTEGER; CHARPTR = ^CHAR; LINESTRING = RECORD LEN : INTEGER; {STRING LNGTH} STR : PACKED ARRAY[1..STRSIZE] OF CHAR{DATA} END; LINEPOINTER = ^ LINESTRING; REGISTER = RECORD CASE INTEGER OF 1: (INT: INTEGER); 2: (BPTR: BYTEPTR); 3: (WPTR: WORDPTR); 4: (SPTR: STRPTR); 5: (CH: CHAR); 6: (LPTR: LINEPOINTER) END; {REGISTER} SYSCALLTYPE = (SIMPLE,AOSPACKET); SYSCALLPREFIX = RECORD MODE : SYSCALLTYPE; ERROR : BOOLEAN; CALLNUM : INTEGER; R0 : REGISTER; R1 : REGISTER; R2 : REGISTER; END;{SYSCALL PREFIX} SCALLPTR = ^SYSCALLPREFIX; VAR LINE : LINESTRING; I,J : INTEGER; NBYTES : INTEGER; FILENAME : LINESTRING; DATA :LINESTRING; SYSERROR : BOOLEAN; ERRORNUMBER : INTEGER; {$I DELETE.PI} {$I WRS.PI} {$I RDS.PI} {$I CLOSE.PI} {$I CRAND.PI} {$I GCHN.PI } {$I OPEN.PI} {$I WRL.PI } {$I RDL.PI} BEGIN WRITELN('ENTER FILENAME'); READLINE(0,FILENAME ,NBYTES,SYSERROR,ERRORNUMBER); FILENAME.STR[NBYTES] := CHR(0); CRAND(FILENAME,SYSERROR,ERRORNUMBER); WRITELN('CRAND'); GCHN(I); WRITELN('OPEN'); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); { DATA.STR := '1234567890 '; DATA.STR[11] := CHR(13);} WRITELN(' ENTER DATA'); READLINE(0,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN('WRITE LINE TO DISK'); WRITELINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELINE(2,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN('CLOSE'); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN('OPEN'); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); READLINE(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); FOR J := 1 TO NBYTES DO WRITE(OUTPUT,DATA.STR[J]);WRITELN; WRITESEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN('CLOSE'); CLOSE(I,SYSERROR,ERRORNUMBER); WRITELN('OPEN'); OPEN(I,FILENAME,SYSERROR,ERRORNUMBER); READSEQUENTIAL(I,DATA,NBYTES,SYSERROR,ERRORNUMBER); FOR J := 1 TO NBYTES DO WRITE(OUTPUT,DATA.STR[J]);WRITELN; WRITESEQUENTIAL(2,DATA,NBYTES,SYSERROR,ERRORNUMBER); WRITELN; WRITELN('CLOSE'); CLOSE(I,SYSERROR,ERRORNUMBER); END. PASINTERPERM? Unknown P-Machine Error #Unimplemented P-Machine Instruction Range Error on SET Operationruction Subscript or Subrange Errornruction Integer Divide-by-ZeroErrornruction String Range ErrorZeroErrornruction SYSCALL Parameter Errorrrornruction Error Reported by Host Systemuction $Dangling Pointer (Value not in Heap) Heap Overflowter (Value not in Heap) %Attempt to EXIT an Inactive Procedure .Called Segment Can't Fit into Available Memory Call to a Non-Existent SegmentAvailable Memory 5Incomplete Read of a Segment by Host Operating System 0Attempt to Open Multiple Files Entitled 'OUTPUT'ystem .Heap Overflow During Internal ALLOCATE RoutineT'ystem Program Filename Too Longrnal ALLOCATE RoutineT'ystem Integer Multiply Overflowrnal ALLOCATE RoutineT'ystem +Unknown Error From Floating Point OperationineT'ystem (Overflow From REAL to INTEGER ConversionionineT'ystem Floating Point UnderflowTEGER ConversionionineT'ystem Floating Point OverflowwTEGER ConversionionineT'ystem Floating Point Divide-by-Zero ConversionionineT'ystem No User Program SpecifiedZero ConversionionineT'ystem /Attempt to Execute a Separately Compiled Module'ystem -Current Interpreter Does Not Support Compilerle'ystem Error on READ of Integer or Realport Compilerle'ystem Error on READ of Realger or Realport Compilerle'ystem 'PWROFTEN Function Argument Out Of Rangempilerle'ystem Overflow From EXP Function Out Of Rangempilerle'ystem "Negative Argument To SQRT FunctionRangempilerle'ystem +Non-Positive Argument To LOG or LN Functionerle'ystem Attempted GET Past End of filer LN Functionerle'ystem +Error #33: Report to Rational Data Systemserle'ystem +Error #34: Report to Rational Data Systemserle'ystem 1Requires Capability Not Generated for Interpreterstem )Field Width in Output Format Out of Rangeerpreterstem Security Violationput Format Out of Rangeerpreterstem External File Name Too Longt Out of Rangeerpreterstem "Record Number Out of Range in SEEKf Rangeerpreterstem !FILETITLE Applied to an Open FileKf Rangeerpreterstem !Attempted I/O to an Unopened FileKf Rangeerpreterstem ,Program/Interpreter Revision Incompatibilityreterstem %Non-Positive Divisor in MOD Operationibilityreterstem Integer ADD or SUBTRACT Overflowationibilityreterstem Stack Overflow SUBTRACT Overflowationibilityreterstem &Number Stack Overflow (Internal Error)bilityreterstem )Limitation of Evaluation Release Exceededityreterstem 2Unresolved Assembler References -- Must Be PLINKedtem 1Unresolved External References -- Must Be PLINKeddtem 'Program not PLINKed to this InterpreterBe PLINKeddtem IPX J VINTERPOK Copyright (C) 1980 Rational Data Systems ?OUTPUT֥֦Interpreter OK̀ʀʀ NT18 M0)PROGRAM T18(INPUT,OUTPUT); CONST AU = 65; BU = 66; CU = 67; DU = 68; AL = 97; BL = 98; CL = 99; DL = 100; VAR CHRIN : INTEGER; FUNCTION GCHA:INTEGER;EXTERNAL; PROCEDURE PCHA(CHRIN:INTEGER);EXTERNAL; BEGIN REPEAT BEGIN CHRIN := GCHA; PCHA(CHRIN); IF((CHRIN >= 65) AND (CHRIN<=68)) OR ((CHRIN >=97) AND (CHRIN<=100)) THEN CASE CHRIN OF AU,BU,CU,DU : WRITELN(OUTPUT,'UPPERCASE'); AL:,BL,CL,DL : WRITELN(OUTPUT,'LOWERCASE'); END END UNTIL EOF(INPUT) END. INTGET O*PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; VAR STR : ALPHANUMERIC; I : INTEGER; FUNCTION NUMB( STR : ALPHANUMERIC) : INTEGER; LABEL 1,2; VAR I,LEN,FNUMB : INTEGER; BEGIN FNUMB := 0; I :=1; LEN := LENGTH(STR); WRITELN('LEN=',LEN); 1: IF I <= LEN THEN IF ORD(STR[I]) IN [9,32] THEN BEGIN I := I+1;GOTO 1; END ELSE 2: IF I <= LEN THEN IF STR[I] IN ['0'..'9'] THEN BEGIN WRITELN(' FNUMB',ORD(STR[I]),' ',FNUMB); FNUMB := FNUMB*10-ORD('0')+ORD(STR[I]); I := I+1; NUMB := FNUMB; GOTO 2 END ELSE EXIT(NUMB) ELSE EXIT(NUMB) END; BEGIN REPEAT BEGIN READLN(STR); WRITELN(' ',NUMB(STR),'=NUMB'); END; UNTIL EOF(INPUT); END. PETTYPRIN01J RI PROGRAM PRETTYPRINT ( (* FROM *) INPUT, (* TO *) OUTPUT ); CONST MAXSYMBOLSSIZE = 200; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A*) (* SYMBOL SCANNED BY THE LEXICAL SCANNER. *) MAXSTACKSIZE = 100; (* THE MAXIMUM NUMBER OF SYMBOLS CAUSING *) (* INDENTATION THAT MAY BE STACKED. *) MAXKEYLENGTH = 10; (* THE MAXIMUM LENGTH (IN CHARACTERS) OF A *) (* PASCAL RESERVED KEYWORD. *) MAXLINESIZE = 72; (* THE MAXIMUM SIZE (IN CHARACTERS) OF A *) (* LINE OUTPUT BY THE PRETTYPRINTER. *) SLOFAIL1 = 30; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT1". SLOFAIL2 = 48; (* UP TO THIS COLUMN POSITION, EACH TIME *) (* "IDENTBYTAB" IS INVOKED, THE MARGIN *) (* WILL BE INDENTED BY "INDENT2". BEYOND *) (* THIS, NO INDENTATION OCCURS. INDENT1 = 3; INDENT2 = 1; SPACE = ''; TYPE KEYSYMBOL = ( PROGSYM, FUNCSYM, PROCSYM LABELSYM, CONSTSYM, TYPESYM, VARSYM, BEGINSYM, REPEATSYM, RECORDSYM, CASESYM, CASEVARSYM, OFSYM, FORSYM, WHILESYM, WITHSYM, DOSYM, IFSYM, THENSYM, ELSESYM, ENDSYM, UNTILSYM, BECOMES, OPENCOMMENT, CLOSECOMMENT, SEMICOLON, COLON, EQUALS, OPENPAREN, CLOSEPAREN, PERIOD, OTHERSYM ); OPTION = ( CRSUPPRESS, CRBEFORE, BLANKLINEBEFOE DINDENTONKEYS, DINDENT, SPACEBEFORE, SPACEAFTER, GOBBLESYMBOLS, IDENTBYTAB, INDENTTOCLP, CRAFTER ); OPTIONSET = SET OF OPTION KEYSYMSET = SET OF KEYSYMBOL; TABLEENTRY = RECORD OPTIONSELECTED : OPTIONSET; DINDENTSYMBOLS : KEYSYMSET; GOBBLETERMINATORS : KEYSYMSET END; OPTIONTABLE = ARRAY [ KEYSYMBOL ] OF TABLEENTRY; KEY = PACKED ARRAY [ 1..MAXKEYLENGTH ] OF CHAR; KEYWORDTABLE = ARRAY [PROGSYM..UNTILSYM ] OF KEY; SPECIALCHAR = PACKED ARRAY [ 1..2 ] OF CHAR; DBLCHRSET = SET OF BECOMES..OPENCOMMENT; DBLCHARTABLE = ARRAY [ BECOMES..OPENCOMMENT ] OF SPECIALCHAR; SGLCHARTABLE = ARRAY [ SEMICOLON..PERIOD ] OF CHAR; STRING = ARRAY [ 1..MAXSYMBOLSIZE ] OF CHAR; SYMBOL = RECORD NAME : KEYSYMBOL; VALU : STRING; LENGTH : INTEGER; SPACESBEFORE : INTEGER; CRSBEFORE : INTEGER END; SYMBOLINFO = ^SYMBOL; CHARNAME = ( LETTER, DIGIT, BLANK, QUOTE, ENDOFLINE, FILEMARK, OTHERCHAR ); CHARINFO = RECORD NAME : CHARNAME; VALU : CHAR END; STACKENTRY = RECORD INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER END; SYMBOLSTACK = ARRAY [ 1..MAXSTACKSIZE ] OF STACKENTRY; VAR RECORDSEEN: BOOLEAN; CURRCHAR, NEXTCHAR: CHARINFO; CURRSYM, NEXTSYM: SYMBOLINFO; CRPENDING: BOOLEAN; PPOPTION: OPTIONTABLE; KEYWORD: KEYWORDTABLE; DBLCHARS: DBLCHRSET; DBLCHAR: DBLCHARTABLE; SGLCHAR: SGLCHARTABLE; STACK: SYMBOLSTACK; TOP, (*STARTING POSITION OF LAST SYMBOL WRITTEN *) STARTPOS, CURRLINEPOS, CURRMARGIN : INTEGER; WITH PPOPTION [ OPENCOMMENT ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ CLOSECOMMENT ] DO BEGIN OPTIONSSELECTED := CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ SEMICOLON ] DO BEGIN OPTIONSSELECTED := [ CRSUPPRESS, DINDENTONKEYS, CRAFTER ]; DINDENTSYMBOLS := [ IFSYM, THENSYM, ELSESYM, FORSYM, WHILESYM, WITHSYM, COLON, EQUALS ]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ COLON ] DO BEGIN OPTIONSELECTED := [ SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS :=[]; GOBBLETERMINATORS := [] END; WITH PPOPTION [ EQUALS ] DO BEGIN OPTIONSSELECTED := [ SPACEBEFORE, SPACEAFTER, INDENTTOCLP ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OPENPAREN ] DO BEGIN OPTIONSSELECTED := [ GOBBLESYMBOLS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [ CLOSEPAREN] END; WITH PPOPTION [ CLOSEPAREN ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ PERIOD ] DO BEGIN OPTIONSSELCTED := [ CRSUPPRESS ]; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ ENDOFFILE ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMINATORS := [] END; WITH PPOPTION [ OTHERSYM ] DO BEGIN OPTIONSSELECTED := []; DINDENTSYMBOLS := []; GOBBLETERMNATORS := [] END END; (* INITIALIZE *) FUNTION STACKEMPTY (* RETURNING *) : BOOLEAN; BEGIN (* STACKEMPTY *) IF TOP = 0 THEN STACKEMPTY := TRUE ELSE STACKEMPTY := FALSE END; (* STACKEMPTY *) FUNCTION STACKFULL (* RETURNING *) : BOOLEAN; BEGIN (* STACKFULL *) IF TOP = MAXSTACKSIZE THEN STACKFULL := TRUE ELSE STACKFULL := FALSE END; (* STACKFULL *) PROCEDURE POPSTACK( (* RETURNING ): VAR INDENTSYMBOL : KEYSYMBOL; VAR PREVMARGIN : INTEGER); BEGIN (* POPSTACK *) IF NOT STACKEMPTY THEN BEGIN INDENTSYMBOL := STACK[TOP].INDENTSYMBOL; PREVMARGIN := STACK[TOP].PREVMARGIN; TOP := TOP - 1 END ELSE BEGIN INDENTSYMBOL := OTHERSYM; PREVMARGIN := 0 END END; (* POPSTACK *) PROCEDURE PUSHSTACK( (* USING *) INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER ); BEGIN (* PUSHSTACK *) TOP := TOP + 1 STACK[TOP].INDENTSYMBOL := INDENTSYMBOL; STACK[TOP].PREVMARGIN := PREVMARGIN END; (* PUSHSTACK *) PROCEDURE WRITECRS( (* USING *) NUMBEROFCRS : INTEGER; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED THIS IS SMALL I) BEGIN (* WRITECRS *) IF NUMBEROFCRS > 0 THEN BEGIN FOR I := 1 TO NUMBEROFCRS DO (TED SMALL I) WRITELN(OUTPUT); CURRLINEPOS := 0 END END; (* WRITECRS *) PROCEDURE INSERTCR( (* UPDATING *) VAR CURRSYM : SMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; BEGIN (* INSERTER *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END END; (* INSERTER *) PROCEDURE INSERTBLANKLINE( (* UPDATING *) VAR CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; TWICE - 2; BEGIN (* INSERTBLANKLINE *) IF CURRSYM^.CRSBEFORE = 0 THEN BEGIN IF CURRLINEPOS = 0 THEN WRITECRS(ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) ELSE WRITECRS( TWICE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); CURRSYM^.SPACESBEFORE := 0 END ELSE IF CURRSYM^.CRSBEFORE = 1 THEN IF CURRLINEPOS > 0 THEN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END; (* INSERTBLANKLINE *) PROCEDURE LSHIFTON( (* USING *) DINDENTSYMBOLS : KEYSYMSET ); VAR INDENTSYMBOL : KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* LSHIFTON *) IF NOT STACKEMPTY THEN BEGIN REPEAT POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); IF INDENTSYMBOL IN DINDENTSYMBOLS THEN CURRMARGIN := PREVMARGIN UNTIL NOT(INDENTSYMBOL IN DINDENTSYMBOLS) OR (STACKEMPTY); IF NOT(INDENTSYMBOL IN DINDENTSYMBOLS) THEN PUSHSTACK( (* USING *) INDENTSYMBOL, PREVMARGIN ) END END; (* LSHIFTON *) PROCEDURE LSHIFT; VAR INDENTSYMBOL: KEYSYMBOL; PREVMARGIN : INTEGER; BEGIN (* LSHIFT *) IF NOT STACKEMPTY THEN BEGIN POPSTACK( (* RETURNING *) INDENTSYMBOL, PREVMARGIN ); CURRMARGIN := PREVMARGIN END END; (* LSHIFT *) PROCEDURE INSERTSPACE( (* USING *) VAR SYMBOL : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* INSERTSPACE *) IF CURRLINEPOS < MAXLINESIZE THEN BEGIN WRITE(OUTPUT, SPACE); CURRLINEPOS := CURRLINEPOS + 1; WITH SYMBOL^DO IF(CRSBEFORE = 0) AND (SPACESBEFORE>0) THEN SPACESBEFORE := SPACESBEFORE - 1 END END; (* INSERTSPACE *) PROCEDURE MOVELINEPOST( (* TO *) NEWLINEPOS : INTEGER; (* FROM *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* MOVELINEPOS *) FOR I := CURRLINEPOS+1 TO NEWLINEPOS DO (TED SMALL I) WRITE (OUTPUT, SPACE); CURRLINEPOS := NEWLINEPOS END; (* MOVELINEPOS *) PROCEDURE PRINTSYMBOL( (* IN *) CURRSYM : SYMBOLINFO; (* UPDATING *) VAR CURRLINEPOS : INTEGER (* WRITING TO OUTPUT *) ); VAR I: INTEGER; (TED SMALL I) BEGIN (* PRINTSYMBOL *) WITH CURRSYM^ DO BEGIN FOR I := 1 TO LENGTH DO (SMALL I) WRITE(OUTPUT, VALU[I]); (SMALL I) STARTPOS := CURRLINEPOS; (* SAVE START POS FOR TAB PURPOSES *) (* <<< *) CURRLINEPOS := CURRLINEPOS + LENGTH END (* WITH *) END; (* PRINTSYMBOL *) PROCEDURE PPSYMBOL( (* IN *) CURRSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); CONST ONCE = 1; VAR NEWLINEPOS: INTEGER; BEGIN (* PPSYMBOL *) WITH CURRSYM^ DO BEGIN WRITECRS( (* USING *) CRSBEFORE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF (CURRLINEPOS+SPACESBEFORE> CURRMARGIN) OR (NAME IN [ OPENCOMMENT, CLOSECOMMENT ]) THEN NEWLINEPOS := CURRLINEPOS + SPACESBEFORE ELSE NEWLINEPOS := CURRMARGIN; IF NEWLINEPOS + LENGTH > MAXLINESIZE THEN BEGIN WRITECRS( ONCE, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ); IF CURRMARGIN + LENGTH <= MAXLINESIZE THEN NEWLINEPOS := CURRMARGIN ELSE IF LENGTH < MAXLINESIZE THEN NEWLINEPOS := MAXLINESIZE - LENGTH ELSE NEWLINEPOS := 0 END; MOVELINEPOS( (* TO *) NEWLINEPOS, (* FROM *) CURRLINEPOS (* IN OUTPUT *) ); PRINTSYMBOL( (* IN *) CURRSYM, (* UPDATING *) CURRLINEPOS (* WRITING TO OUTPUT *) ) END (* WITH *) END; (* PPSYMBOL *) PROCEDURE RSHIFTTOCLP( (* USING *) CURRSYM : KEYSYMBOL ); FORWARD; PROCEDURE GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) TERMINATORS : KEYSYMSET; (* UPDATING *) VAR CURRSYM, NEXTSYM : SYMBOLINFO (* WRITING TO OUTPUT *) ); BEGIN (* GOBBLE *) RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); WHILE NOT(NEXTSYM^.NAME IN (TERMINATORS+[ENDOFFILE])) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); PPSYMBOL( (* IN*) CURRSYM (* WRITING TO OUTPUT *) ) END; (* WHILE *) LSHIFT END; (* GOBBLE *) PROCEDURE RSHIFT( (* USING *) CURRSYM : KEYSMBOL ); BEGIN (* RSHIFT *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); (* IF EXTRA INDENTATION WAS USED, UPDATE MARGIN. *) (* <<< *) IF STARTPOS > CURRMARGIN (* <<< *) THEN (* <<< *) CURRMARGIN := STARTPOS; (* <<< *) IF CURRMARGIN < SLOFAIL1 THEN CURRMARGIN := CURRMARGIN + INDENT1 ELSE IF CURRMARGIN < SLOFAIL2 THEN CURRMARGIN := CURRMARGIN + INDENT2 END; (* RSHIFT *) PROCEDURE RSHIFTTOCLP; BEGIN (* RSHIFTTOCLP *) IF NOT STACKFULL THEN PUSHSTACK( (* USING *) CURRSYM, CURRMARGIN); CURRMARGIN := CURRLINEPOS END; (* RSHIFTTOCLP *) BEGIN (* PRETTYPRINT *) INITIALIZE( TOP CURRLINEPcOS, CURRMARGIN, KEYWORD DBLCHARS, DBLCHAR, SGLCHAR, RECORDSEEN, CURRCHAR, NEXTCHR, CURRSYM, NEXTSYM, PPOPTION ); CRPENDING := FALSE; WHILE (NEXTSYM^.NAME<> ENDOFFILE) DO BEGIN GETSYMBOL( (* FROM INPUT *) (* UPDATING *) NEXTSYM, (* RETURNING *) CURRSYM ); WITH PPOPTION [CURRSYM^.NAME] DO BEGIN IF (CRPENDING AND NOT(CRSUPPRESS IN OPTIONSSELECTED)) OR (CRBEFORE IN OPTIONSSELECTED) THEN BEGIN INSERTCR( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF BLANKLINEBEFORE IN OPTIONSSELECTED THEN BEGIN INSERTBLANKLINE( (_(* USNG *) CURRSYM (* WRITING TO OUTPUT *) ); CRPENDING := FALSE END; IF DINDENTONKEYS IN OPTIONSSELECTED THEN LSHIFTON(DINDENTSYMBOLS); IF DINDENT IN OPTIONSSELECTED THEN LSHIFT; IF SPACEBEFORE IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) CURRSYM (* WRITING TO OUTPUT *) ); PPSYMBOL( (* IN *) CURRSYM (* WRITING TO OUTPUT *) ); IF SPACEAFTER IN OPTIONSSELECTED THEN INSERTSPACE( (* USING *) NEXTSYM (* WRITING TO OUTPUT *) ); IF INDENTBYTAB IN OPTIONSSELECTED THEN RSHIFT( (* USING *) CURRSYM^.NAME ); IF INDENTTOCLP IN OPTIONSSELECTED THEN RSHIFTTOCLP( (* USING *) CURRSYM^.NAME ); IF GOBBLESYMBOLS IN OPTIONSSELECTED THEN GOBBLE( (* SYMBOLS FROM INPUT *) (* UP TO *) GOBBLETERMINATORS, (* UPDATING *) CURRSYM, NEXTSYM (* WRITING TO OUTPUT *) IF CRAFTER IN OPTIONSSELECTED THEN CRPENDING := TRUE END (* WITH *) END; (* WHILE *) IF CRPENDING THEN WRITELN(OUTPUT) END. CDC6000PAB l (******************************************************************************* PASCAL PROGRAM FORMATTER ------------------------ AUTHOR: MICHAEL N. CONDICT, L975 LEHIGH UNIVERSITY CURRENT ADDRESS: PAR CORP 228 LIBERTY PLAZA ROME, NY 13440 UPDATED: AUGUST, 1978 ***************************************************************************** ) PROGRAM FORMAT(INPUT,OUTPUT); LABEL 13; CONST ALFALENG = 10; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( MINIMUM AND MAXIMUM CHAR VALUES. ) MINCHAR = 0 MAXCHAR = 127; LASTPASCSYMBOL = 29; ( THE FOLLOWING CONSTANTS MUST ALL BE CHANGED TOGETHER, SO THAT THEIR VALUES AGREE WITH THEIR NAMES: ) BUFFERSIZE = 160; BUFFSZP1 = 161; BUFFSZM1 = 159; BUFFSZDIV10 = 16; ( ) MAXREADRIGHTCOL = 999; MAXWRITERIGHTCOL = 72; TYPE ALFA = PACKED ARRAY [1 .. ALFALENG] OF CHAR; ( !!!!!!!! IMPLEMENTATION DEPENDENCY: !!!!!!!! ) ( SET SIZE MAY NOT ALLOW SET OF CHAR. ) CHARSET = SET OF CHAR; STATMNTTYPES = (FORWITHWHILESTATEMENT, REPEATSTATEMENT, IFSTATEMENT, CASESTATEMENT, COMPOUNDSTATEMENT, OTHERSTATEMENT); SYMBOLS = (PROGSYMBOL, COMMENT, BEGINSYMBOL, ENDSYMBOL, SEMICOLON, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, COLONSYMBOL, EQUALSYMBOL, PERIODSYMBOL, RANGE, CASESYMBOL, OTHERSYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LEFTBRACKET, RIGHTBRACKET, COMMASYMBOL, LABELSYMBOL, LEFTPARENTH, RIGHTPARENTH, ALPHAOPERATOR); WIDTH = 0 ..BUFFERSIZE; MARGINS = - 100 ..BUFFERSIZE; SYMBOLSET = SET OF SYMBOLS; OPTIONSIZE = - 99 .. 99; COMMENTTEXT = ARRAY [1 .. BUFFSZDIV10] OF ALFA; SYMBOLSTRING = ARRAY [WIDTH] OF CHAR; VAR CHISEOL, NEXTCHISEOL: BOOLEAN; I: INTEGER (USED AS FOR LOOP INDEX); CHARACTER: CHAR; READCOLUMN, READRIGHTCOL: 0 .. 1000; OUTPUTCOL, WRITECOLUMN, LEFTMARGIN, ACTUALLEFTMARGIN, READLEFTCOL, WRITELEFTCOL, WRITERIGHTCOL: MARGINS; DISPLAYISON, PROCNAMESWANTED, ENDCOMMENTSWANTED, PACKERISOFF, SAVEDBUNCH, BUNCHWANTED, NOFORMATTING: BOOLEAN; LINENUMBER, INCREMENT: INTEGER; INDENTINDEX, LONGLINEINDENT, SYMBOLGAP, DECLARALIGNMENT, STATMTSEPARATION, PROCSEPARATION: OPTIONSIZE; LASTSYMBOL, SYMBOLNAME: SYMBOLS; ALPHASYMBOLS, ENDLABEL, ENDCONST, ENDTYPE, ENDVAR: SYMBOLSET; SYMBOL: SYMBOLSTRING; LENGTH: WIDTH; SYMBOLISNUMBER, LASTPROGPARTWASBODY: BOOLEAN; DIGITS, LETTERSANDDIGITS: CHARSET; OLDEST: WIDTH; CHARCOUNT: INTEGER (* COUNT OF TOTAL CHARS READ, BUT IS OFF BY BUFFERSIZE AFTER END OF FIRST BODY. IT IS IMPERATIVE THAT CHARCOUNT BE MONOTONICALLY INCREASING DURING PROCESSING OF A BODY, AND THAT IT NEVER RETURN TO A VALUE <- BUFFERSIZE, AFTER PASSING THAT POINT. THUS "DOBLOCK" MAY RESET IT AS LOW AS POSSIBLE, LIMITING THE LENGTH OF A PROCEDURE TO "MAXINT - BUFFERSIZE" CHARACTERS. }; MAIN: COMMENTTEXT; MAINNMLENGTH: WIDTH; BLANKS, ZEROES: ALFA; UNDERWRITTEN: ARRAY (WIDTH) OF RECORD CH: CHAR; CHISENDLINE: BOOLEAN INDENTAFTEREOL: MARGINS END; PASCALSYMBOL: ARRAY [1 ..LASTPASCSYMBOL] OF ALFA; PASCSYMBOLNAME: ARRAY [1 ..LASTPASCSYMBOL] OF SYMBOLS; NAMEOF: ARRAY [CHAR] OF SYMBOLS; STATEMENTTYPEOF: ARRAY [SYMBOLS] OF STATMNTTYPES; PROCEDURE CONSTANTSINITIALIZATION; BEGIN MAIN[1] := 'MAIN '; MAINNMLENGTH := 4; BLANKS := ' '; ZEROES := '0000000000'; FOR I := 0 TO BUFFSZM1 DO WITH UNWRITTEN[I] DO BEGIN CH := 'A'; CHISENDLINE := FALSE; INDENTAFTEREOL := 0 END; FOR CHARACTER := CHR(MINCHAR) TO CHR(MAXCHAR) DO NAMEOF[CHARACTER] := OTHERSYMBOL; CHARACTER := ' '; NAMEOF['('] := LEFTPARENTH; NAMEOF[')'] := RIGHTPARENTH; NAMEOF['='] := EQUALSYMBOL; NAMEOF[','] := COMMASYMBOL; NAMEOF['.'] := PERIODSYMBOL; NAMEOF['['] := LEFTBRACKT; NAMEOF[']'] := RIGHTBRACKET; NAMEOF[':'] := COLONSYMBOL; NAMEOF['<'] := EQUALSYMBOL; NAMEOF['>'] := EQUALSYMBOL; NAMEOF[';'] := SEMICOLON; PASCALSYMBOL[1] := 'PROGRAM '; PASCALSYMBOL[2] := 'BEGIN '; PASCALSYMBOL[3] := 'END '; PASCALSYMBOL[4] := 'CONST '; PASCALSYMBOL[5] := 'TYPE '; PASCALSYMBOL[6] := 'VAR '; PASCALSYMBOL[7] := 'RECORD '; PASCALSYMBOL[8] := 'CASE '; PASCALSYMBOL[9] := 'IF '; PASCALSYMBOL[10] := 'THEN '; PASCALSYMBOL[11] := 'ELSE '; PASCALSYMBOL[12] := 'DO '; PASCALSYMBOL[13] := 'OF '; PASCALSYMBOL[14] := 'FOR '; PASCALSYMBOL[15] := 'WHILE '; PASCALSYMBOL[16] := 'WITH '; PASCALSYMBOL[17] := 'REPEAT '; PASCALSYMBOL[18] := 'UNTIL '; PASCALSYMBOL[19] := 'PROCEDURE '; PASCALSYMBOL[20] := 'FUNCTION '; PASCALSYMBOL[21] := 'LABEL '; PASCALSYMBOL[22] := 'IN '; PASCALSYMBOL[23] := 'MOD '; PASCALSYMBOL[24] := 'DIV '; PASCALSYMBOL[25] := 'AND '; PASCALSYMBOL[26] := 'OR '; PASCALSYMBOL[27] := 'NOT '; PASCALSYMBOL[28] := 'ARRAY '; PASCALSYMBOL[29] := 'NOSYMBOL '; PASCSYMBOLNAME[1] := PROGSYMBOL; PASCSYMBOLNAME[2] := BEGINSYMBOL; PASCSYMBOLNAME[3] := ENDSYMBOL; PASCSYMBOLNAME[4] := CONSTSYMBOL; PASCSYMBOLNAME[5] := TYPESYMBOL; PASCSYMBOLNAME[6] := VARSYMBOL; PASCSYMBOLNAME[7] := RECORDSYMBOL; PASCSYMBOLNAME[8] := CASESYMBOL; PASCSYMBOLNAME[9] := IFSYMBOL; PASCSYMBOLNAME[10] := THENSYMBOL; PASCSYMBOLNAME[11] := ELSESYMBOL; PASCSYMBOLNAME[12] := DOSYMBOL; PASCSYMBOLNAME[13] := OFSYMBOL; PASCSYMBOLNAME[14] := PASCSYMBOLNAME[15] := WHILESYMBOL; PASCSYMBOLNAME[16] := WITHSYMBOL; PASCSYMBOLNAME[17] := REPEATSYMBOL; PASCSYMBOLNAME[18] := UNTILSYMBOL; PASCSYMBOLNAME[19] := PROCSYMBOL; PASCSYMBOLNAME[20] := FUNCSYMBOL; PASCSYMBOLNAME[21] := LABELSYMBOL; PASCSYMBOLNAME[29] := IDENTIFIER; FOR I := 22 TO 28 DO PASCSYMBOLNAME[I] := ALPHAOPERATOR; FOR SYMBOLNAME := PROGSYMBOL TO ALPHAOPERATOR DO STATEMENTTYPEOF[SYMBOLNAME] := OTHERSTATEMENT; STATEMENTTYPEOF[BEGINSYMBOL] := COMPOUNDSTATEMENT; STATEMENTTYPEOF[CASESYMBOL] := CASESTATEMENT; STATEMENTTYPEOF[IFSYMBOL] := IFSTATEMENT; STATEMENTTYPEOF[FORSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WHILESYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[WITHSYMBOL] := FORWITHWHILESTATEMENT; STATEMENTTYPEOF[REPEATSYMBOL] := REPEATSTATEMENT; END (CONSTANTSINITIALIZATION); PROCEDURE WRITEA(CHARACTER: CHAR); VAR I: WIDTH; TESTNO: INTEGER; BEGIN CHARCOUNT := CHARCOUNT + 1; OLDEST := CHARCOUNT MOD BUFFERSIZE; WITH UNWRITTEN[OLDEST] DO BEGIN IF CHARCOUNT > BUFFSZP1 THEN BEGIN IF CHISENDLINE THEN BEGIN IF IDENTAFTEREOL < O THEN BEGIN WRITE(BLANKS: - INDENTAFTEREOL); OUTPUTCOL := OUTPUTCOL - IDENTAFTEREOL; END ELSE BEGIN IF INCREMENT < O THEN BEGIN I := WRITERIGHTCOL - OUTPUTCOL + 1; IF I > O THEN WRITE(BLANKS: I); TESTNO := LINENUMBER; I := O REPEAT TESTNO := TESTNO DIV 10; I := I + 1; UNTIL TESTNO - O; WRITE(ZEROES: (6 - I), LINENUMBER: I); LINENUMBER := LINENUMBER - INCREMENT; IF LINENUMBER > 9999 THEN LINENUMBER := LINENUMBER - 10000; WRITELN; END ELSE BEGIN WRITELN; IF INCREMENT > O THEN BEGIN WRITE(LINENUMBER: 4, ' '); LINENUMBER := LINENUMBER + INCREMENT; END END IF IDENTAFTEREOL > O THEN WRITE(BLANKS: IDENTAFTEREOL; OUTPUTCOL := IDENTAFTEREOL + 1; END; CHISENDLINE := FALSE; END (IF CHISENDLINE) ELSE BEGIN WRITE(CH); OUTPUTCOL := OUTPUTCOL +1; END (ELSE); END (IF CHARCOUNT > ); CH := CHARACTER; WRITECOLUMN := WRITECOLUMN +1; END (WITH); END (WRITEA); PROCEDURE FLUSHUNWRITTENBUFFER; BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IDENTAFTEREOL := O; END; WRITECOLUMN := O; FOR I := O TO BUFFSZM1 DO WRITEA(' '); END *(FLUSHUNWRITTENBUFFER)*; PROCEDURE STARTNEWLINEANDINDENT; BEGIN IF PACKERISOFF AND DISPLAYISON THEN BEGIN WRITEA(' '); LASTSYMBOL := PERIODSYMBOL; WITH UNWRITTEN [OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL + LEFTMARGIN - 1; END; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN; END {IF PACKERISOFF}; END {STARTNEWLINEANDINDENT}; PROCEDURE READACHARACTER; BEGIN IF READCOLUMN > READRIGHTCOL THEN BEGIN IF READRIGHTCOL < MAXREADRIGHTCOL THEN BEGIN NEXTCHISEOL := TRUE; READLN END ELSE READCOLUMN := 2; END ELSE IF READCOLUMN = 1 THEN WHILE READCOLUMN < READLEFTCOL DO BEGIN IF EOLN(INPUT) THEN READCOLUMN := 1 ELSE BEGIN READCOLUMN := READCOLUMN + 1; GET(INPUT) END END; IF NEXTCHISEOL THEN BEGIN CHARACTER := ''; NEXTCHISEOL := FALSE; CHISEOL := TRUE; READCOLUMN := 1; IF NOFORMATTING THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; INDENTAFTEREOL := WRITELEFTCOL - 1; END WRITECOLUMN := WRITELEFTCOL; END END ELSE IF NOT EOF(INPUT) THEN BEGIN CHARACTER := INPUT ^; READCOLUMN := READCOLUMN +1; NEXTCHISEOL := EOLN(INPUT); GET(INPUT); CHISEOL := FALSE; IF NOFORMATTING THEN WRITEA(CHARACTER); END ELSE BEGIN FLUSHUNWRITTENBUFFER; GOTO 13 END END {READACHARACTER}; PROCEDURE WRITESYMBOL; VAR I: WIDTH; NUMBER BLANKSTOWRITE: OPTIONSIZE; BEGIN IF DISPLAYISON THEN BEGIN NUMBERBLANKSTOWRITE := SYMBOLGAP; IF (LASTSYMBOL IN [LEFTPARENTH,LEFTBRACKET,PERIODSYMBOL]) OR (SYMBOLNAME IN [SEMICOLON, RIGHTPARENTH,RIGHTBRACKET, COMMASYMBOL, PERIODSYMBOL, COLONSYMBOL]) OR (SYMBOLNAME IN [LEFTBRACKET, LEFTPARENTH]) AND (LASTSYMBOL = IDENTIFIER) THEN NUMBERBLANKSTOWRITE := O ELSE IF (SYMBOLNAME IN ALPHASYMBOLS) AND (LASTSYMBOL IN ALPHASYMBOLS) THEN IF WRITECOLUMN <= WRITERIGHTCOL THEN BEGIN WRITEA(' '); NUMBERBLANKSTOWRITE := SYMBOLGAP -1; END; IF WRITECOLUMN + LENGTH + NUMBERBLANKSTOWRITE -1> WRITERIGHTCOL THEN BEGIN WRITEA(' '); WITH UNWRITTEN[OLDEST] DO BEGIN CHISENDLINE := TRUE; IF PACKERISOFF THEN BEGIN IF WRITELEFTCOL + LEFTMARGIN + LONGLINEINDENT + LENGTH -1> WRITERIGHTCOL THEN LENGTH := 10; INDENTAFTEREOL := WRITELEFTCOL -1 + LEFTMARGIN + LONGLINEINDENT; WRITECOLUMN := WRITELEFTCOL + LEFTMARGIN + LONGLINE INDENT; END ELSE BEGIN IFLENGTH > WRITERIGHTCOL - WRITELEFTCOL + 1; THEN LENGTH := WRITERIGHT COL - WRITELEFTCOL + 1; INDENTAFTEREOL := WRITELEFTCOL - 1; WRITECOLUMN := WRITELEFTCOL; END; END {WITH}; END ELSE FOR I := 1 TO NUMBERBLANKSTOWRITE DO WRITEA(' '); FOR I := 1 TO LENGTH DO WRITEA(SYMBOL[I]); END {IF DISPLAYISON}; LASTSYMBOL := SYMBOLNAME; END {WRITESYMBOL}; PROCEDURE COPYACHARACTER; BEGIN IF DISPLAYISON THEN BEGIN IF WRITECOLUMN > WRITERIGHTCOL THEN BEGIN WHILE (CHARACTER = ' ') AND NOT CHISEOL DO READACHARACTER; IF NOT CHISEOL THEN STARTNEWLINEANDINDENT; END; IF CHISEOL THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END ELSE WRITEA(CHARACTER); END; READACHARACTER END {COPYACHARACTER}L1T; PROCEDURE DOFORMATTERDIRECTIVES; CONST INVALID = - 1; TYPE PARAMCOUNT = 1 .. 2; PARAMS = ARRAY [PARAMCOUNT] OF INTEGER; VAR SPECIFICATION: PARAMS; FORMATOPTION: CHAR; PREVDISPLAY, PREVNOFORMATTING: BOOLEAN; ENDDIRECTV: CHARSET; PROCEDURE READIN(N: PARAMCOUNT; VAR SPCIFICATION: PARAMS); VAR I: PARAMCOUNT; BEGIN FOR I := 1 TO N DO BEGIN WHILE NOT (CHARACTER IN (DIGITS + ENDDIRECTV)) DO COPYACHARACTER; SPECIFICATION[I] := O; IF NOT (CHARACTER IN ENDDIRECTV) THEN REPEAT SPECIFICATION [I] := 10 * SPECIFICATION[I] + ORD(CHARACTER) - ORD('O'); COPYACHARACTER; UNTIL NOT (CHARACTER IN DIGITS) ELSE SPECIFICATION[I] := INVALID; END {FOR}L1T; END {READIN}L1T; BEGIN {DOFORMATTERDIRECTIVES}L1T ENDDIRECTV := ['*', ']']; REPEAT IF CHARACTER IN ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I', 'L', 'N', 'P', 'R', 'S', 'W'] THEN BEGIN FORMATOPTION := CHARACTER; CASE FORMATOPTION OF 'A', 'E', 'I', 'G', 'P', 'L', 'S': BEGIN READIN(1, SPECIFICATION); IF (SPECIFICATION[1] 1; ENDCOMMENTSWANTED := ODD(SPECIFICATION[1]); END 'G' : SYMBOLGAP := SPECIFICATION[1]; 'I' : INDENTINDEX := SPECIFICATION[1]; 'L' : LONGLINEINDE***ECIFICATION[1]; 'P' : PROCSEPARATION := SPECIFICATION[1]; 'S' : STATMTSEPARATION := SPCIFICATION[1] END {CASE}L1T; END {SINGLE PARAMETERS}L1T; 'W', 'R', 'N': BEGIN READIN(2, SPECIFICATION); IF SPECIFICATION[2] <> INVALID THEN CASE FORMATOPTION OF 'W': IF SPECIFICATION[1] > O) AND SPECIFICATION[2] < BUFFERSIZE -2) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8) THEN BEGIN WRITELEFTCOL := SPECIFICATION[1]; WRITERIGHTCOL := SPECIFICATION[2]; END 'R': IF (SPECIFICATION[1] > O) AND (SPECIFICATION[2] - SPECIFICATION[1] > 8 THEN BEGIN READLEFTCOL := SPECIFICATION[1]; READRIGHTCOL := SPECIFICATION[2]; END 'N': BEGIN LINENUMBER := SPECIFICATION[1]; INCREMENT := SPECIFICATION[2]; WHILE NOT (CHARACTER IN (['<'] + ENDDIRECTV)) AND (CHARACTER<> '>') DO COPYACHARACTER; IF CHARACTER = '>' THEN INCREMENT := - INCREMENT END END {CASE}; END {DOUBLE PARAMETERS}; 'B', 'C', 'D', 'F': BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN (['+', '-'] + ENDDIRECTV); IF CHARACTER IN ['+', '-'] THEN CASE FORMATOPTION OF 'B': IF DISPLAYISON THEN BUNCHWANTED := CHARACTER = '+'; 'C': PACKERISOFF := CHARACTER = '-'; 'D': BEGIN PREVDISPLAY := DISPLAYISON; DISPLAYISON := CHARACTER = '+'; IF PREVDISPLAY AND NOT DISPLAYISON THEN BEGIN WRITEA('*'); WRITEA(')'); SAVEDBUNCH := BUNCHWANTED; BUNCHWANTED := FALSE; END ELSE IF NOT PREVDISPLAY AND DISPLAYISON THEN BEGIN STARTNEWLINEANDINDENT; WRITEA('('); WRITEA'_('*'); BUNCHWANTED := SAVEDBUNCH; END {IF NOT PREV}; END {'D':}; 'F': BEGIN PREVNOFORMATTING := NOFORMATTING; NOFORMATTING := CHARACTER = '-'; DISPLAYISON := NOT NOFORMATTING IF PREVNOFORMATTING AND NOT NOFORMATTING THEN READACHARACTER; IF NOT PREVNOFORMATTING AND NOFORMATTING THEN WRITEA('-'); END; END {CASE}; END {BOOLEAN PARAMETERS} END {CASE}; END {THEN} ELSE IF NOT (CHARACTER IN ENDDIRECTV) THEN COPYACHARACTER; UNTIL CHARACTER IN ENDDIRECTV; IF (CHARACTER = ']') THEN COPYACHARACTER; END {DOFORMATTERDIRECTIVES}; PROCEDURE READSYMBOL; CONST READNEXTCH = TRUE; DONTREADNEXTCH = FALSE; VAR TESTSYMBOL: ALFA; CHARNUMBER: WIDTH; I: WIDTH; PROCEDURE SKIPCOMMENT; BEGIN REPEAT WHILE CHARACTER <> '*' DO READACHARACTER; READACHARACTER UNTIL CHARACTER = ')'; READACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL END {SKIPCOMMENT}; PROCEDURE DOCOMMENT; VAR I: OPTIONSIZE; PROCEDURE COMPILERDIRECTIVES; BEGIN REPEAT COPYACHARACTER; UNTIL CHARACTER IN ['[', '*'] END {COMPILERDIRECTIVES}; BEGIN {DOCOMMENT} BEGIN IF LASTSYMBOL IN [COMMENT, SEMICOLON] THEN BEGIN LEFTMARGIN := O; STARTNEWLINEANDINDENT; LEFTMARGIN := ACTUALLEFTMARGIN; END; WRITESYMBOL; IF CHARACTER = '$' THEN COMPILERDIRECTIVES; IF CHARACTER = '[' THEN DOFORMATTERDIRECTIVES; REPEAT WHILE CHARACTER <> '*' DO COPYACHARACTER; COPYACHARACTER; UNTIL CHARACTER = ')'; COPYACHARACTER; LASTSYMBOL := COMMENT; READSYMBOL; END; END {DOCOMMENT}; PROCEDURE CHECKFOR(SECONDCHAR: CHAR; TWOCHARSYMBOL: SYMBOLS; READALLOWED: BOOLEAN); BEGIN IF READALLOWED THEN BEGIN LENGTH := 1; SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; READACHARACTER; END; IF CHARACTER = SECONDCHAR THEN BEGIN SYMBOL[2] := CHARACTER; LENGTH := 2; SYMBOLNAME := TWOCHARSYMBOL; READACHARACTER; IF (NOT PACKERISOFF) AND (SYMBOLNAME = COMMENT) THEN LENGTH := O END END {CHECKFOR}; BEGIN {READSYMBOL} IF (CHARACTER IN ['A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K','L','M','N','O','P','Q','R','S','T','U','V','W', 'X','Y','Z','0' ..'9','','(', '.', ':'. '''', '<', '>']) THEN CASE CHARACTER OF '(': BEGIN CHECKFOR('*', COMMENT, READNEXTCH); IF (SYMBOLNAME = COMMENT) AND PACKERISOFF THEN DOCOMMENT ELSE IF SYMBOLNAME = COMMENT THEN SKIPCOMMENT; END; 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': BEGIN CHARNUMBER := 1; SYMBOLISNUMBER := FALSE; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN LETTERSANDDIGITS); LENGTH := CHARNUMBER -1; FOR CHARNUMBER := CHARNUMBER TO ALFALENG DO SYMBOL[CHARNUMBER] := ''; PACK(SYMBOL, 1, TESTSYMBOL); I := 1; PASCALSYMBOL[LASTPASCSYMBOL- := TESTSYMBOL; WHILE PASCALSYMBOL[I] <> TESTSYMBOL DO I := I + 1; SYMBOLNAME := PASCSYMBOLNAME[I]; END {LETTER}; '0', '1', '2', '3', '4', '5','6', '7', '8', '9': BEGIN SYMBOLISNUMBER := TRUE; CHARNUMBER := 1; REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS + ['.']); IF CHARACTER IN 1'B', 'E'] THEN BEGIN SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1; IF CHARACTER IN DIGITS + ['+', '-'] THEN REPEAT SYMBOL[CHARNUMBER] := CHARACTER; READACHARACTER; CHARNUMBER := CHARNUMBER + 1 UNTIL NOT (CHARACTER IN DIGITS) END LENGTH := CHARNUMBER - 1; SYMBOLNAME := IDENTIFIER; END {NUMBER}; '': BEGIN REPEAT READACHARACTER UNTIL CHARACTER <> ''; READSYMBOL END; '>', ':': CHECKFOR('=', OTHERSYMBOL, READNEXTCH): '<': BEGIN CHECKFOR('=', OTHERSYMBOL, READNEXTCH); IF SYMBOLNAME <> OTHERSYMBOL THEN CHECKFOR('>', OTHERSYMBOL, DONTREADNEXTCH); END '.': IF LASTSYMBOL <> ENDSYMBOL THEN CHECKFOR('.', RANGE, READNEXTCH) ELSE SYMBOLNAME := PERIODSYMBOL; '''': BEGIN CHARNUMBER := 1; REPEAT REPEAT SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER +1; READACHARACTER; UNTIL CHARACTER = ''''; SYMBOL[CHARNUMBER] := CHARACTER; CHARNUMBER := CHARNUMBER + 1; READACHARACTER; UNTIL CHARACTER <>''''; LENGTH := CHARNUMBER -1; SYMBOLNAME := OTHERSYMBOL; IF LENGTH > WRITERIFHTCOL - WRITELEFTCOL +1 THEN BEGIN FLUSHUNWRITTENBUFFER; WRITELN; WRITELN('***STRING TOO LONG.'); GOTO 13 END; END {STRING} END {CASE} ELSE BEGIN SYMBOL[1] := CHARACTER; SYMBOLNAME := NAMEOF[CHARACTER]; LENGTH := 1; READACHARACTER END END {READSYMBOL}; PROCEDURE CHANGEMARGINTO(NEWLEFTMARGIN: MARGINS); VAR INDENTEDLEFTMARGIN: MARGINS; BEGIN ACTUALLEFTMARGIN := NEWLEFTMARGIN; LEFTMARGIN := NEWLEFTMARGIN; IF LEFTMARGIN < O THEN LEFTMARGIN := O ELSE BEGIN INDENTEDLEFTMARGIN := WRITERIGHTCOL - 9 - LONGLINEINDENT; IF LEFTMARGIN > INDENTEDLEFTMARGIN THEN LEFTMARGIN := IDENTEDLEFTMARGIN END END {CHANGEMARGINTO}; PROCEDURE DODECLARATIONUNTIL(ENDDECLARATION: SYMBOLSET); PROCEDURE DOPARANTHESES; VAR SAVEDLGLNID: OPTIONSIZE; BEGIN SAVEDLGLNID := LONGLINEINDENT; IF DECLARALIGNMENT >O THEN BEGIN LONGLINEINDENT := WRITECOLUMN + SYMBOLGAP +1 - LEFTMARGIN - WRITELEFTCOL; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; END ELSE BEGIN LONGLINEINDENT := 1; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = RIGHTPARENTH; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN = INDENTINDEX); END {ELSE}; LONGLINEINDENT := SAVELGLNID; END {DOPARENTHESES}; PROCEDURE DOFIELDLISTUNTIL(ENDFIELDLIST: SYMBOLSET); VAR LASTEOL: MARGINS; ALIGNCOLUMN: WIDTH; PROCEDURE DORECORD; VAR SAVEDLEFTMARGIN: WIDTH; BEGIN SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(WRITECOLUMN - 6 + INDENTINDEX - WRITELEFTCOL); STARTNEWLINEANDINDENT; DOFIELDLISTUNTIL([ENDSYMBOL]); CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END {DORECORD}; PROCEDURE DOVARIANTRECORDPART; VAR SAVEDLEFTMARGIN, OTHERSAVEDMARGIN: MARGINS; BEGIN OTHERSAVEDMARGIN := ACTUALLEFTMARGIN; IF DECLARALIGNMENT > O THEN BEGIN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [COLONSYMBOL, OFSYMBOL]; IF SYMBOLNAME = COLONSYMBOL THEN BEGIN WRITESYMBOL; READSYMBOL; WITH UNWRITTEN[LASTEOL] DO BEGIN IDENTAFTEREOL := IDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITECOLUMN := ALIGNCOLUMN; CHANGEMARGINTO(ACTUALLEFTMARGIN + ALIGNCOLUMN - WRITECOLUMN); END END IF SYMBOLNAME <> OFSYMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = OFSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN+ IDENTINDEX); REPEAT WRITESYMBOL; READSYMBOL; IF SYMBOLNAME <> ENDSYMBOL THEN BEGIN STARTNEWLINEANDINDENT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [LEFTPARENTH, SEMICOLON, ENDSYMBOL]; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; READSYMBOL; SAVEDLEFTMARGIN := ACTUALLEFTMARGIN; CHANGEMARGINTO(WRITECOLUMN - WRITELEFTCOL); DOFIELDLISTUNTIL([RIGHTPARENTH]); WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(SAVEDLEFTMARGIN); END; END; UNTIL SYMBOLNAME <> SEMICOLON; CHANGEMARGINTO(OTHERSAVEDMARGIN); END {DOVARIANTRECORDPART}; BEGIN {DOFIELDLISTUNTIL}; LASTEOL := OLDEST; IF LASTSYMBOL = LEFTPARENTH THEN FOR I := 1 TO DECLARALIGNMENT - LENGTH DO WRITEA(''); ALIGNCOLUMN := LEFTMARGIN + WRITELEFTCOL + DECLARALIGNMENT + 1; WHILE NOT (SYMBOLNAME IN ENDFIELDLIST) DO BEGIN IF LASTSYMBOL IN [SEMICOLON, COMMENT] THEN IF SYMBOLNAME <> SEMICOLON THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST END; IF SYMBOLNAME IN [RECORDSYMBOL, CASESYMBOL, LEFTPARENTH, COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL] THEN CASE SYMBOLNAME OF RECORDSYMBOL- DORECORD; CASESYMBOL: DOVARIANTRECORDPART; LEFTPARENTH: DOPARENTHESES; COMMASYMBOL, COLONSYMBOL, EQUALSYMBOL: BEGIN WRITESYMBOL; IF DECLARALIGNMENT > O THEN IF NOT (ENDLABEL <= ENDFIELDLIST) THEN BEGIN WITH UNWRITTEN[LASTEOL] DO BEGIN IDENTAFTEREOL := INDENTAFTEREOL + ALIGNCOLUMN - WRITECOLUMN; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; WRITECOLUMN := ALIGNCOLUMN; END; IF SYMBOLNAME = COMMASYMBOL THEN BEGIN STARTNEWLINEANDINDENT; LASTEOL := OLDEST; END; AND {IF DECLARALIGNMENT}; READSYMBOL; END { , : - } END {CASE} ELSE BEGIN WRITESYMBOL; READSYMBOL END; END {WHILE}; END {DOFIELDLISTUNTIL}; BEGIN {DODECLARATIONUNTIL} STARTNEWLINEANDINDENT; WRITESYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; READSYMBOL; DOFIELDLISTUNTIL(ENDDECLARATION); STARTNEWLINEANDINDENT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END {DODECLARATIONUNTIL}; PROCEDURE DOBLOCK(BLOCKNAME: COMMENTEXT; BLOCKNMLENGTH: WIDTH); VAR I: WIDTH; IFTHENBUNCHNEEDED: BOOLEAN; ATPROCBEGINNIN: BOOLEAN; PROCEDURE DOPROCEDURES; VAR I: O .. 20; PROCNAME: COMMENTTEXT; PROCNMLENGTH: WIDTH; BEGIN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, I * ALFALENG +1, PROCNAME[I + 1]); PROCNMLENGTH := LENGTH; WRITESYMBOL; READSYMBOL; IF SYMBOLNAME = LEFTPARENTH THEN BEGIN WRITESYMBOL; REPREAT READSYMBOL; WRITESYMBOL UNTIL SYMBOLNAME = RIGHT PARENTH; READSYMBOL; END; IF SYMBOLNAME = COLONSMBOL THEN REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); STARTNEWLINEANDINDENT; LASTPROGPARTWASBODY := FALSE; DOBLOCK(PROCNAME, PROCNMLENGTH); LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; END {DOPROCEDURES}; PROCEDURE DOSTATEMENT(VAR ADDEDBLANKS: WIDTH; STATMTSYMBOL: COMMENTTEXT; STMTSYMLENGTH: WIDTH); VAR I:WIDTH; STATMTBEGINNING: INTEGER; STATMTPART: ARRAY [1..4] OF INTEGER; BLKSONCURRNTLINE, BLKSADDEDBYTHISSTMT: INTEGER; SUCCESSFUL: BOOLEAN; PROCEDURE BUNCH(BEGINNING, BREAKPT, ENDING: INTEGER; STATMTSEPARATION: OPTIONSIZE); BEGIN IF BUNCHWANTED OR IFTHENBUNCHNEEDED THEN BEGIN IF STMTSEPARATION <1 THEN STATMTSEPARATION := 1; BLKSONCURRNTLINE := BLKSONCURRNTLINE + STATMTSEPARATION - 1; SUCCESSFUL := (ENDING - BEGINNING + BLKSONCURRNTLINE + UNWRITTEN[BEGINNING MOD BUFFERSIZE]. IDENTAFTEREOL) < WRITERIGHTCOL) AND (CHARCOUNT - BEGINNING ENDLIST THEN BEGIN IF PROCNAMESWANTED THEN IF ATPROCBEGINNING THEN IF LASTPROGPARTWASBODY THEN IF LASTSYMBOL = BEGINSYMBOL THEN WRITECOMMENT; ATPROCBEGINNING := FALSE; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSAFTERPRT2 := ADDEDBLANKS; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; WHILE SYMBOLNAME <> ENDLIST DO BEGIN WRITESMBOL; READSYMBOL; IF SYMBOLNAME <> ENDLIST THEN BEGIN STATMTPART[3] := CHARCOUNT + 1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STATMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS + BLKSAFTERPRT2; BLKSADDEDBYTHISSTATMT := BLKSADDEDBYTHISSTATMT + ADDEDBLANKS; BUNCH(STATMTPART[2], STATMTPART[3], CHARCOUNT, STATMTSEPARATION); IF NOT SUCCESSFUL THEN BEGIN BLKSAFTERPRT2 := ADDEDB;AMLS\ STATMTPART[2] := STATMTPART[3]; END ELSE BLKSAFTERPRT2 := BLKSONCURRNTLINE; END; END {WHILE SYMBOLNAME <> ENDLIST}; END {IF SYMBOLNAME <> ENDLIST}; BLKSONCURRNTLINE := BLKSADDEDBYTHISSTATMT; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SYMBOLGAP9; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL, PERIODSYMBOL]; IF SUCCESSFUL THEN BEGIN IF ENDLIST = UNTILSYMBOL THEN STATMTPART[4] := STATMTSEPARATION ELSE STATMTPART[4] := SYMBOLGAP; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTPART[4]; END {IF SUCCESSFUL}; IF NOT (SUCCESSFUL AND BUNCHWANTED) THEN IF ENDLIST = ENDSYMBOL THEN IF LASTSYMBOL = ENDSYMBOL THEN IF ATPROCEND AND PROCNAMESWANTED THEN WRITECOMMENT ELSE IF ENDCOMMENTSWANTED THEN WRITECOMMENT; END {DOSTMTLIST}; BEGIN {DOSTATEMENT)  BLKSONCURRNTLINE := O; SUCCESSFUL := FALSE; BLKSADDEDBYTHISSTMT := O; CHANGEMARGINTO(ACTUALLEFTMARGIN + IDENTINDEX); STARTNEWLINEANDINDENT; STATMTBEGINNING := CHARCOUNT; IF SYMBOLISNUMBER THEN BEGIN WITH UNWRITTEN[OLDEST] DO BEGIN INDENTAFTEREOL := IDENTAFTEREOL - 1 LENGTH - SYMBOLGAP; IF IDENTAFTEREOL < O THEN IDENTAFTEREOL := O; END; WRITESYMBOL; READSYMBOL {WRITE LABEL}; WRITESYMBOL; READSYMBOL {WRITE COLON}; END FORWITHWHILESTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = DOSYMBOL; WRITESYMBOL; READSYMBOL; STATMTPART[1] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := BLKSONCURRNTLINE + ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, SYMBOLGAP); END; REPEATSTATEMENT: DOSTMTLIST (UNTILSYMBOL); IFSTATEMENT: BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = THENSYMBOL; STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[2] := CHARCOUNT +1; DOSTATMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[1], CHARCOUNT, STATMTSEPARATION) ELSE IFTHENBUNCHNEEDED := TRUE; IF SYMBOLNAME = ELSESYMBOL THEN BEGIN PACK(SYMBOL, 1, STATMTSYMBOL[1]); STMTSYMLENGTH := LENGTH; IFTHENBUNCHNEEDED := FALSE; STARTNEWLINEANDINDENT; STATMTPART[3] := CHARCOUNT; WRITESYMBOL; READSYMBOL; STATMTPART[4] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STMTPART[3], STATMTPART[4], CHARCOUNT, SYMBOLGAP); BLKSONCURRNTLINE := BLKSADDEDBYTHISSTMT; IF SUCCESSFUL THEN BUNCH(STATMTBEGINNING, STATMTPART[3], CHARCOUNT, STATMTSEPARATION); END ELSE IF (CHARCOUNT - STATMTBEGINNING) < BUFFERSIZE THEN BEGIN BUNCHWANTED := NOT BUNCHWANTED; BLKSONCURRNTLINE := O; BUNCH(STATMTBEGINNING, STATMTPART[1], STATMTPART[2], SYMBOLGAP); BUNCHWANTED := NOT BUNCHWANTED; END; IFTHENBUNCHNEEDED := FALSE; END {IFSTATEMENT}; CASESTATEMENT; BEGIN REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = OFSYMBOL; WRITESYMBOL; READSYMBOL; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); WHILE SYMBOLNAME <> ENDSYMBOL DO BEGIN STARTNEWLINEANDINDENT; STATMTPART[1] := CHARCOUNT; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), STATMTSYMBOL[I + 1]); STMTSYMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL UNTIL SYMBOLNAME = COLONSYMBOL; WRITESYMBOL; READSYMBOL; IF NOT (SYMBOLNAME IN [SEMICOLON, ENDSYMBOL]) THEN BEGIN STATMTPART[2] := CHARCOUNT +1; DOSTATEMENT(ADDEDBLANKS, STATMTSYMBOL, STMTSYMLENGTH); BLKSONCURRNTLINE := ADDEDBLANKS; BLKSADDEDBYTHISSTMT := BLKSADDEDBYTHISSTMT + ADDEDBLANKS; BUNCH(STATMTPART[1], STATMTPART[2], CHARCOUNT, SYMBOLGAP); END {IF NOT(SYMBOLNAME...)}; IF SYMBOLNAME - SEMICOLON THEN BEGIN WRITESYMBOL; READSYMBOL; END; END; CHANGEMARGINTO(ACTUALLEFTMARGIN - IDENTINDEX); STARTNEWLINEANDINDENT; WRITESYMBOL; READSYMBOL; IF ENDCOMMENTSWANTED AND (LASTSYMBOL = ENDSYMBOL) THEN BEGIN STATMTSYMBOL[1] := 'CASE '; STMTSYMLENGTH := 4; WRITECOMMENT; END; END {CASESTATEMENT}; OTHERSTATEMENT; BEGIN WHILE NOT (SYMBOLNAME IN [SEMICOLON, UNTILSYMBOL, ENDSYMBOL, ELSESYMBOL]) DO BEGIN WRITESYMBOL; READSYMBOL END; END {OTHER}; COMPOUNDSTATEMENT: DOSTMTLIST(ENDSYMBOL) END {CASE}; ADDEDBLANKS := BLKSADDEDBYTHISSTMT; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); END {DOSTATEMENT}; BEGIN {DOBLOCK} LASTPROGPARTWASBODY := LASTPROGPARTWASBODY AND (SYMBOLNAME = BEGINSYMBOL); IF SYMBOLNAME = LABELSYMBOL THEN DODECLARATIONUNTIL(ENDLABEL); IF SYMBOLNAME = CONSTSYMBOL THEN DODECLARATIONUNTIL(ENDCONST); IF SYMBOLNAME = TYPESYMBOL THEN DODECLARATIONUNTIL(ENDTYPE); IF~ SYMBOLNAME = VARSYMBOL THEN DODECLARATIONUNTIL(ENDVAR); WHILE SYMBOLNAME IN [FUNCSYMBOL, PROCSYMBOL] DO DOPROCEDURES; IF SYMBOLNAME = BEGINSYMBOL THEN BEGIN IF LASTPROGPARTWASBODY THEN FOR I := 2 TO PROCSEPARATION DO STARTNEWLINEANDINDENT; IFTHENBUNCHNEEDED := FALSE; ATPROCBEGINNING := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN - INDENTINDEX); DOSTATEMENT(I, BLOCKNAME, BLOCKNMLENGTH) { I IS DUMMY PARAM }; LASTPROGPARTWASBODY := TRUE; CHANGEMARGINTO(ACTUALLEFTMARGIN + INDENTINDEX); END ELSE BEGIN WRITESMBOL; READSYMBOL {WRITE FORWARD} END END {DOBLOCK}; PROCEDURE INITIALIZE; VAR I: WIDTH; BEGIN { CONSTANTS: } DIGITS := ['O' .. '9']; LETTERSANDDIGITS := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Z'] + DIGITS; ALPHASYMBOLS := [PROGSYMBOL, BEGINSYMBOL, ENDSYMBOL, CONSTSYMBOL, TYPESYMBOL, RECORDSYMBOL, CASESYMBOL, IFSYMBOL, THENSYMBOL, ELSESYMBOL, DOSYMBOL, OFSYMBOL, FORSYMBOL, WITHSYMBOL, WHILESYMBOL, REPEATSYMBOL, UNTILSYMBOL, IDENTIFIER, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, LABELSYMBOL, ALPHAOPERATOR]; ENDLABEL := [CONSTSYMBOL, TYPESYMBOL, VARSYMBOL, PROCSYMBOL, FUNCSYMBOL, BEGINSYMBOL]; ENDCONST := ENDLABEL - [CONSTSYMBOL]; ENDTYPE := ENDCONST - [TYPESYMBOL]; ENDVAR := ENDTYPE - [VARSYMBOL]; { INITIALIZE COLUMN DATA:} WRITECOLUMN := O; LEFTMARGIN := O; ACTUALLEFTMARGIN := O; OUTPUTCOL := 1; READLEFTCOL := 1; READRIGHTCOL := MAXREADRIGHTCOL; WRITELEFTCOL := 1; WRITERIGHCOL := MAXWRITERIGHTCOL; OLDEST := 1; CHARCOUNT := 1; LINENUMBER := O; INCREMENT := O; { INITIALIZE BOOLEAN PARAMETERS: } PACKERISOFF := TRUE; BUNCHWANTED := FALSE; DISPLAYISON := TRUE; PROCNAMESWANTED := TRUE; ENDCOMMENTSWANTED := FALSE; NOFORMATTING := FALSE; { INITIALIZE NUMERIC PARAMETERS: } INDENTINDEX := 3; LONGLINEINDENT := 3; PROCSEPARATION := 2; SYMBOLGAP := 1; STATMTSEPARATION := 3; DECLARALIGNMENT := O; { INITIALIZE INPUT CONTEXT DATA: } READCOLUMN := 1; CHISEOL := FALSE; NEXTCHISEOL := FALSE; FOR I := O TO BUFFERSIZE DO SYMBOL[I] := ''; LASTSYMBOL := PERIODSMBOL; LASTPROGPARTWASBODY := FALSE; END {INITIALIZE}; BEGIN {MAINPROGRAM} CONSTANTSINITIALIZATION; INITIALIZE; IF EOF(INPUT) THEN WRITELN('*** NO PROGRAM FOUND TO FORMAT.') ELSE BEGIN READACHARACTER; READSYMBOL; IF SYMBOLNAME <> PROGSYMBOL THEN WRITELN('***"PROGRAM" EXPECTED.') ELSE BEGIN { ********************************************************************* F O R M A T T H E P R O G R A M - - - - - - - - - - - - - - - - ******************************************************************** } STARTNWLINEANDINDENT; WRITESYMBOL; READSYMBOL; FOR I := O TO (LENGTH - 1) DIV ALFALENG DO PACK(SYMBOL, (I * ALFALENG + 1), MAIN[I + 1]); MAINNMLENGTH := LENGTH; REPEAT WRITESYMBOL; READSYMBOL; UNTIL SYMBOLNAME = SEMICOLON; WRITESYMBOL; READSYMBOL; STARTNEWLINEANDINDENT; DOBLOCK(MAIN, MAINNMLENGTH); WRITEA('.'); FLUSHUNWRITTENBUFFER; END; END; 13: END {MAINPROGRAM}. 1978EMP07 f E 582 1046.89 E 583 1151.39 E 584 996.51 E 585 627.63 E 586 732.19 E 587 537.45 E 588 513.44 E 589 374.42 E 590 110.15 E 591 979.37 E 592 1426.28 E 594 531.30 E 596 500.91 W 599 5659.58 AS0 .TITL AS .NREL .RDS CPU .WRS CPU .RDL CPU .WRL CPU .RDB CPU .WRB CPU .ERTN .OPEN CPU .CRAND .PCHAR .GCHAR .GCHN .DELETE .CLOSE CPU .GPOS CPU .SPOS CPU .END XREFSVXREFSVRDLBU6PROCEDURE READLINE( CHANNEL : INTEGER; VAR BUFFER : BIGSTR; VAR BYTESREAD : INTEGER; VAR ERR : BOOLEAN;VAR ERRNUM : INTEGER); CONST DOTRDL = 6975; {.RDL} VAR REQUEST : SCALLPTR; HEAP : ^INTEGER; STRINGPOINTER : STRPTR; BEGIN MARK(HEAP); NEW(REQUEST); NEW(STRINGPOINTER); WITH REQUEST^ DO BEGIN MODE := SIMPLE; CALLNUM := DOTRDL; R0.SPTR := STRINGPOINTER; R0.INT := R0.INT+1; R1.INT := BYTESREAD; R2.INT := CHANNEL; SYSCALL(REQUEST); {$R-} STRINGPOINTER^[0] := R1.CH; {$R^} IF ERROR THEN WRITELN(' ERROR IN READLINE = ',R2.INT); ERR := ERROR; ERRNUM := R2.INT; BUFFER := STRINGPOINTER^; BYTESREAD := R1.INT; END; RELEASE(HEAP); END; {READ LINE} TEST12gs*PROGRAM TEST(INPUT,OUTPUT); TYPE ALPHANUMERIC = STRING[99]; FIELD = RECORD KIND : (IAMSTRING,IAMINTEGER,IAMREAL,NIL); CASE INTEGER OF 1 : (IMREAL : REAL); 2 : (IMINT : INTEGER); 3 : (IMSTR : STRING[10]) END;{CASE} VAR I : INTEGER; STR : ALPHANUMERIC; NEXTFIELD: FIELD; {$I GETINTEGER.PI} {$I GETFIELD.PI} BEGIN REPEAT WRITELN('ENTER STRING'); WRITELN; READLN(STR); WRITELN(STR); GETFIELD(STR,3,NEXTFIELD); CASE NEXTFIELD.KIND OF IAMREAL : WRITELN('REAL',NEXTFIELD.IMREAL); IAMINTEGER : WRITELN('INTEGER',NEXTFIELD.IMINT); NIL : WRITELN('FIELD DOES NOT EXIST') END{CASE} UNTIL EOF(INPUT) END. TSSTcj 1 C 3048 22.56 11 2 C 3041 3.57 4 3 C 3049 44.55 10 4 C 3050 35 26 5 C 3053 256.07 4 6 C 3054 1743.66 7 7 C 3055 1200 21 8 C 3065 10 26 9 C 3057 60 26 10 C 3058 385 3 11 C 3059 172.14 8 12 C 3060 6.95 3 13 C 3061 646.33 8 14 C 3062 31 1 15 C 3063 30 26 16 CC 3064 17 C 3065 223.70 32 18 C 3066 250 27 19 C 3069 96 4 20 CC 3070 21 C 3072 129.64 4 22 C 3073 1340.63 25 23 C 3074 2500 21 24 C 3075 23 5 25 C 3076 100 24 26 C 3078 22.50 4 27 EM 810 17 15 28 EM 811 604.28 15 29 EM 812 643.69 15 30 D 140 34 31 D 8347.06 34 32 D 2086.75 33 C 3077 10.77 6 34 C 813 980.89 14 35 C 817 205.18 12 36 C 815 887.50 12 37 C 3081 35 4 38 C 3067 62 1 39 C 3083 34 6 40 C 3002 1350.12 25 41 C 3071 330 20 42 C 3085 50.99 5 43 C 3087 704.45 17 44 C 3080 1298.05 25 45 C 816 1581.88 12 46 C 3079 37.50 6 47 C 819 1581 12 48 C 3090 5324 9 49 D 1468.38 34 50 D 871.98 34 51 D 13056 34 52 D 12436.99 34 53 D 435.99 34 54 C 3068 10 18 55 C 3086 138.02 25 56 C 3088 1040 23 57 C 3090 5324 9 58 C 3091 250 8 59 C 3092 206.59 20 60 C 3093 15.40 22 61 C 3094 120.70 4 62 C 3095 20 26 63 C 3096 775 9 64 C 3097 32 10 65 C 3098 74.05 22 66 C 3099 4000 21 67 C 3101 1557.44 25 68 C 3104 40 33 69 C 3103 42.50 10 70 C 3105 504.39 25 71 C 3106 119.98 4 72 C 3107 793.50 9 73 C 3108 1537.50 27 74 C 3109 3394.50 6 75 C 3110 25 3 76 EM 818 140 27 77 EM 820 1581 12 78 EM 833 948.57 12 79 EM 834 912.14 12 80 EM 835 17 15 81 EM 836 181.73 14 82 EM 837 482.61 15 83 EM 838 2742.40 14 84 EM 840 622.50 27 85 EM 821 195.18 12 86 EM 822 1415.95 12 87 C 3113 79.95 5 88 C 3114 69.95 10 89 C 3115 200 20 90 C 3116 225 27 91 C 3117 4.65 10 92 C 3119 48 18 93 C 3120 1940.43 25 94 C 3121 269.78 17 95 C 3123 12.24 4 96 C 3124 93.27 15 97 C 3125 181.78 15 98 C 3126 243.77 14 99 C 3127 68.45 23 100 C 3129 128.35 5 101 C 3130 25.98 5 102 C 3132 15.90 5 103 C 3133 125.81 22 104 C 3134 20..47 22 105 C 3135 85.15 22 106 D 435.99 34 107 D 906.32 34 108 D 435.99 34 109 D 1628 34 110 D 3000 34 111 D 11481.06 34 112 C 3112 25 26 113 C 3118 1.30 11 114 C 3122 100 26 115 C 3128 7.86 22 116 C 3138 185.26 4 117 C 3139 19.37 10 118 C 3140 6.17 10 119 C 3141 6.46 10 120 C 3142 3.96 10 121 C 3143 3.62 10 122 C 3144 42.08 22 123 C 3145 46.50 3 124 C 3146 36.70 11 125 C 3147 27.73 10 126 C 3148 25.98 5 127 C 3149 6 33 128 C 3150 95 33 129 C 3151 78.50 33 130 C 3152 1000 25 131 C 3153 227.40 25 132 C 3154 100 8 133 C 3155 160.43 4 134 C 3156 835.38 25 135 C 3157 781.68 25 136 C 3198 28.30 3 137 EM 823 1000 12 138 C 3158 21.92 5 139 C 3159 12 33 140 C 3165 638.45 27 141 C 3167 15 5 142 C 3160 155.47 17 143 C 3161 34 10 144 C 3163 594 17 145 C 3166 465 4 146 C 3168 83.85 3 147 C 3169 200 24 148 D 1834.55 34 149 D 435.99 34 150 D 802.29 34 151 EM 824 333.14 15 152 EM 825 378.68 15 153 EM 826 2590.51 14 154 EM 827 425.95 12 155 EM 828 82.50 26 156 EM 829 38.70 14 157 EM 841 1425.95 12 158 EM 830 1425.95 12 159 EM 831 205.18 12 160 EM 832 209.37 12 161 D 905 34 162 D 594 34 163 D 520 34 164 D 435.99 34 165 DM 18.88 166 C 3162 39.95 18 167 C 3164 130.46 14 168 C 3170 120.97 4 169 C 3171 18 33 170 C 3172 36.70 10 171 C 3173 947.50 25 172 C 3174 80 26 173 C 3175 204 5 174 C 3177 496.56 25 175 C 3178 136.20 25 176 C 3179 729 17 177 C 3180 170 23 178 C 3182 121.30 11 179 C 3183 2591 22 180 C 3184 27 17 181 C 3186 10.08 23 182 C 3200 1020 27 183 D 13331.89 34 184 D 11943.74 34 185 D 4546.81 34 186 D 129.24 34 187 D 3229.35 34 188 D 715 34 189 C 3176 50 22 190 C 3181 950 7 191 C 3185 125 23 192 C 3187 174.75 23 193 C 3188 290.64 4 194 C 3189 1372 27 195 C 3190 3.28 5 196 C 3191 18 5 197 C 3192 5.68 23 198 C 3203 100 27 199 C 3193 37.25 23 200 C 3194 147.08 23 201 C 3195 7 23 202 C 3196 50 21 203 C 3199 26 33 204 C 3201 2764.81 27 205 C 3202 948.17 25 206 C 3204 55.20 5 207 C 3205 14.25 7 208 C 3206 10 6 209 C 3207 7.58 5 210 C 3208 60.59 2 211 C 3209 250.65 25 212 EM 842 209.37 12 213 EM 844 1527.87 12 214 EM 845 290.37 12 215 EM 846 3584 14 216 D 531.21 34 217 EM 843 1527.87 12 218 EM 847 1527.87 12 219 EM 848 209.37 12 220 EM 849 1000 12 221 EM 850 9000 12 222 C 3210 720 27 223 C 3211 69.37 2 224 C 3212 1.81 11 225 C 3213 176.55 25 226 C 3214 10.46 25 227 C 3215 18.28 5 228 3216 64.28 5 229 C 3217 547.32 17 230 C 3218 136.48 17 231 C 3219 48.60 10 232 C 3220 170 23 233 C 3221 10 8 234 C 3224 227.40 17 235 C 3225 36 5 236 C 3222 450 27 237 C 3223 10.64 5 238 C 3226 93.71 4 239 C 3227 74.13 2 240 C 3230 31 26 241 EM 851 4000 36 242 C 3229 2774.75 23 243 C 3228 102.08 4 244 C 3231 35 18 245 D 4888.40 34 246 D 3435.99 34 247 EM 852 1527.87 12 248 C 3232 125 23 249 C 3233 3654.15 23 250 C 3235 37 33 251 C 3236 42.50 33 252 C 3237 2282.26 6 253 C 3238 138.17 33 254 C 3239 95.64 2 255 C 3240 3.70 5 256 C 3241 4.33 5 257 C 3242 535.39 18 258 EM 854 48.65 12 259 EM 853 540 15 260 D 3148 34 261 D 296.31 34 262 D 1403.43 34 263 D 174 34 264 D 2600 30 265 C 323 298.80 25 266 C 3243 28.20 3 267 C 3244 341.40 10 268 C 3245 500 25 269 C 3246 328.44 10 270 C 3247 784.13 25 271 C 3248 125.30 11 272 C 3249 5.76 23 273 C 3250 50 24 274 C 3252 1760 27 275 C 3251 100 2 276 C 3253 43 1 277 C 3254 290.77 4 278 C 3255 100 2 279 C 3258 42.50 33 280 C 3259 4.60 23 281 C 32600 820.84 25 282 C 3261 732.30 8 283 C 3263 50 22 284 C 3264 296.31 23 285 C 3265 168.01 25 286 D 435.99 34 0 16 20 1 14 38 276 2 210 223 239 254 275 278 3 10 12 75 123 136 146 266 4 2 5 19 21 26 37 61 71 95 116 133 145 168 193 238 243 277 5 24 42 87 100 101 102 126 138 141 173 195 196 206 209 227 235 237 255 256 6 33 39 46 74 208 252 7 6 190 207 8 11 13 58 132 233 282 9 48 57 63 72 10 3 64 69 88 91 117 118 119 120 121 125 143 170 231 267 269 11 1 113 124 178 224 271 12 35 36 45 47 77 78 79 85 86 137 154 157 158 159 160 212 213 214 217 218 219 220 221 247 258 14 34 81 83 98 153 156 167 215 15 27 28 29 80 82 96 97 151 152 259 17 43 94 142 144 176 180 229 230 234 18 54 92 166 244 257 20 41 59 89 21 7 23 66 202 22 60 65 103 104 105 115 122 179 189 283 23 56 99 177 181 191 192 197 199 200 201 232 242 248 249 272 280 284 24 25 147 273 25 22 40 44 55 67 70 93 130 131 134 135 171 174 175 205 211 225 226 265 268 270 281 285 26 4 8 9 15 62 112 114 155 172 240 27 18 73 76 84 90 140 182 194 198 204 222 236 274 32 17 33 68 127 128 129 139 169 203 250 251 253 279 36 241 1 14 38 276 SEARCH KEY 1 14 C 3062 31 1 38 C 3067 62 1 276 C 3253 43 1 AMOUNT = 1.360E+02 2 210 223 239 254 275 278 SEARCH KEY 2 210 C 3208 60.59 2 223 C 3211 69.37 2 239 C 3227 74.13 2 254 C 3239 95.64 2 275 C 3251 100 2 278 C 3255 100 2 AMOUNT = 4.997E+02 3 10 12 75 123 136 146 266 SEARCH KEY 3 10 C 3058 385 3 12 C 3060 6.95 3 75 C 3110 25 3 123 C 3145 46.50 3 136 C 3198 28.30 3 146 C 3168 83.85 3 266 C 3243 28.20 3 AMOUNT = 6.038E+02  4 2 5 19 21 26 37 61 71 95 116 133 145 168 193 238 243 277 SEARCH KEY 4 2 C 3041 3.57 4 5 C 3053 256.07 4 19 C 3069 96 4 21 C 3072 129.64 4 26 C 3078 22.50 4 37 C 3081 35 4 61 C 3094 120.70 4 71 C 3106 119.98 4 95 C 3123 12.24 4 116 C 3138 185.26 4 133 C 3155 160.43 4 145 C 3166 465 4 168 C 3170 120.97 4 193 C 3188 290.64 4 238 C 3226 93.71 4 243 C 3228 102.08 4 277 C 3254 290.77 4 AMOUNT = 2.504E+03 5 24 42 87 100 101 102 126 138 141 173 195 196 206 209 227 235 237 255 256 SEARCH KEY 5 24 C 3075 23 5 42 C 3085 50.99 5 87 C 3113 79.95 5 100 C 3129 128.35 5 101 C 3130 25.98 5 102 C 3132 15.90 5 126 C 3148 25.98 5 138 C 3158 21.92 5 141 C 3167 15 5 173 C 3175 204 5 195 C 3190 3.28 5 196 C 3191 18 5 206 C 3204 55.20 5 209 C 3207 7.58 5 227 C 3215 18.28 5 1980DP[  8,347.06 140.00 1,468.38 871.98 13,056.00 5,324.00 12,436.99 435.99 435.99 906.32 3,000.00 435.99 1,628.00 11,481.06 1,834.55 435.99 802.29 905.00 594.00 435.99 520.00 13,331.89 1,527.87 129.24 4,546.80 11,943.74 715.00 3,229.35 531.21 3,435.99 4,888.40 1,403.43 296.31 174.00 2,600.00 3,148.00 117,396.31 1980CHECKS  C 3040 704.45 C 3066 250 27 C 3069 96 4 C 3075 23 5 C 3076 100 24 C 3077 10.77 6 C 3078 22.50 4 EM 810 17 15 EM 811 604.28 15 EM 812 643.69 15 D 140 34 D 8347.06 34 D 2086.75 C 813 980.89 14 C 817 205.18 12 C 3081 35 4 C 3067 62 1 C 3083 34 6 C 3071 330 20 C 3085 50.99 5 C 816 1581.88 12 C 819 1581 12 D 1468.38 34 D 871.98 34 D 13056 34 D 12436.99 34 D 435.99 34 C 3068 10 18 C 3086 138.02 25 C 3088 1040 23 C 3090 5324 9 C 3091 250 8 C 3092 206.59 20 C 3093 15.40 22 C 3094 120.70 4 C 3095 20 26 C 3096 775 9 C 3097 32.88 10 C 3098 74.05 22 C 3099 4000 32 C 3101 1557.44 25 C 3104 40 33 C 3103 42.50 10 C 3105 504.39 25 C 3106 119.98 4 C 3107 793.50 9 C 3108 1537.50 27 C 3109 3394.50 6 C 3110 25 3 EM 818 140 27 EM 820 1581 12 EM 833 948.57 12 EM 834 912.14 12 EM 835 17 15 EM 836 181.73 14 EM 837 482.61 15 EM 838 2742.40 14 EM 840 622.50 27 EM 821 195.18 12 EM 822 1415.95 12 C 3113 79.95 5 C 3114 69.95 10 C 3115 200 20 C 3116 225 27 C 3117 4.65 10 C 3119 48 18 C 3120 1940.43 25 C 3121 269.78 17 C 3123 12.24 4 C 3124 93.27 15 C 3125 181.78 15 C 3126 243.77 14 C 3127 68.45 23 C 3129 128.35 5 C 3130 25.98 5 C 3132 15.90 5 C 3133 125.81 22 C 3134 20.47 22 C 3135 85.15 22 D 435.99 34 D 906.32 34 D 435.99 34 D 1628 34 D 3000 34 D 11481.06 34 C 3112 25 26 C 3118 1.30 11 C 3122 100 26 C 3128 7.86 22 C 3138 185.26 4 C 3139 19.37 10 C 3140 6.17 10 C 3141 6.46 10 C 3142 3.96 10 C 3143 3.62 10 C 3144 42.08 22 C 3145 46.50 3 C 3146 36.70 11 C 3147 27.73 10 C 3148 25.95 5 C 3149 6 33 C 3150 95 33 C 3151 78.50 33 C 3152 1000 25 C 3153 227.40 25 C 3154 100 8 C 3155 160.43 4 C 3156 835.38 25 C 3157 781.68 25 C 3198 28.30 3 EM 823 1000 12 C 3158 21.92 5 C 3159 12 33 C 3165 638.45 27 C 3167 15 5 C 3160 155.47 17 C 3161 34 10 C 3163 594 17 C 3166 465 4 C 3168 83.85 3 C 3169 200 24 D 1834.55 34 D 435.99 34 D 802.29 34 EM 824 333.14 15 EM 825 378.68 15 EM 826 2590.51 14 EM 827 425.95 12 EM 828 82.50 26 EM 829 138.70 14 EM 841 1425.95 12 EM 830 1425.95 12 EM 831 205.18 12 EM 832 209.37 12 D 905 34 D 594 34 D 520 34 D 435.99 34 DM 18.88 C 3162 39.95 18 C 3164 130.46 14 C 3170 120.97 4 C 3171 18 33 C 3172 36.70 10 C 3173 947.50 25 C 3174 80 26 C 3175 204 5 C 3177 496.56 25 C 3178 136.20 25 C 3179 729 17 C 3180 170 23 C 3182 121.30 11 C 3183 25.91 22 C 3184 127 17 C 3186 10.08 23 C 3200 1020 27 D 13331.89 34 D 11943.74 34 D 4546.81 34 D 129.24 34 D 3229.35 34 D 715 34 C 3176 50 22 C 3181 950 7 C 3185 125 23 C 3187 174.75 23 C 3188 290.64 4 C 3189 1372 27 C 3190 3.28 5 C 3191 18 5 C 3192 5.68 23 C 3203 100 27 C 3193 37.25 23 C 3194 147.08 23 C 3195 17 23 C 3196 50 21 C 3199 26 33 C 3201 2764.81 27 C 3202 948.17 25 C 3204 55.20 5 C 3205 14.25 7 C 3206 10 6 C 3207 7.58 5 C 3208 60.59 2 C 3209 250.65 25 EM 842 209.37 12 EM 844 1527.87 12 EM 845 290.37 12 EM 846 3584 14 D 531.21 34 EM 843 1527.87 12 EM 847 1527.87 12 EM 848 209.37 12 EM 849 1000 12 EM 850 9000 12 C 3210 720 27 C 3211 69.37 2 C 3212 1.81 11 C 3213 176.55 25 C 3214 10.46 25 C 3215 18.28 5 3216 64.28 5 C 3217 547.32 17 C 3218 136.48 17 C 3219 48.60 10 C 3220 170 23 C 3221 10 8 C 3224 227.40 17 C 3225 36 5 C 3222 450 27 C 3223 10.64 5 C 3226 93.71 4 C 3227 74.13 2 C 3230 31 26 EM 851 4000 36 C 3229 2774.75 23 C 3228 102.08 4 C 3231 35 18 D 4888.40 34 D 3435.99 34 EM 852 1527.87 12 C 3232 125 23 C 3233 3654.15 23 C 3235 37 33 C 3236 42.50 33 C 3237 2282.26 6 C 3238 138.17 33 C 3239 95.64 2 C 3240 3.70 5 C 3241 4.33 5 C 3242 35.39 18 EM 854 48.65 12 EM 853 540 15 D 3148 34 D 296.31 34 D 1403.43 34 D 174 34 D 2600 30 C 3243 28.20 3 C 3244 341.40 10 C 3245 500 25 C 3246 328.44 10 C 3247 784.13 25 C 3248 125.30 11 C 3249 5.76 23 C 3250 50 24 C 3252 1760 27 C 3251 100 2 C 3253 43 1 C 3254 290.77 4 C 3255 100 2 C 3258 42.50 33 C 3259 4.60 23 C 3260 820.84 25 C 3261 732.30 8 C 3263 50 22 C 3264 296.31 23 C 3265 168.01 25 D 435.99 34 C 3082 1350.12 25 C 3136 16.00 1 C 3216 64.28 5 C 3234 298.80 25 C 3262 88.41 14 C 3268 14.00 26 C 3276 146.75 11 C 3277 60 1 C 3278 19.01 11 C 3279 72.18 5 CC 3064 CC 3070 CC 814 CC 3087 CC 3137 CC 839 CC 3131 CC 3084 CC 3089 CC 3100 CC 3102 CC 3111 REALFIELDBU FUNCTION REALFIELD(STR : BIGSTR; FIELDNUMBER : INTEGER) : REAL ; VAR I,J,LEN : INTEGER; BEGIN LEN := LENGTH(STR); I := 1; J := 1; WHILE ( (I FIELDNUMBER) ) DO BEGIN {LEADING BLANKS AND TABS} WHILE ( (IJ M Y S T@U](IP7#B#B#B#B#B#B  ,f(J ,  ,07(: "$R  Q(IP7]n! ! ,07:. Q0BB03 BB CB 45 9 @9(L , W 1B 45  \\ (0B"A~$N P"([ *$RIv *)03PJ 45!p)m ,!n Z!f)fIdAd!d ,03!_B!ZB 45  , V Q )03 45 @! Y$R Y! Y OPEN ERR- NOT DUMPED \ ((9 ) W )!0 I20B"(\ !,)$0<  (S!" ,(J (K* * B ) P!P  ,ggZ ,1" Y  MT OP ERR 1 MT OP ERR 2 MT OP ERR 3 MT OP ERR 4 MT STATUS ERR DISK TO TAPE DUMP DUMP TAPEREAD-LOCKED FILE- NOT DUMPED. -$Rg gMT0:0SYS.DRMAP.DRG---FDMTIOGPSUB\ x:Z(+J 8  5   0:(;( (B: #(}B8"!8C y!8S ~]! 282B(~ y*P@P@J*l  ll"l2pm NNWoNNNNWo BBB"B* B ) "   * 8 y"B"B "*  G &F\ x*8+ " *" F" :* + *KB*   *    *    \ x"  B" [!Z J y*" * JB B" J"*BJJ" J       B " Z)"BB*"JB &*SS J*JI\ x B"B" * J  y!  "BB   ! *ąB *P      "B"B* "* &F\ x*P !:" :Z"C"C " 32B J " S32B J#C3 B)" J " Z! !W J y \ x \ x B" J " !   y1MOUNT NEXT REEL, STRIKE KEY WHEN READY. TAPE WRITE PROTECTED, INSERT RING AND STRIKE ANY KEY. \ x B"B)J" " \ x Z:#*  ! 2,TAPE HAS WRONG REEL NO. \ x *"  A 0"2 *? y! 3! 3! Y ") !   y3%\ x2 (z Q { y\ x1 z\ x2 ?3 "  y\ x"  y *"BJ yXXX NOT READY- MAKE IT READY! 9!X" S*""2 &? 3JZ" Z)3BBOVEOVEOFEDSY 8CKS1X3810X#+3\ A!)"A0!   !) ! !  ! 8 C . Q " )1QҐ*  A ! ! J1A!\ AI! A! )    8 !   ( \ C3"C# 8  8 8 \ A!1!)! U ! (  Q !.A U \ 5Q55\ (1 # 8  \ 7Q "C \ # 1`)` S !)ԥ1X)X q@UP@)O  (( 3P8#1`"0@  %@ @ (   8# !g (Q \ 8! 1Q 66\ )  I    #  (  # V7777* *P *D *L \ !a1a*9fy9dYa  !W  ![)S  !X@!U8C)L  ) 3!4) )J!% )J @!  !   I9$929@) !) ! 889978$LPTFCOM.CM$TTO$TTO1MT0:0MT1:0INVALID COMMAND STRING! \ /I7!A+P@K) 8!)  AI0\ 5#A"#*  !I*I) :! )" ! ! 3   SYS ERR RETN- OFFSET: NNNNNN IN XXXXXX:9: \ \ Y` /  J 8S+!K`` \ `83* KB g?`Y J9K`"  Y9; # #PCCK[ 911#M\ `1a `)a9y  8# AJQYo9V:#  FQc0 "X  B%E)E  bB `B "B &B 68%7)7  # b#`#@"#@&#@3  +:!Y 94S( 508 S P*I "*`\ :2`)P\ *@SK+K8 P`\ 1I)YqQ2 :91*KZcYb9; *KYYW8CKS0S4 @SҀL\ )^ o5F X:]BJ 8+@J)JJ J )ܧ #B#BQ  1" J9-#K]!\ 0 : .  0-JU@A- ) )  @J Z) "B-JU\ C 18S"1Y12 : 9111  OBOOTSV  ^kI9 - - - Xh8hC(eH d0`@dKPPHa `` hPV(a e0_ҝN0b8cNdKf?Gd5 ^ Ց0_8h(eBX<h < w g f ! W X # % M    + (2@@ ,FP\c]r {c 48*!'s ZA90$ ./:, ( -  Y 8 CKS!X #8 !X #+3\ (\ 3"  BOOT REV 6.20 COPYRIGHT(C)DGC,1972,1973,1974,1975,1977 ALL RIGHTS RESERVED FILENAME? SYS.SV1 INSUFFICIENT MEMORY 1 OVERLAY FILE MUST BE CONTIGUOUS 14 FILE NOT FOUND: 1N FILE NOT EXECUTABLE: 1l LINK DEPTH EXCEEDED AT LINK 1 NOT A PARTITION: 1 UNKNOWN DEVICE SPECIFIER - 1 DEVICE NOT A TOP LOADER: 1 DEVICE OFF LINE: 1 HARDWARE FAILURE 1( INVALID DISK ID BLOCK x  - xf?\ x8 !C C0ڀ#( y8  C y \ (" C\ (: žZ\ +J\ (׍ (Ӎ (ԥ(Ս(֥\ 0S/ \ CC0SҐ(KBP`K+  + +  C(܍ (ۍ (ڥ  CC C(ٍ  # օC# \ 0S8 ga(Χ   y8 + 0  ҫ y  y3 + !1  w! y y_' \ / bIgI7 x\ n\ !:C ")4 / )10 * !((0  DR ")* (@HDj1" ! (0 S  `\ 0 l8 S\ hP 9bX !a@@@@^@@ @@0 e" ,} P (@(f8gI*K8 $t@$u@,vHDvDj P a?@ .  @ %@0   DR 0 ( (ԥ ^  SV  ! ") ")* @H 0( OL  ")ݏ ")* 0 B J B B B @ @Dj0 !ǁ @d(^  "@_  d  )8 # + "@b"@cP "( 8e 0@d 0 )\ '@\ ") ")* @H@H0PHTj (0  BC PARTITION IN USE - TYPE C TO CONTINUE ONTINUE SYS.DR\ !  S  3")ҧ  w ga y(Χ)ȍ  w 8\ (08@HPXDj\ ) 0 \ !(0 \ A A !  \ (1"  !nS2S (32 "  3!YSS3"3*22UO1U n'1K  /0Ϸ14/3:2 CKP0 )/;+ 3"@'@Dj#Ds#DrP) )DiLk4p 1Dp) Tp x 2{DK DPDZ DS 0;760100F11F22F33F44F55F66F77F01234567\ 1C 1@ 1= 1: @17 14 C#C32" )" *K+ #"G +  ) "+"G @\ DqPDm!C!C\ !6C# 2 C w\+ . w "0 *ʅ(e: 8 0 *K @#(ϧ "Dm#Dq"C"C / \ Ց![ yҐҐҔ\ ! 0 ?x\ PIf!bC!C1ar b d#)f@gabCAx@`@`px<  !g@AIQY9Y9 9Y9YYt jj@j9Y z@gy9`x1x VxAx1x Rx1xxxPxxAxIIx!x1ppvbpbnx)xyxx xxPpxjx!x):pxbx!xP`x)x`x`x`x`xp`xf@xgxxyxxj!p)ppbpapJpp!)1KY1 )0)DP( DISK ERROR, STATUS = /Ց![ ҐҐҔ!  f?AnbIgId@D3Yڀ#9 Y PY9P@ @8 Y9 1Y;Q= 9; 99#+υP1 )ՐR") Q)"f? f?P#B)1\ f? ")* @HA] \f?f?!S@!R@T1A\ 8 S ):K"10 C+!+C( <" C)  1"3!" S# C !C"/  3=HP(AIQY1F A! &IIII (00Q4 9A!Iފ!*Q!ڂ"P=вP)1!ɂ ` "*1 !)18 A/ f?P f?֭f?0J  f?  !X J#@# @ #@# @ #@BOOTSV BOOT.SV NOT FOUND DIRECTORY ERROR "AU8"C"CC ~@ QH e!E@    (  w ga(Ώ y w!. !, (Lt(LuDv!$D|!#D{z!Du Dt$pADp0 o0~P o!Dp!(  yf?YN8 BOOTSTRAP DEVICE SPECIFIER ? INSTALL BOOTSTRAP (Y OR N) ? SYS2LPDqff  PATCH DIALOG FILE DATE LAST PATCHED: 11/22/80 12:13:53 SAVE FILE PATCH INSTALLED AT LOCATION 57500 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 422 * SAVE FILE PATCH INSTALLED AT LOCATION 61 * OVERLAY FILE PATCH INSTALLED AT LOCATION 14436 * SAVE FILE PATCH INSTALLED AT LOCATION 53330 * SAVE FILE PATCH INSTALLED AT LOCATION 64 * SAVE FILE PATCH INSTALLED AT LOCATION 65 * SAVE FILE PATCH INSTALLED AT LOCATION 66 * SAVE FILE PATCH INSTALLED AT LOCATION 67 * SAVE FILE PATCH INSTALLED AT LOCATION 401 * OVERLAY FILE PATCH INSTALLED AT LOCATION 377 * SAVE FILE PATCH INSTALLED AT LOCATION 56727 * SAVE FILE PATCH INSTALLED AT LOCATION 61034 * SAVE FILE PATCH INSTALLED AT LOCATION 61037 15 APPLICABLE PATCH(ES) 14 PATCH(ES) NEEDED TO BE INSTALLED CLIS0 SYS5.LBPLCNAK.T28.POSTFIX.PXSEQ.01CBOOK.1978EMP.08WRITESTRIN.PICONSOLE.MCALMSPD.RBINTERPOK.PXT38.PRETTY.PACBOOK.PATEST.011978EMP.09CROSSREF.PXP4XAP.T17.BITS.TEDIT.SVTEST.021978.011978EMP.R1TEST8.GETFIELD.PIT27.1978.02CONSOLE.CM1978.151978EMP.R2COM.CMSYS24K.BYTE.T37.T17RL.CROSSREF.BUTEST3.PX1978.03TOTAL.AS.RBCLOSE.PI1978EMP.R3DATA.BTINTERPOK.TEST7.T16.SEDIT.SVREALPRINT.PAT3.MCC.MC1978.041878.05TOTAL.PAPL.MC1978.05T26.CROSSREF.TEST.MCPL5.PX1980.D2BTREE.PXINPUT.T36.T.EDIT.SV1978.06DATA.1980.D3IO.T15.1978.07FDUMP.SVTEST6.FOBAR.OPEN.BUGETREAL.BUCBOOK.02PL.CM1980.D4284.R.PXG.1978.08TEST.CMTEST.PO1978.DONSB801215.OPEN.T35.TEST1.PXGETI.1978.091978.R01978.DP1978CHECKS.PL5.PINFO.PXALLINK.T14.R.BU1978.DQ1978.R1TEST5.MANUAL2.10BREAK.SVDEAR.1979CHECKS.ALLOC.T24.36.TKOM.01F.REALPRINT.02CBOOK.MCCONSOLE.PXASM.SVMANUAL2.11GETCOLUMN.BU$PLT.R.T34.REALPRINT.PIDELETE.PICRAND.PIPASCALO.PXT13.P4ERRORS.POSTFIX.PATEST4.READLINE.PIWRS.BUCONSOLE.BUREAD.MEMANUAL2.01INTERPOK.PAT23.GLOBA.GETINTEGER.PIRDS.BUCBOOK.CMCTLA.T33.NODES.CROSSREF.PAT11.PX1980DEPS.TOTAL.MCCONSOLE.GLOBAL.T12.TEST3.T.PAPL.PXPX.SVT22.D.PRETTYINST.TEST.PXTEST3.PAWRL.PICATEGORIES.GETFILEDRE.BU1979.D21978.D3$TTI.PASCAL.ERT1.T32.T10.PXP.BEDIT.SV1979.D3RDL.PIDATA.TOT2.T11.BTREE.BYTE.01TTT.PXTEST2.$TTI1.TEST.BUPL5.PA1979.D4FLOAD.SVSYS.LBBTREE.PAT3.T21.SEQ.BYTE.02PRETTYPRIN.PXTEST2.PAGCHAR.PIPL.T4.T31.TEST.CDC6000.PX$PTP.T5.OUTPUT.T41.1978.NODES.01CROSSREF.02TEST1.R.PA1978EMP.DATA.01TST.SYS.DRT6.T20.PRETTY.PXCBOOK.PXREALPRINT.PTTEST1.PA$PTR.$TTO.T30.T7.TEST.LS$TTP.RLDR.SVGETFIELDIN.BUT8.T39A.T40.CBOOK.BUGETREAL.011978EMP.10$TTO1.CONSOLE.PATEDIT.TSS.MAP.DRT9.BTREE.011978EMP.11$TTP1.GPOS.PI$TTR.RLDR.OLPASCFLS.T.MCREALPRINT.PXGETREAL.PITOTAL.PXWRITELINE.01OPEN.PI1979DEPS.DATA.TXSPOS.PIPASCAL.PXPASOPSYS.MC$TTR1.OPENFILES.PI1980.02T11.PA1978EMP.01TL.MCREALPRINT.BUGCHN.PICRAND.BUDELETE.BUPCHAR.PIPL.PAPA.SVTEST.PA1978EMP.03CONSOLE.01GETINTEGER.BUBTREE.MCDATA.R1T19.TKOM.FIXFL.T10.PA1978EMP.04TEST.22$LPT.T29.KOMPAR.T100.TTT.PAR.MC1978EMP.05WRS.PITEST.23TEST10.PASINTERP.SVADDRESS.T39.CDC6000.1980.DOPRETTYPRIN.PATOTAL.LS1978.101978EMP.061978EMP.MCRDS.PIWRL.BUTEST11.PASINTERP.ERI.PXT18.INTGET.PETTYPRIN.01CDC6000.PA1978EMP.07AS.XREF.SVRDL.BUTEST12.TSST.1980.DP1980CHECKS.REALFIELD.BUTEMP.978EMP.01TL.MCREALPRINT.BUGCHN.PICRAND.BUDELETE.BUPCHAR.PIPL.PAPA.SVTEST.PA1978EMP.03CONSOLE.01GETINTEGER.BUBTREE.MCDATA.R1T19.TKOM.FIXFL.T10.PA1978EMP.04TEST.22$LPT.T29.KOMPAR.T100.TTT.PAR.MC1978EMP.05WRS.PITEST.23TEST10.PASINTERP.SVADDRESS.T39.CDC6000.1980.DOPRETTYPRIN.PATOTAL.LS1978.101978EMP.061978EMP.MCRDS.PIWRL.BUTEST11.PASINTERP.ERI.PXT18.INTGET.PETTYPRIN.01CDC6000.PA1978EMP.07AS.XREF.SVRDL.BUTEST12.TSST.1980.DP1980CHECKS.REALFIELD.CLISV ==. +*%T PQ[!H "!C "!C "!@ "!= "A@E!) ( Y "% 0 *  8!P ") 11 1 ( g&,O7O+ OC8S*!8* PJ ( )/ ( "8 ;Z ( J "%"`!" ( ( *PJ*PB" ? "! *:60lFCLI.TFCLI.CFCLI.S:CLI.ER:CLI.OLFCLI.CMR ^D^Z:^D^Z:^D^Z BREAK INT STACK OVERFLOW. LOG FILE ERROR. COPYRIGHT(C)DGC,1972,73,74,75,76,77,ALL RIGHTS RESERVED00 " !YEY!YEY)Q K)QK0K K K KKKK )Q0KKK1="C # 19 ( 1"  ;/& ,[]"+k ( ()g# C  (#  ! (U3}[ ( 3  (KS3%&0S> (3 4K (3 ,!3 ((3 3 KK ( (+ (K # ! KSKK 1S ( 1 ( g *^Z@],  (5#  ( (KS# 1$ ( 1!3 S 3 S ײ! ! # S  0ڪ@K#1) ( (#  # ( ( #1 ( ( S S +K+"* (  *" P1 (3"  *"  *" (  * (#K)'K//  ( 7  +#J ) *1 !    !PP!S  ) ##+  + #)M ( )G ( #)C3 (  3! B *  ( Y *#).3 ( +5)9)  . %8;  0 29I { * #v *   ( * (h .d\ ( dK "% +!"1 11 `C# ( KCC1*  (  17@$85 ( ( dC1 #P ( KC ( K)3 ( 0 2!1 . * *11 ( g *N Z 9 9 129 1 K83!B *l  !P  ** :Rj 6 Y * 0b pz h} |  5  ' N` Tc \f    4 6   V d \   @ b 0 P ( H" 6 ? P e Y k w BnIuH{<q(   v Fs  v SQUASHDELETERLDR.DISKBUILDFPRINTMKSAVECHAINDEBEXFGBATCHUNLINKSPEBLSPKILLSPDISLISTCREATECRANDMOVECCONTCDIRBOOTENDLOGREPLACEGDIRMDIRLDIRGSYSCPARTCLEARGMEMSMEMXFERFBREAK.SV.MCFCLI.CMCHATRCHLATFCOM.CMASMMACMASMOVLDRAPPENDRENAMEEQUIVFILCOMLOADDUMPTYPEPRINTBPUNCHMKABSALGOLFORTRANFORTEXECUTE ERROR ON CHAIN INITRELEASELFECLGSDAYSTODGTODREVPOPTUONTUOFFTPRINTMESSAGEFGND 0K !j  b# 1e ( 1" @ ; s%"1I (1E ( ({ (k"B# 18 ( "C 12" * (# 1* (# 1% (n# ()QK+ 1 (7K 1 (  (# ) 1 (" ( g 2" (KB ( *2 (K ( ;K *:0KKKK *2 (ܪ ( *2 (K (#3B *2 (* ("B *2"P (JPB (3J *C2# ( " (K ( B *2CK# (K ( # ( # C2S2)J3*3B *3*!*SJ" "!  ! ?3"*2  ?3#)BJ"2  ?#3) ;;# ( YG2SK)QK#C3 ?1)&3  5  \d# ( 1" ^  3 ()3 ( *9) #)& ( ) ( ## ( !1 )3 (܊3 (3 * ( gOQOKKC)Q KK)QOK # ( 1+ E# (   + +19+ #+K 3 ? Ҝ *5  \d *1K^OSK1KC+39  * ?; *;S *# ( 1S7  3& sIPMQVW3OD$HY0F*BXZUTCE ,  *# ( > # ( !*# ( :+CSP1 )! "+ ( C "*3&2# ( ږ*3&2# ( ϖ*# ( BɭQK # ( #&C +K K # ( # (  1+ *3 # ( #+ +  0 "+ ( S " ( # 3+; ## ( 3##) (  FATAL OUTPUT ERROR ( ) ( 9VB * ( dҐ3 *  (  B * ( ( ;SS * ( a)) ( 9 ( *!+ J *1 #K *CK ( # ( #B *CK2Қ ʠ"CP8 ( # ( ##3CK# (  # (    *3 * (   3 B *3 B *CK9#J$) ( K31#+ ( # ( ;!S *. C!8C!:C!+C0K'#  !. ( # (  3 #) ( ( 3B *0 o t'd  z@0123456789ABCDEFK)NK)_K)5CK!1C*K0#+ ( JCKM !] ( # ( 32Қ) # ( # ( 3B *0  ;B@'d  @ @0123456789ABCDEF#+:28;KC *S ( K1) +13R SR;S *;1S *0CS ( ! ! !13SRR #;S *90 -1;S *2 ( C)^ (  K ) "  # ( #) "  # )G3 *13J *  PC"CK*K ( #+  )# ( # ( # *+    ) " # ) 1+ .T0BJZ;Z+J98"X!/!- 'I(**KS@J"*T0BJZ<8!)  I ;X##+31:CK52 $ ).1.QP ' !'P  +  '  #  3J *!!3* ( * ( >B *} C*!99 * (  **!99 * (  *^E: ^C ^E UNKNOWN ERROR CODE K "2CK)S "*SKC+! ( ! (  (  *DJ^D^Z/^D^Z/^D^Z ^D^Z:^D^Z:^D^Z ( g * *| 5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`GHMASV 'ee I(g,g%J   I5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`SYS1NSV v ff &PQOQQ*  f NOVA RDOS REV 6.32 ``DS 8u Iu*%d8)TV d*WX~ )&1&9&"C @5 >!r "i?!   @)  P >!  O V^*( Q,-.?!.@0 Q? *0.)$)  -(, " Q,-.?!@0 Q0?  .(-0, "-Dl:/\ K!$@+0(@/@,@-@. 4  O DL// ?1  00  09  H1 Q@1? L+ L (5  >0)9!F )3!CA? Q?  O!8  O 9!3  O > 6@)P3  O!#)!9E99!P C08 trx ~'jn1 O\ K029+  #@*PH<)U  O 4P H ?1 A t 0@- +U!%  O!" + OAAA@1 =@+ 0 L G NI101 G NI!m I1 O G NI 4 I 4)" @ I(-h(4 !G "c`(7! H@1[0Y = Q?-Q: G NH. G OH/ 4(. H -@ @,",1m / O +T,01!)99Ҕ % ""!Ҕ  "# )Ҕ ! "$  F N 4(.  O) O P- G N #2 G NH. 4 I(2H, . 41 M Q4.N,?2 = *1! O\ K7P3 ? O LY  ! @8(08C\ K*!K L\ K! ړ3C L\ K" S L\ K!@)_4 L3 @@\ K7 9ŠA# 1!P)?4 L3 @SY 8)+Z)*3 @Z#'d \ KQ(Q( ?1I  ?9 1  1 Q +-08C)! K L\PPP8 \ K7 1 Z L 1 L\8(CSҐ *? ?CS L\ K7P3 J L JK L\ K L J O @ L\ K J O @C L\ K<! ?K L ;A (: H< 7 O LY 8CKS1X3810X#+3\ KAQ ?! ? L! L+H3A8I8Q8Y8A3I3Q3Y3\ KI*9-#)%#A)) 3A#0("A1") A:#PI9#A Q&?  L    (N[j w & ?;@E-O] ILLEGAL FILE NAME ^T NOT A SAVE FILE: FILE ^T  END OF FILE: FILE ^T FILE ALREADY EXISTS: FILE ^T FILE DOES NOT EXIST: FILE ^T  PARITY ERROR: FILE ^T  NOT ENOUGH MEMORY AVAILABLE^A  OUT OF SPACE: FILE ^T  FILE READ ERROR: FILE ^T UNIT INPROPERLY SELECTED: ^T ILLEGAL STARTING ADDRESS: FILE ^T DEVICE NOT IN SYSTEM: DEVICE ^T INSUFFICENT CONTIGUOUS BLOCKS: FILE ^T  CHECKSUM ERROR: FILE ^T ILLEGAL BLOCK TYPE: ^O  SYS.DR ERROR^A  SYS.DR ERROR^A UNKNOWN DEVICE CODE ^O  UNKNOWN ERROR CODE ^O LOAD CT0, STRIKE ANY KEY ILLEGAL DATE ^D/^D/^D DATE (M/D/Y) ? ILLEGAL TIME ^D:^D:^D TIME (H:M:S) ? ILLEGAL CHARACTER ^A CLI.SVRESTART.SVMT0CT0CT0:0MT0:1$PTRMCAR:00MCA1R:00$TTRERROR BLOCK - OUTPUT FILE VACANT YOU LOADED ^T TAPE# ^D I WANT ^T TAPE# ^D..... TRY AGAIN \ K1T'Q* ?01 1= ? A1 @^  C  B  A)} ? @!  @\87*1 @! ? L 89(8 WD!A(W7T*O% OH$TTI(M f5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H` (  E5M5 )4An%11 1f?1/ - p )) )'   1"  ` ) U1 nQH `1 ( f`i`jScWSFPS/1TzSVSHY.Q,1+ A+ 5!*  !( !& !$ Q & 0) !)ܥ A!!))QQDKDSDZDP 07Y ) 2ga)bIgI) )jIgI eH !@E@X'== 1; B B B15C" @ @ 8)+K1*)*'  / B"J5!S)1 32 1 f?tjtsSuKtjGSqW3* U?9+ 1; 19 f?U6+J+J)1- -='5)#+BJ2BJ2 U -! %))1 )9![!C"BKt_9Stj*TzQtt9!1!+  J B !B!B!* BJ 8! ;Kupr"Z!&9&C9%CE"E")" 9 )K)9# C1"B@"(BB1 f?ssStt tttSW9a)aBBBBBZSZ9T!SԑR* 9K;!)BbIgC9;'  ;!;)3bigC`H!1bIg)%g9(+!K9;' `h!bi))g+! K4!@ d u``S FULL(F) OR PARTIAL(P OR )? WITH OVERLAYS ("1") OR WITHOUT ("0" OR ) ? INITIALIZING WHAT DISK? BOOTING TO WHAT DISK? OVERLAY FILE NOT FOUND MASTER DEVICE DRIVER NOT LOADED - SYSGEN ERROR. NO SPARE DCB AVAILABLE - SYSGEN ERROR. INSUFFICIENT MEMORY FOR OPERATING SYSTEM - SYSGEN ERROR. p\pinilWr_rtffhdh5B!B K!* J y|3):8o3!*r=;"C "C *K"C"C \"C)tS o5l:#+98CK")f:+[H:# B)\BJ K 583"*23- 3(3")C")@)>5>`-<E8`#=*;ZS)03 B3 +1 1 111 11 ffhhdUUj*WVUVVUtg4gVhhs@59S #B!B:+#1| |!z(1 'EtEuEt ! 4 9#+9bB J- ] S 3" i")Re P!a bL`@ d?=T `_ 5P P`(5:#8C9@Ҁ#+ 74 9#+9'B J8CK-  -.CC'( > .'!C'/ 3 V-gjp@V~VR`j`i_WUfe`"Tbtt^|UWg4Th1 !C#+ \!C)4 VGOBJ ے!E E B4  ђ!; ; 83 3V-\ 1S4 BJ CC!(CK'O/  #3    4  Og*j:\ 1   WU WARNING: MASTER DEVICE MAP.DR IS ERRONEOUS. INCOMPATIBLE DISK FORMAT !! NOT ENOUGH SPACE FOR OVERLAYS IN BOOTSYS.OL. MASTER DEVICE NOT A TOP LOADER NOT ENOUGH ROOM IN BAD BLOCK TABLE DISK UNIT NOT READY DISK FORMAT ERROR DISK STATUS ERROR ILLEGAL MASTER DEVICE nsCY]a9; C19+ J+JU#Ed1 `1U8 CC5 B `Yt^|\ !*E*!Z)ZAaAa`1\ W ")#1 1 P9I +  +M;Y ` `XcWY Q 1\ gR\ 1, (ga!))-PA*  W\ -Ik1\ 5 Qc1 !`AmAga W uWxttWYY/Y?YNYs1 \ !)PIPIL! %P #) !!0A1  1 f?Ye\  ) Id?@ \ 90Y9 Y9Y bl@g\ !`A `1` `E j\ !6C` 1)2I1).I1PQ)'I)%I)I`C `)I1) I) I vtr@qg@1 Nf?YcV \ 9 39L#C@95  WVWVWVWVVV'VVg+hdht\ JJJ=+J+J    Y ! Q*gIjI YOU LOADED TAPE# ; I WANT - TRY AGAIN WWWWYhW|W\ " )§C \ CK# #     \ )A1 0XW\W\ P у  )2 57  53Q! ')&I ) ;)81 1 1 ! 1 1 1 ! 1 d= ` `VX) ! ))  !aPA`C)_A^CPA!ZP g1M9N c9 9J 9 9 9@ 8#)> @9J(%AzR %; z\ %8%6!7I` 50@ d?`!-0H \ 5`B B ")B* ` v|YWkDW~W{WWWVmW\) )K)K#1KS K  +"K1#  + +# \ 5) I;PS WXn1 09f? XVTYW LOAD $PTR, STRIKE ANY KEY. LOAD $TTR, STRIKE ANY KEY. LOAD CT0, STRIKE ANY KEY. TYPE ("0") FOR $TTR ("1") FOR $PTR ? FATAL MAGNETIC TAPE ERROR. $PTR DRIVER NOT LOADED - SYSGEN ERROR. FATAL MCA TRANSMITTER ERROR CHECKSUM ERROR IN SYSTEM OVERLAY FILE. '`%+),A)PI#9+X +[; )  Q) I !  ! A,hEtrJrHrFArEtrZZr ! )n q)l 3 P !8 !J1I)T I0 Q!D)B)M B0 :#@8 C`8 )C%E# E$ #&@+#5A!? #'b#(`#"3!ҐQ43$;%`0-1J: #@!+ # b#`*:CJ%-5 Y "Cq[Ctj3 * ) p`!) Y`Y! c! 5 ]!KYY1% %Y")"t}!g~`g~t}g~ig~J1dg~`g~t*g~j>)Y['%%Ԃ *3 & Z#"C SP)OK8+#C0J1rKP t8#+39jk# 5CY5 2  :`B`Z:]BYY3 PK # <1C!C38S91-Z^Y 9)+[  K8 CH 8 tk- + H3P 3 P j_]ZRsY8 3 * H  0-8 @ C B )"KZ #B- -JP5*  :  + :) PZ2* 1[ttY]]x[u)U[xP0J29Dҝ9EK * >?@0<+J2JL"0 dJc!'+ 8#8 ;X8K3S"_\ 02 - 0E ! !1   j*Y`"t^)]t)[ )02 9"B8C ] r 18+ 51 8+5  *Kccuruq^9 V T R P N #J"8S^^ B   Z)983<# P8 + ""J <+)$ 83 "8#2:+ !8K+K4*KZ*]^ @83Z*! "@ 02 )OQKQJQF<+ K`E%<'&+Y9Y954"Y2Q22J1-<!*K "ZC "B"B KM5  ZC] `5]S]q']t`8 ; 5m)m rS pS(KF5S)Q ooPBB #B8 Z #B4")^ *1Z1m <0 2 9iJ8 3*P8KKS)6812*32 2X 8KKBҝS1!#8 `+ C K]^Y<91*  Ptjtr^3^)11@ (?]x 6 4 8 B # # S S "P " %)ƍ# B * H \38S 8 k;8 C c38 S tkt~  Y9 `10  :`Y+-*8(`   \  S ` X`9 Z`Q  8n)i!i=YI=P ))Q2 :91*KZ94 8#Z="B02 "B08 C 8 C3*JE @ 1" 2"  "[8`9ZQ8 sS]PZZ8 # 4 BJ;+$]TK$Y 2J1e2 *  S8#C"* 6# T8 1, 8;+$ J2 $*% %  0"1" !2  2 "1  * 0C$rtZ8 P C#BZ :B@ [ Y :  `=U`ZYr]u\ \ \ ۄۅ`\\\\[(+...R\\[h[uԙc@cA ȇ";>gefui;'q,xy鐇i ]Sdejk75]σZ ?փbq&Q_N_i_9_9_~__i_i____\ #f\ '\ #S +K)(K0 A" : i2 K+;+!91 K!C0 2;+Q!)Ns``\ '+4 @@1h K)K#+3 !)@Ptk\ #P \ 'Pg4\ 'S A 0  2 +@15 !+!KC0 J H 8+ !1`K S) 1SK1S 2) K B#P#+3 ;Xsi!i=ҝ%SBEP@ `) 3 1  ; X0 B 0 @ 2 # C  P텑3 PJ5'*K*K1# ; KZ ! ! J  + H    hdthfft\ 'S)!1S1*[ CS a a_ba`P `baCkba_bl ´@ aO P*9, =* )9)1)9( #9&1&+ *2JC:) )@ZPU!)1B tqtsStsZR Q:; ;2a a)a*J  )X A!U U! T2 RѪSJ M)L9L%)I H)> F*5E )C )Ay? 9 )O1yKw1: 2!.\YA*9-9' B#9 PJ=+  kblkkjkbObWaGb%C CC C=C+9B :2U=9%7 I 5%255)6  !4 -!25- )$), )+ 5#:C=$C! 22")B22") Jaaakqka\ ak "K!A!  )#5 b MMk bck@Œ@ bbb_'3C1/ G  O 3  !, !*S 5j:g+3 t3 "*C&+K.  BJ ")Bcc8+ P+3 JK +J8 3 + 3 =3 :?KK1K 3Z  *"J)&J 3'K/   d3K3BO3 3KG  O 3  degRff_3 3 *2ՐSc\ "*   + C- &d BJ: B J !S ;K K# + ;;@9 K C ") B j:_feffg+)K+" " J :#K 8;" + J " J :#K 8;"+ J j\ " S" P*1 e~ `" A" > PC t3 sdPCK HS)*# J;;#8K*# J3J .3*"B J #+d K#  Ae~ \ dʲ  7e~3"B "B " B"Bdg*gRrr+ $# e~ \ " " "B "B" B" BB B d iWijg4_\ )w*!v "* :) *8s l!a y:+8P@ҀS*!SJ P3J`C h 3C S e e3"*3K D B2J e3 d%3J;JB8iz3 (3K )B# B!K ")J;#J  3  e 3 I e j:jog*g4g+]lfeff3 3CK "C"C1 C "\ * S2* *K+39K  :+8KK _gRaPҐ\ @C G CC1<2J?#;#* #*  #* #8* M8*")" ) ) * W#%T+SCɀug4]ljtk3 3" :#+SN K  5 .S 0   3") B  ")ӏ !)1 "J#B%B P` hdtfnthi!r \ +`" ! ` \ :J[Z#B#B#B#B!B%B BBB \:`Z \:K !$ "`"@B`=  P =  P  8\Z\ZZZZti= \8CKS" BB*J JB0B B B BBB BB")Bj!\8CKS+J+J+ J \ :;J "A2J#B 83:+BJ &.\   8; ;P+JJ+J J  feg4!\ 160CC28J&#K#* " ")#  #   ":J" BB# #  uhd!\ !9C`")  `)1  ) !'C &`") 22 *  +#BBB *22 J ` A]lii! Y12J" ")  9 + ZH s\ :#+ 83@0@8S1VCK3")L )J  *":"C"C# :+'. *"83#3 83B!B"))B2`2 : 3 CB `   +'+'+l,l,lV\ C"); 8)8 Q"C"*CK22!. $"J+*;8 #PC  322"*3CK#3B \8S0 J B`Z B E @  (8 K C E@ [8YY\8CKS@5*: lPJ2 jZRY!\  32``  !\  32`B ` !\  32`` `  )2XT2:N)2)1)-)))())))))))))))bbdd@b@fdfbaecaef@`@`cՏcd ԏ֏ӏX8; J XCKS8#+3;X \8CKSҋAI ) ) 8#+3Ґ'X)# @8X8QA1+C@81!\8CKSϲ+J\8CKSJ\8CKSA"+ 8!X8KS02 , 0 +3X 9 P@ @ 80X9Ɛ\P8 X8PJZP* 9w 2* : : "* J J :  1,+K0* *" "2B c b8*9\  : Z *9FJ* : *@JZ")7 -" *  )#*97 : * ** *D* '$* J J *J*@J" *" *  ")B" B " B B !Y"C#PC:? # KCJ Y#)`CK9 ;  +Kll @ 9QZ : ++ :+ .++9A :#K:+CK" -#) )& : * BZJ )ď :+`KJ ;ZZ:ZZ:qi= T9Z: # ")F #)# ?" I& 7+!ޏ !,  ):`K"J ! :;Z̀K" B * J:#CC ! sCsBgR)))) ) ))))) X:8N`@`g@aa@ab@df@elWlelsllllllllllm mm)Wm8mFmTmbmpm~mmmmmmmmmn 8nsn)n9nInYninynnp4nooun4DP0DP0nnnnnnnoou@@nede DP1DP1oo=ononnoou@@nede DP2DP2oRooao=oao=noou@@nede \ ")d B"CpPK")W  T T83K;C8 M22 S JC3"C 2 EK+ P+PK+ <#K3")7 )5  #)(*B*JP)%+PP++B+)# ZP#PB iihjpjoj \ 2 2 :;P9" P")9" "  *!:;JP* " 9* "J  iiii*SR i") ֨B,") B!@j`9m\ 2 ! h ؂NK"))_J \%\ P* U8;"C 83 3 K ) =:Z:;JK.>  JZ*!0J2* "*B"B)  ) *A ) ") qii=tl i9 !@f?`1k? ]U161 1 5ak tq-q,D1K9 9Y9Y9  qq`g0tYGQE0Q?gC;s?9* ?Q&9 9$3 932 8]98; JXCK!!C! C C @C C  tr(( K 9"H lr-`LAIA!E `_9  9@3 *PJ2JS - 0KK K; 1#*:  ZJ 4!@!)19`- PAsSqrF[8- #!A% ( 5 %``E  PE ZZtZTZS% ME9, 1" *JQ!- ( 1 2 9 )ܪ -= -@@E9%Y :! Z9 ZYq/q.q)q%?`8!B#@+ l?H 5<) -5- )0I , ?0 2 B#B#B+J#B#BJ!-!!!  bB `B "B &B8 +UK# @#H#+3;`ZRYtj` -* 1(-(1' 0 B&-! bB'`B() rQ`8#("b #tsSs^s!`A7eI3Q3Y3#A2 -+*   f?!  Y!  gIbIYՑ! [ ҐҐҔ! / r\8sZnsSZssYYlWm8BREAK.SVFBREAK.SVpsSssttttutBOOTSYSSVSYSDRR FG INT MAPDRl FG TERM $TTI$TTO$TTI1$TTO1COPYRIGHT(C)DGC,1972,1973,1974,1975,1977ALL RIGHTS RESERVEDY9  A I Q 5 !)181 3`bnaCrNYn_9rccrs c/sCASMSV  "C~SsiK [  "06Z00F    %  [ R Ulv 2u  B !?l H OO a  c #y  4< bb ~y&%0 C0 2 *Z"*:X8:2! H`:Y:2`( Y8 `8 ; CKS1(KK*K@S+K0ҜH`@ł @@ @ @  | |(  |@ @@S@R@Q@@@@g@@@@ @(H 6@ƭPHHH ɂ (5 (> @@@@@@@@@(HīH0;P0D 07 (1H @0խH (HHe4 e  P@(0< (05  f?(K#(O(0<C  Y G!@( 0 I!@( Y <8 093 | ( (e @@ (ɪD(i@ig g(; Â@   ł (1 J   @PROGRAM IS ABSOLUTE RELOCATABLE X0FBH Xު@H 3@(ߪ@@@Hߪ@0F 5 XH0 ( !fA]Y!B H ͂1!/(ܪ A@@ A!K@ (8 QI 9F8KQB Q? 9<8K!?A:A:A:Q4  (D !* !@L0(3 P! ! |} --- 'Y 0C(82  }!  0013 .MAIN ^ X݂(81 8GJ9(H -/(ת  8XX#@(C(=(A @$ #$(D - 07 ,  1( < 0: ( 801( ! RXXV) PU PT T U V(X 8N@@ @0(5)2GU '"-=$XXх(NBW@(3HPH F e02((J[(Ja (:@@ e a0B  0@ 4@(<05P!g*29dX (0QnBHP<05P"[J[P@@@@(;P`02a[Ҕ6ާ0;PPH0((2PRRRDC8(00@K FXPXf[Q`a a)  (;(6  Ȃ  Q ނ O fU R _(` F02a8@84X8)482 ҝ P(IJ  A8PҔ P0(5 00 80J Ҕ80Ҕ (2H H` `@AP` PP  @AB !X@@@@@@̅@@@@Y@Z@W@X)I)H(4I "6!019X  XSVX@(L%4 M E(  @(H :  XPYAA@U@VAp wIm)r q)k )18U(W0X8VHPXT9^  99Z M)RT |(;0TPP(T(08XPH!2@ T T N P)II H (1 1 T1) !xDA.+Y HZ U(Z 8WXV Y7K / 9 O/ {9OOYA@W W9 @085 00 @e0(: XZ V*)E@VPX2( ( @W4X( ( 8W0X@HZ),HV1(8HJ1#@U # U 8PH(VRT(̫Ĥ@ A@H@XZ (9 ŪP@TVX8NƐXX( ˂ ~H!6@ ւ 8@ ւ T F1$JJ!*0HKJ G)8DKJHP@_8م@օP@`%:"  ;#@. #0ŊS0Y IҒ:Zq4 4(ZPPPPPHZ oHT@Z PU W(C8B   )  X)  0U+gkoW))8X(THZ ł ׂ Н\ PPP(D ( @   D@PU8B P U(6  M0U8C P8< 8PP Z f@@f@~885(9( 40 J!J0@@Ҕf0f0f V QQҒPғ0Pғ0PJ=X ҅ 8X 8Ҕf f@ f@ @8 8 ҒQҒXҒX Ҕf0 H(0 H( H!(@( ‚U BH,0I 0I @$ 0 @@ t= 4:    ,>+-&"*/!P 0 1P@}  8f808 2 0f@P@ XHX!MIJP0ж8K(Y:  :(O(Z  )4). "(C2@ 1  1  SHϺ+K  YB(ZJB   łPH  G @ (  @  )(ZZ  (: )!(9Hg Y(Ū Z  @  f?   @05P)H P`P@   Q@ (1  ( @ V   383(C0 "0(PKS(@(<#K0 K0@  1 0=  (:   ł(8#@(<0C   Y Z(28 $  (1   Y Y@ Z@8 8#(C C  C("(05 8#0(C0S((6C 050 , P@P  E( H 8((0<040+0C06K(C#0OC 3 0#85 P  D 8@ (  (8@ AY 80! e( > ( ) '8J$X@    8ₔ(  8R 0 8Q 2X@ X  L  @  BQ (; A (  1 2QQP  K(HH  G!* !) !(!'!&!%!$@ S T 0 K ł *@e@ @ƅ@ Ȃ99Y ,  ( v8] " Y"X X(B  8 <88(e (Ȫ @XPX 0:P   Q   (ePH(ɪ gi  } ](4 f?   Q!lPAg  X (D07(:A @e@  e  !@ (:0 Y; 1 0:P0e0e@0:1' ( X( I!ҀJ@J 1< e  QPA0Y. @@$,0C8B  9$ 8@ 8= 4DLT (1(ύ (1@  ϥ   X](ɪ.(g!HgX]0iPi01H\P9P0҃ 3S\8  (ɪ$8] @h@i@g!@fi (0l g i j kPl!('SG 0@gP@i@j@k@l@h)H(H0 5 00 f?]HgHhHlPHi0(5,PPPLR(lHlhD ){Q(3 ɂXbHa(2K PH8XX#@d;Xc(C0a (@ (CXdXc+( :( P68K#(@C.(B(<  &8#(O(<CCKҕ 5$ (O$0aҚP01 c0d  a801(  09 aJb(6b (a(2  (2  5 ׂ   !*<   ) @!(4  Ѓ(ύ`P  D (  !  c1;DJ0)~   ( ' (J )HH!<   ) !@!24 I  !+(2  9'        J0PՐ!@9Y ( H)@Y*3( ! H(2   J ) )? ? ֠) ? (  @ fX  X  1֠  YJ$ 8 (ת (8 UH -E(KUA @ 0P*0I*0Ґ*0I8X8  X(  090 ! |  ( END OF FILE WITHOUT ".END", ASSEMBLY TERMINATED FCOM.CMFXREF.STFXREF.XRXREF.SV LICENSED MATERIAL - PROPERTY OF DATA GENERAL CORPORATION .END .IOCI= .SCALL 73 ; IOCS MAGTAPE INIT DEF SYSTEM NAME BER COPYRIGHT (C) DGC,1972,1973,1975 ALL RIGHTS RESERVEDFFFHNSS h/ "oo8 } ~x 郌里 重x C"鏔 q"!F wG 鰖鰙8鱃)鱖 c"G2鴙 鹍1>?-LR?#麗z麙{麙 y"%G%[]"*b"";"b""~jB"1M"&(".:~"-"3-"4Ev"FM"HK HU Hn Hx PbP":QC";QD?%QD_/QD$Tw"{ Fz"A "7b")suHy&Y*M 6b"7>"BNHq9 HYH_"/][< C"n뮀_"뮌뮑뮕?"5뮪 my믒 붒빃뽗" x C"9";"C"2M"'G" L" k" ‹':" t"~"" D?"$"""#w *"8"9    3 18 .z"+2Gy.WM"6u["< C"L"-n섀_"섅",섌섑z8 M CLIER=. @Xj.>Xfz(8Rf(@Rl"<Nbn|$<N` 0@`t  " 4 ^ ~   & : V j ~  " 0 D ^ j ~ $ J r  . D(  ILLEGAL CHANNEL NUMBERILLEGAL FILE NAMEILLEGAL SYSTEM COMMANDILLEGAL COMMAND FOR DEVICENOT A SAVE FILEATTEMPT TO WRITE AN EXISTENT FILEEND OF FILEFILE READ PROTECTEDFILE WRITE PROTECTEDFILE ALREADY EXISTSFILE DOES NOT EXISTPERMANENT FILEFILE ATTRIBUTE PROTECTEDFILE NOT OPENFATAL UTILITY ERRORCHANNEL ALREADY IN USELINE TOO LONGATTEMPT TO RESTORE A NON-EXISTENT IMAGEPARITY ERRORPUSH DEPTH EXCEEDEDINSUFFICIENT MEMORY TO EXECUTE PROGRAMFILE SPACE EXHAUSTEDFILE DATA ERRORUNIT IMPROPERLY SELECTEDNO STARTING ADDRESSATTEMPT TO READ INTO SYSTEM SPACEDIRECT I/O ACCESS ONLYFILES MUST EXIST IN THE SAME DIRECTORYDEVICE NOT IN SYSTEMILLEGAL OVERLAY NUMBERNO DIRECT I/OINVALID TIME OR DATEOUT OF TCB'SSIGNAL TO BUSY ADDRESSSQUASH FILE ERRORDEVICE ALREADY IN SYSTEMINSUFFICIENT CONTIGUOUS BLOCKSDUPLICATE READ OR DUPLICATE WRITEERROR IN USER TASK QUEUE TABLENO MORE DCB'SILLEGAL DIRECTORY NAMENO SUCH DIRECTORYDIRECTORY SIZE INSUFFICIENTDIRECTORY DEPTH EXCEEDEDDIRECTORY IN USELINK DEPTH EXCEEDEDFILE IN USETASK ID ERRORCOMMON SIZE ERRORCOMMON USAGE ERRORFILE POSITION ERRORINSUFFICIENT ROOM IN DATA CHANNEL MAPDIRECTORY NOT INITIALIZEDNO DEFAULT DEVICEFOREGROUND ALREADY RUNNINGILLEGAL PARTITION VALUEDIRECTORY SHAREDNO ROOM FOR UFTSADDRESS ERROR IN .SYST ARGUMENTNOT A LINK ENTRYCANNOT CHECKPOINT CURRENT BGSYS.DR ERRORMAP.DR ERRORDEVICE TIMEOUTLINK ACCESS NOT ALLOWEDMCA REQUEST OUTSTANDINGTRANSMISSION TERMINATED BY RECEIVERSYSTEM DEADLOCKCHANNEL CLOSED BY ANOTHER TASKSPOOL FILES ACTIVETASK NOT FOUND FOR ABORTDEVICE PREVIOUSLY OPENEDSYSTEM STACK OVERFLOWNO MCA RECEIVE REQUEST OUTSTANDINGATTEMPT TO RELEASE AN OPEN DEVICEA ZERO .XMT OR .IXMT MESSAGEYOU CAN'T DO THATTOVLD NOT LOADED FOR QUEUED OVERLAY TASKSOPERATOR MESSAGES NOT SYSGENEDDISK FORMAT ERRORINVALID BAD BLOCK TABLEINSUFFICIENT SPACE IN BAD BLOCK POOL (CORE)ATTEMPT TO CREATE A ZERO LENGTH CONTIGUOUS FILEPROGRAM NOT SWAPPABLEBLANK TAPEALM LINE NOT READYCONSOLE INTERRUPT RECEIVEDREAD OVERRUN ERRORREAD FRAMING ERRORTOO MANY SOFT ERRORSNOT ENOUGH ARGUMENTSILLEGAL ATTRIBUTENO DEBUG ADDRESSCOMMAND LINE TOO LONGNO STARTING ADDRESSCHECKSUM ERRORNO SOURCE FILE SPECIFIEDNOT A COMMANDILLEGAL BLOCK TYPENO FILES MATCH SPECIFIERPHASE ERRORTOO MANY ARGUMENTSTOO MANY ACTIVE DEVICESILLEGAL NUMERIC ARGUMENTFATAL SYSTEM UTILITY ERRORILLEGAL ARGUMENTYOU CAN'T DO THATTOO MANY LEVELS OF INDIRECTSYNTAX ERROR INSIDE []SYNTAX ERROR: UNMATCHED OR NESTED []SYNTAX ERROR: UNMATCHED OR NESTED ( )SYNTAX ERROR: "<" WITHOUT ">" OR ">" WITHOUT "<"SYNTAX ERROR: ILLEGAL NESTING OF < > AND ( )ILLEGAL INDIRECT FILE NAMESYNTAX ERROR: ILLEGAL NESTING OF () AND []ILLEGAL VARIABLEILLEGAL TEXT ARGUMENTTEXT ARGUMENT TOO LONGGAMESDRfee BIORYTHMNRB p . . $b  3S}  @@@sb@@oe Pf fCFgCg 7`iCn͓Pbñ#q9cLN郜cbþ cCD H D3S}D$$o    DD&<  D<p@ܿ#/3S}@D$$pdG$$#  G/P3E$D1L'PCPCL#C+DD$Q? '/O;'D%DYM/G  # 'Y$$[ K@ Ԑ+Hd;$in/PΉO  NEET RD$"9wUOPTTUF LI EANEM: D%$ S(91!)X($  #PK$$L( **U*ANLB EOTO EP NUOPTTUD9$Q F LI*E** HWTAI SOYD$'$#URUN MA?E  "G$$D NEET RIBTR HADET( D$$Ӳ.E.G5 2,,79154:) D"'$.# @DȒDP C NEETD$$q RTSRA TADET( .E.G1 ,1,19147D$$:) # H$"+@+ "G$$m*C OH WAMYNM NOHT SOWD$$D8LU DOY UILEK ?#+D$%$8FZ\Oc#+ZDH$úT\Zc#+Z"K$$bc C+3 @ DdE$(pw< $!Y$$~ $"#++3͡CDĒ$܌K#  #K#3DD$#C#C+DĒX@ !# D$K#PC# @D%+< !H$(# #P"G$$dC HSLA L IRPNI THT ED$$ABKCRGUODNM TAREAI L0(N=,O=1D$$EY)S ?#PEȒ$p g  T EH' B ID$$RY O R H Y T H'MT EHRO YTSTASED$$f*&T AH TUHAM NILEV SOMEV H$$T4NIP ERIDTCBAELU DNLUTAD$$BOISNI VNLOIVGNT RHEES PERATAD"'$kP EYCLCSE:  ( )AP D$$^YHISAC L 32D YAS D$$el ( )BE OMITNOLA 82DȒ$CzD YAS  ( )CI TNLED$"'ELTCAU L 33D YA S D$$HTRE ERA EHTER EAMOJ RRAAED$$? SOTT IH SHCRA TOTB EBOESVRDȒ$DE :  M NISU- Z D$D(|RE O -LPSU  **Z D9$RE O** HT EAD YHTD$$TAT EHC CYELS IWCTEH SRFMOP D$$:UL SOTM NISUO RIMUN SOTY$$ LPSUI S ARCTICILAD D$$YA .I TSID FENIDEA SRCTICID$5LAB CEUAESY UO RAD$$" EENTIEH RPUN ROD WO,NB TUI D$$0 N ATSTA EFOL MIOB . D$$ i>A( )FIP YHISAC LYCLC EHTD$$ZLNEP OELP EETDNT OEBA CCDINED"'$cZ TRPNO.E B( )FIE D$$hOMITNOLAC CYELT EH NOPSSBIELD$$zvE OMITNOLAO TUUBSRST. D$$hC( )FII TNLEELTCAU LYCLCD$$9ג ETII NST'A SMIOPTRNA,TB YD$$nTIESFL ,SA  HTD$$6 ETOEH RWT OYCLCSE .I TODSED$$ܼC IOCNDI EIWHTT EHO HTRET OWD$$t  NA DAH S AOCD$$TNIRUBOTYRE FFCE.T  D$ny**P UL S** A(D$$; )UDIRGNT EH1 1/1 2LPSUD YAD$$ STII S AOGDOT MI EOF RNIETDȒ$fSNVIE  RTIAINGND$$`I NTALHTECI SROF ROA YNA TCD$$,VITI YERUQRINI GHPSYCILAY$$:  TSMANI.A D$$HB( )UDIRGNT EH1 4LPSUD D$$͇VYA,SB TO HEM NNA DOWEM NRA ED"'$TdRPNO EOT  HCEED$$rFRLUENSS ,OCPORETAOI,NA DNA D$$LP SOTIVI EUOLTOO KNOL FI.E"G$$da C( )UDIRGNT EH1 6D$$<ٜ/1 2LPSUD YA SFOT IH SYCLC,ED$"'-A P REOS NIFDN STI D$$` AEISRET OTSDU,YW IRETD$$C ERTAVILE,YU DNRETSNA DAMHTD$$UMETACI SRO  UPD$$wSREUA YNI TNLEELTCAU LFEOFTRDȒ$G!.S  **M NISU* *"G$$e A( )UDIRGNT EH1 1D$$ɳ /1 2IMUN SADSYC PACATIEI SRAD$"' EELSSNEDE .T EHES ND$$*( RA EADSYB TEET RPSNE TD$$~6NIR VEEI WROP ARTCCI.E H$$DB( )UDIRGNT EH1 4IMUND$$>R SADSYP REOSSNA ERC NOEVSR ED$$V`OTT EHP ULS  ADD$$ǓnSY .B TO HEM NNA DOWEM NRA ED$$>|OCDNCUVI EOTM OOIDENSSA DN"G$$S  ENAGITIVMS.Y$$@ C( )UDIRGNT EH1 6/1D$$Pu 2IMUN SADSY ,EPSRNO SRA EWAD$9jMRA EFOA R DECUDE D$$ IVATILYTA DNE DNRUNAEC .D$$I NHSRO,TY UOW LI LITERE SAD9$2LI YNO  HTSE ED9ADSY.   D"'$, N O T E: 1 .TIT D$$KASE5 +8Y AESRT OYCLC EABKCD$$T OOYRUB RIHTD TA.E  D$$U$2 .RTEUT IRLP ERCTICILAD$$2P IOTN SCOUC RNOYLE EVYR2 9D9$13@EYRA.S  LA LRTD$$SNEUA DNN AE RRTPIELP IOTN SIWD$"'\LLB EHSWO NYB' '#. Dɢ$^^j  u"(D$$xA THT ETSRA TFOT IH SHCRA TD$$OY UIWLLB "E6I "ADSYO DL".!)$G$%  /(//D$$ "HTSIC AHTRP ERAPER DSEEPICD$"99LAYLF RO" 1S/9//!) E$$F"(" 2T"3IMUN"S3T"7EZORT"D$$25P"UL"S9/6X(0-")"!)PCHȒ$A#C  !Hb%(  G !# Db%dEd ! G( G !~ * G !bEd,ۦ}!{zlY8,y x !z!vlYdC.zx !bEd,ی<u!szlY8%BJx  !WP H$9I>XVG !bE aG D($,f! mI lG#+D$$t3#K+ D(8!# G !DD$Ɛ#C DD$Y"(" 2I/"I""2"/2I6,D$"G)1A0)1! !  GX%Gޒ !  G D9$!   G !~H$$* G#PC3S H$$#Z!#/@H$$,<PC+PΘK#śC D%9 d# D$D>@<PC+PDdE8ΕΚK ! zG !"G$XP*# < !"K9$J8 G# @D$$Fb **U*ANLB EOTH NALD ED$$uTGASEB YENO D237,76D YA*S**dED$,b ho1(,X ")"!X$$5o B!BBBD$$_}mYld  D Oɋ <dA@oH_xuNp8 _GHMASV (ee I(g,g%J   I5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`BIORYTHMNFR i m . "C ***BIORYTHMN CHARTING PROGRAM*** C C 8/2/74 C B.J. C PARAMETER TWOPI = 6.2831853 C C DEFINE A BLANK LINE ARRAY C DIMENSION LINE(60) C C DEFINE ARRAYS FOR FILENAME AND VICTIM C INTEGER FILENAME(10),VICTIM(10) C C DEFINE DAYS PER MONTH ARRAY C COMMON /CBIO/ IDPM(12) DATA IDPM /31,28,31,30,31,30,31,31,30,31,30,31/ C C USE LITTLE KNOWN FEATURE OF DGC FORTRAN C TO DEFINE A FUNCTION IN THE MAIN PROGRAM C FUNCTION IDAYS(ID,IM,IY) IDAYS = 0 IF (IM .EQ. 1) GO TO 1002 J = IM - 1 DO 1001 I = 1, J 1001 IDAYS = IDAYS + IDPM(I) 1002 IDAYS = IDAYS + ID IF ((MOD(IY,4) .EQ. 0) .AND. (IM .GT. 2)) IDAYS = IDAYS + 1 RETURN END C C GET THE NAME OF THE OUTPUT FILE AND OPEN IT C TYPE "ENTER OUTPUT FILE NAME:" READ(11,100) FILENAME(1) 100 FORMAT(S19) CALL OPEN(0,FILENAME,3,IERR) IF (IERR .NE. 1) STOP ***UNABLE TO OPEN OUTPUT FILE*** C C FIND OUT THE GOODIES C TYPE "WHAT IS YOUR NAME?" READ(11,100) VICTIM(1) 1 ACCEPT "ENTER BIRTH DATE (E.G. 5,27,1945): ",IBM,IBD,IBY C C YEAR MAY ALSO BE GIVEN AS JUST C THE LAST TWO DIGITS, IN WHICH CASE C TWENTIETH CENTURY IS ASSUMED C IF (IBY .LT. 100) IBY = IBY + 1900 ACCEPT "ENTER START DATE (E.G. 11,1,1974): ",ISM,ISD,ISY IF (ISY .LT. 100) ISY = ISY + 1900 ACCEPT "HOW MANY MONTHS WOULD YOU LIKE? ",NMONS C C MAKE SURE THE TURKEY ISN'T C TRYING TO CHART HIS MOTHER'S C PREGNANCY OR WORSE... C IF (IBY - ISY) 4,2,1 2 IF (IBM - ISM) 4,3,1 3 IF (IBD - ISD) 4,4,1 C C COMPUTE HOW MAY DAYS OLD AT START OF CHART C 4 IDAGE = -1 IF ((ISY - IBY) .GT. 89) GO TO 10 IDAGE = IDAYS(ISD,ISM,ISY) - IDAYS(IBD,IBM,IBY) + 365*(ISY - IBY) IF (IBY .EQ. ISY) GO TO 6 DO 5 I = IBY, ISY IF (MOD(I,4) .EQ. 0) IDAGE = IDAGE + 1 IF (IDAGE .LT. 0) GO TO 10 5 CONTINUE IF (MOD(ISY,4) .EQ. 0) IDAGE = IDAGE - 1 6 CONTINUE C C PRINT THE BACKGROUND MATERIAL C IF REQUESTED C ACCEPT "SHALL I PRINT THE BACKGROUND MATERIAL (0=NO,1=YES)? ",I IF (I .NE. 1) GO TO 7 WRITE (0) " THE 'B I O R H Y T H M' THEORY STATES THAT HUMAN LIVES MOVE" WRITE (0) "IN PREDICTABLE UNDULATIONS INVOLVING THREE SEPARATE CYCLES:" WRITE (0) " (A) PHYSICAL 23 DAYS" WRITE (0) " (B) EMOTIONAL 28 DAYS" WRITE (0) " (C) INTELLECTUAL 33 DAYS<15>" WRITE (0) "THERE ARE THREE MAJOR AREAS TO THIS CHART TO BE OBSERVED:<15>" WRITE (0) " MINUS - ZERO - PLUS<15><15>" WRITE (0) "** ZERO **" WRITE (0) "THE DAY THAT THE CYCLE SWITCHES FROM PLUS TO MINUS OR MINUS TO" WRITE (0) "PLUS IS A CRITICAL DAY. IT IS DEFINED AS CRITICAL BECAUSE YOU" WRITE (0) "ARE NEITHER UP NOR DOWN, BUT IN A STATE OF LIMBO.<15>" WRITE (0) "(A) IF PHYSICAL CYCLE THEN PEOPLE TEND TO BE ACCIDENT PRONE." WRITE (0) "(B) IF EMOTIONAL CYCLE THEN POSSIBLE EMOTIONAL OUTBURSTS." WRITE (0) "(C) IF INTELLECTUAL CYCLE IT ISN'T AS IMPORTANT, BY ITSELF, AS" WRITE (0) " THE OTHER TWO CYCLES. IT DOES COINCIDE WITH THE OTHER TWO" WRITE (0) " AND HAS A CONTRIBUTORY EFFECT.<15><15>" WRITE (0) "** PLUS **" WRITE (0) "(A) DURING THE 11 1/2 PLUS DAYS IT IS A GOOD TIME FOR INTENSIVE" WRITE (0) " TRAINING IN ATHLETICS OR FOR ANY ACTIVITY REQUIRING PHYSICAL" WRITE (0) " STAMINA." WRITE (0) "(B) DURING THE 14 PLUS DAYS, BOTH MEN AND WOMEN ARE PRONE TO" WRITE (0) " CHEERFULNESS, COOPERATION, AND A POSITIVE OUTLOOK ON LIFE." WRITE (0) "(C) DURING THE 16 1/2 PLUS DAYS OF THIS CYCLE, A PERSON FINDS IT" WRITE (0) " EASIER TO STUDY, WRITE CREATIVELY, UNDERSTAND MATHEMATICS OR" WRITE (0) " PURSUE ANY INTELLECTUAL EFFORTS.<15><15>" WRITE (0) "** MINUS **" WRITE (0) "(A) DURING THE 11 1/2 MINUS DAYS CAPACITIES ARE LESSENED. THESE" WRITE (0) " ARE DAYS BETTER SPENT IN REVIEW OR PRACTICE." WRITE (0) "(B) DURING THE 14 MINUS DAYS PERSONS ARE CONVERSE TO THE PLUS" WRITE (0) " DAYS. BOTH MEN AND WOMEN ARE CONDUCIVE TO MOODINESS AND" WRITE (0) " NEGATIVISM." WRITE (0) "(C) DURING THE 16 1/2 MINUS DAYS, PERSONS ARE AWARE OF A REDUCED" WRITE (0) " VITALITY AND ENDURANCE. IN SHORT, YOU WILL TIRE EASILY ON" WRITE (0) " THESE DAYS." WRITE (0) "<14>" WRITE (0) "N O T E :" WRITE (0) " 1. IT TAKES 58+ YEARS TO CYCLE BACK TO YOUR BIRTH DATE.<15>" WRITE (0) " 2. TRUE TRIPLE CRITICAL POINTS OCCUR ONLY EVERY 29 YEARS." WRITE (0) " ALL TRUE AND NEAR TRIPLE POINTS WILL BE SHOWN BY '#'." 7 WRITE (0) "<15><15><15>" C C PRINT AGE IN DAYS AT START OF CHART C WRITE (0,200) IDAGE v 200 FORMAT(" AT THE START OF THIS CHART YOU WILL BE"I6" DAYS OLD.") WRITE (0,300) VICTIM(1) 300 FORMAT(///" THIS CHART PREPARED ESPECIALLY FOR "S19///) C C PRINT THE CHART HEADER C AND INITIALIZE THE LINE ARRAY C WRITE(0,400) 400 FORMAT(" "T23"MINUS"T37"ZERO"T52"PLUS"/9X60("-")) DO 8 I = 1, 60 8 LINE(I) = " " C C IF THIS IS A LEAP YEAR THEN C ALTER THE DAYS PER MONTH C IF (MOD(ISY,4) .EQ. 0) IDPM(2) = 29 LINE(30) = "*" C C START OF MAIN LOOP: C C LOCATE THE CURVES C 9 IP = SIN(MOD(IDAGE,23)/22.*TWOPI)*28 + 30. IE = SIN(MOD(IDAGE,28)/27.*TWOPI)*28 + 30. II = SIN(MOD(IDAGE,33)/32.*TWOPI)*28 + 30. C C PRINT A LINE OF THE CHART C LINE(IP) = "P" LINE(IE) = "E" LINE(II) = "I" IF ((IP .EQ. IE) .AND. (IE .EQ. II)) LINE(IP) = "#" I = MOD(ISY,100) WRITE(0,500) ISM,ISD,I,LINE 500 FORMAT(" "I2"/"I2"/"I2,60A1) C C RESTORE LINE C LINE(IP) = " " LINE(IE) = " " LINE(II) = " " LINE(30) = "*" C C UPDATE CALENDAR C IDAGE = IDAGE + 1 ISD = ISD + 1 IF (ISD .LE. IDPM(ISM)) GO TO 10 ISD = 1 ISM = ISM + 1 NMONS = NMONS - 1 IF (NMONS .EQ. 0) GO TO 1046 IF (ISM .LE. 12) GO TO 10 ISM = 1 ISY = ISY + 1 IDPM(2) = 28 IF (MOD(ISY,4) .EQ. 0) IDPM(2) = 29 10 IF (IDAGE .LT. 0) STOP ***UNABLE TO HANDLE AGES BEYOND 32,767 DAYS*** GO TO 9 C C EXIT HERE AND CLOSE FILES C 1046 WRITE (0,1047) 1047 FORMAT(1X,"<014>") CALL RESET END GHMAT+e }  .TITL GHMA .NREL STRT: .SYSTM .MEM JMP .+1 MOV 0,2 .SYSTM .ERTN .END STRT BIORYTHMNSV  . . &1 r v i m w ;`'&r1>B(7G lvu)EGIKM  Got9PP/    < D3 D7 D;< ~ h G/P^w'PCPCw#C+ F,'/Of'/G H # i ' j K@ +/PO s s ) ENTER OUTPUT FILE NAME: (  (S19)! pd #P n***UNABLE TO OPEN OUTPUT FILE*** ) WHAT IS YOUR NAME? (   ( ENTER BIRTH DATE (E.G. 5,27,1945): # i Ր@% i C ( ENTER START DATE (E.G. 11,1,1974): # i Ր@V i C ( HOW MANY MONTHS WOULD YOU LIKE? #+Z\z#+Z\#+Z h C+3 h Ր@  g pO! pO"#++3CK# i I#K#3 #C#C+Ր@ H! # i #PC# i Ր@ g H! # i  #PC ( SHALL I PRINT THE BACKGROUND MATERIAL (0=NO,1=YES)? #P9 )  THE 'B I O R H Y T H M' THEORY STATES THAT HUMAN LIVES MOVE ) IN PREDICTABLE UNDULATIONS INVOLVING THREE SEPARATE CYCLES: )  (A) PHYSICAL 23 DAYS )  (B) EMOTIONAL 28 DAYS )  (C) INTELLECTUAL 33 DAYS  ) THERE ARE THREE MAJOR AREAS TO THIS CHART TO BE OBSERVED:  )  MINUS - ZERO - PLUS  ) ** ZERO ** ) THE DAY THAT THE CYCLE SWITCHES FROM PLUS TO MINUS OR MINUS TO ) PLUS IS A CRITICAL DAY. IT IS DEFINED AS CRITICAL BECAUSE YOU ) ARE NEITHER UP NOR DOWN, BUT IN A STATE OF LIMBO.  ) (A) IF PHYSICAL CYCLE THEN PEOPLE TEND TO BE ACCIDENT PRONE. ) (B) IF EMOTIONAL CYCLE THEN POSSIBLE EMOTIONAL OUTBURSTS. ) (C) IF INTELLECTUAL CYCLE IT ISN'T AS IMPORTANT, BY ITSELF, AS )  THE OTHER TWO CYCLES. IT DOES COINCIDE WITH THE OTHER TWO )  AND HAS A CONTRIBUTORY EFFECT.  ) ** PLUS ** ) (A) DURING THE 11 1/2 PLUS DAYS IT IS A GOOD TIME FOR INTENSIVE )  TRAINING IN ATHLETICS OR FOR ANY ACTIVITY REQUIRING PHYSICAL )  STAMINA. ) (B) DURING THE 14 PLUS DAYS, BOTH MEN AND WOMEN ARE PRONE TO )  CHEERFULNESS, COOPERATION, AND A POSITIVE OUTLOOK ON LIFE. ) (C) DURING THE 16 1/2 PLUS DAYS OF THIS CYCLE, A PERSON FINDS IT )  EASIER TO STUDY, WRITE CREATIVELY, UNDERSTAND MATHEMATICS OR )  PURSUE ANY INTELLECTUAL EFFORTS.  ) ** MINUS ** ) (A) DURING THE 11 1/2 MINUS DAYS CAPACITIES ARE LESSENED. THESE )  ARE DAYS BETTER SPENT IN REVIEW OR PRACTICE. ) (B) DURING THE 14 MINUS DAYS PERSONS ARE CONVERSE TO THE PLUS )  DAYS. BOTH MEN AND WOMEN ARE CONDUCIVE TO MOODINESS AND )  NEGATIVISM. ) (C) DURING THE 16 1/2 MINUS DAYS, PERSONS ARE AWARE OF A REDUCED )  VITALITY AND ENDURANCE. IN SHORT, YOU WILL TIRE EASILY ON )  THESE DAYS. )   ) N O T E : )  1. IT TAKES 58+ YEARS TO CYCLE BACK TO YOUR BIRTH DATE.  )  2. TRUE TRIPLE CRITICAL POINTS OCCUR ONLY EVERY 29 YEARS. )  ALL TRUE AND NEAR TRIPLE POINTS WILL BE SHOWN BY '#'. )   ) (" AT THE START OF THIS CHART YOU WILL BE"I6" DAYS OLD.")! )  (///" THIS CHART PREPARED ESPECIALLY FOR "S19///)! ) (" "T23"MINUS"T37"ZERO"T52"PLUS"/9X60("-"))!PC#C i  F! hG H! # i 0 F,! h G F! 8* h7G H! Y! S X S W L Y W S U Z H! Y! S X S W L Y W S U Z H! Y! S X S W L Y W S U Z F!P hG F!E hG F! I hG#+3#K+ F!# hG H! #C ) (" "I2"/"I2"/"I2,60A1)! F! hG F! hG F!  hG F!  * h G#PC3S F,!#/Ր@  gPC+PK#C i  4 # i Ր@ C gPC+PK F,! h G H! # i  g F,! h G# i Ր@ n***UNABLE TO HANDLE AGES BEYOND 32,767 DAYS***; )  (1X," ")! p sB !BBBmYld  # -!+ ! ! # |##C /1H ? 9#C 7G1+ J#+ҋ 23"")''B3") uG+`P2` f3" "*'G+#K,3*K1B)J . \83#D"+B84\)83;"B8 #C3 A" #3 #C Aa# ^# - |?# -)s |#3 @CL## < 3+ J#B3ҜCSK3 "C = #Ă#ł   3#  >PC >3#  ?  ? u !C #C+#3J# |3C#+P fY 3#P >PS#) ,CI3#  >S#) ,C #) |3ҝ1+P1 f,3)JS#) ,C)#P ># |# {1 1 1 G u FT 3# 3#S) , -)? ) |C'C3 RCPC+h < 7") !OS R*3J+JR3C PG  `3B3" 3 RC!)3 P/ǎODŽP3 P/ǥ3"C3 RC3 RC = ) 3K R;+J3 RCǓ RC3 R EC")K1"C1"C3#)J PS    #P+ )CS ?C#Á {1S# -) |# { 3ǂC 3#+ @4C xP# GKPC3"C P3#B# # ##Ƃ #  # -) |#3 @CACs#) # 3B u U#C#C#C%C C *LA S#Ƃ O#  #) D) ) #+K+KO3B#BPB#`3` f3'N)&B"C 6C#C# #) ) 9+3K) [) uV EF &DG+3 #SPSPP3 B# ' 9+3 +K :#+C+ #+K+#BC#3 :+ë3K ;#)ƍ 1 )#S ,C *3)#S+#!J3# :+3K ;# -) |#C#Â# 9)ے :#C#))K3J#+1\8C3#B)`PB)ZBCBCC#C# {Ѫ 61R 1J 1H # {Ѫ '1C );1; .19 +17 $15 &13 #!+3#̂ 3S 0 4؀ u3#B# 2#4̅C 7+ΦC@0+-.ED \8+3SɶS3/ O4\8#C#C3Ʌ/ 4O\83JJ$CʅPC#ʂ S 0 43#Ђ6C C#ʂPC%Cʭ 33PC#ʂ S 1 33#ЂC C#ʂPC 548\83"(:\X$L")&B"9!$L9")B:\P<Z\83P*L9 ,D9"B,D")ݦB\ 33"99"D@P$@D@\8C3*K")B+ΎK΁ 23"##1 )3ҐҔ){)3ҐҔ)vKC͢K+K+ #)d )`  +# +J##++Z+K3S/ $+3SɶS3/   0CCCC#  + .u 0)-# |#+ͪ  # {1K |#3+J4FG1\8!0P+\8CDžCCK' {#1: ) 3  P1* 1( !%1%1+Ǫ 3+ Z KC#+ȫ4#ǂ uY u +-9 \8KK[3 Dɪ#C# -,1X | |#4\8 B J,0CȕSɅC3#ɖ#Ȗ*K#)/ ,C# # -)( |3 >3S#) ,CCʅCȃCSCS# -) |#4 -*0\8S!KȅC# -)" |)3S#) ,C3 >)3 S#) ,CCȍK40.r! }'  = s")J!WBr! }7"G'WBsr)r)K!5 O32SC' { !UK ( |+3 s`! ! 3   |3#Bs3 0&2! u0&r C!QCC r CKP O#)C? |!?CC#3  /  {1/ n1- i3*K0PS*K1&$ 1$#*  O" pd ;3*1 #01 ? B H9< ? E K N QTW ? { |s0 ? s3! !Ε;Ss)) |r 1 SCK! Cr 1/4+ ?s+ ?s$PLT$TTP$CDR$TTO1$TTO$TTI1$TTI$LPT$PTR$PTP$TTRP PCC ~3 2S'P0S"J1h= : "*7#P+ZA4? 8;+;)M   ?  )? ?3J+J55/BP )0 )+ .!+Gs? 8;+ ?ߪ ?Gs) !/ *? ? !P ".+PK)KPK)K# {8 1  # |81# |8{  0"JZsr! }.3"J10 u3B+J;;+Jsr+3) 3 8;KSs\0!_PZZ(J#)XB*3 8S2SS32 *83"7Ґҕ3'!SK32+ *83#:2 83"K23"@@@32J232 J!3X8 \8)XCC2S3!X88)X wr! O/' JGs\RJ00 K  48Y w\ KJKJD0  4ҊJ48I wrPr`0"TCCB!)K e X N+K! e V \+ e  e W!! M W0+#shBGX@ڢ=%_[>/H@@ڗ>]?@2@N@tA\8(KC*K e# e W! +C e U# b4\ e Z Y V#4\8C!C3&)2! UW4\ R"4\8+<(! 2! U 8f\3 "*810EXPpS1=C!:KCCC \3 x8S!X#+@+ 1+9!8; KC48+9 Ҁe\8#3 CC!H !I\#+9? 6)A " 0KKKKK +!-C  #!$C')) ! ! ( MAP.DRLEFT: ^P USED: ^P ! (  *SQUASH NOT NEEDED IN REV 5.00 OR LATER ( d1  ( K- C *K ( K" S)QK ")0 (  !,), ( # ( + *3" ( K ( K )QK "! ) ( # ( **x PK0KKK1&S1 ( K ( EO #+399 " *#+3 "= *l0PK "CK)S "SKC+! (  *D ^D^Z/^D^Z/^D^Z ^D^Z:^D^Z:^D^Z  ( g * P ( K ( K *  "  "  "  ( K0 *1 "( ** C0 2)lK)QK ( K ( d1W C#C+!] ( F# 0  !HE$# ( d!> %E15 # ( K * ( d1-  ( 1*))P ( *d# " *# ( ! #C!CC (> *# ( *3 *.-* "C"C"C"C# ( # # (  !ܕ  !ڕ  !ؕ * *3#B *# ( !ƍ  (>  *# ( *1YS1X ( E>J) ( 5+!H!G-C1BpS1@+"1)* +3C# 1(+S3+J *;#1 ( Y * *D !CK!N0 2 1O 1L1KCUI  ; 8CC !5PC# ( KC #1-* , ( 2S3*  ( K!*  (G2*  (G"%Z1,"p"j4* C3S 3 *   # (G7 )  3 S# ( a)v r7  s# *@C # ( KS (GC !_C" # ( aKP #K 3"C " @P ;# ( K !+ K99  8\3 ( 183 ( p* 3 ( 3 ( !m)k ( FC 1# (G## ) ( $"d.# 3# 3*  (G ( K@C 2 ( aK*  (G2 )*3  ( p!!) ( FA# 3"7 * )K+K  ( # ( YC" ## $#)33 ( +=1  . 9%  % * #! *d\# ( Y 1 ( g1 3$."v3!B *;S)K *K*2 ( d;## *83 *"q"x"""$"*"0"6""D">f%f0f;Fk;Q\Ā"4"d4"d@ """"d4"d""d"H@@"d"d"z"X"d"d@@"d"d"z@@"d"d"~@""`@""` "d"d@ "v "v@"\"d"d"v"d"d "T  @ "z"z ( )K2S! ) ( F *<"d"!6^0^W^F* K2S!) ( F *C2 *;S ( Y *@ "T"L"P;Fπ  @ "P!B *!i") ( |) ( |PJ *@") ( | *ASMMACMASMRLDROVLDRALGOLFORTFORTRANBATCHCLG.JB.AL.FR.SR.LS.OR.PS"j$TTO$TTO1.SV.RB.OBFCOM.CMLFE$LPT$CDR.L1^C^0^F1) ( ( d! 1!!!!;# ( *3! B! B!B * CK2SKK0KK ( K2 ( dR"R%)) ( )% ( )k)g1g (()g ( |0K)Y)X ( | (e_K (eZK-*+# K9)Q K)QK ); (># ("#*# P+ (") " ++# (1 ((9  ) 1 (ܭ ( *j! ( Y;  *CK0K" ( K+ (K ( d1 S) ( |+# *3 *BBB! ? *jSYS.DR;S *"  *2  ?B& ! *B 3J *2*KJP! ( FҐ#B *^C.^WCK!%KCC ( *# ( ! #C!CC ( *# ( *3 *.-* "C"C"C"C# ( # # (  !ܕ  !ڕ  !ؕ * *3#B *# ( !ƍ  (  *# ( *1YS1X ( E>J) ( 5+!H!G-C1BpS1@+"1)* +3C# 1(+S3+J *;#1 ( Y * *D !1 "% 1 (  *FOREGROUND PROGRAM RUNNING NO FOREGROUND PROGRAM RUNNING  ( K !5  \d! ( ! ( 3" ( d! *! (   * ( g * @ D HSTRIKE ANY KEY TO CONTINUE  ( dC!C!@C!C!C! C!C!C !@C !! 1 1 ! ? $LPT8C16S!4B# ( K2C)1 +) K0K%KKK)QXK&K$)QXK))QK+#& "B! ( & ( *s""r+ + + !,+ 1'CKK0K# ( K ( dR R 1 0K (3K (3 K) ( |z (<0K# t+1" o:"*"< !P) J1 vC'#)) @) ( 6+ + #&+) "+ !+ ! (J+ ( $))ʵ  +  (V+ )!P 51#s#) 3  3#) +K +$ ( ҕ! (  )# q"8K#$C')g ( +$  ( + O3P ( #*GP+ (B")N )J " +7+4+ #&); "  3 (, (X*(+ + + ;") # *  # * 8#& (V8K'1  :x+'  !3P)4 2!.P -#)+ (3# C"#  + #)+ (* 8 #$1+  ( Yqs8K0K+' L#C+  (* #' +  (!6+ !4 (J+ ( $  (<0K'!P) ") ) )!P 2#$ + 02s"H"f CK0K" ( K+ (XK ( d1 S) ( |+# *3 *3) CBC' **%!  *) " +9  "+ * 8;S *)0K#1.8# ( Y;  #& 3ҝ * ? *98K#& ( Y #&  (<q 6K'#$G#%`PC%#`C+ + #& #$) ( ) ( C$#PC+ 9 8%#`C%.q: 6 (<#%.#$ ( 'C$+K+% K%#K+ !1S (J+ ( $ ( Yx* zq"v ^C^T8 ^C^TL ^C ^C^I ^C^T^D^Z/^D^Z/^D^Z ^C^I^I^I ^W^C.DR TAPE SEQUENCE ERROR: MOUNT TAPE# ^D^Z CK!%KCC ( *# ( ! #C!CC ( *# ( *3 *.-* "C"C"C"C# ( # # (  !ܕ  !ڕ  !ؕ * *3#B *# ( !ƍ  (  *# ( *:'+J+JZ#BZ * (;3PҠS3# S+C83# ( *8BK+C*2 ( 3*J2 )+;S *;3J *2"B*2 ?8;S *:+K+3 " 8 #+SS39  ?׭+K1P@3 '?83 (ɭJJJJ)PJJ*!" !B!B!B#* +3 ? *+3 *? *!B!B!" ;S * (ɭ0 (ɬK*[,"/*!, *" 9`@2 '?!P ?+  3"3 ?3"3 +?3 ? *2 )3%C2") K/ /K  ( "#< * 8 * ( "$1 * !- * ( ""& * " * ( "  * ( " *2* )K)ħ *K#C *;S * 1YS1Y ( E>J)N ( 5+!I!H-C1CpS1A+"1)* +3C# 1)+S3+J *;#1 ( Y * *-D !"6)ړ)8;S PK )ݥ )ВҀ1 ҁ) BC *@PKKKC ( dS!?)? CC# ( KcC ( dS1y  (  #{K3)n  ( pK)d  3 S ( cK1mP+K ( _ [@CS)Z ( pR N);# );#` 'B!5PC)3 ;# ))P '2#)% -#B+#` '"+# (p3   * * 111;#1 # ( Y.SVCKS3C!wKP!|P  K (f (1jPP  ]#3)XC#C+/ !V K3݅PC3"CC)EP  9!4 **K: *83BPJ! PB*/ *")  *; *B! * *;S!S * ( g *3 *"Z)*J*J83B *# ( d)$)# K ( K C ( K1PS) (  @)QK)QK)Q K!0K0K#K #!) 3 #!) + K K"K01϶*#3+ (+X#K +KP '# (# (#)  +" :+#  [#ժ# (# (3" 0&) ("B;+"K" *1K#) + 1" 3   *11 ( g#!  # ( Y.SV ( K * ( KC "# ( Y *3 *1 ( g *C ( K *C ( KC# ( d!& #+ " *! (   BMOUNT ^C ON UNIT ^C, STRIKE ANY KEY  ( K * "! PC "! (  * ^C !PC ")!PC ".B!C "&! (  * ( K ( E "' *! BG: ^D FG: ^D  ( d1PS1NS ( KG VC ( K?C+ F ( d9; =19  C ?!0P3 ),  288#) " * (R# !$ $C ( # +@@   ǭ # # ( Y;8C!Q  PK# ( Y!I (3+)@ ( ( ǃ ( ê # (  ( # 1$ ( g3   *C! # ( # \0" *2P9Ɛ9  83J *.)2.)ߪP.)/K)#K.))K) K)QK)K ( K *!+ ( FS (##6#<#B$LPT#J$PTP#RXFER^0^F^C^0^F^C^0^F)GK)EPK)CPK)AKKKK `K ( K) ( d1/ G # +3 # &+,! (  ( $ (  )LK 1 ( g %3 ^3 J )0# :K CҊ )%# 0K CS 3   D <S K '/   C K+!v (  텑PK )= Q3 S ##+   0 ( + 0 1$S 3!Z1 S 3!`CK S+7 (  #)3 ?#!  # ( # ) K## ( Y3  +! *  *%n^Q^B/ ^O^Z ^O^Z %^Q^B/ ^O^Z --- %^Q^B/ --- ^O^Z FILCOM ^C ^C^T8 "9 * "8 *( ( dC!C!! 1 1 ! ? $LPT8C+ )QK# ( K3) ( p  ".Jb ) (  ( !+ (  ( 1 " + ( f.)QK)* (1*S#)% ! ( K'+ (  !+ ( 7 # C # C +  #C)QKC)6 '5!3+ ( !1+ (  ( 1+" + ( #)"  ( K ( K!+ (   3ҝ * ? *# ( Y;.TU^T SYSTEM TUNING REPORT FOR ^C^T2 ^T OVERLAY TUNING REPORT FOR ^C^T2OVERLAY # ^O^B^T^P^B ^T^P^B ^T*^D^B %^T5^D^B % ^TNUMBER OF^TNUMBER OF^T)PERCENTAGE^T6PERCENTAGE OF ^TREQUESTS^TFAULTS^T)FAULTED^T6TOTAL FAULTS STACKS^T^D^B^T^P^B ^T&^P^B ^T7^D^B % CELLS^T^D^B^T^P^B ^T&^P^B ^T7^D^B % BUFFERS^T^D^B^T^P^B ^T&^P^B ^T7^D^B % OVERLAYS^T^D^B^T^P^B ^T&^P^B ^T7^D^B % ^TNUMBER IN^TTOTAL^T+NUMBER OF^T7PERCENTAGE ^TSYSTEM^TREQUESTS^T+FAULTS^T7FAULTED Nx*&"*CK3&"*CK33-3/ 3*!+C C+3@S@@83;  83@S1+ (R3B * ! d9 2Ɛ83BJ *CC ( d!C ! C!C# ( KAC ( { x# ( K4 ( d1/ 1- (+ !~+ )z# (b1"C0KK)Q K K# (Z=!c  # ( a## ()O# ( #C+K!F+# $!?  # ( #+ ( K# K0K+# !! # ( Y3  *#  *1 ;#  *.,F^ PK)QK)QK ( dC! C!! 1 1 ! ? 4$LPT8C1 (+ 1)# (A1 "C#+1 (:C#+ +  3+ !5+ !9+ (  "+#!6 ( #P  ( !! ( 33) * ? * ( Y &DELETED ^C UNLINKED ^C  ^C: * 2 (93B" ( !  *1YS1Y ( E>J)N ( 5+!I!H-C1CpS1A+"1)* +3C# 1)+S3+J *;#1 ( Y * *r-D !CK2SK0KK ( K- ( dRR )$ ( ) ( )m1n (()n ( |)a)` ( | ($hK ($cK-*+ 8)Q K)QK)H (FK# (^!#*# P (&")1 " ++# (1& ((9" $ )1 (ܭ (# ( K * ( dҐҒ1 ( Y ! ( Y;  *C0KK" ( K+ ( ( d1 ) ( |+# *3 *BBB! ? * SYS.DR;S *"  *2  ?B& ! *B 3J *2*KJP! ( FҐ#B *! ^C.^WCK!%KCC ( *# ( ! #C!CC ( *# ( *3 *.-* "C"C"C"C# ( # # (  !ܕ  !ڕ  !ؕ * *3#B *# ( !ƍ  (  *# ( * ( dC!C! C# ( K%C1 (+ !1+ 1# ( 3!B!B!B *  #1 ( Y; *CK2SKK0KK ( KH ( dSR0R39:  ("16 (()3 ( |0K)) ( |+9$ )$ ( ( K# ( (() ( |3) 1r (rK (mK  +# K9)Q K)QK )F (J# ("#*# P+ ("). " ++# ("1 ((9 " )1 (ܭ (# ( K * ( dҐҒ1 ( Y1! ( Y;  *CK0K" ( K+ (7K ( d1 S) ( |+# *3 *) (  *) (  *-*BBB! ? *SYS.DR;S *"  *2  ?B& ! *B 3J *2*KJP! ( FҐ#B *f^C.^WCK!%KCC (a *# ( ! #C!CC (a *# ( *3 *.-* "C"C"C"C# ( # # (  !ܕ  !ڕ  !ؕ * *3#B *# ( !ƍ  (a  *# ( *1YS1X ( E>J) ( 5+!H!G-C1BpS1@+"1)* +3C# 1(+S3+J *;#1 ( Y * *D !C ( d!@C!1C! C'  @6   0KK%K'C'C#C# ( K*C ( d!  ! !   # ( KK#C) ( |vf1S!B# ( KaC "  (J#P (  1S )QK )QFK)Q&K 0K K + !C+ +K- # ),P ('P ( +!C!K3#)K+" ( # " (  11fZ#C" ( " ( 3 )Ґ# SB#)+PP (+   3 Ґ)K"*  #  !C+ ( ŭ0K !: %7K+!C+!C3+" ( " ( #C +K3!C+" ( " ( # " ( " (  l#+ P1s ( #+ ( !cC# ( 1Y19U)Q (  ( !M+ (  %1IS3 Ґ#PC# ( J#+ (  !"#$+% +1 S+# ( Y33 ҝ ?  * ( Y.zm"*8~x`VFLVxfn^O^B ^O^Z ^O^Z ^I^I ---- ^H^B ^H^Z^I ----^D^B ^O^Z^I ---- ^O^B ^C *** $LPT:'+J+JZ#BZ * (3" KB"J3+ ( *C+"C"2 ( 32 )+) +#;K8;S *2"BJ*2 ?;3J *91 88;S *:+KK+33҂`S39  ?;3"* *J *1 (ʭJJJ)$PJJ*!" !B!B#* +3 ? *+3 *? *! B!;S *" } ( dCB!C!C! C!@C!! 1 1 ! ? $LPT8C)QK)Q)KA#B ( KC + ( ) ( C(1"CB1 SD! B1SC!BEa:  8#B+A1 (CB+C " ) (  ( +( ( ") + )ڏ + )֧ #+D " + Z;D")ɏ # " + " + 8# L3C ((H*1!+D " @ (a<#A (E7 (Ea63C;D"C"C (a! (E+ #A3C*1  "+ + I!I3(+ ( B81<##A)9  ( Y ( Y  ;83ҝ * ? *  # # ) S #   %  ^C 2 (93B" ( !  *:'+J+JZ#BZ *2"BJ*2 ?;3J *9< 82"B*2 ?8;S *:+KK+33҂`S39  ?;3"* *J *1:+K+3 " 8#+SS39  ?+K1P@3 '?83# (JJJJ)PJJ*!$ !B!B!B#* +3 ? *+3 *? *!B!B! #2Z ;S * (*[)"+*!. *" 9`@2 '?!P ?3"3 ?3"3 +?3 ? *2 )3&C&C3"3B"PB3S2 ) 3*3JS2 )) *;S *C2") K/ /K9Eju)QK"9 () ( )X ( 9 (+# "F * . ( "#< * 8 * ( "$1 * !- * ( ""& * " * ( "  * ( " *2* )K) *K#C *;S * :2*KJP! ( FҐ#B *!^C.^WC)Q)K%)Q?KG)QK)Q K )YK ( d! C!SC!QS'!R0 2C 3' @ C!= P!7 @!4 @!- D֠!e   S !` !" )nPK># "0K8!+> (  (  m !"!!J!LJ!K)E!I)CK )BPKL (  ' ҃!2 ( + ( ? 8K  '    ' ) ( ( K1"C@!F! !d! !v!!~!^T !M!(!,!63Z 1#+ (9C# (<# () " 0CJ"+@)t+  + *#L+> ( J#J+ ( !C (i+ (6  ) ! SKKT*!B " *2P9 Ɛ8C2K1#%C&3K2!2C(!!C''''(  #( ( #& ( &0#& ( ) f3K27) ( &@ @ IRASPWDCLTYN&?/3K!* @+ K(K'" ), (" )K7C6+'K'" )" (+'" C<"98C;")<C=+>#L ( J21%4356798:;<=*+ &3K* ! Q!CH*  !#G (J#JCI! + [!+> ( JHI!. !# ( Y3#   # )3> *  **2 # (O!C 1S)R!C1W1G)R1SS+JJ3S3JJ#CK<3S:K:#1 (#)C' (#,+4 3 #1 (#) ( (!C(K'"/'G'J'(3+33:+<P#'7'S' (K (H: (C(+ (W3'&23'B C=#(223(2 (W#'C( (q =+ ( # 3'*&B+=  ( 7'* +: (*)&$#K) K3'*2" "  (b7'2# PC 3PC (i)J@FTML.TM$LPT^C^C^I^I^I^C^T ^P^B ^C^D^Z/^D^Z/^D^Z ^D^Z:^D^Z^D^Z/^D^Z/^D^Z[^Q^Z]^D^B^C^T^C:^C ^C^T8^C^I^I ^I^I^I^I^IK)ړ)8;SPK) )ВҀ1ҁ) BC *D@2*KJP! ( FҐ#B *""^C.^W"  *2  ?gB& "*B 3J ** (W!oJ ** (bCJB)]J **  *)"C *1  ?# *J!B* '* ;7'S':C (.J)!1!;S **  * (.J")) "B3B **" *JS:+ +  (b*:# "S1  ?3B *BK*;"ZCK +#+9 (#/K)C *!CK"/ *  *3 *2 (93B" ( !  * ( dC!C! C! C!! 1 1 ! ? $LPT8C1;S!;B17S!5B# ( KCC+ " ,J (7$1"C) K 0K)QK+# "B! (  (  7zV+ #)| ( 3" ,!C P'  % ( PK (g)QKK#1+ (C) (  ( C) ( 1W: #+ " "+ ) + ) )  ) # (3*! *K!! (7!6  Y2.**! "! (7"! (7&'(*! )QSK#)U (W8K fS " K !D (7 +# (7+  / ()7#) (  ( ( !  ) ( ( ( # # (7 :06<)9 8# ( Y!P (7! (. (.)K + !P+P+ (  K"'@F )QSK!P3'K' ( C ! (7 S'1# (n ( ! (7 $TTP$TTP1$PTP$PTP1^W^W^C^0^W^I^C^0^W^W^W^W^W^W^C^0^C^0 ^W^C ^C^T82 (93B" ( !  *1S )  3*11"  3 # ( Y (.K 0;768# ( Y3  3ҝ * ? *8# ( Y3   (  * ( ( 042)"J *8K C! (7  )K F b^W^W^C^0#G  #`PC#  ( ) ( C 9 8 K:%C!-P (7)## (  ' C+ K+ ( )  (.7 ( Y* >K>:'+J+JZ#BZ * (3" KB"J3+ ( *C+"C"2 ( 32 )+) +#;K8;S * (;3PҠS3# S+C83# ( *8BK+C*2 ( 3*J2 )+J (C)Q KK # ( 1 # (  # CK# 3 * CK0K ^# ( 1# ( P1*# ( :"+ ( K) !"+ ( ^IWODC0F2"BJ*2 ?;3J *9< 82"B*2 ?8;S *:+KK+33҂`S39  ?;3"* *J *1:+K+3 " 8z#+SS39  ?+K1P@3 '?83 (JJJJ)PJJ*!$ !B!B!B#* +3 ? *+3 *? *!B!B!p ;S * (0 (K*[,"/*!, *" 9`@2 '?!P ?+  3"3 ?3"3 +?3 ? *2 )3$2*KJP! (Ґ#B *$^C.^W^0.2S)QKKC)lK)#3 (1"  @ $;$$% # ( <)QK+3 (7K# (  # ( %# ( # "3# (!΍ "B+ () (  *# ( # ( #1 ( Y@ CK2S)QKK!#C)#3 (1" R%d ;\# ( R # ( # ( #1 * G ( y(0@ HP8X%GDIR%%MDIR%%GCIN%%GCOUT%%FGND%%LDIR%%DATE%%TIME%%GSYS%# ( # ( 1# ( Y# "B# "=# "8!<+ ( 3# ").# ".B& "CK)&!% "SK!'+ ( F0 2 1# ( # ( 3+J *FD^D^Z-^D^Z-^D^Z0^D^Z:^D^Z:^D^Z,CK2S)QKK!5C)#3 (1" ="N e;eeG# ( &# ( # ( #3 (  (J3#B *# ( # ( 1 # ( Y1 ( g 2S 13S (0K3 "C0KKK KKKK 3 # (1" "<>()[] ;+ 3#+CS+ # 0+ + ++ *+K+  #+ 12(+ K + + +  +  111 1 + + +  ( g# #3 + K S :Z (-3 !  (+ *3 *KC2S"CC0KKK) >) <0K#C) 0+K+ 3 (-) ') %) ##C)))3 S 3 S #+ +K+3 ( *8C K K3# (K ; 1!# #8C RKRK+RKRK+ 3 (+ !1|ts_acl9;BPRTV( ,; <") , <"(\,\ >" > ; ,><()"<)">C2S (!X "B+ (1N (1J"C0KKKK1B# (1" "%;K K()).,?## 3 (܂ 1 (#C (i (i# 1 (0KK (i# # )1"B3 (1 (#  0K# (3 (13) ( *"  *C1+ (!+ "B+ () ( 1 " (!  () (1"B * C0 2!9 0#1: (!5 "B+ ()+ ( 1& " (!  () (1"B1"3B * ( Y##FCLI.CM )%:)< *17"C)QKK)2# ( # ( )*# ( !&C#1 (!!  ! # ( )# ( #  #  *d\=>E ;CLICM&||!PRINT ADAK.04 POP  () (1"B1"3B * ( Y##FCLI.CM )%:)< *17"C)QKK)2# ( # ( )*# ( !&C#1 (!!  ! # ( )# ( #  #  *d\=>E ;SYS1NOL7;ff C Q1O 1M  1K 1I# #+3 BdK  =!C18P@32# 23J!PB"#P),;J $d  c 3*1 ! j  _]ljpj_j@j:!CK*JJ0 2!U CC + 3*K *"!0)DJ ; B9PC""K *#P #  *K>*:!  :"* 0)J 88# + 3+K+K*"J"3 #+K eigR !J"3J3 *9 J*:! Z:"* Z 8#+ 3 g4ig+[yC"@BCC 3"*! #C"*!  ""* !3 J0B 3 C#C ! !  ej +P"" C"""*#P!B" #)) ) + )ۂ )؍ #)Ս3# 3 jg4gRC??0 *K!2 ,# )" /S4"C 1"P C!  )31 #P !3B3+   `"j:j*]^ : *]lQK4" "C0 2):0 *K3 $# ܃+J' ֗ 2+9+ !&9&2Z83B8+1  3J 1 2  j* SC 7,!3#B;#B#B#B<+!$TB!!!JB  #*"8C ;KC!  ` i! ]x hdh]"02 28 ; )v:Jf 8 ,KD8; +2@K2V]l 8Zc*b*9S N8 ;3)OEP4* +1G  +1@ 1; <+!48SC*!/+$"9*:8K"3 3)"#J*!J 4B8    c@3)J   04*114*1~1|1x!S KpK + 24")s1r r d0 2S!i g#3 bS *  +8 M02 2 S 2*JBB B # B#B #B #B  %=CC-<1< 7%8C3 # 49S")c C "3 ^7 *@*1(  U +# mK M C 2"3B `jorLrJrH<`"j:j*S 1 C K3 2"3* Q") #+ 4 B B  P9GCC# + C3J *J5#  rgg4]lj_!B3 + “4 B J3J *J+J)J + Z+ 4  ! BB 4  "`g*ffgeQK 0 *K d*  +8 K02 2 S U SK")O   "3 I# 3 D ;)B (8  'C)9 .* )4 +3 +3B)*"* 3 $ $4 B J+ S$!! ! ! 0" CKS!3  [`"gR g*gg 0=]m E#)h /" " : ` KK"*:;@@Ҁ ڗ/#)R )PJ)OK K'/ Ɨ 3 33*K ")* 3    3 0 *K "K S4"+  .3)#1   +e]lj*K KK2 *K32*P@C3!xC"3#K;4 #B# B h+#K4 avIC*"3K3 e c# + 6 [C S4 Kd1CK+ Cv++J+;JJ A4 J+J 7B!< 3# ; 9C 2#3*hB!- !{#C $ $] [e1!;;JҐ 3;;J`8C C _g`"f?ffj:jog4g*gt"rr 4 BJ DC7!> >3  3# C "2SC7 S2 1#1 !39+ 1#  C  K+K#  fejG]l?!0B !0*1 1 "1 qti- 02PҝMcqz")0 Q -9 ")$  8));)'J  ! 8<) ! "C2"J"C @JY:#[ c]l4%B8; +J4a?^<GPc02 *2J2 t-'1' '<CK%"C8 <#+399PPPPPP`MU` !rHC# -3)  + &+ #)KS ;+3 !* !]^.: j:j  j j18; )#C ]_\ ) 4 *   : \ ) )1ٕ )1 )C) 1 zaZA90$ 3 }3 {+  A  gj_4 j+   eCC'/4 ;  :;J8BJ OC 0*1M T%K-I %JC*K *" " "K * !/p!6K8#+ FC8+ ,-! )0 " 9)=*L9#K 1 # gfegVts^tt%sSsj*98# ** `8%+8   %*%+ )R1R # ))11 # 1E-ͦ3 `!;>!?<"E*= =1,::M1$9$ #3:;JP"*J8S4 BJ 1+ 1 !jo j;)O)L)H)GK J1F!C D02 S3# i.S2*3S"97  9. 9W;!U (@Z#8+B#;Z"+; J8H8;;;+@K  j:`8;+@K E#_02 "CC0 " 1C7KC ҐҐ+; _ `"_tPCS8S3#J+222 S!!K3@Ґ+  ]l3*@J ! 0B 3*@J _ jGtt"gg*- $02 *0 * S S"1  !1 QBB3    8]lhhܭP@KҐS+9B J zF :#+98CK")ܧ:+Z :# B*!eJ#8 7)BJ YGC "*235323 "),)))5`-#E`# ;;ZS)3 -B3 ~3+K'#@+  CK!`!0B 3 g3 *! J K `"RSj*fe!T 3+ J+J C3" !A 傁232+ J+J+ JJ+92J J *32"3+PK#+;2 @@Ҁ  8; #"B !  g*g4t"t/MAPDR@ rLrJrHjo<2*I*I:" *I;A%AA-1 %A4 )3 v4  !KC pC@ҐS9k)hP-j%h4 B J-d d d CS+# K%"+8 3B;#B!JB!DB 8#B # *J3"P8 + 23 .3!+S" !*102!& K3*#P0 * +3;   3  `"@`i`jtgfe_tgR#  ;#+  03;"C"CCC C PC@83 Ԋ j_  ʂ;#+ + C  g*"9 !J#8TP*#2 kBB!&9$ | L x*#2 ]!`:`Z! ~)$ P : +P 6 ) P 2  /n *#2B 2!`*`J 2B B ) `"B* `8kD_`"\ 0"1S 1NS22<  :. *X!`: 8;!!: `Z8`  0! !9 ! ȇ < 8 ]lpj LOAD , STRIKE ANY KEY. ` R OOKK \ PK8 ;) ` `C ` `+C "*  i!j\ )`:`Z 1 C3`"`B )`"`B 4B xPK"#C2)`"`J#C X+'C) +9\  oK m+# 9N )L9L9I Y\ V S + 7+++9$  8+й4 " =  :  7+#!1 0B #+K 1 81j az \ "#2) 9 `"`B   \ / 0  `* ! \=!Z -X *!S * O#8 ;)K  I`# G$!`B")? = :BKB#*3P /3 .!. ..`  *  &E 3  #KC2+  E?jtЀi!]^_dejg*sCi=sBj_j \ C"#C28+ )s!)q29o b 9j*9g X@9b  B ZB+#K Y AЙ49)C )Aу !:  &@څ)4 ٫  !*   ! :)   ! \ #/   azP]l  OC0" Oi 0*1C1@  ?39= 0*3    !1` 0!. /`:@5JQJ2 *  9A*K 9<2 152*  Q/9,*K b`"X]"C8+# J0 8+ " K"  8#  ` J HYYa8+ 5*:  ;  9N 9L )HPJ2* 5 2* + <9;(  : + 0 : Qǂ  + %Y1; \+ * +1J11* Z K +J i1cr^|2 S "BJ*2 S93 tJ/ $ !$ " j w C wK 3 3 3 s _`"j:j_@  Q2 UC #+ v3   62 OO2#J ##+  % !   8 032)`"`J  ]l1 ; X:;! 8\  K")CC ffgVC@Ґ:!= 0 R+J 3C)/ ( ,#;`+C@ `K C 8#)      3`*  L#    ) ! ! ]l 0\  K")CC ffi!PCBBC" " "1PPP 8K3B!B#!ޖJ: +K )8K B `P  v {+J){ r)y mK2)f )h *!bJ: +!a82 }+  # O P3G L' # #KK Z E#  P > P M  K 7 IJ C 0#  : ) : '22 *!!J#K 32 ,3GB")!B @   Y8 +8!  4  @gV  I]l0Z1 P  ]lt :.TUij j`"j_g*`j`itg! %l i$ )P%1` ! !قP !4 P1 $ )ѦP)1 ؁ K0 "5 ͂C "C "C #8C#+ 1CK3 9^)^P-%4 B J- M C")GB#+BJ4 B J- #  9 C"  5S&t3# + BJ# BR '1 3 4  ;C  3B!)+E 32 3  feg4g+g4 K2S`"1$ 3B`3 ?J K1< ;# 83 0K") BC ]l32#! +#C1 32#! ) #!  IH`"@ jK)"1 P@P1< PS )P! *8+z 12345679\\\\\8`:#@'="\\\\\0/STUVWXZ\\\\ Y\\,%_>?\\\\\-JKLMNOPR\\\Q\]$*);^\\}~stuvwxz\\\\\\\y\\\\\\\\\\\\\\\&ABCDEFGI\ \H\[.<(+!\\\ {abcdefgi\\\\\\\h\\\\\\\\\\\\\\|jklmnopr\\\\\\\q\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\PC @CS K%JB B -I1J H%E3B 3 B { F S B PC +# 4 B J+ 4 7!C)-*'B3!(C)!"  #1 3 L  #  #C rLrJrHjo<`"gj*gj_]lfer2 2S`"!* "B`"B 7)% !)` "*: %) ) B m oti!E tg*g48+ "3 3"*B* *: ZB C"K**) @S ; =SB B-3 33B B /PB l8P# $ '32 3;"CC" C CCC83#B#B~1|") !B !t H Zjtg]xg*i!` P3 33 1  sA1YB!B YiWijsB)O`5 P`K sA%C%CECC3* "C sAPte]i=:2#* '#*R#8JQ+ chK;#8 P" Z3` W:``3 P0sCt")F8S3 E3#  ?K* * : : 14#B;; 83:  3 # 3#K83 CB8# 3"C"CJJd`"j jg4gR !*C))KC)"7  W Ґ"#BS#EE 1 ! BB!B YsCtt֊tt x' ")[W ?sA`* ="):J 38"*C"CBB`83:  s oK"* L 3BBB3"*  3 \3 Z` sA kijiWkDi=VQK )' ") @B  <2 C3+ 7R B)110# 3# )%QJJ !( !JJ3"3B#+ S:1 1 11 )*%gDR.8 ;1Dƒ!@PPI8 ;18ƒ02 "  %010`1, . ,  )<#8 + $"  # 112^ ֠S  G t tij]l`"g4t0 2<+02 J#B' 2 3PK8+9 93+ <#;!<#38 8 sSsj*B!6B 5K!3* J / /#")-" 83!#* ;;"C "C *K"C"C "C8  83 QffhdhgVKJ J JJ J" *BJ":+8CK tB!q q q+1p p3 p  l)j3 gC 1c; JҐ `3 J`C3 \ C+# P VUC K3;8; JBJ83 A4 B J+ x 8K!6 63#+ # AyB"Ax* 2"Ay%^AqAq-]1] #%YAk4 ![+1V L3B # ># +4 BJ3 B ffj:g*jog4f?`"& 5 KK)# JK# J?3 3' 4 "G B! 3 3*"  j*grLrJrH$")8 * ")1 !4"+ -#  (# $ !K! !!! ! 0B   0 .DR`" gg*")wK)s* 0 2B J+ o!o 삁 S" r#)a d0 *K 1{ Z3 Y" B ")QB4 + OB!B"!gB#B"!*G eI!C" 3CS" *"C)N !")*+ )(1E G)D D")* ?,B J+ +# ` 53))3 3 j*gRgt"3     !0B 3 K C ` # + .t/jGe]x]i!j_8+P5,U*5*U(`!*!'1%PJ)II!2  * *9K):9K 1 Q 2 ]Z[qz`9) C0: CC C C2! Q+2C2+C%'E%+ C19 Y*J =2  = ! B `  qtq's^49")  3J)K8 ` ]l?t`QCK5A 4"0 * {" tS !2C q iC3 *K"!#C 2"1AKC>  0 2*K !2! ! DZDKDPDS0SVtj_F!$! !$!!$ 1!@1 1ܴ 02 "-u d1jZ5h  Z5e 32  qMgR ]l`"5W- *JJ* :+8K Q C12 5 <*!7-: 0B ܄" )010"  + +2K#)+)  " 02 Q 02  G :3!9C sCtsSt_tt]muhdhg*t"`_tOL! #  3   'K K2 2S`"! B`  S +JCC*J B&`  T]li!]xr )+3 L G32":B  @*: ZB 4>C"**).3K J3"ҏ # C"'&S 3# BJ*J:+J*83 "g4fei=g*&)83`S328+ B#"3 ;3+J": ZB8;# CK# C3*K "*3"3 +1* *32 2: 281!32R3CK;; ;# C  Z  j ]]mr0B0 *2!?1? =KT !8C!33 5 97"* BJ . "* *39*:;KKBJ  8; #B#B#B#B#B#B#B# B  jocAfeg4g*c" R" I"9YPPP A838#֠; #2`C29G!B6  JZ# ,`SBBB$BB!B BB!ŪK9 P9`)PJJ)`JJBBZZG)! !  @ < 00 @]l:`#d-"2 -"$K B` /"2 :K1"  8;J8; #2PC2`8  "B!Bi!F!P!LPKC`* C"8C# 6 "C  # - "C8B S;+ C#)&A8;#  m83 : !C#C: #CPE `8 ]mF`ZR]^QS32 93BJB# 8 #+"),'8;Z "#+!܏PPPJ8# B D8 2S`* * #B` 11C#B 8 Y.83" B`J)*K+ 2"3 83: ##Z!B#" 83 8# 3*"#[3 iii @@ F@@I L@AO R@ U X[@^ a@ d!g@Bj)m@Cp)s@*v+y/|@.-BOOTSYS.OL$TTI$TTO$TTR$TTP$PTR$PTP$LPT$CDR$PLT$DPI$DPO$TTI1$TTO1$TTR1$TTP1$PTR1$PTP1$LPT1$CDR1$PLT1# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED j `":i j0Bf?s8e# 06-7M8* * )516Q15Q12Q# # @#@!+ #PPAC# `81 Q1Qj@gqjkjnl@g@n@+PPK1QJ1Q1Q1- +1*1Q1ܖQJ+1֖Q)1זQ1ҖQ1+1ǖQ1QJC*K)0* K5))T SS* . '2   *  S2* # #  ;*K 0;`8 Y;*K 32#:+ 8#*!PJ \32 *# #* i1]q']^sC32  2  " C " ;C ;`3  @Ґ 2 ` H *#J"  K"CZC*02" B @Z "3S"C 02*  J "*JSۭKK K "֠BJ:;! :# I:#4"*PC 3B"J!8  9 jp J:+8! *"K*!2#P09Ɛ83<CK :C")B! `  "  sCi=i!]ld 4)[ H)Y I !8"1783!1C)3"9,:)'PPP)"#PPPP83J:;)B 8;+ SB 8 0  0) ) ) A)<C &e2 <# # 8;3#J#+  ' ' #  !   ;CC!C";#      4]l`"  j_C@9/:C K # (.:#+ D:;) 8CK!+J!C    rr__ ]l`"@jpg+gRj:g*gffge2S" *9@p8BJ#+1 3 !JKKPB ٲJ! )J)J;+J DžC3" 22"C"*91 K CC 3" *BJ3 J! # + #+ KC 3+ +!   \ K )K+!"B  PK* #:;J JJZ KS 1 S")' +# $m CK"* )C3;+;ZJ1 3 3*3+ J j`"j*g4gVS1j#* #* ;#*  #* X   82K32 2S`" !V NB`#+: 21@1D >3JC"B" B 4 C+1+ +3* B3 3B ! )" B!  uh@!0B jo i!jpfeg*i=K4"0 * b `tS*Jm" E8+K KK%GK 8" \8; # %>C 8")7 H+B+ 7B"),B!% (  $3 !! 3"B"B J:+8K  _j:_t"t?`"tg*]ltj^8;  :  8 .*  6 CC58;" J"+ 3"+  "+ -е  (2" 83+ 8; * J8+ -  ' "   '  :8; #% 8 02 *4#24BC8  ]l+: K8;@Z8+8; \9+! K8+"*BJ sS,4*8K A0: C2"B,#+944 B J5) (02 ")B0 2 T - k02 JMMM L: +K  tZZt`"t5t3 3 8; C ]_gV  `"8  @ 1 1;  11P1-Ґ@@PҀ!K!A\ 1 1 1     \   g*g+hdhtgfe]lTUt 5 1E)S2 32 3JJJ*K*K*K ΀ #+4 BJ - ;# #)Ѝ #    ]%X:3 I`:  :KZ` ]m: ;Q~:KC M8+9818 ; j32S#db`q #C1k@1hCCeUS1`P1#CKC3 "$K C G ` D'` AW8 :;C1@ 11:#1 <02 S0ST1% AZU)BBJ!*K(:":"  Z#K)9ξ+  E `8 ]l?`  `:#) !B ZBJ""  `   `  B 4"0 * R O 2S* K)H"K4"0 * ? < # 4# )5;4 BZ /0 2Z! + CC' 0 2! ! 3*3;ZJJ8+J  3  `"geg*hdgV]^# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED j `":i j0Bf?s8e# ;8* * )+1;Q16Q1+J@+K1"1)Q)1 Q1Q)1Q1Q1Qxqjjkll@nn@g@# # @#@!+ SYS1MSV {ee PW|WFWW  f NOVA RDOS REV 6.32 ``DY:8y Iy*%d8)TV d*WX~ )&1&9&"C @5 >!r "i?!   @)  P >!  O V^*( Q,-.?!.@0 Q? *0.)$)  -(, " Q,-.?!@0 Q0?  .(-0, "-Dl:/\ K!$@+0(@/@,@-@. 4  O DL// ?1  00  09  H1 Q@1? L+ L (5  >0)9!F )3!CA? Q?  O!8  O 9!3  O > 6@)P3  O!#)!9E99!P C08 trx ~'jn1 O\ K029+  #@*PH<)U  O 4P H ?1 A t 0@- +U!%  O!" + OAAA@1 =@+ 0 L G NI101 G NI!m I1 O G NI 4 I 4)" @ I(-h(4 !G "c`(7! H@1[0Y = Q?-Q: G NH. G OH/ 4(. H -@ @,",1m / O +T,01!)99Ҕ % ""!Ҕ  "# )Ҕ ! "$  F N 4(.  O) O P- G N #2 G NH. 4 I(2H, . 41 M Q4.N,?2 = *1! O\ K7P3 ? O LY  ! @8(08C\ K*!K L\ K! ړ3C L\ K" S L\ K!@)_4 L3 @@\ K7 9ŠA# 1!P)?4 L3 @SY 8)+Z)*3 @Z#'d \ KQ(Q( ?1I  ?9 1  1 Q +-08C)! K L\PPP8 \ K7 1 Z L 1 L\8(CSҐ *? ?CS L\ K7P3 J L JK L\ K L J O @ L\ K J O @C L\ K<! ?K L ;A (: H< 7 O LY 8CKS1X3810X#+3\ KAQ ?! ? L! L+H3A8I8Q8Y8A3I3Q3Y3\ KI*9-#)%#A)) 3A#0("A1") A:#PI9#A Q&?  L    (N[j w & ?;@E-O] ILLEGAL FILE NAME ^T NOT A SAVE FILE: FILE ^T  END OF FILE: FILE ^T FILE ALREADY EXISTS: FILE ^T FILE DOES NOT EXIST: FILE ^T  PARITY ERROR: FILE ^T  NOT ENOUGH MEMORY AVAILABLE^A  OUT OF SPACE: FILE ^T  FILE READ ERROR: FILE ^T UNIT INPROPERLY SELECTED: ^T ILLEGAL STARTING ADDRESS: FILE ^T DEVICE NOT IN SYSTEM: DEVICE ^T INSUFFICENT CONTIGUOUS BLOCKS: FILE ^T  CHECKSUM ERROR: FILE ^T ILLEGAL BLOCK TYPE: ^O  SYS.DR ERROR^A  SYS.DR ERROR^A UNKNOWN DEVICE CODE ^O  UNKNOWN ERROR CODE ^O LOAD CT0, STRIKE ANY KEY ILLEGAL DATE ^D/^D/^D DATE (M/D/Y) ? ILLEGAL TIME ^D:^D:^D TIME (H:M:S) ? ILLEGAL CHARACTER ^A CLI.SVRESTART.SVMT0CT0CT0:0MT0:1$PTRMCAR:00MCA1R:00$TTRERROR BLOCK - OUTPUT FILE VACANT YOU LOADED ^T TAPE# ^D I WANT ^T TAPE# ^D..... TRY AGAIN \ K1T'Q* ?01 1= ? A1 @^  C  B  A)} ? @!  @\87*1 @! ? L 89(8 WD!A(W7T*O% OH$TTI(M f5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H` (  E5M5 )4An%11 1f?1/ - p )) )'   1"  ` ) U1 nQH `1 ( ffffgY]YKFPY\1ZYYuY.Q,1+ A+ 5!*  !( !& !$ Q & 0) !)ܥ A!!))QWDKDSDZDP 07Y ) 2ga)bIgI) )jIgI eH !@E@X'== 1; B B B15C" @ @ 8)+K1*)*'  / B"J5!S)1 32 1 f?xywYyy pDY]3* U?9+ 1; 19 f?U6+J+J)1- -='5)#+BJ2BJ2 U -! %))1 )9![!C"BKyefYyp'ZWxTy9!1!+  J B !B!B!* BJ 8! ;Kyv"`!&9&C9%CE"E")" 9 )K)9# C1"B@"(BB1 f?wwyy xyxY]9a)aBBBBBZSZ9T!SԑR* 9K;!)BbIgC9;'  ;!;)3bigC`H!1bIg)%g9(+!K9;' `h!bi))g+! K4!@ d yffZ FULL(F) OR PARTIAL(P OR )? WITH OVERLAYS ("1") OR WITHOUT ("0" OR ) ? INITIALIZING WHAT DISK? BOOTING TO WHAT DISK? OVERLAY FILE NOT FOUND MASTER DEVICE DRIVER NOT LOADED - SYSGEN ERROR. NO SPARE DCB AVAILABLE - SYSGEN ERROR. INSUFFICIENT MEMORY FOR OPERATING SYSTEM - SYSGEN ERROR. ubtos)orHvvylcnan5B!B K!* J y|3):8o3!*r=;"C "C *K"C"C \"C)tS o5l:#+98CK")f:+[H:# B)\BJ K 583"*23- 3(3")C")@)>5>`-<E8`#=*;ZS)03 B3 +1 1 111 11 lcnna\\p']\F\%\;\0[ym1mSnnw@59S #B!B:+#1| |!z(1 'EtEuEt ! 4 9#+9bB J- ] S 3" i")Re P!a bL`@ d?=T `_ 5P P`(5:#8C9@Ҁ#+ 74 9#+9'B J8CK-  -.CC'( > .'!C'/ 3 \Zmpm@\\fgffe][lbfZyyd[m1Z1 !C#+ \!C)4 VGOBJ ے!E E B4  ђ!; ; 83 3\Z\ 1S4 BJ CC!(CK'O/  #3    4  Om'p7\ 1   ][ WARNING: MASTER DEVICE MAP.DR IS ERRONEOUS. INCOMPATIBLE DISK FORMAT !! NOT ENOUGH SPACE FOR OVERLAYS IN BOOTSYS.OL. MASTER DEVICE NOT A TOP LOADER NOT ENOUGH ROOM IN BAD BLOCK TABLE DISK UNIT NOT READY DISK FORMAT ERROR DISK STATUS ERROR ILLEGAL MASTER DEVICE s)w{`cg9; C19+ J+JU#Ed1 `1U8 CC5 B `_yd\ !*E*!Z)ZAaAa`1\ W ")#1 1 P9I +  +M;Y ` `^]2_:W 1\ gR\ 1, (ga!))-PA*  ]D\ -Ik1\ 5 Qc1 !`AmAga W y]xx]_L_\_l_{_1 \ !)PIPIL! %P #) !!0A1  1 f?_e\  ) Id?@ \ 90Y9 Y9Y bl@g\ !`A `1` `E p\ !6C` 1)2I1).I1PQ)'I)%I)I`C `)I1) I) I vtr@qg@1 Nf?_\ \ 9 39L#C@95  ]4\]D\]D\]4\\]'\]m(nany\ JJJ=+J+J    Y ! Q*gIjI YOU LOADED TAPE# ; I WANT - TRY AGAIN ]]^^_=]]\ " )§C \ CK# #     \ )A1 0^?]]\ P у  )2 57  53Q! ')&I ) ;)81 1 1 ! 1 1 1 ! 1 d= ` `\^) ! ))  !aPA`C)_A^CPA!ZP g1M9N c9 9J 9 9 9@ 8#)> @9J(%AzR %; z\ %8%6!7I` 50@ d?`!-0H \ 5`B B ")B* ` z_/]3qA]]]]]]m]) )K)K#1KS K  +"K1#  + +# \ 5) I;PS ]^1 09f? ^\_] LOAD $PTR, STRIKE ANY KEY. LOAD $TTR, STRIKE ANY KEY. LOAD CT0, STRIKE ANY KEY. TYPE ("0") FOR $TTR ("1") FOR $PTR ? FATAL MAGNETIC TAPE ERROR. $PTR DRIVER NOT LOADED - SYSGEN ERROR. FATAL MCA TRANSMITTER ERROR CHECKSUM ERROR IN SYSTEM OVERLAY FILE. '`%+),A)PI#9+X +[; )  Q) I !  ! A,nBy vvv~ArEtv`` ! )n q)l 3 P !8 !J1I)T I0 Q!D)B)M B0 :#@8 C`8 )C%E# E$ #&@+#5A!? #'b#(`#"3!ҐQ43$;%`0-1J: #@!+ # b#`*:CJ%-5 Y "Cuapx3 * ) p`!) Y``! c! 5 ]!KY`1% %Y")"t}!g~`g~t}g~ig~J1dg~`g~t*g~j>)`aT%%Ԃ *3 & Z#"C SP)OK8+#C0J1rKP t8#+39jk# 5C_5 2  :`B`Z:]B_`3 PK # <1C!C38S91-`d/Y 9)+[  K8 CH 8 x- + H3P 3 P oec`wY8 3 * H  0-8 @ C B )"KZ #B- -JP5*  :  + :) PZ2* 1ayy_c.ca)UaP0J29Dҝ9EK * >?@0<+J2JL"0 dJc!'+ 8#8 ;X8K3S"_\ 02 - 0E ! !1   p'`fydVdy)a )02 9"B8C c6 r 18+ 51 8+5  *Ki iyydf V T R P N #J"8SdJdK B   `)983<# P8 + ""J <+)$ 83 "8#2:+ !8K+K4*KZ*c @83Z*! "@ 02 )OQKQJQF<+ K`E%<'&+Y9Y954"Y2Q22J1-<!*K "ZC "B"B KM5  ZC] `5]S]u_dt`8 ; 5m)m rS pS(KF5S)Q ooPBB #B8 Z #B4")^ *1Z1m <0 2 9iJ8 3*P8KKS)6812*32 2X 8KKBҝS1!#8 `+ C Kce_<91*  Pxy vd3dV11@ (?c 6 4 8 B # # S S "P " %)ƍ# B * H b38S 8 k;8 C c38 S xx  Y9 `10  :`Y+-*8(`   \  S ` X`9 Z`Q  8s9oo:YI=P ))Q2 :91*KZ94 8#Z="B02 "B08 C 8 C3*JE @ 1" 2"  "ae`9ZQ8 wc}`8 # 4 BJ;+$]TK$_ݒ 2J1e2 *  S8#C"* 6# T8 1, 8;+$ J2 $*% %  0"1" !2  2 "1  * 0C$wyZ8 P C#B` :B@ a:Y :  `=U`Z`vc b8b8b8  b>b>b>b>b,UBX[[[ b>b>b,haԙi=i> ȇ";>gefui;'q,xy鐇i cSdejk75cZ ?փbq&Qe{eefefeeee\ #f\ '\ #S +K)(K0 A" : i2 K+;+!91 K!C0 2;+Q!)Nwff\ '+4 @@1h K)K#+3 !)@Px\ #P \ 'Pm1\ 'S A 0  2 +@15 !+!KC0 J H 8+ !1`K S) 1SK1S 2) K B#P#+3 ;Xwoo:ҝ%SBEP@ `) 3 1  ; X0 B 0 @ 2 # C  P텑3 PJ5'*K*K1# ; KZ ! ! J  + H    naynlcy\ 'S)!1S1*[ CS g g\hg]P fhg@q_g\hr ή@ gL P*9, =* )9)1)9( #9&1&+ *2JC:) )@ZPU!)1B yvywyw` Q:; ;2a a)a*J  )X A!U U! T2 RѪSJ M)L9L%)I H)> F*5E )C )Ay? 9 )O1yKw1: 2!.\YA*9-9' B#9 PJ=+  q_r qqpqhLhTgDh%C CC C=C+9B :2U=9%7 I 5%255)6  !4 -!25- )$), )+ 5#:C=$C! 22")B22") Jgggqvqg\ gq "K!A!  )#5 h MMq hiq@ь@ hhh_'3C1/ G  O 3  !, !*S 5p7m(3 t3 "*C&+K.  BJ ")Bii8+ P+3 JK +J8 3 + 3 =3 :?KK1K 3Z  *"J)&J 3'K/   d3K3BO3 3KG  O 3  jkmOlce3 3 *2ՐSi\ "*   + C- &d BJ: B J !S ;K K# + ;;@9 K C ") B p7elblcm()K+" " J :#K 8;" + J " J :#K 8;"+ J p\ " S" P*1 k{ `" A" > PC t3 sdPCK HS)*# J;;#8K*# J3J .3*"B J #+j K#  Ak{ \ jDz  7k{3"B "B " B"Bjm'mOvv+ $# k{ \ " " "B "B" B" BB B j oTogm1e\ )w*!v "* :) *8s l!a y:+8P@ҀS*!SJ P3J`C h 3C S k k3"*3K D B2J k3 d%3J;JB8ow3 (3K )B# B!K ")J;#J  3  k 3 I k p7plm'm1m(clblc3 3CK "C"C1 C "\ * S2* *K+39K  :+8KK emOaPҐ\ @C G CC1<2J?#;#* #*  #* #8* M8*")" ) ) * W#%T+SCɀym1cpx3 3" :#+SN K  5 .S 0   3") B  ")ӏ !)1 "J#B%B P` nay lkynov \ +`" ! ` \ :J[Z#B#B#B#B!B%B BBB \:`Z \:K !$ "`"@B`=  P =  P  8\Z\ZZZZy o: \8CKS" BB*J JB0B B B BBB BB")Bo!\8CKS+J+J+ J \ :;J "A2J#B 83:+BJ &.\   8; ;P+JJ+J J  lbm1!\ 160CC28J&#K#* " ")#  #   ":J" BB# #  yna!\ !9C`")  `)1  ) !'C &`") 22 *  +#BBB *22 J ` Acoo Y12J" ")  9 + ZH w\ :#+ 83@0@8S1VCK3")L )J  *":"C"C# :+'. *"83#3 83B!B"))B2`2 : 3 CB `   +'+'+r)r)rG\ C"); 8)8 Q"C"*CK22!. $"J+*;8 #PC  322"*3CK#3B \8S0 J B`Z B E @  (8 K C E@ ae__\8CKS@5*: lPJ2 o``!\  32``  !\  32`B ` !\  32`` `  )2XT2:N)2)1)-)))())))))))))))bbdd@b@fdfbaecaef@`@`cՏcd ԏ֏ӏX8; J XCKS8#+3;X \8CKSҋAI ) ) 8#+3Ґ'X)# @8X8QA1+C@81!\8CKSϲ+J\8CKSJ\8CKSA"+ 8!X8KS02 , 0 +3X 9 P@ @ 80X9Ɛ\P8 X8PJZP* 9w 2* : : "* J J :  1,+K0* *" "2B c b8*9\  : Z *9FJ* : *@JZ")7 -" *  )#*97 : * ** *D* '$* J J *J*@J" *" *  ")B" B " B B !Y"C#PC:? # KCJ Y#)`CK9 ;  +Kr r@ 9QZ : ++ :+ .++9A :#K:+CK" -#) )& : * BZJ )ď :+`KJ ;ZZ:ZZ:vo: T9Z: # ")F #)# ?" I& 7+!ޏ !,  ):`K"J ! :;Z̀K" B * J:#CC ! w{wzmO)))) ) ))))) X:8N`@`g@aa@ab@df@erHrVrdrrrrrrrrrrrrs sHs)ws9sIsYtlsft!ssY4DP0DP0ssssussusft!s@@sYkjk \ ")d B"CpPK")W  T T83K;C8 M22 S JC3"C 2 EK+ P+PK+ <#K3")7 )5  #)(*B*JP)%+PP++B+)# ZP#PB oonpmplp} \ 2 2 :;P9" P")9" "  *!:;JP* " 9* "J  oooo*SR i") ֨B,") B!@p`9m\ 2 ! h ؂NK"))_J \%\ P* U8;"C 83 3 K ) =:Z:;JK.>  JZ*!0J2* "*B"B)  ) *A ) ") voo:y ro9 !@f?`1k? ]U161 1 5ak yueudD1K9 9Y9Y9  u`g0xFYGQE0Q?gC;s?9* ?Q&9 9$3 932 8]98; JXCK!!C! C C @C C  xv`( K 9"H lve`LAIA!E `_9  9@3 *PJ2JS - 0KK K; 1#*:  ZJ 4!@!)19`- PAwv v~ae- #!A% ( 5 %``E  PE `y ``% ME9, 1" *JQ!- ( 1 2 9 )ܪ -= -@@E9%Y :! Z9 ZYugufuau]?`8!B#@+ l?H 5<) -5- )0I , ?0 2 B#B#B+J#B#BJ!-!!!  bB `B "B &B8 +UK# @#H#+3;``_x` -* 1(-(1' 0 B&-! bB'`B() v`8#("b #ywww!`A7eI3Q3Y3#A2 -+*   f?!  Y!  gIbIYՑ! [ ҐҐҔ! / v\8w`s)wa"ww``rHBREAK.SVFBREAK.SVtwwwxyyy yy BOOTSYSSVSYSDR FG INT MAPDR FG TERM $TTI$TTO$TTI1$TTO1COPYRIGHT(C)DGC,1972,1973,1974,1975,1977ALL RIGHTS RESERVEDY9  A I Q 5 !)181 3fhsYg@v_suefvi iwwDi,w{SYS2MSV wull PRRYRj  f NOVA RDOS REV 6.32 ``DTM8w Iw*%d8)TV d*WX~ )&1&9&"C @5 >!r "i?!   @)  P >!  O V^*( Q,-.?!.@0 Q? *0.)$)  -(, " Q,-.?!@0 Q0?  .(-0, "-Dl:/\ K!$@+0(@/@,@-@. 4  O DL// ?1  00  09  H1 Q@1? L+ L (5  >0)9!F )3!CA? Q?  O!8  O 9!3  O > 6@)P3  O!#)!9E99!P C08 trx ~'jn1 O\ K029+  #@*PH<)U  O 4P H ?1 A t 0@- +U!%  O!" + OAAA@1 =@+ 0 L G NI101 G NI!m I1 O G NI 4 I 4)" @ I(-h(4 !G "c`(7! H@1[0Y = Q?-Q: G NH. G OH/ 4(. H -@ @,",1m / O +T,01!)99Ҕ % ""!Ҕ  "# )Ҕ ! "$  F N 4(.  O) O P- G N #2 G NH. 4 I(2H, . 41 M Q4.N,?2 = *1! O\ K7P3 ? O LY  ! @8(08C\ K*!K L\ K! ړ3C L\ K" S L\ K!@)_4 L3 @@\ K7 9ŠA# 1!P)?4 L3 @SY 8)+Z)*3 @Z#'d \ KQ(Q( ?1I  ?9 1  1 Q +-08C)! K L\PPP8 \ K7 1 Z L 1 L\8(CSҐ *? ?CS L\ K7P3 J L JK L\ K L J O @ L\ K J O @C L\ K<! ?K L ;A (: H< 7 O LY 8CKS1X3810X#+3\ KAQ ?! ? L! L+H3A8I8Q8Y8A3I3Q3Y3\ KI*9-#)%#A)) 3A#0("A1") A:#PI9#A Q&?  L    (N[j w & ?;@E-O] ILLEGAL FILE NAME ^T NOT A SAVE FILE: FILE ^T  END OF FILE: FILE ^T FILE ALREADY EXISTS: FILE ^T FILE DOES NOT EXIST: FILE ^T  PARITY ERROR: FILE ^T  NOT ENOUGH MEMORY AVAILABLE^A  OUT OF SPACE: FILE ^T  FILE READ ERROR: FILE ^T UNIT INPROPERLY SELECTED: ^T ILLEGAL STARTING ADDRESS: FILE ^T DEVICE NOT IN SYSTEM: DEVICE ^T INSUFFICENT CONTIGUOUS BLOCKS: FILE ^T  CHECKSUM ERROR: FILE ^T ILLEGAL BLOCK TYPE: ^O  SYS.DR ERROR^A  SYS.DR ERROR^A UNKNOWN DEVICE CODE ^O  UNKNOWN ERROR CODE ^O LOAD CT0, STRIKE ANY KEY ILLEGAL DATE ^D/^D/^D DATE (M/D/Y) ? ILLEGAL TIME ^D:^D:^D TIME (H:M:S) ? ILLEGAL CHARACTER ^A CLI.SVRESTART.SVMT0CT0CT0:0MT0:1$PTRMCAR:00MCA1R:00$TTRERROR BLOCK - OUTPUT FILE VACANT YOU LOADED ^T TAPE# ^D I WANT ^T TAPE# ^D..... TRY AGAIN \ K1T'Q* ?01 1= ? A1 @^  C  B  A)} ? @!  @\87*1 @! ? L 89(8 WD!A(W7T*O% OH$TTI(M f5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H` (  E5M5 )4An%11 1f?1/ - p )) )'   1"  ` ) U1 nQH `1 ( faaTXT^FPTo1UTTY.Q,1+ A+ 5!*  !( !& !$ Q & 0) !)ܥ A!!))QRDKDSDZDP 07Y ) 2ga)bIgI) )jIgI eH !@E@X'== 1; B B B15C" @ @ 8)+K1*)*'  / B"J5!S)1 32 1 f?vvuUwgvkTX3* U?9+ 1; 19 f?U6+J+J)1- -='5)#+BJ2BJ2 U -! %))1 )9![!C"BKv`yTvkjURv8v9!1!+  J B !B!B!* BJ 8! ;Kwt"[!&9&C9%CE"E")" 9 )K)9# C1"B@"(BB1 f?uuovv vvvTX9a)aBBBBBZSZ9T!SԑR* 9K;!)BbIgC9;'  ;!;)3bigC`H!1bIg)%g9(+!K9;' `h!bi))g+! K4!@ d wbbU FULL(F) OR PARTIAL(P OR )? WITH OVERLAYS ("1") OR WITHOUT ("0" OR ) ? INITIALIZING WHAT DISK? BOOTING TO WHAT DISK? OVERLAY FILE NOT FOUND MASTER DEVICE DRIVER NOT LOADED - SYSGEN ERROR. NO SPARE DCB AVAILABLE - SYSGEN ERROR. INSUFFICIENT MEMORY FOR OPERATING SYSTEM - SYSGEN ERROR. s]rkoknt{tvgiiE5B!B K!* J y|3):8o3!*r=;"C "C *K"C"C \"C)tS o5l:#+98CK")f:+[H:# B)\BJ K 583"*23- 3(3")C")@)>5>`-<E8`#=*;ZS)03 B3 +1 1 111 11 giEiW%WkjXWYW8WNWCVvhthjju@59S #B!B:+#1| |!z(1 'EtEuEt ! 4 9#+9bB J- ] S 3" i")Re P!a bL`@ d?=T `_ 5P P`(5:#8C9@Ҁ#+ 74 9#+9'B J8CK-  -.CC'( > .'!C'/ 3 Wmhk@WWaa`XVgabUvv_VhtU1 !C#+ \!C)4 VGOBJ ے!E E B4  ђ!; ; 83 3Wm\ 1S4 BJ CC!(CK'O/  #3    4  Ohjkz\ 1   XV WARNING: MASTER DEVICE MAP.DR IS ERRONEOUS. INCOMPATIBLE DISK FORMAT !! NOT ENOUGH SPACE FOR OVERLAYS IN BOOTSYS.OL. MASTER DEVICE NOT A TOP LOADER NOT ENOUGH ROOM IN BAD BLOCK TABLE DISK UNIT NOT READY DISK FORMAT ERROR DISK STATUS ERROR ILLEGAL MASTER DEVICE ou_[#^c&9; C19+ J+JU#Ed1 `1U8 CC5 B `Zv_\ !*E*!Z)ZAaAa`1\ W ")#1 1 P9I +  +M;Y ` `YXEZMR 1\ gR\ 1, (ga!))-PA*  XW\ -Ik1\ 5 Qc1 !`AmAga W wXvvXZ_ZoZZZ1 \ !)PIPIL! %P #) !!0A1  1 f?Ze\  ) Id?@ \ 90Y9 Y9Y bl@g\ !`A `1` `E l\ !6C` 1)2I1).I1PQ)'I)%I)I`C `)I1) I) I vtr@qg@1 Nf?ZW \ 9 39L#C@95  XGWXWWXWWXGWXX%'XX%hkiiEv\ JJJ=+J+J    Y ! Q*gIjI YOU LOADED TAPE# ; I WANT - TRY AGAIN YYYYZPXX\ " )§C \ CK# #     \ )A1 0YRXX\ P у  )2 57  53Q! ')&I ) ;)81 1 1 ! 1 1 1 ! 1 d= ` `WY) ! ))  !aPA`C)_A^CPA!ZP g1M9N c9 9J 9 9 9@ 8#)> @9J(%AzR %; z\ %8%6!7I` 50@ d?`!-0H \ 5`B B ")B* ` xZBXFmXXXXXX$mX) )K)K#1KS K  +"K1#  + +# \ 5) I;PS XY1 09f? ZWZX LOAD $PTR, STRIKE ANY KEY. LOAD $TTR, STRIKE ANY KEY. LOAD CT0, STRIKE ANY KEY. TYPE ("0") FOR $TTR ("1") FOR $PTR ? FATAL MAGNETIC TAPE ERROR. $PTR DRIVER NOT LOADED - SYSGEN ERROR. FATAL MCA TRANSMITTER ERROR CHECKSUM ERROR IN SYSTEM OVERLAY FILE. '`%+),A)PI#9+X +[; )  Q) I !  ! A,ivtftdtbArEtt[[ ! )n q)l 3 P !8 !J1I)T I0 Q!D)B)M B0 :#@8 C`8 )C%E# E$ #&@+#5A!? #'b#(`#"3!ҐQ43$;%`0-1J: #@!+ # b#`*:CJ%-5 Y "Cs\v3 * ) p`!) Y`[/! c! 5 ]!KY[1% %Y")"t}!g~`g~t}g~ig~J1dg~`g~t*g~j>)[2\g%%Ԃ *3 & Z#"C SP)OK8+#C0J1rKP t8#+39jk# 5CZ5 2  :`B`Z:]BZ[#3 PK # <1C!C38S91-[_BY 9)+[  K8 CH 8 v- + H3P 3 P k@`_[uY8 3 * H  0-8 @ C B )"KZ #B- -JP5*  :  + :) PZ2* 1\vvZ^A^\)U\P0J29Dҝ9EK * >?@0<+J2JL"0 dJc!'+ 8#8 ;X8K3S"_\ 02 - 0E ! !1   kj[$abv_i_!v)] )02 9"B8C ^I r 18+ 51 8+5  *KdOd_ww_y V T R P N #J"8S_]_^ B   [)983<# P8 + ""J <+)$ 83 "8#2:+ !8K+K4*KZ*^ @83Z*! "@ 02 )OQKQJQF<+ K`E%<'&+Y9Y954"Y2Q22J1-<!*K "ZC "B"B KM5  ZC] `5]S]sC_!t`8 ; 5m)m rS pS(KF5S)Q ooPBB #B8 Z #B4")^ *1Z1m <0 2 9iJ8 3*P8KKS)6812*32 2X 8KKBҝS1!#8 `+ C K^`0Z<91*  Pvvt_3_i11@ (?^ 6 4 8 B # # S S "P " %)ƍ# B * H ^ 38S 8 k;8 C c38 S vv  Y9 `10  :`Y+-*8(`   \  S ` X`9 Z`Q  8ojaj} YI=P ))Q2 :91*KZ94 8#Z="B02 "B08 C 8 C3*JE @ 1" 2"  "\x`9ZQ8 uo^[8 # 4 BJ;+$]TK$Z 2J1e2 *  S8#C"* 6# T8 1, 8;+$ J2 $*% %  0"1" !2  2 "1  * 0C$tvZ8 P C#B[ :B@ \MY :  `=U`Z[#t^3333ܵ]K]K]K3"ݠ3]Q]Q]Q]Q]?hUknnn33ݒ]Q]Q]?h\ԙdd ȇ";>gefui;'q,xy鐇i _Sdejk75_Z ?փbq&Q```y`y`````a ``\ #f\ '\ #S +K)(K0 A" : i2 K+;+!91 K!C0 2;+Q!)Nuaa\ '+4 @@1h K)K#+3 !)@Pv\ #P \ 'Pht\ 'S A 0  2 +@15 !+!KC0 J H 8+ !1`K S) 1SK1S 2) K B#P#+3 ;Xujaj}ҝ%SBEP@ `) 3 1  ; X0 B 0 @ 2 # C  P텑3 PJ5'*K*K1# ; KZ ! ! J  + H    iviEgv\ 'S)!1S1*[ CS b bcbvP b+d$bmbcm 4@ b P*9, =* )9)1)9( #9&1&+ *2JC:) )@ZPU!)1B vtvuovu[ Q:; ;2a a)a*J  )X A!U U! T2 RѪSJ M)L9L%)I H)> F*5E )C )Ay? 9 )O1yKw1: 2!.\YA*9-9' B#9 PJ=+  mmmjmjlUmjccbc%C CC C=C+9B :2U=9%7 I 5%255)6  !4 -!25- )$), )+ 5#:C=$C! 22")B22") Jbbbmjtmjb\ bmsb "K!A!  )#5 c MMms d)dCmu@@ crd0c_'3C1/ G  O 3  !, !*S 5kzhk3 t3 "*C&+K.  BJ ")Bee!8+ P+3 JK +J8 3 + 3 =3 :?KK1K 3Z  *"J)&J 3'K/   d3K3BO3 3KG  O 3  eCf[hga3 3 *2ՐSe\ "*   + C- &d BJ: B J !S ;K K# + ;;@9 K C ") B kzagghk)K+" " J :#K 8;" + J " J :#K 8;"+ J kʭ\ " S" P*1 f `" A" > PC t3 sdPCK HS)*# J;;#8K*# J3J .3*"B J #+f K#  Af \ f  7f3"B "B " B"Bfhjhtt+ $# f \ " " "B "B" B" BB B f jjhta\ )w*!v "* :) *8s l!a y:+8P@ҀS*!SJ P3J`C h 3C S g= g=3"*3K D B2J g=3 d%3J;JB8j3 (3K )B# B!K ")J;#J  3  g= 3 I g= kzkhjhthk^gg3 3CK "C"C1 C "\ * S2* *K+39K  :+8KK ahaPҐ\ @C G CC1<2J?#;#* #*  #* #8* M8*")" ) ) * W#%T+SCɀwht^kv3 3" :#+SN K  5 .S 0   3") B  ")ӏ !)1 "J#B%B P` ivgviEjat \ +`" ! ` \ :J[Z#B#B#B#B!B%B BBB \:`Z \:K !$ "`"@B`=  P =  P  8\Z\ZZZZvj} \8CKS" BB*J JB0B B B BBB BB")Bk@!\8CKS+J+J+ J \ :;J "A2J#B 83:+BJ &.\   8; ;P+JJ+J J  ght!\ 160CC28J&#K#* " ")#  #   ":J" BB# #  wi!\ !9C`")  `)1  ) !'C &`") 22 *  +#BBB *22 J ` A^jja Y12J" ")  9 + ZH u\ :#+ 83@0@8S1VCK3")L )J  *":"C"C# :+'. *"83#3 83B!B"))B2`2 : 3 CB `   +'+'+mmn\ C"); 8)8 Q"C"*CK22!. $"J+*;8 #PC  322"*3CK#3B \8S0 J B`Z B E @  (8 K C E@ \xZZ\8CKS@5*: lPJ2 k@[[#!\  32``  !\  32`B ` !\  32`` `  )2XT2:N)2)1)-)))())))))))))))bbdd@b@fdfbaecaef@`@`cՏcd ԏ֏ӏX8; J XCKS8#+3;X \8CKSҋAI ) ) 8#+3Ґ'X)# @8X8QA1+C@81!\8CKSϲ+J\8CKSJ\8CKSA"+ 8!X8KS02 , 0 +3X 9 P@ @ 80X9Ɛ\P8 X8msl6lImu@ kk   JZ*!0J2* "*B"B)  ) *A ) ") tjj}vmj9 !@f?`1k? ]U161 1 5ak vsIsHD1K9 9Y9Y9  s`g0v*YGQE0Q?gC;s?9* ?Q&9 9$3 932 8]98; JXCK!!C! C C @C C  vtD( K 9"H ltI`LAIA!E `_9  9@3 *PJ2JS - 0KK K; 1#*:  ZJ 4!@!)19`- PAuostb\x- #!A% ( 5 %``E  PE [v[[% ME9, 1" *JQ!- ( 1 2 9 )ܪ -= -@@E9%Y :! Z9 ZYsKsJsEsA?`8!B#@+ l?H 5<) -5- )0I , ?0 2 B#B#B+J#B#BJ!-!!!  bB `B "B &B8 +UK# @#H#+3;`[Zv` -* 1(-(1' 0 B&-! bB'`B() tm`8#("b #vuouzu!`A7eI3Q3Y3#A2 -+*   f?!  Y!  gIbIYՑ! [ ҐҐҔ! / t\8u[ouo\5uu['['AnnBREAK.SVFBREAK.SVruouuvvvvwvBOOTSYSSVSYSDR FG INT MAPDR FG TERM $TTI$TTO$TTI1$TTO1COPYRIGHT(C)DGC,1972,1973,1974,1975,1977ALL RIGHTS RESERVEDY9  A I Q 5 !)181 3bckpbtjZp`ytl9dOd_tu(dou_SYS1MOL7ee C Q1O 1M  1K 1I# #+3 BdK  =!C18P@32# 23J!PB"#P),;J $d  c 3*1 ! p ecpmp\p@p7!CK*JJ0 2!U CC + 3*K *"!0)DJ ; B9PC""K *#P #  *K>*:!  :"* 0)J 88# + 3+K+K*"J"3 #+K komO !J"3J3 *9 J*:! Z:"* Z 8#+ 3 m1om(aC"@BCC 3"*! #C"*!  ""* !3 J0B 3 C#C ! !  kp+P"" C"""*#P!B" #)) ) + )ۂ )؍ #)Ս3# 3 pm1mOC??0 *K!2 ,# )" /S4"C 1"P C!  )31 #P !3B3+   fp7p'c : *cQK4" "C0 2):0 *K3 $# ܃+J' ֗ 2+9+ !&9&2Z83B8+1  3J 1 2  p' SC 7,!3#B;#B#B#B<+!$TB!!!JB  #*"8C ;KC!  ` o c nanc"02 28 ; )v:Jf 8 ,KD8; +2@K2Vc 8Zc*b*9S N8 ;3)OEP4* +1G  +1@ 1; <+!48SC*!/+$"9*:8K"3 3)"#J*!J 4B8    i=3)J   04*114*1~1|1x!S KpK + 24")s1r r d0 2S!i g#3 bS *  +8 M02 2 S 2*JBB B # B#B #B #B  %=CC-<1< 7%8C3 # 49S")c C "3 ^7 *@*1(  U +# mK M C 2"3B fplvvv >3  3# C "2SC7 S2 1#1 !39+ 1#  C  K+K#  lbpDc?!0B !0*1 1 "1 qxtxvo- 02PҝMcu")0 Q -9 ")$  8));)'J  ! 8<) ! "C2"J"C @JY:#b cc4%B8; +J4a?^<GPc02 *2J2 y-'1' '<CK%"C8 <#+399PPPPPP`MU` !vC# -3)  + &+ #)KS ;+3 !* !c.: p7p pp18; )#C c\ ) 4 *   : \ ) )1ٕ )1 )C) 1 zaZA90$ 3 }3 {+  A  mp\4 j+   eCC'/4 ;  :;J8BJ OC 0*1M T%K-I %JC*K *" " "K * !/p!6K8#+ FC8+ ,-! )0 " 9)=*L9#K 1 # mlbmSywy y%wwp'98# ** `8%+8   %*%+ )R1R # ))11 # 1E-ͦ3 f!;>!?<"E*= =1,::M1$9$ #3:;JP"*J8S4 BJ 1+ 1 !pl j;)O)L)H)GK J1F!C D02 S3# i.S2*3S"97  9. 9W;!U (@Z#8+B#;Z"+; J8H8;;;+@K  p7f8;+@K E#_02 "CC0 " 1C7KC ҐҐ+; _ fexPCS8S3#J+222 S!!K3@Ґ+  c3*@J ! 0B 3*@J e pDyxZmm'- $02 *0 * S S"1  !1 QBB3    8cnn٭P@KҐS+9B J zF :#+98CK")ܧ:+Z :# B*!eJ#8 7)BJ YGC "*235323 "),)))5`-#E`# ;;ZS)3 -B3 ~3+K'#@+  CK!`!0B 3 g3 *! J K fRSp'lb!T 3+ J+J C3" !A 傁232+ J+J+ JJ+92J J *32"3+PK#+;2 @@Ҁ  8; #"B !  m'm1xZxgMAPDR@ vvvpl<2*I*I:" *I;A%AA-1 %A4 )3 v4  !KC pC@ҐS9k)hP-j%h4 B J-d d d CS+# K%"+8 3B;#B!JB!DB 8#B # *J3"P8 + 23 .3!+S" !*102!& K3*#P0 * +3;   3  f@fffgymlbexmO#  ;#+  03;"C"CCC C PC@83 Ԋ p\  ʂ;#+ + C  m'"9 !J#8TP*#2 kBB!&9$ | L x*#2 ]!`:`Z! ~)$ P : +P 6 ) P 2  /n *#2B 2!`*`J 2B B ) `"B* `8qAef\ 0"1S 1NS22<  :. *X!`: 8;!!: `Z8`  0! !9 ! ȇ < 8 cppLOAD , STRIKE ANY KEY. f R OOKK \ PK8 ;) ` `C ` `+C "*  op\ )`:`Z 1 C3`"`B )`"`B 4B xPK"#C2)`"`J#C X+'C) +9\  oK m+# 9N )L9L9I Y\ V S + 7+++9$  8+й4 " =  :  7+#!1 0B #+K 1 81p az \ "#2) 9 `"`B   \ / 0  `* ! \=!Z -X *!S * O#8 ;)K  I`# G$!`B")? = :BKB#*3P /3 .!. ..`  *  &E 3  #KC2+  E?pyocejkpm'w{o:wzp\p\ C"#C28+ )s!)q29o b 9j*9g X@9b  B ZB+#K Y AЙ49)C )Aу !:  &@څ)4 ٫  !*   ! :)   ! \ #/   azPc  OC0" Oi 0*1C1@  ?39= 0*3    !1` 0!. /`:@5JQJ2 *  9A*K 9<2 152*  Q/9,*K hfXc"C8+# J0 8+ " K"  8#  f J H`Ya8+ 5*:  ;  9N 9L )HPJ2* 5 2* + <9;(  : + 0 : Qǂ  + %Y1; \+ * +1J11* Z K +J o.i wd2 S "BJ*2 S93 tJ/ $ !$ " j w C wK 3 3 3 s efp7p\@  Q2 UC #+ v3   62 OO2#J ##+  % !   8 032)`"`J  c1 ; X:;! 8\  K")CC lcmSC@Ґ:!= 0 R+J 3C)/ ( ,#;`+C@ `K C 8#)      3`*  L#    ) ! ! c 0\  K")CC lcoPCBBC" " "1PPP 8K3B!B#!ޖJ: +K )8K B `P  v {+J){ r)y mK2)f )h *!bJ: +!a82 }+  # O P3G L' # #KK Z E#  P > P M  K 7 IJ C 0#  : ) : '22 *!!J#K 32 ,3GB")!B @   Y8 +8!  4  @mS  Ic0Z1 P  cxT :.TUoppfp\m'fgffym! %l i$ )P%1` ! !قP !4 P1 $ )ѦP)1 ؁ K0 "5 ͂C "C "C #8C#+ 1CK3 9^)^P-%4 B J- M C")GB#+BJ4 B J- #  9 C"  5S&x3# + BJ# BR '1 3 4  ;C  3B!)+E 32 3  lbm1m(m1 K2S`"1$ 3B`3 ?J K1< ;# 83 0K") BC c32#! +#C1 32#! ) #!  IHf@ pK)"1 P@P1< PS )P! *8+z 12345679\\\\\8`:#@'="\\\\\0/STUVWXZ\\\\ Y\\,%_>?\\\\\-JKLMNOPR\\\Q\]$*);^\\}~stuvwxz\\\\\\\y\\\\\\\\\\\\\\\&ABCDEFGI\ \H\[.<(+!\\\ {abcdefgi\\\\\\\h\\\\\\\\\\\\\\|jklmnopr\\\\\\\q\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\PC @CS K%JB B -I1J H%E3B 3 B { F S B PC +# 4 B J+ 4 7!C)-*'B3!(C)!"  #1 3 L  #  #C vvvpl @S ; =SB B-3 33B B /PB l8P# $ '32 3;"CC" C CCC83#B#B~1|") !B !t H a"pym~cm'o` P3 33 1  wy1YB!B _oTogwz)O`5 P`K wy%C%CECC3* "C wyPykco::2#* '#*R#8JQ+ chK;#8 P" Z3` W:``3 P0w{y ")F8S3 E3#  ?K* * : : 14#B;; 83:  3 # 3#K83 CB8# 3"C"CJJjfppm1mO !*C))KC)"7  W Ґ"#BS#EE 1 ! BB!B _w{y yxx x' ")[W ?wy`* ="):J 38"*C"CBB`83:  s oK"* L 3BBB3"*  3 \3 Z` wy qogoTqAo:VQK )' ") @B  <2 C3+ 7R B)110# 3# )%QJJ !( !JJ3"3B#+ S:1 1 11 )*%mDR.8 ;1Dƒ!@PPI8 ;18ƒ02 "  %010`1, . ,  )<#8 + $"  # 112^ ֠S  G xT yopcfm1x0 2<+02 J#B' 2 3PK8+9 93+ <#;!<#38 8 wwp'B!6B 5K!3* J / /#")-" 83!#* ;;"C "C *K"C"C "C8  83 QlcnanmSKJ J JJ J" *BJ":+8CK tB!q q q+1p p3 p  l)j3 gC 1c; JҐ `3 J`C3 \ C+# P VUC K3;8; JBJ83 A4 B J+ x 8K!6 63#+ # AyB"Ax* 2"Ay%^AqAq-]1] #%YAk4 ![+1V L3B # ># +4 BJ3 B lcp7m'plm1l$")8 * ")1 !4"+ -#  (# $ !K! !!! ! 0B   0 .DRf mm'")wK)s* 0 2B J+ o!o 삁 S" r#)a d0 *K 1{ Z3 Y" B ")QB4 + OB!B"!gB#B"!*G eI!C" 3CS" *"C)N !")*+ )(1E G)D D")* ?,B J+ +# ` 53))3 3 p'mOm~xZ3     !0B 3 K C ` # + .xgpDkccop\8+P5,U*5*U(`!*!'1%PJ)II!2  * *9K):9K 1 Q 2 c`uf9) C0: CC C C2! Q+2C2+C%'E%+ C19 Y*J =2  = ! B `  v xu_w49")  3J)K8 ` c?yfQCK5A 4"0 * {" tS !2C q iC3 *K"!#C 2"1AKC>  0 2*K !2! ! DZDKDPDS0SVyp\F!$! !$!!$ 1!@1 1ܴ 02 "-u d1jZ5h  Z5e 32  qMmO cf5W- *JJ* :+8K Q C12 5 <*!7-: 0B ܄" )010"  + +2K#)+)  " 02 Q 02  G :3!9C w{y wyey ycynanm'xZfexTOL! #  3   'K K2 2S`"! B`  S +JCC*J B&`  Tcocv )+3 L G32":B  @*: ZB 4>C"**).3K J3"ҏ # C"'&S 3# BJ*J:+J*83 "m1lbo:m'&)83`S328+ B#"3 ;3+J": ZB8;# CK# C3*K "*3"3 +1* *32 2: 281!32R3CK;; ;# C  Z  p} ccv0B0 *2!?1? =KT !8C!33 5 97"* BJ . "* *39*:;KKBJ  8; #B#B#B#B#B#B#B# B  pli>lbm1m'c" R" I"9YPPP A838#֠; #2`C29G!B6  JZ# ,`SBBB$BB!B BB!ŪK9 P9`)PJJ)`JJBBZZG)! !  @ < 00 @c:`#d-"2 -"$K B` /"2 :K1"  8;J8; #2PC2`8  "B!BoF!P!LPKC`* C"8C# 6 "C  # - "C8B S;+ C#)&A8;#  m83 : !C#C: #CPE `8 cF``cQS32 93BJB# 8 #+"),'8;Z "#+!܏PPPJ8# B D8 2S`* * #B` 11C#B 8 Y.83" B`J)*K+ 2"3 83: ##Z!B#" 83 8# 3*"#[3 ooo @@ F@@I L@AO R@ U X[@^ a@ d!g@Bj)m@Cp)s@*v+y/|@.-BOOTSYS.OL$TTI$TTO$TTR$TTP$PTR$PTP$LPT$CDR$PLT$DPI$DPO$TTI1$TTO1$TTR1$TTP1$PTR1$PTP1$LPT1$CDR1$PLT1# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED pf:o p0Bf?w8e# 06-7M8* * )516Q15Q12Q# # @#@!+ #PPAC# `81 Q1Qj@gqjkjnl@g@n@+PPK1QJ1Q1Q1- +1*1Q1ܖQJ+1֖Q)1זQ1ҖQ1+1ǖQ1QJC*K)0* K5))T SS* . '2   *  S2* # #  ;*K 0;`8 `;*K 32#:+ 8#*!PJ \32 *# #* o.cu_cw{32  2  " C " ;C ;`3  @Ґ 2 ` H *#J"  K"CZC*02" B @Z "3S"C 02*  J "*JSۭKK K "֠BJ:;! :# I:#4"*PC 3B"J!8  9 pm J:+8! *"K*!2#P09Ɛ83<CK :C")B! `  "  w{o:ocd 4)[ H)Y I !8"1783!1C)3"9,:)'PPP)"#PPPP83J:;)B 8;+ SB 8 0  0) ) ) A)<C &e2 <# # 8;3#J#+  ' ' #  !   ;CC!C";#      4cf  p\C@9/:C K # (.:#+ D:;) 8CK!+J!C    vvee cf@pmm(mOp7m'mlcm~k2S" *9@p8BJ#+1 3 !JKKPB ٲJ! )J)J;+J DžC3" 22"C"*91 K CC 3" *BJ3 J! # + #+ KC 3+ +!   \ K )K+!"B  PK* #:;J JJZ KS 1 S")' +# $m CK"* )C3;+;ZJ1 3 3*3+ J pfp'm1mSS1j#* #* ;#*  #* X   82K32 2S`" !V NB`#+: 21@1D >3JC"B" B 4 C+1+ +3* B3 3B ! )" B!  yn@!0B pl opmlbm'o:K4"0 * b `tS*Jm" E8+K KK%GK 8" \8; # %>C 8")7 H+B+ 7B"),B!% (  $3 !! 3"B"B J:+8K  ep7exZy?fym'cy p[8;  :  8 .*  6 CC58;" J"+ 3"+  "+ -е  (2" 83+ 8; * J8+ -  ' "   '  :8; #% 8 02 *4#24BC8  c+: K8;@Z8+8; \9+! K8+"*BJ w,4*8K A0: C2"B,#+944 B J5) (02 ")B0 2 T - k02 JMMM L: +K  y`yfxmy3 3 8; C cmS  f8 @ 1 1;  11P1-Ґ@@PҀ!K!A\ 1 1 1     \   m'm(nanymlbcTUx 5 1E)S2 32 3JJJ*K*K*K ΀ #+4 BJ - ;# #)Ѝ #    ]%X:3 I`:  :KZ` c: ;Q~:KC M8+9818 ; j32S#db`q #C1k@1hCCeUS1`P1#CKC3 "$K C G ` D'` AW8 :;C1@ 11:#1 <02 S0ST1% AZU)BBJ!*K(:":"  Z#K)9ξ+  E `8 c?[`  `:#) !B ZBJ""  `   `  B 4"0 * R O 2S* K)H"K4"0 * ? < # 4# )5;4 BZ /0 2Z! + CC' 0 2! ! 3*3;ZJJ8+J  3  fmkm'namSc# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED pf:o p0Bf?w8e# ;8* * )+1;Q16Q1+J@+K1"1)Q)1 Q1Q)1Q1Q1Qxqjjkll@nn@g@# # @#@!+ SYS2MOL7pll!C Q1O 1M  1K 1I# #+3 BdK  =!C18P@32# 23J!PB"#P),;J $d  c 3*1 ! kK a6^kkkV@kz!CK*JJ0 2!U CC + 3*K *"!0)DJ ; B9PC""K *#P #  *K>*:!  :"* 0)J 88# + 3+K+K*"J"3 #+K fk(h !J"3J3 *9 J*:! Z:"* Z 8#+ 3 htk(hk\C"@BCC 3"*! #C"*!  ""* !3 J0B 3 C#C ! !  fkK+P"" C"""*#P!B" #)) ) + )ۂ )؍ #)Ս3# 3 kVhthC??0 *K!2 ,# )" /S4"C 1"P C!  )31 #P !3B3+   abkzkj^ : *^QK4" "C0 2):0 *K3 $# ܃+J' ֗ 2+9+ !&9&2Z83B8+1  3J 1 2  kj SC 7,!3#B;#B#B#B<+!$TB!!!JB  #*"8C ;KC!  ` ja ^ iiD^"02 28 ; )v:Jf 8 ,KD8; +2@K2V^ 8Zc*b*9S N8 ;3)OEP4* +1G  +1@ 1; <+!48SC*!/+$"9*:8K"3 3)"#J*!J 4B8    d3)J   04*114*1~1|1x!S KpK + 24")s1r r d0 2S!i g#3 bS *  +8 M02 2 S 2*JBB B # B#B #B #B  %=CC-<1< 7%8C3 # 49S")c C "3 ^7 *@*1(  U +# mK M C 2"3B b kthtftdtt 4 BJ DC7!> >3  3# C "2SC7 S2 1#1 !39+ 1#  C  K+K#  gk^?!0B !0*1 1 "1 qvXvZk(- 02PҝMcs")0 Q -9 ")$  8));)'J  ! 8<) ! "C2"J"C @JY:#] c^4%B8; +J4a?^<GPc02 *2J2 v-'1' '<CK%"C8 <#+399PPPPPP`MU` !tdC# -3)  + &+ #)KS ;+3 !* !^.: kzkK kKkV18; )#C ^\ ) 4 *   : \ ) )1ٕ )1 )C) 1 zaZA90$ 3 }3 {+  A  hk4 j+   eCC'/4 ;  :;J8BJ OC 0*1M T%K-I %JC*K *" " "K * !/p!6K8#+ FC8+ ,-! )0 " 9)=*L9#K 1 # hghvuzvv%uoukj98# ** `8%+8   %*%+ )R1R # ))11 # 1E-ͦ3 a\!;>!?<"E*= =1,::M1$9$ #3:;JP"*J8S4 BJ 1+ 1 !k j;)O)L)H)GK J1F!C D02 S3# i.S2*3S"97  9. 9W;!U (@Z#8+B#;Z"+; J8H8;;;+@K  kzb 8;+@K E#_02 "CC0 " 1C7KC ҐҐ+; _ aba6vPCS8S3#J+222 S!!K3@Ґ+  ^3*@J ! 0B 3*@J ` kvv>ihj- $02 *0 * S S"1  !1 QBB3    8^jjP@KҐS+9B J zF :#+98CK")ܧ:+Z :# B*!eJ#8 7)BJ YGC "*235323 "),)))5`-#E`# ;;ZS)3 -B3 ~3+K'#@+  CK!`!0B 3 g3 *! J K abRSkjg!T 3+ J+J C3" !A 傁232+ J+J+ JJ+92J J *32"3+PK#+;2 @@Ҁ  8; #"B !  hjhtv>vKMAPDR@ thtftdk<2*I*I:" *I;A%AA-1 %A4 )3 v4  !KC pC@ҐS9k)hP-j%h4 B J-d d d CS+# K%"+8 3B;#B!JB!DB 8#B # *J3"P8 + 23 .3!+S" !*102!& K3*#P0 * +3;   3  ab@aavhga6vh#  ;#+  03;"C"CCC C PC@83 Ԋ k  ʂ;#+ + C  hj"9 !J#8TP*#2 kBB!&9$ | L x*#2 ]!`:`Z! ~)$ P : +P 6 ) P 2  /n *#2B 2!`*`J 2B B ) `"B* `8ma6ab\ 0"1S 1NS22<  :. *X!`: 8;!!: `Z8`  0! !9 ! ȇ < 8 ^pkKLOAD , STRIKE ANY KEY. b R OOKK \ PK8 ;) ` `C ` `+C "*  jal\ )`:`Z 1 C3`"`B )`"`B 4B xPK"#C2)`"`J#C X+'C) +9\  oK m+# 9N )L9L9I Y\ V S + 7+++9$  8+й4 " =  :  7+#!1 0B #+K 1 81kV az \ "#2) 9 `"`B   \ / 0  `* ! \=!Z -X *!S * O#8 ;)K  I`# G$!`B")? = :BKB#*3P /3 .!. ..`  *  &E 3  #KC2+  E?lVvja^aef[kVhju_j}u^kkK\ C"#C28+ )s!)q29o b 9j*9g X@9b  B ZB+#K Y AЙ49)C )Aу !:  &@څ)4 ٫  !*   ! :)   ! \ #/   azP^  OC0" Oi 0*1C1@  ?39= 0*3    !1` 0!. /`:@5JQJ2 *  9A*K 9<2 152*  Q/9,*K cabX^"C8+# J0 8+ " K"  8#  a\ J H[#Ya8+ 5*:  ;  9N 9L )HPJ2* 5 2* + <9;(  : + 0 : Qǂ  + %Y1; \+ * +1J11* Z K +J jqdOt_2 S "BJ*2 S93 tJ/ $ !$ " j w C wK 3 3 3 s a6abkzk@  Q2 UC #+ v3   62 OO2#J ##+  % !   8 032)`"`J  ^1 ; X:;! 8\  K")CC ghC@Ґ:!= 0 R+J 3C)/ ( ,#;`+C@ `K C 8#)      3`*  L#    ) ! ! ^ 0\  K")CC gjaPCBBC" " "1PPP 8K3B!B#!ޖJ: +K )8K B `P  v {+J){ r)y mK2)f )h *!bJ: +!a82 }+  # O P3G L' # #KK Z E#  P > P M  K 7 IJ C 0#  : ) : '22 *!!J#K 32 ,3GB")!B @   Y8 +8!  4  @h  I^0Z1 P  ^v8 :.TUk(kKkVabkhjaavh! %l i$ )P%1` ! !قP !4 P1 $ )ѦP)1 ؁ K0 "5 ͂C "C "C #8C#+ 1CK3 9^)^P-%4 B J- M C")GB#+BJ4 B J- #  9 C"  5S&v3# + BJ# BR '1 3 4  ;C  3B!)+E 32 3  ghthkht K2S`"1$ 3B`3 ?J K1< ;# 83 0K") BC ^32#! +#C1 32#! ) #!  IHab@ kVK)"1 P@P1< PS )P! *8+z 12345679\\\\\8`:#@'="\\\\\0/STUVWXZ\\\\ Y\\,%_>?\\\\\-JKLMNOPR\\\Q\]$*);^\\}~stuvwxz\\\\\\\y\\\\\\\\\\\\\\\&ABCDEFGI\ \H\[.<(+!\\\ {abcdefgi\\\\\\\h\\\\\\\\\\\\\\|jklmnopr\\\\\\\q\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\PC @CS K%JB B -I1J H%E3B 3 B { F S B PC +# 4 B J+ 4 7!C)-*'B3!(C)!"  #1 3 L  #  #C thtftdk @S ; =SB B-3 33B B /PB l8P# $ '32 3;"CC" C CCC83#B#B~1|") !B !t H \5kVvh^hjja` P3 33 1  u]1YB!B Zjju^)O`5 P`K u]%C%CECC3* "C u]Pvf[^j}:2#* '#*R#8JQ+ chK;#8 P" Z3` W:``3 P0u_v")F8S3 E3#  ?K* * : : 14#B;; 83:  3 # 3#K83 CB8# 3"C"CJJeabkKlVhth !*C))KC)"7  W Ґ"#BS#EE 1 ! BB!B Zu_vvvv x' ")[W ?u]`* ="):J 38"*C"CBB`83:  s oK"* L 3BBB3"*  3 \3 Z` u] mujjmj}VQK )' ") @B  <2 C3+ 7R B)110# 3# )%QJJ !( !JJ3"3B#+ S:1 1 11 )*%hDR.8 ;1Dƒ!@PPI8 ;18ƒ02 "  %010`1, . ,  )<#8 + $"  # 112^ ֠S  G v8 vk(kV^abhtv0 2<+02 J#B' 2 3PK8+9 93+ <#;!<#38 8 uoukjB!6B 5K!3* J / /#")-" 83!#* ;;"C "C *K"C"C "C8  83 QgiiEhKJ J JJ J" *BJ":+8CK tB!q q q+1p p3 p  l)j3 gC 1c; JҐ `3 J`C3 \ C+# P VUC K3;8; JBJ83 A4 B J+ x 8K!6 63#+ # AyB"Ax* 2"Ay%^AqAq-]1] #%YAk4 ![+1V L3B # ># +4 BJ3 B gkzhjkhtgab& 5 KK)# JK# J?3 3' 4 "G B! 3 3*"  kjithtftd$")8 * ")1 !4"+ -#  (# $ !K! !!! ! 0B   0 .DRab ihj")wK)s* 0 2B J+ o!o 삁 S" r#)a d0 *K 1{ Z3 Y" B ")QB4 + OB!B"!gB#B"!*G eI!C" 3CS" *"C)N !")*+ )(1E G)D D")* ?,B J+ +# ` 53))3 3 kjhhv>3     !0B 3 K C ` # + .vKkf^^jak8+P5,U*5*U(`!*!'1%PJ)II!2  * *9K):9K 1 Q 2 ^[sb9) C0: CC C C2! Q+2C2+C%'E%+ C19 Y*J =2  = ! B `  svsCuz49")  3J)K8 ` ^?va\QCK5A 4"0 * {" tS !2C q iC3 *K"!#C 2"1AKC>  0 2*K !2! ! DZDKDPDS0SVvkF!$! !$!!$ 1!@1 1ܴ 02 "-u d1jZ5h  Z5e 32  qMh ^ab5W- *JJ* :+8K Q C12 5 <*!7-: 0B ܄" )010"  + +2K#)+)  " 02 Q 02  G :3!9C u_vuova6vv^wiiEhjv>a\`v8OL! #  3   'K K2 2S`"! B`  S +JCC*J B&`  T^ja^t )+3 L G32":B  @*: ZB 4>C"**).3K J3"ҏ # C"'&S 3# BJ*J:+J*83 "htgj}hj&)83`S328+ B#"3 ;3+J": ZB8;# CK# C3*K "*3"3 +1* *32 2: 281!32R3CK;; ;# C  Z  k ^^t0B0 *2!?1? =KT !8C!33 5 97"* BJ . "* *39*:;KKBJ  8; #B#B#B#B#B#B#B# B  kdghthjc" R" I"9YPPP A838#֠; #2`C29G!B6  JZ# ,`SBBB$BB!B BB!ŪK9 P9`)PJJ)`JJBBZZG)! !  @ < 00 @^:`#d-"2 -"$K B` /"2 :K1"  8;J8; #2PC2`8  "B!BjaF!P!LPKC`* C"8C# 6 "C  # - "C8B S;+ C#)&A8;#  m83 : !C#C: #CPE `8 ^F`[^QS32 93BJB# 8 #+"),'8;Z "#+!܏PPPJ8# B D8 2S`* * #B` 11C#B 8 Y.83" B`J)*K+ 2"3 83: ##Z!B#" 83 8# 3*"#[3 jjj @@ F@@I L@AO R@ U X[@^ a@ d!g@Bj)m@Cp)s@*v+y/|@.-BOOTSYS.OL$TTI$TTO$TTR$TTP$PTR$PTP$LPT$CDR$PLT$DPI$DPO$TTI1$TTO1$TTR1$TTP1$PTR1$PTP1$LPT1$CDR1$PLT1# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED kKab:k( kV0Bf?u8e# 06-7M8* * )516Q15Q12Q# # @#@!+ #PPAC# `81 Q1Qj@gqjkjnl@g@n@+PPK1QJ1Q1Q1- +1*1Q1ܖQJ+1֖Q)1זQ1ҖQ1+1ǖQ1QJC*K)0* K5))T SS* . '2   *  S2* # #  ;*K 0;`8 [#;*K 32#:+ 8#*!PJ \32 *# #* jq^sC^u_32  2  " C " ;C ;`3  @Ґ 2 ` H *#J"  K"CZC*02" B @Z "3S"C 02*  J "*JSۭKK K "֠BJ:;! :# I:#4"*PC 3B"J!8  9 k J:+8! *"K*!2#P09Ɛ83<CK :C")B! `  "  u_j}ja^d 4)[ H)Y I !8"1783!1C)3"9,:)'PPP)"#PPPP83J:;)B 8;+ SB 8 0  0) ) ) A)<C &e2 <# # 8;3#J#+  ' ' #  !   ;CC!C";#      4^ab  kC@9/:C K # (.:#+ D:;) 8CK!+J!C    tta6` ^ab@khkhkzhjighf[2S" *9@p8BJ#+1 3 !JKKPB ٲJ! )J)J;+J DžC3" 22"C"*91 K CC 3" *BJ3 J! # + #+ KC 3+ +!   \ K )K+!"B  PK* #:;J JJZ KS 1 S")' +# $m CK"* )C3;+;ZJ1 3 3*3+ J kabkjhthS1j#* #* ;#*  #* X   82K32 2S`" !V NB`#+: 21@1D >3JC"B" B 4 C+1+ +3* B3 3B ! )" B!  wiE@!0B k jakghjj}K4"0 * b `tS*Jm" E8+K KK%GK 8" \8; # %>C 8")7 H+B+ 7B"),B!% (  $3 !! 3"B"B J:+8K  `kza6v>v?abvhj^vk8;  :  8 .*  6 CC58;" J"+ 3"+  "+ -е  (2" 83+ 8; * J8+ -  ' "   '  :8; #% 8 02 *4#24BC8  ^+: K8;@Z8+8; \9+! K8+"*BJ uo,4*8K A0: C2"B,#+944 B J5) (02 ")B0 2 T - k02 JMMM L: +K  v[vabvQv3 3 8; C ^h  ab8 @ 1 1;  11P1-Ґ@@PҀ!K!A\ 1 1 1     \   hjhkiiEvhg^TUv 5 1E)S2 32 3JJJ*K*K*K ΀ #+4 BJ - ;# #)Ѝ #    ]%X:3 I`:  :KZ` ^: ;Q~:KC M8+9818 ; j32S#db`q #C1k@1hCCeUS1`P1#CKC3 "$K C G ` D'` AW8 :;C1@ 11:#1 <02 S0ST1% AZU)BBJ!*K(:":"  Z#Ku)9ξ+  E `8 ^?`  `:#) !B ZBJ""  `   `  B 4"0 * R O 2S* K)H"K4"0 * ? < # 4# )5;4 BZ /0 2Z! + CC' 0 2! ! 3*3;ZJJ8+J  3  abhfhjih^# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED kKab:k( kV0Bf?u8e# ;8* * )+1;Q16Q1+J@+K1"1)Q)1 Q1Q)1Q1Q1Qxqjjkll@nn@g@# # @#@!+ SYS2LSV zff PUTT  f NOVA RDOS REV 6.32 ``DV8y Iy*%d8)TV d*WX~ )&1&9&"C @5 >!r "i?!   @)  P >!  O V^*( Q,-.?!.@0 Q? *0.)$)  -(, " Q,-.?!@0 Q0?  .(-0, "-Dl:/\ K!$@+0(@/@,@-@. 4  O DL// ?1  00  09  H1 Q@1? L+ L (5  >0)9!F )3!CA? Q?  O!8  O 9!3  O > 6@)P3  O!#)!9E99!P C08 trx ~'jn1 O\ K029+  #@*PH<)U  O 4P H ?1 A t 0@- +U!%  O!" + OAAA@1 =@+ 0 L G NI101 G NI!m I1 O G NI 4 I 4)" @ I(-h(4 !G "c`(7! H@1[0Y = Q?-Q: G NH. G OH/ 4(. H -@ @,",1m / O +T,01!)99Ҕ % ""!Ҕ  "# )Ҕ ! "$  F N 4(.  O) O P- G N #2 G NH. 4 I(2H, . 41 M Q4.N,?2 = *1! O\ K7P3 ? O LY  ! @8(08C\ K*!K L\ K! ړ3C L\ K" S L\ K!@)_4 L3 @@\ K7 9ŠA# 1!P)?4 L3 @SY 8)+Z)*3 @Z#'d \ KQ(Q( ?1I  ?9 1  1 Q +-08C)! K L\PPP8 \ K7 1 Z L 1 L\8(CSҐ *? ?CS L\ K7P3 J L JK L\ K L J O @ L\ K J O @C L\ K<! ?K L ;A (: H< 7 O LY 8CKS1X3810X#+3\ KAQ ?! ? L! L+H3A8I8Q8Y8A3I3Q3Y3\ KI*9-#)%#A)) 3A#0("A1") A:#PI9#A Q&?  L    (N[j w & ?;@E-O] ILLEGAL FILE NAME ^T NOT A SAVE FILE: FILE ^T  END OF FILE: FILE ^T FILE ALREADY EXISTS: FILE ^T FILE DOES NOT EXIST: FILE ^T  PARITY ERROR: FILE ^T  NOT ENOUGH MEMORY AVAILABLE^A  OUT OF SPACE: FILE ^T  FILE READ ERROR: FILE ^T UNIT INPROPERLY SELECTED: ^T ILLEGAL STARTING ADDRESS: FILE ^T DEVICE NOT IN SYSTEM: DEVICE ^T INSUFFICENT CONTIGUOUS BLOCKS: FILE ^T  CHECKSUM ERROR: FILE ^T ILLEGAL BLOCK TYPE: ^O  SYS.DR ERROR^A  SYS.DR ERROR^A UNKNOWN DEVICE CODE ^O  UNKNOWN ERROR CODE ^O LOAD CT0, STRIKE ANY KEY ILLEGAL DATE ^D/^D/^D DATE (M/D/Y) ? ILLEGAL TIME ^D:^D:^D TIME (H:M:S) ? ILLEGAL CHARACTER ^A CLI.SVRESTART.SVMT0CT0CT0:0MT0:1$PTRMCAR:00MCA1R:00$TTRERROR BLOCK - OUTPUT FILE VACANT YOU LOADED ^T TAPE# ^D I WANT ^T TAPE# ^D..... TRY AGAIN \ K1T'Q* ?01 1= ? A1 @^  C  B  A)} ? @!  @\87*1 @! ? L 89(8 WD!A(W7T*O% OH$TTI(M f5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H` (  E5M5 )4An%11 1f?1/ - p )) )'   1"  ` ) U1 nQH `1 ( fd5d6W/[pVFPV1XFW"WY.Q,1+ A+ 5!*  !( !& !$ Q & 0) !)ܥ A!!))QU\DKDSDZDP 07Y ) 2ga)bIgI) )jIgI eH !@E@X'== 1; B B B15C" @ @ 8)+K1*)*'  / B"J5!S)1 32 1 f?xywWyy nW=[p3* U?9+ 1; 19 f?U6+J+J)1- -='5)#+BJ2BJ2 U -! %))1 )9![!C"BKycWWymXFU^xTy9!1!+  J B !B!B!* BJ 8! ;Kyv"^u!&9&C9%CE"E")" 9 )K)9# C1"B@"(BB1 f?wwyy xyxWm[p9a)aBBBBBZSZ9T!SԑR* 9K;!)BbIgC9;'  ;!;)3bigC`H!1bIg)%g9(+!K9;' `h!bi))g+! K4!@ d yddW FULL(F) OR PARTIAL(P OR )? WITH OVERLAYS ("1") OR WITHOUT ("0" OR ) ? INITIALIZING WHAT DISK? BOOTING TO WHAT DISK? OVERLAY FILE NOT FOUND MASTER DEVICE DRIVER NOT LOADED - SYSGEN ERROR. NO SPARE DCB AVAILABLE - SYSGEN ERROR. INSUFFICIENT MEMORY FOR OPERATING SYSTEM - SYSGEN ERROR. u`tmrampvvyj2l0k5B!B K!* J y|3):8o3!*r=;"C "C *K"C"C \"C)tS o5l:#+98CK")f:+[H:# B)\BJ K 583"*23- 3(3")C")@)>5>`-<E8`#=*;ZS)03 B3 +1 1 111 11 j2kl0YYm[pYYYYYxykk"llw@59S #B!B:+#1| |!z(1 'EtEuEt ! 4 9#+9bB J- ] S 3" i")Re P!a bL`@ d?=T `_ 5P P`(5:#8C9@Ҁ#+ 74 9#+9'B J8CK-  -.CC'( > .'!C'/ 3 YkNn<@ZJZd6d5c[pYj1cX.yybHY#kX41 !C#+ \!C)4 VGOBJ ے!E E B4  ђ!; ; 83 3Y\ 1S4 BJ CC!(CK'O/  #3    4  Ojn\ 1   [pY` WARNING: MASTER DEVICE MAP.DR IS ERRONEOUS. INCOMPATIBLE DISK FORMAT !! NOT ENOUGH SPACE FOR OVERLAYS IN BOOTSYS.OL. MASTER DEVICE NOT A TOP LOADER NOT ENOUGH ROOM IN BAD BLOCK TABLE DISK UNIT NOT READY DISK FORMAT ERROR DISK STATUS ERROR ILLEGAL MASTER DEVICE raw{]ale9; C19+ J+JU#Ed1 `1U8 CC5 B `]|ybH\ !*E*!Z)ZAaAa`1\ W ")#1 1 P9I +  +M;Y ` `\/Z\Ut 1\ gR\ 1, (ga!))-PA*  Z\ -Ik1\ 5 Qc1 !`AmAga W y[Dxx[p\\] ]]?1 \ !)PIPIL! %P #) !!0A1  1 f?]Ue\  ) Id?@ \ 90Y9 Y9Y bl@g\ !`A `1` `E o'\ !6C` 1)2I1).I1PQ)'I)%I)I`C `)I1) I) I vtr@qg@1 Nf?]/Z \ 9 39L#C@95  ZZjZZQZZVZZdZZ'ZZjl0ky\ JJJ=+J+J    Y ! Q*gIjI YOU LOADED TAPE# ; I WANT - TRY AGAIN [[[[\[[\ " )§C \ CK# #     \ )A1 0[[([p\ P у  )2 57  53Q! ')&I ) ;)81 1 1 ! 1 1 1 ! 1 d= ` `ZL\) ! ))  !aPA`C)_A^CPA!ZP g1M9N c9 9J 9 9 9@ 8#)> @9J(%AzR %; z\ %8%6!7I` 50@ d?`!-0H \ 5`B B ")B* ` z\Zo[J[G[P[S[MZm[() )K)K#1KS K  +"K1#  + +# \ 5) I;PS [[\:1 09f? \Z ]e[p LOAD $PTR, STRIKE ANY KEY. LOAD $TTR, STRIKE ANY KEY. LOAD CT0, STRIKE ANY KEY. TYPE ("0") FOR $TTR ("1") FOR $PTR ? FATAL MAGNETIC TAPE ERROR. $PTR DRIVER NOT LOADED - SYSGEN ERROR. FATAL MCA TRANSMITTER ERROR CHECKSUM ERROR IN SYSTEM OVERLAY FILE. '`%+),A)PI#9+X +[; )  Q) I !  ! A,ly vvv~ArEtv^L^> ! )n q)l 3 P !8 !J1I)T I0 Q!D)B)M B0 :#@8 C`8 )C%E# E$ #&@+#5A!? #'b#(`#"3!ҐQ43$;%`0-1J: #@!+ # b#`*:CJ%-5 Y "Cu_x3 * ) p`!) Y`]! c! 5 ]!KY]1% %Y")"t}!g~`g~t}g~ig~J1dg~`g~t*g~j>)]^%%Ԃ *3 & Z#"C SP)OK8+#C0J1rKP t8#+39jk# 5C]5 2  :`B`Z:]B]]3 PK # <1C!C38S91-^uaY 9)+[  K8 CH 8 x- + H3P 3 P mca^wY8 3 * H  0-8 @ C B )"KZ #B- -JP5*  :  + :) PZ2* 1_Lyy]|`aD_A)U_DP0J29Dҝ9EK * >?@0<+J2JL"0 dJc!'+ 8#8 ;X8K3S"_\ 02 - 0E ! !1   m]cyaay)_ )02 9"B8C ` r 18+ 51 8+5  *Kffyyb V T R P N #J"8Saa B   ^)983<# P8 + ""J <+)$ 83 "8#2:+ !8K+K4*KZ*a* @83Z*! "@ 02 )OQKQJQF<+ K`E%<'&+Y9Y954"Y2Q22J1-<!*K "ZC "B"B KM5  ZC] `5]S]u_at`8 ; 5m)m rS pS(KF5S)Q ooPBB #B8 Z #B4")^ *1Z1m <0 2 9iJ8 3*P8KKS)6812*32 2X 8KKBҝS1!#8 `+ C Ka|b]|<91*  Pxy vbV3a11@ (?aD 6 4 8 B # # S S "P " %)ƍ# B * H `38S 8 k;8 C c38 S xx  Y9 `10  :`Y+-*8(`   \  S ` X`9 Z`Q  8rqlm YI=P ))Q2 :91*KZ94 8#Z="B02 "B08 C 8 C3*JE @ 1" 2"  "_`9ZQ8 wa^&8 # 4 BJ;+$]TK$]| 2J1e2 *  S8#C"* 6# T8 1, 8;+$ J2 $*% %  0"1" !2  2 "1  * 0C$wyZ8 P C#B^ :B@ ^Y :  `=U`Z]va~߿߿߿߿A__ߐ_ߐPQߐ߿ߧ߮,߿_____߿߿___h_Aԙg g ȇ";>gefui;'q,xy鐇i aSdejk75aZ ?փbq&Qcc5cccJcec5c5czccece\ #f\ '\ #S +K)(K0 A" : i2 K+;+!91 K!C0 2;+Q!)NwdedR\ '+4 @@1h K)K#+3 !)@Px\ #P \ 'Pk\ 'S A 0  2 +@15 !+!KC0 J H 8+ !1`K S) 1SK1S 2) K B#P#+3 ;Xwlm ҝ%SBEP@ `) 3 1  ; X0 B 0 @ 2 # C  P텑3 PJ5'*K*K1# ; KZ ! ! J  + H    l0ykj2y\ 'S)!1S1*[ CS en e+fce,ɎP dfeoe+fopY L@ e P*9, =* )9)1)9( #9&1&+ *2JC:) )@ZPU!)1B yvywyw^ Q:; ;2a a)a*J  )X A!U U! T2 RѪSJ M)L9L%)I H)> F*5E )C )Ay? 9 )O1yKw1: 2!.\YA*9-9' B#9 PJ=+  opWoonoff#efV%C CC C=C+9B :2U=9%7 I 5%255)6  !4 -!25- )$), )+ 5#:C=$C! 22")B22") JeZeUejovoek\ eloz "K!A!  )#5 fW MMo ffp@*@ f͊ff{_'3C1/ G  O 3  !, !*S 5nj3 t3 "*C&+K.  BJ ")Bgg8+ P+3 JK +J8 3 + 3 =3 :?KK1K 3Z  *"J)&J 3'K/   d3K3BO3 3KG  O 3  ghkj2c3 3 *2ՐSg\ "*   + C- &d BJ: B J !S ;K K# + ;;@9 K C ") B ncj1j2j)K+" " J :#K 8;" + J " J :#K 8;"+ J nV\ " S" P*1 iJ `" A" > PC t3 sdPCK HS)*# J;;#8K*# J3J .3*"B J #+h K#  AiJ \ h  7iJ3"B "B " B"Bhjkvv+ $# iJ \ " " "B "B" B" BB B h m#m6kc\ )w*!v "* :) *8s l!a y:+8P@ҀS*!SJ P3J`C h 3C S i i3"*3K D B2J i3 d%3J;JB8mF3 (3K )B# B!K ")J;#J  3  i 3 I i nn;jkja8j1j23 3CK "C"C1 C "\ * S2* *K+39K  :+8KK ckaPҐ\ @C G CC1<2J?#;#* #*  #* #8* M8*")" ) ) * W#%T+SCɀyka8n^x3 3" :#+SN K  5 .S 0   3") B  ")ӏ !)1 "J#B%B P` l0y j:yklv \ +`" ! ` \ :J[Z#B#B#B#B!B%B BBB \:`Z \:K !$ "`"@B`=  P =  P  8\Z\ZZZZy m \8CKS" BB*J JB0B B B BBB BB")Bm!\8CKS+J+J+ J \ :;J "A2J#B 83:+BJ &.\   8; ;P+JJ+J J  j1k!\ 160CC28J&#K#* " ")#  #   ":J" BB# #  yl0!\ !9C`")  `)1  ) !'C &`") 22 *  +#BBB *22 J ` Aa8m`l Y12J" ")  9 + ZH w\ :#+ 83@0@8S1VCK3")L )J  *":"C"C# :+'. *"83#3 83B!B"))B2`2 : 3 CB `   +'+'+ptptp\ C"); 8)8 Q"C"*CK22!. $"J+*;8 #PC  322"*3CK#3B \8S0 J B`Z B E @  (8 K C E@ _]]|\8CKS@5*: lPJ2 m^]!\  32``  !\  32`B ` !\  32`` `  )2XT2:N)2)1)-)))())))))))))))bbdd@b@fdfbaecaef@`@`cՏcd ԏ֏ӏX8; J XCKS8#+3;X \8CKSҋAI ) ) 8#+3Ґ'X)# @8X8QA1+C@81!\8CKSϲ+J\8CKSJ\8CKSA"+ 8!X8KS02 , 0 +3X 9 P@ @ 80X9Ɛ\P8 X8onnp@ nqne   JZ*!0J2* "*B"B)  ) *A ) ") vm~m y pSm`9 !@f?`1k? ]U161 1 5ak yueudD1K9 9Y9Y9  u`g0xFYGQE0Q?gC;s?9* ?Q&9 9$3 932 8]98; JXCK!!C! C C @C C  xv`( K 9"H lve`LAIA!E `_9  9@3 *PJ2JS - 0KK K; 1#*:  ZJ 4!@!)19`- PAwv v~_- #!A% ( 5 %``E  PE ^&y ^ ^% ME9, 1" *JQ!- ( 1 2 9 )ܪ -= -@@E9%Y :! Z9 ZYugufuau]?`8!B#@+ l?H 5<) -5- )0I , ?0 2 B#B#B+J#B#BJ!-!!!  bB `B "B &B8 +UK# @#H#+3;`^]{x` -* 1(-(1' 0 B&-! bB'`B() v`8#("b #ywww!`A7eI3Q3Y3#A2 -+*   f?!  Y!  gIbIYՑ! [ ҐҐҔ! / v\8w^uraw^ww]]pqBREAK.SVFBREAK.SVtwwwxyyy yy BOOTSYSSVSYSDR FG INT MAPDR FG TERM $TTI$TTO$TTI1$TTO1COPYRIGHT(C)DGC,1972,1973,1974,1975,1977ALL RIGHTS RESERVEDY9  A I Q 5 !)181 3df{nerev]zrcvnffwwDfw{BEDITSV   )TT - XG l, v ; v%COPYRIGHT (C) DGC,1972,1973,1974 ALL RIGHTS RESERVEDEDIT REV 01.00 \8) ))az h  8 3S9X0 )    1q  9l 8KKCCCGCCCCCCCCCCC!G4 !E  PCCC)BKPCP  ):  C  !4 " )- ? S " )$ ? SSQ!"0 B 32! *3 *OFCOM.CMUY  (C#+ƥ)t 1#PC  k#)ePCC!] +!=G!0 B C 5)Y E)X 13 *3+P +1I   F!0 B D0Z""Ƃ2+J8PS!G (n#C)  ) +3 ))  ## +3 )*+  k#CCCC Z)c  U) )^ )\1XKK+PP;9K!QP8K :+K &)ˍ  ,)Ǎ  5)K/ (3 (# C7  ###C8S3 )1": -0I^@ >~~A VBCyD]E)F (G8H0IJxKTLMNPQRSTU5WEX=Y RZ:+=7.> # !- - -88   "C3 ) 1 *   "KYEHDRNSCZ?`H#  (1$` (#  (b3 (#  ("1` ( ( ( XK+  (+  (!` G+  /=3ۭ ? x  C ($#CRC))  p!n`)k` ()" k  + C 8S)  ($C[  R.SC0*8SCK):K)9KKC3 ))/ )) )) K3 *)K+ K3 S3 *#) K ($9.:8SCCPK3 )) !C3 )3 *3 *#C+ +  F+ߪ ? @3 ΅C3 C# %!`3 )? # 3 !`+ ] ' )`!`  CCCCC (41` (!` F)PC!`)a ) !`  ).BU %#C u3 *# 3 #C i3 * +K a3 *#+  3! *8S#+ 1#)-` ,+)&`K (P3 (9#C 53 *5# ? ? ) ? ? 8SCK!YC3 )1 C3 )1 +  8S3 )) 8C3 ) /C)+ ;)) 2+  (>) !) 8#3 ?#  3# # 03 4CCCCC OCRWI+ -3 "K(+% ( +3 CC!` " 9\ ?4\ ?4!` +ઃ#C 3)7 )?. ?K)4  (d҄)'  (')"  ($!CC3) )? ?)  (FC)  (8  3 (8C+#+ +C )K\Ґ"))88S3KPSK3 )+K u ) PK j 8S3    k 8S+38S3 8S3 ))* %# +#`1+ K+ 1 ( 1C (P? 8C#C#C 8D#CD8#D8C#P+)XL (#邊C )MC (#C!C ) ) )l  3 *  k3 *# )(5& ? ?1 (d#5 ?3P5 ? 3ҐB  918SC#C#C3 )) C3 ))3ǵ #C#C#C (8C'S C C3 ) +3 )+1 8S +C  p\Ґ:) Z88C#C   8C#C  #3SSC3 )3 *8C#C v#+эK  C  3 ))]8#8S#邐C+3 +3+1͠K+9P3S3KKʐ'G)#1/ 3 *3 ))Í 3 *#C3 )3 *#C (.#+3 SQ8CK##+ C #Ђ  8C#JPCȅC C  R8C#+C C #߂8C#@3ZPS3 ))P)L /+/)E 5#C#CK#+3KSCe S󂐍K'G#SG (#CCC3S ) +3+Ð?DM\8#+3+1 "P8C  C3 ) C)A # (0#PJ,+]+KC53 ) #3 ?#K3 )) 3 .?#ʂ # C 4 " WIK! O (3 ) +3 )) 8C#CKS#3+3 )1ו8#JS+UPP3)  )C˅  ! 3 ?  ( 98#8#S+ KK+8CCC 2 (N3 K#3 ?)K3 )3 )I   (N #+ʍ#߂3 * (K!$ !! !"  (!3 *!3 * (+Ϋ  ! ( k \8CS14# 19SC7 !01* K +3 !3 + ! 8K+  +3 * 'd 0 @+ 8C3 )1 *   (_ 5+ 8- ;O P! >? #C#+  3 )) )m !-#C!`C+ 3!^ *!`CCC C#C !18SC)I)D!?)' &): () K7S/K/7  KJ# *#+̦ %+!  !K+ !#) C!  $  \\8C! P3 3ڭP ? ~98SP3!2P ? #)1ԧ 1 !C1"  +#3)1 1)3 S! % +ը! K +@Z<  f?f?TEXT BUFFER FULL DURING INSERT TEXT BUFFER FULL WHILE READING COMMAND BUFFER FULL;EXECUTING COMMAND ??PARITY,LINE # STR NOT FOUND MACRO UNDEFINED OR ERROR IN MACROOUTPUT FILE IN USE NO OUTPUT FILENO INPUT FILEFILE NAME IN USE-ILLEGAL FILE NAME-NO SUCH FILE-FILE CAN'T BE USED FOR INPUTFILE CAN'T BE USED FOR OUTPUTLINE TOO LONGDISK FILE READ ERRORSAVE COMMAND BUFFER?(1-YES, 0-NO) ENTER FILENAME ILLEGAL ARGUMENT IN COMMAND LINE SYSTEM ERROR # : INPUT IN USE!-OUTPUT IN FILE -RENAMING ERROR,OUTPUT IN -FILE IS IN USE!-INPUT FILE- UNKNOWN ERROR EXECUTION ABORTED EDITING FILE OPENED BY UY OR UN - USE UE,US OR UC TO CLOSE! ILLEGAL WINDOW WIDTH PAGE MODE LINES WIDE WINDOW MODE  K ! )8#)/ +3 )!% 3## +C3 )Y83) ? w 8SC) ! #8) )W 3SPCC#3$ )  +C K## KK8+P#)*# !()3 ? %#!) ߂ C3!) ? # bChDn A9 X5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`SYS2LOL7ff C Q1O 1M  1K 1I# #+3 BdK  =!C18P@32# 23J!PB"#P),;J $d  c 3*1 ! m ca8n<n+m@n!CK*JJ0 2!U CC + 3*K *"!0)DJ ; B9PC""K *#P #  *K>*:!  :"* 0)J 88# + 3+K+K*"J"3 #+K iumk !J"3J3 *9 J*:! Z:"* Z 8#+ 3 kmj_EC"@BCC 3"*! #C"*!  ""* !3 J0B 3 C#C ! !  ium+P"" C"""*#P!B" #)) ) + )ۂ )؍ #)Ս3# 3 mkkC??0 *K!2 ,# )" /S4"C 1"P C!  )31 #P !3B3+   cnma* : *a8QK4" "C0 2):0 *K3 $# ܃+J' ֗ 2+9+ !&9&2Z83B8+1  3J 1 2  m SC 7,!3#B;#B#B#B<+!$TB!!!JB  #*"8C ;KC!  ` l aD l0kal"02 28 ; )v:Jf 8 ,KD8; +2@K2Va8 8Zc*b*9S N8 ;3)OEP4* +1G  +1@ 1; <+!48SC*!/+$"9*:8K"3 3)"#J*!J 4B8    g 3)J   04*114*1~1|1x!S KpK + 24")s1r r d0 2S!i g#3 bS *  +8 M02 2 S 2*JBB B # B#B #B #B  %=CC-<1< 7%8C3 # 49S")c C "3 ^7 *@*1(  U +# mK M C 2"3B dn;vvv >3  3# C "2SC7 S2 1#1 !39+ 1#  C  K+K#  j1na8?!0B !0*1 1 "1 qxtxvm- 02PҝMcu")0 Q -9 ")$  8));)'J  ! 8<) ! "C2"J"C @JY:#_ ca84%B8; +J4a?^<GPc02 *2J2 y-'1' '<CK%"C8 <#+399PPPPPP`MU` !vC# -3)  + &+ #)KS ;+3 !* !a*.: nm mm18; )#C a+\ ) 4 *   : \ ) )1ٕ )1 )C) 1 zaZA90$ 3 }3 {+  A  k~n+4 j+   eCC'/4 ;  :;J8BJ OC 0*1M T%K-I %JC*K *" " "K * !/p!6K8#+ FC8+ ,-! )0 " 9)=*L9#K 1 # kNj1k"ywy y%wwm98# ** `8%+8   %*%+ )R1R # ))11 # 1E-ͦ3 c!;>!?<"E*= =1,::M1$9$ #3:;JP"*J8S4 BJ 1+ 1 !n; j;)O)L)H)GK J1F!C D02 S3# i.S2*3S"97  9. 9W;!U (@Z#8+B#;Z"+; J8H8;;;+@K  nd8;+@K E#_02 "CC0 " 1C7KC ҐҐ+; _ ccxPCS8S3#J+222 S!!K3@Ґ+  a83*@J ! 0B 3*@J c nyxZkj- $02 *0 * S S"1  !1 QBB3    8a8llP@KҐS+9B J zF :#+98CK")ܧ:+Z :# B*!eJ#8 7)BJ YGC "*235323 "),)))5`-#E`# ;;ZS)3 -B3 ~3+K'#@+  CK!`!0B 3 g3 *! J K cRSmj1!T 3+ J+J C3" !A 傁232+ J+J+ JJ+92J J *32"3+PK#+;2 @@Ҁ  8; #"B !  jkxZxgMAPDR@ vvvn;<2*I*I:" *I;A%AA-1 %A4 )3 v4  !KC pC@ҐS9k)hP-j%h4 B J-d d d CS+# K%"+8 3B;#B!JB!DB 8#B # *J3"P8 + 23 .3!+S" !*102!& K3*#P0 * +3;   3  c@d5d6ykNj1cxk#  ;#+  03;"C"CCC C PC@83 Ԋ n+  ʂ;#+ + C  j"9 !J#8TP*#2 kBB!&9$ | L x*#2 ]!`:`Z! ~)$ P : +P 6 ) P 2  /n *#2B 2!`*`J 2B B ) `"B* `8occ\ 0"1S 1NS22<  :. *X!`: 8;!!: `Z8`  0! !9 ! ȇ < 8 a8pmLOAD , STRIKE ANY KEY. d R OOKK \ PK8 ;) ` `C ` `+C "*  lo'\ )`:`Z 1 C3`"`B )`"`B 4B xPK"#C2)`"`J#C X+'C) +9\  oK m+# 9N )L9L9I Y\ V S + 7+++9$  8+й4 " =  :  7+#!1 0B #+K 1 81m az \ "#2) 9 `"`B   \ / 0  `* ! \=!Z -X *!S * O#8 ;)K  I`# G$!`B")? = :BKB#*3P /3 .!. ..`  *  &E 3  #KC2+  E?nyla*chhmjw{m wzn+m\ C"#C28+ )s!)q29o b 9j*9g X@9b  B ZB+#K Y AЙ49)C )Aу !:  &@څ)4 ٫  !*   ! :)   ! \ #/   azPa8  OC0" Oi 0*1C1@  ?39= 0*3    !1` 0!. /`:@5JQJ2 *  9A*K 9<2 152*  Q/9,*K f{cXal"C8+# J0 8+ " K"  8#  c J H]Ya8+ 5*:  ;  9N 9L )HPJ2* 5 2* + <9;(  : + 0 : Qǂ  + %Y1; \+ * +1J11* Z K +J lfwbH2 S "BJ*2 S93 tJ/ $ !$ " j w C wK 3 3 3 s ccnn+@  Q2 UC #+ v3   62 OO2#J ##+  % !   8 032)`"`J  a81 ; X:;! 8\  K")CC j2k"C@Ґ:!= 0 R+J 3C)/ ( ,#;`+C@ `K C 8#)      3`*  L#    ) ! ! a8 0\  K")CC j2lPCBBC" " "1PPP 8K3B!B#!ޖJ: +K )8K B `P  v {+J){ r)y mK2)f )h *!bJ: +!a82 }+  # O P3G L' # #KK Z E#  P > P M  K 7 IJ C 0#  : ) : '22 *!!J#K 32 ,3GB")!B @   Y8 +8!  4  @k"  Ia80Z1 P  a8xT :.TUmmmcn+jd6d5ykN! %l i$ )P%1` ! !قP !4 P1 $ )ѦP)1 ؁ K0 "5 ͂C "C "C #8C#+ 1CK3 9^)^P-%4 B J- M C")GB#+BJ4 B J- #  9 C"  5S&x3# + BJ# BR '1 3 4  ;C  3B!)+E 32 3  j1kjk K2S`"1$ 3B`3 ?J K1< ;# 83 0K") BC a832#! +#C1 32#! ) #!  IHc@ mK)"1 P@P1< PS )P! *8+z 12345679\\\\\8`:#@'="\\\\\0/STUVWXZ\\\\ Y\\,%_>?\\\\\-JKLMNOPR\\\Q\]$*);^\\}~stuvwxz\\\\\\\y\\\\\\\\\\\\\\\&ABCDEFGI\ \H\[.<(+!\\\ {abcdefgi\\\\\\\h\\\\\\\\\\\\\\|jklmnopr\\\\\\\q\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\PC @CS K%JB B -I1J H%E3B 3 B { F S B PC +# 4 B J+ 4 7!C)-*'B3!(C)!"  #1 3 L  #  #C vvvn; @S ; =SB B-3 33B B /PB l8P# $ '32 3;"CC" C CCC83#B#B~1|") !B !t H ^mykMaDjl` P3 33 1  wy1YB!B ]m#m6wz)O`5 P`K wy%C%CECC3* "C wyPyhalm :2#* '#*R#8JQ+ chK;#8 P" Z3` W:``3 P0w{y ")F8S3 E3#  ?K* * : : 14#B;; 83:  3 # 3#K83 CB8# 3"C"CJJhcmnkk !*C))KC)"7  W Ґ"#BS#EE 1 ! BB!B ]w{y yxx x' ")[W ?wy`* ="):J 38"*C"CBB`83:  s oK"* L 3BBB3"*  3 \3 Z` wy pm6m#om VQK )' ") @B  <2 C3+ 7R B)110# 3# )%QJJ !( !JJ3"3B#+ S:1 1 11 )*%kNDR.8 ;1Dƒ!@PPI8 ;18ƒ02 "  %010`1, . ,  )<#8 + $"  # 112^ ֠S  G xT ymma8ckx0 2<+02 J#B' 2 3PK8+9 93+ <#;!<#38 8 wwmB!6B 5K!3* J / /#")-" 83!#* ;;"C "C *K"C"C "C8  83 Qj2l0kk"KJ J JJ J" *BJ":+8CK tB!q q q+1p p3 p  l)j3 gC 1c; JҐ `3 J`C3 \ C+# P VUC K3;8; JBJ83 A4 B J+ x 8K!6 63#+ # AyB"Ax* 2"Ay%^AqAq-]1] #%YAk4 ![+1V L3B # ># +4 BJ3 B j2njn;kj c& 5 KK)# JK# J?3 3' 4 "G B! 3 3*"  mkvvv$")8 * ")1 !4"+ -#  (# $ !K! !!! ! 0B   0 .DRc kj")wK)s* 0 2B J+ o!o 삁 S" r#)a d0 *K 1{ Z3 Y" B ")QB4 + OB!B"!gB#B"!*G eI!C" 3CS" *"C)N !")*+ )(1E G)D D")* ?,B J+ +# ` 53))3 3 mkkMxZ3     !0B 3 K C ` # + .xgniuaDalln+8+P5,U*5*U(`!*!'1%PJ)II!2  * *9K):9K 1 Q 2 al^'ud9) C0: CC C C2! Q+2C2+C%'E%+ C19 Y*J =2  = ! B `  v xu_w49")  3J)K8 ` a8?ycQCK5A 4"0 * {" tS !2C q iC3 *K"!#C 2"1AKC>  0 2*K !2! ! DZDKDPDS0SVyn+F!$! !$!!$ 1!@1 1ܴ 02 "-u d1jZ5h  Z5e 32  qMk a8c5W- *JJ* :+8K Q C12 5 <*!7-: 0B ܄" )010"  + +2K#)+)  " 02 Q 02  G :3!9C w{y wycy ya9yl0kjxZccxTOL! #  3   'K K2 2S`"! B`  S +JCC*J B&`  Ta8laDv )+3 L G32":B  @*: ZB 4>C"**).3K J3"ҏ # C"'&S 3# BJ*J:+J*83 "kj1m j&)83`S328+ B#"3 ;3+J": ZB8;# CK# C3*K "*3"3 +1* *32 2: 281!32R3CK;; ;# C  Z  nL ala9v0B0 *2!?1? =KT !8C!33 5 97"* BJ . "* *39*:;KKBJ  8; #B#B#B#B#B#B#B# B  n;g j1kjc" R" I"9YPPP A838#֠; #2`C29G!B6  JZ# ,`SBBB$BB!B BB!ŪK9 P9`)PJJ)`JJBBZZG)! !  @ < 00 @a8:`#d-"2 -"$K B` /"2 :K1"  8;J8; #2PC2`8  "B!BlF!P!LPKC`* C"8C# 6 "C  # - "C8B S;+ C#)&A8;#  m83 : !C#C: #CPE `8 a9F`^a*QS32 93BJB# 8 #+"),'8;Z "#+!܏PPPJ8# B D8 2S`* * #B` 11C#B 8 Y.83" B`J)*K+ 2"3 83: ##Z!B#" 83 8# 3*"#[3 mXmrml @@ F@@I L@AO R@ U X[@^ a@ d!g@Bj)m@Cp)s@*v+y/|@.-BOOTSYS.OL$TTI$TTO$TTR$TTP$PTR$PTP$LPT$CDR$PLT$DPI$DPO$TTI1$TTO1$TTR1$TTP1$PTR1$PTP1$LPT1$CDR1$PLT1# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED mc:m m0Bf?w8e# 06-7M8* * )516Q15Q12Q# # @#@!+ #PPAC# `81 Q1Qj@gqjkjnl@g@n@+PPK1QJ1Q1Q1- +1*1Q1ܖQJ+1֖Q)1זQ1ҖQ1+1ǖQ1QJC*K)0* K5))T SS* . '2   *  S2* # #  ;*K 0;`8 ];*K 32#:+  8#*!PJ \32 *# #* lalu_a*w{32  2  " C " ;C ;`3  @Ґ 2 ` H *#J"  K"CZC*02" B @Z "3S"C 02*  J "*JSۭKK K "֠BJ:;! :# I:#4"*PC 3B"J!8  9 n< J:+8! *"K*!2#P09Ɛ83<CK :C")B! `  "  w{m la8d 4)[ H)Y I !8"1783!1C)3"9,:)'PPP)"#PPPP83J:;)B 8;+ SB 8 0  0) ) ) A)<C &e2 <# # 8;3#J#+  ' ' #  !   ;CC!C";#      4a8c  n+C@9/:C K # (.:#+ D:;) 8CK!+J!C    vvcc a8c@n<jknjkj2kMh2S" *9@p8BJ#+1 3 !JKKPB ٲJ! )J)J;+J DžC3" 22"C"*91 K CC 3" *BJ3 J! # + #+ KC 3+ +!   \ K )K+!"B  PK* #:;J JJZ KS 1 S")' +# $m CK"* )C3;+;ZJ1 3 3*3+ J n^cmkk"S1j#* #* ;#*  #* X   82K32 2S`" !V NB`#+: 21@1D >3JC"B" B 4 C+1+ +3* B3 3B ! )" B!  yk@!0B n; lnC 8")7 H+B+ 7B"),B!% (  $3 !! 3"B"B J:+8K  cncxZy?cyja8y n*8;  :  8 .*  6 CC58;" J"+ 3"+  "+ -е  (2" 83+ 8; * J8+ -  ' "   '  :8; #% 8 02 *4#24BC8  a8+: K8;@Z8+8; \9+! K8+"*BJ w,4*8K A0: C2"B,#+944 B J5) (02 ")B0 2 T - k02 JMMM L: +K  y^&ycxmy3 3 8; C a+k"  c8 @ 1 1;  11P1-Ґ@@PҀ!K!A\ 1 1 1     \   jjl0kykNj1a8TUx 5 1E)S2 32 3JJJ*K*K*K ΀ #+4 BJ - ;# #)Ѝ #    ]%X:3 I`:  :KZ` a9: ;Q~:KC M8+9818 ; j32S#db`q #C1k@1hCCeUS1`P1#CKC3 "$K C G ` D'` AW8 :;C1@ 11:#1 <02 S0ST1% AZU)BBJ!*K(:":"  Z#K)9ξ+  E `8 a8?`  `:#) !B ZBJ""  `   `  B 4"0 * R O 2S* K)H"K4"0 * ? < # 4# )5;4 BZ /0 2Z! + CC' 0 2! ! 3*3;ZJJ8+J  3  ckNiujl0k"a*# 4"C C 5 311 )6PI4# 3 *!) )`)(< P  &bIgI!@!@!P MASTER DEVICE RELEASED mc:m m0Bf?w8e# ;8* * )+1;Q16Q1+J@+K1"1)Q)1 Q1Q)1Q1Q1Qxqjjkll@nn@g@# # @#@!+ SYSSVSYS2MSVFLOADSV Wjj 9'13JU:.d +6l"1*+(4(D $66  %COPYRIGHT (C) DGC 1977ALL RIGHTS RESERVED:UBQ2222^cgmP`p?@  0H: 3LJU}/5 c{g[($N " ")?%G68;X0C ,@- < =@> ? " + A(B + eB DE 9 -(/   0C FB GB DE"R$G 4 >,M @P$N  +$M@> P @P O >,M $N  + O>0G"(Q B R A$N* "  S :P :  g +(W  B R A$N " T : R X$Y A"(Z K0R%  % 1(R).(\(f(g% % U@V!A8!7 4  52V 6 5!A, U@V!) 4  5$V 7 5! 4 5! 4 5 5(R$N " . : O8 g +! =$N =! = 8\ (@]@^A0G"([ $N*1 "$ g +0C! =$N =! =A-(\ $N1 "#$N1 ""H* * +0G" " ! "  +" + +  + : O )0C _B$HB DE"S! =$N =! =$J $I(] ! ] ) < ],I !  @0G"  cB B"(b  ]  !8*PC ' +  %\ ($K(\  dC _C'  ^ ) )\ ( (_ 0 +]@* _(`@`H_ )\ ( * )@* 2 ) FILE ALREADY EXISTS- NOT LOADED. FILE READ ERROR- IMPROPERLY LOADED. 0 Ha0G" * "(b  a(^0d  +^ 2 +*P aP  +\ ( :0C FB GB DE0G" . >,M O>H>@P P  OP X$Y A"(Q  S@P (W  T(Z   O . : > ) O> )\ (C -(/ )# : )Z +1" =  u,MT OP ERR 1 MT OP ERR 2 MT OP ERR 3 MT OP ERR 4 MT STATUS ERR TAPE TO DISK RESTORE. " "MT0:0DUMP TAPE.G 6FRGPSUBMTIO\ ~:Z(+J 8  5   0:(;( (B: #(B8"!8C !8S ]! 282B( *P@P@J*l  ll"l2pm  BBB"B* B ) "   * 8 E"B"B "*  G &F\ ~*8+ " *" F" :* + *KB*   *    *    \ ~"  B" [!Z J *" * JB B" J"*BJJ" J       B " Z)"BB*"JB &*SS J*JI\ ~ B"B" * J  !  "BB   ! *ąB *P     i "B"B* "* &F\ ~*P !:" :Z"C"C " 32B J " S32B J#C3 B)" J " Z! !W J  c\ ~ \ ~ B" J " !  0MOUNT NEXT REEL, STRIKE KEY WHEN READY. TAPE WRITE PROTECTED, INSERT RING AND STRIKE ANY KEY. J\ ~ B"B)J" " \ ~ Z:#*  ! 0TAPE HAS WRONG REEL NO. \ ~ *"  A 0"2 *? ! 3! 3! Y ") !   1%\ ~2 ( Q \ ~1 \ ~2 ?3 "  \ ~"   *"BJ XXX NOT READY- MAKE IT READY! 9!X" S*""2 &? 3JZ" Z)3BBOVEOVEOFEDSY 8CKS1X3810X#+3\ A!)"A0!   !) ! !  ! 8 C . Q " )1QҐ*  A ! ! J1A!\ AI! A! )    8 !   ( \ C3"C# 8  8 8 \ A!1!)! U ! (  Q !.A U \ 5Q33\ (1 # 8  \ 7Q "C \ # 1`)` S !)ԥ1X)X q@UP@)O  (( 3P8#1`"0@  %@ @ (   8# !g (Q \ 8! 1Q 5N5N\ )  I    #  (  # 5555* *P *D *L \ !a1a*9f9dYa  !W  ![)S  !X@!U8C)L  ) 3!4) )J!% )J @!  !   777) !) ! 7$7,7766$LPTFCOM.CM$TTO$TTO1MT0:0MT1:0INVALID COMMAND STRING! \ /I7!A+P@K) 8!)  AI0\ 5#A"#*  !I*I) 8! )" ! ! 3   SYS ERR RETN- OFFSET: NNNNNN IN XXXXXX888 \ \ Y` /  J 8S+!K`` \ `83* KB g?`Y J9K`"  Y9; # #PCCK[ 911#M'\ `1a `)a9y  8# AJQYo9V:#  FQc0 "X  B%E)E  bB `B "B &B 68%7)7  # b#`#@"#@&#@3  +:!Y 94S( 508 S P*I "*`\ :2`)P\ *@SK+K8 P`\ 1I)YqQ2 :91*KZcYb9; *KYYW8CKS0S4 @SҀL\ )^ o5F X:]BJ 8+@J)JJ J )ܧ #B#BQ  1" 9-#K]!\ 0 : .  0-JU@A- ) )-  @J Z) "B-JU\ C 18S"1Y12 : 9111  OSYSLB' qm=* .GM4k$I@MqhMD~M qM M qM D$$D@Zk @Zg @Zc D$$@Z] *J*Q9B"D$$vWN)S* PJPJ*6 D$$*UFB)1 AZ>9 Z6) JD$$88 BB B/)PKK "KKD$$e)FK"*:1 ?"0")D$$6GT: *J JKJ) ZD$")ǖb?3GD$(p18 KSz D$$}~@Z:J) " B JY :j!D$$VRj ;"J :#a) :D$$[*KJ  :;K :+C!D$$) #K :*K J D$$XI*K 9+   :#CD$$T :#++JA)Y * =)D$$V> 9!" 0"K* "J D$$B " " :K(!C* "J#D$$+#B  &@D$$pB8;0"@"*2D$$  * * D$$JB*J*KB0D$$G&2J*J2J0:D$$4 !ƿ - P# *:W1D$$BJ K ? ?X 0 KD$$6jP ? ?M 0 *:C)D$$Ua^ ) ! 0@Z2 "D$$+l !KB!& 0 :+BD$$z +;  Z) ) ! D$$td0!P 0"J1 ?DD$а?sBJR BPD$8m@ 0 2B"$II ; } a״A_!_pgSf _&DzAQꠃ | _]HfС|lF.U<D$$[91(!"JX+ "+ D%D!PST,T,UQ,ElIK,LKRPED(Gz,I`US,SQDR,YUUR,NkED,QD$$ *L  9 )*-1 !( ! D%$B 8! ,17D$,}F - !J' D$(T# !N0 HD$$X9b c9]( Q IN D$$pRMAu1 !z m9D$$sV~: Pl!g1* f9D$$4!1Q8\)# B&1D$$18+J+J+ J!$JPJD$$ca 0" 9  1B D$,%1B!j<!L$$^H KF PPPPPPSD$$= 3S+ K4 K0 D%$PK  Y D$$t A!9Y9Y9D$$A99SK1X$$7 83QY 9TSTAD$$K =P,IR = ONQ EUEUA ERAKOD$$$&IT DON TCAITEVNIUP TREORD$$4RLIOLIGAC LUQUEERPGON TOF DBUODN$I$I$I^A ;ai!CN~A{l!+l!x[IF[HD[AIz[IEP[c]&?]IdG!B|G A _T> I yud!I _T t/i! _ag4$I I,G Od ICi P AN~ +l {l &?'.U<D$$  + 8)"Y9D$$pPP1 9{1 y9D$$bv1 1 08 YIAD$$* )#C)!D$$8Y39 D$$FH1 L +!K.! "8D$)T,I?1() *(  (DED$$$b*9 a)J:YQ A!D$$p A! 1*!JM(D$$!~,* ! !  Ed$cь0Y5 Q*D$'ǚM)JB B B B =Z U81He" Df8 Df8 @(D$$]NIUP TREORRIT DON TOFNUD!D$$h |P6I3Y: 79 +.I29D$$Z '-9 '(9 9%)܆D$$)SRRI 9߄)D$$_ ) 1RSRD$@N9, ':$IH@ez{zu ;_Eb}a^y`Af8lFպA  _Јo7 a _\MH O( _UaXH`k ur(ak _Ox9H@O (AO _Έtr IN"(@O(`k({a.U<D'$#U *8; F9 D$$E *9 .;9 ,JDĒ(* 9J83S1(? "E$$ a*J7 4 $ 9ZD'ı8*9J * 830" BD$dF* !J*J)J1 0D$$*T") Y9 02*APD b9@gD$$pgY) 0 2: : :0ZD u2 @{"E"E${+, N|}  G($Y+ 83@SY *9 9D$~  @^E1@$IH(zuzqպ!% ;Eb}aAp _[鍭i렓 = _r[頙 c] _rֿ:I(c]Cd.U<D$$G3" R" $*V9D$$1 R9G9BG9@*F!D$$4CQ <1 !  )X$%*84!B3!B112"D$$I:8'Y#9 !A"+  "+D$$"'FY; 9 +SJm D($nIT9QZ13(D$$bAIM9 ' )3D$%pCS; !)9 i3H(D~{ 3~Y75 Ѓ*3M JD$$ J#/)B#B #B#B+PJDD$#)!Q1 J) 1D$$G* J?)J9# #AC D$i1".  D f8D$$d9-K]+1#D$$K3Q  D)D S 8 ;!C D)$8 *KBDD$A8SY19 Q2 "D) ȋ )2U$I$IHapպA,zA}{֍cy ;EbY}af8 _ GHp3) a ӝJa _A"gITK頞 J _.I@`J JaJ _E9ISJ`J JJaDHH D9 ?9:9Њ7YD$$`912 "21 D$$d'Y%1%9J‚B2 "DD$6X*B!BQ2 "D$$89#S -9KE@EDE DGf8 D~Hf8 D9I u[I _b}>I "u[I _b؆i]?H v[H _b>@I bu[AI _bA$I,z[@IW[H@[I9[I*|.U<DĒ$8S*9 9 D$e9 91 8C!D$$ ! 9 2J N"ED$?k* 9"BD$Iv68+,1:;.)E%%FJ0" )B6 -JU7 DtRf8 D")D6S1ABCG $I$E@fzLz\ ;YEb?}QaXf8ppUdA__yZanS _X)l_ xd_ _<ᬿ_Hd@_d_D$$d; ):Z  D c $I@wz zpp ;}a _`[TC頒 d] _kZ=bTC頒 c _TCHd]cDDY I*A ;}a _o)Fԏ| 退 鴔J _D@J.U<D$$f?("K-) 'JX$+>`8S3S#10"!0ZE$$;Z)J*!J -JD$) *U 1*!J&1-D:81H D;f8 Dĺ<$)$IHQf8z2zպ!an7pp:Ay ;Eb4}+a _5@ 0'A _Ɵy@p'@D$ڱ+!K@IW} ;a _o~,렓 +@O 2@O%@OxD$0 " @?d _ (I9\hbUhb`hb@.U<G$$UOY0 2/@ JQH)F1 D$$"C=);1<9#BD$$Q41239T ,/Q/! ~gD$$*}|~g`~g}|~giK*~gD$$a8>j~gd~g`~gt !D$FA !)IAM9@PD$$VPY0 :/A;\AD^HnxhbQhbP _PW z J!z _ҮtIq xq _RH\{q zD)D PEE I9 ! ;} a _Uie렓  +S _ Nnp "p _@N8`o ao _4̔4v(I$I$Mž:Y}{֍e U<zppպ@rպ n素P#`n`o pSȄ3y z`z` ; Eb}a \(l($@8H$&Hl \`a1 ` a)y9 8# D$$>AJQoYV9:#  FF$cQ0 "X  BE%E) bD$$]j* B`B" B& B6 87%7)  #D$$h8b#`#"@#&@#@3 +:D$~FY! 49S(5 0 8 SD$$STP* I"*` \:2`)D$.bP Ddif8 DWjf8D$$wNk \ *@SK+K 8D$$yP` \1I)qYD$$PEQ2 :91*KZcD$$ԕbY9; *KYWY8CD$&鱣KSS 4@SL \ ^)ďP$ڎ oF5 X:B] J8+@J)D$$vJ J J) #B#BQ D0$ 1"ʱ 9#-K!]D$0  \0 :.  0-JUF0$ @A- ) )r D} D˻f8 D˻f8 Dѻf8D$&x@ JZ )"B-JU \ F$v  C18S"1YD$$t12  : 911$ID͗hbhbAgAAaACff8 _+x@Ԉ+x((H$$5*Z"*:X8:2D$$/  !H`:Y:2` Df8 D$$`Y8 ` =CKSZD$$+9(J+J@Z*J8Do9H`(^+f8A) _#A$vA8`A0@A( A  _Y4@Y E$$c 8Q)# 3CS*H!D$h6E 3"E!B2`:`D$$8`6`4`2`0`.`,`D$$**HAHIHQHYBY 8+`1 cIK1D$$G8 "@B`)DI[!AAA9PD$$dF#GB+UI6 5 E$$lT +1  (9^-Y' D$$Ab(I& &);9+# !) P D$$p Y !  DDI~ /B^< WE"%${v` E1$66 r!D$$A! %EJ %A1D$$k%P9B%GA1Q1/KWD$$H)19ş1*D$$ @0!9 怪.I1&A1D$$4)P>]pYA91!D$$8)Z1  8!C"PD$$wB"%@!%!-!5!=H$$ RY =    9*CD($Iu  !^qrstu$E)$;&_=1!D$$Q41!= Q*MW PD$")BAEX *KrH)$ķPv = q<5)!J D$$C^* 9I#) / YD$$$l9SPC$! A 19+! D$$kz 91)!  D$$X_3! A!CH$HF2Y !11 X2D$$L]AY) ,WAS)2 &QAD$$/$M)  YI 9 ) !  $EDDS^_01Y<  3)@D$$Ʈ0)0A X1)A%! D$$.1Y!.A ,) D$$IeCQG1)yxHI$JQe I$")1+W! Y   IH_D$$#=-P 1D$$ "]Y95P @@=PD$$0A !)51]BY D$D>1!AI ! !CD$$L AE1Q"AAC ED$$|KZE~A~A~A~A~A}A}A}AA}AEDD$wh|E|EW e 'kr1r% D$$lv?1z9j)j9`_1f!D$$t;ʐX9+CD%$!G!G) R ~ FAb ?QL)D$$hK):12H!Q* 1A5A-D$$F2!* -A+!R> SR; DD$w1I"AMY 1*)*1 (!D$$1 9A3*JH$$Y{|EH$%tVa}$ !D(H.@1! <U?_kUQ!D$$ !-9  )1 E$$#E ~ A- 1T Q!9 D$(@41*K .  )1D$$,JAEL)!1!H1)D$$:292ʶ P)D$$H$ YIM1D$$V ݝ K$ --D$$d PPBBBD$$CrC ) 'mH($Ѐ80sEqAqYp=D$$AooYnYn9nYnIe%e-l1 8d1"D$$q]1"_Y ;UD$$˪*KQU9M0LYK)D$$/+ C9*D!DQmj  $)  % !) 9ID($xM X=YPY$IDHZ _@lD$$xӓ5 5 ) 9"B $E($~ E` 8K DD$= CEMWLQABDD$$hFNYRVJSKP=:_;'D$I$I&?q/4W$I$I$I⃤~WD$$)bKKKK$I$$KKKK?f?f?f?f?f?f?f?fDD$%     P`U|D$$`R5'T5$M9 ! QE D$$Y N5LUH @) D ?UY D$$Q-> 95)   .5D$$6;,1 *5 # "E%(E$ $ H$$vI'# p!ZE%R SR  5D$"%lWPEj U{"I$)D]Ce.E%DD$s XY  Y5D$$-)  A! !D"%H| !m`_W<>D$$M N8 4!U U  f R /!O D$$kO  O1_ K K!H H  H1R 2 D$$+,HYH1~g}tCBYB1~gt=xY D$$,51~g`~g}t nnY~ga(1D$$ BhFTg%  !  , D$$H  !  1"  SQD$E\ !  1 _^S@E@D$$m;Y3!/AP1I5Y-!)A5!+AP0Q D$$g%A)*1" !)D$$=##1" 1 ! AD$$1)" "I$$U?XG012345D$$)EM6789ABCDEF$I$I$Ig[$I$I$Ii$I$%H\ wjjZOCD$$gLRSSCPBDZND$$g#@ 0@@D$$ޡ@D$$``gD$$?g?g??D$$;oU{\Z(D$$c C) I ICD$$O D$$18HD$$F$FzȓD$$H?Uigfu[?fD$$*NrezeZ?d}]dt[?cD$$%-7zcZbs[?aIcaZD$$;``Iz`Nz@ D$$eI,\l{D$$KW`Ldo`ys`L<D$$oWeLbP xD$$*s :d`[D$$]`[]`o`u!U# RD$$,- >*@@H:D$$vCZ: < <D$$bNB^nD$$JԹn qH&`HD$$+'()+`oZ,D$$LZ.`G2""C"CD$$cR"~"~"`;"`;"MD$$sF"wT "k "`G "`L "D$$r:b"bV"z"c"bD$$=# "`"`[u"vE"C"CD$$ "b6">7">"b~"D$$) @"@"`t"b"D$$RS7 ":!"q%"y&"M'"MD$$?mE ("9)"b*"]+"z.,"D$$qS -"L."/"@H0"D$$a 1"`B2"`C3"-4"-5" D$$*Ro 6"MW7"8"9":"D$$)} `PAIQY 8+ 32!D$$AL  3  %+ IC!)19E$$n  OCYPIRHG(T)CD$$t GD,C91271,79,391471,79,59177D$ LA LIRHGSTR SEREEVDH 紡 ! _,o\tw$$EIO素 hbhbhbhb@@@@ClFa`aD$E1 O _ SYSOLSYS2MOLSYS1NLM(sff  SYS1N.SV LOADED BY RLDR REV 07.10 AT 12:03:26 11/22/80 SYS00 000452 UINIT 000452 UCLIB 000452 TMIN 004510 NSAC3 004604 UCLIE 004604 URTC1 050431 UINI1 050431 UINI2 051715 UINI3 053122 USCHE 054657 UPSPA 055564 USYMO 055565 USYST 056267 UPXXD 057455 UOVLA 057675 UTTYD 060337 URWBL 061477 UBLKI 062273 UFILI 063145 UGSUB 064724 UIOBU 065231 BADSP 066054 USTAC 066126 UCELL 067031 UDP0D 067231 UDKPD 067565 UINTD 070257 UPANI 071137 UDDPM 071237 UTABL 071242 URESO 072621 000000 000,000 UDFRW 000000 000361 000,001 UDFLR 000000 000366 000,002 UUTIL 000000 000314 000,003 UCREA 000000 000375 000,004 UDELE 000000 000355 000,005 UFLSY 000000 000353 000,006 USOV1 000000 000335 000,007 USOV2 000000 000377 000,010 USOV3 000000 000376 000,011 USOV4 000000 000347 000,012 UDVIN 000000 000357 000,013 UCRSF 000000 000366 000,014 URNG1 000000 000273 000,015 URNG2 000000 000347 000,016 URNG3 000000 000375 000,017 USOV5 000000 000332 000,020 UMTIO 000000 000361 000,021 UMTUC 000000 000370 000,022 UTUON 000000 000327 000,023 UCDRO 000000 000372 000,024 UWDBL 000000 000377 000,025 USPLR 000000 000374 000,026 UCODR 000000 000365 000,027 USOV6 000000 000366 000,030 USOV7 000000 000371 000,031 USOV8 000000 000312 000,032 USOV9 000000 000351 000,033 USV10 000000 000373 000,034 USV11 000000 000315 000,035 UJEHO 000000 000357 000,036 USV12 000000 000263 000,037 USV13 000000 000370 000,040 USV14 000000 000344 000,041 USV15 000000 000360 000,042 USV16 000000 000102 000,043 UFLS2 000000 000370 000,044 USV17 000000 000223 000,045 USV18 000000 000375 000,046 UWDCB 000000 000354 000,047 USV19 000000 000370 000,050 USV20 000000 000001 000,051 USV21 000000 000326 000,052 USFTA 000000 000202 000,053 USV22 000000 000345 000,054 USV23 000000 000311 000,055 USV24 000000 000372 000,056 USV25 000000 000332 000,057 UFSTA 000000 000307 000,060 UDVRL 000000 000330 000,061 USV26 000000 000023 000,062 USV27 000000 000166 000,063 USV28 000000 000011 000,064 UTUNO 000000 000246 000,065 UQTYO 000000 000320 000,066 USV29 000000 000136 000,067 USV30 000000 000260 072621 XN SYMB 053053 XN SYMP 053052 NMAX 072621 ZMAX 000064 CSZE 000000 EST 000000 SST 000000 BOOT 000000 TSCNT 000001 URDOS 000001 RTCI 000001 MNSTK 000002 IPCEL 000002 NDP0D 000003 NP00D 000003 NCEL 000010 NUBUF 000012 SCNT 000012 BCEC 000012 TUBUF 000014 RTCDV 000014 TUPBU 000016 TUSC 000026 TUPSC 000030  .VBF0 000032 .VBF1 000033 .TCRS 000034 .TUFP 000035 .TUF1 000036 .TUFD 000037 EMEM 000040 NSEG 000100 USTAD 000400 CLIBT 000452 CLIBU 004326 TMIN 004511 LCLID 004604 .SAC0 020016 .SAC1 024016 .SAC2 030016 .SAC3 034016 SSINI 050431 SSINT 050452 SSINS 050517 RDCH 050650 TYCH 050655 SIZIT 051726 PTPSW 052172 OVIN 053122 DADR 053176 MSG 053644 SMON 054657 SMON1 054660 SMNXT 054675 SACHN 054743 STSAV 054744 PENTR 054747 URSEX 055100 UPQUE 055122 PTPRV 055123 PTSWP 055124 PRISW 055132 FPUSV 055133 CFPU 055245 TACT 055251 TINA3 055273 NOTSK 055275 TWINK 055365 TSKPU 055415 INTSK 055470 PATCH 055564 BRKP1 055565 BRKP2 055600 BLKCA 055604 BLKCB 055605 QCHK1 055704 FOPE 055731 TTYG 055733 TTYP 055742 FILDQ 055763 CLCHK 055777 SDNCK 056013 SDNKA 056016 SOPNC 056021 RDCK1 056025 RDCK0 056050 RDCK2 056053 WRCK 056056 DTER 056114 MTCHK 056122 TIMEQ 056140 SYST 056267 SQ1 056401 SQ2 056411 CMER 056462 SYSER 056536 SYSE2 056537 RETER 056554 RETE2 056555 IGCEL 056563 GCELL 056570 GETCE 056624 CREL 056640 CFREE 056655 CELCN 056660 CLINK 056662 TRTN 056716 GTRTN 056717 TRTN3 056741 SPRTN 057002 INXTB 057035 INXTA 057036 INFND 057051 INDSK 057071 SENQ 057174 P00DL 057455 P00DB 057471 P01DL 057535 P01DB 057551 P02DL 057615 P02DB 057631 OVLY1 057675 FLAK1 057701 FLAKE 057706 OICAL 057766 OVCH1 060027 OVCHN 060034 OVLAY 060042 RTCNS 060114 USGDN 060127 LDRTN 060134 OVBA1 060151 OVBAS 060152 PREOV 060312 TTIDC 060337 TTRDC 060503 TTIEX 060537 CHAR 060636 TTDCT 060640 TTIS 060642 DEBAD 060746 INLIN 060752 RTCST 061114 LABEL 061114 NOPPR 061140 TTIDT 061227 TTRDT 061243 TTODC 061257 TTOEX 061351 TTODT 061403 TTIQ 061417 TTOQ 061437 TTRQ 061457 RDB 061500 WRB 061501 RDCBK 062273 RDNBK 062433 RDLBK 062614 RDBLK 062651 RDBNO 063077 BLKIN 063145 ASBUF 063146 RLMPB 063452 RELMB 063452 SETMO 063453 RELPB 063464 RELB 063464 RELZT 063522 RELDB 063526 IDCB 063540 FIDCB 063601 FNDCB 063602 BMOVE 063620 PSHRD 063662 BFLUS 063707 FLUSH 063710 WAITF 064004 WAIT 064005 MODOU 064105 QUENT 064144 STCON 064332 ENCON 064333 STLIN 064334 BLIST 064335 GBLKN 064336 PEND 064441 PENDR 064461 UNPEN 064475 GPATJ 064526 GPATH 064527 FPATJ 064551 FPATH 064552 CPATJ 064571 CPATH 064572 XDOA 064614 XNOC 064624 XDIBC 064626 XNOS 064630 XDICC 064632 XDOCS 064634 XDOB 064636 XDOC 064640 XOAS 064642 XDOAP 064644 XDOBS 064646 XDOBP 064650 XDOCP 064652 XIAC 064654 XDIC 064656 XDIB 064660 XDIA 064662 XDOAC 064664 DSKDT 064710 SAVEM 064724 RETN 064736 MVBYT 064750 MFMVB 064750 MTMVB 064750 SRTN 065000 LDBT 065013 MLDBT 065013 LDCHR 065013 STCHR 065026 STBT 065026 MSTBT 065026 MVWD 065052 MFMVW 065052 MTMVW 065052 MBMVW 065052 MCLR 065072 CLEAR 065072 CMPWD 065107 TSTNE 065136 TSTEQ 065137 DIVI 065157 DIVD 065160 MPY 065200 MPYAD 065201 ROX 065212 RSTFL 065221 SETFL 065222 XIBUF 065231 IBUF 065232 OBUF 065337 ENQUE 065452 DEQUE 065504 CISER 065542 FINQ 065653 FINP 065656 DEQRQ 065660 COSER 065667 STOUT 065671 XNIOC 066013 XDIAC 066017 XNIOS 066021 XDIAP 066023 DDOB 066025 DDOCS 066027 DDIC 066031 XSKPB 066033 STCOT 066054 STLIK 066126 STK00 066127 STK01 066470 FCELL 067031 CEL01 067051 CEL02 067071 CEL03 067111 CEL04 067131 CEL05 067151 CEL06 067171 CEL07 067211 DKPDC 067231 DKPEX 067246 D00DL 067251 DP0DB 067265 DP0DC 067331 D01DL 067355 DP1DB 067371 DP1DC 067435 D02DL 067461 DP2DB 067475 DP2DC 067541 DKPDS 067565 DKPST 067751 DKPIT 070064 DKPER 070253 PFL 070257 USTKO 070272 INTS 070346 LINT 070431 DTOTL 070447 TIA0 070452 TIA1 070453 TIA2 070454 TIA3 070455 TCRY 070456 INTLV 070457 PFRET 070557 TSECI 070572 RESCH 070637 IHDN 070703 UTOTL 070722 IWKUP 070723 DISMI 070744 DISI3 070751 USSV 071050 TODI 071106 TODS 071110 TODH 071112 TODD 071114 STKDC 071116 PNIC 071137 REG 071227 DMPLO 071237 DMPUN 071237 DLOCK 071237 DGRAB 071237 DVLOC 071237 DVUNL 071237 DUNLO 071237 SYSQ 071242 DSQ1 071327 DSQ2 071414 SPPTH 071501 SPOLF 071502 SPOLQ 071503 PT1 071523 SFGNP 071536 PT2 071606 PS1 071671 OVTAB 071704 BRSV 072004 FBRSV 072011 SYSTB 072016 OSNAM 072034 SYSNM 072042 FIMSG 072050 MAPNM 072057 FTMSG 072065 BIN 072074 FIN 072076 ENVIR 072152 TUNE 072153 ITUNE 072176 TUSW 072204 IVFWA 072205 ITBL 072206 TTITB 072215 PTRTB 072217 DPTBL 072240 LNKDR 072243 IVTTB 072244 PFLTB 072304 TTRTB 072306 IVLWA 072311 PPDCB 072312 MDCB 072313 SYSTM 072314 SYSTR 072315 SYSFL 072316 FSYSF 072317 SYSFG 072320 SFGZP 072321 DIRR 072322 BUFNT 072323 SYSIN 072324 SPOOL 072325 STDCC 072326 .IPIN 072327 .IPBQ 072330 ALMIN 072331 SS 072333 ADTDB 072513 SQ 072560 NTI1Q 072561 NTO1Q 072562 BQ 072601 BQ2 073217 BQ3 073635 BQ4 074253 BQ5 074671 BQ6 075307 BQ7 075725 BQ8 076343 BQ9 076761 BQ10 077377 DFWL 100000 TUSTK 100002 TUPST 100004 TUCEL 100007 TUPCE 100011 BQ11 100015 DFRR 100037 DFWR 100040 DFRS 100143 DFWS 100144 DFRL 100200 CHNST 100347 USRST 100350 USRLS 100351 LINK 100352 MTDIO 100400 BQ12 100433 OVLDC 100476 GCHN 100477 INTAD 100521 CONNT 100601 CONNS 100605 TCCON 100607 CCONT 100610 CCONS 100614 TCRND 100616 CRAND 100617 TCRET 100621 CREAT 100622 MAKE1 100623 MAKE 100624 UNLNK 101000 DELFI 101001 BQ13 101051 TRDEL 101140 EQUIV 101151 SRUFE 101200 SRUFD 101201 GCIN 101400 GCOUT 101401 SECI 101422 CHLAT 101435 CHAT 101442 BQ14 101467 GTAT 101473 FGND 101532 RDSW  101542 UCLI 101545 UCLR 101546 RTCF 101547 MEM 101550 STIME 101551 ODIS 101552 OEBL 101553 GTIME 101565 OPNCK 101600 DNCK 101627 CFNAM 101654 CSFNA 101655 TFTX 101732 SDIRR 101735 NAMCK 101771 RDCI 102020 BQ15 102105 TOPN 102200 EOPN 102202 OPNA 102204 ROPN 102206 OPEN 102210 CLS 102337 ECLR 102340 RSET 102341 DKINI 102413 DPINI 102414 BQ16 102523 CRMPE 102631 RPIPH 102674 CRSFS 102675 TOO 103000 OPNO 103014 OPNI 103032 CLSO 103074 TTIC 103104 CLSI 103115 BQ17 103141 WRCDV 103145 WRMSO 103153 TIRS 103200 TIRL 103203 RDS 103206 RCHR 103217 DRCHR 103220 GCHR 103262 GCH 103310 RDL 103324 ACHR 103400 PCH 103400 WRS 103523 BQ18 103557 WRL 103565 QWAIT 103600 BRKWT 103726 MTRCB 104000 MTRLB 104005 MTRNB 104006 WRITI 104040 MTRLS 104136 MTINT 104137 MTCLS 104140 BQ19 104175 MTOPD 104237 MTOPN 104241 MTOPA 104242 TUON 104446 CDRRL 104600 BQ20 104613 CRINL 105000 CRINI 105001 FCRET 105042 WDBLK 105144 STSPL 105200 BQ21 105231 SPLPS 105341 SPLST 105400 SPKIL 105454 SSPKL 105463 DCODE 105566 NCODE 105567 SPDIS 105570 SPEBL 105571 WRCI 105605 BQ22 105647 RDCI3 106005 RDCI4 106021 RDCI2 106025 CMNF 106205 CMN 106215 BQ23 106265 GDAY 106400 SDAY 106473 LNKRS 106555 RMVBA 106600 BQ24 106703 INIT 106724 GSYS 107000 GMDIR 107013 GDIRS 107014 SRDCT 107047 SZDSK 107106 ICMN 107123 WRCMN 107144 RDCMN 107145 CSYPA 107200 CSYSD 107201 BQ25 107321 BRK 107407 DSKC 107600 DSKCI 107600 UPDAT 107635 DFEO 107723 DSKA 107724 DSKO 107725 DFRO 107726 DFTO 107727 BQ26 107737 DDIR 110000 WROPR 110065 WROPI 110066 RDOPR 110067 CDIR 110200 CPART 110207 BQ27 110355 DDIS 110400 DEBL 110401 IDEF 110447 RNAM 110600 DELPP 110723 BQ28 110773 SCLUP 111000 IRMV 111161 MDRLS 111200 HBOOT 111201 WDCBK 111400 BQ29 111411 WBRKF 111600 QTCLS 111724 QTOPN 111725 BQ30 112027 MCRCL 112200 MCCLS 112203 MCWRS 112326 MCRDS 112327 SFTAB 112400 RLBOT 112600 ABORT 113000 SFCP 113200 GFCP 113235 SPLDL 113274 GMCA 113326 MCROP 113336 MCOPN 113340 FINIT 113400 CRMAP 113504 CSTAT 113600 STATU 113601 DEBLK 113711 DVRLS 114000 RLSE 114000 RLSER 114113 MEMI 114200 CCMN 114400 RETFA 114436 RETUR 114437 ERTN 114440 RETCE 114447 RDCER 114552 OVOPN 114600 TOON 115040 TUOFF 115161 QTRDL 115200 QTRDS 115202 QTWRL 115205 QTWRS 115207 OVRP 115400 RLBXT 115600 MODEM 177777 MODIN 177777 MODSE 177777 INFOS 177777 JNFOS 177777 MSV2 177777 MTAQ 177777 MCRQ 177777 MCTQ 177777 NM00D 177777 NM10D 177777 CLSTB 177777 ALM00 177777 ALM01 177777 ALM02 177777 ALM03 177777 ALM04 177777 ALM05 177777 ALM06 177777 ALM07 177777 ALM08 177777 ALM09 177777 ALM10 177777 ALM11 177777 ALM12 177777 ALM13 177777  ALM14 177777 ALM15 177777 ALM16 177777 ALM17 177777 ALM18 177777 ALM19 177777 ALM20 177777 ALM21 177777 ALM22 177777 ALM23 177777 ALM24 177777 ALM25 177777 ALM26 177777 ALM27 177777 ALM28 177777 ALM29 177777 ALM30 177777 ALM31 177777 ALM32 177777 ALM33 177777 ALM34 177777 ALM35 177777 ALM36 177777 ALM37 177777 ALM38 177777 ALM39 177777 ALM40 177777 ALM41 177777 ALM42 177777 ALM43 177777 ALM44 177777 ALM45 177777 ALM46 177777 ALM47 177777 ALM48 177777 ALM49 177777 ALM50 177777 ALM51 177777 ALM52 177777 ALM53 177777 ALM54 177777 ALM55 177777 ALM56 177777 ALM57 177777 ALM58 177777 ALM59 177777 ALM60 177777 ALM61 177777 ALM62 177777 ALM63 177777 DLMUX 177777 PL001 177777 PL002 177777 PL003 177777 PL004 177777 PL005 177777 PL006 177777 PL007 177777 PL010 177777 PL011 177777 PL012 177777 PL013 177777 PL014 177777 PL015 177777 PL016 177777 PL017 177777 PL020 177777 PL021 177777 PL022 177777 PL023 177777 PL024 177777 PL025 177777 PL026 177777 PL027 177777 PL030 177777 PL031 177777 PL032 177777 PL033 177777 PL034 177777 PL035 177777 PL036 177777 PL037 177777 PL040 177777 PL041 177777 PL042 177777 PL043 177777 PL044 177777 PL045 177777 PL046 177777 PL047 177777 PL050 177777 PL051 177777 PL052 177777 PL053 177777 PL054 177777 PL055 177777 PL056 177777 PL057 177777 PL060 177777 PL061 177777 PL062 177777 PL063 177777 PL064 177777 PL065 177777 PL066 177777 PL067 177777 PL070 177777 PL071 177777 PL072 177777 PL073 177777 PL074 177777 PL075 177777 PL076 177777 PL077 177777 PL100 177777 PL101 177777 PL102 177777 PL103 177777 PL104 177777 PL105 177777 PL106 177777 PL107 177777 PL110 177777 PL111 177777 PL112 177777 PL113 177777 PL114 177777 PL115 177777 PL116 177777 PL117 177777 PL120 177777 PL121 177777 PL122 177777 PL123 177777 ALINI 177777 LPTQ 177777 PLT1Q 177777 PLTDC 177777 PLT1D 177777 ALMDC 177777 ALM1D 177777 DLALM 177777 PL000 177777 QKICK 177777 DKP1D 177777 DK0DB 177777 DK1DB 177777 ZRDOS 177777 DZPER 177777 DZPDC 177777 DZP1D 177777 DZ0DB 177777 DZ4DB 177777 IUD 177777 HISTI 177777 IPBQ 177777 PWRFL 177777 SFFIL 177777 SFRCD 177777 PFLDC 177777 IVTIN 177777 OVUSG 177777 TUNIN 177777 TUVSW 177777 REWND 177777 CEL08 177777 WTEOF 177777 RDRCD 177777 WTRCD 177777 QTYTB 177777 QTRZA 177777 QTYWZ 177777 TGET 177777 QTYNO 177777 QTWZA 177777 STK03 177777 STK04 177777 STK05 177777 STK06 177777 STK07 177777 STK08 177777 STK09 177777 TTI1Q 177777 TTR1Q 177777 TTO1Q 177777 PTR1Q 177777 PTP1Q 177777 MTA1Q 177777 CTA1Q 177777 CDR1Q 177777 DPIQ 177777 DPOQ 177777 TTI1D 177777 TTR1D 177777 TTO1D 177777 PTRDC 177777 PTR1D 177777 PTPDC 177777 PTP1D 177777 MTADC 177777 MTA1D 177777 CTADC 177777 CTA1D 177777 CDRDC 177777 CDR1D 1777377 QTY1D 177777 QTYDC 177777 RTCDC 177777 NDS0D 177777 NDS4D 177777 NDP0F 177777 NDP4D 177777 NDP4F 177777 NDZ0D 177777 NDZ4D 177777 QTDCB 177777 PDUMP 177777 OTHER 177777 RTC1D 177777 STK02 177777 MCRBL 177777 MCTBL 177777 GSTAT 177777 TSEND 177777 WSEND 177777 DSKER 177777 DSPER 177777 CTAQ 177777 CDRQ 177777 MCR1Q 177777 MCT1Q 177777 DSKDC 177777 DSK1D 177777 DSPDC 177777 DSP1D 177777 MCRDC 177777 MCR1D 177777 MCTDC 177777 MCT1D 177777 DS0DB 177777 DS4DB 177777 NC00D 177777 NC10D 177777 MCRDB 177777 MCR1B 177777 SYMP 177777 SYMB 177777 TRESP 177777 TRPRT 177777 SBRCD 177777 SBFIL 177777 RGET 177777 MRDOS 177777 NRDOS 177777 BRDOS 177777 ARDOS 177777 ERCCT 177777 ALM? 177777 SQT64 177777 QTYQ 177777 M10DB 177777 C10DB 177777 IPINI 177777 PTRQ 177777 PTPQ 177777 LPT1Q 177777 PLTQ 177777 LPTDC 177777 LPT1D 177777 DPIDC 177777 DPODC 177777 DP0FD 177777 DP4DB 177777 DP4FD 177777 M00DB 177777 C00DB 177777 IPBDC 177777 OPPRO 177777 UPWRF 177777 P03DL 177777 D03DL 177777 USERSDR ddATCSALCM ex,HOME.AL,WINDOW.AL,VIEWPORT.AL,INPPI.AL,INPP.AL,RPOINT.AL,APOINT.AL,RDRAW.AL,ADRAW.AL,RMOVE.AL,^ AMOVE.AL,S2PTR.AL,P2STR.AL,P2STT.AL,CLIPL.AL,INPSI.AL,INPS.AL,PTREL.AL,PTABS.AL,DRREL.AL,DRABS.AL,^ MVREL.AL,MVABS.AL,XFRM.AL,TINIT.AL,ANMODE.AL,ERASE.AL,INSTR.AL,OUTST.ALERASE du8C C ERASE THE T4014 SCREEN AND PROVIDE A .5 SEC DELAY C SUBROUTINE ERASE TYPE "<33><14>" CALL WAIT (1,500,IER) RETURN END DRABSALt e3%PROCEDURE DRABS(x,y); VALUE x,y; INTEGER x,y; COMMENT: -------------------------------------------------- D R A B S This routine draws a vector to the absolute screen coordinates X,Y. External variables: TMODE - Current mode of terminal BEAMX - Current X position of beam BEAMY - Current Y position of beam HIX - Last high X character output LOX - Last low X character output HIY - Last high Y character output LOY - Last low Y character output External procedures: PUTC - Output a character MVABS - Move to an absolute screen coordinate XFRM - Transform an X,Y coordinate pair to TEK coordinate characters --------------------------------------------------; BEGIN LITERAL graphmode(1); EXTERNAL INTEGER TMODE,BEAMX,BEAMY; EXTERNAL INTEGER HIX,LOX,HIY,LOY; EXTERNAL PROCEDURE PUTC,MVABS,XFRM; INTEGER hx,lx,hy,ly; IF TMODE <> graphmode THEN MVABS(x,y) ELSE BEGIN XFRM(x,y,hx,lx,hy,ly); IF HIY <> hy THEN PUTC(HIY:=hy); IF LOY <> ly OR HIX <> hx THEN PUTC(LOY:=ly); IF HIX <> hx THEN PUTC(HIX:=hx); PUTC(LOX:=lx); BEAMX := x; BEAMY := y END END; SIAL$ e2 PROCEDURE SI(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE WO,WI,EO,EI,DRAW; IF I > 1 THEN BEGIN WO(I-1); WI(I-1); SI(I-1); EI(I-1); EO(I-1) END ELSE BEGIN Y := Y - H; DRAW; X := X - H; DRAW; Y := Y - H; DRAW; X := X + H; DRAW; Y := Y - H; DRAW END END; OUTSTAL e4PROCEDURE OUTST(STR); STRING STR; COMMENT: --------------------------------------------------- O U T S T THIS PROCEDURE OUTPUTS A STRING TO THE TERMINAL. THE TERMINAL SHOULD BE IN ALPHA MODE. EXTERNAL PROCEDURES: PUTC - OUTPUT A CHARACTER TO THE TERMINAL ---------------------------------------------------; BEGIN EXTERNAL PROCEDURE PUTC; INTEGER I; FOR I := 1 STEP 1 UNTIL LENGTH(STR) DO PUTC(ASCII(STR,I)) END; TEDITSVDP0TEDITSVPLOTBU d   .TITLE PLOTB .EXTN VECTOR .EXTD .FRET,.CPYL .ENT PLOTB .NREL X=-167 Y=-166 FS=2 FS PLOTB: JSR @.CPYL STA 3,SAV3 LDA 1,@X,3 STA 1,XCOORD LDA 2,@Y,3 STA 2,YCOORD JSR @.VECT MODE0 XCOORD YCOORD LDA 0,C38 ADD 0,1 STA 1,XCOORD JSR @.VECT MODE1 XCOORD YCOORD ADD 0,2 STA 2,YCOORD JSR @.VECT MODE1 XCOORD YCOORD SUB 0,1 STA 1,XCOORD JSR @.VECT MODE1 XCOORD YCOORD SUB 0,2 STA 2,YCOORD JSR @.VECT MODE1 XCOORD YCOORD LDA 3,SAV3 JSR @.FRET SAV3: 0 .VECT: VECTOR XCOORD: 0 YCOORD: 0 MODE0: 0 MODE1: 1 C38: 38. .END PTABSAL] e3 PROCEDURE PTABS(x,y); VALUE x,y; INTEGER x,y; COMMENT: ---------------------------------------------------- P T A B S This routine plots a single point at the absolute screen coordinates X,Y. External variables: TMODE - Current mode of terminal LOX - Lastlow X character output External procedures: MVABS - Move to absolute screen coordinate PUTC - Output a character ----------------------------------------------------; BEGIN LITERAL pointmode(3); EXTERNAL INTEGER TMODE,LOX; EXTERNAL PROCEDURE MVABS,PUTC; MVABS(x,y); PUTC(LOX); TMODE := pointmode END; COMCMCvee PAGEATCS.CMATCSAL.CMATCSSR.CMBUILDATCS.CL----------------------------------------- P T A B S This routine plots a single point at the absolute screen coordinates X,Y. External variables: TMODE - Current mode of terminal LOX - Lastlow X character output External procedures: MVABS - Move to absolute screen coordinate PUTC - Output a character ----------------------------------------------------; BEGIN LITERAL pointmode(3); EXTERNAL INTEGER TMODE,LP2STTAL e4PROCEDURE P2STT(X,Y,SX,SY,VIS); VALUE X,Y; REAL X,Y; INTEGER SX,SY; BOOLEAN VIS; COMMENT: --------------------------------------------------- P 2 S T T THIS ROUTINE CONDITIONALLY TRANSLATES A PAGE COORDINATE TO A SCREEN COORDINATE. A VISIBILITY INDICATOR IS RETURNED TO INDICATE WHETHER OR NOT THE POINT IS VISIBLE. IF IT IS NOT, THE POINT IS NOT TRANSLATED. EXTERNAL VARIABLES: SXL,SYL - LOWER X,Y BOUNDARIES OF SCREEN VIEWPORT PXL,PYL - LOWER X,Y BOUNDARIES OF PAGE WINDOW PXH,PYH - UPPER X,Y BOUNDARIES OF PAGE WINDOW XPS,YPS - PAGE TO SCREEN COORDINATE CONVERSION FACTOR --------------------------------------------------; BEGIN EXTERNAL INTEGER SXL,SYL; EXTERNAL REAL PXL,PXH,PYL,PYH,XPS,YPS; IF X >= PXL AND X <= PXH AND Y >= PYL AND Y <= PYH THEN BEGIN VIS := TRUE; SX := (X-PXL) * XPS; SX := SX + SXL; SY := (Y-PYL) * YPS; SY := SY + SYL END ELSE VIS := FALSE END; ADRAWAL e9IPROCEDURE ADRAW(X,Y); VALUE X,Y; REAL X,Y; COMMENT: ----------------------------------------------------- A D R A W THIS PROCEDURE DRAWS A VECTOR TO THE ABSOLUTE PAGE COORDINATE X,Y FROM THE CURRENT VIRTUAL "BEAM" POSITION. THE VECTOR IS CLIPPED TO THE CURRENT WINDOW BOUNDARIES. EXTERNAL VARIABLES: TMODE - CURRENT MODE OF TERMINAL PX - CURRENT X POSITION OF VIRTUAL "BEAM" PY - CURRENT Y POSITION OF VIRTUAL "BEAM" EXTERNAL PROCEDURES: AMOVE - MOVE TO A PAGE COORDINATE MVABS - MOVE TO AN ABSOLUTE SCREEN COORDINATE DRABS - DRAW TO AN ABSOLUTE SCREEN COORDINATE CLIPL - CLIP A LINE TO WINDOW BOUNDARIES P2STR - TRANSLATE PAGE TO SCREEN COORDINATES ------------------------------------------------------; BEGIN LITERAL GRAPHMODE(1); EXTERNAL REAL PX,PY; EXTERNAL INTEGER TMODE; EXTERNAL PROCEDURE AMOVE,MVABS,DRABS,CLIPL,P2STR; BOOLEAN VISIBLE; INTEGER SX,SY; REAL X0,Y0,X1,Y1; IF TMODE <> GRAPHMODE THEN AMOVE(X,Y) ELSE BEGIN X0 := PX; Y0 := PY; X1 := X; Y1 := Y; CLIPL(X0,Y0,X1,Y1,VISIBLE); IF VISIBLE THEN BEGIN P2STR(X0,Y0,SX,SY); MVABS(SX,SY); P2STR(X1,Y1,SX,SY); DRABS(SX,SY) END; PX := X; PY := Y END END; EIAL$ e2PROCEDURE EI(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE SO,SI,NO,NI,DRAW; IF I > 1 THEN BEGIN SO(I-1); SI(I-1); EI(I-1); NI(I-1); NO(I-1) END ELSE BEGIN X := X + H; DRAW; Y := Y - H; DRAW; X := X + H; DRAW; Y := Y + H; DRAW; X := X + H; DRAW END END; INPUT d .TITLE INPUT .COMM TASK,2*400+1 .COMM GARF,7 .ENT INPUT .EXTN .UCEX .TASK .EXTD .FRET,.CPYL .NREL MOVE1=0 TURN1=MOVE1+1 MOVE2=TURN1+1 TURN2=MOVE2+1 FIRE1=TURN2+1 FIRE2=FIRE1+1 FLAG=FIRE2+1 FS.=0 FS. INPUT: JSR @.CPYL SUBZL 0,0 LDA 1,.LOOP LDA 0,PRIOR .TASK JMP .+1 JSR @.FRET .LOOP: LOOP LOOP: .SYSTM .GCHAR JMP .+1 CHECK: LDA 1,DELAY .SYSTM .DELAY JMP .+1 LDA 3,TEM3 LDA 1,FLAG,3 MOV 1,1,SZR JMP CHECK LDA 1,C12 STA 1,LPC LDA 2,.TEXT LDA 3,TEM3 LP: LDA 1,0,2 ;CHAR(I)->AC1 INC 2,2 ;INCREMENT TO NEXT CHAR ADDR SUB# 0,1,SNR JMP GOTIT ;CHAR MATCHES! DSZ LPC JMP LP JMP LOOP ;NONE MATCH GET NEXT INPUT CHAR GOTIT: LDA 1,.TEXT INC 1,1 ;INCREMENT TO GET CORRECT INDEX SUB 2,1 NEG 1,1 ;INDEX INTO ARRAYS LDA 2,.VAL ;ADDR OF VALUE ARRAY ADD 1,2 ;INDEX INTO VALUE LDA 0,0,2 ;GET VALUE ELEMENT LDA 2,.STACK ADD 1,2 ;COMPUT INDEX INTO STACK LDA 1,0,?2 ;GET STACK ELEMENT LDA 3,TEM3 ADD 1,3 ;ADD TO REAL STACK FRAM ADDR STA 0,0,3 ;STORE IN APPROPRIATE PASSED VAR LDA 3,TEM3 LDA 1,C1 STA 1,FLAG,3 ;SET FLAG JMP LOOP ;GET NEXT INPUT CHAR .CLK: .+1 ADC 1,1 .UCEX .TEXT: TEXT TEXT: .TXT "A" .TXT "S" .TXT "D" .TXT "Z" .TXT "X" .TXT "C" .TXT "K" .TXT "L" .TXT ";" .TXT "," .TXT "." .TXT "/" .VAL: VALUE VALUE: 1 1 2 3 1 2 1 1 2 3 1 2 .STACK: STACK STACK: 4 0 0 1 1 1 5 2 2 3 3 3 TEM3: .GADD GARF,0 PRIOR: 2 C1: 1 C12: 12. LPC: 0 DELAY: 1 .END SOAL e2PROCEDURE SO(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE SI,DRAW; IF I > 1 THEN BEGIN SO(I-1); SI(I-1); SO(I-1) END ELSE BEGIN X := X + H; DRAW; Y := Y - H; DRAW; X := X - H; DRAW END END; CLIPLAL #e4PROCEDURE CLIPL(X1,Y1,X2,Y2,VIS); REAL X1,Y1,X2,Y2; BOOLEAN VIS; COMMENT: ----------------------------------------------------- C L I P L THIS ROUTINE CLIPS THE VECTOR X1,Y1...X2,Y2 TO THE CURRENT WINDOW BOUNDARIES. A VISIBILITY FLAG IS RETURNED TO INDICATE WHETHER THE VECTOR IS VISIBLE. IF ANY PORTION OF THE VECTOR WAS CLIPPED, THE NEW ENDPOINTS ARE RETURNED IN X1,Y1,,X2,Y2. EXTERNAL VARIABLES: PXL,PXH - X BOUNDARIES OF CURRENT PAGE WINDOW PYL,PYH - Y BOUNDARIES OF CURRENT PAGE WINDOW -----------------------------------------------------; BEGIN EXTERNAL REAL PXL,PXH,PYL,PYH; LABEL TRIV; PROCEDURE TRIM(A1,A2,B1,B2,LO,HI,EXIT); VALUE LO,HI; REAL A1,A2,B1,B2,LO,HI; LABEL EXIT; IF A1 < LO THEN BEGIN IF B1 < LO THEN GOTO EXIT; A2 := A2 + (LO-A1)*(B2-A2)/(B1-A1); A1 := LO END ELSE IF A1 > HI THEN BEGIN IF B1 > HI THEN GOTO EXIT; A2 := A2 + (HI-A1)*(B2-A2)/(B1-A1); A1 := HI END; TRIM(X1,Y1,X2,Y2,PXL,PXH,TRIV); TRIM(Y1,X1,Y2,X2,PYL,PYH,TRIV); TRIM(X2,Y2,X1,Y1,PXL,PXH,TRIV); TRIM(Y2,X2,Y1,X1,PYL,PYH,TRIV); VIS := TRUE; GOTO ENDITALL; TRIV: VIS := FALSE; ENDITALL: END; TANKSV 'dd 0LOCSSR5 Le2 .TITL LOCS .ENT X,Y,H .ZREL X: 0 Y: 0 H: 0 .END RMOVEAL| Oe9KPROCEDURE RMOVE(DX,DY); VALUE DX,DY; REAL DX,DY; COMMENT: ----------------------------------------------------- R M O V E THIS ROUTINE MOVES THE VIRTUAL "BEAM" RELATIVE TO ITS CURRENT POSITION. DX AND DY ARE SIGNED REAL NUMBERS SPECIFYING THE RELATIVE MOTION IN PAGE UNITS. EXTERNAL VARIABLES: PX - CURRENT X POSITION OF VIRTUAL "BEAM" PY - CURRENT Y POSITION OF VIRTUAL "BEAM" TMODE - CURRENT MODE OF TERMINAL -----------------------------------------------------; BEGIN LITERAL GRAPHMODE(1); EXTERNAL REAL PX,PY; EXTERNAL INTEGER TMODE; PX := PX + DX; PY := PY + DY; TMODE := GRAPHMODE END; S2PTRALD Re4PROCEDURE S2PTR(SX,SY,X,Y); VALUE SX,SY; INTEGER SX,SY; REAL X,Y; COMMENT: ------------------------------------------------- S 2 P T R THIS ROUTINE TRANSLATES A SCREEN COORDINATE TO A PAGE COORDINATE. EXTERNAL VARIABLES: SXL,SYL - LOWER X,Y BOUNDARIES OF SCREEN VIEWPORT PXL,PYL - LOWER X,Y BOUNDARIES OF PAGE WINDOW XPS,YPS - PAGE TO SCREEN COORDINATE CONVERSION FACTOR -------------------------------------------------; BEGIN EXTERNAL INTEGER SXL,SYL; EXTERNAL REAL PXL,PYL,XPS,YPS; X := (SX-SXL) / XPS + PXL; Y := (SY-SYL) / YPS + PYL END; P2STRAL Ue4PROCEDURE P2STR(X,Y,SX,SY); VALUE X,Y; REAL X,Y; INTEGER SX,SY; COMMENT: ----------------------------------------------------- P 2 S T R THIS ROUTINE TRANSLATE A COORDINATE IN PAGE COORDINATES INTO SCREEN COORDINATES. IT IS ASSUMED THAT THE POINT IS VISIBLE - NO TEST IS MADE. EXTERNAL VARIABLES: SXL,SYL - LOWER X,Y BOUNDARIES OF SCREEN VIEWPORT PXL,PYL - LOWER X,Y BOUNDARIES OF PAGE WINDOW XPS,YPS - X,Y PAGE TO SCREEN CONVERSION FACTORS -----------------------------------------------------; BEGIN EXTERNAL INTEGER SXL,SYL; EXTERNAL REAL PXL,PYL,XPS,YPS; SX := (X-PXL) * XPS; SX := SX + SXL; SY := (Y-PYL) * YPS; SY := SY + SYL END; DRRELALt Xe3$PROCEDURE DRREL(Dx,Dy); VALUE Dx,Dy; INTEGER Dx,Dy; COMMENT: ----------------------------------------------------- D R R E L This routine draws a vector relative to the beam's current screen position. Dy and Dx are signed integers specifying the relative position of the endpoint. External variables: BEAMX - Current Y position of beam BEAMY - Current Y position of beam External procedures: DRABS - Draw to an absolute screen coordinate -----------------------------------------------------; BEGIN EXTERNAL INTEGER BEAMX,BEAMY; EXTERNAL PROCEDURE DRABS; DRABS(BEAMX+Dx,BEAMY+Dy) END; PUTCSR [e4 .TITLE PUTC .EXTU .NREL ;-------------------------------------------- ; ; P U T C ; ; This routine outputs a character to the ; terminal. The system call .PCHAR is used, ; so no file I/O is performed. ; ; ; Example call: ; ; PUTC(ichar); ; ; Input variable: ; ; ichar - an integer containing the binary ; equivalent or the character to ; output. ; ;------------------------------------------- S= -167 SP= 1B0-S ICHAR= S CSIZE= ICHAR+1-S INTVAL= 4B7+1B11+1 .ENT PUTC PUTC: JSR @SAVE ; ENTER CSIZE ; STACK BLOCK SIZE 1 ; 1 ARGUMENT SP+ICHAR ; IT'S HERE ON THE STACK INTVAL ; IT'S AN INTEGER VALUE LDA 0,ICHAR,3 ; GET THE CHARACTER .SYSTM .PCHAR ; OUTPUT IT JMP .+1 ; NO ERRORS JSR @RETURN ; THAT'S ALL THERE IS TO IT .END SCORE ^d$/ SUBROUTINE SCORE(X,Y,IX,IY,SCOREX,K) COMMON /SEED/ SEED INTEGER IX,IY,SCOREX,K REAL X,Y CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C MODULE SCORE IS INVOKED WHEN A TANK HAS BEEN HIT BY C THE OTHER TANK'S BOMB. THE CURRENT NUMBER OF HITS FOR C THAT TANK IS INCREMENTED & A SPLOT IS GENERATED AT THE C LOCATION OF THE HIT. C IF A TANK HAS BEEN HIT TWENTY TIMES THEN EXECUTION IS C DISCONTINUED, ELSE THE TANK IS MOVED TO A RANDOM POSITION C IN THE GAME DISPLAY & CONTROL IS RETURNED TO C THE INVOKING MODULE. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC NP1=950 NP2=0 NS=(SCOREX)*38 IF(K.EQ.2) GOTO 100 SCOREX=SCOREX +1 CALL SPLOT(NP2,NS,IX,IY) IF(SCOREX.EQ.20) STOP GOTO 200 100 SCOREX=SCOREX+1 CALL SPLOT(NP1,NS,IX,IY) IF(SCOREX.EQ.20) STOP 200 I=23*RAND(SEED)+2 J=17*RAND(SEED)+2 IX=38*I IY=38*J X=IX Y=IY END CURVESV  a99 5yg22Q I Q  ' N     ' ~ P w *J]:\n)>,g%@kzr22%!(  _ )p C ,H / .2 P2 3 P2 Z#C P2 Z#C u2#8(+@@8 K#+@@ K 8(+38 8(#H3P4#P@58PC#+f P8+K8K(58(3 H5 3K(58(3 #@3(405S(58(3 #@4#C#+f P8+K"8K(58(3 H5 3K(58(3 #@3(405S(58(3 #@4 E   ? r  rx$TTOCOM.CMFCOM.CM1  34  ,34 # "8!3Ґ*C   #P@@ #C r#C #C r 3(5H3 R 4(5H4 R 3(5H3 R   #P@@ #C #C #C  4(5H4 R 3(5H3 R 4(5H4 R   #P@@ %#C #C L#C < 3(5H3 R 4(5H4 R 3(5H3 R   #P@@ j#C ?#C #C ? 4(5H4 R 3(5H3 R 4(5H4 R   #P@@ #C #C #C #C #C ? 4(5H4 R 3(5H3 R 4(5H4 R 3(5H3 R 4(5H4 R   #P@@ %#C #C L#C #C #C rI 3(5H3 R 4(5H4 R 3(5H3 R 4(5H4 R 3(5H3 R   #P@@ #C ?#C #C L#C #C  4(5H4 R 3(5H3 R 4(5H4 R 3(5H3 R 4(5H4 R   #P@@ #C r#C #C #C L#C  3(5H3 R 4(5H4 R 3(5H3 R 4(5H4 R 3(5H3 R   *+    DPP E  A A+P c#@A A B+P0?#P x#@B B ?+P #@? ?#@@ @#@=+H>   DPP  A @#@A A#@B B#@? ?#@@ @P@D+H=3P>= =+P0>#P = A @ A+P #@A A B+P0?#P ##@B B ?+P 2#@? ?#@@ @#@=+H>   ~#89+38C#89#8K ~#89+8C#89#8K @`  @>@=+8:33 HC  ]`h:#@I@E+HG3PK@O@M8:+HN3PP ]h:#@S@Q#@W@U C?C0 A  8;#@D8    8<#@D8PC#(Cf P8+K8K    #  $  AP  AC  +K  3# ) ? ? # # 3 ? #;# H  38YPC ? Hp rR019 3"C C PCC/ 'J2*K*Jm*1dK/ 'J2S)̏  ߈)ȏ1ȪK91õ 18S)K r)%  m9=+  )1 a)1  X)1 )C K) !C E #;CD@9>8K*\83Ґ"1\83Ґ*1۪3ғJ$2+-Ee.p@ PC32S"C /  'J22S/ 'J2)؏!؍  ߘ'C"C"C"CS"C")C"CS CC#/ 2S')! _ C/K *K')!  ߘ#3 ?*C3ҋ@O3Ґ2)C >  #)3 ? H# #S"3)K!  H PS J)K'S J C'1G  0)P#B#3 [09"*2 4 = ? = = = b a @0+-.E \8)IXCS0 CBCC*P9J*B \H1 1ݕ 1ە  \;1ו !1Е "1Ε 1̕ 1ʕ )3  إ+3 ^ |0)GPPB#1 [ u8+C0)9P0#B+.J0KpK y0: J8 3+ _ y80*P1 q0)P28 ^ | y\83Ґ"14\8+L)8K/ 8O84\8)#8CK / 8OPP PP4\)8X)K"C8#)1KJK } }84\8!-XKS { | |8#!+!#K0*2#B8) X8)X84\L r8+J+ f48+#B8) X84+ ~\8#31)K8CC#+3#8SKP |838#3  et | x80!–P4  )  f0 B et8 f x\8#C\8#) D#+#C#84\8!+#C84 ab` L `` )I1)I0)Hm)Hn )I&)I%)Hm)Hn0Ph3*KR'CJ' k)ҏU ) j#  hp) 12) u12) \ )!K)K)ۏ g jK1S # i 3;20*3J+3   2)1  1  ;K)K i u+1 /3B )F &3"0)P v# j l0 B   8#3B 8# 8\P@@8\8) )!8K)`  1"8S)K!33* * +K#)7SK\ lL08n y,  ,48\D0+ S ,08m4 S0! K h@8  o3pB\ t4\0"B y4 0B8\8#)#)!@# h4\83)# 'B483"G p ? H I Jggggg M K Lgdcg M K Lgg O Ngg P O Ngg P\1! 1 0""*!J0"*Q 0) P4d\8#+8#P48\0"PLL |8 , 0* y48\L t,8#1KuD#D |8#8C84 ~@\ t8+K y4\8+!)L)1C |88#)ҍ CK84#)ÍPKKKK) ~\0*9 9 "9J*84ED\8PK)KJKC y4\ y0"J) J"J84 xJ\ y0)\8!NXK!G0S*" 3):J+BB*#S"C B8#P3*J#)C!/ #+0 }8K z8! X38@\): Z  P: 8 |48\K3\8!C!0S"D"B384\8!C!0S@"D"@B3p84\ X!8!KP!K#+K84@\")D"C48\(1Hp 0@ 81#/!JZPP!@  X D'*8PK KK)ҏJ)W7:0B#B#B'/9J 3. J. J.J4.J.!9 A9 h9 e!9 j9 ]98$B. J.9 N8 &B&B;3/!P0J#@#+38&F&FɅ B!J>JB&F FJD.K +N&F9& &P)#.J.9N&P9FN .NOCYPIRHG TC( )GD,C91371,79,49157LA LIRHGSTR SEREEVD H @H 0P),), )(P!#PB JH8!XX CP "18 38!C    f?y ( " T0BJpBZ;);Z81#/!JZP9X  XPK KK83""*8;XX!@##+3T0PZ;K10Z3p@80 B;')U+J;Z+B0+ *0J. &J;Z. &J;Z9ϟ 9͟)̽  9Ɵ)Ƚ )ƽ A!8; xXX2-3*PK!@#@#+3 J9B.BJ&F F S&F&.9 &P)#.J.9N&P9FNB&F83S0#B8#BZ8/ J/J!:!9 0/J:Z;# Z; 8*C8K83S*+P^F: FN8"*FK& 83S0/!J JJ/ 'J+J91 l0B:+JI9ۂJ8/ #*KPB8* / +:J:JJ8/ ""*C"C*KPJ "C"C"C83S+;@JZZ.J90JZZ.J08/ #*8/ *02P8/ SCCZ *9R!Q (!L P"PF""F:  X 8 "F N:"8*NPXF*! X8" N F".PFB J*D&)*B &K )@.J"* F:"  X(Z: :#9ǂ: +9: K  " &C.J&*B FN83S/ /J2:!r"*J 0JB8/ /J28SK"C:!X*J 0J*B:*#J##1@02҂CK>"8#*#3Ґ"1%)&3ғB3Ґ"13Ґ*13ғJ83S 88PC83S/ /J2:!D"*J 0JB8/ /J2:!0"*J 8K+ 3Ґ*13Ґ"1  #8C3SP83S/ 'J2"/ / *J C83SP8J0J0S8[  8;B08K3S 83(J J83(2 ST0BJZXpB;1;0""28##+3X8B88\8;B89\8K)*"@C) "C 3"+3 #K /## 40Z8C#)K()8 X8B#C8"\8KS3")/K3)"/@K) "+4?TT0BJZ T0BJZ8#T0BJZB&)㏐99ݪ"9 "9  ##!ANALLL@NCAAALLNLKRKLLNLKKLLMALOCBOOOKLRERLPOGGGIMNHN0X9 Ɛ8X 9P@ @!85*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`BOMB zd3 PARAMETER L=72 SUBROUTINE BOMB COMMON /B/BOMB11,BOMB21,BOMB12,BOMB22,BOMB13,BOMB23,BOMB14,BOMB24 COMMON THETA1,THETA2,NTHETA,TANCOS,TANSIN,BOMCOS,BOMSIN,XP1,XP2,XP3,YP1,YP2, +YP3,BXY,X1,Y1,X2,Y2,ICOUNT,IX1,IY1,IX2,IY2,BUNKER, +RANGE1,RANGE2,SCORE1,SCORE2 COMMON /GARF/MOVE1,TURN1,MOVE2,TURN2,FIRE1,FIRE2,FLAG INTEGER THETA1,THETA2,NTHETA,XP1(L),XP2(L),XP3(L),YP1(L),YP2(L),YP3(L),BXY(20), +BUNKER(26,20),MOVE1,TURN1,MOVE2,TURN2,SCORE1,SCORE2,FIRE1,FIRE2,FLAG REAL TANCOS(L),TANSIN(L),BOMCOS(L),BOMSIN(L),X1,Y1,X2,Y2,RANGE1,RANGE2 INTEGER BOMB11(5),BOMB12(5),BOMB13(5),BOMB14(5),BOMB21(5),BOMB22(5),BOMB23(5),BOMB24(5),BX,BY DATA BOMB11/5*0/BOMB21/5*0/ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C MODULE BOMB MANIPULATES THE TABLES WHICH HOLD THE CURRENT C POSITION, DIRECTION CHANGE, AND NUMBER OF BOMBS C IN USE BY BOTH TANKS. C C CONTROL IS RETURNED TO THE INVOKING MODULE.C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ICOUNT=0 DO 300 I=1,5 IF (BOMB11(I) .EQ. 0) GOTO 20 C C UPDATE TANK 1'S BOMB(I) C BX=BOMB11(I)+BOMB13(I) BY=BOMB12(I)+BOMB14(I) IF(BUNKER(BX/38+1,BY/38+1).EQ.1) GOTO 11 IF(SQRT((FLOAT(IX2-BX))**2+(FLOAT(IY2-BY))**2).LT.RANGE2)GOTO 10 BOMB11(I) =BX BOMB12(I)=BY ICOUNT=ICOUNT+1 BXY(ICOUNT)=BX ICOUNT=ICOUNT+1 BXY(ICOUNT)=BY GOTO 50 C C TANK 1'S BOMB HIT TANK 2 - NOTIFY PLAYERS C 10 NNN=1 CALL SCORE(X2,Y2,IX2,IY2,SCORE1,NNN) C C DELETE BOMB ( HIT BUNKER OR TANK 2 ) C 11 BOMB11(I)=0 GOTO 50 20 IF(FIRE1.EQ.0) GOTO 50 BOMB11(I) = IX1 BOMB12(I)=IY1 BOMB13(I)=IFIX(BOMCOS(THETA1)) BOMB14(I)=IFIX(BOMSIN(THETA1)) FIRE1=0 50 IF(BOMB21(I).EQ.0) GOTO 200 C C UPDATE TANK 2'S BOMB(I) C BX=BOMB21(I)+BOMB23(I) BY=BOMB22(I)+BOMB24(I) IF(BUNKER(BX/38+1,BY/38+1).EQ.1) GOTO 111 IF(SQRT((FLOAT(IX1-BX))**2+(FLOAT(IY1-BY))**2).LT.RANGE1)GOTO 110 BOMB21(I)=BX BOMB22(I)=BY ICOUNT=ICOUNT+1 BXY(ICOUNT)=BX ICOUNT=ICOUNT+1 BXY(ICOUNT)=BY GOTO 300 C C TANK 2'S BOMB HIT TANK 1 - NOTIFY PLAYERS C 110 NNN=2 CALL SCORE(X1,Y1,IX1,IY1,SCORE2,NNN) C C DELETE BOMB ( HIT BUNKER OR TANK 1) C 111 BOMB21(I)=0 GOTO 300 200 IF(FIRE2.EQ.0) GOTO 300 BOMB21(I)=IX2 BOMB22(I)=IY2 BOMB23(I)=IFIX(BOMCOS(THETA2)) BOMB24(I)=IFIX(BOMSIN(THETA2)) FIRE2=0 300 CONTINUE C C TURN OFF TANK 1'S & 2'S NEW BOMB INDICATOR. C FIRE1=0 FIRE2=0 RETURN END EOAL e2PROCEDURE EO(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE EI,DRAW; IF I > 1 THEN BEGIN EO(I-1); EI(I-1); EO(I-1) END ELSE BEGIN Y := Y + H; DRAW; X := X + H; DRAW; Y := Y - H; DRAW END END; OASMSVASMSVBOMB1 d ! PARAMETER L=72 SUBROUTINE BOMB COMMON /B/BOMB11,BOMB21,BOMB12,BOMB22,BOMB13,BOMB23,BOMB14,BOMB24 COMMON THETA1,THETA2,NTHETA,TANCOS,TANSIN,BOMCOS,BOMSIN,XP1,XP2,XP3,YP1,YP2, +YP3,BXY,X1,Y1,X2,Y2,ICOUNT,IX1,IY1,IX2,IY2,BUNKER, +RANGE1,RANGE2,SCORE1,SCORE2 COMMON /GARF/MOVE1,TURN1,MOVE2,TURN2,FIRE1,FIRE2,FLAG INTEGER THETA1,THETA2,NTHETA,XP1(L),XP2(L),XP3(L),YP1(L),YP2(L),YP3(L),BXY(20), +BUNKER(26,20),MOVE1,TURN1,MOVE2,TURN2,SCORE1,SCORE2,FIRE1,FIRE2,FLAG REAL TANCOS(L),TANSIN(L),BOMCOS(L),BOMSIN(L),X1,Y1,X2,Y2,RANGE1,RANGE2 INTEGER BOMB11(5),BOMB12(5),BOMB13(5),BOMB14(5),BOMB21(5),BOMB22(5),BOMB23(5),BOMB24(5),BX,BY DATA BOMB11/5*0/BOMB21/5*0/ ICOUNT=0 DO 300 I=1,5 IF (BOMB11(I) .EQ. 0) GOTO 20 BX=BOMB11(I)+BOMB13(I) BY=BOMB12(I)+BOMB14(I) IF(BUNKER(BX/38+1,BY/38+1).EQ.1) GOTO 11 IF(SQRT((FLOAT(IX2-BX))**2+(FLOAT(IY2-BY))**2).LT.RANGE2)GOTO 10 BOMB11(I) =BX BOMB12(I)=BY ICOUNT=ICOUNT+1 BXY(ICOUNT)=BX ICOUNT=ICOUNT+1 BXY(ICOUNT)=BY GOTO 50 10 NNN=1 CALL SCORE(X2,Y2,IX2,IY2,SCORE1,NNN) 11 BOMB11(I)=0 GOTO 50 20 IF(FIRE1.EQ.0) GOTO 50 BOMB11(I) = IX1 BOMB12(I)=IY1 BOMB13(I)=IFIX(BOMCOS(THETA1)) BOMB14(I)=IFIX(BOMSIN(THETA1)) FIRE1=0 50 IF(BOMB21(I).EQ.0) GOTO 200 BX=BOMB21(I)+BOMB23(I) BY=BOMB22(I)+BOMB24(I) IF(BUNKER(BX/38+1,BY/38+1).EQ.1) GOTO 111 IF(SQRT((FLOAT(IX1-BX))**2+(FLOAT(IY1-BY))**2).LT.RANGE1)GOTO 110 BOMB21(I)=BX BOMB22(I)=BY ICOUNT=ICOUNT+1 BXY(ICOUNT)=BX ICOUNT=ICOUNT+1 BXY(ICOUNT)=BY GOTO 300 110 NNN=2 CALL SCORE(X1,Y1,IX1,IY1,SCORE2,NNN) 111 BOMB21(I)=0 GOTO 300 200 IF(FIRE2.EQ.0) GOTO 300 BOMB21(I)=IX2 BOMB22(I)=IY2 BOMB23(I)=IFIX(BOMCOS(THETA2)) BOMB24(I)=IFIX(BOMSIN(THETA2)) FIRE2=0 300 CONTINUE RETURN END BOMB14(I) IF(BUNKER(BX/38+1,BY/38+1).EQ.1) GOTO 11 IF(SQRT((FLOAT(IX2-BX))**2+(FLOAT(IY2-BY))**2).LT.RANGE2)GOTO 10 BOMB11(I) =BX BOMB12(I)=BY ICOUNT=ICOUNT+1 BXY(ICOUNT)=BX ICOUNT=ICOUNT+1 BXY(ICOUNT)=BY GOTO 50 10 NNN=PTRELAL# e4PROCEDURE PTREL(DX,DY); VALUE DX,DY; INTEGER DX,DY; COMMENT: ---------------------------------------------------- P T R E L THIS ROUTINE PLOTS A SINGLE POINT RELATIVE TO THE CURRENT BEAM POSITION. EXTERNAL VARIABLES: BEAMX - CURRENT X POSITION OF BEAM BEAMY - CURRENT Y POSITION OF BEAM EXTERNAL PROCEDURES: PTABS - PLOT A POINT AT AN ABSOLUTE SCREEN LOCATION ---------------------------------------------------; BEGIN EXTERNAL INTEGER BEAMX,BEAMY; EXTERNAL PROCEDURE PTABS; PTABS(BEAMX+DX,BEAMY+DY) END; GCOUTSR e9 " .TITL GCOUT .ENT GCOUT .EXTU .NREL S= -167 SP= 1B0-S STR= S CSIZE= 3 STRLOC= 10B11+3 GCOUT: JSR @SAVE CSIZE 1 SP+STR STRLOC LDA 0,STR,3 .SYSTM .GCOUT JMP .+1 LDA 3 .FP LDA 0 C4 LDA 2 STR,3 MOVZR 2,2 LDA 1 2,2 MOV 1,1,SZR INC 0,0 STA 0 STR+2,3 JSR @RETURN C4: 4 .END PTABS(BEAMX+DX,BEAMY+DY) END; MVABSAL@ e3#PROCEDURE MVABS(x,y); VALUE x,y; INTEGER x,y; COMMENT: -------------------------------------------------- M V A B S This routine moves the beam (dark vector) to the absolute screen coordinates X,Y. External variables: TMODE - Current mode of terminal BEAMX - Current X coordinate of beam BEAMY - Current Y coordinate of beam HIX - Last high X character output LOX - Last low X character output HIY - Last high Y character output LOY - Last low Y character output External procedures: XFRM - Transform X,Y coordinates to TEK coordinate chatracters PUTC - Output a character --------------------------------------------------; BEGIN INTEGER hx,lx,hy,ly; LITERAL graphmode(1), gs(29); EXTERNAL PROCEDURE PUTC,XFRM; EXTERNAL INTEGER TMODE; EXTERNAL INTEGER BEAMX,BEAMY,HIX,LOX,HIY,LOY; IF TMODE <> graphmode THEN BEGIN XFRM(x,y,hx,lx,hy,ly); PUTC(gs); PUTC(HIY:=hy); PUTC(LOY:=ly); PUTC(HIX:=hx); PUTC(LOX:=lx); TMODE := graphmode; BEAMX := x; BEAMY := y END ELSE IF BEAMX <> x OR BEAMY <> y THEN BEGIN XFRM(x,y,hx,lx,hy,ly); PUTC(gs); IF HIY <> hy THEN PUTC(HIY:=hy); IF LOY <> ly OR HIX <> hx THEN PUTC(LOY:=ly); IF HIX <> hx THEN PUTC(HIX:=hx); PUTC(LOX:=lx); BEAMX := x; BEAMY := y END END; ATCSLB xx0 i@tK   @tK   NNNÔSnvKpwXGmj    [  @H,H~ ˔? _xP4I   @P I   eNNNÔ vKʺκ'wX$',R """" `D$[#+p  H@Iǒ$W$`#@+H`#+DbK)*p 5$H@</`#X;f8@+H (5` (DؒFఀ P ( 0@( GTH  @Y(R0fpfN _T   @L@   eNNNÔ vKʺκ5wX$'g  #+D+(u@@  H# @# @+X$  H#+@@ * H# @.G;*# @+ H (` (Dؒ,8ఀ P ( 02( G FH  @K(`0fpf@ _zt   @z`    NNNÔSnvKdwX$$ ""  G$$ ""  @@)mpfza ҵ _Nz   @fÚz    NNNÔSnvK`wX$p ""  D8$9M "D "  @߿ )pfz ҵ _)b   @ת)b   aNNNÔSnЧvKdwX$8? "" ` +0D8$#ƍCK ""  @@H Hbpf _THb   @Hb    aNNNÔSnЧvK1GPwX$$z ""  "D$b%2"1# # DB%'8#@ 8`#X܂*@+H  @ο1I֓pf' ;? _|L4;   @L ;   aNNNÔSnЧvKdwX$8? "" ` +0D8$#ƍCK ""  @@H6 G!;pf _} G4;   @= G ;       aNNNÔSnЧ&vK1GwX$$ ""  PP bE$( ""a` G$$C(K3S#C " D$b%*" " "1# Z D$Ā8" " D$$F 7 " " D%ǒT`#@+H Xb @d$IqHT%[?TpfZ˔?B@I _W   @ok  y`NNNÔЧvK1GiwX$8' "" ` +HXl'  3PP@  @@pf _qH   @qH  y`NNNÔЧvK1GmwX$'  "" `#@+HDP@  @@pf _ҵ   @pҵ   M`NNNÔvPKκYwX$' "" #(D8$` (0ƋC+0E8/ ((C  @ؿ'(0fpf _S   @k   M`NNNÔvPKκWwX$'SV "" `GĢ\##( 0@РC(K +X$`' (@ЀC0S  @ֿ)Dpfg _ԙ   @+   eNNNÔ qvKκܭ.wX$$ ""1 D$$` +@0@Xb%$ +@ @ BE'?"*L8# 8C"#( @ШD(88K 0S0+ (@ЈG*; FK CP8# 8C  @T@TDpf=g _e&TԄ   @}T    FNNNNÔSn5 vKvLX$$e """"1 bE$$B| """"D$$" " A`#+p "E$+#*O!3p 7 ,D$$8`#+3#@#3D$DFȋ3΋K3S{7`#+D)$"QTp {O3p K$$/be Z`#+3#@D$d'0|p#3ȋ3΋K3S  D$ǧ~"""""""G$$4@  """""XȒ$"@  """G($,"""@  ""D0""""@ 8# 8CBEb 8# 8C @1(& 0fpfeg _zt   @z`     NNNÔSnvK{covX$%    HĨ$43    8G#8! C838 83G$(*  KPC#+f  >P8+D(bj8K/G8K "G"GG|F B H D'DɅT#8+8K R#P&(јb8+8K+838 '#KY&"͆p ]#8+8K qD'q~#8+8K+838 lDDį#K |  D$d @^Hr7lA˔?vAM _Nz   @fz     NNNÔSnvK 1GwX$,~   i"GG' j  DȜ0R #8+8"G$8h*K !#8+8K+8G$$838 #K ,#8DȜ0-F+8K @#8+8D9_TK+838 ;#K KFۀ$b8#@8   @n IƫTlA_ZvA _ LM   @LM  õcMCwcMcwNNNÔSnvKgwX$'3G   +0#D$;CK   @@;? _ ;?   @%;?   aNNNÔSnvK1GfwX$$   G 8#@8  @H˔? vA _,V[M   @D[M  õcMCwcMcwNNNÔSnvKgwX$'3G   +0#D$;CK   @@a$[? _]d[?   @u$[?    õcMCwcMcwNNNÔSn-ssvK1GwX$$  PP bE$+DD f D$$ +D('k*P 7#@  D$$Nf8+P0#P L#"[ǔ$R1F @ 3  +P [dG8T#@ H#@ WGb#@+H @iI{˔?vA^s _LܔM   @dܔM  õcMCwcMcwNNNÔSnvKgwX$'3G   +0#D$;CK   @@˔? _}+˔?   @˔?   õcMCwcMcwNNNÔSn-ssvK1Gv*X$$  PP bE$$[H D%~@ #@ DG*# @ ' #@ .DGPv8#@ 5P @+H3PbE'$FbF +P0#P dE$$T DE$Eb < +P EȜpy#@ f +P0D$";~#P # @ uX$dG܎  +P #@ G'f#@ #@+H[ @SHvvAsW _̵s   @us FNNNÔvK#SGwX$$B bG($d  =#8+38D'%C#8#8K =#P'K*8+8C#8#8K X$Tv8 @`@> _ސb   @b   õcMCwcMcwNNNÔSng8Ч svKIʺκcoMwX80̇  @@+83Db<3  H `h# @@+XB;(ǡH3 P@@8+H3PhbGؒ$|*#@@# @@ D$$38?C0C A@CH+bpf( _8H~   @H~  NNNÔSnvK 1GqwXl   8#@8 X? @@vA _ +b   @+b  NNNÔSnvK_co1GRwXĢșh   . /P$%0$8#@8PC#(f  #P8DE9 +K,8K 2D$v*   @̿3@`vA' _z   @㫝z    ƅNNNÔSnȓÔv9#qKܷL$Ô:wX8$  C #F8X C8+P 8   8H'$C= 8#C  D$8x* K   G8$8    DF @II%,T.lA D> _6Ԕ   @ 6  įUIcaNNNÔSnXBvKUwX8$8  PC #+D8(f  P8+K)X$$d K  XP* @ӿ,@cvA$ _T   @@TDvKX$$α 3+S2D$'#):Z8#BX p PC @޿! _2RlA   @@JlAvKX$$; X )C @@ _rvA   @@vAvKX$6 #  @  _Tmt=   HocM@wcM`wss[ۋ1GH  =κʺH8Ч`o$$^2$$I2 _ DRAFTSYSBS eu 0010 REM GENERAL PURPOSE DRAFTING SYSTEM 0020 REM 0030 REM WRITEN BY: MARCUS BUNZ 0040 REM 0050 REM UMR COMPUTER SCIENCE DEPT. 0060 REM 0070 REM PLEASE ADDRESS ALL COMMENTS OR SUGGESTIONS TO: 0080 REM 0090 REM DR. HARDY J. POTTINGER 0100 REM UMR COMPUTER CENTER 0102 REM UNIVERSITY OF MO - ROLLA 0104 REM ROLLA MO. 65401 0106 REM (314) 341-4841 0120 REM 0130 REM 0140 REM 0150 REM COMMAND DESCRIPTIONS: 0160 REM 0170 REM FIGURE: TO DEFINE A USER SYMBOL 0180 REM SUBCOMMANDS: 0190 REM M - MOVE 0200 REM D - DRAW 0210 REM X - REMOVE LAST LINE 0220 REM E - END FIGURE MODE 0230 REM DESIGN: TO DESIGN A PAGE 0240 REM SUBCOMMANDS: LISTED ON SCREEN 0250 REM FILE: TO CHANGE FILES 0260 REM CHART: TO LIST A PAGE. 0270 REM PAGE: TO CHANGE PAGES 0280 REM PAGE#: PRINTS CURRENT PAGE NUMBER 0290 REM FILENAME: PRINTS THE CURRENT FILENAMES 0300 REM END: LEAVE SYSTEM AND CLOSE FILES 0310 REM 0320 REM 0330 REM 0335 CLOSE 0340 DIM C$[20],D$[13],F$[13] 0350 DIM L$[33],M$[20],N$[20] 0360 DIM Z$[10] 0370 DIM T$[1],S$[99],X$[1] 0380 GOSUB 0530 0390 REM GET A COMMAND 0400 CALL 1,2,0,100 0410 PRINT "COMMAND"; 0420 INPUT C$ 0430 IF C$="END" THEN GOTO 2790 0440 IF C$="FILE" THEN GOSUB 1860 0450 IF C$="CHART" THEN GOSUB 0810 0460 IF C$="FIGURE" THEN GOSUB 2250 0470 IF C$="DESIGN" THEN GOSUB 1340 0480 IF C$="END" THEN GOSUB 2790 0490 IF C$="PAGE" THEN GOSUB 3050 0500 IF C$="PAGE#" THEN GOSUB 3290 0510 IF C$="FILENAME" THEN GOSUB 3370 0520 GOTO 0400 0530 REM 0540 REM 0550 REM INIT 0560 REM 0570 REM 0580 CALL 2 0590 LET L$="ABCDEFGHIJKLMNOPQRSTUVWXYZ01234-" 0600 OPEN FILE[1,0],"TEMPCHART.CH" 0610 OPEN FILE[2,0],"TEMPCHART.FI" 0620 OPEN FILE[3,0],"TEMPCHART.CS" 0630 REM FORMAT THE SCREEN 0640 WRITE FILE[1,1],"-",0,1 0650 WRITE FILE[2,1],0,0,1 0660 WRITE FILE[3,1],1,"STRING" 0670 FOR I=100 TO 2000 STEP 100 0680 WRITE FILE[1,I+1],"-",0,1 0690 WRITE FILE[2,I],0,0,0 0700 NEXT I 0710 LET R=0 0720 LET S=2 0730 LET X=0 0740 LET Y=0 0750 LET X1=0 0760 LET Y1=0 0770 LET P=100 0780 LET D$="TEMPCHART.CH" 0790 LET F$="TEMPCHART.FI" 0800 RETURN 0810 REM 0820 REM 0830 REM CHART 0840 REM 0850 REM 0860 READ FILE[1,P+1],X$,X,N 0870 FOR I5=2 TO N 0880 READ FILE[1,P+I5],T$,X,Y 0890 IF T$="Z" THEN RETURN 0900 GOSUB 0940 0910 NEXT I5 0920 RETURN 0930 REM 0940 REM INT & DISP 0950 REM 0960 FOR I3=1 TO 32 0970 IF T$[1,1]=L$[I3,I3] THEN GOTO 1000 0980 NEXT I3 0990 RETURN 1000 IF I3>20 THEN GOTO 1050 1010 REM VALID FIGURE 1020 CALL 1,0,X,Y 1030 GOSUB 3450 1040 RETURN 1050 ON I3-20 THEN GOSUB 1120, 1080, 1150, 1120, 1120, 1120, 1200, 1230, 1260, 1290, 1320, 1120 1060 RETURN 1070 REM CV 1080 READ FILE[1,P+I5-1],T$,X1,Y1 1090 CALL 1,0,X1,Y1 1100 CALL 1,1,X,Y 1110 RETURN 1120 REM CNO 1130 RETURN 1140 REM CW 1150 READ FILE[3,Y],Y,S$ 1155 PRINT 1160 CALL 1,2,X,Y 1170 PRINT S$ 1180 RETURN 1190 REM C0 1200 LET R=0 1210 RETURN 1220 REM C1 1230 LET R=1 1240 RETURN 1250 REM C2 1260 LET R=2 1270 RETURN 1280 REM C3 1290 LET R=3 1300 RETURN 1310 REM C4 1320 LET S=X 1330 RETURN 1340 REM 1350 REM 1360 REM DESIGN 1370 REM 1380 READ FILE[1,P+1],X$,A,I5 1390 GOSUB 3710 1400 GOSUB 0810 1410 LET I5=I5+1 1420 CALL 3,0,T$,X,Y 1430 IF T$<>"4" THEN GOTO 1500 1440 CALL 1,2,10,10 1450 PRINT "SCALE FACTOR"; 1460 INPUT X 1470 WRITE FILE[1,P+I5],T$,X,Y 1480 LET S=X 1490 GOTO 1410 1500 IF T$<>"X" THEN GOTO 1700 1510 LET I9=2 1520 READ FILE[1,P+I9],S$,X1,Y1 1530 IF INT(X1/6)=INT(X/6) THEN IF INT(Y1/6)=INT(Y/6) THEN GOTO 1580 1540 IF INT(X1/6)=INT(X/6) THEN IF S$="W" THEN GOTO 1670 1550 LET I9=I9+1 1560 IF I9<=I5 THEN GOTO 1520 1570 GOTO 1420 1580 IF S$>="X" THEN GOTO 1520 1590 IF S$="U" THEN WRITE FILE[1,P+I9+1],"-",X1,Y1 1600 IF I9<3 THEN GOTO 1620 1610 IF S$="V" THEN WRITE FILE[1,P+I9-1],"-",X1,Y1 1620 WRITE FILE[1,P+I9],"-",X1,Y1 1630 WRITE FILE[1,P+1],"-",X,I5 1640 GOSUB 3710 1650 GOSUB 0810 1660 GOTO 1420 1670 READ FILE[3,Y1],N,S$ 1680 IF INT(Y/6)=INT(N/6) THEN GOTO 1620 1690 GOTO 1550 1700 IF T$<>"W" THEN GOTO 1790 1710 CALL 1,2,X,Y 1720 INPUT "",S$ 1730 READ FILE[3,1],N,X$ 1740 LET N=N+1 1750 WRITE FILE[1,P+I5],T$,X,N 1760 WRITE FILE[3,N],Y,S$ 1770 WRITE FILE[3,1],N,"STRING" 1780 GOTO 1410 1790 IF T$="Y" THEN GOTO 1630 1800 WRITE FILE[1,P+I5],T$,X,Y 1810 IF T$<>"Z" THEN GOTO 1840 1820 WRITE FILE[1,P+1],T$,X,I5-1 1830 RETURN 1840 GOSUB 0940 1850 GOTO 1410 1860 REM 1870 REM 1880 REM FILE 1890 REM 1900 REM 1910 CALL 2 1920 PRINT "NAME"; 1930 INPUT N$ 1940 PRINT "TYPE"; 1950 INPUT Z$ 1960 IF Z$[1,2]="FI" THEN GOTO 2000 1970 IF Z$[1,2]="CH" THEN GOTO 2040 1980 PRINT "ILLEAGLE TYPE; ENTER FI OR CH"; 1990 GOTO 1950 2000 LET N=2 2010 LET M$=N$,".FI" 2020 LET F$=M$ 2030 GOTO 2100 2040 LET M$=N$,".CS" 2050 CLOSE FILE[3] 2060 OPEN FILE[3,0],M$ 2070 LET N=1 2080 LET M$=N$,".CH" 2090 LET D$=M$ 2100 CLOSE FILE[N] 2110 OPEN FILE[N,0],M$ 2120 PRINT "NEW:OLD"; 2130 INPUT N$ 2140 IF "OLD"=N$ THEN RETURN 2150 WRITE FILE[N,1],"-",X,1 2160 IF N<>2 THEN GOTO 2210 2170 FOR I=100 TO 2000 STEP 100 2180 WRITE FILE[2,I],0,0,0 2190 NEXT I 2200 RETURN 2210 FOR M5=101 TO 2001 STEP 100 2220 WRITE FILE[1,M5],"-",X,1 2230 NEXT M5 2240 RETURN 2250 REM 2260 REM 2270 REM FIGURE 2280 REM 2290 REM 2300 GOSUB 3710 2310 CALL 1,2,0,70 2320 PRINT "SYMBOL TO BE DEFINED (A-T) "; 2330 INPUT T$ 2340 FOR I=1 TO 20 2350 IF T$=L$[I,I] THEN GOTO 2390 2360 NEXT I 2370 PRINT "ILLEGAL SYMBOL, TRY AGAIN (A-T) "; 2380 GOTO 2330 2390 CALL 1,0,250,250 2400 CALL 1,1,450,250 2410 CALL 1,1,450,450 2420 CALL 1,1,250,450 2430 CALL 1,1,250,250 2440 CALL 1,0,350,450 2450 CALL 1,0,340,350 2455 CALL 1,1,360,350 2460 CALL 1,0,350,340 2465 CALL 1,1,350,360 2480 LET X=350 2490 LET Y=350 2500 LET I2=I*100 2510 LET I2=I2+1 2520 CALL 3,0,T$,X1,Y1 2530 IF T$="M" THEN GOTO 2580 2540 IF T$="D" THEN GOTO 2680 2550 IF T$="X" THEN GOTO 2740 2560 IF T$="E" THEN GOTO 2720 2570 GOTO 2520 2580 REM MOVE 2590 LET M=0 2600 LET X2=(X1-X)/3 2610 LET Y2=(Y1-Y)/3 2620 LET X=X1 2630 LET Y=Y1 2640 WRITE FILE[2,I2],X2,Y2,M 2650 IF I2>=I*100+99 THEN GOTO 2720 2660 GOTO 2510 2670 REM DRAW 2680 LET M=1 2690 CALL 1,0,X,Y 2700 CALL 1,1,X1,Y1 2710 GOTO 2600 2720 WRITE FILE[2,I*100],X,Y,I2-1 2730 RETURN 2740 LET I2=I2-1 2750 READ FILE[2,I2],X3,Y3,M 2760 LET X=X-3*X3 2770 LET Y=Y-3*Y3 2780 GOTO 2520 2790 REM 2800 REM 2810 REM END 2820 REM 2830 REM 2840 CALL 2 2850 CLOSE 2860 IF D$<>"TEMPCHART.CH" THEN GOTO 2960 2870 PRINT "DISPLAY FILE NOT SAVED; SAVE OR DELETE"; 2880 INPUT Z$ 2890 IF Z$<>"SAVE" THEN GOTO 2960 2900 PRINT "SAVEFILE NAME"; 2910 INPUT N$ 2920 LET M$=N$,".CH" 2930 RENAME D$,M$ 2940 LET M$=N$,".CS" 2950 RENAME "TEMPCHART.CS",M$ 2960 IF F$<>"TEMPCHART.FI" THEN GOTO 3040 2970 PRINT "FIGURE FILE NOT SAVED; SAVE OR DELETE"; 2980 INPUT Z$ 2990 IF Z$<>"SAVE" THEN GOTO 3040 3000 PRINT "SAVEFILE NAME"; 3010 INPUT N$ 3020 LET N$=N$,".FI" 3030 RENAME F$,N$ 3040 STOP 3050 REM 3060 REM 3070 REM PAGE 3080 REM 3090 REM 3100 CALL 2 3110 PRINT "PAGE DESIRED"; 3120 INPUT P1 3130 IF P1=INT(P1) THEN IF P1>0 THEN IF P1<21 THEN GOTO 3160 3140 PRINT "ILLEAGLE PAGE, REENTER"; 3150 GOTO 3120 3160 LET F1=1 3170 PRINT "NEW:OLD"; 3180 INPUT C$ 3190 IF C$="OLD" THEN GOTO 3270 3200 READ FILE[1,P1*100+1],X$,X,P2 3210 IF P2=1 THEN GOTO 3270 3220 IF F1=0 THEN GOTO 3260 3230 LET F1=0 3240 PRINT "PAGE IN USE" 3250 GOTO 3170 3260 WRITE FILE[1,P1*100+1],"-",X,1 3270 LET P=P1*100 3280 RETURN 3290 REM 3300 REM 3310 REM PAGE# 3320 REM 3330 REM 3340 CALL 1,2,350,70 3350 PRINT "PAGE#=";P/100 3360 RETURN 3370 REM 3380 REM 3390 REM FILE NAME 3400 REM 3410 REM 3420 CALL 1,2,350,0 3430 PRINT F$;"/";D$ 3440 RETURN 3450 REM 3460 REM 3470 REM OUT FIG 3480 REM 3490 REM 3500 LET J1=I3*100 3510 READ FILE[2,J1],X$,D0,N 3520 IF N=0 THEN RETURN 3530 LET J1=J1+1 3540 IF J1>N THEN RETURN 3550 READ FILE[2,J1],X9,Y9,M 3560 ON R+1 THEN GOSUB 3590, 3620, 3650, 3680 3570 CALL 1,M,X,Y 3580 GOTO 3530 3590 LET X=X+X9*S 3600 LET Y=Y+Y9*S 3610 RETURN 3620 LET X=X-Y9*S 3630 LET Y=Y+X9*S 3640 RETURN 3650 LET X=X-X9*S 3660 LET Y=Y-Y9*S 3670 RETURN 3680 LET X=X+Y9*S 3690 LET Y=Y-X9*S 3700 RETURN 3710 REM FORMAT SCREEN 3720 CALL 2 3730 LET R=0 3740 LET S=1 3750 CALL 1,0,700,780 3760 CALL 1,1,700,0 3770 CALL 1,1,1023,0 3780 CALL 1,1,1023,780 3790 CALL 1,1,0,780 3800 CALL 1,1,0,0 3810 CALL 1,1,700,0 3820 CALL 1,0,0,90 3830 CALL 1,1,700,90 3840 LET S=1 3850 LET I3=0 3860 LET P1=710 3870 LET P3=760 3880 FOR J=1 TO 2 3890 LET P2=710 3900 LET P4=750 3910 FOR I=1 TO 10 3920 LET I3=I3+1 3930 CALL 1,2,P1,P2 3940 PRINT L$[I3,I3] 3950 LET X=P3 3960 LET Y=P4 3970 CALL 1,0,P3,P4 3980 GOSUB 3450 3990 LET P2=P2-70 4000 LET P4=P4-70 4010 NEXT I 4020 LET P1=P1+100 4030 LET P3=P3+100 4040 NEXT J 4050 CALL 1,2,P1,710 4060 PRINT "U START" 4070 CALL 1,2,P1,680 4080 PRINT " VECTOR" 4090 CALL 1,2,P1,640 4100 PRINT "V END" 4110 CALL 1,2,P1,610 4120 PRINT " VECTOR" 4130 CALL 1,2,P1,570 4140 PRINT "W ALPHA" 4150 CALL 1,2,P1,500 4160 PRINT "X REMOVE" 4170 CALL 1,2,P1,430 4180 PRINT "Y REDRAW" 4190 CALL 1,2,P1,360 4200 PRINT "Z END" 4210 CALL 1,2,P1,330 4220 PRINT " CHART" 4230 CALL 1,2,P1,290 4240 PRINT "0 0DEG" 4250 CALL 1,2,P1,220 4260 PRINT "1 90DEG" 4270 CALL 1,2,P1,150 4280 PRINT "2 180DEG" 4290 CALL 1,2,P1,80 4300 PRINT "3 270DEG" 4310 CALL 1,2,P1,10 4320 PRINT "4 SCALE" 4330 RETURN 4340 END PLOT d  .TITLE PLOT .ENT PLOT,OUTPUT,LOOP2,LOOP1,OVER,LOOP3,FIN .EXTN .TASK,PUTC,VECTOR .EXTD .FCAL,.CPYL,.FRET .NREL THET1=-167 THET2=-166 XP1=-165 YP1=-164 XP2=-163 YP2=-162 XP3=-161 YP3=-160 BXY=-157 X1=-156 Y1=-155 X2=-154 Y2=-153 ICOUNT=-152 FS=15. FS PLOT: JSR @.CPYL STA 3,SAV3 OUTPUT: LDA 3,SAV3 LDA 1,@THET1,3 STA 1,THETA LDA 1,@X1,3 STA 1,X LDA 1,@Y1,3 STA 1,Y LDA 1,TWO STA 1,LPCT2 LOOP1: LDA 1,G ADD 1,3 LDA 2,0,3 LDA 1,THETA LDA 0,ONE SUB 0,1 ADD 1,2 LDA 2,0,2 LDA 0,X ADD 0,2 STA 2,XCOORD INC 3,3 LDA 2,0,3 ADD 1,2 LDA 2,0,2 LDA 0,Y ADD 0,2 STA 2,YCOORD JSR @.VECT MODE0 XCOORD YCOORD LDA 3,SAV3 LDA 1,C ADD 1,3 STA 3,TEM3 LDA 1,THREE STA 1,LPCNT LDA 0,ESC JSR @.PUTC LDA 0,P JSR @.PUTC LDA 3,TEM3 LOOP2: LDA 2,0,3 LDA 1,THETA LDA 0,ONE SUB 0,1 ADD 1,2 LDA 2,0,2 LDA 0,X ADD 0,2 STA 2,XCOORD INC 3,3 LDA 2,0,3 ADD 1,2 LDA 2,0,2 LDA 0,Y ADD 0,2 STA 2,YCOORD STA 3,TEM3 JSR @.VECT MODE1 XCOORD YCOORD LDA 3,TEM3 INC 3,3 DSZ LPCNT JMP LOOP2 LDA 3,SAV3 LDA 1,@THET2,3 STA 1,THETA LDA 1,@X2,3 STA 1,X LDA 1,@Y2,3 STA 1,Y DSZ LPCT2 JMP LOOP1 JMP OVER G: -161 C: -165 SAV3: 0 .OUTPUT: OUTPUT US: 37 THETA: 0 X: 0 Y: 0 MODE0: 0 MODE1: 1 TWO: 2 LPCT2: 0 XCOORD: 0 YCOORD: 0 ONE: 1 TEM3: 0 THREE: 3 LPCNT: 0 ESC: 33 A: .TXT "a" P: .TXT "p" .PUTC: PUTC .VECT: VECTOR OVER: LDA 3,SAV3 LDA 2,BXY,3 LDA 1,@ICOUNT,3 MOVR 1,1,SNR JMP FIN STA 1,LPCNT LOOP3: LDA 1,0,2 STA 1,XCOORD INC 2,2 LDA 1,0,2 STA 1,YCOORD INC 2,2 JSR @.VECT MODE0 XCOORD YCOORD JSR @.VECT MODE1 XCOORD YCOORD INC 1,1 STA 1,YCOORD JSR @.VECT MODE1 XCOORD YCOORD DSZ LPCNT JMP LOOP3 FIN: LDA 0,ESC JSR @.PUTC LDA 0,A JSR @.PUTC LDA 3,SAV3 JSR @.FRET .END NIAL$ e2PROCEDURE NI(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE EO,EI,WO,WI,DRAW; IF I > 1 THEN BEGIN EO(I-1); EI(I-1); NI(I-1); WI(I-1); WO(I-1) END ELSE BEGIN Y := Y + H; DRAW; X := X + H; DRAW; Y := Y + H; DRAW; X := X - H; DRAW; Y := Y + H; DRAW END END; TFORTSVFORT4TFORTSVATCSCM e9 HOME,WINDOW,VIEWPORT,INPPI,INPP,RPOINT,APOINT,RDRAW,ADRAW,RMOVE,^ AMOVE,S2PTR,P2STR,P2STT,CLIPL,INPSI,INPS,PTREL,PTABS,DRREL,DRABS,^ MVREL,MVABS,XFRM,TINIT,ANMODE,ERASE,INSTR,OUTST,CHAR,GETC,PUTC,^ GLOBALS^ INPPIALF e4PROCEDURE INPPI(X,Y); REAL X,Y; COMMENT: ---------------------------------------------------- I N P P I THIS ROUTINE INPUTS THE POSITION OF THE CROSSHAIRS CURSOR IN PAGE COORDINATES. THE PROGRAM DOES NOT WAIT FOR A KEY TO BE PRESSED: THE POSITION IS READ IMMEDIATELY. EXTERNAL PROCEDURES: INPSI - INPUT CURRENT CROSSHAIRS POSITION IN SCREEN COORDINATES S2PTR - TRANSLATE SCREEN TO PAGE COORDINATES ----------------------------------------------------; BEGIN EXTERNAL PROCEDURE INPSI,S2PTR; INTEGER SX,SY; INPSI(SX,SY); S2PTR(SX,SY,X,Y) END; MOONBS  ex0010 REM******************************************* 0020 REM* * 0030 REM* MOON * 0040 REM* * 0050 REM* MOON SIMULATES A LUNAR LANDER ON A * 0060 REM* DGC NOVA WITH EXTENDED BASIC AND A * 0070 REM* TEKTRONIX T-401X GRAPHICS DISPLAY * 0080 REM* IT REQUIRES THE GRAPHIC PRIMITIVES * 0090 REM* SUPPLIED BY 'TEKPACK'. * 0100 REM* USER CONTROL OF THE LANDER IS VIA THE * 0110 REM* T-401X THUMBWHEELS. CONTROL IS IN 2-D * 0120 REM* WITH USER CONTROL OVER THRUST AND ROTA- * 0130 REM* TION. LUNAR GRAVITY IS SIMULATED AND * 0140 REM* THE DISPLAY OCCURS IN 2 MAGNIFICATIONS * 0150 REM* THE SIMULATION STARTS IN HIGH ALTITUDE * 0160 REM* MODE AND SWITCHES LATER TO A LOW * 0170 REM* ALTITUDE, HIGH MAGNIFICATION MODE. * 0171 REM* FUEL CONSUMPTION IS ALSO SIMULATED WITH * 0172 REM* TOTAL FUEL REMAINING DISPLAYED, SO * 0173 REM* DON'T WASTE TOO MUCH TIME OR YOU'LL * 0174 REM* RUN OUT OF FUEL! * 0180 REM******************************************* 0190 DIM D$[1] 0200 LET A2=0 0210 LET W=0 0220 LET S=1 0230 GOSUB 0250 0240 GOTO 0480 0250 CALL 2 0260 CALL 1,2,700,740 0270 IF W=0 THEN PRINT "HIGH ALTITUDE DISPLAY" 0280 IF W=1 THEN PRINT "LOW ALTITUDE DISPLAY" 0290 CALL 1,0,0,0 0300 FOR O=4 TO 1020 STEP 4 0305 LET R9=RND(0)*7 0310 CALL 1,1,O,R9 0320 NEXT O 0330 CALL 1,1,1023,0 0340 IF S=0 THEN RETURN 0350 CALL 1,0,5,100 0360 CALL 1,1,15,100 0370 CALL 1,0,10,100 0380 CALL 1,1,10,300 0390 CALL 1,0,5,300 0400 CALL 1,1,15,300 0410 CALL 1,2,20,297 0420 PRINT "FULL" 0430 CALL 1,2,20,97 0440 PRINT "EMPTY" 0450 CALL 1,2,25,197 0460 PRINT "FUEL LEVEL" 0470 RETURN 0480 LET W=0 0490 LET A=135*.017533 0500 LET T=800 0510 LET M=4000 0520 LET F=2200 0530 LET X=10 0540 LET Y=700 0550 LET V1=15 0560 LET V2=-8 0570 REM 0580 LET Z1=T/M 0590 LET Z62=COS(A) 0600 LET Z3=SIN(A) 0610 LET V1=V1+Z1*Z2 0620 LET V2=V2+Z1*Z3-.3048 0630 LET X=X+V1 0640 LET Y=Y+V2 0650 IF F>15 THEN GOTO 0700 0660 LET M=1800 0670 LET S=0 0680 LET T=0 0690 GOTO 0790 0700 LET Z1=.005*T 0710 IF Z11015 THEN GOTO 1470 0800 IF X<0 THEN GOTO 1470 0810 IF Y>750 THEN GOTO 1470 0820 LET Z8=T/2000 0830 LET Z6=20*Z2 0840 LET Z7=20*Z3 0850 LET Z4=5*Z3 0860 LET Z5=5*Z2 0870 IF Y-Z5<0 THEN GOTO 1660 0880 IF Y+Z5<0 THEN GOTO 1660 0890 IF Y+Z7<0 THEN GOTO 1660 0900 IF Y<100 THEN IF V2>-20 THEN IF S<>0 THEN GOTO 1010 0910 IF Y<150 THEN IF W=1 THEN GOTO 1010 0920 IF W=0 THEN GOTO 1190 0930 LET W=0 0940 GOSUB 0250 0950 IF S=0 THEN GOTO 1190 0960 FOR J=INT(U) TO 300 0970 CALL 1,0,5,J 0980 CALL 1,1,15,J 0990 NEXT J 1000 GOTO 1190 1010 IF W=1 THEN GOTO 1150 1020 LET W=1 1030 LET B1=X-96 1040 LET B2=X+96 1050 GOSUB 0250 1060 IF S=0 THEN GOTO 1150 1070 FOR J=INT(U) TO 300 1080 CALL 1,0,5,J 1090 CALL 1,1,15,J 1100 NEXT J 1110 IF S<3 THEN GOTO 1150 1120 LET S=1 1130 LET T=RND(0)*10000 1140 GOTO 0570 1150 IF XB2 THEN GOTO 1030 1170 LET X=(X-B1-4)*5 1180 LET Y=Y*5 1190 CALL 1,0,X,Y 1200 CALL 1,1,X+Z4,Y-Z5 1210 CALL 1,1,X+Z6,Y+Z7 1220 CALL 1,1,X-Z4,Y+Z5 1230 CALL 1,1,X+.5*Z4,Y-.5*Z5 1240 IF Y-Z7*Z8>0 THEN GOTO 1320 1250 CALL 1,1,X+4,2 1260 CALL 1,1,X+8,2 1270 CALL 1,1,X+25,10 1280 CALL 1,1,X-25,10 1290 CALL 1,1,X-8,2 1300 CALL 1,1,X-4,2 1310 GOTO 1330 1320 CALL 1,1,X-Z6*Z8,Y-Z7*Z8 1330 CALL 1,1,X-.5*Z4,Y+.5*Z5 1340 CALL 1,2,0,740 1350 IF W=0 THEN GOTO 1380 1360 LET X=X/5+B1+4 1370 LET Y=Y/5 1380 REM 1390 IF S=0 THEN GOTO 0570 1400 CALL 3,1,D$,A2,T 1410 LET T=T*5 1420 LET A=A-((A2-512)*1.7533E-04) 1430 IF T<0 THEN LET T=0 1440 IF S<3 THEN GOTO 0570 1450 IF T=0 THEN GOTO 1400 1460 GOTO 1020 1470 IF Y>0 THEN GOTO 1550 1480 IF W=1 THEN LET X=(X-B1-4)*5 1490 FOR Q=1 TO 30 1500 CALL 1,0,X,0 1510 LET Q2=RND(0) 1515 LET R9=COS(Q2*3.14)*Q*10 1520 CALL 1,1,R9,Q 1530 NEXT Q 1540 GOTO 1560 1550 CALL 2 1560 FOR I=1 TO 50 1570 PRINT "<7>"; 1580 FOR J=1 TO 10 1590 PRINT "<0>"; 1600 NEXT J 1610 NEXT I 1620 CALL 1,2,0,750 1630 PRINT "YOU CRASHED" 1640 GOTO 1990 1650 CALL 2 1660 IF ABS(V1)<2 THEN IF ABS(V2)<3 THEN GOTO 1680 1670 GOTO 1470 1680 CALL 2 1690 IF W=1 THEN LET X=(X-B1-4)*5 1700 CALL 1,0,0,0 1710 CALL 1,1,1023,0 1720 CALL 1,0,X,Y+5 1730 CALL 1,1,X+5,Y+5 1740 CALL 1,1,X,Y+25 1750 CALL 1,1,X-5,Y+5 1760 CALL 1,1,X+2,Y+5 1770 CALL 1,1,X+2,Y+3 1780 CALL 1,1,X+4,0 1790 CALL 1,1,X-4,0 1800 CALL 1,1,X-2,Y+3 1810 CALL 1,1,X-2,Y+5 1820 CALL 1,0,X+20,0 1830 CALL 1,1,X+20,15 1840 CALL 1,1,X+30,15 1850 CALL 1,1,X+30,10 1860 CALL 1,1,X+20,10 1870 CALL 1,0,X+20,13 1880 CALL 1,1,X+23,13 1890 CALL 1,2,500,300 1900 PRINT "--- GOOD LANDING ---" 1910 CALL 1,2,0,750 1920 LET F=F+500 1930 LET U=F/11+100 1940 LET M=M+500 1950 LET V1=0 1960 LET V2=0 1970 LET Y=10 1980 LET S=3 1990 PRINT "HIT RETURN TO PLAY AGAIN"; 2000 INPUT D$ 2010 GOTO 0200 CURVEAL e9 CURVE:BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE MOOVE,DRAW,TINIT,HOME,GCOUT; EXTERNAL PROCEDURE NO,EO,SO,WO; LITERAL H0(128),XOFFSET(256),YOFFSET(128); STRING STR; INTEGER I,J,N; GCOUT(STR); IF STR = "$TTO" THEN STR := "COM.CM" ELSE STR := "FCOM.CM"; OPEN(0,STR); COMARG(0,STR); STR := "1"; COMARG(0,STR); I := STR; COMARG(0,STR); N := STR; CLOSE(0); IF N > 8 THEN N := 8; IF I > N THEN I := N; TINIT(0); X := 3*H0 + XOFFSET; Y := H0 + YOFFSET; H := 2 * H0; FOR J := 1 STEP 1 UNTIL I-1 DO BEGIN H := H/2; X := X - H - H/2; Y := Y + H + H/2 END; FOR I := I STEP 1 UNTIL N DO BEGIN H := H/2; X := X - H - H/2; Y := Y + H + H/2; MOOVE; EO(I); SO(I); WO(I); NO(I) END; HOME END; JTINITAL e4PROCEDURE TINIT(baud); INTEGER baud; COMMENT: ---------------------------------------------- T I N I T This routine initializes the ATCS globals (external variables) and erases the screen. External variables: BEAMX,BEAMY - Current coordinate of beam TDELAY - Number of nulls for erase delay PX,PY - page coordinate virtual "beam" position XPS,YPS - Page to screen coordinate conversion factors PXL,PXH - X boundaries of page window PYL,PYH - Y boundaries of page window SXL,SXH - X boundaries of screen viewport SYL,SYH - Y boundaries of screen viewport External procedures: ERASE - Erase the screen and provide delay Input variable: baud - The baud rate of this terminal. (E.G. 9600 means 960 characters a second.) The number of delay nulls needed is computed to provide 1/2 second delay. -------------------------------------------------; BEGIN EXTERNAL INTEGER BEAMX,BEAMY,TDELAY; EXTERNAL REAL PX,PY,XPS,YPS, PXL,PXH,PYL,PYH; EXTERNAL INTEGER SXL,SXH,SYL,SYH; EXTERNAL PROCEDURE ERASE; BEAMX := BEAMY := -1; TDELAY := (baud+19)/20; ERASE; PXL := PYL := 0.0; PXH := 1023.0; PYH := 780.0; SXL := SYL := 0; SXH := 1023; SYH := 780; XPS := YPS := 1.0; PX := PY := -1.0 END; ERASEAL e6PROCEDURE ERASE; COMMENT: ------------------------------------------------- E R A S E This routine erases the screen and provides a 1/2 second delay by outputting the appropriate number of nulls. External variables: TMODE - Current mode of terminal TDELAY - Number of delay nulls required External procedures: PUTC - Output a character --------------------------------------------------; BEGIN LITERAL esc(27), ff(12), alphmode(2); EXTERNAL INTEGER TMODE,TDELAY; EXTERNAL PROCEDURE PUTC; INTEGER i; PUTC(esc); PUTC(ff); TMODE := alphmode; FOR i := 1 STEP 1 UNTIL TDELAY DO PUTC(0) END; VECTOR{ d  .TITLE VECTOR .NREL .EXTN PUTC .ENT VECTOR,XEXTN,YEXTN,MODE VECTOR: STA 0,SAVE0 STA 1,SAVE1 STA 2,SAVE2 STA 3,SAVE3 LDA 0,@0,3 STA 0,MODE LDA 1,ONE SUB# 0,1,SNR JMP NO.GS LDA 0,GS JSR @.PUTC ;SEND Y HIGH BITS NO.GS: LDA 3,SAVE3 LDA 0,@2,3 STA 0,YEXTN MOV 0,2 ADDZL 0,0 MOVZL 0,0 MOVZS 0,0 LDA 1,MASKL AND 1,0 LDA 1,YXHCTL ADD 1,0 JSR @.PUTC ;SEND Y LOW BITS MOV 2,0 LDA 1,MASKL AND 1,0 LDA 1,YLCTL ADD 1,0 JSR @.PUTC ;SEND X HIGH BITS LDA 3,SAVE3 LDA 0,@1,3 ;XCOORD STA 0,XEXTN MOV 0,2 ADDZL 0,0 MOVZL 0,0 MOVZS 0,0 LDA 1,MASKL AND 1,0 LDA 1,YXHCTL ADD 1,0 JSR @.PUTC ;SEND X LOW BITS MOV 2,0 LDA 1,MASKL AND 1,0 LDA 1,XLCTL ADD 1,0 JSR @.PUTC ;NEED TO CHANGE CRT STATUE?? LDA 3,SAVE3 MOV 3,2 LDA 0,@0,3 LDA 1,TWO SUB# 0,1,SZR JMP EXIT LDA 0,US JSR @.PUTC EXIT: LDA 0,SAVE0 LDA 1,SAVE1 LDA 2,SAVE2 LDA 3,SAVE3 JSR 3,3 SAVE0: 0 SAVE1: 0 SAVE2: 0 SAVE3: 0 XEXTN: 0 YEXTN: 0 MODE: 0 .PUTC: PUTC MASKL: 37 YXHCTL: 40 YLCTL: 140 XLCTL: 100 ONE: 1 TWO: 2 C: 0 CONS: 100. ESC: 33 FF: 14 GS: 35 US: 37 .RDX 10 XL: 0 YU: 767 .RDX 8 .END INIT  du2 PARAMETER L=72 SUBROUTINE INIT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C GLOBALS ARE AS DESCRIBED IN THE MAINLINE EXCEPT FOR C SEED - A RANDOM NUMBER GENERATOR STARTER. C THE VARIABLES INITIALIZED MAY BE USER INPUT OR DEFAULT VALUES. C CCCCCC C INIT IS INVOKED TO INITIALIZE VARIABLES AND OUTPUT THE C BATTLEGROUND ON THE SCREEN. C C THE FOLLOWING VARIABLES ARE INITIALIZED: C C THETA1,THETA2,NTHETA,TANCOS,TANSIN,BOMCOS,BOMSIN C XP1,XP2,XP3,YP1,YP2,YP3,X1,X2,Y1,Y2,IX1,IX2,IY1,IY2 C BUNKER,ICOUNT,RANGE1,RANGE2,MOVE1,MOVE2,TURN1,TURN2 C FIRE1,FIRE2,SCORE1,SCORE2. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC COMMON THETA1,THETA2,NTHETA,TANCOS,TANSIN,BOMCOS,BOMSIN,XP1,XP2,XP3,YP1,YP2, +YP3,BXY,X1,Y1,X2,Y2,ICOUNT,IX1,IY1,IX2,IY2,BUNKER, +RANGE1,RANGE2,SCORE1,SCORE2 COMMON /SEED/ SEED COMMON /GARF/ MOVE1,TURN1,MOVE2,TURN2,FIRE1,FIRE2,FLAG INTEGER THETA1,THETA2,NTHETA,XP1(L),XP2(L),XP3(L),YP1(L),YP2(L),YP3(L),BXY(20), +BUNKER(26,20),MOVE1,TURN1,MOVE2,TURN2,SCORE1,SCORE2,FIRE1,FIRE2,FLAG REAL TANCOS(L),TANSIN(L),BOMCOS(L),BOMSIN(L),X1,Y1,X2,Y2,RANGE1,RANGE2 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SET BUNKER GRID TO ZERO C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC DO 1 I=1 , 26 DO 1 J=1,20 BUNKER(I,J)=0 1 CONTINUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C SET ALL EDGE GRID BUNKERS TO 1 TO INSURE A BORDER C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC DO 10 I=1,26 BUNKER(I,1)=1 BUNKER(I,20)=1 10 CONTINUE DO 20 I=1,20 BXY(I)=0 BUNKER(1,I)=1 BUNKER(26,I)=1 20 CONTINUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C INIT THE RANDOM NUMBER GENERATOR FROM THE TIME OD DAY CLOCK C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SEED=0 R=RAND(SEED) CALL FGTIM(IHR,IMIN,ISEC) SEED=(IMIN*ISEC+1)/5124.6278 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C ESTABLISH THE DEFAULT VALUES FOR VARIOUS VARIABLES C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC NTHETA=72 ICOUNT=0 XT1=30.0 XT2=-20 XT3=-20 YT1=0.0 YT2=10.0 YT3=-10.0 CT=8.0 CB=30.0 RANGE1=25.0 RANGE2=25.0 MOVE1=1 MOVE2=1 TURN1=1 TURN2=1 SCORE1=0 SCORE2=0 FIRE1=0 FIRE2=0 FLAG=0 NOBUNK=20 TYPE 'DO YOU WISH TO CHANGE PARAMETERS? (1 OR 0)' ACCEPT N IF(N.EQ.0)GOTO 35 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C INPUT INITIAL VALUES FROM THE KEYBOARD C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC TYPE 'ENTER NUMBER OF ANGULAR DIVISIONS (<=72)' ACCEPT NTHETA TYPE 'ENTER TANK SPEED, BOMB SPEED' ACCEPT CT,CB TYPE 'ENTER RELATIVE TANK VERTICES (X1,Y1,X2,Y2,X3,Y3)' ACCEPT XT1,YT1,XT2,YT2,XT3,YT3 TYPE 'ENTER TANK1 HIT DIAMETER, TANK2 HIT DIAMETER' ACCEPT RANGE1, RANGE2 TYPE 'ENTER NO OF BUNKERS' ACCEPT NOBUNK CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C RANDOMLY DISTRIBUTE NOBUNK NUMBER OF BUNKERS INTO THE BATTLEGROUND C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 35 DO 40 I=1,NOBUNK IX=24*RAND(SEED)+1 IY=18*RAND(SEED)+1 BUNKER(IX,IY)=1 40 CONTINUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C RANDOMLY DITRIBUTE AND ORIENT THE TWO TANK IMAGES & ZERO THE CORRESPONDING C C GRID LOCATIONS TO INSURE THAT THE TANKS ARE NOT WITHIN A BUNKER. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC I=11*RAND(SEED)+2 J=17*RAND(SEED)+2 IX1=38*I-19 X1=IX1 IY1=38*J-19 Y1=IY1 BUNKER(I,J)=0 THETA1=(NTHETA-1)*RAND(SEED)+1 I=11*RAND(SEED)+14 J=17*RAND(SEED)+2 IX2=38*I-19 X2=IX2 IY2=38*J-19 Y2=IY2 BUNKER(I,J)=0 THETA2=(NTHETA-1)*RAND(SEED)+1 TINCR=3.14159*2.0/NTHETA THET=0.0 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C INIT TANCOS,TANSIN,BOMCOS,BOMSIN,XP1,XP2,XP3,YP1,YP2,YP3 C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC DO 100 I=1,NTHETA A=COS(THET) B=SIN(THET) TANCOS(I)=CT*A TANSIN(I)=CT*B BOMCOS(I)=CB*A BOMSIN(I)=CB*B XP1(I)=XT1*A-YT1*B XP2(I)=XT2*A-YT2*B XP3(I)=XT3*A-YT3*B YP1(I)=XT1*B+YT1*A YP2(I)=XT2*B+YT2*A YP3(I)=XT3*B+YT3*A THET=THET+TINCR 100 CONTINUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C OUTPUT THE BATTLEGROUND BY PLOTTING THE SQUARES THAT EQUAL 1 C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CALL ERASE DO 150 I=1,26 DO 150 J=1,20 IF(BUNKER(I,J).EQ.1)CALL PLOTB((I-1)*38,(J-1)*38) 150 CONTINUE RETURN END VIEWPORTAL e4PROCEDURE VIEWPORT(X1,Y1,X2,Y2); VALUE X1,Y1,X2,Y2; INTEGER X1,Y1,X2,Y2; COMMENT: ------------------------------------------------------- V I E W P O R T THIS ROUTINE SETS THE VIEWPORT BOUNDARES OF THE CURRENT PAGE VIEWPORT. POINTS X1,Y1 AND X2,Y2 MUST SPECIFY OPPOSING CORNERS OF THE VIEWPORT. EXTERNAL VARIABLES: PXL,PXH - X BOUNDARIES OF PAGE WINDOW PYL,PYH - Y BOUNDARIES OF PAGE WINDOW SXL,SXH - X BOUNDARIES OF SCREEN WINDOW SYL,SYH - Y BOUNDARIES OF SCREEN WINDOW XPS,YPS - PAGE TO SCREEN CONVERSION FACTORS -------------------------------------------------------; BEGIN EXTERNAL REAL PXL,PXH,PYL,PYH,XPS,YPS; EXTERNAL INTEGER SXL,SXH,SYL,SYH; IF X1 < X2 THEN BEGIN SXL := X1; SXH := X2 END ELSE BEGIN SXL := X2; SXH := X1 END; IF Y1 < Y2 THEN BEGIN SYL := Y1; SYH := Y2 END ELSE BEGIN SYL := Y2; SYH := Y1 END; XPS := (SXH-SXL) / (PXH-PXL); YPS := (SYH-SYL) / (PYH-PYL) END; RPOINTAL} e6RPROCEDURE RPOINT(DX,DY); VALUE DX,DY; REAL DX,DY; COMMENT: ----------------------------------------------------- R P O I N T THIS ROUTINE PLOTS A SINGLE POINT RELATIVE TO THE CURRENT PAGE COORDINATE. DX AND DY ARE SIGNED REAL NUMBERS SPECIFYING THE RELATIVE POSITION OF THE ENDPOINT. EXTERNAL VARIABLES: PX - CURRENT X POSITION OF VIRTUAL "BEAM" PY - CURRENT Y POSITION OF VIRTUAL "BEAM" EXTERNAL PROCEDURES: APOINT - PLOT A POINT AT ABSOLUTE PAGE COORDINATE -----------------------------------------------------; BEGIN EXTERNAL REAL PX,PY; EXTERNAL PROCEDURE APOINT; APOINT(PX+DX,PY+DY) END; INPSIAL e9 ;PROCEDURE INPSI(X,Y); INTEGER X,Y; COMMENT: ------------------------------------------------- I N P S I THIS ROUTINE INPUTS THE CURRENT POSITION OF THE CROSSHAIRS CURSOR. THE PROGRAM DOES NOT WAIT FOR A KEY TO BE PRESSED: THE POSITION IS READ IMMEDIATELY. EXTERNAL VARIABLES: TMODE - CURRENT MODE OF TERMINAL BEAMX - CURRENT X COORDINATE OF BEAM TDELAY - NUMBER NULLS NEEDED FOR 1/2 SEC DELAY EXTERNAL PROCEDURES: PUTC - OUTPUT A CHARACTER TO THE TERMINAL GETC - GET A CHATACTER FROM THE TERMINAL MVABS - MOVE TO AN ABSOLUTE SCREEN COORDINATE ------------------------------------------------; BEGIN LITERAL ESC(27),SUB(26),ENQ(5), MASK(11111R2),GINMODE(4); EXTERNAL INTEGER TMODE,BEAMX,TDELAY; EXTERNAL PROCEDURE GETC,PUTC,MVABS; INTEGER HI,LO,D,I; PUTC(ESC); PUTC(SUB); COMMENT: PROVIDE DELAY; D := IF TDELAY = 0 THEN 480 ELSE TDELAY; D := D * 3 / 100; FOR I := 1 STEP 1 UNTIL D DO PUTC(0); PUTC(ESC); PUTC(ENQ); GETC(HI); HI := HI AND MASK; GETC(LO); LO := LO AND MASK; X := HI*32 + LO; GETC(HI); HI := HI AND MASK; GETC(LO); LO := LO AND MASK; Y := HI*32 + LO; GETC(LO) END; MOVEAL[ e2PROCEDURE MOOVE; BEGIN EXTERNAL INTEGER X,Y; EXTERNAL PROCEDURE MVABS; MVABS(X,Y) END; DRAWALZ e2PROCEDURE DRAW; BEGIN EXTERNAL INTEGER X,Y; EXTERNAL PROCEDURE DRABS; DRABS(X,Y) END; SYSLBSYSLBGETCSR e4 .TITL GETC ;-------------------------------------------- ; ; G E T C ; ; THIS ROUTINE INPUTS A CHARACTER FROM THE ; TERMINAL AND RETURNS ITS BINARY VALUE ; AS AN INTEGER. ; ; EXAMPLE CALL: ; ; GETC(ICHAR); ; ; RETURN VARIABLE: ; ; ICHAR - AN INTEGER CONTAINING THE BINARY ; EQUIVALENT OF THE CHARACTER INPUT ; ;-------------------------------------------- .EXTU .NREL S= -167 SP= 1B0-S ICHAR= S CSIZE= ICHAR+1-S INTPAR= 2B7+1B11+1 .ENT GETC GETC: JSR @SAVE ; ENTER CSIZE ; STACK SIZE 1 ; 1 ARGUMENT SP+ICHAR ; LOCATION ON STACK INTPAR ; INTEGER PARAMETER STA 3,USP ; SAVE: RESTORED BY RDOS .SYSTM .GCHAR ; GET THE CHARACTER JMP .+1 ; NO ERRORS LDA 1 C177 ; MASK AND 1,0 ; MASK TO 7 BITS STA 0,ICHAR,3; RETURN THE VALUE JSR @RETURN ; BYE C177: 177 .END SPLOT% d .TITLE SPLOT .EXTN VECTOR,PUTC .EXTD .FRET,.CPYL .ENT LOOP SPLOT .NREL XSCORE= -167 YSCORE= -166 XEXPL=-165 YEXPL=-164 FS= 4 SPLOT: JSR @.CPYL STA 3,SAV3 LDA 1,C50 STA 1,LPC LDA 1,@XEXPL,3 STA 1,XCENT LDA 2,C128 ADD 2,1 STA 1,XCENM LDA 1,@YEXPL,3 STA 1,YCENT ADD 2,1 STA 1,YCENM JSR @.VECT MODE0 XCENT YCENT LDA 0,ESC JSR @.PUTC LDA 0,P JSR @.PUTC LDA 2,.SPLOT LOOP: LDA 0,MAS2K LDA 1,0,2 AND 0,1 LDA 3,XCENM ADD 3,1 STA 1,XCOORD INC 2,2 LDA 1,0,2 AND 0,1 LDA 3,YCENM ADD 3,1 STA 1,YCOORD JSR @.VECT MODE1 YCOORD XCOORD JSR @.VECT MODE1 XCENT YCENT LDA 0,BELL JSR @.PUTC DSZ LPC JMP LOOP LDA 0,ESC JSR @.PUTC LDA 0,G JSR @.PUTC LDA 3,SAV3 LDA 1,@XSCORE,3 LDA 2,@YSCORE,3 STA 1,XCOORD STA 2,YCOORD JSR @.VECT MODE0 XCOORD YCOORD LDA 0,C38 ADD 0,1 ADD 0,2 STA 1,XCOORD STA 2,YCOORD JSR @.VECT MODE1 XCOORD YCOORD SUB 0,1 STA 1,XCOORD JSR @.VECT MODE0 XCOORD YCOORD ADD 0,1 SUB 0,2 STA 1,XCOORD STA 2,YCOORD JSR @.VECT MODE1 XCOORD YCOORD LDA 3,SAV3 JSR @.FRET .SPLOT: SPLOT .VECT: VECTOR .PUTC: PUTC SAV3: 0 C50: 65. LPC: 0 XCENT: 0 YCENT: 0 XCOORD: 0 YCOORD: 0 MODE1: 1 MODE0: 0 ESC: 33 P: 160 G: 147 MASK: 377 BELL: 7 C128: -128. XCENM: 0 YCENM: 0 C38: 38. .END NOAL e2PROCEDURE NO(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE NI,DRAW; IF I > 1 THEN BEGIN NO(I-1); NI(I-1); NO(I-1) END ELSE BEGIN X := X - H; DRAW; Y := Y + H; DRAW; X := X + H; DRAW END END; ANMODEAL e4PROCEDURE ANMODE; COMMENT: ------------------------------------------------ A N M O D E This routine returns the terminal to alphanumeric mode. External variables: TMODE - Current mode of terminal External procedures: PUTC - Output a character -------------------------------------------------; BEGIN LITERAL us(31), alphmode(2); EXTERNAL INTEGER TMODE; EXTERNAL PROCEDURE PUTC; PUTC(us); TMODE := alphmode END; INSTRAL e9_PROCEDURE INSTR(STR); STRING STR; COMMENT: ---------------------------------------------- I N S T R THIS ROUTINE INPUTS A CHARACTER STRING FROM THE TERMINAL. CHARACTERS ARE INPUT UP TO A CARRIAGE RETURN. THE CARRIAGE RETURN IS NOT RETURNED AS PART OF THE STRING. EXTERNAL PROCEDURES: GETC - GET A CHARACTER FROM THE TERMINAL CHAR - CONVERT AN INTEGER TO A CHARACTER ----------------------------------------------; BEGIN LITERAL CR(13); EXTERNAL PROCEDURE GETC,PUTC,CHAR; INTEGER P,ICHAR; P := 0; LAB: P := P + 1; GETC(ICHAR); PUTC(ICHAR); CHAR(SUBSTR(STR,P),ICHAR); IF ICHAR <> CR THEN GOTO LAB; SETCURRENT(STR,P) END; RAND e  REAL FUNCTION RAND(SEED) IF (SEED.EQ.0.0)GOTO 100 A=5*EXP(SEED*3.14159) SEED=A-IFIX(A) RAND=SEED RETURN 100 RAND=.1 RETURN END INPPAL| e4PROCEDURE INPP(STR,X,Y); STRING STR; REAL X,Y; COMMENT: ---------------------------------------------------- I N P P THIS ROUTINE INPUTS A POINT FROM THE TERMINAL IN PAGE COORDINATES. THE CROSSHAIRS CURSOR IS TURNED ON AND THE PROGRAM WAITS FOR A KEY TO BE PRESSED. THE VALUE OF THE KEY AND THE POSITION OF THE CROSSHAIRS ARE RETURNED. EXTERNAL PROCEDURES: INPS - INPUT A POINT IN SCREEN COORDINATES S2PTR - TRANSLATE FROM SCREEN TO PAGE COORDINATES ----------------------------------------------------; BEGIN EXTERNAL PROCEDURE INPS,S2PTR; INTEGER SX,SY; INPS(STR,SX,SY); S2PTR(SX,SY,X,Y) END; AMOVEAL e9IPROCEDURE AMOVE(X,Y); VALUE X,Y; REAL X,Y; COMMENT: -------------------------------------------------------- A M O V E THIS ROUTINE MOVES THE VIRTUAL "BEAM" TO THE ABSOLUTE PAGE COORDINATES X,Y. EXTERNAL VARIABLES: TMODE - CURRENT MODE OF TERMINAL PX - CURRENT X POSITION OF VIRTUAL BEAM PY - CURRENT Y POSITION OF VIRTUAL BEAM --------------------------------------------------------; BEGIN LITERAL GRAPHMODE(1); EXTERNAL INTEGER TMODE; EXTERNAL REAL PX,PY; PX := X; PY := Y; TMODE := GRAPHMODE END; MVRELALh e3"PROCEDURE MVREL(Dx,Dy); VALUE Dx,Dy; INTEGER Dx,Dy; COMMENT: ----------------------------------------------- M V R E L This routine moves the beam (dark vector) relative to its current screen position. Dx and Dy are signed integers specifying the relative motion in raster units. External variables: BEAMX - Current X position of beam BEAMY - Current Y position of beam External procedures: MVABS - Move to absolute screen position -----------------------------------------------; BEGIN EXTERNAL INTEGER BEAMX,BEAMY; EXTERNAL PROCEDURE MVABS; MVABS(BEAMX+Dx,BEAMY+Dy) END; MASTER d- CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C MAINLINE FOR PROJECT TANK. C C C C WRITTEN BY KEVIN DARBY C C ROBIN STEGE C C C C FINAL PROJECT CSC 313 C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C TANK SIMULATES THE MOVEMENT AND FIRE OF TWO USER CONTROLLED TANK- C C LIKE IMAGES. INPUT IS FROM THE KEYBOARD OF A TEKTRONIX 4014-1 C C DVST WITH THE FOLLOWING EFFECT: C C C C KEY EFFECT C C TANK1 (LEFT) TANK2 (RIGHT) C C D ; MOVE CORRESPONDING TANK FORWARD C C S L STOP FORWARD MOTION C C Z , START CORRES@PONDING TANK TURNING COUNTER CLOCKWISE C C / START CORRESPONDING TANK TURNING CLOCKWISE C X . STOP TURNING CORRESPONDING TANK C C A K FIRE BOMB FROM CORRESPONDING TANK C C C C OUTPUT IS THE SAME 4014 UNIT IN 2 MODES: 1) THE INITIAL BATTLEGROUND IS  C C DRAWN IN NORMAL GRAPHICS MODE. THIS CONSISTS OF A RECTANGULAR BORDER WITH C C A RANDOM DISTRIBUTION OF A NUMBER OF SQUARE "BUNKERS". AFTER INITIALIZATION C C OUTPUT OF THE TANK, BOMB, AND EXPLOSION IMAGES ARE DONE IN WRITE-THRU MODE C C REFRESHED AS OFTEN AS THE SPEED OF THE COMPUTER PERMITS TO SIMULATE MOTION. C C C C THE INPUT ROUTINE IS A SEPARATE TASK AND RUNS IN C C PARALLEL. THUS THE USERS HAVE DIRECT, CONTINUOUS, INTERACTIVE CONTROL OF C C HIS TANK. C C C C WHEN ONE USER'S BOMB IMAGE PASSES SUFFICIENTLY CLOSE TO THE CENTER OF THE C C OTHER USER'S TANK, AN EXPLOSION EFFECT ENSUES, THE SECOND TANK IS RAND- C C OMLY RELOCATED AND SCORE IS REGISTERED FOR THE FIRST USER. CONTROL RETURNS C C TO THE OPERATING SYSTEM IF EITHER USER SCORES TWENTY TIMES. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C GLOBAL VARIABLES C C INTEGER: C C C C THETA1,THETA2 INDEX (1 TO NTHETA) CORRESPONDING TO THE ANGULAR C C POSITION OF TANK1 AND TANK2. C C C C NTHETA :NUMBER OF ANGULAR POSITIONS EACH TANK MAY HAVE. C C MUST BE < OR = 72. C C C C XP1,YP1 C C XP2,YP2 C C XP3,YP3 :DIMENSIONED (1:72). THESE ARRAYS ARE INDEXED BY C C THETA1 AND THETA2 TO GIVE THE X,Y COORDINATES OF C C EACH OF THE 3 VERTICES OF THE TANK IMAGE. THE COORD- C C INATES ARE TEKPOINT TYPE VALUES TO AVOID LATER SCAL- C C ING. THE INDICES (THETA1 AND THETA2 WILL SELECT A C C MASTER IMAGE OF A TANK FROM THESE ARRAYS WHICH IS C C ROTATED BY THE PROPER ANGLE (THIS SAVES LATER ROTA- C C TION CALCULATION). C C C C IX1,IY1 C C IX2,IY2 :CURRENT X,Y COORDINATE OF TANK1 AND TANK2. CORRE- C C SPONDS TO THE REAL VALUES X1,Y1,X2,Y2. THE REAL C C VALUES ARE TRUNCATED AND ASSIGNED TO THESE INTEGER C C VARIABLES FOR PLOTTING. C C C C MOVE1,MOVE2 :MOVEMENT STATUS OF TANK1 & TANK2. 1: STOPPED,2: MOVING C C C C TURN1,TURN2 :TURNING STATUS OF TANK1 & TANK2. 1: NOT TURNING C C 2: TURNING CLOCKWISE, 3: TURNING COUNTERCLOCKWISE C C C C FIRE1,FIRE2 :FIRE STATUS OF TANK1 & TANK2. 1: FIRE, 2: NO FIRE C C C C SCORE1,SCORE2 :SCORE OF TANK1 & TANK2. C C C C FLAG :SET BY INPUT ROUTINE WHEN A COMMAND CHARACTER IS C C INPUT. CLEARED BY MAIN TASK TO INDICATE PREVIOUSLY C C CHARACTER HAS BEEN PROCESSED. C C C C BUNKER :DIMENSIONED(26,20). MATRIX CORRESPONDS TO THE GRID C C OF BUNKERS ON THE BATTLEGROUND. A 1 MEANS A BUNKER C C EXISTS IN THAT SQUARE, 0 MEANS SQURE C C EMPTY. A FRACTION OF THE TANK'S OR BOMB'S CURRENT C C X,Y COORDINATE IS USED AS AN INDEX INTO THIS ARRAY C C TO DETERMINE IF THE TANK OR BOMB IMAGE IS ENTERING A C C BUNKER SQUARE. C C C C BXY :DIMENSIONED(20). THIS ARRAY CONTAINS CONSECUTIVE X,Y C C COORDINATES OF ALL CURRENTLY ACTIVE BOMB IMAGES. C C C C ICOUNT :THE CURRENT SIZE OF BXY. C C C C C C C C REAL: C C C C TANCOS,TANSIN :DIMENSIONED(1:72). THIS ARRAY CONTAINS TEKPOINT TYPE C C VALUES. IT IS INDEX BY THETA1 & THETA2 TO PRODUCE C C X & Y DISPLACEMENTS WHICH WHEN ADDED TO TANK1 & TANK2 C C CENTERS WILL INCREMENT THEM IN THE DIRECTION INDICATED C C BY THETA1 & THETA2. C C C C BOMCOS,BOMSIN :DIMENSIONED(1:72). THESE ARRAYS ARE USED SIMILARLY C C TO ABOVE ARRAYS. USED TO INCREMENT THE BOMB IMAGES C C IN THE APPROPRIATE DIRECTIONS. C C C C X1,Y1,X2,Y2 :REAL X,Y VALUES OF THE CENTERS OF TANK1 & C C TANK2. THESE VALUES ARE CHANGED TO AFFECT TANK MOVE- C C MENT. AFTER EACH MOVEMENT CALCULATION THESE VALUES C C ARE TRUNCATED AND PUT IN IX1,IY1,IX2,IY2 FOR PLOTTING. C C C C RANGE1,RANGE2 :DISTANCE IN TEKPOINTS THAT A BOMB NEED GET C C TO THE OTHER USER'S TANK TO EXPLODE IT. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC PARAMETER L=72 COMMON THETA1,THETA2,NTHETA,TANCOS,TANSIN,BOMCOS,BOMSIN,XP1,XP2,XP3,YP1,YP2, +YP3,BXY,X1,Y1,X2,Y2,ICOUNT,IX1,IY1,IX2,IY2,BUNKER, +RANGE1,RANGE2,SCORE1,SCORE2 COMMON /GARF/ MOVE1,TURN1,MOVE2,TURN2,FIRE1,FIRE2,FLAG INTEGER THETA1,THETA2,NTHETA,XP1(L),XP2(L),XP3(L),YP1(L),YP2(L),YP3(L),BXY(20), +BUNKER(26,20),MOVE1,TURN1,MOVE2,TURN2,SCORE1,SCORE2,FIRE1,FIRE2,FLAG REAL TANCOS(L),TANSIN(L),BOMCOS(L),BOMSIN(L),X1,Y1,X2,Y2,RANGE1,RANGE2 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C INIT IS CALLED TO INITIALIZE IMPORTANT VARIBLES. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CALL INIT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C INPUT IS CALLED TO SUBTASK AN INPUT ROUTINE TO RUN IN PARRALLEL WITH THE C C MAINLINE. IT CONTINUALLY WAITS FOR KEYBOARD INPUT AND AFFECTS C C THE FOLLOWING GLOBALS: C C C C MOVE1,MOVE2,TURN1,TURN2,FIRE1,FIRE2,FLAG C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CALL INPUT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C PRI IS CALLED TO MAKE THE PRIORITY OF THE MAINLINE EQUAL TO THAT OF THE C C SUBTASKED INPUT ROUTINE. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CALL PRI(2) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C TANKP IS CALLED TOCALCULATE THE NEW POSITIONS OF TANK1 AND TANK2 C C TANKP REFERENCES THE FOLLOWING GLOBALS: C C C C TURN1,TURN2,TANSIN,TANCOS,BUNKER,XP1,YP1 C C C C AND AFFECTS THE FOLLOWING: C C C C C MOVE1,MOVE2,X1,Y1,X2,Y2 C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 10 CALL TANKP CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C BOMB IS CALLED TO CREATE, UPDATE, OR ELIMINATE THE BOMB IMAGES. C BOMB PREPARES THE ARRAY BXY CONTAINING X,Y COORDINATES OF ALL C C CURRENTLY ACTIVE BOMBS, TO BE OUTPUT LATER. C C C C BOMB REFERENCES THE FOLLOWING GLOBALS: C C C THETA1,THETA2,BOMCOS,BOMSIN,BUNKER,XP1,YP1,RANGE1,RANGE2 C C C C AND MAY AFFECT THE FOLLOWING GLOBALS: C C C C BXY,X1,Y1,X2,Y2,IX1,IY1,IX2,IY2,FIRE1,FIRE2,SCORE1,SCORE2, C C ICOUNT C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CALL BOMB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C THE CURRENT X,Y POSITION OF BOTH THANKS ARE ASSIGNED TO THESE INTEGER C C VALUES IN PREPARATION FOR PLOTTING. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IX1=X1 IX2=X2 IY1=Y1 IY2=Y2 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C PLOT IS CALLED TO PLOT THE TANK AND BOMB IMAGES. IT REFERENCES ONLY THE C C PASSED VARIABLES AND AFFECTS NONE. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CALL PLOT(THETA1,THETA2,XP1,YP1,XP2,YP2,XP3,YP3,BXY,IX1,IY1,IX2,IY2,ICOUNT) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C THE FLAG IS CLEARED TO ALLOW THE INPUT ROUTINE TO INPUT ANOTHER CHARACTER C C FROM THE KEYBOARD. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC FLAG=0 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C LOOP BACK TO CONTINUALLY CALCULATE AND OUTPUT. C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC GOTO 10 END FORTSVFORT4FORTSVHOMEAL 4e4PROCEDURE HOME; COMMENT: --------------------------------------------------- H O M E THIS ROUTINE PLACES THE ALPHA CURSOR AT THE UPPER LEFT CORNER OF THE SCREEN AND RETURNS THE TERMINAL TO ALPHANUMERIC MODE. EXTERNAL PROCEDURES: MVABS - MOVE TO AN ABSOLUTE SCREEN COORDINATE ANMODE - PLACE TERMINAL IN ALPHA MODE ---------------------------------------------------; BEGIN EXTERNAL PROCEDURE MVABS,ANMODE; MVABS(0,758); ANMODE END; ATCSSRCM, 6ex.GCOUT.SR,CHAR.SR,GETC.SR,PUTC.SR,GLOBALS.SRWIAL$ 8e2,PROCEDURE WI(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE NO,NI,SO,SI,DRAW; IF I > 1 THEN BEGIN NO(I-1); NI(I-1); WI(I-1); SI(I-1); SO(I-1) END ELSE BEGIN X := X - H; DRAW; Y := Y + H; DRAW; X := X - H; DRAW; Y := Y - H; DRAW; X := X - H; DRAW END END; RLDRSVRLDRSVINPSAL :e9 /PROCEDURE INPS(STR,X,Y); STRING STR; INTEGER X,Y; COMMENT: -------------------------------------------------- I N P S THIS ROUTINE INPUTS A POINT FROM THE TERMINAL. THE CROSSHAIRS CURSOR IS TURNED ON AND THE PROGRAM WAITS FOR A KEY TO BE PRESSED. THE KEY VALUE AND THE POSITION OF THE CROSSHAIRS IS RETURNED. EXTERNAL PROCEDURES: GETC - GET A CHARACTER FROM THE TERMINAL PUTC - OUTPUT A CHARACTER TO THE TERMINAL CHAR - TRANSLATE AN INTEGER TO A CHARACTER EXTERNAL VARIABLES: TMODE - CURRENT MODE OF TERMINAL --------------------------------------------------; BEGIN LITERAL ESC(27),SUB(26),MASK(11111R2),ALPHMODE(2); EXTERNAL INTEGER TMODE; EXTERNAL PROCEDURE PUTC,GETC,CHAR; INTEGER HI,LO; PUTC(ESC); PUTC(SUB); GETC(HI); CHAR(STR,HI); GETC(HI); HI := HI AND MASK; GETC(LO); LO := LO AND MASK; X := HI*32 + LO; GETC(HI); HI := HI AND MASK; GETC(LO); LO := LO AND MASK; Y := HI*32 + LO; GETC(LO); TMODE := ALPHMODE END; RLDROLRLDROLRDRAWAL\ >e6NPROCEDURE RDRAW(DX,DY); VALUE DX,DY; REAL DX,DY; COMMENT: ---------------------------------------------------- R D R A W THIS PROCEDURE DRAWS A VECTOR RELATIVE TO THE VIRTUAL "BEAM'S" CURRENT POSITION. DX AND DY ARE SIGNED REAL NUMBERS SPECIFYING THE RELATIVE POSITION OF THE ENDPOINT. EXTERNAL VARIABLES: PX - CURRENT X POSITION OF BEAM PY - CURRENT Y POSITION OF BEAM EXTERNAL PROCEDURES: ADRAW - DRAW ABSOLUTE PAGE COORDINATE ----------------------------------------------------; BEGIN EXTERNAL REAL PX,PY; EXTERNAL PROCEDURE ADRAW; ADRAW(PX+DX,PY+DY) END; gPUTCo Bu : .TITLE PUTC .ENT PUTC .NREL PUTC: STA 3,SAV3 .SYSTM .PCHAR JMP .+1 LDA 3,SAV3 JMP 0,3 SAV3: 0 .END TEKPACKSR$ Eej &;*************************************** ;* * ;* TEKPACK * ;* MULTI-USER T4010,T4014 PLOTTING * ;* PACKAGE FOR NOVA EXTENDED BASIC * ;* * ;****************************************** ; ; UMR COMPUTER CENTER ; REV 03 FEBRUARY 1975 ; REV 04 NOVEMBER 1975 ; REV 05 JUN 1976 ; REV 06 DEC 1977 (REV 4.3 BASIC) ; CALL 1,M,X,Y ; USED TO PUT TERMINAL (T4010) INTO VECTOR MODE AND ; VECTOR (VISIBLE OR INVISIBLE) TO THE POINT X,Y ; M=0 (INVISIBLE) ; USED TO MOVE THE CURSOR TO A DESIRED SPOT ; LEAVES THE TERMINAL IN VECTOR MODE ; ; M=1 (VISIBLE) ; USED TO PLOT A LINE FROM PREVIOUS CURSOR POSITION ; TO NEW X,Y. THIS IS NOT SCALE. ; M=1 MUST BE PRECEDED WITH AN INVISIBLE MODE CALL. ; ; M=2 (INVISIBLE) ; SAME AS 0 BUT RETURNS 4010 TO ALPHA MODE ; CALL 2 ; USED TO ERASE THE SCREEN AND PROVIDE A 1 SECOND DELAY ; TIME AFTER ERASE. ERASE ROUTINE ASSUMES A T4010 TERMINAL. ; CALL 3,M,C$,X,Y ; ; M=0 ; ; OPERATOR MUST STRIKE ANY KEY TO INPUT GRAPHIC ; CURSOR COORDINATES. X AND Y WILL BE THE COORDINATES IN ; ABSOLUTE TEK COORDINATES. C$ IS A STRING ; VARIABLE TO RECEIVE THE KEY CODE. ; M=1 ; ; CURSOR POSITION IS READ IMMEDIATELY ; X AND Y ARE COORDINATES, C$ IS UNCHANGED, BUT MUST ; BE INCLUDED IN CALLING SEQUENCE. ; TABLET (TEK. 4954) DATA ENTRY ROUTINE ; ; CALL 5,M,C$,Y,X ; ; M=0 ; SINGLE POINT PRESENCE MODE, LOCAL DISPLAY OFF. ; NOTE REVERSAL OF Y AND X COORDINATES ; INPUTS POINTS WHENEVER PEN IS PRESSED AND SUBR 5 IS CALLED. ; HEADER CHAR IS GS OR US (DARK VECTOR) OR SUB (LIGHT VECTOR) ; OR STATUS BYTE (PEN HAS LEFT PRESENCE) ; ; M=1 ; SINGLE POINT PRESENCE MODE, LOCAL DISPLAY ON. ; SAME AS ABOVE EXCEPT LOCAL DISPLAY IS ENABLED ; RESULTING IN INKING PERFORMED BY HARDWARE. ; .TITL TEKPK .ENT SBRTB ; FOR BASIC .EXTD U.S1 ; STATUS WORD #2 .EXTD U.TCC U.TBS U.TBC U.TBN U.TPW U.TTS U.TOS .EXTD TR0 TR1 TR2 TR3 TR4 TR5 TR6 C2 C10 D132 .EXTD .PITE .SPBC .PITI .PICE .PIBE .IIBC .ACIB .EXTD .LINE .FIX .ERSY .FLOT .TXTM 1 .NOMAC 1 .NREL ; DEFINE MACROS .MACRO SAVE .EXTD .SVE .STOR .REST STA 3 .SVE JSR @.STOR ^1+1 % .MACRO RESTR JMP @.REST % .MACRO PUSH .EXTD .SVE .PSH .POPB STA 3 .SVE JSR @.PSH % .MACRO POP JMP @.POPB % ; DEFINE TEMPORARY STORAGE USER=16 SBRTB: 1 ; SUBROUTINE TABLE PLOT1 3 2B1+2B3+2B5 ; ALLOW ANY NUMERIC EXPRESSION 2 ERASE 0 0 3 ; GRAPHICS INPUT ROUTINE GIN 4 2B1+1B3+3B5+3B7 ; NEXP, STR V, NV, NV 5 ; SUBR 5, TABLET ENTRY TBLT 4 2B1+1B3+3B5+3B7 -1 PLOT1:;+++ JSR INBUF ; INIT LINE BUFFER STA 2 TR0 ; SAVE PARM POINTER JSR GT1 ; GET MODE STA 1 TR1 ; SAVE IT ISZ TR0 ; BUMP PARM LIST POINTER MOV 1 1 SNR ; SKIP IF GS NEEDED (MODE=0) JMP PL.GS ; OUTPUT A GS LDA 0 C2 SUB# 0 1 SZR ; SKIP IF MODE 2 JMP .+3 PL.GS: JSR APUTC ; OUTPUT A GS GS JSR GT1 ; X ISZ TR0 ; BUMP ARG PNTR STA 1 TR2 ; SAVE X COORD JSR GT1 ISZ TR0 STA 1 TR3 ; SAVE Y COORD LDA 0 TR3 ; GET Y COORD JSR XHIGH ; EXTRACT HIGH Y PART JSR PUTC ; AND OUTPUT IT LDA 0 TR3 ; GET Y AGAIN LDA 1 US ; 5 BIT MASK AND 1 0 ; EXTRACT LOW Y LDA 1 LOWYT ; LOW Y TAG BITS ADD 1 0 ; FORM LOW Y CHAR JSR PUTC ; AND OUTPUT IT. LDA 0 TR2 ; GET X COORD JSR XHIGH ; EXTRACT HIGH X JSR PUTC ; AND OUTPUT IT. LDA 0 TR2 ; LOW X LDA 1 US AND 1 0 LDA 1 LOWXT ADD 1 0 JSR PUTC ; OUTPUT LOW X LDA 0 TR1 ; GET MODE MOVZR 0 0 SNR ; SKIP IF > 1 JMP PLTDN ; LEAVE 41010 IN VECTOR MODE JSR APUTC ; RETURN TO ALPHA MODE US PLTDN:;+++ JSR OUT JMP @.LINE ; EXIT ; DISPLAY BUFFER AND EXIT ;OUT: PUSH ; SAVE RETURN ; SUB 0 0 ; JSR PUTC ; NUL TERMINATOR ; JSR @.PITD ; DISPLAY BUFFER ; LDA 3 USER ; LDA 0 D132 ; STA 0 U.TCC 3 ; RESET LINE COUNT ; POP ; RETURN GS: 35 US: 37 LOWXT: 2B10 LOWYT: 3B10 ; INIT LINE BUFFER ;INBUF: PUSH ; SAVE RETURN ; STA 2 TR0 ; LDA 3 USER ; LDA 2 U.TBS 3 ; STA 2 U.TBC 3 ; INIT BUFFER POINTER ; LDA 2 D132 ; STA 2 U.TBN 3 ; CURRENT COUNT ; STA 2 U.TCC 3 ; START OF LINE ; STA 2 U.TPW 3 ; PAGE WIDTH ; LDA 2 C10 ; STA 2 U.TTS 3 ; TAB SIZE ; POP ; RETURN ; ROUTINE TO GET A (BASIC) VARIABLE ; FROM THE STACK ^'D TO BY TR0 ; .FIX'ED VARIABLE IS RETURNED IN AC1 GT1: PUSH LDA 2 TR0 LDA 3 0 2 LDA 0 0 3 LDA 1 1 3 JSR @.FIX JMP .+1 POP ; PUTC ; ROUTINES TO PUT A CHARACTER INTO TERM BUFFER ; CALL JSR APUTC -OR- JSR PUTC ; ADR(CHAR) CHAR IN AC0 ; ; ; TRASHES THE AC'S APUTC: LDA 0 @0 3 INC 3 3 PUTC: PUSH ; SAVE RETURN ; LDA 3 USER ; PICK UP BUFFER POINTER ; LDA 2 U.TBC 3 ; CURRENT POINTER ; ISZ U.TBC 3 ; BUMP IT ; MOVZR 2 2 ; LDA 1 0 2 ; LDA 3 C377 ; AND 3 0 ; MOV# 0 0 SZC ; SKIP IF LEFT BYTE ; MOVS 3 3 SKP ; MOVS 0 0 ; AND 3 1 ; ADD 0 1 ; STA 1 0 2 ; SAVE BYTE JSR @.PIBE ; OUTPUT ONE BYTE POP ; RETURN ; EXTRACT HIGH ORDER PART AND ADD A 01 TAG XHIGH: LDA 1 HMSK AND 1 0 ; LOP OFF REST MOVZR 1 1 ; PRE-SHIFT MASK MOVZR 0 0 ; SHIFT RIGHT 5 MOVZR 1 1 SNC ; TRICKY JMP .-2 LDA 1 HTAG ADD 1 0 JMP 0 3 HTAG: 1B10 HMSK: 37B10 ; SUBROUTINE 2 - ERASE SCREEN AND DELAY ERASE:;+++ JSR INBUF ; INIT BUFFER STA 2 TR0 ; SAVE PARM POINTER JSR APUTC ; OUTPUT ESC ESC JSR APUTC ; OUTPUT FF FF ; JSR OUT ; DISPLAY BUFFER LDA 1 DELAY .SYSTM ; DELAY FOR 1 SEC .DELAY JMP .+1 JMP @.LINE ; EXIT ESC: 33 FF: 14 DELAY: 11. ; 10 HZ CLOCK ASSUMED ; CROSSHAIR INPUT ; SUBROUTINE #3 ; THIS ROUTINE HAS BEEN MODIFIED EXTENSIVELY FOR M.U. BASIC ; 7/5/76 GIN: STA 2 TR0 ; SAVE PARM POINTER SUB 0 0 ; SET SWITCH TO 0 STA 0 TR5 ; THEN GO TO COMMON CODE LDA 0 1 2 ; C$ POINTER STA 0 TR6 ; SAVE IN TEMP STORAGE LDA 0 2 2 STA 0 TR3 ; X LDA 0 3 2 STA 0 TR4 ; Y JSR GT1 ; GET MODE STA 1 TR1 ; SAVE IT IN TR1 LDA 0 CRSON ; GET CURSOR ON MESSAGE LDA 1 CRSON+1 ; LENGTH JSR @.PITE ; WRITE IT LDA 2 TR1 ; GET MODE MOV 2 2 SNR ; SKIP IF MODE NON-ZERO (CURS IMMED) JMP GINCM ; GO WAIT LDA 1 C2 .SYSTM .DELAY ; WAIT A BIT JMP .+1 LDA 1 C2 LDA 0 CRIMS ; CURSOR IMMED MESSAGE JSR @.PITE ; WRITE IT JMP GINCM ; COMMON CODE ; TABLET INPUT ; SUBROUTINE #5 TBLT: STA 2 TR0 ; SAVE POINTER SUB 0 0 STA 0 TR1 ; MAKE IT MODE ONE LDA 0 1 2 STA 0 TR6 LDA 0 2 2 STA 0 TR3 LDA 0 3 2 STA 0 TR4 SUBZL 0 0 STA 0 TR5 ; SET SWITCH TO 1 JSR GT1 ; GET MODE (0 OR 1) LDA 0 TBLT1 ; GET LOCAL OFF MESSAGE MOV 1 1 SZR ; SKIP IF MODE 0 LDA 0 TBLT2 ; MODE 1 (OR ?) USE LOCAL ON LDA 1 TBLT1+1 ; LENGTH JSR @.PITE ; WRITE IT ;+++ JSR @.PITW ; PUT IN BUFFER GINCM: JSR @.SPBC ; SAVE PROGRAM BYTE COUNTER (MAY SWAP OUT) LDA 3 USER ; ADC 0 0 ; STA 0 U.LT 3 ; SET GRAPHIC INPUT MODE FLAG ; JSR @.PIDA ; DISPLAY BUFFER AND ACCEPT RPLY ; LDA 3 USER ; SUB 0 0 ; STA 0 U.LT 3 ; RESET GRAPHIC INPUT MODE SUB 0 0 STA 0 U.TOS 3 ; RESET TIMED INPUT FLAG LDA 0 .NECH ; GET NO ECHO BIT LDA 1 U.S1 3 ; GET STATUS WORD COM 0 0 AND 0 1 ADC 0 1 ; SET NO ECHO BIT STA 1 U.S1 3 ; SET IT JSR @.PITI ; GET TERMINAL INPUT LDA 0 .NECH LDA 3 USER COM 0 0 LDA 1 U.S1 3 AND 0 1 STA 1 U.S1 3 ; RESET NO ECHO BIT JSR @.PICE ; CHECK FOR ESCAPE INPUT ; JSR @.RPBC ; RESET PROGRAM BYTE COUNT JSR @.IIBC ; INIT INPUT BYTE POINTER (FROM USER TABLE) LDA 0 TR1 ; GET MODE MOV 0 0 SZR JMP GINXY ; ACCESS INPUT BYTES TO FORM GRAPHIC INPUT X AND Y GINWT: JSR @.ACIB ; GET A BYTE MOV 2 0 LDA 2 TR6 LDA 1 1 2 ; GET CURRENT LENGTH OF STRING MOV 1 1 SNR ; SKIP IF NOT ZERO ISZ @3 2 ; BUMP LENGTH ; STORE BYTE LDA 2 0 2 ; GET BYTE POINTER MOVZR 2 2 LDA 1 0 2 ; GET WORD THERE LDA 3 C377 MOV 0 0 SZC ; SKIP IF LEFT BYTE MOVS 3 3 SKP MOVS 0 0 AND 3 1 ; ZERO OUT UNWANTED BYTE ADD 0 1 ; ADD IN NEW BYTE STA 1 0 2 ; RESTORE WORD ; GET X AND Y AND STORE IN CALLERS AREA GINXY: JSR @.ACIB STA 2 TR2 ; SAVE LOW X GNXY1: JSR @.ACIB ; GET HIGH AND LOW X MOV 2 0 JSR FORM ; MAKE THEM FLOATING POINT LDA 2 TR3 STA 0 0 2 STA 1 1 2 ; SAVE NEW X JSR @.ACIB STA 2 TR2 JSR @.ACIB MOV 2 0 JSR FORM LDA 2 TR4 STA 0 0 2 ; SAVE NEW Y STA 1 1 2 JMP @.LINE ; RETURN TO BASIC ; COMBINES HIGH IN AC1 AND LOW IN AC0 AND ; CONVERTS INTEGER TO FLOATING POINT. FORM: PUSH LDA 1 TR2 ; RESTORE AC1 LDA 2 C37 AND 2 0 AND 2 1 ADDZL 1 1 ADDZL 1 1 MOVZL 1 1 ADD 0 1 FRM.1: SUB 0 0 JSR @.FLOT JMP .+1 POP .NECH: 10 ; NO ECHO BIT C377: 377 C37: 37 .APUTC: APUTC CROLN: 4 ; IMMED CURSOR LENGTH CRSON: .+2*2 ; CURSON ON MESSAGE 2 ; CURSOR ON LENGTH 33B7+32 ; ESC,SUB (CURSOR ON) CRIMS: .+1*2 33B7+5 ; ESC,ENQ (CURSOR IMMED.) ; SINGLE POINT, 10 BITS, PRESENCE, LOCAL OFF TBLT1: .+2*2 3 .TXT /<33>!$/ ; SINGLE POINT, 10 BITS, PEN, LOCAL OFF TBLT2: .+1*2 .TXT /<33>! / .END 0WOAL We2PROCEDURE WO(I); INTEGER I; BEGIN EXTERNAL INTEGER X,Y,H; EXTERNAL PROCEDURE WI,DRAW; IF I > 1 THEN BEGIN WO(I-1); WI(I-1); WO(I-1) END ELSE BEGIN Y := Y - H; DRAW; X := X - H; DRAW; Y := Y + H; DRAW END END; WINDOWAL Ye4PROCEDURE WINDOW(X1,Y1,X2,Y2); VALUE X1,Y1,X2,Y2; REAL X1,Y1,X2,Y2; COMMENT: ---------------------------------------------------- W I N D O W THIS ROUTINE SETS THE WINDOW BOUNDARIES OF THE CURRENT PAGE WINDOW. POINTS X1,Y1 AND X2,Y2 MUST SPECIFY OPPOSING DIAGONAL POINTS OF THE WINDOW BOUNDARIES. EXTERNAL VARIABLES: PXL,PXH - X BOUNDARIES OF PAGE WINDOW PYL,PYH - Y BOUNDARIES OF PAGE WINDOW SXL,SXH - X BOUNDARIES OF SCREEN VIEWPORT SYL,SYH - Y BOUNDARIES OF SCREEN VIEWPORT XPS,YPS - PAGE TO SCREEN CONVERSION FACTORS -----------------------------------------------------; BEGIN EXTERNAL REAL PXL,PXH,PYL,PYH,XPS,YPS; EXTERNAL INTEGER SXL,SXH,SYL,SYH; IF X1 < X2 THEN BEGIN PXL := X1; PXH := X2 END ELSE BEGIN PXL := X2; PXH := X1 END; IF Y1 < Y2 THEN BEGIN PYL := Y1; PYH := Y2 END ELSE BEGIN PYL := Y2; PYH := Y1 END; XPS := (SXH-SXL) / (PXH-PXL); YPS := (SYH-SYL) / (PYH-PYL) END; BUILDCURVEMC \dx7ALGOL (CURVE,MOVE,DRAW,NO,EO,SO,WO,NI,EI,SI,WI);^ ASM (GCOUT,LOCS) RLDR CURVE MOVE DRAW GCOUT NO EO SO WO ^ NI EI SI WI LOCS ATCS.LB ALGOL.LB MESSAGE TYPE 'CURVE N' (CR) TO RUN CURVE.SV DARIES OF THE CURRENT PAGE WINDOW. POINTS X1,Y1 AND X2,Y2 MUST SPECIFY OPPOSING DIAGONAL POINTS OF THE WINDOW BOUNDARIES. EXTERNAL VARIABLES: PXL,PXH - X BOUNDARIES OF PAGE WINDOW PYL,PYH - Y BOUNDARIES OF PAGE WINDOW SXL,SXH - X BOUNDARIES OF SCREEN VIEWPORT SYL,SYH - Y BOUNDARIES OF SCREEN VIEWPORT XPS,FIVSVFORT4FIVSVAPOINTAL9 ^e4PROCEDURE APOINT(X,Y); VALUE X,Y; REAL X,Y; COMMENT: ------------------------------------------------- A P O I N T THIS ROUTINE PLOTS A SINGLE POINT AT THE ABSOLUTE PAGE COORDINATE X,Y. EXTERNAL VARIABLES: TMODE - CURRENT MODE OF TERMIANL PX - CURRENT X POSITION OF VIRTUAL "BEAM" PY - CURRENT Y POSITION OF VIRTUAL "BEAM" EXTERNAL PROCEDURES: PTABS - PLOT A POINT AT ABSOLUTE SCREEN COORDINATE P2STT - TRANSLATE FROM PAGE TO SCREEN COORDINATES AND TEST FOR VISIBILITY ------------------------------------------------; BEGIN LITERAL POINTMODE(3); EXTERNAL INTEGER TMODE; EXTERNAL REAL PX,PY; EXTERNAL PROCEDURE P2STT,PTABS; BOOLEAN VISIBLE; INTEGER SX,SY; P2STT(X,Y,SX,SY,VISIBLE); IF VISIBLE THEN PTABS(SX,SY) ELSE TMODE := POINTMODE; PX := X; PY := Y END; CHARSR ae9  .TITL CHAR ;---------------------------------------------- ; ; C H A R ; ; THIS ROUTINE RETURNS A SINGLE CHARACTER WHOSE ; BINARY VALUE IS GIVEN BY THE INTEGER PARAMETER ; ; EXAMPLE CALLING SEQUENCE: ; ; STR := CHAR(ICHAR); ; OR ; CHAR(STR,ICHAR); ; ; INPUT VARIABLE: ; ; ICHAR - INTEGER CONTAINING THE BINARY VALUE ; OF THE CHARACTER TO BE RETURNED ; ;---------------------------------------------- .EXTU .NREL S= -167 SP= 1B0-S STRING= S ICHAR= STRING+3 CSIZE= ICHAR+1-S STRPAR= 2B7+10B11+3 INTVAL= 4B7+1B11+1 .ENT CHAR CHAR: JSR @SAVE ; ENTER CSIZE ; STACK SIZE 2 ; 2 ARGUMENTS SP+STRING ; LOCATION ON STACK STRPAR ; STRING PARAMETER SP+ICHAR ; LOCATION ON STACK INTVAL ; INTEGER VALUE LDA 2,STRING,3; GET BYTE POINTER LDA 1,STRING+1,3; GET LENGTH OR INDEX MOVZL 1,1,SNC ; SUBSTR ? JMP NOSUB ; NOPE NEGR 1,1 ; NEGATIVE INDEX LDA 2,0,2 ; GET TRUE BYTE POINTER ADC 1,2 ; LOCATION OF BYTE NOSUB: LDA 0,ICHAR,3; GET INTEGER VALUE LDA 1,C377 ; BYTE MASK MOVZR 2,2 ; WORD ADDRESS AND CARRY LDA 3,0,2 ; GET WORD AND 1,0,SZC ; MASK INTEGER AND TEST CARRY MOVS 1,1,SKP ; RIGHT BYTE - SWAP MASK ANDS 1,3,SKP ; LEFT BYTE - MASK RIGHT BYTE AND 1,3,SKP ; MASK LEFT BYTE ADDS 0,3,SKP ; ADD IN NEW BYTE, SWAP ADD 0,3 ; ADD IN NEW BYTE STA 3,0,2 ; PUT WORD BACK LDA 3 .FP ; GET BACK FRAME POINTER LDA 0 STRING+1,3; LENGTH OF INDEX MOVL 0,0,SZC ; SUBSTR ? JSR @RETURN ; YEP. THAT'S ALL SUBZL 0,0 ; 1 STA 0,STRING+2,3; LENGTH IS NOW 1 JSR @RETURN ; BYE C377: 377 ; BYTE-SIZED MASK .END XFRMAL fe3&PROCEDURE XFRM(x,y,hx,lx,hy,ly); VALUE x,y; INTEGER x,y,hx,lx,hy,ly; COMMENT: -------------------------------------------------- X F R M This routine transforms a screen coordinate pair X,Y into the TEKTRONIX coordinate characters that will address that point. No control characters are generated. The enhanced graphics (4096 point) option is not supported. Input variables: x - X coordinate of point y - Y coordinate of point Output variables: hx - High order X character lx - Low order X character hy - High order Y character ly - Low order Y character NOTE: These variables are integers, and contain the binary equivalent of the ASCII characters. They may be output directly by PUTC. --------------------------------------------------; BEGIN LITERAL hixy(32),lox(64),loy(96),mask(11111R2); hy := (SHIFT(y,5) AND mask) + hixy; ly := (y AND mask) + loy; hx := (SHIFT(x,5) AND mask) + hixy; lx := (x AND mask) + lox END; GLOBALSSR ie4 .TITL GLOBALS .ZREL .ENT BEAMX,BEAMY,HIX,LOX,HIY,LOY,TMODE .ENT PXL,PXH,PYL,PYH,SXL,SXH,SYL,SYH .ENT XPS,YPS,PX,PY,TDELAY BEAMX: -1 ; CURRENT BEAM POSITION BEAMY: -1 HIX: -1 ; LAST COORDINATE CHARACTERS OUTPUT LOX: -1 HIY: -1 LOY: -1 TDELAY: 0 ; NUMBER DELAY NULLS NEEDED TMODE: -1 ; CURRENT MODE OF TERMINAL ; VALUES FOR TMODE: ; ; 1 - GRAPH MODE ; 2 - ALPHA MODE ; 3 - POINT PLOT MODE ; 4 - GIN MODE PXL: 0 ; X LIMITS OF PAGE WINDOW 0 PXH: 0 0 PYL: 0 ; Y LIMITS OF PAGE WINDOW 0 PYH: 0 0 SXL: 0 ; X LIMITS OF SCREEN VIEWPORT SXH: 0 SYL: 0 ; Y LIMITS OF SCREEN VIEWPORT SYH: 0 XPS: 0 ; PAGE TO SCREEN COORDINATE CONVERSION FACTORS 0 YPS: 0 0 PX: 0 ; CURRENT PAGE VIRTUAL "BEAM" POSITION 0 PY: 0 0 .END (BUILDATCSCLn le9wALGOL (@ATCSAL.CM@);ASM (@ATCSSR.CM@);^ LFE N NATCS.LB/O @ATCS.CM@ MESSAGE ALGOL TCS LIBRARY (NATCS.LB) BUILT YPS,PX,PY,TDELAY BEAMX: -1 ; CURRENT BEAM POSITION BEAMY: -1 HIX: -1 ; LAST COORDINATE CHARACTERS OUTPUT LOX: -1 HIY: -1 LOY: -1 TDELAY: 0 ; NUMBER DELAY NULLS NEEDED TMODE: -1 ; CURRENT MODE OF TERMINAL ; VALUES FOR TMODE: ; ; 1 - GRAPH MODE ; 2 - ALPHA MODE ; 3 - POINT PLOT MODE ; 4 - GIN MODE PXL: 0 ; X LIMITS OF PAGE WINDOW 0 PXH: 0 0 PYL: 0 ; Y LIMITS OF PAGE WINDOW 0 PYH: 0 0 CREATETANKMC mdu;/ THIS IS A MACRO COMAND TO CREATE THE GAME / OF TANK. INVOKE VIA THE CLI COMMAND: CREATETANK (CR) / TANK REQUIRES AT LEAST 32K OF CORE IN AN / RDOS ENVIRONMENT AND A TEKTRONIX T-4014 DISPLAY. / TANK MAKES USE OF THE STORAGE AND REFRESH CAPABILITIES OF THE T4014. / WRITTEN IN DGC FORTRAN IV WITH ASSEMBLER SUBROUTINES. / / WRITTEN BY: ROBIN STEGE AND KEVIN DARBY / / ADDRESS ALL COMMENTS TO: / UMR COMPUTER CENTER / UNIVERSITY OF MO. - ROLLA / ROLLA, MO. 65401 / (314) 341-4841 / ATTN: DR. H. J. POTTINGER / FORT (BOMB, TANKP, SCORE, INIT, MASTER,ERASE, RAND) ASM (PLOTB, VECTOR, PUTC, SPLOT, PLOT,INPUT) RLDR TANK.SV/S 2/K MASTER INIT RAND TANKP BOMB PLOTB VECTOR PUTC ^ ERASE INPUT SCORE SPLOT PLOT FMT.LB FORT.LB MESSAGE ACCESS THIS GAME BY THE NAME OF 'TANK'. TANK XREFSVXREFSVPAGESVDP0PAGESVRLDRSV  m= k @(@ A  -/ Z N (R ivwbU4:"% ZJ/& J \  ;c'DxbTkw`N*%  COPYRIGHT(C)DCG,1972,1973,1975,1977ALL RIGHTS RESERVED! H%   HU  6RLDR.OL+I#XmPo $8:# =  2$mmKm 9 1֠   3 9#Xo 3 P 2Y)A)I)Q) 8 "#K+@p@E  ? 6@|8 XC l(|!)190P!0(0XzA0( 8j 1 ! zz8z)zX 9 @@ @XՐ81 +8 ҐҐҔ98ҐX080 9Y,9*A% ,9 ! 7@I(8 (  H8( (8  H)#YYQI/(:Z)1AIY v Y v(H(Ҋ 89; ># *!)Y (0=:P8+0>P:@Q0  YҐҐI0 : @ ! BP2@ҐP Y0(* BBQ"Q:)1Q1"K*@p@@  ? 61 B)J@p@@  ?1) 6)ZU  I 96GY A 8#@C!Y&&Y$XYIX8o+ *!9 ! 2 *! 2 !!CDNMX * 20o"(U$8IA P S * 2 * 2   ! I IPAYF(IE0o*o    Vo T4  s/  K+8 **PPo  A oB! 7oBPY]  $o !{Y)A I *1 2A7(I,o10Q@ * 2,oY,oY I *0 2A)I$o @(Q ! 2) * 2,oY,Y 9 ƐY Ҁ"8@XzP~@}8 * *K0 P0*@0%8~ }zX{I2Q20v8-SJ%8+8  8 9$#8k 0\" F: B Q1){80- K0- K(K0- K8\@Z8g @gQ)A'1$9$+!! "+  +!  *! ! ! 1 !@g..{QI Q X{ F*Z Q1{Y QOI )II()YAQA }#Y?1=(*@}"(} . I2"+ %+9'#(Y40"-  "() 19 <11  K1 Y*A,Q)"8+(( " +@91G RP9 +) (K Q?P99A*Y$Q$ *A#@ )I*0! 1 R1XA $ 4 H Z n  ( P l &TCHECKSUM ERROR DISPLACEMENT OVERFLOW MULTIPLY DEFINED ENTRY LOAD OVERWRITE PAGE ZERO OVERFLOW NEGATIVE ADDRESS ILLEGAL BLOCK TYPE ILLEGAL NMAX VALUE ILLEGAL LOAD ADDRESS EXTERNAL UNDEFINED IN EXTERNAL EXPRESSION SYMBOL TABLE OVERFLOW SYSTEM LIBRARY NOT FOUND EXTERNAL LOCATION UNDEFINED NAMED COMMON ERROR SYMBOL TABLE TOO LARGE FOR CORE IMAGE TASK MONITOR ERROR (USTCH) OVERLAY DIRECTORY OVERFLOW FOREGROUND PARTITIONS OVERLAY ORDER ERROR ILLEGAL RELOCATION FLAG R.B. FILE ERROR DUPLICATE EXTD NO STARTING ADDRESS FOR LOAD MODULE **FATAL LOAD ERROR** RDOS ERROR: BINARY WITHOUT END BLOCK NO SCHEDULER STARTING ADDRESS TASKS OR CHANNELS SPECIFIED = 0 WARNING *** ZERO LENGTH OVERLAY NODE .COMM DEFINITION OUTSIDE FIRST MODULE ALIGNMENT ERROR IN NODE ASSIGNMENT OF LABELED COMMON LABELED COMMON IN NODE DEFINED OUTSIDE NODE NO LIBRARIES ARE ALLOWED IN AN OVERLAY DEFINITION LABELED COMMON IS ROOT BOUNDVIRTUAL OVERLAYS AND GLOBAL/R DO NOT MIXTCB OR OVERLAY DIR. TABLE HAS EXCEEDED FIRST MAP PAGE BOUNDARY LOADED BY RLDR REV 07.10 AT ##:##:## ##/##/## DEBUGk5*Z"*:X8:2! H`:Y:2` Y8 ` =CKS8Z9(J+J@Z*J8H`SYS1MLM(ee  SYS1M.SV LOADED BY RLDR REV 07.10 AT 12:02:51 11/21/80 SYS00 000452 UINIT 000452 UCLIB 000452 TMIN 004510 NSAC3 004604 UCLIE 004604 URTC1 053506 UINI1 053506 UINI2 054772 UINI3 056177 USCHE 057734 UPSPA 060641 USYMO 060642 USYST 061344 UPXXD 062532 UOVLA 062672 UTTYD 063334 URWBL 064474 UBLKI 065270 UFILI 066142 UGSUB 067721 UIOBU 070226 BADSP 071051 USTAC 071107 UCELL 071451 UDP0D 071531 UDKPD 071655 UINTD 072347 UPANI 073227 UDDPM 073327 UTABL 073332 URESO 074711 000000 000,000 UDFRW 000000 000361 000,001 UDFLR 000000 000366 000,002 UUTIL 000000 000314 000,003 UCREA 000000 000375 000,004 UDELE 000000 000355 000,005 UFLSY 000000 000353 000,006 USOV1 000000 000335 000,007 USOV2 000000 000377 000,010 USOV3 000000 000376 000,011 USOV4 000000 000347 000,012 UDVIN 000000 000357 000,013 UCRSF 000000 000366 000,014 URNG1 000000 000273 000,015 URNG2 000000 000347 000,016 URNG3 000000 000375 000,017 USOV5 000000 000332 000,020 UMTIO 000000 000361 000,021 UMTUC 000000 000370 000,022 UTUON 000000 000327 000,023 UCDRO 000000 000372 000,024 UWDBL 000000 000377 000,025 USPLR 000000 000374 000,026 UCODR 000000 000365 000,027 USOV6 000000 000366 000,030 USOV7 000000 000371 000,031 USOV8 000000 000312 000,032 USOV9 000000 000351 000,033 USV10 000000 000373 000,034 USV11 000000 000315 000,035 UJEHO 000000 000357 000,036 USV12 000000 000263 000,037 USV13 000000 000370 000,040 USV14 000000 000344 000,041 USV15 000000 000360 000,042 USV16 000000 000102 000,043 UFLS2 000000 000370 000,044 USV17 000000 000223 000,045 USV18 000000 000375 000,046 UWDCB 000000 000354 000,047 USV19 000000 000370 000,050 USV20 000000 000001 000,051 USV21 000000 000326 000,052 USFTA 000000 000202 000,053 USV22 000000 000345 000,054 USV23 000000 000311 000,055 USV24 000000 000372 000,056 USV25 000000 000332 000,057 UFSTA 000000 000307 000,060 UDVRL 000000 000330 000,061 USV26 000000 000023 000,062 USV27 000000 000166 000,063 USV28 000000 000011 000,064 UTUNO 000000 000246 000,065 UQTYO 000000 000320 000,066 USV29 000000 000136 000,067 USV30 000000 000260 074711 XN SYMB 056130 XN SYMP 056127 NMAX 074711 ZMAX 000064 CSZE 000000 EST 000000 SST 000000 BOOT 000000 IPCEL 000000 MNSTK 000001 NDP0D 000001 TSCNT 000001 URDOS 000001 RTCI 000001 NP00D 000002 NCEL 000003 NUBUF 000006 BCEC 000006 SCNT 000012 TUBUF 000014 RTCDV 000014 TUPBU 000016 TUSC 000026 TUPSC 000030 .VBF0 000032 .VBF1 000033 .TCRS 000034 .TUFP 000035 .TUF1 000036 .TUFD 000037 EMEM 000040 NSEG 000100 USTAD 000400 CLIBT 000452 CLIBU 004326 TMIN 004511 LCLID 004604 .SAC0 020016 .SAC1 024016 .SAC2 030016 .SAC3 034016 SSINI 053506 SSINT 053527 SSINS 053574 RDCH 053725 TYCH 053732 SIZIT 055003 PTPSW 055247 OVIN 056177 DADR 056253 MSG 056721 SMON 057734 SMON1 057735 SMNXT 057752 SACHN 060020 STSAV 060021 PENTR 060024 RTCNS 060114 URSEX 060155 UPQUE 060177 PTPRV 060200 PTSWP 060201 PRISW 060207 FPUSV 060210 CFPU 060322 TACT 060326 TINA3 060350 NOTSK 060352 TWINK 060442 TSKPU 060472 INTSK 060545 PATCH 060641 BRKP1 060642 BRKP2 060655 BLKCA 060661 BLKCB 060662 QCHK1 060761 FOPE 061006 TTYG 061010 TTYP 061017 FILDQ 061040 CLCHK 061054 SDNCK 061070 SDNKA 061073 SOPNC 061076 RDCK1 061102 RTCST 061114 RDCK0 061125 RDCK2 061130 WRCK 061133 DTER 061171 MTCHK 061177 TIMEQ 061215 SYST 061344 SQ1 061456 SQ2 061466 CMER 061537 SYSER 061613 SYSE2 061614 RETER 061631 RETE2 061632 IGCEL 061640 GCELL 061645 GETCE 061701 CREL 061715 CFREE 061732 CELCN 061735 CLINK 061737 TRTN 061773 GTRTN 061774 TRTN3 062016 SPRTN 062057 INXTB 062112 INXTA 062113 INFND 062126 INDSK 062146 SENQ 062251 P00DL 062532 P00DB 062546 P01DL 062612 P01DB 062626 OVLY1 062672 FLAK1 062676 FLAKE 062703 OICAL 062763 OVCH1 063024 OVCHN 063031 OVLAY 063037 USGDN 063124 LDRTN 063131 OVBA1 063146 OVBAS 063147 PREOV 063307 TTIDC 063334 TTRDC 063500 TTIEX 063534 CHAR 063633 TTDCT 063635 TTIS 063637 DEBAD 063743 INLIN 063747 LABEL 064111 NOPPR 064135 TTIDT 064224 TTRDT 064240 TTODC 064254 TTOEX 064346 TTODT 064400 TTIQ 064414 TTOQ 064434 TTRQ 064454 RDB 064475 WRB 064476 RDCBK 065270 RDNBK 065430 RDLBK 065611 RDBLK 065646 RDBNO 066074 BLKIN 066142 ASBUF 066143 RLMPB 066447 RELMB 066447 SETMO 066450 RELPB 066461 RELB 066461 RELZT 066517 RELDB 066523 IDCB 066535 FIDCB 066576 FNDCB 066577 BMOVE 066615 PSHRD 066657 BFLUS 066704 FLUSH 066705 WAITF 067001 WAIT 067002 MODOU 067102 QUENT 067141 STCON 067327 ENCON 067330 STLIN 067331 BLIST 067332 GBLKN 067333 PEND 067436 PENDR 067456 UNPEN 067472 GPATJ 067523 GPATH 067524 FPATJ 067546 FPATH 067547 CPATJ 067566 CPATH 067567 XDOA 067611 XNOC 067621 XDIBC 067623 XNOS 067625 XDICC 067627 XDOCS 067631 XDOB 067633 XDOC 067635 XOAS 067637 XDOAP 067641 XDOBS 067643 XDOBP 067645 XDOCP 067647 XIAC 067651 XDIC 067653 XDIB 067655 XDIA 067657 XDOAC 067661 DSKDT 067705 SAVEM 067721 RETN 067733 MVBYT 067745 MFMVB 067745 MTMVB 067745 SRTN 067775 LDBT 070010 MLDBT 070010 LDCHR 070010 STCHR 070023 STBT 070023 MSTBT 070023 MVWD 070047 MFMVW 070047 MTMVW 070047 MBMVW 070047 MCLR 070067 CLEAR 070067 CMPWD 070104 TSTNE 070133 TSTEQ 070134 DIVI 070154 DIVD 070155 MPY 070175 MPYAD 070176 ROX 070207 RSTFL 070216 SETFL 070217 XIBUF 070226 IBUF 070227 OBUF 070334 ENQUE 070447 DEQUE 070501 CISER 070537 FINQ 070650 FINP 070653 DEQRQ 070655 COSER 070664 STOUT 070666 XNIOC 071010 XDIAC 071014 XNIOS 071016 XDIAP 071020 DDOB 071022 DDOCS 071024 DDIC 071026 XSKPB 071030 STCOT 071051 STLIK 071107 STK00 071110 FCELL 071451 CEL01 071471 CEL02 071511 DKPDC 071531 DKPEX 071546 D00DL 071551 DP0DB 071565 DP0DC 071631 DKPDS 071655 DKPST 072041 DKPIT 072154 DKPER 072343 PFL 072347 USTKO 072362 INTS 072436 LINT 072521 DTOTL 072537 TIA0 072542 TIA1 072543 TIA2 072544 TIA3 072545 TCRY 072546 INTLV 072547 PFRET 072647 TSECI 072662 RESCH 072727 IHDN 072773 UTOTL 073012 IWKUP 073013 DISMI 073034 DISI3 073041 USSV 073140 TODI 073176 TODS 073200 TODH 073202 TODD 073204 STKDC 073206 PNIC 073227 REG 073317 DMPLO 073327 DMPUN 073327 DLOCK 073327 DGRAB 073327 DVLOC 073327 DVUNL 073327 DUNLO 073327 SYSQ 073332 DSQ1 073417 DSQ2 073504 SPPTH 073571 SPOLF 073572 SPOLQ 073573 PT1 073613 SFGNP 073626 PT2 073676 PS1 073761 OVTAB 073774 BRSV 074074 FBRSV 074101 SYSTB 074106 OSNAM 074124 SYSNM 074132 FIMSG 074140 MAPNM 074147 FTMSG 074155 BIN 074164 FIN 074166 ENVIR 074242 TUNE 074243 ITUNE 074266 TUSW 074274 IVFWA 074275 ITBL 074276 TTITB 074305 PTRTB 074307 DPTBL 074330 LNKDR 074333 IVTTB 074334 PFLTB 074374 TTRTB 074376 IVLWA 074401 PPDCB 074402 MDCB 074403 SYSTM 074404 SYSTR 074405 SYSFL 074406 FSYSF 074407 SYSFG 074410 SFGZP 074411 DIRR 074412 BUFNT 074413 SYSIN 074414 SPOOL 074415 STDCC 074416 .IPIN 074417 .IPBQ 074420 ALMIN 074421 SS 074423 ADTDB 074603 SQ 074650 NTI1Q 074651 NTO1Q 074652 BQ 074671 BQ2 075307 BQ3 075725 BQ4 076343 BQ5 076761 BQ6 077377 DFWL 100000 TUSTK 100002 TUPST 100004 TUCEL 100007 TUPCE 100011 BQ7 100015 DFRR 100037 DFWR 100040 DFRS 100143 DFWS 100144 DFRL 100200 CHNST 100347 USRST 100350 USRLS 100351 LINK 100352 MTDIO 100400 BQ8 100433 OVLDC 100476 GCHN 100477 INTAD 100521 CONNT 100601 CONNS 100605 TCCON 100607 CCONT 100610 CCONS 100614 TCRND 100616 CRAND 100617 TCRET 100621 CREAT 100622 MAKE1 100623 MAKE 100624 UNLNK 101000 DELFI 101001 BQ9 101051 TRDEL 101140 EQUIV 101151 SRUFE 101200 SRUFD 101201 GCIN 101400 GCOUT 101401 SECI 101422 CHLAT 101435 CHAT 101442 BQ10 101467 GTAT 101473 FGND 101532 RDSW 101542 UCLI 101545 UCLR 101546 RTCF 101547 MEM 101550 STIME 101551 ODIS 101552 OEBL 101553 GTIME 101565 OPNCK 101600 DNCK 101627 CFNAM 101654 CSFNA 101655 TFTX 101732 SDIRR 101735 NAMCK 101771 RDCI 102020 BQ11 102105 TOPN 102200 EOPN 102202 OPNA 102204 ROPN 102206 OPEN 102210 CLS 102337 ECLR 102340 RSET 102341 DKINI 102413 DPINI 102414 BQ12 102523 CRMPE 102631 RPIPH 102674 CRSFS 102675 TOO 103000 OPNO 103014 OPNI 103032 CLSO 103074 TTIC 103104 CLSI 103115 BQ13 103141 WRCDV 103145 WRMSO 103153 TIRS 103200 TIRL 103203 RDS 103206 RCHR 103217 DRCHR 103220 GCHR 103262 GCH 103310 RDL 103324 ACHR 103400 PCH 103400 WRS 103523 BQ14 103557 WRL 103565 QWAIT 103600 BRKWT 103726 MTRCB 104000 MTRLB 104005 MTRNB 104006 WRITI 104040 MTRLS 104136 MTINT 104137 MTCLS 104140 BQ15 104175 MTOPD 104237 MTOPN 104241 MTOPA 104242 TUON 104446 CDRRL 104600 BQ16 104613 CRINL 105000 CRINI 105001 FCRET 105042 WDBLK 105144 STSPL 105200 BQ17 105231 SPLPS 105341 SPLST 105400 SPKIL 105454 SSPKL 105463 DCODE 105566 NCODE 105567 SPDIS 105570 SPEBL 105571 WRCI 105605 BQ18 105647 RDCI3 106005 RDCI4 106021 RDCI2 106025 CMNF 106205 CMN 106215 BQ19 106265 GDAY 106400 SDAY 106473 LNKRS 106555 RMVBA 106600 BQ20 106703 INIT 106724 GSYS 107000 GMDIR 107013 GDIRS 107014 SRDCT 107047 SZDSK 107106 ICMN 107123 WRCMN 107144 RDCMN 107145 CSYPA 107200 CSYSD 107201 BQ21 107321 BRK 107407 DSKC 107600 DSKCI 107600 UPDAT 107635 DFEO 107723 DSKA 107724 DSKO 107725 DFRO 107726 DFTO 107727 BQ22 107737 DDIR 110000 WROPR 110065 WROPI 110066 RDOPR 110067 CDIR 110200 CPART 110207 BQ23 110355 DDIS 110400 DEBL 110401 IDEF 110447 RNAM 110600 DELPP 110723 BQ24 110773 SCLUP 111000 IRMV 111161 MDRLS 111200 HBOOT 111201 WDCBK 111400 BQ25 111411 WBRKF 111600 QTCLS 111724 QTOPN 111725 BQ26 112027 MCRCL 112200 MCCLS 112203 MCWRS 112326 MCRDS 112327 SFTAB 112400 BQ27 112445 RLBOT 112600 ABORT 113000 BQ28 113063 SFCP 113200 GFCP 113235 SPLDL 113274 GMCA 113326 MCROP 113336 MCOPN 113340 FINIT 113400 BQ29 113501 CRMAP 113504 CSTAT 113600  STATU 113601 DEBLK 113711 DVRLS 114000 RLSE 114000 RLSER 114113 BQ30 114117 MEMI 114200 CCMN 114400 RETFA 114436 RETUR 114437 ERTN 114440 RETCE 114447 RDCER 114552 OVOPN 114600 TOON 115040 TUOFF 115161 QTRDL 115200 QTRDS 115202 QTWRL 115205 QTWRS 115207 OVRP 115400 RLBXT 115600 MODEM 177777 MODIN 177777 MODSE 177777 INFOS 177777 JNFOS 177777 MSV2 177777 MTAQ 177777 MCRQ 177777 MCTQ 177777 NM00D 177777 NM10D 177777 CLSTB 177777 ALM00 177777 ALM01 177777 ALM02 177777 ALM03 177777 ALM04 177777 ALM05 177777 ALM06 177777 ALM07 177777 ALM08 177777 ALM09 177777 ALM10 177777 ALM11 177777 ALM12 177777 ALM13 177777 ALM14 177777 ALM15 177777 ALM16 177777 ALM17 177777 ALM18 177777 ALM19 177777 ALM20 177777 ALM21 177777 ALM22 177777 ALM23 177777 ALM24 177777 ALM25 177777 ALM26 177777 ALM27 177777 ALM28 177777 ALM29 177777 ALM30 177777 ALM31 177777 ALM32 177777 ALM33 177777 ALM34 177777 ALM35 177777 ALM36 177777 ALM37 177777 ALM38 177777 ALM39 177777 ALM40 177777 ALM41 177777 ALM42 177777 ALM43 177777 ALM44 177777 ALM45 177777 ALM46 177777 ALM47 177777 ALM48 177777 ALM49 177777 ALM50 177777 ALM51 177777 ALM52 177777 ALM53 177777 ALM54 177777 ALM55 177777 ALM56 177777 ALM57 177777 ALM58 177777 ALM59 177777 ALM60 177777 ALM61 177777 ALM62 177777 ALM63 177777 DLMUX 177777 PL001 177777 PL002 177777 PL003 177777 PL004 177777 PL005 177777 PL006 177777 PL007 177777 PL010 177777 PL011 177777 PL012 177777 PL013 177777 PL014 177777 PL015 177777 PL016 177777 PL017 177777 PL020 177777 PL021 177777 PL022 177777 PL023 177777 PL024 177777 PL025 177777 PL026 177777 PL027 177777 PL030 177777 PL031 177777 PL032 177777 PL033 177777 PL034 177777 PL035 177777 PL036 177777 PL037 177777 PL040 177777 PL041 177777 PL042 177777 PL043 177777 PL044 177777 PL045 177777 PL046 177777 PL047 177777 PL050 177777 PL051 177777 PL052 177777 PL053 177777 PL054 177777 PL055 177777 PL056 177777 PL057 177777 PL060 177777 PL061 177777 PL062 177777 PL063 177777 PL064 177777 PL065 177777 PL066 177777 PL067 177777 PL070 177777 PL071 177777 PL072 177777 PL073 177777 PL074 177777 PL075 177777 PL076 177777 PL077 177777 PL100 177777 PL101 177777 PL102 177777 PL103 177777 PL104 177777 PL105 177777 PL106 177777 PL107 177777 PL110 177777 PL111 177777 PL112 177777 PL113 177777 PL114 177777 PL115 177777 PL116 177777 PL117 177777 PL120 177777 PL121 177777 PL122 177777 PL123 177777 ALINI 177777 LPTQ 177777 PLT1Q 177777 PLTDC 177777 PLT1D 177777 ALMDC 177777 ALM1D 177777 DLALM 177777 PL000 177777 QKICK 177777 DKP1D 177777 DK0DB 177777 DK1DB 177777 ZRDOS 177777 DZPER 177777 DZPDC 177777 DZP1D 177777 DZ0DB 177777 DZ4DB 177777 IUD 177777 HISTI 177777 IPBQ 177777 WTEOF 177777 WTRCD 177777 WSEND 177777 PWRFL 177777 SFFIL 177777 SFRCD 177777 PFLDC 177777 IVTIN 177777 OVUSG 177777 TUNIN 177777 TUVSW 177777 REWND 177777 CEL03 177777 RDRCD 177777 QTYTB 177777 QTRZA 177777 QTYWZ 177777 TGET 177777 QTYNO 177777 QTWZA 177777 STK02 177777 STK03 177777 STK04 177777 STK05 177777 STK06 177777 STK07 177777 STK08 177777 STK09 177777 TTI1Q 177777 TTR1Q 177777 TTO1Q 177777 PTR1Q 177777 PTP1Q 177777 MTA1Q 177777 CTA1Q 177777 CDR1Q 177777 DPIQ 177777 DPOQ 177777 TTI1D 177777 TTR1D 177777 TTO1D 177777 PTRDC 177777 PTR1D 177777 PTPDC 177777 PTP1D 177777 MTADC 177777 MTA1D 177777 CTADC 177777 CTA1D 177777 CDRDC 177777 CDR1D 177777 QTY1D 177777 QTYDC 177777 RTCDC 177777 NDS0D 177777 NDS4D 177777 NDP0F 177777 NDP4D 177777 NDP4F 177777 NDZ0D 177777 NDZ4D 177777 QTDCB 177777 PDUMP 177777 OTHER 177777 RTC1D 177777 STK01 177777 MCRBL 177777 MCTBL 177777 GSTAT 177777 TSEND 177777 DSKER 177777 DSPER 177777 CTAQ 177777 CDRQ 177777 MCR1Q 177777 MCT1Q 177777 DSKDC 177777 DSK1D 177777 DSPDC 177777 DSP1D 177777 MCRDC 177777 MCR1D 177777 MCTDC 177777 MCT1D 177777 DS0DB 177777 DS4DB 177777 NC00D 177777 NC10D 177777 MCRDB 177777 MCR1B 177777 SYMP 177777 SYMB 177777 TRESP 177777 TRPRT 177777 SBRCD 177777 SBFIL 177777 RGET 177777 MRDOS 177777 NRDOS 177777 BRDOS 177777 ARDOS 177777 ERCCT 177777 ALM? 177777 SQT64 177777 QTYQ 177777 M10DB 177777 C10DB 177777 IPINI 177777 PTRQ 177777 PTPQ 177777 LPT1Q 177777 PLTQ 177777 LPTDC 177777 LPT1D 177777 DPIDC 177777 DPODC 177777 DP0FD 177777 DP4DB 177777 DP4FD 177777 M00DB 177777 C00DB 177777 IPBDC 177777 OPPRO 177777 UPWRF 177777 P02DL 177777 D01DL 177777 GHMAT*e }  .TITL GHMA .NREL STRT: .SYSTM .MEM JMP .+1 MOV 0,2 .SYSTM .ERTN .END STRT SYS2MLM)ll  SYS2M.SV LOADED BY RLDR REV 07.10 AT 00:30:19 11/28/80 SYS00 000452 UINIT 000452 UCLIB 000452 TMIN 004510 NSAC3 004604 UCLIE 004604 URTC1 051131 UINI1 051131 UINI2 052415 UINI3 053622 USCHE 055357 UPSPA 056264 USYMO 056265 USYST 056767 UPXXD 060155 UOVLA 060375 UTTYD 061037 URWBL 062177 UBLKI 062773 UFILI 063645 UGSUB 065424 ULP13 065731 ULPTD 065731 UIOBU 066125 BADSP 066750 USTAC 067022 UCELL 067725 UDP0D 070265 UDKPD 070621 UINTD 071313 UPANI 072173 UDDPM 072273 UTABL 072276 URESO 073655 000000 000,000 UDFRW 000000 000361 000,001 UDFLR 000000 000366 000,002 UUTIL 000000 000314 000,003 UCREA 000000 000375 000,004 UDELE 000000 000355 000,005 UFLSY 000000 000353 000,006 USOV1 000000 000335 000,007 USOV2 000000 000377 000,010 USOV3 000000 000376 000,011 USOV4 000000 000347 000,012 UDVIN 000000 000357 000,013 UCRSF 000000 000366 000,014 URNG1 000000 000273 000,015 URNG2 000000 000347 000,016 URNG3 000000 000375 000,017 USOV5 000000 000332 000,020 UMTIO 000000 000361 000,021 UMTUC 000000 000370 000,022 UTUON 000000 000327 000,023 UCDRO 000000 000372 000,024 UWDBL 000000 000377 000,025 USPLR 000000 000374 000,026 UCODR 000000 000365 000,027 USOV6 000000 000366 000,030 USOV7 000000 000371 000,031 USOV8 000000 000312 000,032 USOV9 000000 000351 000,033 USV10 000000 000373 000,034 USV11 000000 000315 000,035 UJEHO 000000 000357 000,036 USV12 000000 000263 000,037 USV13 000000 000370 000,040 USV14 000000 000344 000,041 USV15 000000 000360 000,042 USV16 000000 000102 000,043 UFLS2 000000 000370 000,044 USV17 000000 000223 000,045 USV18 000000 000375 000,046 UWDCB 000000 000354 000,047 USV19 000000 000370 000,050 USV20 000000 000001 000,051 USV21 000000 000326 000,052 USFTA 000000 000202 000,053 USV22 000000 000345 000,054 USV23 000000 000311 000,055 USV24 000000 000372 000,056 USV25 000000 000332 000,057 UFSTA 000000 000307 000,060 UDVRL 000000 000330 000,061 USV26 000000 000023 000,062 USV27 000000 000166 000,063 USV28 000000 000011 000,064 UTUNO 000000 000246 000,065 UQTYO 000000 000320 000,066 USV29 000000 000136 000,067 USV30 000000 000260 073655 XN SYMB 053553 XN SYMP 053552 NMAX 073655 ZMAX 000064 CSZE 000000 EST 000000 SST 000000 BOOT 000000 TSCNT 000001 URDOS 000001 RTCI 000001 MNSTK 000002 NDP0D 000003 NP00D 000003 NUBUF 000010 BCEC 000010 IPCEL 000010 SCNT 000012 TUBUF 000014 RTCDV 000014 NCEL 000016 TUPBU 000016 TUSC 000026 TUPSC 000030 .VBF0 000032 .VBF1 000033 .TCRS 000034 .TUFP 000035 .TUF1 000036 .TUFD 000037 EMEM 000040 NSEG 000100 LP132 000204 USTAD 000400 CLIBT 000452 CLIBU 004326 TMIN 004511 LCLID 004604 .SAC0 020016 .SAC1 024016 .SAC2 030016 .SAC3 034016 SSINI 051131 SSINT 051152 SSINS 051217 RDCH 051350 TYCH 051355 SIZIT 052426 PTPSW 052672 OVIN 053622 DADR 053676 MSG 054344 SMON 055357 SMON1 055360 SMNXT 055375 SACHN 055443 STSAV 055444 PENTR 055447 URSEX 055600 UPQUE 055622 PTPRV 055623 PTSWP 055624 PRISW 055632 FPUSV 055633 CFPU 055745 TACT 055751 TINA3 055773 NOTSK 055775 TWINK 056065 TSKPU 056115 INTSK 056170 PATCH 056264 BRKP1 056265 BRKP2 056300 BLKCA 056304 BLKCB 056305 QCHK1 056404 FOPE 056431 TTYG 056433 TTYP 056442 FILDQ 056463 CLCHK 056477 SDNCK 056513 SDNKA 056516 SOPNC 056521 RDCK1 056525 RDCK0 056550 RDCK2 056553 WRCK 056556 DTER 056614 MTCHK 056622 TIMEQ 056640 SYST 056767 SQ1 057101 SQ2 057111 CMER 057162 SYSER 057236 SYSE2 057237 RETER 057254 RETE2 057255 IGCEL 057263 GCELL 057270 GETCE 057324 CREL 057340 CFREE 057355 CELCN 057360 CLINK 057362 TRTN 057416 GTRTN 057417 TRTN3 057441 SPRTN 057502 INXTB 057535 INXTA 057536 INFND 057551 INDSK 057571 SENQ 057674 RTCNS 060114 P00DL 060155 P00DB 060171 P01DL 060235 P01DB 060251 P02DL 060315 P02DB 060331 OVLY1 060375 FLAK1 060401 FLAKE 060406 OICAL 060466 OVCH1 060527 OVCHN 060534 OVLAY 060542 USGDN 060627 LDRTN 060634 OVBA1 060651 OVBAS 060652 PREOV 061012 TTIDC 061037 RTCST 061114 TTRDC 061203 TTIEX 061237 CHAR 061336 TTDCT 061340 TTIS 061342 DEBAD 061446 INLIN 061452 LABEL 061614 NOPPR 061640 TTIDT 061727 TTRDT 061743 TTODC 061757 TTOEX 062051 TTODT 062103 TTIQ 062117 TTOQ 062137 TTRQ 062157 RDB 062200 WRB 062201 RDCBK 062773 RDNBK 063133 RDLBK 063314 RDBLK 063351 RDBNO 063577 BLKIN 063645 ASBUF 063646 RLMPB 064152 RELMB 064152 SETMO 064153 RELPB 064164 RELB 064164 RELZT 064222 RELDB 064226 IDCB 064240 FIDCB 064301 FNDCB 064302 BMOVE 064320 PSHRD 064362 BFLUS 064407 FLUSH 064410 WAITF 064504 WAIT 064505 MODOU 064605 QUENT 064644 STCON 065032 ENCON 065033 STLIN 065034 BLIST 065035 GBLKN 065036 PEND 065141 PENDR 065161 UNPEN 065175 GPATJ 065226 GPATH 065227 FPATJ 065251 FPATH 065252 CPATJ 065271 CPATH 065272 XDOA 065314 XNOC 065324 XDIBC 065326 XNOS 065330 XDICC 065332 XDOCS 065334 XDOB 065336 XDOC 065340 XOAS 065342 XDOAP 065344 XDOBS 065346 XDOBP 065350 XDOCP 065352 XIAC 065354 XDIC 065356 XDIB 065360 XDIA 065362 XDOAC 065364 DSKDT 065410 SAVEM 065424 RETN 065436 MVBYT 065450 MFMVB 065450 MTMVB 065450 SRTN 065500 LDBT 065513 MLDBT 065513 LDCHR 065513 STCHR 065526 STBT 065526 MSTBT 065526 MVWD 065552 MFMVW 065552 MTMVW 065552 MBMVW 065552 MCLR 065572 CLEAR 065572 CMPWD 065607 TSTNE 065636 TSTEQ 065637 DIVI 065657 DIVD 065660 MPY 065700 MPYAD 065701 ROX 065712 RSTFL 065721 SETFL 065722 LPTDC 065731 LPTEX 066066 LPTQ 066071 LPTDT 066111 XIBUF 066125 IBUF 066126 OBUF 066233 ENQUE 066346 DEQUE 066400 CISER 066436 FINQ 066547 FINP 066552 DEQRQ 066554 COSER 066563 STOUT 066565 XNIOC 066707 XDIAC 066713 XNIOS 066715 XDIAP 066717 DDOB 066721 DDOCS 066723 DDIC 066725 XSKPB 066727 STCOT 066750 STLIK 067022 STK00 067023 STK01 067364 FCELL 067725 CEL01 067745 CEL02 067765 CEL03 070005 CEL04 070025 CEL05 070045 CEL06 070065 CEL07 070105 CEL08 070125 CEL09 070145 CEL10 070165 CEL11 070205 CEL12 070225 CEL13 070245 DKPDC 070265 DKPEX 070302 D00DL 070305 DP0DB 070321 DP0DC 070365 D01DL 070411 DP1DB 070425 DP1DC 070471 D02DL 070515 DP2DB 070531 DP2DC 070575 DKPDS 070621 DKPST 071005 DKPIT 071120 DKPER 071307 PFL 071313 USTKO 071326 INTS 071402 LINT 071465 DTOTL 071503 TIA0 071506 TIA1 071507 TIA2 071510 TIA3 071511 TCRY 071512 INTLV 071513 PFRET 071613 TSECI 071626 RESCH 071673 IHDN 071737 UTOTL 071756  IWKUP 071757 DISMI 072000 DISI3 072005 USSV 072104 TODI 072142 TODS 072144 TODH 072146 TODD 072150 STKDC 072152 PNIC 072173 REG 072263 DMPLO 072273 DMPUN 072273 DLOCK 072273 DGRAB 072273 DVLOC 072273 DVUNL 072273 DUNLO 072273 SYSQ 072276 DSQ1 072363 DSQ2 072450 SPPTH 072535 SPOLF 072536 SPOLQ 072537 PT1 072557 SFGNP 072572 PT2 072642 PS1 072725 OVTAB 072740 BRSV 073040 FBRSV 073045 SYSTB 073052 OSNAM 073070 SYSNM 073076 FIMSG 073104 MAPNM 073113 FTMSG 073121 BIN 073130 FIN 073132 ENVIR 073206 TUNE 073207 ITUNE 073232 TUSW 073240 IVFWA 073241 ITBL 073242 TTITB 073251 PTRTB 073253 DPTBL 073274 LNKDR 073277 IVTTB 073300 PFLTB 073340 TTRTB 073342 IVLWA 073345 PPDCB 073346 MDCB 073347 SYSTM 073350 SYSTR 073351 SYSFL 073352 FSYSF 073353 SYSFG 073354 SFGZP 073355 DIRR 073356 BUFNT 073357 SYSIN 073360 SPOOL 073361 STDCC 073362 .IPIN 073363 .IPBQ 073364 ALMIN 073365 SS 073367 ADTDB 073547 SQ 073614 NTI1Q 073615 NTO1Q 073616 BQ 073635 BQ2 074253 BQ3 074671 BQ4 075307 BQ5 075725 BQ6 076343 BQ7 076761 BQ8 077377 DFWL 100000 TUSTK 100002 TUPST 100004 TUCEL 100007 TUPCE 100011 BQ9 100015 DFRR 100037 DFWR 100040 DFRS 100143 DFWS 100144 DFRL 100200 CHNST 100347 USRST 100350 USRLS 100351 LINK 100352 MTDIO 100400 BQ10 100433 OVLDC 100476 GCHN 100477 INTAD 100521 CONNT 100601 CONNS 100605 TCCON 100607 CCONT 100610 CCONS 100614 TCRND 100616 CRAND 100617 TCRET 100621 CREAT 100622 MAKE1 100623 MAKE 100624 UNLNK 101000 DELFI 101001 BQ11 101051 TRDEL 101140 EQUIV 101151 SRUFE 101200 SRUFD 101201 GCIN 101400 GCOUT 101401 SECI 101422 CHLAT 101435 CHAT 101442 BQ12 101467 GTAT 101473 FGND 101532 RDSW 101542 UCLI 101545 UCLR 101546 RTCF 101547 MEM 101550 STIME 101551 ODIS 101552 OEBL 101553 GTIME 101565 OPNCK 101600 DNCK 101627 CFNAM 101654 CSFNA 101655 TFTX 101732 SDIRR 101735 NAMCK 101771 RDCI 102020 BQ13 102105 TOPN 102200 EOPN 102202 OPNA 102204 ROPN 102206 OPEN 102210 CLS 102337 ECLR 102340 RSET 102341 DKINI 102413 DPINI 102414 BQ14 102523 CRMPE 102631 RPIPH 102674 CRSFS 102675 TOO 103000 OPNO 103014 OPNI 103032 CLSO 103074 TTIC 103104 CLSI 103115 BQ15 103141 WRCDV 103145 WRMSO 103153 TIRS 103200 TIRL 103203 RDS 103206 RCHR 103217 DRCHR 103220 GCHR 103262 GCH 103310 RDL 103324 ACHR 103400 PCH 103400 WRS 103523 BQ16 103557 WRL 103565 QWAIT 103600 BRKWT 103726 MTRCB 104000 MTRLB 104005 MTRNB 104006 WRITI 104040 MTRLS 104136 MTINT 104137 MTCLS 104140 BQ17 104175 MTOPD 104237 MTOPN 104241 MTOPA 104242 TUON 104446 CDRRL 104600 BQ18 104613 CRINL 105000 CRINI 105001 FCRET 105042 WDBLK 105144 STSPL 105200 BQ19 105231 SPLPS 105341 SPLST 105400 SPKIL 105454 SSPKL 105463 DCODE 105566 NCODE 105567 SPDIS 105570 SPEBL 105571 WRCI 105605 BQ20 105647 RDCI3 106005 RDCI4 106021 RDCI2 106025 CMNF 106205 CMN 106215 BQ21 106265 GDAY 106400 SDAY 106473 LNKRS 106555 RMVBA 106600 BQ22 106703 INIT 106724 GSYS 107000 GMDIR 107013 GDIRS 107014 SRDCT 107047 SZDSK 107106 ICMN 107123 WRCMN 107144 RDCMN 107145 CSYPA 107200 CSYSD 107201 BQ23 107321 BRK 107407 DSKC 107600 DSKCI 107600 UPDAT 107635 DFEO 107723 DSKA 107724 DSKO 107725 DFRO 107726 DFTO 107727 BQ24 107737 DDIR 110000 WROPR 110065 WROPI 110066 RDOPR 110067 CDIR 110200 CPART 110207 BQ25 110355 DDIS 110400 DEBL 110401 IDEF 110447 RNAM 110600 DELPP 110723 BQ26 110773 SCLUP 111000 IRMV 111161 MDRLS 111200 HBOOT 111201 WDCBK 111400 BQ27 111411 WBRKF 111600 QTCLS 111724 QTOPN 111725 BQ28 112027 MCRCL 112200 MCCLS 112203 MCWRS 112326 MCRDS 112327 SFTAB 112400 BQ29 112445 RLBOT 112600 ABORT 113000 BQ30 113063 SFCP 113200 GFCP 113235 SPLDL 113274 GMCA 113326 MCROP 113336 MCOPN 113340 FINIT 113400 CRMAP 113504 CSTAT 113600 STATU 113601 DEBLK 113711 DVRLS 114000 RLSE 114000 RLSER 114113 MEMI 114200 CCMN 114400 RETFA 114436 RETUR 114437 ERTN 114440 RETCE 114447 RDCER 114552 OVOPN 114600 TOON 115040 TUOFF 115161 QTRDL 115200 QTRDS 115202 QTWRL 115205 QTWRS 115207 OVRP 115400 RLBXT 115600 LPCHR 133002 MODEM 177777 MODIN 177777 MODSE 177777 INFOS 177777 JNFOS 177777 MSV2 177777 MTAQ 177777 MCRQ 177777 MCTQ 177777 NM00D 177777 NM10D 177777 CLSTB 177777 ALM00 177777 ALM01 177777 ALM02 177777 ALM03 177777 ALM04 177777 ALM05 177777 ALM06 177777 ALM07 177777 ALM08 177777 ALM09 177777 ALM10 177777 ALM11 177777 ALM12 177777 ALM13 177777 ALM14 177777 ALM15 177777 ALM16 177777 ALM17 177777 ALM18 177777 ALM19 177777 ALM20 177777 ALM21 177777 ALM22 177777 ALM23 177777 ALM24 177777 ALM25 177777 ALM26 177777 ALM27 177777 ALM28 177777 ALM29 177777 ALM30 177777 ALM31 177777 ALM32 177777 ALM33 177777 ALM34 177777 ALM35 177777 ALM36 177777 ALM37 177777 ALM38 177777 ALM39 177777 ALM40 177777 ALM41 177777 ALM42 177777 ALM43 177777 ALM44 177777 ALM45 177777 ALM46 177777 ALM47 177777 ALM48 177777 ALM49 177777 ALM50 177777 ALM51 177777 ALM52 177777 ALM53 177777 ALM54 177777 ALM55 177777 ALM56 177777 ALM57 177777 ALM58 177777 ALM59 177777 ALM60 177777 ALM61 177777 ALM62 177777 ALM63 177777 DLMUX 177777 PL001 177777 PL002 177777 PL003 177777 PL004 177777 PL005 177777 PL006 177777 PL007 177777 PL010 177777 PL011 177777 PL012 177777 PL013 177777 PL014 177777 PL015 177777 PL016 177777 PL017 177777 PL020 177777 PL021 177777 PL022 177777 PL023 177777 PL024 177777 PL025 177777 PL026 177777 PL027  177777 PL030 177777 PL031 177777 PL032 177777 PL033 177777 PL034 177777 PL035 177777 PL036 177777 PL037 177777 PL040 177777 PL041 177777 PL042 177777 PL043 177777 PL044 177777 PL045 177777 PL046 177777 PL047 177777 PL050 177777 PL051 177777 PL052 177777 PL053 177777 PL054 177777 PL055 177777 PL056 177777 PL057 177777 PL060 177777 PL061 177777 PL062 177777 PL063 177777 PL064 177777 PL065 177777 PL066 177777 PL067 177777 PL070 177777 PL071 177777 PL072 177777 PL073 177777 PL074 177777 PL075 177777 PL076 177777 PL077 177777 PL100 177777 PL101 177777 PL102 177777 PL103 177777 PL104 177777 PL105 177777 PL106 177777 PL107 177777 PL110 177777 PL111 177777 PL112 177777 PL113 177777 PL114 177777 PL115 177777 PL116 177777 PL117 177777 PL120 177777 PL121 177777 PL122 177777 PL123 177777 ALINI 177777 PLT1Q 177777 PLTDC 177777 PLT1D 177777 ALMDC 177777 ALM1D 177777 DLALM 177777 PL000 177777 QKICK 177777 DKP1D 177777 DK0DB 177777 DK1DB 177777 ZRDOS 177777 DZPER 177777 DZPDC 177777 DZP1D 177777 DZ0DB 177777 DZ4DB 177777 IUD 177777 HISTI 177777 IPBQ 177777 PWRFL 177777 SFFIL 177777 SFRCD 177777 PFLDC 177777 IVTIN 177777 OVUSG 177777 TUNIN 177777 TUVSW 177777 REWND 177777 CEL14 177777 WTEOF 177777 RDRCD 177777 WTRCD 177777 QTYTB 177777 QTRZA 177777 QTYWZ 177777 TGET 177777 QTYNO 177777 QTWZA 177777 STK03 177777 STK04 177777 STK05 177777 STK06 177777 STK07 177777 STK08 177777 STK09 177777 TTI1Q 177777 TTR1Q 177777 TTO1Q 177777 PTR1Q 177777 PTP1Q 177777 MTA1Q 177777 CTA1Q 177777 CDR1Q 177777 DPIQ 177777 DPOQ 177777 TTI1D 177777 TTR1D 177777 TTO1D 177777 PTRDC 177777 PTR1D 177777 PTPDC 177777 PTP1D 177777 MTADC 177777 MTA1D 177777 CTADC 177777 CTA1D 177777 CDRDC 177777 CDR1D 177777 QTY1D 177777 QTYDC 177777 RTCDC 177777 NDS0D 177777 NDS4D 177777 NDP0F 177777 NDP4D 177777 NDP4F 177777 NDZ0D 177777 NDZ4D 177777 QTDCB 177777 PDUMP 177777 OTHER 177777 RTC1D 177777 STK02 177777 MCRBL 177777 MCTBL 177777 GSTAT 177777 TSEND 177777 WSEND 177777 DSKER 177777 DSPER 177777 CTAQ 177777 CDRQ 177777 MCR1Q 177777 MCT1Q 177777 DSKDC 177777 DSK1D 177777 DSPDC 177777 DSP1D 177777 MCRDC 177777 MCR1D 177777 MCTDC 177777 MCT1D 177777 DS0DB 177777 DS4DB 177777 NC00D 177777 NC10D 177777 MCRDB 177777 MCR1B 177777 SYMP 177777 SYMB 177777 TRESP 177777 TRPRT 177777 SBRCD 177777 SBFIL 177777 RGET 177777 MRDOS 177777 NRDOS 177777 BRDOS 177777 ARDOS 177777 ERCCT 177777 ALM? 177777 SQT64 177777 QTYQ 177777 M10DB 177777 C10DB 177777 IPINI 177777 PTRQ 177777 PTPQ 177777 LPT1Q 177777 PLTQ 177777 LPT1D 177777 DPIDC 177777 DPODC 177777 DP0FD 177777 DP4DB 177777 DP4FD 177777 M00DB 177777 C00DB 177777 IPBDC 177777 OPPRO 177777 LPTCH 177777 UPWRF 177777 P03DL 177777 D03DL 177777 RLDROL/ m= !{<  H P(  H!pP8 H! H!c H!a H * H!\ H![ H8 ( H!j  H  H  H9Y!W  6!X(  6  6 )G  6!E  6H!C(  6 ( 6A8I8 " 6AI ! !  " 6A ! A ! ! 7D 0Y) C9 @L @LL. [],0-J K#I)8 ; 2Iy5D9 9 9 9;  ?(  6 8(  6+0I0) +0* 0+00P|8=(C 0CK0|P (8P 8BZZM*J8P@| 8(  60 P/!P.PEP1P0PQ9) #BJ K   SST ESTCSZEZMAXNMAXFCOM.CM 4)b!c00 "0  %   68+)N   6   6IBP @9>!>P S)5%3K493 6 D. dPHt( !,(P @dD/<0\1HHLE1y N nB Q nAs1p (! )r 0M  F  P C@q@!Z L)J1UҐ"  ?(  6 8(  6 ) A0*() ( ),19Ґ" 6)7 6)$  ( ) )) ( q!!  6!! 6@}AX }  [, t OUSTAD  ] t@p@s S4. .4.Pv  S4/ /4/R1ҐPv $.@$/@8T@@T@@$1@uY7!9 2,/  I1 B,/D/0-B KI( H(7H(I@ =C! DT8!5 T/XXj  = >  ( 6AwIw!P  6)2P  6 8(  6 1 Z%  K!S$/@B0- Kj!M)M ' 6!(P8< CY3$/0j 16 12D/0! A$ 0PD=D/@0jCH=   =  K] 2 Xy,/8 I 9  I$/=E D0>(*J D/ Xy Y! 29Xo   ) @! ! 60-B K  SYS.LB40<1&8PCQ*: X91 R (PoP~ 40~"(BB Q1: 1J?9#B#(:Z Q1 ȅ@!@ 8 ςK( )1 j E  b|0-B KY 09Q@}0- vB((I K }P8vK ]0J0-Z KEG 1B q @ ŭH(pP87X18Q9*:  KpA88P#B# <8PB#B Q!+P8P# 0P" ( 8>03(Ґ (Ҡ) ր0P K")BIY) (8+) * 8PXo C#00)*C9%PX 3  q8P#( 1#B8 7 I! 2 2 >Y0Q1"(+8A'9%XY )1! R!9+J QH1) R(JI  Q1 @ R!A t(q 890P"B" 50PB  0P8"89]B =Z"+ "+ O 50PB N%"0 %A* c  g *D/@*#0P"B K $/B %! 7$/ *D/@ӂ% #B$/B#B" QP $/0P[ = % YP~0P"0P5:Z90~ %  Q :@5"B1 K % K K8( @`(t: KU6(d4/HL/14P(- 15 &)\TASK0- `B KY ! !88 8Y X1 9X @ TMINTMAXAA @v Ъ (0. 0-J K0/(Hv"J 50PB N*#*Y9RP 0P K ӦP 5,EDE 0P N " A "@0P K !@ @t@@ ŅP@t@XzP~:KXBPQ@v bL 8 <  7 Hv~ ! 8v] v8J" v( ! Y 8wXw  9Y ! (®M   0~zY9YYoIoQ98YmXYk8Y38*IjIj* Ia)] 9^!9WJ9X*HPKYM"JC] )9  8w))Xw)+H')( !,8# CPQ 18wPXw) JB9(#C Xy:@JyP~Xv0 Px0P* 8v(x0~yXy*`J Hv 9$@`  `IyXy*Xyyy3+I$1@L1Px3+"CxLyXyyy41#+(|\1Xl 0- vB K <1y@x"CxyXyQzAx"(S(As sPP1rQo t " "9k B"B"Aa@9`Z!UB1X Q R!P9M+J*!I"AI@9@8X1? R(9?J QPQ711J!-901(* Q!!yIG($1(|@l 0- vB K <1D1%C!*0S1*K!* r?0 ѫ\<10|Xl <13S(KK#0C11XyQ AY N "() BB Q  4PpP@UT̪@Xy Ɗ Ʀ8(ǎHyXy Ʀ8@ǂK@ǂBpy ǂ0-B KXz A"0!A!!A%P@P@PE 8  z0-B Kz( ƍ Xz @ @ @ @ zY)19J9 ) 9 -6 [/Xz 8<)9 CQ5 CQ2 ފ!/I. ),I*!* ՂA' )( C(LP)! CQ )I! (A0P! 5B! 2B! -B z( (II00PB B ) (B0P BzY(I(9 9 .?Y&Q$I" ͂!) HA! ;) 1  9 6 9D&@  Z( 9^ n( P<1C0M N"@[G V )C @$/@vAND1$0PA8I7@15 RQ4(#A9"(YA+ P S . S *Q"1$ ,1 ,I)1 S 1 ,I1 S   (F& ]? S 1 ,1"80* ,1梐" v" v v! v Q)!܏)˫!ԥ vD/D0 )de)8 8 + 8`01! ,$0 RIL0L/A@v,1I!D/ )Hv )Hv!D190-J KI")*) !) !))) ))) ).%?&0/AZ69U =,.HV,0HW,1HX,/HYH\,EH]0  a@b(J0@c0 1ݖPv 91 aXv rP r 9 Pv 18nXv" vi0 G8GP}YB8=X0:*9/I-))L0!$ ,I"} ;  ! 6 ) 6L! @LA =@ >A01* !6Q:Xo 41* 2 A*2J#(0E$152 %.)v1 r9;-1 A %+J d gY  ? 6(Z m%L!H!F) )>1 E3A8!ق  !)  6 ) 6!+A((AWAWA#AQAPBAAA}!0   6!?   6 d _ 1("A9)#A( Ղ)"+  Ղ 1!ݭP Q1 !( QY8A8QI4"( I!9!)%$1$ '1"CY(!"!1ҋ )  ? ) 9V 6)SP)PI)懲1!) 1!) %?) )1  6  6  6!0  6!-  6)(!)  6  6-)5(BAEEUA -!-!D  l  c D i j?I)%0  (" I Po 41%()Ե 6(ժխM]IM\MM[MMMM I I  ' 6!d(`P H9 6AZ"((5-3U /9C,  ! ! ! !  LL! @L! @L  ;  6 d  lJSTRLDR.I1RLDR.I2RLDR.I3RLDR.I4 SYS2LLM)ff  SYS2L.SV LOADED BY RLDR REV 07.10 AT 12:10:48 11/22/80 SYS00 000452 UINIT 000452 UCLIB 000452 TMIN 004510 NSAC3 004604 UCLIE 004604 URTC1 052345 UINI1 052345 UINI2 053631 UINI3 055036 USCHE 056573 UPSPA 057500 USYMO 057501 USYST 060203 UPXXD 061371 UOVLA 061611 UTTYD 062253 URWBL 063413 UBLKI 064207 UFILI 065061 UGSUB 066640 ULP13 067145 ULPTD 067145 UIOBU 067341 BADSP 070164 USTAC 070236 UCELL 071141 UDP0D 071321 UDKPD 071655 UINTD 072347 UPANI 073227 UDDPM 073327 UTABL 073332 URESO 074711 000000 000,000 UDFRW 000000 000361 000,001 UDFLR 000000 000366 000,002 UUTIL 000000 000314 000,003 UCREA 000000 000375 000,004 UDELE 000000 000355 000,005 UFLSY 000000 000353 000,006 USOV1 000000 000335 000,007 USOV2 000000 000377 000,010 USOV3 000000 000376 000,011 USOV4 000000 000347 000,012 UDVIN 000000 000357 000,013 UCRSF 000000 000366 000,014 URNG1 000000 000273 000,015 URNG2 000000 000347 000,016 URNG3 000000 000375 000,017 USOV5 000000 000332 000,020 UMTIO 000000 000361 000,021 UMTUC 000000 000370 000,022 UTUON 000000 000327 000,023 UCDRO 000000 000372 000,024 UWDBL 000000 000377 000,025 USPLR 000000 000374 000,026 UCODR 000000 000365 000,027 USOV6 000000 000366 000,030 USOV7 000000 000371 000,031 USOV8 000000 000312 000,032 USOV9 000000 000351 000,033 USV10 000000 000373 000,034 USV11 000000 000315 000,035 UJEHO 000000 000357 000,036 USV12 000000 000263 000,037 USV13 000000 000370 000,040 USV14 000000 000344 000,041 USV15 000000 000360 000,042 USV16 000000 000102 000,043 UFLS2 000000 000370 000,044 USV17 000000 000223 000,045 USV18 000000 000375 000,046 UWDCB 000000 000354 000,047 USV19 000000 000370 000,050 USV20 000000 000001 000,051 USV21 000000 000326 000,052 USFTA 000000 000202 000,053 USV22 000000 000345 000,054 USV23 000000 000311 000,055 USV24 000000 000372 000,056 USV25 000000 000332 000,057 UFSTA 000000 000307 000,060 UDVRL 000000 000330 000,061 USV26 000000 000023 000,062 USV27 000000 000166 000,063 USV28 000000 000011 000,064 UTUNO 000000 000246 000,065 UQTYO 000000 000320 000,066 USV29 000000 000136 000,067 USV30 000000 000260 074711 XN SYMB 054767 XN SYMP 054766 NMAX 074711 ZMAX 000064 CSZE 000000 EST 000000 SST 000000 BOOT 000000 URDOS 000001 TSCNT 000001 RTCI 000001 IPCEL 000001 MNSTK 000002 NDP0D 000003 NP00D 000003 NUBUF 000006 BCEC 000006 NCEL 000007 SCNT 000012 TUBUF 000014 RTCDV 000014 TUPBU 000016 TUSC 000026 TUPSC 000030 .VBF0 000032 .VBF1 000033 .TCRS 000034 .TUFP 000035 .TUF1 000036 .TUFD 000037 EMEM 000040 NSEG 000100 LP132 000204 USTAD 000400 CLIBT 000452 CLIBU 004326 TMIN 004511 LCLID 004604 .SAC0 020016 .SAC1 024016 .SAC2 030016 .SAC3 034016 SSINI 052345 SSINT 052366 SSINS 052433 RDCH 052564 TYCH 052571 SIZIT 053642 PTPSW 054106 OVIN 055036 DADR 055112 MSG 055560 SMON 056573 SMON1 056574 SMNXT 056611 SACHN 056657 STSAV 056660 PENTR 056663 URSEX 057014 UPQUE 057036 PTPRV 057037 PTSWP 057040 PRISW 057046 FPUSV 057047 CFPU 057161 TACT 057165 TINA3 057207 NOTSK 057211 TWINK 057301 TSKPU 057331 INTSK 057404 PATCH 057500 BRKP1 057501 BRKP2 057514 BLKCA 057520 BLKCB 057521 QCHK1 057620 FOPE 057645 TTYG 057647 TTYP 057656 FILDQ 057677 CLCHK 057713 SDNCK 057727 SDNKA 057732 SOPNC 057735 RDCK1 057741 RDCK0 057764 RDCK2 057767 WRCK 057772 DTER 060030 MTCHK 060036 TIMEQ 060054 RTCNS 060114 SYST 060203 SQ1 060315 SQ2 060325 CMER 060376 SYSER 060452 SYSE2 060453 RETER 060470 RETE2 060471 IGCEL 060477 GCELL 060504 GETCE 060540 CREL 060554 CFREE 060571 CELCN 060574 CLINK 060576 TRTN 060632 GTRTN 060633 TRTN3 060655 SPRTN 060716 INXTB 060751 INXTA 060752 INFND 060765 INDSK 061005 SENQ 061110 RTCST 061114 P00DL 061371 P00DB 061405 P01DL 061451 P01DB 061465 P02DL 061531 P02DB 061545 OVLY1 061611 FLAK1 061615 FLAKE 061622 OICAL 061702 OVCH1 061743 OVCHN 061750 OVLAY 061756 USGDN 062043 LDRTN 062050 OVBA1 062065 OVBAS 062066 PREOV 062226 TTIDC 062253 TTRDC 062417 TTIEX 062453 CHAR 062552 TTDCT 062554 TTIS 062556 DEBAD 062662 INLIN 062666 LABEL 063030 NOPPR 063054 TTIDT 063143 TTRDT 063157 TTODC 063173 TTOEX 063265 TTODT 063317 TTIQ 063333 TTOQ 063353 TTRQ 063373 RDB 063414 WRB 063415 RDCBK 064207 RDNBK 064347 RDLBK 064530 RDBLK 064565 RDBNO 065013 BLKIN 065061 ASBUF 065062 RELMB 065366 RLMPB 065366 SETMO 065367 RELB 065400 RELPB 065400 RELZT 065436 RELDB 065442 IDCB 065454 FIDCB 065515 FNDCB 065516 BMOVE 065534 PSHRD 065576 BFLUS 065623 FLUSH 065624 WAITF 065720 WAIT 065721 MODOU 066021 QUENT 066060 STCON 066246 ENCON 066247 STLIN 066250 BLIST 066251 GBLKN 066252 PEND 066355 PENDR 066375 UNPEN 066411 GPATJ 066442 GPATH 066443 FPATJ 066465 FPATH 066466 CPATJ 066505 CPATH 066506 XDOA 066530 XNOC 066540 XDIBC 066542 XNOS 066544 XDICC 066546 XDOCS 066550 XDOB 066552 XDOC 066554 XOAS 066556 XDOAP 066560 XDOBS 066562 XDOBP 066564 XDOCP 066566 XIAC 066570 XDIC 066572 XDIB 066574 XDIA 066576 XDOAC 066600 DSKDT 066624 SAVEM 066640 RETN 066652 MVBYT 066664 MFMVB 066664 MTMVB 066664 SRTN 066714 LDBT 066727 MLDBT 066727 LDCHR 066727 STBT 066742 STCHR 066742 MSTBT 066742 MVWD 066766 MFMVW 066766 MTMVW 066766 MBMVW 066766 MCLR 067006 CLEAR 067006 CMPWD 067023 TSTNE 067052 TSTEQ 067053 DIVI 067073 DIVD 067074 MPY 067114 MPYAD 067115 ROX 067126 RSTFL 067135 SETFL 067136 LPTDC 067145 LPTEX 067302 LPTQ 067305 LPTDT 067325 XIBUF 067341 IBUF 067342 OBUF 067447 ENQUE 067562 DEQUE 067614 CISER 067652 FINQ 067763 FINP 067766 DEQRQ 067770 COSER 067777 STOUT 070001 XNIOC 070123  XDIAC 070127 XNIOS 070131 XDIAP 070133 DDOB 070135 DDOCS 070137 DDIC 070141 XSKPB 070143 STCOT 070164 STLIK 070236 STK00 070237 STK01 070600 FCELL 071141 CEL01 071161 CEL02 071201 CEL03 071221 CEL04 071241 CEL05 071261 CEL06 071301 DKPDC 071321 DKPEX 071336 D00DL 071341 DP0DB 071355 DP0DC 071421 D01DL 071445 DP1DB 071461 DP1DC 071525 D02DL 071551 DP2DB 071565 DP2DC 071631 DKPDS 071655 DKPST 072041 DKPIT 072154 DKPER 072343 PFL 072347 USTKO 072362 INTS 072436 LINT 072521 DTOTL 072537 TIA0 072542 TIA1 072543 TIA2 072544 TIA3 072545 TCRY 072546 INTLV 072547 PFRET 072647 TSECI 072662 RESCH 072727 IHDN 072773 UTOTL 073012 IWKUP 073013 DISMI 073034 DISI3 073041 USSV 073140 TODI 073176 TODS 073200 TODH 073202 TODD 073204 STKDC 073206 PNIC 073227 REG 073317 DMPLO 073327 DMPUN 073327 DLOCK 073327 DGRAB 073327 DVLOC 073327 DVUNL 073327 DUNLO 073327 SYSQ 073332 DSQ1 073417 DSQ2 073504 SPPTH 073571 SPOLF 073572 SPOLQ 073573 PT1 073613 SFGNP 073626 PT2 073676 PS1 073761 OVTAB 073774 BRSV 074074 FBRSV 074101 SYSTB 074106 OSNAM 074124 SYSNM 074132 FIMSG 074140 MAPNM 074147 FTMSG 074155 BIN 074164 FIN 074166 ENVIR 074242 TUNE 074243 ITUNE 074266 TUSW 074274 IVFWA 074275 ITBL 074276 TTITB 074305 PTRTB 074307 DPTBL 074330 LNKDR 074333 IVTTB 074334 PFLTB 074374 TTRTB 074376 IVLWA 074401 PPDCB 074402 MDCB 074403 SYSTM 074404 SYSTR 074405 SYSFL 074406 FSYSF 074407 SYSFG 074410 SFGZP 074411 DIRR 074412 BUFNT 074413 SYSIN 074414 SPOOL 074415 STDCC 074416 .IPIN 074417 .IPBQ 074420 ALMIN 074421 SS 074423 ADTDB 074603 SQ 074650 NTI1Q 074651 NTO1Q 074652 BQ 074671 BQ2 075307 BQ3 075725 BQ4 076343 BQ5 076761 BQ6 077377 DFWL 100000 TUSTK 100002 TUPST 100004 TUCEL 100007 TUPCE 100011 BQ7 100015 DFRR 100037 DFWR 100040 DFRS 100143 DFWS 100144 DFRL 100200 CHNST 100347 USRST 100350 USRLS 100351 LINK 100352 MTDIO 100400 BQ8 100433 OVLDC 100476 GCHN 100477 INTAD 100521 CONNT 100601 CONNS 100605 TCCON 100607 CCONT 100610 CCONS 100614 TCRND 100616 CRAND 100617 TCRET 100621 CREAT 100622 MAKE1 100623 MAKE 100624 UNLNK 101000 DELFI 101001 BQ9 101051 TRDEL 101140 EQUIV 101151 SRUFE 101200 SRUFD 101201 GCIN 101400 GCOUT 101401 SECI 101422 CHLAT 101435 CHAT 101442 BQ10 101467 GTAT 101473 FGND 101532 RDSW 101542 UCLI 101545 UCLR 101546 RTCF 101547 MEM 101550 STIME 101551 ODIS 101552 OEBL 101553 GTIME 101565 OPNCK 101600 DNCK 101627 CFNAM 101654 CSFNA 101655 TFTX 101732 SDIRR 101735 NAMCK 101771 RDCI 102020 BQ11 102105 TOPN 102200 EOPN 102202 OPNA 102204 ROPN 102206 OPEN 102210 CLS 102337 ECLR 102340 RSET 102341 DKINI 102413 DPINI 102414 BQ12 102523 CRMPE 102631 RPIPH 102674 CRSFS 102675 TOO 103000 OPNO 103014 OPNI 103032 CLSO 103074 TTIC 103104 CLSI 103115 BQ13 103141 WRCDV 103145 WRMSO 103153 TIRS 103200 TIRL 103203 RDS 103206 RCHR 103217 DRCHR 103220 GCHR 103262 GCH 103310 RDL 103324 PCH 103400 ACHR 103400 WRS 103523 BQ14 103557 WRL 103565 QWAIT 103600 BRKWT 103726 MTRCB 104000 MTRLB 104005 MTRNB 104006 WRITI 104040 MTRLS 104136 MTINT 104137 MTCLS 104140 BQ15 104175 MTOPD 104237 MTOPN 104241 MTOPA 104242 TUON 104446 CDRRL 104600 BQ16 104613 CRINL 105000 CRINI 105001 FCRET 105042 WDBLK 105144 STSPL 105200 BQ17 105231 SPLPS 105341 SPLST 105400 SPKIL 105454 SSPKL 105463 DCODE 105566 NCODE 105567 SPDIS 105570 SPEBL 105571 WRCI 105605 BQ18 105647 RDCI3 106005 RDCI4 106021 RDCI2 106025 CMNF 106205 CMN 106215 BQ19 106265 GDAY 106400 SDAY 106473 LNKRS 106555 RMVBA 106600 BQ20 106703 INIT 106724 GSYS 107000 GMDIR 107013 GDIRS 107014 SRDCT 107047 SZDSK 107106 ICMN 107123 WRCMN 107144 RDCMN 107145 CSYPA 107200 CSYSD 107201 BQ21 107321 BRK 107407 DSKC 107600 DSKCI 107600 UPDAT 107635 DFEO 107723 DSKA 107724 DSKO 107725 DFRO 107726 DFTO 107727 BQ22 107737 DDIR 110000 WROPR 110065 WROPI 110066 RDOPR 110067 CDIR 110200 CPART 110207 BQ23 110355 DDIS 110400 DEBL 110401 IDEF 110447 RNAM 110600 DELPP 110723 BQ24 110773 SCLUP 111000 IRMV 111161 MDRLS 111200 HBOOT 111201 WDCBK 111400 BQ25 111411 WBRKF 111600 QTCLS 111724 QTOPN 111725 BQ26 112027 MCRCL 112200 MCCLS 112203 MCWRS 112326 MCRDS 112327 SFTAB 112400 BQ27 112445 RLBOT 112600 ABORT 113000 BQ28 113063 SFCP 113200 GFCP 113235 SPLDL 113274 GMCA 113326 MCROP 113336 MCOPN 113340 FINIT 113400 BQ29 113501 CRMAP 113504 CSTAT 113600 STATU 113601 DEBLK 113711 RLSE 114000 DVRLS 114000 RLSER 114113 BQ30 114117 MEMI 114200 CCMN 114400 RETFA 114436 RETUR 114437 ERTN 114440 RETCE 114447 RDCER 114552 OVOPN 114600 TOON 115040 TUOFF 115161 QTRDL 115200 QTRDS 115202 QTWRL 115205 QTWRS 115207 OVRP 115400 RLBXT 115600 LPCHR 133002 MODEM 177777 MODIN 177777 MODSE 177777 INFOS 177777 JNFOS 177777 MSV2 177777 MTAQ 177777 MCRQ 177777 MCTQ 177777 NM00D 177777 NM10D 177777 CLSTB 177777 ALM00 177777 ALM01 177777 ALM02 177777 ALM03 177777 ALM04 177777 ALM05 177777 ALM06 177777 ALM07 177777 ALM08 177777 ALM09 177777 ALM10 177777 ALM11 177777 ALM12 177777 ALM13 177777 ALM14 177777 ALM15 177777 ALM16 177777 ALM17 177777 ALM18 177777 ALM19 177777 ALM20 177777 ALM21 177777 ALM22 177777 ALM23 177777 ALM24 177777 ALM25 177777 ALM26 177777 ALM27 177777 ALM28 177777 ALM29 177777 ALM30 177777 ALM31 177777 ALM32 177777 ALM33 177777 ALM34 177777 ALM35 177777 ALM36 177777 ALM37 177777 ALM38 177777 ALM39 177777 ALM40 177777 ALM41 177777 ALM42 177777 ALM43 177777 ALM44 177777 ALM45 177777 ALM46 177777 ALM47 177777 ALM48 177777 ALM49 177777 ALM50 177777 ALM51 177777 ALM52 177777 ALM53 177777 ALM54 177777 ALM55 177777 ALM56 177777 ALM57 177777 ALM58 177777 ALM59 177777 ALM60 177777 ALM61 177777 ALM62 177777 ALM63 177777 DLMUX 177777 ALINI 177777 PLTQ 177777 ALMDC 177777 ALM1D 177777 DLALM 177777 DKP1D 177777 DK0DB 177777 DK1DB 177777 ZRDOS 177777 DZPER 177777 DZPDC 177777 DZP1D 177777 DZ0DB 177777 DZ4DB 177777 IUD 177777 HISTI 177777 IPBQ 177777 SYMP 177777 SYMB 177777 WTEOF 177777 WTRCD 177777 RGET 177777 TGET 177777 WSEND 177777 IVTIN 177777 OVUSG 177777 UPWRF 177777 CEL07 177777 TRESP 177777 TUNIN 177777 TUVSW 177777 TRPRT 177777 TSEND 177777 TTI1Q 177777 TTR1Q 177777 TTO1Q 177777 PTRQ 177777 PTPQ 177777 MTA1Q 177777 CTA1Q 177777 CDR1Q 177777 DPIQ 177777 DPOQ 177777 QTYQ 177777 TTI1D 177777 TTR1D 177777 TTO1D 177777 MTADC 177777 MTA1D 177777 CTADC 177777 CTA1D 177777 CDRDC 177777 CDR1D 177777 NDS0D 177777 NDS4D 177777 NDP0F 177777 NDP4D 177777 NDP4F 177777 NDZ0D 177777 NDZ4D 177777 OTHER 177777 MCRBL 177777 MCTBL 177777 GSTAT 177777 SBRCD 177777 SBFIL 177777 SFFIL 177777 SFRCD 177777 SQT64 177777 DSKER 177777 DSPER 177777 STK03 177777 STK04 177777 STK05 177777 STK06 177777 STK07 177777 STK08 177777 STK09 177777 CTAQ 177777 CDRQ 177777 MCR1Q 177777 MCT1Q 177777 DSKDC 177777 DSK1D 177777 DSPDC 177777 DSP1D 177777 MCRDC 177777 MCR1D 177777 MCTDC 177777 MCT1D 177777 DS0DB 177777 DS4DB 177777 NC00D 177777 NC10D 177777 MCRDB 177777 MCR1B 177777 STK02 177777 REWND 177777 RDRCD 177777 MRDOS 177777 NRDOS 177777 BRDOS 177777 ARDOS 177777 ERCCT 177777 RTCDC 177777 RTC1D 177777 ALM? 177777 QTYTB 177777 QKICK 177777 QTRZA 177777 QTYWZ 177777 QTYNO 177777 QTWZA 177777 QTY1D 177777 QTYDC 177777 M10DB 177777 C10DB 177777 QTDCB 177777 PL001 177777 PL002 177777 PL003 177777 PL004 177777 PL005 177777 PL006 177777 PL007 177777 PL010 177777 PL011 177777 PL012 177777 PL013 177777 PL014 177777 PL015 177777 PL016 177777 PL017 177777 PL020 177777 PL021 177777 PL022 177777 PL023 177777 PL024 177777 PL025 177777 PL026 177777 PL027 177777 PL030 177777 PL031 177777 PL032 177777 PL033 177777 PL034 177777 PL035 177777 PL036 177777 PL037 177777 PL040 177777 PL041 177777 PL042 177777 PL043 177777 PL044 177777 PL045 177777 PL046 177777 PL047 177777 PL050 177777 PL051 177777 PL052 177777 PL053 177777 PL054 177777 PL055 177777 PL056 177777 PL057 177777 PL060 177777 PL061 177777 PL062 177777 PL063 177777 PL064 177777 PL065 177777 PL066 177777 PL067 177777 PL070 177777 PL071 177777 PL072 177777 PL073 177777 PL074 177777  PL075 177777 PL076 177777 PL077 177777 PL100 177777 PL101 177777 PL102 177777 PL103 177777 PL104 177777 PL105 177777 PL106 177777 PL107 177777 PL110 177777 PL111 177777 PL112 177777 PL113 177777 PL114 177777 PL115 177777 PL116 177777 PL117 177777 PL120 177777 PL121 177777 PL122 177777 PL123 177777 IPINI 177777 PTR1Q 177777 PTP1Q 177777 LPT1Q 177777 PLT1Q 177777 PTRDC 177777 PTR1D 177777 PTPDC 177777 PTP1D 177777 LPT1D 177777 PLTDC 177777 PLT1D 177777 DPIDC 177777 DPODC 177777 PFLDC 177777 DP0FD 177777 DP4DB 177777 DP4FD 177777 M00DB 177777 C00DB 177777 PDUMP 177777 PWRFL 177777 IPBDC 177777 OPPRO 177777 LPTCH 177777 P03DL 177777 D03DL 177777 PL000 177777 GHMARBr,ee ['m7   D$T  @@LOGCM&`dd R INIT MT0 R LOAD/A/V/N MT0:0 ILLEGAL BLOCK TYPE: MT0:0 R LOAD/A/V/N MT0:1 ILLEGAL BLOCK TYPE: MT0:1 R LOAD/A/V/N MT0:2 ILLEGAL BLOCK TYPE: MT0:2 R LOAD/A/V/N MT0:3 SOLUT. 04/03/76 DASHP. 04/03/76 SYMBOLL. 04/03/76 FORTLB. 03/30/76 FIT. 04/03/76 STABL.RB 04/03/76 SYMBOLL.RB 04/03/76 ELLIPS. 04/03/76 F1. 03/29/76 F2. 03/29/76 LB. 04/03/76 CIRCL. 04/03/76 F3. 03/29/76 EDIT.SV L EDIT.SV F4. 03/29/76 SYS.LB L SYS.LB FIT.RB 04/03/76 F5. 03/29/76 MAIN.SV 04/03/76 F6. 03/29/76 F7. 03/29/76 F8. 03/29/76 MAIN. 04/03/76 SCURV.RB 04/03/76 FIV.SV L FORT4:FIV.SV MAIN.RB 04/03/76 RLDR.SV L RLDR.SV POLY. 04/03/76 COM.CM 04/03/76 SOLUT.RB 04/03/76 DATA. 04/03/76 DASHL. 04/03/76 DASHP.RB 04/03/76 FLEX. 04/03/76 POLY.RB 04/03/76 ASM.SV L ASM.SV GRID. 04/03/76 FR. 04/03/76 FLEX.RB 04/03/76 GENERAL.SV 04/03/76 ELLIPS.RB 04/03/76 GRID.RB 04/03/76 GENERAL. 04/03/76 SYMBOLB. 04/03/76 STABL. 04/03/76 CIRCL.RB 04/03/76 FORT.SV L FORT4:FORT.SV GENERAL.RB 04/03/76 SYMBOLB.RB 04/03/76 RECT. 04/03/76 LBL. 04/03/76 MAINB.SV 04/03/76 XREF.SV L XREF.SV SCURV. 04/03/76 RECT.RB 04/03/76 DASHL.RB 04/03/76 R LOAD/A/V/N MT0:4 MAIN 04/03/76 GENERAL 04/03/76 CIRCL 04/03/76 DASHL 04/03/76 DASHP 04/03/76 ELLIPS 04/03/76 FIT 04/03/76 FLEX 04/03/76 GRID 04/03/76 POLY 04/03/76 RECT 04/03/76 SCURV 04/03/76 SOLUT 04/03/76 STABL 04/03/76 ISWAP 02/28/76 FRDCH 02/13/76 AXIS 01/20/76 CALS 03/01/76 FACTOR 01/20/76 LINE 01/20/76 NEWPEN 01/20/76 NUMBER 01/20/76 OUTP 02/10/76 PLOT 02/20/76 PLOTS 02/27/76 SCALE 01/20/76 WHERE 01/20/76 SYMBOL 01/20/76 SYMBOLB 04/03/76 SYMBOLL 04/03/76 SAMP1 02/17/76 SAMP2 03/11/76 TABLE 02/19/76 R LOAD/A/V/N MT0:5 CALS.RB 03/05/76 NOTE. 02/20/76 LTEST. 02/27/76 PTEST.RB 02/27/76 NOTE.RB 03/14/76 IDEB.RB L IDEB.RB LB. 03/10/76 EDIT.SV L EDIT.SV SYS.LB L SYS.LB PLOTS. 02/27/76 MACXR.SV L MACXR.SV OUTP.V1 02/28/76 OUTP.V2 03/01/76 SAMP1.SV 02/25/76 FIV.SV L FORT4:FIV.SV LTEST.SV 03/04/76 CALS.V2 03/05/76 OEDIT.SV L OEDIT.SV RLDR.SV L RLDR.SV COM.CM 04/03/76 SAMP1.RB 02/25/76 ASM.SV L ASM.SV LTEST.RB 02/27/76 LB1. 03/03/76 PTEST. 02/27/76 MAC.SV L MAC.SV MAC.PS L MAC.PS FORT.SV L FORT4:FORT.SV PLOTS.RB 02/27/76 XREF.SV L XREF.SV CALS. 03/01/76 PP. 02/20/76 PTEST.SV 03/03/76 NOTE.SR 03/14/76 OUTP.RB 03/01/76 R LOAD/A/V/N MT0:6 WRITL.RB 02/04/76 SAMP2.SV 03/11/76 STEST.RB 02/28/76 NUMBER.RB 02/10/76 AXIS.RB 02/10/76 PNUM. 02/10/75 SAMP1. 02/17/76 FORTLB. 02/19/76 LTEST. 02/12/76 RDSEQ.RB 02/13/76 PTEST.RB 03/04/76 WTEST. 02/12/76 OCTAL. 03/12/76 PTP. 02/28/76 SYMBOL. 01/20/76 SCALE. 01/20/76 SAMP2.RB 03/11/76 SQTEST. 02/28/76 FRDCH.RB 02/13/76 COMFI. 02/10/75 DUMMY. 02/23/76 TABLE1.SV 02/14/76 LB. 03/04/76 FTEST. 02/13/76 EDIT.SV L EDIT.SV PLOT. 02/20/76 SYS.LB L SYS.LB LENGTH. 02/10/75 GNUM. 02/10/75 SWAP. 02/28/76 PLOTS. 02/25/76 WRITSQ.RB 02/04/76 CTEST. 02/12/76 MACXR.SV L MACXR.SV FT.SC 02/24/76 RDOS.SR 02/23/76 NEWPEN.RB 02/10/76 PLOT.RB 03/03/76 SAMP1.SV 03/11/76 LOG.CM 02/23/76 ISWAP.RB 02/28/76 WHERE. 01/20/76 FIV.SV L FORT4:FIV.SV LTEST.SV 03/18/76 SWAP.RB 01/13/76 READL.RB 02/04/76 PTR. 03/12/76 OEDIT.SV L OEDIT.SV TABLE. 02/19/76 WTEST.SV 02/13/76 OCTAL.SV 03/12/76 FACTOR. 01/20/76 RLDR.SV L RLDR.SV PRODCALDUM. 02/19/76 COM.CM 03/24/76 DUMP.RB 03/05/76 OPRDS. 02/04/76 CALDUMP.RB 02/20/76 TABLEI.SV 02/19/76 SUBSTR. 02/10/75 SAMP1.BU 02/12/76 SQTEST.SV 02/28/76 SAMP1.RB 02/17/76 ASM.SV L ASM.SV LTEST.RB 02/12/76 WRITL. 02/04/76 STEST. 02/28/76 FTEST.SV 02/13/76 NUMBER. 01/20/76 LB1. 03/04/76 WTEST.RB 02/12/76 OCTAL.RB 03/12/76 SYMBOL.RB 02/10/76 POI. 02/25/76 SCALE.RB 02/10/76 CTEST.SV 02/12/76 RDSEQ. 02/04/76 PTEST. 03/04/76 MAC.SV L MAC.SV SQTEST.RB 02/28/76 MAC.PS L MAC.PS DUMMY.RB 02/24/76 SAMP2. 03/11/76 FTEST.RB 02/13/76 TABLE.SV 03/11/76 PLOT.V1 01/20/76 CALDRVR.SR 03/09/76 DSAMP1.RB 02/12/76 FRDCH. 02/13/76 FORT.SV L FORT4:FORT.SV LENGTH.RB 02/12/76 SFTAB.RB 03/09/76 PLOTS.RB 02/20/76 CTEST.RB 02/12/76 EE. 02/28/76 XREF.SV L XREF.SV WHERE.RB 02/10/76 WRITSQ. 02/04/76 DUMP.V2 03/01/76 STEST.SV 02/28/76 DUMP.V3 03/03/76 OUTP. 02/10/76 INDEX. 02/10/75 LINE. 01/20/76 TABLE.RB 03/11/76 NEWPEN. 01/20/76 FACTOR.RB 02/10/76 ISWAP. 02/28/76 READL. 02/04/76 OPRDS.RB 02/04/76 CALDRVR.RB 03/09/76 PTEST.SV 03/04/76 AXIS. 01/20/76 SUBSTR.RB 02/13/76 OUTP.RB 02/10/76 LINE.RB 02/10/76 R LOAD/A/V/N MT0:7 LBF. 04/03/76 SOLUT. 04/03/76 CALS.RB 04/03/76 NUMBER.RB 04/03/76 DASHP. 04/03/76 AXIS.RB 04/03/76 SAMP1. 02/17/76 SYMBOLL. 04/03/76 FORTLB. 04/03/76 SYMBOL. 01/20/76 SCALE. 01/20/76 FIT. 04/03/76 STABL.RB 04/03/76 SYMBOLL.RB 04/03/76 SAMP2.RB 04/03/76 ELLIPS. 04/03/76 FRDCH.RB 04/03/76 MAINL.SV 04/03/76 CIRCL. 04/03/76 EDIT.SV L EDIT.SV PLOT. 02/20/76 SYS.LB L SYS.LB FIT.RB 04/03/76 MAIN.SV 04/03/76 PLOTS. 02/27/76 MAIN. 04/03/76 SCURV.RB 04/03/76 PLOT.RB 04/03/76 NEWPEN.RB 04/03/76 ISWAP.RB 04/03/76 WHERE. 01/20/76 FIV.SV L FORT4:FIV.SV TABLE. 02/19/76 POLY. 04/03/76 FACTOR. 01/20/76 MAIN.RB 04/03/76 RLDR.SV L RLDR.SV COM.CM 04/03/76 SOLUT.RB 04/03/76 DATA. 04/03/76 DASHL. 04/03/76 DASHP.RB 04/03/76 FLEX. 04/03/76 POLY.RB 04/03/76 SAMP1.RB 04/03/76 TML.TM 04/03/76 ASM.SV L ASM.SV NUMBER. 01/20/76 GRID. 04/03/76 SYMBOL.RB 04/03/76 FLEX.RB 04/03/76 GENERAL.SV 04/03/76 SCALE.RB 04/03/76 ELLIPS.RB 04/03/76 GRID.RB 04/03/76 MAINH.SV 04/03/76 GENERAL. 04/03/76 SYMBOLB. 04/03/76 STABL. 04/03/76 SAMP2. 03/11/76 CIRCL.RB 04/03/76 FRDCH. 02/13/76 FORT.SV L FORT4:FORT.SV GENERAL.RB 04/03/76 PLOTS.RB 04/03/76 SYMBOLB.RB 04/03/76 LBA. 04/03/76 RECT. 04/03/76 LBFP. 04/03/76 LBL. 04/03/76 XREF.SV L XREF.SV WHERE.RB 04/03/76 SCURV. 04/03/76 OUTP. 02/10/76 G1. 04/03/76 LINE. 01/20/76 TABLE.RB 04/03/76 NEWPEN. 01/20/76 RECT.RB 04/03/76 FACTOR.RB 04/03/76 FPOST.SV L AL:FPOST.SV ISWAP. 02/28/76 CALS. 03/01/76 AXIS. 01/20/76 DASHL.RB 04/03/76 OUTP.RB 04/03/76 LINE.RB 04/03/76 R LOAD/A/V/N MT0:8 T100475. 09/23/75 BILL111575. 11/15/75 W101175. 10/11/75 BILL121475. 12/20/75 RDOSSORT.RB 06/20/75 T112375. 11/07/75 W113075. 12/20/75 W760229. 03/31/76 T101175. 09/29/75 JOBS. 04/01/76 W120775. 12/20/75 W110875. 11/07/75 T113075. 12/12/75 W760315. 03/31/76 SORTL.RB 06/20/75 TIMEEE. 09/23/75 TIMETOTAL. 03/31/76 T1. 03/31/76 TIMEBB. 09/23/75 T110875. 11/07/75 T120775. 12/20/75 RDOSSORT.OL 09/19/75 W121475. 12/20/75 W111575. 11/15/75 W760124. 03/28/76 EDIT.SV L EDIT.SV SYS.LB L SYS.LB BILL113075. 12/12/75 SORTT.RB 06/20/75 PAY.CM 09/23/75 BILL123175. 12/20/75 JOBWEEK. 03/31/76 T111575. 12/12/75 T121475. 12/20/75 TIME.JB 09/23/75 W122175. 12/20/75 W760131. 02/23/76 W091575. 09/23/75 W123175. 01/21/76 BILL110175. 10/25/75 COLLAT. 09/19/75 OEDIT.SV L OEDIT.SV T122175. 12/20/75 W760307. 03/31/76 BILL760115. 01/21/76 RLDR.SV L RLDR.SV TEMP. 11/15/75 T123175. 12/20/75 BILL110875. 11/07/75 W092275. 09/23/75 BILL120775. 12/20/75 COM.CM 04/01/76 JOBS1. 03/29/76 TEMPS. 11/15/75 TIMEDD. 09/23/75 W101875. 10/16/75 TIMEAA. 09/23/75 T101875. 10/11/75 W760222. 03/31/76 W102575. 10/25/75 MERGE.RB 06/20/75 W092775. 09/29/75 BILL122175. 12/20/75 BILL112375. 12/12/75 W110175. 11/07/75 T. 12/21/75 PAYOUT. 03/31/76 SORTE.RB 06/20/75 T102575. 10/16/75 PROFIT. 12/20/75 BILLOUT. 03/31/76 SORTP.RB 06/20/75 TIME.AP 09/23/75 OLD. 01/23/76 RCACR. L JN:RCA2CR. BILLAST. 01/23/76 T110175. 10/25/75 W760207. 02/23/76 SORTM.RB 06/20/75 W122875. 01/20/76 GLORIA. 02/23/76 TIMECC. 09/23/75 TESTWEEK. 12/21/75 W760115. 01/23/76 W760214. 02/23/76 RDOSSORT.SV 09/19/75 BILL.CM 09/23/75 TIME.FN 09/23/75 JOB.CM 10/16/75 TIMEWEEK. 03/31/76 W100475. 10/11/75 T760115. 01/21/76 SORTG.RB 06/20/75 W112375. 12/20/75 R LOAD/A/V/N MT0:9 BIORYTHMN.SV 11/01/75 JOBDS. 11/07/75 CSPTST.RB  11/05/75 BILL111575. 11/15/75 BILL121475. 12/20/75 PAY102575. 11/07/75 FORTLB. 11/01/75 WEEK.SR 11/07/75 JOBS. L SORT1:JOBS. BIORYTHMN.RB 11/01/75 GO. 11/01/75 BILLCK.SV 11/07/75 ACTWK.RB 11/07/75 TEST.SV 11/06/75 EDIT.SV L EDIT.SV SYS.LB L SYS.LB WEEK.RB 11/07/75 BILL113075. 12/20/75 BILL123175. 01/21/76 PAYCK. 11/07/75 JOBWEEK. L SORT1:JOBWEEK. EDIT. 11/05/75 BILLCK.BU 11/05/75 BILLCK.RB 11/07/75 WORK111575. 11/15/75 WORK121475. 12/20/75 BILL110175. 11/07/75 FIV.SV L FORT4:FIV.SV TEST.RB 11/06/75 PAYRATE. 12/20/75 RLDR.SV L RLDR.SV PAY112375. 12/12/75 BILL110875. 11/07/75 BILL120775. 12/20/75 BILL760117. 01/21/76 COM.CM 01/23/76 JOBDS.RB 11/07/75 PAY113075. 12/20/75 WORK.SV 11/07/75 ASM.SV L ASM.SV CSPTST. 11/05/75 WORK113075. 12/20/75 WORK. 11/07/75 PAY110875. 11/07/75 PAY120775. 12/20/75 WORK123175. 01/21/76 PAY760117. 01/21/76 PAYCK.SV 11/07/75 RATS. 11/07/75 BIORYTHMN.FR 11/01/75 BILL122175. 12/20/75 BILL112375. 12/12/75 PAYOUT. L SORT1:PAYOUT. WORK.RB 11/07/75 PAY111575. 11/15/75 PAY121475. 12/20/75 PAYCK.BU 11/01/75 BILLAST. L SORT1:BILLAST. WORK110875. 11/07/75 WORK120775. 12/20/75 WORK760117. 01/21/76 FORT.SV L FORT4:FORT.SV PAYCK.RB 11/07/75 PAY122175. 12/20/75 PAYOUT.SC 11/07/75 PAY123175. 01/21/76 XREF.SV L XREF.SV ACTWK.SC 01/03/76 BILLCK0.SV 11/05/75 BILLCK. 11/07/75 JOBS.SC 12/20/75 CSPTST.SV 11/05/75 CFORTLB. 11/05/75 WORK122175. 12/20/75 WORK112375. 12/12/75 R LOAD/A/V MT0:9 BIORYTHM-.- BIORYTHMN.SV 11/01/75 BIORYTHMN.RB 11/01/75 BIORYTHMN.FR 11/01/75 R LOAD/A/V/N MT0:10 CFORTMLB. 01/16/76 $A1. 04/01/76 FIND. 01/17/76 JOBDS. 01/21/76 ANALYZE.RB 03/31/76 ACTIV.BU 01/17/76 ACTIV.RB 04/01/76 FIND.RB 01/16/76 JOBS. L SORT1:JOBS. GO. 01/19/76 ANALYZE.OL 01/16/76 TEST.SV 01/04/75 IBOUND. 01/17/76 EDIT.SV L EDIT.SV SYS.LB L SYS.LB LOCATE. 01/16/76 TEST. 01/04/75 LL. 01/06/75 A11. 04/01/76 FIV.SV L FORT4:FIV.SV TEST.RB 01/04/75 RLDR.SV L RLDR.SV COM.CM 04/01/76 FIND.LS 01/06/75 JOBDS.RB 01/21/76 ASM.SV L ASM.SV LOCATE.SV 01/04/75 ACTIV. 04/01/76 BILLOUT. L SORT1:BILLOUT. IBOUND.RB 01/17/76 LOCATE.RB 01/16/76 FORT.SV L FORT4:FORT.SV XREF.SV L XREF.SV ANALYZE.SV 04/01/76 CFORTLB. 01/03/76 ANALYZE. 01/19/76 R LOAD/A/V/N MT0:12 END OF FILE: MT0:12 R LOAD/A/V/N MT0:11 N360.CM 04/18/75 GHMA. 05/08/75 WRITL.RB 02/04/76 IBMR.CM 09/09/76 PNUM. 02/10/75 IBMREADER.SV 09/09/76 GHMA.RB 05/08/75 RDSEQ.RB 02/04/76 IBMREADER.' 09/09/76 IBMREADER.RB 09/09/76 COMFI. 02/10/75 LB. 09/09/76 EDIT.SV L EDIT.SV SYS.LB L SYS.LB LENGTH. 02/10/75 GNUM. 02/10/75 SWAP. 01/13/76 WRITSQ.RB 02/04/76 N360.SV 04/18/75 N360. 04/18/75 FIV.SV L FORT4:FIV.SV SWAP.RB 01/13/76 READL.RB 02/04/76 OEDIT.SV L OEDIT.SV RLDR.SV L RLDR.SV COM.CM 09/09/76 OPRDS. 02/04/76 N360.RB 04/18/75 IBM.SV 02/04/76 SUBSTR. 02/10/75 IBM. 02/04/76 WRITL. 02/04/76 ASM.SV L ASM.SV IBM.BU 01/12/76 IBM.RB 02/04/76 RDSEQ. 02/04/76 MTL. 09/09/76 FORT.SV L FORT4:FORT.SV XREF.SV L XREF.SV WRITSQ. 09/09/76 INDEX. 02/10/75 OPRDS.RB 02/04/76 READL. 02/04/76 GHMA.SV 05/08/75 R ENDLOG R ENDLOG PAGESV   Vfx 0QAi $ph "Y5OcRP "$&(&+6BdphLV_iw$$% UC F&  F* F. F2 F6 F:UY j `CPK bS `C `C `C `C `C `CPC| `zC `CCOM.CM j^&+#P *OPEN ERROR IN COM.CM=+PC_#C a aK j & -_# aՐ@ #P[#PC HH HI#PC `+ JPK j HIJ[PC]#C++P@ L H H." T' a -[2$TTO j^'/+#PS *ERROR IN OPEN $TTO=+ `C aK H H.d L' abot$LPT j^'q+#P *OPEN ERROR IN $LPT=+ `C aK H H. H' a j'$ H H. Q' a `C aK H H. W' aٍ `C aK H H. L' a0$LPT j^'+#P( *OPEN ERROR IN $LPT=+ `C aK H H.9 S' a7D `C aK H H.U P' aSK H I.e L' ac#Ȱv `C j H#C fERROR IN NO OF LINES PRECEDING /P SWITCH H H. O' a j^'+#P *ERROR IN OUTPUT OPEN=+ `C aK H H. W' a j H#C aK H H. C' a j H#C aK# a)[ *2 .S(" SWITCH ",A2," IS AN ILLEGAL SWITCH. RERUN PROGRAM PAGE")! fSWITCH ERROR# aun$LPT j^'k+#P *OPEN ERROR IN OUTPUT=+# aՐ@ fNO INPUT FILES HH jH+#P *ERROR IN DATE CALL=+# a(08,16,32,40,48,56,64,72,80,88,96,A4,B2,C0,C8,D6,E4,F2. j '+ w0 w2#+ KK#+ JK#+ JK `+ KPKPCG#C+ aK j&#PC `+ JPK HIH j^&I+#PY *ERROR IN INPUT OPEN=+ `C w7PC#C a+PK# a JPK3 `S MIH#CPC#C+ *'(1X," "Z)! *'==:9(" DATE ",I2,"/",I2,"/19",I2," FILENAME ",S14,2X,"PAGE ",I4,/)!#PՐ@ pPCn#C+ j &+?# a `C HH' a b j '+#P7 *ERROR I WRITL=+ U? O7 Q P7#PՐ@LP#PC# a\l `+ JK `+ KPK j @ʅPC#C+ HH>#Gt `CPC+#ƒC+PC)#ÃC+ j &+?# a aK# a+ HH' a b U? O7 Q P7 LHAC#C+PK `C#C MIH#C+PK#+ JP3ÕKS#+ J#ȎK HH HI j HDIE H HC#+ĦG# b'+# a7ʅPC#C+PC#+ JPK H H>'+ƥPC HH H I> HJ j HFIJ HH j HG HH#ǭPC j 'HI+#P *ERROR IN WRITSQ=+ `+ JK `+ KPK3 ` j @;# a *' # a j d *'(" ")!# a7# a *' 677(" TOTAL LINES IN LISTING=",I6,T35,"TOTAL NUMBER OF KEYSTROKES IN FILE = ",F10.0)! U6 O2 Q P2 O0 O7 Q P0# a[ *'[20(" TOTAL LINES IN ALL FILES=",F10.0,/," TOTAL CHARACTERS IN ALL FILES=",F10.0)! fNORMAL STOP PROGRAM PAGE md 8' P< U |9)Km>7 |' a Í j $TTO j^  #P * ERROR IN OPEN $TTO=  *  (" THIS PROGRAM PRINTS PAGES OF TEXT WITH POSSIBLE DELAYS FOR THE QUME",/," INSERTED AS REQUIRED.",/," PAGE/Q/H/L/T/W/S INFILE1 INFILE2 INFILE3 OUTFILE/O NLINESPERPAGE/P COLUMNS PER PAGE/C",/," /Q INSERTS DELAYS FOR THE QUME IF ON A MODEM. THIS IS NOT",/," REQUIRED IF THE QUME CONTROLS THE INTERFACE CTS/RTS.",/," /H CALLS THE HELP PROGRAM",/," /L OPENS THE LINE PRINTER FOR THE OUTPUT FILE",/," /T OPENS THE $TTO FOR THE OUTPUT FILE",/," /W SETS THE LINE WIDTH TO 132 COLS IF GLOBAL"/," /S PRINTS THE STATISTICS LINES & KEYSTROKES PER FILE",/," INFILE1-INFILEN ARE INUT FILES TO BE PRINTED",/," /O OUTFILE IS THE OUTPUT FILE",/," /P IS THE NUMBER OF LINES PER PAGE THE DEFAULT IS 60",/," /L IS THE SAME AS THE /P SWITCH",/," /C SETS THE NO. OF COLUMNS PER PAGE TO REASSEMBLE THE DATA INTO",/," /W DENOTES THE COLUMN WIDTH OF THE PRINTED PAGE. THE ",/," DEFAULT VALUE IS 80 COLUMS.")! fRERUN PROGRAM PAGE m    | F  E ɀ  E ̀  ` G H j  # a  N #P  * READL ERROR IN SUB. GETARGS= j   # a  . N #P J * RDSEQ ERROR IN GETARGS=PC #C a  ` C #C a  H ` +C j2#C a  ~ 'PG H #PC# a J# b O Z N m A  2 |'0~PP2!#P ?PGOm `Wm? |'0~PP2!#P ?PGm `Wm? |'0~PP2! G#P/ ?PGm `Wm?  | E  ` G a K b SPC #C//K ` + KK H' a ӧC3'+ 9 H ` / KK# a Ս E # a э Q # a Ѝ \ `PC # a ύ k x#P v  # a ΥC b խ@ a SՐ@ 3  ' a ̥Z\ N # a Ր@   ' a J#OPS # 'G m m  0 - ( |'0~PP2! G#P/ ?PGm `Wm? |'C/K7S[ m[ m m3*!K#K3*!#! #J#C+COPYRIGHT (C) DGC,1971,1972,1973,1974,1975ALL RIGHTS RESERVED.8 P3 !)Z@~#C@\)k=k  C)h )i)d@9bX)aH  PP " Y9MT Q ~C`CS0 2GH1AP@1P~B0~) :JBӀ@ (0 2H!A ( PP   j? f w  ! " !  MEMORY OVERFLOW OR NO F$COM.$$ $TTOF$COM.$$8 ;     |/ m | "i;KC)ShDllP llPCK!TPCC!V`CA!NPC!N`C!HCCCCCCCCCCCC!;CPCC2S {"C'C  3 {)%" PS# v+ +3  AS"') +K1  @:b"&3 #C#%d# 8C!C# uK1 # 1N+"\m "KS 8C3"K 8C32I E D F G O7A P;L S (,/Z! )HXdT>"!'!H#Ƃ +# (#++¦) 3ֵS#)3 -%+3 #PSPSP3 C4 # #Ƃ 3 3 >|3!+ ! !  v##C /1J ?|3vFe#C 7G1+ J#+ҋ 23"")''B3") oG+`P2` ^3" "*'G+#K,3*K1B)J . \)83;"B843 #C3 A(:E#3 #C Ak# h#+A o vC#+A o)w v#3 @CP < 3+ J#B3ҜCSK 3 "C = #Ă#ł  3#  >PC >3#  ?  ? o!C#C+#3J # v3C#+P ^_ 3#P >US#)3A -CM3#  >|S#)3A -C ) v3ҝ1+P1 ^.3)J S#)3A -C)#P ># v# u1 1 1 G oFT 3# 3#S)3A -+A o)? ) vC'C3 {CPC+r < 7") !ZS {*3J+JR3C {"Gg3B3" )3 {C!33 {"/ǎDODŽP3 {"/4Z3"C3 {C3 {C = ) 3K {;+J3 {CǓ {C3 { GC")K1"C1"C3#)J PS Z  #P+ -CS ?C#Á u1S #+A o) v# u 3ǂC 3#+ @4Cg rP# IKPC3"C {23#B# # ##Ƃ m# m#+A o) v#3 @m#) # 3Bm o #C#C#C%CLASS#Ƃ N#  #) C) ) #+K+KO3B#BPB#`3` ^3'N)%B"C 6C#C# #) ) 9+3K)# ^) oYFDG+3 #SPSPP3 BeE' 9+3 +K :#+C+#+K+#BC#3 :+ë3K ;#)ō 1 )#S3A -C *3)#S)K+#!J3# :+3K ;#+A o+ v#C#Â# 9)֒ :#C#))K)K3J#+1\L8S3̕ o, v4\83#D"+B84\8C3#B)`PB)ZBCBCC#C# uѪ 61R 1J 1H # uѪ '1C );1; .19 +17 $15 &13 #!+3#̂ 3S 0 4؀ o3#B# 2#4̅C 7+ΦC@0+-.ED \8+3SɶS3/ O4\8#C#C3Ʌ/ 4O\83JJ$CʅPC#ʂ S 0 43#Ђ6C C#ʂPC%Cʭ 33PC#ʂ S 1 33#ЂC C#ʂPC 548\83"(:\X$L")&B"9!$L9")B:\P<Z\83P*L9 ,D9"B,D")ݦB\ 33"99"D@P$@D@\8C3*K")B+ΎK΁ 23"##1 )3ҐҔ)z)3ҐҔ)uKC͢K+K+ #)d )`  +# +J##++Z+K3S/ $+3SɶS3/   0CCCC#  * .u 0),# v#+  # u1K v#3+J4FGi\8!0P+\8CDžCCK' u#1: ) 3  P1* 1( !%1%1+Ǫ 3+ Z KC#+ȫ4#ǂ oY o +-9 \8KK[3 Dɪ#C#+ o,1a v v#4\8 K J26CȕSɅC3#ɖ#Ȗ0K#)83A -C#  #+A o)- v3 >3S#)!3A -CCʅCȃCSCS#+A o) v#4 -*0\8S'KȅC#+A o)% v)"3S#)3A -C3 >)3 S#) 3A -CCȍK40.l!! }'  = m3")J!WBl! }7"G'WBml)#l)K!= }32SC' u )7K'7 o v+3 mF!! ! 3 '7 o v3#Bm3 l C!NCC l CKP }#)@? v!C!;KCCC48\3 x8S!,X#+@+ 1+9!8; KC48+9 ҀL\8#3 CC!= !>\#+94 +ROR 9 AT LOC. 9, CALLED FROM LOC. 9 ? EylJ um s3lCC!&C'pC#  !#S v33 #) v v3Bm0*'d lP)K)@)K)P@S v3 v3Bml ) n! l B X* !@8X1 #K@8\3 xT<3 x<#<+J48(!Z\@\22X8+X82!\J @J22X83&X83C C*KJ)0K!)07]J2W0Xv8XvA80 2 *Z"*:X8:2! H`:Y:2`Y8 `8 ; CKS8Z9(J+J@Z*J8H`XREFSV  p"  $@d  (-/06XZ;M;9:JJOn*0l%FXREF.STFXREF.XRFXREF.OVFCOM.CM e< X  [ g   [ ) [ h  [ ](+  [  [P  [)  [!  [  [HI  [(3 j@H d(-  [ \ c  [ e< X  [ f  [ g  [   (H038ICCCC#@V@J f<  [ W@X(V  [V 2@Y$XX;(* j@U((/0H+03 i8I#(2 X *J(J  [+ K  [0JS  [ JC+ CC,XKXY@U b(- !x(>(= X(< U ]@^!k `!j(2 j ` 8 g)e CBHP a ,AR(P@@@HP@ 7(C TF!O(79B# K E)G0; ? E /@N0U(3 i8I+XQHJ K@Z  [ 2A% aZ",Z8Q# XZ xZQ ( 0U O@O((0H H(  [< U '"-=$X0^ҒB^*X : ]@^  [GY!  X!  [ M@Gr Y ? ? T T(C O 8 R S(2 j  Y (@ jQ jQ ! ! Y (90B8DJ8A(F Y N .@N 8 8 ? $Z(4 jQ(?  B ! (0 j(CQ ! YI(6 jQ !(5 jQ ! (0 jQ ! (CI)_Y 8k@@ @Y 8kƐ0 2 *Z"*:X8:2! H`:Y:2`Y8 `8 ; CKS1(KK*K@S+K0ҜH`EFSV  p" o3#B# 2#4̅C 7+ΦC@0+-.ED \8+3SɶS3/ O4\8#C#C3Ʌ/ 4O\83JJ$CʅPC#ʂ S 0 43#Ђ6C C#ʂPC%Cʭ 33PC#ʂ S 1 33#ЂC C#ʂPC 548\83"(:\X$L")&B"9!$L9")B:\P<Z\83P*L9 ,D9"B,D")ݦB\ 33"99"D@P$@D@\8C3*K")B+ΎK΁ 23"##1 )3ҐҔ)z)3ҐҔ)uKC͢K+K+ #)d )`  +# +J##++Z+K3S/ $+3SɶS3/   0CCCC#  * .u 0),# v#+(EOFDUMP TAPE ((EDSDUMP TAPE (05 08 04 75 75500 01.0 05 08 04 75 75037 07.5 05 08 01 75 75043 06.5 05 08 01 75 75005 00.5 05 08 01 75 75500 01.0 05 07 31 75 75043 07.5 05 07 31 75 75005 00.5 05 07 30 75 75043 02.0 05 07 30 75 75005 06.0 05 07 29 75 75500 07.0 05 07 29 75 75034 01.0 05 07 28 75 75500 08.5 05 07 25 75 75500 08.0 05 07 24 75 75500 07.5 05 07 24 75 75000 00.5 05 07 23 75 75500 06.5 05 07 23 75 75030 01.5 05 07 22 75 75500 08.0 06 10 23 75 75028 08.0 06 10 24 75 75028 04.0 06 10 24 75 75061 04.5 04 10 20 75 75049 01.5 04 10 20 75 75030 04.5 04 10 20 75 75013 02.0 04 10 21 75 75049 01.0 04 10 21 75 75007 01.0 04 10 21 75 75030 04.0 04 10 21 75 75013 02.0 04 10 22 75 75007 06.0 04 10 22 75 75013 01.5 04 10 22 75 75042 00.5 04 10 23 75 75056 05.0 04 10 23 75 75007 03.5 04 10 23 75 75028 01.0 04 10 24 75 75061 05.0 04 10 24 75 75007 02.5 04 10 24 75 75058 01.0 04 10 25 75 75058 01.5 04 10 25 75 75061 07.5 05 10 20 75 75060 02.5 05 10 20 75 75050 02.0 05 10 20 75 75055 04.0 05 10 21 75 75055 05.0 05 10 21 75 75060 00.4 05 10 21 75 75049 00.4 05 10 21 75 75050 00.4 05 10 21 75 75055 00.4 05 10 22 75 75055 03.1 05 10 22 75 75042 03.1 05 10 22 75 75039 00.9 05 10 22 75 75050 01.5 05 10 23 75 75042 01.6 05 10 23 75 75055 01.1 05 10 23 75 75007 01.8 05 10 23 75 75056 05.0 05 10 24 75 75007 01.3 05 10 24 75 75061 02.2 05 10 24 75 75058 05.7 05 10 25 75 75058 05.3 06 10 27 75 75061 02.0 06 10 27 75 75058 02.0 06 10 27 75 75013 02.0 06 10 28 75 75058 02.0 06 10 28 75 75051 05.0 06 10 28 75 75050 01.0 06 10 29 75 75051 04.0 06 10 29 75 75050 03.0 06 10 29 75 75049 01.0 06 10 30 75 75049 08.0 06 10 31 75 75049 04.0 06 10 31 75 75064 04.0 04 10 27 75 75061 04.0 04 10 27 75 75013 04.0 04 10 28 75 75013 07.5 04 10 28 75 75007 01.0 04 10 29 75 75013 08.0 04 10 29 75 75049 01.0 04 10 30 75 75049 04.0 04 10 30 75 75030 03.0 04 10 30 75 75007 01.5 04 10 31 75 75049 04.0 04 10 31 75 75030 02.0 04 10 31 75 75064 02.0 04 11 01 75 75030 04.5 05 10 27 75 75048 03.0 05 10 27 75 75061 01.3 05 10 27 75 75058 04.4 05 10 27 75 75051 00.3 05 10 28 75 75058 01.0 05 10 28 75 75007 05.5 05 10 28 75 75051 01.5 05 10 28 75 75050 01.0 05 10 29 75 75050 05.0 05 10 29 75 75049 03.0 05 10 30 75 75508 00.7 05 10 30 75 75049 03.8 05 10 30 75 75050 04.5 05 10 31 75 75050 00.7 05 10 31 75 75056 01.0 05 10 31 75 75064 01.5 05 10 31 75 75007 00.8 05 10 31 75 75049 02.0 06 11 03 75 75049 02.0 06 11 03 75 75506 05.0 06 11 03 75 75064 01.0 06 11 04 75 75064 02.0 06 11 04 75 75506 05.0 06 11 04 75 75042 01.0 06 11 05 75 75506 08.0 06 11 06 75 75506 07.0 06 11 06 75 75030 01.0 06 11 07 75 75506 08.0 05 11 03 75 75050 01.0 05 11 03 75 75500 07.0 05 11 04 75 75050 03.0 05 11 04 75 75042 05.5 05 11 05 75 75050 03.0 05 11 05 75 75042 05.5 05 11 06 75 75042 07.0 05 11 06 75 75050 01.5 05 11 07 75 75042 07.0 07 01 17 76 75049 06.5 07 01 19 76 75049 01.5 07 01 19 76 75049 06.5 07 01 19 76 75049 01.5 07 01 20 76 75049 08.0 07 01 20 76 75049 01.0 07 01 21 76 75049 08.0 03 01 17 76 75049 08.0 03 01 20 76 75049 03.5 05 01 17 76 75030 01.2 05 01 17 76 75049 05.3 05 01 19 76 75049 05.5 05 01 19 76 75027 00.5 05 01 19 76 76000 01.5 07 03 16 76 76000 08.0 07 03 17 76 76000 08.0 07 03 18 76 76000 08.0 07 03 19 76 76000 08.0 07 03 22 76 76000 02.0 07 03 22 76 75052 01.5 07 03 22 76 75052 05.5 07 11 03 75 75064 08.5 07 11 04 75 75064 02.0 07 11 04 75 75050 04.0 07 11 04 75 75042 02.0 07 11 05 75 75050 06.0 07 11 05 75 75042 02.0 07 11 05 75 74037 01.0 07 11 06 75 75050 01.0 07 11 06 74 74037 07.0 07 11 07 75 74037 03.0 07 11 07 75 75042 01.0 07 11 07 75 75007 04.0 01 11 07 75 75504 02.0 07 11 10 75 75007 03.0 07 11 10 75 75030 05.0 07 11 10 75 75065 01.0 07 11 11 75 74037 05.0 07 11 11 75 75065 03.0 07 11 11 75 75056 01.0 07 11 12 75 75065 03.0 07 11 12 75 75063 02.0 07 11 12 75 75000 03.0 07 11 13 75 75065 02.0 07 11 13 75 75063 05.0 07 11 13 75 75056 01.0 07 11 14 75 75063 01.5 07 11 14 75 75065 05.0 07 11 14 75 75056 01.5 01 11 10 75 75030 05.0 01 11 10 75 75501 02.0 01 11 10 75 75000 01.0 01 11 11 75 74037 02.0 01 11 11 75 75049 02.0 01 11 11 75 75066 04.5 01 11 12 75 74045 04.0 01 11 12 75 75063 02.0 01 11 12 75 75054 02.0 01 11 13 75 75063 03.0 01 11 13 75 75066 01.0 01 11 14 75 75000 04.0 01 11 14 75 75050 01.0 01 11 14 75 75047 01.0 01 11 14 75 75063 02.0 01 11 15 75 75050 03.0 01 11 15 75 75504 01.0 01 11 15 75 75000 03.0 06 11 10 75 75506 04.0 06 11 10 75 75030 05.0 06 11 11 75 75506 05.0 06 11 11 75 75042 03.0 05 11 10 75 75042 08.0 05 11 11 75 75054 02.0 05 11 11 75 75056 02.5 05 11 11 75 75042 03.0 05 11 11 75 75048 00.5 05 11 11 75 75049 01.2 05 11 12 75 75054 02.0 05 11 12 75 75048 01.0 05 11 12 75 75056 05.0 05 11 13 75 75054 00.6 05 11 13 75 75056 04.0 05 11 13 75 75042 01.0 05 11 13 75 75000 01.9 05 11 14 75 75056 05.0 05 11 14 75 75047 02.5 05 11 14 75 75050 01.5 05 11 14 75 75049 00.3 07 11 17 75 75049 02.5 07 11 17 75 75056 01.0 07 11 17 75 75013 01.5 07 11 17 75 75047 01.0 07 11 17 75 75023 01.0 07 11 17 75 75022 01.0 07 11 18 75 75022 03.0 07 11 18 75 75041 03.0 07 11 18 75 75000 02.0 07 11 19 75 75063 02.5 07 11 19 75 75050 02.0 07 11 19 75 75041 02.0 07 11 19 75 75022 01.5 07 11 20 75 75063 04.5 07 11 20 75 75050 01.0 07 11 20 75 75022 03.5 07 11 21 75 75041 02.0 07 11 21 75 75050 02.0 07 11 21 75 75022 04.0 07 11 22 75 75008 00.3 07 11 22 75 75033 00.7 07 11 23 75 75008 02.3 07 11 23 75 75033 06.7 05 11 17 75 75050 01.5 05 11 17 75 75056 04.5 05 11 17 75 75042 01.0 05 11 17 75 75000 01.0 05 11 18 75 75041 01.0 05 11 18 75 75057 01.0 05 11 18 75 75050 02.0 05 11 18 75 75000 04.0 05 11 19 75 75030 02.0 05 11 19 75 75050 05.5 05 11 19 75 75042 01.0 05 11 20 75 75030 04.0 05 11 20 75 75050 04.0 05 11 20 75 75000 01.0 05 11 21 75 75000 01.0 05 11 21 75 75050 07.0 05 11 21 75 75049 00.5 07 11 24 75 75063 02.5 07 11 24 75 75065 05.5 07 11 25 75 75065 08.0 07 11 26 75 75065 05.0 07 11 26 75 75063 03.0 07 11 28 75 75063 04.0 07 11 28 75 75022 04.0 07 11 24 75 75056 01.0 05 11 24 75 75050 06.0 05 11 24 75 75000 01.5 05 11 25 75 75050 08.5 05 11 26 75 75054 00.3 05 11 26 75 75050 07.7 05 11 26 75 75022 00.5 05 11 28 75 75050 09.0 03 11 28 75 75049 09.0 03 11 29 75 75049 01.0 03 11 29 75 75063 04.0 03 11 29 75 75063 02.0 03 11 29 75 75041 01.0 07 12 01 75 75063 03.0 07 12 01 75 75050 01.0 07 12 01 75 75049 02.0 07 12 01 75 75000 02.0 07 12 02 75 75063 06.0 07 12 02 75 75050 02.0 07 12 03 75 75063 06.0 07 12 03 75 75065 02.0 07 12 04 75 75065 03.5 07 12 04 75 75063 04.5 07 12 05 75 75063 05.0 07 12 05 75 75050 01.0 07 12 05 75 75049 02.0 01 12 01 75 74004 14.0 01 12 02 75 75013 00.5 01 12 02 75 75063 02.0 01 12 02 75 74004 01.0 01 12 02 75 74011 01.0 01 12 02 75 75049 02.0 01 12 02 75 75065 06.0 01 12 03 75 75050 03.0 01 12 03 75 75513 03.0 01 12 03 75 74011 02.0 01 12 04 75 75050 02.0 01 12 04 75 75065 08.0 01 12 04 75 75063 01.0 01 12 05 75 75065 12.0 01 12 06 75 75065 04.0 03 12 05 75 75049 08.0 07 12 08 75 75063 09.0 07 12 09 75 75063 08.0 07 12 10 75 75063 08.0 07 12 11 75 75063 06.0 07 12 11 75 75049 03.0 07 12 12 75 75063 08.0 05 12 08 75 75500 01.5 05 12 08 75 75507 01.5 05 12 08 75 75051 06.3 05 12 08 75 75000 01.0 05 12 09 75 75500 04.0 05 12 09 75 75000 01.0 05 12 09 75 75051 03.0 05 12 10 75 75000 01.5 05 12 10 75 75051 04.5 05 12 10 75 75050 02.0 05 12 11 75 75051 02.0 05 12 11 75 75050 07.5 05 12 12 75 75050 02.0 05 12 12 75 75051 03.0 05 12 12 75 75048 01.0 05 12 12 75 75500 01.0 05 12 12 75 75000 01.0 05 12 13 75 75504 01.5 01 12 08 75 75051 02.0 01 12 08 75 75063 01.0 01 12 08 75 75049 05.0 01 12 09 75 75052 03.0 01 12 09 75 75051 02.0 01 12 09 75 75035 01.0 01 12 09 75 75049 03.0 01 12 10 75 75049 08.0 01 12 11 75 75063 03.0 01 12 11 75 75501 02.0 01 12 11 75 75500 03.0 01 12 12 75 75063 01.0 01 12 12 75 75000 01.0 01 12 12 75 75501 02.0 01 12 12 75 75049 04.0 07 12 15 75 75068 08.0 07 12 16 75 75000 08.0 07 12 17 75 75049 06.0 07 12 17 75 75000 03.0 07 12 18 75 75049 06.0 07 12 18 75 75022 01.0 07 12 18 75 75000 01.0 07 12 19 75 75049 09.0 07 12 22 75 75005 01.0 07 12 22 75 75049 07.0 07 12 22 75 75000 01.0 07 12 23 75 74011 01.5 07 12 23 75 75049 05.5 07 12 24 75 75049 03.0 07 12 24 75 75000 01.0 07 12 29 75 75063 01.5 07 12 29 75 75049 06.0 07 12 29 75 75000 01.0 07 12 30 75 74042 00.5 07 12 30 75 75049 07.5 07 12 30 75 75000 01.0 07 12 31 75 75049 03.5 07 12 31 75 75000 00.5 05 12 24 75 75000 04.0 08 01 02 76 75067 03.0 08 01 05 76 75067 03.0 08 01 05 76 76000 02.0 08 01 05 76 76001 03.0 08 01 06 76 76000 05.5 08 01 06 76 75057 00.5 08 01 06 76 75049 02.0 08 01 07 76 76002 02.0 08 01 07 76 76003 02.0 08 01 07 76 75049 02.0 08 01 07 76 76000 02.0 08 01 08 76 76003 06.5 08 01 08 76 75049 01.5 08 01 09 76 76005 01.5 08 01 09 76 75045 02.5 08 01 09 76 76000 02.5 08 01 12 76 76000 01.0 08 01 12 76 75067 01.0 08 01 12 76 76000 01.0 08 01 12 76 75022 05.5 08 01 13 76 75007 03.0 08 01 13 76 76000 02.0 08 01 13 76 75022 03.0 08 01 14 76 76000 08.0 08 01 15 76 75022 01.5 08 01 15 76 75030 01.5 08 01 15 76 76000 05.0 05 01 06 76 75507 01.0 05 01 06 76 75039 00.5 05 01 06 76 75057 03.5 05 01 06 76 74011 02.7 05 01 06 76 75056 01.0 05 01 07 76 75507 04.0 05 01 07 76 75056 04.0 05 01 08 76 75057 00.5 05 01 08 76 75056 03.0 05 01 08 76 75507 03.5 05 01 08 76 76000 01.0 05 01 09 76 75050 01.0 05 01 09 76 75514 02.0 05 01 09 76 75507 06.0 05 01 12 76 75056 02.5 05 01 12 76 76005 05.5 05 01 12 76 76000 00.5 05 01 13 76 76005 04.0 05 01 13 76 76000 01.0 05 01 13 76 75514 03.5 05 01 14 76 75056 01.0 05 01 14 76 75049 02.0 05 01 14 76 76000 00.5 05 01 14 76 75514 04.5 05 01 15 76 74027 01.5 05 01 15 76 75514 07.0 05 01 16 76 75514 01.3 05 01 16 76 76006 02.7 05 01 16 76 75049 03.5 05 01 16 76 74045 00.5 05 01 17 76 75030 01.2 05 01 17 76 75049 05.3 07 01 05 76 75063 01.5 07 01 05 76 75049 06.0 07 01 05 76 76000 01.5 07 01 06 76 75049 08.0 07 01 06 76 76000 01.0 07 01 07 76 75049 08.0 07 01 07 76 76000 01.0 07 01 08 76 75049 05.0 07 01 08 76 76004 02.0 07 01 08 76 76000 00.5 07 01 09 76 75049 09.0 07 01 10 76 76004 04.0 07 01 10 76 75049 04.0 07 01 12 76 75049 09.0 07 01 13 76 75049 10.0 07 01 14 76 75049 08.5 07 01 14 76 76000 00.5 07 01 15 76 75049 02.5 07 01 15 76 75005 07.0 07 01 16 76 75049 07.0 07 01 16 76 75005 01.0 07 01 17 76 75049 06.5 01 01 03 76 75504 08.0 01 01 05 76 75013 01.0 01 01 05 76 75063 01.0 01 01 05 76 76000 06.0 01 01 06 76 75512 04.0 01 01 06 76 74011 04.0 01 01 07 76 75030 04.0 01 01 07 76 76003 04.0 01 01 08 76 76000 06.0 01 01 08 76 75512 02.0 01 01 09 76 75049 08.8 01 01 09 76 75512 02.0 01 01 10 76 75049 08.0 01 01 11 76 75514 04.0 01 01 12 76 75030 02.0 01 01 12 76 76000 05.0 01 01 12 76 75509 03.0 01 01 13 76 75030 04.0 01 01 13 76 75509 04.0 01 01 14 76 75030 08.0 01 01 15 76 75030 04.0 01 01 16 76 75049 09.0 01 01 17 76 75049 08.0 03 01 09 76 75049 09.5 03 01 10 76 75049 03.5 03 01 10 76 76005 05.5 03 01 11 76 76005 01.0 03 01 11 76 75030 04.5 03 01 12 76 75049 02.5 03 01 12 76 75030 02.5 03 01 14 76 75030 02.0 03 01 16 76 75049 09.0 03 01 17 76 75049 08.0 01 01 03 75 75514 06.0 08 01 19 76 76000 04.0 08 01 19 76 75067 04.0 08 01 20 76 76000 08.0 08 01 21 76 76000 06.0 03 01 22 76 75049 03.0 03 01 23 76 75049 08.5 03 01 24 76 75051 02.5 03 01 24 76 75049 04.5 05 01 22 76 75042 02.0 05 01 22 76 76000 01.0 05 01 22 76 75507 05.0 05 01 23 76 76500 01.5 05 01 23 76 75051 04.5 05 01 23 76 75507 01.5 05 01 23 76 76000 00.5 07 01 22 76 75049 07.0 07 01 22 76 76000 01.0 07 01 23 76 75049 08.0 08 01 22 76 75045 04.0 08 01 22 76 76000 04.0 08 01 23 76 76000 01.0 01 01 16 76 75049 09.0 01 01 17 76 75049 08.0 01 01 18 76 75049 06.0 01 01 19 76 75013 02.0 01 01 20 76 75013 02.0 01 01 20 76 75049 02.0 01 01 20 76 75504 04.0 01 01 21 76 75049 01.0 01 01 22 76 75013 05.0 01 01 22 76 75049 03.0 01 01 26 76 75049 06.0 01 01 26 76 75013 02.0 01 01 27 76 75049 04.0 01 01 27 76 76000 03.0 01 01 27 76 75507 04.0 01 01 27 76 75067 02.0 01 01 28 76 76000 08.0 01 01 29 76 76000 02.0 01 01 29 76 76007 01.0 01 01 29 76 76000 04.0 01 01 30 76 75052 01.0 01 01 30 76 76003 02.0 01 01 30 76 76003 02.0 01 01 30 76 76003 05.0 01 01 30 76 76500 04.0 01 01 31 76 76601 06.0 01 01 31 76 75507 03.0 03 01 30 76 75049 06.5 03 01 30 76 76008 05.5 03 01 31 76 75049 12.0 05 01 26 76 76000 01.5 05 01 26 76 75051 04.0 05 01 26 76 75042 02.8 05 01 27 76 76000 01.5 05 01 27 76 75042 01.0 05 01 27 76 75507 05.0 05 01 27 76 76000 01.0 05 01 28 76 75051 00.6 05 01 28 76 74001 01.4 05 01 28 76 76000 02.0 05 01 28 76 76500 03.5 05 01 28 76 75507 01.6 05 01 29 76 76000 01.0 05 01 29 76 76000 02.0 05 01 29 76 75514 05.0 05 01 30 76 75514 05.0 05 01 30 76 75507 02.0 05 01 30 76 76000 01.0 05 01 31 76 76500 04.0 07 01 26 76 75049 08.0 07 01 27 76 75049 08.0 07 01 28 76 75049 08.0 07 01 29 76 75049 08.0 07 01 29 76 75049 02.0 07 01 30 76 75049 08.0 07 01 30 76 75049 01.5 07 01 31 76 75049 08.0 08 01 26 76 76000 00.8 08 01 27 76 76000 08.0 08 01 28 76 76000 08.0 08 01 29 76 76008 06.0 08 01 29 76 76000 02.0 08 01 30 76 76008 06.0 08 01 30 76 76003 01.0 05 01 20 76 76514 02.0 05 01 20 76 75049 03.5 05 01 20 76 76000 03.5 05 01 21 76 76000 02.0 05 01 21 76 75049 06.0 05 01 21 76 75042 01.3 07 01 17 76 75049 06.5 07 01 19 76 75049 01.5 07 01 19 76 75049 06.5 07 01 19 76 75049 01.5 07 01 20 76 75049 08.0 07 01 20 76 75049 01.0 07 01 21 76 75049 08.0 03 01 17 76 75049 08.0 03 01 20 76 75049 03.5 05 01 17 76 75030 01.2 05 01 17 76 75049 05.3 05 01 19 76 75049 05.5 05 01 19 76 75027 00.5 05 01 19 76 76000 01.5 08 01 19 76 76000 04.0 08 01 19 76 75067 04.0 08 01 20 76 76000 08.0 08 01 21 76 76000 06.0 03 01 22 76 75049 03.0 03 01 23 76 75049 08.5 03 01 24 76 75051 02.5 03 01 24 76 75049 04.5 05 01 22 76 75042 02.0 05 01 22 76 76000 01.0 05 01 22 76 75507 05.0 05 01 23 76 76500 01.5 05 01 23 76 75051 04.5 05 01 23 76 75507 01.5 05 01 23 76 76000 00.5 07 01 22 76 75049 07.0 07 01 22 76 76000 01.0 07 01 23 76 75049 08.0 08 01 22 76 75045 04.0 08 01 22 76 76000 04.0 08 01 23 76 76000 01.0 01 02 02 76 76009 02.0 01 02 02 76 76000 03.0 01 02 02 76 76601 03.0 01 02 02 76 76003 02.0 01 02 03 76 76003 06.0 01 02 03 76 76500 02.0 01 02 04 76 76003 02.0 01 02 04 76 76500 04.0 01 02 05 76 76000 08.0 01 02 06 76 76000 08.0 01 02 07 76 76000 08.0 05 02 01 76 76501 01.0 05 02 02 76 76501 03.0 05 02 02 76 75049 06.0 05 02 03 76 75049 04.0 05 02 03 76 75507 04.0 05 02 04 76 75051 02.0 05 02 04 76 75049 04.0 05 02 04 76 76501 07.5 05 02 05 76 76000 08.0 05 02 06 76 76000 08.0 05 02 07 76 76000 08.0 07 02 01 76 75049 03.0 07 02 02 76 75049 08.0 07 02 02 76 75049 01.0 07 02 03 76 75049 02.0 07 02 03 76 75049 06.0 07 02 04 76 75049 04.0 07 02 04 76 75049 01.5 07 02 04 76 75050 02.5 07 02 05 76 76000 08.0 07 02 06 76 76000 08.0 08 02 02 76 76008 06.0 08 02 02 76 76008 01.0 08 02 02 76 76000 02.0 08 02 03 76 76008 06.0 08 02 03 76 76008 01.5 08 02 03 76 76000 02.0 08 02 04 76 76008 08.0 08 02 04 76 76008 02.0 08 02 05 76 76008 08.0 08 02 05 76 76008 00.5 08 02 06 76 75049 01.5 08 02 06 76 76008 06.5 01 02 10 76 76500 12.0 01 02 11 76 76500 12.0 01 02 12 76 76500 12.0 01 02 13 76 76500 12.0 05 02 09 76 76500 08.0 05 02 09 76 76011 01.5 05 02 10 76 76011 03.5 05 02 10 76 76500 05.5 05 02 11 76 76500 08.5 05 02 12 76 76000 02.0 05 02 12 76 76011 07.0 05 02 12 76 76011 01.0 05 02 13 76 76011 05.5 05 02 13 76 76000 02.5 07 02 09 76 76000 08.0 07 02 10 76 75049 03.0 07 02 10 76 75049 05.0 07 02 11 76 75049 08.0 07 02 12 76 75049 05.0 07 02 12 76 75052 03.0 07 02 13 76 75049 08.0 07 02 13 76 75049 01.0 08 02 09 76 76008 08.0 08 02 10 76 76008 04.0 08 02 10 76 76010 02.0 08 02 10 76 76000 02.0 08 02 11 76 76008 01.0 08 02 11 76 76000 05.0 08 02 11 76 76010 02.0 08 02 12 76 76010 07.0 08 02 12 76 76000 01.0 08 02 13 76 76010 04.0 08 02 12 76 76000 04.0 08 03 16 76 76014 08.0 08 03 17 76 76014 06.0 08 03 17 76 76000 02.0 08 03 18 76 76010 03.0 08 03 18 76 76000 02.0 08 03 18 76 76014 03.0 08 03 19 76 76000 05.0 08 03 19 76 76000 03.0 08 03 22 76 76000 08.0 01 03 23 76 76000 03.0 01 03 24 76 75013 02.0 01 03 24 76 76500 06.0 01 03 24 76 76019 01.0 01 03 26 76 76019 08.0 01 03 29 76 76021 01.0 01 03 29 76 76500 02.0 01 03 29 76 76000 01.0 01 03 30 76 76014 02.5 01 03 30 76 75504 04.0 01 03 30 76 76000 01.5 01 03 30 76 76019 04.0 01 03 31 76 76019 03.0 01 03 31 76 75013 01.0 01 03 31 76 75047 02.0 01 03 31 76 76500 02.0 01 04 01 76 74011 03.0 01 04 01 76 76023 01.0 01 04 01 76 76014 02.0 01 04 02 76 75013 01.0 01 04 02 76 76025 02.0 01 04 02 76 76017 01.0 01 04 02 76 76024 04.0 01 04 03 76 76500 10.0 03 03 30 76 75042 03.0 03 04 02 76 75049 06.0 03 04 03 76 75049 08.5 03 04 03 76 76025 01.0 03 04 04 76 76025 02.5 03 04 04 76 76024 02.5 03 04 04 76 76024 02.0 03 04 04 76 75049 00.5 05 03 23 76 76011 07.0 05 03 23 76 76000 01.0 05 03 24 76 75051 05.5 05 03 24 76 76011 03.0 05 03 24 76 76000 00.5 05 03 24 76 76514 01.5 05 03 25 76 76011 01.0 05 03 25 76 75051 01.0 05 03 25 76 75052 04.5 05 03 25 76 76000 01.0 05 03 25 76 76514 01.0 05 03 26 76 75052 02.5 05 03 26 76 75051 02.5 05 03 26 76 76011 01.5 05 03 26 76 76500 02.0 05 03 29 76 75051 03.5 05 03 29 76 75042 03.0 05 03 29 76 76000 02.0 05 03 30 76 75042 06.0 05 03 30 76 76514 01.0 05 03 30 76 76000 01.0 05 03 31 76 76019 04.0 05 04 01 76 75514 03.0 05 04 01 76 75042 06.5 05 04 01 76 76000 01.0 05 04 02 76 75042 08.0 07 03 23 76 75052 07.0 07 03 23 76 75033 02.0 07 03 24 76 75033 05.0 07 03 24 76 75067 00.5 07 03 24 76 75052 04.5 07 03 25 76 75052 09.0 07 03 26 76 75052 09.0 07 03 28 76 75052 01.0 07 03 28 76 75052 02.0 07 03 29 76 75052 03.0 07 03 29 76 75049 04.0 07 03 29 76 75033 01.0 07 03 29 76 74037 01.0 07 03 30 76 74037 03.0 07 03 30 76 74037 05.0 07 03 31 76 74037 04.0 07 03 31 76 75052 01.0 07 03 31 76 76000 02.0 07 03 31 76 74027 01.0 07 04 01 76 74037 08.0 07 04 01 76 76024 01.0 07 04 02 76 74037 08.0 07 04 02 76 75049 01.0 08 03 23 76 75052 01.5 08 03 23 76 76000 06.5 08 03 24 76 76018 03.0 08 03 24 76 76000 05.0 08 03 26 76 76018 01.0 08 03 26 76 76020 04.5 08 03 26 76 76000 02.5 08 03 29 76 76020 01.5 08 03 29 76 76000 06.5 08 03 30 76 76014 04.0 08 03 30 76 76000 04.0 08 03 31 76 76014 06.0 08 03 31 76 76000 02.0 08 04 01 76 76025 02.0 08 04 01 76 76024 05.0 08 04 01 76 76014 01.0 08 04 02 76 76025 07.0 08 04 02 76 76024 01.0 09 02 12 76 76000 08.0 09 02 13 76 76000 08.0 01 02 16 76 75507 08.0 01 02 17 76 75507 08.0 01 02 18 76 75507 08.0 01 02 19 76 75507 08.0 01 02 20 76 75507 08.0 05 02 16 76 76009 01.5 05 02 16 76 76011 07.0 05 02 16 76 76500 00.5 05 02 17 76 76500 04.0 05 02 17 76 76011 04.0 05 02 17 76 76000 01.0 05 02 18 76 75049 02.0 05 02 18 76 76011 02.5 05 02 18 76 76000 01.0 05 02 18 76 76500 03.0 05 02 19 76 76011 05.5 05 02 19 76 76000 02.0 05 02 20 76 76000 02.0 05 02 20 76 76011 04.0 05 02 20 76 76500 02.0 07 02 16 76 75049 08.0 07 02 17 76 75049 02.0 07 02 17 76 75049 06.0 07 02 17 76 75049 01.0 07 02 18 76 75049 02.5 07 02 18 76 75049 05.0 07 02 18 76 75049 00.5 07 02 19 76 76012 04.0 07 02 19 76 75049 02.0 07 02 19 76 76000 02.0 07 02 20 76 75049 03.5 07 02 20 76 75052 02.0 07 02 20 76 76000 02.5 08 02 16 76 76000 08.0 08 02 17 76 76010 02.0 08 02 17 76 76008 02.0 08 02 17 76 76000 04.0 08 02 18 76 76008 06.0 08 02 18 76 76000 02.0 08 02 19 76 76000 04.0 08 02 19 76 76000 04.0 08 02 20 76 76000 08.0 09 02 16 76 75004 00.5 09 02 16 76 76000 07.5 09 02 17 76 76000 08.0 09 02 18 76 76000 08.0 09 02 19 76 76000 08.0 09 02 20 76 76000 08.0 01 02 23 76 75507 08.0 01 02 24 76 75507 08.0 01 02 25 76 75507 08.0 01 02 26 76 75507 08.0 01 02 27 76 75507 08.0 05 02 23 76 76000 04.0 05 02 23 76 76011 04.5 05 02 23 76 75051 01.5 05 02 24 76 76011 02.0 05 02 24 76 76009 15.5 05 02 25 76 76009 01.5 05 02 25 76 76000 01.5 05 02 26 76 76000 00.5 05 02 26 76 76009 07.0 05 02 26 76 75051 03.0 05 02 27 76 75051 05.5 05 02 27 76 76500 01.0 05 02 27 76 76000 01.0 05 02 27 76 76009 01.5 05 02 28 76 76009 04.0 07 02 23 76 74045 01.5 07 02 23 76 74045 01.5 07 02 23 76 75052 01.5 07 02 23 76 74037 00.5 07 02 23 76 74037 01.5 07 02 23 76 76000 01.5 07 02 24 76 74037 02.5 07 02 24 76 74042 04.0 07 02 24 76 75049 01.5 07 02 25 76 75049 07.0 07 02 26 76 76000 08.0 07 02 27 76 76000 08.0 08 02 23 76 76000 08.0 08 02 24 76 76010 04.5 08 02 24 76 76000 03.5 08 02 25 76 76010 03.0 08 02 25 76 76000 05.0 08 02 26 76 76000 08.0 08 02 27 76 76000 08.0 09 02 23 76 75052 00.3 09 02 23 76 76000 07.7 09 02 24 76 76000 08.0 09 02 25 76 76000 08.0 09 02 26 76 76000 08.0 09 02 27 76 76000 08.0 01 03 01 76 75507 08.0 01 03 01 76 75049 04.0 01 03 02 76 76014 05.0 01 03 02 76 75507 03.0 01 03 03 76 76014 05.0 01 03 03 76 75507 03.0 01 03 04 76 75507 03.0 01 03 05 76 74045 01.0 01 03 05 76 75507 06.0 03 03 05 76 76022 05.0 03 03 05 76 76500 04.0 03 03 06 76 76014 00.5 03 03 06 76 75052 01.5 03 03 06 76 76500 01.5 03 03 06 76 76022 01.5 05 03 01 76 75051 01.0 05 03 01 76 76009 05.5 05 03 01 76 76000 00.5 05 03 01 76 76500 02.0 05 03 02 76 76000 01.5 05 03 02 76 76009 01.5 05 03 02 76 75051 05.5 05 03 03 76 76000 01.5 05 03 03 76 75051 01.5 05 03 03 76 76500 04.0 05 03 03 76 76011 02.5 05 03 04 76 76500 09.0 05 03 05 76 76500 05.0 05 03 05 76 76000 02.0 05 03 05 76 76011 02.0 05 03 06 76 76011 01.0 07 03 01 76 75052 01.0 07 03 01 76 75049 05.0 07 03 02 76 75049 05.0 07 03 02 76 75052 00.5 07 03 02 76 76000 02.5 07 03 03 76 75049 05.0 07 03 03 76 75052 01.0 07 03 03 76 76015 03.0 07 03 04 76 76015 02.0 07 03 04 76 75049 03.0 07 03 04 76 76500 01.0 07 03 04 76 75052 01.0 07 03 04 76 75049 01.0 07 03 05 76 76012 06.0 07 03 05 76 75052 03.0 07 03 07 76 75052 04.0 08 03 01 76 76010 01.0 08 03 01 76 76000 05.0 08 03 01 76 76014 02.0 08 03 02 76 76000 06.0 08 03 02 76 76014 02.0 08 03 03 76 76014 06.0 08 03 03 76 76000 02.0 08 03 04 76 76014 06.0 08 03 04 76 76008 02.0 08 03 05 76 76008 06.0 08 03 05 76 76000 02.0 09 03 01 76 76000 08.0 09 03 02 76 76000 08.0 09 03 03 76 76000 08.0 09 03 05 76 76000 08.0 01 03 08 76 74004 13.0 01 03 08 76 75065 03.0 01 03 09 76 74004 18.0 01 03 10 76 75051 01.0 01 03 10 76 76000 02.0 01 03 10 76 75507 05.0 01 03 11 76 76000 08.0 05 03 08 76 74004 12.0 05 03 09 76 74004 12.0 05 03 10 76 74004 06.0 05 03 10 76 76500 03.0 05 03 11 76 74004 02.0 05 03 11 76 76000 02.0 05 03 11 76 76501 05.0 05 03 12 76 76501 05.0 05 03 12 76 76011 02.0 05 03 12 76 76000 01.0 05 03 13 76 76500 03.0 05 03 15 76 76500 06.0 07 03 08 76 75052 03.0 07 03 08 76 76014 06.0 07 03 09 76 75049 05.0 07 03 09 76 76014 02.0 07 03 09 76 76014 02.0 07 03 09 76 76016 02.0 07 03 09 76 76000 02.0 07 03 09 76 76014 01.0 07 03 10 76 76014 06.0 07 03 10 76 75052 01.0 07 03 11 76 76014 07.0 07 03 11 76 76012 01.0 07 03 12 76 76000 02.0 07 03 12 76 76012 06.0 08 03 08 76 76000 04.0 08 03 08 76 76014 04.0 08 03 09 76 76016 01.5 08 03 09 76 76008 00.5 08 03 09 76 76014 05.0 08 03 09 76 76000 01.0 08 03 10 76 76000 04.0 08 03 10 76 76014 02.0 08 03 10 76 76008 01.0 08 03 10 76 76000 01.0 08 03 11 76 76018 02.0 08 03 11 76 76014 02.0 08 03 11 76 76016 02.0 08 03 11 76 76000 02.0 08 03 12 76 76018 06.0 08 03 12 76 76000 02.0 08 03 15 76 76014 08.0 09 03 08 76 76000 08.0 09 03 09 76 75504 06.0 09 03 09 76 75504 02.0 09 03 10 76 75504 02.0 09 03 10 76 76000 04.0 09 03 11 76 75504 04.0 09 03 11 76 76000 04.0 09 03 23 76 76000 08.0 09 03 24 76 75504 03.5 09 03 24 76 76000 04.5 09 03 25 76 75504 02.0 09 03 25 76 76000 06.0 09 03 26 76 75504 03.0 09 03 26 76 76000 05.0 09 03 29 76 75504 01.0 09 03 29 76 76000 07.0 09 03 30 76 75504 01.5 09 03 30 76 76000 06.5 09 03 31 76 75504 06.0 09 03 31 76 76000 02.0 09 04 01 76 75504 04.0 09 04 01 76 76000 04.0 09 04 02 76 75504 07.0 09 04 02 76 76000 01.0 !789:;PQRST 01 0 71.04A ' 05 0 70.04A @ 08 0 72.03A , 01.0 22457674< 04 1925 0 0.0# 04 2017 0 0.0 04 2226 0 0.0E 08.0 23147676 08.0 24007676 75052 0 7 0 2 75504 0 7 0 1L 76000 0 7 0 23 76023 0 7 0 2 01 0475.049 0& 05 0475.261 0? 08 0476.000 0 19 76 0 0.5 0 20 76 0 0.0 09 23 76 0 0.0 0v 76 750. 2 0 0Z 76 750. 2 0 0^ 76 751. 2 0 0k 76 752. 2 0 0} 76 752. 2 1 0` 76 753. 2 0 0X 76 754. 2 0 0T 76 754. 2 0 0| 76 755. 2 1 0e 76 756. 2 0 0 76 756. 2 1 0u 76 757. 2 0 0 76 76.0 1 0 0O 76 76.0 2 0 06 76 76.0 2 0 0 76 76.0 2 0 0\ 76 760. 2 0 0w 76 761. 2 0 0s 76 761. 2 0 0o 76 761. 2 0 0n 76 761. 2 0 0l 76 761. 2 0 0d 76 761. 2 0 0c 76 761. 2 0 0a 76 761. 2 0 0] 76 761. 2 0 0Q 76 761. 2 0 0~ 76 761. 2 1 0i 76 762. 2 0 0U 76 762. 2 0 0m 76 763. 2 0 0g 76 763. 2 0 0f 76 763. 2 0 0_ 76 763. 2 0 0R 76 763. 2 0 0x 76 764. 2 0 0h 76 764. 2 0 0W 76 764. 2 0 0S 76 764. 2 0 0P 76 764. 2 0 0j 76 765. 2 0 0b 76 765. 2 0 0z 76 765. 2 1 0r 76 766. 2 0 0V 76 766. 2 0 0y 76 768. 2 0 0t 76 768. 2 0 0q 76 768. 2 0 0p 76 768. 2 0 0[ 76 768. 2 0 0Y 76 768. 2 0 0 76 768. 2 1 0{ 76 768. 2 1 0.0 0176 07600).0 0576 07427B.0 0876 076290 01 6 01501AA0 08 6 07604A0 76 73.4 1 0000A 0 0 7 2 7H00A 0704762076 01 04 600 1A01+01.0 2 9A6 50014A 0 0 7 2 7;04 19 0A08015 "04 20 1A05005 04 21 4A01060 %05 04 506 1A0105.0 3 0A6 65>08 04 600 4A03D08.0 2 4A6 600A 01.4 603 6 1 04 202 A 3.*1.0 0 7A 70119 76 01045 05.1A 02.4 502 6 20 76 03040 01823 76 00045 0728A 020476237673 76 75.4 7 3.0 0 7B 701!4 19 7A 5 0. 4 21 7A 1 2. :4 23 7A 7 4. G4A 00.4 559 6 (5 05 6 00604A$5 04 200 A 1.I504A 0 0 7 2 746 7505 1 7 4 M6 7550 2 9 4 6 7601 5 3 4 6 7603 9 1 4 J6000A 9 6 4 1 6014A 3 6 4 4 16014A 7 6 4 9 /61A 070475237675052A0176041975052A03760424K75504A09760421576 7600 220704N76 7600 23090476 7605 19050476 7650 190104276014A07760420=8 04 102 A 1.C8.0 0 7A 7019 76 70.4 5 -A 01.0 205 7 7A 07.0 250 7 7FA 07.5 100 7 7AS NO. TIME RECORD YET 75032 01 15 76 04 04 76 JOB NO.75033 FPBA FIRE PUMP FOR BETHEL APARTMENTS -CLARK- 75033 01 15 76 04 04 76 TOTAL HOURS= 8.0 JOB HAS NO. TIME RECORD YET 75034 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75035 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75036 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75037 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75038 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75039 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75040 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75041 01 15 76 04 04 76 JOB NO.75042 BJOA BROWN JUG OFFICE ADDITION -RAASCH- 75042 01 15 76 04 04 76 TOTAL HOURS= 39.9 JOB HAS NO. TIME RECORD YET 75043 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75044 01 15 76 04 04 76 JOB NO.75045 OBJC OFFICE BLDG. FOR JIM CURLY -JIM CURLY- 75045 01 15 76 04 04 76 TOTAL HOURS= 8.0 JOB HAS NO. TIME RECORD YET 75046 01 15 76 04 04 76 JOB NO.75047 ARSUA AUTO REPAIR SHOP U OF A -U OF A- 75047 01 15 76 04 04 76 TOTAL HOURS= 2.0 JOB HAS NO. TIME RECORD YET 75048 01 15 76 04 04 76 JOB NO.75049 TSTSC TEAMSTER'S SPORTS COMPLEX -LUNSFORD- 75049 01 15 76 04 04 76 TOTAL HOURS=519.4 JOB NO.75050 CHFA ADDITION TO CITY HONOR FARM -WESTBROOK- 75050 01 15 76 04 04 76 TOTAL HOURS= 2.5 JOB NO.75051 GOB GITTINS OFFICE BLDG -CLARK- 75051 01 15 76 04 04 76 TOTAL HOURS= 54.1 JOB NO.75052 NQTS NUIQUISET SCHOOL -KPF&F- 75052 01 15 76 04 04 76 TOTAL HOURS= 75.8 JOB HAS NO. TIME RECORD YET 75053 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75054 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75055 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75056 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75057 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75058 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75059 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75060 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75061 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75062 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75063 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75064 01 15 76 04 04 76 JOB NO.75065 SGBA STANDBY GENERATOR FOR BETHEL APTS. -CLARK- 75065 01 15 76 04 04 76 TOTAL HOURS= 3.0 JOB HAS NO. TIME RECORD YET 75066 01 15 76 04 04 76 JOB NO.75067 BNCTE BETHEL NATIVE CORP. TOTAL ENERGY -BNC- 75067 01 15 76 04 04 76 TOTAL HOURS= 10.5 JOB HAS NO. TIME RECORD YET 75068 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75500 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75501 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75502 01 15 76 04 04 76 JOB NO.75504 BK BOOKKEEPING 75504 01 15 76 04 04 76 TOTAL HOURS= 50.0 JOB HAS NO. TIME RECORD YET 75505 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75506 01 15 76 04 04 76 JOB NO.75507 DDET DIGITIZER DESIGN ENCODER TYPE 75507 01 15 76 04 04 76 TOTAL HOURS=140.6 JOB HAS NO. TIME RECORD YET 75508 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75509 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75512 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 75513 01 15 76 04 04 76 JOB NO.75514 WP WORD PROCESSOR 75514 01 15 76 04 04 76 TOTAL HOURS= 21.3 JOB NO.76000 OVH GENERAL OVERHEAD 1976 76000 01 15 76 04 04 76 TOTAL HOURS=651.5 JOB HAS NO. TIME RECORD YET 76001 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 76002 01 15 76 04 04 76 JOB NO.76003 NSTP NANA SEWAGE TREATMENT PLANT -SID CLARK- 76003 01 15 76 04 04 76 TOTAL HOURS= 20.0 JOB HAS NO. TIME RECORD YET 76004 01 15 76 04 04 76 JOB HAS NO. TIME RECORD YET 76005 01 15 76 04 04 76 JOB NO.76006 OBE FALCONER BLDG. ELECTRICAL HEAT ADDITION -JAN HANSEN- 76006 01 15 76 04 04 76 TOTAL HOURS= 2.7 JOB NO.76007 DLLVA DE LONG LAKE VILLA -JOE KELLY- 76007 01 15 76 04 04 76 TOTAL HOURS= 1.0 JOB NO.76008 MIM MUSH INN MOTEL -LANE KNORR PLUNKETT- 76008 01 15 76 04 04 76 TOTAL HOURS= 87.5 JOB NO.76009 PS PROCTOR'S SUPERMARKET -ORVILLE PROCTOR- 76009 01 15 76 04 04 76 TOTAL HOURS= 40.0 JOB NO.76010 VLS VALUE LIQUOR STORE -LANE KNORR PLUNKETT 76010 01 15 76 04 04 76 TOTAL HOURS= 28.5 JOB NO.76011 PPAS PALMER PHASE II - ANCH SAND -AS & G 76011 01 15 76 04 04 76 TOTAL HOURS= 86.0 JOB NO.76012 PAPER PAY & PAK ELECTRICAL REVISION -LAMPLIGHTERS 76012 01 15 76 04 04 76 TOTAL HOURS= 20.0 JOB NO.76014 WS WAINWRIGHT SCHOOL -TOM LUNSFORD 76014 01 15 76 04 04 76 TOTAL HOURS=106.5 JOB NO.76015 LOLA LIGHTING OF LUNSFORD'S ACTIVITIES -TOM LUNSFORD 76015 01 15 76 04 04 76 TOTAL HOURS= 5.0 JOB NO.76016 TSC TIMOTHY SUBDIVISION CONDIMINIUMS -TOM LUNSFORD 76016 01 15 76 04 04 76 TOTAL HOURS= 5.5 JOB NO.76017 GFBC GREATER FRIENDSHIP BAPTIST CHURCH -SHEPHARD & ASSOC 76017 01 15 76 04 04 76 TOTAL HOURS= 1.0 JOB NO.76018 APG ANCHORAGE PARKING GARAGE -LANE KNORR & PLUNKETT 76018 01 15 76 04 04 76 TOTAL HOURS= 12.0 JOB NO.76019 AWT ANIAK WIEN TERMINAL -SHEPHARD & ASSOC 76019 01 15 76 04 04 76 TOTAL HOURS= 20.0 JOB NO.76020 AVCPH AVCP HOUSING -LANE KNORR & PLUNKETT 76020 01 15 76 04 04 76 TOTAL HOURS= 6.0 JOB NO.76021 DCW WAREHOUSE FOR DELCO CORP. -BILL JUILANO- 76021 01 15 76 04 04 76 TOTAL HOURS= 1.0 JOB NO.76022 BRC BUDGET RENT A CAR -LAMPLIGHTERS- 76022 01 15 76 04 04 76 TOTAL HOURS= 6.5 JOB NO.76023 BIP BI CENTENNIAL PARK -ALLEY GROUP- 76023 01 15 76 04 04 76 TOTAL HOURS= 1.0 JOB NO.76024 HEA HEAGY APATMENTS 75 UNITS -TOM HAEG- 76024 01 15 76 04 04 76 TOTAL HOURS= 15.5 JOB NO.76025 GOBM GITTINS OFFICE BLDG. MECHANICAL -TOM GITTINS- 76025 01 15 76 04 04 76 TOTAL HOURS= 14.5 JOB NO.76500 GC76 GENERAL COMPUTER 76500 01 15 76 04 04 76 TOTAL HOURS=161.5 JOB NO.76501 NO JOB NO. IN MASTER FILE JOBS 76501 01 15 76 04 04 76 TOTAL HOURS= 21.5 JOB NO.76514 NO JOB NO. IN MASTER FILE JOBS 76514 01 15 76 04 04 76 TOTAL HOURS= 7.5 JOB NO.76601 CR76 COMPUTER REPAIR 76601 01 15 76 04 04 76 TOTAL HOURS= 17.0 [\]^_`abcdefghALL 01 01 75 04 04 76 JOB NO.74001 NO JOB NO. IN MASTER FILE JOBS 74001 01 01 75 04 04 76 TOTAL HOURS= 1.4 JOB NO.74004 NIS NELSON ISLAND SCHOOL -LUNSFORD- 74004 01 01 75 04 04 76 TOTAL HOURS= 79.5 JOB NO.74011 ATU ANCHORAGE TELEPHONE UTILITY -MAYNARD- 74011 01 01 75 04 04 76 TOTAL HOURS= 14.2 JOB NO.74027 ERSF EAGLE RIVER FIRE SUPPRESSION -LUNSFORD- 74027 01 01 75 04 04 76 TOTAL HOURS= 3.5 JOB NO.74028 NO JOB NO. IN MASTER FILE JOBS 74028 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.74037 NLFSF NANCY LAKE FIRE SUPPRESION -LUNSFORD- 74037 01 01 75 04 04 76 TOTAL HOURS= 46.5 JOB NO.74042 SHUGS SHUGNAK SCHOOL -LUNSFORD- 74042 01 01 75 04 04 76 TOTAL HOURS= 8.5 JOB NO.74045 BUSG G.A.A.B. BUS GARAGE -LUNSFORD- 74045 01 01 75 04 04 76 TOTAL HOURS= 10.5 JOB NO.75000 OVH GENERAL OFFICE OVERHEAD 75000 01 01 75 04 04 76 TOTAL HOURS=136.0 JOB NO.75004 SCPBC SCHULUMBURGER PRUDHOE BAY CAMP 75004 01 01 75 04 04 76 TOTAL HOURS= 56.0 JOB NO.75005 WADT WIEN AIR DILLINGHAM TERMINAL 75005 01 01 75 04 04 76 TOTAL HOURS= 37.5 JOB NO.75007 ANPS ANATUVIK PASS SCHOOL 75007 01 01 75 04 04 76 TOTAL HOURS=202.8 JOB NO.75008 BNH BETHEL NATIVE HOUSING - 31 UNIT- 75008 01 01 75 04 04 76 TOTAL HOURS= 12.1 JOB NO.75011 BPSWC BP SEWAGE/WATER LEVEL CONTROLS, PRUDHOE BAY 75011 01 01 75 04 04 76 TOTAL HOURS= 2.5 JOB NO.75013 ASAGK ANCHORAGE SAND AND GRAVEL, KLATT ROAD 75013 01 01 75 04 04 76 TOTAL HOURS= 85.0 JOB NO.75015 COB CURRY OFFICE BLDG. 75015 01 01 75 04 04 76 TOTAL HOURS= 0.8 JOB NO.75022 BARS BARROW SCHOOL RAASCH 75022 01 01 75 04 04 76 TOTAL HOURS= 29.5 JOB NO.75023 WINSD WINSHIP SHED 75023 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.75025 ANTS ANATUVIK TEMP. SCHOOL RAASCH 75025 01 01 75 04 04 76 TOTAL HOURS= 2.5 JOB NO.75027 AOB ALASKA OPTICIANS BLDG. -CLARK- 75027 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.75028 HANGW HANGARS 4,5 7,8 FT. WAINWRIGHT -CORPS- 75028 01 01 75 04 04 76 TOTAL HOURS= 62.5 JOB NO.75030 AAFES AFFES EXCHANGE ELMENDORF -LUNSFORD- 75030 01 01 75 04 04 76 TOTAL HOURS=217.1 JOB NO.75031 WPLF WIEN PARKING LOT FAIRBANKS -SHEPHERD- 75031 01 01 75 04 04 76 TOTAL HOURS= 48.0 JOB NO.75032 GRAPB GRATRIX 47 UNIT APARTMENT BLDG.-GRATRIX- 75032 01 01 75 04 04 76 TOTAL HOURS= 14.0 JOB NO.75033 FPBA FIRE PUMP FOR BETHEL APARTMENTS -CLARK- 75033 01 01 75 04 04 76 TOTAL HOURS= 15.4 JOB NO.75034 WBWOV WEAVER BROS. WAREHOUSE/OFFICE VALDEZ -MAYNARD- 75034 01 01 75 04 04 76 TOTAL HOURS= 78.5 JOB NO.75035 RAOB OFFICE BUILDING ON 2ND AVE ANCH -RAASCH- 75035 01 01 75 04 04 76 TOTAL HOURS= 59.0 JOB NO.75036 ASAGP PALMER ANC. SAND & GRAVEL -AS&G- 75036 01 01 75 04 04 76 TOTAL HOURS= 63.5 JOB NO.75037 SEAHD SEA AIRMOTIVE DEADHORSE WOODW -SEA AIRMOTIVE/MCKENZIE- 75037 01 01 75 04 04 76 TOTAL HOURS=102.5 JOB NO.75038 WOODW WOODARD WAREHOUSE TPAP -MCKENZIE- 75038 01 01 75 04 04 76 TOTAL HOURS= 4.0 JOB NO.75039 SAMSH SEA AIRMOTIVE MACHINE SHOP ANCHORAGE -MCKENZIE- 75039 01 01 75 04 04 76 TOTAL HOURS= 73.5 JOB NO.75040 TPAP TEMPORARY POWER ANATUVIK PASS -RAASCH- 75040 01 01 75 04 04 76 TOTAL HOURS= 32.0 JOB NO.75041 NECAA NECA ADDITION CALA -LUNSFORD- 75041 01 01 75 04 04 76 TOTAL HOURS=108.3 JOB NO.75042 BJOA BROWN JUG OFFICE ADDITION -RAASCH- 75042 01 01 75 04 04 76 TOTAL HOURS=151.1 JOB NO.75043 HEOS OFFICE/STORE FOR H&E CONSTRUCTION -EASTBURG- 75043 01 01 75 04 04 76 TOTAL HOURS= 27.0 JOB NO.75044 CALA CALISTA CORP 2ND STORY ADDITION -CLARK- 75044 01 01 75 04 04 76 TOTAL HOURS= 40.2 JOB NO.75045 OBJC OFFICE BLDG. FOR JIM CURLY -JIM CURLY- 75045 01 01 75 04 04 76 TOTAL HOURS= 35.5 JOB NO.75046 BAT BETHEL AIR TERMINAL -WIEN AIRLINES- 75046 01 01 75 04 04 76 TOTAL HOURS= 77.8 JOB NO.75047 ARSUA AUTO REPAIR SHOP U OF A -U OF A- 75047 01 01 75 04 04 76 TOTAL HOURS= 50.4 JOB NO.75048 WGA WAYNE GILMORE APARTMENTS -WAYNE GILMORE- 75048 01 01 75 04 04 76 TOTAL HOURS= 61.7 JOB NO.75049 TSTSC TEAMSTER'S SPORTS COMPLEX -LUNSFORD- 75049 01 01 75 04 04 76 TOTAL HOURS=936.7 JOB NO.75050 CHFA ADDITION TO CITY HONOR FARM -WESTBROOK- 75050 01 01 75 04 04 76 TOTAL HOURS=182.1 JOB NO.75051 GOB GITTINS OFFICE BLDG -CLARK- 75051 01 01 75 04 04 76 TOTAL HOURS=115.8 JOB NO.75052 NQTS NUIQUISET SCHOOL -KPF&F- 75052 01 01 75 04 04 76 TOTAL HOURS= 96.3 JOB NO.75053 NTKA NATAK AVIATION -FOWLER- 75053 01 01 75 04 04 76 TOTAL HOURS= 13.2 JOB NO.75054 ACIDF ACI DINING FACILITIES- -BROWN & ROOT- 75054 01 01 75 04 04 76 TOTAL HOURS= 25.2 JOB NO.75055 MCDAP MCDANIELS APARTMENTS -DON MCDANIELS- 75055 01 01 75 04 04 76 TOTAL HOURS= 45.6 JOB NO.75056 SCF SEED CLEANING FACILITY -STATE OF ALASKA- 75056 01 01 75 04 04 76 TOTAL HOURS= 53.0 JOB NO.75057 MAHOS MIKE AHO SHOP -MIKE AHO- 75057 01 01 75 04 04 76 TOTAL HOURS= 11.5 JOB NO.75058 WRR WIEN REFERIGERATION RELOCATION -WIEN- 75058 01 01 75 04 04 76 TOTAL HOURS= 31.4 JOB NO.75059 BPSC BP SEWAGE CONTROLS -SID CLARK- 75059 01 01 75 04 04 76 TOTAL HOURS= 5.5 JOB NO.75060 NHL NORTHERN HYDRAULICS -LAMPLIGHTERS- 75060 01 01 75 04 04 76 TOTAL HOURS= 9.2 JOB NO.75061 ALKSA ADDITION TO ALAKANUK SCHOOL -RAASCH- 1 04.0 74045 11 26 75 01 02.0 75000 07 21 75 01 03.0 75000 07 24 75 03 01.5 75000 07 24 75 05 00.5 75000 07 29 75 04 02.0 75000 07 30 75 01 02.0 75000 08 01 75 01 03.0 75000 08 05 75 01 03.0 75000 08 07 75 05 02.0 75000 08 11 75 05 01.5 75000 08 13 75 05 00.5 75000 08 15 75 01 04.0 75000 08 18 75 01 05.0 75000 09 03 75 05 00.5 75000 09 04 75 05 01.0 75000 09 13 75 05 01.0 75000 09 17 75 04 06.0 75000 10 03 75 05 01.0 75000 10 07 75 05 01.8 75000 10 09 75 05 07.0 75000 10 13 75 01 01.0 75000 10 14 75 01 02.0 75000 10 25 75 01 02.0 75000 10 30 75 01 01.0 75000 11 03 75 04 02.0 75000 11 04 75 01 02.0 75000 11 06 75 01 01.0 75000 11 10 75 01 01.0 75000 11 12 75 07 03.0 75000 11 13 75 05 01.9 75000 11 14 75 01 04.0 75000 11 15 75 01 03.0 75000 11 17 75 05 01.0 75000 11 18 75 05 04.0 75000 11 18 75 07 02.0 75000 11 20 75 05 01.0 75000 11 21 75 05 01.0 75000 11 24 75 01 02.0 75000 11 24 75 05 01.5 75000 11 25 75 01 02.0 75000 11 26 75 01 03.0 75000 12 01 75 05 01.0 75000 12 01 75 07 02.0 75000 12 02 75 05 02.0 75000 12 03 75 05 01.5 75000 12 05 75 05 01.0 75000 12 08 75 05 01.0 75000 12 09 75 05 01.0 75000 12 10 75 05 01.5 75000 12 12 75 01 01.0 75000 12 12 75 05 01.0 75000 12 14 75 01 12.0 75000 12 15 75 05 01.5 75000 12 16 75 05 01.3 75000 12 16 75 07 08.0 75000 12 17 75 07 03.0 75000 12 18 75 07 01.0 75000 12 22 75 07 01.0 75000 12 24 75 05 04.0 75000 12 24 75 07 01.0 75000 12 29 75 07 01.0 75000 12 30 75 07 01.0 75000 12 31 75 07 00.5 75004 02 16 76 09 00.5 75004 08 09 75 01 03.0 75004 08 09 75 03 01.0 75004 08 12 75 04 01.0 75004 08 12 75 05 04.0 75004 08 13 75 05 03.5 75004 08 15 75 01 02.0 75004 08 16 75 03 03.5 75004 08 16 75 04 08.5 75004 08 16 75 05 08.0 75004 08 18 75 01 02.0 75004 08 29 75 04 01.5 75004 10 15 75 01 11.5 75004 10 16 75 01 06.0 75005 01 15 76 07 07.0 75005 01 16 76 07 01.0 75005 07 30 75 01 01.0 75005 07 30 75 04 06.0 75005 07 30 75 05 06.0 75005 07 31 75 04 06.0 75005 07 31 75 05 00.5 75005 08 01 75 01 01.0 75005 08 01 75 04 03.0 75005 08 01 75 05 00.5 75005 09 30 75 04 04.5 75005 12 22 75 07 01.0 75007 01 13 76 08 03.0 75007 09 16 75 04 03.5 75007 09 17 75 04 03.5 75007 09 18 75 04 07.5 75007 09 19 75 04 07.5 75007 09 20 75 01 03.5 75007 09 20 75 03 03.5 75007 09 20 75 04 08.5 75007 09 22 75 04 05.5 75007 09 23 75 04 05.5 75007 09 24 75 04 04.0 75007 09 25 75 04 03.5 75007 09 26 75 04 03.5 75007 09 27 75 03 01.5 75007 09 27 75 04 04.0 75007 09 29 75 04 05.5 75007 10 01 75 04 03.0 75007 10 02 75 04 01.0 75007 10 03 75 04 04.0 75007 10 04 75 03 03.5 75007 10 04 75 04 08.0 75007 10 07 75 01 04.0 75007 10 08 75 04 01.5 75007 10 08 75 05 05.7 75007 10 10 75 04 00.5 75007 10 11 75 04 05.0 75007 10 13 75 01 01.0 75007 10 13 75 04 06.0 75007 10 13 75 05 01.5 75007 10 14 75 01 04.0 75007 10 14 75 04 04.0 75007 10 15 75 04 08.5 75007 10 16 75 04 08.0 75007 10 16 75 05 06.2 75007 10 17 75 01 01.0 75007 10 17 75 04 08.0 75007 10 17 75 05 02.0 75007 10 20 75 01 05.0 75007 10 21 75 04 01.0 75007 10 22 75 04 06.0 75007 10 23 75 04 03.5 75007 10 23 75 05 01.8 75007 10 24 75 04 02.5 75007 10 24 75 05 01.3 75007 10 27 75 01 04.0 75007 10 28 75 04 01.0 75007 10 28 75 05 05.5 75007 10 30 75 04 01.5 75007 10 31 75 05 00.8 75007 11 06 75 01 02.0 75007 11 07 75 07 04.0 75007 11 10 75 07 03.0 75008 07 31 75 01 03.0 75008 07 31 75 01 06.5 75008 11 22 75 07 00.3 75008 11 23 75 07 02.3 75011 08 07 75 01 02.5 75013 01 05 76 01 01.0 75013 01 19 76 01 02.0 75013 01 20 76 01 02.0 75013 01 22 76 01 05.0 75013 01 26 76 01 02.0 75013 03 24 76 01 02.0 75013 03 31 76 01 01.0 75013 04 02 76 01 01.0 75013 08 08 75 01 02.0 75013 08 28 75 04 07.0 75013 09 08 75 05 02.5 75013 09 09 75 04 02.5 75013 09 13 75 04 02.0 75013 09 24 75 01 02.0 75013 09 24 75 01 02.0 75013 09 24 75 04 04.0 75013 09 25 75 04 02.0 75013 09 26 75 04 03.0 75013 10 20 75 04 02.0 75013 10 21 75 01 02.0 75013 10 21 75 04 02.0 75013 10 22 75 04 01.5 75013 10 24 75 01 03.0 75013 10 27 75 04 04.0 75013 10 27 75 06 02.0 75013 10 28 75 04 07.5 75013 10 29 75 04 08.0 75013 11 04 75 04 03.0 75013 11 17 75 07 01.5 75013 11 26 75 01 03.0 75013 12 02 75 01 00.5 75015 10 08 75 04 00.8 75022 01 12 76 08 05.5 75022 01 13 76 08 03.0 75022 01 15 76 08 01.5 75022 07 24 75 01 01.0 75022 11 17 75 07 01.0 75022 11 18 75 07 03.0 75022 11 19 75 07 01.5 75022 11 20 75 07 03.5 75022 11 21 75 07 04.0 75022 11 26 75 05 00.5 75022 11 28 75 07 04.0 75022 12 18 75 07 01.0 75023 11 17 75 07 01.0 75025 08 14 75 04 02.5 75027 01 19 76 05 00.5 75027 01 19 76 05 00.5 75028 08 04 75 01 03.0 75028 08 06 75 01 03.0 75028 08 07 75 01 01.0 75028 08 08 75 03 04.5 75028 08 08 75 03 02.5 75028 08 09 75 03 04.0 75028 08 15 75 03 07.5 75028 09 09 75 05 01.0 75028 09 26 75 01 04.0 75028 10 02 75 05 01.0 75028 10 03 75 05 04.0 75028 10 04 75 05 03.0 75028 10 23 75 04 01.0 75028 10 23 75 06 08.0 75028 10 24 75 06 04.0 75028 10 29 75 01 07.0 75028 10 30 75 01 04.0 75030 01 07 76 01 04.0 75030 01 11 76 03 04.5 75030 01 12 76 01 02.0 75030 01 12 76 03 02.5 75030 01 13 76 01 04.0 75030 01 14 76 01 08.0 75030 01 14 76 03 02.0 75030 01 15 76 01 04.0 75030 01 15 76 08 01.5 75030 01 17 76 05 01.2 75030 01 17 76 05 01.2 75030 01 17 76 05 01.2 75030 07 19 75 03 04.0 75030 07 23 75 05 01.5 75030 07 24 75 01 02.0 75030 08 13 75 01 04.0 75030 08 29 75 01 02.0 75030 08 29 75 04 04.0 75030 08 30 75 03 03.5 75030 09 02 75 04 08.0 75030 09 02 75 05 07.0 75030 09 03 75 04 10.0 75030 09 03 75 05 08.0 75030 09 04 75 04 04.5 75030 09 04 75 05 07.0 75030 09 05 75 04 07.5 75030 09 05 75 05 01.0 75030 09 06 75 04 11.0 75030 09 06 75 05 09.5 75030 09 30 75 05 00.5 75030 10 01 75 04 00.5 75030 10 06 75 04 06.0 75030 10 07 75 04 05.0 75030 10 20 75 04 04.5 75030 10 21 75 04 04.0 75030 10 30 75 04 03.0 75030 10 31 75 04 02.0 75030 11 01 75 04 04.5 75030 11 03 75 04 05.0 75030 11 04 75 04 04.5 75030 11 05 75 04 08.0 75030 11 06 75 04 08.0 75030 11 06 75 06 01.0 75030 11 07 75 04 08.0 75030 11 10 75 01 05.0 75030 11 10 75 06 05.0 75030 11 10 75 07 05.0 75030 11 19 75 05 02.0 75030 11 20 75 05 04.0 75030 11 24 75 01 01.0 75031 07 23 75 04 01.5 75031 07 24 75 04 03.5 75031 07 25 75 04 07.5 75031 07 27 75 01 02.0 75031 07 28 75 04 03.0 75031 07 30 75 01 01.0 75031 08 01 75 03 07.0 75031 08 01 75 04 03.0 75031 08 04 75 01 01.0 75031 08 11 75 05 01.0 75031 08 20 75 05 05.0 75031 08 21 75 05 09.0 75031 08 22 75 05 03.0 75031 08 27 75 05 00.5 75032 07 19 75 03 06.0 75032 07 19 75 04 06.0 75032 07 21 75 04 02.0 75033 03 23 76 07 02.0 75033 03 24 76 07 05.0 75033 03 29 76 07 01.0 75033 11 22 75 07 00.7 75033 11 23 75 07 06.7 75034 07 21 75 01 03.0 75034 07 21 75 04 02.0 75034 07 22 75 01 04.0 75034 07 22 75 04 08.0 75034 07 23 75 04 06.0 75034 07 24 75 01 01.0 75034 07 24 75 04 05.0 75034 07 25 75 01 01.0 75034 07 25 75 04 01.0 75034 07 26 75 04 05.5 75034 07 27 75 01 03.0 75034 07 28 75 04 05.0 75034 07 29 75 04 04.5 75034 07 29 75 05 01.0 75034 07 30 75 04 03.0 75034 08 02 75 01 04.0 75034 08 02 75 03 03.5 75034 08 03 75 04 08.5 75034 08 05 75 04 03.0 75034 08 06 75 04 05.0 75034 08 07 75 01 00.5 75034 08 08 75 04 01.0 75035 07 20 75 03 01.5 75035 07 24 75 03 01.5 75035 08 04 75 01 03.0 75035 08 07 75 01 01.0 75035 08 07 75 05 02.5 75035 08 08 75 01 02.0 75035 08 08 75 05 08.0 75035 08 09 75 01 01.0 75035 08 09 75 05 06.0 75035 08 11 75 05 02.0 75035 08 12 75 01 03.0 75035 08 12 75 04 00.5 75035 08 12 75 05 00.5 75035 08 13 75 01 01.0 75035 08 13 75 04 07.0 75035 08 14 75 04 03.5 75035 08 15 75 03 01.0 75035 08 15 75 04 07.0 75035 08 16 75 04 02.5 75035 08 20 75 04 01.5 75035 10 17 75 01 02.0 75035 12 09 75 01 01.0 75036 08 26 75 01 04.0 75036 08 28 75 05 05.5 75036 08 29 75 05 05.5 75036 08 30 75 04 07.0 75036 08 30 75 05 04.0 75036 09 02 75 05 02.0 75036 09 04 75 01 04.0 75036 09 05 75 04 01.0 75036 09 05 75 05 04.5 75036 09 08 75 04 08.5 75036 09 08 75 05 05.5 75036 09 10 75 04 01.0 75036 09 11 75 04 03.0 75036 09 13 75 04 02.0 75036 09 25 75 04 00.5 75036 09 25 75 04 02.5 75036 09 26 75 04 02.0 75036 10 16 75 04 01.0 75037 07 21 75 01 02.0 75037 07 23 75 01 04.0 75037 07 24 75 03 01.5 75037 07 28 75 01 01.0 75037 08 04 75 01 01.0 75037 08 04 75 04 04.0 75037 08 04 75 05 07.5 75037 08 05 75 01 02.0 75037 08 05 75 04 02.5 75037 08 05 75 05 04.5 75037 08 06 75 04 03.5 75037 08 07 75 01 01.0 75037 08 07 75 04 07.0 75037 08 07 75 05 04.0 75037 08 08 75 01 03.0 75037 08 08 75 04 07.5 75037 08 09 75 01 04.0 75037 08 09 75 03 01.0 75037 08 09 75 04 07.0 75037 08 11 75 01 03.0 75037 08 11 75 04 09.0 75037 08 11 75 05 02.5 75037 08 12 75 04 07.0 75037 08 15 75 01 02.0 75037 08 20 75 04 02.5 75037 O8 06 75 05 08.5 75038 07 21 75 04 04.0 75039 01 06 76 05 00.5 75039 09 16 75 05 01.5 75039 09 19 75 05 02.0 75039 09 20 75 01 03.5 75039 09 20 75 03 03.5 75039 09 22 75 04 01.5 75039 09 22 75 05 08.5 75039 09 23 75 01 02.0 75039 09 23 75 04 03.5 75039 09 23 75 05 09.0 75039 09 24 75 04 01.0 75039 09 24 75 05 05.0 75039 09 25 75 05 04.0 75039 09 27 75 04 04.5 75039 09 29 75 04 02.0 75039 09 29 75 05 03.0 75039 09 30 75 04 02.0 75039 09 30 75 05 03.3 75039 10 01 75 04 01.5 75039 10 01 75 05 06.0 75039 10 02 75 05 02.4 75039 10 06 75 05 00.5 75039 10 07 75 05 00.5 75039 10 17 75 05 00.4 75039 10 22 75 05 00.9 75039 10 23 75 01 01.0 75040 07 22 75 01 04.0 75040 07 23 75 01 04.0 75040 07 24 75 01 02.0 75040 07 25 75 01 04.0 75040 08 11 75 01 03.0 75040 08 12 75 01 03.0 75040 09 08 75 01 04.0 75040 10 10 75 01 01.0 75040 11 03 75 01 04.0 75040 11 05 75 01 02.0 75040 11 06 75 01 01.0 75041 07 24 75 03 03.5 75041 07 29 75 04 02.0 75041 08 04 75 04 04.0 75041 08 05 75 01 01.0 75041 08 05 75 04 03.0 75041 08 06 75 01 02.0 75041 08 07 75 04 01.0 75041 08 14 75 01 08.0 75041 08 16 75 03 06.0 75041 08 16 75 04 02.0 75041 08 19 75 01 06.0 75041 08 20 75 01 08.0 75041 08 20 75 04 05.0 75041 08 21 75 01 08.0 75041 08 21 75 04 11.0 75041 08 22 75 01 06.0 75041 08 22 75 03 02.8 75041 08 22 75 04 04.5 75041 08 25 75 01 01.0 75041 08 26 75 01 01.0 75041 08 27 75 01 04.0 75041 08 27 75 04 02.5 75041 08 29 75 01 02.0 75041 10 08 75 01 03.0 75041 10 10 75 01 01.0 75041 10 17 75 01 01.0 75041 11 18 75 05 01.0 75041 11 18 75 07 03.0 75041 11 19 75 07 02.0 75041 11 21 75 07 02.0 75041 11 29 75 03 01.0 75042 01 21 76 05 01.3 75042 01 21 76 05 01.3 75042 01 22 76 05 02.0 75042 01 22 76 05 02.0 75042 01 26 76 05 02.8 75042 01 27 76 05 01.0 75042 03 16 76 03 03.0 75042 03 29 76 05 03.0 75042 03 30 76 03 03.0 75042 03 30 76 05 06.0 75042 04 01 76 05 06.5 75042 04 02 76 05 08.0 75042 07 27 75 01 01.0 75042 08 01 75 01 02.0 75042 08 01 75 03 01.5 75042 08 02 75 01 04.0 75042 08 02 75 03 04.5 75042 08 11 75 01 02.0 75042 08 12 75 01 03.0 75042 08 12 75 04 00.5 75042 08 13 75 01 01.0 75042 08 13 75 04 01.0 75042 08 13 75 05 04.0 75042 08 14 75 04 02.0 75042 08 14 75 05 09.0 75042 08 15 75 04 01.0 75042 08 15 75 05 08.5 75042 08 18 75 01 01.0 75042 08 20 75 05 04.0 75042 10 22 75 04 00.5 75042 10 22 75 05 03.1 75042 10 23 75 05 01.6 75042 10 27 75 01 02.0 75042 11 04 75 05 05.5 75042 11 04 75 06 01.0 75042 11 04 75 07 02.0 75042 11 05 75 01 02.0 75042 11 05 75 05 05.5 75042 11 05 75 07 02.0 75042 11 06 75 01 04.0 75042 11 06 75 05 07.0 75042 11 07 75 05 07.0 75042 11 07 75 07 01.0 75042 11 10 75 05 08.0 75042 11 11 75 05 03.0 75042 11 11 75 06 03.0 75042 11 13 75 05 01.0 75042 11 17 75 05 01.0 75042 11 19 75 05 01.0 75043 07 30 75 01 02.0 75043 07 30 75 05 02.0 75043 07 31 75 04 02.0 75043 07 31 75 05 07.5 75043 08 01 75 01 01.0 75043 08 01 75 04 02.5 75043 08 01 75 05 06.5 75043 09 05 75 05 02.5 75043 09 16 75 05 01.0 75044 08 05 75 01 01.0 75044 08 08 75 01 01.0 75044 08 08 75 03 02.0 75044 08 09 75 03 02.0 75044 08 22 75 01 02.0 75044 08 22 75 04 03.0 75044 08 23 75 04 07.2 75044 08 25 75 01 01.0 75044 08 25 75 04 02.0 75044 08 25 75 05 01.5 75044 08 26 75 01 02.0 75044 08 26 75 04 06.0 75044 08 26 75 05 01.5 75044 08 27 75 01 04.0 75044 08 27 75 04 02.5 75044 08 27 75 05 00.5 75044 09 16 75 05 01.0 75045 01 09 76 08 02.5 75045 01 22 76 08 04.0 75045 01 22 76 08 04.0 75045 08 18 75 03 03.5 75045 08 19 75 03 01.0 75045 08 22 75 03 01.0 75045 09 09 75 04 06.5 75045 09 10 75 04 07.5 75045 09 11 75 04 03.0 75045 09 15 75 04 01.0 75045 09 16 75 05 01.0 75045 09 25 75 05 00.5 75046 08 19 75 03 03.0 75046 08 22 75 03 03.5 75046 08 22 75 03 01.5 75046 08 22 75 04 01.0 75046 08 22 75 05 06.0 75046 08 23 75 04 01.3 75046 08 23 75 05 08.5 75046 08 25 75 01 02.0 75046 08 25 75 04 05.5 75046 08 25 75 05 06.0 75046 08 26 75 01 01.0 75046 08 26 75 04 02.5 75046 08 26 75 05 04.5 75046 08 27 75 01 04.0 75046 08 27 75 04 03.5 75046 08 27 75 05 05.5 75046 08 28 75 01 04.0 75046 08 28 75 04 02.0 75046 08 28 75 05 03.0 75046 08 29 75 04 03.0 75046 08 29 75 05 00.5 75046 09 17 75 05 03.5 75046 09 18 75 05 02.5 75047 03 31 76 01 02.0 75047 09 05 75 01 01.0 75047 09 13 75 04 04.0 75047 09 13 75 05 07.5 75047 09 15 75 04 08.5 75047 09 16 75 04 05.0 75047 09 18 75 04 01.0 75047 09 19 75 04 01.0 75047 09 20 75 01 02.0 75047 09 20 75 03 02.0 75047 09 20 75 04 00.5 75047 09 24 75 01 02.0 75047 10 02 75 04 02.0 75047 10 02 75 05 02.0 75047 10 03 75 04 03.0 75047 10 06 75 04 01.0 75047 10 10 75 05 00.4 75047 10 27 75 01 01.0 75047 11 14 75 01 01.0 75047 11 14 75 05 02.5 75047 11 17 75 07 01.0 75048 08 29 75 01 02.0 75048 08 30 75 03 04.0 75048 09 09 75 05 08.0 75048 09 10 75 04 01.0 75048 09 10 75 05 09.5 75048 09 11 75 04 04.0 75048 09 11 75 05 08.0 75048 09 12 75 04 09.0 75048 09 12 75 05 07.0 75048 09 15 75 05 01.0 75048 09 16 75 05 01.0 75048 10 01 75 05 01.0 75048 10 10 75 05 00.7 75048 10 27 75 05 03.0 75048 11 11 75 05 00.5 75048 11 12 75 05 01.0 75048 12 12 75 05 01.0 75049 01 05 76 07 06.0 75049 01 06 76 07 08.0 75049 01 06 76 08 02.0 75049 01 07 76 07 08.0 75049 01 07 76 08 02.0 75049 01 08 76 07 05.0 75049 01 08 76 08 01.5 75049 01 09 76 01 08.8 75049 01 09 76 03 09.5 75049 01 09 76 07 09.0 75049 01 10 76 01 08.0 75049 01 10 76 03 03.5 75049 01 10 76 07 04.0 75049 01 12 76 03 02.5 75049 01 12 76 07 09.0 75049 01 13 76 07 10.0 75049 01 14 76 05 02.0 75049 01 14 76 07 08.5 75049 01 15 76 07 02.5 75049 01 16 76 01 09.0 75049 01 16 76 01 09.0 75049 01 16 76 03 09.0 75049 01 16 76 05 03.5 75049 01 16 76 07 07.0 75049 01 17 76 01 08.0 75049 01 17 76 01 08.0 75049 01 17 76 03 08.0 75049 01 17 76 03 08.0 75049 01 17 76 03 08.0 75049 01 17 76 05 05.3 75049 01 17 76 05 05.3 75049 01 17 76 05 05.3 75049 01 17 76 07 06.5 75049 01 17 76 07 06.5 75049 01 17 76 07 06.5 75049 01 18 76 01 06.0 75049 01 19 76 05 05.5 75049 01 19 76 05 05.5 75049 01 19 76 07 01.5 75049 01 19 76 07 06.5 75049 01 19 76 07 01.5 75049 01 19 76 07 01.5 75049 01 19 76 07 06.5 75049 01 19 76 07 01.5 75049 01 20 76 01 02.0 75049 01 20 76 03 03.5 75049 01 20 76 03 03.5 75049 01 20 76 05 03.5 75049 01 20 76 05 03.5 75049 01 20 76 07 01.0 75049 01 20 76 07 08.0 75049 01 20 76 07 01.0 75049 01 20 76 07 08.0 75049 01 21 76 01 01.0 75049 01 21 76 05 06.0 75049 01 21 76 05 06.0 75049 01 21 76 07 08.0 75049 01 21 76 07 08.0 75049 01 22 76 01 03.0 75049 01 22 76 03 03.0 75049 01 22 76 03 03.0 75049 01 22 76 07 07.0 75049 01 22 76 07 07.0 75049 01 23 76 03 08.5 75049 01 23 76 03 08.5 75049 01 23 76 07 08.0 75049 01 23 76 07 08.0 75049 01 24 76 03 04.5 75049 01 24 76 03 04.5 75049 01 26 76 01 06.0 75049 01 26 76 07 08.0 75049 01 27 76 01 04.0 75049 01 27 76 07 08.0 75049 01 28 76 07 08.0 75049 01 29 76 07 02.0 75049 01 29 76 07 08.0 75049 01 30 76 03 06.5 75049 01 30 76 07 01.5 75049 01 30 76 07 08.0 75049 01 31 76 03 12.0 75049 01 31 76 07 08.0 75049 02 01 76 07 03.0 75049 02 02 76 05 06.0 75049 02 02 76 07 01.0 75049 02 02 76 07 08.0 75049 02 03 76 05 04.0 75049 02 03 76 07 06.0 75049 02 03 76 07 02.0 75049 02 04 76 05 04.0 75049 02 04 76 07 01.5 75049 02 04 76 07 04.0 75049 02 06 76 08 01.5 75049 02 10 76 07 05.0 75049 02 10 76 07 03.0 75049 02 11 76 07 08.0 75049 02 12 76 07 05.0 75049 02 13 76 07 01.0 75049 02 13 76 07 08.0 75049 02 16 76 07 08.0 75049 02 17 76 07 01.0 75049 02 17 76 07 06.0 75049 02 17 76 07 02.0 75049 02 18 76 05 02.0 75049 02 18 76 07 00.5 75049 02 18 76 07 05.0 75049 02 18 76 07 02.5 75049 02 19 76 07 02.0 75049 02 20 76 07 03.5 75049 02 24 76 07 01.5 75049 02 25 76 07 07.0 75049 03 01 76 01 04.0 75049 03 01 76 07 05.0 75049 03 02 76 07 05.0 75049 03 03 76 07 05.0 75049 03 04 76 07 01.0 75049 03 04 76 07 03.0 75049 03 09 76 07 05.0 75049 03 29 76 07 04.0 75049 04 02 76 03 06.0 75049 04 02 76 07 01.0 75049 04 03 76 03 08.5 75049 04 04 76 03 00.5 75049 09 22 75 04 01.5 75049 09 25 75 01 02.0 75049 09 27 75 03 07.0 75049 09 30 75 01 08.0 75049 10 01 75 04 03.0 75049 10 02 75 04 06.0 75049 10 03 75 01 08.0 75049 10 03 75 04 02.0 75049 10 04 75 03 04.5 75049 10 04 75 04 01.0 75049 10 06 75 04 01.0 75049 10 07 75 01 04.0 75049 10 08 75 01 01.0 75049 10 08 75 04 06.5 75049 10 08 75 05 00.3 75049 10 09 75 01 08.0 75049 10 09 75 04 08.0 75049 10 10 75 01 06.0 75049 10 10 75 04 08.0 75049 10 10 75 05 02.0 75049 10 11 75 04 03.0 75049 10 13 75 01 04.5 75049 10 13 75 04 02.0 75049 10 16 75 05 00.5 75049 10 17 75 05 02.5 75049 10 20 75 04 01.5 75049 10 21 75 01 06.0 75049 10 21 75 04 01.0 75049 10 21 75 05 00.4 75049 10 22 75 01 06.0 75049 10 28 75 01 08.0 75049 10 29 75 04 01.0 75049 10 29 75 05 03.0 75049 10 29 75 06 01.0 75049 10 30 75 01 03.0 75049 10 30 75 04 04.0 75049 10 30 75 05 03.8 75049 10 30 75 06 08.0 75049 10 31 75 04 04.0 75049 10 31 75 05 02.0 75049 10 31 75 06 04.0 75049 11 03 75 06 02.0 75049 11 11 75 01 02.0 75049 11 11 75 05 01.2 75049 11 14 75 05 00.3 75049 11 17 75 07 02.5 75049 11 21 75 05 00.5 75049 11 28 75 03 09.0 75049 11 29 75 03 01.0 75049 12 01 75 07 02.0 75049 12 02 75 01 02.0 75049 12 05 75 03 08.0 75049 12 05 75 07 02.0 75049 12 08 75 01 05.0 75049 12 09 75 01 03.0 75049 12 10 75 01 08.0 75049 12 11 75 07 03.0 75049 12 12 75 01 04.0 75049 12 16 75 01 10.0 75049 12 17 75 01 10.0 75049 12 17 75 07 06.0 75049 12 18 75 01 04.0 75049 12 18 75 07 06.0 75049 12 19 75 07 09.0 75049 12 22 75 01 08.0 75049 12 22 75 07 07.0 75049 12 23 75 01 04.0 75049 12 23 75 07 05.5 75049 12 24 75 07 03.0 75049 12 29 75 01 08.0 75049 12 29 75 07 06.0 75049 12 30 75 07 07.5 75049 12 31 75 07 03.5 75050 01 09 76 05 01.0 75050 02 04 76 07 02.5 75050 10 06 75 01 04.0 75050 10 06 75 05 06.2 75050 10 06 75 05 01.0 75050 10 07 75 05 00.5 75050 10 11 75 05 00.7 75050 10 13 75 05 01.5 75050 10 17 75 05 01.6 75050 10 20 75 05 02.0 75050 10 21 75 05 00.4 75050 10 22 75 05 01.5 75050 10 28 75 05 01.0 75050 10 28 75 06 01.0 75050 10 29 75 05 05.0 75050 10 29 75 06 03.0 75050 10 30 75 05 04.5 75050 10 31 75 01 04.0 75050 10 31 75 05 00.7 75050 11 03 75 05 01.0 75050 11 04 75 05 03.0 75050 11 04 75 07 04.0 75050 11 05 75 05 03.0 75050 11 05 75 07 06.0 75050 11 06 75 05 01.5 75050 11 06 75 07 01.0 75050 11 14 75 01 01.0 75050 11 14 75 05 01.5 75050 11 15 75 01 03.0 75050 11 17 75 05 01.5 75050 11 18 75 05 02.0 75050 11 19 75 05 05.5 75050 11 19 75 07 02.0 75050 11 20 75 05 04.0 75050 11 20 75 07 01.0 75050 11 21 75 05 07.0 75050 11 21 75 07 02.0 75050 11 24 75 01 02.0 75050 11 24 75 05 06.0 75050 11 25 75 01 03.0 75050 11 25 75 05 08.5 75050 11 26 75 05 07.7 75050 11 28 75 05 09.0 75050 12 01 75 05 05.5 75050 12 01 75 07 01.0 75050 12 02 75 05 02.5 75050 12 02 75 07 02.0 75050 12 03 75 01 03.0 75050 12 03 75 05 02.0 75050 12 04 75 01 02.0 75050 12 04 75 05 01.5 75050 12 05 75 05 03.5 75050 12 05 75 07 01.0 75050 12 10 75 05 02.0 75050 12 11 75 05 07.5 75050 12 12 75 05 02.0 75050 12 15 75 05 01.5 75050 12 17 75 05 08.5 75050 12 18 75 05 08.3 75051 01 23 76 05 04.5 75051 01 23 76 05 04.5 75051 01 24 76 03 02.5 75051 01 24 76 03 02.5 75051 01 26 76 05 04.0 75051 01 28 76 05 00.6 75051 02 04 76 05 02.0 75051 02 23 76 05 01.5 75051 02 26 76 05 03.0 75051 02 27 76 05 05.5 75051 03 01 76 05 01.0 75051 03 02 76 05 05.5 75051 03 03 76 05 01.5 75051 03 10 76 01 01.0 75051 03 18 76 05 02.0 75051 03 24 76 05 05.5 75051 03 25 76 05 01.0 75051 03 26 76 05 02.5 75051 03 29 76 05 03.5 75051 10 06 75 01 04.0 75051 10 07 75 05 04.8 75051 10 11 75 05 02.0 75051 10 11 75 05 04.0 75051 10 13 75 05 02.0 75051 10 27 75 05 00.3 75051 10 28 75 05 01.5 75051 10 28 75 06 05.0 75051 10 29 75 06 04.0 75051 12 01 75 05 02.0 75051 12 02 75 05 02.8 75051 12 03 75 05 04.5 75051 12 08 75 01 02.0 75051 12 08 75 05 06.3 75051 12 09 75 01 02.0 75051 12 09 75 05 03.0 75051 12 10 75 05 04.5 75051 12 11 75 05 02.0 75051 12 12 75 05 03.0 75051 12 15 75 05 02.0 75052 01 30 76 01 01.0 75052 02 12 76 07 03.0 75052 02 20 76 07 02.0 75052 02 23 76 07 01.5 75052 02 23 76 09 00.3 75052 03 01 76 07 01.0 75052 03 02 76 07 00.5 75052 03 03 76 07 01.0 75052 03 04 76 07 01.0 75052 03 05 76 07 03.0 75052 03 06 76 03 01.5 75052 03 07 76 07 04.0 75052 03 08 76 07 03.0 75052 03 10 76 07 01.0 75052 03 22 76 07 05.5 75052 03 22 76 07 01.5 75052 03 23 76 07 07.0 75052 03 23 76 08 01.5 75052 03 24 76 07 04.5 75052 03 25 76 05 04.5 75052 03 25 76 07 09.0 75052 03 26 76 05 02.5 75052 03 26 76 07 09.0 75052 03 28 76 07 02.0 75052 03 28 76 07 01.0 75052 03 29 76 07 03.0 75052 03 31 76 07 01.0 75052 09 24 75 01 02.0 75052 09 29 75 01 04.0 75052 09 29 75 05 00.5 75052 10 02 75 01 08.0 75052 10 14 75 01 03.0 75052 12 09 75 01 03.0 75053 09 25 75 05 04.0 75053 09 26 75 01 01.0 75053 09 26 75 05 04.0 75053 09 29 75 05 03.0 75053 09 30 75 05 01.2 75054 09 26 75 01 01.0 75054 09 26 75 05 04.5 75054 09 29 75 04 01.5 75054 09 29 75 05 03.0 75054 09 30 75 04 02.5 75054 09 30 75 05 05.0 75054 10 01 75 05 00.5 75054 10 11 75 05 00.3 75054 11 11 75 05 02.0 75054 11 12 75 01 02.0 75054 11 12 75 05 02.0 75054 11 13 75 05 00.6 75054 11 26 75 05 00.3 75055 10 10 75 03 04.5 75055 10 10 75 03 03.0 75055 10 11 75 03 04.0 75055 10 11 75 03 03.5 75055 10 13 75 05 03.0 75055 10 14 75 04 01.5 75055 10 14 75 05 05.5 75055 10 15 75 05 05.0 75055 10 20 75 05 04.0 75055 10 21 75 05 00.4 75055 10 21 75 05 05.0 75055 10 22 75 01 02.0 75055 10 22 75 05 03.1 75055 10 23 75 05 01.1 75056 01 06 76 05 01.0 75056 01 07 76 05 04.0 75056 01 08 76 05 03.0 75056 01 12 76 05 02.5 75056 01 14 76 05 01.0 75056 10 23 75 04 05.0 75056 10 23 75 05 05.0 75056 10 31 75 05 01.0 75056 11 11 75 05 02.5 75056 11 11 75 07 01.0 75056 11 12 75 05 05.0 75056 11 13 75 05 04.0 75056 11 13 75 07 01.0 75056 11 14 75 05 05.0 75056 11 14 75 07 01.5 75056 11 17 75 05 04.5 75056 11 17 75 07 01.0 75056 11 24 75 07 01.0 75056 12 18 75 01 04.0 75057 01 06 76 05 03.5 75057 01 06 76 08 00.5 75057 01 08 76 05 00.5 75057 10 10 75 05 05.0 75057 10 13 75 05 00.5 75057 11 18 75 05 01.0 75057 12 05 75 05 00.5 75058 10 14 75 04 02.0 75058 10 14 75 05 02.0 75058 10 15 75 04 00.5 75058 10 15 75 05 03.0 75058 10 24 75 04 01.0 75058 10 24 75 05 05.7 75058 10 25 75 04 01.5 75058 10 25 75 05 05.3 75058 10 27 75 01 01.0 75058 10 27 75 05 04.4 75058 10 27 75 06 02.0 75058 10 28 75 05 01.0 75058 10 28 75 06 02.0 75059 10 14 75 01 03.5 75059 10 16 75 01 02.0 75060 10 16 75 05 01.8 75060 10 17 75 01 01.0 75060 10 17 75 05 01.5 75060 10 20 75 01 02.0 75060 10 20 75 05 02.5 75060 10 21 75 05 00.4 75061 10 23 75 01 04.0 75061 10 24 75 01 05.0 75061 10 24 75 04 05.0 75061 10 24 75 05 02.2 75061 10 24 75 06 04.5 75061 10 25 75 04 07.5 75061 10 27 75 04 04.0 75061 10 27 75 05 01.3 75061 10 27 75 06 02.0 75061 10 77 75 01 01.0 75062 10 28 75 01 01.0 75062 10 29 75 01 01.0 75063 01 05 76 01 01.0 75063 01 05 76 07 01.5 75063 11 12 75 01 02.0 75063 11 12 75 07 02.0 75063 11 13 75 01 03.0 75063 11 13 75 07 05.0 75063 11 14 75 01 02.0 75063 11 14 75 07 01.5 75063 11 19 75 07 02.5 75063 11 20 75 07 04.5 75063 11 24 75 01 03.0 75063 11 24 75 07 02.5 75063 11 26 75 07 03.0 75063 11 28 75 07 04.0 75063 11 29 75 03 02.0 75063 11 29 75 03 04.0 75063 12 01 75 07 03.0 75063 12 02 75 01 02.0 75063 12 02 75 07 06.0 75063 12 03 75 07 06.0 75063 12 04 75 01 01.0 75063 12 04 75 07 04.5 75063 12 05 75 07 05.0 75063 12 08 75 01 01.0 75063 12 08 75 07 09.0 75063 12 09 75 07 08.0 75063 12 10 75 07 08.0 75063 12 11 75 01 03.0 75063 12 11 75 07 06.0 75063 12 12 75 01 01.0 75063 12 12 75 07 08.0 75063 12 29 75 07 01.5 75064 10 31 75 01 04.0 75064 10 31 75 04 02.0 75064 10 31 75 05 01.5 75064 10 31 75 06 04.0 75064 11 03 75 01 04.0 75064 11 03 75 06 01.0 75064 11 03 75 07 08.5 75064 11 04 75 01 04.0 75064 11 04 75 06 02.0 75064 11 04 75 07 02.0 75065 03 08 76 01 03.0 75065 11 10 75 07 01.0 75065 11 11 75 07 03.0 75065 11 12 75 07 03.0 75065 11 13 75 07 02.0 75065 11 14 75 07 05.0 75065 11 24 75 07 05.5 75065 11 25 75 07 08.0 75065 11 26 75 07 05.0 75065 12 02 75 01 06.0 75065 12 03 75 07 02.0 75065 12 04 75 01 08.0 75065 12 04 75 07 03.5 75065 12 05 75 01 12.0 75065 12 06 75 01 04.0 75066 11 11 75 01 04.5 75066 11 13 75 01 01.0 75067 01 02 76 08 03.0 75067 01 05 76 08 03.0 75067 01 12 76 08 01.0 75067 01 19 76 08 04.0 75067 01 19 76 08 04.0 75067 01 27 76 01 02.0 75067 03 24 76 07 00.5 75068 12 14 75 01 14.0 75068 12 15 75 07 08.0 75500 07 22 75 05 08.0 75500 07 23 75 05 06.5 75500 07 24 75 05 07.5 75500 07 25 75 05 08.0 75500 07 28 75 05 08.5 75500 07 29 75 05 07.0 75500 07 30 75 01 02.0 75500 08 01 75 05 01.0 75500 08 04 75 05 01.0 75500 08 05 75 01 01.0 75500 08 05 75 05 04.0 75500 08 06 75 01 03.0 75500 08 11 75 05 02.0 75500 08 12 75 05 05.0 75500 08 16 75 05 01.5 75500 08 22 75 01 04.0 75500 08 28 75 01 04.0 75500 08 29 75 05 03.0 75500 08 30 75 01 08.0 75500 09 01 75 01 08.0 75500 09 02 75 01 08.0 75500 09 03 75 01 08.0 75500 09 04 75 01 04.0 75500 09 05 75 01 07.0 75500 09 05 75 05 00.5 75500 09 08 75 01 04.0 75500 09 09 75 01 08.0 75500 09 10 75 01 08.0 75500 09 11 75 01 08.0 75500 09 11 75 05 02.0 75500 09 12 75 01 08.0 75500 09 12 75 05 02.5 75500 09 15 75 01 09.0 75500 09 15 75 05 08.5 75500 09 16 75 01 09.0 75500 09 16 75 05 03.5 75500 09 17 75 01 09.0 75500 09 17 75 05 06.0 75500 09 18 75 01 09.0 75500 09 18 75 05 06.5 75500 09 19 75 05 06.5 75500 09 24 75 05 03.5 75500 09 25 75 01 06.0 75500 09 26 75 01 02.0 75500 09 29 75 01 04.0 75500 10 01 75 01 08.0 75500 10 01 75 05 01.0 75500 10 02 75 05 01.5 75500 10 02 75 05 01.1 75500 10 03 75 05 06.0 75500 10 06 75 05 00.3 75500 10 07 75 05 00.7 75500 10 08 75 01 04.0 75500 10 08 75 05 02.5 75500 10 10 75 05 00.4 75500 10 20 75 01 02.0 75500 11 03 75 05 07.0 75500 11 05 75 01 02.0 75500 11 19 75 01 08.0 75500 12 08 75 05 01.5 75500 12 09 75 05 04.0 75500 12 11 75 01 03.0 75500 12 12 75 05 01.0 75501 07 27 75 01 02.0 75501 07 28 75 01 06.0 75501 11 10 75 01 02.0 75501 12 11 75 01 02.0 75501 12 12 75 01 02.0 75502 09 22 75 01 08.0 75502 09 23 75 01 06.0 75504 01 03 76 01 08.0 75504 01 20 76 01 04.0 75504 03 09 76 09 02.0 75504 03 09 76 09 06.0 75504 03 10 76 09 02.0 75504 03 11 76 09 04.0 75504 03 24 76 09 03.5 75504 03 25 76 09 02.0 75504 03 26 76 09 03.0 75504 03 29 76 09 01.0 75504 03 30 76 01 04.0 75504 03 30 76 09 01.5 75504 03 31 76 09 06.0 75504 04 01 76 09 04.0 75504 04 02 76 09 07.0 75504 10 13 75 01 01.5 75504 11 05 75 01 02.0 75504 11 07 75 01 02.0 75504 11 07 75 01 06.0 75504 11 15 75 01 01.0 75504 12 13 75 05 01.5 75505 10 18 75 01 04.0 75505 10 23 75 01 03.0 75505 10 28 75 01 03.0 75506 11 01 75 01 06.0 75506 11 03 75 06 05.0 75506 11 04 75 06 05.0 75506 11 05 75 06 08.0 75506 11 06 75 06 07.0 75506 11 07 75 06 08.0 75506 11 10 75 06 04.0 75506 11 11 75 06 05.0 75506 11 21 75 01 08.0 75506 11 22 75 01 04.0 75507 01 06 76 05 01.0 75507 01 07 76 05 04.0 75507 01 08 76 05 03.5 75507 01 09 76 05 06.0 75507 01 22 76 05 05.0 75507 01 22 76 05 05.0 75507 01 23 76 05 01.5 75507 01 23 76 05 01.5 75507 01 27 76 01 04.0 75507 01 27 76 05 05.0 75507 01 28 76 05 01.6 75507 01 30 76 05 02.0 75507 01 31 76 01 03.0 75507 02 03 76 05 04.0 75507 02 16 76 01 08.0 75507 02 17 76 01 08.0 75507 02 18 76 01 08.0 75507 02 19 76 01 08.0 75507 02 20 76 01 08.0 75507 02 23 76 01 08.0 75507 02 24 76 01 08.0 75507 02 25 76 01 08.0 75507 02 26 76 01 08.0 75507 02 27 76 01 08.0 75507 03 01 76 01 08.0 75507 03 02 76 01 03.0 75507 03 03 76 01 03.0 75507 03 04 76 01 03.0 75507 03 05 76 01 06.0 75507 03 10 76 01 05.0 75507 11 17 75 01 08.0 75507 11 18 75 01 08.0 75507 11 20 75 01 08.0 75507 11 23 75 01 08.0 75507 11 25 75 01 03.0 75507 12 04 75 05 06.5 75507 12 05 75 05 03.0 75507 12 08 75 05 01.5 75507 12 15 75 05 03.5 75507 12 16 75 05 07.0 75507 12 17 75 05 03.5 75508 10 30 75 05 00.7 75508 12 15 75 01 04.0 75509 01 12 76 01 03.0 75509 01 13 76 01 04.0 75512 01 06 76 01 04.0 75512 01 08 76 01 02.0 75512 01 09 76 01 02.0 75513 12 03 75 01 03.0 75514 01 03 75 01 06.0 75514 01 09 76 05 02.0 75514 01 11 76 01 04.0 75514 01 13 76 05 03.5 75514 01 14 76 05 04.5 75514 01 15 76 05 07.0 75514 01 16 76 05 01.3 75514 01 29 76 05 05.0 75514 01 30 76 05 05.0 75514 04 01 76 05 03.0 76000 01 05 76 01 06.0 76000 01 05 76 07 01.5 76000 01 05 76 08 02.0 76000 01 06 76 07 01.0 76000 01 06 76 08 05.5 76000 01 07 76 07 01.0 76000 01 07 76 08 02.0 76000 01 08 76 01 06.0 76000 01 08 76 05 01.0 76000 01 08 76 07 00.5 76000 01 09 76 08 02.5 76000 01 12 76 01 05.0 76000 01 12 76 05 00.5 76000 01 12 76 08 01.0 76000 01 12 76 08 01.0 76000 01 13 76 05 01.0 76000 01 13 76 08 02.0 76000 01 14 76 05 00.5 76000 01 14 76 07 00.5 76000 01 14 76 08 08.0 76000 01 15 76 08 05.0 76000 01 19 76 05 01.5 76000 01 19 76 05 01.5 76000 01 19 76 08 04.0 76000 01 19 76 08 04.0 76000 01 20 76 05 03.5 76000 01 20 76 05 03.5 76000 01 20 76 08 08.0 76000 01 20 76 08 08.0 76000 01 21 76 05 02.0 76000 01 21 76 05 02.0 76000 01 21 76 08 06.0 76000 01 21 76 08 06.0 76000 01 22 76 05 01.0 76000 01 22 76 05 01.0 76000 01 22 76 07 01.0 76000 01 22 76 07 01.0 76000 01 22 76 08 04.0 76000 01 22 76 08 04.0 76000 01 23 76 05 00.5 76000 01 23 76 05 00.5 76000 01 23 76 08 01.0 76000 01 23 76 08 01.0 76000 01 26 76 05 01.5 76000 01 26 76 08 00.8 76000 01 27 76 01 03.0 76000 01 27 76 05 01.0 76000 01 27 76 05 01.5 76000 01 27 76 08 08.0 76000 01 28 76 01 08.0 76000 01 28 76 05 02.0 76000 01 28 76 08 08.0 76000 01 29 76 01 04.0 76000 01 29 76 01 02.0 76000 01 29 76 05 02.0 76000 01 29 76 05 01.0 76000 01 29 76 08 02.0 76000 01 30 76 05 01.0 76000 02 02 76 01 03.0 76000 02 02 76 08 02.0 76000 02 03 76 08 02.0 76000 02 05 76 01 08.0 76000 02 05 76 05 08.0 76000 02 05 76 07 08.0 76000 02 06 76 01 08.0 76000 02 06 76 05 08.0 76000 02 06 76 07 08.0 76000 02 07 76 01 08.0 76000 02 07 76 05 08.0 76000 02 09 76 07 08.0 76000 02 10 76 08 02.0 76000 02 11 76 08 05.0 76000 02 12 76 05 02.0 76000 02 12 76 08 04.0 76000 02 12 76 08 01.0 76000 02 12 76 09 08.0 76000 02 13 76 05 02.5 76000 02 13 76 09 08.0 76000 02 16 76 08 08.0 76000 02 16 76 09 07.5 76000 02 17 76 05 01.0 76000 02 17 76 08 04.0 76000 02 17 76 09 08.0 76000 02 18 76 05 01.0 76000 02 18 76 08 02.0 76000 02 18 76 09 08.0 76000 02 19 76 05 02.0 76000 02 19 76 07 02.0 76000 02 19 76 08 04.0 76000 02 19 76 08 04.0 76000 02 19 76 09 08.0 76000 02 20 76 05 02.0 76000 02 20 76 07 02.5 76000 02 20 76 08 08.0 76000 02 20 76 09 08.0 76000 02 23 76 05 04.0 76000 02 23 76 07 01.5 76000 02 23 76 08 08.0 76000 02 23 76 09 07.7 76000 02 24 76 08 03.5 76000 02 24 76 09 08.0 76000 02 25 76 05 01.5 76000 02 25 76 08 05.0 76000 02 25 76 09 08.0 76000 02 26 76 05 00.5 76000 02 26 76 07 08.0 76000 02 26 76 08 08.0 76000 02 26 76 09 08.0 76000 02 27 76 05 01.0 76000 02 27 76 07 08.0 76000 02 27 76 08 08.0 76000 02 27 76 09 08.0 76000 03 01 76 05 00.5 76000 03 01 76 08 05.0 76000 03 01 76 09 08.0 76000 03 02 76 05 01.5 76000 03 02 76 07 02.5 76000 03 02 76 08 06.0 76000 03 02 76 09 08.0 76000 03 03 76 05 01.5 76000 03 03 76 08 02.0 76000 03 03 76 09 08.0 76000 03 05 76 05 02.0 76000 03 05 76 08 02.0 76000 03 05 76 09 08.0 76000 03 08 76 08 04.0 76000 03 08 76 09 08.0 76000 03 09 76 07 02.0 76000 03 09 76 08 01.0 76000 03 10 76 01 02.0 76000 03 10 76 08 01.0 76000 03 10 76 08 04.0 76000 03 10 76 09 04.0 76000 03 11 76 01 08.0 76000 03 11 76 05 02.0 76000 03 11 76 08 02.0 76000 03 11 76 09 04.0 76000 03 12 76 05 01.0 76000 03 12 76 07 02.0 76000 03 12 76 08 02.0 76000 03 16 76 07 08.0 76000 03 17 76 05 02.0 76000 03 17 76 07 08.0 76000 03 17 76 08 02.0 76000 03 18 76 05 02.0 76000 03 18 76 07 08.0 76000 03 18 76 08 02.0 76000 03 19 76 05 02.0 76000 03 19 76 07 08.0 76000 03 19 76 08 03.0 76000 03 19 76 08 05.0 76000 03 22 76 05 01.0 76000 03 22 76 07 02.0 76000 03 22 76 08 08.0 76000 03 23 76 01 03.0 76000 03 23 76 05 01.0 76000 03 23 76 08 06.5 76000 03 23 76 09 08.0 76000 03 24 76 05 00.5 76000 03 24 76 08 05.0 76000 03 24 76 09 04.5 76000 03 25 76 05 01.0 76000 03 25 76 09 06.0 76000 03 26 76 08 02.5 76000 03 26 76 09 05.0 76000 03 29 76 01 01.0 76000 03 29 76 05 02.0 76000 03 29 76 08 06.5 76000 03 29 76 09 07.0 76000 03 30 76 01 01.5 76000 03 30 76 05 01.0 76000 03 30 76 08 04.0 76000 03 30 76 09 06.5 76000 03 31 76 07 02.0 76000 03 31 76 08 02.0 76000 03 31 76 09 02.0 76000 04 01 76 05 01.0 76000 04 01 76 09 04.0 76000 04 02 76 09 01.0 76001 01 05 76 08 03.0 76002 01 07 76 08 02.0 76003 01 07 76 01 04.0 76003 01 07 76 08 02.0 76003 01 08 76 08 06.5 76003 01 30 76 01 05.0 76003 01 30 76 01 02.0 76003 01 30 76 01 02.0 76003 01 30 76 08 01.0 76003 02 02 76 01 02.0 76003 02 03 76 01 06.0 76003 02 04 76 01 02.0 76004 01 08 76 07 02.0 76004 01 10 76 07 04.0 76005 01 09 76 08 01.5 76005 01 10 76 03 05.5 76005 01 11 76 03 01.0 76005 01 12 76 05 05.5 76005 01 13 76 05 04.0 76006 01 16 76 05 02.7 76007 01 29 76 01 01.0 76008 01 29 76 08 06.0 76008 01 30 76 03 05.5 76008 01 30 76 08 06.0 76008 02 02 76 08 01.0 76008 02 02 76 08 06.0 76008 02 03 76 08 01.5 76008 02 03 76 08 06.0 76008 02 04 76 08 02.0 76008 02 04 76 08 08.0 76008 02 05 76 08 00.5 76008 02 05 76 08 08.0 76008 02 06 76 08 06.5 76008 02 09 76 08 08.0 76008 02 10 76 08 04.0 76008 02 11 76 08 01.0 76008 02 17 76 08 02.0 76008 02 18 76 08 06.0 76008 03 04 76 08 02.0 76008 03 05 76 08 06.0 76008 03 09 76 08 00.5 76008 03 10 76 08 01.0 76009 02 02 76 01 02.0 76009 02 16 76 05 01.5 76009 02 24 76 05 15.5 76009 02 25 76 05 01.5 76009 02 26 76 05 07.0 76009 02 27 76 05 01.5 76009 02 28 76 05 04.0 76009 03 01 76 05 05.5 76009 03 02 76 05 01.5 76010 02 10 76 08 02.0 76010 02 11 76 08 02.0 76010 02 12 76 08 07.0 76010 02 13 76 08 04.0 76010 02 17 76 08 02.0 76010 02 24 76 08 04.5 76010 02 25 76 08 03.0 76010 03 01 76 08 01.0 76010 03 18 76 08 03.0 76011 02 09 76 05 01.5 76011 02 10 76 05 03.5 76011 02 12 76 05 01.0 76011 02 12 76 05 07.0 76011 02 13 76 05 05.5 76011 02 16 76 05 07.0 76011 02 17 76 05 04.0 76011 02 18 76 05 02.5 76011 02 19 76 05 05.5 76011 02 20 76 05 04.0 76011 02 23 76 05 04.5 76011 02 24 76 05 02.0 76011 03 03 76 05 02.5 76011 03 05 76 05 02.0 76011 03 06 76 05 01.0 76011 03 12 76 05 02.0 76011 03 16 76 05 03.5 76011 03 17 76 05 02.5 76011 03 18 76 05 03.0 76011 03 19 76 05 02.0 76011 03 22 76 05 05.0 76011 03 22 76 05 02.0 76011 03 23 76 05 07.0 76011 03 24 76 05 03.0 76011 03 25 76 05 01.0 76011 03 26 76 05 01.5 76012 02 19 76 07 04.0 76012 03 05 76 07 06.0 76012 03 11 76 07 01.0 76012 03 12 76 07 06.0 76012 03 17 76 05 01.0 76012 03 18 76 05 02.0 76014 03 01 76 08 02.0 76014 03 02 76 01 05.0 76014 03 02 76 08 02.0 76014 03 03 76 01 05.0 76014 03 03 76 08 06.0 76014 03 04 76 08 06.0 76014 03 06 76 03 00.5 76014 03 08 76 07 06.0 76014 03 08 76 08 04.0 76014 03 09 76 07 01.0 76014 03 09 76 07 02.0 76014 03 09 76 07 02.0 76014 03 09 76 08 05.0 76014 03 10 76 07 06.0 76014 03 10 76 08 02.0 76014 03 11 76 07 07.0 76014 03 11 76 08 02.0 76014 03 15 76 08 08.0 76014 03 16 76 08 08.0 76014 03 17 76 05 02.5 76014 03 17 76 08 06.0 76014 03 18 76 08 03.0 76014 03 30 76 01 02.5 76014 03 30 76 08 04.0 76014 03 31 76 08 06.0 76014 04 01 76 01 02.0 76014 04 01 76 08 01.0 76015 03 03 76 07 03.0 76015 03 04 76 07 02.0 76016 03 09 76 07 02.0 76016 03 09 76 08 01.5 76016 03 11 76 08 02.0 76017 04 02 76 01 01.0 76018 03 11 76 08 02.0 76018 03 12 76 08 06.0 76018 03 24 76 08 03.0 76018 03 26 76 08 01.0 76019 03 24 76 01 01.0 76019 03 26 76 01 08.0 76019 03 30 76 01 04.0 76019 03 31 76 01 03.0 76019 03 31 76 05 04.0 76020 03 26 76 08 04.5 76020 03 29 76 08 01.5 76021 03 29 76 01 01.0 76022 03 05 76 03 05.0 76022 03 06 76 03 01.5 76023 04 01 76 01 01.0 76024 04 01 76 07 01.0 76024 04 01 76 08 05.0 76024 04 02 76 01 04.0 76024 04 02 76 08 01.0 76024 04 04 76 03 02.0 76024 04 04 76 03 02.5 76025 04 01 76 08 02.0 76025 04 02 76 01 02.0 76025 04 02 76 08 07.0 76025 04 03 76 03 01.0 76025 04 04 76 03 02.5 76500 01 23 76 05 01.5 76500 01 23 76 05 01.5 76500 01 28 76 05 03.5 76500 01 30 76 01 04.0 76500 01 31 76 05 04.0 76500 02 03 76 01 02.0 76500 02 04 76 01 04.0 76500 02 09 76 05 08.0 76500 02 10 76 01 12.0 76500 02 10 76 05 05.5 76500 02 11 76 01 12.0 76500 02 11 76 05 08.5 76500 02 12 76 01 12.0 76500 02 13 76 01 12.0 76500 02 16 76 05 00.5 76500 02 17 76 05 04.0 76500 02 18 76 05 03.0 76500 02 20 76 05 02.0 76500 02 27 76 05 01.0 76500 03 01 76 05 02.0 76500 03 03 76 05 04.0 76500 03 04 76 05 09.0 76500 03 04 76 07 01.0 76500 03 05 76 03 04.0 76500 03 05 76 05 05.0 76500 03 06 76 03 01.5 76500 03 10 76 05 03.0 76500 03 13 76 05 03.0 76500 03 15 76 05 06.0 76500 03 24 76 01 06.0 76500 03 26 76 05 02.0 76500 03 29 76 01 02.0 76500 03 31 76 01 02.0 76500 04 03 76 01 10.0 76501 02 01 76 05 01.0 76501 02 02 76 05 03.0 76501 02 04 76 05 07.5 76501 03 11 76 05 05.0 76501 03 12 76 05 05.0 76514 01 20 76 05 02.0 76514 01 20 76 05 02.0 76514 03 24 76 05 01.5 76514 03 25 76 05 01.0 76514 03 30 76 05 01.0 76601 01 31 76 01 06.0 76601 02 02 76 01 03.0 76601 03 16 76 05 04.5 76601 03 17 76 05 01.0 76601 03 19 76 05 02.5 75061 01 01 75 04 04 76 TOTAL HOURS= 36.5 JOB NO.75062 NCG NABORS CAMP MISC. GENERATION -TOTEM- 75062 01 01 75 04 04 76 TOTAL HOURS= 2.0 JOB NO.75063 PAUA U OF A PERFORMING ARTS -U OF A- 75063 01 01 75 04 04 76 TOTAL HOURS=116.5 JOB NO.75064 ASB ALASKA STATE BANK -HUETTL- 75064 01 01 75 04 04 76 TOTAL HOURS= 33.0 JOB NO.75065 SGBA STANDBY GENERATOR FOR BETHEL APTS. -CLARK- 75065 01 01 75 04 04 76 TOTAL HOURS= 71.0 JOB NO.75066 GXHL GRATRIX HEAT LOSS -GRATRIX- 75066 01 01 75 04 04 76 TOTAL HOURS= 5.5 JOB NO.75067 BNCTE BETHEL NATIVE CORP. TOTAL ENERGY -BNC- 75067 01 01 75 04 04 76 TOTAL HOURS= 17.5 JOB NO.75068 BIES BARTER ISLAND ELECTRIC SYSTEM -ACI- 75068 01 01 75 04 04 76 TOTAL HOURS= 22.0 JOB NO.75500 GC75 GENERAL COMPUTER 75500 01 01 75 04 04 76 TOTAL HOURS=297.5 JOB NO.75501 CR75 COMPUTER REPAIR 75501 01 01 75 04 04 76 TOTAL HOURS= 14.0 JOB NO.75502 75502 01 01 75 04 04 76 TOTAL HOURS= 14.0 JOB NO.75504 BK BOOKKEEPING 75504 01 01 75 04 04 76 TOTAL HOURS= 72.0 JOB NO.75505 RCAQ RCA QUOTE 75505 01 01 75 04 04 76 TOTAL HOURS= 10.0 JOB NO.75506 DD DIGITIZER DESIGN 75506 01 01 75 04 04 76 TOTAL HOURS= 60.0 JOB NO.75507 DDET DIGITIZER DESIGN ENCODER TYPE 75507 01 01 75 04 04 76 TOTAL HOURS=215.1 JOB NO.75508 CPM CPM 75508 01 01 75 04 04 76 TOTAL HOURS= 4.7 JOB NO.75509 COGO COGO 75509 01 01 75 04 04 76 TOTAL HOURS= 7.0 JOB NO.75512 GRAED GRAPHIC EDITOR 75512 01 01 75 04 04 76 TOTAL HOURS= 8.0 JOB NO.75513 ATMS ATU MINI SYSTEM 75513 01 01 75 04 04 76 TOTAL HOURS= 3.0 JOB NO.75514 WP WORD PROCESSOR 75514 01 01 75 04 04 76 TOTAL HOURS= 41.3 JOB NO.76000 OVH GENERAL OVERHEAD 1976 76000 01 01 75 04 04 76 TOTAL HOURS=700.0 JOB NO.76001 PASS U OF A SPRINKLERS PERFORMING ARTS 76001 01 01 75 04 04 76 TOTAL HOURS= 3.0 JOB NO.76002 PDC PARKER DRILLING CAMP -TOTEM ELECTRIC- 76002 01 01 75 04 04 76 TOTAL HOURS= 2.0 JOB NO.76003 NSTP NANA SEWAGE TREATMENT PLANT -SID CLARK- 76003 01 01 75 04 04 76 TOTAL HOURS= 32.5 JOB NO.76004 LMT LANDMARK TOWERS -JIM CLARK- 76004 01 01 75 04 04 76 TOTAL HOURS= 6.0 JOB NO.76005 MWH MC KENZIE APARTMENTS -JOHN MCKENZIE- 76005 01 01 75 04 04 76 TOTAL HOURS= 17.5 JOB NO.76006 OBE FALCONER BLDG. ELECTRICAL HEAT ADDITION -JAN HANSEN- 76006 01 01 75 04 04 76 TOTAL HOURS= 2.7 JOB NO.76007 DLLVA DE LONG LAKE VILLA -JOE KELLY- 76007 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.76008 MIM MUSH INN MOTEL -LANE KNORR PLUNKETT- 76008 01 01 75 04 04 76 TOTAL HOURS= 87.5 JOB NO.76009 PS PROCTOR'S SUPERMARKET -ORVILLE PROCTOR- 76009 01 01 75 04 04 76 TOTAL HOURS= 40.0 JOB NO.76010 VLS VALUE LIQUOR STORE -LANE KNORR PLUNKETT 76010 01 01 75 04 04 76 TOTAL HOURS= 28.5 JOB NO.76011 PPAS PALMER PHASE II - ANCH SAND -AS & G 76011 01 01 75 04 04 76 TOTAL HOURS= 86.0 JOB NO.76012 PAPER PAY & PAK ELECTRICAL REVISION -LAMPLIGHTERS 76012 01 01 75 04 04 76 TOTAL HOURS= 20.0 JOB NO.76014 WS WAINWRIGHT SCHOOL -TOM LUNSFORD 76014 01 01 75 04 04 76 TOTAL HOURS=106.5 JOB NO.76015 LOLA LIGHTING OF LUNSFORD'S ACTIVITIES -TOM LUNSFORD 76015 01 01 75 04 04 76 TOTAL HOURS= 5.0 JOB NO.76016 TSC TIMOTHY SUBDIVISION CONDIMINIUMS -TOM LUNSFORD 76016 01 01 75 04 04 76 TOTAL HOURS= 5.5 JOB NO.76017 GFBC GREATER FRIENDSHIP BAPTIST CHURCH -SHEPHARD & ASSOC 76017 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.76018 APG ANCHORAGE PARKING GARAGE -LANE KNORR & PLUNKETT 76018 01 01 75 04 04 76 TOTAL HOURS= 12.0 JOB NO.76019 AWT ANIAK WIEN TERMINAL -SHEPHARD & ASSOC 76019 01 01 75 04 04 76 TOTAL HOURS= 20.0 JOB NO.76020 AVCPH AVCP HOUSING -LANE KNORR & PLUNKETT 76020 01 01 75 04 04 76 TOTAL HOURS= 6.0 JOB NO.76021 DCW WAREHOUSE FOR DELCO CORP. -BILL JUILANO- 76021 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.76022 BRC BUDGET RENT A CAR -LAMPLIGHTERS- 76022 01 01 75 04 04 76 TOTAL HOURS= 6.5 JOB NO.76023 BIP BI CENTENNIAL PARK -ALLEY GROUP- 76023 01 01 75 04 04 76 TOTAL HOURS= 1.0 JOB NO.76024 HEA HEAGY APATMENTS 75 UNITS -TOM HAEG- 76024 01 01 75 04 04 76 TOTAL HOURS= 15.5 JOB NO.76025 GOBM GITTINS OFFICE BLDG. MECHANICAL -TOM GITTINS- 76025 01 01 75 04 04 76 TOTAL HOURS= 14.5 JOB NO.76500 GC76 GENERAL COMPUTER 76500 01 01 75 04 04 76 TOTAL HOURS=161.5 JOB NO.76501 NO JOB NO. IN MASTER FILE JOBS 76501 01 01 75 04 04 76 TOTAL HOURS= 21.5 JOB NO.76514 NO JOB NO. IN MASTER FILE JOBS 76514 01 01 75 04 04 76 TOTAL HOURS= 7.5 JOB NO.76601 CR76 COMPUTER REPAIR 76601 01 01 75 04 04 76 TOTAL HOURS= 17.0 MEACC040({ 4 05 75 05 05.5 75042 11 05 75 07 02.0 75042 11 06 75 01 04.0 75042 11 06 75 05 07.0 75042 11 07 75 05 07.0 75042 11 07 75 07 01.0 75042 11 10 75 05 08.0 75042 11 11 75 05 03.0 75042 11 11 75 06 03.0 75042 11 13 75 05 01.0 75042 11 17 75 05 01.0 75042 11 19 75 05 01.0 75043 07 30 75 01 02.0 75043 07 30 75 05 02.0 75043 07 31 75 04 02.0 75043 07 31 75 05 07.5 75043 08 01 75 01 01.0 75043 08 01 75 04 02.5 75043 08 01 75 05 06.5 75043 09 05 75 05 02.5 75043 09 16 75 05 01.0 75044 08 05 75 01 01.0 75044 08 08 75 01 01.0 75044 08 08 75 03 02.0 75044 08 09 75 03 02.0 75044 08 22 75 01 02.0 75044 08 22 75 04 03.0 75044 08 23 75 04 07.2 75044 08 25 75 01 01.0 75044 08 25 75 04 02.0 75044 08 25 75 05 01.5 75044 08 26 75 01 02.0 75044 08 26 75 04 06.0 75044 08 26 75 05 01.5 75044 08 27 75 01 04.0 75044 08 27 75 04 02.5 75044 08 27 75 05 00.5 75044 09 16 75 05 01.0 75045 01 09 76 08 02.5 75045 01 22 76 08 04.0 75045 01 22 76 08 04.0 75045 08 18 75 03 03.5 75045 08 19 75 03 01.0 75045 08 22 75 03 01.0 75045 09 09 75 04 06.5 75045 09 10 75 04 07.5 75045 09 11 75 04 03.0 75045 09 15 75 04 01.0 75045 09 16 75 05 01.0 75045 09 25 75 05 00.5 75046 08 19 75 03 03.0 75046 08 22 75 03 03.5 75046 08 22 75 03 01.5 75046 08 22 75 04 01.0 75046 08 22 75 05 06.0 75046 08 23 75 04 01.3 75046 08 23 75 05 08.5 75046 08 25 75 01 02.0 75046 08 25 75 04 05.5 75046 08 25 75 05 06.0 75046 08 26 75 01 01.0 75046 08 26 75 04 02.5 75046 08 26 75 05 04.5 75046 08 27 75 01 04.0 75046 08 27 75 04 03.5 75046 08 27 75 05 05.5 75046 08 28 75 01 04.0 75046 08 28 75 04 02.0 75046 08 28 75 05 03.0 75046 08 29 75 04 03.0 75046 08 29 75 05 00.5 75046 09 17 75 05 03.5 75046 09 18 75 05 02.5 75047 03 31 76 01 02.0 75047 09 05 75 01 01.0 75047 09 13 75 04 04.0 75047 09 13 75 05 07.5 75047 09 15 75 04 08.5 75047 09 16 75 04 05.0 75047 09 18 75 04 01.0 75047 09 19 75 04 01.0 75047 09 20 75 01 02.0 75047 09 20 75 03 02.0 75047 09 20 75 04 00.5 75047 09 24 75 01 02.0 75047 10 02 75 04 02.0 75047 10 02 75 05 02.0 75047 10 03 75 04 03.0 75047 10 06 75 04 01.0 75047 10 10 75 05 00.4 75047 10 27 75 01 01.0 75047 11 14 75 01 01.0 75047 11 14 75 05 02.5 75047 11 17 75 07 01.0 75048 04 15 76 01 01.0 75048 04 15 76 05 01.0 75048 08 29 75 01 02.0 75048 08 30 75 03 04.0 75048 09 09 75 05 08.0 75048 09 10 75 04 01.0 75048 09 10 75 05 09.5 75048 09 11 75 04 04.0 75048 09 11 75 05 08.0 75048 09 12 75 04 09.0 75048 09 12 75 05 07.0 75048 09 15 75 05 01.0 75048 09 16 75 05 01.0 75048 10 01 75 05 01.0 75048 10 10 75 05 00.7 75048 10 27 75 05 03.0 75048 11 11 75 05 00.5 75048 11 12 75 05 01.0 75048 12 12 75 05 01.0 75049 01 05 76 07 06.0 75049 01 06 76 07 08.0 75049 01 06 76 08 02.0 75049 01 07 76 07 08.0 75049 01 07 76 08 02.0 75049 01 08 76 07 05.0 75049 01 08 76 08 01.5 75049 01 09 76 01 08.8 75049 01 09 76 03 09.5 75049 01 09 76 07 09.0 75049 01 10 76 01 08.0 75049 01 10 76 03 03.5 75049 01 10 76 07 04.0 75049 01 12 76 03 02.5 75049 01 12 76 07 09.0 75049 01 13 76 07 10.0 75049 01 14 76 05 02.0 75049 01 14 76 07 08.5 75049 01 15 76 07 02.5 75049 01 16 76 01 09.0 75049 01 16 76 01 09.0 75049 01 16 76 03 09.0 75049 01 16 76 05 03.5 75049 01 16 76 07 07.0 75049 01 17 76 01 08.0 75049 01 17 76 01 08.0 75049 01 17 76 03 08.0 75049 01 17 76 03 08.0 75049 01 17 76 03 08.0 75049 01 17 76 05 05.3 75049 01 17 76 05 05.3 75049 01 17 76 05 05.3 75049 01 17 76 07 06.5 75049 01 17 76 07 06.5 75049 01 17 76 07 06.5 75049 01 18 76 01 06.0 75049 01 19 76 05 05.5 75049 01 19 76 05 05.5 75049 01 19 76 07 01.5 75049 01 19 76 07 06.5 75049 01 19 76 07 01.5 75049 01 19 76 07 01.5 75049 01 19 76 07 06.5 75049 01 19 76 07 01.5 75049 01 20 76 01 02.0 75049 01 20 76 03 03.5 75049 01 20 76 03 03.5 75049 01 20 76 05 03.5 75049 01 20 76 05 03.5 75049 01 20 76 07 01.0 75049 01 20 76 07 08.0 75049 01 20 76 07 01.0 75049 01 20 76 07 08.0 75049 01 21 76 01 01.0 75049 01 21 76 05 06.0 75049 01 21 76 05 06.0 75049 01 21 76 07 08.0 75049 01 21 76 07 08.0 75049 01 22 76 01 03.0 75049 01 22 76 03 03.0 75049 01 22 76 03 03.0 75049 01 22 76 07 07.0 75049 01 22 76 07 07.0 75049 01 23 76 03 08.5 75049 01 23 76 03 08.5 75049 01 23 76 07 08.0 75049 01 23 76 07 08.0 75049 01 24 76 03 04.5 75049 01 24 76 03 04.5 75049 01 26 76 01 06.0 75049 01 26 76 07 08.0 75049 01 27 76 01 04.0 75049 01 27 76 07 08.0 75049 01 28 76 07 08.0 75049 01 29 76 07 02.0 75049 01 29 76 07 08.0 75049 01 30 76 03 06.5 75049 01 30 76 07 01.5 75049 01 30 76 07 08.0 75049 01 31 76 03 12.0 75049 01 31 76 07 08.0 75049 02 01 76 07 03.0 75049 02 02 76 05 06.0 75049 02 02 76 07 01.0 75049 02 02 76 07 08.0 75049 02 03 76 05 04.0 75049 02 03 76 07 06.0 75049 02 03 76 07 02.0 75049 02 04 76 05 04.0 75049 02 04 76 07 01.5 75049 02 04 76 07 04.0 75049 02 06 76 08 01.5 75049 02 10 76 07 05.0 75049 02 10 76 07 03.0 75049 02 11 76 07 08.0 75049 02 12 76 07 05.0 75049 02 13 76 07 01.0 75049 02 13 76 07 08.0 75049 02 16 76 07 08.0 75049 02 17 76 07 01.0 75049 02 17 76 07 06.0 75049 02 17 76 07 02.0 75049 02 18 76 05 02.0 75049 02 18 76 07 00.5 75049 02 18 76 07 05.0 75049 02 18 76 07 02.5 75049 02 19 76 07 02.0 75049 02 20 76 07 03.5 75049 02 24 76 07 01.5 75049 02 25 76 07 07.0 75049 03 01 76 01 04.0 75049 03 01 76 07 05.0 75049 03 02 76 07 05.0 75049 03 03 76 07 05.0 75049 03 04 76 07 01.0 75049 03 04 76 07 03.0 75049 03 09 76 07 05.0 75049 03 29 76 07 04.0 75049 04 02 76 03 06.0 75049 04 02 76 07 01.0 75049 04 03 76 03 08.5 75049 04 04 76 03 00.5 75049 04 05 76 07 01.0 75049 09 22 75 04 01.5 75049 09 25 75 01 02.0 75049 09 27 75 03 07.0 75049 09 30 75 01 08.0 75049 10 01 75 04 03.0 75049 10 02 75 04 06.0 75049 10 03 75 01 08.0 75049 10 03 75 04 02.0 75049 10 04 75 03 04.5 75049 10 04 75 04 01.0 75049 10 06 75 04 01.0 75049 10 07 75 01 04.0 75049 10 08 75 01 01.0 75049 10 08 75 04 06.5 75049 10 08 75 05 00.3 75049 10 09 75 01 08.0 75049 10 09 75 04 08.0 75049 10 10 75 01 06.0 75049 10 10 75 04 08.0 75049 10 10 75 05 02.0 75049 10 11 75 04 03.0 75049 10 13 75 01 04.5 75049 10 13 75 04 02.0 75049 10 16 75 05 00.5 75049 10 17 75 05 02.5 75049 10 20 75 04 01.5 75049 10 21 75 01 06.0 75049 10 21 75 04 01.0 75049 10 21 75 05 00.4 75049 10 22 75 01 06.0 75049 10 28 75 01 08.0 75049 10 29 75 04 01.0 75049 10 29 75 05 03.0 75049 10 29 75 06 01.0 75049 10 30 75 01 03.0 75049 10 30 75 04 04.0 75049 10 30 75 05 03.8 75049 10 30 75 06 08.0 75049 10 31 75 04 04.0 75049 10 31 75 05 02.0 75049 10 31 75 06 04.0 75049 11 03 75 06 02.0 75049 11 11 75 01 02.0 75049 11 11 75 05 01.2 75049 11 14 75 05 00.3 75049 11 17 75 07 02.5 75049 11 21 75 05 00.5 75049 11 28 75 03 09.0 75049 11 29 75 03 01.0 75049 12 01 75 07 02.0 75049 12 02 75 01 02.0 75049 12 05 75 03 08.0 75049 12 05 75 07 02.0 75049 12 08 75 01 05.0 75049 12 09 75 01 03.0 75049 12 10 75 01 08.0 75049 12 11 75 07 03.0 75049 12 12 75 01 04.0 75049 12 16 75 01 10.0 75049 12 17 75 01 10.0 75049 12 17 75 07 06.0 75049 12 18 75 01 04.0 75049 12 18 75 07 06.0 75049 12 19 75 07 09.0 75049 12 22 75 01 08.0 75049 12 22 75 07 07.0 75049 12 23 75 01 04.0 75049 12 23 75 07 05.5 75049 12 24 75 07 03.0 75049 12 29 75 01 08.0 75049 12 29 75 07 06.0 75049 12 30 75 07 07.5 75049 12 31 75 07 03.5 75050 01 09 76 05 01.0 75050 02 04 76 07 02.5 75050 10 06 75 01 04.0 75050 10 06 75 05 06.2 75050 10 06 75 05 01.0 75050 10 07 75 05 00.5 75050 10 11 75 05 00.7 75050 10 13 75 05 01.5 75050 10 17 75 05 01.6 75050 10 20 75 05 02.0 75050 10 21 75 05 00.4 75050 10 22 75 05 01.5 75050 10 28 75 05 01.0 75050 10 28 75 06 01.0 75050 10 29 75 05 05.0 75050 10 29 75 06 03.0 75050 10 30 75 05 04.5 75050 10 31 75 01 04.0 75050 10 31 75 05 00.7 75050 11 03 75 05 01.0 75050 11 04 75 05 03.0 75050 11 04 75 07 04.0 75050 11 05 75 05 03.0 75050 11 05 75 07 06.0 75050 11 06 75 05 01.5 75050 11 06 75 07 01.0 75050 11 14 75 01 01.0 75050 11 14 75 05 01.5 75050 11 15 75 01 03.0 75050 11 17 75 05 01.5 75050 11 18 75 05 02.0 75050 11 19 75 05 05.5 75050 11 19 75 07 02.0 75050 11 20 75 05 04.0 75050 11 20 75 07 01.0 75050 11 21 75 05 07.0 75050 11 21 75 07 02.0 75050 11 24 75 01 02.0 75050 11 24 75 05 06.0 75050 11 25 75 01 03.0 75050 11 25 75 05 08.5 75050 11 26 75 05 07.7 75050 11 28 75 05 09.0 75050 12 01 75 05 05.5 75050 12 01 75 07 01.0 75050 12 02 75 05 02.5 75050 12 02 75 07 02.0 75050 12 03 75 01 03.0 75050 12 03 75 05 02.0 75050 12 04 75 01 02.0 75050 12 04 75 05 01.5 75050 12 05 75 05 03.5 75050 12 05 75 07 01.0 75050 12 10 75 05 02.0 75050 12 11 75 05 07.5 75050 12 12 75 05 02.0 75050 12 15 75 05 01.5 75050 12 17 75 05 08.5 75050 12 18 75 05 08.3 75051 01 23 76 05 04.5 75051 01 23 76 05 04.5 75051 01 24 76 03 02.5 75051 01 24 76 03 02.5 75051 01 26 76 05 04.0 75051 01 28 76 05 00.6 75051 02 04 76 05 02.0 75051 02 23 76 05 01.5 75051 02 26 76 05 03.0 75051 02 27 76 05 05.5 75051 03 01 76 05 01.0 75051 03 02 76 05 05.5 75051 03 03 76 05 01.5 75051 03 10 76 01 01.0 75051 03 18 76 05 02.0 75051 03 24 76 05 05.5 75051 03 25 76 05 01.0 75051 03 26 76 05 02.5 75051 03 29 76 05 03.5 75051 04 06 76 05 00.5 75051 04 12 76 05 06.0 75051 04 13 76 05 03.0 75051 04 14 76 05 01.0 75051 04 15 76 05 06.5 75051 04 16 76 05 03.5 75051 10 06 75 01 04.0 75051 10 07 75 05 04.8 75051 10 11 75 05 02.0 75051 10 11 75 05 04.0 75051 10 13 75 05 02.0 75051 10 27 75 05 00.3 75051 10 28 75 05 01.5 75051 10 28 75 06 05.0 75051 10 29 75 06 04.0 75051 12 01 75 05 02.0 75051 12 02 75 05 02.8 75051 12 03 75 05 04.5 75051 12 08 75 01 02.0 75051 12 08 75 05 06.3 75051 12 09 75 01 02.0 75051 12 09 75 05 03.0 75051 12 10 75 05 04.5 75051 12 11 75 05 02.0 75051 12 12 75 05 03.0 75051 12 15 75 05 02.0 75052 01 30 76 01 01.0 75052 02 12 76 07 03.0 75052 02 20 76 07 02.0 75052 02 23 76 07 01.5 75052 02 23 76 09 00.3 75052 03 01 76 07 01.0 75052 03 02 76 07 00.5 75052 03 03 76 07 01.0 75052 03 04 76 07 01.0 75052 03 05 76 07 03.0 75052 03 06 76 03 01.5 75052 03 07 76 07 04.0 75052 03 08 76 07 03.0 75052 03 10 76 07 01.0 75052 03 22 76 07 05.5 75052 03 22 76 07 01.5 75052 03 23 76 07 07.0 75052 03 23 76 08 01.5 75052 03 24 76 07 04.5 75052 03 25 76 05 04.5 75052 03 25 76 07 09.0 75052 03 26 76 05 02.5 75052 03 26 76 07 09.0 75052 03 28 76 07 02.0 75052 03 28 76 07 01.0 75052 03 29 76 07 03.0 75052 03 31 76 07 01.0 75052 04 07 76 01 02.0 75052 04 07 76 07 08.0 75052 04 08 76 07 05.0 75052 04 09 76 05 00.5 75052 04 09 76 07 05.0 75052 04 11 76 03 05.0 75052 04 12 76 07 08.5 75052 04 13 76 07 09.0 75052 04 14 76 07 09.0 75052 04 15 76 07 08.0 75052 04 16 76 07 06.5 75052 04 17 76 01 07.0 75052 09 24 75 01 02.0 75052 09 29 75 01 04.0 75052 09 29 75 05 00.5 75052 10 02 75 01 08.0 75052 10 14 75 01 03.0 75052 12 09 75 01 03.0 75053 09 25 75 05 04.0 75053 09 26 75 01 01.0 75053 09 26 75 05 04.0 75053 09 29 75 05 03.0 75053 09 30 75 05 01.2 75054 09 26 75 01 01.0 75054 09 26 75 05 04.5 75054 09 29 75 04 01.5 75054 09 29 75 05 03.0 75054 09 30 75 04 02.5 75054 09 30 75 05 05.0 75054 10 01 75 05 00.5 75054 10 11 75 05 00.3 75054 11 11 75 05 02.0 75054 11 12 75 01 02.0 75054 11 12 75 05 02.0 75054 11 13 75 05 00.6 75054 11 26 75 05 00.3 75055 10 10 75 03 04.5 75055 10 10 75 03 03.0 75055 10 11 75 03 04.0 75055 10 11 75 03 03.5 75055 10 13 75 05 03.0 75055 10 14 75 04 01.5 75055 10 14 75 05 05.5 75055 10 15 75 05 05.0 75055 10 20 75 05 04.0 75055 10 21 75 05 00.4 75055 10 21 75 05 05.0 75055 10 22 75 01 02.0 75055 10 22 75 05 03.1 75055 10 23 75 05 01.1 75056 01 06 76 05 01.0 75056 01 07 76 05 04.0 75056 01 08 76 05 03.0 75056 01 12 76 05 02.5 75056 01 14 76 05 01.0 75056 10 23 75 04 05.0 75056 10 23 75 05 05.0 75056 10 31 75 05 01.0 75056 11 11 75 05 02.5 75056 11 11 75 07 01.0 75056 11 12 75 05 05.0 75056 11 13 75 05 04.0 75056 11 13 75 07 01.0 75056 11 14 75 05 05.0 75056 11 14 75 07 01.5 75056 11 17 75 05 04.5 75056 11 17 75 07 01.0 75056 11 24 75 07 01.0 75056 12 18 75 01 04.0 75057 01 06 76 05 03.5 75057 01 06 76 08 00.5 75057 01 08 76 05 00.5 75057 10 10 75 05 05.0 75057 10 13 75 05 00.5 75057 11 18 75 05 01.0 75057 12 05 75 05 00.5 75058 10 14 75 04 02.0 75058 10 14 75 05 02.0 75058 10 15 75 04 00.5 75058 10 15 75 05 03.0 75058 10 24 75 04 01.0 75058 10 24 75 05 05.7 75058 10 25 75 04 01.5 75058 10 25 75 05 05.3 75058 10 27 75 01 01.0 75058 10 27 75 05 04.4 75058 10 27 75 06 02.0 75058 10 28 75 05 01.0 75058 10 28 75 06 02.0 75059 10 14 75 01 03.5 75059 10 16 75 01 02.0 75060 10 16 75 05 01.8 75060 10 17 75 01 01.0 75060 10 17 75 05 01.5 75060 10 20 75 01 02.0 75060 10 20 75 05 02.5 75060 10 21 75 05 00.4 75061 04 13 76 01 02.0 75061 04 14 76 05 04.5 75061 10 23 75 01 04.0 75061 10 24 75 01 05.0 75061 10 24 75 04 05.0 75061 10 24 75 05 02.2 75061 10 24 75 06 04.5 75061 10 25 75 04 07.5 75061 10 27 75 04 04.0 75061 10 27 75 05 01.3 75061 10 27 75 06 02.0 75061 10 77 75 01 01.0 75062 10 28 75 01 01.0 75062 10 29 75 01 01.0 75063 01 05 76 01 01.0 75063 01 05 76 07 01.5 75063 11 12 75 01 02.0 75063 11 12 75 07 02.0 75063 11 13 75 01 03.0 75063 11 13 75 07 05.0 75063 11 14 75 01 02.0 75063 11 14 75 07 01.5 75063 11 19 75 07 02.5 75063 11 20 75 07 04.5 75063 11 24 75 01 03.0 75063 11 24 75 07 02.5 75063 11 26 75 07 03.0 75063 11 28 75 07 04.0 75063 11 29 75 03 02.0 75063 11 29 75 03 04.0 75063 12 01 75 07 03.0 75063 12 02 75 01 02.0 75063 12 02 75 07 06.0 75063 12 03 75 07 06.0 75063 12 04 75 01 01.0 75063 12 04 75 07 04.5 75063 12 05 75 07 05.0 75063 12 08 75 01 01.0 75063 12 08 75 07 09.0 75063 12 09 75 07 08.0 75063 12 10 75 07 08.0 75063 12 11 75 01 03.0 75063 12 11 75 07 06.0 75063 12 12 75 01 01.0 75063 12 12 75 07 08.0 75063 12 29 75 07 01.5 75064 04 07 76 07 01.0 75064 10 31 75 01 04.0 75064 10 31 75 04 02.0 75064 10 31 75 05 01.5 75064 10 31 75 06 04.0 75064 11 03 75 01 04.0 75064 11 03 75 06 01.0 75064 11 03 75 07 08.5 75064 11 04 75 01 04.0 75064 11 04 75 06 02.0 75064 11 04 75 07 02.0 75065 03 08 76 01 03.0 75065 11 10 75 07 01.0 75065 11 11 75 07 03.0 75065 11 12 75 07 03.0 75065 11 13 75 07 02.0 75065 11 14 75 07 05.0 75065 11 24 75 07 05.5 75065 11 25 75 07 08.0 75065 11 26 75 07 05.0 75065 12 02 75 01 06.0 75065 12 03 75 07 02.0 75065 12 04 75 01 08.0 75065 12 04 75 07 03.5 75065 12 05 75 01 12.0 75065 12 06 75 01 04.0 75066 11 11 75 01 04.5 75066 11 13 75 01 01.0 75067 01 02 76 08 03.0 75067 01 05 76 08 03.0 75067 01 12 76 08 01.0 75067 01 19 76 08 04.0 75067 01 19 76 08 04.0 75067 01 27 76 01 02.0 75067 03 24 76 07 00.5 75068 12 14 75 01 14.0 75068 12 15 75 07 08.0 75500 07 22 75 05 08.0 75500 07 23 75 05 06.5 75500 07 24 75 05 07.5 75500 07 25 75 05 08.0 75500 07 28 75 05 08.5 75500 07 29 75 05 07.0 75500 07 30 75 01 02.0 75500 08 01 75 05 01.0 75500 08 04 75 05 01.0 75500 08 05 75 01 01.0 75500 08 05 75 05 04.0 75500 08 06 75 01 03.0 75500 08 11 75 05 02.0 75500 08 12 75 05 05.0 75500 08 16 75 05 01.5 75500 08 22 75 01 04.0 75500 08 28 75 01 04.0 75500 08 29 75 05 03.0 75500 08 30 75 01 08.0 75500 09 01 75 01 08.0 75500 09 02 75 01 08.0 75500 09 03 75 01 08.0 75500 09 04 75 01 04.0 75500 09 05 75 01 07.0 75500 09 05 75 05 00.5 75500 09 08 75 01 04.0 75500 09 09 75 01 08.0 75500 09 10 75 01 08.0 75500 09 11 75 01 08.0 75500 09 11 75 05 02.0 75500 09 12 75 01 08.0 75500 09 12 75 05 02.5 75500 09 15 75 01 09.0 75500 09 15 75 05 08.5 75500 09 16 75 01 09.0 75500 09 16 75 05 03.5 75500 09 17 75 01 09.0 75500 09 17 75 05 06.0 75500 09 18 75 01 09.0 75500 09 18 75 05 06.5 75500 09 19 75 05 06.5 75500 09 24 75 05 03.5 75500 09 25 75 01 06.0 75500 09 26 75 01 02.0 75500 09 29 75 01 04.0 75500 10 01 75 01 08.0 75500 10 01 75 05 01.0 75500 10 02 75 05 01.5 75500 10 02 75 05 01.1 75500 10 03 75 05 06.0 75500 10 06 75 05 00.3 75500 10 07 75 05 00.7 75500 10 08 75 01 04.0 75500 10 08 75 05 02.5 75500 10 10 75 05 00.4 75500 10 20 75 01 02.0 75500 11 03 75 05 07.0 75500 11 05 75 01 02.0 75500 11 19 75 01 08.0 75500 12 08 75 05 01.5 75500 12 09 75 05 04.0 75500 12 11 75 01 03.0 75500 12 12 75 05 01.0 75501 04 13 76 01 03.0 75501 07 27 75 01 02.0 75501 07 28 75 01 06.0 75501 11 10 75 01 02.0 75501 12 11 75 01 02.0 75501 12 12 75 01 02.0 75502 09 22 75 01 08.0 75502 09 23 75 01 06.0 75504 01 03 76 01 08.0 75504 01 20 76 01 04.0 75504 03 09 76 09 02.0 75504 03 09 76 09 06.0 75504 03 10 76 09 02.0 75504 03 11 76 09 04.0 75504 03 24 76 09 03.5 75504 03 25 76 09 02.0 75504 03 26 76 09 03.0 75504 03 29 76 09 01.0 75504 03 30 76 01 04.0 75504 03 30 76 09 01.5 75504 03 31 76 09 06.0 75504 04 01 76 09 04.0 75504 04 02 76 09 07.0 75504 04 05 76 01 03.0 75504 04 05 76 09 01.0 75504 04 06 76 01 02.0 75504 04 06 76 09 04.0 75504 04 08 76 09 02.0 75504 04 09 76 09 01.0 75504 04 12 76 09 01.0 75504 04 13 76 09 07.0 75504 04 14 76 09 02.0 75504 04 15 76 09 02.0 75504 04 16 76 09 03.0 75504 10 13 75 01 01.5 75504 11 05 75 01 02.0 75504 11 07 75 01 02.0 75504 11 07 75 01 06.0 75504 11 15 75 01 01.0 75504 12 13 75 05 01.5 75505 10 18 75 01 04.0 75505 10 23 75 01 03.0 75505 10 28 75 01 03.0 75506 11 01 75 01 06.0 75506 11 03 75 06 05.0 75506 11 04 75 06 05.0 75506 11 05 75 06 08.0 75506 11 06 75 06 07.0 75506 11 07 75 06 08.0 75506 11 10 75 06 04.0 75506 11 11 75 06 05.0 75506 11 21 75 01 08.0 75506 11 22 75 01 04.0 75507 01 06 76 05 01.0 75507 01 07 76 05 04.0 75507 01 08 76 05 03.5 75507 01 09 76 05 06.0 75507 01 22 76 05 05.0 75507 01 22 76 05 05.0 75507 01 23 76 05 01.5 75507 01 23 76 05 01.5 75507 01 27 76 01 04.0 75507 01 27 76 05 05.0 75507 01 28 76 05 01.6 75507 01 30 76 05 02.0 75507 01 31 76 01 03.0 75507 02 03 76 05 04.0 75507 02 16 76 01 08.0 75507 02 17 76 01 08.0 75507 02 18 76 01 08.0 75507 02 19 76 01 08.0 75507 02 20 76 01 08.0 75507 02 23 76 01 08.0 75507 02 24 76 01 08.0 75507 02 25 76 01 08.0 75507 02 26 76 01 08.0 75507 02 27 76 01 08.0 75507 03 01 76 01 08.0 75507 03 02 76 01 03.0 75507 03 03 76 01 03.0 75507 03 04 76 01 03.0 75507 03 05 76 01 06.0 75507 03 10 76 01 05.0 75507 11 17 75 01 08.0 75507 11 18 75 01 08.0 75507 11 20 75 01 08.0 75507 11 23 75 01 08.0 75507 11 25 75 01 03.0 75507 12 04 75 05 06.5 75507 12 05 75 05 03.0 75507 12 08 75 05 01.5 75507 12 15 75 05 03.5 75507 12 16 75 05 07.0 75507 12 17 75 05 03.5 75508 10 30 75 05 00.7 75508 12 15 75 01 04.0 75509 01 12 76 01 03.0 75509 01 13 76 01 04.0 75512 01 06 76 01 04.0 75512 01 08 76 01 02.0 75512 01 09 76 01 02.0 75513 12 03 75 01 03.0 75514 01 03 75 01 06.0 75514 01 09 76 05 02.0 75514 01 11 76 01 04.0 75514 01 13 76 05 03.5 75514 01 14 76 05 04.5 75514 01 15 76 05 07.0 75514 01 16 76 05 01.3 75514 01 29 76 05 05.0 75514 01 30 76 05 05.0 75514 04 01 76 05 03.0 75514 04 10 76 05 06.0 75514 04 12 76 05 02.7 75514 04 13 76 05 01.5 75514 04 17 76 05 03.0 75540 04 07 76 09 01.0 76000 01 05 76 01 06.0 76000 01 05 76 07 01.5 76000 01 05 76 08 02.0 76000 01 06 76 07 01.0 76000 01 06 76 08 05.5 76000 01 07 76 07 01.0 76000 01 07 76 08 02.0 76000 01 08 76 01 06.0 76000 01 08 76 05 01.0 76000 01 08 76 07 00.5 76000 01 09 76 08 02.5 76000 01 12 76 01 05.0 76000 01 12 76 05 00.5 76000 01 12 76 08 01.0 76000 01 12 76 08 01.0 76000 01 13 76 05 01.0 76000 01 13 76 08 02.0 76000 01 14 76 05 00.5 76000 01 14 76 07 00.5 76000 01 14 76 08 08.0 76000 01 15 76 08 05.0 76000 01 19 76 05 01.5 76000 01 19 76 05 01.5 76000 01 19 76 08 04.0 76000 01 19 76 08 04.0 76000 01 20 76 05 03.5 76000 01 20 76 05 03.5 76000 01 20 76 08 08.0 76000 01 20 76 08 08.0 76000 01 21 76 05 02.0 76000 01 21 76 05 02.0 76000 01 21 76 08 06.0 76000 01 21 76 08 06.0 76000 01 22 76 05 01.0 76000 01 22 76 05 01.0 76000 01 22 76 07 01.0 76000 01 22 76 07 01.0 76000 01 22 76 08 04.0 76000 01 22 76 08 04.0 76000 01 23 76 05 00.5 76000 01 23 76 05 00.5 76000 01 23 76 08 01.0 76000 01 23 76 08 01.0 76000 01 26 76 05 01.5 76000 01 26 76 08 00.8 76000 01 27 76 01 03.0 76000 01 27 76 05 01.0 76000 01 27 76 05 01.5 76000 01 27 76 08 08.0 76000 01 28 76 01 08.0 76000 01 28 76 05 02.0 76000 01 28 76 08 08.0 76000 01 29 76 01 04.0 76000 01 29 76 01 02.0 76000 01 29 76 05 02.0 76000 01 29 76 05 01.0 76000 01 29 76 08 02.0 76000 01 30 76 05 01.0 76000 02 02 76 01 03.0 76000 02 02 76 08 02.0 76000 02 03 76 08 02.0 76000 02 05 76 01 08.0 76000 02 05 76 05 08.0 76000 02 05 76 07 08.0 76000 02 06 76 01 08.0 76000 02 06 76 05 08.0 76000 02 06 76 07 08.0 76000 02 07 76 01 08.0 76000 02 07 76 05 08.0 76000 02 09 76 07 08.0 76000 02 10 76 08 02.0 76000 02 11 76 08 05.0 76000 02 12 76 05 02.0 76000 02 12 76 08 04.0 76000 02 12 76 08 01.0 76000 02 12 76 09 08.0 76000 02 13 76 05 02.5 76000 02 13 76 09 08.0 76000 02 16 76 08 08.0 76000 02 16 76 09 07.5 76000 02 17 76 05 01.0 76000 02 17 76 08 04.0 76000 02 17 76 09 08.0 76000 02 18 76 05 01.0 76000 02 18 76 08 02.0 76000 02 18 76 09 08.0 76000 02 19 76 05 02.0 76000 02 19 76 07 02.0 76000 02 19 76 08 04.0 76000 02 19 76 08 04.0 76000 02 19 76 09 08.0 76000 02 20 76 05 02.0 76000 02 20 76 07 02.5 76000 02 20 76 08 08.0 76000 02 20 76 09 08.0 76000 02 23 76 05 04.0 76000 02 23 76 07 01.5 76000 02 23 76 08 08.0 76000 02 23 76 09 07.7 76000 02 24 76 08 03.5 76000 02 24 76 09 08.0 76000 02 25 76 05 01.5 76000 02 25 76 08 05.0 76000 02 25 76 09 08.0 76000 02 26 76 05 00.5 76000 02 26 76 07 08.0 76000 02 26 76 08 08.0 76000 02 26 76 09 08.0 76000 02 27 76 05 01.0 76000 02 27 76 07 08.0 76000 02 27 76 08 08.0 76000 02 27 76 09 08.0 76000 03 01 76 05 00.5 76000 03 01 76 08 05.0 76000 03 01 76 09 08.0 76000 03 02 76 05 01.5 76000 03 02 76 07 02.5 76000 03 02 76 08 06.0 76000 03 02 76 09 08.0 76000 03 03 76 05 01.5 76000 03 03 76 08 02.0 76000 03 03 76 09 08.0 76000 03 05 76 05 02.0 76000 03 05 76 08 02.0 76000 03 05 76 09 08.0 76000 03 08 76 08 04.0 76000 03 08 76 09 08.0 76000 03 09 76 07 02.0 76000 03 09 76 08 01.0 76000 03 10 76 01 02.0 76000 03 10 76 08 01.0 76000 03 10 76 08 04.0 76000 03 10 76 09 04.0 76000 03 11 76 01 08.0 76000 03 11 76 05 02.0 76000 03 11 76 08 02.0 76000 03 11 76 09 04.0 76000 03 12 76 05 01.0 76000 03 12 76 07 02.0 76000 03 12 76 08 02.0 76000 03 16 76 07 08.0 76000 03 17 76 05 02.0 76000 03 17 76 07 08.0 76000 03 17 76 08 02.0 76000 03 18 76 05 02.0 76000 03 18 76 07 08.0 76000 03 18 76 08 02.0 76000 03 19 76 05 02.0 76000 03 19 76 07 08.0 76000 03 19 76 08 03.0 76000 03 19 76 08 05.0 76000 03 22 76 05 01.0 76000 03 22 76 07 02.0 76000 03 22 76 08 08.0 76000 03 23 76 01 03.0 76000 03 23 76 05 01.0 76000 03 23 76 08 06.5 76000 03 23 76 09 08.0 76000 03 24 76 05 00.5 76000 03 24 76 08 05.0 76000 03 24 76 09 04.5 76000 03 25 76 05 01.0 76000 03 25 76 09 06.0 76000 03 26 76 08 02.5 76000 03 26 76 09 05.0 76000 03 29 76 01 01.0 76000 03 29 76 05 02.0 76000 03 29 76 08 06.5 76000 03 29 76 09 07.0 76000 03 30 76 01 01.5 76000 03 30 76 05 01.0 76000 03 30 76 08 04.0 76000 03 30 76 09 06.5 76000 03 31 76 07 02.0 76000 03 31 76 08 02.0 76000 03 31 76 09 02.0 76000 04 01 76 05 01.0 76000 04 01 76 09 04.0 76000 04 02 76 09 01.0 76000 04 05 76 05 01.0 76000 04 05 76 09 07.0 76000 04 06 76 05 01.5 76000 04 06 76 07 02.0 76000 04 06 76 09 04.0 76000 04 07 76 08 01.0 76000 04 07 76 09 07.0 76000 04 08 76 09 06.0 76000 04 09 76 05 01.0 76000 04 09 76 09 07.0 76000 04 12 76 09 07.0 76000 04 13 76 05 00.5 76000 04 13 76 09 01.0 76000 04 14 76 05 01.0 76000 04 14 76 08 02.0 76000 04 14 76 09 06.0 76000 04 15 76 08 01.0 76000 04 15 76 09 06.0 76000 04 16 76 08 02.0 76000 04 16 76 09 05.0 76001 01 05 76 08 03.0 76001 04 15 76 08 01.0 76002 01 07 76 08 02.0 76003 01 07 76 01 04.0 76003 01 07 76 08 02.0 76003 01 08 76 08 06.5 76003 01 30 76 01 05.0 76003 01 30 76 01 02.0 76003 01 30 76 01 02.0 76003 01 30 76 08 01.0 76003 02 02 76 01 02.0 76003 02 03 76 01 06.0 76003 02 04 76 01 02.0 76004 01 08 76 07 02.0 76004 01 10 76 07 04.0 76005 01 09 76 08 01.5 76005 01 10 76 03 05.5 76005 01 11 76 03 01.0 76005 01 12 76 05 05.5 76005 01 13 76 05 04.0 76006 01 16 76 05 02.7 76007 01 29 76 01 01.0 76008 01 29 76 08 06.0 76008 01 30 76 03 05.5 76008 01 30 76 08 06.0 76008 02 02 76 08 01.0 76008 02 02 76 08 06.0 76008 02 03 76 08 01.5 76008 02 03 76 08 06.0 76008 02 04 76 08 02.0 76008 02 04 76 08 08.0 76008 02 05 76 08 00.5 76008 02 05 76 08 08.0 76008 02 06 76 08 06.5 76008 02 09 76 08 08.0 76008 02 10 76 08 04.0 76008 02 11 76 08 01.0 76008 02 17 76 08 02.0 76008 02 18 76 08 06.0 76008 03 04 76 08 02.0 76008 03 05 76 08 06.0 76008 03 09 76 08 00.5 76008 03 10 76 08 01.0 76009 02 02 76 01 02.0 76009 02 16 76 05 01.5 76009 02 24 76 05 15.5 76009 02 25 76 05 01.5 76009 02 26 76 05 07.0 76009 02 27 76 05 01.5 76009 02 28 76 05 04.0 76009 03 01 76 05 05.5 76009 03 02 76 05 01.5 76009 04 06 76 05 00.5 76010 02 10 76 08 02.0 76010 02 11 76 08 02.0 76010 02 12 76 08 07.0 76010 02 13 76 08 04.0 76010 02 17 76 08 02.0 76010 02 24 76 08 04.5 76010 02 25 76 08 03.0 76010 03 01 76 08 01.0 76010 03 18 76 08 03.0 76011 02 09 76 05 01.5 76011 02 10 76 05 03.5 76011 02 12 76 05 01.0 76011 02 12 76 05 07.0 76011 02 13 76 05 05.5 76011 02 16 76 05 07.0 76011 02 17 76 05 04.0 76011 02 18 76 05 02.5 76011 02 19 76 05 05.5 76011 02 20 76 05 04.0 76011 02 23 76 05 04.5 76011 02 24 76 05 02.0 76011 03 03 76 05 02.5 76011 03 05 76 05 02.0 76011 03 06 76 05 01.0 76011 03 12 76 05 02.0 76011 03 16 76 05 03.5 76011 03 17 76 05 02.5 76011 03 18 76 05 03.0 76011 03 19 76 05 02.0 76011 03 22 76 05 05.0 76011 03 22 76 05 02.0 76011 03 23 76 05 07.0 76011 03 24 76 05 03.0 76011 03 25 76 05 01.0 76011 03 26 76 05 01.5 76011 04 05 76 05 02.5 76011 04 14 76 05 01.0 76012 02 19 76 07 04.0 76012 03 05 76 07 06.0 76012 03 11 76 07 01.0 76012 03 12 76 07 06.0 76012 03 17 76 05 01.0 76012 03 18 76 05 02.0 76014 03 01 76 08 02.0 76014 03 02 76 01 05.0 76014 03 02 76 08 02.0 76014 03 03 76 01 05.0 76014 03 03 76 08 06.0 76014 03 04 76 08 06.0 76014 03 06 76 03 00.5 76014 03 08 76 07 06.0 76014 03 08 76 08 04.0 76014 03 09 76 07 01.0 76014 03 09 76 07 02.0 76014 03 09 76 07 02.0 76014 03 09 76 08 05.0 76014 03 10 76 07 06.0 76014 03 10 76 08 02.0 76014 03 11 76 07 07.0 76014 03 11 76 08 02.0 76014 03 15 76 08 08.0 76014 03 16 76 08 08.0 76014 03 17 76 05 02.5 76014 03 17 76 08 06.0 76014 03 18 76 08 03.0 76014 03 30 76 01 02.5 76014 03 30 76 08 04.0 76014 03 31 76 08 06.0 76014 04 01 76 01 02.0 76014 04 01 76 08 01.0 76014 04 05 76 08 00.5 76014 04 07 76 01 02.0 76014 04 09 76 08 01.0 76014 04 10 76 01 09.0 76014 04 13 76 01 01.0 76014 04 15 76 01 02.0 76014 04 15 76 08 01.0 76014 04 16 76 01 03.0 76014 04 16 76 03 04.0 76014 04 17 76 03 03.0 76014 04 17 76 03 00.5 76014 04 17 76 10 05.5 76015 03 03 76 07 03.0 76015 03 04 76 07 02.0 76016 03 09 76 07 02.0 76016 03 09 76 08 01.5 76016 03 11 76 08 02.0 76017 04 02 76 01 01.0 76017 04 11 76 03 01.0 76017 04 16 76 05 04.0 76017 04 17 76 03 02.5 76018 03 11 76 08 02.0 76018 03 12 76 08 06.0 76018 03 24 76 08 03.0 76018 03 26 76 08 01.0 76018 04 09 76 08 01.5 76018 04 15 76 08 02.0 76019 03 24 76 01 01.0 76019 03 26 76 01 08.0 76019 03 30 76 01 04.0 76019 03 31 76 01 03.0 76019 03 31 76 05 04.0 76020 03 26 76 08 04.5 76020 03 29 76 08 01.5 76021 03 29 76 01 01.0 76021 04 05 76 01 02.0 76021 04 08 76 01 03.0 76021 04 09 76 01 03.0 76021 04 09 76 03 01.0 76022 03 05 76 03 05.0 76022 03 06 76 03 01.5 76023 04 01 76 01 01.0 76023 04 06 76 01 02.0 76024 04 01 76 07 01.0 76024 04 01 76 08 05.0 76024 04 02 76 01 04.0 76024 04 02 76 08 01.0 76024 04 04 76 03 02.0 76024 04 04 76 03 02.5 76024 04 05 76 03 04.5 76024 04 05 76 05 05.0 76024 04 05 76 08 02.0 76024 04 06 76 01 02.0 76024 04 06 76 05 05.5 76024 04 06 76 08 04.0 76024 04 07 76 03 03.0 76024 04 07 76 05 07.5 76024 04 08 76 01 01.0 76024 04 08 76 05 08.5 76024 04 09 76 05 06.5 76024 04 10 76 03 01.0 76024 04 12 76 05 00.5 76025 04 01 76 08 02.0 76025 04 02 76 01 02.0 76025 04 02 76 08 07.0 76025 04 03 76 03 01.0 76025 04 04 76 03 02.5 76025 04 05 76 08 05.5 76025 04 06 76 08 05.5 76025 04 07 76 08 07.5 76025 04 08 76 08 08.0 76025 04 09 76 03 07.0 76025 04 09 76 08 06.5 76025 04 10 76 03 03.5 76025 04 11 76 08 04.0 76025 04 12 76 08 09.0 76025 04 13 76 03 04.0 76025 04 13 76 08 08.0 76025 04 14 76 03 01.5 76025 04 14 76 08 06.0 76025 04 15 76 08 03.0 76026 04 06 76 01 01.0 76027 04 09 76 01 03.0 76027 04 12 76 01 08.0 76027 04 13 76 01 01.0 76027 04 14 76 01 04.0 76027 04 15 76 01 04.0 76027 04 16 76 01 05.0 76028 04 13 76 01 01.0 76029 04 16 76 08 02.0 76500 01 23 76 05 01.5 76500 01 23 76 05 01.5 76500 01 28 76 05 03.5 76500 01 30 76 01 04.0 76500 01 31 76 05 04.0 76500 02 03 76 01 02.0 76500 02 04 76 01 04.0 76500 02 09 76 05 08.0 76500 02 10 76 01 12.0 76500 02 10 76 05 05.5 76500 02 11 76 01 12.0 76500 02 11 76 05 08.5 76500 02 12 76 01 12.0 76500 02 13 76 01 12.0 76500 02 16 76 05 00.5 76500 02 17 76 05 04.0 76500 02 18 76 05 03.0 76500 02 20 76 05 02.0 76500 02 27 76 05 01.0 76500 03 01 76 05 02.0 76500 03 03 76 05 04.0 76500 03 04 76 05 09.0 76500 03 04 76 07 01.0 76500 03 05 76 03 04.0 76500 03 05 76 05 05.0 76500 03 06 76 03 01.5 76500 03 10 76 05 03.0 76500 03 13 76 05 03.0 76500 03 15 76 05 06.0 76500 03 24 76 01 06.0 76500 03 26 76 05 02.0 76500 03 29 76 01 02.0 76500 03 31 76 01 02.0 76500 04 03 76 01 10.0 76500 04 05 76 01 03.0 76500 04 06 76 01 02.0 76500 04 08 76 01 02.0 76500 04 09 76 01 02.0 76500 04 12 76 05 01.5 76500 04 15 76 01 01.0 76500 04 15 76 05 01.0 76501 02 01 76 05 01.0 76501 02 02 76 05 03.0 76501 02 04 76 05 07.5 76501 03 11 76 05 05.0 76501 03 12 76 05 05.0 76514 01 20 76 05 02.0 76514 01 20 76 05 02.0 76514 03 24 76 05 01.5 76514 03 25 76 05 01.0 76514 03 30 76 05 01.0 76601 01 31 76 01 06.0 76601 02 02 76 01 03.0 76601 03 16 76 05 04.5 76601 03 17 76 05 01.0 76601 03 19 76 05 02.5 )3ҐҔ)vKC͢K+K+ #)d )`  +# +J##++Z+K3S/ $+3SɶS3/ v  0CCCC#  + .u 0)-# h#+ͪ  # g1K h#3+Jq4qFG1|\q8!0P+\qq8CDžCCK' g#1: ) 3  P1* 1( !%1%1+Ǫ 3+ vZ KC#+ȫq4q#ǂ aY a +-9 \qq8KK[3 xDqqɪ#C#q -,q1X h h#q4q\qq8 B J,0!?:*74001 01 28 76 05 01.4 74004 03 08 76 01 13.0 74004 03 08 76 05 12.0 74004 03 09 76 01 18.0 74004 03 09 76 05 12.0 74004 03 10 76 05 06.0 74004 03 11 76 05 02.0 74004 03 19 76 05 01.5 74004 12 01 75 01 14.0 74004 12 02 75 01 01.0 74011 01 06 76 01 04.0 74011 01 06 76 05 02.7 74011 04 01 76 01 03.0 74011 12 02 75 01 01.0 74011 12 03 75 01 02.0 74011 12 23 75 07 01.5 74027 01 15 76 05 01.5 74027 03 31 76 07 01.0 74027 12 18 75 01 01.0 74028 08 04 75 01 01.0 74037 02 23 76 07 01.5 74037 02 23 76 07 00.5 74037 02 24 76 07 02.5 74037 03 29 76 07 01.0 74037 03 30 76 07 05.0 74037 03 30 76 07 03.0 74037 03 31 76 07 04.0 74037 04 01 76 07 08.0 74037 04 02 76 07 08.0 74037 04 05 76 07 09.0 74037 04 06 76 07 06.0 74037 04 08 76 07 03.0 74037 04 09 76 07 03.0 74037 11 04 75 01 02.0 74037 11 05 75 07 01.0 74037 11 06 74 07 07.0 74037 11 07 75 07 03.0 74037 11 11 75 01 02.0 74037 11 11 75 07 05.0 74042 02 24 76 07 04.0 74042 07 25 75 01 04.0 74042 12 30 75 07 00.5 74045 01 16 76 05 00.5 74045 02 23 76 07 01.5 74045 02 23 76 07 01.5 74045 03 05 76 01 01.0 74045 11 12 75 01 04.0 74045 11 26 75 01 02.0 75000 07 21 75 01 03.0 75000 07 24 75 03 01.5 75000 07 24 75 05 00.5 75000 07 29 75 04 02.0 75000 07 30 75 01 02.0 75000 08 01 75 01 03.0 75000 08 05 75 01 03.0 75000 08 07 75 05 02.0 75000 08 11 75 05 01.5 75000 08 13 75 05 00.5 75000 08 15 75 01 04.0 75000 08 18 75 01 05.0 75000 09 03 75 05 00.5 75000 09 04 75 05 01.0 75000 09 13 75 05 01.0 75000 09 17 75 04 06.0 75000 10 03 75 05 01.0 75000 10 07 75 05 01.8 75000 10 09 75 05 07.0 75000 10 13 75 01 01.0 75000 10 14 75 01 02.0 75000 10 25 75 01 02.0 75000 10 30 75 01 01.0 75000 11 03 75 04 02.0 75000 11 04 75 01 02.0 75000 11 06 75 01 01.0 75000 11 10 75 01 01.0 75000 11 12 75 07 03.0 75000 11 13 75 05 01.9 75000 11 14 75 01 04.0 75000 11 15 75 01 03.0 75000 11 17 75 05 01.0 75000 11 18 75 05 04.0 75000 11 18 75 07 02.0 75000 11 20 75 05 01.0 75000 11 21 75 05 01.0 75000 11 24 75 01 02.0 75000 11 24 75 05 01.5 75000 11 25 75 01 02.0 75000 11 26 75 01 03.0 75000 12 01 75 05 01.0 75000 12 01 75 07 02.0 75000 12 02 75 05 02.0 75000 12 03 75 05 01.5 75000 12 05 75 05 01.0 75000 12 08 75 05 01.0 75000 12 09 75 05 01.0 75000 12 10 75 05 01.5 75000 12 12 75 01 01.0 75000 12 12 75 05 01.0 75000 12 14 75 01 12.0 75000 12 15 75 05 01.5 75000 12 16 75 05 01.3 75000 12 16 75 07 08.0 75000 12 17 75 07 03.0 75000 12 18 75 07 01.0 75000 12 22 75 07 01.0 75000 12 24 75 05 04.0 75000 12 24 75 07 01.0 75000 12 29 75 07 01.0 75000 12 30 75 07 01.0 75000 12 31 75 07 00.5 75004 02 16 76 09 00.5 75004 08 09 75 01 03.0 75004 08 09 75 03 01.0 75004 08 12 75 04 01.0 75004 08 12 75 05 04.0 75004 08 13 75 05 03.5 75004 08 15 75 01 02.0 75004 08 16 75 03 03.5 75004 08 16 75 04 08.5 75004 08 16 75 05 08.0 75004 08 18 75 01 02.0 75004 08 29 75 04 01.5 75004 10 15 75 01 11.5 75004 10 16 75 01 06.0 75005 01 15 76 07 07.0 75005 01 16 76 07 01.0 75005 07 30 75 01 01.0 75005 07 30 75 04 06.0 75005 07 30 75 05 06.0 75005 07 31 75 04 06.0 75005 07 31 75 05 00.5 75005 08 01 75 01 01.0 75005 08 01 75 04 03.0 75005 08 01 75 05 00.5 75005 09 30 75 04 04.5 75005 12 22 75 07 01.0 75007 01 13 76 08 03.0 75007 09 16 75 04 03.5 75007 09 17 75 04 03.5 75007 09 18 75 04 07.5 75007 09 19 75 04 07.5 75007 09 20 75 01 03.5 75007 09 20 75 03 03.5 75007 09 20 75 04 08.5 75007 09 22 75 04 05.5 75007 09 23 75 04 05.5 75007 09 24 75 04 04.0 75007 09 25 75 04 03.5 75007 09 26 75 04 03.5 75007 09 27 75 03 01.5 75007 09 27 75 04 04.0 75007 09 29 75 04 05.5 75007 10 01 75 04 03.0 75007 10 02 75 04 01.0 75007 10 03 75 04 04.0 75007 10 04 75 03 03.5 75007 10 04 75 04 08.0 75007 10 07 75 01 04.0 75007 10 08 75 04 01.5 75007 10 08 75 05 05.7 75007 10 10 75 04 00.5 75007 10 11 75 04 05.0 75007 10 13 75 01 01.0 75007 10 13 75 04 06.0 75007 10 13 75 05 01.5 75007 10 14 75 01 04.0 75007 10 14 75 04 04.0 75007 10 15 75 04 08.5 75007 10 16 75 04 08.0 75007 10 16 75 05 06.2 75007 10 17 75 01 01.0 75007 10 17 75 04 08.0 75007 10 17 75 05 02.0 75007 10 20 75 01 05.0 75007 10 21 75 04 01.0 75007 10 22 75 04 06.0 75007 10 23 75 04 03.5 75007 10 23 75 05 01.8 75007 10 24 75 04 02.5 75007 10 24 75 05 01.3 75007 10 27 75 01 04.0 75007 10 28 75 04 01.0 75007 10 28 75 05 05.5 75007 10 30 75 04 01.5 75007 10 31 75 05 00.8 75007 11 06 75 01 02.0 75007 11 07 75 07 04.0 75007 11 10 75 07 03.0 75008 07 31 75 01 03.0 75008 07 31 75 01 06.5 75008 11 22 75 07 00.3 75008 11 23 75 07 02.3 75011 08 07 75 01 02.5 75013 01 05 76 01 01.0 75013 01 19 76 01 02.0 75013 01 20 76 01 02.0 75013 01 22 76 01 05.0 75013 01 26 76 01 02.0 75013 03 24 76 01 02.0 75013 03 31 76 01 01.0 75013 04 02 76 01 01.0 75013 04 05 76 01 02.0 75013 08 08 75 01 02.0 75013 08 28 75 04 07.0 75013 09 08 75 05 02.5 75013 09 09 75 04 02.5 75013 09 13 75 04 02.0 75013 09 24 75 01 02.0 75013 09 24 75 01 02.0 75013 09 24 75 04 04.0 75013 09 25 75 04 02.0 75013 09 26 75 04 03.0 75013 10 20 75 04 02.0 75013 10 21 75 01 02.0 75013 10 21 75 04 02.0 75013 10 22 75 04 01.5 75013 10 24 75 01 03.0 75013 10 27 75 04 04.0 75013 10 27 75 06 02.0 75013 10 28 75 04 07.5 75013 10 29 75 04 08.0 75013 11 04 75 04 03.0 75013 11 17 75 07 01.5 75013 11 26 75 01 03.0 75013 12 02 75 01 00.5 75015 10 08 75 04 00.8 75022 01 12 76 08 05.5 75022 01 13 76 08 03.0 75022 01 15 76 08 01.5 75022 07 24 75 01 01.0 75022 11 17 75 07 01.0 75022 11 18 75 07 03.0 75022 11 19 75 07 01.5 75022 11 20 75 07 03.5 75022 11 21 75 07 04.0 75022 11 26 75 05 00.5 75022 11 28 75 07 04.0 75022 12 18 75 07 01.0 75023 11 17 75 07 01.0 75025 08 14 75 04 02.5 75027 01 19 76 05 00.5 75027 01 19 76 05 00.5 75028 08 04 75 01 03.0 75028 08 06 75 01 03.0 75028 08 07 75 01 01.0 75028 08 08 75 03 04.5 75028 08 08 75 03 02.5 75028 08 09 75 03 04.0 75028 08 15 75 03 07.5 75028 09 09 75 05 01.0 75028 09 26 75 01 04.0 75028 10 02 75 05 01.0 75028 10 03 75 05 04.0 75028 10 04 75 05 03.0 75028 10 23 75 04 01.0 75028 10 23 75 06 08.0 75028 10 24 75 06 04.0 75028 10 29 75 01 07.0 75028 10 30 75 01 04.0 75030 01 07 76 01 04.0 75030 01 11 76 03 04.5 75030 01 12 76 01 02.0 75030 01 12 76 03 02.5 75030 01 13 76 01 04.0 75030 01 14 76 01 08.0 75030 01 14 76 03 02.0 75030 01 15 76 01 04.0 75030 01 15 76 08 01.5 75030 01 17 76 05 01.2 75030 01 17 76 05 01.2 75030 01 17 76 05 01.2 75030 07 19 75 03 04.0 75030 07 23 75 05 01.5 75030 07 24 75 01 02.0 75030 08 13 75 01 04.0 75030 08 29 75 01 02.0 75030 08 29 75 04 04.0 75030 08 30 75 03 03.5 75030 09 02 75 04 08.0 75030 09 02 75 05 07.0 75030 09 03 75 04 10.0 75030 09 03 75 05 08.0 75030 09 04 75 04 04.5 75030 09 04 75 05 07.0 75030 09 05 75 04 07.5 75030 09 05 75 05 01.0 75030 09 06 75 04 11.0 75030 09 06 75 05 09.5 75030 09 30 75 05 00.5 75030 10 01 75 04 00.5 75030 10 06 75 04 06.0 75030 10 07 75 04 05.0 75030 10 20 75 04 04.5 75030 10 21 75 04 04.0 75030 10 30 75 04 03.0 75030 10 31 75 04 02.0 75030 11 01 75 04 04.5 75030 11 03 75 04 05.0 75030 11 04 75 04 04.5 75030 11 05 75 04 08.0 75030 11 06 75 04 08.0 75030 11 06 75 06 01.0 75030 11 07 75 04 08.0 75030 11 10 75 01 05.0 75030 11 10 75 06 05.0 75030 11 10 75 07 05.0 75030 11 19 75 05 02.0 75030 11 20 75 05 04.0 75030 11 24 75 01 01.0 75031 07 23 75 04 01.5 75031 07 24 75 04 03.5 75031 07 25 75 04 07.5 75031 07 27 75 01 02.0 75031 07 28 75 04 03.0 75031 07 30 75 01 01.0 75031 08 01 75 03 07.0 75031 08 01 75 04 03.0 75031 08 04 75 01 01.0 75031 08 11 75 05 01.0 75031 08 20 75 05 05.0 75031 08 21 75 05 09.0 75031 08 22 75 05 03.0 75031 08 27 75 05 00.5 75032 07 19 75 03 06.0 75032 07 19 75 04 06.0 75032 07 21 75 04 02.0 75033 03 23 76 07 02.0 75033 03 24 76 07 05.0 75033 03 29 76 07 01.0 75033 11 22 75 07 00.7 75033 11 23 75 07 06.7 75034 07 21 75 01 03.0 75034 07 21 75 04 02.0 75034 07 22 75 01 04.0 75034 07 22 75 04 08.0 75034 07 23 75 04 06.0 75034 07 24 75 01 01.0 75034 07 24 75 04 05.0 75034 07 25 75 01 01.0 75034 07 25 75 04 01.0 75034 07 26 75 04 05.5 75034 07 27 75 01 03.0 75034 07 28 75 04 05.0 75034 07 29 75 04 04.5 75034 07 29 75 05 01.0 75034 07 30 75 04 03.0 75034 08 02 75 01 04.0 75034 08 02 75 03 03.5 75034 08 03 75 04 08.5 75034 08 05 75 04 03.0 75034 08 06 75 04 05.0 75034 08 07 75 01 00.5 75034 08 08 75 04 01.0 75035 07 20 75 03 01.5 75035 07 24 75 03 01.5 75035 08 04 75 01 03.0 75035 08 07 75 01 01.0 75035 08 07 75 05 02.5 75035 08 08 75 01 02.0 75035 08 08 75 05 08.0 75035 08 09 75 01 01.0 75035 08 09 75 05 06.0 75035 08 11 75 05 02.0 75035 08 12 75 01 03.0 75035 08 12 75 04 00.5 75035 08 12 75 05 00.5 75035 08 13 75 01 01.0 75035 08 13 75 04 07.0 75035 08 14 75 04 03.5 75035 08 15 75 03 01.0 75035 08 15 75 04 07.0 75035 08 16 75 04 02.5 75035 08 20 75 04 01.5 75035 10 17 75 01 02.0 75035 12 09 75 01 01.0 75036 08 26 75 01 04.0 75036 08 28 75 05 05.5 75036 08 29 75 05 05.5 75036 08 30 75 04 07.0 75036 08 30 75 05 04.0 75036 09 02 75 05 02.0 75036 09 04 75 01 04.0 75036 09 05 75 04 01.0 75036 09 05 75 05 04.5 75036 09 08 75 04 08.5 75036 09 08 75 05 05.5 75036 09 10 75 04 01.0 75036 09 11 75 04 03.0 75036 09 13 75 04 02.0 75036 09 25 75 04 00.5 75036 09 25 75 04 02.5 75036 09 26 75 04 02.0 75036 10 16 75 04 01.0 75037 07 21 75 01 02.0 75037 07 23 75 01 04.0 75037 07 24 75 03 01.5 75037 07 28 75 01 01.0 75037 08 04 75 01 01.0 75037 08 04 75 04 04.0 75037 08 04 75 05 07.5 75037 08 05 75 01 02.0 75037 08 05 75 04 02.5 75037 08 05 75 05 04.5 75037 08 06 75 04 03.5 75037 08 07 75 01 01.0 75037 08 07 75 04 07.0 75037 08 07 75 05 04.0 75037 08 08 75 01 03.0 75037 08 08 75 04 07.5 75037 08 09 75 01 04.0 75037 08 09 75 03 01.0 75037 08 09 75 04 07.0 75037 08 11 75 01 03.0 75037 08 11 75 04 09.0 75037 08 11 75 05 02.5 75037 08 12 75 04 07.0 75037 08 15 75 01 02.0 75037 08 20 75 04 02.5 75037 O8 06 75 05 08.5 75038 07 21 75 04 04.0 75039 01 06 76 05 00.5 75039 09 16 75 05 01.5 75039 09 19 75 05 02.0 75039 09 20 75 01 03.5 75039 09 20 75 03 03.5 75039 09 22 75 04 01.5 75039 09 22 75 05 08.5 75039 09 23 75 01 02.0 75039 09 23 75 04 03.5 75039 09 23 75 05 09.0 75039 09 24 75 04 01.0 75039 09 24 75 05 05.0 75039 09 25 75 05 04.0 75039 09 27 75 04 04.5 75039 09 29 75 04 02.0 75039 09 29 75 05 03.0 75039 09 30 75 04 02.0 75039 09 30 75 05 03.3 75039 10 01 75 04 01.5 75039 10 01 75 05 06.0 75039 10 02 75 05 02.4 75039 10 06 75 05 00.5 75039 10 07 75 05 00.5 75039 10 17 75 05 00.4 75039 10 22 75 05 00.9 75039 10 23 75 01 01.0 75040 07 22 75 01 04.0 75040 07 23 75 01 04.0 75040 07 24 75 01 02.0 75040 07 25 75 01 04.0 75040 08 11 75 01 03.0 75040 08 12 75 01 03.0 75040 09 08 75 01 04.0 75040 10 10 75 01 01.0 75040 11 03 75 01 04.0 75040 11 05 75 01 02.0 75040 11 06 75 01 01.0 75041 04 05 76 01 01.0 75041 07 24 75 03 03.5 75041 07 29 75 04 02.0 75041 08 04 75 04 04.0 75041 08 05 75 01 01.0 75041 08 05 75 04 03.0 75041 08 06 75 01 02.0 75041 08 07 75 04 01.0 75041 08 14 75 01 08.0 75041 08 16 75 03 06.0 75041 08 16 75 04 02.0 75041 08 19 75 01 06.0 75041 08 20 75 01 08.0 75041 08 20 75 04 05.0 75041 08 21 75 01 08.0 75041 08 21 75 04 11.0 75041 08 22 75 01 06.0 75041 08 22 75 03 02.8 75041 08 22 75 04 04.5 75041 08 25 75 01 01.0 75041 08 26 75 01 01.0 75041 08 27 75 01 04.0 75041 08 27 75 04 02.5 75041 08 29 75 01 02.0 75041 10 08 75 01 03.0 75041 10 10 75 01 01.0 75041 10 17 75 01 01.0 75041 11 18 75 05 01.0 75041 11 18 75 07 03.0 75041 11 19 75 07 02.0 75041 11 21 75 07 02.0 75041 11 29 75 03 01.0 75042 01 21 76 05 01.3 75042 01 21 76 05 01.3 75042 01 22 76 05 02.0 75042 01 22 76 05 02.0 75042 01 26 76 05 02.8 75042 01 27 76 05 01.0 75042 03 16 76 03 03.0 75042 03 29 76 05 03.0 75042 03 30 76 03 03.0 75042 03 30 76 05 06.0 75042 04 01 76 05 06.5 75042 04 02 76 05 08.0 75042 04 05 76 05 00.5 75042 04 06 76 05 00.5 75042 04 07 76 05 01.0 75042 07 27 75 01 01.0 75042 08 01 75 01 02.0 75042 08 01 75 03 01.5 75042 08 02 75 01 04.0 75042 08 02 75 03 04.5 75042 08 11 75 01 02.0 75042 08 12 75 01 03.0 75042 08 12 75 04 00.5 75042 08 13 75 01 01.0 75042 08 13 75 04 01.0 75042 08 13 75 05 04.0 75042 08 14 75 04 02.0 75042 08 14 75 05 09.0 75042 08 15 75 04 01.0 75042 08 15 75 05 08.5 75042 08 18 75 01 01.0 75042 08 20 75 05 04.0 75042 10 22 75 04 00.5 75042 10 22 75 05 03.1 75042 10 23 75 05 01.6 75042 10 27 75 01 02.0 75042 11 04 75 05 05.5 75042 11 04 75 06 01.0 75042 11 04 75 07 02.0 75042 11 05 75 01 02.0 75042 11 05 75 05 05.5 75042 11 05 75 07 02.0 75042 11 06 75 01 04.0 75042 11 06 75 05 07.0 75042 11 07 75 05 07.0 75042 11 07 75 07 01.0 75042 11 10 75 05 08.0 75042 11 11 75 05 03.0 75042 11 11 75 06 03.0 75042 11 13 75 05 01.0 75042 11 17 75 05 01.0 75042 11 19 75 05 01.0 75043 07 30 75 01 02.0 75043 07 30 75 05 02.0 75043 07 31 75 04 02.0 75043 07 31 75 05 07.5 75043 08 01 75 01 01.0 75043 08 01 75 04 02.5 75043 08 01 75 05 06.5 75043 09 05 75 05 02.5 75043 09 16 75 05 01.0 75044 08 05 75 01 01.0 75044 08 08 75 01 01.0 75044 08 08 75 03 02.0 75044 08 09 75 03 02.0 75044 08 22 75 01 02.0 75044 08 22 75 04 03.0 75044 08 23 75 04 07.2 75044 08 25 75 01 01.0 75044 08 25 75 04 02.0 75044 08 25 75 05 01.5 75044 08 26 75 01 02.0 75044 08 26 75 04 06.0 75044 08 26 75 05 01.5 75044 08 27 75 01 04.0 75044 08 27 75 04 02.5 75044 08 27 75 05 00.5 75044 09 16 75 05 01.0 75045 01 09 76 08 02.5 75045 01 22 76 08 04.0 75045 01 22 76 08 04.0 75045 08 18 75 03 03.5 75045 08 19 75 03 01.0 75045 08 22 75 03 01.0 75045 09 09 75 04 06.5 75045 09 10 75 04 07.5 75045 09 11 75 04 03.0 75045 09 15 75 04 01.0 75045 09 16 75 05 01.0 75045 09 25 75 05 00.5 75046 08 19 75 03 03.0 75046 08 22 75 03 03.5 75046 08 22 75 03 01.5 75046 08 22 75 04 01.0 75046 08 22 75 05 06.0 75046 08 23 75 04 01.3 75046 08 23 75 05 08.5 75046 08 25 75 01 02.0 75046 08 25 75 04 05.5 75046 08 25 75 05 06.0 75046 08 26 75 01 01.0 75046 08 26 75 04 02.5 75046 08 26 75 05 04.5 75046 08 27 75 01 04.0 75046 08 27 75 04 03.5 75046 08 27 75 05 05.5 75046 08 28 75 01 04.0 75046 08 28 75 04 02.0 75046 08 28 75 05 03.0 75046 08 29 75 04 03.0 75046 08 29 75 05 00.5 75046 09 17 75 05 03.5 75046 09 18 75 05 02.5 75047 03 31 76 01 02.0 75047 09 05 75 01 01.0 75047 09 13 75 04 04.0 75047 09 13 75 05 07.5 75047 09 15 75 04 08.5 75047 09 16 75 04 05.0 75047 09 18 75 04 01.0 75047 09 19 75 04 01.0 75047 09 20 75 01 02.0 75047 09 20 75 03 02.0 75047 09 20 75 04 00.5 75047 09 24 75 01 02.0 75047 10 02 75 04 02.0 75047 10 02 75 05 02.0 75047 10 03 75 04 03.0 75047 10 06 75 04 01.0 75047 10 10 75 05 00.4 75047 10 27 75 01 01.0 75047 11 14 75 01 01.0 75047 11 14 75 05 02.5 75047 11 17 75 07 01.0 75048 08 29 75 01 02.0 75048 08 30 75 03 04.0 75048 09 09 75 05 08.0 75048 09 10 75 04 01.0 75048 09 10 75 05 09.5 75048 09 11 75 04 04.0 75048 09 11 75 05 08.0 75048 09 12 75 04 09.0 75048 09 12 75 05 07.0 75048 09 15 75 05 01.0 75048 09 16 75 05 01.0 75048 10 01 75 05 01.0 75048 10 10 75 05 00.7 75048 10 27 75 05 03.0 75048 11 11 75 05 00.5 75048 11 12 75 05 01.0 75048 12 12 75 05 01.0 75049 01 05 76 07 06.0 75049 01 06 76 07 08.0 75049 01 06 76 08 02.0 75049 01 07 76 07 08.0 75049 01 07 76 08 02.0 75049 01 08 76 07 05.0 75049 01 08 76 08 01.5 75049 01 09 76 01 08.8 75049 01 09 76 03 09.5 75049 01 09 76 07 09.0 75049 01 10 76 01 08.0 75049 01 10 76 03 03.5 75049 01 10 76 07 04.0 75049 01 12 76 03 02.5 75049 01 12 76 07 09.0 75049 01 13 76 07 10.0 75049 01 14 76 05 02.0 75049 01 14 76 07 08.5 75049 01 15 76 07 02.5 75049 01 16 76 01 09.0 75049 01 16 76 01 09.0 75049 01 16 76 03 09.0 75049 01 16 76 05 03.5 75049 01 16 76 07 07.0 75049 01 17 76 01 08.0 75049 01 17 76 01 08.0 75049 01 17 76 03 08.0 75049 01 17 76 03 08.0 75049 01 17 76 03 08.0 75049 01 17 76 05 05.3 75049 01 17 76 05 05.3 75049 01 17 76 05 05.3 75049 01 17 76 07 06.5 75049 01 17 76 07 06.5 75049 01 17 76 07 06.5 75049 01 18 76 01 06.0 75049 01 19 76 05 05.5 75049 01 19 76 05 05.5 75049 01 19 76 07 01.5 75049 01 19 76 07 06.5 75049 01 19 76 07 01.5 75049 01 19 76 07 01.5 75049 01 19 76 07 06.5 75049 01 19 76 07 01.5 75049 01 20 76 01 02.0 75049 01 20 76 03 03.5 75049 01 20 76 03 03.5 75049 01 20 76 05 03.5 75049 01 20 76 05 03.5 75049 01 20 76 07 01.0 75049 01 20 76 07 08.0 75049 01 20 76 07 01.0 75049 01 20 76 07 08.0 75049 01 21 76 01 01.0 75049 01 21 76 05 06.0 75049 01 21 76 05 06.0 75049 01 21 76 07 08.0 75049 01 21 76 07 08.0 75049 01 22 76 01 03.0 75049 01 22 76 03 03.0 75049 01 22 76 03 03.0 75049 01 22 76 07 07.0 75049 01 22 76 07 07.0 75049 01 23 76 03 08.5 75049 01 23 76 03 08.5 75049 01 23 76 07 08.0 75049 01 23 76 07 08.0 75049 01 24 76 03 04.5 75049 01 24 76 03 04.5 75049 01 26 76 01 06.0 75049 01 26 76 07 08.0 75049 01 27 76 01 04.0 75049 01 27 76 07 08.0 75049 01 28 76 07 08.0 75049 01 29 76 07 02.0 75049 01 29 76 07 08.0 75049 01 30 76 03 06.5 75049 01 30 76 07 01.5 75049 01 30 76 07 08.0 75049 01 31 76 03 12.0 75049 01 31 76 07 08.0 75049 02 01 76 07 03.0 75049 02 02 76 05 06.0 75049 02 02 76 07 01.0 75049 02 02 76 07 08.0 75049 02 03 76 05 04.0 75049 02 03 76 07 06.0 75049 02 03 76 07 02.0 75049 02 04 76 05 04.0 75049 02 04 76 07 01.5 75049 02 04 76 07 04.0 75049 02 06 76 08 01.5 75049 02 10 76 07 05.0 75049 02 10 76 07 03.0 75049 02 11 76 07 08.0 75049 02 12 76 07 05.0 75049 02 13 76 07 01.0 75049 02 13 76 07 08.0 75049 02 16 76 07 08.0 75049 02 17 76 07 01.0 75049 02 17 76 07 06.0 75049 02 17 76 07 02.0 75049 02 18 76 05 02.0 75049 02 18 76 07 00.5 75049 02 18 76 07 05.0 75049 02 18 76 07 02.5 75049 02 19 76 07 02.0 75049 02 20 76 07 03.5 75049 02 24 76 07 01.5 75049 02 25 76 07 07.0 75049 03 01 76 01 04.0 75049 03 01 76 07 05.0 75049 03 02 76 07 05.0 75049 03 03 76 07 05.0 75049 03 04 76 07 01.0 75049 03 04 76 07 03.0 75049 03 09 76 07 05.0 75049 03 29 76 07 04.0 75049 04 02 76 03 06.0 75049 04 02 76 07 01.0 75049 04 03 76 03 08.5 75049 04 04 76 03 00.5 75049 04 05 76 07 01.0 75049 09 22 75 04 01.5 75049 09 25 75 01 02.0 75049 09 27 75 03 07.0 75049 09 30 75 01 08.0 75049 10 01 75 04 03.0 75049 10 02 75 04 06.0 75049 10 03 75 01 08.0 75049 10 03 75 04 02.0 75049 10 04 75 03 04.5 75049 10 04 75 04 01.0 75049 10 06 75 04 01.0 75049 10 07 75 01 04.0 75049 10 08 75 01 01.0 75049 10 08 75 04 06.5 75049 10 08 75 05 00.3 75049 10 09 75 01 08.0 75049 10 09 75 04 08.0 75049 10 10 75 01 06.0 75049 10 10 75 04 08.0 75049 10 10 75 05 02.0 75049 10 11 75 04 03.0 75049 10 13 75 01 04.5 75049 10 13 75 04 02.0 75049 10 16 75 05 00.5 75049 10 17 75 05 02.5 75049 10 20 75 04 01.5 75049 10 21 75 01 06.0 75049 10 21 75 04 01.0 75049 10 21 75 05 00.4 75049 10 22 75 01 06.0 75049 10 28 75 01 08.0 75049 10 29 75 04 01.0 75049 10 29 75 05 03.0 75049 10 29 75 06 01.0 75049 10 30 75 01 03.0 75049 10 30 75 04 04.0 75049 10 30 75 05 03.8 75049 10 30 75 06 08.0 75049 10 31 75 04 04.0 75049 10 31 75 05 02.0 75049 10 31 75 06 04.0 75049 11 03 75 06 02.0 75049 11 11 75 01 02.0 75049 11 11 75 05 01.2 75049 11 14 75 05 00.3 75049 11 17 75 07 02.5 75049 11 21 75 05 00.5 75049 11 28 75 03 09.0 75049 11 29 75 03 01.0 75049 12 01 75 07 02.0 75049 12 02 75 01 02.0 75049 12 05 75 03 08.0 75049 12 05 75 07 02.0 75049 12 08 75 01 05.0 75049 12 09 75 01 03.0 75049 12 10 75 01 08.0 75049 12 11 75 07 03.0 75049 12 12 75 01 04.0 75049 12 16 75 01 10.0 75049 12 17 75 01 10.0 75049 12 17 75 07 06.0 75049 12 18 75 01 04.0 75049 12 18 75 07 06.0 75049 12 19 75 07 09.0 75049 12 22 75 01 08.0 75049 12 22 75 07 07.0 75049 12 23 75 01 04.0 75049 12 23 75 07 05.5 75049 12 24 75 07 03.0 75049 12 29 75 01 08.0 75049 12 29 75 07 06.0 75049 12 30 75 07 07.5 75049 12 31 75 07 03.5 75050 01 09 76 05 01.0 75050 02 04 76 07 02.5 75050 10 06 75 01 04.0 75050 10 06 75 05 06.2 75050 10 06 75 05 01.0 75050 10 07 75 05 00.5 75050 10 11 75 05 00.7 75050 10 13 75 05 01.5 75050 10 17 75 05 01.6 75050 10 20 75 05 02.0 75050 10 21 75 05 00.4 75050 10 22 75 05 01.5 75050 10 28 75 05 01.0 75050 10 28 75 06 01.0 75050 10 29 75 05 05.0 75050 10 29 75 06 03.0 75050 10 30 75 05 04.5 75050 10 31 75 01 04.0 75050 10 31 75 05 00.7 75050 11 03 75 05 01.0 75050 11 04 75 05 03.0 75050 11 04 75 07 04.0 75050 11 05 75 05 03.0 75050 11 05 75 07 06.0 75050 11 06 75 05 01.5 75050 11 06 75 07 01.0 75050 11 14 75 01 01.0 75050 11 14 75 05 01.5 75050 11 15 75 01 03.0 75050 11 17 75 05 01.5 75050 11 18 75 05 02.0 75050 11 19 75 05 05.5 75050 11 19 75 07 02.0 75050 11 20 75 05 04.0 75050 11 20 75 07 01.0 75050 11 21 75 05 07.0 75050 11 21 75 07 02.0 75050 11 24 75 01 02.0 75050 11 24 75 05 06.0 75050 11 25 75 01 03.0 75050 11 25 75 05 08.5 75050 11 26 75 05 07.7 75050 11 28 75 05 09.0 75050 12 01 75 05 05.5 75050 12 01 75 07 01.0 75050 12 02 75 05 02.5 75050 12 02 75 07 02.0 75050 12 03 75 01 03.0 75050 12 03 75 05 02.0 75050 12 04 75 01 02.0 75050 12 04 75 05 01.5 75050 12 05 75 05 03.5 75050 12 05 75 07 01.0 75050 12 10 75 05 02.0 75050 12 11 75 05 07.5 75050 12 12 75 05 02.0 75050 12 15 75 05 01.5 75050 12 17 75 05 08.5 75050 12 18 75 05 08.3 75051 01 23 76 05 04.5 75051 01 23 76 05 04.5 75051 01 24 76 03 02.5 75051 01 24 76 03 02.5 75051 01 26 76 05 04.0 75051 01 28 76 05 00.6 75051 02 04 76 05 02.0 75051 02 23 76 05 01.5 75051 02 26 76 05 03.0 75051 02 27 76 05 05.5 75051 03 01 76 05 01.0 75051 03 02 76 05 05.5 75051 03 03 76 05 01.5 75051 03 10 76 01 01.0 75051 03 18 76 05 02.0 75051 03 24 76 05 05.5 75051 03 25 76 05 01.0 75051 03 26 76 05 02.5 75051 03 29 76 05 03.5 75051 04 06 76 05 00.5 75051 10 06 75 01 04.0 75051 10 07 75 05 04.8 75051 10 11 75 05 02.0 75051 10 11 75 05 04.0 75051 10 13 75 05 02.0 75051 10 27 75 05 00.3 75051 10 28 75 05 01.5 75051 10 28 75 06 05.0 75051 10 29 75 06 04.0 75051 12 01 75 05 02.0 75051 12 02 75 05 02.8 75051 12 03 75 05 04.5 75051 12 08 75 01 02.0 75051 12 08 75 05 06.3 75051 12 09 75 01 02.0 75051 12 09 75 05 03.0 75051 12 10 75 05 04.5 75051 12 11 75 05 02.0 75051 12 12 75 05 03.0 75051 12 15 75 05 02.0 75052 01 30 76 01 01.0 75052 02 12 76 07 03.0 75052 02 20 76 07 02.0 75052 02 23 76 07 01.5 75052 02 23 76 09 00.3 75052 03 01 76 07 01.0 75052 03 02 76 07 00.5 75052 03 03 76 07 01.0 75052 03 04 76 07 01.0 75052 03 05 76 07 03.0 75052 03 06 76 03 01.5 75052 03 07 76 07 04.0 75052 03 08 76 07 03.0 75052 03 10 76 07 01.0 75052 03 22 76 07 05.5 75052 03 22 76 07 01.5 75052 03 23 76 07 07.0 75052 03 23 76 08 01.5 75052 03 24 76 07 04.5 75052 03 25 76 05 04.5 75052 03 25 76 07 09.0 75052 03 26 76 05 02.5 75052 03 26 76 07 09.0 75052 03 28 76 07 02.0 75052 03 28 76 07 01.0 75052 03 29 76 07 03.0 75052 03 31 76 07 01.0 75052 04 07 76 01 02.0 75052 04 07 76 07 08.0 75052 04 08 76 07 05.0 75052 04 09 76 05 00.5 75052 04 09 76 07 05.0 75052 04 11 76 03 05.0 75052 09 24 75 01 02.0 75052 09 29 75 01 04.0 75052 09 29 75 05 00.5 75052 10 02 75 01 08.0 75052 10 14 75 01 03.0 75052 12 09 75 01 03.0 75053 09 25 75 05 04.0 75053 09 26 75 01 01.0 75053 09 26 75 05 04.0 75053 09 29 75 05 03.0 75053 09 30 75 05 01.2 75054 09 26 75 01 01.0 75054 09 26 75 05 04.5 75054 09 29 75 04 01.5 75054 09 29 75 05 03.0 75054 09 30 75 04 02.5 75054 09 30 75 05 05.0 75054 10 01 75 05 00.5 75054 10 11 75 05 00.3 75054 11 11 75 05 02.0 75054 11 12 75 01 02.0 75054 11 12 75 05 02.0 75054 11 13 75 05 00.6 75054 11 26 75 05 00.3 75055 10 10 75 03 04.5 75055 10 10 75 03 03.0 75055 10 11 75 03 04.0 75055 10 11 75 03 03.5 75055 10 13 75 05 03.0 75055 10 14 75 04 01.5 75055 10 14 75 05 05.5 75055 10 15 75 05 05.0 75055 10 20 75 05 04.0 75055 10 21 75 05 00.4 75055 10 21 75 05 05.0 75055 10 22 75 01 02.0 75055 10 22 75 05 03.1 75055 10 23 75 05 01.1 75056 01 06 76 05 01.0 75056 01 07 76 05 04.0 75056 01 08 76 05 03.0 75056 01 12 76 05 02.5 75056 01 14 76 05 01.0 75056 10 23 75 04 05.0 75056 10 23 75 05 05.0 75056 10 31 75 05 01.0 75056 11 11 75 05 02.5 75056 11 11 75 07 01.0 75056 11 12 75 05 05.0 75056 11 13 75 05 04.0 75056 11 13 75 07 01.0 75056 11 14 75 05 05.0 75056 11 14 75 07 01.5 75056 11 17 75 05 04.5 75056 11 17 75 07 01.0 75056 11 24 75 07 01.0 RTW4TP6P 50 DUCTD DUCT DESIGN 75511 ISOLT ISOMETRIC LAYOUT 75512 GRAED GRAPHIC EDITOR 75513 ATMS ATU MINI SYSTEM 75514 WP WORD PROCESSOR 76000 OVH GENERAL OVERHEAD 1976 76001 PASS U OF A SPRINKLERS PERFORMING ARTS 76002 PDC PARKER DRILLING CAMP -TOTEM ELECTRIC- 76003 NSTP NANA SEWAGE TREATMENT PLANT -SID CLARK- 76004 LMT LANDMARK TOWERS -JIM CLARK- 76005 MWH MC KENZIE APARTMENTS -JOHN MCKENZIE- 76006 OBE FALCONER BLDG. ELECTRICAL HEAT ADDITION -JAN HANSEN- 76007 DLLVA DE LONG LAKE VILLA -JOE KELLY- 76008 MI75056 12 18 75 01 04.0 75057 01 06 76 05 03.5 75057 01 06 76 08 00.5 75057 01 08 76 05 00.5 75057 10 10 75 05 05.0 75057 10 13 75 05 00.5 75057 11 18 75 05 01.0 75057 12 05 75 05 00.5 75058 10 14 75 04 02.0 75058 10 14 75 05 02.0 75058 10 15 75 04 00.5 75058 10 15 75 05 03.0 75058 10 24 75 04 01.0 75058 10 24 75 05 05.7 75058 10 25 75 04 01.5 75058 10 25 75 05 05.3 75058 10 27 75 01 01.0 75058 10 27 75 05 04.4 75058 10 27 75 06 02.0 75058 10 28 75 05 01.0 75058 10 28 75 06 02.0 75059 10 14 75 01 03.5 75059 10 16 75 01 02.0 75060 10 16 75 05 01.8 75060 10 17 75 01 01.0 75060 10 17 75 05 01.5 75060 10 20 75 01 02.0 75060 10 20 75 05 02.5 75060 10 21 75 05 00.4 75061 10 23 75 01 04.0 75061 10 24 75 01 05.0 75061 10 24 75 04 05.0 75061 10 24 75 05 02.2 75061 10 24 75 06 04.5 75061 10 25 75 04 07.5 75061 10 27 75 04 04.0 75061 10 27 75 05 01.3 75061 10 27 75 06 02.0 75061 10 77 75 01 01.0 75062 10 28 75 01 01.0 75062 10 29 75 01 01.0 75063 01 05 76 01 01.0 75063 01 05 76 0M MUSH INN MOTEL -LANE KNORR PLUNKETT- 76009 PS PROCTOR'S SUPERMARKET -ORVILLE PROCTOR- 76010 VLS VALUE LIQUOR STORE -LANE KNORR PLUNKETT 76011 PPAS PALMER PHASE II - ANCH SAND -AS & G 76012 PAPER PAY & PAK ELECTRICAL REVISION -LAMPLIGHTERS 76013 IAS IRONWORKERS APPRENTICE SCHOOL -JOHNSON 76014 WS WAINWRIGHT SCHOOL -TOM LUNSFORD 76015 LOLA LIGHTING OF LUNSFORD'S ACTIVITIES -TOM LUNSFORD 76016 TSC TIMOTHY SUBDIVISION CONDIMINIUMS -TOM LUNSFORD 76017 GFBC GREATER FRIENDSHIP BAPTIST CHURCH -SHEPHARD & ASSOC 76018 APG ANCHORAGE PARKING GARAGE -LANE KNORR & PLUNKETT 76019 AWT ANIAK WIEN TERMINAL -SHEPHARD & ASSOC 76020 AVCPH AVCP HOUSING -LANE KNORR & PLUNKETT 76021 DCW WAREHOUSE FOR DELCO CORP. -BILL JUILANO- 76022 BRC BUDGET RENT A CAR -LAMPLIGHTERS- 76023 BIP BI CENTENNIAL PARK -ALLEY GROUP- 76024 HEA HEAGY APATMENTS 75 UNITS -TOM HAEG- 76025 GOBM GITTINS OFFICE BLDG. MECHANICAL -TOM GITTINS- 76026 UAKB K BUILDING INDIVIDUAL OFFICES -U OF A- 76027 PSW PEPSI COLA WAREHOUSE -R&M- 76028 RIB ROYAL INN LOUNGE AND BAR -SHEFFIELD- 76500 GC76 GENERAL COMPUTER 76601 CR76 COMPUTER REPAIR BILLWEEKP   b  @@@sb@@T #q9cLN郜B#c D D9(   IBD&.LLAXHDw {z y {Ct#D$'(C x {0t EDij-|6S(32!)  wX"G8;;  w' vG  K($#9Iw  w' uGX"9$e/T {  CȕSɅC3#ɖ#Ȗ*K#)/ ,C# # -)( h3 >3S#) ,CCʅCȃCSCS# -) h#q4q -*0\qq8S!KȅC# -)" h)3S#) ,C3 >)3 S#) ,CCȍKq4q0.^! i'  = _")J!WB^! i7"G'WB_^)^)K!5 L32SC' g !K ( h+3 _! ! 3   h3#B_3 0&2! a0&^ C!QCC ^ CKP L#)C? h!?CC#3  /  g1/ q1- l3*K0mPS*K1&$ 1$#*  R" \ ;3*1 #01 g[?HD        ? g ѭ h_0 ?_% 3! !˕;S_)) h ^ 1 SCK! C^ 1+ ?_+ ?_$PLT$TTP$CDR$TTO1$TTO$TTI1$TTI$LPT$PTR$PTP$TTRCC j'P0m2Z'/#;   ?PG_ 1!C!1 ) 3+ W P  ?P PCC j3 2S'P0mS"J 1zR L5 %9+J1d<8 "*7#P+ZA4? 8;+;)J   ?  )? ?3J+J52/BP )- )( !(G_? 8;+ ?ߪ ?G_) ! / *?   0m"JZ_ j'/G_ j'/ j' j/7 j'/1JP ق j' 'G_) aQP8 j' 'G_ j' 'G_^v D +0BILLA V a-  NC#C O (O U(S23)! F  F ' OG F  F ' OG V = ) (1X,S23)!#PC V == YA'COPYRIGHT (C) DGC,1971,1972,1973,1974ALL RIGHTS RESERVED.8 Yd3 !)]Q#C@k\kk)z=~ C){ )u)n@i9nX)mHn  P " <987 41`CS1+2*Hh1NPj#1APgB0g!PA76029A 76 04 16 08 02.0 76500A 76 04 12 05 01.5 76500A 76 04 15 01 01.0 76500A 76 04 15 05 01.0 76501A 76 04 13 05 02.5 !F i3#B)?JK'+KCC0t0p,3*!,J'C3 MG#C[P#3 w0:KK83J_3*^! i.3"J10p a3B+J;;+J_^+3) 3 w8;KS_\q0q!_PqZZ(J#)XB*3 l8qS2SS32 l*8q3"7Ґҕ3'!SK32+ l*8q3#:2 v8q3"K23"@@@32J232 J!3Xq8 \q8q)XqCC2S3!Xq88q)Xq c^! L/' KG_\qRJ00 vK  4q8Y c\qq KJKJDq0 x  4qҊJq4q8qI cq\q8C!C3&)2! UW4q\qq P"q4q O;C_\q8+1111STOP PAUSE EXIT ^>&"_(nJ_#CwTt0Z; \[;Z UBJ@J; 9L"K p'SX)C0Ht*"Tt0Z+  y%B!B _-"9Z] J y99#  K ) 9 #BK y% y?!B ""l l# /"9 9 ;)< "*2Xf29  8 +9 ! A ! K  0#B*J +: K+K @:1" + "+  !+ " :0! 89 9 9 9 9 y !0' Nj I y C y C;# X y 50B#B"B !9 +!9+ ?       9"i 9 #X!B* *99597Z+$ J ;Z;# B"BJ `# # `S:]9 2: S 8`#+ y?)9#  y!Z 2 :Z*  J      B`=UZ9"3 " 0B!E)3 K "  `" ] `X:Y7{?I3Q31.2 :CK!*C!)C C(KQ @C"H!@l8 1 Y`8Y#9X1 9 `f?`:#+3P3tP 3ҐQ3;`1 0BJ#B#B#B B"  AP COPYRIGHT (C) DGC,1971,1972,1973,1974ALL RIGHTS RESERVEDe)i1YIhQh5g KJ J^\@@EP]K]K]KPMV)BP1?Z)=H18MG18B!4M:M:PU@ZZ  U0J JZ!(-&I$M"1*"   bIgI!@`= f?   @   OCYPR VE3 0. 0  I m:PCC A+\9   )i*JPJ `A`Q  y'  A1B Q O)O)  "1B A  1  1:2Q !/ 9)010)*A+9) 19'! ! %!1) !  ) 1:C! !1 8 _ az  < j  q ] =xR) 5J6B !: " .," pB J Z*8`bBB9; ) C!`P9: C {"JBB9 !  "B  ")  J: 2 *! ! ) ) "  /Z p8!/C!.C7 G:+"  4H88#C3Ґ")  yX8#98C ZP** : *J J J   :  15+K0**:2!Y!"C#JPC :  # KC J9"CZ ZB:+')x*9z )u !xBK)l * !j   )f  : #B !^B )Y )U :++9Ђ :#K:+*!E  *Ю )@J")2)-   #!,B:#J`C;ZK!* "J* : #K*K9 |  \  ŀ ZZ B: # K "B ") bq#)ښ#:+c)ϧi)|:)}9}){)| )o:  !)u:8* JZ B3)a: /* JJ )aJ()J J)V*9K -)JJJ & J J*9@ JJ)DJ Й4*=9!B)): *9) 0 5`:`Z:+K!B`K;ZX:   @@az P  ) )))) ) X:8N`@`b@ag@a@   !!" !b!cabK:  20.71J9J@C+@K1D:  &J . p!J e)1* J " BcB "   #)* ) | * #N@* bn !] ڭ)JB J#)B +;#B* +"+J ) j1J) f1JB" **PPB" P9͞ZC {" "b* l* ! ! J *n[!X0:1" "+"+!+ " 8!GW#C )! B") jF* nY9 P@ @!1BBBB!]n! i")jF* n@" !2)B#u# :  :*KJ/" J , !B!*  # 8) K "B!*   * ) #*"#9& &:;Z!\"tB !B;"Z J9 .9 Z9Z ""# y!BB   ""F##""[""[""E""EB : +C": CK# 5B# PC! ,B# PC!4 y y%"#B  4 ? 2  "#B + 6" :C#pC0#X:#)$1! *) *#999 ɺ;0X: !+K e#MTCT # :KC!#';+ ;Z *Z #)>998 4  991 -PPPB @": +C   BJ  )  X W": +K / O L V ' ##" !X: ;! : ' Gb@)a)c)X:N+ |Z) 9 : J9Z0@ {" "X) !* 8QZ)9B" BZQZ)9 """*""""###" baf" djRq@ . 5 ;13#t  EI[m"F! z D/ E j E e PpP@UzTz@X| A A(xHx|X|+X~Pp8B# 0$~~K~ @&0֠   , x?0'BÀp|$%4T (#  S S!A "!< "H)M?8 3B2!%C !"C # !,E,!,E,5*8 ;)X!((C@- 1 - 1S0 J= &- D B : 0} .)PK!PC !C!C !C%!C!PGG G%!C )1 ?KKK!  ! ! # *ڭKKKKK!((CPCCC$# 'G .'% +' )^ #+M!W *'7 ?]0)  ? .?3b) *1C 3B"G G *1"  ;?/l E E@h ,F)V(%[] "C-! *- ^D 8G O) ) *) *' /1# ' G+LW% * *) *K # ;#K,) D N& l T< L W R T F K l  z   $ r x       W - j T  T t T x T T T T  T | T  T d{ T X T L l O k x h q w l SQUASHDELETER RLDRUNMATCHED @ NO MORE CHANNELS. ^D:^D:^D .DISKMKSAVECHAINDEBEXFGBATCHUNLINKSPEBLSPKILLSPDISREVLISTCREATECCONTCDIRBOOTENDLOGREPLACEGDIRMDIRGSYSCPARTCLEARGMEMSMEMXFERBREAK FBREAK.SVSTACK OVERFLOW. LOG FILE ERROR: LOG FILE CLOSED $TTI$TTOCLI.OLCHATRCHLATFCOM.CMFSYSGEN.CMSYSGENASMMACOVLDRAPPENDRENAMEEQUIVFILCOMLOADDUMPTYPEPRINTBPUNCHMKABSALGOLFORTRANFORTREPEAT ERROR. BRACKET ERROR. INITRELEASEINT LFECLGSDAYSTODGTOD * ) *9B  ,  *  B , * *;SS , *) *9 * ,KQKKKC!BPCC# *1; ;# * #+K3 ? Ҝ ,0) , ? .? ,1CKK1KC+39 , ?; ,;S , ^# *1xS7  3&*# *kE# *P1[UQK# *1+#'C +K K # *# * 1+*3 # *#+ +Cy 0*# *:+CC"+ *K"+ * ) !"+ *IP-WODCE0FTBZ# *3# #) *C *3&2# *YSTSMEO TUUP TIFELE RRROCK *# * #B ,CK2 *# *##3!+ J ,1 #K , *   3 B ,3 B ,CC!&C'# !# * 3 #) * *3B ,0e'd P)K)@)K)P@ * *3B ,K*KC!/C!-C0#+ *тJCK) )# *32ҝ1 ) * *3B ,0 ;B@'d #+:28;KC ,S * K1) +13R SR;S ,;1S ,0CS * ! !13SRR #;S ,90 1;S ,CK# * # *    ,3 ,2 * sC)^ *5 K ) "  # *#) "  # )G3 ,13J ,  PC"CK*K *#+  )# *## *# ,+    ) " # ) 1+ .@)410).1%  !)P3 * * *J ,3*! ** *k S!2 * ,2! * ,^E, FILE: ^C ERROR: ^E UNKNOWN ERROR CODE=T0BJZ;Z@J+99"KXS -!, !H-+"*T0BJZ<8 -) H-;X##+3 3FILE WRITE PROTECTEDFILE ALREADY EXISTSFILE DOES NOT EXISTPERMANENT FILEFILE ATTRIBUTE PROTECTEDFILE NOT OPENPK * ,C *ACC# @ =CC!*K)U3# * s ;+ != 9#*1    "!4 1+)#*  !, #   ,/1## * # P)    * P$  .OLLEFT: ^D, USED: ^D MAP.DRK *1  *o m , *f d , *^ \ , PK1&S1 *M * KO #+399 ": ,#+3 "3 ,lPK "CK)S "SKC+! * ,D!^D/^D/^D ^D:^D:^D * , P * * ,  "  "  "  *0 *1 "(} , >C)UPK * *1L C!RC+!T * !I 1B ?[P)# *12 # * , *1*  *5(1()( * ,# "!PC ")!PC ".()! * *  .\LOG.CM^C:^C ** LOG FILE ** ^C [^C:^C] * ,1(. *) * -   έH)1!J ,4 * ,C)1 P * s) " C1P) * s) " + "/#.OR# *VC1LPS)F * GU Q J)B J)C 'B!;P)5 <# )7Pp '3!,P)& -+ !$C! K! *  ,2^C^T^D^Z2.^D^Z2 F.SV   * 1# * q0 2 *Z*:X8!`":Y :2` `Y8 `8 ; CKS1(KK*K@S+K0Ҝ`1R s&( #&(&;#\###.19 ###15 #####̂ &:S 0 EDIT.SV.SV 2#q4q̅CEDIT JOBS A11,A2 ORT/M BILLWEEK BILLAST BILLOUT/O 24/R 1.6 8.11 1:7 8:17 4:FORT3.LB FORT4:FORT4S.LB 5 6:10 15:2 17:5 24:1 C#ʂ S 0 43#Ђ6C vC#ʂPC%Cʭ 33PC#ʂ S 1 33#ЂC vC#ʂPC 5q4q8\qq83"(:\qXss$sLsq")&B"9!s$sLs9q")B:\qPs D N& l T< L W R T F K l  z   $ r x       W - j\ (S" ̊( KHK:BF8(8:9Z  ̊  y 8:9ZR:KK0G  1M2"8(8:J&:K@g8 #-H^ 8yPW"Y-0W2*b` @XX0W 0W ̂ :"3X\ 8\X0W 8 2.  8\P3X\*32 XX"AP.DR IS ERRONEOUS. INSUFFICIENT MEMORY FOR OPERATING SYSTEMCOMCM6 Rh >R 69ZJB V% T ! ! >\MEMOVFL h$TTO  9#   @wXXP XXPCK!QPCC!NPC!KC!LCACCCCCCCCCCCC!# -!+ ! ! # b##C /1H ?#C 7G1+ J#+ҋ 23"")''B3") [G+`P2` L3" "*'G+#K,3*K1B)J . \k8k3#Dk"+Bk8k4k\k)83;NVSC( ) DIMENSION IT(20) CALL OPEN(0,"BILLA",2,IERR,24) DO 9000 I=0,10000 READ(0,200,END=9999) IT(1) 200 FORMAT(S23) IT(3)=IT(3).AND.177400K IT(3)=IT(3)+101K CALL FSEEK(0,I) WRITE(0,210) IT(1) 210 FORMAT(1X,S23) CALL FSEEK(0,I+1) 9000 CONTINUE 9999 END {b |E$$wbi1(,X2S)3!#PCYb%$%m U{ A'D{@~H4hMn_x8 _"B8 #C3 A"#3 #C Aa# ^# - b?# -)s b#3 @CL < 3+ J#B3ҜCSK3 "C = #Ă#ł  3#  >PC >3#  ?  ? [!C#C+#3J# b3C#+P LY 3#P >PS#) ,CI3#  >S#) ,C #) b3ҝ1+P1 L,3)JS#) ,C)#P ># b# a1 1 1 G [FT 3# 3#S) , -)? ) bC'C3 KCPC+h < 7") !OS K*3J+JR3C IGB3B3" 3 KC!)3 I/ǎODŽP3 I/ǥ3"C3 KC3 KC = ) 3K K;+J3 KCǓ KC3 K EC")K1"C1"C3#)J PS   #P+ )CS ?C#Á a1S# -) b# a 3ǂC 3#+ @4C ^P# GKPC3"C I3#B# # ##Ƃ #  # -) b#3 @CACY#) # 3B [7#C#C#C%C% LAS#Ƃ O#  #) D) ) #+K+KO3B#BPB#`3` L3'N)&B"C 6C#C# #) ) 9+3K) [) [VEFDG+3 o#SPSPP3 B' 9+3 +K :#+C+#+K+#BC#3 :+ë3K ;#)ƍ 1 )#S ,C *3)#S+#!J3# :+3K ;# -) b#C#Â# 9)ے :#C#))K3J#+1\kk8C3#B)`PB)ZBCBCC#C# aѪ 61R 1J 1H # aѪ '1C );1; .19 +17 $15 &13 #!+3#̂ 3S 0 4؀ [3#B# 2#k4k̅C 7+ΦC@0+-.ED \k8+3SɶS3/ oO4k\k8#C#C3Ʌ/ q4kO\kk83JJ$CʅPC#ʂ S 0 43#Ђ6C oC#ʂPC%Cʭ 33PC#ʂ S 1 33#ЂC oC#ʂPC 5k4k8\kk83"(:\kXmm$mLmk")&B"9!m$mLm9k")B:\kPm3S#) ,CCʅCȃCSCS# -) b#k4k -*0\kk8S!KȅC# -)" b)3S#) ,C3 >)3 S#) ,CCȍKk4k0.X! c'  = Y")J!WBX! c7"G'WBYX)X)K!5 H32SC' a ! 7K ( b+3 Y B! ! 3   b3#BY3 0&2! [0&X C!QCC X CKP H#)C? b!?CC#3  /  a1/ n1- i3*K0gPS*K1&$ 1$#*  O" V a ;3*1 #01 ? $ *   ! ' - 0 3 6 9 ? a bY0 ? Y3! !Ε;SY)) bX 1 SCK! CX 1  + ?Y+ ?Y$PLT$TTP$CDR$TTO1$TTO$TTI1$TTI$LPT$PTR$PTP$TTR d'P0g"JC2  / o3 '?Y) [Y [YP PCC d3 2S'P0gS"J1h= : "*7#P+ZA4? 8;+;)M   ?  )? ?3J+J55/BP )0 )+ .!+GY? 8;+ ?ߪ ?GY) !/ *? ! !P ".+PK)KPK)K# a8 1  # b81# b8 xX! c.3"J10j [3B+J;;+JYX+3) 3 p8;KSY\k0k!_PkZZ(J#)XB*3 f8kS2SS32 f*8k3"7Ґҕ3'!SK32+ f*8k3#:2 o8k3"K23"@@@32J232 J!3Xk8 \k8k)XkCC2S3!Xk88k)Xk ]\k8C!C3&)2! UW4k\kk K"k4k\k8+zSTOP PAUSE EXIT Tn0Z; \[;Z UBJ@J; 9L"K j'SX)C0Hn*"Tn0Z AT LOC. J, CALLED FROM LOC. ` ?6yXJ aY _3XCC!&C'pC#  !#S b33 #) b b3BY0t'd XP)K)@)K)P@S b3 b3BYX ) Z! X B Xm* !@8mXm1 #K@8mX)K2*KJYC3*7 f8WYX)K2&(!Z֠22J0Xm9 Ɛ8mXm 9P@ @!8m20 2 *Z*:X8!`":Y :2` `Y8 `8 ; CKS1(KK*K@S+K0Ҝ`LLBQx8 9:;<=>?@ABCDEFGHIJKLMNOPQRSmnopqrstuvwxyz{|}~74001 76 01 28 05 01.4 74004 75 12 01 01 14.0 74004 75 12 02 01 01.0 74004 76 03 08 01 13.0 74004 76 03 08 05 12.0 74004 76 03 09 01 18.0 74004 76 03 09 05 12.0 74004 76 03 10 05 06.0 74004 76 03 11 05 02.0 74004 76 03 19 05 01.5 74011 75 12 02 01 01.0 74011 75 12 03 01 02.0 74011 75 12 23 07 01.5 74011 76 01 06 01 04.0 74011 76 01 06 05 02.7 74011 76 04 01 01 03.0 74027 75 12 18 01 01.0 74027 76 01 15 05 01.5 74027 76 03 31 07 01.0 74028 75 08 04 01 01.0 74037 74 11 06 07 07.0 74037 75 11 04 01 02.0 74037 75 11 05 07 01.0 74037 75 11 07 07 03.0 74037 75 11 11 01 02.0 74037 75 11 11 07 05.0 74037 76 02 23 07 01.5 74037 76 02 23 07 00.5 74037 76 02 24 07 02.5 74037 76 03 29 07 01.0 74037 76 03 30 07 05.0 74037 76 03 30 07 03.0 74037 76 03 31 07 04.0 74037 76 04 01 07 08.0 74037 76 04 02 07 08.0 74037 76 04 05 07 09.0 74037 76 04 06 07 06.0 74037 76 04 08 07 03.0 74037 76 04 09 07 03.0 74042 75 07 25 01 04.0 74042 75 12 30 07 00.5 74042 76 02 24 07 04.0 74045 75 11 12 01 04.0 74045 75 11 26 01 02.0 74045 76 01 16 05 00.5 74045 76 02 23 07 01.5 74045 76 02 23 07 01.5 74045 76 03 05 01 01.0 75000 75 07 21 01 03.0 75000 75 07 24 03 01.5 75000 75 07 24 05 00.5 75000 75 07 29 04 02.0 75000 75 07 30 01 02.0 75000 75 08 01 01 03.0 75000 75 08 05 01 03.0 75000 75 08 07 05 02.0 75000 75 08 11 05 01.5 75000 75 08 13 05 00.5 75000 75 08 15 01 04.0 75000 75 08 18 01 05.0 75000 75 09 03 05 00.5 75000 75 09 04 05 01.0 75000 75 09 13 05 01.0 75000 75 09 17 04 06.0 75000 75 10 03 05 01.0 75000 75 10 07 05 01.8 75000 75 10 09 05 07.0 75000 75 10 13 01 01.0 75000 75 10 14 01 02.0 75000 75 10 25 01 02.0 75000 75 10 30 01 01.0 75000 75 11 03 04 02.0 75000 75 11 04 01 02.0 75000 75 11 06 01 01.0 75000 75 11 10 01 01.0 75000 75 11 12 07 03.0 75000 75 11 13 05 01.9 75000 75 11 14 01 04.0 75000 75 11 15 01 03.0 75000 75 11 17 05 01.0 75000 75 11 18 05 04.0 75000 75 11 18 07 02.0 75000 75 11 20 05 01.0 75000 75 11 21 05 01.0 75000 75 11 24 01 02.0 75000 75 11 24 05 01.5 75000 75 11 25 01 02.0 75000 75 11 26 01 03.0 75000 75 12 01 05 01.0 75000 75 12 01 07 02.0 75000 75 12 02 05 02.0 75000 75 12 03 05 01.5 75000 75 12 05 05 01.0 75000 75 12 08 05 01.0 75000 75 12 09 05 01.0 75000 75 12 10 05 01.5 75000 75 12 12 01 01.0 75000 75 12 12 05 01.0 75000 75 12 14 01 12.0 75000 75 12 15 05 01.5 75000 75 12 16 05 01.3 75000 75 12 16 07 08.0 75000 75 12 17 07 03.0 75000 75 12 18 07 01.0 75000 75 12 22 07 01.0 75000 75 12 24 05 04.0 75000 75 12 24 07 01.0 75000 75 12 29 07 01.0 75000 75 12 30 07 01.0 75000 75 12 31 07 00.5 75004 75 08 09 01 03.0 75004 75 08 09 03 01.0 75004 75 08 12 04 01.0 75004 75 08 12 05 04.0 75004 75 08 13 05 03.5 75004 75 08 15 01 02.0 75004 75 08 16 03 03.5 75004 75 08 16 04 08.5 75004 75 08 16 05 08.0 75004 75 08 18 01 02.0 75004 75 08 29 04 01.5 75004 75 10 15 01 11.5 75004 75 10 16 01 06.0 75004 76 02 16 09 00.5 75005 75 07 30 01 01.0 75005 75 07 30 04 06.0 75005 75 07 30 05 06.0 75005 75 07 31 04 06.0 75005 75 07 31 05 00.5 75005 75 08 01 01 01.0 75005 75 08 01 04 03.0 75005 75 08 01 05 00.5 75005 75 09 30 04 04.5 75005 75 12 22 07 01.0 75005 76 01 15 07 07.0 75005 76 01 16 07 01.0 75007 75 09 16 04 03.5 75007 75 09 17 04 03.5 75007 75 09 18 04 07.5 75007 75 09 19 04 07.5 75007 75 09 20 01 03.5 75007 75 09 20 03 03.5 75007 75 09 20 04 08.5 75007 75 09 22 04 05.5 75007 75 09 23 04 05.5 75007 75 09 24 04 04.0 75007 75 09 25 04 03.5 75007 75 09 26 04 03.5 75007 75 09 27 03 01.5 75007 75 09 27 04 04.0 75007 75 09 29 04 05.5 75007 75 10 01 04 03.0 75007 75 10 02 04 01.0 75007 75 10 03 04 04.0 75007 75 10 04 03 03.5 75007 75 10 04 04 08.0 75007 75 10 07 01 04.0 75007 75 10 08 04 01.5 75007 75 10 08 05 05.7 75007 75 10 10 04 00.5 75007 75 10 11 04 05.0 75007 75 10 13 01 01.0 75007 75 10 13 04 06.0 75007 75 10 13 05 01.5 75007 75 10 14 01 04.0 75007 75 10 14 04 04.0 75007 75 10 15 04 08.5 75007 75 10 16 04 08.0 75007 75 10 16 05 06.2 75007 75 10 17 01 01.0 75007 75 10 17 04 08.0 75007 75 10 17 05 02.0 75007 75 10 20 01 05.0 75007 75 10 21 04 01.0 75007 75 10 22 04 06.0 75007 75 10 23 04 03.5 75007 75 10 23 05 01.8 75007 75 10 24 04 02.5 75007 75 10 24 05 01.3 75007 75 10 27 01 04.0 75007 75 10 28 04 01.0 75007 75 10 28 05 05.5 75007 75 10 30 04 01.5 75007 75 10 31 05 00.8 75007 75 11 06 01 02.0 75007 75 11 07 07 04.0 75007 75 11 10 07 03.0 75007 76 01 13 08 03.0 75008 75 07 31 01 03.0 75008 75 07 31 01 06.5 75008 75 11 22 07 00.3 75008 75 11 23 07 02.3 75011 75 08 07 01 02.5 75013 75 08 08 01 02.0 75013 75 08 28 04 07.0 75013 75 09 08 05 02.5 75013 75 09 09 04 02.5 75013 75 09 13 04 02.0 75013 75 09 24 01 02.0 75013 75 09 24 01 02.0 75013 75 09 24 04 04.0 75013 75 09 25 04 02.0 75013 75 09 26 04 03.0 75013 75 10 20 04 02.0 75013 75 10 21 01 02.0 75013 75 10 21 04 02.0 75013 75 10 22 04 01.5 75013 75 10 24 01 03.0 75013 75 10 27 04 04.0 75013 75 10 27 06 02.0 75013 75 10 28 04 07.5 75013 75 10 29 04 08.0 75013 75 11 04 04 03.0 75013 75 11 17 07 01.5 75013 75 11 26 01 03.0 75013 75 12 02 01 00.5 75013 76 01 05 01 01.0 75013 76 01 19 01 02.0 75013 76 01 20 01 02.0 75013 76 01 22 01 05.0 75013 76 01 26 01 02.0 75013 76 03 24 01 02.0 75013 76 03 31 01 01.0 75013 76 04 02 01 01.0 75013 76 04 05 01 02.0 75015 75 10 08 04 00.8 75022 75 07 24 01 01.0 75022 75 11 17 07 01.0 75022 75 11 18 07 03.0 75022 75 11 19 07 01.5 75022 75 11 20 07 03.5 75022 75 11 21 07 04.0 75022 75 11 26 05 00.5 75022 75 11 28 07 04.0 75022 75 12 18 07 01.0 75022 76 01 12 08 05.5 75022 76 01 13 08 03.0 75022 76 01 15 08 01.5 75023 75 11 17 07 01.0 75025 75 08 14 04 02.5 75027 76 01 19 05 00.5 75027 76 01 19 05 00.5 75028 75 08 04 01 03.0 75028 75 08 06 01 03.0 75028 75 08 07 01 01.0 75028 75 08 08 03 04.5 75028 75 08 08 03 02.5 75028 75 08 09 03 04.0 75028 75 08 15 03 07.5 75028 75 09 09 05 01.0 75028 75 09 26 01 04.0 75028 75 10 02 05 01.0 75028 75 10 03 05 04.0 75028 75 10 04 05 03.0 75028 75 10 23 04 01.0 75028 75 10 23 06 08.0 75028 75 10 24 06 04.0 75028 75 10 29 01 07.0 75028 75 10 30 01 04.0 75030 75 07 19 03 04.0 75030 75 07 23 05 01.5 75030 75 07 24 01 02.0 75030 75 08 13 01 04.0 75030 75 08 29 01 02.0 75030 75 08 29 04 04.0 75030 75 08 30 03 03.5 75030 75 09 02 04 08.0 75030 75 09 02 05 07.0 75030 75 09 03 04 10.0 75030 75 09 03 05 08.0 75030 75 09 04 04 04.5 75030 75 09 04 05 07.0 75030 75 09 05 04 07.5 75030 75 09 05 05 01.0 75030 75 09 06 04 11.0 75030 75 09 06 05 09.5 75030 75 09 30 05 00.5 75030 75 10 01 04 00.5 75030 75 10 06 04 06.0 75030 75 10 07 04 05.0 75030 75 10 20 04 04.5 75030 75 10 21 04 04.0 75030 75 10 30 04 03.0 75030 75 10 31 04 02.0 75030 75 11 01 04 04.5 75030 75 11 03 04 05.0 75030 75 11 04 04 04.5 75030 75 11 05 04 08.0 75030 75 11 06 04 08.0 75030 75 11 06 06 01.0 75030 75 11 07 04 08.0 75030 75 11 10 01 05.0 75030 75 11 10 06 05.0 75030 75 11 10 07 05.0 75030 75 11 19 05 02.0 75030 75 11 20 05 04.0 75030 75 11 24 01 01.0 75030 76 01 07 01 04.0 75030 76 01 11 03 04.5 75030 76 01 12 01 02.0 75030 76 01 12 03 02.5 75030 76 01 13 01 04.0 75030 76 01 14 01 08.0 75030 76 01 14 03 02.0 75030 76 01 15 01 04.0 75030 76 01 15 08 01.5 75030 76 01 17 05 01.2 75030 76 01 17 05 01.2 75030 76 01 17 05 01.2 75031 75 07 23 04 01.5 75031 75 07 24 04 03.5 75031 75 07 25 04 07.5 75031 75 07 27 01 02.0 75031 75 07 28 04 03.0 75031 75 07 30 01 01.0 75031 75 08 01 03 07.0 75031 75 08 01 04 03.0 75031 75 08 04 01 01.0 75031 75 08 11 05 01.0 75031 75 08 20 05 05.0 75031 75 08 21 05 09.0 75031 75 08 22 05 03.0 75031 75 08 27 05 00.5 75032 75 07 19 03 06.0 75032 75 07 19 04 06.0 75032 75 07 21 04 02.0 75033 75 11 22 07 00.7 75033 75 11 23 07 06.7 75033 76 03 23 07 02.0 75033 76 03 24 07 05.0 75033 76 03 29 07 01.0 75034 75 07 21 01 03.0 75034 75 07 21 04 02.0 75034 75 07 22 01 04.0 75034 75 07 22 04 08.0 75034 75 07 23 04 06.0 75034 75 07 24 01 01.0 75034 75 07 24 04 05.0 75034 75 07 25 01 01.0 75034 75 07 25 04 01.0 75034 75 07 26 04 05.5 75034 75 07 27 01 03.0 75034 75 07 28 04 05.0 75034 75 07 29 04 04.5 75034 75 07 29 05 01.0 75034 75 07 30 04 03.0 75034 75 08 02 01 04.0 75034 75 08 02 03 03.5 75034 75 08 03 04 08.5 75034 75 08 05 04 03.0 75034 75 08 06 04 05.0 75034 75 08 07 01 00.5 75034 75 08 08 04 01.0 75035 75 07 20 03 01.5 75035 75 07 24 03 01.5 75035 75 08 04 01 03.0 75035 75 08 07 01 01.0 75035 75 08 07 05 02.5 75035 75 08 08 01 02.0 75035 75 08 08 05 08.0 75035 75 08 09 01 01.0 75035 75 08 09 05 06.0 75035 75 08 11 05 02.0 75035 75 08 12 01 03.0 75035 75 08 12 04 00.5 75035 75 08 12 05 00.5 75035 75 08 13 01 01.0 75035 75 08 13 04 07.0 75035 75 08 14 04 03.5 75035 75 08 15 03 01.0 75035 75 08 15 04 07.0 75035 75 08 16 04 02.5 75035 75 08 20 04 01.5 75035 75 10 17 01 02.0 75035 75 12 09 01 01.0 75036 75 08 26 01 04.0 75036 75 08 28 05 05.5 75036 75 08 29 05 05.5 75036 75 08 30 04 07.0 75036 75 08 30 05 04.0 75036 75 09 02 05 02.0 75036 75 09 04 01 04.0 75036 75 09 05 04 01.0 75036 75 09 05 05 04.5 75036 75 09 08 04 08.5 75036 75 09 08 05 05.5 75036 75 09 10 04 01.0 75036 75 09 11 04 03.0 75036 75 09 13 04 02.0 75036 75 09 25 04 00.5 75036 75 09 25 04 02.5 75036 75 09 26 04 02.0 75036 75 10 16 04 01.0 75037 75 07 21 01 02.0 75037 75 07 23 01 04.0 75037 75 07 24 03 01.5 75037 75 07 28 01 01.0 75037 75 08 04 01 01.0 75037 75 08 04 04 04.0 75037 75 08 04 05 07.5 75037 75 08 05 01 02.0 75037 75 08 05 04 02.5 75037 75 08 05 05 04.5 75037 75 08 06 04 03.5 75037 75 08 07 01 01.0 75037 75 08 07 04 07.0 75037 75 08 07 05 04.0 75037 75 08 08 01 03.0 75037 75 08 08 04 07.5 75037 75 08 09 01 04.0 75037 75 08 09 03 01.0 75037 75 08 09 04 07.0 75037 75 08 11 01 03.0 75037 75 08 11 04 09.0 75037 75 08 11 05 02.5 75037 75 08 12 04 07.0 75037 75 08 15 01 02.0 75037 75 08 20 04 02.5 75037 75 O8 06 05 08.5 75038 75 07 21 04 04.0 75039 75 09 16 05 01.5 75039 75 09 19 05 02.0 75039 75 09 20 01 03.5 75039 75 09 20 03 03.5 75039 75 09 22 04 01.5 75039 75 09 22 05 08.5 75039 75 09 23 01 02.0 75039 75 09 23 04 03.5 75039 75 09 23 05 09.0 75039 75 09 24 04 01.0 75039 75 09 24 05 05.0 75039 75 09 25 05 04.0 75039 75 09 27 04 04.5 75039 75 09 29 04 02.0 75039 75 09 29 05 03.0 75039 75 09 30 04 02.0 75039 75 09 30 05 03.3 75039 75 10 01 04 01.5 75039 75 10 01 05 06.0 75039 75 10 02 05 02.4 75039 75 10 06 05 00.5 75039 75 10 07 05 00.5 75039 75 10 17 05 00.4 75039 75 10 22 05 00.9 75039 75 10 23 01 01.0 75039 76 01 06 05 00.5 75040 75 07 22 01 04.0 75040 75 07 23 01 04.0 75040 75 07 24 01 02.0 75040 75 07 25 01 04.0 75040 75 08 11 01 03.0 75040 75 08 12 01 03.0 75040 75 09 08 01 04.0 75040 75 10 10 01 01.0 75040 75 11 03 01 04.0 75040 75 11 05 01 02.0 75040 75 11 06 01 01.0 75041 75 07 24 03 03.5 75041 75 07 29 04 02.0 75041 75 08 04 04 04.0 75041 75 08 05 01 01.0 75041 75 08 05 04 03.0 75041 75 08 06 01 02.0 75041 75 08 07 04 01.0 75041 75 08 14 01 08.0 75041 75 08 16 03 06.0 75041 75 08 16 04 02.0 75041 75 08 19 01 06.0 75041 75 08 20 01 08.0 75041 75 08 20 04 05.0 75041 75 08 21 01 08.0 75041 75 08 21 04 11.0 75041 75 08 22 01 06.0 75041 75 08 22 03 02.8 75041 75 08 22 04 04.5 75041 75 08 25 01 01.0 75041 75 08 26 01 01.0 75041 75 08 27 01 04.0 75041 75 08 27 04 02.5 75041 75 08 29 01 02.0 75041 75 10 08 01 03.0 75041 75 10 10 01 01.0 75041 75 10 17 01 01.0 75041 75 11 18 05 01.0 75041 75 11 18 07 03.0 75041 75 11 19 07 02.0 75041 75 11 21 07 02.0 75041 75 11 29 03 01.0 75041 76 04 05 01 01.0 75042 75 07 27 01 01.0 75042 75 08 01 01 02.0 75042 75 08 01 03 01.5 75042 75 08 02 01 04.0 75042 75 08 02 03 04.5 75042 75 08 11 01 02.0 75042 75 08 12 01 03.0 75042 75 08 12 04 00.5 75042 75 08 13 01 01.0 75042 75 08 13 04 01.0 75042 75 08 13 05 04.0 75042 75 08 14 04 02.0 75042 75 08 14 05 09.0 75042 75 08 15 04 01.0 75042 75 08 15 05 08.5 75042 75 08 18 01 01.0 75042 75 08 20 05 04.0 75042 75 10 22 04 00.5 75042 75 10 22 05 03.1 75042 75 10 23 05 01.6 75042 75 10 27 01 02.0 75042 75 11 04 05 05.5 75042 75 11 04 06 01.0 75042 75 11 04 07 02.0 75042 75 11 05 01 02.0 75042 75 11 05 05 05.5 75042 75 11 05 07 02.0 75042 75 11 06 01 04.0 75042 75 11 06 05 07.0 75042 75 11 07 05 07.0 75042 75 11 07 07 01.0 75042 75 11 10 05 08.0 75042 75 11 11 05 03.0 75042 75 11 11 06 03.0 75042 75 11 13 05 01.0 75042 75 11 17 05 01.0 75042 75 11 19 05 01.0 75042 76 01 21 05 01.3 75042 76 01 21 05 01.3 75042 76 01 22 05 02.0 75042 76 01 22 05 02.0 75042 76 01 26 05 02.8 75042 76 01 27 05 01.0 75042 76 03 16 03 03.0 75042 76 03 29 05 03.0 75042 76 03 30 03 03.0 75042 76 03 30 05 06.0 75042 76 04 01 05 06.5 75042 76 04 02 05 08.0 75042 76 04 05 05 00.5 75042 76 04 06 05 00.5 75042 76 04 07 05 01.0 75043 75 07 30 01 02.0 75043 75 07 30 05 02.0 75043 75 07 31 04 02.0 75043 75 07 31 05 07.5 75043 75 08 01 01 01.0 75043 75 08 01 04 02.5 75043 75 08 01 05 06.5 75043 75 09 05 05 02.5 75043 75 09 16 05 01.0 75044 75 08 05 01 01.0 75044 75 08 08 01 01.0 75044 75 08 08 03 02.0 75044 75 08 09 03 02.0 75044 75 08 22 01 02.0 75044 75 08 22 04 03.0 75044 75 08 23 04 07.2 75044 75 08 25 01 01.0 75044 75 08 25 04 02.0 75044 75 08 25 05 01.5 75044 75 08 26 01 02.0 75044 75 08 26 04 06.0 75044 75 08 26 05 01.5 75044 75 08 27 01 04.0 75044 75 08 27 04 02.5 75044 75 08 27 05 00.5 75044 75 09 16 05 01.0 75045 75 08 18 03 03.5 75045 75 08 19 03 01.0 75045 75 08 22 03 01.0 75045 75 09 09 04 06.5 75045 75 09 10 04 07.5 75045 75 09 11 04 03.0 75045 75 09 15 04 01.0 75045 75 09 16 05 01.0 75045 75 09 25 05 00.5 75504A 76 03 24 09 03.5 75504A 76 03 25 09 02.0 75504A 76 03 26 09 03.0 75504A 76 03 29 09 01.0 75504A 76 03 30 01 04.0 75504A 76 03 30 09 01.5 75504A 76 03 31 09 06.0 75504A 76 04 01 09 04.0 75504A 76 04 02 09 07.0 75504A 76 04 05 01 03.0 75504A 76 04 05 09 01.0 75504A 76 04 06 01 02.0 75504A 76 04 06 09 04.0 75504A 76 04 08 09 02.0 75504A 76 04 09 09 01.0 75505A 75 10 18 01 04.0 75505A 75 10 23 01 03.0 75505A 75 10 28 01 03.0 75506A 75 11 01 01 06.0 75506A 75 11 03 06 05.0 75506A 75 11 04 06 05.0 75506A 75 11 05 06 08.0 75506A 75 11 06 06 07.0 75506A 75 11 07 06 08.0 75506A 75 11 10 06 04.0 75506A 75 11 11 06 05.0 75506A 75 11 21 01 08.0 75506A 75 11 22 01 04.0 75507A 75 11 17 01 08.0 75507A 75 11 18 01 08.0 75507A 75 11 20 01 08.0 75507A 75 11 23 01 08.0 75507A 75 11 25 01 03.0 75507A 75 12 04 05 06.5 75507A 75 12 05 05 03.0 75507A 75 12 08 05 01.5 75507A 75 12 15 05 03.5 75507A 75 12 16 05 07.0 75507A 75 12 17 05 03.5 75507A 76 01 06 05 01.0 75507A 76 01 07 05 04.0 75507A 76 01 08 05 03.5 75507A 76 01 09 05 06.0 75507A 76 01 22 05 05.0 75507A 76 01 22 05 05.0 75507A 76 01 23 05 01.5 75507A 76 01 23 05 01.5 75507A 76 01 27 01 04.0 75507A 76 01 27 05 05.0 75507A 76 01 28 05 01.6 75507A 76 01 30 05 02.0 75507A 76 01 31 01 03.0 75507A 76 02 03 05 04.0 75507A 76 02 16 01 08.0 75507A 76 02 17 01 08.0 75507A 76 02 18 01 08.0 75507A 76 02 19 01 08.0 75507A 76 02 20 01 08.0 75507A 76 02 23 01 08.0 75507A 76 02 24 01 08.0 75507A 76 02 25 01 08.0 75507A 76 02 26 01 08.0 75507A 76 02 27 01 08.0 75507A 76 03 01 01 08.0 75507A 76 03 02 01 03.0 75507A 76 03 03 01 03.0 75507A 76 03 04 01 03.0 75507A 76 03 05 01 06.0 75507A 76 03 10 01 05.0 75508A 75 10 30 05 00.7 75508A 75 12 15 01 04.0 75509A 76 01 12 01 03.0 75509A 76 01 13 01 04.0 75512A 76 01 06 01 04.0 75512A 76 01 08 01 02.0 75512A 76 01 09 01 02.0 75513A 75 12 03 01 03.0 75514A 75 01 03 01 06.0 75514A 76 01 09 05 02.0 75514A 76 01 11 01 04.0 75514A 76 01 13 05 03.5 75514A 76 01 14 05 04.5 75514A 76 01 15 05 07.0 75514A 76 01 16 05 01.3 75514A 76 01 29 05 05.0 75514A 76 01 30 05 05.0 75514A 76 04 01 05 03.0 75514A 76 04 10 05 06.0 75540A 76 04 07 09 01.0 76000A 76 01 05 01 06.0 76000A 76 01 05 07 01.5 76000A 76 01 05 08 02.0 76000A 76 01 06 07 01.0 76000A 76 01 06 08 05.5 76000A 76 01 07 07 01.0 76000A 76 01 07 08 02.0 76000A 76 01 08 01 06.0 76000A 76 01 08 05 01.0 76000A 76 01 08 07 00.5 76000A 76 01 09 08 02.5 76000A 76 01 12 01 05.0 76000A 76 01 12 05 00.5 76000A 76 01 12 08 01.0 76000A 76 01 12 08 01.0 76000A 76 01 13 05 01.0 76000A 76 01 13 08 02.0 76000A 76 01 14 05 00.5 76000A 76 01 14 07 00.5 76000A 76 01 14 08 08.0 76000A 76 01 15 08 05.0 76000A 76 01 19 05 01.5 76000A 76 01 19 05 01.5 76000A 76 01 19 08 04.0 76000A 76 01 19 08 04.0 76000A 76 01 20 05 03.5 76000A 76 01 20 05 03.5 76000A 76 01 20 08 08.0 76000A 76 01 20 08 08.0 76000A 76 01 21 05 02.0 76000A 76 01 21 05 02.0 76000A 76 01 21 08 06.0 76000A 76 01 21 08 06.0 76000A 76 01 22 05 01.0 76000A 76 01 22 05 01.0 76000A 76 01 22 07 01.0 76000A 76 01 22 07 01.0 76000A 76 01 22 08 04.0 76000A 76 01 22 08 04.0 76000A 76 01 23 05 00.5 76000A 76 01 23 05 00.5 76000A 76 01 23 08 01.0 76000A 76 01 23 08 01.0 76000A 76 01 26 05 01.5 76000A 76 01 26 08 00.8 76000A 76 01 27 01 03.0 76000A 76 01 27 05 01.0 76000A 76 01 27 05 01.5 76000A 76 01 27 08 08.0 76000A 76 01 28 01 08.0 76000A 76 01 28 05 02.0 76000A 76 01 28 08 08.0 76000A 76 01 29 01 04.0 76000A 76 01 29 01 02.0 76000A 76 01 29 05 02.0 76000A 76 01 29 05 01.0 76000A 76 01 29 08 02.0 76000A 76 01 30 05 01.0 76000A 76 02 02 01 03.0 76000A 76 02 02 08 02.0 76000A 76 02 03 08 02.0 76000A 76 02 05 01 08.0 76000A 76 02 05 05 08.0 76000A 76 02 05 07 08.0 76000A 76 02 06 01 08.0 76000A 76 02 06 05 08.0 76000A 76 02 06 07 08.0 76000A 76 02 07 01 08.0 76000A 76 02 07 05 08.0 76000A 76 02 09 07 08.0 76000A 76 02 10 08 02.0 76000A 76 02 11 08 05.0 76000A 76 02 12 05 02.0 76000A 76 02 12 08 04.0 76000A 76 02 12 08 01.0 76000A 76 02 12 09 08.0 76000A 76 02 13 05 02.5 76000A 76 02 13 09 08.0 76000A 76 02 16 08 08.0 76000A 76 02 16 09 07.5 76000A 76 02 17 05 01.0 76000A 76 02 17 08 04.0 76000A 76 02 17 09 08.0 76000A 76 02 18 05 01.0 76000A 76 02 18 08 02.0 76000A 76 02 18 09 08.0 76000A 76 02 19 05 02.0 76000A 76 02 19 07 02.0 76000A 76 02 19 08 04.0 76000A 76 02 19 08 04.0 76000A 76 02 19 09 08.0 76000A 76 02 20 05 02.0 76000A 76 02 20 07 02.5 76000A 76 02 20 08 08.0 76000A 76 02 20 09 08.0 76000A 76 02 23 05 04.0 76000A 76 02 23 07 01.5 76000A 76 02 23 08 08.0 76000A 76 02 23 09 07.7 76000A 76 02 24 08 03.5 76000A 76 02 24 09 08.0 76000A 76 02 25 05 01.5 76000A 76 02 25 08 05.0 76000A 76 02 25 09 08.0 76000A 76 02 26 05 00.5 76000A 76 02 26 07 08.0 76000A 76 02 26 08 08.0 76000A 76 02 26 09 08.0 76000A 76 02 27 05 01.0 76000A 76 02 27 07 08.0 76000A 76 02 27 08 08.0 76000A 76 02 27 09 08.0 76000A 76 03 01 05 00.5 76000A 76 03 01 08 05.0 76000A 76 03 01 09 08.0 76000A 76 03 02 05 01.5 76000A 76 03 02 07 02.5 76000A 76 03 02 08 06.0 76000A 76 03 02 09 08.0 76000A 76 03 03 05 01.5 76000A 76 03 03 08 02.0 76000A 76 03 03 09 08.0 76000A 76 03 05 05 02.0 76000A 76 03 05 08 02.0 76000A 76 03 05 09 08.0 76000A 76 03 08 08 04.0 76000A 76 03 08 09 08.0 76000A 76 03 09 07 02.0 76000A 76 03 09 08 01.0 76000A 76 03 10 01 02.0 76000A 76 03 10 08 01.0 76000A 76 03 10 08 04.0 76000A 76 03 10 09 04.0 76000A 76 03 11 01 08.0 76000A 76 03 11 05 02.0 76000A 76 03 11 08 02.0 76000A 76 03 11 09 04.0 76000A 76 03 12 05 01.0 76000A 76 03 12 07 02.0 76000A 76 03 12 08 02.0 76000A 76 03 16 07 08.0 76000A 76 03 17 05 02.0 76000A 76 03 17 07 08.0 76000A 76 03 17 08 02.0 76000A 76 03 18 05 02.0 76000A 76 03 18 07 08.0 76000A 76 03 18 08 02.0 76000A 76 03 19 05 02.0 76000A 76 03 19 07 08.0 76000A 76 03 19 08 03.0 76000A 76 03 19 08 05.0 76000A 76 03 22 05 01.0 76000A 76 03 22 07 02.0 76000A 76 03 22 08 08.0 76000A 76 03 23 01 03.0 76000A 76 03 23 05 01.0 76000A 76 03 23 08 06.5 76000A 76 03 23 09 08.0 76000A 76 03 24 05 00.5 76000A 76 03 24 08 05.0 76000A 76 03 24 09 04.5 76000A 76 03 25 05 01.0 76000A 76 03 25 09 06.0 76000A 76 03 26 08 02.5 76000A 76 03 26 09 05.0 76000A 76 03 29 01 01.0 76000A 76 03 29 05 02.0 76000A 76 03 29 08 06.5 76000A 76 03 29 09 07.0 76000A 76 03 30 01 01.5 76000A 76 03 30 05 01.0 76000A 76 03 30 08 04.0 76000A 76 03 30 09 06.5 76000A 76 03 31 07 02.0 76000A 76 03 31 08 02.0 76000A 76 03 31 09 02.0 76000A 76 04 01 05 01.0 76000A 76 04 01 09 04.0 76000A 76 04 02 09 01.0 76000A 76 04 05 05 01.0 76000A 76 04 05 09 07.0 76000A 76 04 06 05 01.5 76000A 76 04 06 07 02.0 76000A 76 04 06 09 04.0 76000A 76 04 07 08 01.0 76000A 76 04 07 09 07.0 76000A 76 04 08 09 06.0 76000A 76 04 09 05 01.0 76000A 76 04 09 09 07.0 76001A 76 01 05 08 03.0 76002A 76 01 07 08 02.0 76003A 76 01 07 01 04.0 76003A 76 01 07 08 02.0 76003A 76 01 08 08 06.5 76003A 76 01 30 01 05.0 76003A 76 01 30 01 02.0 76003A 76 01 30 01 02.0 76003A 76 01 30 08 01.0 76003A 76 02 02 01 02.0 76003A 76 02 03 01 06.0 76003A 76 02 04 01 02.0 76004A 76 01 08 07 02.0 76004A 76 01 10 07 04.0 76005A 76 01 09 08 01.5 76005A 76 01 10 03 05.5 76005A 76 01 11 03 01.0 76005A 76 01 12 05 05.5 76005A 76 01 13 05 04.0 76006A 76 01 16 05 02.7 76007A 76 01 29 01 01.0 76008A 76 01 29 08 06.0 76008A 76 01 30 03 05.5 76008A 76 01 30 08 06.0 76008A 76 02 02 08 01.0 76008A 76 02 02 08 06.0 76008A 76 02 03 08 01.5 76008A 76 02 03 08 06.0 76008A 76 02 04 08 02.0 76008A 76 02 04 08 08.0 76008A 76 02 05 08 00.5 76008A 76 02 05 08 08.0 76008A 76 02 06 08 06.5 76008A 76 02 09 08 08.0 76008A 76 02 10 08 04.0 76008A 76 02 11 08 01.0 76008A 76 02 17 08 02.0 76008A 76 02 18 08 06.0 76008A 76 03 04 08 02.0 76008A 76 03 05 08 06.0 76008A 76 03 09 08 00.5 76008A 76 03 10 08 01.0 76009A 76 02 02 01 02.0 76009A 76 02 16 05 01.5 76009A 76 02 24 05 15.5 76009A 76 02 25 05 01.5 76009A 76 02 26 05 07.0 76009A 76 02 27 05 01.5 76009A 76 02 28 05 04.0 76009A 76 03 01 05 05.5 76009A 76 03 02 05 01.5 76009A 76 04 06 05 00.5 76010A 76 02 10 08 02.0 76010A 76 02 11 08 02.0 76010A 76 02 12 08 07.0 76010A 76 02 13 08 04.0 76010A 76 02 17 08 02.0 76010A 76 02 24 08 04.5 76010A 76 02 25 08 03.0 76010A 76 03 01 08 01.0 76010A 76 03 18 08 03.0 76011A 76 02 09 05 01.5 76011A 76 02 10 05 03.5 76011A 76 02 12 05 01.0 76011A 76 02 12 05 07.0 76011A 76 02 13 05 05.5 76011A 76 02 16 05 07.0 76011A 76 02 17 05 04.0 76011A 76 02 18 05 02.5 76011A 76 02 19 05 05.5 76011A 76 02 20 05 04.0 76011A 76 02 23 05 04.5 76011A 76 02 24 05 02.0 76011A 76 03 03 05 02.5 76011A 76 03 05 05 02.0 76011A 76 03 06 05 01.0 76011A 76 03 12 05 02.0 76011A 76 03 16 05 03.5 76011A 76 03 17 05 02.5 76011A 76 03 18 05 03.0 76011A 76 03 19 05 02.0 76011A 76 03 22 05 05.0 76011A 76 03 22 05 02.0 76011A 76 03 23 05 07.0 76011A 76 03 24 05 03.0 76011A 76 03 25 05 01.0 76011A 76 03 26 05 01.5 76011A 76 04 05 05 02.5 76012A 76 02 19 07 04.0 76012A 76 03 05 07 06.0 76012A 76 03 11 07 01.0 76012A 76 03 12 07 06.0 76012A 76 03 17 05 01.0 76012A 76 03 18 05 02.0 76014A 76 03 01 08 02.0 76014A 76 03 02 01 05.0 76014A 76 03 02 08 02.0 76014A 76 03 03 01 05.0 76014A 76 03 03 08 06.0 76014A 76 03 04 08 06.0 76014A 76 03 06 03 00.5 76014A 76 03 08 07 06.0 76014A 76 03 08 08 04.0 76014A 76 03 09 07 01.0 76014A 76 03 09 07 02.0 76014A 76 03 09 07 02.0 76014A 76 03 09 08 05.0 76014A 76 03 10 07 06.0 76014A 76 03 10 08 02.0 76014A 76 03 11 07 07.0 76014A 76 03 11 08 02.0 76014A 76 03 15 08 08.0 76014A 76 03 16 08 08.0 76014A 76 03 17 05 02.5 76014A 76 03 17 08 06.0 76014A 76 03 18 08 03.0 76014A 76 03 30 01 02.5 76014A 76 03 30 08 04.0 76014A 76 03 31 08 06.0 76014A 76 04 01 01 02.0 76014A 76 04 01 08 01.0 76014A 76 04 05 08 00.5 76014A 76 04 07 01 02.0 76014A 76 04 09 08 01.0 76014A 76 04 10 01 09.0 76015A 76 03 03 07 03.0 76015A 76 03 04 07 02.0 76016A 76 03 09 07 02.0 76016A 76 03 09 08 01.5 76016A 76 03 11 08 02.0 76017A 76 04 02 01 01.0 76017A 76 04 11 03 01.0 76018A 76 03 11 08 02.0 76018A 76 03 12 08 06.0 76018A 76 03 24 08 03.0 76018A 76 03 26 08 01.0 76018A 76 04 09 08 01.5 76019A 76 03 24 01 01.0 76019A 76 03 26 01 08.0 76019A 76 03 30 01 04.0 76019A 76 03 31 01 03.0 76019A 76 03 31 05 04.0 76020A 76 03 26 08 04.5 76020A 76 03 29 08 01.5 76021A 76 03 29 01 01.0 76021A 76 04 05 01 02.0 76021A 76 04 08 01 03.0 76021A 76 04 09 01 03.0 76021A 76 04 09 03 01.0 76022A 76 03 05 03 05.0 76022A 76 03 06 03 01.5 76023A 76 04 01 01 01.0 76023A 76 04 06 01 02.0 76024A 76 04 01 07 01.0 76024A 76 04 01 08 05.0 76024A 76 04 02 01 04.0 76024A 76 04 02 08 01.0 76024A 76 04 04 03 02.0 76024A 76 04 04 03 02.5 76024A 76 04 05 03 04.5 76024A 76 04 05 05 05.0 76024A 76 04 05 08 02.0 76024A 76 04 06 01 02.0 76024A 76 04 06 05 05.5 76024A 76 04 06 08 04.0 76024A 76 04 07 03 03.0 76024A 76 04 07 05 07.5 76024A 76 04 08 01 01.0 76024A 76 04 08 05 08.5 76024A 76 04 09 05 06.5 76024A 76 04 10 03 01.0 76025A 76 04 01 08 02.0 76025A 76 04 02 01 02.0 76025A 76 04 02 08 07.0 76025A 76 04 03 03 01.0 76025A 76 04 04 03 02.5 76025A 76 04 05 08 05.5 76025A 76 04 06 08 05.5 76025A 76 04 07 08 07.5 76025A 76 04 08 08 08.0 76025A 76 04 09 03 07.0 76025A 76 04 09 08 06.5 76025A 76 04 10 03 03.5 76025A 76 04 11 08 04.0 76026A 76 04 06 01 01.0 76027A 76 04 09 01 03.0 76500A 76 01 23 05 01.5 76500A 76 01 23 05 01.5 76500A 76 01 28 05 03.5 76500A 76 01 30 01 04.0 76500A 76 01 31 05 04.0 76500A 76 02 03 01 02.0 76500A 76 02 04 01 04.0 76500A 76 02 09 05 08.0 76500A 76 02 10 01 12.0 76500A 76 02 10 05 05.5 76500A 76 02 11 01 12.0 76500A 76 02 11 05 08.5 76500A 76 02 12 01 12.0 76500A 76 02 13 01 12.0 76500A 76 02 16 05 00.5 76500A 76 02 17 05 04.0 76500A 76 02 18 05 03.0 76500A 76 02 20 05 02.0 76500A 76 02 27 05 01.0 76500A 76 03 01 05 02.0 76500A 76 03 03 05 04.0 76500A 76 03 04 05 09.0 76500A 76 03 04 07 01.0 76500A 76 03 05 03 04.0 76500A 76 03 05 05 05.0 76500A 76 03 06 03 01.5 76500A 76 03 10 05 03.0 76500A 76 03 13 05 03.0 76500A 76 03 15 05 06.0 76500A 76 03 24 01 06.0 76500A 76 03 26 05 02.0 76500A 76 03 29 01 02.0 76500A 76 03 31 01 02.0 76500A 76 04 03 01 10.0 76500A 76 04 05 01 03.0 76500A 76 04 06 01 02.0 76500A 76 04 08 01 02.0 76500A 76 04 09 01 02.0 76501A 76 02 01 05 01.0 76501A 76 02 02 05 03.0 76501A 76 02 04 05 07.5 76501A 76 03 11 05 05.0 76501A 76 03 12 05 05.0 76514A 76 01 20 05 02.0 76514A 76 01 20 05 02.0 76514A 76 03 24 05 01.5 76514A 76 03 25 05 01.0 76514A 76 03 30 05 01.0 76601A 76 01 31 01 06.0 76601A 76 02 02 01 03.0 76601A 76 03 16 05 04.5 76601A 76 03 17 05 01.0 76601A 76 03 19 05 02.5 75045 76 01 09 08 02.5 75045 76 01 22 08 04.0 75045 76 01 22 08 04.0 75046 75 08 19 03 03.0 75046 75 08 22 03 03.5 75046 75 08 22 03 01.5 75046 75 08 22 04 01.0 75046 75 08 22 05 06.0 75046 75 08 23 04 01.3 75046 75 08 23 05 08.5 75046 75 08 25 01 02.0 75046 75 08 25 04 05.5 75046 75 08 25 05 06.0 75046 75 08 26 01 01.0 75046 75 08 26 04 02.5 75046 75 08 26 05 04.5 75046 75 08 27 01 04.0 75046 75 08 27 04 03.5 75046 75 08 27 05 05.5 75046 75 08 28 01 04.0 75046 75 08 28 04 02.0 75046 75 08 28 05 03.0 75046 75 08 29 04 03.0 75046 75 08 29 05 00.5 75046 75 09 17 05 03.5 75046 75 09 18 05 02.5 75047 75 09 05 01 01.0 75047 75 09 13 04 04.0 75047 75 09 13 05 07.5 75047 75 09 15 04 08.5 75047 75 09 16 04 05.0 75047 75 09 18 04 01.0 75047 75 09 19 04 01.0 75047 75 09 20 01 02.0 75047 75 09 20 03 02.0 75047 75 09 20 04 00.5 75047 75 09 24 01 02.0 75047 75 10 02 04 02.0 75047 75 10 02 05 02.0 75047 75 10 03 04 03.0 75047 75 10 06 04 01.0 75047 75 10 10 05 00.4 75047 75 10 27 01 01.0 75047 75 11 14 01 01.0 75047 75 11 14 05 02.5 75047 75 11 17 07 01.0 75047 76 03 31 01 02.0 75048 75 08 29 01 02.0 75048 75 08 30 03 04.0 75048 75 09 09 05 08.0 75048 75 09 10 04 01.0 75048 75 09 10 05 09.5 75048 75 09 11 04 04.0 75048 75 09 11 05 08.0 75048 75 09 12 04 09.0 75048 75 09 12 05 07.0 75048 75 09 15 05 01.0 75048 75 09 16 05 01.0 75048 75 10 01 05 01.0 75048 75 10 10 05 00.7 75048 75 10 27 05 03.0 75048 75 11 11 05 00.5 75048 75 11 12 05 01.0 75048 75 12 12 05 01.0 75049 75 09 22 04 01.5 75049 75 09 25 01 02.0 75049 75 09 27 03 07.0 75049 75 09 30 01 08.0 75049 75 10 01 04 03.0 75049 75 10 02 04 06.0 75049 75 10 03 01 08.0 75049 75 10 03 04 02.0 75049 75 10 04 03 04.5 75049 75 10 04 04 01.0 75049 75 10 06 04 01.0 75049 75 10 07 01 04.0 75049 75 10 08 01 01.0 75049 75 10 08 04 06.5 75049 75 10 08 05 00.3 75049 75 10 09 01 08.0 75049 75 10 09 04 08.0 75049 75 10 10 01 06.0 75049 75 10 10 04 08.0 75049 75 10 10 05 02.0 75049 75 10 11 04 03.0 75049 75 10 13 01 04.5 75049 75 10 13 04 02.0 75049 75 10 16 05 00.5 75049 75 10 17 05 02.5 75049 75 10 20 04 01.5 75049 75 10 21 01 06.0 75049 75 10 21 04 01.0 75049 75 10 21 05 00.4 75049 75 10 22 01 06.0 75049 75 10 28 01 08.0 75049 75 10 29 04 01.0 75049 75 10 29 05 03.0 75049 75 10 29 06 01.0 75049 75 10 30 01 03.0 75049 75 10 30 04 04.0 75049 75 10 30 05 03.8 75049 75 10 30 06 08.0 75049 75 10 31 04 04.0 75049 75 10 31 05 02.0 75049 75 10 31 06 04.0 75049 75 11 03 06 02.0 75049 75 11 11 01 02.0 75049 75 11 11 05 01.2 75049 75 11 14 05 00.3 75049 75 11 17 07 02.5 75049 75 11 21 05 00.5 75049 75 11 28 03 09.0 75049 75 11 29 03 01.0 75049 75 12 01 07 02.0 75049 75 12 02 01 02.0 75049 75 12 05 03 08.0 75049 75 12 05 07 02.0 75049 75 12 08 01 05.0 75049 75 12 09 01 03.0 75049 75 12 10 01 08.0 75049 75 12 11 07 03.0 75049 75 12 12 01 04.0 75049 75 12 16 01 10.0 75049 75 12 17 01 10.0 75049 75 12 17 07 06.0 75049 75 12 18 01 04.0 75049 75 12 18 07 06.0 75049 75 12 19 07 09.0 75049 75 12 22 01 08.0 75049 75 12 22 07 07.0 75049 75 12 23 01 04.0 75049 75 12 23 07 05.5 75049 75 12 24 07 03.0 75049 75 12 29 01 08.0 75049 75 12 29 07 06.0 75049 75 12 30 07 07.5 75049 75 12 31 07 03.5 75049 76 01 05 07 06.0 75049 76 01 06 07 08.0 75049 76 01 06 08 02.0 75049 76 01 07 07 08.0 75049 76 01 07 08 02.0 75049 76 01 08 07 05.0 75049 76 01 08 08 01.5 75049 76 01 09 01 08.8 75049 76 01 09 03 09.5 75049 76 01 09 07 09.0 75049 76 01 10 01 08.0 75049 76 01 10 03 03.5 75049 76 01 10 07 04.0 75049 76 01 12 03 02.5 75049 76 01 12 07 09.0 75049 76 01 13 07 10.0 75049 76 01 14 05 02.0 75049 76 01 14 07 08.5 75049 76 01 15 07 02.5 75049 76 01 16 01 09.0 75049 76 01 16 01 09.0 75049 76 01 16 03 09.0 75049 76 01 16 05 03.5 75049 76 01 16 07 07.0 75049 76 01 17 01 08.0 75049 76 01 17 01 08.0 75049 76 01 17 03 08.0 75049 76 01 17 03 08.0 75049 76 01 17 03 08.0 75049 76 01 17 05 05.3 75049 76 01 17 05 05.3 75049 76 01 17 05 05.3 75049 76 01 17 07 06.5 75049 76 01 17 07 06.5 75049 76 01 17 07 06.5 75049 76 01 18 01 06.0 75049 76 01 19 05 05.5 75049 76 01 19 05 05.5 75049 76 01 19 07 01.5 75049 76 01 19 07 06.5 75049 76 01 19 07 01.5 75049 76 01 19 07 01.5 75049 76 01 19 07 06.5 75049 76 01 19 07 01.5 75049 76 01 20 01 02.0 75049 76 01 20 03 03.5 75049 76 01 20 03 03.5 75049 76 01 20 05 03.5 75049 76 01 20 05 03.5 75049 76 01 20 07 01.0 75049 76 01 20 07 08.0 75049 76 01 20 07 01.0 75049 76 01 20 07 08.0 75049 76 01 21 01 01.0 75049 76 01 21 05 06.0 75049 76 01 21 05 06.0 75049 76 01 21 07 08.0 75049 76 01 21 07 08.0 75049 76 01 22 01 03.0 75049 76 01 22 03 03.0 75049 76 01 22 03 03.0 75049 76 01 22 07 07.0 75049 76 01 22 07 07.0 75049 76 01 23 03 08.5 75049 76 01 23 03 08.5 75049 76 01 23 07 08.0 75049 76 01 23 07 08.0 75049 76 01 24 03 04.5 75049 76 01 24 03 04.5 75049 76 01 26 01 06.0 75049 76 01 26 07 08.0 75049 76 01 27 01 04.0 75049 76 01 27 07 08.0 75049 76 01 28 07 08.0 75049 76 01 29 07 02.0 75049 76 01 29 07 08.0 75049 76 01 30 03 06.5 75049 76 01 30 07 01.5 75049 76 01 30 07 08.0 75049 76 01 31 03 12.0 75049 76 01 31 07 08.0 75049 76 02 01 07 03.0 75049 76 02 02 05 06.0 75049 76 02 02 07 01.0 75049 76 02 02 07 08.0 75049 76 02 03 05 04.0 75049 76 02 03 07 06.0 75049 76 02 03 07 02.0 75049 76 02 04 05 04.0 75049 76 02 04 07 01.5 75049 76 02 04 07 04.0 75049 76 02 06 08 01.5 75049 76 02 10 07 05.0 75049 76 02 10 07 03.0 75049 76 02 11 07 08.0 75049 76 02 12 07 05.0 75049 76 02 13 07 01.0 75049 76 02 13 07 08.0 75049 76 02 16 07 08.0 75049 76 02 17 07 01.0 75049 76 02 17 07 06.0 75049 76 02 17 07 02.0 75049 76 02 18 05 02.0 75049 76 02 18 07 00.5 75049 76 02 18 07 05.0 75049 76 02 18 07 02.5 75049 76 02 19 07 02.0 75049 76 02 20 07 03.5 75049 76 02 24 07 01.5 75049 76 02 25 07 07.0 75049 76 03 01 01 04.0 75049 76 03 01 07 05.0 75049 76 03 02 07 05.0 75049 76 03 03 07 05.0 75049 76 03 04 07 01.0 75049 76 03 04 07 03.0 75049 76 03 09 07 05.0 75049 76 03 29 07 04.0 75049 76 04 02 03 06.0 75049 76 04 02 07 01.0 75049 76 04 03 03 08.5 75049 76 04 04 03 00.5 75049 76 04 05 07 01.0 75050 75 10 06 01 04.0 75050 75 10 06 05 06.2 75050 75 10 06 05 01.0 75050 75 10 07 05 00.5 75050 75 10 11 05 00.7 75050 75 10 13 05 01.5 75050 75 10 17 05 01.6 75050 75 10 20 05 02.0 75050 75 10 21 05 00.4 75050 75 10 22 05 01.5 75050 75 10 28 05 01.0 75050 75 10 28 06 01.0 75050 75 10 29 05 05.0 75050 75 10 29 06 03.0 75050 75 10 30 05 04.5 75050 75 10 31 01 04.0 75050 75 10 31 05 00.7 75050 75 11 03 05 01.0 75050 75 11 04 05 03.0 75050 75 11 04 07 04.0 75050 75 11 05 05 03.0 75050 75 11 05 07 06.0 75050 75 11 06 05 01.5 75050 75 11 06 07 01.0 75050 75 11 14 01 01.0 75050 75 11 14 05 01.5 75050 75 11 15 01 03.0 75050 75 11 17 05 01.5 75050 75 11 18 05 02.0 75050 75 11 19 05 05.5 75050 75 11 19 07 02.0 75050 75 11 20 05 04.0 75050 75 11 20 07 01.0 75050 75 11 21 05 07.0 75050 75 11 21 07 02.0 75050 75 11 24 01 02.0 75050 75 11 24 05 06.0 75050 75 11 25 01 03.0 75050 75 11 25 05 08.5 75050 75 11 26 05 07.7 75050 75 11 28 05 09.0 75050 75 12 01 05 05.5 75050 75 12 01 07 01.0 75050 75 12 02 05 02.5 75050 75 12 02 07 02.0 75050 75 12 03 01 03.0 75050 75 12 03 05 02.0 75050 75 12 04 01 02.0 75050 75 12 04 05 01.5 75050 75 12 05 05 03.5 75050 75 12 05 07 01.0 75050 75 12 10 05 02.0 75050 75 12 11 05 07.5 75050 75 12 12 05 02.0 75050 75 12 15 05 01.5 75050 75 12 17 05 08.5 75050 75 12 18 05 08.3 75050 76 01 09 05 01.0 75050 76 02 04 07 02.5 75051 75 10 06 01 04.0 75051 75 10 07 05 04.8 75051 75 10 11 05 02.0 75051 75 10 11 05 04.0 75051 75 10 13 05 02.0 75051 75 10 27 05 00.3 75051 75 10 28 05 01.5 75051 75 10 28 06 05.0 75051 75 10 29 06 04.0 75051 75 12 01 05 02.0 75051 75 12 02 05 02.8 75051 75 12 03 05 04.5 75051 75 12 08 01 02.0 75051 75 12 08 05 06.3 75051 75 12 09 01 02.0 75051 75 12 09 05 03.0 75051 75 12 10 05 04.5 75051 75 12 11 05 02.0 75051 75 12 12 05 03.0 75051 75 12 15 05 02.0 75051 76 01 23 05 04.5 75051 76 01 23 05 04.5 75051 76 01 24 03 02.5 75051 76 01 24 03 02.5 75051 76 01 26 05 04.0 75051 76 01 28 05 00.6 75051 76 02 04 05 02.0 75051 76 02 23 05 01.5 75051 76 02 26 05 03.0 75051 76 02 27 05 05.5 75051 76 03 01 05 01.0 75051 76 03 02 05 05.5 75051 76 03 03 05 01.5 75051 76 03 10 01 01.0 75051 76 03 18 05 02.0 75051 76 03 24 05 05.5 75051 76 03 25 05 01.0 75051 76 03 26 05 02.5 75051 76 03 29 05 03.5 75051 76 04 06 05 00.5 75052 75 09 24 01 02.0 75052 75 09 29 01 04.0 75052 75 09 29 05 00.5 75052 75 10 02 01 08.0 75052 75 10 14 01 03.0 75052 75 12 09 01 03.0 75052 76 01 30 01 01.0 75052 76 02 12 07 03.0 75052 76 02 20 07 02.0 75052 76 02 23 07 01.5 75052 76 02 23 09 00.3 75052 76 03 01 07 01.0 75052 76 03 02 07 00.5 75052 76 03 03 07 01.0 75052 76 03 04 07 01.0 75052 76 03 05 07 03.0 75052 76 03 06 03 01.5 75052 76 03 07 07 04.0 75052 76 03 08 07 03.0 75052 76 03 10 07 01.0 75052 76 03 22 07 05.5 75052 76 03 22 07 01.5 75052 76 03 23 07 07.0 75052 76 03 23 08 01.5 75052 76 03 24 07 04.5 75052 76 03 25 05 04.5 75052 76 03 25 07 09.0 75052 76 03 26 05 02.5 75052 76 03 26 07 09.0 75052 76 03 28 07 02.0 75052 76 03 28 07 01.0 75052 76 03 29 07 03.0 75052 76 03 31 07 01.0 75052 76 04 07 01 02.0 75052 76 04 07 07 08.0 75052 76 04 08 07 05.0 75052 76 04 09 05 00.5 75052 76 04 09 07 05.0 75052 76 04 11 03 05.0 75053 75 09 25 05 04.0 75053 75 09 26 01 01.0 75053 75 09 26 05 04.0 75053 75 09 29 05 03.0 75053 75 09 30 05 01.2 75054 75 09 26 01 01.0 75054 75 09 26 05 04.5 75054 75 09 29 04 01.5 75054 75 09 29 05 03.0 75054 75 09 30 04 02.5 75054 75 09 30 05 05.0 75054 75 10 01 05 00.5 75054 75 10 11 05 00.3 75054 75 11 11 05 02.0 75054 75 11 12 01 02.0 75054 75 11 12 05 02.0 75054 75 11 13 05 00.6 75054 75 11 26 05 00.3 75055 75 10 10 03 04.5 75055 75 10 10 03 03.0 75055 75 10 11 03 04.0 75055 75 10 11 03 03.5 75055 75 10 13 05 03.0 75055 75 10 14 04 01.5 75055 75 10 14 05 05.5 75055 75 10 15 05 05.0 75055 75 10 20 05 04.0 75055 75 10 21 05 00.4 75055 75 10 21 05 05.0 75055 75 10 22 01 02.0 75055 75 10 22 05 03.1 75055 75 10 23 05 01.1 75056 75 10 23 04 05.0 75056 75 10 23 05 05.0 75056 75 10 31 05 01.0 75056 75 11 11 05 02.5 75056 75 11 11 07 01.0 75056 75 11 12 05 05.0 75056 75 11 13 05 04.0 75056 75 11 13 07 01.0 75056 75 11 14 05 05.0 75056 75 11 14 07 01.5 75056 75 11 17 05 04.5 75056 75 11 17 07 01.0 75056 75 11 24 07 01.0 75056 75 12 18 01 04.0 75056 76 01 06 05 01.0 75056 76 01 07 05 04.0 75056 76 01 08 05 03.0 75056 76 01 12 05 02.5 75056 76 01 14 05 01.0 75057 75 10 10 05 05.0 75057 75 10 13 05 00.5 75057 75 11 18 05 01.0 75057 75 12 05 05 00.5 75057 76 01 06 05 03.5 75057 76 01 06 08 00.5 75057 76 01 08 05 00.5 75058 75 10 14 04 02.0 75058 75 10 14 05 02.0 75058 75 10 15 04 00.5 75058 75 10 15 05 03.0 75058 75 10 24 04 01.0 75058 75 10 24 05 05.7 75058 75 10 25 04 01.5 75058 75 10 25 05 05.3 75058 75 10 27 01 01.0 75058 75 10 27 05 04.4 75058 75 10 27 06 02.0 75058 75 10 28 05 01.0 75058 75 10 28 06 02.0 75059 75 10 14 01 03.5 75059 75 10 16 01 02.0 75060 75 10 16 05 01.8 75060 75 10 17 01 01.0 75060 75 10 17 05 01.5 75060 75 10 20 01 02.0 75060 75 10 20 05 02.5 75060 75 10 21 05 00.4 75061 75 10 23 01 04.0 75061 75 10 24 01 05.0 75061 75 10 24 04 05.0 75061 75 10 24 05 02.2 75061 75 10 24 06 04.5 75061 75 10 25 04 07.5 75061 75 10 27 04 04.0 75061 75 10 27 05 01.3 75061 75 10 27 06 02.0 75061 75 10 77 01 01.0 75062 75 10 28 01 01.0 75062 75 10 29 01 01.0 75063 75 11 12 01 02.0 75063 75 11 12 07 02.0 75063 75 11 13 01 03.0 75063 75 11 13 07 05.0 75063 75 11 14 01 02.0 75063 75 11 14 07 01.5 75063 75 11 19 07 02.5 75063 75 11 20 07 04.5 75063 75 11 24 01 03.0 75063 75 11 24 07 02.5 75063 75 11 26 07 03.0 75063 75 11 28 07 04.0 75063 75 11 29 03 02.0 75063 75 11 29 03 04.0 75063 75 12 01 07 03.0 75063 75 12 02 01 02.0 75063 75 12 02 07 06.0 75063 75 12 03 07 06.0 75063 75 12 04 01 01.0 75063 75 12 04 07 04.5 75063 75 12 05 07 05.0 75063 75 12 08 01 01.0 75063 75 12 08 07 09.0 75063 75 12 09 07 08.0 75063 75 12 10 07 08.0 75063 75 12 11 01 03.0 75063 75 12 11 07 06.0 75063 75 12 12 01 01.0 75063 75 12 12 07 08.0 75063 75 12 29 07 01.5 75063 76 01 05 01 01.0 75063 76 01 05 07 01.5 75064 75 10 31 01 04.0 75064 75 10 31 04 02.0 75064 75 10 31 05 01.5 75064 75 10 31 06 04.0 75064 75 11 03 01 04.0 75064 75 11 03 06 01.0 75064 75 11 03 07 08.5 75064 75 11 04 01 04.0 75064 75 11 04 06 02.0 75064 75 11 04 07 02.0 75064 76 04 07 07 01.0 75065 75 11 10 07 01.0 75065 75 11 11 07 03.0 75065 75 11 12 07 03.0 75065 75 11 13 07 02.0 75065 75 11 14 07 05.0 75065 75 11 24 07 05.5 75065 75 11 25 07 08.0 75065 75 11 26 07 05.0 75065 75 12 02 01 06.0 75065 75 12 03 07 02.0 75065 75 12 04 01 08.0 75065 75 12 04 07 03.5 75065 75 12 05 01 12.0 75065 75 12 06 01 04.0 75065 76 03 08 01 03.0 75066 75 11 11 01 04.5 75066 75 11 13 01 01.0 75067 76 01 02 08 03.0 75067 76 01 05 08 03.0 75067 76 01 12 08 01.0 75067 76 01 19 08 04.0 75067 76 01 19 08 04.0 75067 76 01 27 01 02.0 75067 76 03 24 07 00.5 75068 75 12 14 01 14.0 75068 75 12 15 07 08.0 75500 75 07 22 05 08.0 75500 75 07 23 05 06.5 75500 75 07 24 05 07.5 75500 75 07 25 05 08.0 75500 75 07 28 05 08.5 75500 75 07 29 05 07.0 75500 75 07 30 01 02.0 75500 75 08 01 05 01.0 75500 75 08 04 05 01.0 75500 75 08 05 01 01.0 75500 75 08 05 05 04.0 75500 75 08 06 01 03.0 75500 75 08 11 05 02.0 75500 75 08 12 05 05.0 75500 75 08 16 05 01.5 75500 75 08 22 01 04.0 75500 75 08 28 01 04.0 75500 75 08 29 05 03.0 75500 75 08 30 01 08.0 75500 75 09 01 01 08.0 75500 75 09 02 01 08.0 75500 75 09 03 01 08.0 75500 75 09 04 01 04.0 75500 75 09 05 01 07.0 75500 75 09 05 05 00.5 75500 75 09 08 01 04.0 75500 75 09 09 01 08.0 75500 75 09 10 01 08.0 75500 75 09 11 01 08.0 75500 75 09 11 05 02.0 75500 75 09 12 01 08.0 75500 75 09 12 05 02.5 75500 75 09 15 01 09.0 75500 75 09 15 05 08.5 75500 75 09 16 01 09.0 75500 75 09 16 05 03.5 75500 75 09 17 01 09.0 75500 75 09 17 05 06.0 75500 75 09 18 01 09.0 75500 75 09 18 05 06.5 75500 75 09 19 05 06.5 75500 75 09 24 05 03.5 75500 75 09 25 01 06.0 75500 75 09 26 01 02.0 75500 75 09 29 01 04.0 75500 75 10 01 01 08.0 75500 75 10 01 05 01.0 75500 75 10 02 05 01.5 75500 75 10 02 05 01.1 75500 75 10 03 05 06.0 75500 75 10 06 05 00.3 75500 75 10 07 05 00.7 75500 75 10 08 01 04.0 75500 75 10 08 05 02.5 75500 75 10 10 05 00.4 75500 75 10 20 01 02.0 75500 75 11 03 05 07.0 75500 75 11 05 01 02.0 75500 75 11 19 01 08.0 75500 75 12 08 05 01.5 75500 75 12 09 05 04.0 75500 75 12 11 01 03.0 75500 75 12 12 05 01.0 75501 75 07 27 01 02.0 75501 75 07 28 01 06.0 75501 75 11 10 01 02.0 75501 75 12 11 01 02.0 75501 75 12 12 01 02.0 75502 75 09 22 01 08.0 75502 75 09 23 01 06.0 75504 75 10 13 01 01.5 75504 75 11 05 01 02.0 75504 75 11 07 01 02.0 75504 75 11 07 01 06.0 75504 75 11 15 01 01.0 75504 75 12 13 05 01.5 75504 76 01 03 01 08.0 75504 76 01 20 01 04.0 75504 76 03 09 09 02.0 75504 76 03 09 09 06.0 75504 76 03 10 09 02.0 75504 76 03 11 09 04.0 75504 76 03 24 09 03.5 75504 76 03 25 09 02.0 75504 76 03 26 09 03.0 75504 76 03 29 09 01.0 75504 76 03 30 01 04.0 75504 76 03 30 09 01.5 75504 76 03 31 09 06.0 75504 76 04 01 09 04.0 75504 76 04 02 09 07.0 75504 76 04 05 01 03.0 75504 76 04 05 09 01.0 75504 76 04 06 01 02.0 75504 76 04 06 09 04.0 75504 76 04 08 09 02.0 75504 76 04 09 09 01.0 75505 75 10 18 01 04.0 75505 75 10 23 01 03.0 75505 75 10 28 01 03.0 75506 75 11 01 01 06.0 75506 75 11 03 06 05.0 75506 75 11 04 06 05.0 75506 75 11 05 06 08.0 75506 75 11 06 06 07.0 75506 75 11 07 06 08.0 75506 75 11 10 06 04.0 75506 75 11 11 06 05.0 75506 75 11 21 01 08.0 75506 75 11 22 01 04.0 75507 75 11 17 01 08.0 75507 75 11 18 01 08.0 75507 75 11 20 01 08.0 75507 75 11 23 01 08.0 75507 75 11 25 01 03.0 75507 75 12 04 05 06.5 75507 75 12 05 05 03.0 75507 75 12 08 05 01.5 75507 75 12 15 05 03.5 75507 75 12 16 05 07.0 75507 75 12 17 05 03.5 75507 76 01 06 05 01.0 75507 76 01 07 05 04.0 75507 76 01 08 05 03.5 75507 76 01 09 05 06.0 75507 76 01 22 05 05.0 75507 76 01 22 05 05.0 75507 76 01 23 05 01.5 75507 76 01 23 05 01.5 75507 76 01 27 01 04.0 75507 76 01 27 05 05.0 75507 76 01 28 05 01.6 75507 76 01 30 05 02.0 75507 76 01 31 01 03.0 75507 76 02 03 05 04.0 75507 76 02 16 01 08.0 75507 76 02 17 01 08.0 75507 76 02 18 01 08.0 75507 76 02 19 01 08.0 75507 76 02 20 01 08.0 75507 76 02 23 01 08.0 75507 76 02 24 01 08.0 75507 76 02 25 01 08.0 75507 76 02 26 01 08.0 75507 76 02 27 01 08.0 75507 76 03 01 01 08.0 75507 76 03 02 01 03.0 75507 76 03 03 01 03.0 75507 76 03 04 01 03.0 75507 76 03 05 01 06.0 75507 76 03 10 01 05.0 75508 75 10 30 05 00.7 75508 75 12 15 01 04.0 75509 76 01 12 01 03.0 75509 76 01 13 01 04.0 75512 76 01 06 01 04.0 75512 76 01 08 01 02.0 75512 76 01 09 01 02.0 75513 75 12 03 01 03.0 75514 75 01 03 01 06.0 75514 76 01 09 05 02.0 75514 76 01 11 01 04.0 75514 76 01 13 05 03.5 75514 76 01 14 05 04.5 75514 76 01 15 05 07.0 75514 76 01 16 05 01.3 75514 76 01 29 05 05.0 75514 76 01 30 05 05.0 75514 76 04 01 05 03.0 75514 76 04 10 05 06.0 75540 76 04 07 09 01.0 76000 76 01 05 01 06.0 76000 76 01 05 07 01.5 76000 76 01 05 08 02.0 76000 76 01 06 07 01.0 76000 76 01 06 08 05.5 76000 76 01 07 07 01.0 76000 76 01 07 08 02.0 76000 76 01 08 01 06.0 76000 76 01 08 05 01.0 76000 76 01 08 07 00.5 76000 76 01 09 08 02.5 76000 76 01 12 01 05.0 76000 76 01 12 05 00.5 76000 76 01 12 08 01.0 76000 76 01 12 08 01.0 76000 76 01 13 05 01.0 76000 76 01 13 08 02.0 76000 76 01 14 05 00.5 76000 76 01 14 07 00.5 76000 76 01 14 08 08.0 76000 76 01 15 08 05.0 76000 76 01 19 05 01.5 76000 76 01 19 05 01.5 76000 76 01 19 08 04.0 76000 76 01 19 08 04.0 76000 76 01 20 05 03.5 76000 76 01 20 05 03.5 76000 76 01 20 08 08.0 76000 76 01 20 08 08.0 76000 76 01 21 05 02.0 76000 76 01 21 05 02.0 76000 76 01 21 08 06.0 76000 76 01 21 08 06.0 76000 76 01 22 05 01.0 76000 76 01 22 05 01.0 76000 76 01 22 07 01.0 76000 76 01 22 07 01.0 76000 76 01 22 08 04.0 76000 76 01 22 08 04.0 76000 76 01 23 05 00.5 76000 76 01 23 05 00.5 76000 76 01 23 08 01.0 76000 76 01 23 08 01.0 76000 76 01 26 05 01.5 76000 76 01 26 08 00.8 76000 76 01 27 01 03.0 76000 76 01 27 05 01.0 76000 76 01 27 05 01.5 76000 76 01 27 08 08.0 76000 76 01 28 01 08.0 76000 76 01 28 05 02.0 76000 76 01 28 08 08.0 76000 76 01 29 01 04.0 76000 76 01 29 01 02.0 76000 76 01 29 05 02.0 76000 76 01 29 05 01.0 76000 76 01 29 08 02.0 76000 76 01 30 05 01.0 76000 76 02 02 01 03.0 76000 76 02 02 08 02.0 76000 76 02 03 08 02.0 76000 76 02 05 01 08.0 76000 76 02 05 05 08.0 76000 76 02 05 07 08.0 76000 76 02 06 01 08.0 76000 76 02 06 05 08.0 76000 76 02 06 07 08.0 76000 76 02 07 01 08.0 76000 76 02 07 05 08.0 76000 76 02 09 07 08.0 76000 76 02 10 08 02.0 76000 76 02 11 08 05.0 76000 76 02 12 05 02.0 76000 76 02 12 08 04.0 76000 76 02 12 08 01.0 76000 76 02 12 09 08.0 76000 76 02 13 05 02.5 76000 76 02 13 09 08.0 76000 76 02 16 08 08.0 76000 76 02 16 09 07.5 76000 76 02 17 05 01.0 76000 76 02 17 08 04.0 76000 76 02 17 09 08.0 76000 76 02 18 05 01.0 76000 76 02 18 08 02.0 76000 76 02 18 09 08.0 76000 76 02 19 05 02.0 76000 76 02 19 07 02.0 76000 76 02 19 08 04.0 76000 76 02 19 08 04.0 76000 76 02 19 09 08.0 76000 76 02 20 05 02.0 76000 76 02 20 07 02.5 76000 76 02 20 08 08.0 76000 76 02 20 09 08.0 76000 76 02 23 05 04.0 76000 76 02 23 07 01.5 76000 76 02 23 08 08.0 76000 76 02 23 09 07.7 76000 76 02 24 08 03.5 76000 76 02 24 09 08.0 76000 76 02 25 05 01.5 76000 76 02 25 08 05.0 76000 76 02 25 09 08.0 76000 76 02 26 05 00.5 76000 76 02 26 07 08.0 76000 76 02 26 08 08.0 76000 76 02 26 09 08.0 76000 76 02 27 05 01.0 76000 76 02 27 07 08.0 76000 76 02 27 08 08.0 76000 76 02 27 09 08.0 76000 76 03 01 05 00.5 76000 76 03 01 08 05.0 76000 76 03 01 09 08.0 76000 76 03 02 05 01.5 76000 76 03 02 07 02.5 76000 76 03 02 08 06.0 76000 76 03 02 09 08.0 76000 76 03 03 05 01.5 76000 76 03 03 08 02.0 76000 76 03 03 09 08.0 76000 76 03 05 05 02.0 76000 76 03 05 08 02.0 76000 76 03 05 09 08.0 76000 76 03 08 08 04.0 76000 76 03 08 09 08.0 76000 76 03 09 07 02.0 76000 76 03 09 08 01.0 76000 76 03 10 01 02.0 76000 76 03 10 08 01.0 76000 76 03 10 08 04.0 76000 76 03 10 09 04.0 76000 76 03 11 01 08.0 76000 76 03 11 05 02.0 76000 76 03 11 08 02.0 76000 76 03 11 09 04.0 76000 76 03 12 05 01.0 76000 76 03 12 07 02.0 76000 76 03 12 08 02.0 76000 76 03 16 07 08.0 76000 76 03 17 05 02.0 76000 76 03 17 07 08.0 76000 76 03 17 08 02.0 76000 76 03 18 05 02.0 76000 76 03 18 07 08.0 76000 76 03 18 08 02.0 76000 76 03 19 05 02.0 76000 76 03 19 07 08.0 76000 76 03 19 08 03.0 76000 76 03 19 08 05.0 76000 76 03 22 05 01.0 76000 76 03 22 07 02.0 76000 76 03 22 08 08.0 76000 76 03 23 01 03.0 76000 76 03 23 05 01.0 76000 76 03 23 08 06.5 76000 76 03 23 09 08.0 76000 76 03 24 05 00.5 76000 76 03 24 08 05.0 76000 76 03 24 09 04.5 76000 76 03 25 05 01.0 76000 76 03 25 09 06.0 76000 76 03 26 08 02.5 76000 76 03 26 09 05.0 76000 76 03 29 01 01.0 76000 76 03 29 05 02.0 76000 76 03 29 08 06.5 76000 76 03 29 09 07.0 76000 76 03 30 01 01.5 76000 76 03 30 05 01.0 76000 76 03 30 08 04.0 76000 76 03 30 09 06.5 76000 76 03 31 07 02.0 76000 76 03 31 08 02.0 76000 76 03 31 09 02.0 76000 76 04 01 05 01.0 76000 76 04 01 09 04.0 76000 76 04 02 09 01.0 76000 76 04 05 05 01.0 76000 76 04 05 09 07.0 76000 76 04 06 05 01.5 76000 76 04 06 07 02.0 76000 76 04 06 09 04.0 76000 76 04 07 08 01.0 76000 76 04 07 09 07.0 76000 76 04 08 09 06.0 76000 76 04 09 05 01.0 76000 76 04 09 09 07.0 76001 76 01 05 08 03.0 76002 76 01 07 08 02.0 76003 76 01 07 01 04.0 76003 76 01 07 08 02.0 76003 76 01 08 08 06.5 76003 76 01 30 01 05.0 76003 76 01 30 01 02.0 76003 76 01 30 01 02.0 76003 76 01 30 08 01.0 76003 76 02 02 01 02.0 76003 76 02 03 01 06.0 76003 76 02 04 01 02.0 76004 76 01 08 07 02.0 76004 76 01 10 07 04.0 76005 76 01 09 08 01.5 76005 76 01 10 03 05.5 76005 76 01 11 03 01.0 76005 76 01 12 05 05.5 76005 76 01 13 05 04.0 76006 76 01 16 05 02.7 76007 76 01 29 01 01.0 76008 76 01 29 08 06.0 76008 76 01 30 03 05.5 76008 76 01 30 08 06.0 76008 76 02 02 08 01.0 76008 76 02 02 08 06.0 76008 76 02 03 08 01.5 76008 76 02 03 08 06.0 76008 76 02 04 08 02.0 76008 76 02 04 08 08.0 76008 76 02 05 08 00.5 76008 76 02 05 08 08.0 76008 76 02 06 08 06.5 76008 76 02 09 08 08.0 76008 76 02 10 08 04.0 76008 76 02 11 08 01.0 76008 76 02 17 08 02.0 76008 76 02 18 08 06.0 76008 76 03 04 08 02.0 76008 76 03 05 08 06.0 76008 76 03 09 08 00.5 76008 76 03 10 08 01.0 76009 76 02 02 01 02.0 76009 76 02 16 05 01.5 76009 76 02 24 05 15.5 76009 76 02 25 05 01.5 76009 76 02 26 05 07.0 76009 76 02 27 05 01.5 76009 76 02 28 05 04.0 76009 76 03 01 05 05.5 76009 76 03 02 05 01.5 76009 76 04 06 05 00.5 76010 76 02 10 08 02.0 76010 76 02 11 08 02.0 76010 76 02 12 08 07.0 76010 76 02 13 08 04.0 76010 76 02 17 08 02.0 76010 76 02 24 08 04.5 76010 76 02 25 08 03.0 76010 76 03 01 08 01.0 76010 76 03 18 08 03.0 76011 76 02 09 05 01.5 76011 76 02 10 05 03.5 76011 76 02 12 05 01.0 76011 76 02 12 05 07.0 76011 76 02 13 05 05.5 76011 76 02 16 05 07.0 76011 76 02 17 05 04.0 76011 76 02 18 05 02.5 76011 76 02 19 05 05.5 76011 76 02 20 05 04.0 76011 76 02 23 05 04.5 76011 76 02 24 05 02.0 76011 76 03 03 05 02.5 76011 76 03 05 05 02.0 76011 76 03 06 05 01.0 76011 76 03 12 05 02.0 76011 76 03 16 05 03.5 76011 76 03 17 05 02.5 76011 76 03 18 05 03.0 76011 76 03 19 05 02.0 76011 76 03 22 05 05.0 76011 76 03 22 05 02.0 76011 76 03 23 05 07.0 76011 76 03 24 05 03.0 76011 76 03 25 05 01.0 76011 76 03 26 05 01.5 76011 76 04 05 05 02.5 76012 76 02 19 07 04.0 76012 76 03 05 07 06.0 76012 76 03 11 07 01.0 76012 76 03 12 07 06.0 76012 76 03 17 05 01.0 76012 76 03 18 05 02.0 76014 76 03 01 08 02.0 76014 76 03 02 01 05.0 76014 76 03 02 08 02.0 76014 76 03 03 01 05.0 76014 76 03 03 08 06.0 76014 76 03 04 08 06.0 76014 76 03 06 03 00.5 76014 76 03 08 07 06.0 76014 76 03 08 08 04.0 76014 76 03 09 07 01.0 76014 76 03 09 07 02.0 76014 76 03 09 07 02.0 76014 76 03 09 08 05.0 76014 76 03 10 07 06.0 76014 76 03 10 08 02.0 76014 76 03 11 07 07.0 76014 76 03 11 08 02.0 76014 76 03 15 08 08.0 76014 76 03 16 08 08.0 76014 76 03 17 05 02.5 76014 76 03 17 08 06.0 76014 76 03 18 08 03.0 76014 76 03 30 01 02.5 76014 76 03 30 08 04.0 76014 76 03 31 08 06.0 76014 76 04 01 01 02.0 76014 76 04 01 08 01.0 76014 76 04 05 08 00.5 76014 76 04 07 01 02.0 76014 76 04 09 08 01.0 76014 76 04 10 01 09.0 76015 76 03 03 07 03.0 76015 76 03 04 07 02.0 76016 76 03 09 07 02.0 76016 76 03 09 08 01.5 76016 76 03 11 08 02.0 76017 76 04 02 01 01.0 76017 76 04 11 03 01.0 76018 76 03 11 08 02.0 76018 76 03 12 08 06.0 76018 76 03 24 08 03.0 76018 76 03 26 08 01.0 76018 76 04 09 08 01.5 76019 76 03 24 01 01.0 76019 76 03 26 01 08.0 76019 76 03 30 01 04.0 76019 76 03 31 01 03.0 76019 76 03 31 05 04.0 76020 76 03 26 08 04.5 76020 76 03 29 08 01.5 76021 76 03 29 01 01.0 76021 76 04 05 01 02.0 76021 76 04 08 01 03.0 76021 76 04 09 01 03.0 76021 76 04 09 03 01.0 76022 76 03 05 03 05.0 76022 76 03 06 03 01.5 76023 76 04 01 01 01.0 76023 76 04 06 01 02.0 76024 76 04 01 07 01.0 76024 76 04 01 08 05.0 76024 76 04 02 01 04.0 76024 76 04 02 08 01.0 76024 76 04 04 03 02.0 76024 76 04 04 03 02.5 76024 76 04 05 03 04.5 76024 76 04 05 05 05.0 76024 76 04 05 08 02.0 76024 76 04 06 01 02.0 76024 76 04 06 05 05.5 76024 76 04 06 08 04.0 76024 76 04 07 03 03.0 76024 76 04 07 05 07.5 76024 76 04 08 01 01.0 76024 76 04 08 05 08.5 76024 76 04 09 05 06.5 76024 76 04 10 03 01.0 76025 76 04 01 08 02.0 76025 76 04 02 01 02.0 76025 76 04 02 08 07.0 76025 76 04 03 03 01.0 76025 76 04 04 03 02.5 76025 76 04 05 08 05.5 76025 76 04 06 08 05.5 76025 76 04 07 08 07.5 76025 76 04 08 08 08.0 76025 76 04 09 03 07.0 76025 76 04 09 08 06.5 76025 76 04 10 03 03.5 76025 76 04 11 08 04.0 76026 76 04 06 01 01.0 76027 76 04 09 01 03.0 76500 76 01 23 05 01.5 76500 76 01 23 05 01.5 76500 76 01 28 05 03.5 76500 76 01 30 01 04.0 76500 76 01 31 05 04.0 76500 76 02 03 01 02.0 76500 76 02 04 01 04.0 76500 76 02 09 05 08.0 76500 76 02 10 01 12.0 76500 76 02 10 05 05.5 76500 76 02 11 01 12.0 76500 76 02 11 05 08.5 76500 76 02 12 01 12.0 76500 76 02 13 01 12.0 76500 76 02 16 05 00.5 76500 76 02 17 05 04.0 76500 76 02 18 05 03.0 76500 76 02 20 05 02.0 76500 76 02 27 05 01.0 76500 76 03 01 05 02.0 76500 76 03 03 05 04.0 76500 76 03 04 05 09.0 76500 76 03 04 07 01.0 76500 76 03 05 03 04.0 76500 76 03 05 05 05.0 76500 76 03 06 03 01.5 76500 76 03 10 05 03.0 76500 76 03 13 05 03.0 76500 76 03 15 05 06.0 76500 76 03 24 01 06.0 76500 76 03 26 05 02.0 76500 76 03 29 01 02.0 76500 76 03 31 01 02.0 76500 76 04 03 01 10.0 76500 76 04 05 01 03.0 76500 76 04 06 01 02.0 76500 76 04 08 01 02.0 76500 76 04 09 01 02.0 76501 76 02 01 05 01.0 76501 76 02 02 05 03.0 76501 76 02 04 05 07.5 76501 76 03 11 05 05.0 76501 76 03 12 05 05.0 76514 76 01 20 05 02.0 76514 76 01 20 05 02.0 76514 76 03 24 05 01.5 76514 76 03 25 05 01.0 76514 76 03 30 05 01.0 76601 76 01 31 01 06.0 76601 76 02 02 01 03.0 76601 76 03 16 05 04.5 76601 76 03 17 05 01.0 76601 76 03 19 05 02.5 BILLBILL110175BILL110875BILL111575BILL112375BILL113075BILL120775BILL121475BILL122175BILL123175BILL760115BILL760315BILL760404BILL760411BILLABILLASTBILLBBILLOUTBILLWEEK050.0 505A500303.5 505A509030.0 505A50030.0 505A50909006.5 505A509000.5 505A509003.0 505A509500.0 505A5096050.0 505A50950500.5 505A600900.5 505A6000.0 505A6000.0 506A5090303.0 9 13 75 75047 04.0 04 09 15 75 75047 08.5 04 09 15 75 75045 01.0 04 09 16 75 75047 05.0 04 09 16 75 75007 03.5 04 09 17 75 75007 03.5 04 09 17 75 75000 06.0 04 09 18 75 75007 07.5 04 09 18 75 75047 01.0 04 09 19 75 75047 01.0 04 09 19 75 75007 07.5 04 09 20 75 75007 08.5 04 09 20 75 75047 00.5 04 09 22 75 75007 05.5 04 09 22 75 75039 01.5 04 09 22 75 75049 01.5 05 09 13 75 75000 01.0 05 09 13 75 75047 07.5 05 09 12 75 75048 07.0 05 09 12 75 75500 02.5 05 09 11 75 75048 08.0 05 09 11 75 75500 02.0 05 09 10 75 75048 09.5 05 09 09 75 75028 01.0 05 09 09 75 75048 08.0 05 09 08 75 75036 05.5 05 09 08 75 75013 02.5 05 09 06 75 75030 09.5 05 09 05 75 75043 02.5 05 09 05 75 75036 04.5 05 09 05 75 75500 00.5 05 09 05 75 75030 01.0 05 09 04 75 75030 07.0 05 09 04 75 75000 01.0 05 09 03 75 75030 08.0 05 09 03 75 75000 00.5 05 09 02 75 75036 02.0 05 09 02 75 75030 07.0 05 08 30 75 75036 04.0 05 08 29 75 75036 05.5 05 08 29 75 75500 03.0 05 08 29 75 75046 00.5 05 08 28 75 75046 03.0 05 08 28 75 75036 05.5 05 08 27 75 75046 05.5 05 08 27 75 75044 00.5 05 08 27 75 75031 00.5 05 08 26 75 75046 04.5 05 08 26 75 75044 01.5 05 08 25 75 75046 06.0 05 08 25 75 75044 01.5 05 08 23 75 75046 08.5 05 08 22 75 75031 03.0 05 08 22 75 75046 06.0 05 08 21 75 75031 09.0 05 08 20 75 75042 04.0 05 08 20 75 75031 05.0 05 08 16 75 75500 01.5 05 08 16 75 75004 08.0 05 08 15 75 75042 08.5 05 08 14 75 75042 09.0 05 08 13 75 75000 00.5 05 08 13 75 75004 03.5 05 08 13 75 75042 04.0 05 08 12 75 75500 05.0 05 08 12 75 75004 04.0 05 08 12 75 75035 00.5 05 08 11 75 75000 01.5 05 08 11 75 75031 01.0 05 08 11 75 75035 02.0 05 08 11 75 75037 02.5 05 08 11 75 75500 02.0 05 08 09 75 75035 06.0 05 08 08 75 75035 08.0 05 08 07 75 75037 04.0 05 08 07 75 75035 02.5 05 08 07 75 75000 02.0 05 O8 06 75 75037 08.5 05 08 05 75 75037 04.5 05 08 05 75 75500 04.0 05 08 04 75 75500 01.0 05 08 04 75 75037 07.5 05 08 01 75 75043 06.5 05 08 01 75 75005 00.5 05 08 01 75 75500 01.0 05 07 31 75 75043 07.5 05 07 31 75 75005 00.5 05 07 30 75 75043 02.0 05 07 30 75 75005 06.0 05 07 29 75 75500 07.0 05 07 29 75 75034 01.0 05 07 28 75 75500 08.5 05 07 25 75 75500 08.0 05 07 24 75 75500 07.5 05 07 24 75 75000 00.5 05 07 23 75 75500 06.5 05 07 23 75 75030 01.5 05 07 22 75 75500 08.0 01 07 21 75 75037 02.0 01 07 21 75 75034 03.0 01 07 21 75 75000 03.0 01 07 22 75 75040 04.0 01 07 22 75 75034 04.0 01 07 23 75 75040 04.0 01 07 23 75 75037 04.0 01 07 24 75 75030 02.0 01 07 24 75 75022 01.0 01 07 24 75 75040 02.0 01 07 24 75 75034 01.0 01 07 25 75 74042 04.0 01 07 25 75 75040 04.0 01 07 25 75 75034 01.0 01 07 28 75 75037 01.0 01 07 28 75 75501 06.0 01 07 27 75 75031 02.0 01 07 27 75 75034 03.0 01 07 27 75 75501 02.0 01 07 27 75 75042 01.0 01 07 30 75 75043 02.0 01 07 30 75 75031 01.0 01 07 30 75 75500 02.0 01 07 30 75 75005 01.0 01 07 30 75 75000 02.0 01 07 31 75 75008 06.5 01 07 31 75 75008 03.0 01 08 01 75 75000 03.0 01 08 01 75 75043 01.0 01 08 01 75 75042 02.0 01 08 01 75 75005 01.0 01 08 02 75 75034 04.0 01 08 02 75 75042 04.0 01 08 04 75 75028 03.0 01 08 04 75 74028 01.0 01 08 04 75 75031 01.0 01 08 04 75 75035 03.0 01 08 04 75 75037 01.0 01 08 05 75 75037 02.0 01 08 05 75 75500 01.0 01 08 05 75 75041 01.0 01 08 05 75 75044 01.0 01 08 05 75 75000 03.0 01 08 06 75 75041 02.0 01 08 06 75 75028 03.0 01 08 06 75 75500 03.0 01 08 07 75 75028 01.0 01 08 07 75 75037 01.0 01 08 07 75 75034 00.5 01 08 07 75 75035 01.0 01 08 07 75 75011 02.5 01 08 08 75 75013 02.0 01 08 08 75 75035 02.0 01 08 08 75 75037 03.0 01 08 08 75 75044 01.0 01 08 09 75 75035 01.0 01 08 09 75 75037 04.0 01 08 09 75 75004 03.0 01 08 11 75 75042 02.0 01 08 11 75 75040 03.0 01 08 11 75 75037 03.0 01 08 12 75 75040 03.0 01 08 12 75 75042 03.0 01 08 12 75 75035 03.0 01 08 13 75 75030 04.0 01 08 13 75 75035 01.0 01 08 13 75 75042 01.0 01 08 14 75 75041 08.0 01 08 15 75 75004 02.0 01 08 15 75 75037 02.0 01 08 15 75 75000 04.0 01 08 18 75 75004 02.0 01 08 18 75 75042 01.0 01 08 18 75 75000 05.0 01 08 19 75 75041 06.0 01 08 20 75 75041 08.0 01 08 21 75 75041 08.0 01 08 22 75 75041 06.0 01 08 22 75 75044 02.0 01 08 25 75 75041 01.0 01 08 25 75 75044 01.0 01 08 25 75 75046 02.0 01 08 22 75 75500 04.0 01 08 26 75 75036 04.0 01 08 26 75 75041 01.0 01 08 26 75 75044 02.0 01 08 26 75 75046 01.0 01 08 27 75 75044 04.0 01 08 27 75 75046 04.0 01 08 27 75 75041 04.0 01 08 28 75 75046 04.0 01 08 28 75 75500 04.0 01 08 29 75 75030 02.0 01 08 29 75 75048 02.0 01 08 29 75 75041 02.0 01 08 30 75 75500 08.0 01 09 01 75 75500 08.0 01 09 02 75 75500 08.0 01 09 03 75 75500 08.0 01 09 04 75 75036 04.0 01 09 04 75 75500 04.0 01 09 05 75 75500 07.0 01 09 05 75 75047 01.0 01 09 08 75 75500 04.0 01 09 08 75 75040 04.0 01 09 09 75 75500 08.0 01 09 10 75 75500 08.0 01 09 11 75 75500 08.0 01 09 12 75 75500 08.0 01 09 22 75 75502 08.0 01 09 23 75 75502 06.0 01 09 23 75 75039 02.0 01 09 24 75 75013 02.0 01 09 24 75 75013 02.0 01 09 24 75 75047 02.0 01 09 24 75 75052 02.0 01 09 25 75 75049 02.0 01 09 25 75 75500 06.0 01 09 26 75 75500 02.0 01 09 26 75 75053 01.0 01 09 26 75 75054 01.0 01 09 26 75 75028 04.0 01 10 13 75 75000 01.0 01 10 13 75 75007 01.0 01 10 13 75 75049 04.5 01 10 13 75 75504 01.5 01 10 14 75 75007 04.0 01 10 14 75 75000 02.0 01 10 14 75 75052 03.0 01 10 15 75 75004 11.5 01 10 14 75 75059 03.5 01 10 16 75 75004 06.0 01 10 16 75 75059 02.0 01 10 17 75 75041 01.0 01 10 17 75 75035 02.0 01 10 17 75 75060 01.0 01 10 17 75 75007 01.0 01 10 20 75 75500 02.0 01 10 20 75 75060 02.0 01 10 20 75 75007 05.0 01 10 21 75 75013 02.0 01 10 21 75 75049 06.0 01 10 22 75 75055 02.0 01 10 22 75 75049 06.0 01 10 23 75 75061 04.0 01 10 23 75 75039 01.0 01 10 23 75 75505 03.0 01 10 24 75 75013 03.0 01 10 24 75 75061 05.0 01 10 25 75 75000 02.0 01 10 27 75 75042 02.0 01 10 27 75 75047 01.0 01 10 27 75 75058 01.0 01 10 27 75 75007 04.0 01 10 28 75 75505 03.0 01 10 28 75 75049 08.0 01 10 28 75 75062 01.0 01 10 29 75 75062 01.0 01 10 29 75 75028 07.0 01 10 30 75 75028 04.0 01 10 30 75 75049 03.0 01 10 30 75 75000 01.0 01 10 31 75 75064 04.0 01 10 31 75 75050 04.0 01 10 77 75 75061 01.0 01 10 18 75 75505 04.0 01 11 01 75 75506 06.0 01 11 03 75 75064 04.0 01 11 03 75 75040 04.0 01 11 04 75 75064 04.0 01 11 04 75 74037 02.0 01 11 04 75 75000 02.0 01 11 05 75 75040 02.0 01 11 05 75 75042 02.0 01 11 05 75 75500 02.0 01 11 05 75 75504 02.0 01 11 06 75 75040 01.0 01 11 06 75 75042 04.0 01 11 06 75 75007 02.0 01 11 06 75 75000 01.0 01 11 07 75 75504 06.0 03 07 19 75 75030 04.0 03 07 19 75 75032 06.0 03 07 20 75 75035 01.5 03 07 24 75 75041 03.5 03 07 24 75 75037 01.5 03 07 24 75 75035 01.5 03 07 24 75 75000 01.5 03 08 01 75 75031 07.0 03 08 01 75 75042 01.5 03 08 02 75 75042 04.5 03 08 02 75 75034 03.5 03 08 08 75 75028 02.5 03 08 08 75 75044 02.0 03 08 08 75 75028 04.5 03 08 09 75 75028 04.0 03 08 09 75 75044 02.0 03 08 09 75 75037 01.0 03 08 09 75 75004 01.0 03 08 15 75 75035 01.0 03 08 15 75 75028 07.5 03 08 16 75 75041 06.0 03 08 16 75 75004 03.5 03 08 18 75 75045 03.5 03 08 19 75 75045 01.0 03 08 19 75 75046 03.0 03 08 22 75 75045 01.0 03 08 22 75 75046 01.5 03 08 22 75 75041 02.8 03 08 22 75 75046 03.5 03 08 30 75 75030 03.5 03 08 30 75 75048 04.0 03 09 27 75 75049 07.0 03 09 27 75 75007 01.5 04 07 19 75 75032 06.0 04 07 21 75 75032 02.0 04 07 21 75 75038 04.0 04 07 21 75 75034 02.0 04 07 22 75 75034 08.0 04 07 23 75 75034 06.0 04 07 23 75 75031 01.5 04 07 24 75 75034 05.0 04 07 24 75 75031 03.5 04 07 25 75 75031 07.5 04 07 25 75 75034 01.0 04 07 26 75 75034 05.5 04 07 28 75 75031 03.0 04 07 28 75 75034 05.0 04 07 29 75 75034 04.5 04 07 29 75 75041 02.0 04 07 29 75 75000 02.0 04 07 30 75 75005 06.0 04 07 30 75 75034 03.0 04 07 31 75 75005 06.0 04 07 31 75 75043 02.0 04 08 01 75 75005 03.0 04 08 01 75 75043 02.5 04 08 01 75 75031 03.0 04 08 03 75 75034 08.5 04 08 04 75 75037 04.0 04 08 04 75 75041 04.0 04 08 05 75 75034 03.0 04 08 05 75 75037 02.5 04 08 05 75 75041 03.0 04 08 06 75 75034 05.0 04 08 06 75 75037 03.5 04 08 07 75 75037 07.0 04 08 07 75 75041 01.0 04 08 08 75 75034 01.0 04 08 08 75 75037 07.5 04 08 09 75 75037 07.0 04 08 11 75 75037 09.0 04 08 12 75 75037 07.0 04 08 12 75 75035 00.5 04 08 12 75 75042 00.5 04 08 12 75 75004 01.0 04 08 13 75 75035 07.0 04 08 13 75 75042 01.0 04 08 14 75 75035 03.5 04 08 14 75 75042 02.0 04 08 14 75 75025 02.5 04 08 15 75 75035 07.0 04 08 15 75 75042 01.0 04 08 16 75 75004 08.5 04 08 16 75 75041 02.0 04 08 16 75 75035 02.5 04 08 20 75 75035 01.5 04 08 20 75 75041 05.0 04 08 20 75 75037 02.5 04 08 21 75 75041 11.0 04 08 22 75 75041 04.5 04 08 22 75 75044 03.0 04 08 22 75 75046 01.0 04 08 23 75 75046 01.3 04 08 23 75 75044 07.2 04 08 25 75 75044 02.0 04 08 25 75 75046 05.5 04 08 26 75 75044 06.0 04 08 26 75 75046 02.5 04 08 27 75 75044 02.5 04 08 27 75 75041 02.5 04 08 27 75 75046 03.5 04 08 28 75 75046 02.0 04 08 28 75 75013 07.0 04 08 29 75 75046 03.0 04 08 29 75 75004 01.5 04 08 29 75 75030 04.0 04 08 30 75 75036 07.0 04 09 02 75 75030 08.0 04 09 03 75 75030 10.0 04 09 04 75 75030 04.5 04 09 05 75 75030 07.5 04 09 05 75 75036 01.0 04 09 06 75 75030 11.0 04 09 08 75 75036 08.5 04 09 09 75 75013 02.5 04 09 09 75 75045 06.5 04 09 10 75 75045 07.5 04 09 10 75 75036 01.0 04 09 10 75 75048 01.0 04 09 11 75 75045 03.0 04 09 11 75 75036 03.0 04 09 11 75 75048 04.0 04 09 12 75 75048 09.0 04 09 13 75 75036 02.0 04 09 13 75 75013 02.0 04 09 13 75 75047 04.0 04 09 20 75 75007 08.5 04 09 20 75 75047 00.5 04 09 19 75 75047 01.0 04 09 19 75 75007 07.5 04 09 18 75 75007 07.5 04 09 18 75 75047 01.0 04 09 17 75 75007 03.5 04 09 17 75 75000 06.0 04 09 16 75 75047 05.0 04 09 16 75 75007 03.5 04 09 15 75 75047 08.5 04 09 15 75 75045 01.0 01 09 20 75 75039 03.5 01 09 20 75 75047 02.0 01 09 20 75 75007 03.5 01 09 18 75 75500 09.0 01 09 17 75 75500 09.0 01 09 16 75 75500 09.0 01 09 15 75 75500 09.0 04 09 22 75 75007 05.5 04 09 22 75 75039 01.5 04 09 22 75 75049 01.5 04 09 23 75 75039 03.5 04 09 23 75 75007 05.5 04 09 24 75 75007 04.0 04 09 24 75 75039 01.0 04 09 24 75 75013 04.0 04 09 25 75 75007 03.5 04 09 25 75 75036 02.5 04 09 25 75 75013 02.0 04 09 25 75 75036 00.5 04 09 26 75 75036 02.0 04 09 26 75 75013 03.0 04 09 26 75 75007 03.5 04 09 27 E  @@@E@@/bñ#q9LN&郜 D D$)7hHD     D$  %X(%  'CX@l. Y@3 /YXXVO8 4   DFX('G ! # G E$K<U'Z\`o ED)Idc' ZoX$vo X$$1u #PC7ZD9 %R=# Y$\u & X%ߗ    "G$+8'  dE%5޳ Go#G  0D @9$I&\Gv\]\9\apZ{SHDy8 _E\   \b @@@8Y\ @@ؖfCFhCxbñ#q9LN郜 gáD H D\`D$% "Eٜe     H@ $@ۿ$\`@D$$;@B'D$d Y$$$ C   !'G+(ه2G   !'G D$@@ '[PJX$$J PC'/[^XD($NX'CPK'C/7PK"G$`f# [o  EȒ$Ltx 0 vG#PC3SdE%D$тf C# C D";%mW + C 0Y(7 K  X'$@ ! !ZK$C  X$$   # C#D,%$ga+Z  #D%$6G#PC#Z@X($2     D @ "I-\]K\Av\y8 _@5\n  @@@B\n@@k-efcFfcggcUZz`icnbñ9LN&郜 D D";d%"|}   {G($SrC  |' {@ DbE%$/  |X'(*G) PC  }'[,E$8E7:E  } QXX \E  }w Dl9;¡S |w  #DKzaZgu   Eo|Yؐ$q * E@~D\]r8 _z~g  @@@|~g@@²fcKfcPffcFfc؀gcgcggcUhZz`icnbñ9LN&郜 D D";d%     ,G;$tC  DH;$%PC   ,G+8+   bKb9J9    DDbEb%1GNY  X,fUt   Xb%%c  ' H$@q2qG#Z{Xbǒ,{     DD$$=DE@iD\]|8 _-\Dv  @@@ \@v@@{bñ9ND GB  X`'[     @Dy\ 8 _[\GH$\&\G$bñG$$r 3"*;3;[ [ D$$$[83BJ[D$8w[8PՋW 3"*D$cQ*;3;@yoh _\d@ܿ\`$bñG$$  3"*PՌS[D$$wCKҊ3"*p[ӐCD$$S+K+ 3DD$*+ +# +D$g8GOPՋW=H/%.oh@ _B@\c@H\c$bñD$$!  ՏSS3"*[D$$PPғSCKPՌW3"D$$*[CK)K3D$$~* #+@@ ; 8D$$ue8CK#+@@CK3#+D$$FӐҋ3BJ#+D(zT3BJ@5ohY _E\]@\]$bñG$$ծ 3"*BJ@oh  _=\@D\$bñG$  3/ZBJ@oh  _g<  @@@g< @@bñ9LN郜D D%x">>    Y(  X(hr  =X$$!   #[bI$$*;,    'DD8PG  @?H雚XF8 _rF  @@@pφF @@bñ9LN郜cD D%s!    Y(  X(q  Y( #+ K'7D$Db*/C/[84'GD$$)8'Cb#C/@ D' F '+ K D$$!T#/O#PC<@bX$$ޙb  #Z\rIjp{X%r  4 X$$G '+G'C#D$$rC/@  DȒ( /G#CEbY$Uu  Y$$C8   @AI SacgnsX8 _ݦE  @@@fE@@bñLN郜 ácD D"%)W YȔD0    YDD*5 C@#C  DDDH+#2 ' 0DdE$ 9>C" C'C/KDD8G7' S + KPCE$$U#C+ #'D8$zPcC+PΣK $#'C+ H$9`uqΣK $#'C CHȒ$#C  # #D$E/#CYDD4 C#C  D$%#!#/E$#C C#C D$$ #"#/E($T#C ##Y& C + K + #D$b#O+PΙK# CbK$$LW  (@'@ 8 _:nEL  @@@<.EL@@bñ9LN郜  áD D";%z<     X((   'Ca#CD'$/@  'CHD%),  *7U"G9$S7# C + KZ\$E"%E9EIXR +[XR#dG8$;SG  C  #G"G$ a# ju   D8$to#PG # HĀ$}~'G    0@vD!y8 _kE   @@@pkE @@bñLN郜l ácD D"%(Q  YȔD-    D($'C'C#C/@G$,%X+ 'C[8B HD99+  KL# CY"'9^YG + K# C + DGGU#C + K + #G'$}cC   'G#D$$qPC   !'D''G# C   D9b+!'G# C#  D$(}@'@\ 8 _nYD7  @@@.Y@7@@bñ9LN郜cD D";d%/      G$d)uC  '[- G'$`C    'PD($K+G'Cu#C/@G$$=9 'CZ\IdI$H4gGbR +[bR#G D(DU] * [Gs DD&c ~+ o 0 mD9qO1X$$38u     @|@|Dyv8 _  @@@t @@bñ9LN郜 ácD D%م 00    Y(  X(uq  0Y($I 0'/PƘC'D$$*řC'+C'++[I$_8:c#ZAcX%([uA /'Cc#CD'$RO/@ $'ZD(XU]gaL'G $D$$V 8 _Ei  @@@Ei @@bñ9LN郜? D D"%٦!TTTT   Y(%  'C'CO# H$SC/@ X z+ X(80 R#PC D>X($O? Q#+O#PClE$yM  @UH/?xF1Z{S@8 _E{@L{+`QcBbñG$$ '/Q/1S3SD$$iH&1 C/'GD$'u:/11W)02D$$M`*Z !` ? D$D{8!ƌG1HIL 7P D$1F L$TPI_x=fp<oh; _Xv  @@@v@@sGYKePffcFfc؀gcgcggcUh!qhcxbñ9LNՊ郜cD D";% "    'CDXZ /K [q  ["X8< &" & ClY ."Y8˫3 !&" &X"%gA !#ZNT#DX9r=OPCe " + Y$$C] O+P͟K #/DKb0jk[,  "@yY87y 4&" & C,@xX$$Ƈ     0AD׺@fHƐZzy8 _ /8@/8+`QcBbñbG$$  P12Z=U!CP ?D$$YAK#/ďC'Q+D$$ 39)J#CD$$0F*'-1+1ƏGOD$$8'1)GPՌW$E$$ FTUX 7Pͳ !ƌGCD$ T C$RD I_xEfpDohR _fN  @@@hN@@e}bñLNcD D";d%R0)      (H$$am  )D$~&1(,X081A!)  @տ* 8 _Ť8  @@@Š8 @@bñ9LN郜D) cD D%]\]    Y(8#  'C/K D$>'C X($p% [# ZG#PG$D3C Y"+g9 &Y X+  ZOD$$9HG+PΕK#ƎC/ZVbK$vU   @^DxF:8 _] X  @@@_͛X@@bñLN郜 cD D";%o?     PGX$d)K   'C[ >D$I*G#/ Z\5)0'DD8j+Z50#PC  D9 #G  @@ 8 __깛y  @@@ay@@oYbñLN郜 ácD D";b%/      D%t 'C 0 ZDH"'\0K#' -# %DE9Z+d4 1# 2D(D9@ A 9 ?K@D$((Gԑ+RV AD$%U# T@ c IY$$ c aK@ԑ+HDDqtx J# v@ D"'$ R K@D%([ԑ+ S#Y$D @  Z D$$K@ԑ+"KdG G  G +  D"'KPG +  KdE9, G +  K"KȜD G +  K' H$XZ\J8  bI$D%  # C dGb'$& +  ~O   # HdGb'7C +  ~O  DdGۼ' # C +  ~D$H05O   # C HDDiC+  ~O  G/ DK$QWJ  ` -"GْȻ_ ^G  G/ ,E$DwmpJ  y 0 wbG$$: {G  QI@0@v@v 8 _)o  @@@~)o@@{bñ9ND Gܧ  X8اf      @D2Z8 _*gn  @@@gn@@IobñLN郜D D";%%     'CE$'##C/@  Db+'G  @ٿ& 8 _Sd  @@@S`@@bñLN郜l ácD D";d%/P      OD$$^C/K '+C NG˒$N+ K# N #C#[ID$+8-# NC3PS' D$$k9#G#PC7["E; GJ#G  @Q 8 _hZ@oϐZl PfcfcFbñbGĒ$  0"/)".)D$$o)) ')$)ZZD$$Z9"+B8 D$$o*ZZZZZ2@HDZ8DLP@doh* _  75 75007 04.0 04 09 27 75 75039 04.5 04 10 06 75 75049 01.0 04 10 06 75 75047 01.0 04 10 06 75 75030 06.0 04 10 07 75 75030 05.0 04 10 08 75 75049 06.5 04 10 08 75 75007 01.5 04 10 08 75 75015 00.8 04 10 09 75 75049 08.0 04 10 10 75 75049 08.0 04 10 10 75 75007 00.5 04 10 11 75 75049 03.0 04 10 11 75 75007 05.0 01 10 06 75 75050 04.0 01 10 06 75 75051 04.0 01 10 07 75 75007 04.0 01 10 07 75 75049 04.0 01 10 08 75 75500 04.0 01 10 08 75 75041 03.0 01 10 08 75 75049 01.0 01 10 09 75 75049 08.0 01 10 10 75 75049 06.0 01 10 10 75 75040 01.0 01 10 10 75 75041 01.0 03 10 10 75 75055 03.0 03 10 10 75 75055 04.5 03 10 11 75 75055 03.5 03 10 11 75 75055 04.0 04 11 03 75 75030 05.0 04 11 03 75 75000 02.0 04 11 04 75 75030 04.5 04 11 04 75 75013 03.0 04 11 05 75 75030 08.0 04 11 06 75 75030 08.0 04 11 07 75 75030 08.0 05 09 13 75 75000 01.0 05 09 13 75 75047 07.5 05 09 12 75 75048 07.0 05 09 12 75 75500 02.5 05 09 11 75 75048 08.0 05 09 11 75 75500 02.0 05 09 10 75 75048 09.5 05 09 09 75 75028 01.0 05 09 09 75 75048 08.0 05 09 08 75 75036 05.5 05 09 08 75 75013 02.5 05 09 06 75 75030 09.5 05 09 05 75 75043 02.5 05 09 05 75 75036 04.5 05 09 05 75 75500 00.5 05 09 05 75 75030 01.0 05 09 04 75 75030 07.0 05 09 04 75 75000 01.0 05 09 03 75 75030 08.0 05 09 03 75 75000 00.5 05 09 02 75 75036 02.0 05 09 02 75 75030 07.0 05 08 30 75 75036 04.0 05 08 29 75 75036 05.5 05 08 29 75 75500 03.0 05 08 29 75 75046 00.5 05 08 28 75 75046 03.0 05 08 28 75 75036 05.5 05 08 27 75 75046 05.5 05 08 27 75 75044 00.5 05 08 27 75 75031 00.5 05 08 26 75 75046 04.5 05 08 26 75 75044 01.5 05 08 25 75 75046 06.0 05 08 25 75 75044 01.5 05 08 23 75 75046 08.5 05 08 22 75 75031 03.0 05 08 22 75 75046 06.0 05 08 21 75 75031 09.0 05 08 20 75 75042 04.0 05 08 20 75 75031 05.0 05 08 16 75 75500 01.5 05 08 16 75 75004 08.0 05 08 15 75 75042 08.5 05 08 14 75 75042 09.0 05 08 13 75 75000 00.5 05 08 13 75 75004 03.5 05 08 13 75 75042 04.0 05 08 12 75 75500 05.0 05 08 12 75 75004 04.0 05 08 12 75 75035 00.5 05 08 11 75 75000 01.5 05 08 11 75 75031 01.0 05 08 11 75 75035 02.0 05 08 11 75 75037 02.5 05 08 11 75 75500 02.0 05 08 09 75 75035 06.0 05 08 08 75 75035 08.0 05 08 07 75 75037 04.0 05 08 07 75 75035 02.5 05 08 07 75 75000 02.0 05 09 19 75 75500 06.5 05 09 19 75 75039 02.0 05 09 18 75 75046 02.5 05 09 18 75 75500 06.5 05 09 17 75 75046 03.5 05 09 17 75 75500 06.0 05 09 16 75 75048 01.0 05 09 16 75 75045 01.0 05 09 16 75 75044 01.0 05 09 16 75 75043 01.0 05 09 16 75 75039 01.5 05 09 16 75 75500 03.5 05 09 15 75 75048 01.0 05 09 15 75 75500 08.5 03 09 20 75 75039 03.5 03 09 20 75 75047 02.0 03 09 20 75 75007 03.5 05 09 22 75 75039 08.5 05 09 23 75 75039 09.0 05 09 24 75 75039 05.0 05 09 24 75 75500 03.5 05 09 25 75 75045 00.5 05 09 25 75 75039 04.0 05 09 25 75 75053 04.0 05 09 26 75 75053 04.0 05 09 26 75 75054 04.5 05 09 29 75 75039 03.0 05 09 29 75 75052 00.5 05 09 29 75 75054 03.0 05 09 29 75 75053 03.0 05 09 30 75 75053 01.2 05 09 30 75 75039 03.3 05 09 30 75 75030 00.5 05 09 30 75 75054 05.0 05 10 01 75 75500 01.0 05 10 01 75 75039 06.0 05 10 01 75 75048 01.0 05 10 01 75 75054 00.5 05 10 02 75 75500 01.1 05 10 02 75 75039 02.4 05 10 02 75 75047 02.0 05 10 02 75 75028 01.0 05 10 02 75 75500 01.5 05 10 03 75 75500 06.0 05 10 03 75 75000 01.0 05 10 03 75 75028 04.0 05 10 04 75 75028 03.0 03 10 04 75 75007 03.5 03 10 04 75 75049 04.5 01 09 29 75 75052 04.0 01 09 29 75 75500 04.0 01 09 30 75 75049 08.0 01 10 01 75 75500 08.0 01 10 02 75 75052 08.0 01 10 03 75 75049 08.0 04 09 29 75 75054 01.5 04 09 29 75 75039 02.0 04 09 29 75 75007 05.5 04 09 30 75 75054 02.5 04 09 30 75 75005 04.5 04 09 30 75 75039 02.0 04 10 01 75 75039 01.5 04 10 01 75 75007 03.0 04 10 01 75 75049 03.0 04 10 01 75 75030 00.5 04 10 02 75 75047 02.0 04 10 02 75 75049 06.0 04 10 02 75 75007 01.0 04 10 03 75 75047 03.0 04 10 03 75 75049 02.0 04 10 03 75 75007 04.0 04 10 04 75 75049 01.0 04 10 04 75 75007 08.0 05 10 06 75 75050 01.0 05 10 06 75 75039 00.5 05 10 06 75 75500 00.3 05 10 06 75 75050 06.2 05 10 07 75 75050 00.5 05 10 07 75 75051 04.8 05 10 07 75 75500 00.7 05 10 07 75 75000 01.8 05 10 07 75 75039 00.5 05 10 08 75 75007 05.7 05 10 08 75 75500 02.5 05 10 08 75 75049 00.3 05 10 09 75 75000 07.0 05 10 10 75 75047 00.4 05 10 10 75 75048 00.7 05 10 10 75 75049 02.0 05 10 10 75 75057 05.0 05 10 10 75 75500 00.4 05 10 11 75 75054 00.3 05 10 11 75 75051 04.0 05 10 11 75 75051 02.0 05 10 11 75 75050 00.7 05 10 13 75 75055 03.0 05 10 13 75 75050 01.5 05 10 13 75 75051 02.0 05 10 13 75 75007 01.5 05 10 13 75 75057 00.5 05 10 14 75 75055 05.5 05 10 14 75 75058 02.0 05 10 15 75 75055 05.0 05 10 15 75 75058 03.0 05 10 16 75 75060 01.8 05 10 16 75 75007 06.2 05 10 16 75 75049 00.5 05 10 17 75 75007 02.0 05 10 17 75 75049 02.5 05 10 17 75 75060 01.5 05 10 17 75 75050 01.6 05 10 17 75 75039 00.4 04 10 13 75 75007 06.0 04 10 13 75 75049 02.0 04 10 14 75 75007 04.0 04 10 14 75 75055 01.5 04 10 14 75 75058 02.0 04 10 15 75 75007 08.5 04 10 15 75 75058 00.5 04 10 16 75 75007 08.0 04 10 16 75 75036 01.0 04 10 17 75 75007 08.0 05 O8 06 75 75037 08.5 05 08 05 75 75037 04.5 05 08 05 75 75500 04.0 05 08 04 75 75500 01.0 05 08 04 75 75037 07.5 05 08 01 75 75043 06.5 05 08 01 75 75005 00.5 05 08 01 75 75500 01.0 05 07 31 75 75043 07.5 05 07 31 75 75005 00.5 05 07 30 75 75043 02.0 05 07 30 75 75005 06.0 05 07 29 75 75500 07.0 05 07 29 75 75034 01.0 05 07 28 75 75500 08.5 05 07 25 75 75500 08.0 05 07 24 75 75500 07.5 05 07 24 75 75000 00.5 05 07 23 75 75500 06.5 05 07 23 75 75030 01.5 05 07 22 75 75500 08.0 06 10 23 75 75028 08.0 06 10 24 75 75028 04.0 06 10 24 75 75061 04.5 04 10 20 75 75049 01.5 04 10 20 75 75030 04.5 04 10 20 75 75013 02.0 04 10 21 75 75049 01.0 04 10 21 75 75007 01.0 04 10 21 75 75030 04.0 04 10 21 75 75013 02.0 04 10 22 75 75007 06.0 04 10 22 75 75013 01.5 04 10 22 75 75042 00.5 04 10 23 75 75056 05.0 04 10 23 75 75007 03.5 04 10 23 75 75028 01.0 04 10 24 75 75061 05.0 04 10 24 75 75007 02.5 04 10 24 75 75058 01.0 04 10 25 75 75058 01.5 04 10 25 75 75061 07.5 05 10 20 75 75060 02.5 05 10 20 75 75050 02.0 05 10 20 75 75055 04.0 05 10 21 75 75055 05.0 05 10 21 75 75060 00.4 05 10 21 75 75049 00.4 05 10 21 75 75050 00.4 05 10 21 75 75055 00.4 05 10 22 75 75055 03.1 05 10 22 75 75042 03.1 05 10 22 75 75039 00.9 05 10 22 75 75050 01.5 05 10 23 75 75042 01.6 05 10 23 75 75055 01.1 05 10 23 75 75007 01.8 05 10 23 75 75056 05.0 05 10 24 75 75007 01.3 05 10 24 75 75061 02.2 05 10 24 75 75058 05.7 05 10 25 75 75058 05.3 06 10 27 75 75061 02.0 06 10 27 75 75058 02.0 06 10 27 75 75013 02.0 06 10 28 75 75058 02.0 06 10 28 75 75051 05.0 06 10 28 75 75050 01.0 06 10 29 75 75051 04.0 06 10 29 75 75050 03.0 06 10 29 75 75049 01.0 06 10 30 75 75049 08.0 06 10 31 75 75049 04.0 06 10 31 75 75064 04.0 04 10 27 75 75061 04.0 04 10 27 75 75013 04.0 04 10 28 75 75013 07.5 04 10 28 75 75007 01.0 04 10 29 75 75013 08.0 04 10 29 75 75049 01.0 04 10 30 75 75049 04.0 04 10 30 75 75030 03.0 04 10 30 75 75007 01.5 04 10 31 75 75049 04.0 04 10 31 75 75030 02.0 04 10 31 75 75064 02.0 04 11 01 75 75030 04.5 05 10 27 75 75048 03.0 05 10 27 75 75061 01.3 05 10 27 75 75058 04.4 05 10 27 75 75051 00.3 05 10 28 75 75058 01.0 05 10 28 75 75007 05.5 05 10 28 75 75051 01.5 05 10 28 75 75050 01.0 05 10 29 75 75050 05.0 05 10 29 75 75049 03.0 05 10 30 75 75508 00.7 05 10 30 75 75049 03.8 05 10 30 75 75050 04.5 05 10 31 75 75050 00.7 05 10 31 75 75056 01.0 05 10 31 75 75064 01.5 05 10 31 75 75007 00.8 05 10 31 75 75049 02.0 06 11 03 75 75049 02.0 06 11 03 75 75506 05.0 06 11 03 75 75064 01.0 06 11 04 75 75064 02.0 06 11 04 75 75506 05.0 06 11 04 75 75042 01.0 06 11 05 75 75506 08.0 06 11 06 75 75506 07.0 06 11 06 75 75030 01.0 06 11 07 75 75506 08.0 05 11 03 75 75050 01.0 05 11 03 75 75500 07.0 05 11 04 75 75050 03.0 05 11 04 75 75042 05.5 05 11 05 75 75050 03.0 05 11 05 75 75042 05.5 05 11 06 75 75042 07.0 05 11 06 75 75050 01.5 05 11 07 75 75042 07.0 07 11 03 75 75064 08.5 07 11 04 75 75064 02.0 07 11 04 75 75050 04.0 07 11 04 75 75042 02.0 07 11 05 75 75050 06.0 07 11 05 75 75042 02.0 07 11 05 75 74037 01.0 07 11 06 75 75050 01.0 07 11 06 74 74037 07.0 07 11 07 75 74037 03.0 07 11 07 75 75042 01.0 07 11 07 75 75007 04.0 01 11 07 75 75504 02.0 07 11 10 75 75007 03.0 07 11 10 75 75030 05.0 07 11 10 75 75065 01.0 07 11 11 75 74037 05.0 07 11 11 75 75065 03.0 07 11 11 75 75056 01.0 07 11 12 75 75065 03.0 07 11 12 75 75063 02.0 07 11 12 75 75000 03.0 07 11 13 75 75065 02.0 07 11 13 75 75063 05.0 07 11 13 75 75056 01.0 07 11 14 75 75063 01.5 07 11 14 75 75065 05.0 07 11 14 75 75056 01.5 01 11 10 75 75030 05.0 01 11 10 75 75501 02.0 01 11 10 75 75000 01.0 01 11 11 75 74037 02.0 01 11 11 75 75049 02.0 01 11 11 75 75066 04.5 01 11 12 75 74045 04.0 01 11 12 75 75063 02.0 01 11 12 75 75054 02.0 01 11 13 75 75063 03.0 01 11 13 75 75066 01.0 01 11 14 75 75000 04.0 01 11 14 75 75050 01.0 01 11 14 75 75047 01.0 01 11 14 75 75063 02.0 01 11 15 75 75050 03.0 01 11 15 75 75504 01.0 01 11 15 75 75000 03.0 06 11 10 75 75506 04.0 06 11 10 75 75030 05.0 06 11 11 75 75506 05.0 06 11 11 75 75042 03.0 05 11 10 75 75042 08.0 05 11 11 75 75054 02.0 05 11 11 75 75056 02.5 05 11 11 75 75042 03.0 05 11 11 75 75048 00.5 05 11 11 75 75049 01.2 05 11 12 75 75054 02.0 05 11 12 75 75048 01.0 05 11 12 75 75056 05.0 05 11 13 75 75054 00.6 05 11 13 75 75056 04.0 05 11 13 75 75042 01.0 05 11 13 75 75000 01.9 05 11 14 75 75056 05.0 05 11 14 75 75047 02.5 05 11 14 75 75050 01.5 05 11 14 75 75049 00.3 Qcdefghijklmnopqrstuvwxyz{|}~01 07 21 75 75037 02.0 01 07 21 75 75034 03.0 01 07 21 75 75000 03.0 01 07 22 75 75040 04.0 01 07 22 75 75034 04.0 01 07 23 75 75040 04.0 01 07 23 75 75037 04.0 01 07 24 75 75030 02.0 01 07 24 75 75022 01.0 01 07 24 75 75040 02.0 01 07 24 75 75034 01.0 01 07 25 75 74042 04.0 01 07 25 75 75040 04.0 01 07 25 75 75034 01.0 01 07 28 75 75037 01.0 01 07 28 75 75501 06.0 01 07 27 75 75031 02.0 01 07 27 75 75034 03.0 01 07 27 75 75501 02.0 01 07 27 75 75042 01.0 01 07 30 75 75043 02.0 01 07 30+ }HBi&pLǕ#Ȋ֯߄ z{X[7,=ӹ81_Xjt+ɦ7#,E;qa(vd ZS۱`^2%{36ο7=JGy)汗f UʈjSoDhm:O;@9YvG|ɅMJBD*j뤰!8첵[Ch!T$̈́ {\OiUQhx K1wW̡WH/]-o5ȖOϤdM'96'܉e sXP.6A}ˉcio&LzC#7ȍ!Vz{߀Fμ`81`_%j+7,x:lla(mdy Z۸` +I%Ҷ3]Ǒٿn=J":)\ GUB“1mboDmG:j;!@YKaGT| eΣ]s*kЉ9Z Ch!K$ͣ5 \,Q7ܔ$ K,fgWTңkHG/-PekOƤ7MJ9q6'eLBsXy. w6F