`L i=L\Ʃx ? N'i  ͭЅ?0ȱ Ѕ?iȱi lԠԠ͠ԠϠŠͮŠ SYSTEM.APPLE   L$JN^ZLciCENTRON737.TEXTBimCENTRON737.CODEBPRINTNET.CODE^oPRINTNET.CODE^oPSCAL04 PASCALZAP.TEXTo( PRINTNET.TEXT^o(2KINETICART.TEXT26KINETICART.CODE6<PASCALZAP.CODEo<@TIGERPROC.TEXTo@H PRINTNET.CODE^oHX SAILCALC.TEXTvgLXc SAILCALC.CODEvg&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xH&x'8*7Ixix&&  ') + &п x) ++`FG8`0($ p,&") (jJJ>L+ "?I>  N `  ` x V Nx .x- z `V0^*^*>` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&PROGRAM PASCALZAP; !(*BY PHILIP B ENDER - CALL APPLE JAN 81, P47 *)  (* PRINT MODULE ADDED BY G.KELTZ, 1 MAR 8S *)   CONST SP=' '; &HEXES='0123456789ABCDEF';  VAR BUF :PACKED ARRAY[0..511] OF 0..255; $HEX :PACKED ARRAY[0..15] OF CHAR; $HEXI :PALN; !WRITELN('ENTER CHOICE: ')  END;   BEGIN (*MAIN PROGRAM*) !HEX:='0123456789ABCDEF'; !READBLOCK; !REPEAT "MENU; "READ(CHOICE);WRITELN; "CASE CHOICE OF "'R':READBLOCK; "'W':WRITEBLOCK; "'D':DISPLAY; "'P':PRINT;  'A':ASCIICHANGE; "'H':H!WRITELN; !WRITELN(SP:5,'R)EAD BLOCK'); !WRITELN(SP:5,'W)RITE BLOCK'); !WRITELN(SP:5,'D)ISPLAY BUFFER'); !WRITELN(SP:5,'P)RINT BUFFER'); !WRITELN(SP:5,'A)SCII CHANGE'); !WRITELN(SP:5,'H)EX CHANGE'); !WRITELN(SP:5,'Q)UIT'); !WRITELN;WRITE(ELSE !BEGIN "IF L<>0 THEN BEGIN "IF L=1 THEN #HEXSTR:=CONCAT('0',HEXSTR); "HEXADEC; "BUF[BYTE]:=DEC;BYTE:=BYTE+1 /END !END !UNTIL L=0  END;   PROCEDURE MENU;  BEGIN !WRITELN(CHR(12)); !WRITELN;WRITELN; !WRITELN(SP:5,'MENU OF OPTIONS'); 1+I2*16  END;   PROCEDURE HEXCHANGE;  VAR L:INTEGER;  BEGIN !HEADER; !REPEAT !DECAHEX(BUF[BYTE]); !WRITELN(BYTE:3,': ',HEXI); !WRITE(BYTE:3,': '); !READLN(HEXSTR); !WRITELN; L:=LENGTH(HEXSTR); !IF L>2 THEN $WRITELN('HEX VALUE TOO LONG') EXIT'); %IF CH<>SP THEN &BUF[BYTE]:=ORD(CH); %BYTE:=BYTE+1 !UNTIL CH=SP  END;   PROCEDURE HEXADEC;  VAR I1,I2:INTEGER; $STR:STRING;  BEGIN !STR:=COPY(HEXSTR,2,1); !I1:=POS(STR,HEXES)-1; !STR:=COPY(HEXSTR,1,1); !I2:=POS(STR,HEXES)-1; !DEC:=IEND;   PROCEDURE ASCIICHANGE;  VAR KAR:CHAR;  BEGIN !HEADER; !REPEAT "IF (BUF[BYTE]>31) AND %(BUF[BYTE]<127) THEN %KAR:=CHR(BUF[BYTE]) ' ELSE %KAR:='.'; %WRITELN(BYTE:3,': ',KAR); %WRITE(BYTE:3,': '); %READLN(CH); %WRITELN('SP-&AND (BUF[ROW+COL]<127) THEN (WRITE(P,CHR(BUF[ROW+COL])) ELSE (WRITE(P,'.'); "WRITELN(P);  ROW:=ROW+16; !UNTIL ROW>496; !CLOSE(P);  END;   PROCEDURE HEADER; !BEGIN "WRITELN(CHR(12)); "WRITE('BYTE TO BE CHANGED? '); "READLN(BYTE);WRITELN !PRINTER:'); !ROW:=0; !WRITELN(P,CHR(12)); !WRITELN(P,'BLOCK ',BLOCK:3); !REPEAT "WRITE(P,ROW:3,':'); "FOR COL:=0 TO 15 DO BEGIN #DECAHEX(BUF[ROW+COL]); #WRITE(P,HEXI:3) END; "WRITE(P,SP);  FOR COL:=0 TO 15 DO #IF (BUF[ROW+COL]>31) XIT'); $READ(CH);WRITELN(CHR(12)); $IF (CH='E') OR (CH='E') THEN 'EXIT(DISPLAY) #END !UNTIL ROW>504; !WRITELN('BLOCK ',BLOCK:3,': SP-MENU'); !READ(CH);WRITELN  END;   PROCEDURE PRINT; !VAR ROW,COL:INTEGER; %P:INTERACTIVE;  BEGIN !REWRITE(P,'(HEXI:3) END; "WRITE(SP);  FOR COL:=0 TO 7 DO #IF (BUF[ROW+COL]>31) &AND (BUF[ROW+COL]<127) THEN (WRITE(CHR(BUF[ROW+COL])) ELSE (WRITE('.'); "WRITELN;  ROW:=ROW+8; J:=J+1; "IF J MOD 22=0 THEN #BEGIN $WRITELN('BLOCK ',BLOCK:3,': SP-CONT; E-E!WRITELN('READING BLOCK ',BLOCK:3); !UNITREAD(5,BUF,512,BLOCK,0)  END;   PROCEDURE DISPLAY; !VAR ROW,COL,I,J:INTEGER;  BEGIN !ROW:=0;J:=0; !WRITELN(CHR(12)); !REPEAT "WRITE(ROW:3,':'); "FOR COL:=0 TO 7 DO BEGIN #DECAHEX(BUF[ROW+COL]); #WRITEK:3,SP:2); !READLN(STR); WRITELN; !IF STR='YES' THEN "UNITWRITE(5,BUF,512,BLOCK,0) !END;   PROCEDURE READBLOCK;  BEGIN !WRITELN(CHR(12)); !WRITELN;WRITELN; !WRITE('WHICH BLOCK IS TO BE READ? '); !READLN(BLOCK);WRITELN; (BEGIN *DOIT(I DIV 16); *HEXI[L]:=HEX[I MOD 16]; (END; $END; (*DOIT*) !BEGIN #L:=0; #HEXI:='00'; #DOIT(I); !END; (*DECAHEX*)   PROCEDURE WRITEBLOCK;  BEGIN !WRITELN(CHR(12));(*CLEAR PAGE*) !WRITELN('RESPONDE YES TO WRITE ','TO BLOCK ',BLOCCKED ARRAY[0..1] OF CHAR; $STR,HEXSTR:STRING; $BLOCK, $ BYTE, &DEC:INTEGER; $CHOICE,CH:CHAR; $   PROCEDURE DECAHEX(I:INTEGER);  VAR L:INTEGER; "PROCEDURE DOIT(I:INTEGER); $BEGIN &IF I<16 THEN (BEGIN *HEXI[L]:=HEX[I]; *L:=L+1; (END &ELSEEXCHANGE END !UNTIL (CHOICE='Q') OR (CHOICE='Q')  END.  N^*) $  (*THIS FUNCTION RETURNS A REA RANDOM NUMBER IN THE ARAGE 0.0 TO 1.O.  IT USES THE APPLE USCD RANDOM LIBRARY FUNCTION LOCATED IN THE APPLESTUFF  UNIT IN THE SYSTEM LIBRARY.*)   FUNCTION RANDM : REAL;   CONST MAXINT = 32767;   BEGIN  RAND (*MAX. PACKET TRANSMIT TIME*) $BPSRATE : REAL; (*BITS-PER-SECOND RATE*) $PN, PR, PTRAFFIC : REAL; (*TRANSMIT PROBABILITIES*) $PRINT : 1..3; $PRNTR : TEXT; $ (*PRINT VERBOSITY CONTROL$CHNLDELAY :ARRAY[1..DELAYCOUNT] OF INTEGER; (*CHANNEL DELAY SHIFT REGGSTR*) $K : 1..DELAYCOUNT; (*CHANNEL DELAY COUNTER*) $MAXPKT : INTEGER; (*MAX. PACKET SIZE IN BYTES*) $MAXPKTTIME : REAL; LICT); (*CHANNEL ACTIVITY DESCRIPTORS*) $CHNLTIME : REAL; (*CHANNEL IN-USE TIME*) $CHNLUSERS : INTEGER; (*CHANNEL USERS AT ANY INSTANT*) F STATIONS IN RUN*) $I : 1..MAXSTATIONS; (*INDEX FOR STATIONS*) $STATION : ARRAY [1..MAXSTATIONS] OF NODE;(*STORAGE FOR STATION NODES*) $RCVSIGNAL, XMTSIGNAL :INTEGER; (*SIGNAL DESCRIPTORS*) $CHANNEL :(INACTIVE, ACTIVE,CONF (*TOTAL TIME PCKTS WAITED**) , END;   VAR TIME : REAL; (*CLOCK TIME DURING SIMULATION*) $TRUN : REAL; (*LENGTH OF THIS SUMULATION RUN*) $NSTATIONS : 1..MAXSTATIONS; (*NUMBER O3VERDELAY:0..DELAYCOUNT; (*VERIFICATION DELAY COUNTER*) 3TOTALPKTS:INTEGER; (*TOTAL PACKTS SENT BY STATION*) 3TOTALHITS:INTEGER; (*TOTAL PACKET COLLISIONS*) 3TOTALTRAFFIC:REAL; (*TOTAL NO. OF BYTES SENT*) 3TOTALDELAY:REAL; YTES IN PACKER*) 3NEWPKTTIME:REAL; (*GENERATION TIME ONEW PACKET*) 3XMTPKTTIME:REAL; (*TRANSMIT START TIME PACKET*) 3ENDPKTTIME:REAL; (*TRANSMIT END TIME OF PACKET*) CORD CONTAINS ALL CONTROL VARIABLES REQUIRED FOR EACH STATI-  TION*) "  TYPE NODE = RECORD STATE:(NOPKT,NEWPKT,OLDPKT,VERPKT); (*STATE OF TSTATION*) 3XMTR:(OFF,ON); (* STATE OF THE TRANSMITTER*) 3PACKETSIZE:INTEGER; (*NUBMER OF BIONS IN THE SIMULATION*) &TICK =0.050; (*TIME INTERVAL BETWEEN STATE CHANGES*) &TDELAY =0.250; (*DELAY TIME FOR SIGNAL ROUND TRIP TO SATELLITE*) &DELAYCOUNT =5; (*NUMBER OF CLOCK TICKS IN ROUND-TRIP DELAY*)   (*THE FLOLOWING RE(*PACKET NETWORK SIMULATION PROGRAM ----- WRITTEN BY H. S. MAGNUSKI, KA6M*)  (* ORBIT, NOV/DEC '80, PG 22 --INTERACTIVE APPLE MODS BY G.KELTZ,WB1FOK *)   PROGRAM NET;   USES APPLESTUFF;    CONST MAXSTATIONS =20; (*MAXIMUM NUMBER OF STATM := RANDOM/MAXINT;  END;   (*THE 'NEXTPACKET' PROCEDURE IS USED TO GENERATE NEW TRAFFIC AT EACH STATION;  CHANGES IN HOW OFTEN A STATION COMES UP WITH A NEW PACKET AND HOW LARGE THE  PACKET WILL BE CAN BE IMPLEMENTED HERE. THE PROCEDURE PRESENTED BELOW  USES A TRESHOLD VARIABLE, PTRAFFIC, WHICH WILL INCREAE OR DECREASE TRAFFIC  LOADING, AND THEN SETS THE PACKET SIZE TO A BALUE BASED ON THE MAXIMUM  PACKET LENGTH.*)    PROCED; #END;  END; (*INITIALIZE*)   (*AT EACH TICH OF THE CLOCK THE NEXTSTATE PROCEDURE UPDATES THE STATE OF  THE MULTI-ACCESS CHANNEL AND THEN CHECKS ON THE ACTIBITY OF EACH STATION.  STATIONS WILL START OR STOP TRANSMITTING DEPENDING ON THE NEW VALUE OIZE := 0; )STATION[I].NEWPKTTIME := 0.0; )STATION[I].XMTPKTTIME := 0.0; )STATION[I].ENDPKTTIME := 0.0; )STATION[I].VERDELAY := 0; )STATION[I].TOTALPKTS := 0; )STATION[I].TOTALHITS := 0; )STATION[I].TOTALTRAFFIC := 0.0; )STATION[I].TOTALDELAY := 0.0#CHANNEL := INACTIVE; #RCVSIGNAL := 0; #XMTSIGNAL := 0; #CHNLUSERS := 0; #CHNLTIME := 0.0; #FOR K := 1 TO DELAYCOUNT DO CHNLDELAY[K] := 0; #FOR I := 1 TO NSTATIONS DO #BEGIN STATION[I].STATE := NOPKT ; )STATION[I].XMTR := OFF; )STATION[I].PACKETS3,' BPS=', +BPSRATE:6:2,' PN=',PN:5:3,' PR=',PR:5:3,' PTRAFFIC=',PTRAFFIC:5:3); #IF PRINT>=3 THEN WRITELN (PRNTR,' TIME - 01 02 03 04 05 06 07 08 09 10', F' 11 12 13 14 15 16 17 18 19 20'); #TIME := 0.0; #MAXPKTTIME := MAXPKT*8.0/BPSRATE; BABILITY TRAFFIC (REAL):');READLN(PTRAFFIC); #WRITE('PRINT FUNCTION (1..3):');READLN(PRINT); #RANDOMIZE; #REWRITE(PRNTR,'PRINTER:'); #WRITELN(PRNTR,'START OF PACKET NETWORK SIMULATION'); #WRITELN(PRNTR,'N=',NSTATIONS:2,' T=',TRUN:5:2,'MAXPKT=',MAXPKT:TATIONS); #WRITE('PERIOD OF RUN (REAL):');READLN(TRUN); #WRITE('MAX. PACKET SIZE (INT):');READLN(MAXPKT); #WRITE('BAUD RATE (REAL):');READLN(BPSRATE); #WRITE('PROBABILITY N (REAL):');READLN(PN); #WRITE('PROBABILITY R (REAL):');READLN(PR); #WRITE('PRO#20 10.0 255 1200.0 1.00 0.05 0.01 2 #20 10.0 511 1200.0 1.00 0.05 0.01 1 #  SEE THE READLN STATEMENT BELOW FOR THE MATCHING VARIABLES.*)   PROCEDURE INITIALIZE;  BEGIN #WRITE('NUMBER OF STATIONS (1..20):');READLN(NSE CONTAINS PARAMETERS FOR THE NETWORK WHICH MAY BE VARIED  TO ASSESS THE EFFECT OF CHANGES IN LOAD, CONTROL PARAMETERS, ETC.  A SAMPLE INPUT FILE LOOKS LIKE THIS:  #20 10.0 127 1200.0 1.00 0.05 0.01 3 SITE.TOTALPKTS+1; #SITE.TOTALTRAFFIC := SITE.TOTALTRAFFIC+SITE.PACKETSIZE; #SITE.TOTALDELAY := SITE.TOTALDELAY+(SITE.XMTPKTTIME-SITE.NEWPKTTIME);  END; (*UPDATE*)   (*INITIALIZATION OF ALL VARIABLES FOR A SUMULATION RUN IS DONE HERE.  THE INPUT FILANSMITTER*)   PROCEDURE TRANSOFF (VAR SITE: NODE);  BEGIN SITE.XMTR := OFF; #CHNLUSERS := CHNLUSERS-1;  END; (*TRANSOFF*)   (*THE UPDATE PROCEDURE IS USED FOR STATISTICS GATHERING.*)   PROCEDURE UPDATE(VAR SITE: NODE);  BEGIN SITE.TOTALPKTS := PROCEDURE TRANSMIT (VAR SITE:NODE; I:INTEGER);  BEGIN SITE.XMTR := ON; #XMTSIGNAL := I; #CHNLUSERS := CHNLUSERS+1; #SITE.ENDPKTTIME := TIME+SITE.PACKETSIZE*8.0/BPSRATE;  END;(*TRANSMIT*)   (*THIS PROCDURE IS CALLED WHEN A STATION TURNS OFF ITS TR PACKETS.*)   PROCEDURE RESCHEDULE (VAR SITE: NODE);  BEGIN SITE.XMTPKTTIME := TIME+MAXPKTTIME*RANDM*(1.0-PR)/PR; "SITE.TOTALHITS := SITE.TOTALHITS+1;  END; (*RESCHEDULE*)   (*THIS PROCEDURE IS CALLED WHEN A STATION TURNS ON ITS TRANSMITTER*)  ; (*NEXTPACKET*)   (*THE RESCHEDULE PROCEDURE IMPLEMENTS RULES ON HOW LONG A STATION SHOULD  WAIT TO RETRANSMIT WHEN THE INITIAL ATTEMPT TO TRANSMIT A PACKET HAS  FAILED. VARIOUS ALGORITHS SPECIFY DIFFERENT RULES FOR NEW PPACKETS AND  RETRANSMITTEDURE NEXTPACKET (VAR SITE: NODE);  BEGIN IF RANDM < PTRAFFIC THEN "BEGIN $SITE.PACKETSIZE := TRUNC(RANDM*MAXPKT); $SITE.NEWPKTTIME := TIME; (*TRAFFIC GENERATION TIME*) $SITE.STATE := NEWPKT; (*NEW STATE, PACKET TRAFFIC AVAILABLE*) "END;  ENDF THE  RECEIVED SIGNAL. THE INTERNAL STATION STATE VARIABLE WILL BE UPDATED TO  REGFLECT THE SITUATION OF EACH NODE IN THE NETWORK.*)   PROCEDURE NEXTSTATE;  BEGIN RCVSIGNAL := CHNLDELAY[DELAYCOUNT]; #IF RCVSIGNAL = 0 THEN CHANNEL := INACTIVE; #IF RCVSIGNAL >0 THEN CHANNEL := ACTIVE; #IF RCVSIGNAL =-1 THEN CHANNEL := CONFLICT; # #IF CHANNEL <>INACTIVE THEN CHNLTIME :=CHNLTIME+TICK; # #IF PRINT >= 3 THEN WRITE(PRNTR,TIME:7:2,' - '); # #FOR I := 1 TO NSTATIONS DO #BEGIN &CASE STATION[I].,CHNLTIME:6:2,'%'); &WRITELN(PRNTR);  END; (*FINALIZE*)   (*MAIN PROGRAM STARTS HERE*)   BEGIN  &INITIALIZE; &TIME := 0.0; &WHILE TIME < TRUN DO )BEGIN )NEXTSTATE; )TIME := TIME+TICK; )END; &FINALIZE; &  END. (*OF MAIN PROGRAM*)   TALTRAFFIC; &END; &EFFICIENCY := 100.0*(TRAFFIC*8.0)/(TRUN*BPSRATE); &CHNLTIME := 100.0*CHNLTIME/TRUN; &WRITELN(PRNTR,'SUMMARY OF NETWORK ACTIVITY'); &WRITELN(PRNTR,' CHANNEL EFFICIENCY =',EFFICIENCY:6:2,'%'); &WRITELN(PRNTR,' CHANNEL DUTY CYCLE -'&BEGIN IF PRINT >= 2 THEN WRITELN(PRNTR,'STATION:',I:3, 2' PACKETS=',STATION[I].TOTALPKTS:4, 2' COLLISIONS=',STATION[I].TOTALHITS:4, 2' DELAY=',STATION[I].TOTALDELAY:7:2, 2' BYTES SENT=',STATION[I].TOTALTRAFFIC:6:2); ,TRAFFIC := TRAFFIC+STATION[I].TOTHE END OF A SIMULATION RUN AND  PRINTS OUT THE DESIRED REPORTS.*)   PROCEDURE FINALIZE;  VAR TRAFFIC, EFFICIENCY: REAL;  BEGIN  WRITELN(PRNTR,'END OF NETWORK SIMULATION'); &TRAFFIC := 0.0; &FOR I := 1 TO NSTATIONS DO UNT-1 DOWNTO 1 DO CHNLDELAY[K+1] := CHNLDELAY[K]; #IF CHNLUSERS = 0 THEN CHNLDELAY[1] := 0; #IF CHNLUSERS = 1 THEN CHNLDELAY[1] := XMTSIGNAL; #IF CHNLUSERS > 1 THEN CHNLDELAY[1] := -1; #  END; (*NEXTSTATE*) (  (*THE FOLLOWING PROCEDURE IS CALLED AT NTR,' V'); (END; (*CASE*) (IF STATION[I].XMTR = ON THEN WRITE(PRNTR,'*') ELSE WRITE(PRNTR,' '); (END; #END; #IF PRINT >= 3 THEN WRITELN(PRNTR); # (  (*THE CURRENT SIGNAL IS PUT INTO A DELAY-LINE AND THE DELAY-LINE IS UPDATED*) # #FOR K := DELAYCO(IF PRINT>= 3 THEN (*PRINT DETAILS OF CURRENT STATION STATES*) (BEGIN (CASE STATION[I].STATE OF (NOPKT: WRITE(PRNTR,' '); (NEWPKT: WRITE(PRNTR,' N'); (OLDPKT: IF STATION[I].XMTR = ON THEN WRITE(PRNTR,' R') ELSE WRITE(PRNTR,' .'); (VERPKT: WRITE(PRT THEN 3BEGIN RESCHEDULE(STATION[I]); 9STATION[I].STATE := OLDPKT; 3END ELSE 3BEGIN STATION[I].VERDELAY := STATION[I].VERDELAY-1; 9IF STATION[I].VERDELAY = 0 THEN I))THEN 6BEGIN TRANSOFF(STATION[I]); STATION[I].ENDPKTTIME) 6THEN 6BEGIN TRANSOFF(STATION[I]); STATION[I].XMTPKTTIME) 6THEN TRANSMIT(STATION[I],I); 6 .ON: BEGIN 3IF (CHANNEL=CONFLICT) OR 6((CHANN := OLDPKT; 5END ELSE 2IF (CHANNEL = ACTIVE) AND (TIME>STATION[I].ENDPKTTIME) 5THEN 5BEGIN TRANSOFF(STATION[I]); ;STATION[I].VERDELAY := DELAYCOUNT; ;STATION[I].STATE := VERPKT; 4 END; 2END; .END; . ANNEL = INACTIVE THEN 6BEGIN TRANSMIT(STATION[I],I); I)) THEN 5BEGIN TRANSOFF(STATION[I]); ;RESCHEDULE(STATION[I]); ;STATION[I].STATESTATE OF &  (*NO PACKET AVAILABLE STATE - THE STATION HAS A NEW PACKET READY FOR TRXMISSIN*)  &NOPKT: NEXTPACKET(STATION[I]); &  (*NEW PACKET STATE-THE STATION HAS NEW PACKET READY FOR TRANSMISSION*)  &NEWPKT: CASE STATION[I].XMTR OF .OFF: IF CH( N^URE REMOVELINE(L:LINE);  BEGIN "PENCOLOR(NONE); "MOVETO(L.X1,L.Y1); "CASE L.LCOLOR OF " WHITE1,GREEN,VIOLET:PENCOLOR(BLACK1); +RADAR,WHITE2,REVERSE,ORANGE,BLUE:PENCOLOR(BLACK2); +WHITE,BLACK,NONE:PENCOLOR(BLACK); (END; "MOVETO(L.X2,L.Y2);>191) THEN BOUNCE(382,N,TWO.DY); "NL.Y2:=N; "ONE.COUNT:=ONE.COUNT-1; "TWO.COUNT:=TWO.COUNT-1;  END;   PROCEDURE DRAWLINE;  BEGIN "WITH NL DO $BEGIN &PENCOLOR(NONE); &MOVETO(X1,Y1); &PENCOLOR(LCOLOR); &MOVETO(X2,Y2); $END;  END; $  PROCED"IF (N<0) OR (N>279) THEN BOUNCE(558,N,ONE.DX); "NL.X1:=N; "N:=NL.Y1+ONE.DY; "IF (N<0) OR (N>191) THEN BOUNCE(382,N,ONE.DY); "NL.Y1:=N; "N:=NL.X2+TWO.DX; "IF (N<0) OR (N>279) THEN BOUNCE(558,N,TWO.DX); "NL.X2:=N; "N:=NL.Y2+TWO.DY; "IF (N<0) OR (N= LIM-N;  END;    PROCEDURE GETNEWLINE;  VAR !N:INTEGER; !  BEGIN "IF ONE.COUNT=0 THEN $BEGIN &GETNEWCOUNT(ONE); $ IF COLOR THEN NEWCOLOR(NL.LCOLOR); $END; "IF TWO.COUNT=0 THEN $GETNEWCOUNT(TWO);  N:=NL.X1+ONE.DX; BEGIN  CT:=RANDOM MOD 5; "CASE CT OF &0: C:=WHITE; &1: C:=BLUE; &2: C:=ORANGE; &3: C:=VIOLET; &4: C:=GREEN; $END;  END;    PROCEDURE BOUNCE(LIM:INTEGER;VAR N,D:INTEGER);  BEGIN "NOTE(NL.Y1 DIV 4,1); "D:=-D; "IF N<0 THEN N:=-N "ELSE N:&X1:=RANDOM MOD 279+1; &X2:=RANDOM MOD 279+1; &Y1:=RANDOM MOD 191+1; &Y2:=RANDOM MOD 191+1; $END; "GETNEWCOUNT(ONE); "GETNEWCOUNT(TWO); "CLOR:=WHITE; "AT:=1; "INITTURTLE;  END;    PROCEDURE NEWCOLOR(VAR C:SCREENCOLOR);  VAR "CT:INTEGER; $WRITELN('TYPE NUMBER (1..150) TO DISPLAY AT ONETIME'); $WRITELN('(SUGGESTION: USE 75)'); $READ(NUMLINES); "UNTIL (NUMLINES > 0) AND (NUMLINES < 151); "WRITELN('TYPE TO START TO QUIT'); "READ(CH); "WITH NL DO $BEGIN &LCOLOR:=WHITE; ..TERRY PUNDIAK'); "WRITELN(' (SEE NOV.80 BYTE P62 FOR THEORY'); "WRITELN('DO YOU WANT SOUNDS?'); "READ(CH); "IF CH = 'Y' THEN MUSIC:=TRUE; "WRITELN(' DO YOU WANT COLOR?'); "READ(CH); "IF CH = 'Y' THEN COLOR:=TRUE; "REPEAT M MOD 18 - 8);  END;   PROCEDURE INITIALIZE;  VAR "X:INTEGER; "CH:CHAR;  BEGIN "RANDOMIZE; "FOR X:=1 TO 150 DO $WITH LINES[X] DO &BEGIN (X1:=0;X2:=0;Y1:=0;Y2:=0; (LCOLOR:=BLACK; &END; "MUSIC:=FALSE; "COLOR:=FALSE; "WRITELN('KINETIC ART.LOR:BOOLEAN; "ONE,TWO:COUNTER; "NL:LINE; "AT,NUMLINES:INTEGER; "CLOR:SCREENCOLOR; "LINES:ARRAY[1..150] OF LINE; "CH:CHAR; "  PROCEDURE GETNEWCOUNT(VAR C:COUNTER);  BEGIN "C.COUNT:=5*(RANDOM MOD 10 + 1); "C.DX:=(RANDOM MOD 18 - 8); "C.DY:=(RANDO PROGRAM ART;  USES TURTLEGRAPHICS,APPLESTUFF;  CONST "C=13;  TYPE "COUNTER=RECORD ,COUNT:INTEGER; ,DX:INTEGER; ,DY:INTEGER; *END; "LINE=RECORD )X1:INTEGER; )X2:INTEGER; )Y1:INTEGER; )Y2:INTEGER; )LCOLOR:SCREENCOLOR; 'END;  VAR "MUSIC,CO  END;   BEGIN(*MAIN*); "REPEAT $INITIALIZE; $REPEAT &GETNEWLINE; &IF MUSIC THEN NOTE(NL.Y1 DIV 4,4); &DRAWLINE; &IF MUSIC THEN NOTE(NL.Y2 DIV 4,8); &LINES[AT]:=NL; &IF AT=NUMLINES THEN (BEGIN *AT:=1; (END &ELSE AT:=AT+1; &REMOVELINE(LINES[AT]); $UNTIL KEYPRESS; $READ(CH); " TEXTMODE; "UNTIL CH='Q';  END. " n ɡ  B 00ר RESPONDE YES TO WRITE  TO BLOCK `  5P5צYES `" PASCALZA ث ǿō ~ ث ō .ث ǿō ~ثبݹ- '!   %')')+ Rxǖ áǖQá #&V >ɡ(á áō . ث ǿō ~ ث ō .ث ǿō ~ثبݹ- '!   %')')+ Rx  ǿ ǿ *ٹ%  >ɡ(á áō . Yá DO YOU WANT COLOR?Yáצ*TYPE NUMBER (1..150) TO DISPLAY AT ONETIMEצ(SUGGESTION: USE 75) ǗɄ#TYPE TO START TO QUIT آآ0ǖȡ,ǖۢۢۢۢKINETIC ART...TERRY PUNDIAKצ (SEE NOV.80 BYTE P62 FOR THEORYצDO YOU WANT SOUNDS?BpART  WHICH BLOCK IS TO BE READ? ` READING BLOCK ` `  :ȡ!ڂ  ȡDڂťڂɄڂ .áqBLOCK ` : SP-CONT; E-EXITa aEéaEÍšBE(PRINTER,CHR(3)); $Y:=191; $REPEAT &X:=0; &WHILE X<=279 DO (BEGIN *PEEK; *CONVERT; *X:=X+1; *WRITE(PRINTER,CHR(BYTE2)) (END; &WRITE(PRINTER,CHR(3),CHR(11)); &Y:=Y-3 $UNTIL Y<0; $WRITE(PRINTER,CHR(3),CHR(2)); $WRITELN(PRINTER) "END; "BEGINEND;  PROCEDURE CONVERT; "BEGIN $IF BYTE[1] THEN &BYTE2:=1+128 $ELSE BYTE2:=128; $IF BYTE[2] THEN &BYTE2:=BYTE2+4; $IF BYTE[3] THEN &BYTE2:=BYTE2+16 "END;  PROCEDURE SCAN; "BEGIN $REWRITE(PRINTER,'PRINTER:'); $WRITELN(PRINTER,CHR(32)); $WRIT PROCEDURE TIGERGRAPHICS;  VAR BYTE: PACKED ARRAY[0..5] OF BOOLEAN; $BYTE2:INTEGER; $X,Y,U,V:INTEGER; $PRINTER:INTERACTIVE;  PROCEDURE PEEK; "VAR I:INTEGER; "BEGIN $V:=Y; $FOR I:=1 TO 3 DO &BEGIN BYTE[I]:=SCREENBIT(X,Y);Y:=Y-1 &END; $Y:=V  N^gbbJFB> : 6AW. 2"B&(*,HbQébQÍRx fh6P 6    W)RITE BLOCK צD)ISPLAY BUFFER P)RINT BUFFER צA)SCII CHANGE H)EX CHANGE צQ)UITENTER CHOICE:  ץ0123456789ABCDEF __áT   MENU OF OPTIONS צ R)EAD BLOCK  W)RITE BLOCK צD)ISPLAY BUFFER DEF^l __ צ:  _ :  P š(HEX VALUE TOO LONGDˡ?á צ0 QP _^ǹ._ צ: _ צ: aSP-EXITa ˡ_a__a á  ,,Pצ0123456789ABCDEF ,,Pצ0123456789ABC0ȡB؂ť؂Ʉ؂ .šo` BYTE TO BE CHANGED? _ V_ť_Ʉ_LOCK `  : SP-MENUaz,d Ɓ/PRINTER: צBLOCK `  :́0ʁ0ȡ ؂  ́0ʁ (*DUMMY*) $SCAN "END; h NET  L=̃ a IK@%dj@ |  H   DELAY=a a BYTES SENT=a  a  BAXLBLaצSUMMARY OF NETWORK ACTIVITYaa CHANNEL EFFICIENCY =aa%aa CHANNEL DUTY CYCLE -aLa%aa H a=Ia a PACKETS=a   a COLLISIONS=a   aצ DELAY=a a BYTES SENT=a  a  BAXTTġ(OTOTTT䩁Ná ONáOINšOpaDU aEND OF NETWORK SIMULATIONaȡ`ġaSTATION:   á  :v`ġ _a ^a NN áaצ Raצ .aצ VfXJ á a* a 詁`ġa Kå  KéKéJ˄&   EKå )     xKá  F  a - ȡ   Ká  KéKéJ˄&   EKå )     F          OJJáKJšKJáKKˡLLL=̃`ġaIME - 01 02 03 04 05 06 07 08 09 10a 11 12 13 14 15 16 17 18 19 20aVUAXKJINLTTȡOTTTȡ    IONaaצN=a aצ T=aaMAXPKT=aU aצ BPS=aXaצ PN=a^a PR=a\aצ PTRAFFIC=aZa`ġeaצ' TREAL):^PROBABILITY R (REAL):\PROBABILITY TRAFFIC (REAL):ZPRINT FUNCTION (1..3):` aPRINTER:aצ"START OF PACKET NETWORK SIMULATآ6NUMBER OF STATIONS (1..20): צPERIOD OF RUN (REAL):MAX. PACKET SIZE (INT):U BAUD RATE (REAL):XPROBABILITY N (LZآUآ0آV?\\آ أ :٢ثINN٢AX 4آNNآ أ آ آ آآ"@*LBLaצSUMMARY OF NETWORK ACTIVITYaa CHANNEL EFFICIENCY =aa%aa CHANNEL DUTY CYCLE -aLa%aa H a=IN^LLN(WLHT) )END %END; %READ(CH) $END !END;  END;    PROCEDURE WHATYPE;   BEGIN !FIRSTPASS:=FALSE; !IF JUSTREVISE THEN EXIT(WHATYPE); !PAGE(OUTPUT); !IF MORE THEN "BEGIN #IF MULTI THEN $BEGIN %WRITE('MULTIHULL AGAIN?'); %READLN(CH); %I ENTER J '); *READLN(J) )END; &'6': BEGIN *WRITE(' ENTER I '); *READLN(I) )END; &'7': BEGIN ' WRITE(' ENTER P '); *READLN(P) )END; &'8': BEGIN *WRITE(' ENTER E '); *READLN(E) )END; &'9': BEGIN *WRITE(' ENTER DECK-WL HEIGHT '); *READ*WRITE(' ENTER WEIGHT '); *READLN(WT) )END; &'2': BEGIN *WRITE(' ENTER SAIL AREA '); *READLN(SA) ( END; &'3': BEGIN *WRITE(' ENTER DWL '); *READLN(DWL) )END; &'4': BEGIN *WRITE(' ENTER BEAM '); *READLN(BEAM); )END; &'5': BEGIN *WRITE('ITELN(' 6. I'); %WRITELN(' 7. P'); %WRITELN(' 8. E'); %WRITELN(' 9. DECK-WL HEIGHT') $END; #WRITELN; #WRITELN(' ENTER NUMBERS OF ITEMS TO BE REVISED'); #READ(CH); #WHILE NOT(CH=' ') DO $BEGIN %CASE CH OF &'1': BEGIN "BEGIN #JUSTREVISE:=TRUE; #CLEARHALF; #WRITELN(' 1. WEIGHT'); #IF SAD THEN $BEGIN %WRITELN(' 2. SAIL AREA'); $END; #IF DL THEN $WRITELN(' 3. WATERLINE LENGTH'); #IF MULTI AND CAP THEN $BEGIN %WRITELN(' 4. BEAM'); %WRITELN(' 5. J'); %WREN $BEGIN %BN:=TRUE; CAP:=TRUE $END; #EXIT(DOWHAT) "END  END;    PROCEDURE REVISE;   BEGIN !IF FIRSTPASS THEN $EXIT(REVISE); !CLEARHALF; !JUSTREVISE:=FALSE; !WRITE('SAME BOAT AND PERFORMANCE FACTORS? '); !READLN(CH); !IF CH='Y' THEN"GOTOXY(0,13);WRITE(CHR(11));GOTOXY(0,14) !END; !  PROCEDURE DOWHAT; !FORWARD; !  PROCEDURE ALL;   BEGIN !WRITELN('DO YOU WANT ALL PERFORMANCE '); !WRITE('FACTORS? '); !READLN(CH); !IF CH='Y' THEN "BEGIN #SAD:=TRUE; DL:=TRUE; #IF MULTI TH WIND SPEEDS FOR STATIC AND'); !WRITELN('DYNAMIC CAPSIZE AS WELL AS THE'); !WRITELN('BRUCE NUMBER.'); WRITELN; !WRITE(' PUSH RETURN TO START'); !READLN; !PAGE(OUTPUT)  END;   PROCEDURE CLEARHALF;  !BEGIN ; !GOTOXY (XHEAD-3,YHEAD+4); !WRITELN('THIS PROGRAM WILL CALCULATE SAIL'); !WRITELN('AREA/DISPLACEMENT AND DISPLACEMENT/'); !WRITELN('LENGTH RATIOS FOR EITHER MONO OR MULTI-'); !WRITELN('HULL SAILBOATS. FOR MULTIS, IT WILL ALSO'); !WRITELN('CALCULATE  CH:CHAR;  INPUT:STRING;  FIRSTPASS,JUSTREVISE:BOOLEAN;   PROCEDURE INTRO;   BEGIN !MORE:=FALSE;FIRSTPASS:=TRUE; !PAGE(OUTPUT); !GOTOXY(XHEAD,YHEAD); !WRITE ('WELCOME TO SAILCALC'); !GOTOXY (XHEAD-5,YHEAD+1); !FOR A:=1 TO 30 DO WRITE(DASH)PROGRAM SAILCALC;  USES TRANSCEND;   CONST  XHEAD = 10; YHEAD = 3;  DASH = '-'; !  VAR  A:INTEGER;  SA, WINDSPEED, CE,J,I,E,P,WT,DWL: REAL;  WLHT,BEAM,BRUCENUMBER,SADRATIO:REAL;  HS,DLRATIO,DYNAMIC:REAL;  MORE,MULTI,MONO,SAD,DL,CAP,BN:BOOLEAN;F NOT ( CH ='Y') THEN &BEGIN 'WRITELN('OKAY, CALCULATIONS WILL BE FOR A MONOHULL.'); 'MULTI:=FALSE; BN:= FALSE; 'MONO:=TRUE &END %END $ $ELSE IF MONO THEN %BEGIN &WRITE('MONOHULL AGAIN?');READLN(CH); % IF NOT (CH ='Y') THEN 'BEGIN (WRITELN('OKAY, CALCULATIONS WILL BE FOR A MULTIHULL.'); (MONO:=FALSE; MULTI:=TRUE;BN:=TRUE; 'END &END %END $ELSE IF NOT MORE THEN %BEGIN &MONO:=FALSE; MULTI:=FALSE; &WRITELN('DO YOU WANT TO CALCULATE FOR A'); &WRITELN('MONO OR MULTI-HULL?'); & E CALCULATIONS? '); !READLN(CH); !FIRSTPASS:=FALSE; !IF CH ='Y' THEN MORE:=TRUE "ELSE #BEGIN $PAGE(OUTPUT); $MORE:=FALSE #END  END;    BEGIN (*MAIN PROGRAM*)  !INTRO; !REPEAT "REVISE; "WHATYPE; "DOWHAT; "DATAIN; "IF CAP THEN CAPSIZEC; WRITE('DYNAMIC',DYNAMIC:3:1,' KTS'); #GOTOXY(23,20); WRITE('STATIC ',WINDSPEED:4:1,' KTS'); "END; !IF DL THEN "BEGIN #GOTOXY(3,20); WRITE('HULL SPEED',HS:3:1) "END  END;   PROCEDURE FINISHED;   BEGIN !GOTOXY(4,23); !WRITE('DO YOU WANT MOR!GOTOXY(3,16); WRITE('SA/DISP',SADRATIO:6:1); !IF BN THEN WRITE(' BRUCE #',BRUCENUMBER:3:2); !IF DL THEN "BEGIN #GOTOXY(3,18); WRITE('DISP/WL',DLRATIO:6:1) "END; !IF MULTI AND CAP THEN "BEGIN #GOTOXY(22,18); WRITE ('CAPSIZE'); #GOTOXY(23,19)BEAM:3:2,' FEET'); !WRITELN; WRITELN; !IF MULTI AND (I>0) THEN "WRITE(' J=',J:2:2,' I=',I:2:2,' P=',P:2:2,' E=',E:2:2,' FT'); !GOTOXY(1,12); FOR A:=1 TO 19 DO WRITE (DASH,' '); !GOTOXY(9,14 ); WRITE('PERFORMANCE FACTORS ARE:'); ,5); WRITELN('BASED ON THE FOLLOWING INPUT:'); !WRITELN; WRITE(' WEIGHT',TRUNC(WT):7,' LBS. '); !IF DL AND (DWL>0) THEN WRITE('DWL ',DWL:4:2,' FEET'); !WRITELN; !WRITE(' SAIL AREA',TRUNC(SA):4,' SQFT '); !IF MULTI AND (BEAM>0) THEN WRITE('BEAM',T/2240)/EXP(3*LN(DWL/100)) "END; " "  PROCEDURE HULLSPEED; ! !BEGIN "IF DL THEN HS:=1.4*SQRT(DWL) !END; " "  PROCEDURE PRINT;   BEGIN  PAGE(OUTPUT); !GOTOXY(16,2); WRITE('RESULTS'); !GOTOXY(14,3); FOR A:=1 TO 11 DO WRITE(DASH); !GOTOXY(7&DYNAMIC:=0.555*WINDSPEED %END #END; # # "PROCEDURE SADISPCALC; " #BEGIN $IF SAD OR BN THEN %BEGIN &SADRATIO:=SA/EXP(2*LN(WT/64)/3); &BRUCENUMBER:=SQRT(SA)/EXP(LN(WT)/3) %END #END; # # !PROCEDURE DLCALC; ! "BEGIN #IF DL THEN DLRATIO:=(WLL DATA OKAY? '); $READLN(CH); $IF (CH<'Y') OR (CH>'Y') THEN REVISE "END; " " "PROCEDURE CAPSIZECALC; " " BEGIN $IF CAP AND MULTI THEN %BEGIN &CE:=((J+E)/3)*(P*E/(P*E+J*I))+2*J/3+WLHT; &WINDSPEED:=(0.682)*SQRT(WT*BEAM/(2*0.001785*SA*CE)); TER BEAM OF BOAT '); &READLN(BEAM) %END; % $WRITE('ENTER THE SAIL AREA '); $READLN(SA); % $IF DL THEN %BEGIN &WRITE('ENTER THE WATERLINE LENGTH '); &READLN(DWL) %END; % $WRITE('ENTER THE WEIGHT IN POUNDS '); $READLN(WT); $WRITELN; $WRITE('A(J) '); &READLN(J); &WRITE('ENTER DECK-MASTHEAD DISTANCE (I) '); &READLN(I); &WRITE('ENTER BOOM-MASTHEAD HEIGHT (P) '); &READLN(P); &WRITE('ENTER BOOM LENGTH (E) '); &READLN(E); &WRITE('ENTER DECK TO WATERLINE HEIGHT '); &READLN(WLHT); &WRITE('EN%WRITE('J,I,P,AND E MEASUREMENTS.'); %READLN(CH); WRITELN; %IF CH='Y' THEN CAP:=TRUE &ELSE CAP:=FALSE $END "END; " " !PROCEDURE DATAIN; ! "BEGIN #IF JUSTREVISE THEN EXIT(DATAIN); $IF CAP AND MULTI THEN $BEGIN &WRITE('ENTER BOW-MAST DISTANCE '); #READLN(CH); #IF CH='Y' THEN DL:=TRUE $ELSE DL:=FALSE; #IF MULTI AND SAD THEN BN:=TRUE $ELSE BN:=FALSE; #IF MULTI THEN $BEGIN %WRITELN; %WRITELN('WANT STATIC AND DYNAMIC WIND VELOCITIES'); %WRITELN('FOR CAPSIZING? THIS WILL REQUIRE'); ; " "BEGIN #IF JUSTREVISE THEN EXIT(DOWHAT); #ALL; #WRITELN('DO YOU WANT TO CALCULATE THE'); #WRITE('SAIL AREA/DISPLACEMENT RATIO?'); #READLN(CH); #IF CH ='Y' THEN SAD:=TRUE $ELSE SAD:=FALSE; #WRITELN; #WRITE('WANT THE DISPLACEMENT/LENGTH RATIO?WRITE('TYPE MONO OR MULTI. '); &REPEAT 'READLN(INPUT);WRITELN; 'IF INPUT='MONO' THEN MONO:=TRUE 'ELSE IF INPUT='MULTI' THEN MULTI:=TRUE; 'IF NOT MULTI AND NOT MONO THEN WRITE('REENTER '); &UNTIL MULTI OR MONO %END $END; " " "PROCEDURE DOWHATALC; "IF SAD THEN SADISPCALC; "IF DL THEN DLCALC; "HULLSPEED; "PRINT; "FINISHED; !UNTIL NOT MORE  END. " " h SAILCALC GTH ENTER THE WEIGHT IN POUNDS צALL DATA OKAY? ++Yɩ+Yō \%)|    .?צENTER BOOM LENGTH (E)  צENTER DECK TO WATERLINE HEIGHT ENTER BEAM OF BOAT צENTER THE SAIL AREA &9צENTER THE WATERLINE LENREMENTS.++Yá%% U%)צENTER BOW-MAST DISTANCE (J) צ!ENTER DECK-MASTHEAD DISTANCE (I)  ENTER BOOM-MASTHEAD HEIGHT (P) ''צ#WANT THE DISPLACEMENT/LENGTH RATIO?++Yá&&)'$$)צ'WANT STATIC AND DYNAMIC WIND VELOCITIES FOR CAPSIZING? THIS WILL REQUIREJ,I,P,AND E MEASULTI. ,P,MONOׯ(,MULTIׯ))(צ REENTER )(jUDO YOU WANT TO CALCULATE THESAIL AREA/DISPLACEMENT RATIO?++Yá((|צMONOHULL AGAIN?++YÓHצ+OKAY, CALCULATIONS WILL BE FOR A MULTIHULL.()$*()DO YOU WANT TO CALCULATE FOR AMONO OR MULTI-HULL?צTYPE MONO OR MUR DECK-WL HEIGHT 19sCvN+/!VU *)~צMULTIHULL AGAIN?++YÓG*OKAY, CALCULATIONS WILL BE FOR A MONOHULL.)$R DWL צ ENTER BEAM  ENTER J  ENTER I   ENTER P z ENTER E  P ENTE 8. E 9. DECK-WL HEIGHTצ& ENTER NUMBERS OF ITEMS TO BE REVISED++ Ó+ ENTER WEIGHT צ ENTER SAIL AREA צ ENTE+YáU 1. WEIGHT'"צ 2. SAIL AREA&)צ 3. WATERLINE LENGTH)%צ 4. BEAM 5. J 6. I 7. P    DO YOU WANT ALL PERFORMANCE  FACTORS? ++Yá'&)$%zVUצ$SAME BOAT AND PERFORMANCE FACTORS? +(HULL SAILBOATS. FOR MULTIS, IT WILL ALSO$CALCULATE WIND SPEEDS FOR STATIC ANDDYNAMIC CAPSIZE AS WELL AS THE BRUCE NUMBER.צ PUSH RETURN TO START*V  צWELCOME TO SAILCALC ȡ-  THIS PROGRAM WILL CALCULATE SAIL#AREA/DISPLACEMENT AND DISPLACEMENT/צ'LENGTH RATIOS FOR EITHER MONO OR MULTI-"*:?{ '$?@N &" d. &"?33  צRESULTS ȡ-BASED ON THE FOLLOWING INPUT:צ WEIGHT צ LBS. &/צDWL צ FEET SAIL AREA $WRITELN('Q)UIT'); $READ(T); $CASE T OF &'N':WRITE(P,CHR(27),CHR(19)); &'P':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(17)); &'E':WRITE(P,CHR(27),CHR(19),CHR(27),CHR(14)); &'C':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(20)); &'W':WRITE(P,CHR(27),CHR(20),CHR(27)ILENAME,'?? (Y OR N)'); $READ(T); $IF T='N' THEN 'BEGIN )WRITELN('PRINT WHICH FILE? '); )READLN(FILENAME); 'END; $WRITELN('CHOOSE TYPE '); $WRITELN('N)ORMAL P)ROPORTIONAL E)LONGATED'); $WRITELN('C)ONDENSED W)IDE-CONDENSED'); ,'W':WRITE(P,CHR(27),CHR(20),CHR(27),CHR(14)) *END; (end; $END;  CLOSE(F);  END;    BEGIN "DONE:=FALSE; "FILENAME:='SYSTEM.WRK.TEXT'; "REWRITE(P,'PRINTER:'); "REPEAT $WRITE(P,CHR(13),CHR(27),CHR(15),CHR(27),CHR(10)); $WRITELN('PRINT ',FCHR(10)); $END;  CLOSE(F);  END;  PROCEDURE DBLRUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); &IF EOLN(F) THEN (begin *WRITE(P,CHR(13),CHR(27),CHR(10)); *case t of ,'E':WRITE(P,CHR(27),CHR(14)); PROGRAM PRINT;  VAR "T,CH:CHAR; "F:TEXT; "P:INTERACTIVE; "DONE:BOOLEAN; "FILENAME:STRING; " "  PROCEDURE RUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); $ IF EOLN(F) THEN WRITE(P,CHR(13),CHR(27),N^B KTSצSTATIC  KTS&)צ HULL SPEED"0w צDO YOU WANT MORE CALCULATIONS? +V+Yá*  *Wf2% ' & *BB#NTr  "D$&צ BRUCE #&&DISP/WL )%צCAPSIZEצDYNAMIC KTSצSTATIC  KTS&)צ HULL SPEED"0w צDO YOU WANT MORE CALCULATIONS? +V+Yá*  *Wf2ȡ-  צPERFORMANCE FACTORS ARE:SA/DISP$&צ BRUCE #&&DISP/WL )%צCAPSIZEצDYNAMICצ SQFT )/צBEAMצ FEET) צ J= I=  P= E=  FT ,CHR(14)); &'Q':DONE:=TRUE $END; $CASE T OF &'N','P','C':RUN; &'E','W':DBLRUN; &'Q':WRITELN(' THAT''''S ALL FOLKS') $END;  UNTIL DONE;  END.   PROGRAM PRINT;  VAR "T,CH:CHAR; "F:TEXT; "P:INTERACTIVE; "DONE:BOOLEAN; "FILENAME:STRING; " "  PROCEDURE RUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); $ IF EOLN(F) THEN WRITE(P,CHR(13),CHR(27),N^B222222222222b22228_2CW*b * "$&(`2_[צ THAT''S ALL FOLKS1CW*99 OSM "$&(]_2| &, PORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22222222222222b22228_2CW*b * "$&(`2_[צ THAT''S Ná:PRINT WHICH FILE? `P CHOOSE TYPE !N)ORMAL P)ROPORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22&G  "$U  ץ2^1_`SYSTEM.WRK.TEXTתP2צPRINTER:2 2222 PRINT ` ?? (Y OR N)` <2 2 22 Pd` 2 2 22 @22W2222-EWBvPRINT CHR(10)); $END;  CLOSE(F);  END;  PROCEDURE DBLRUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); &IF EOLN(F) THEN (begin *WRITE(P,CHR(13),CHR(27),CHR(10)); *case t of ,'E':WRITE(P,CHR(27),CHR(14)); ,'W':WRITE(P,CHR(27),CHR(20),CHR(27),CHR(14)) *END; (end; $END;  CLOSE(F);  END;    BEGIN "DONE:=FALSE; "FILENAME:='SYSTEM.WRK.TEXT'; "REWRITE(P,'PRINTER:'); "WRITE(P,CHR(13),CHR(27),CHR(15),CHR(27),CHR(10)); "REPEAT $WRITELN('PRINT ',FN^B222222222222b22228_2CW*b * "$&(`2_[צ THAT''S ALL FOLKS1CW*99 OSM "$&(]_2| &, PORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22222222222222b22228_2CW*b * "$&(`2_[צ THAT''S Ná:PRINT WHICH FILE? `P CHOOSE TYPE !N)ORMAL P)ROPORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22&G  "$U  ץ2^1_`SYSTEM.WRK.TEXTתP2צPRINTER:2 2222 PRINT ` ?? (Y OR N)` <2 2 22 Pd` 2 2 22 @22W2222-EWBvPRINT ,CHR(14)); &'Q':DONE:=TRUE $END; $CASE T OF &'N','P','C':RUN; &'E','W':DBLRUN; &'Q':WRITELN(' THAT''''S ALL FOLKS') $END;  UNTIL DONE;  END.  $WRITELN('Q)UIT'); $READ(T); $CASE T OF &'N':WRITE(P,CHR(27),CHR(19)); &'P':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(17)); &'E':WRITE(P,CHR(27),CHR(19),CHR(27),CHR(14)); &'C':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(20)); &'W':WRITE(P,CHR(27),CHR(20),CHR(27)ILENAME,'?? (Y OR N)'); $READ(T); $IF T='N' THEN 'BEGIN )WRITELN('PRINT WHICH FILE? '); )READLN(FILENAME); 'END; $WRITELN('CHOOSE TYPE '); $WRITELN('N)ORMAL P)ROPORTIONAL E)LONGATED'); $WRITELN('C)ONDENSED W)IDE-CONDENSED'); Ná:PRINT WHICH FILE? `P CHOOSE TYPE !N)ORMAL P)ROPORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22&G  "$U  ץ2^1_`SYSTEM.WRK.TEXTתP2צPRINTER:2 2222 PRINT ` ?? (Y OR N)` <2 2 22 Pd` 2 2 22 @22W2222-EWBvPRINT ,CHR(14)); &'Q':DONE:=TRUE $END; $CASE T OF &'N','P','C':RUN; &'E','W':DBLRUN; &'Q':WRITELN(' THAT''''S ALL FOLKS') $END;  UNTIL DONE;  END.  $WRITELN('Q)UIT'); $READ(T); $CASE T OF &'N':WRITE(P,CHR(27),CHR(19)); &'P':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(17)); &'E':WRITE(P,CHR(27),CHR(19),CHR(27),CHR(14)); &'C':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(20)); &'W':WRITE(P,CHR(27),CHR(20),CHR(27)ILENAME,'?? (Y OR N)'); $READ(T); $IF T='N' THEN 'BEGIN )WRITELN('PRINT WHICH FILE? '); )READLN(FILENAME); 'END; $WRITELN('CHOOSE TYPE '); $WRITELN('N)ORMAL P)ROPORTIONAL E)LONGATED'); $WRITELN('C)ONDENSED W)IDE-CONDENSED'); ,'W':WRITE(P,CHR(27),CHR(20),CHR(27),CHR(14)) *END; (end; $END;  CLOSE(F);  END;    BEGIN "DONE:=FALSE; "FILENAME:='SYSTEM.WRK.TEXT'; "REWRITE(P,'PRINTER:'); "REPEAT $WRITE(P,CHR(13),CHR(27),CHR(15),CHR(27),CHR(10)); $WRITELN('PRINT ',FCHR(10)); $END;  CLOSE(F);  END;  PROCEDURE DBLRUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); &IF EOLN(F) THEN (begin *WRITE(P,CHR(13),CHR(27),CHR(10)); *case t of ,'E':WRITE(P,CHR(27),CHR(14)); PROGRAM PRINT;  VAR "T,CH:CHAR; "F:TEXT; "P:INTERACTIVE; "DONE:BOOLEAN; "FILENAME:STRING; " "  PROCEDURE RUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); $ IF EOLN(F) THEN WRITE(P,CHR(13),CHR(27),222222222222b22228_2CW*b * "$&(`2_[צ THAT''S ALL FOLKS1CW*99 OSM "$&(]_2| &, PORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22???תY6!  ת&צP%[VTUWX%Y7888% š tWelcome ?, to Apple II Pascal 1.1Based on UCSD Pascal II.18 6øYצ???JanתצFebMarתצAprMayתצJunJulתצAug Sepת צOct Novת צDec ???תצ?????? *SYSTEM.WRK.TEXTײ& צ*SYSTEM.WRK.CODE ,  7 :9CONSOLE:ת(:9YצSYSTERM:(8:99988:9  6 ۪1٦׷)צ: ܢܢH d    Y0&תת.ת Ɓf(ߡʁ% ʁbʁ%́bʁ%́%Y;??ٟá'C צCONSOLESYSTERMצGRAPHICPRINTERצREMINREMOUTz>77:: צ:SYSTEM.LINKERƁ&̨<́b ́cʁcȡ~ؤ́dʁdתʁd0ʁdʁd؞&"á*ʁd ضá0?ʁdצ*SYSTEM.STARTUP(߫7́%́eʁ%ʁeȡlضʁ%ʁbQ́fƁfʁdƁfƁ&ʁ%ʁݢʁݢʁʁݢʁݢʁݢʁݢ  ʁ تٞ&"á ~٤  :SYSTEM.ASSMBLERת :SYSTEM.COMPILERת :SYSTEM.EDITORת :SYSTEM.FILERתʀ=ʀ* ʀ́ʁܢGʁܢHʁܢIʁܢ%O tƀ&́ʁܢʁʁܢʁܢ%́ݲ ʁݢʁݢʁݢʁݢʁݢ ʁݢʁݢ ʁݢ ʁݢ ʁݣ  ʁݢʁܢ́ʁݢ٢ š٢ ٢٢ 4$  ؗ(/  ؗ(tDoo odoo'z*SYSTEM.MISCINFOתPƀƀerror: (צUnimplemented instruction(צFloating point error(uString overflowת(]Programmed HALTת(EProgrammed break-pointת(&nS5  oYC: *( vol not foundת(file not foundת(צ dup dir entry(צfile already open(צ file not open(צbad input format(disk write protectedת(bצillegal block #(Jצillegal buffer address(+$fO7  y^Hצ IO צ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צ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(222222222222b22228_2CW*b * "$&(`2_[צ THAT''S צCurrent date is C -C-C 99ȡצ"(C) Apple Computer Inc. 1979, 1980צ(C) U.C. Regents 1979%System re-initialized 6:rNP  צP%[VTUWX%Y7888% š tWelcome ?, to Apple II Pascal 1.1Based on UCSD Pascal II.1:(šR.%+(]ˡ([8]+(\"á%[צ Terminator=[צ , change it?)צNew terminator:[UO צ: ) Running...ء ء   Swapping is VonoffצToggle swapping? VVzNew exec name+00.0.0ȡ#+.//a/zȄ +./ ..+EXEC/ׯjUTVP+\"á(TS.OQ[QQP+  Hm% á.צNested exec commands illegal"צError opening execd Z6PO6 "ء PKצExecuteצ what fileצ? Pš7`  7 š+ š%SYSTEM.WRK.CODE׷sצSYSTEM.WRK.CODEFš5.CODEׯ.:(7,*SYSTEM.WRK.CODE[*]תצTo what codefile? ( צO,á<צ$88š8(8X+,,"ˡ  Can't open ,   áث what text? ( ׯ&,á (+(צ.TEXT888Ä8 "ˡ$צ Can't find ::9 ƀצ:9 ƀ:SYSTEM.SWAPDISK&Ʋڤ  R   88( áצ Assemblingצ Compiling...á999':::::&:(áצAssembleצCompilec(s) not available 1 \ @ ڤ  áڤ !~ e ת*U  !! !:!!ڤ  ڤ  áܡ #צMust L(ink firstƁ1ƀ:צ.Conflict between intrinsic and user segment(s)ƀצ*SYSTEM.LIBRARY ,צ Can't load required intrinsic(s)Nƀ/צ#Required intrinsi"ˡCۡ>"áIllegal file nameצNo file ́3́4ʁ4́5ʁ5ˡ  not codeʁ41ʁ5"ˡ Bad block #01Ɓ1aݡ9צ Linking...ݢ`ڤá Zxȡ2ݤˡ"ޢ`ݤۼ: TڪƁ Ɓ "á9̂.ʁ ʁ"ˡ  Ɓ Ɓ Vj ުPڶڳ@@YyÍ, 4ۢڤ ɡ$ڪP-19:!1ׯ)Illegal filenamenTޢ ȡSڤ ˡ@۳-ܢ0ۤ צCurrent date is C -C-C 99ȡצ"(C) Apple Computer Inc. 1979, 1980צ(C) U.C. Regents 1979%System re-initializedSȡU/U[,-Z N:98:9á.Y(Y*SYSTEM.ATTACH   áá'*SYSTEM.STARTUP % áá  6   ˡFצJCommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [1.1]P')%?áSF=Command: U(ser restart, I(nitialize, H(alt, S(wap, M(ake execתP')%W 6!W,z3 (not saved) No workfileS%  O ?(&Ɓ.񄓡9&צThrow away current workfile ?  ءצ*SYš š۾.ˡצ([šܕ!!(š۾:ˡ١.TEXTת .CODEת!!ȡ(ܾܾ š!!Ȅ!!P!x!P %',@@JBGD> Z`<@X áޢá ~תޢޢޢ024<& צ š š۾.ˡצ([šܕ!!(š۾:ˡ١.TEXTת .CODEת!!ȡ(ܾܾ š!!Ȅۤ  dÄÍ"ߢ ˄"ɡۤ  dáߢ  dá ߢ C#ޣC˄ ߢ C ߢ ۤ ߢޣ ޣߢ ޣޢ ޢۤ ޢ áޢá ~תޢޢޢ024<& צ ) ! 767䚹 :V@28˄ޢߢšáޢ ޣ ߢ  dޣޢޣޣߢ  dÍÍޢˡ ݓۤ ۤ Äݓۢת   ١  n ١ á9 ٓ/! !!١ˡá ~ݤݚ ˄ܟń ١á  ޤ wš  iá Ä,ޤ  ɡ"áޤ PġMáš7 ܂ۻݪ d #(   !š Í 7ÄU ǐɄ:6ń~66! šá٢.ٕ۶š ڸ۸۶ š۸ ڸ:   ȡQ  ȡ   ȡ? ȡ  ġ  á ڢڢڢڣ ڣ ١ڢ ڣ ڣ١ ڢڣڣ ڣ áڣڣš ڢڣڣ hڢ ڢ١ڢ!ڣڣ ڢ!ڣڣ ڢÄڣ &ڢ ڣ ڢ! ڢ!ڣڣ ڢڢ ڣڢÄڢ  쓡 Xצ Linking...  ˡ&צ Restarting...צ U not allowedxRpUT-Há6OKTU7AX0NNP3 "jC(,. C fpP @$ j4 6L $.1]P')%?áSF=Command: U(ser restart, I(nitialize, H(alt, S(wap, M(ake execתP')%W 6!W,z3쓡 Xצ Linking...  ˡ&צ Restarting...צ U not allowedxRpUT-Há6OKTU ! RLONGINTIPASCALIOCHAINSTUTRANSCENTURTLEGRTURTLEGRAPPLESTU   ' "PROCEDURE FSEEK(VAR F: FIB; RECNUM: INTEGER); PROCEDURE FREADREAL(VAR F: FIB; VAR X: REAL); "PROCEDURE FWRITEREAL(VAR F: FIB; X: REAL; W, D: INTEGER);   IMPLEMENTATION $ "PROCEDURE FSEEK(*VAR F: FIB; RECNUM: INTEGER*); $LABEL 1; $VAR BYTE,B:L,VSNNNNNNNNNNNYO MIHA<4-('  AH3P|v:n ƅ|L,hƀhhh8hohlhXhhhFffff80)ƅܥ#FfII懥HHL,L5hhhhhƀhh-ȑhhƀ 0ȑƀ0hJJJJ 0ȑ) 0ȑƀĆL>ʈƅ ~~擥 ~ 抦|ɥ8包~ƅLlII懩&&u`hh HHHHHL,} ei|ʽ 8襁i}}ʈƍƎƋƊЌإLl2d|e~28ʈƅyʈƅƉ` DL?Ł|}ƅL\E||怦}ʚH恺8倅偪ʈƅ})H揥L\LlL,E0LL DL\ ILlL,ELL DL\Ee8刅刪ʈʈww&~ʈƅFyʈƅ~HHHHHHL,~ʈƅFHHHH恥HL,0~}ʈƅ0I愊iʈؚH恥LŁ|} ƅL\ ~~8ʈƅ  ILlL, DhƁ}eʆƀƀ|ʊe~8偅z{lzhhhhhh8冐 0 h HHHL,L5IL,h h'(ʈ D.ł( Ł|} ŀ}|ƀL;~HHL,~HHY   9    ' sU7z ;|hvhwhhxylxMz|vwlvl llhzh{hƁhh-۲z0ݡߑ ع      y  &  * عteVG8  )  T uh[NA4'á +-ÍNTEGER[36]) /END; ' " "PROCEDURE FREADDEC(VAR F: FIB; VAR D: STUNT; L: INTEGER); "PROCEDURE FWRITEDEC(VAR F: FIB; D: DECMAX; RLENG: INTEGER); "  IMPLEMENTATION L E M.SWAPDISK&:(7,צ*SYSTEM.WRK.CODE[*]To what codefil $ "TYPE DECMAX = INTEGER[36]; STUNT = RECORD CASE INTEGER OF 12:(W2:INTEGER[4]); 13:(W3:INTEGER[8]); 14:(W4:INTEGER[12]); 15:(W5:INTEGER[16]); 16:(W6:INTEGER[20]); 17:(W7:INTEGER[24]); 18:(W8:INTEGER[28]); 19:(W9:INTEGER[32]); 110:(W10:IG BB'"G5(C)Apple Computer Inc. 1979,1980 (C)U.C. Regents 1979LOCK,N: INTEGER; "BEGIN SYSCOM^.IORSLT := INOERROR; $IF F.FISOPEN THEN &WITH F,FHEADER DO (BEGIN BLOCK := 0; BYTE := FBLKSIZE; *IF (RECNUM < 0) OR NOT FSOFTBUF OR 2((DFKIND = TEXTFILE) AND (FRECSIZE = 1)) THEN ,GOTO 1; (*NO SEEK ALLOWED*) *IF FRECSIZE < FBLKSIZE THEN ,BEGIN N := FBLKSIZE DIV FRECSIZE; .WHILE RECNUM-N >= 0 DO 0BEGIN RECNUM := RECNUM-N; 2BYTE := BYTE+N*FRECSIZE; 2WHILE BYTE > FBLKSIZE DO 4BEGIN BLOCK := BLOCK+1; 6BYTE := BYTE-FBLKSIZE 4END 0END ,END; *WHILE RECNUM > 0 DO ,>?  ȡ!2? 5? f   '~~5?. ????2 ?  ??  1?   ?=~@:?^>[' ~ ~  ġ+@ነ? ?> ??   '~~5?. ??  ??;ܳ1?ܳ^; Sƀ> ?L=[?    ??tI$'>ߡڑ߳RI@߳}:#9oLE.6Z"O$<=*     4? ŽDnP42D<.CODECEND.CODECODEPDISKҎԎ,nr r nrnʤr INT^n6 6 \^^\n6 r <INTP3XTT "FUNCTION SIN(X:REAL):REAL; "FUNCTION COS(X:REAL):REAL; "FUNCTION EXP(X:REAL):REAL; "FUNCTION ATAN(X:REAL):REAL; "FUNCTION LN(X:REAL):REAL; "FUNCTION LOG(X:REAL):REAL; "FUNCTION SQRT(X:REAL):REAL;   IMPLEMENTATION E BBBLNz)$ $ ݞ$' ݑ$ $݂ō $݂ġ ݂$ $ $ȡ%  0 ފ$čV   .ˡ:  Eɡ  -ݑ š 0 0 ߿`ġ(   ݂. ݕ ؂݂3  ݕ 0 . ݑ0 ݕ݂ ؂ ɡ  |, R -   $ $ ݞ$' ݑ$ $݂ō $݂ġ ݂$ $ $ȡ%  0 ފ$čV   .ˡ:  E.áBڲzؼ0ݞ$ڲzjeEÍɍEáޢ >ۓɡ ؼ݀$ ؼݞ$ۡܡ ؼ$ Dɍ -   "ˡ\ݣ ݣ šݢ ݣ ݢݣݣ ݣ ݣݣńݢݣݢݢݢˡݢݢ ۚݢܚ  / |á +-Í-ڲzؼ 0ݢݣޢÄɡ3ڕġ$ڕšš"šޣ Ąޣ ݣ ˡRݣ &ݢ ݢݢ!ݣ "ˡݣ ˄ݢ!ۂBEGIN RECNUM := RECNUM-1; .BYTE := BYTE+FRECSIZE; .WHILE BYTE > FBLKSIZE DO ' "PROCEDURE FSEEK(VAR F: FIB; RECNUM: INTEGER); PROCEDURE FREADREAL(VAR F: FIB; VAR X: REAL); "PROCEDURE FWRITEREAL(VAR F: FIB; X: REAL; W, D: INTEGER); ??2 ?  ??  1?   ?=~@:?^>[' ~ ~ $TYPE $ SCREENCOLOR=(none,white,black,reverse,radar, 3black1,green,violet,white1,black2,orange,blue,white2); $ $PROCEDURE INITTURTLE; $PROCEDURE TURN(ANGLE: INTEGER); $PROCEDURE TURNTO(ANGLE: INTEGER); $PROCEDURE MOVE(DIST: INTEGER); $PROCEDUREhh h2ɡhh h.آآآǿآآǿآآD ٚ SYSTEM.CHARؑؑ!ٹا ZZا Zا Zا ZZfا ZZا Z:ا Zا ZZb8 ؂ɡLjB|?a QZR|?ٽ RZP}?4 SZX~? TZD~? UZO? VZC?[` WZ ?& XZ)?ؽ YZR?  ZZR?2 ZZá.ٹ# BZOi?޽ CZ(k?7 DZCm?[ EZEn? FZGp? GZTr?  HZ s?yx IZ;t?hн JZLv?D KZNw?F LZ x?Re MZOy?Pp NZ z?g OZ;{?K PZ 4ZI? 5ZTL?Xs 6ZUO? 7Z)Q? 8ZNT?; 9Z)V?% :ZEY? ;Z[?Lo <Z(]?г =ZP_? >Z(b? ?ZLd?  @ZTf?] AZUh?D? 'ZO!? (ZC$? )Z '?| *Z)+?+L +ZR.?l ,ZR1?ս -ZA5?D .Z8?& /Z;?: 0Z>?> 1ZA?4 2Z.D?v 3Z.F? ZG>? ZT>ca Z >*r Z;>aq ZL>^ ZN>9 Z ? ZO?ٽ Z ?ƨ !Z; ?vm "ZB?F' #ZR?ս $ZP?y %ZX? &Z ZN1>н Z)C>oc ZET> Zf>Y Z(w>g ZP>탽 Z(>K  ZL>ȱ ZT>z7 ZU>ٰ ZO>? Z(>| ZC>}̽ ZE> 6تP+,+,ȡ+++V 0 Z Zʎ^ Z) ><0l   ڪP."ˡ[̄$ʄ$N.ʄ$M ń.ʄ$M  ʄ$̄$.ʄ$M .ʄ$M Y@ ) Sǯ?Ǭ?ǰ?Ǯ?ǩ?áǫ?Ǭ?r2 ٢ؚڢؚڢٚ ۚܢښܢٚܢؚɡšܢɡܢǿšܢǿɡܢɡܢ; $PROCEDURE CHARTYPE(MODE: INTEGER); $ "IMPLEMENTATION E $PROCEDURE TEXTMODE; $PROCEDURE GRAFMODE; $PROCEDURE FILLSCREEN(FILLCOLOR: SCREENCOLOR); $PROCEDURE VIEWPORT(LEFT,RIGHT,BOTTOM,TOP: INTEGER); $FUNCTION TURTLEX: INTEGER; $FUNCTION TURTLEY: INTEGER; $FUNCTION TURTLEANG: INTEGER; $FUNCTION SCREENBIT(X,Y: INTEGER): BOOLEAN; $PROCEDURE DRAWBLOCK(VAR SOURCE; ROWSIZE,XSKIP,YSKIP,WIDTH,HEIGHT, 8XSCREEN,YSCREEN,MODE: INTEGER); $PROCEDURE WCHAR(CH: CHAR); $PROCEDURE WSTRING(S: STRING) MOVETO(X,Y: INTEGER); $PROCEDURE PENCOLOR(PENMODE: SCREENCOLOR); $PROCEDURE TEXTMODE; $PROCEDURE GRAFMODE; $PROCEDURE FILLSCREEN(FILLCOLOR: SCREENCOLOR); $PROCEDURE VIEWPORT(LEFT,RIGHT,BOTTOM,TOP: INTEGER); $FUNCTION TURTLEX: INTEGER; $FUNCTION TSETáSYSTEM.CHARSET  @! @4` - G`` 8`*UH)JJh & & f)4#i JL` T$Q%P)Q I L`#JI`'  I` I0ݩ(0/,",i8i#Hiihifi`i,i,3iPII4ifH8H hIiH h hL8$hhhhhh9.:.;.<0(0(099JH;HHH`Z310/$ T?@AB ?UB`2<(^`L+L10`LELK뭕 JF8ȹe8ИL`Lø{{ttmnghab\\WWRRMNIIEEAA=>::673401..+,))&'$%"# !hhhhhhh)hpdHHHH`4hhhhhhhi)hH`HHH`0hhhJhh)*XhHH`"hhhhhhH! \L HHH`<hhhhhhHHLM0ON: INTEGER); $ "IMPLEMENTATION E .CODESKSWAPDISKҎԎ,nr r nrnʤr LIT^n6 6 \^^\n6 r DLITURAS P $ $FUNCTION PADDLE(SELECT: INTEGER): INTEGER; $FUNCTION BUTTON(SELECT: INTEGER): BOOLEAN; $PROCEDURE TTLOUT(SELECT: INTEGER; DATA: BOOLEAN); $FUNCTION KEYPRESS: BOOLEAN; $FUNCTION RANDOM: INTEGER; $PROCEDURE RANDOMIZE; $PROCEDURE NOTE(PITCH,DURATIH v-DRIVE $-P-v$-FNAM D.SETSINE1`--SETSINE2SETDEFAU-SETPORT -P -2(MAKEPOOF=2. F | R T DL X,j X & Z,DX p,vp,DY vBKGND PEEKSTRO,ADDRESS ,vDIRSRCe*e+)*)fjfjfj+*fjfjfj8 8) )` (J(F ((Lee Lw  )Lb I1Lb )QLb        xhXhhhhhhhhHH v # " `' & 8 ! 0"ee8 !  e e8"#0 88$ % 0"ee8$ %  e e8&'0 8heheHHL<  B  ""##8&$iT8&UU !  U"# UT`+%$Y)!p v hhhhhhhhhhH8 )%HHH`5>hhh)hh h h h hhhh &    0&!"   #"  ` ` `SN-(' . hhhhhhHH `  HH8H8  hhhL .+ rhh hehe)`%)8`)    L)ˢ   â LE % %  )  `8`&e epɀj f f&e e pɀjff %) % )`% L=`0(%$ $ @'cY}zeNEDh0h1hhhhh.h/h,h-h*h+h(h)(ȱ(*ȱ*,ȱ,.ȱ. HH1H0H(ȹ(*ȹ*,ȹ,.ȹ.`   ""##  Iif E J j 8  e e  `(J 8 e  ` Z Z< $ %$PQ $  ߩ $ Li`t^ "PROCEDURE SETCHAIN(TYTLE:STRING); "PROCEDURE SETCVAL(VAL:STRING); "PROCEDURE GETCVAL(VAR VAL:STRING); "PROCEDURE SWAPON; "PROCEDURE SWAPOFF; "  IMPLEMENTATION E :::&:(xáצAssembleצCompile what t BEGIN  CT:=RANDOM MOD 5; "CASE CT OF &0: C:=WHITE; &1: C:=BLUE; &2: C:=ORANGE; &3: C:=VIOLET; &4: C:=GREEN; $END;  END;    PROCEDURE BOUNCE(LIM:INTEGER;VAR N,D:INTEGER);  BEGIN "NOTE(NL.Y1 DIV 4,1); "D:=-D; "IF N<0 THEN N:=-N "ELSE N:&X1:=RANDOM MOD 279+1; &X2:=RANDOM MOD 279+1; &Y1:=RANDOM MOD 191+1; &Y2:=RANDOM MOD 191+1; $END; "GETNEWCOUNT(ONE); "GETNEWCOUNT(TWO); "CLOR:=WHITE; "AT:=1; "INITTURTLE;  END;    PROCEDURE NEWCOLOR(VAR C:SCREENCOLOR);  VAR "CT:INTEGER; $WRITELN('TYPE NUMBER (1..150) TO DISPLAY AT ONETIME'); $WRITELN('(SUGGESTION: USE 75)'); $READ(NUMLINES); "UNTIL (NUMLINES > 0) AND (NUMLINES < 151); "WRITELN('TYPE TO START TO QUIT'); "READ(CH); "WITH NL DO $BEGIN &LCOLOR:=WHITE; ..TERRY PUNDIAK'); "WRITELN(' (SEE NOV.80 BYTE P62 FOR THEORY'); "WRITELN('DO YOU WANT SOUNDS?'); "READ(CH); "IF CH = 'Y' THEN MUSIC:=TRUE; "WRITELN(' DO YOU WANT COLOR?'); "READ(CH); "IF CH = 'Y' THEN COLOR:=TRUE; "REPEAT M MOD 18 - 8);  END;   PROCEDURE INITIALIZE;  VAR "X:INTEGER; "CH:CHAR;  BEGIN "RANDOMIZE; "FOR X:=1 TO 150 DO $WITH LINES[X] DO &BEGIN (X1:=0;X2:=0;Y1:=0;Y2:=0; (LCOLOR:=BLACK; &END; "MUSIC:=FALSE; "COLOR:=FALSE; "WRITELN('KINETIC ART.LOR:BOOLEAN; "ONE,TWO:COUNTER; "NL:LINE; "AT,NUMLINES:INTEGER; "CLOR:SCREENCOLOR; "LINES:ARRAY[1..150] OF LINE; "CH:CHAR; "  PROCEDURE GETNEWCOUNT(VAR C:COUNTER);  BEGIN "C.COUNT:=5*(RANDOM MOD 10 + 1); "C.DX:=(RANDOM MOD 18 - 8); "C.DY:=(RANDO PROGRAM ART;  USES TURTLEGRAPHICS,APPLESTUFF;  CONST "C=13;  TYPE "COUNTER=RECORD ,COUNT:INTEGER; ,DX:INTEGER; ,DY:INTEGER; *END; "LINE=RECORD )X1:INTEGER; )X2:INTEGER; )Y1:INTEGER; )Y2:INTEGER; )LCOLOR:SCREENCOLOR; 'END;  VAR "MUSIC,CON^ext? ( ׯ,á(+( "ˡ$ Can't find ::9 ƀ:ײ9 ƀ:צSYSTEM.SWAPDISK&:(7,צ*SYSTEM.WRK.CODE[*]To what codتPš++0تPRš&+R+P&P0&Ršز&RPز&PR,VV"6h ssembleצCompile what text? ( ׯ,á(+( "ˡ$ Can't find ::9 ƀ:ײ9 ƀ:צSYSTEM.SWAPDISK&:(7,צ*SYSTEM.WRK.CODE[*]To what cod= LIM-N;  END;    PROCEDURE GETNEWLINE;  VAR !N:INTEGER; !  BEGIN "IF ONE.COUNT=0 THEN $BEGIN &GETNEWCOUNT(ONE); $ IF COLOR THEN NEWCOLOR(NL.LCOLOR); $END; "IF TWO.COUNT=0 THEN $GETNEWCOUNT(TWO);  N:=NL.X1+ONE.DX; "IF (N<0) OR (N>279) THEN BOUNCE(558,N,ONE.DX); "NL.X1:=N; "N:=NL.Y1+ONE.DY; "IF (N<0) OR (N>191) THEN BOUNCE(382,N,ONE.DY); "NL.Y1:=N; "N:=NL.X2+TWO.DX; "IF (N<0) OR (N>279) THEN BOUNCE(558,N,TWO.DX); "NL.X2:=N; "N:=NL.Y2+TWO.DY; "IF (N<0) OR (Nǖ áǖQá #&V >ɡ(á áō . ث ǿō ~ ث ō .ث ǿō ~ثبݹ- '!   %')')+ Rx  ǿ ǿ *ٹ%  >ɡ(á áō . Yá DO YOU WANT COLOR?Yáצ*TYPE NUMBER (1..150) TO DISPLAY AT ONETIMEצ(SUGGESTION: USE 75) ǗɄ#TYPE TO START TO QUIT آآ0ǖȡ,ǖۢۢۢۢKINETIC ART...TERRY PUNDIAKצ (SEE NOV.80 BYTE P62 FOR THEORYצDO YOU WANT SOUNDS?BpART &REMOVELINE(LINES[AT]); $UNTIL KEYPRESS; $READ(CH); " TEXTMODE; "UNTIL CH='Q';  END. " n  END;   BEGIN(*MAIN*); "REPEAT $INITIALIZE; $REPEAT &GETNEWLINE; &IF MUSIC THEN NOTE(NL.Y1 DIV 4,4); &DRAWLINE; &IF MUSIC THEN NOTE(NL.Y2 DIV 4,8); &LINES[AT]:=NL; &IF AT=NUMLINES THEN (BEGIN *AT:=1; (END &ELSE AT:=AT+1; URE REMOVELINE(L:LINE);  BEGIN "PENCOLOR(NONE); "MOVETO(L.X1,L.Y1); "CASE L.LCOLOR OF " WHITE1,GREEN,VIOLET:PENCOLOR(BLACK1); +RADAR,WHITE2,REVERSE,ORANGE,BLUE:PENCOLOR(BLACK2); +WHITE,BLACK,NONE:PENCOLOR(BLACK); (END; "MOVETO(L.X2,L.Y2);>191) THEN BOUNCE(382,N,TWO.DY); "NL.Y2:=N; "ONE.COUNT:=ONE.COUNT-1; "TWO.COUNT:=TWO.COUNT-1;  END;   PROCEDURE DRAWLINE;  BEGIN "WITH NL DO $BEGIN &PENCOLOR(NONE); &MOVETO(X1,Y1); &PENCOLOR(LCOLOR); &MOVETO(X2,Y2); $END;  END; $  PROCEDث ǿō ~ ث ō .ث ǿō ~ثبݹ- '!   %')')+ RxN^` <2 2 22 Pd` 2 2 22 @22W2222-EWBDPRINT OF &'N','P','C':RUN; &'E','W':DBLRUN; &'Q':WRITELN(' THAT''''S ALL FOLKS') $END;  UNTIL DONE;  END.  &'N':WRITE(P,CHR(27),CHR(19)); &'P':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(17)); &'E':WRITE(P,CHR(27),CHR(19),CHR(27),CHR(14)); &'C':WRITE(P,CHR(27),CHR(15),CHR(27),CHR(20)); &'W':WRITE(P,CHR(27),CHR(20),CHR(27),CHR(14)); &'Q':DONE:=TRUE $END; $CASE T'BEGIN )WRITELN('PRINT WHICH FILE? '); )READLN(FILENAME); 'END; $WRITELN('CHOOSE TYPE '); $WRITELN('N)ORMAL P)ROPORTIONAL E)LONGATED'); $WRITELN('C)ONDENSED W)IDE-CONDENSED'); $WRITELN('Q)UIT'); $READ(T); $CASE T OF ,'W':WRITE(P,CHR(27),CHR(20),CHR(27),CHR(14)) *END; (end; $END;  CLOSE(F);  END;    BEGIN "DONE:=FALSE; "FILENAME:='SYSTEM.WRK.TEXT'; "REWRITE(P,'PRINTER:'); "REPEAT $WRITELN('PRINT ',FILENAME,'?? (Y OR N)'); $READ(T); $IF T='N' THEN CHR(10)); $END;  CLOSE(F);  END;  PROCEDURE DBLRUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); &IF EOLN(F) THEN (begin *WRITE(P,CHR(13),CHR(27),CHR(10)); *case t of ,'E':WRITE(P,CHR(27),CHR(14)); PROGRAM PRINT;  VAR "T,CH:CHAR; "F:TEXT; "P:INTERACTIVE; "DONE:BOOLEAN; "FILENAME:STRING; " "  PROCEDURE RUN; "  BEGIN "RESET(F,FILENAME); "WHILE NOT EOF(F) DO $BEGIN &READ(F,CH); &WRITE(P,CH); $ IF EOLN(F) THEN WRITE(P,CHR(13),CHR(27),&G  "$U  ץ2^1_`SYSTEM.WRK.TEXTתP2צPRINTER:PRINT ` ?? (Y OR N)Ná:PRINT WHICH FILE? `P CHOOSE TYPE !N)ORMAL P)ROPORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT2222222P)RINT BUFFER צA)SCII CHANGE H)EX CHANGE צQ)UITENTER CHOICE:  ץ0123456789ABCDEF __áT   MENU OF OPTIONS צ R)EAD BLOCK  W)RITE BLOCK צD)ISPLAY BUFFER DEF^l __ צ:  _ :  P š(HEX VALUE TOO LONGDˡ?á צ0 QP _^ǹ._ צ: _ צ: aSP-EXITa ˡ_a__a á  ,,Pצ0123456789ABCDEF ,,Pצ0123456789ABC0ȡB؂ť؂Ʉ؂ .šo` BYTE TO BE CHANGED? _ V_ť_Ʉ_LOCK `  : SP-MENUaz,d Ɓ/PRINTER: צBLOCK `  :́0ʁ0ȡ ؂  ́0ʁ  ȡDڂťڂɄڂ .áqBLOCK ` : SP-CONT; E-EXITa aEéaEÍšB WHICH BLOCK IS TO BE READ? ` READING BLOCK ` `  :ȡ!ڂɡ  B 00ר RESPONDE YES TO WRITE  TO BLOCK `  5P5צYES `" PASCALZA 2222222b22228_2CW*b * "$&(`2_[צ THAT''S ALL FOLKS1CW*99 OSM "$&(]_2| PORTIONAL E)LONGATEDצC)ONDENSED W)IDE-CONDENSEDQ)UIT22222222222222b22228_2CW*b * "$&(`2_[צ THAT''S ALL FOLKS1CW*99 bbJFB> : 6AW. 2"B&(*,HbQébQÍRx fh6P 6    W)RITE BLOCK צD)ISPLAY BUFFER N^gIME - 01 02 03 04 05 06 07 08 09 10a 11 12 13 14 15 16 17 18 19 20aVUAXKJINLTTȡOTTTȡ    IONaaצN=a aצ T=aaMAXPKT=aU aצ BPS=aXaצ PN=a^a PR=a\aצ PTRAFFIC=aZa`ġeaצ' TREAL):^PROBABILITY R (REAL):\PROBABILITY TRAFFIC (REAL):ZPRINT FUNCTION (1..3):` aPRINTER:aצ"START OF PACKET NETWORK SIMULATآ6NUMBER OF STATIONS (1..20): צPERIOD OF RUN (REAL):MAX. PACKET SIZE (INT):U BAUD RATE (REAL):XPROBABILITY N (LZآUآ0آV?\\آ أ :٢ثINN٢AX 4آNNآ أ آ آ آآ"@*h NET (*DUMMY*) $SCAN "END; E(PRINTER,CHR(3)); $Y:=191; $REPEAT &X:=0; &WHILE X<=279 DO (BEGIN *PEEK; *CONVERT; *X:=X+1; *WRITE(PRINTER,CHR(BYTE2)) (END; &WRITE(PRINTER,CHR(3),CHR(11)); &Y:=Y-3 $UNTIL Y<0; $WRITE(PRINTER,CHR(3),CHR(2)); $WRITELN(PRINTER) "END; "BEGINEND;  PROCEDURE CONVERT; "BEGIN $IF BYTE[1] THEN &BYTE2:=1+128 $ELSE BYTE2:=128; $IF BYTE[2] THEN &BYTE2:=BYTE2+4; $IF BYTE[3] THEN &BYTE2:=BYTE2+16 "END;  PROCEDURE SCAN; "BEGIN $REWRITE(PRINTER,'PRINTER:'); $WRITELN(PRINTER,CHR(32)); $WRIT PROCEDURE TIGERGRAPHICS;  VAR BYTE: PACKED ARRAY[0..5] OF BOOLEAN; $BYTE2:INTEGER; $X,Y,U,V:INTEGER; $PRINTER:INTERACTIVE;  PROCEDURE PEEK; "VAR I:INTEGER; "BEGIN $V:=Y; $FOR I:=1 TO 3 DO &BEGIN BYTE[I]:=SCREENBIT(X,Y);Y:=Y-1 &END; $Y:=V            OJJáKJšKJáKKˡLLL=̃`ġaa - ȡ   Ká  KéKéJ˄&   EKå )     FLBLaצSUMMARY OF NETWORK ACTIVITYaa CHANNEL EFFICIENCY =aa%aa CHANNEL DUTY CYCLE -aLa%aa H a=I L=̃ a IK@%dj@ |  H   DELAY=a a BYTES SENT=a  a  BAXLBLaצSUMMARY OF NETWORK ACTIVITYaa CHANNEL EFFICIENCY =aa%aa CHANNEL DUTY CYCLE -aLa%aa H a=Ia a PACKETS=a   a COLLISIONS=a   aצ DELAY=a a BYTES SENT=a  a  BAXTTġ(OTOTTT䩁Ná ONáOINšOpaDU aEND OF NETWORK SIMULATIONaȡ`ġaSTATION:   á  :v`ġ _a ^a NN áaצ Raצ .aצ VfXJ á a* a 詁`ġa Kå  KéKéJ˄&   EKå )     xKá  F