`L i=L\Ʃx ? N'i  ͭЅ?0ȱ Ѕ?iȱi lԠԠ͠ԠϠŠͮŠ SYSTEM.APPLE   L$JLјJ 8彐.mĿ"Š>?( X֮ˍL հ˩($8` Ґh Hǹxbhx Nb`8Ύa߽0|ϩHhHh ӈ ө ө ӘVYԦΝYԮaߝꪽԦ ө  Ͱ()I يJJJ(jǩF؅G(  ֈ k( F G  Wjee0 Ю $Ӱb4 xbdfbH dߩ`Ǚx kh k@(LYҭH͍h (ͥpi)ͥˤ˹HH(x h(`~Ȍ``,hhh )hJ¥jJJhhihhhJi֍hhhh b\8ſƅhx Щ&'H(f'ꮭ'eƍ8ƅб ĘHH`fߠ d߮ ange file type ? (EXTE TREE.TEXTf 128K.APPLE 128K.PASCALTEMP@ v?K BALANCED.TEXTfKS CROSSREF.TEXTSi DISKIO.TEXTioGRAFCHARS.TEXTfo GRAFDEMO.TEXTEHAZEL.MISCINFO3HAZELGOTO.TEXTӟ HILBERT.TEXTE SETUP.CODErSPIRODEMO.TAPPLE33& SYSTEM.APPLE&+FORMATTER.CODE+1FORMATTER.DATA16 BINDER.CODE68 LINEFEED.CODE8< LINEFEED.TEXT<= II40.MISCINFO=> II80.MISCINFO>?IIE40.MISCINFO&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xH&x'8*7Ixix&&  ') + &п x) ++`FG8`0($ p,&") (jJJ>L+ "?I>  N `  ` x V Nx .x- z `V0^*^*>` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`& ө ө ө ӽ`Hh`Q꽌ɪɖν*Ͻ%ϙEΈ 꽌ɪ`8` Hh݌`  $(,048<@DHLPTX\`dhlptx|Հ؈䤨谴~X~YiTiUR콥S8\ȥ]\]VWlX ƎRSL~ȱȱŎRRLdҠX LdҠX PQȑLdҠXX XY 0 L_X~~8傅~8~~~78Ƈ8񆅚ȥ񆅛\[HZHl\0 LdN8Ƈ8񆅈񆅉@:8񆅈(8 8Z[ 8Z[LѠP i tiuLht i~i8~8`hh ߦ~ h0 L3 L3lvLRLX/ L 8L ߦ~ hI=+ L ߤ~襈I= ƈ LȄHHLLhh ~LhhV~W\]XiXY~8傅 !THEN TO TYPE UNTIL USES 1UNIT 2VAR WHILE WITH WNTO END ELSE EXTERNAL5FOR FUNCTION FILE .FORWARD "GOTO IF IN )IMPLEMEN4INTERFAC3LABEL MOD 'NOT &OF OR (PROCEDURPACKED +PROGRAM !REPEAT RECORD -SET *SEGMENT ܅܅ȱՈƐ2i ȱȱȩȥȩȑȑH~H`'Pޱ[ޱݱ݄ޏޚޥ޺ޱ"AL߱ݱݱ@#AND 'ARRAY ,BEGIN CASE CONST DO DIV 'DO` ۑȑآL ّ 0 ;ܩJ;* ۠؈ȩؠ#в   :>BGڇښڢکڬh~hhhhhqq a{8 ȱ{a0:A[_ ؕԈqȱi`H$)A[hIH80(hI`i(8(hI`J) )i i`HH8(iPH D۠'(hH ۩ hhehLDۍ۠'O`J>L80 %,M8$LgLhhhhhhhhץHH` )`,10 )?ILڢY` l܅k܅lм`|H D۠ D۠'È B h`@ ֠ ֭0`+` ڥHH B MڥhhLDۦ ڐ`,10` ` ` ` ۤO`) 2 ֭0` ֹ)` ( `) $ HЄ ֹJ` MȽ`H ؠ H h`@`   ٢` َ` ֭`38 0P`8 0 DۥHH)> `0* x)` EHh`LL٠(MC3 `H ؠ h ~؍,,`lQ`) ũ Ȣ`JJJJ ϱ` $p0*O# =ؤ =آ`H ؠLf ֊H h ɢ)L ,10U0I ,109,c$0 A[ $P0Ji)jj%UIЂ )?LI@a Hb c0  hH ׎h$L hhh 靱`hhh(`hhhhhhϐ8 (ֹH ֥ +ֹP b)*Ȫ`FG8`0($ p,&"VU>)Q>jj``P@J I*I `8Hh` 7HHH*L^F0 ِ9 aLgץ")j> 8`Ί aՍxՍՍՍե>?Ռ8T8ՌWuՌvՠ ýI꽌ɪ꽌ɭ蠪ϮәVE]ӾV]H)]ӾV]ԙ)]ӾT]ԙ)]ӦΨ 8$hU>`ȅbSϭb߅83IbߐibŅ QHPH PȱPP꽥QLdҠ RhPhQLH RR8~S~\ȱ~]X i RHLiR~ȱRV~ ~VWRTȱRURXȱRYRRR콆SLdҠ8񚅆񚅇`ȱL8~ȥ~e~ȱ~e~8ƇƎ`3[[`3[[`\Z][ 8\Z][`Lх~ e~ HHH> ]>HBC\8倅\]偅]  " ]H\HHHAH@H > ޽ Insert boot disk with SYSTEM.PASCAL on it, then press RETURN# SYSTEM.PASCAL is not version 1.2#lhLhx hmDŽ ) W 9LK " W 8ƛ 58Ƈ8\񆅖ȥ]񆅗8񆅖Ɨ8 ƗLPQ L楆8Ƈ8񆅔ȥ񆅕8Ƈ iiL奖 㥘 㥔 㭭ххІ 51-l l Ɗgƈд** 6`V QRTWHHlRHHlT Эhh a0+&00 1حB/C0@A "!歪筫䭬)aVV#$6 </\z FLLIEHJh**F`F$Lө ޽޾ HHHH`HHHHHH  < `) ,1P `*0 򭋍8TU 8X再Y凍TVlLXiXYXiXY HHXYX olhh)X0 eXXYLLeT~eU~8~X~YLdҩHHL^ҠXHXHL?飨RHRHL^Ҡ UѥRehnSeio nHnHLLҠ UѥRehnSeioni n%D[abHT%LXiXYX h&i` hi`RlSml~ȱlm~l``Z罅[潩`޽~@<8潍罅Z\]b[      ཀྵlN{`j5ۓ{Wv*ܞמ]َPqҜـٯU]l7{ӳBVݿӧݙy1ڇ 8R-zLDүH@P 8^L^һһһһһһһһһһһһһһһһ****************|yyyyyyy ҹHH`=`LLLLL)LHL&L)LLKLLLXLLXLLL\v]w]|\ v\w] RPRRSQRR @RȭAR)[ [Zqʊ qŐ`8H<8H\Ni iIHHAH@H GH#FF) l GGԬهП8ƋȱHHHH`HHHHHH  < @>~?aƁ)ɠG#ooHnHLLҠ UѥRehnSeio hnhnLLèPHPHL^Ҡ UѥPehnQeio nHnHLLҠ UѥPehnQeioni nooHnHLLҠ UѥPehnQeio hnhnLLҠX qѠ Uѥhelniemo nHnHL?ҠX qѠ Uѥhelniemoni nooHnHL?ҠX qѠ Uѥhelniemo hnhnL?ҠX Uѽeh~ei~H~HL?ҠX Uѽeh~eih~h~L?ҠX UѽeheiHHL?h~hȱ~H~HL^h~hhh~ȥL^ҠXȘ ~X)XYXHXHXe~XYLdҠX~ 8倐~hrhsrHrHáMצ'PUT SYSTEM DISK IN #4 AND PRESS RETURN  THAT'S ALL FOLKS... ڳ 0ڳ ۏڂ0ڳ<pJFORMATTE 0~E~~~Ղ0LސLh)~hh)h~Lީ vhhh~hE0Ł~ŀ/1'0+!h~hh~hHHL^hHHL^ҩ%vHHL^hhh h膀e ň8内e~l8吨Lߤ 0 vXLLyL+L<   UFifhL8ޠ Uhhh~hXYhLdޱ~р~iLްLLވhhuޅvޅh~h~wޅ~xޅ~р ȱ~р~р %v HHLLҩHHLLҢh~E内凅Lݥ) fj~) fj8~݅݅HHHH9݅9݅HH~ HHHiHL^ҩHHL^ҩHHL?? hh&ŎLL0eeƎLLҥ8包Ŏ 8吪8吪ƌLLhh&eȹȹp)1)fjjj)?~Ōe~9 pHHL^ҦpHHL^ @hhHHHHhhhhLݥ)L8ȥL^hhh heȄ Ȅ~l ۦ8e h9 0 ʚL^ ۦņ hI9ʚL^ ņ0 hʚL^҅~Ƃ~eʥƂFHHL^ҠX hh &heheHHHHeHHL?hhhhhhȱ80 iff =݅=HHL^h~hhhhh ݅%~~݅%80~~i ~&&hhȱI%~I%YHXHXXYeXXYLdhrhshthuXs&trȑtLLҠrrtLUٱrtLLLѺ~~LL^Ҡ UhehheiHHLLҠ UhehheiHHLLhh Uѥi h&L٥hi 0ץheheHHLLҠXX` of"f fofn8no8&&`ffofn&&`hhhh ץIiIiHHL^hhhh ץHHL^h~hhhE0Ń)ŀ!0E0~łL^LXYXXYYHXHLXYHHL^hIihIiHHL^h~hhh8~HHL^ҩonff nenoeofofnff`hh0 hhLhh"IiIiIiIi 0ץHHL^ҺHHLWנnoLѥIiIi攥IiIiƔ8吥呰 X&XeYei无8XYLdҥXiXYLd h~hhh~&Zȥ[Ze~Z[e[8\Z][LLL h~hZ~ȥ[~LLh~h~Zȱ~[潩LLҩlLhh0HHL^ҨIiIiHHL^h~hhhe~eLLLѠX~e~e~tu~L1hththhLLh~hhe~~heH~HL^hhh~hhe~~he~L^hrhshthu ULh~hhh%H%~HL^h~hhhH~HL^hhIHIHL^ҩXXhhQX0XŗiX`0\XE0XLXŖC?8X xץ:צ)APPLE PASCAL DISK FORMATTER PROGRAM [1.2]=צ#4:formatter.data"ˡצ#5:formatter.data"ˡצ#9:formatter.data"ˡצ#10:formatter.data"ˡ#11:formatter.data"ˡצ#12:formatter.data"ˡ#13:formatter.data"ˡצ#14:formatter.data"ˡ#15:formatter.data"ˡצ#16:formatter.data"ˡ#17:formatter.data"ˡצ#18:formatter.data&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xH&x'8*7Ixix&&  ') + &п x) ++`FG8`0($ p,&") (jJJ>L+ "?I>  N `  ` x V Nx .x- z `V0^*^*>` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&`L i=L\Ʃx ? N'i  ͭЅ?0ȱ Ѕ?iȱi lԠԠ͠ԠϠŠͮŠ SYSTEM.APPLE   L$J ,@ -@ -@ -@`HJ݌h Hh݌`  8`0($ p,&"!ALs@#A ?LA#A .?"A%A&A8 A AHh#A j><A/8`#A j>#A >&A0 &A`%A8`"A %A#A j>%A8` A A$Lh@B ? ? ?V A꩖݌$ A݌ ? ? ? ? ?`Hh݌`80^݌Hh @ @݌ -@ -@ -@ @ @ @EEHJh ,@ -@ -@ -@`HJ݌h Hh݌`  8`0($ p,&"!ALs@#A ?LA#A .?"A%A&A8 A AHh#A j><A/8`#A j>#A >&A0 &A`%A8`"A %A#A j>?K@ :@9A ?W@ :@8Aн :@$A)* 7A7A` A݌HhHh ? ? ? ?V A꩖݌$ A݌ ? ? ? ? ?`Hh݌`80^݌Hh @ @݌ -@ -@ -@ @ @ @EEHJh #=h` \I꽌ɪVɭɖ0ɖ!ɖ 꽌ɪ\8`  꽌ɪɖ * % E зЮ꽌ɪФ`7A6A$A\8A$A9A86A7I$Ai$A8A8A 8  :=`+L!='L!=i0L!=8` $A6AJJJJ6A >N$A`)p#A#A**LS=ׅ P$A #=  :@Ld= Ai#A #=#AL= c@AL=AL= AL="A%A%AL=#A j>#A >#H#ANH(HMHJHIH`PN@9532.-'%# p:|0A91)! 71 1+%ˡצERROR: צUNABLE TO FORMAT DISKDISK IS WRITE-PROTECTEDuצDRIVE SPEED IS TOO SLOWLDRIVE SPEED IS TOO FAST#'4 qJ "Gp"hIhJhhhhh )Khh LhhNxL K =M966NOW FORMATTING DISKETTE...0A91)! 71 1+%ˡצERROR: צUNABLE TO FORMAT DISKDISK IS" ˫6 á= UNIT NUMBER   IS NOT ONLINE.  é ń ȄצDESTROY DIRECTORY OF   : :ȡ    ? 99@@9"ˡ#19:formatter.data"ˡצ#20:formatter.data"ˡ>&ERROR: CANNOT FIND FILE FORMATTER.DATA   "FORMAT WHICH DISK (4, 5, 9..12) ? 8808 BLANKBLANK:rGnavpa~`~arGaaaaa `zbavava@ ~ ~ avZ@ aavaea@ @ ava `ZZ@bBbBb̘`nMFil bvbbvbh~ ~ ~ .bv0b(@",Compile what text? A" Compiling... d44Q4 LINEFEED.CODEODE[*]t\JJz^to^EJ P:A2/UTILITIESBBBBBBBBBBBBBBBB&LINEFEED  ˦READING O.S. SEG #15멄 멄 멄 8``  멄`멄`` ` `ȡ# a a   צWRITING SEG DICT OF NEW O.S.8u( á ( š צ NEW.PASCAL``` ` ŦNOT ENOUGH ROOM TO READ SEGMENT8멄  ` ˦READING O.S. SEG #15멄 멄 멄 8``  멄`멄`` ` `ȡ# a a   צWRITING SEG D8צREADING SEG DICT OF O.S.8á ( š צ NEW.PASCAL``` ` ŦNOT ENOUGH ROOM TO READ SEGMENT8멄  ` ڂ ؤ,ץ<8d APPLE GOTOXY BINDER8צ SYSTEM.PASCAL"˦NO FILE SYSTEM.PASCALצGOTOXY MUST BE PROCEDURE #2ȦNO PROCEDURE #2 IN CODE FILEڕ ˡxצ COPYING SEGMENT  ک ˦WRITING OUT SEGMENTؤ۩ ۢٚ-á-"ˡ"VV-PV.CODEUV"á˦READING SEG DICT OF GOTOXY FILEˡ3ˡ$צGOTOXY MUST BE IN SEG #0 OR #1ؤVVV˦READING GOTOXYVتP١rERROR: Press space to continue?,, ˡ ,TھƁ1"ˡFILE WHICH CONTAINS GOTOXY? -PBBBBBBBBBBBBBBBBFAPPLEBIN JY LINEFEED.TEXTttfr*:>t|t+|LPtt A2/UTILITIEStJJ|r]tJJ]t] d44^2 ^2ECommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem,LO^N^ff, ƃʅ* ƃ unusedƃצ, ƃʅ+   O ?ƃ"ƃ , p, Vols on-line:ȡ  P ?  O ?"TYPE PA=PACKED ARRAY[0..1] OF 0..255; 'TWOFACE=RECORD CASE BOOLEAN OF 1TRUE:(INT:INTEGER); 1FALSE:(PTR:^PA); /END; / "VAR CHEAT:TWOFACE; "  BEGIN "CHEAT.INT:=-16625; {BF0F hex} "CHEAT.PTR^[0]:=255 {Set flag}  END. {$SETC APPLE := 2} {$S-}   { The Apple Pascal system has a linefeed flag at location BF0F hex. If "this flag is set to 255 (FF hex), line feeds will be suppressed. If "it is set to 0 (default), line feeds will be passed. } "  PROGRAM LINEFEED;  &BOXWORD(P^.WORD); &IF LEVEL>4 THEN WRITE(CHR(7)); (* BEEP *) &IF LEVEL<=4 THEN (BEGIN *PENCOLOR(NONE); MOVETO(X+44,Y+3); *PENCOLOR(WHITE); MOVETO(X+56,Y+DELTAY[LEVEL]); *SHOWTREE(P^.LEFT,LEVEL+1); *PENCOLOR(NONE); MOVETO(X+44,Y-3); *PENCOLOR(WHIT "MOVETO(X,Y-5); MOVETO(X,Y); "PENCOLOR(NONE); MOVETO(X+2,Y-4); "WSTRING(W); MOVETO(X,Y);  END;     PROCEDURE SHOWTREE(P: NODEPTR; LEVEL: INTEGER);  VAR X,Y: INTEGER;  BEGIN "IF P<>NIL THEN $BEGIN &X:=TURTLEX; &Y:=TURTLEY; ^.WORD); &PRINTTREE(P^.RIGHT); $END;  END;    PROCEDURE BOXWORD(W: WORDSTRING);  (* BEGIN AND END PEN AT LEFT OF BOX *)  VAR X,Y: INTEGER;  BEGIN "X:=TURTLEX; Y:=TURTLEY; "PENCOLOR(WHITE); MOVETO(X,Y+5); "MOVETO(X+44,Y+5); MOVETO(X+44,Y-5); 3END; 3P^.BAL:=0; H:=FALSE; /END; (* CASE1 *) * *END; (* CASE *) &END (* IF W>P^.WORD *) & $ELSE H:=FALSE;   END; (* INSERTIT *) " " " " 5  PROCEDURE PRINTTREE(P: NODEPTR);  BEGIN "IF P<>NIL THEN $BEGIN &PRINTTREE(P^.LEFT); &WRITELN(P5P:=P1; 3END 1ELSE 3BEGIN (* DOUBLE RL ROTATION *) 5P2:=P1^.LEFT; 5P1^.LEFT:=P2^.RIGHT; 5P2^.RIGHT:=P1; 5P^.RIGHT:=P2^.LEFT; 5P2^.LEFT:=P; 5IF P2^.BAL=+1 THEN P^.BAL:=-1 ELSE P^.BAL:=0; 5IF P2^.BAL=-1 THEN P1^.BAL:=+1 ELSE P1^.BAL:=0; 5P:=P2; N *) *CASE P^.BAL OF +-1: BEGIN 1P^.BAL:=0; 1H:=FALSE; /END; (* CASE -1 *) / ,0: P^.BAL:=+1; , ,1: BEGIN (* REBALANCE *) 1P1:=P^.RIGHT; 1IF P1^.BAL=+1 THEN 3BEGIN (* SINGLE RR ROTATION *) 5P^.RIGHT:=P1^.LEFT; 5P1^.LEFT:=P; 5P^.BAL:=0; 5IF P2^.BAL=+1 THEN P1^.BAL:=-1 ELSE P1^.BAL:=0; 5P:=P2; 3END; 1P^.BAL:=0; H:=FALSE; /END; (* CASE -1 *) / *END; (* CASE *) &END (* IF WP^.WORD THEN &BEGIN (INSERTIT(W,P^.RIGHT,H); (IF H THEN (* RIGHT BRANCH HAS GROWON *) 5P^.LEFT:=P1^.RIGHT; 5P1^.RIGHT:=P; 5P^.BAL:=0; 5P:=P1; 3END 1ELSE 3BEGIN (* DOUBLE LR ROTATION *) 5P2:=P1^.RIGHT; 5P1^.RIGHT:=P2^.LEFT; 5P2^.LEFT:=P1; 5P^.LEFT:=P2^.RIGHT; 5P2^.RIGHT:=P; 5IF P2^.BAL=-1 THEN P^.BAL:=+1 ELSE P^.BAL:=0; (INSERTIT(W,P^.LEFT,H); (IF H THEN (* LEFT BRANCH HAS GROWN *) *CASE P^.BAL OF ,1: BEGIN 1P^.BAL:=0; 1H:=FALSE; /END; (* CASE1 *) / ,0: P^.BAL:=-1; + +-1: BEGIN (* REBALANCE *) 1P1:=P^.LEFT; 1IF P1^.BAL=-1 THEN 3BEGIN 5(* SINGLE LL ROTATI,P2: NODEPTR;  BEGIN "IF P=NIL THEN (* MAKE NEW NODE *) $BEGIN &NEW(P); H:=TRUE; &WITH P^ DO (BEGIN *LEFT:=NIL; *RIGHT:=NIL; *WORD:=W; *BAL:=0; $ END; $END " "ELSE (* CHASE DOWN TREE FURTHER *) $IF WW^.KEY THEN SEARCH(W^.RIGHT) ELSE $BEGIN NEW(X); X^.LNO:=N; X^.NEXT:=NIL; *W^.LAST^.NEXT:=X; W^.LAST:=X; $END;  END; (* SEARCH *)   PROCEDURE PRINTTREE(W: WORDREF); "PROCEDURE PRINTWORD(W: WORD); "VAR L: INTEGER; X: ITEMREF; "BEGIN $WRITE(G,' ',W.KEY); $X:=W.FIRST; L:=0;  REPEAT &IF L=C2 THEN (BEGIN *WRITELN(G); *L:=0; WRITE(G,' ':C1+1) (END; (L:=L+1; WRITE(G,X^.LNO:C3); X:=X^.NEXT; $UNTIL X=NIL; $WRITELN(G); "END; (* PRINTWORD *)  BEGIN (* PRINTTREE *)  (****************************************************************)  (* *)  (* READ SYSTEM.MISCINFO AND GET CRT CONTROL CHARACTER INFO *)  (* ADIN);    VAR CH: CHAR; $RECNUM: INTEGER; $LASTCHANGE: BOOLEAN; $DATAFILE: FILE OF PERSON;  CRTINFO: PACKED ARRAY[CRTCOMMAND] OF CHAR; $PREFIXED: ARRAY[CRTCOMMAND] OF BOOLEAN; $ $   PROCEDURE GETCRTINFO; SETOFCHAR=SET OF CHAR; %PERSON=RECORD 1NAME: STRING[NAMELEN]; 1COMPANY: STRING[COMPLEN]; 1STREET: STRING[STREETLEN]; 1CITYSTATE: STRING[CITYLEN]; 1TEL: STRING[TELELEN]; /END;  CRTCOMMAND= (ERASEOS,ERASEOL,UP,DOWN,RIGHT,LEFT,LECREEN CONTROL. *)  (* *)  (*********************************************************)   CONST NAMELEN=32; &COMPLEN=32;  STREETLEN=20; &CITYLEN=30;  TELELEN=14; &  TYPE (*$V-*)  (*$G+*)  PROGRAM DISKIO;  (*********************************************************)  (* *)  (* PROGRAM TO DEMONSTRATE RANDOM ACCESS DISK FILES *)  (* AND TERMINAL-INDEPENDENT SO^EREE(ROOT);  PAGE(G); PAGE(G);  CLOSE(G,LOCK); "CLOSE(F)  END.  K>=K1 THEN K1:=K *ELSE ,REPEAT .A[K1]:=' '; .K1:=K1-1; ,UNTIL K1=K; *ID:=A; SEARCH(ROOT); (END &ELSE (BEGIN *CH:=F^; WRITE(G,CH); GET(F); (END; $END; (* WHILE NOT EOLN *) $WRITELN(G); GET(F); "END; (* WHILE NOT EOF *) "PAGE(G); PRINTTF) DO $BEGIN (* SCAN NON-EMPTY LINE *) &CH:=F^; &IF CH IN ['A'..'Z','a'..'z'] THEN (BEGIN *K:=0; *REPEAT ,IF K NIL THEN $BEGIN &PRINTTREE(W^.LEFT); &PRINTWORD(W^); &PRINTTREE(W^.RIGHT); $END;  END; (* PRINTTREE *)    BEGIN (* MAIN *)  ROOT:=NIL; N:=0; K1:=C1; "WRITE('INPUT FILE? '); "READLN(SOURCE); *)  (****************************************************************)  VAR BUFFER: PACKED ARRAY[0..511] OF CHAR; $I,BYTE: INTEGER;  F: FILE;  BEGIN "RESET(F,'*SYSTEM.MISCINFO'); "I:=BLOCKREAD(F,BUFFER,1); "CLOSE(F); "BYTE:=ORD(BUFFER[72]); (* PREFIX INFORMATION BYTE *) "CRTINFO[LEADIN]:=BUFFER[62]; PREFIXED[LEADIN]:=FALSE; "CRTINFO[ERASEOS]:=BUFFER[64]; PREFIXED[ERASEOS]:=ODD(BYTE DIV 8); "CRTINFO[ERASEOL]:=BUFFER[65]; PREFIXED[ERASEOL]:=ODD(BYTE DIV 4);  CRTINFO[RIGHT]$IF LENGTH(S) > MAXLEN THEN GOTO 1; $FOR I:=1 TO LENGTH(S) DO &IF NOT (S[I] IN [' '..'}']) THEN GOTO 1; $EXIT(CHECK); (* STRING IS OK *) "1: ZEROREC(REC); EXIT(VALIDATE); "END; (* CHECK *) "  BEGIN (* VALIDATE *) "WITH REC DO $BEGIN $ CHECK(NALID. *)  (* *)  (*********************************************************) "PROCEDURE CHECK(VAR S: STRING; MAXLEN: INTEGER); "LABEL 1; "VAR I: INTEGER; "BEGIN CEDURE VALIDATE(VAR REC: PERSON);  (*********************************************************)  (* *)  (* TRIES TO DETECT AND ZERO AN UNINITIALIZED RECORD *)  (* NO CHANGE IF ALL FIELDS ARE VA FUNCTION YES: BOOLEAN;  BEGIN "YES:= GETCHAR(['Y','y','N','n']) IN ['Y','y'];  END;    PROCEDURE ZEROREC(VAR REC: PERSON);  BEGIN "WITH REC DO $BEGIN &NAME:=''; &COMPANY:=''; &STREET:=''; &CITYSTATE:=''; &TEL:=''; $END;  END;    PRO$IF S1[1] IN OKSET THEN STEMP:=CONCAT(STEMP,S1) &ELSE IF S1[1]=CHR(8) THEN (BEGIN *CRT(LEFT); WRITE(' '); CRT(LEFT); *DELETE(STEMP,LENGTH(STEMP),1); (END; "UNTIL S1[1] = CHR(13); "IF LENGTH(STEMP) <> 0 THEN S:=STEMP "ELSE WRITE(S);  END;   CHAR;  BEGIN "OKSET:=[' '..'}']; "S1:=' '; "STEMP:=''; "REPEAT " IF LENGTH(STEMP) = 0 THEN S1[1]:=GETCHAR(OKSET + [CHR(13)]) &ELSE IF LENGTH(STEMP)=MAXLEN THEN S1[1]:=GETCHAR([CHR(13),CHR(8)]) -ELSE S1[1]:=GETCHAR(OKSET + [CHR(13),CHR(8)]); STRING ENTERED, DEFAULT AND PRINT PREVIOUS VALUE. *)  (* *)  (***************************************************************)  VAR S1: STRING[1];  STEMP: STRING[80];  OKSET: SET OF RING(VAR S: STRING; MAXLEN: INTEGER);  (***************************************************************)  (* *)  (* GET AND ECHO A STRING UP TO MAXLEN CHARS LONG. *)  (* IF NULL  GOOD: BOOLEAN;  BEGIN  REPEAT $READ(KEYBOARD,CH); $IF EOLN(KEYBOARD) THEN CH:=CHR(13); $GOOD:= CH IN OKSET; $IF NOT GOOD THEN WRITE(CHR(7)) &ELSE IF CH IN [' '..'}'] THEN WRITE(CH); "UNTIL GOOD; "GETCHAR:=CH;  END;    PROCEDURE GETST *)  (* GET A CHARACTER, BEEP IF NOT IN OKSET, ECHO ONLY IF PRINTING *)  (* *)  (******************************************************************)  VAR CH: CHAR; AT(Y: INTEGER; S: STRING);  BEGIN "GOTOXY(0,Y); "WRITE(S); "CRT(ERASEOL);  END;    FUNCTION GETCHAR(OKSET: SETOFCHAR): CHAR;  (******************************************************************)  (* *)  (*****************************************************************)  BEGIN "IF PREFIXED[C] THEN UNITWRITE(1,CRTINFO[LEADIN],1,0,12); "UNITWRITE(1,CRTINFO[C],1,0,12);  END;    PROCEDURE PROMPTPROCEDURE CRT(C: CRTCOMMAND);  (*****************************************************************)  (* *)  (* CRT COMMANDS ARE: ERASEOS,ERASEOL,UP,DOWN,RIGHT,LEFT. *)  (* :=BUFFER[66]; PREFIXED[RIGHT]:=ODD(BYTE DIV 2); "CRTINFO[UP]:=BUFFER[67]; PREFIXED[UP]:=ODD(BYTE); "CRTINFO[LEFT]:=BUFFER[68]; PREFIXED[LEFT]:=ODD(BYTE DIV 32);  CRTINFO[DOWN]:=CHR(10); PREFIXED[DOWN]:=FALSE;  END;    ME,NAMELEN); &CHECK(COMPANY,COMPLEN); &CHECK(STREET,STREETLEN); &CHECK(CITYSTATE,CITYLEN); &CHECK(TEL,TELELEN); $END;  END; (* VALIDATE *)    PROCEDURE SHOWREC(REC: PERSON);  BEGIN "GOTOXY(0,4); CRT(ERASEOS); "WITH REC DO $BEGIN &WRITELN('Name: ',NAME); &WRITELN('Company: ',COMPANY); &WRITELN('Street: ',STREET); &WRITELN('City & State: ',CITYSTATE); &WRITELN('Telephone: ',TEL); $END;  END;    PROCEDURE CHANGEREC(VAR REC: PERSON);  BEGIN "GOTOXY(0,12); CRT( END; " "  BEGIN (* MAIN PROGRAM *) "GETCRTINFO; "GOTOXY(0,0); CRT(ERASEOS); "NEWFILE; "REPEAT $PROMPTAT(0,'>DISKIO: V(iew, C(hange, N(ext, F(ile, Q(uit '); $CH:=GETCHAR(['N','n','F','f','V','v','C','c','Q','q']); $CRT(ERASEOS); $CASE CH OF &&(*$I-*) &PUT(DATAFILE); $ (*$I+*) &IF (IORESULT<>0) OR EOF(DATAFILE) THEN (BEGIN *GOTOXY(0,20); *WRITELN(CHR(7),'UNABLE TO EXTEND FILE, NO DATA WRITTEN'); $ WRITELN('Use Filer K(runch command to make space after file.'); (END; $END; Y(0,4); *WRITE('Record ',RECNUM,' not in file.'); ( EXIT(NEXT); (END; $END;  GOTOXY(0,2); WRITE('Record number ',RECNUM); "VALIDATE(DATAFILE^); "SHOWREC(DATAFILE^);  IF LASTCHANGE THEN $BEGIN &CHANGEREC(DATAFILE^); &SEEK(DATAFILE,RECNUM); D; "LASTCHANGE:=FALSE;  END; " "  PROCEDURE NEXT;  (* VIEW OR CHANGE NEXT RECORD *)  BEGIN "RECNUM:=RECNUM+1; "SEEK(DATAFILE,RECNUM); "GET(DATAFILE); "IF EOF(DATAFILE) THEN $BEGIN &ZEROREC(DATAFILE^); &IF NOT LASTCHANGE THEN (BEGIN *GOTOX$READLN(RECNUM); "UNTIL IORESULT=0; "(*$I+*) "SEEK(DATAFILE,RECNUM); "GET(DATAFILE); "IF EOF(DATAFILE) THEN $BEGIN &GOTOXY(0,4); &WRITE('Record ',RECNUM,' not in file.'); $END "ELSE $BEGIN &VALIDATE(DATAFILE^); &SHOWREC(DATAFILE^);  EN0); &WRITELN(CHR(7),'UNABLE TO EXTEND FILE, NO DATA WRITTEN'); &WRITELN('Use Filer K(runch command to make space after file.'); $END; "LASTCHANGE:=TRUE;  END; "   PROCEDURE VIEW;  BEGIN "(*$I-*) "REPEAT $PROMPTAT(2,'View which record ? '); EOF(DATAFILE) THEN (* EXTENDING FILE *) ZEROREC(DATAFILE^); "VALIDATE(DATAFILE^); "SHOWREC(DATAFILE^); "CHANGEREC(DATAFILE^); "SEEK(DATAFILE,RECNUM); "(*$I-*) "PUT(DATAFILE);  (*$I+*) "IF (IORESULT<>0) OR EOF(DATAFILE) THEN $BEGIN &GOTOXY(0,2IL SUCESSFUL; "(*$I+*) "RECNUM:=-1;  LASTCHANGE:=FALSE;  END;    PROCEDURE CHANGE;  BEGIN "(*$I-*) "REPEAT $PROMPTAT(2,'Change which record ? '); $READLN(RECNUM); "UNTIL IORESULT=0; "(*$I+*) "SEEK(DATAFILE,RECNUM); "GET(DATAFILE); "IF0(* INITIALIZE CONTENTS OF FILE *) 0FOR IREC:=0 TO MAXREC DO 2BEGIN 4SEEK(DATAFILE,IREC); 4PUT(DATAFILE); 2END; 0CLOSE(DATAFILE,LOCK); (* LOCK IT IN PLACE *) 0RESET(DATAFILE,FILENAME); . SUCESSFUL := (IORESULT = 0); .END; & END; &END; "UNT,READLN(MAXREC); ,SEEK(DATAFILE,MAXREC); ,ZEROREC(DATAFILE^); ,(*$I-*) ,PUT(DATAFILE); ,(*$I+*) ,IF (IORESULT<>0) OR EOF(DATAFILE) THEN .BEGIN 0PROMPTAT(14,'Not enough room. Press return '); 0READLN; 0SUCESSFUL:=FALSE; .END ,ELSE .BEGIN ; (* TRY TO OPEN AN OLD FILE *) $SUCESSFUL := (IORESULT=0); $IF NOT SUCESSFUL THEN (* START A NEW FILE? *) &BEGIN (PROMPTAT(10,'Start a new file ? '); (IF YES THEN *BEGIN ,REWRITE(DATAFILE,FILENAME); ,PROMPTAT(12,'Reserve how many records ? '); CESSFUL: BOOLEAN; $FILENAME: STRING[30];  IREC,MAXREC: INTEGER;  BEGIN "CLOSE(DATAFILE,LOCK); (* IN CASE IT'S ALREADY OPEN *) "(*$I-*) "REPEAT $GOTOXY(0,1); CRT(ERASEOS); $PROMPTAT(8,'File Name: '); READLN(FILENAME); $RESET(DATAFILE,FILENAME)&WRITE('Street: '); GETSTRING(STREET,STREETLEN); WRITELN; &WRITE('City & State: '); GETSTRING(CITYSTATE,CITYLEN); WRITELN; &WRITE('Telephone: '); GETSTRING(TEL,TELELEN); WRITELN; #END;  END; (* CHANGEREC *) " "  PROCEDURE NEWFILE;  VAR SUERASEOS); "PROMPTAT(12,'(Press return for no change)'); "WITH REC DO $BEGIN &GOTOXY(0,14); &WRITE('Name: '); GETSTRING(NAME,NAMELEN); WRITELN; &WRITE('Company: '); GETSTRING(COMPANY,COMPLEN); WRITELN; 'N','n': NEXT; &'F','f': NEWFILE; &'V','v': VIEW; &'C','c': CHANGE; $END; "UNTIL CH IN ['Q','q']; " "CLOSE(DATAFILE,LOCK);  PROMPTAT(12,'THAT''S ALL FOLKS...');  END.   N^EEDLN; "WRITECHARS; "YOUTOO; "CIRCLE; "TEXTMODE; "WRITELN('THAT''S ALL FOLKS...');  END.   ; WSTRING('ANYWHERE'); "CHARTYPE(6); (* XOR *) "TURNTO(180); "FOR I:=1 TO 300 DO $BEGIN &MOVETO(140,92); &MOVE(85); &TURN(-6); &WCHAR(CHR(1)); $END;  READLN;  END; " "  BEGIN; (* MAIN PROGRAM *) "WRITELN('PRESS RETURN FOR MORE...'); "REA&TURN(-89); $END; "BOXSTRING(20,92,'YOU TOO CAN MIX TEXT AND GRAPHICS'); "READLN;  END; "   PROCEDURE CIRCLE;  VAR I: INTEGER;  BEGIN "INITTURTLE; "MOVETO(119,104); WSTRING('POSITION'); "MOVETO(112,92); WSTRING('CHARACTERS'); "MOVETO(119,80)80-VERT*10); &FOR HORIZ:=0 TO 39 DO (BEGIN *WCHAR(CHR(ASCII)); *ASCII:=(ASCII+1) MOD 128; (END; " END; "READLN;  END;  " "  PROCEDURE YOUTOO;  VAR I: INTEGER;  BEGIN "INITTURTLE; "PENCOLOR(WHITE); "FOR I:=1 TO 300 DO $BEGIN &MOVE(I); ITE); MOVETO(L,T); "MOVETO(R,T); MOVETO(R,B); MOVETO(L,B); "PENCOLOR(NONE); MOVETO(L+3,B+2); "WSTRING(S);  END;    PROCEDURE WRITECHARS;  VAR HORIZ,VERT,ASCII: INTEGER;  BEGIN "INITTURTLE; "ASCII:=0; "FOR VERT:=0 TO 18 DO $BEGIN &MOVETO(0,1*****************************)  VAR L,R,B,T: INTEGER;  BEGIN "PENCOLOR(NONE); MOVETO(X,Y); "L:=X-3; R:=X+2+7*LENGTH(S); "B:=Y-2; T:=Y+10; "VIEWPORT(L,R,B,T); "FILLSCREEN(BLACK); "VIEWPORT(0,279,0,191);  PENCOLOR(NONE); MOVETO(L,B); "PENCOLOR(WH  PROGRAM GRAFCHARS;   USES TURTLEGRAPHICS;   PROCEDURE BOXSTRING(X,Y: INTEGER; S: STRING);  (********************************)  (* *)  (* WRITE A STRING IN ERASED BOX *)  (* *)  (***N^f"TURNTO(45); $FOR I:=-19 TO 27 DO &BEGIN (PENCOLOR(NONE); (MOVETO(I*10,0); (PENCOLOR(WHITE); (MOVE(500); &END; $WAIT(2000); ERASE;  END;  $  PROCEDURE SPIRAL;  BEGIN "PENCOLOR(NONE); MOVETO(XMID,YMID); "TURNTO(0); PENCOLOR(RANDCOLOR); "FOIZONTAL LINES *) "FOR I:=18 DOWNTO 1 DO $BEGIN &PENCOLOR(NONE); &MOVETO(0,I*10); &PENCOLOR(WHITE); &MOVETO(XMAX,I*10); $END; "WAIT(2000); "FILLSCREEN(REVERSE); "FILLSCREEN(REVERSE); "WAIT(2000); ERASE;  END;  " PROCEDURE DIAGONALS;  BEGIN ); /END -ELSE FILLSCREEN(REVERSE); $END; "WAIT(3000); ERASE;  END;  "  PROCEDURE GRID;  BEGIN "(* DRAW VERTICAL LINES *) "FOR I:=1 TO 27 DO $BEGIN &PENCOLOR(NONE); &MOVETO(I*10,YMAX); &PENCOLOR(WHITE); &MOVETO(I*10,0); $END; "(* DRAW HOR; &IF I=2 THEN /BEGIN 1PENCOLOR(NONE); 1MOVETO(SKIP,SKIP); 1PENCOLOR(WHITE); 1MOVETO(SKIP,YMAX-SKIP); 1MOVETO(XMAX-SKIP,YMAX-SKIP); 1MOVETO(XMAX-SKIP,SKIP); 1MOVETO(SKIP,SKIP); 1VIEWPORT(SKIP+1,XMAX-SKIP-1,SKIP+1,YMAX-SKIP-1); 1FILLSCREEN(BLACK(TURNTO(5*I); MOVE(400); &END; "WAIT(2000); "IF KEYPRESS THEN GOODBYE; "FILLSCREEN(REVERSE); "FILLSCREEN(REVERSE); " "FOR I:=0 TO 4 DO $BEGIN &SKIP:=I*15; &(* USE VIEWPORT TO SPECIFY PORTION OF SCREEN *) &VIEWPORT(SKIP,XMAX-SKIP,SKIP,YMAX-SKIP)EEN(BLACK);  END;    FUNCTION RANDCOLOR: SCREENCOLOR;  BEGIN "RANDCOLOR:=COLORS[RANDOM MOD 6];  END; " "  PROCEDURE FAN;  BEGIN "FOR J:=1 TO 3 DO $FOR I:=17 DOWNTO 1 DO &BEGIN (PENCOLOR(NONE); MOVETO(0,0); (PENCOLOR(REVERSE);  BEGIN "TEXTMODE; "READ(KEYBOARD,CH); "WRITELN; "WRITELN('THAT''S ALL FOLKS...'); "EXIT(PROGRAM);  END;  "  PROCEDURE ERASE;  BEGIN "IF KEYPRESS THEN GOODBYE; "VIEWPORT(0,XMAX,0,YMAX); "FRAME(WHITE); "VIEWPORT(1,XMAX-1,1,YMAX-1); "FILLSCROR DELAY:=1 TO TIME DO;  END;    PROCEDURE FRAME(COLOR: SCREENCOLOR);  BEGIN "PENCOLOR(NONE); MOVETO(0,0); "PENCOLOR(COLOR); "MOVETO(0,YMAX); MOVETO(XMAX,YMAX); "MOVETO(XMAX,0); MOVETO(0,0);  PENCOLOR(NONE);  END;    PROCEDURE GOODBYE; TYPE PICTURE=PACKED ARRAY[0..53,0..120] OF BOOLEAN;   VAR I,J,K,SKIP,ROW: INTEGER; $CH: CHAR;  COLORS: ARRAY[0..5] OF SCREENCOLOR;  BUTTER: PICTURE;  BIT: BOOLEAN;    PROCEDURE WAIT(TIME:INTEGER);  VAR DELAY: INTEGER;  BEGIN "F *)  (***************************************************************)   USES TURTLEGRAPHICS,APPLESTUFF;   CONST XMAX=279; &YMAX=191; &XMID=140; &YMID=96; & ANSWER SOME OF YOUR QUESTIONS. *)  (* *)  (* MANY THANKS TO THE FINE TEAM AT UCSD. *)  (* ENJOY YOUR NEW PASCAL SYSTEM. BILL ATKINSON, MAY 5 1979 *)  (* SHOWING THE USE OF *)  (* ROUTINES IN TURTLEGRAPHICS AND APPLESTUFF UNITS. *)  (* *)  (* IT DOES HAVE A DESCRIPTION OF DRAWBLOCK TOWARD THE END. *)  (* I HOPE IT HELPS TO  (*$S+*) (* USE SWAPPING OPTION FOR LARGE PROGRAMS *)   PROGRAM GRAFDEMO;  (***************************************************************)  (* *)  (* THIS IS A HURRIDLY-WRITTEN EXAMPLE R I:=1 TO 300 DO $BEGIN &MOVE(I); &TURN(-45); $END; "WAIT(2000); ERASE;  END;  $  PROCEDURE SQUIGGLE;  BEGIN "PENCOLOR(NONE); MOVETO(XMID,YMID); "PENCOLOR(WHITE); "REPEAT $TURN((RANDOM MOD 90)-60); $MOVE(3); "UNTIL (TURTLEX>XMAX) OR (TURTLEX<0) OR (TURTLEY<0) OR (TURTLEY>YMAX); "ERASE;  END;  $  PROCEDURE WALLBUMP;  BEGIN "PENCOLOR(NONE); MOVETO(XMID,YMID); "PENCOLOR(WHITE); "I:=0; "WHILE I<40 DO $BEGIN &IF (TURTLEX>XMAX) )OR (TURTLEX<0) )OR (TURTLEY>YMAX) )OR (TURTLEY<0) ) STUFF(BUTTER,'XXX X I XX** **** ***** * XX ');  STUFF(BUTTER,' X X II XX **** ** ** * * *** ***** X ');  STUFF(BUTTER,' X X II XX ******** *** ** ***** **** XX ');  STUFF(BUTTER,'UTTER,'XXX XX** * ****** X ');  STUFF(BUTTER,' X XX*** ***** XX ');  STUFF(BUTTER,' XXI XX *** *** *** X '); ');  STUFF(BUTTER,' X X--- - **** XX ');  STUFF(BUTTER,' X* --- - ***** X ');  STUFF(BUTTER,' X ** ****** XX ');  STUFF(B ****XX ');  STUFF(BUTTER,' X X ----- --- --- **** X ');  STUFF(BUTTER,' X X ---------------- - ***XX ');  STUFF(BUTTER,' X X----- --- --- - ** * X  STUFF(BUTTER,' X XX ----- ----- - * * XX ');  STUFF(BUTTER,'X XXX ------ ---- ** XX ');  END;   PROCEDURE BUTTER2;  BEGIN  STUFF(BUTTER,' X X --- ------------ --- * * X ');  STUFF(BUTTER,' X XXXX ---------- *** XX ');  STUFF(BUTTER,' X XXX -- --------- -- *** XX '); XXXX ---- XX ');  STUFF(BUTTER,' XXX XXXXX --- * X ');  STUFF(BUTTER,' XX XXXXX --- ** XX ');  STUFF(BUTTER,' X XXXX X XXXXXX X ');  STUFF(BUTTER,'XX XXXXXXX *X ');  STUFF(BUTTER,' XX XXXXXX ----- * X ');  STUFF(BUTTER,' X X X STUFF(BUTTER,' XX XXXXXXX X ');  STUFF(BUTTER,' XX XXXXXXX X ');  STUFF(BUTTER,' X XXXXXXX X ');  STUFF(BUTTER,'BUTTER,' XX XXXXXXXXXXX ');  STUFF(BUTTER,' XXX XXXXXXXXXXXXXXXXXXXXX ');  STUFF(BUTTER,' XXXXXXXXXXXXXXXX XXXXXXXXX XX '); ITMAP FORM STRINGS *)  VAR J: INTEGER;  BEGIN "FOR J:=1 TO LENGTH(S) DO $BEGIN &BIT:=(S[J]<>' '); &BITMAP[ROW,J+59]:=BIT; " BITMAP[ROW,60-J]:=BIT; (* SYMMETRIC *) $END; "ROW:=ROW-1;  END;  "  PROCEDURE BUTTER1;  BEGIN "ROW:=53;  STUFF(E); "FOR I:=1 TO 40 DO $BEGIN &MOVETO((RANDOM MOD 400)-50,(RANDOM MOD 300)-50); &TURNTO(0); &POLYGON((RANDOM MOD 9)+3,(RANDOM MOD 40)+5); $END; "WAIT(4000); ERASE;  END;    PROCEDURE STUFF(VAR BITMAP: PICTURE; S:STRING);  (* MAKE BUTTERFLY B"(* SKIP POLYGONS WHICH DON'T CLOSE ALL THE WAY *) "IF (ANG*SIDES)<>360 THEN EXIT(POLYGON); "PENCOLOR(WHITE);  FOR I:=1 TO SIDES DO $BEGIN &MOVE(EDGE); &TURN(-ANG); $END; "PENCOLOR(NONE);  END; "   PROCEDURE POLYGONS;  BEGIN "PENCOLOR(NONTHEN BEGIN ) TURN(180); & PENCOLOR(RANDCOLOR); . I:=I+1; .END &ELSE TURN((RANDOM MOD 45)-22); &MOVE(10); $END; "ERASE;  END;  "  PROCEDURE POLYGON(SIDES,EDGE: INTEGER);  VAR I,ANG: INTEGER;  BEGIN "ANG:=360 DIV SIDES; X X I I IXX* ************ ***** ** X ');  STUFF(BUTTER,'XXXX X II I XX ***** ****** ***** XX ');  STUFF(BUTTER,' X X I I I XX ****** **** XX ');  END;    PROCEDURE BUTTER3;  BEGIN  STUFF(BUTTER,' X X III IIIIXXX *** XX ');  STUFF(BUTTER,' X X I I I II XXX XX ');  STUFF(BUTTER,'XXXX X III I II XXXX XX ');  STUF (* I TRUE I FALSE I I *)  (* I---------------I---------------I---------------I *)  (* I TRUE I TRUE I MSB MODE I *)  (* I------)  (* I---------------I---------------I---------------I *)  (* I FALSE I TRUE I I *)  (* I---------------I---------------I---------------I *) *)  (* CURRENT SCREEN SOURCE RESULTANT SCREEN *)  (* I---------------I---------------I---------------I *)  (* I FALSE I FALSE I LSB MODE I * *)  (* *)  (* MODE RANGES 0..15 TO FILL IN THE FOLLOWING TRUTH TABLE: *)  (*  (* 6. HEIGHT IN DOTS *)  (* 7. XSCREEN WHERE TO PUT IT ON THE HIRES SCREEN (0..279) *)  (* 8. YSCREEN " " (0..191) *)  (* 9. MODE BEFORE TRANSFERING *)  (* 4. YSKIP HOW MANY ROWS TO SKIP *)  (* 5. WIDTH IN DOTS *) RS TO DRAWBLOCK ARE: *)  (* 1. SOURCE ARRAY NAME *)  (* 2. ROWSIZE IN BYTES 2*(( DOTSWIDE+15 ) DIV 16 ) *)  (* 3. XSKIP HOW MANY DOTS TO SKIP ROCEDURE INITBUTTERFLY;  BEGIN "BUTTER1; "BUTTER2; "BUTTER3;  BUTTER4;  END;   (************************************************************************)  (* *)  (* PARAMETE STUFF(BUTTER,' XXXXXIII X ');  STUFF(BUTTER,' X X ');  STUFF(BUTTER,' XX ');  END;    PUTTER,' X I I 00 III X ');  STUFF(BUTTER,' X IIII I X ');  STUFF(BUTTER,' X I I XXXX '); ');  STUFF(BUTTER,' X X I 0 I 00 I 00 I X ');  STUFF(BUTTER,' X X I 0 I I I X ');  STUFF(BUTTER,'X X I I 0 I I X ');  STUFF(BXXXX X X I I I 00 I IX ');  STUFF(BUTTER,' X XX I I 0 I 00 I I X ');  END;   PROCEDURE BUTTER4;  BEGIN  STUFF(BUTTER,'XXX X I I 000 I II X  STUFF(BUTTER,'XXXXXX X I III I II 0 I X ');  STUFF(BUTTER,' X X X II I III II 0 I X ');  STUFF(BUTTER,' X X X II I I 00 II 0 I X ');  STUFF(BUTTER,'F(BUTTER,' XX X I I I 0 I XXXXXXXXX ');  STUFF(BUTTER,' XX X II I 00 I X XXXX ');  STUFF(BUTTER,' XX X I I II 000 I X '); ---------I---------------I---------------I *)  (* *)  (* FOR EXAMPLE, MODE 0=FILL BLACK, 10=COPY SOURCE, 14=OR, 6=XOR, ETC. *)  (* *)  (************************************************************************)    PROCEDURE FLUTTER;  BEGIN "(* DRAW SIX BUTTERFLIES *) "DRAWBLOCK(BUTTER,16,0,0,120,54, 10, 0,14); "DRAWBLOCK(BUTTER,16,0,0,120,54,150, 64,1D[0]:=126; (* LEAD-IN *) "SEND[1]:=17; (* DC1 *) "IF X<30 THEN SEND[2]:=X+96 +ELSE SEND[2]:=X; "SEND[3]:=Y+96; "UNITWRITE(2,SEND,4);  END;   BEGIN (* DUMMY MAIN *)  END.  (*$U-*)  PROGRAM GOXY;   PROCEDURE FGOTOXY(X,Y:INTEGER);   (* HAZELTINE 1500 AND 1510 GOTOXY *)   VAR SEND: PACKED ARRAY[0..3] OF 0..255; $  BEGIN "IF X>79 THEN X:=79 "ELSE IF X<0 THEN X:=0; "IF Y>23 THEN Y:=23 "ELSE IF Y<0 THEN Y:=0; "SENO^ӟӟCODEe3RTEXTׯ Z ~ ]P ?~ KL$7?.ת.ׯۓ2Save as . ND.  " " "  ; "COLORS[0]:=WHITE; "COLORS[1]:=REVERSE; "COLORS[2]:=GREEN; "COLORS[3]:=VIOLET; "COLORS[4]:=ORANGE; "COLORS[5]:=BLUE; " "REPEAT $FAN; $GRID; $SPIRAL; $SQUIGGLE; $DIAGONALS; $WALLBUMP; " POLYGONS; $FLUTTER; "UNTIL KEYPRESS; "GOODBYE;  ERAWBLOCK(BUTTER,16,0,0,120,54, 10, 64, 6); "DRAWBLOCK(BUTTER,16,0,0,120,54,150, 0, 6);  END;    BEGIN "WRITELN('PRESS ANY KEY TO QUIT.'); "WRITELN('PLEASE WAIT WHILE CREATING BUTTERFLY'); "INITBUTTERFLY; "INITTURTLE; "FRAME(WHITE); "RANDOMIZE"FILLSCREEN(REVERSE); "(* USE XOR MODE TO REMOVE ONE AT A TIME *) "DRAWBLOCK(BUTTER,16,0,0,120,54, 10, 0, 6); "DRAWBLOCK(BUTTER,16,0,0,120,54,150, 64, 6); "DRAWBLOCK(BUTTER,16,0,0,120,54, 10,128, 6); "DRAWBLOCK(BUTTER,16,0,0,120,54,150,128, 6); "D4); "DRAWBLOCK(BUTTER,16,0,0,120,54, 10,128,14); "DRAWBLOCK(BUTTER,16,0,0,120,54,150,128,14); "DRAWBLOCK(BUTTER,16,0,0,120,54, 10, 64,14); "DRAWBLOCK(BUTTER,16,0,0,120,54,150, 0,14); "WAIT(8000); FILLSCREEN(REVERSE); WAIT(3000); O^2Eon system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed  ^  PASCALSYSETUP NUMBER2 NUMBER3 NUMBER4 NUMBER5 NUMBER6 NUMBER7 NUMBER8 NUMBER9 INITS TEACHSET " MOVETO(140-DELTA,96-DELTA); $PENCOLOR(WHITE); " HIL(ORDER); " (* WAIT FOR KEYSTROKE,THEN SWITCH TO TEXT *)  READ(KEYBOARD,CH); TEXTMODE; "UNTIL FALSE;  END.   &BEGIN (WRITELN('THAT''S ALL FOLKS...'); (EXIT(PROGRAM); &END; " INITTURTLE; $DELTA:=2; " (* CALC STARTING X,Y AND SIZE *) " FOR N:=2 TO ORDER DO DELTA:=DELTA*2; " DELTA:=DELTA-1; " SIZE:=190 DIV DELTA; " DELTA:=(DELTA*SIZE) DIV 2; END; $HIL1; HIL2; HIL1; "END;  END; (* HIL *)   BEGIN (* MAIN PROGRAM *) "WRITELN('WELCOME TO HILBERT'); "WRITELN('ENTER ORDER 0 TO QUIT.'); "REPEAT (* FOR EACH ORDER *) " WRITE('ORDER: '); READLN(ORDER); " IF (ORDER < 1) OR (ORDER > 7) THEN ; "BEGIN $MOVE(SIZE); $HIL(B); $TURN(-A); MOVE(SIZE); TURN(-A); $HIL(B); $MOVE(SIZE); "END; (* HIL2 *) "  BEGIN (* HIL *) "IF I=0 THEN TURN(180) "ELSE "BEGIN $IF I>0 THEN $ BEGIN & A:=90; B:=I-1; $ END $ELSE BEGIN &A:=-90; B:=I+1; $  PROGRAM HILBERT;   USES TURTLEGRAPHICS;   VAR SIZE,DELTA,N: INTEGER; $ORDER: INTEGER; $CH: CHAR; $  PROCEDURE HIL(I:INTEGER);  VAR A,B: INTEGER; " "PROCEDURE HIL1; "BEGIN $TURN(A); HIL(-B); TURN(A); "END; (* HIL1 *) " "PROCEDURE HIL2, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removedتo צNULצSOHצSTXצETXצEOTצENQצACKצBELצBSHTצLFVTצFFCRצSOSIצDLEצDC1צDC2צDC3צDC4צNAKצSYNצETBצCANצEMSUBESC, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=, on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,on system disk for nowN*SYSTEM.WRK.TEXT'N8 d&..TEXT&!Lost workfile! Y*..CODEPOld code removed, Text  and N*SYSTEM.WRK.CODE'N8 d..CODELost workfile! Code  file saved  ~=,FSצGSRSצUSSPتP+ +(++!T&ڪP. (á  WW--̀ƀצENTER ƀVƀ/̀ʀPʀʀٚʀؚʀʀʀʀW.W.PتP,+,---ٚ-P-,-V6TFTRUE׮FALSE׮ HAS CLOCK HAS 8510AHAS LOWER CASEצHAS RANDOM CURSOR ADDRESSINGHAS SLOW TERMINALSTUDENTQF// CTER 84צ$WILL ECHO ON THE SCREEN THE SEQUENCECHARAQFCTER׮$AND WILL BE UNDERSTOOD AS THE STRING׮צ& "CHARACTER". WHEN YOU ACCESS A FIELD,$YOU WILL BE SHOWN ITS CURRENT VALUE.׮צ&NUMBERS AELETE YOUR RESPONSE( /צ%TO A QUESTION CHARACTER BY CHARACTER,צ(ECHOING EACH CHARACTER AS IT IS DELETED.%THE ECHOED DELETED CHARACTERS WILL BE׮(ENCLOSED IN ANGLE BRACKETS. FOR EXAMPLE,׮צ!TYPING THE SEQUENCE OF CHARACTERSCHARAצ%THE LINE DELETE CHARACTER, "*" ALLOWS(<(YOU TO DELETE A RESPONSE YOU GAVE IF YOU׮צ'HAVE NOT YET TYPED CR. CR WILL BE SENTצ'TO THE TERMINAL AND YOU WILL BE ABLE TOצ'START OVER ON A NEW LINE. THE BACKSPACEצ(CHARACTER, "*" WILL D TO MOST REQUESTS FOR"INPUT AND WILL ESCAPE YOU FROM THE׮צ(SEQUENCE WHICH ASKED THE QUESTION, E.G.,(WHEN CHANGING A VALUE, TYPING "*" TO THEת( !"PROMPT "NEW VALUE" WILL ESCAPE THE׮צ"CHANGE WITHOUT ALTERING THE VALUE.Y*NFO׮צ&IN ORDER FOR THE CHANGES YOU HAVE MADETO BE LOADED AT BOOTSTRAP TIME.׮T צ"ALL NON-PRINTING CHARACTERS EXCEPT&CARRIAGE RETURN (CR) WILL ECHO AS "?".׮צ&THE INPUT ABORT CHARACTER, "*", CAN BE(!צ&TYPED IN RESPONSEGOTOXY IN THE OPERATING׮צ(SYSTEM. SEE SECTION 4.7 OF THE DOCUMENT.Eצ#NOTE: DISK UPDATES CREATE THE FILE:צ NEW.MISCINFOצ(ON YOUR DISK. THE NAME OF THIS FILE MUSTBE CHANGED USING THE FILER TO: ׮ SYSTEM.MISCIتPR צ'IF YOU HAVE A VIDEO TERMINAL AND EXPECTצ&TO USE THE SCREEN ORIENTED EDITOR, THE%CHANGES SETUP CAN MAKE WILL BE NOT BE׮'SUFFICIENT. YOU WILL ALSO HAVE TO BIND׮(IN THE PROCEDURE ٤٤צ INITIALIZING  TE x^04 , GHT(צKEY TO END FILE)צ KEY FOR FLUSH)צ KEY FOR BREAK*צ KEY FOR STOP*NON-PRINTING CHARACTER+צKEY TO DELETE LINE,EDITOR "ESCAPE" KEY,LEAD-IN CHAR FROM KEYBOARD-צEDITOR "ACCEPT" KEY-צKEY TO DELETE CHARACTER+צVERTICAL MOVE DELAY"  /ڢתPڢ/ + +צ +צ L@æINITS ث /ȡSOR UP'KEY TO MOVE CURSOR DOWN'KEY TO MOVE CURSOR LEFT(KEY TO MOVE CURSOR RIGHT(צKEY TO END FILE)צ KEY FOR FLUSH)צ KEY FOR BREAK*צ KEY FOR STOP*NON-PRINTING CHARACTER+צKEY TO DELETE LINE,EDITOR "ESCAPE" KN HEIGHT%צ SCREEN WIDTH&LEAD-IN TO SCREENMOVE CURSOR HOMEצERASE TO END OF SCREEN ERASE TO END OF LINE צMOVE CURSOR RIGHT!צMOVE CURSOR UP! BACKSPACE" ERASE LINE#צ ERASE SCREEN#KEY TO MOVE CURKEY FOR BREAK]/PREFIXED[KEY FOR FLUSH]/PREFIXED[KEY TO END FILE]/ PREFIXED[EDITOR 'ESCAPE' KEY]/ PREFIXED[KEY TO DELETE LINE]/ צ!PREFIXED[KEY TO DELETE CHARACTER]/ צPREFIXED[EDITOR "ACCEPT" KEY]/ צ SCREE]$צ%PREFIXED[KEY FOR MOVING CURSOR RIGHT]/צ$PREFIXED[KEY FOR MOVING CURSOR LEFT]/"PREFIXED[KEY FOR MOVING CURSOR UP]/צ$PREFIXED[KEY FOR MOVING CURSOR DOWN]/ PREFIXED[NON-PRINTING CHARACTER]/צPREFIXED[KEY FOR STOP]/PREFIXED[PREFIXED[MOVE CURSOR UP]$צPREFIXED[MOVE CURSOR RIGHT]$צPREFIXED[ERASE TO END OF LINE]$ PREFIXED[ERASE TO END OF SCREEN]$צPREFIXED[MOVE CURSOR HOME]$PREFIXED[DELETE CHARACTER]$צPREFIXED[ERASE SCREEN]$PREFIXED[ERASE LINERE GIVEN IN OCTAL, DECIMAL OR'HEXADECIMAL RADIX, CHARACTERS ARE GIVEN׮&AS THEIR ASCII VALUE AS NUMBERS AND AS׮צ#THEIR ASCII MNEMONIC. BOOLEANS AREצ(EITHER TRUE OR FALSE. ENTER NUMBERS, OR(CHARACTERS AS THEIR ASCII NUMERIC VALUE,׮צACCORDING TO THE FORMAT:!->O-{OCTAL}-!׮צ! !'--DEFAULT----!----------->DIGIT--->(CR)׮"! ! ! ! ! !׮צ"!->H-{HEX}---! !->(-)-! !-DIGIT<-!! !׮צ!->D{DECIMAL}!Oצ$THE DEFAULT RADIXߡ 0 A  ₚ ȡ00 A  ōޡĄȄ  "INPUT VALUES IN THE DECIMAL RANGE: F 0  ( DO 6-á = C / ~D5 -á1 FFȡ    ɡ^@ ?b צ NEW VALUE: ܄ ȄBo!! o!  DELׯ !˄Ȅᚹ    ń ġ= ɡ  A ء!ɡ&o! o!DáצDEL (ٳ? C(ONTINUE) Q(UIT)CUN Vצ OCTAL DECIMAL HEXADECIMALء.ǀɡצ ASCII ɡ CONTROLɡ 1) ń ġT SYSTEM INITIALIZATIONצ"R(ETURN) TAKES YOU BACK INTO SETUPצ IF YOU'RE NOT DONEE(XIT) TERMINATES THIS PROGRAM"DMC ,R썡07RRENT SETUP ONצ$ DISK AS THE FILE "NEW.MISCINFO"צ! WHICH MUST BE CHANGED IN THE FILER TO "SYSTEM.MISCINFO"צ$M(EMORY) UPDATE CHANGES THE SETUP INצ! MEMORY UNTIL THE NEX ڂ6NƁ.`צ QUIT: D(ISK) OR M(EMORY) UPDATE,צ R(ETURN) H(ELP) E(XIT) *NEW.MISCINFO٥`_/_́ʁȡ__'D(ISK) UPDATE PUTS THE CU  ?P#QP꿹!ááE %T "ڪPP-תP---<. LتP  ˡ-ڕڕ   aA!áHڦתP /ۄ ><áצPצ<>/áQšHۓ<?IتPٓצ BUG LOCATION צ'PLEASE WRITE DOWN THIS LOCATION AND ANY&SUPPORTING DETAILS YOU CAN, AND REPORT$IT TO THE UCSD SUPPORT STAFF AT YOUREARLIEST CONVENIENCERBACKSPACE'צ(CHARACTER WILL BE ECHOED TO THE TERMINAL"WHEN THE 'KEY TO DELETE CHARACTER'׮צ IS TYPED.   .d< L d  OR THAT CHARACTER,׮&JUST TYPE IT IN (AND CR). BOOLEANS ARE׮צ!INPUT BY TYPING "TRUE" OR "FALSE"צ (AND CR). FOR MORE INFORMATION,$PLEASE SEE THE SYSTEM DOCUMENTATION.׮z צ"HINTS ON DEALING WITH BACKSPACING:'THE 'KEY TO DELETE CHARACTER' SHOULD BE׮(SET TO THE KEY YOU WISH TO TYPE TO CAUSE׮צA BACKSPACE. THE ' STARTS AS DECIMAL.$NON-PRINTING CHARACTERS MAY BE INPUT׮צ'BY TYPING THE KEY WHICH GENERATES THEIRצ&VALUE (FOLLOWED BY CR) OR, IF THERE IS%AN ASCII MNEMONIC FOR THAT CHARACTER,׮&JUST TYPE IT IN (AND CR). BOOLEANS ARE׮צ!INPUT BY TYPING "TR ..  IN THE FORMAT BELOW:צ!->O-{OCTAL}-!צ! !צ'--DEFAULT----!----------->DIGIT--->(CR)"! ! ! ! ! !"!->H-{HEX}---! !->(-)-! !-DIGIT<-!! !!->D{DECIMAL}!ڡצ OR IF YOUR KEYBOARD CAN GENERATEצ%THE VALUE YOU WANT, JUST TYPE THE KEY&AND THEN TYPE CARRIAGE RETURN, OR TYPE$THEO^ğEEAVE THIS PROGRAM,CT$ } "A6` ^6H*  "" B.:t4  צ(C(HANGE) ALLOWS YOU TO CHANGE OR EXAMINEצ& THE VARIOURMATIONצ' THE SYSTEM HAS ABOUT YOUR HARDWARE CONFIGURATION$T(EACH) TEACHES YOU HOW TO USE SETUP&Q(UIT) ALLOWS YOU TO MAKE YOUR CHANGES( PERMANENT AND TO LEAVE THIS PROGRAM,CT$ } "A6` ^6H*  "" B.:t4  צ(C(HANGE) ALLOWS YOU TO CHANGE OR EXAMINEצ& THE VARIOUS PIECES OF INFORMATIONצ' THE SYSTEM HAS ABOUT YOUR HARDWARE CONFIGURATION$T(EACH) TEACHES YOU HOW TO USE SETUP&Q(UIT) ALLOWS YOU TO MAKE YOUR CHANGES( PERMANENT AND TO LIfH 4 HS   Qá ,   צ"SETUP: C(HANGE T(EACH H(ELP Q(UIT צ[S.2]  צ(C(HANGE) ALLOWS YOU TO CHANGE OR EXAMINEצ& THE VARIOUצ RADIX FROM ;צOCTALDDECIMAL1צ HEXADECIMALYC6 / TO EITHER ^DECIMAL OR HEXADECIMALVOCTAL OR HEXADECIMAL6OCTAL OR DECIMAL H(ELP) Q(UIT)צ&S(INGLE) ALLOWS YOU TO EXAMINE 1 VALUEצ BY NAME'P(ROMPTED) TAKES YOU THROUGH ALL FIELDSצ(R(ADIX) ALLOWS YOU TO CHANGE THE ASSUMEDLD: [쓄Hצ DIDN'T FIND NAME OF FIELD: 쓡]R쓄<쓡4 FIELD NAME = آخLצ#CHANGE: S(INGLE) P(ROMPTED) R(ADIX) \ڪP.P.....O T : Tצ NEW VALUE: .썓!צ NEW VALUE:  썡׷خeJT |á á $NAME OF FIE 쓄 쓡 N썡쓡ۮ46X r˦ SHOWSCALARˡ˦ SHOWSCALARCURRENT VALUE IS ٢L lALLOWED VALUES ARE:צSHOWALLآá+_'Dɡ_ؑȡ#_*hȡ  (á 2ECIMAL5צNOW HEXADECIMALO> 3l: O(CT) D(EC) H(EX) Q(UIT)/ 'DO 5썡ġ ASCII MNEMONIC FOR THE CHARACTER C(ONTINUE)Cá &  쓡jWANT TO CHANGE THIS VALUE? (Y,N,!)YE@썡p | Gצ NOW OCTALL NOW D   PROGRAM TREE;   (**************************************)  (* *)  (* MAKE AND PLOT A SIMPLE BINARY TREE *)  (* (PROGRAM BY BILL ATKINSON) *)  (* *)  (***************N^ff$UNTIL KEYPRESS; $READ(KEYBOARD,CH); $TEXTMODE; "UNTIL FALSE;  END.  EAT WRITE('CHANGE: '); $READLN(CHANGE); UNTIL CHANGE >0; $REPEAT (* FOR EACH SPIRALLELOGRAM *) &DISTANCE:=10; &INITTURTLE; &PENCOLOR(WHITE); &WHILE DISTANCE < 250 DO NEXTLINE; $ FILLSCREEN(REVERSE); &FILLSCREEN(REVERSE); &ANGLE:=ANGLE+15; FOLKS...');  EXIT(PROGRAM);  END;    BEGIN (* MAIN PROGRAM *) "COL:=WHITE; "WRITELN('WELCOME TO WHILEPLOT'); "WRITELN('ENTER ANGLE 0 TO QUIT.'); "WRITELN; "REPEAT $WRITELN; WRITE('ANGLE: '); $READLN(ANGLE); $IF ANGLE=0 THEN GOODBYE; $REPN $BEGIN &IF COL=WHITE2 THEN COL:=WHITE 4ELSE COL:=SUCC(COL); & WHILE COL IN [BLACK,BLACK1,BLACK2,RADAR] & DO COL:=SUCC(COL); $END; "PENCOLOR(COL);  END; (* NEXTLINE *)  "  PROCEDURE GOODBYE;  BEGIN "TEXTMODE; "WRITELN; WRITELN('THAT''S ALL  PROGRAM SPIRODEMO;   USES TURTLEGRAPHICS,APPLESTUFF;   VAR "DISTANCE,ANGLE,CHANGE: INTEGER; "CH: CHAR; "COL: SCREENCOLOR; "  PROCEDURE NEXTLINE;  BEGIN "MOVE(DISTANCE); "TURN(ANGLE); "DISTANCE:=DISTANCE+CHANGE; "IF (DISTANCE MOD 40)=0 THE***********************)   USES TURTLEGRAPHICS;   CONST WORDLENGTH=6;  CONSOLE=1;   TYPE WORDSTRING=STRING[WORDLENGTH]; %NODEPTR=^NODE; %NODE=RECORD ,WORD: WORDSTRING; ,LEFTPTR,RIGHTPTR: NODEPTR; *END; *  VAR ROOT: NODEPTR; $S: STRING; $W: WORDSTRING; $DELTAY: ARRAY[0..4] OF INTEGER; $   PROCEDURE INSERTIT(W: WORDSTRING; VAR P: NODEPTR);  BEGIN "IF P=NIL THEN (* MAKE NEW NODE *) $BEGIN &NEW(P); &P^.LEFTPTR:=NIL; &P^.RIGHTPTR:=NIL; &P^.WORD:=W; $END "ELSE (* CHASE DOWN ө ө ө ӽ`Hh`Q꽌ɪɖν*Ͻ%ϙEΈ 꽌ɪ`8` Hh݌`  $(,048<@DHLPTX\`dhlptx|Հ؈䤨谴LјJ 8彐.mĿ"Š>?( X֮ˍL հ˩($8` Ґh Hǹxbhx Nb`8Ύa߽0|ϩHhHh ӈ ө ө ӘVYԦΝYԮaߝꪽԦ ө  Ͱ()I يJJJ(jǩF؅G(  ֈ k( F G  Wjee0 Ю $Ӱb4 xbdfbH dߩ`Ǚx kh k@(LYҭH͍h (ͥpi)ͥˤ˹HH(x h(`~Ȍ``,hhh )hJ¥jJJhhihhhJi֍hhhh b\8ſƅhx Щ&'H(f'ꮭ'eƍ8ƅб ĘHH`fߠ d߮D.   OT); $WRITELN; $WRITELN('THE WORDS IN ORDER ARE:'); $PRINTTREE(ROOT); $WRITELN; READLN; $INITTURTLE; MOVETO(0,170); $WSTRING('BINARY TREE:'); $MOVETO(0,96); $SHOWTREE(ROOT,0); " READLN; TEXTMODE; "UNTIL FALSE; (* TILL ZERO LENGTH EXIT *)  EN"DELTAY[2]:=12; "DELTAY[3]:=6; "DELTAY[4]:=3; " "REPEAT $WRITE('ENTER WORD: '); $UNITCLEAR(CONSOLE); (* NO TYPE-AHEAD *) $READLN(S); $IF LENGTH(S)=0 THEN GOODBYE; $IF LENGTH(S)<=WORDLENGTH THEN W:=S &ELSE W:=COPY(S,1,WORDLENGTH); $INSERTIT(W,ROY-DELTAY[LEVEL]); *SHOWTREE(P^.RIGHTPTR,LEVEL+1); $ END; $END;  END;    PROCEDURE GOODBYE;  BEGIN "TEXTMODE; "WRITELN; WRITELN('THAT''S ALL FOLKS...'); "EXIT(PROGRAM);  END;    BEGIN "ROOT:=NIL; "DELTAY[0]:=48; "DELTAY[1]:=24; &IF LEVEL>4 THEN WRITE(CHR(7)); (* BEEP *) &IF LEVEL<=4 THEN (BEGIN *PENCOLOR(NONE); MOVETO(X+44,Y+3); *PENCOLOR(WHITE); MOVETO(X+56,Y+DELTAY[LEVEL]); *SHOWTREE(P^.LEFTPTR,LEVEL+1); *PENCOLOR(NONE); MOVETO(X+44,Y-3); *PENCOLOR(WHITE); MOVETO(X+56,ETO(X,Y-5); MOVETO(X,Y); "PENCOLOR(NONE); MOVETO(X+2,Y-4); "WSTRING(W); MOVETO(X,Y);  END;     PROCEDURE SHOWTREE(P: NODEPTR; LEVEL: INTEGER);  VAR X,Y: INTEGER;  BEGIN "IF P<>NIL THEN $BEGIN &X:=TURTLEX; &Y:=TURTLEY; &BOXWORD(P^.WORD);&PRINTTREE(P^.RIGHTPTR); $END;  END;    PROCEDURE BOXWORD(W: WORDSTRING);  (* BEGIN AND END PEN AT LEFT OF BOX *)  VAR X,Y: INTEGER;  BEGIN "X:=TURTLEX; Y:=TURTLEY; "PENCOLOR(WHITE); MOVETO(X,Y+5); "MOVETO(X+44,Y+5); MOVETO(X+44,Y-5); "MOV TREE FURTHER *) $BEGIN &IF W>P^.WORD THEN INSERTIT(W,P^.RIGHTPTR); &IF WNIL THEN $BEGIN &PRINTTREE(P^.LEFTPTR); &WRITELN(P^.WORD); 8`Ί aՍxՍՍՍե>?Ռ8T8ՌWuՌvՠ ýI꽌ɪ꽌ɭ蠪ϮәVE]ӾV]H)]ӾV]ԙ)]ӾT]ԙ)]ӦΨ 8$hU>`ȅbSϭb߅83Ibߐibϐ8 (ֹH ֥ +ֹP b)*Ȫ`FG8`0($ p,&"VU>)Q>jj``P@J I*I `8Hh` 7HHH*L^F0 ِ9 aLgץ")j> LȱȱŎ۠RRLҍX LҍX PQȑLҍXX {XY  0LX QHPH PȱPP*Q+LҠ RhP*hQ+L 8Z[ 8Z[LѠP i tiuLTht i~i8~~X~YiTiUR,S-8^ȥ_ȥ\ȥ]\]^_VWlX  ƎRShh ~L2hhV~W\]XiXY~8傅~~8傅~8~~~=8Ƈ8񆅚ȥ񆅛⭲HHl0 3Lҥ8Ƈ8񆅈L@8(8 h h膀e ň8内e~l8吨L@ᤐ 0 8`hh ~ h0 >L~ 5L~lvLL/ RL R8L ~ hI=+ >L ~襈I= ƈ 5LȄHHLg ȱ~р~р %v HHLgҩHHLgҢh~E0~E~~~Ղ0L&L&h)~hh)h~L vhhh~hE0Ł~ŀ/1'0+!h~hh~hHHLyhHHLyҩ%vHHLyhh !THEN TO TYPE UNTIL USES 1UNIT 2VAR WHILE WITH WNTO END ELSE EXTERNAL5FOR FUNCTION FILE .FORWARD "GOTO IF IN )IMPLEMEN4INTERFAC3LABEL MOD 'NOT &OF OR (PROCEDURPACKED +PROGRAM !REPEAT RECORD -SET *SEGMENT ܅܅ȱՈƐ2i ȱȱȩȥȩȑȑH~H`'Pޱ[ޱݱ݄ޏޚޥ޺ޱ"AL߱ݱݱ@#AND 'ARRAY ,BEGIN CASE CONST DO DIV 'DO` ۑȑآL ّ 0 ;ܩJ;* ۠؈ȩؠ#в   :>BGڇښڢکڬh~hhhhhqq a{8 ȱ{a0:A[_ ؕԈqȱi`H$)A[hIH80(hI`i(8(hI`J) )i i`HH8(iPH D۠'(hH ۩ hhehLDۍ۠'O`J>L80 %,M8$LgLhhhhhhhhץHH` )`,10 )?ILڢY` l܅k܅lм`|H D۠ D۠'È B h`@ ֠ ֭0`+` ڥHH B MڥhhLDۦ ڐ`,10` ` ` ` ۤO`) 2 ֭0` ֹ)` ( `) $ HЄ ֹJ` MȽ`H ؠ H h`@`   ٢` َ` ֭`38 0P`8 0 DۥHH)> `0* x)` EHh`LL٠(MC3 `H ؠ h ~؍,,`lQ`) ũ Ȣ`JJJJ ϱ` $p0*O# =ؤ =آ`H ؠLf ֊H h ɢ)L ,10U0I ,109,c$0 A[ $P0Ji)jj%UIЂ )?LI@a Hb c0  hH ׎h$L hhh 靱`hhh(`hhhhhhRR8~S~^ȱ~_ȱ~\ȱ~]X i RHL4R~ȱRV~ 3~VWRTȱRURXȱRYRRR,S-LҠ8񚅆񚅇`ȱL8~ȥ~e~ȱ~e~8ƇƎ`3[[`3[[`\Z][ 8\Z][` 8\Z][ )`LL~~ e~~~&~m0@m1A@~@ȱ@`8倅`a偅a`bac`a@ȱ@  Ŋ勰HHH~ 9~H [HZH 奙HHHH ~ 6.&Ԛp5j՞ո!ғқ9z;]{}yҭyWWWWWWWWWWWWWWWW ҹHH`=`LLLLL)LHL&L)LLKLLLXLLXLLLhLhx hmDŽ І 51-Tl Xl Ɗgƈд** 6` Ș ~X)XYXHXHXe~XYLҍX~ 8倐~hrhsrHrHLgLэX~e~e~tu~LhththhLgh~hhe~~heH~HLyhhh~hhe~~he~Lyhrhshthu ULZh~hhh%H%~HLyh~hhhH~HLyhhIHIHLyҍXXhhQX0XŗiX`0\XE0XLXŖC?8XX&XeYei无8XYLҥXiXYL h~hhh~&Zȥ[Ze~Z[e[8\Z][LLg h~hZ~ȥ[~Lg ë  q7 "ˡ,8 )á á áWˡ á Dš 4áÄ (צPress CONTROL-RESETGb Íáɡ 럚肚X  ššƁƂ6&06ˡ6áƁ8:9" &8(2ȡ3'*3 ?3 2-bi ö A(7ȡ &ǀǏȡ &6!0ACOPYRIGHT 1979,1980,1983 APPLE COMPUTER, INC. ALL RIGHTS RESERVEDH8(TD z(PASCALSYUSERPROGFIOPRIMSPRINTERRINITIALIGETCMD FILEPROC ? vXL<LLvL   UFifhLߠ Uhhh~hXYhL߱~р~iL"L&Lhh߅߅h~h~߅~߅~рyҦpHHLy @hhHHHHhhhhLޥ)L8内凅Lޥ) fj~) fj8~ޅޅHHHH9߅9߅HH~ HHHiHLyҩHHLyҩHHL?Ƃ~eʥƂFHHLyҍX hh&ŎLg0eeƎLgҥ8包Ŏ 8吪8吪ƌLghh&eȹȹp)1)fjjj)?~Ōe~9 pHHLi ~&&hhȱI%~I%ȥLyhhh heȄ Ȅ~l Oܦ8e h9 0 ʚLy Oܦņ hI9ʚLy Oņ0 hʚLy҅~i ץheheHHLgҍXXhh &heheHHHHeHHLZhhhhhhȱ80 iff =ޅ=HHLyh~hhhhh ޅ%~~ޅ%80~~\ȥ\ȥ^\ȥ_\\^]_8\Z][LѥXeXYLҥ~i~H~HL'hrhshthuXs&trȑtLgҠrrtLڱrtLgL Һ~~LLyҠ UhehheiHHLgҠ UhehheiHHLghh Uѥi h&LۥhhhE0Ń)ŀ!0E0~łLyLѥ^~_~`~Xȱ~Y`~ȱ~~LS K٥XYXYXXYL K٥XYXYX悥q~m\8傅\]\)\]H\H0 X\\8\]HHLyҺHHLנnoLѥIiIi攥IiIiƔ8吥呰 ` of"f fofn8no8&&`ffofn&&`hhhh إIiIiHHLyhhhh إHHLyh~hh~h~Zȱ~[&'LgҩlLhh0HHLyҨIiIiHHLyh~hhhe~eHHLyhIihIiHHLyh~hhh8~HHLyҩonff nenoeofofnff`hh0 hhLhh"IiIiIiIi ץ vJ& "ˡ  J    00áQP 0á0 é000+-Í-ë0zY 000á'5á 0z00 rT\  ɡ'áצ-32768 ^ 逫-ġ>o00ńáë  ÄÄȄĄMȄtiȡF ōɍ ō ȍ  dč "쓡ë&ȡ 4& t&$&F'Type to continue) & ,Í ˫T \(&:0:azȄaA:)~0H" ġ  *@#4$$$&ˡ 4 46%ˡ 4Jˡ 45ˡ+42é1Ä2*á444ń55P.TEXTׯ]צ.CODEJ.BACKׯ7צ.INFO$.GRAFׯצ.FOTO /T! ȡ   צצ:22ȡá;2á!2ȡ5252š[ץ22š2222ȡ2š5252á4w4]ץ11á4\1šV42233z 3042221 쓡ת$ (   d˯7 H Pצצ22ȡ5233 ȡ 23aĩ3zȄ 23aA22š*á?%áÍ2~ š˄ `1 b~ éÍ~  , Ą쓡"á  :"ë á졫šw#ńE z 0 ńȄ!~Í`~W ˡ!  ,ȫ$* "ë넡,~ *6"á1ꓡ삫Ú š K6"á61 ɚ V %ɡšɡš  PꟚáš蕿@šQȡ2 š:X f Ą ɡ 낫š ꓡ1š땫Ě@á " * ȡ*ńȄ4šáRתPńȄ ,ń.hGGGVJJrKL0M0NNNOlOOONB|`x :~&~& ILyhhhh 6IiIi0&lhhhh h HHHHLy h Ly8hhL1á5   Q lȡ>š 쾿  / Z==>D???x@@ApAnBBCCDfDDE FlFFG>G0ˡ oɡa   áá0š  %4á 쓡ת!!9 D*驁&F+}迶Ŷ} / š/áá-`,3# , , ,//~6\-}ˡ2Error reading exec file-, } .}ˡ2Error writing exec file-} צUnknown run-time error-צValue range error-צNo proc in seg-table-Exit from uncalled procת-Stack overflowת-צInteger overflow-Divide by zeroת-צNIL pointer reference-צProgram interrupted by user-r D ́$ʁ$ ʁ$ ʁ$ ʁ$ʁ$!"ʁ$ʁ$ʁ$ʁ$FZ   ނ ń1 áނ š   šš$ !۞ۂۂەߓh  ! "ˡ ɡ!  ! "ˡ ߡ š  ńá4 á,á"  ܢۚ>ب"́$ʁ$ ʁ$ ʁ$ ʁ$ʁ$!"ʁ$ʁ$ʁ$ʁ$FZ   ނ ń1 áނ š   šš$    ġނš  šš!۞ۂۂەߓS  ! "ˡ.! "ˡ ߡ á( ::87CONSOLE1:7SYSTERM2:7GRAPHIC3:7PR P:NEWC/C.CODE:6REMOUT8PSb.:=b4/#b:a@:%aF:`L!I`R[/`X)`2 4j P:NEWC/C.CODEDEDEKYKK.2 4k/P/NEWC/C.CODE.CODE8FNo user programתP8F0ERM2:7GRAPHIC3:7PRINTER6:5REMIN7:6REMOUT8E/KY Kh Pt.PE87CONSOLE187CONSOLE1:7SYSTERM2:7GRAPHIC3:7PRINTER6:5REMIN7:6REMOUT8P IYIL: P/.P> F bNb:XSEEK SS FEOF R^ R F :FEOLN \ R F :FREADINTTSS F ,S b:,SI "b .0::FTITLE QjQ:jQFOPENOLD QJUNK bJ8FCLOSE QvXQF Q:QFTYPE b7FGET ~R RF bTb:FPUT RDR  9 *,.02468:E&*E$ á"ˡ"& E ##&Eá 9'89:EáF b6} š.ö}Ä-D76!~?\FצPut in :P?FP'then press RETURN *o# ~8W8EEHצE# š t@4,á/š ġ 4,+á"š ġ Z |5?š?ˡ?ء "ˡ6ߕނ߂ɡ    d쓡  1צS# أ , P# أ צ, I# أ \2צ Exec err #   á, J3ˡ.$ l/E8:Eá *0  šˡ 퓄 Ä퓡w š   ɍL  "ˡ.ˡצSystem IO error-צ unknown cause- parity (CRC)ת-צillegal unit #-illegal IO requestת-צdata-com timeout-vol went off-lineת-file lost in dirת-צ bad file name-צno room on vol- vol not foundת-file not foundת-צ dup dir entry-צfile already open-צ file not open-צbad input format-disk write protectedת-צillegal block #-צillegal buffer address-w!must read a multiple of 512 bytesת-MunkAPPLE7:::% š tצWelcome ?צ, to Apple II Pascal 1.2צBased on UCSD Pascal II.1Current date is C -C'Version 1.2 of SYSTEM.PASCAL cannot runצ)with a non-1.2 version of the interpreter@9988צ)The 128K version of SYSTEM.PASCAL cannot (run with the 64K version of SYSTEM.MayתצJunJulתצAug Sepת צOct Novת צDec ???תצ??????ת6!צ  HצTתP%%@99ˡ  7 :9CONSOLE:ת(:9צSYSTERM:(8:98 6øצ???JanתצFebMarתצApr1٦׷)צ: ܢܢH d    0&תת.ת??? *SYSTEM.WRK.TEXTײ& צ*SYSTEM.WRK.CODE ,CONSOLEצSYSTERMGRAPHICצPRINTERREMINצREMOUT{B77::9988:9  6 ۪*ʁd ضá0?ʁd*SYSTEM.STARTUPת(߫7́%́eʁ%ʁeȡlضʁ%ʁbQ́fƁfʁdƁfƁ&ʁ% Ɓf(ߡʁ% ʁbʁ%́bʁ%́%;??ٟá'C "á ~٤  :SYSTEM.ASSMBLERת :SYSTEM.COMPILERת :SYSTEM.EDITORת :SYSTEM.FILERת צ:SYSTEM.LINKERƁ&<́b́cʁcȡ~ؤ́dʁdתʁdس0ʁdʁd؞&"á>ʂ>ʂ>ʂ>ʂ>ʂ>ʂ>88ʂ>  תʂ>ʂ>ʂ>̂?Ƃ?Ƃ? Ƃ?ʂ>ˡdتٞ&ʁ =ʁ"*ʁ+̂=ʂ=Gʂ=Hʂ=Iʂ=%O tƁ&̂=ʂ=ʂ=ʂ=ʂ=%̂>8ʂ>ʂ>ʂ>ʂ>ʂ> ʂ>ʂ> ʂ> ʂ> ʂ>  ʂ>ʂ=̂>ʂ>ʂ٢ š٢ ٢٢ 4$88ؗ(/88ؗ(tDoo odoo'z*SYSTEM.MISCINFOתPƁƁnown ProFile errorת-/(hT?+sKצ IO error: -צUnimplemented instruction-צFloating point error-String overflowת-yProgrammed HALTת-aProgrammed break-pointת-BצCodespace overflow-' oZ>s]@;-.Le not open-צbad input format-disk write protectedת-צillegal block #-צillegal buffer address-w!must read a multiple of 512 bytesת-Munknown ProFile errorת-/(hT?+sKצ IO error: -צUnimplemented instruction-צFloating point error-String overflowת-yProgrammed HALTת-aProgrammed break-pointת-BצCodespace overflo-C ;;ȡPascal system size is 128K;;ȡצ'Copyright Apple Computer 1979,1980,1983Copyright U.C. Regents 1979%צSystem re-initializedX 59 v"rx$@   H  tצWelcome ?צ, to Apple II Pascal 1.2צBased on UCSD Pascal II.1Current date is C -CÄ8 "ˡ$ Can't find ::9 ƀ:ײ9 ƀ:צSYSTEM.SWAPDISK&:(7,צ*SYSTEM.WRK.CODE[*]To what codefile? (׷O,áling...á999':::צ::&:(áAssembleCompileצ what text? (צ&,á(+(.TEXT888!!f!צ*V! ""!"צ:" "ۤ   ۤ    áۤ  R   88(áצ Assemblingצ Compi#צMust L(ink first|Ɓ2ƀ¼:צ.Conflict between intrinsic and user segment(s)0ƀ¼ 2 2 Ɓ_& `ۤ  áۤ  !~ʶ́ŕsʁśtʁtˡ  צ not codeʁs2ʁt"ˡצ Bad block #0ڡ;ƀ ˡ.  is not version 1.2ړ22Ɓ2 bޡ: Linking...ݡ A?̃Aʃȡ@A|A:'A צ @@@áAAM5 r  ߪPƁ_Ɓ6 PƁ6ƁcƁgƁoƁp!́qƁcʁq ת "ˡCܡ>"áצIllegal file nameNo file  Ƃ;P Bń"CB̃CʃȡDC)CC Ƃצ*SYSTEM.LIBRARYPƂ?:צ-Error: Required library files are not present ?צ3Error: These required intrinsic(s) not available: @:ڢ̡d?kt d;.2>!2+2š$2צ.CODE 22 š22 ;.צ:2.LIBP۪PB?D)؞D)ؿ؂پáپ$áڸBBBi ȡؾaġ زؾ $ 2dd;"ákt"áFLIÄ*LIBRARY FILES:ׯá`?kt"á 8צ Warning: צ is not used?צ&Warning: Cannot open the library file dRپáپ$ò$ÄiȡXP  ٲ`ݤۼ: T $ ȡ\q٤زضؗ ٤d n | تPdd"آڤ á4á/آ*Í]  hޢ ȡWڤ ˡD۳-ܢ0ۤ ݢ`ڤá ^| ȡ2ݤˡ"ޢڳ@@YyÍ, 4ۢڤ ɡ?š2ڪP-19:!1ׯ)Illegal filenamenT(ˡ-C ;;ȡPascal system size is 128K;;ȡצ'Copyright Apple Computer 1979,1980,1983Copyright U.C. Regents 1979%צSystem re-initialized<$88š8(8X+,,"ˡ צ Can't open ,   áث 7_ 7 š, š%צSYSTEM.WRK.CODEsSYSTEM.WRK.CODE׷Fš5צ.CODE.  "á.צNested exec commands illegal"צError opening execd ˄~ݤ ת   ١  n ١ á9 ٓ/! !!١á ~ݤݚ ˄ܟń ١á  ޤ wš  iá Ä,ޤ  ɡ"áޤ lܟġMáš7 ܂ۻݪ d #(   !š Í 7ÄU ǐɄ:6ń~66! šá٢.ٕ۶š ڸ۸۶ š۸ ڸ:   ȡQ  ȡ   ȡ? ȡ  ġ  á ڢڢڢڣ ڣ ١ڢ ڣ ڣ١ ڢڣڣ ڣ áڣڣġ ڢڣڣ hڢ ڢ١ڢ!ڣڣ ڢ!ڣڣ ڢÄڣ &ڢ ڣ ڢ! ڢ!ڣڣ ڢڢ ڣڢÄڢ  NP3 "gC(,. C ^(Pv l0x: 6?áSFצ=Command: U(ser restart, I(nitialize, H(alt, S(wap, M(ake execP')% 6!,j3쓡 צ Linking...ˡ& Restarting... U not allowedup-Há6OK7AX0   HˡFצCCommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, ? [1.2]P')%?áSFצ=Command: U(ser restart, I(nitialize, H(alt, S(wap, M(ake execP')% 6!,j3쓡ȡ/,-Z N:98:9á/)*SYSTEM.ATTACH  áá(צ*SYSTEM.STARTUP %áá 6(šR.%+(]ˡ([8]+("á%צ Terminator=צ , change it?)צNew terminator:}  צ%New swapping level (ESCAPE to exit): ض,0Í1Í2Íسs2ø1öRצ Z`X\X áޢá ~תޢޢޢ024<& צ š š۾.ˡצ([šܕ!!(š۾:ˡ١.TEXTת .CODEת!!ȡ(ܾܾ š!!