IMD 1.17: 27/06/2012 8:45:59 UCSD PASCAL SYSTEM VII.0 DISK 5/6 PART NUMBER 61-0011-005 REV A DEMO PROGRAMS MANUFACTURED ON 6-NOV-80  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &lŗkm HBf     &  MPT[%G BREAKOUT.TEXT@[5GT BREAKOUT.CODE[T\ PLANETS.TEXT@[5\` PLANETS.CODE[`a MASK.FO%C e U7F ?IO ERROR WHILE BOOTING? 7$ ?NOT ENOUGH CORE TO BOOT? TO['ab INVERSE.FOTO['bx SPHERE2.FOTO[x~ PANSINE.TEXT@[5~ PANSINE.CODE[垁 SALES  e   ևߕ vߕ 7| SYSTEM.PASCAL? w7b SYSTEM.8510/A? @Aw  .TEXT@[5 SALES.CODE[垖OIL.TEXT\OIL.CODE\ STARS.TEXT@[5 STA`! mG~d!~  ^\F C& J&  0  EN  ~ RS.CODE[ STARS.FOTOzSŠ STR.DISP.TEXT@[5 STR.DISP.CODE@[5 _~U@pe5w E ŋw Ŋw C! @ D~̋   wTwDԤ eeW 7 ?YOU DON'T HAVE A  ߋt_v @ @ PASCAL5* e SYSTEM.8510/A\> SYSTEM.PASCALb[>CSYSTEM.CHARSET["C_ SYSTEM.FILER@[g_~SYSTEM.LIBRARY\Ƞ~ LETTERS.TEXTnZ LETTERS.CODE[垑 RATMAZE.TEXT\ RATMAZE.CODE[垥DERIVATIVE.TEXTDERIVATIVE.CODE垮 SURFACE.TEXT\ SURFACE.CODE[垺 WWII.TEXT\ WWII.CODE[ PATT1.TEXT\ PATT1.CODE[ PATT2.TEXT\ PATT2.CODE <f,4~%x$J8[ LIFEDEMO.TEXT\ LIFEDEMO.CODE[ CYCLE.TEXT@[5 CYCLE.CODE@[5% CYCLE.PRO#V"COPYRIGHT (C) 1978, REGENTS OF UNIV OF CALIF,SD Z Z ` f:@FLRX^djpv| "*2``@Z`d %  D~ " ~ E D~ D C~ %  D~  ~& <AA~E e8f"a8f"@"$ F% &@L$f&b8f"c8f" \ j .   @`& E&~AA~E e @`&AA~E e @`  `` @ @f ~f{fxfufrfoflfifffcf `f" t @L A@@A tBt B@P< ``f~ ``A~ c ҇ef rHJKC  >P  ?]f$Zf&Wf(Tf*Q NKHEB?<963 0"-$*&'($*! /efAA,"<w eeee e  e e& f   EezN EE7- 7 &  G 6E7, 6 ?  w pr@$@$@$@" EB~f r&z%% 7 (\7 (``WtB &E7 5@|<7w {7yw 7 psw mw g- aBE B<<  wN EC~ B~Uf rfVpfz  eN @_ azE ~ ~UV3T E@ JD B94T?4 E@" "-l8@ 6NE LU@t7`.~BE B @Wtw`& B~<z& & E7? ~7E@U@  E7 w wU &    N\Et& B~ & > ~UB~  Ձ@  a a!~F@  B~  *7 7 7 zv x7 vEl7 h 7 E7 tv wU W r7 $7 "~<E `E `EՀW @p@ `E e `&& `& ` ^ E@ &?  w U@w > 6 & h ^7 X E e `&EՀ~<  7Z   ҂ ~< E e ` EF @~w 2 ?*  "U@  wE 7 wv FRX\`&    @ ` G7vz   7H 7Z 6W w{Z N B F J ^ f j n x |  " 6 B D J f 2  4 ^ v ~   6 j | h*06NV\bz <6 E E7 ~<& EE Jd`n  B@B <C``& ΟX @ e E`E``B~8A Ew0w.Dw$ &  Z&X( &7 |v7 n|7 `|7 T 7 < 6 '((@`@`( (+m ]   P~P~eeNPP  \ = "  \m\  W  m ef5`\_e w5 5@ W  ~~e<ee``!~ e C~C~ %< C~\ɋE 5\\\f F^T2&,FR,: f6 C~ceί%@ eAp6% "1, 1,1,^  %W Y#w (Q&vI  >7 7(w& EFHJKABCDWX][f@@ N Z[  ^A %^A&Daef ¥_09E AZ  U7MwG7 % @`?R wLVxx|xt@ wU :: C  f ee $ $ $ $ @A eeee >eJ< K E7 w z2@t  w Et@_7   O 0E]``&& `  E e @a&&6E e @a&!$'(****AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTOE e @a \d<Z@@`@`$fH@7 `e B~  B~< _ ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN7@` dd&`f&d&b&  m ef )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROGRAM !RECORD - ɋ e  rfwBC % e 7d,\ Aɋ BJ@ BREPEAT SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR m8~@ Bm*~@ Bm~     WHILE WITH 7 <)& @  z7 <)7 )7 )7 &7 *7 &7 ' I?zr& 7h  AF eA -Bl: \.<$WFl7 ,,\ vw *< R'(((@ BCzEG@HPtJ$LM nO(k<   mAɋF! &ffD e w5 wDe`<nC<QRChTV焵W!cY_[\^^k `#ǭaxXc'exfhShjQYkoNmo9?pIrs|ouEw7x߄z @|Η}½  & &  tʕ U Q~ʕ \׌UE׌x׌"  e w d    X N wK w: 7 ,* $? U@ _E7 wf @7 6_ 8 E7 _ 7 v7 7 7 P 7"U?  E7 PRTV + wU  E@ w h07  w w N!.7 eJww  U @e @wxBEfEP U@ _E7 _ ]p |ʋD~ G~ 5E~ E~e  e  ` e  |$$ K wU  J _&ZT| ** wU &f&f7 .U   02 -/ ->%$  -~>%$t t n d ^_TR HDɝ^& _E7 .C DE!:7  7aehD A   aw7 28*7 2E 7 _$7  E7 V&U@ % E7 e:wXP@P7n@eI70@wnM)w\ 7 , ßz 5U$ ez\& Dr)&&\   5@5@7 X&'&'0'0' )'''' )& )& )& )&$'(:' )&J  E     7 7  @  27 !ׯ+U E ` D' )D'x'f&\  \& \\r1@\[?\ ew & ?U?*@ڪAD    ͋D 5|w 5B N  5 , W#D  7W ΁?Zw  C %     @  f&\   B -  e \z\D'U `  xZ7Wm7 P ]Dw=7w Zl Fw bIw   D5H5   :@ S~ e&-"wn.5) 5|w  w tR <w H<  Alw&f65t w E   e@ׇEU 77 :  .-& pU`E@ wHw .:" ʵm H& W Y#w H^E. U w w  UEw  BFU@ % eC ~% C ``` ezLN w Zć  tw  h!w  UOw p w 먇  <w  0w `ʽ W Y#wwU  E@ e ]& 7 7 7ߐ2 7  | t ~"   =@f&ysE[\pCf&f&\% a @w   6 6 &  f 6A  v  6N\z\\\ N A f C %C B    \  w  D& &&@7 &)D& && 6  A7 ^'*'&**'*&"*** )J* )& )& )& )& )) ɡOšOɡšF  LS#  , P# e\ \S\ e& @7 &:*)e\z*f& \:יc&>X4%]@& & &  , I#  l,á*6!F *STK OFLOW*תPFF+ & & D&&D&& @%7 r'*  IA e e@ e& & & & & Dˡ 6!:9 "8?á <צ Exec err #   á,&&e #@  @6 7 'J+6 6 #?%-0 @ ׳ ,(+, ,ábÍ:L]L?ƪ@ \fEA#& e@ & f& f& f7 '&X, ff w +á -ˡ.$  š t@..  &@& , $$&ˡ . .6% .&$&!F:F FˡFFD'%ɡšɡš  P&:+:azȄaA:) Type צ to continue) 8>`  PASCALSYUSERPROGDEBUGGERPRINTERRINITIALIGETCMD & ,Í ˫hp(ުPצצ22ȡ5233 ȡ 23aĩ3zȄ 23aA f C_  fW & @&&&&7 f( )<)p((f('&v( )&'&&'V(&\( )(e\\;@\ \N @     d˯7 H ȡ   צ0H" dÍÍˡ 퓄 Ä퓡  dÄÍ" ġ  *@#ٕš ګ۫ š۫ ګ,0   ˄"ɡ  dá  dá C#C˄ C    22š*á ?צ:22ȡá;2á!2ȡ5252š[ץQɫ  ȡ 0  0ȡ? ȡ  ġ  á22š2222ȡ2š5252á4w4]ץ11á4\1šV42233z ġMáš6 삫뻥 d #( / 3042221é42é1Ä2*á444ń55P.TEXTׯ]צ.CODEÍáɡ 럚肚X ū  J.BACKׯ7צ.INFO$.GRAFׯצ.FOTO8 <!~ áš  h ! ! Ä & ! !ë  ÄÄȄĄMȄt  Ä  1  !š Í 7ÄU iȡF ōɍ ō ȍ  dč "쓡ëǐɄ:6ń~66! á ~ 쓡ת!!9 D*~ éÍ~  , Ą ˄˥ń á   uš  gá /Ä쓡"á  :"ë á 쓡ת$+  ɡ"á a˄ Ꟛšq#ń? z 0 ń Ȅ! ~ת     n Í`~W ˡ!  ,ȫ$* "ë넡, ~ á9 铡/! !!1ˡ) ! 76*Í2~ š˄ `+ \ ( 7( :VQ28˄šá  d1    á sá# Ȅ 隹Ká/Ä   áš蕿@šQȡ2 šx á1 š2    :X fE6!~?8FצPut in :P?FP'Ǡá*EEšš$ !邚邫镫ë퓡h  ! "ˡ ɡ! E   !#E$ á"ˡ"& E ##& ! "ˡf á3 á+á! "ˡ Eá +6+6ˡ6á  T4P"hvf J.*L +Uz  Oš *š .Tf* zF d2:X fE6!~?8FצPut in :P?  áá ~צ/13:!      4T h ɡ 逫-á-32768ת Pġ>o0   šˡ 퓄 Ä퓡w 0ń0ˡ oɡ` Nȡš š   ɍL  "ˡ.ˡ   d쓡 뾿  .dá0á-  21šá. Ą ɡ 낫š ꓡ2  Q l>š 쾿  š땫ĚL삫Ú š a .Tá " *áá0á"á61 ɚ l š +-Í-ëzV 0á$-á š áš  šš!邚邫镫ë퓡S z kO  ȡ*ń ! "ˡ! "ˡ "ˡáˡȄ4šáRתPńȄ ,ń.  %ƮƂƂ0ƂXƁ<s$` 0T @NDZ 8 T z ~ x\6  ( :*צ dup dir entry(צfile already open(צ file not open(צbad input format(r8FNo debugger in systemתP8F6^.)G:!ing buffer overflowת(צdisk write protected(uillegal block #ת(]bad byte countת(Fצbad init record(.( SYSTEM.WRK. $*(J '%Ҧ74 text&}eN:%oYDצ IO error: (צUnimplemented instruction(צFloating point error(u'773code'77$Z&ت( *SYSTEM.WRK. 4(RWtn d8String overflowת(]Programmed HALTת(EProgrammed break-pointת(&ReP9$oYC %ƮƂƂ0ƂXƁ<s$` 0T @NDZ 8 T z ~ x\6  (٢ š٢ ٢٢ 4*ƁV`tDoo odoo'zrצUnknown run-time error(צValue range error(צNo proc in seg-table(Exit from uncalled procת(Stacḱʁʁʁצ*SYSTEM.MISCINFOP*"áO* ?́*́ʁʁʁʁʁʁ overflowת(צInteger overflow(Divide by zeroת(צNIL pointer reference(צProgram interrupted by user(ʁ%ʁ% t*&*n تٞ&"á ~٤  :SYSTEM.ASSMBLERת :SYSTEM.COMצSystem IO error(צ unknown cause( parity (CRC)ת(צillegal unit #(illegal IO requestת(צdata-PILERת :SYSTEM.EDITORת :SYSTEM.FILERת צ:SYSTEM.LINKERƁ&̨<́b ́cʁcȡ~ؤFP'Ǡá*EEE   !#E$ á"ˡ"com timeout(vol went off-lineת(file lost in dirת(צ bad file name(צno room on vol( vol not found& E ##&Eá +6+6ˡ6á  T4ת(file not foundת(צ dup dir entry(צfile already open(צ file not open(צbad input format(r8FNo user programתP8F0#^.)G:!ing buffer overflowת(צdisk write protected(uillegal block #ת(]bad byte countת(Fצbad init record(.( SYSTEM.WRK. $*(J '%Ҧ74 text&}eN:%oYDצ IO error: (צUnimplemented instruction(צFloating point error(u'773code'77$Z&ت( *SYSTEM.WRK. 4(RWtn d8String overflowת(]Programmed HALTת(EProgrammed break-pointת(&ReP9$oYC  ;??ٟá'C CONSOLEצSYSTERMGRAPHICצPRINTERREMINצREMOUTexulתצAug Sepת צOct Novת צDec ???תצ??????ת6! <ƋD*SYSTEM.CHARSETת(ƋDʋI&"áǀʋUʋTʋKƆD ʋT  ̌fʌުP11ˡCۡ>1áIllegal file nameצNo file ́3ˡ fȡƆD   ̌fʌfȡƈD  ل7@ǀ ?̌fʌfȡƊDؤؤ  not code3"ˡצ Bad block #02́42ʁ4ȡCƀ2ƀ2ō$ƀ ƀ P  ƋDR677::9 3222́42ʁ4ȡuƀ2ˡaݡ9צ Linking...ܡ #צ988:9  6 ۪1٦׷)Must L(ink firstg222́42ʁ4ȡJ22č7ʁ302́532́6ʁ5ʁ5ʁ6ʁ5ʁ622צ: ܢܢH d    0&צצ.צ??e f@^ڤ áڤ !~ e ת*U  ? צ*SYSTEM.WRK.TEXT& *SYSTEM.WRK.CODEײ , 7 !! !:!!ڤ  ڤ  áڤ R :9CONSOLE:ת(:9SYSTERM:ת(8:98áצ Assemblingצ Compiling...á999':::::&: 6ëצ???JanתצFebMarתצAprMayתצJunJ(yáצAssembleצCompile what text? (ׯ::(:.TEXT-:( ulתצAug Sepת צOct Novת צDec ???תצ??????ת6! "ˡ$צ Can't find ::9 ƀצ:9 ƀ:SYSTEM.SWAPDISK&:(7%7̄詄% š t Welcome ?צ, to-*SYSTEM.WRK.CODE[*]תצTo what codefile? (צ,áuצ$,,ˡ-́dʁdתʁd0ʁdʁd؞&"á*ʁd ضá0?ʁdצ*SYSTEM.STARTUP(߫7U.C.S.D. Pascal System II.0Current date is C -C-%́eʁ%ʁeȡlضʁ%ʁbQ́fƁfʁdƁfƁ&ʁ% Ɓf(ߡʁ% ʁbʁ%́bʁ%́%C %System re-initialized(, 06" 0 MayתצJunJ  צ*Command: U(ser restart, I(nitialize, H(altP')%$z쓡ݽ,::(,$,]ˡ$-::(:צ.CODE[*]0:--"ˡ צ Can't ope Linking...ˡ&צ Restarting...צ U not allowedn -   áث 7_a 7& š+ >*>$$~$~$$>> >.*.:*:8DD88(800   $~$|8(8š%צSYSTEM.WRK.CODEsSYSTEM.WRK.CODE׷Fš5 ~8(8``0 > BB~~BB~>BBBBB>~>~~ šA.á צ.CODEm%>>"rBB^@BBB~BBB ">B""B~fZBBBBBBFJZRbB~BBBBB~~BB~~BBBRr~@~BB>BBB<צ:) Running...ء ء:9B<@B<~BBBBBB~BBBBB$BBBBBZfBB$$BBBBB<~B0< B~>> 0``|@@@@@|>8:9á'צ*SYSTEM.STARTUP %áá  <@\B|:FBF:BBBB>xx >  Linking...ˡ&צ Restarting...צ U not allowedہہǻRRJHá68AX0qz((* "D&(,. Dv\xý6   FצKCommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [II.0]P')%?á@Fýýý   " ȡ3پ!}ȄپaپzȄ پaAצI T  ܪ۪ڪ-ˡ[ ġR&    צ ? (Y/N) - -F&צ ?  ɡ& Invalid #aP  ˄8&Destroy Gצ: ?  Gצצkת{צcתת(WצSתԦת(KצOת  J [ áF([*****]/(ġ 0 2` ٪ # ת á ÿ۽ϟn`Äצ(ڹצParity (CRC) error(Bad unit numberת(Bad I/O operationת( Timeout errorÿŹýýýŹת(Vol went off-lineת(File lost in dirת(|צ Bad file name(fצNo room on vol(ONo such vol on-lineת(ýýýŻ3File not foundת( t`K1ٹVol already on-lineת(Text file lostת(צCode file lost(Qˡá  File foundת(צBlkd vol( Unblkd volת(צ File name(צFile/(unblkd vol)(צFile/(blkd vol)(צFile/vol(Vol nameת(צOutput file full(Workfile is savedת(No directory on volת(No workfile to saveת(Wildcard not allowedת(צ"Bad form (Wild Non-Wild) card(Ill file/vol nameת(}Ill change (Vol <??`l  (>ǟ`Ƌto> file) nameת(UBad dest for files foundת(4,"iEbUġ#(צ `8`8 ` `o`o?expected1(& Ş"˶ I/O error # 4!צ Filer error # ء5 FILEHAND \&),áY 6(   MJLN0A$6Uۡ &Pɡ צ, áצ áצ g=#g=ɍ=*á =*jjjצ:j($hh=ɡX="#š=P="=fܪ(G[!nء CGGá+á &"ˡ~[צ["=h"h=h"h"=P=gg=á?gg=ɡ, 󍓡 =g ˡ  .  sآWצ:آ(Yצc&PܓÄ)jjSjצ:jˡjj(jAj(ܓfOGK׷Ȅ آצ ? ) ,áYø۪   ff@Զ  rުݪ"צPWkKGšׯɄ  0ު(áܲ~Í %&ܥKO &&ȡu ''k'S{c\ڥs[KG2G:[ Remove oldRƁ-צChangȡKk'k-'' ܡšڡKNeChange to what׷{צSW,,W,צ:,(,,(,{A,(*צChange Y˄ &"&& & ܡ&'&k'{[*[")ǐ ),, d,,[,["𥀈{á򥀿D1 0 ء,ˡ   ߓ`&צPut  : in unit  { c󓍄E''S'צ:'{!'0'c?'(&K&not proccessedء ߓ ٨š5Kˡ*   ġ" ء " á á3!:W~,gڲ= ggۓ$=?N۪ڪƁK""áN׷9& צ ? "'ز=g(=g=&=g&Pɡۡצ ...too long <ٹFצ file n  ڪ٪ت&:&Pɡ(š ame < scan string #צ vol name  M8!ۡ1á    - char. max >---> 4ثضÍצ$*á-:á?: Illegal formatT<=ڲ= ݪצc&.צ what fileצ:á ;&Pġ - عEXå[ׯGC81(o* what vol ?  , gg#š=jgjPg?=ɍ :   Ɓ3"ݣ ɡݣ  ڕš"ق Text file saved  & 0צCODE  #צCode file saved62"o.ܡC׷C#ÄÄ~Íj%á*צPut in G:'צInsert destination צצ not named2 Workfile is :.񄓡 (not saved) No workfiledisk % š " ݢÄv%.ת&תת(&Ɓ.񄓡9&צThrow away current workfile ? ݢÄ ۡ"ˡ ݢڶ /ݢ0/0 /0 ءצ*SYSTEM.WRK.TEXTצ*SYSTEM.WRK.CODEצ*SYSTEM.LST.TEXT**.*צ.BACK*צ/0 0 òCń /C"ݢݢ///צ://td צTRemove  ء&צWorkfile cleared&Tf ' ݪܪ  : .  ǀransferTo whereׯ󓄡=H3Transferצblocks# of blocks to transfer צTransferá@ .  ڲ צ& * )'Getצǐ&G.[  צ. Ɓ-צMakeǐh"))** **.&ؓń=.צ.TEXT.צ.CODE ..Ȳ.׷:.TEXTצText ײ"&G:[ madeצT! ߪ Ɓ8 55 *SYSTEM.W&)צ.CODEצCode )١&צNo  file loaded (- RK. 5 5 4454=5  d66.6.6 65ݪ   p &+- ȡ%ܾz ܾ0ŶȄ: \,%Date #٪ؓצ *SYSTEM.WRK.,C:[.set: <1..31>--<00..99>Cˡ_צ Today is C -C-á" G"+!+~G?KÄ?G;K;GK,,, $[.GC .צE&Save as G,:, ׯ>צRemoveǀ RemoveE+G:. ? 瓡צSave asצ[š C?/צTEXT$CODE$饀ޤ removed%á % ń,&Update directory ? צ".[G&TEXT&  #hKצ*..CODEOld code removed, C  New date ?  ,Cػ+škGGȡ"GؾAĥGؾZȄ?:צPrefix is - ;: 0 צ Zero dir ofצH  GإGؾAa ȡ$GCػ+c,C ػ?צ:@ÄצDuplicate dir ?   Are thereצblks on the diskצ# of blocks on the disk צNew vol name ?  Cצ The date is C -C-C 6 * 饀:˥׷!צ:DGצ : correct ? ,%ö,ÍP$&,􍓡~%K:, %,,,|.G CK"צ: zeroed p1šצFile(s) endangered:Mȡڶ+šڸ+*ڂ*ŶB < UNUSED >     .p/ƃƅ'l\ؤ áצ Directoryڢڢ  v 2Dir listing ofצ׷١糖 צ#1:(ƃ"١̅.̅-̅,̅+̅*̅) ̅(ˡZ ȡ<ڤ š+ؓښڤ ȡ3ؓ R j3צBad block scan ofצ Ä . %̅,ړצListƅ-~$ʅ.áWriting.ʅ.̅.ʅ- ̅/צHScan forצblocksScan for how many blocks ܕšۏ"ˡ`ۂȡQʅ- ʅ//ʅ/ʅ/̅)ʅ(ʅ)̅(ƃʅ/ƃצʅ/ƃʅ) ƃʅ/  ƃ-ƃƅ0ʅ/ "ˡ93צBlock  צ is badۂġ צ bad blocks2 0ƃ-ƃʅ/   ءQƃʅ/ ƃʅ/  ƃƃƅ0ʅ/ƅ0ƃfile3ƃʅ/  4צExamine blocks onצH&Block-range ? S  SRR  RRˡR ƃƅ0ʅ/ƅ0. ڍʅ- /ƃʅ. ƃ/ƃ  ƃ files;ƃצ, ƃʅ( ƃ blocks usedƃ, ƃʅ* ƃ unusedƃצ, ƃʅ+ ƃצ in largest T USVR̂dVʂdȡצBlock V ƁdVƁdV"á dV"Ɓdd  may be ok"١ ƃƃ"ƃ ,  N- Vols on-line: ȡ &Gz is badV3ˡYV šOUVˡ9TTTM šTVT ȡR~צ; צ #  :צRoot vol is - VVUVVá52Mark bad blocks ?š$צ (files will be removed !)צ (Y/N)  VWarning units   &  צ have the same name--(' N\Znb2222222222 "צPrefix titles byl;G& Prefix is ;:`%\!X0T4P1L5H6DRWBLK  DRWBLK DRWBLK D*@:BZ2" (@,(NXF0N>w\ ƁG&צSYSTEM.YbcCZ BAD.xxxxx.BADתV̂dVʂdȡV̂eʂeWʂeXT̂fTʂfġ1Z TʂeoT0WRK.TEXT צSYSTEM.WRK.CODE &PĶ (Dɞ(ń?Íצ0???JanFeʂeoTTT TWT ɡTTWT#VV צBad blocks markedH`]t5ebMarAprMayJunJulAugSepOctNovDec?????????0צ Bad CodeTextInfoDataGrafFoto ~% ۢˡMoving ۢۢצ SYSTEM.PASCAL G?   š "0 & L (*&brB\( "&`'"#))'D+*,H--*..\//x0001B1Z1h55p8L5H6 " " ġ  7  , DRWBLK PASCALIODECOPS DRWSTUFFGRAPHICS צCrunch@צFrom end of disk, blockצStarting at block # 3 % forward ת   ȡ'  š 7  צback  ġ ɡ7 G : crunched#צPlease re-boot{ X6تPFP') x V2.0-R0-L2R88תVצOFiler: G(et, S(ave, W(hat, N(ew, L(dir, R(em, C(hng, T(rans, D(ate, Q(uit [C.4]8+צ&fet  pt `mwhE Z: 7  Dt7.2m2,((7 $ &Filer: G, S, N, L, R, C, T, D, Q [C.4]8?áVOFiler: B(ad-blks, E(xt-dir, K(rnch, M(ake, P(refix, V(ols, X(amine, Z(ero [C.E 77 77 ev 6 e wt  {4]8+&Filer: W, B, E, K, M, P, V, X, Z [C.4]8ڡ$&B% ȡ~٤ܦ׷u ȡhܲ~ؤ~7vP @ 7v7vx7v~e~elh~mjmb7vZwtN{ wvFPPA H7t27v2< 7t"7v"x, 1; $VAR BYTE,BLOCK,N: INTEGER; "BEGIN SYSCOM^.IORSLT := INOERROR; $IF F.FISOPEN THEN &WITH F,FHEADER DO (BEGIN *IF (RECNUh[NA4 '  }rg\QF;0%á M < 0) OR NOT FSOFTBUF OR 2((DFKIND = TEXTFILE) AND (FRECSIZE = 1)) THEN $ "TYPE DECMAX = INTEGER[36]; +-Í-۲z0ݡߑ ع  STUNT = RECORD CASE INTEGER OF 12:(W2:INTEGER[4]); 13:(W3:INTEGER[8]); 14:(W4:INTEGER[12]); 15:(W5:INTEGER[16]); 16:(W6:INT    k ݢݣޢÄ@@@   P  5  O ~eL3Ná ޣ Ąޣ ݣ ˡRݣ &ݢ ݢݢ!ݣ "ˡݣ ˄ݢ!ۂ <<Df\A4 '  }rg\QF;0%á "ˡ\ݣ ݣ šݢ ݣ ݢݣݣ ݣ ݣݣńݢݣݢݢݢˡݢݢ ۚݢܚ   p +-Í-۲z0ݡߑ ع  á +-Í-ڲzؼ 0.áAڲzؼ 0ڲzQeEÍݍ.á '߂ۓۡܡ  $ "TYPE DECMAX = INTEGER[36]; STUNT = RECORD CASE INTEGER OF 12:(W2:INTEGER[4]); 13:(W3:INTEGER[8]); 14:(W4:INTEGERؼɡ ؼ߀$ ؼߞ$"Hɍ -   $[12]); 15:(W5:INTEGER[16]); 16:(W6:INTEGER[20]); 17:(W7:INTEGER[24]); 18:(W8:INTEGER[28]); 19:(W9:INTEGER[32]); 110:(W10:I $ ݞ$' ݑ$ $݂ō $݂ġ ݂$NTEGER[36]) /END; ' " "PROCEDURE FSEEK(VAR F: FIB; RECNUM: INTEGER); PROCEDURE FREADREAL(VAR F: FIB; VAR X: REAL); "PROCE $ $ȡ%  0 ފ$čQ   .ˡ5  Eɡ DURE FWRITEREAL(VAR F: FIB; X: REAL; W, D: INTEGER); "PROCEDURE FREADDEC(VAR F: FIB; VAR D: STUNT; L: INTEGER); "PROCEDURE FWR -ݑ š 0 0 ߿`ġ(   ݂. ݕ ؂݂3  ݕ 0 . ݑ0 ݕITEDEC(VAR F: FIB; D: DECMAX; RLENG: INTEGER); "  IMPLEMENTATION $ "PROCEDURE FSEEK(*VAR F: FIB; RECNUM: INTEGER*); $LABEL ݂ ؂ ɡ   x,  & * عuu 2w&7$" G8  x*b`$7w& 8  & 2  D!@  ͕- ͕0  F\  F  ##- (      Aa@  U  D D   D          f   "& f X7 vwpn  @\Z \ V ͕0F ͕0 0 _  ``f  w\  __ _B B`A b e  QB  b   6  _ ;NJ#&;KLZzĊ @" R _j7 ev a " j b \ H HH  ` H HhHh    e^TPJ$BLOCK <= FMAXBLK) AND (BYTE <> FBLKSIZE) THEN 0BEGIN 2UNITREAD(FUNIT,FBUFFER,FBLKS_DB F  F   _% _ "77 * &IZE,DFIRSTBLK+BLOCK-1); 2IF IORESULT <> ORD(INOERROR) THEN GOTO 1 0END ,END; *IF FNXTBLK > FMAXBLK THEN ,BEGIN FMAXBLK := F     w aB  ~ B   `w`7& 7 7 7 7aNXTBLK; FMAXBYTE := FNXTBYTE END *ELSE ,IF (FNXTBLK = FMAXBLK) AND (FNXTBYTE > FMAXBYTE) THEN .FMAXBYTE := FNXTBYTE; *FEOF : E  Da7 D7zE mna R Ha H R e<! F  (&  = FALSE; FEOLN := FALSE; FREPTCNT := 0; *IF FSTATE <> FJANDW THEN FSTATE := FNEEDCHAR; *FNXTBLK := BLOCK; FNXTBYTE := BYTE  _d 7dwH J7 D aw> w* (7 "D 7Da7  DECOPS DECOPS GDEC GDEC -w` F   &  & w %% |PASCALIOFSEEK FSEEK FREADREA FREADREA FREADDEC FREADDEC FWRITERE  x |rntjfhX \L -LL   *     FWRITERE FWRITEDE  FWRITEDE  DECOPS @  $-1:>GK l  b  w!     a  E _ ,/36:GJNQUbeilp}  }rg\QF;0%á vJ  b h^  XVD$`h d  20$`   +-Í-۲z0ݡߑ ع   747( a "  ` $$ _ * ˕͕07 7   e&~e&~eep`@I**I"AAA"A""A>"A"AAAAA>"""> l7 7 w v7 v jj^7 ^ CptE`eE /6 .-00(J*v5t5t "* (  e7 $m-  ` ~ m- ` ~-, nb^(&f@ACpe& Δ~BB  LBB  LB   5  \v h&  e ~B ee# ~CpPp(Cm r `W  W  eru~ , @ @|rfVVVVV&fE CDRWSTUFF DRWSTUFFDRAWLINE DRAWLINEBITTER vDRAWBLOC  DRAWBLOCGCHAR E ww  wRCaE ee e wz tE WuEB  N uEDGCHAR BITTER  GMARK  GMARK THROTTLE THROTTLE  7>tEpWuE` mtEp  uE` m %   ACBvC@A CBv xC L@PM|C L@A C@Pmlm`A C@xm\mPe:86VTLXjh|l22222222 &f #TYPE SCRN = PACKED ARRAY[0..319 , 0..79] OF BOOLEAN;{one zone} # PSCRN = ^SCRN ; #PROCEDURE INIT_GRF ; #PROCEDURE USE_ p C`WqP b tm ?Y AaWp(mEtU  5tUBE vSURF ( S:PSCRN ) ; #PROCEDURE DRAW_VS ( SIZE: INTEGER ) ; #PROCEDURE DISP_VS ( DISPLACEMENT , GRZONES , CHZONES:INTEGER ) ;v n ds D`   <T L]LM W!  ~ (  e #PROCEDURE SET_VPRT ( LEFT , RIGHT , BOTTOM , TOP:REAL ) ; #PROCEDURE SET_WNDW ( XMIN , XMAX , YMIN , YMAX:REAL ) ; #PROCEDUnb^(&f@ACpe& Δ~BB  LBB  LBRE SET_LNST ( LSTYLE:INTEGER ) ; #PROCEDURE NEW_FRAM ; #PROCEDURE INQ_CPOS ( VAR XPOS , YPOS:REAL ) ; #PROCEDURE MOVE_ABS ( X e ~B ee# ~CpPp(Cm r `W  W  eru~   &    ō"צ chpr error :ɍ"צ chsz error ث٫<   rټؼܼۼܼڼټؼټڼتP +,5,5ȡ31/3-131/-x31 , Y:REAL ) ; #PROCEDURE MOVE_REL ( X , Y:REAL ) ; #PROCEDURE LINE_ABS ( X , Y:REAL ) ; #PROCEDURE LINE_REL ( X , Y:REAL ) ;  ,ݼܼ ۼڼ ˍš á   ޓ  ڥC #PROCEDURE MARK_ABS ( X , Y:REAL ) ; #PROCEDURE MARK_REL ( X , Y:REAL ) ; #PROCEDURE SET_CHPR ( CHPR:INTEGER ) ; #PROCEDURE  ڥ,  ۥ  ۥݼܼ ޡ_ ټSET_CHSZ ( XSIZE , YSIZE:INTEGER ) ; #PROCEDURE SET_CHSP ( XSPACE , YSPACE:REAL ) ; #PROCEDURE TEXT ( S:STRING ) ; #PROCEDUREؼD bP ?ነ? SET_MKSM ( N:INTEGER ) ; # P !IMPLEMENTATION ! VAR #TYPE SCRN = PACKED ARRAY[0..319 ,?. ثáBצdraw_on_view_surface not calledF  ɩ ō$צ marker error   Vةȓɍ ō" drvs error 1@ȡ@ǀ ث  P ? 劐Im ōɍō צ dsvs error??劐劐)    ؂ˡ ǀ ڏZ"צ vprt error (ō"צ chpr error :ɍ"צ chsz error ث٫<"צ wndw error تP +,5,5ȡ31/3-131/-x31ō"צ lnst errorá:3?PP1  ,3?1P šB áǀ ؞ 0٥إ á,,h ث  BtlH ,@`<,XxV  VSY &WSY YTOP 4?STYLE 5!l  patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fCYPOS  h8Pjy y ,SPDY 3 urther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.O^ It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM TESTIT;  TYPE TERAKSCREEN = PACKED ARRAY[0..4799] OF INTEGER;   VAR SCREEN: TERAKSCREEN;  DELAY,N,X,Y,H,W:INTEGER; CHR:CHAR;   PROCEDURE DRAWLINE(VAR RADAR:INTEGER; VAR S: TERAKSCREEN; á:3?PP1  ,3?1Pá,,h ث  BtlH ,@`<,XxV GRAPHICS o 0+i; YBOT 6GCHAR WCX iVCX {VCY WCY CHPRECIS %3CHARWIDTsi CHARHEIGf !oTHROTTLE IMPLICIT"SKRN {Eb@ XLEFT $GMARK  SPDX y ,SPDY 3  {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anDRAWLINE XRIGHT -MRKSYM )[ NZONES [ 1IRe  C y losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, CXPOS `{3Geoq t WSX toVSX ulosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any screen is in the y direction.   The screen dimension in the x direction is allways 0..319.  ,(0, (nzone*80)-1 ) **********}  ; HEIGHT ; INTEGER,  ; WIDTH ; INTEGER,  ; LINESYLE : ******* (319, (nzone*80)-1) ,- -  - INTEGER )  ; PROCEDURE GMARK( SCREEN: ARRAY FOR SCREEN DISPLAY  ; NZONE : INTEGER, # OF 1/3 ZONES OF SCR - ,- - EEN  ; X : INTEGER, X LOCATION OF MARKER  ; Y : INTEGER, Y LOCATION OF MARKER  ,- ABSOLUTE - ,- screen coordinates for - ,- ; MN : INTEGER, MARKER NUMBER  ; AXL : INTEGER, XLEFT OF WINDOW TO CLIP MARKER  ;  GMARK AND GCHAR - ,- - ,-  AXR : INTEGER, XRIGHT OF WINDOW TO CLIPP MARKER  ; AYB : INTEGER, YBOTTOM TO CLIP MARK - ,(0,0) ********************************************* (319,0) , , !Linestyle for ER  ; AYT : INTEGER, YTOP TO CLIP MARKER both routines is 0 for white(set bits on), 1 for black !(clear bits out--erase). Neither routine works under compliment mode.  ; LSTY : INTEGER, LINESTYLE FOR PEN 0 IS WHITE, 1 BLACK *)  PROCEDURE GCHAR(VAR S:TERAKSCREEN; NZONE,CHAR,  Height and Width parameters to GCHAR define how many templates wide  and high the character will be on the screen. Thus a,X,Y,H,W,STYLE:INTEGER); $EXTERNAL; !(*  ;  ; THIS ROUTINE DRAWS A 7 DOT BY 7 DOT MARKER DEFINED BY THE PARAMETER MN  ; I8ROW, X0,Y0,DX,DY,PEN:INTEGER); EXTERNAL;  (*  The following routines GMARK & GCHAR support graphics on the 8510/a by  drawi call to GCHAR  with the parms h=3 & w=2 would produce a character template in the  graphics scape 30 (3 * 10) dots high and ng characters and markers in the graphics space.   Both routines address the screen in absolute screen coordinates with (0,0)16 (2*8) dots wide.  Character templates are taken from the character generation buffer.   ;PROCEDURE GCHAR( VAR:  ;   defined as the lower left corner of the screen.   Both routines will support a view surface(drawing surface) smaller, equa SCREEN ARRAY: POINTER TO ARRAY USED AS SCREEN, l to,  or larger than the actual display surface in the y direction. The y dimension mion  must, however, be a multiple of 80 ; NZONE : INTEGER, {NUMBER OF ZONES TO DRAW ON}  ; ORD(CHAR) : INTEGER,  ;  (i.e 1/3 screen or the equivalent of a  single screen zone. NZONE is the parameter which tells the routines how  large the  X : INTEGER, {RANGE 0<=X<=319}  ; Y : INTEGER, {RANGE 0<=Y<=(NZONE*80-1) E CONDITION WILL RESULT IN BAD THINGS!!! HAPPENING.  ;  ; 0<=X<=319  ; 0<=Y<=NZONE*80-1  ; XLEFT <= X <= XRIGHT  ;  YBOT <= Y <= YTOP  *)   PROCEDURE GMARK(VAR S:TERAKSCREEN; NZONE,X,Y,N,XL,XR,YB,YT,STYLE:INTEGER); $EXTERNAL;  PROCEDURE THROTTLE(TICKS:INTEGER); EXTERNAL;  (* PRODUCES BUSY WAIT(DELAY) APPROXIMATELY TICKS/60 SECONDS*)   BEGIN  UNITWRITE(3,SCREEN,63);  H:=0;  WHILE H<> 10 DO !BEGIN "H:=H+2; "FILLCHAR(SCREEN,SIZEOF(SCREEN),-0);  CHR:='A'; "Y:=0; "X:= 0; Z?ĩ ˡVĥǀ% AƩɡ-ɩƩũƩũɹA̒ʩʒȡ"WHILE X <220 DO #BEGIN #GCHAR(SCREEN,3,ORD(CHR),X,Y,H,1,0); #X:=X+8; #Y:=Y+2; #CHR:=SUCC(CHR); #END; !END;  CHR:='A'; -ǀ% Ʃɩƹǀ% AȩɡbצDELAY=  FOR X:=1 TO 20 DO  BEGIN  FILLCHAR(SCREEN,SIZEOF(SCREEN),-1);  GCHAR(SCREEN,3,ORD(CHR),0,0,X,X,1);  CHR:=SUCC(CHR);  END;ɩƩƩũȩɹProgram finished _<%x  FILLCHAR(SCREEN,SIZEOF(SCREEN),-0);  CHR:='A'; "Y:=0; "X:= 0; "DELAY:=-19; "WHILE X <220 DO #BEGIN #THROTTLE(DELAY*1 l7 7 w v7 v jj^7 ^ CptE`eE /6 .-00(7 $m5); #WRITELN('DELAY=', DELAY DIV 4); #GCHAR(SCREEN,3,ORD(CHR),X,Y,1,1,0); #X:=X+8; #Y:=Y+2; #DELAY:=DELAY+1; #CHR:=SUCC(CH-  ` ~ m- ` ~-,   R);  END; !WRITE('Program finished ');  READLN;  END.   5  \v h& , @ @|rfVVVVV&f p C`WqP b tm ?Y AaWp(mEtU  5tUBE vv n ds D`   NTO THE SCREEN LOCATION X,Y. IF THE MARKER WOULD LIE OUTSIDE THE  ; CLIPPING BOUNDRY DEFINED BY XLEFT...YTOP THEN THE MARKER WILL BE TRIMMED  ; TO FIT IN THE BOUNDRY.  ;  ; THE FOLLOWING COINDITIONS ARE EXPECTED TO HOLD, NONCOMPLIANCE WITH  ; THES* TESTIT  OCEDURE THROTTLE(I:INTEGER);EXTERNAL; ! !FUNCTION RANDOM(SIZE:INTEGER): INTEGER; BEGIN SEEDA:=SEEDA MOD 999*17+103; SEE<T L]LM W!  ~ (  enb^(&f@ACpe& Δ~BB  LBB  LB e ~B ee# ~CpPp(Cm r `W  W  eru~ e&~e&~eep`@I**I"AAA"A""A>"A"AAAAA>""">J*v5t! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any5t "* $, HU ,04@888E?? ??? losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l??"9&9K8K: ;6;L;C:9$D=*=>??CD8D0EZE.=START; PAGE[I,J]:=WALeeda:=abs(lowtime) mod 1000; IF SEEDA=999 THEN BEGIN SEEDA:=SEEDB; SEEDB:=1000; END; HEIGHT:=39; WIL; FOR I:=START-1 TO START+4 DO PAGE[5,I]:=WALL; ROW:=7; COL:=START END (*I N I T R A T*); PROCEDURE RUNDB:=SEEDB MOD 1001*13+107; RANDOM:=(SEEDA+SEEDB)DIV 5 MOD SIZE; END (*RANDOM*); FUNCTION GOODNEIGHBOR(INT:INTEGER) :BOOLEANDTH:=51; DIR[1]:=-1; DIR[2]:=1; DIR[3]:=WIDTH; DIR[4]:=0-WIDTH; Z1:=HEIGHT*WIDTH; FOR INT:=1 TO WIDTH DO ; BEGIN FLAGS:=0; FOR Z1:=1 TO 4 DO IF MAZE[INT+DIR[Z1]]=LONELY THEN BEGIN FLAGS:=FLAGS+1; SAM[FLAGS]:=Z1 BEGIN MAZE[INT]:=VISITED; MAZE[Z1+INT]:=VISITED; END; FOR INT:=2 TO HEIGHT DO MAZE[INT*WIDTH]:=VISI; END; GOODNEIGHBOR :=FLAGS>0; END(* GOODNEIGHBORS *); PROCEDURE STEP; VAR ROW,COL,LOC,TOS,INT:INTEGER; BEGIN ZTED; FOR Z1:=0 TO 319 DO PAGE[0,Z1]:=BLANK; MOVELEFT(PAGE[0],PAGE[1],9560); UNITWRITE(3,PAGE,56); FOR Z1:=0 TO 1:=(1+RANDOM(HEIGHT))*WIDTH+(1+RANDOM(WIDTH)); IF Z1>HEIGHT*WIDTH THEN Z1:=Z1-(WIDTH+1); IF Z1 MOD WIDTH = 0 THEN Z5 DO BEGIN T1[Z1]:=BLANK; T2[Z1]:=BLANK; END; FOR Z1:=6 TO 306 DO BEGIN T1[Z1]:=WALL; IF Z1:=Z1+1; TOS:=1; STACK[TOS]:=Z1; MAZE[Z1]:=VISITED; WHILE TOS>0 DO BEGIN LOC:=1+RANDOM(TOS); INT:1 MOD 6=0 THEN T2[Z1]:=WALL ELSE T2[Z1]:=BLANK; END; FOR Z1:=307 TO 319 DO BEGIN T1[Z1]:=BLANK; =STACK[LOC]; STACK[LOC]:=STACK[TOS]; TOS:=TOS-1; WHILE GOODNEIGHBOR(INT) DO BEGIN IF FLAGS>1 THEN  T2[Z1]:=BLANK; END; FOR Z1:=5 TO 233 DO IF Z1 MOD 6=5 THEN PAGE[Z1]:=T1 ELSE PAGE[Z1]:=T2; Z1:=(1+R BEGIN FLAGS:=1+RANDOM(FLAGS); TOS:=TOS+1; STACK[TOS]:=INT; END; Z1:=SAM[FLAGS]; ANDOM(WIDTH-1))*6; FOR INT:=0 TO 3 DO FOR Z2:=Z1+INT TO Z1+6-INT DO PAGE[INT+1,Z2]:=WALL; FOR Z2:=Z1+1 TO Z1+5COL:=(INT MOD WIDTH)*6; ROW:=(INT DIV WIDTH)*6; CASE Z1 OF 1:(* LEFT *) FOR Z2:=ROW TO ROW+4 DO PAGE[Z2,COL DO PAGE[5,Z2]:=BLANK; Z1:=(1+RANDOM(WIDTH-1))*6; FOR INT:=0 TO 3 DO FOR Z2:=Z1+INT TO Z1+6-INT DO PAGE[2]:=BLANK; 2:(* RIGHT *) FOR Z2:=ROW TO ROW+4 DO PAGE[Z2,COL+6]:=BLANK; 3:(* BOTTOM *) FOR Z2:=COL+1 TO COL+538-INT,Z2]:=WALL; FOR Z2:=Z1+1 TO Z1+5 DO PAGE[233,Z2]:=BLANK; END; PROCEDURE LOGRAT;  GIN(* MAIN PROGRAM *) #WRITELN(CHR(12)); #INITIALIZE; STEP; LOGRAT; #THROTTLE(200); WRITE('DONE:'); UNITWRITE(3,Pܫ ȡ? m ȡ? > ȡ?AGE,7); END.  i<إ ?q 6,=d  ,,ȡ   ـá' 3 ,,ȡ% ؂ ,,ȡ  ?,,ȡ? X%8 ,,ȡ!??  2,,ȡ7?á? ? 3 ?,,ȡ!??  ,,ȡ,á  ,,ȡ7؂  MAZER ؕ--ȡ?  ,,ȡ?  ,,ȡ9؂ ؕ-MAZE(ROW,COL:INTEGER;CH:CHAR); BEGIN IF ROW<232 THEN BEGIN FOR I:=ROW TO ROW+2 DO FOR J:=COL TO COL+2 DO  PAGE[I,J]:=WALL; IF (PAGE[ROW,COL-2]=BLANK) AND (CH<>'L') THEN RUNMAZE(ROW,COL-6,'R'); IF (PAGE[ROW+4,COL]=BLANK) AND (CH<>'B') THEN RUNMAZE(ROW+6,COL,'T'); IF (PAGE[ROW,COL+4]=BLANK) AND (CH<>'R') THEN RUNMAZE(ROW,COL+6,'L'); IF (PAGE[ROW-2,COL]=BLANK) AND (CH<>'T') THEN RUNMAZE(ROW-6,COL,'B'); FOR I:=ROW TO ROW+2 DO g kڎ* ȡ5ڥ á A FOR J:=COL TO COL+2 DO PAGE[I,J]:=BLANK; PAGE[ROW+1,COL+1]:=WALL; END ELSE EXIT(LOGRAT); END (* R U N M A ZR š á 󚥘 š E *); BEGIN (* L O G R A T M A I N *) INITRAT(ROW,COL); RUNMAZE(ROW,COL,'T'); END; (* L O G R A T *) BEšؚ ܫ ȡ?  ɡڸȡ=ٸȡ#??L˄R ?B˄T ?R˄L ?T˄B ڸȡ=ٸȡ#??gYL>f ! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anyT Հ DONE:2B5t5t " losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, lr(\8 ɡڸȡ=ٸȡ#??L˄osses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any R ?B˄T ?R˄L ?T˄B ڸpatent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fuȡ=ٸȡ#??gYL>f rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}  (*$LCONSOLE:*)  PROGRAM SINES; CONST SPEED=1; DX=0.07; VAR SCREEN,SCREEN2: ARRAY[0..239] OF PACKED ARRAY[0..319] OF BOOLEAN; F:ARRAY[0..6] OF ARRAY[0..319] OF REAL; I,J,K:INTEGER; R: REAL; -ȡ ؕ?  ,,ȡ? ܭ'rb=n6]Z#"?áȡAȡ#?ġ?ȡ!?ض2  CH:CHAR; PROCEDURE THROTTLE(I:INTEGER); EXTERNAL;   BEGIN FOR I:=0 TO 319 DO SCREEN[0,I]:=FALSE; MOVELEFT(SCREEN[0],SCR?̷ ʷ ȡ$éǠ?è?̷ ʷ ȡǠá @EEN[1],9560); UNITWRITE(3,SCREEN,63); FOR I:=0 TO 319 DO SCREEN[120,I]:=TRUE; FOR I:=0 TO 239 DO SCREEN[I,160]:=TRUE; SC )\>)\>xd?njd??REEN2:=SCREEN; FOR I:=0 TO 319 DO BEGIN J:=I-160; IF J=0 THEN R:=-1.0 ELSE R:=-SIN(DX*J)/(DX*J); SCRE̷ ʷ ȡ>̷ ʷ ȡꥥ???EN[120+ROUND(R*100),I]:=TRUE; SCREEN2[140+ROUND(R*100),I]:=TRUE; F[0,I]:=R; END; FOR J:=1 TO 5 DO BEGIN FOR I:)\>x?dɩōg BAD INDEX: K= צ, I= =0 TO 318-J DO BEGIN F[J,I]:=(F[J-1,I+1]-F[J-1,I])/DX; K:=120+ROUND(F[J,I]*100); IF (K<0) OR (K>239) THEN צ, J= é?쥥??>? WRITELN(OUTPUT,'BAD INDEX: K=',K:4,', I=',I:4,', J=',J:2) ELSE SCREEN[K,I]:=TRUE; END; F[J,319]:=F[J,318]; END;,uEb:{n$5t5t "*?? THROTTLE(300);  END. ̷ ʷ ȡ>̷ ʷ ȡꥥ???O^T SINES  ?̷ ʷ ȡ"?X%??̷ ʷ ȡ"x  VAR "CSA,CSG,SNA,SNG,OLDLAT,OLDFUN:REAL; "IX,IY,K:INTEGER; "Z:ARRAY[1..69] OF ARRAY[1..69] OF REAL; "DSPLY1: SCREENARRAY; (*Y<>0*); "OLDLAT:=LATRL; "OLDFUN:=FUNC;  END (*CONTOURPOINT*); " BEGIN (*SURFACE*) "INITIALIZE; "CALCFUNCTION; "UNITWRIT" "  procedure drawline(var range:integer;var screen;rowwidth,xstart,ystart,deltax, Wdeltay,penstate:integer);  external; E(3,DSPLY1,56); IX:=69; "WHILE IX>=1 DO $BEGIN &OLDLAT:=0; &K:=0; &FOR IY:=1 TO 69 DO (CONTOURPOINT(IX,IY,K,OLDLAT,OLDFU    PROCEDURE INITIALIZE;  BEGIN CSA:=XGAIN*COS(ALPHA); "CSG:=YGAIN*COS(GAMMA); "SNA:=XGAIN*SIN(ALPHA); "SNG:=YGAIN*N,DSPLY1); &IX:=IX-2; $END;  END. SIN(GAMMA); "FILLCHAR(DSPLY1[0],9600,CHR(0)); "(*FILLCHAR(DSPLY2[0],9600,CHR(0));*) "UNITWRITE(3,DSPLY1,63);  END (*INITIALIZE*);   PROCEDURE CALCFUNCTION;  VAR IX,IY:INTEGER; "X,Y,XYS,ZX,ZZ:REAL;  ZG100,PIFACTOR:REAL; SINES:ARRAY[1..69] OF R! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anyEAL; BEGIN "PIFACTOR:=7.0*PI/69; ZG100:=100.0*ZGAIN; FOR IX:=1 TO 69 DO "BEGIN $XYS:=(IX-35)*PIFACTOR; IF IX=35 THEN  losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l&SINES[IX]:=1.0 $ELSE &SINES[IX]:=SIN(XYS)/XYS; "END; FOR IX:=1 TO 69 DO "BEGIN $WRITE('.'); $ZX:=SINES[IX]*ZG100; $FOosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any R IY:=1 TO 69 DO &Z[IX,IY]:=ZX*SINES[IY]; "END (*FOR IX*);  END (*CALCFUNCTION*);  patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu PROCEDURE CONTOURPOINT(IX,IY:INTEGER; VAR K:INTEGER; 7VAR OLDLAT,OLDFUN:REAL; VAR DISP:SCREENARRAY);  VAR FUNC,LATRL,X,Y,ZZ:rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. REAL; "RANGE,I,J:INTEGER;  BEGIN "FUNC:=ZORG-(Z[IX,IY]+IX*SNA+IY*SNG); "LATRL:=XORG+IX*CSA-IY*CSG; IF OLDLAT=0 THEN $BEGIIt may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY N &OLDLAT:=LATRL; &OLDFUN:=FUNC; $END; "X:=LATRL-OLDLAT; "X:=X*X; "Y:=FUNC-OLDFUN; "Y:=Y*Y; "Y:=SQRT(X+Y); "IF Y<>0 THETERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM SURFACE;  CONST "PI=3.1415926; "ALPHA=0.3; "GAMMA=0.69; "XGAIN=2.5; N $BEGIN &Y:=(LATRL-OLDLAT)/Y; &X:=OLDLAT; &REPEAT (X:=X+Y; (I:=ROUND(X); (ZZ:=FUNC+(OLDFUN-FUNC)*(X-LATRL)/(OLDLAT-LATRL"YGAIN=2.5; "ZGAIN=1.1; "XORG=150; "ZORG=200;  TYPE "SCREENARRAY=ARRAY[0..239] OF PACKED ARRAY[0..319] OF BOOLEAN; " ); (J:=ROUND(ZZ); (IF K<>I THEN *DRAWLINE(RANGE,DISP,20,I,J+1,0,239-J,2); (DISP[J,I]:=TRUE; (K:=I; &UNTIL X<=LATRL; $END  Eݥ ܥ ǖݥ ܥ ڼ  ڼ   ټ      ڼ  ڼ   ټ  ڼ ˡ?    \dD8Eġ4E̸ʸD=)p Z l7 7 w v7 v jj^7 ^ CptE`eE /6 .-00(7 $m-  ` ~ m- ! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any ` ~-,    5  \v h& , @ @|rfVVVVV 6W P @ 0 DP 0  0  w (P 0  Q ~@ `U P~e~E w   l9ae9 wVP H 0  O^  A?  Aأ0@  A? Aأ0@Dǀ% D?t AIAEČ@ÈʀȡE# #áED@EÈʀȡa.EÈʀȡ-EEE k@8 E TERAK CORPORATION ="ALL RIGHTS RESERVED"}  (*$R-*) PROGRAM WORLDWARII; TYPE PLANES=ARRAY[0..9] OF PACKED ARRAY[0..3] OF 0,1]:=8; WESTPLANE[2,2]:=144; WESTPLANE[3,0]:=253; WESTPLANE[3,1]:=207; WESTPLANE[3,2]:=143; WESTPLANE[4,0]:=5; WESTPLANE..255; VAR SCREEN:ARRAY[0..239] OF RECORD CASE BOOLEAN OF TRUE: (BYTES:PACKED ARRAY[0..39] OF 0..255); [4,1]:=63; WESTPLANE[4,2]:=128; WESTPLANE[5,0]:=7; WESTPLANE[5,1]:=12; WESTPLANE[5,2]:=248; WESTPLANE[6,0]:=5; WESTPLANE FALSE: (BITS:PACKED ARRAY[0..319] OF 0..1) END; NULLPLANE,EXP,EASTPLANE,WESTPLANE:PLANES; II,X1,X2,Y1,Y2,I[6,1]:=50; WESTPLANE[6,2]:=64; WESTPLANE[7,0]:=253; WESTPLANE[7,1]:=255; WESTPLANE[7,2]:=63; WESTPLANE[8,0]:=1; WESTPLAN,J,PLANESUP,YSPEED,XSPEED,STARTCHK,NUMOFPLANES:INTEGER; PLANEX,PLANEY,CRASH: ARRAY[1..6] OF INTEGER; cha:packed array[0.E[8,1]:=1; WESTPLANE[8,2]:=1; WESTPLANE[9,0]:=192; WESTPLANE[9,1]:=255; WESTPLANE[9,2]:=7; END; PROCEDURE EAST; BEGIN EAS.0] of char;  PROCEDURE INITPLANES; VAR I:INTEGER; PROCEDURE EXPINIT; BEGIN EXP[0,0]:=140; EXP[0,1]:=153; EXP[0,2]:=153; TPLANE[0,1]:=2; EASTPLANE[0,2]:=254; EASTPLANE[0,3]:=63; EASTPLANE[1,1]:=5; EASTPLANE[1,2]:=8; EASTPLANE[1,3]:=8; EXP[0,3]:=49; EXP[1,0]:=48; EXP[1,1]:=147; EXP[1,2]:=201; EXP[1,3]:=12; EXP[2,0]:=206; EXP[2,1]:=182; EXP[2,2]:=109;  EASTPLANE[2,1]:=9; EASTPLANE[2,2]:=16; EASTPLANE[2,3]:=132; EASTPLANE[3,1]:=241; EASTPLANE[3,2]:=243; EASTPLANE[3,3]:=19EXP[2,3]:=115; EXP[3,0]:=16; EXP[3,1]:=255; EXP[3,2]:=255; EXP[3,3]:=8; EXP[4,0]:=255; EXP[4,1]:=255; EXP[4,2]:=255; 1; EASTPLANE[4,1]:=1; EASTPLANE[4,2]:=252; EASTPLANE[4,3]:=160; EASTPLANE[5,1]:=31; EASTPLANE[5,2]:=48; EASTPLANE[5,3]:=EXP[4,3]:=255; EXP[5,0]:=255; EXP[5,1]:=255; EXP[5,2]:=255; EXP[5,3]:=255; EXP[6,0]:=16; EXP[6,1]:=255; EXP[6,2]:=255;224; EASTPLANE[6,1]:=2; EASTPLANE[6,2]:=76; EASTPLANE[6,3]:=160; EASTPLANE[7,1]:=252; EASTPLANE[7,2]:=255; EASTPLANE[7,3 EXP[6,3]:=8; EXP[7,0]:=206; EXP[7,1]:=182; EXP[7,2]:=109; EXP[7,3]:=115; EXP[8,0]:=48; EXP[8,1]:=147; EXP[8,2]:=201;]:=191; EASTPLANE[8,1]:=128; EASTPLANE[8,2]:=128; EASTPLANE[8,3]:=128; EASTPLANE[9,1]:=224; EASTPLANE[9,2]:=255; EASTPLAosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any  EXP[8,3]:=12; EXP[9,0]:=140; EXP[9,1]:=153; EXP[9,2]:=153; EXP[9,3]:=49 END; (* OF EXPLOSION INIT *) PROCEDURE ZEROES; patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fuBEGIN FOR I:=0 TO 9 DO BEGIN EASTPLANE[I,0]:=0; WESTPLANE[I,3]:=0; NULLPLANE[I,0]:=0; NULLPLANE[I,1]:=0; rther notice. % %The information contained herein is p oprietary to TERAK CORPORATION %and must be treated as confidential.  NULLPLANE[I,2]:=0; NULLPLANE[I,3]:=0 END END;(* OF ZEROES *) PROCEDURE WEST; BEGIN WESTPLANE[0,0]:=252; WESTPLANE[0,1It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY ]:=127; WESTPLANE[0,2]:=64; WESTPLANE[1,0]:=32; WESTPLANE[1,1]:=32; WESTPLANE[1,2]:=160; WESTPLANE[2,0]:=33; WESTPLANE[2  FOR I:=0 TO 39 DO (* CLEAR SCREEN *) SCREEN[0].BYTES[I]:=0; MOVELEFT(SCREEN[0],SCREEN[1],9560); FOR I:=223 TO 239 DO MOVELEFT(EXP[J], SCREEN[PLANEX[I]+J].BYTES[PLANEY[I]],4); FOR J:=0 TO 9 DO MOVELEFT(NULLPLANE[J],  (* BUILD PILLBOXES *) BEGIN SCREEN[I].BYTES[0]:=255; SCREEN[I].BYTES[1]:=255; SCREEN[I].BYTES[38]:=255; SCREEN[PLANEX[I]+J].BYTES[PLANEY[I]],4); END; PLANESUP:=PLANESUP-1; CRASH[I]:=0; I:=NUMOFPLANES; ( SCREEN[I].BYTES[39]:=255 END; J:=16; (* ADD GUNS NOW *) FOR I:=227 DOWNTO 219 DO BEGIN * THIS IS BAD BUT SINCE ONLY ONE PLANE CAN DIE I STOP THE LOOP *) IF BULL=1 THEN BEGIN X1:=219; Y1:=26; BULLET(X, SCREEN[I].BITS[J]:=1; SCREEN[I+1].BITS[J]:=1; SCREEN[I+1].BITS[319-J]:=1; SCREEN[I].BITS[319-J]:=1; Y,0,0) END ELSE BEGIN X2:=219; Y2:=293; BULLET(X,Y,1,0) END END END END; (* OF CHECKFORHIT *) PROCEDUR J:=J+1 END; TIME(A,B); NUMOFPLANES:= (ABS(B)) MOD 6 + 1; (* INIT NUM OF PLANES *) X:=10; (* INIT PLANE POSITIONSE BULLONE; BEGIN BULLET(X1,Y1,0,0); IF (X1-XSPEED<1) OR (Y1+YSPEED>318) THEN BEGIN X1:= 219; Y1:=26 END; X1:= X1-XS IN SKY NOW *) FOR I:=1 TO NUMOFPLANES DO BEGIN TIME(A,B); PLANEX[I]:=X; PLANEY[I]:= (ABS(I+B+B)) MOD 3PEED; Y1:=Y1+YSPEED; BULLET(X1,Y1,0,1); IF X135 THEN (* ITS GOING OFF THE END OF THE STHEN BEGIN X:=X1; Y:=Y1 END ELSE BEGIN X:=X2; Y:=Y2 END; FOR I:=1 TO NUMOFPLANES DO CREEN *) BEGIN FOR I:=0 TO 9 DO MOVELEFT(NULLPLANE[I],SCREEN[X+I].BYTES[Y],4); Y:=0 END ELSE Y:=Y+1 END  IF CRASH[I]=1 THEN (* PLANE STILL FLYING *) BEGIN ADJ:=I MOD 2; IF (X>=PLANEX[I]) AND (X=PLANEY[I]+ADJ) AND (Y DIV 80 DO &FOR I:=1 TO NUMOFPLANES DO (IF CRASH[I]<>0 THEN *BEGIN ,MOVEPLANE(I); ,BULLONE; BULLTWO; ,BULLONE; BULLTWO; *END; end; "UNITWRITE(3,SCREEN,7); END. (* OF WORǶms0Ǔ njLDWARII *)  Ǚ Ǚ 1 ȡL׶öUd@  Ǡ!ǐǏ?ǀ 2@?   .? DŽǿǠ0LǠǿǀǀǀ   8 WORLDWAR 'ȡX%ȡ/ۤۤۤ&ۤ'! O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}   PROGRAM ZIZANDDRIP; VAR I,r: INTEGER; S: PACKED ARRAY [0..239, 0..319] OF BOOLEAN; PROCEDURE THROTTLE(I:INTEGER); EXTERNAL;    procedure drawline(var range:integer;var screen;row,x0,y0,x,y,pen:integer);  external;    BEGIN "FILLCHAR (S, SIZEOF(S), 0); UNITWRITE (3, S, 56); FOR I := 239 DOWNTO 0 DO BEGIN DRAWLINE (r,S,20, 0,239, 319,I-239, 3); DRAWLINE ػقػقػDá  ȡ襓áڥ+ڥ+ Ʉ%܂%܂Ʉ ȡo ȡ)ۤ+ۂ% ȡ)ۤ+ۂ%á%T ɩ>ō ɡ ^ ɩ! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anyɍ %ɡ ^ +%á=ר#š* ȡ losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l٤ق;èɡ* ȡ٤ق$ ȡ٤قosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any %ښ+\0 Հ8̓2ʓ2ȡNˡ;̓3ʓ3ȡ&ˡ  patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fubYJb& `(8v, ɡ ^ ɩrther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. " O^ ZIZANDDR  ǀ% 8̒ʒġ0???̒ʒȡ1???,I%  l7 7 w v7 v jj^7 ^ CptE`eE /6 .-00(7 $m-  ` ~ m- (r,S,20, 319,0, -319,239-I, 3) END; FOR I := 0 TO 239 DO BEGIN DRAWLINE (r,S,20, 319,239, -319,-I, I MOD 2+1);  ` ~-,    5  \v h& , @ @|rfVVVVV5t5t "(e  # losses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of anyTLE(120); "GRID (1); THROTTLE(300); "GRID (3); "THROTTLE(300); "GRID (2);  THROTTLE(300); "UNITWRITE(3,S,7);  patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without f"WRITELN(CHR(12)); "END. urther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}    PROGRAM ZIZANDDRIP; VAR I,r: INTEGER; S: PACKED ARRAY [0..239, 0..319] OF BOOLEAN; procedure drawline(var range:integer; var screen;row,x,y,a,b,pen:integer);  external;  PROCEDURE THROTTLE(I:INTEGER); EXTERNAL;   PROCEDURE GRID (PEN: INTEGER); BEGIN FOR I := 0 TO 319 DO ; (*WAIT 2 SECONDS*) FILLCHAR (S, SIZEOF(S), 0); I := 239; WHILE I >= 0 DO BEGIN DRAWLINE (r,S,20, 0,I, 319,0, 1); I := I - 2  END; I := 319; WHILE I >= 0 DO BEGIN DRAWLINE (r,S,20, I,0, 0,239, PEN); I := I - 2 END; FOR I := 0 TO 239 DO DRAWLINE (r,S,20, 0,I, 319,239-I-I, 3); FOR I := 319 DOWNTO 0 DO DRAWLINE (r,S,20, I,0, 319-I-I,239, 3 ZIZANDDR ) END (*GRID*); BEGIN "FILLCHAR (S, SIZEOF(S), 0); UNITWRITE (3, S, 56); FOR I := 0 TO 239 DO DRAWLINE (r,S,20, 0,I,  {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for an 319,239-I-I, 3); FOR I := 319 DOWNTO 0 DO DRAWLINE (r,S,20, I,0, 319-I-I,239, 3); FOR I := 0 TO 319 DO DRAWLINEy losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation,  (r,S,20, I,0, 319-I-I,239, I MOD 2+1); FOR I := 239 DOWNTO 0 DO DRAWLINE (r,S,20, 0,I, 319,239-I-I, I MOD 2+1); THROT$ ; DEATH=-1; HEIGHT=40; WIDTH=60; LF=10; HOME=25; UP=31; FORW=28; C=67; ?ȡǀ% ġ??ġȡ??ġ?~#Mq#ǀ% 8̒ʒȡ??̒ʒġ??̒ʒȡ?̒ʒġ?x,,, ^% l7 7 w v7 v ! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anyjj^7 ^ CptE`eE /6 .-00(7 $m-  ` ~ losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l m- ` ~-,    5  \v h& , @ @patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu|rfVVVVV5t5t ",e  rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}  (* WRITTEN BY DAVID B. WOLLNER *) (*$L-*) (*$R-,I-*) PROGRAM LIFER; CONST BIRTH=1% IDTH]:=DUMMAP[POSIT+WIDTH]+OCCURENCE; DUMMAP[POSIT-1-WIDTH]:=DUMMAP[POSIT-1-WIDTH]+OCCURENCE; DUMMAP[POSIT-1]:=DUMMAP[POSIT- COL := SCAN(L,<> CHR(0),ACTMAP[POSIT]); IF COL <> L THEN BEGIN POSIT := POSIT+COL; GUY:=ACTMAP[POSIT]; IF GUY>121]+OCCURENCE; DUMMAP[POSIT-1+WIDTH]:=DUMMAP[POSIT-1+WIDTH]+OCCURENCE; END(* A N N O U N C E *); PROCEDURE ADDGUYS; VAR ROW,COL7 THEN IF (GUY<130) OR (GUY>131) THEN ANNOUNCE ELSE ELSE IF (GUY=3) THEN ANNOUNCE; :INTEGER; BEGIN BIRTHS:=0; DEATHS:=0; POSIT:=WIDTH+1; REPEAT ROW:=POSIT DIV WIDTH; ROW:=(ROW-1)*320+POSIT-ROW*WI POSIT := POSIT+1; END; L:=L-COL-1; UNTIL (L<=0) ; END; MOVELEFT(DUMMAP[0],ACTMAP[0],4000); POPULATION:=POPDTH; UNITWRITE(3,PAGE,57); PAGE[ROW]:=(PAGE[ROW]-[2])+([2]-PAGE[ROW]); PAGE[ROW+80]:=[0..3]-(PAGE[ROW+80]+[0]); ULATION+BIRTHS-DEATHS; IF BIRTHS+DEATHS=0 THEN BEGIN WRITE(CHR(12));(* FORM FEED TO CLEAR OUT PAGE *) FOR I: K=75; BS=8; SP=32; X=88; Z=90; P=80; VAR POSIT,POPULATION,BIRTHS,DEATHS,GENERATIONS,I,J,L:INPAGE[ROW+160]:=(PAGE[ROW+160]-[2])+([2]-PAGE[ROW+160]); UNITREAD(2,CH,1); PAGE[ROW]:=(PAGE[ROW]-[2])+([2]-PAGE[ROW]); TEGER; BEING,BLANK:SET OF 0..3; CH,LCH:CHAR; ACTMAP,DUMMAP:PACKED ARRAY[0..5999] OF 0..255; PAGE: PACKED ARRAY[0 PAGE[ROW+80]:=[0..3]-(PAGE[ROW+80]+[0]); PAGE[ROW+160]:=(PAGE[ROW+160]-[2])+([2]-PAGE[ROW+160]); CASE ORD(CH) OF ..19199] OF SET OF 0..3; PROCEDURE INITIALIZE; BEGIN POPULATION:=0; GENERATIONS:=0; FILLCHAR(DUMMAP[0],3999,CHR(0)); FIL LF:IF POSIT+WIDTH 0 THEN POSIT:=POSIT+1; BS:IF (POSIT-1) MOD WIDTH <> 0 THEN POSIT:=POSIT-1;T-R*WIDTH; GUY:=DUMMAP[POSIT]; IF GUY>127 THEN BEGIN OCCURENCE:=DEATH; DEATHS:=DEATHS+1; DUMMAP[POSIT] UP,117,85:(*'U'*)IF POSIT-WIDTH>WIDTH THEN POSIT:=POSIT-WIDTH; C,99: POSIT:=(HEIGHT DIV 2)*WIDTH+WIDTH DIV 2;:=GUY-128; PAGE[R]:=BLANK; PAGE[R+80]:=BLANK; PAGE[R+160]:=BLANK; END ELSE BEGIN BIRTHS:=BIRTHS+1;  K,107:IF DUMMAP[POSIT]>127 THEN ANNOUNCE; 73,105:(*'I'*)IF DUMMAP[POSIT]<=127 THEN ANNOUNCE; Z,122: DUMMAP[POSIT]:=GUY+128; OCCURENCE:=BIRTH; PAGE[R]:=BEING; PAGE[R+80]:=BEING; PAGE[R+160]:=BEING; END; INITIALIZE END(* CASE *); UNTIL(CH='S') OR (CH='s'); POPULATION:=POPULATION+BIRTHS-DEATHS; MOVELEFT(DUMMAP[0],ACTMAP[0 DUMMAP[POSIT+1-WIDTH]:=DUMMAP[POSIT+1-WIDTH]+OCCURENCE; DUMMAP[POSIT+1]:=DUMMAP[POSIT+1]+OCCURENCE; ],4000); END; (* A D D G U Y S *) PROCEDURE CHECK; VAR L,GUY,ROW,COL:INTEGER; BEGIN WHILE UNITBUSY(2) DO BEGIN GENERATIONS DUMMAP[POSIT+1+WIDTH]:=DUMMAP[POSIT+1+WIDTH]+OCCURENCE; DUMMAP[POSIT-WIDTH]:=DUMMAP[POSIT-WIDTH]+OCCURENCE; DUMMAP[POSIT+W:=GENERATIONS+1; BIRTHS:=0; DEATHS:=0; FOR ROW:=1 TO HEIGHT-1 DO BEGIN POSIT := ROW*WIDTH+1; L := WIDTH-1; REPEAT &  POSIT:=1289; ANNOUNCE; POSIT:=1291; ANNOUNCE; POSIT:=1292; ANNOUNCE; POSIT:=1294; ANNOUNCE; POSIT:=1295; ANNOUNCE;ǀPǠ<<ۂۂ<<ۂ<<ۂ; POSIT:=1297; ANNOUNCE; POSIT:=1298; ANNOUNCE; POSIT:=1350; ANNOUNCE; POSIT:=1356; ANNOUNCE; MOVELEFT(DUMMAP[0],A<<ۂ<<ۂۂ<<ۂ"< <@<9CTMAP[0],4000); REPEAT UNITREAD(2,CH,1,,1); CHECK; LCH:=CH; CASE ORD(LCH) OF SP:; 83,115:(*'S'*) BPPǠǠǠEGIN WRITE(CHR(12));(* FORM FEED TO CLEAR OUT SCREEN *) FOR I:=1 TO 17 DO WRITE(CHR(LF)); WRITELN(OUTPUT, 'GENERATPPǠǠǠn<(<ɡ< < <ˡION NO.',GENERATIONS:5,' POPULATION =',POPULATION:5); WRITELN(OUTPUT, 'STATS LAST GENERATION - BIRTHS = ',BIRTHS,' DEATHS = ', <ˡ <<š< (<< šȡzNy  "&(,DEATHS); END; 65,97:(*'A'*)ADDGUYS(* INSERT MORE OF THESE GUYS *) END; WRITE(OUTPUT,CHR(HOME)); UNTIL (LCH.l468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvz|~='H') OR (LCH='h'); UNITWRITE(3,PAGE,7); END. %SsÍ Ǡ  #(=1 TO 17 DO WRITE(CHR(LF)); IF POPULATION=0 THEN WRITE('EVERYONE HAS DIED ') ELSE WRITE('WE ARE QUITE STABLE '); GENERATIONS:=GENERATIONS-1; WRITELN('IN GENERATION ',GENERATIONS); WRITELN('To end type an ''H'', or t LIFER o add more type an ''A'''); WRITELN('Type a return to continue afterwards.'); WRITE(CHR(HOME)); READLN;   END; END;(* WHILE NOT UNIT BUSY *) END(* C H E C K *); BEGIN (* MAIN PROGRAM *) BEING:=[1,2,3]; BLANK:=[]; UNITWRITE(3,PAGE,57); CH:=' '; INITIALIZE; POSIT:=63; ANNOUNCE; POSIT:=124; ANNOUNCE; POSIT:=184; ANNOUNCE; POSIT:=183; ANNOUNCE; POSIT:=182; ANNOUNCE; POSIT:=1230; ANNOUNCE; POSIT:=1236; ANNOUNCE; POSIT:=1288; ANNOUNCE;  ǟ ǀ% "<@<š@ǀPǠ'   Հ  9 ? | Ǹ Ƿ Ƕ              F L Ǡ  ̪?ʪ?ȡ GENERATION NO.  POPULATION = צ!STATS LAST GENERATION - BIRTHS =   DEATHS =  n s  "$&(*,.02468:<>@BNFHJLNPRTVXZ\^`bdf3jlnprtvxz|~sHhÍ zTPV! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any       F L Ǡ  ̪?ʪ?ȡ G losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, lENERATION NO.  POPULATION = צ!STATS LAST GENERATION - BIRTHS =   DEATHS =osses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any   n s  "$&(*,.02468:<>@BNFHJLNPRTVXZ\^patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu`bdf3jlnprtvxz|~sHhÍ zTPVrther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY ȡ`< < ˡ0؂ šǂǃōá ؕȡǠ á5 ȡ áEVERYONE HAS DIED WE ARE QUITE STABLE צIN GENERATION  צ.To end type an 'H', or to add more type an 'A'צ%Type a return to continue afterwards.( TERAK CORPORATION ="ALL RIGHTS RESERVED"}  (*$R-*) PROGRAM CYCLE; CONST BS = 8; FF = 12; TYPE DEVICE = (TEK, V BEGIN FOR I := INSIDE (0, X-2, 319) TO INSIDE (0, X+2, 319) DO FOR J := INSIDE (0, Y-2, 239) TO INSIDE (0, Y+2, 239) DO T50, DIABLO, DATAMEDIA, TERAK); INKCOLORS = (NONE, WHITE, BLACK, COMPLEMENT); CURSX = 0 .. 319; SCREEN.I [J, I] := NOT SCREEN.I [J, I] (*COMPLEMENT*) END (*SHOWCURSOR*); BEGIN (*DRAW*) IF GOTCURSOR THEN SHOWCURSOR; (*UN CURSY = 0 .. 239; "XXXXX = ARRAY [CURSY] OF PACKED ARRAY [CURSX] OF BOOLEAN; (*Data structures*) -DRAW THE LAST CURSOR*) NEWX := INSIDE (0, NEWX, 319); NEWY := INSIDE (0, NEWY, 239); IF INK <> NONE THEN BEGIN XD TERAKSCREEN = RECORD CASE BOOLEAN OF TRUE: (I:XXXXX ); FALSE: (C: PACKED ARRAY [0 .. 9599] OF CHAR) END (*TERAIFF := NEWX - X; YDIFF := NEWY - Y; DRAWLINE (RANGE,SCREEN.I,20, X, Y, XDIFF, YDIFF, ORD(INK)) END; X := NEWX; Y := NEKSCREEN*); NOISE = PACKED RECORD $JUNK: 0..255; $DTA: BOOLEAN $END;   VAR VCR: RECORD CASE BOOLEAN OF &TRUE: (I: INTWY; IF WITHCURSOR THEN BEGIN SHOWCURSOR; GOTCURSOR := TRUE END ELSE GOTCURSOR := FALSE; EGER); &FALSE:(P: ^NOISE) &END; X: CURSX; (*TURTLE X POSITION*) Y: END (*DRAW*); PROCEDURE POLYGON(STEP,SIZE,INCR:INTEGER); VAR XX: REAL; BEGIN INK:=WHITE; REPEAT XX := ANGLE * 0.01 CURSY; (*TURTLE Y POSITION*) ANGLE: 0 .. 359; (*TURTLE ORIENTATION*) INK: 74533; (*COMMON EXPRESSION*) DRAW (X + ROUND( SIZE * COS (XX)), Y - ROUND( SIZE * SIN (XX)), FA INKCOLORS; (*PEN STATUS*) NUMBER, HOLD: INTEGER; (*INPUT NUMBER*) SCREEN: LSE); SIZE := SIZE + INCR; ANGLE := (ANGLE + STEP) MOD 360; UNTIL (X<10) OR (X>310) OR (Y<10) OR (Y>230); INK:=BLACK; E TERAKSCREEN; (*THE TURTLE WORLD*) CCH: CHAR; (*COMMAND CHARACTER*) GOTCURSOR: ND (*POLYGON*); !  PROCEDURE MOVE(SIZE:INTEGER);  VAR XX:REAL;  BEGIN "XX:=ANGLE*0.0174533; "DRAW(X+ROUND(SIZE*COS(XX)),Y- BOOLEAN; COMPAT: PACKED ARRAY [0..0] OF CHAR; RANGE: INTEGER; ROUND(SIZE*SIN(XX)),FALSE);  END (*MOVE*); !  PROCEDURE TURN(DELTA:INTEGER);  BEGIN "ANGLE:=ANGLE+DELTA; "IF ANGLE>360 THEPROCEDURE DRAWLINE(VAR R:INTEGER; 3VAR S:XXXXX; LRWIDTH,XSTART,YSTART,DELTX, MDELTY,PEN:INTEGER); EXTERNAL; FUNCTION INSIDE N ANGLE:=ANGLE-360; "IF ANGLE<0 THEN ANGLE:=ANGLE+360;  END (*TURN*); !  PROCEDURE PENCOLOR(COLOR:INKCOLORS);  BEGIN "INK:(A, B, C: INTEGER): INTEGER; BEGIN IF B < A THEN B := A; IF B > C THEN INSIDE := C ELSE INSIDE := B END (*INSIDE*); PROCEDUR=COLOR;  END (*PENCOLOR*); PROCEDURE MOVETO(XX,YY:INTEGER); BEGIN "DRAW(XX+160,120-YY,FALSE);  END (*MOVETO*); !  PROCEDURE DRAW (NEWX: CURSX; NEWY: CURSY; WITHCURSOR: BOOLEAN); VAR XDIFF, YDIFF: INTEGER; PROCEDURE SHOWCURSOR; VAR I, J: INTEGER;E TURNTO(THETA:INTEGER);  BEGIN "ANGLE:=THETA;  END (*TURNTO*); PROCEDURE INITIALIZE; (*START TURTLE AT THE BEGINNING*) ) ,NE,E,SE,S,SW,W,NW); VAR DDX,DDY: ARRAY [COMPASS] OF -1..+1; DX,DY,X,Y: INTEGER; SEGLN: INTEGER; II,J: INTEGER; NEWSTATE: B,ABSOL,DELTA: INTEGER; CH: CHAR; STUFF: STRING; SPEED: INTEGER; F: FILE; BUF: PACKED ARRAY[0..1023] OF CHAR; OOLEAN; PROCEDURE INIT; BEGIN NEWSTATE:=TRUE; DDX[N]:= 0;DDX[NE]:= 1;DDX[E]:= 1;DDX[SE]:= 1; DDX[S]:= 0;DDX[SW]:=-1;DDX[W]:=-PROCEDURE DOIT(SPEED:INTEGER); VAR I:INTEGER; BEGIN I:=0; REPEAT UNITWRITE(3,DELAY,7); ABSOL := ABSOL +SPEED; TE1;DDX[NW]:=-1; DDY[N]:= 1;DDY[NE]:=1 ;DDY[E]:=0 ;DDY[SE]:=-1; DDY[S]:=-1;DDY[SW]:=-1;DDY[W]:=0 ;DDY[NW]:=1 ; END; PROCEDURE MOVMP.SCAN := ABSOL MOD 10; TEMP.ROW := (ABSOL DIV 10) MOD 25; VIR.P^ := TEMP; I:=I+1; UNTIL I>400; END (*DOIT*); BBEGIN VCR.I:=-28; FOR X:=1 TO 20 DO VCR.P^.DTA:=NOT VCR.P^.DTA; "WITH SCREEN DO FILLCHAR (C[0], 9600, CHR(0)); (*CLEAR THEE(HEADING:COMPASS;DIST:INTEGER); BEGIN DX:=DDX [HEADING]; DY:=DDY [HEADING]; FOR II:= 1 TO DIST*SEGLN DO BEGIN X:=X+DX; Y:= SCREEN*) X := 160; Y := 120; ANGLE := 0; INK := NONE; GOTCURSOR := FALSE; " END (*INITIALIZE*); PROCEDUREY+DY; IF (Y<=319) AND (X<=239) THEN SCREEN.I [X,Y]:= NEWSTATE;END; END; PROCEDURE A; FORWARD; PROCEDURE B; FORWARD; P MAINLOOP; FORWARD; PROCEDURE DELAY; VAR I:INTEGER; BEGIN FOR I:=0 TO 5000 DO BEGIN END; IF NOT UNITBUSY(2) THEN EXIT(MAROCEDURE C; FORWARD; PROCEDURE D; FORWARD; PROCEDURE A; BEGIN IF L>0 THEN BEGIN L:=L-1; INLOOP); END (*DELAY*); PROCEDURE DERIV; CONST DX=0.07; VAR J,K,N:INTEGER; R:REAL; F:ARRAY[0..6] OF ARRAY[0..319] OF REAL; A; MOVE(SE,1); B; MOVE(E,2); D; MOVE(NE,1); A; L:=L+1 END; END; PROCEDURE B; BEGIN IF L>0 THEN BEGIN L:=L-1; B; MOVE(SW BEGIN INITIALIZE; WITH SCREEN DO BEGIN FOR K:=0 TO 319 DO I[120,K]:=TRUE; FOR K:=0 TO 239 DO I[K,160]:=TRUE; ,1); C; MOVE(S,2); A; MOVE(SE,1); B; L:=L+1 END; END; PROCEDURE C; BEGIN IF L>0 THEN BEGIN L:=L-1; C; MOVE(NW,1); D; MOVEFOR K:=0 TO 319 DO BEGIN J:=K-160; IF J=0 THEN R:=-1.0 ELSE R:=-SIN(DX*J)/(DX*J); I[120+ROU(W,2); B; MOVE(SW,1); C; L:=L+1 END; END; PROCEDURE D; BEGIN IF L>0 THEN BEGIN L:=L-1; D; MOVE(NE,1); A; MOVE(N,2); C; MOND(R*100),K]:=TRUE; F[0,K]:=R; END; FOR J:=1 TO 5 DO BEGIN FOR N:=0 TO 318-J DO BEGIN F[J,VE(NW,1); D; L:=L+1 END; END; BEGIN INIT; X:=SIZE DIV 4; Y:=SIZE DIV 2; SEGLN:=SIZE DIV 4; FOR II:=0 TO L DO BEGIN XN]:=(F[J-1,N+1]-F[J-1,N])/DX; K:=120+ROUND(F[J,N]*100); I[K,N]:=TRUE; END; F[J,319]:=F[J,318]; :=X DIV 2; Y:=Y DIV 2; SEGLN:=SEGLN DIV 2 END; X:=X+XZERO; Y:=Y+YZERO; D; MOVE(NE,1); A; MOVE(SE,1); B; MOVE(SW,1); C; MOVE( END; END (*WITH*); DELAY; END (*DERIV*); PROCEDURE CALLPOLY(STEP,SIZE,INCR:INTEGER); BEGIN INITIALIZE; POLYGON(STENW,1); END (*SIERPINSKI*); PROCEDURE SCROLLER; TYPE "VIRTYPE = PACKED RECORD SCAN: 0..15; JUNK: 0..15; ROW: 0..P,SIZE,INCR); DELAY; END (*CALLPOLY*); PROCEDURE SIERPINSKI(L:INTEGER); CONST XZERO=00; YZERO=20; SIZE=512; TYPE COMPASS=(N25 END; VAR VIR : RECORD CASE BOOLEAN OF TRUE: (I: INTEGER); FALSE:(P: ^VIRTYPE) END; "TEMP: VIRTYPE; DELAY* 35) END; (*PETAL*) "PROCEDURE BLOSSOM(STEM,LEAF:INTEGER); "VAR I:INTEGER; "BEGIN (*BLOSSOM*) $FOR I:=0 TO 4 DO BEGIN PENCOLO); $PROCEDURE CHANGEXY; $VAR DX,DY:INTEGER; $BEGIN &IF DIR<0 THEN DIR:=DIR+8; &IF DIR>=8 THEN DIR:=DIR-8; &CASE DIR OF (0R(WHITE); MOVE(STEM); PETAL(LEAF); &MOVE(-STEM); TURN(72) END END;  BEGIN (*FLOWER*) "INITIALIZE; MOVETO(-40,-100); PENCOLOR(:BEGIN DX:=1; DY:=0; END; (1:BEGIN DX:=1; DY:=1; END; (2:BEGIN DX:=0; DY:=1; END; (3:BEGIN DX:=-1; DY:=1; END; WHITE); "TURNTO(60); MOVE(50); TURN(-50); PETAL(4); PENCOLOR(WHITE); "TURNTO(60); MOVE(10); TURN(50); PETAL(4); PENCOLOR(WHITE(4:BEGIN DX:=-1; DY:=0; END; (5:BEGIN DX:=-1; DY:=-1; END; (6:BEGIN DX:=0; DY:=-1; END; (7:BEGIN DX:=1; DY:=-1; END &END; ); "TURNTO(60); MOVE(40); TURN(-30); MOVE(69); BLOSSOM(25,7); MOVE(-69); "TURNTO(150); PENCOLOR(WHITE); MOVE(110); BLOSSOM(15,&X:=X+SCALE*LGTH*DX; Y:=Y+SCALE*LGTH*DY; $END; "BEGIN $PENCOLOR(NONE); MOVETO(X,Y); TURNTO(DIR*45); $PENCOLOR(WHITE); CHANGE6); "DELAY; "INITIALIZE; MOVETO(0,-100); PENCOLOR(WHITE); "TURNTO(90); MOVETO(0,0); BLOSSOM(30,7); DELAY;  INITIALIZE; FOXY; MOVETO(X,Y); $IF LGTH>1 THEN BEGIN TREE(X,Y,LGTH-1,DIR+1); TREE(X,Y,LGTH-1,DIR-1) END; "END;  BEGIN "INITIALIZE; TREE(0,R J:=-2 TO 2 DO BEGIN PENCOLOR(NONE); $MOVETO(J*45,(J MOD 2)*50); BLOSSOM(10,4); TURN(10) END;  DELAY END;   PROCEDURE DO-SCALE*ORDER-100,ORDER,2); DELAY;  END;   PROCEDURE HILBERT(SIZE,ORDER:INTEGER);  VAR N,DELTA:INTEGER; "PROCEDURE HIL(I:INEGIN RESET(F,'CYCLE.PROMPT'); PAGE(OUTPUT); UNITWRITE(1,BUF,BLOCKREAD(F,BUF,2,2)*400); ABSOL := 0; "VIR.I := -30; DOIDRAGON(LENGTH,STEP:INTEGER); "PROCEDURE DRAGON(LENGTH:INTEGER); "BEGIN $IF LENGTH=0 THEN MOVE(STEP) ELSE &IF LENGTH>0 THEN T(1); DOIT(2); DOIT(-1); PAGE(OUTPUT); VIR.P^.ROW := 0; VIR.P^.SCAN :=0; INITIALIZE; UNITWRITE(3,SCREEN,56); (*BACK (BEGIN DRAGON(LENGTH-1); TURN(90); DRAGON(-(LENGTH-1)); END &ELSE BEGIN DRAGON(-(LENGTH+1)); TURN(270); DRAGON(LENGTH+1); END;TO GRAPHICS*) END (*SCROLLER*); !  (* $I PLANT.TEXT *)   PROCEDURE SPIROLATERAL(LEN,TRN,REP:INTEGER; SEQ:STRING);  VAR A,B "END (*DRAGON*);  BEGIN INITIALIZE; MOVETO(-80,-10); PENCOLOR(WHITE); DRAGON(LENGTH); DELAY END;   PROCEDURE DOSTAR; "PRO: INTEGER;  BEGIN "INITIALIZE; PENCOLOR(WHITE); "FOR B:=1 TO REP DO "BEGIN $A:=1; $REPEAT &MOVE(LEN*A); &IF SEQ[A]='R' TCEDURE STAR(SIZE:INTEGER); "BEGIN $TURN(-18); PENCOLOR(WHITE); MOVE(SIZE); TURN(144); MOVE(SIZE); $TURN(144); MOVE(SIZE); TURHEN TURN(-TRN) ELSE TURN(TRN); &A:=A+1; $UNTIL A>LENGTH(SEQ); "END;  DELAY;  END; ! PROCEDURE FLOWER;  VAR J:INTEGER; N(144); MOVE(SIZE); TURN(144); $MOVE(SIZE); TURN(144); PENCOLOR(NONE); TURN(18); "END;  BEGIN "INITIALIZE; PENCOLOR(WHITE); "PROCEDURE PETAL(SIZE:INTEGER); $PROCEDURE ARC; $VAR I:INTEGER; $BEGIN &PENCOLOR(WHITE); TURN(45); MOVE(80); STAR(40); "MOVETO(0,0); TURNTO(165); PENCOLOR(WHITE); MOVE(40); "STAR(80); MOVETO(0,0); TURN(150); "PENCO&FOR I:=1 TO 10 DO BEGIN MOVE(SIZE); TURN(9) END; &PENCOLOR(NONE) $END; (*ARC*) "BEGIN TURN(-45); ARC; TURN(90); ARC; TURN(1LOR(WHITE); MOVE(60); STAR(60); DELAY  END;   PROCEDURE GROWTREE(SCALE,ORDER:INTEGER); "PROCEDURE TREE(X,Y,LGTH,DIR:INTEGER+ "INITIALIZE; MOVETO(-DELTA,-DELTA); PENCOLOR(WHITE); HIL(ORDER); DELAY  END;  PROCEDURE P1;  VAR I: INTEGER; BEGIN INITIAR; CALLPOLY(91,1,1); CALLPOLY(117,1,1); CALLPOLY(71,1,1); CALLPOLY(31,1,1); CALLPOLY(150,5,3); UNTIL NOT LIZE; FOR I := 239 DOWNTO 0 DO BEGIN DRAWLINE (RANGE,SCREEN.I,20, 0,239, 319,I-239, 3); DRAWLINE (RANGE,SCREENUNITBUSY(2); END (*MAINLOOP*); BEGIN (*MAIN PROGRAM*) INITIALIZE; UNITWRITE (3, SCREEN, 56); (*TURN ON GRAPHICS*) UNITR.I,20, 319,0, -319,239-I, 3) END; FOR I := 0 TO 239 DO BEGIN DRAWLINE (RANGE,SCREEN.I,20, 319,239, -319,-I, I MOEAD(2,COMPAT[0],1,,1); (*ASYNCH I/O*) MAINLOOP; UNITWRITE (3, SCREEN, 7); (*GRAPHICS OFF*) END. END. D 2+1); DRAWLINE (RANGE,SCREEN.I,20, 0,0, 319,I, I MOD 2+1) END; DELAY;  END;  PROCEDURE GRID (PEN: INTEGER);  V CYCLE AR I: INTEGER;  BEGIN "INITIALIZE; I := 239; "WHILE I >= 0 DO $BEGIN DRAWLINE (RANGE,SCREEN.I,20, 0,I, 319,0, 1); I:=I-2 END ; "I := 319; "WHILE I >= 0 DO $BEGIN DRAWLINE (RANGE,SCREEN.I,20, I,0, 0,239, PEN); I:=I-2 END; "FOR I := 0 TO 239 DO &DRAWLINE (RANGE,SCREEN.I,20, 0,I, 319,239-I-I, 3); "FOR I := 319 DOWNTO 0 DO &DRAWLINE (RANGE,SCREEN.I,20, I,0, 319-I-I,239, 3); "DELAY  END;   PROCEDURE MAINLOOP; BEGIN REPEAT CALLPOLY(181,1,1); $HILBERT(20,3); $HILBERT(12,4); $FLOWER; ɡš ??ȡBȡ ؤ ؤ$GRID (3); $(*PLANT;*) $GROWTREE(13,5); $DODRAGON(7,10); DODRAGON(8,9); DODRAGON(9,6); $DOSTAR; $SPIROLATERAL(30,90,4,'RRRJ- nˡ?ˡͥ ګ٫ء˹˭V9=TEGER); "VAR A,B:INTEGER; $PROCEDURE HIL1; $BEGIN TURN(A); HIL(-B); TURN(A); END;  PROCEDURE HIL2; $BEGIN MOVE(SIZE); H'); $SPIROLATERAL(20,90,4,'RRRR'); $SPIROLATERAL(20,90,4,'RRRRR'); $SPIROLATERAL(20,90,2,'RRRRRR'); $SPIROLATERAL(12,90,4,'RIL(B); TURN(-A); MOVE(SIZE); &TURN(-A); HIL(B); MOVE(SIZE) END; "BEGIN $IF I=0 THEN TURN(180) +ELSE BEGIN IF I>0 THEN BEGIN RRRRRR'); $SPIROLATERAL(10,90,3,'RRRRRRRR'); $SPIROLATERAL(8,90,2,'LLRLLLRR'); $SPIROLATERAL(28,120,3,'RRLLR'); $SPIROLATERAA:=90; B:=I-1 END =ELSE BEGIN A:=-90; B:=I+1 END;  HIL1; HIL2; HIL1 END; "END;  BEGIN "N:=ORDER-1; DELTA:L(18,120,4,'RLRRR'); $SPIROLATERAL(30,144,5,'RRR'); DERIV; $DOSTAR; $HILBERT(6,5); CALLPOLY(144,5,3); INITIALIZE;=SIZE; "WHILE N>0 DO BEGIN DELTA:=DELTA*2; N:=N-1 END;  SIERPINSKI(1); SIERPINSKI(2); SIERPINSKI(3); SIERPINSKI(4); DELAY; $P1; CALLPOLY(151,5,5); SCROLLE, 4؂hšhɡh(ث Ǡxؕ ثx ȡ < 2 < (EEǖ  n d  Z  ȡ -2  $ ǀ% Ǡx˭2D Ljȡ# ( ?̑ʑȡ xá%š Z   :  P   ǐǐǐ̑ʑȡ ٤Ǡ?̑ʑȡ`Ǡá @)\>ڊ )\>ڊ xdǐǐ >"  -P(" ǥ  (P" ǖ <<"<!ɡġ٤̑ʑȡ>ڕ̑ʑȡUڤؤؤ)\>xڤؤd ٤FUME<3) MGA;4-%ُڤ?ڤ>-Q#d     ؏% -  % š$$6$ ؏d$#'     ٤(''.)áǴš Z Z()(2'š ٤ضȡ@?ȶȄ Ipš$ ڑڑ  '$ 4& ġ2ͥ ?ͥ ??ؕȡ3ͥ ??4š$4š$ؑͥ ?=~ * ġͥ ??ġͥ 4š$4ȡȡͥ ?ٕٕ?ġͥ ?ٕٕ%Pu+ǵ& &+ #  G2l؂  ǐšA !ZRRRZצRRRRZצRRRRRZRRRRRR ZRRRRRRR ZצRRRRRRRRZצLLRLLLRRxצRRLLRxRLRRR L1Ɓ]1צ CYCLE.PROMPT Y1Yǐ   8ǐצRRR!&ǐ *Ǘ[uGǖ#  Ձ  81 تP  .0.0ȡ2///Ráڑ///š..>6X X  ȡ  !%,:^DJ2N86pZ  v n   . \ T V+؂ڂh 6ō ɍōS ^9=  *-ZLJȡ خّH, (d  < 22- ................................................................................  . BS FF  TEK DATAMEDIX Y VCR SCREEN   .  This demonstrates the capability of the TERAK 8510a hardware to pan. %Notice the smoCCH RANGE TERAK DIABLO WHITE NONE BLACK COMPLEMEoth motion with which the text rolls on the screen. %The screen is 24 lines high by 80 characters wide. %The buffer which refrANGLE INK HOLD GOTCURSOCOMPAT DRAWLINE VT50 NUMBER  eshs the screen is 25 lines high by 80 characters )wide to allow viewing of the top and bottom line at the same time. %There a %,:^DJ2N86pZ  v n   . \ T V+re 192 characters in the user-definable character set. %The resolution of each character is 10 high by 8 wide (240 by 640 O^total). %The graphics resolution is 240 high by 320 wide, (aspect ratio = .75) %The graphics and character displays are overlayed, but independent.  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . . .  . 4JUNK: BOOLEAN; 4BUFSWITCH: BOOLEAN; 4D2A: 0..7; 4TONE: BOOLEAN 2END; (*RECORD*)  VAR SCREEN: RECORD CASE BOOLEAN OF TRUE:( A: PACKED ARRAY [0..239,0..319] OF 0..1); 6FALSE: (I : INTEG%{TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any losER) 4END; OBJECT: RECORD CASE BOOLEAN OF TRUE:( A: PACKED Ases or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losseRRAY [1..6,1..6] OF 0..1); 6FALSE: (I : INTEGER) 4END; BRICK: RECORD CASE BOOLEAs arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any pateN OF TRUE:( A: PACKED ARRAY [0..6,0..22] OF 0..1); 6FALSE: (I : INTEGER) 4END; (XOROBJ: RECORD nt or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without further notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. It mO^ay not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERA5K CORPORATION ="ALL RIGHTS RESERVED"}  (* Breakout: A video game written by Gary Dismukes ( Fall 1977 ) *)   {$S+}  PROGRAM BOING; CONST XSIZE=6; YSIZE=6; XMAX=10; YMAX=10; UPBND=8; DBND=230; LBND=8; RBND=290;  BRICKLENGTH=24; BRICKWIDTH=8; WALLFRONT=100; WALLBACK=30; )PADWIDTH=25; PADHGT=6; "TYPE DIRECTION= ( SE45,NE45,NW45,SW45,SE30,NE30,NW30,SW30, @SE60,NE60,NW60,SW60); FORM=PACKED ARRAY [0..9,0..9] OF 0..1; FORM1 = RECORD 3CASE BOOLEAN OF 5TRUE :(A : FORM); 5FALSE:(I : INTEGER) 3END; 4 (VCRTYPE = PACKED RECORD 4GRAPH,CHARS: 0..7; / ICKCOUNT,SCORE:INTEGER; 'SEED: REAL; LEFTLO,RIGHTLO: BOOLEAN; OPT: CHAR; VCR: RECORD .CASE BOOLEAN OF 0T[J,I]:=0;  FOR I:=3 TO BRICKLENGTH-5 DO $BRICK.A[3,I]:=1;  END;   PROCEDURE MAKEWALL;   BEGIN "MAKEBRICK; "FOR I:=RUE : (ADDRESS: INTEGER); 0FALSE: (FIELD : ^VCRTYPE) .END; (*CASE RECORD*) ' PROCEDURE DRWBLK(VAR S,D:INTEGER; I,J,K,L,M,N,O:0 TO 11 DO $FOR J:=0 TO 7 DO &DRWBLK(BRICK.I,SCREEN.I,320,24*I+10,8*J+40,23,7,23,1); END;(* MAKEWALL *) PROCEDURE DRAWBOUND; INTEGER); EXTERNAL;  PROCEDURE ENTERGAME;  BEGIN "WRITELN(' ********* Welcome to BREAKOUT!!!*********'); "WRITELN;  VAR X,Y:INTEGER;  BEGIN "FOR Y:=228 DOWNTO 6 DO "BEGIN $SCREEN.A[Y,8]:=1; SCREEN.A[Y,6]:=1; $SCREEN.A[Y,298]:=1; SCRE"WRITELN; "WRITELN('To move paddle use the < and > keys. These keys will'); "WRITELN('start the paddle moving. To stop it typEN.A[Y,300]:=1; "END;  FOR X:=6 TO 153 DO "BEGIN $SCREEN.A[8,X]:=1; $SCREEN.A[6,X]:=1; " SCREEN.A[8,306-X]:=1; " SCREe the space bar or'); "WRITELN('any other key. Hit the direction keys(i.e. <,>) twice'); "WRITELN('for faster paddle speed. TyEN.A[6,306-X]:=1; "END;  END; (* DRAWBOUND *) PROCEDURE SETFORMS; "VAR DIR:DIRECTION; "PROCEDURE SETOBJECT; " "BEGIping return will serve the next'); "WRITELN('ball. The game can be terminated at any time by typing Q.'); "WRITELN;  ENDN $FILLCHAR(OBJECT.A,SIZEOF(OBJECT ),CHR(255)); OBJECT.A[1,1]:=0; OBJECT.A[6,1]:=0; ;    PROCEDURE CLICK;  BEGIN "VCR.ADDRESS:=-28; "FOR I:=1 TO 10 DO "BEGIN $VCR.FIELD^.D2A:=1; $VCR.FIELD^.D2A:=0; "E$OBJECT.A[6,6]:=0; OBJECT.A[1,6]:=0; $FOR I:=1 TO 2 DO $BEGIN &OBJECT.A[2+I,2]:=0; &OBJECT.A[2+I,5]:=0; &OBJECT.A[2,2+I]:=ND;  END; (* CLICK! *)   FUNCTION RANDOM(LO,HI:INTEGER):INTEGER;  VAR SEED1,SEED2,RAND:INTEGER;  BEGIN "TIME(SEED1,0; &OBJECT.A[5,2+I]:=0; $END;  END;(*SETOBJECT*) " "PROCEDURE XORFORM(VAR XOROBJ:FORM1; XSET,YSET:INTEGER); " "BEGIN $FI3CASE BOOLEAN OF 5TRUE :(A : FORM); 5FALSE:(I : INTEGER) 3END; 4 NEAST45,NWEST45,SWEST45,SEAST45:FORM1; 'NEAST30,NWSEED2); "SEED:=(SEED*9.71354915717)*(ABS(SEED2) MOD 9+1); "SEED:=9.7*(SEED-TRUNC(SEED)); RAND:=TRUNC( (SEED-TRUNC(SEED))*(HIEST30,SWEST30,SEAST30:FORM1; 'NEAST60,NWEST60,SWEST60,SEAST60:FORM1; PADXOR: RECORD -LO+1) )+LO;  RANDOM:=RAND; "(*WRITELN('RANDOM NO. [,LO,..,HI,] =',RAND);  *)END; (* RANDOM *)  FUNCTION RANDANGLE:DIRE CASE BOOLEAN OF TRUE:( A: PACKED ARRAY[0..5,0..24] OF 0..1); 6FALSE: (I : INTEGER) 4END; DIRECCTION;   BEGIN "CASE RANDOM(1,6) OF $1: RANDANGLE:=SW30; $2: RANDANGLE:=SW45; $3: RANDANGLE:=SW60; T: DIRECTION; 'I,J,K:INTEGER; 'BELL,CH,RORL:CHAR; 'UP,DOWN,LEFT,RIGHT: CHAR; 'CHA: PACKED ARRAY[0..5] OF CHAR; 'DOT: 0..1; $4: RANDANGLE:=SE60; $5: RANDANGLE:=SE45; $6: RANDANGLE:=SE30 "END; (*CASE*)  END; (* RANDANGLE *)  PROCEDURE MAKEBRI'X,Y,DX,DY,PADPOS,HALFSIZE,SERVENUM:INTEGER; 'BOUND,BALLCOUNT:INTEGER; 'ENDGAME,NEXTSERVE,MOVING,FAST,HIT,SOUND:BOOLEAN; 'BRCK;  BEGIN "FILLCHAR(BRICK.A,SIZEOF(BRICK ),CHR(255)); "FOR I:=2 TO BRICKLENGTH-4 DO $FOR J:=2 TO BRICKWIDTH-4 DO &BRICK.A0  DO BEGIN I:=I+20; CASE DIR OF &SE45: XORFORM(SEAST45,0,0); &NE45: XORFORM(NEAST45,0,4); &NW45: XORFORM(NWEST45,4,4);; 787: DIRECT:=SW30 5END; (*CASE*) $SW45,SW30,SW60: CASE CONTACT OF 728: DIRECT:=NW60; 717: DIRECT:=NE45; 778: DIRECT:=NW &SW45: XORFORM(SWEST45,4,0); & &SE30: XORFORM(SEAST30,0,1); &NE30: XORFORM(NEAST30,0,3); &NW30: XORFORM(NWEST30,4,3); &SW30; 712: DIRECT:=NE30 5END; (*CASE*) $SE45,SE30,SE60: CASE CONTACT OF 678: DIRECT:=NE60; 687: DIRECT:=NW45; 628: DIRECT:=N30: XORFORM(SWEST30,4,1); & &SE60: XORFORM(SEAST60,1,0); &NE60: XORFORM(NEAST60,1,4); &NW60: XORFORM(NWEST60,3,4); &SW60: XE30; 682: DIRECT:=NW30 4END (*CASE*) "END; (*CASE DIR*)  END; (* BRICKBOUNCE *) $  PROCEDURE REFLECT(VAR X,Y:INTEGER; VAR ORFORM(SWEST60,3,0) END; (*CASE DIR*) END; (* FOR *)  END; (* SETFORMS *) DIRECT:DIRECTION); "  BEGIN "IF SOUND THEN $CLICK; "IF (X>=RBND) THEN $CASE DIRECT OF &SE45: DIRECT:=SW45; NE45: DIRE PROCEDURE DIRECTCASE(DIRECT:DIRECTION);   BEGIN "CASE DIRECT OF $SE45: BEGIN DX:=2; DY:=2; XOROBJ.A:=SEAST45.A; END; CT:=NW45; &SE30: DIRECT:=SW30; NE30: DIRECT:=NW30; &SE60: DIRECT:=SW60; NE60: DIRECT:=NW60 $END (*CASE*) "ELSE $IF $NE45: BEGIN DX:=2; DY:=-2; XOROBJ.A:=NEAST45.A; END; $NW45: BEGIN DX:=-2; DY:=-2; XOROBJ.A:=NWEST45.A; END; $SW45: BEGI(X<=LBND) THEN &CASE DIRECT OF (NW45: DIRECT:=NE45; SW45: DIRECT:=SE45; (NW30: DIRECT:=NE30; SW30: DIRECT:=SE30; (NWN DX:=-2; DY:=2; XOROBJ.A:=SWEST45.A; END; $ SE30: BEGIN DX:=2; DY:=1; XOROBJ.A:=SEAST30.A; END; $NE30: BEGIN DX:=60: DIRECT:=NE60; SW60: DIRECT:=SE60 &END; (*CASE*) "IF (Y<=UPBND) THEN "BEGIN $CASE DIRECT OF &NE45: DIRECT:=SE45; 2; DY:=-1; XOROBJ.A:=NEAST30.A; END; $NW30: BEGIN DX:=-2; DY:=-1; XOROBJ.A:=NWEST30.A; END; $SW30: BEGIN DX:=-2; DY:=1; &NE30: DIRECT:=SE30; &NE60: DIRECT:=SE60; & &NW45: DIRECT:=SW45; &NW30: DIRECT:=SW30; NW60: DIRECT:=SW60 $END; (*CASXOROBJ.A:=SWEST30.A; END; $ SE60: BEGIN DX:=1; DY:=2; XOROBJ.A:=SEAST60.A; END; $NE60: BEGIN DX:=1; DY:=-2; XOROBJ.E*) $HIT:=TRUE; " IF SOUND THEN &WRITELN(CHR(7)); &IF HALFSIZE=12 THEN &BEGIN (HALFSIZE:=7; DRWBLK(PADXOR.I,SCREEA:=NEAST60.A; END; $NW60: BEGIN DX:=-1; DY:=-2; XOROBJ.A:=NWEST60.A; END; $SW60: BEGIN DX:=-1; DY:=2; XOROBJ.A:=SWEST60.AN.I,320,PADPOS-12,DBND,PADWIDTH,PADHGT,5,3); (DRWBLK(PADXOR.I,SCREEN.I,320,PADPOS+8,DBND,PADWIDTH,PADHGT,5,3); &END; "END "E; END "END; (*CASE*)  END; (* DIRECTCASE *) $  PROCEDURE BRICKBOUNCE(CONTACT:INTEGER; VAR DIRECT:DIRECTION);   BEGIN "CLSE $IF (Y>=DBND-8) AND (( (HALFSIZE=12) AND (X>=PADPOS-20) AND (X<=PADPOS+10) ) OR ( (HALFSIZE=7) AND (X>=PADPOS-15) ANLLCHAR(XOROBJ.A,SIZEOF(XOROBJ ),0); $DRWBLK(OBJECT.I,XOROBJ.I,XMAX,2,2,XSIZE,YSIZE,XSIZE,1); $DRWBLK(OBJECT.I,XOROBJ.I,XMAX,XASE DIRECT OF $NW45,NW30,NW60: CASE CONTACT OF 821: DIRECT:=SW60; 812: DIRECT:=SE45; 871: DIRECT:=SW30; SET,YSET,XSIZE,YSIZE,XSIZE,3); "END; (* XORFORM *) " BEGIN (* SETFORMS *) "SETOBJECT; I:=5; J:=30; "FOR DIR:= SE45 TO SW60817: DIRECT:=SE30 7END; (*CASE*) $NE45,NE30,NE60: CASE CONTACT OF 771: DIRECT:=SE60; 782: DIRECT:=SW45; 721: DIRECT:=SE301 " WRITELN(CHR(7)); "END; (* KILLBRICK *) $ "FUNCTION CHECK(XSET,YSET:INTEGER):BOOLEAN; " "BEGIN " IF SCREEN.A[Y+YSECREEN.I,320, 3PADPOS+HALFSIZE+1,DBND,PADWIDTH,PADHGT,7,3); )DRWBLK(PADXOR.I,SCREEN.I,320, 3PADPOS-HALFSIZE,DBND,PADWIDTH,PADHD (X<=PADPOS+5) )) $THEN $BEGIN &IF (X<=PADPOS-4) THEN &BEGIN (CASE DIRECT OF *SE45: DIRECT:=NW45; (*NE45: DIRECT:=NE4T,X+XSET]=1 THEN $BEGIN &KILLBRICK(X+XSET,Y+YSET); &BRICKCOUNT:=BRICKCOUNT+1; &IF NOT FAST THEN (IF Y<=72 THEN *FAST:=TRUE5;*) *SE30: DIRECT:=NW30; (*NE30: DIRECT:=NE30;*) *SE60: DIRECT:=NW60; (*NE60: DIRECT:=NE60;*) * *(*NW45: DIRECT:=NW; &BRICKBOUNCE(XSET*10+YSET,DIRECT); &DIRECTCASE(DIRECT); &HIT:=FALSE; CHECK:=TRUE; END ELSE &CHECK:=FALSE; 45;*) SW45: DIRECT:=NW45; *(*NW30: DIRECT:=NW30;*) SW30: DIRECT:=NW30; *(*NW60: DIRECT:=NW60;*) SW60: DIRECT:=NW60END; (* CHECK *) "  BEGIN (* HITCHECK *) "CASE DIRECT OF $NW45,NW30,NW60: IF NOT CHECK(2,1) THEN 6IF NOT CHECK(1,2) THEN  (END; (*CASE*) &END &ELSE BEGIN (CASE DIRECT OF *SE45: DIRECT:=NE45; (*NE45: DIRECT:=NE45;*) 8IF NOT CHECK(7,1) THEN :IF NOT CHECK(1,7) THEN; # NE45,NE30,NE60: IF NOT CHECK(7,1) THEN 6IF NOT CHECK(8,2) THEN 8IF NOT CH*SE30: DIRECT:=NE30; (*NE30: DIRECT:=NE30;*) *SE60: DIRECT:=NE60; (*NE60: DIRECT:=NE60;*) * *(*NW45: DIRECT:=NW45;*)ECK(2,1) THEN :IF NOT CHECK(8,7) THEN; SW45,SW30,SW60: IF NOT CHECK(2,8) THEN 6IF NOT CHECK(1,7) THEN 8IF NOT CHECK(7,8)  SW45: DIRECT:=NE45; *(*NW30: DIRECT:=NW30;*) SW30: DIRECT:=NE30; *(*NW60: DIRECT:=NW60;*) SW60: DIRECT:=NE60 (ENTHEN :IF NOT CHECK(1,2) THEN; $SE45,SE30,SE60: IF NOT CHECK(7,8) THEN 6IF NOT CHECK(8,7) THEN 8IF NOT CHECK(2,8) THEN :IF ND; (*CASE*) &END; &HIT:=TRUE; $END; "IF (Y>=DBND-8) AND (BRICKCOUNT>=96) THEN "BEGIN $MAKEWALL; $BRICKCOUNT:=0; "END; "OT CHECK(8,2) THEN "END; (*CASE DIRECT*)  END; (* HITCHECK *) # PROCEDURE WAIT(TIME:INTEGER); "VAR I:INTEGER;  BEGIN IF (Y>=DBND-1) THEN "BEGIN $NEXTSERVE:=TRUE; " HIT:=FALSE; "END; "DIRECTCASE(DIRECT); "(*IF ((Y<=WALLFRONT) AND (Y>=WALLB FOR I:=1 TO TIME DO;  END; (* WAIT *) PROCEDURE SHIFTPAD(VAR X,Y:INTEGER; RORL:CHAR);  BEGIN "IF (RORL='L') AND (PADPOS>ACK)) OR (MOVING) THEN "BEGIN $DIRECTCASE(DIRECT); $X:=X+DX; $Y:=Y+DY; $DRWBLK(XOROBJ.I,SCREEN.I,320,X,Y,XMAX,YMAX,XMAX,3);=LBND+10) THEN #BEGIN %DRWBLK(PADXOR.I,SCREEN.I,320,PADPOS-7-HALFSIZE,DBND,PADWIDTH,PADHGT,7,3); %DRWBLK(PADXOR.I,SCREEN.I,32 "END;*)  END; (* REFLECT *)  PROCEDURE HITCHECK(X,Y:INTEGER; VAR DIRECT:DIRECTION); " "PROCEDURE KILLBRICK(XLOC,YLOC:INTE0,PADPOS+HALFSIZE-6,DBND,PADWIDTH,PADHGT,7,3); %PADPOS:=PADPOS-7; #END #ELSE %IF (RORL='l') AND (PADPOS>=LBND+8) THEN %BEGIGER); " "BEGIN $DRWBLK(BRICK.I,SCREEN.I,320,((XLOC-10) DIV BRICKLENGTH)*BRICKLENGTH+10, :(YLOC DIV BRICKWIDTH)*BRICKWIDTH,23N 'DRWBLK(PADXOR.I,SCREEN.I,320,PADPOS-HALFSIZE-4,DBND,PADWIDTH,PADHGT,4,3); 'DRWBLK(PADXOR.I,SCREEN.I,320,PADPOS+HALFSIZE-3,D,7,23,3); " SCORE:=SCORE+9-(YLOC DIV BRICKWIDTH)+4; GOTOXY(66,1); $WRITELN(SCORE); IF SOUND THEN BND,PADWIDTH,PADHGT,4,3); 'PADPOS:=PADPOS-4; %END %ELSE 'IF (RORL='R') AND (PADPOS<=RBND-2) THEN 'BEGIN )DRWBLK(PADXOR.I,S2 VENUM=BALLCOUNT THEN ,BEGIN ENDGAME:=TRUE; * CHA[0]:='q'; ,END; *END; END (ELSE *IF HIT THEN  READLN(OPT); "SOUND:=FALSE; "CASE OPT OF $'Y' : SOUND:=TRUE "END; (*CASE*) "WRITE('How many serves do you want? [ ''F''=5,,IF (Y<=WALLFRONT) AND (Y>=WALLBACK) AND (X<=RBND-3) AND (X>=LBND+2) AND ( ((Y-5) MOD 8 <=1) OR ((X-12) MOD 24 <= ''T''=10, ''M''=Many ]'); "READLN(OPT); "BALLCOUNT:=100; "CASE OPT OF $'F' : BALLCOUNT:=5; $'T' : BALLCOUNT:=10 "END; (*C1) .OR ((Y+3) MOD 8 >=1) OR ((X+12) MOD 24 >=1)) THEN .BEGIN 0X:=X+DX; 0Y:=Y+DY; 0DRWBLK(XOROBJ.I,SCREEN.I,320,X,Y,XMAX,YMASE*) "PAGE(OUTPUT); BELL:=CHR(7); SEED:=7.319812657; FILLCHAR(OBJECT.A,SIZEOF(OBJECT ),0); "FILLCHAR(XOROBJ.A,SIZEOF(XAX,XMAX,3); 0HITCHECK(X,Y,DIRECT); .END; &END; (* IF NOT NEXTSERVE *) IF MOVING THEN &BEGIN (SHIFTPAD(X,Y,RORL); & OROBJ ),0);  FILLCHAR(PADXOR.A,SIZEOF(PADXOR ),CHR(255)); FILLCHAR(SCREEN.A,SIZEOF(SCREEN ),0); "MAKEWALL; GT,7,3); )PADPOS:=PADPOS+7; 'END 'ELSE )IF (RORL='r') AND (PADPOS<=RBND-0) THEN )BEGIN +DRWBLK(PADXOR.I,SCREEN.I,320, 5PAIF NEXTSERVE THEN *WAIT(30); &END; &IF (NEXTSERVE) AND (CHA[0]=CHR(13)) THEN &BEGIN (SERVENUM:=SERVENUM+1; GOTOXY(4DPOS+HALFSIZE+1,DBND,PADWIDTH,PADHGT,4,3); +DRWBLK(PADXOR.I,SCREEN.I,320, 5PADPOS-HALFSIZE,DBND,PADWIDTH,PADHGT,4,3); ,1); (WRITELN('SERVE #',SERVENUM); X:=RANDOM(70,235); (Y:=RANDOM(10,70); (DIRECT:=RANDANGLE; (DIRECTCASE(DIRECT); (+PADPOS:=PADPOS+4; )END )ELSE +MOVING:=FALSE; "IF NOT NEXTSERVE THEN "BEGIN $X:=X+DX; $Y:=Y+DY; $DRWBLK(XOROBJ.I,SCREENIF HALFSIZE=7 THEN *DRWBLK(PADXOR.I,SCREEN.I,320,PADPOS-12,DBND, 4PADWIDTH,PADHGT,PADWIDTH,1); (HALFSIZE:=12; (DRWBLK(OBJECT.I,320,X,Y,XMAX,YMAX,XMAX,3); "END;  END; (* SHIFTPAD *) PROCEDURE BOUNCE(*(X,Y:INTEGER; DIRECT:DIRECTION)*); BEGIN .I,SCREEN.I,320,X+2,Y+2,XSIZE,YSIZE,XSIZE,3); (HALFSIZE:=12; NEXTSERVE:=FALSE; (FAST:=FALSE; & CHA[0]:=' '; &END;  SCORE:=0; GOTOXY(60,1); "WRITELN('SCORE=',SCORE); SERVENUM:=0; BRICKCOUNT:=0; "ENDGAME:=FALSE; FAST:=FALSE; "HALFSIZE:$END; (*WHILE*) $CH:=CHA[0]; $IF (CH IN [',','<']) AND (PADPOS>=LBND) THEN $BEGIN &MOVING:=TRUE; $ IF LEFTLO THEN =12; HIT:=FALSE; MOVING:=FALSE; NEXTSERVE:=TRUE; LEFTLO:=TRUE; RIGHTLO:=TRUE; REPEAT $UNITREAD(2,CHA[0],1,0,ORD(TRUE))&BEGIN (RORL:='l'; (LEFTLO:=FALSE; &END ELSE &BEGIN (RORL:='L'; &END; &RIGHTLO:=TRUE; $END $ELSE &IF (CH IN ['.; $WHILE (UNITBUSY(2)) AND (NOT ENDGAME) DO $BEGIN &IF NOT NEXTSERVE THEN &BEGIN (X:=X+DX; (Y:=Y+DY; (DRWBLK(XOROBJ.I,SCR','>']) AND (PADPOS<=RBND) THEN &BEGIN (MOVING:=TRUE; & IF RIGHTLO THEN (BEGIN *RORL:='r'; *RIGHTLO:=FALSE; (END (ELSE EEN.I,320,X,Y,XMAX,YMAX,XMAX,3); (IF NOT FAST THEN *WAIT(20); (IF (X>=RBND) OR (X<=LBND) OR (Y>=DBND-8) OR (Y<=UPBND) THEN ((BEGIN *RORL:='R'; (END; " LEFTLO:=TRUE; &END &ELSE &BEGIN (MOVING:=FALSE; (LEFTLO:=TRUE; (RIGHTLO:=TRUE; &END;BEGIN *REFLECT(X,Y,DIRECT); *IF NEXTSERVE THEN *BEGIN ,DRWBLK(OBJECT.I,SCREEN.I,320,X+2,Y+2,XSIZE,YSIZE,XSIZE,3); * IF SER "UNTIL (CH='q') OR (CH='Q');  END;(* BOUNCE *)  BEGIN (*MAIN PROGRAM*) "ENTERGAME; "WRITE('Do you want sound [Y/N]?'); 3 gȡ&ɥ@h g(gghhG; Zġk??*?,?Ǚȡo??X BOING 2ٕ?2ٕ?v    hhȡ~hhhhhh   (  hg ȡhhعl  z q h  _' V M D1 ;O 2E0 ********* Welcome to BREAKOUT!!!*********4To move paddle use the < and > keys. Th );  tmf_XQJC<5.' عxwץ xwץ xwץ "SETFORMS; "DRWBLK(PADXOR.I,SCREEN.I,320,145,DBND,PADWIDTH,PADHGT,PADWIDTH,1); PADPOS:=157; UNITWRITE(3,SCREEN.A,63); DRese keys will9start the paddle moving. To stop it type the space bar orצ5any other key. HiAWBOUND; BOUNCE;  UNITCLEAR(2); "REPEAT $UNITREAD(2,CHA[0],1); "UNTIL CHA[0] = CHR(13);  END. t the direction keys(i.e. <,>) twice:for faster paddle speed. Typing return will serve the next>ball. The game can be terminated at any time by typing Q.h hȡhh*( < jB݀ 33BەۂT`-( #B &# B hhȡ=ggȡ#ɩghgghhhhȡ!hhh*yk h hȡ>g4 W  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdhj@vuvvRév"Ȅ@BD@vuY@vuvv"xwץ@ *, d<צFHJLNPRTVXZ\^`bdfhjlnprtvxz|~ٹ Wx SCORE= t u~p#𩓁zxzywyץ "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdhjlxprtv . LT\@zy z"ĩzȍyčyȍ@zye.å@zyt{á pq~zyd$(j}"ġ?4/*%  %"# !Dȡ>50+&yĄz"ȄzĄyȩz ȍyčz č3zxzywyץ@zy zyezy ! &#$!"ȡ50+&!  &),~}ip ÄttSERVE #t Fz Fyee uáY@u á0uY@v Y@vĩu vĄv ȄuvĄvȄvv  uå@zy up pjjvĄ liLiD94 /*% &)  ,#B94 /*% &)  Bj@@v"Ȅ riRi jqéjQÍeՂAצDo you want sou,#~ĩ`Ąġ~ .0 2ɥ@   Bnd [Y/N]?}} YY 8How many serves do you want? [ 'F'=5, 'T'=10, 'M'=Many ] }bڂۂ?á>ۂڂ Hȡ ڂd{ {, {&FT * k;A  Y xwץ xwץ xwץ' xwץ ~xwץ kxwץ1 Yxwץ ~j  lO FxwץE 2xwץ;  tcSB0#  ٹ  Gx F  .|Z6b>j$ ȡ - "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvٹLév Ą>Y@vuY@vuvvlévĄ>Y@vuY5 ǀ%  Y@Ǒǝv? &pp á't&fet  pt `mwhE Z: 7  Dt7.2m2,((7 $ E 77 77 ev 6 e wt  {~7vP @ 7v7vx7v~e~elh~mjmb7vZwtN{ wvFPPA H7t27v2< 7t"7v"x, N\Zn! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anyb2222222222 H> p b@n~z|*l(SCORE:=SCORE+9-(YLOC DIV BRICKWIDTH)+4;  losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l GOTOXY(66,1); $WRITELN(SCORE); IF SOUND THEN " WRITELN(CHR(7)); "END; (* KILLBRICK *) $ "FUNCTION CHECK(XSET,Yosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any SET:INTEGER):BOOLEAN; " "BEGIN " IF SCREEN.A[Y+YSET,X+XSET]=1 THEN $BEGIN &KILLBRICK(X+XSET,Y+YSET); &BRICKCOUNT:=BRICKCOpatent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fuUNT+1; &IF NOT FAST THEN (IF Y<=72 THEN *FAST:=TRUE; &BRICKBOUNCE(XSET*10+YSET,DIRECT); &DIRECTCASE(DIRECT); &HIT:=FALSE; rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY 5TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM PLANETS; 1{*************************************} 1{ PLANETS } 1{ An adventure in real time graphics } 1{ by Michael F Smith } 1{ (c) University of Utah } 1{ August 7, 1978 } 1{*************************************}    TYPE SCREEN=ARRAY[0..239] OF PACKED ARRAY[0..319] OF BOOLEAN; &BLOCK=ARRAY[0..39] OF PACKED ARRAY[0..39] OF BOOLEAN; &SKRE6 "FILEREAD; "MOVEBLOCK;  END. ~elh~mjmb7vZwtN{ wvFPPA H7t27v2< 7t"7v"x, N\Znb2222222222 &fE CE ww  wRCaE ee e wz tE WuEB  N uED 7>tEpWuE` mtEp  uEN=FILE OF SCREEN; BLOK=FILE OF BLOCK; (  VAR SCR1,SCR2:SCREEN; SCR3:SKREEN; BLOCK1,BLOCK2:BLOCK; BLOK1:BLOK;  PROCEDURE DRWBLK(VAR SOURCE:BLOCK; VAR DEST:SCREEN; RWSZ, SX,SY,SZX,SZY, 9CPYC,MODE:INTEGER); EXTERNAL;   PROCEDURE DRAWBLOCK(VAR SOURCEB PLANETS  : BLOCK; 4 SRCROW, 8SRCX, 8SRCY :INTEGER;  VAR DEST :SCREEN; 8DSTROW, 8DSTX, 8DSTY, 8CNTX,  8CNTY, 8MODE :INTEGER 8); EXTERNAL;   PROCEDURE FILEREAD;  BEGIN "RESET(SCR3,'SPHERE2.FOTO'); SCR1:=SCR3^; CLOSE(SCR3); "RESET(BLOK1,'MASK.FOTO'); BLOCK1:=BLOK1^; CLOSE(BLOK1); "RESET(BLOK1,'INVERSE.FOTO'); BLOCK2:=BLOK1^; CLOSE(BLOK1);  END { fileread }; &  PROCEDURE MOVEBLOCK;  VAR I,X,Y:INTEGER; SWITCH:BOOLEAN;  BEGIN "SWITCH:=TRUE; X:=40; Y:=192; "REPEAT  SPHERE2.FOTOé_צ MASK.FOTO空_x__ INVERSE.FOTOo_x_$X:=X+1; Y:=Y-1; $IF SWITCH THEN .BEGIN 0{DRWBLK(BLOCK1,SCR1,320,X,Y,40,40,40,0); 0DRWBLK(BLOCK2,SCR1,320,X,Y,40,40,40(ۡ:(@((o(@((?2@(((o@(((?,3); 0} 0DRAWBLOCK(BLOCK1,40,0,0,SCR1,320,X,Y,40,40,3); 0DRAWBLOCK(BLOCK2,40,0,0,SCR1,320,X,Y,40,40,2); 0UNITWRITE (3,SCR1,6éۓá ƺ_ƻxƥƦ@ƺ_ƥx2&fet  3); SCR2:=SCR3^; .END .ELSE .BEGIN 0DRWBLK(BLOCK1,SCR2,320,X,Y,40,40,40,0); 0DRWBLK(BLOCK2,SCR2,320,X,Y,40,40,40,3); 0UNIpt `mwhE Z: 7  Dt7.2m2,((7 $ E 77 77 TWRITE (3,SCR2,63); SCR1:=SCR3^; .END; " SWITCH:=NOT SWITCH; "UNTIL Y = 0;  END { moveblock };   BEGIN { main program } ev 6 e wt  {~7vP @ 7v7vx7v~e7  * pf-M6D@o @?!( u'@c!@D}G{[̿,ҥǛ$P@@/8V_8\~ ?Ԟʯ0oPԅ'$臋m VhA:/Dxs@OxmD0OBeH0NTw;/o0O>hȸ((yBE` m %   ACBvC@A CBv xC L@@=d?>oPM|C L@A C@Pmlm`A C@xm\mPe:86VTLXjh|l}w=Guk922222222  w (P 0  Q ~@ ?M׺;RxBcw`U P~e~E w   l9ae9 wVP H 0  % % J{h{0~b1????6hR7?@߯???2o@TDn:9;ҤW?`N?Exys98 dl(LQP-7}Slh<]>:~PDi 'v<0޺Ͼ/~_ouiSmBBe C8ᨉ m~~U{|c_`)ٸnw~ oM쟛d ~/4"t.vbBeOwpŹP{{c2ڲo Miǟ p G^ TTz>=~(JB5#rJ}is@8]? CRi-;y?#&C~?`TP}/D/oݵ^‹iBM?o_@ $co~ ~c?l `lO^߻$V J9px罻@یͿIQr9_o~L/o^@$rz@rߟ2/_O5whAED\z|H1_'s?o_ d.P"O;~{@=pș{ `ʗo L8"߼?7{l $$Qۏ'>vN=isݭ@ Cww8%ۺH `lO^߻ @ cػ mmUy>?8H(ש}{~?L$شJjNSw;7M{@f{޿uz`L"K/~- 7F1x"g!"}68ƽSA_{@ZHOzo,7Q!Q,PdwyoRBo48[c~_@(![= 6#=MqvH8j¡[}i? @Q6v P{O2߷0 4ƫn?v `-C?_D'ݿ?@҄kW^q9_ J{h{wP@d9ۧ_`B $X@B; F^ HEG݄? "Ih|hBdZֽs\@1!!eG}_ܷms}W$,1!BB8B@$  Ɖth8OMLn]{>|C oίݸn:__;߼?7Sb($rkop/J"F5N#8!8 (22(&uEDiE>!(QCߑ8wz{f qĄ6|$ZjO~3?9(Hpʙ$@MR`{ A7`&ĜMdEZ@ "!00-vZN5grKua3'A@B;%] o+X@Moo%r 2cD$?H@!$%*zh#@4D` &$dX| M5z{9M@PjZsre  B]"Oj{h0 4(" T@$@8 @@EM$ U{3gcm0C mQD\_7*Bt*=|qu?F P@ 9"a@^@+`h)ٰ %ۺߵ  zb Ӯ_ #L/Oݥ5^= 3!lK/~ 6(Pz{` EA!r≼RX@)$SZ8t AO52Fl<^fd@B  ! !"@D"HJ,҅ƛobJ CS}Տd-@(S OUm0@ H b $ `,MV{O2#L/K\*L9˶iM4 ADA  Q8XnBXY<Ӄ@TC\F ^Lߺko@s6ѥۄޛ_̕/4޼P*t*=|Nq2 `æU*T3"d["vNH=: /ɡٮM!2خ!˫ɡ šث $ ٚv4á+ˡ-î/á2خ!á+#ˡ +ˡ}á +#ˡ  ("+ˡ}á1M!2خ!٣ɡ ٣šث٫+áM!M!5".(ˡ ˡ}áoácNORMAL Я HLOCK Я 1PURGE Я CRUNCH Я M! 6".(ˡˡ} áǏWá +#+ˡ}}M !FM!?M!8ˡ )ˡǏ M! (_83 6 7ˡ +ˡ}á)á á á}}+#ˡ )ˡ}á".(á +# +8.(ˡˡ} ˡǏá.(á"+#+ˡ}á +#+ˡ}%áM! +9.(á.(*áȡ0á"+#ˡ +ˡ}*á  خ K :á  ˡ+(;٣ á٣ á%٣ 27٣ ٣ !٣ á'٣ 67٣ ٣ !J</ö5  ˡ%á)á"}} N2+ˡ}á.(á"+#+ˡ}á&á"O^+#+ˡ}á +#+ˡ} á  38خ!2خ!"5; rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.  It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM PANSINE; VAR SCREEN: ARRAY[0..1] OF ARRAY[0..239] OF PACKED ARRAY[0..319] OF BOOLEAN; I,J:INTEGER; R: REAL; CH:CHAR; BEGIN FOR I:=0 TO 319 DO SCREEN[0,0,I]:=FALSE; ?̥ʥȡ(?X%?̥ MOVELEFT(SCREEN[0,0],SCREEN[0,1],9560); UNITWRITE(3,SCREEN[0],63); FOR I:=0 TO 239 DO $BEGIN &SCREEN[0,I,160]:=TRUE; &ʥȡrǠ?á?Ǜǥ̥ʥȡ*?IF I MOD 20 = 0 THEN FOR J:=155 TO 165 DO SCREEN[0,I,J]:=TRUE; $END; SCREEN[1]:=SCREEN[0]; WRITELN('SIN(X)/X...'); UNITREAD(2,CH,1,,1); FOR I:=0 TO 239 DO BEGIN J:=I-120; IF J=0 THEN R:=-1.0 ELSE R:=-SIN(0.09*J)/(0.09*J); J:=160+ROUND(R*100); $SCREEN[0,I,J]:=TRUE; SCREEN[1,I,J]:=TRUE; END; WHILE UNITBUSY(2) DO $FOR J:=0 TO 239 DO IF UNITBUSY(2) THEN UNITWRITE(3,SCREEN[0,J],63); UNITWRITE(3,SCREEN[0],7); END. ! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fuV PANSINE < Ǡd??#>̥ʥȡ)#rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY \5TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM FIG1D2; $USES GRAPHICS; $VAR DATA:ARRAY[1..12] OF REAL; I : INTEGER; STR:STRING; &PROCEDURE STRNG ( VAR S:STRING; I:INTEGER ); 8{s:=string representation of I} &VAR D , J:INTEGER; ZEROON:BOOLEAN; C:STRING[1]; &BEGIN (IF I=0 THEN BEGIN S:='0'; EXIT ( STRNG ); END ELSE S:=''; (IF I<0 THEN BEGIN S:=CONCAT ( '-' , S ); I:=-I; END; (ZEROON:=FALSE; D:=10000; (WHILE D > 0 DO *BEGIN ,J:= I DIV D; ,CASE J OF .0: IF ZEROON THEN C:='0' ELSE C:=''; .1: C:='1'; 2: C:='2'; 3: C:='3'; 4: C:='4'; .5: C:='5'; 6: C:='6'; 7: C:='7'; 8: C:='8'; 9: C:='9' ,END; {case} ,ZEROON:= ( J<>0 ) OR ZEROON; ,S:=CONCAT ( S , C ); ,I:=I MOD D; ,D := D DIV 10 SIN(X)/X...̥ʥȡxá@ Q>Q>Ǡd??#>̥ʥȡ)#! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any?VIZ:KNX%?̥ losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, lʥȡrǠ?á?Ǜǥ̥ʥȡ*?osses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any  SIN(X)/X...̥ʥȡxá@ Q>Q>patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu= ]:=17234; DATA[08]:=20100; DATA[09]:=15002; &DATA[10]:=17000; DATA[11]:=12000; DATA[12]:=19876; &DRAW_VS ( 3 ); {THREE ZONES} &DISP_VS ( 0 , 7 , 7 ); &{viewport defaults to entire screen} &{window 0 to 13 in X for 12 MONTHS, and 10, 000 to 20, 000} &{for DOLLAR SALES} &SET_WNDW ( 0 , 13 , 8000 , 23000 ); &SET_LNST ( 1 ); {set linestyle to draw white on black} &NEW_FRAM; &MOVE_ABS ( 0.7 , 20000 ); {draw the axes} &LINE_ABS ( 0.7 , 8000 ); &MOVE_ABS ( 0.7 , 8700 ); &LINE_ABS ( 13 , 8700 ); &SET_CHPR ( 1 ); &SET_MKSM ( 6 ); {set character precision for character display} &FOR I:=1 TO 12 DO BEGIN {place tick marks for the months} (MARK_ABS ( I , 8700 ); (MOVE_ABS ( I , 80 F FIG1D2 00 ); (STRNG ( STR , I ); (TEXT ( STR ); END; &SET_CHPR ( 2 ); {text precision for graphics display} &SET_CHSP ( 0.3 , 0 ); GRAPHICS  &SET_MKSM ( 7 ); &FOR I:=8 TO 20 DO BEGIN {place tick marks for sales} (MARK_ABS ( 0.7 , I*1000 ); (MOVE_ABS ( 0 , I*1000 ); (STRNG ( STR , I ); (TEXT ( STR ); END; &SET_CHSP ( 0.3 , 0 );{set char space,  hj  NPFHfPe _f ? 劐 eru~ e&~e&~eep`@I**I"AAA"A"hjlmge`bIm ōɍō צ dsvs error_??劐劐d)  hj hhjj ؂ˡ ǀ ڏZ"צ vprt error Z(ō"צ chpr error g:ɍ"צ chsz error ثm٫lVZ\X\"צ wndw error R<`bتP f+,5,5ȡ3h1j/3-131/-x31JRTLTNPFHō"צ lnst errorgá:3?fPfP1  _f,3?1fPmldhh` dšdB dá_fǀ ؞ 0٥hإj hjjbgá,,h ثe  l7 7 w v7 v jj^7 j hhjj& N P F^ CptE`eE /6 .-00(7 $m-  ` ~ m H  rټؼܼۼܼڼټؼټڼ- ` ~-,    5  \v h& , @ @| ڥP,  ۥF  ۥHݼܼ ޡS ټJRZVrfVVVVV&f p C`WqP b tm ?Y AaWp(mEtU  ؼLT\XD bfP _?ነ?5tUBE vv n ds D`   <: T L]: LM: W!  ~ (?dhjhj. hjhj  enb^(&f@ACpe& Δ~BB  hhjjF  eɩe ō$צ marker error  h jLBB  LB e ~B ee# ~CpPp(Cm r `W  W ?   ? R צ!SALES ( $K ) VS TIME ( MONTHS )   EEȡEá  osses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any      QHNY2  N RC DŽN patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu ǚ:  hB  .  ǤM   @Y   333@ N 333@@ 333@rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. O^It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY "A>"A"AAAAA>""">J*v5t5t "6  :  :D*  : p d Z t BOX(' '); GOTOXY(0,16); .WRITE(' Enter character set filename: '); READLN(FILENAME); .CLEARBOX('Looking...'); LOAD(CONCAT(FILENAME,'.CHARSET')); END; &'\','|':IF ALTSET=0 THEN ALTSET := 128 ELSE ALTSET := 0; &'S','s':LOAD('*SYSTEM.CHARSET') $END{case}; " EXIT:=CCH=CHR(ESC)á 0PצPɡצ-QPؑ'šۆڹRܡ0צ[1T2M3F4?58617*8#9 ZID?:50+&!܍PQPێ Z  3  * / +J (# Y2  N RC DŽN  ǚ:  hB  .  ǤM   @Y   333@ N 333@@ 333@! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any! !    EEȡ'! @   ?  EEȡ/333@  losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l@  #BEGIN {main} {demonstration program OIL} %INIT_GRF; {if not called results are FLOATING PNT ERROR} %DATA[01]:=160; DA1 TO 120 DO BEGIN &STR:=' '; STR[1]:= CHR(255); TEXT(STR); END; %SET_LNST(1); %SET_CHSP(0.48,0); & & %MOVE_ABS(60,100); %TA[02]:=137; DATA[03]:=135; %DATA[04]:=151; DATA[05]:=136; DATA[06]:=138; %DATA[07]:=127; DATA[08]:=113; TEXT('UNSUCCESSFUL'); % %MOVE_ABS(62,25); %TEXT('SUCCESSFUL'); % %SET_CHSZ(1,2); %MOVE_ABS(63,150); %TEXT('OIL DRILLING T DATA[09]:=105; %DATA[10]:=110; DATA[11]:=103; DATA[12]:=90; %DATA[13]:=83; DATA[14]:=75; DATA[15]:=70; RENDS'); % %SET_WNDW(0,38,0,16); %MOVE_ABS(36,10); %SET_CHSZ(1,1); %SET_CHSP(0,-1); %TEXT('footage'); ' #END. % %DATA1[01]:=93; DATA1[02]:=80; DATA1[03]:=77; %DATA1[04]:=83; DATA1[05]:=77; DATA1[06]:=80; %DATA1[07]:=75; DATA1[08]:=68; DATA1[09]:=60; %DATA1[10]:=55; DATA1[11]:=58; DATA1[12]:=50; %DATA1[13]:=45; DATA1[14]:=35; DATA1[15]:=28; % %DRAW_VS (2 ); {TWO ZONES} %DISP_VS ( 1 , 3 , 7 ); %SET_WNDW(56,75,-25,200 ); %SET_LNST(1); {set linestyle to draw white on black} %NEW_FRAM; %MOVE_ABS(58,0 ); {draw the axes} %LINE_ABS(58,175 TERAK CORPORATION ="ALL RIGHTS RESERVED"}  #PROGRAM OIL; #USES GRAPHICS; #VAR DATA,DATA1:ARRAY[1..15] OF REAL; I : I ); %SET_CHSP(0.48,0); %SET_CHPR(3); %I:=0; %WHILE I < 176 DO %BEGIN 'SET_MKSM ( 7 ); 'MARK_ABS(58,I); 'MOVE_ABS(56.2,I)NTEGER; STR:STRING; %PROCEDURE STRNG(VAR S:STRING; I:INTEGER); {s:=string representation of I} ; % STRNG(STR,I); 'TEXT(STR); 'I:=I+25; %END; % %MOVE_ABS(58,0 ); %LINE_ABS(73,0 ); %FOR I:=59 TO 73 DO BEGIN {p%VAR D,J:INTEGER; ZEROON:BOOLEAN; C:STRING[1]; %BEGIN 'IF I=0 THEN BEGIN S:='0'; EXIT(STRNG); END ELSE S:=''; 'IF I<0 Tlace tick marks for the months} 'SET_MKSM ( 6 ); 'MARK_ABS(I,0); 'MOVE_ABS(I-0.8, -24); 'STRNG(STR,(1900+I)); 'IF (I MOD 5HEN BEGIN S:=CONCAT('-',S); I:=-I; END; 'ZEROON:=FALSE; D:=10000; 'WHILE D > 0 DO )BEGIN +J:= I DIV D; +CASE J OF -0: I) = 0 THEN BEGIN )TEXT(STR); )SET_MKSM ( 8 ); )MARK_ABS(I,0) )END %END; ' %MOVE_ABS(59,160); %FOR I:=59 TO 73 DO LINE_ABF ZEROON THEN C:='0' ELSE C:=''; -1: C:='1'; 2: C:='2'; 3: C:='3'; 4: C:='4'; -5: C:='5'; 6: C:='6'; 7: C:='7'; 8:S(I,DATA[I-58]); %MOVE_ABS(59,93); %FOR I:=59 TO 73 DO LINE_ABS(I,DATA1[I-58]); % %FOR I:=59 TO 73 DO BEGIN  C:='8'; 9: C:='9' +END; {case} +ZEROON:=(J<>0) OR ZEROON; +S:=CONCAT(S,C); +I:=I MOD D; +D := D DIV 10; )END; %END;  'MOVE_ABS(I,DATA[I-58]); 'LINE_ABS(I,DATA1[I-58]); END; % ' %SET_CHSP(0.04,0); %SET_LNST(3); %MOVE_ABS(60,100); %FOR I:=A ?. ثáBצdraw_on_view_surface not calledF  ɩ ō$צ marker error   Vةȓɍ ō" drvs error 1@ȡ@ǀ ث  rtjlP ? 劐Im ōɍō צ dsvs error??劐劐)    ؂ˡ ǀ ڏZ"צ vprt error ~(ō"צ chpr error :ɍ"צ chsz error ث٫z~|"צ wndw error v<تP +,5,5ȡ31/3-131/-x31nvxpxrtjlō"צ lnst errorá:3?PP1  ,3?1P šB áǀ ؞ 0٥إ á,,h ث  l7 7 w v7 v jj^7  & r t j^ CptE`eE /6 .-00(7 $m-  ` ~ m l  rټؼܼۼܼڼټؼټڼ- ` ~-,    5  \v h& , @ @|i! n! g! Z! S!K!F]PrfVVVVV&f p C`WqP b tm ?Y AaWp(mEtU  MSMPKD < 7 : 25tUBE vv n ds D`   <: T L]: LM: W!  ~ ( -#  8K   : :ǯ C?  ??ǰɡ+ :?  enb^(&f@ACpe& Δ~BB   `C? @?@ ??: I ;?Ii?iȡG ? ?L@ @l??á@  ? ?LBB  LB e ~B ee# ~CpPp(Cm r `W  W ?;Ǡ ;?Ii?iȡ?!?: ??;] ;?Ii?iȡ??: ??;?Ii?iȡ2?!?: eru~ e&~e&~eep`@I**I"AAA"A" ??: ?? #>  "A"AAAAA>""">J*v5t5t "6  :  :UCCESSFUL > SUCCESSFUL  ?ǖ OIL DRILLING TRENDS & $   footage  tD*  : p d Z t |alIJ: : * 'Q' DO  BEGIN "WRITE ('D(raw S(ave Q(uit'); rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. "READ (WHAT); "WRITELN; "IF WHAT = 'D' THEN $BEGIN $POINTS := 0; $WHILE POINTS < 2 DO &BEGIN &WRITE ('Number of points? It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY '); &READLN (POINTS); &NEW_FRAM; &K := 1; &IF POINTS > 1 THEN (WHILE K > 0 DO *BEGIN *DRAWSTAR; *K := K - 0.15; *END &D VةPȓɍ ō" drvs error H1I@ȡ@Iǀ HثPRT  8:02PPO IP ? 劐RTVWQOJLIm ōɍō צ dsvs errorI??劐劐N)  RT RRTT ؂ˡ ǀ ڏZ"צ vprt error D(ō"צ chpr error Q:ɍ"צ chsz error ثW٫V@DFBF"צ wndw error <<JLتP P+,5,5ȡ3R1T/3-131/-x314<>6>8:02ō"צ lnst errorQá:3?PPPP1  IP,3?1PPWVNRRJ NšNB NáIPǀ ؞ 0٥RإT RTTLQá,,h ثO  l7 7 w v7 v jj^7 T RRTT& 8 : 0 2  rټؼܼۼܼڼټؼټڼ  STARS  ,ݼܼ ۼڼ ˍ  á   ޓ  ڥ8C  GRAPHICS  ڥ:,  ۥ0  ۥ2ݼܼ ޡS ټ4<D@ؼ6>FBD bPP I?ነ??NRTRT. RTRTHPثIPHPáBצdraw_on_view_surface not calledRRTTF  OɩO ō$צ marker error  R TE 5tUBE vv n ds D`   <: T L]: LM: W!  ~ (?.IA-á    צ STARS.FOTOá  enb^(&f@ACpe& Δ~BB   ,צFILE WRITE ERRORj Ɓ0J      @LBB  LB e ~B ee# ~CpPp(Cm r `W  W @ ,QˡD(raw S(ave Q(uit,,Dá--ɡNumber of points? -   eru~ e&~e&~eep`@I**I"AAA"A""A>"A"AAAAA>""">J*v5t5t "6  :  :@@@D*  : p d Z t @DDD$a!@a DD""!@@@  BH""BH"` "   !D 0 ""D  -ȡ..IA-á   43?.^ CptE`eE /6 .-00(7 $m-  ` ~ m43?.IA-á    צ STARS.FOTOá- ` ~-,    5  \v h& , @ @|@ ,QˡD(raw S(ave Q(uit,,Dá--ɡNumber of points? -  rfVVVVV&f p C`WqP b tm ?Y AaWp(mEtU  .-š ...9?"צInvalid number,Sá  c4:F H H @H HA$" "$" D""!$" @DD0Dh$$ DBFH"" bB"HĈH"$#!H"$"$ $"@@$" BHDBDMHD1 $D"H ""!$D$@@"$$ $DD@$BB$H$ BB$D$$!!"H 1$Q$DD"H@DD2B$I$BLDID!""HDH "II#I"I""HIDDD"!bH FD"HD„( !C"DMIH "D@DD $`"x J$QH0`4$L$"2$, @D$ "@$!$"IHH$$H "A$$ QD`@$!B$$BH$DBD$"B("$"DD@$$"@"$"??H$(D!$? H1H0000H"HD "@$D$b@D F$D@D!"  "` I0D"RIIDa` G"!IID@H0" HD)D H"ш I`p@$!BIB"a?DbI!F"ICq0  IH "" I@DD@$D I0"$<DH"?<0 ``8bHF? $!? H HH#DD DD "G `0H$!?0bHF?00 <DH"?<`@$D 0"$@"" @DD  Hш ICa`a?Db!F"``@D!BB$ )D ""@D @I< %H<00 1&dH0 00$B$$B$?$ !$G"!D08"JID?"@ I0Dp0a` O! a`00 @D``0?(H0"ID H1I00?H$("I!$?Dap0 00 `0 A?0 BD$H"B("?8@$!B$$BH$ "A$$ QD` IHH$$a`80'a `xL1`08 T*`8H`4$LD$2$, H$RH0D H$`"`0 h8`00H`0 ``0 0 xHD„H !C"D"!bH FD"""HIDDa0 `0 0 `0 `00 `0 `"DD"H!"2B$$BL0 0 a`0 `H `h00 H 1$$ D$$!!"@$BB$$ BB$ ""`pT*`0 x2a`p0'a !$"$@DD D"I$HMH"H1"BH"HBp0  A?` p0 a`0 `D!H$DĈH$D#DBFDD bB"`?) `8@"H`08 8O! 00""!D$@DD"D$ DAD$ $ !$ap$B$$B$? `0 !&dH00  <EH< DH" """ H  H H$ hH$H" 0 @      @0D@"H!"$b@"H`F$"@$HD@@@$DD$$""D$D@@D$@H$!@DI$ " "I"@DM"D#DPASCAL5* Š SYSTEM.8510/Ab[U> SYSTEM.PASCALb[>CSYSTEM.CHARSET["C_ SYSTEM.FILER@[ ""I@D"I"HO^ $H$H@$D5@D$  D$@H$I It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM STARDISPLAY;  USES GRAPHICS;  TYPE SCR3 = RECORD CASE BOOLEAN OF ,TRUE : ( A: PACKED ARRAY [0..319, 0..239] OF BOOLEAN ); ,FALSE: ( B: PACKED ARRAY [0..4863] OF CHAR ) ,END; DLثELDLáBצdraw_on_view_surface not called%SCR1 = PACKED ARRAY [0..319, 0..79] OF BOOLEAN; %PSCR = RECORD CASE BOOLEAN OF ,TRUE : ( ONE_ZONE : ^SCR1 ); ,FALSE: ( THREVةLȓɍ ō" drvs error D1E@ȡ@Eǀ DثLE_ZONE : ^SCR3 ); ,END;  VAR SCREEN : PSCR; $PHYLE : FILE;   PROCEDURE INPUT;  BEGIN  RESET ( PHYLE, 'STARS.FOTO' );  NPRSMKFHIm ōɍō צ dsvs errorEIF BLOCKREAD ( PHYLE, SCREEN.THREE_ZONE^.B, 19) <> 19 THEN "WRITELN ( 'FILE READ ERROR' );  CLOSE (PHYLE);  END;   BEGIN ؂ˡ ǀ ڏZ"צ vprt error @ INIT_GRF;  NEW (SCREEN.THREE_ZONE);  USE_SURF (SCREEN.ONE_ZONE);  DRAW_VS (3);  SET_LNST (1);  NEW_FRAM;  DISP_VS (0, 7, <@B>B"צ wndw error 87);  SET_WNDW (-1.2, 1.2, -1, 1);  INPUT  END.  08:2:46,.ō"צ lnst error! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu  STARDISP rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.  GRAPHICS J  .  rټؼܼۼܼڼټؼټڼ- ` ~-,    5  \v h& , @ @| ڥ6,  ۥ,  ۥ.ݼܼ ޡS ټ08@<rfVVVVV&f p C`WqP b tm ?Y AaWp(mEtU  ؼ2:B>D bLP E?ነ?5tUBE vv n ds D`   <: T L]: LM: W!  ~ (?JNPNP. NPNP  enb^(&f@ACpe& Δ~BB  NNPPF  KɩK ō$צ marker error  N PLBB  LB e ~B ee# ~CpPp(Cm r `W  W NP  46,.LPK EL ? 劐 eru~ e&~e&~eep`@I**I"AAA"A"??劐劐J)  NP NNPP "A>"A"AAAAA>""">J*v5t5t "6  :  :(ō"צ chpr error M:ɍ"צ chsz error ثS٫RD*  : p d Z t <FHتP L+,5,5ȡ3N1P/3-131/-x31Má:3?LPLP1  EL,3?1LPSRJNNF JšJB JáELǀ ؞ 0٥NإP NPPHMá,,h ثK  l7 7 w v7 v jj^7 P NNPP& 4 6 ,^ CptE`eE /6 .-00(7 $m-  ` ~ mK O^ It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BYצ STARS.FOTOˡ#צFILE READ ERROR^ Ɓ0B      @D@  Z` bytes long.UáV?&צSYSTEM.WRK.TEXTN*SYSTEM.WRK.CODENתeצ4Do you want to E(xit from or R(eturn to the editor?   EګצWriting out the file*::6z'8Tx`kV\^      @@@@ {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for an@@y losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fPASCAL5* Š SYSTEM.8510/Ab[U> SYSTEM.PASCALb[>CSYSTEM.CHARSET["C_ SYSTEM.FILER@[urther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.L  - ,- - EEN  ; X : INTEGER, X LOCATION OF MARKER  ; Y : INTEGER, Y LOCATION OF MARKER  ,- ABSOLUTE - ,- screen coordinates for - ,- ; MN : INTEGER, MARKER NUMBER  ; AXL : INTEGER, XLEFT OF WINDOW TO CLIP MARKER  ;  GMARK AND GCHAR - ,- - ,-  AXR : INTEGER, XRIGHT OF WINDOW TO CLIPP MARKER  ; AYB : INTEGER, YBOTTOM TO CLIP MARK - ,(0,0) ********************************************* (319,0) , , !Linestyle for ER  ; AYT : INTEGER, YTOP TO CLIP MARKER  TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM TESTIT;  TYPE TERAKSCREEN = PACKED ARRAY[0..4799] OF INTEGER;   VAR both routines is 0 for white(set bits on), 1 for black !(clear bits out--erase). Neither routine works under compliment mode. SCREEN: TERAKSCREEN;  DELAY,N,X,Y,H,W:INTEGER; CHR:CHAR;   PROCEDURE DRAWLINE(VAR RADAR:INTEGER; VAR S: TERAKSCREEN; ,  Height and Width parameters to GCHAR define how many templates wide  and high the character will be on the screen. Thus a8ROW, X0,Y0,DX,DY,PEN:INTEGER); EXTERNAL;  (*  The following routines GMARK & GCHAR support graphics on the 8510/a by  drawi call to GCHAR  with the parms h=3 & w=2 would produce a character template in the  graphics scape 30 (3 * 10) dots high and ng characters and markers in the graphics space.   Both routines address the screen in absolute screen coordinates with (0,0)16 (2*8) dots wide.  Character templates are taken from the character generation buffer.   ;PROCEDURE GCHAR( VAR:  ;   defined as the lower left corner of the screen.   Both routines will support a view surface(drawing surface) smaller, equa SCREEN ARRAY: POINTER TO ARRAY USED AS SCREEN, l to,  or larger than the actual display surface in the y direction. The y dimension mion  must, however, be a multiple of 80 ; NZONE : INTEGER, {NUMBER OF ZONES TO DRAW ON}  ; ORD(CHAR) : INTEGER,  ;  (i.e 1/3 screen or the equivalent of a  single screen zone. NZONE is the parameter which tells the routines how  large the  X : INTEGER, {RANGE 0<=X<=319}  ; Y : INTEGER, {RANGE 0<=Y<=(NZONE*80-1)screen is in the y direction.   The screen dimension in the x direction is allways 0..319.  ,(0, (nzone*80)-1 ) **********}  ; HEIGHT ; INTEGER,  ; WIDTH ; INTEGER,  ; LINESYLE : ******* (319, (nzone*80)-1) ,- -  - INTEGER )  ; PROCEDURE GMARK( SCREEN: ARRAY FOR SCREEN DISPLAY  ; NZONE : INTEGER, # OF 1/3 ZONES OF SCR