IMD 1.17: 24/11/2010 19:30:39 10 graphs  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &lŗkm HBf     &  %C e U7F ?IO ERROR WHILE BOOTING? 7$ ?NOT ENOUGH CORE TO BOOT?    e   ևߕ vߕ 7| SYSTEM.PASCAL? w7b SYSTEM.INTERP? @Aw  `! mG~d!~  ^\F C& J&  0  EN  ~ TEM.PASCALj$# _~U@pe5w E ŋw Ŋw C! @ D~̋   wTwDԤ eeW 7 ?YOU DON'T HAVE A  ߋt_v @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GRAPHS蛞*Z DRAWER"f  CLASS.TEXT"zS PLOT.TEXT"f+!RUSSIAN.CHARSET@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!% DRAWER.TEXT"zנ%& CLASS.PMD".S&( CLASS.CODE".S(, BRYAN.TEXTHzF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-M ,YˡD# OF BLOCKS ?  ɡ BAD # BLOCKSNew vovO^`. ERR.PMD`. S.PMD`.x  SYSTEM.INTERP.  C$  %begin )startplot; )repeat -Write('What file?'); -readLn( Filename ); -if Filename <> '' then -begin 2Write('What bases? '); 2ReadLn(XBase, YBase); 2Close( datafile ); 2Reset( datafile, concat(Filename, '.text') ); 2drawit; -end; ) )until Filename = ''; %end. %  -M ,YˡD# OF BLOCKS ?  ɡ BAD # BLOCKSNew vojO^Aprogram drawer;   var %xBase, yBase, x1, y1, x2, y2 : integer; %Filename : string; %datafile: text; %loop:integer;  {$i 'plot' } ( ( (procedure drawit; 0 0procedure drawfile; 0begin 0reset (datafile); 4repeat 8ReadLn(Datafile, y1, x1, y2, x2); 8at(x1 + Xbase + loop*3, y1+ Ybase + loop*3); 8line(x2 + Xbase + loop*3,y2+ Ybase + loop*3); 4until eof( datafile ); (  end; ( (begin ,for loop := 1 to 25 do ,begin 0pen := white; 0drawfile; 0pen := black; 0drawfile; ,end; (end; program class;   var x:integer;  'begin )writeln ('this is a dummy program'); ' readln(x); 'end. (  %if MemAvail >= SizeOf(GrafScreen) div 2 + SafetyMargin then % begin -new(Screen[I]); -OK := true; )end %else )OK := false; % %end; % % %  procedure SelectDraw ( I : ScrNum ; var OK : Boolean );  %begin % ' if Screen[I] = NIL then ) CreateScreen(I, OK) ' else ) OK := true; ' if OK then ( DrawScr := Screen[I] ; ( %end; %    procedure SelectDisplay ( I : ScrNum ; How : ScrConfig ; var OK : Boolean );  # var $ X: packed record & case boolean of )  false: ( Int: integer); ) true: ( Sett: ScrConfig) ' end; ! begin % )if Screen[I] = NIL then ) CreateScreen(I,{ Terak graphics package George Gonzalez July, 1978 ( (Dale V. Gear Nov, 1979 ( added  OK) )else -OK := true; )if OK then -begin & if How = [ ] then ) How := [ AlphaLow .. GraphTop ]; & SelectDraw, SelectDisplay, SetPen .SetWindow . . (Includes StartPlot, Line, Box, AtXY SelectDraw, SelectDisplay, Erase SetPen, SetWindow } {$R-} const $Graphic = 3; $RowSize = 239; $ColSize = 319; # Scrs = 4; # type #PenColor = (NullColor, White, Black, Flip); %GrafScreen = packed array [ 0.. RowSize, 0..ColSize ] of boolean; 'BitW = (AlphaLow, AlphaMid, AlphaTop, GraphLow, GraphMid, GraphTop, b6, 0GenBuf, ClickBit, b9, b10, BeepBit, b12, b13, b14, b15); H O^"ScrConfig = set of BitW; (ScP = ^ GrafScreen; %ScrNum = 1..Scrs; # var &WhereX, &WhereY, $XLWindow, $XHWindow, $YLWind+cD'ow, $YHWindow: integer; $NewPlace: boolean; )Pen: PenColor; &Screen: Array [ 1..Scrs ] of ScP; &DisScr, %DrawScr: ScP; #  procedure CreateScreen ( I : ScrNum ; var OK : boolean );   const )SafetyMargin = 200; )  %begin %  rue; #end { AtXY };  procedure SetWindow(Left, Right, Bottom, Top: integer);  %begin % )XLWindow := Left; )XHWindowpe); 3Y := abs(TempY- RowSize); 3X := XHWindow; 0end; )if DY <> 0 )then ,if Y < YLWindow ,then /begin  := Right; )YLWindow := Bottom; )YHWindow := Top; ) %end; % % % %  procedure StartPlot; #  var &Dummy : Boolean; &I2if DX <> 0 then 5begin 8TempY := abs(WhereY - RowSize); 8X := WhereX - Round((TempY - abs(YLWindow - RowSize)) T/ Slope);  : integer; ) #begin &SetWindow(0, ColSize, 0, RowSize); &SetPen(White); &AtXY(0,0); &for I := 1 to Scrs do 'Screen[I] :=2 end; 2Y := YLWindow; /end ,else /if Y > YHWindow then 2begin 5if DX <> 0 then 8begin ;TempY := abs(WhereY - RowSize NIL; &SelectDraw(1,Dummy); &Erase(1); &SelectDisplay(1, [ ], Dummy); #end { StartPlot }; procedure Point(X, Y: integer); ;X := WhereX - Round((WhereY - abs(YHWindow - [RowSize)) / Slope); 5 end; 5Y := YHWindow; 2end; &end { Window }; # );   var )TempY: integer; ) # #begin &AtXY(X, Y); &TempY := abs(WhereY - RowSize); &if (WhereX >= XLWindow) and (Where# # # # #begin { Line } &SX := X; &SY := Y; &Window(X, Y, WhereX, WhereY); &WX := WhereX; &WY := WhereY; &Window(WhereX <= XHWindow) & and (WhereY >= YLWindow) and (WhereY <= YHWindow) &then )case Pen of ,White: X, WhereY, SX, SY); &TrueY := abs(WhereY -Rowsize); &DestY := abs(Y - Rowsize); &if (X >= XLWindow) and (X <= XHWindow) and /DrawScr ^ [ TempY, WhereX ] := true; ,Black: /DrawScr ^ [ TempY, WhereX ] := false; ,Flip: /DrawScr ^ [ TempY, WhereX ] :=+(Y >= YLWindow) and (Y <= YHWindow) and + ((X <> WhereX) or (DestY <> TrueY)) &then )begin ,if NewPlace or (WX <> WhereX) o not DrawScr ^ [ TempY, WhereX ] )end; &NewPlace := false; #end { Point }; procedure Line(X, Y: integer); # #var *Trur (WY <> WhereY) then /Point(WhereX, WhereY); ,drawline(Junk, DrawScr ^, 20, WhereX, TrueY, X - WhereX, DestY /- TrueY, ord(PeY, *DestY, -SX, -SY, -WX, -WY, +Junk: integer; & # # # #procedure Window(var X, Y: integer; WhereX, WhereY: integer)en)); )end; &WhereX := SX; &WhereY := SY; #end { Line }; procedure Box(Width, Height, Thick, Spacing: integer); #  X.Sett := How; & DisScr := Screen[I]; & UnitWrite(Graphic, DisScr ^, X.Int); # end { Displ; & &var -Slope: real; 0DX, -TempY, 0DY: integer; ) &begin { Window } )DX := X - WhereX; )DY := Y - WhereY; )if DX <>ay }; 1 %end; procedure Erase(I : ScrNum); # # begin & if Screen[I] <> NIL then  0 then ,Slope := DY / DX; )if DX <> 0 )then -if X < XLWindow then 0begin 3TempY := abs(Y - RowSize) {Transform to real co& FillChar(Screen[I] ^, SizeOf(GrafScreen), 0); # end { Erase }; procedure SetPen(PColor : PenColor);  %begin ords}; 3TempY := TempY - Round((Wherex - XLWindow) * Slope); 3Y := abs(TempY - RowSize) {Return to graph coords}; 3X := XLWin% )Pen := PColor; ) %end; % % % % procedure AtXY(X, Y: integer); # #begin &WhereX := X; &WhereY := Y; &NewPlace := tdow; 0end )else ,if X > XHWindow then 0begin 3TempY := abs(Y - RowSize); 3TempY := TempY - Round((WhereX - XHWindow) * Slo  &for I := 1 to Thick do )begin ,AtXY(LX, LY); ,Line(WhereX + Width, WhereY); ,Line(WhereX, WhereY - Height); ,Line(LX, Wh"6**""">""""">""""9EGE9""""">"""< ""****>****~@"2*ereY); ,Line(LX, LY); ,LX := LX + Spacing; ,LY := LY - Spacing; ,Height := Height - 2 * Spacing; ,Width := Width - 2 * Spac&"""|""<($sk****k8H8gBBNRRoing; )end; #end { Box }; ۷ݜ݁݀ݜݜߏݜݜݜݜýݜ̵ՁݜýϿ߿$ $$H$"<F&21 *,**>޿>@ "2*&" " ">"  ">8> "8"">"<""""""< ƺՁ"00>> " "8" 0(<$"c?"""c"""""~@>$$$""A?""?>IیՔǷ  ōIllegal unit #vII>Bc""cc"2*&"cc""< pc""c<(($$"cc"6**"cc"">""c<000 Q 0 ̌̌̌? ?BB<Ic"2, """""k*****>k*****~@k"2*&"c <(($>""<>III><"""2*&"""< ""<$$$" 'plot' } ( ( (procedure drawit; 0 0procedure drawfile; 0begin 0reset (datafile); 4repeat 8ReadLn(Datafile, y1, x1, y2, x2); 8AT(x1 + Xbase + loop*3, y1+ Ybase + loop*3); 8line(x2 + Xbase + loop*3,y2+ Ybase + loop*3); 4until eof( datafile ); ( ??`(H"a- TR cbd c end; ( (begin ,for loop := 1 to 25 do ,begin 0pen := white; 0drawfile; 0pen := black; 0drawfile; ,end; (end; !@H!H! JA@bIb6r8`<1x~ %begin )startplot; )repeat -Write('What file?'); -readLn( Filename ); -if Filename <> '' then -begin 2Write('What base-M ,YˡD# OF BLOCKS ?  ɡ BAD # BLOCKSNew vovO^s? '); 2ReadLn(XBase, YBase); 2Close( datafile ); 2Reset( datafile, concat(Filename, '.text') ); 2drawit; -end; ) )untilSB Filename = ''; %end.  CLASS (X !R CLASS program drawer;   var %xBase, yBase, x1, y1, x2, y2 : integer; %Filename : string; %datafile: text; %loop:integer;  {$i   A)\Մ(ǀ%ġՄJՄPhՄaՄpՄ|Մ@Մꥁhá ՅՅ+Յ;ՅRhlՅjprogram regressed (input, output);   var x, y, z, a, b, c, d: integer;   begin " "readln y; "writeln y; "readln; @ՆUhá Ն}ՆՆ`mՆՆ Ն?ՇՇ(hmՇMm۞ՇxՇlՇťh7this is a dummy program_ iJ   end. ˡ.ɡ9 ˡU. is   characters long. -qړf2Do you want to Exit from or Return to the editor?  -- ا-EÚ٫>ƂYPړ-EW&,,Xá,Yá -M ,YˡD# OF BLOCKS ?  ɡ Bad # fO^A,,Xá,Yá -M ,YˡD# OF BLOCKS ?  ɡ Bad # fO^ Ր?ߧaՐՐڧaՐ`mՐ``mՐՐ`mՐՐՑا`ՑPՑUڧ`ՑhՑo ; )COUNT:=COUNT+30; 'END %ELSE 'BEGIN (* SOLID NOTE *) )MOVE(X-8,YY-5,UP);MOVE(X+8,YY,DOWN); )MOVE(X-8,YY-2,DOWN);MOVE(X+d ՑՑՑed Ց֧eՑ槁dՑed Ւd Ւ<ՒV٧c٧bȄاaĄا`Ȅ٧eˍ`mՒ8,YY+3,DOWN); )MOVE(X-8,YY+1,DOWN);MOVE(X+8,YY+6,DOWN); )COUNT:=COUNT+15; 'END; %IF NOTEVALUE>0 THEN %IF FLAGUP THEN 'BEGIՒ㧁fܧeˍۧdˍ`mՓed Փ9le٧eg ՓՓޫeՓݫdՓ Ք:ՔQՔeeՔudՔN )XSTEM:=X+8; )YSTEM:=YY+40; )MOVE(XSTEM,YY,UP); )MOVE(XSTEM,YSTEM,DOWN); 'END %ELSE 'BEGIN )XSTEM:=X-8; )YSTEM:=YY-40`mՔՔՔeۂd Քاedڕ Քݧd Օ Օ؂Օ1ؕՕK؏Օl؏ՕՕdm Հ˥; )MOVE(XSTEM,YY,UP); )MOVE(XSTEM,YSTEM,DOWN); 'END; %IF NOTEVALUE>2 THEN 'BEGIN (* LET"S DRAW SOME FLAGS *) 2?ՀՀ2 2 2 2 2Ձ Ձ:__ Ձk2ՁYrՁ__)MOVE(XSTEM,YSTEM,UP); )IF FLAGUP THEN MOVE(XSTEM+10,YSTEM-15,DOWN) )ELSE MOVE(XSTEM+12,YSTEM+15,DOWN); )IF NOTEVALUE>3 THEN(* DOUBLE FLAT *) %FLAT(X,Y,YNOTE); %FLAT(X-14,Y,YNOTE); #END; PROCEDURE NATURAL(X,Y,YNOTE : INTEGER); #BEGIN (* NATURAL SI (* 1/16 NOTE FLAGS NOW *) +BEGIN /IF FLAGUP THEN BEGIN MOVE(XSTEM,YSTEM-8,UP); /MOVE(XSTEM+10,YSTEM-23,DOWN) END /ELSE BGN *) %YY:=606-(Y*150)+(YNOTE*8); %MOVE(X-5,YY+12,UP);MOVE(X-2,YY-8,DOWN);MOVE(X+2,YY+8,UP); %MOVE(X+5,YY-12,DOWN);MOVE(X-4,YEGIN MOVE(XSTEM,YSTEM+8,UP); /MOVE(XSTEM+12,YSTEM+23,DOWN) END; -IF NOTEVALUE>4 THEN (* 1/32 NOTE FLAGS *) /BEGIN 3IF FLAY+6,UP);MOVE(X+2,YY+8,DOWN); %MOVE(X-2,YY-8,UP);MOVE(X+4,YY-6,DOWN); #END; PROCEDURE DASH(X,Y,YNOTE : INTEGER); #BEGIN (* GUP THEN BEGIN MOVE(XSTEM,YSTEM-16,UP); 5MOVE(XSTEM+10,YSTEM-31,DOWN) 3END 3ELSE BEGIN MOVE(XSTEM,YSTEM+16,UP); 5MOVE(XSTEM+`mՈhǀ% Ո>.ՈثgՈՈ٫eՈثdՈfՉ  Չl۫cՉګbՉ٫aՉث` DRAW DASH FOR NOTES ABOVE AND BELOW STAFF *) %YY:=606-(Y*150)+YNOTE*8; %MOVE(X-16,YY,UP); %MOVE(X+16,YY,DOWN); #END; Չ(Պ"?ՊDՊSՊ_`mՊzhՊՊՊՊέ7b Ջ2ՋA PROCEDURE CLEAR; #BEGIN (* CLEAR SCREEN *) %PUTBYTE(7677B); %PUTBYTE(7656B); %WRITELN(' ')dՋ`ecħebȄdaĄd`Ȅ`mՋѧg`mՌ lڤe`mՌ9lڤeQՌilڤelڤed; %QCOUNTER:=0; %SPACER:=140; #END (* CLEAR SCREEN *); PROCEDURE NOTE(X,Y,YNOTE,NOTEVALUE : INTEGER; FLAGUP : BOOLEAN); VARN=,ՌfՌ­ Սٕ ՍؕՍ`mՎՎ `mՎ4c`mՎNՎVՎ٧cՎ COUNT : INTEGER; #BEGIN (* DRAW A NOTE *) %YY:=606-(Y*150)+YNOTE*8; %IF NOTEVALUE<2 THEN 'BEGIN (* OPEN NOTE *) )MOVE(X-8,ՎۧcՏ `mՏb`mՏ0Տ8ՏU٧bՏՏۧbՏՏ`mՏa`mՏՐ`mՐՐ!YY,UP);MOVE(X-3,YY+6,DOWN);MOVE(X+3,YY+6,DOWN); )MOVE(X+8,YY,DOWN);MOVE(X+3,YY-6,DOWN); )MOVE(X-3,YY-6,DOWN);MOVE(X-8,YY,DOWN)  ND 'END; %IF (Y=0) AND (YNOTE=-7) THEN %DASH(X,Y,YNOTE); %IF (Y=0) AND (YNOTE>4) THEN 'BEGIN )DASH(X,Y,5); )IF YNOTE>6 TH4,DOWN); /END -ELSE /BEGIN (* 1/8 REST *) 1RESTFLAG(X,YY); 1IF RESTVALUE>3 THEN 3BEGIN (* 1/16 REST *) 5RESTFLAG(X-4,EN +BEGIN -DASH(X,Y,7); -IF YNOTE>8 THEN /BEGIN 1DASH(X,Y,9); 1IF YNOTE>10 THEN 1DASH(X,Y,11); /END +END 'END; YY-8); 5IF RESTVALUE>4 THEN 7BEGIN (* 1/32 REST *) 9RESTFLAG(X-8,YY-16); 9IF RESTVALUE>5 THEN ;BEGIN (* 1/64 REST *) %IF (Y=1) AND (YNOTE<-6) THEN 'BEGIN )DASH(X,Y,-7); )IF YNOTE<-8 THEN +BEGIN -DASH(X,Y,-9); -IF YNOTE<-10 THEN DASH(X,Y,-=RESTFLAG(X-12,YY-24); =IF RESTVALUE>6 THEN =RESTFLAG(X-16,YY-32); ;END 7END 3END /END +END 'END #END; PROCEDURE BAR(11); +END 'END #END; PROCEDURE RESTFLAG(X,YY : INTEGER); #BEGIN (* FLAGS FOR 1/4 TO 1/32 RESTS *) %MOVE(X-7,YY-15,UP); %X,Y : INTEGER); #BEGIN (* DRAW A BAR TO SEPARATE MEASURES *) %YY:=630-(Y*150); %MOVE(X,YY,UP); %MOVE(X,YY-64,DOWN) #END;MOVE(X+7,YY+15,DOWN); %MOVE(X-4,YY+10,DOWN); %MOVE(X-8,YY+10,DOWN); %MOVE(X-10,YY+12,DOWN); %MOVE(X-9,YY+14,DOWN); %MOVE(X- PROCEDURE DOT(X,Y,YNOTE : INTEGER); #BEGIN (* DRAW A DOT FOR LONGER NOTES *) %YY:=606-(Y*150)+YNOTE*8; 8,YY+15,DOWN); %MOVE(X-7,YY+14,DOWN); %MOVE(X-10,YY+12,DOWN); #END; PROCEDURE REST(X,Y,YNOTE,RESTVALUE : INTEGER); #BEGIN %MOVE(X+16,YY+2,UP);MOVE(X+16,YY-2,DOWN); %MOVE(X+18,YY+2,UP);MOVE(X+18,YY-2,DOWN); #END; PROCEDURE INFO(HELP : BOOLEAN); #(* DRAW A REST *) %YY:=606-(Y*150)+YNOTE*8; %IF RESTVALUE=0 THEN 'BEGIN (* WHOLE REST *) )MOVE(X-7,YY,UP);MOVE(X-7,YY-8BEGIN (* RUN-TIME INFORMATION FOR THE STUDENT *) 'IF HELP THEN BEGIN )CLEAR; )WRITELN('THIS PROGRAM WAS WRITTEN TO HELP YOU ,DOWN); )MOVE(X+7,YY-8,DOWN);MOVE(X+7,YY,DOWN); )MOVE(X-16,YY,UP);MOVE(X+16,YY,DOWN); 'END %ELSE 'BEGIN )IF RESTVALUE=1 THRECOGNIZE MUSICAL INTERVALS, WHICH'); )WRITELN('ARE THE DIFFERENCE IN PITCH BETWEEN TWO NOTES. THE SIZE OF AN INTERVAL'); )WREN +BEGIN (* HALF REST *) -MOVE(X-7,YY,UP);MOVE(X-7,YY+8,DOWN); -MOVE(X+7,YY+8,DOWN);MOVE(X+7,YY,DOWN); -MOVE(X-16,YY,UP)ITELN('IS DETERMINED BY THE NUMBER OF STAFF DEGREES INVOLVED, GOING FROM THE'); )WRITELN('LOWER TO THE HIGHER TONE. UNLIKE LIN;MOVE(X+16,YY,DOWN); +END )ELSE +BEGIN -IF RESTVALUE=2 THEN /BEGIN (* 1/4 REST *) 1MOVE(X,YY-17,UP); EAR MEASUREMENT, THERE IS NO ''ZERO'''); )WRITELN('TO START AT, SO INSTEAD YOU MUST BEGIN COUNTING AT ''ONE'', FROM THE'); )WR1MOVE(X-5,YY-10,DOWN); 1MOVE(X-4,YY-7,DOWN); 1MOVE(X-1,YY-4,DOWN); 1MOVE(X-5,YY+3,DOWN); 1MOVE(X,YY+12,DOWN); 1MOVE(X,YY+1ITELN('LOWER NOTE. FOR EXAMPLE, D TO F IS AN INTERVAL OF A THIRD BECAUSE THERE'); )WRITELN('ARE THREE DEGREES BETWEEN THEM, NA12,YSTEM+31,DOWN) 3END; 1IF NOTEVALUE>5 THEN (* 1/64 FLAGS *) 3BEGIN 7IF FLAGUP THEN BEGIN 9MOVE(XSTEM,YSTEM-24,UP); 9MO5,UP); 1MOVE(X+5,YY+8,DOWN); 1MOVE(X,YY,DOWN); 1MOVE(X-1,YY-4,DOWN); 1MOVE(X+5,YY-9,DOWN); 1MOVE(X,YY-7,DOWN); 1MOVE(X,YY-VE(XSTEM+10,YSTEM-39,DOWN); 7END 7ELSE BEGIN 9MOVE(XSTEM,YSTEM+24,UP); 9MOVE(XSTEM+12,YSTEM+37,DOWN); 7END; 3END /END +E17,DOWN); 1MOVE(X-2,YY+3,UP); 1MOVE(X+4,YY+10,DOWN); 1MOVE(X,YY+15,UP); 1MOVE(X,YY,DOWN); 1MOVE(X-3,YY-12,UP); 1MOVE(X,YY-  WHEN YOU HAVE FINISHED READING THIS, TYPE CONTINUE .'); )IF NOT EOS(INPUT) THEN READLN(INPUT) ELSE GETSEG(INPUT); 'END %ELS: INTEGER; #BEGIN (* UNCODE TURNS A CONVENTIONAL NOTATION NOTE INTO *) $(* A NUMBER REPRESENTING IT"S FREQUENCY *) MELY D-E-F.'); )WRITELN; )WRITELN('THERE ARE THREE BASIC KINDS OF INTERVALS: PERFECT, MAJOR, AND MINOR.'); )WRITELN('TO TEST E 'BEGIN )CLEAR; )WRITELN('THE ACCEPTED ABBREVIATIONS OF INTERVAL NAMES ARE:'); )WRITELN; )WRITELN('MIN2,MAJ2,MIN3,MAJ3,PERIF AN INTERVAL IS PERFECT, CONSIDER THE LOWER TONE AS THE'); 4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,PER8'); )WRITELN('(OR EQUIVALENTLY)'); )WRITELN('N2,M2,N3,M3,P4,T,P5,N6,M6,N7,M7,P8'); )WRITE)WRITELN('TONIC OF A MAJOR SCALE. NEXT, INVERT THE INTERVAL AND CONSIDER THE NEW'); )WRITELN('LOWER TONE AS THE TONIC OF A MALN; )WRITELN; )WRITELN('THESE ARE COMMANDS WHICH YOU MAY ENTER AT ANY TIME:'); )WRITELN(' BYE TO STOP THE PROGRAM.'); JOR SCALE. IF EACH TONE OF THE INTERVAL'); )WRITELN('OCCURS IN THE MAJOR SCALE OF THE OTHER, IT IS A PERFECT INTERVAL. THERE')WRITELN(' AGAIN TO PLAY THE CURRENT INTERVAL AGAIN.'); )WRITELN(' DRILL TO PRACTICE READING NOTES.'); )WRITELN(' ); )WRITELN('ARE THREE PERFECT INTERVALS, PER4,PER5,AND PER8. ALL OTHER INTERVALS'); )WRITELN('ARE EITHER MAJOR,MINOR, OR TRI LENGTH TO CHANGE THE LENGTH OF THE INTERVALS.'); )WRITELN(' MELODIC FOR MELODIC INTERVALS.'); TONE. IF THE INTERVAL CONSISTS OF THREE'); )WRITELN('WHOLE STEPS (AS IN F TO B), IT IS A TRITONE. MAJOR INTERVALS OCCUR'); ))WRITELN(' HARMONIC FOR HARMONIC INTERVALS.'); )WRITELN(' CLEAR TO CLEAR THE SCREEN AND REDRAW THE STAFF.'); )WRITELN(WRITELN('WHEN THE TOP TONE IS IN THE MAJOR SCALE WHOSE KEYNOTE IS THE LOWER TONE.'); )WRITELN('MINOR INTERVALS ARE A HALF STEP ' SHOW TO SEE THE ANSWERS.'); )WRITELN(' PLAY TO PLAY AN INTERVAL OF YOUR CHOICE.'); )WRITELN(' ORDER CHANGESSMALLER THAN A MAJOR INTERVAL.'); )WRITELN; )WRITELN; )WRITELN('IN GENERAL, THIS PROGRAM ACTS AS DRILL. AN INTERVAL WILL BE  THE ORDER THE NOTES ARE PLAYED.'); )WRITELN(' GRAPH TO SUPPRESS THE STAFF FOR FASTER DRILL.'); )WRITELN(' QUIT TO PLAYED TO'); )WRITELN('YOU, AND YOU TYPE IN THE NAME OF THAT INTERVAL. IF YOU ARE INCORRECT,'); )WRITELN('I WILL RESPOND WITHRETURN FROM DRILL COMMAND.'); )WRITELN(' UNIT TO CHANGE UNITS.'); )WRITELN(' INFO TO LIST INFORMATION.'); )WRITEL A < OR > SYMBOL IF YOU GUESSED TOO HIGH OR TOO LOW,'); N(' NEXT TO BYPASS A QUESTION.'); )WRITELN; )WRITELN('ALL COMMANDS MAY BE ABBREVIATED BY USING ONLY THE FIRST LETTER.');)WRITELN('RESPECTIVELY. IF YOU ARE RIGHT, I"LL SAY SO AND DRAW THE NOTES ON THE'); )WRITELN('STAFF. THEN I WILL PLAY THE NEX )WRITELN; )WRITELN; )WRITELN('WHEN YOU HAVE FINISHED READING, TYPE CONTINUE .'); )IF NOT EOS(INPUT) THEN READLN(INPUT) ELSET INTERVAL, AND SO ON. WHEN YOU WANT TO'); )WRITELN('QUIT, SIMPLY TYPE IN THE WORD BYE .'); )WRITELN; )WRITELN; )WRITELN(' GETSEG(INPUT); )IF FIRST THEN CLEAR; 'END; #END; PROCEDURE UNCODE(NOTELETTR,ACCIDENT:CHAR; OCTIVE:INTEGER); VAR IVAL,JVAL  @NTER,TOP : INTEGER; FREQ:REAL; #BEGIN %UNCODE(NOTELETTR,ACCIDENT,OCTIVE); %NOTEVAL:=OCNOTE-21; %FREQ:=27.5*EXP(LN(2.0)*NOTEVAL/12.0); %NOTEOPER:=ROUND((CRYSTAL/FREQ-2)/4); %UNCODE(NOTELETTR2,ACCIDENT2,OCTIVE2); %NOTEVAL2:=OCNOTE-21; %FREQ:=27.5*EXP(LN(2.0)*NOTEVAL2/12.0); %NOTEOPER2:=ROUND((CRYSTAL/FREQ-2)/4); %IF ((NOTEVAL>NOTEVAL2) AND (NOT UPDOWN)) OR '((NOTEVAL0) AND (X<27) THENOUTPUT':=CHR(74B);PUT(OUTPUT);OUTPUT':=CHR(05B);PUT(OUTPUT); )WRITE('H@A@A'); 'END; #END; PROCEDURE NOOP; #BEGIN (* NOOP  'BEGIN )OUTPUT':=CHR(X); )PUT(OUTPUT); 'END %ELSE %IF (X>32) AND (X<59) THEN %PUTBYTE(7600B + X - 32) %ELSE 'CASE X OFSENDS A 'NO OPERATION' SIGNAL TO THE BOX. *) %PUTBYTE(DC1); %WRITE('@A@A@A'); #END; PROCEDURE CONVERT(X:INTEGER);  )0:PUTBYTE(7401B); )27:WRITE('['); )28:WRITE('^!'); )29:WRITE(']'); )30:WRITE('''); )31:PUTBYTE(7404B); )32:WRITE(','); )59:PUTBYTE(7661B); )60:WRITE(':'); )61:PUTBYTE(7662B); )62:WRITE('^''); )63:PUTBYTE(7674B); 'END; #END; PROCEDURE CHANGEMODE; #BEGIN (* CALL TO CHANGE THE MODE THE BOX IS IN PRESENTLY. *) %PUTBYTE(DC1); %CONVERT(4*CIS+TOPVOICE); %CONVERT(10O^B*VOL1+VOL2); %CONVERT(10B*VOL3+VOL4); #END; PROCEDURE PLAY; CONST CRYSTAL = 3872000; VAR NOTEOPER,NOTEOPER2:INTEGER; COU  %ELSE 'BEGIN )CLEAR; )WRITELN('WELCOME TO THE HARMONIC INTERVAL PROGRAM.'); )HARMONIC := FALSE; )GRAPH := TRUE; )FIRST:=T:INTEGER; #BEGIN (* READ ONLY FIRST 4 LETTERS OF INPUT LINE *) %KK:=0; %ANSWER:=' '; %IF NOT EOS(INPUT) THEN 'BEGINRUE; )BYE := FALSE; )ANS := FALSE; )SHOWINT:=TRUE; )LENGTH:=4; )RESET(INPUT); )WCOUNTER := 0; )UPDOWN:=FALSE; )HELP:=FAL )READLN; )WHILE (NOT EOF(INPUT)) AND (NOT EOLN(INPUT)) DO +BEGIN -KK:=KK+1; -IF KK<5 THEN ANSWER[KK]:=INPUT'; -GET(INPUTSE; )QCOUNTER:=0; )STAFFN:=1; )UNITN:=-1; )JUSTLOOKING:=FALSE; )FORMAL:=TRUE; )TOTALEX:=0; )RESETUNIT:=TRUE; )NORM:=TRUE); +END 'END %ELSE 'BEGIN GETSEG(INPUT,0); )WRITELN('PLEASE TYPE SOMETHING BEFORE YOU HIT A CARRAGE RETURN.'); )INPUTLN; ; )DRAW:=TRUE; )ANSCOUNTER:=0; )EXCOUNTER:=0; )CIS:=1; )TOPVOICE:=0; )VOL1:=6; )VOL2:=6; )VOL3:=6; )VOL4:=6; )QUIET; )QCOUNTER:=QCOUNTER+1; 'END; #END; FUNCTION NUMBERIN:INTEGER; #BEGIN (* NUMBERIN RETURNS THE NUMBER THAT A PERSON TYPES IN )CHANGEMODE; )TIME(TIM); )DATE(DAY); )SETRANDOM(ORD(TIM[9])*100+ORD(DAY[9])*1000,ORD(TIM[8])*10000); )SKEY:=0; )COMP(SKEY);*) %INPUTLN; %IF ANSWER[1]=' ' THEN NUMBERIN:=0 %ELSE IF ANSWER[2]=' ' THEN NUMBERIN:=ORD(ANSWER[1])-ZERO %ELSE IF ANSWER[3] (* TURN OFF S-KEY INTERRUPT *) )ZERO:=ORD('0'); )Q:=ORD('Q'); 'END #END; FUNCTION INTVALUE(INTERVAL1,INTERVAL2:CHA=' ' THEN %NUMBERIN:=10*(ORD(ANSWER[1])-ZERO) + ORD(ANSWER[2])-ZERO %ELSE IF ANSWER[4]=' ' THEN %NUMBERIN:=100*(ORD(ANSWER[1]R):INTEGER; #BEGIN (* INTVALUE PRODUCES A NUMBER WHICH INDICATES HOW FAR APART THE TWO NOTES OF THE INTERVAL ARE. *) 'CASE IN)-ZERO) %+ 10*(ORD(ANSWER[2])-ZERO) + ORD(ANSWER[3])-ZERO %ELSE NUMBERIN:=1000*(ORD(ANSWER[1])-ZERO) + %100*(ORD(ANSWER[2])-ONVERT(((NOTEOPER DIV 10000B) MOD 10B) + 10B); %CONVERT(((NOTEOPER MOD 100000B) DIV 100B) MOD 100B); %CONVERT(NOTEOPER MOD 100TERVAL2 OF ('2': IF INTERVAL1='N' THEN INTVALUE:=1 )ELSE INTVALUE:=2; ('3': IF INTERVAL1='M' THEN INTVALUE:=4 B); %IF NOT HARMONIC THEN %FOR COUNTER:=1 TO LENGTH DO NOOP; %PUTBYTE(DC1); %CONVERT(((NOTEOPER2 DIV 10000B) MOD 10B) + 10B))ELSE INTVALUE:=3; ('4': INTVALUE:=5; (' ': INTVALUE:=6; ('5': INTVALUE:=7; ('6': IF INTERVAL1='M' THEN INTVALUE:=9 )ELSE ; %CONVERT(((NOTEOPER2 MOD 100000B) DIV 100B) MOD 100B); %CONVERT(NOTEOPER2 MOD 100B); %FOR COUNTER:=1 TO LENGTH DO NOOP; %IINTVALUE:=8; ('7': IF INTERVAL1='M' THEN INTVALUE:=11 )ELSE INTVALUE:=10; ('8': INTVALUE:=12; 'END; #END; PROCEDURE INTDECF HARMONIC THEN FOR COUNTER:=1 TO LENGTH DO NOOP; %PUTBYTE(DC1); %WRITE('H@A@A'); %IF HARMONIC THEN 'BEGIN )PUTBYTE(DC1); ODE (INTERVAL1,INTERVAL2 : CHAR); #BEGIN (* DECODE INTERVAL NAME FROM THE DATA FILE REPRESENTATION *) 'CASE INTERVAL1 OF *'P)WRITE('H@A@A'); 'END; %PUTBYTE(7645B); WRITELN; #END; PROCEDURE INITIALIZE; #BEGIN (* INITIALIZE CHECKS DATA FILES AND S':BEGIN -INTNAME:='PERF'; -INTNAME[4]:=INTERVAL2; +END; ('T': INTNAME := 'TRIT'; *'M': BEGIN -INTNAME:='MAJ0'; -INTNAMEETS INITAL VALUES *) %RESET(MUSDATA); %IF EOF(MUSDATA) THEN 'BEGIN )WRITELN('PLEASE GET MUSDATA'); )BYE:=TRUE; 'END [4]:=INTERVAL2; +END; *'N': BEGIN -INTNAME:='MINO'; -INTNAME[4]:=INTERVAL2; +END; 'END; #END; PROCEDURE INPUTLN; VAR KK  2; ,'?':CONVERT:=3; ,'$':CONVERT:=4; ,'B':CONVERT:=5; ,'_':CONVERT:=6; ,'"':CONVERT:=7; ,'(':CONVERT:=8; ); )WRITELN('4 MIN2,MAJ2,MAJ3,PER4,MAJ7,PER8'); )WRITELN('5 MIN3,TRIT,PER5,MIN6,MAJ6,MIN7',')':CONVERT:=9; ,'*':CONVERT:=10; ,'+':CONVERT:=11; ,',':CONVERT:=12; ,'-':CONVERT:=13; ,'.':CONVERT:=14; ,'/':CONVERT:=); )WRITELN('6 MIN6,MAJ6,MIN7,MAJ7'); )WRITELN('7 ALL INTERVALS - LEVEL 1'); )WRITELN('8 15; ,':':CONVERT:=27; ,';':CONVERT:=28; ,'<':CONVERT:=29; ,'=':CONVERT:=30; ,'>':CONVERT:=31; ,'\':CONVERT:=32; +END; 'E ALL INTERVALS - LEVEL 2'); )WRITELN('9 PER8,PER4,MAJ7,MAJ2,MIN2,MAJ3'); )WRITELN('10 ND; #END; #BEGIN (* GINPUT GETS X AND Y CO-ORDINATES FROM GRAPHIC INPUT MODE *) %PUTBYTE(0007B); %PUTBYTE(4000B); %PUTBYT MIN3,TRIT,PER5,MIN6,MAJ6,MIN7'); )WRITELN('11 ALL INTERVALS - LEVEL 3'); )WRITELN; E(4000B); %IF GIN THEN %PUTBYTE(4033B) (* GRAPHIC INPUT MODE *) %ELSE %PUTBYTE(4005B) (* ALPHA CURSOR POSITION *); %PUTBY)QCOUNTER:=QCOUNTER+18; 'END; %UNITN:=-1; %WHILE (UNITN<0) OR (UNITN>11) DO 'BEGIN )WRITELN('WHICH UNIT 1 THROUGH 11 DO YOTE(4032B); %GET(INPUT); %CHARACT:=INPUT'; %GET(INPUT); %HX:=INPUT';GET(INPUT); %LX:=INPUT';GET(INPUT); %HY:=INPUT';GET(INPU WANT\'); )UNITN:=NUMBERIN; )QCOUNTER:=QCOUNTER+2; 'END; %RESETUNIT:=TRUE; %IF NOT FIRST THEN NEXT:=TRUE; %FORMAL:=FALSE;UT); %LY:=INPUT'; %WHILE NOT EOLN(INPUT) DO GET(INPUT); %X:=32*CONVERT(HX)+CONVERT(LX); %Y:=32*CONVERT(HY)+CONVERT(LY); #EN #END; PROCEDURE STAFF(STAFFN : INTEGER); VAR IX : INTEGER; #BEGIN (* DRAW A STAFF *) %IF GRAPH THEN 'BEGIN )SPACER:=140D; PROCEDURE SPEED; #BEGIN (* SELECT SPEED OF DICTATION *) %LENGTH:=-1; %WHILE (LENGTH<1) OR (LENGTH>99) DO 'BEGIN )WR; )FOR Y:=0 TO STAFFN DO +BEGIN -YY := 550-(Y*150); -FOR IX := 1 TO 5 DO /BEGIN 1MOVE(0,YY+16*IX,UP); 1MOVE(1000,YY+16*IXITELN('WHAT SPEED DO YOU WANT THE EXERCISE'); )WRITELN('TO BE PLAYED AT\ USE ANY INTEGER BETWEEN 1 AND 99.'); ,DOWN); /END; -IF ODD(Y) THEN FCLEFF(Y) -ELSE GCLEFF(Y); -BAR(0,Y);BAR(1000,Y); -MOVE(0,350,UP); +END; )IF SHOWINT THEN )LENGTH:=NUMBERIN; )QCOUNTER:=QCOUNTER+3; 'END #END; PROCEDURE UNIT; #BEGIN (* SELECT WHICH UNIT TO USE *) %IF FIRST +BEGIN -MOVE(0,700,UP); -PUTBYTE(US); -WRITE('UNIT '); /CASE UNITN OF 11:WRITELN('1 MAJ2,PER4,MAJ7,PER8'); 12:WRITELZERO) + 10*(ORD(ANSWER[3])-ZERO) %+ ORD(ANSWER[4])-ZERO; #END; PROCEDURE GINPUT(GIN:BOOLEAN;VAR X,Y:INTEGER;VAR CHARACT:CHAR)THEN CLEAR; %WRITELN('DO YOU WANT TO SEE YOUR UNIT CHOICES\'); %INPUTLN; %QCOUNTER:=QCOUNTER+2; %IF ANSWER[1]='Y' THEN 'BEG; VAR LX,HX,LY,HY : CHAR; FUNCTION CONVERT(LETTER : CHAR):INTEGER; #BEGIN (* CONVERT TEKTRONIX CODE TO DECIMAL *) %IF LETTIN )CLEAR; )WRITELN; )WRITELN; )WRITELN('UNIT INTERVALS COVERED'); )WRITELN; )WRITELN('1 ER IN ['0'..'9'] THEN %CONVERT:=ORD(LETTER)-10 %ELSE 'BEGIN )CONVERT:=1; +CASE LETTER OF ,' ':CONVERT:=0; ,'''':CONVERT:=MAJ2,PER4,MAJ7,PER8'); )WRITELN('2 MIN2,MAJ3,TRIT,MAJ6'); )WRITELN('3 MIN3,PER5,MIN6,MIN7' N('2 MIN2,MAJ3,TRIT,MAJ6'); 13:WRITELN('3 MIN3,PER5,MIN6,MIN7'); 14:WRITELN('4 MIN2,MAJ2,MAJ3,PER4,MAJ7,PER8N3,MAJ3,PER4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,PER8'); 18:WRITELN('8 MIN2,MAJ2,MIN3,MAJ3,PER4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,P'); 15:WRITELN('5 MIN3,TRIT,PER5,MIN6,MAJ6,MIN7'); 16:WRITELN('6 MIN6,MAJ6,MIN7,MAJ7'); ER8'); 19:WRITELN('9 PER8,PER4,MAJ7,MAJ2,MIN2,MAJ3'); 110:WRITELN('10 MIN3,TRIT,PER5,MIN6,MAJ6,MIN7'); 111:WRITELN17:WRITELN('7 MIN2,MAJ2,MIN3,MAJ3,PER4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,PER8'); 18:WRITELN('8 MIN2,MAJ2,MIN3,MAJ3,PER('11 MIN2,MAJ2,MIN3,MAJ3,PER4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,PER8'); /END; -PUTBYTE(0007B); -PUTBYTE(CTRLS); -PUTBYTE(GS4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,PER8'); 19:WRITELN('9 PER8,PER4,MAJ7,MAJ2,MIN2,MAJ3'); 110:WRITELN('10 MIN3,TRIT,PE); -MOVE(0,350,UP); +END; 'END #END; PROCEDURE RETURN; VAR JJ : INTEGER; #BEGIN (* RETURN PLACES THE ALPHA CURSOR WHERE R5,MIN6,MAJ6,MIN7'); 111:WRITELN('11 MIN2,MAJ2,MIN3,MAJ3,PER4,TRIT,PER5,MIN6,MAJ6,MIN7,MAJ7,PER8'); )WRITELN; )QCOUNTER:IT LEFT OFF AFTER GRAPHICS MODE *) %IF GRAPH THEN 'BEGIN )MOVE(0,350,UP); PUTBYTE(US); )WRITELN(' '); =QCOUNTER+18; 'END; %UNITN:=-1; %WHILE (UNITN<0) OR (UNITN>11) DO 'BEGIN )WRITELN('WHICH UNIT 1 THROUGH 11 DO YOU WANT\'); )IF QCOUNTER<14 THEN )FOR JJ:=0 TO QCOUNTER )DO WRITELN )ELSE )FOR JJ:=0 TO (QCOUNTER+20) )DO WRITELN; 'END; #END; PROC)UNITN:=NUMBERIN; )QCOUNTER:=QCOUNTER+2; 'END; %RESETUNIT:=TRUE; %IF NOT FIRST THEN NEXT:=TRUE; %FORMAL:=FALSE; #END; PREDURE SETUP; #BEGIN (* SETUP PLACES THE TEKTRONIX INTO GRAPHICS MODE *) %IF GRAPH THEN 'BEGIN )PUTBYTE(0007B); )PUTBYTE(OCEDURE STAFF(STAFFN : INTEGER); VAR IX : INTEGER; #BEGIN (* DRAW A STAFF *) %IF GRAPH THEN 'BEGIN )SPACER:=140; )FOR Y:=CTRLS); )PUTBYTE(GS); 'END; #END; PROCEDURE GRAPHICS; VAR NOTEVALUE : INTEGER; #BEGIN (* KEEP TRACK OF AND DRAW NOTES 0 TO STAFFN DO +BEGIN -YY := 550-(Y*150); -FOR IX := 1 TO 5 DO /BEGIN 1MOVE(0,YY+16*IX,UP); 1MOVE(1000,YY+16*IX,DOWN); /E*) %IF GRAPH AND DRAW THEN 'BEGIN )IF SPACER>950 THEN +BEGIN (* CLEAR THE ALMOST FULL SCREEN *) -CLEAR; -SETUP; -STAFF(STND; -IF ODD(Y) THEN FCLEFF(Y) -ELSE GCLEFF(Y); -BAR(0,Y);BAR(1000,Y); -MOVE(0,350,UP); +END; )IF SHOWINT THEN +BEGIN AFFN); +END ELSE %BEGIN )NOTEVALUE:=8 DIV LENGTH; )IF ANSWER[1] IN ['A','B'] THEN ANSWER[3]:=CHR(ORD(ANSWER[3])+1); )IF (-MOVE(0,700,UP); -PUTBYTE(US); -WRITE('UNIT '); /CASE UNITN OF 11:WRITELN('1 MAJ2,PER4,MAJ7,PER8'); 12:WRITELN('2 ANSWER[3] IN ['1'..'3']) OR )((ANSWER[1] IN ['A','B']) AND (ANSWER[3] = '4')) THEN +BEGIN (* BASS CLEFF *) -Y:=1; -YNOT MIN2,MAJ3,TRIT,MAJ6'); 13:WRITELN('3 MIN3,PER5,MIN6,MIN7'); 14:WRITELN('4 MIN2,MAJ2,MAJ3,PER4,MAJ7,PER8'); 15E:=ORD(ANSWER[1])-5+(((ORD(ANSWER[3])-ZERO)-3)*7); +END )ELSE +BEGIN (* TREBLE CLEFF *) -Y:=0; -YNOTE:=ORD(ANSWER[1])-1:WRITELN('5 MIN3,TRIT,PER5,MIN6,MAJ6,MIN7'); 16:WRITELN('6 MIN6,MAJ6,MIN7,MAJ7'); 17:WRITELN('7 MIN2,MAJ2,MI0+(((ORD(ANSWER[3])-ZERO)-4)*7); +END; )FLAGUP:=TRUE; )NOTE(SPACER,Y,YNOTE,NOTEVALUE,FLAGUP); +CASE ANSWER[2] OF ,'N':;  OSSHAIRS'); %WRITELN('OR LETTER TO IDENTIFY DRAWN NOTES.'); %INPUTLN; %CLEAR; %IF ANSWER[1]='P' THEN 'BEGIN )CHARAC]:='3' 1ELSE 1ANSWER[3]:='2'; 1IF ANSWER[1] IN ['A','B'] THEN 1ANSWER[3]:=CHR(ORD(ANSWER[3])-1); 1SETUP; 1GRAPHICS; TER:='A'; )WRITELN('TO PLACE A GIVEN NOTE, ADJUST THE CROSSHAIRS ON THE SCREEN'); )WRITELN('(USING THE DIALS ON THE SIDE OF TH1RETURN; 1COUNTER:=COUNTER+1; /END -ELSE -COUNTER:=4 -ELSE /BEGIN 1SETUP; 1RETURN; 1WRONG; /END; +END )UNTIL CHARACE TERMINAL) UNTIL THE'); )WRITELN('HORIZONTAL LINE IS PLACED ON THE STAFF AT THE PROPER PLACE.'); )WRITELN('THEN HIT ANY CHARATER='Q'; 'END %ELSE 'BEGIN )WRITELN('A NOTE WILL BE DRAWN ON THE STAFF, AND YOU ARE'); )WRITELN('TO RESPOND WITH THE LETTER,'?':SHARP(SPACER-12,Y,YNOTE); ,''':FLAT(SPACER-14,Y,YNOTE); ,'X':DOUBLESHARP(SPACER-10,Y,YNOTE); ,'D':DOUBLEFLAT(SPACER-10,CTER KEY (EXCEPT A Q) AND THE RETURN KEY.'); )WRITELN('TO QUIT THE DRILL, TYPE Q AND A RETURN KEY.'); )SETUP; )STAFFN:=1; )SY,YNOTE); +END; )SPACER:=SPACER+52; (END; 'END; #END; PROCEDURE WRONG; VAR SELECT:INTEGER; #BEGIN (* NEGATIVE FEEDBACK TAFF(STAFFN); )RETURN; )REPEAT )FOR COUNTER2:=1 TO 4 DO )NOTES[COUNTER2]:=CHR(TRUNC(RANDOM*7 + 1.0)); )WRITELN('PLEASE PLACTO THE STUDENT *) %SELECT:=TRUNC(1.0+RANDOM*7); 'CASE SELECT OF )1:WRITELN('TRY AGAIN.'); )2:WRITELN('NO.'); )3:WRITELN('SE THE FOLLOWING NOTES: ',NOTES[1], (' ',NOTES[2],' ',NOTES[3],' ',NOTES[4]); )QCOUNTER:=QCOUNTER+1; )COUNTER:=1; ORRY, THAT"S WRONG.'); )4:WRITELN('TRY AGAIN.'); )5:WRITELN('MAKE ANOTHER TRY.'); )6:WRITELN('NOT RIGHT, CHOOSE AGAIN.'); )7)WHILE (CHARACTER<>'Q') AND (COUNTER<=4) DO +BEGIN %IF QCOUNTER=0 THEN BEGIN SETUP; RETURN; WRITE('PLEASE PLACE THE FOLLO:WRITELN('I"M AFAID THAT"S NOT RIGHT.'); 'END; %QCOUNTER:=QCOUNTER+1; #END; PROCEDURE RIGHT; VAR SELECT:INTEGER; #BEGIN (*WING NOTES: '); FOR COUNTER2:=COUNTER TO 4 DO WRITE(NOTES[COUNTER2]); WRITELN; QCOUNTER:=1; END; -CORRECTY:=640+(ORD(NOTE POSITIVE FEEDBACK TO THE STUDENT *) %PUTBYTE(VT); WRITE(' '); %SELECT := TRUNC(1.0 + RANDOM*9); 'CASE SELECT OF S[COUNTER])-10)*8; -GINPUT(TRUE,XIN,YIN,CHARACTER); -IF ((YINCORRECTY-4)) -OR ((YINCORRECTY+52)) -OR ((YINCORRECTY+108)) -OR ((YINCORRECTY-90)) -OR ((YINCORRECTY-146)) -OR ((YINCORRECTY-202)) -OR (ORD(CHARACTER)=Q) THEN -IF ORD(CHARACT)9:WRITELN('GOOD JOB.'); 'END; #END; PROCEDURE DRILL; VAR NOTES:ALPHA; #BEGIN (* DRILL THE STUDENT ON READING THE LETTEER)<>Q THEN /BEGIN 1ANSWER[1]:=NOTES[COUNTER]; 1ANSWER[2]:='N'; 1IF YIN>CORRECTY + 108 THEN 1ANSWER[3]:='6' 1ELSE 1IF YINRS OF NOTES *) %SHOWINT:=FALSE; %CLEAR; %WRITELN('NOTE READING DRILL.'); %WRITELN('RESPOND PLACE TO POSITION NOTE WITH CR>CORRECTY+52 THEN 1ANSWER[3]:='5' 1ELSE 1IF YIN>CORRECTY-4 THEN 1ANSWER[3]:='4' 1ELSE 1IF YIN>CORRECTY-146 THEN 1ANSWER[3 ANSWER='XCLE' THEN 'BEGIN (* GOODBYE, OLD CLASS RECORDS... *) )NORM:=FALSE; )WRITELN('CLEAR RECORD FILE ... ENTER PASSWORD'); )INPUTLN; )IF ANSWER='CATS' THEN +BEGIN -WRITELN('HOW MANY STUDENTS\'); -JJ:=NUMBERIN; -WHILE JJ>0 DO /BEGIN 1WRITELN(NEWREC,JJ:1,' 00/00/00.000/000/000/000'); 1JJ:=JJ-1; /END; -QCOUNTER:=QCOUNTER+4; +END 'END %ELSE 'BEGIN (* GENERATE O^INSTRUCTOR"S REPORT *) 'CLEAR; )DATE(DAY); )WRITELN('STUDENT PROGRESS REPORT. ',DAY); )WRITELN; )WRITELN('STF@BUDENT LAST TOTAL TOTAL TOTAL MEAN ? OF'); )WRITELN('ID ? RUN RUNS RIGHT EXERCISES REPLIES/ANS'); )WRITELN; )RESET(MUSREC); )REPEAT )READLN(MUSREC,FIDNUM,DAY[1],DAY[2],DAY[3], )DAY[4],DA OF THAT NOTE. IF '); )WRITELN('CORRECT, A NEW NOTE WILL BE DRAWN. TYPE QUIT TO STOP.'); )SETUP; )STAFFN:=1; )STAFF(STAFFNY[5],DAY[6],DAY[7],DAY[8],DAY[9], )DAY[10],RUNS,DUMMY[1],FANS,DUMMY[2],FTRY,DUMMY[3],WCOUNTER); ); )WHILE ORD(ANSWER[1])<>Q DO +BEGIN -ANSWER[1]:=CHR(TRUNC(RANDOM*7 + 1.0)); -ANSWER[2]:='N'; -ANSWER[3]:=CHR(ZERO+2+TRUNC)WRITE(FIDNUM:2,' ',DAY[1],DAY[2],DAY[3], )DAY[4],DAY[5],DAY[6],DAY[7],DAY[8],DAY[9], (RANDOM*5)); -DUMMY[1]:=ANSWER[1]; -GRAPHICS; -RETURN; -INPUTLN; -QCOUNTER:=QCOUNTER+1; -WHILE (ORD(ANSWER[1])<>ORD(DUMMY[1])) -AND (ORD(ANSWER[1])<>Q) DO /BEGIN 1QCOUNTER:=QCOUNTER+1; 1IF ANSWER[1]<>DUMMY[1] THEN 3BEGIN 5PUTBYTE(VT); 5WRITE(' '); 5QCOUNTER:=QCOUNTER-1; 5WRONG; 3END; 1INPUTLN; /END; -IF ORD(ANSWER[1])<>Q THEN /BEGIN 1RIGHT; 1SETUP; /END +END 'END; %SHOWINT:=TRUE; %CLEAR; %SETUP; %STAFF(1); %STAFFN:=1; %RETURN; %PLAY; #END; PROCEDURE RECORDS;  VAR JJ,FIDNUM,FANS,FTRY : INTEGER; #BEGIN (* RECORDS IS FOR GENERATING USAGE REPORTS BAND FOR CLEARING THE DATA FILE *) %IF  )DAY[10],RUNS:8,FANS:12,FTRY:12); )IF FANS>0 THEN WRITE(' ',(WCOUNTER+FANS)/FANS:5:3); )WRITELN; )UNTIL FIDNUM=1; 'EPLAY; /END -ELSE NOPE; ,'U':IF (ANSWER='U ') OR (ANSWER='UNIT') THEN /BEGIN 1UNIT; 1CLEAR; 1SETUP; 1STAFF(STAFFN); 1RND #END; PROCEDURE QUESTION; VAR EXERCISE,KK : INTEGER; SELECT,LOOPER:INTEGER; PROCEDURE NOPE; #BEGIN %IF NOT JUSTLOOKINGETURN; /END -ELSE NOPE; ,'E':IF (ANSWER='E ') OR (ANSWER='EXER') THEN /BEGIN 1WRITELN('HOW MANY EXERCISES WOULD YOU LIKE  THEN 'BEGIN )WRITELN('SORRY, THAT"S NOT A COMMAND. IF'); )WRITELN('YOU WANT MORE HELP, TYPE INFO.'); )WRITELN('OTHERWISE, TO ADVANCE\'); 1EXERCISE:=NUMBERIN; 1WHILE EXERCISE>1 DO 3BEGIN 5ADVANEXER; 5EXERCISE:=EXERCISE-1; 3END; 1NEXT:=TRUE; TRY ANOTHER INTERVAL NAME.'); )QCOUNTER:=QCOUNTER+3; 'END %ELSE 'BEGIN )WRITELN('I"M AFRAID THAT I DON"T UNDERSTAND YOUR LA1DRAW:=FALSE; 1INTDECODE(INTERVAL1,INTERVAL2); 1EXCOUNTER:=EXCOUNTER+1; 1QCOUNTER:=QCOUNTER+2; /END -ELSE NOPE; ,'N':IF (ST REPLY.'); )WRITELN('YOU MAY ENTER EITHER AN INTERVAL NAME OR SOME OTHER'); )WRITELN('COMMAND. FOR A LIST OF INTERVAL NAMESANSWER='N ') OR (ANSWER='NEXT') THEN /BEGIN 1NEXT:=TRUE; 1DRAW:=FALSE; /END; ,'O': IF (ANSWER='O ') OR (ANSWER='ORDE') , TYPE INFO .'); )QCOUNTER:=QCOUNTER+3; (IF QCOUNTER>19 THEN QCOUNTER:=QCOUNTER+4; 'END; #END; #BEGIN (* QUESTION LOOKS THEN /BEGIN 1UPDOWN:=NOT UPDOWN; 1HARMONIC:=FALSE; 1CHANGEMODE; 1PLAY; /END -ELSE NOPE; ,'A':IF (ANSWER='A ') OR (ANSWFOR COMMANDS OR ANSWERS TO QUESTIONS *) %IF NOT JUSTLOOKING THEN QCOUNTER:=QCOUNTER+1; %IF QCOUNTER>26 THEN 'BEGIN )CLEAR; ER='AGAI') THEN /BEGIN 1PLAY; /END -ELSE NOPE; ,'B':IF (ANSWER='B ') OR (ANSWER='BYE ') THEN /BEGIN 1BYE:=TRUE; 1GRAPH)SETUP; )STAFF(STAFFN); )RETURN; 'END; %IF QCOUNTER=15 THEN 'BEGIN )SETUP; )RETURN; )QCOUNTER:=QCOUNTER+1; 'END; :=FALSE; 1NEXT:=TRUE; 1DRAW:=FALSE; /END -ELSE NOPE; ,'L':IF (ANSWER='L ') OR (ANSWER='LENG') THEN SPEED -ELSE NOPE; ,'%IF NOT JUSTLOOKING THEN INPUTLN; %IF NOT (((ANSWER[4] IN ['2'..'8','T']) AND (ANSWER[1] IN ['M','P','T'])) %OR ((ANSWER[2] IM':IF (ANSWER='M ') OR (ANSWER='MELO') THEN /BEGIN 1HARMONIC:=FALSE; 1CIS:=1; 1TOPVOICE:=0; 1CHANGEMODE; 1PLAY; /END -N ['2'..'8']) AND (ANSWER[1] IN ['P','M','N'])) %OR ((ANSWER[1]='T') AND (ANSWER[2]=' '))) 'THEN BEGIN (* LIST OF COMMANDS  *) )IF ANSWER[1] IN ['A'..'Z'] THEN +CASE ANSWER[1] OF ,'I':IF (ANSWER='I ') OR (ANSWER='INFO') THEN /BEGIN 1WRITELN('FOR GENERAL PROGRAM INFORMATION, TYPE GENERAL .'); 1WRITELN('FOR A LIST OF COMMANDS, TYPE COMMAND .'); 1INPUTLN; 1QCOUNTER:=QCOUNTER+3; 1IF ANSWER[1]='C' THEN HELP:=FALSE 1ELSE HELP:=TRUE; 1INFO(HELP); 1CLEAR; 1SETUP; 1STAFF(STAFFN); 1RETURN; 1 NOPE; ,'F':IF (ANSWER='F ') OR (ANSWER='FORM') THEN -FORMAL:=TRUE -ELSE NOPE;  5ACCIDENT2:=ACCIDENT; 5OCTIVE2:=OCTIVE; 5GRAPHICS; 5PLAY; 5SPACER:=SPACER-30; 3END; 1RETURN; /END -ELSE NOPE; ,'D':IF,'R':IF (ANSWER='R ') OR (ANSWER='RAND') THEN -FORMAL:=FALSE -ELSE NOPE; ,'G':IF (ANSWER='G ') OR (ANSWER='GRAP') /OR ( (ANSWER='D ') OR (ANSWER='DRIL') THEN -DRILL -ELSE NOPE; ,'P':IF (ANSWER='P ') OR (ANSWER='PLAY') THEN /BEGIN 1SHOWINTANSWER='GAME') THEN BEGIN 1IF ANSWER='GAME' THEN 3BEGIN 5COUNTER:=0; 5LOOPER:=0; 5CLEAR; 5WRITELN('WELCOME TO SEARCH AND D:=FALSE; 1QCOUNTER:=QCOUNTER+2; 1WRITELN('WHAT INTERVAL WOULD YOU LIKE AN EXAMPLE OF\'); 1WRITELN('TYPE QUIT TO QUIT PLAYING ESTROY. GOOD LUCK.'); 5WRITELN('ENTER SPEED'); 5GSPEED:=NUMBERIN; 5CLEAR; 5CHARACTER:='B'; 5WHILE ORD(CHARACTER)<>Q DO 7BEXAMPLES.'); 1WHILE ORD(ANSWER[1])<>Q DO 3BEGIN 5INPUTLN; 5IF ((ANSWER[1]='T') AND (ANSWER[2]=' ')) OR EGIN 9LOOPER:=LOOPER+1; 9TIME(TIM); 9PUTBYTE(0007B); 9PUTBYTE(CTRLS); 9PUTBYTE(GS); 9X:=ROUND(RANDOM*1000); 9Y:=ROUND(RAN5((ANSWER[1] IN ['P','M','N']) AND (ANSWER[2] IN ['2'..'8'])) 7THEN BEGIN 9INTTEMP:=INTNAME; 9INTDECODE(ANSWER[1],ANSWER[2])DOM*700); 9MOVE(X,Y+4,UP); 9MOVE(X+4,Y,DOWN); 9MOVE(X-4,Y,DOWN); 9MOVE(X,Y+4,DOWN); 9WRITELN(' '); 9GINPUT(TRUE,XIN; 9ANSWER:=INTNAME; 9INTNAME:=INTTEMP; 7END; 5LOOPER:=0; 5IF ORD(ANSWER[1])<>Q THEN 7BEGIN 9WHILE (ANSWER<>INTNAME) AND (,YIN,CHARACTER); 9TIME(TIM2); 9IF ((ORD(TIM[6])-ZERO)*60+(ORD(TIM[8])-ZERO)*10+ORD(TIM[9])-ZERO+GSPEED> 9(ORD(TIM2[6])-ZERO)*LOOPER<500) DO )BEGIN 9ADVANEXER; 9INTDECODE(INTERVAL1,INTERVAL2); 9LOOPER:=LOOPER+1; 9END; 9IF LOOPER>500 THEN ;BEGIN =60+(ORD(TIM2[8])-ZERO)*10+ORD(TIM2[9])-ZERO) 9AND (SQR(XIN-X)+SQR(YIN-Y)<=100+SQR(GSPEED)) 9THEN ;BEGIN =COUNTER:=COUNTER+1;JUSTLOOKING:=TRUE; =QUESTION; =JUSTLOOKING:=FALSE; ;END 9ELSE ;BEGIN =PLAY; =IF ((NOTEVAL>NOTEVAL2) AND (NOT UPDOWN)) OR  =CLEAR; ;END; 7END; 5CLEAR; 5WRITELN('HITS: ',COUNTER,' RANK:',SQR(LOOPER/COUNTER)+(GSPEED/2)); 5WRITELN; =((NOTEVAL60) AND (UNITN>0) THEN 3BEGIN 5RESET(MUSDATA); 5FOR COUNTER:=12 TO 12*UNITN DO 5READLN(MUSDATA); 5ADVANEXER; 1],ANSWER[4]) < INTVALUE(INTERVAL1,INTERVAL2) -THEN WRITELN('>') -ELSE WRITELN('<'); +END; )WCOUNTER:=WCOUNTER+1; 'END #EN5TOTALEX:=0; 3END; /END -ELSE NOPE; ,'S':IF (ANSWER='S ') OR (ANSWER='SHOW') THEN /BEGIN 1PUTBYTE(VT); 1WRITE(' 'D; PROCEDURE SELECT; VAR JJ : INTEGER; #BEGIN (* SELECT PROPER INTERVALS FOR SPECIFIED UNIT *) %IF (RESETUNIT) OR ((TOTA); 1WRITE(NOTELETTR,ACCIDENT,OCTIVE:1, 0' ',NOTELETTR2,ACCIDENT2,OCTIVE2:1); 1INTDECODE(INTERVAL1,INTERVAL2); 1WRITELN(' LEX>60) AND (UNITN>0)) THEN 'BEGIN )RESETUNIT:=FALSE; )TOTALEX:=0; )IF UNITN>0 THEN ',INTNAME); 1QCOUNTER:=QCOUNTER+1; 1NEXT:=TRUE; /END -ELSE NOPE; ,'X':IF (IDNUM=0) AND ((ANSWER='XREP') OR (ANSWER='XCLE'))+BEGIN (* REPOSITION MUSDATA TO CORRECT UNIT *) -RESET(MUSDATA); -FOR COUNTER:=12 TO 12*UNITN DO -READLN(MUSDATA); -ADVANEX THEN RECORDS -ELSE NOPE; ,'J','K','Q','V','Y','Z':NOPE; +END )ELSE NOPE; 'END %ELSE 'BEGIN (* SEE IF RIGHT INTERVAL NAER; +END 'END; %ANS:=FALSE; %EXCOUNTER:=EXCOUNTER+1; %IF FORMAL THEN ADVANEXER %ELSE %FOR JJ:=1 TO TRUNC(RANDOM*3 + 2.0) ME WAS GIVEN *) )IF (ANSWER[2] IN ['1'..'8',' ']) AND (ANSWER[1] IN ['P','M','N','T']) +THEN BEGIN -INTTEMP:=INTNAME; -INTDEDO ADVANEXER; %INTDECODE(INTERVAL1,INTERVAL2); %PLAY; %WHILE (ANS=FALSE) AND (NEXT=FALSE) %DO QUESTION; %IF ANS THEN ANSCOCODE(ANSWER[1],ANSWER[2]); -ANSWER:=INTNAME; -INTNAME:=INTTEMP; +END; )IF ANSWER=INTNAME THEN +BEGIN -RIGHT; -ANS:=TRUE; UNTER:=ANSCOUNTER+1; %SPACER:=SPACER+35; %NEXT:=FALSE; %DRAW:=TRUE; #END; PROCEDURE UPDATE; VAR JJ,FIDNUM,FANS,FTRY,FWCOUN-IF DRAW THEN /BEGIN 1IF ((NOTEVAL>NOTEVAL2) AND (NOT UPDOWN)) OR 3((NOTEVALFIDNUM) AND (NOT EOF(MUSREC)) DO 'BEGIN )READLN(MUSREC,FIDNUM,DAY[1],DAY[2],DAY[3], )DAY[4],DAY[5],DAY[6],DAY[OCTIVE2; 5NOTELETTR2:=DUMMY[1]; 5ACCIDENT2:=DUMMY[2]; 5OCTIVE2:=ORD(DUMMY[3]); 3END; 1SETUP; 1ANSWER[1]:=NOTELETTR; 1ANSW7],DAY[8],DAY[9], )DAY[10],RUNS,DUMMY[1],FANS,DUMMY[2],FTRY,DUMMY[3],FWCOUNTER); )IF IDNUM<>FIDNUM THEN )WRITELN(NEWREC,FIDNUER[2]:=ACCIDENT; 1ANSWER[3]:=CHR(OCTIVE+ZERO); 1GRAPHICS; 1IF (DRAW=TRUE) AND (QCOUNTER>0) THEN 4BEGIN 1ANSWER[1]:=NOTELETTM:1,DAY[1],DAY[2],DAY[3], )DAY[4],DAY[5],DAY[6],DAY[7],DAY[8],DAY[9],  OODBYE FOR NOW.'); )IF (NORM) AND (IDNUM>0) THEN )UPDATE; 'END #END. E REST } )MOVE(X-7,YY,UP);MOVE(X-7,YY-8,DOWN); )MOVE(X+7,YY-8,DOWN);MOVE(X+7,YY,DOWN); )MOVE(X-16,YY,UP);MOVE(X+16,YY,DOWN); 'END %ELSE 'BEGIN )IF RESTVALUE=1 THEN +BEGIN { HALF REST } -MOVE(X-7,YY,UP);MOVE(X-7,YY+8,DOWN); -MOVE(X+7,YY+8,DOWN);MOVE(X+7,YY,DOWN); -MOVE(X-16,YY,UP);MOVE(X+16,YY,DOWN); +END )ELSE +BEGIN -IF RESTVALUE=2 THEN /BEGIN { 1/4 REST } 1MOVE(X,YY-17,UP); 1MOVE(X-5,YY-10,DOWN); 1MOVE(X-4,YY-7,DOWN); 1MOVE(X-1,YY-4,DOWN); 1MOVE(X-5,YY+3,DOWN); 1MOVE(X,YY+12,DOWN); 1MOVE(X,YY+15,UP); 1MOVE(X+5,YY+8,DOWN); 1MOVE(X,YY,DOWN); 1MOVE(X-1,YY-4,DOWN);,DAY[5],DAY[6],DAY[7],DAY[8],DAY[9], )DAY[10],RUNS+1:1,'/',FANS+ANSCOUNTER:1, ('/',FTRY+EXCOUNTER-1:1,'/',WCOUNTER:1); )WHILE JJ>0 DO +BEGIN -READLN(MUSREC,FIDNUM,DAY[1],DAY[2],DAY[3], -DAY[4],DAY[5],DAY[6],DAY[7],DAY[8],DAY[9], -DAY[10],RUNS,DUMMY[9MOVE(XSTEM+12,YSTEM+37,DOWN); 7END; 3END /END +END 'END; %IF (Y=0) AND (YNOTE=-7) THEN %DASH(X,Y,YNOTE); %IF (Y=0) AND1],FANS,DUMMY[2],FTRY,DUMMY[3],FWCOUNTER); -WRITELN(NEWREC,FIDNUM:1,DAY[1],DAY[2],DAY[3], -DAY[4],DAY[5],DAY[6],DAY[7],DAY[8], (YNOTE>4) THEN 'BEGIN )DASH(X,Y,5); )IF YNOTE>6 THEN +BEGIN -DASH(X,Y,7); -IF YNOTE>8 THEN /BEGIN 1DASH(X,Y,9); 1IF YNDAY[9], -DAY[10],RUNS:1,DUMMY[1],FANS:1,DUMMY[2],FTRY:1,DUMMY[3],FWCOUNTER:1); -JJ:=JJ-1; +END; 'END; #END; #BEGIN (* NOWOTE>10 THEN 1DASH(X,Y,11); /END +END 'END; %IF (Y=1) AND (YNOTE<-6) THEN 'BEGIN )DASH(X,Y,-7); )IF YNOTE<-8 THEN +BEGIN WE BEGIN THE ACTUAL MUSIC PROGRAM *) %INITIALIZE; %WHILE NOT BYE DO 'BEGIN )WRITELN('DO YOU WANT INFORMATION\'); )INPUTLN -DASH(X,Y,-9); -IF YNOTE<-10 THEN DASH(X,Y,-11); +END 'END #END; PROCEDURE RESTFLAG(X,YY : INTEGER); #BEGIN { FLAGS FOR; )IF ANSWER[1]='Y' THEN +BEGIN -INFO(TRUE); -INFO(FALSE); +END; )WRITELN('WHAT IS YOUR STUDENT ID NUMBER\');  1/4 TO 1/32 RESTS } %MOVE(X-7,YY-15,UP); %MOVE(X+7,YY+15,DOWN); %MOVE(X-4,YY+10,DOWN); %MOVE(X-8,YY+10,DOWN); %MOVE(X-10,Y)IDNUM:=NUMBERIN; )IF IDNUM=0 THEN +BEGIN -UNITN:=1; -NEXT:=FALSE; -LENGTH:=4; -FIRST:=FALSE; -DRAW:=TRUE; +END )ELSE Y+12,DOWN); %MOVE(X-9,YY+14,DOWN); %MOVE(X-8,YY+15,DOWN); %MOVE(X-7,YY+14,DOWN); %MOVE(X-10,YY+12,DOWN); #END; PROCEDURE R+BEGIN -UNIT; -CLEAR; -SETUP; -STAFF(STAFFN); -RETURN; -FIRST:=FALSE; +END; )WHILE NOT BYE DO SELECT; )WRITELN('WELL,GEST(X,Y,YNOTE,RESTVALUE : INTEGER); #BEGIN { DRAW A REST } %YY:=606-(Y*150)+YNOTE*8; %IF RESTVALUE=0 THEN 'BEGIN { WHOL 150); %MOVE(X,YY,UP); %MOVE(X,YY-64,DOWN) #END; PROCEDURE DOT(X,Y,YNOTE : INTEGER); #BEGIN { DRAW A DOT FOR LONGER NOTES  } %YY:=606-(Y*150)+YNOTE*8; %MOVE(X+16,YY+2,UP);MOVE(X+16,YY-2,DOWN); %MOVE(X+18,YY+2,UP);MOVE(X+18,YY-2,DOWN); #END; PROCEDURE INFO(HELP : BOOLEAN); #BEGIN { RUN-TIME INFORMATION FOR THE STUDENT } 'IF HELP THEN BEGIN )CLEAR; 'END %ELSE 'BEGIN: @5 @@eBA Am f&f& w-?BAa~ 5 >fff& w-#W-% )CLEAR; )IF FIRST THEN CLEAR; 'END; #END; PROCEDURE UNCODE(NOTELETTR,ACCIDENT:CHAR; OCTIVE:INTEGER); VAR IVAL,JVAL : INTEW-$!W/ 5W->>= ,fwzw Bew& RZ b`E@X d&GER; #BEGIN { UNCODE TURNS A CONVENTIONAL NOTATION NOTE INTO } ${ A NUMBER REPRESENTING IT"S FREQUENCY } 'CASE NOTELETTR OF .<@ R<@ b<@ `<@ X<@ d7.4d?Z  w dU@Xw ^>v.<@ d<@ Z<@ d<@('A':JVAL:=9; ('B':JVAL:=11; ('C':JVAL:=0; ('D':JVAL:=2; ('E':JVAL:=4; ('F':JVAL:=5; ('G':JVAL:=7; 'END; 'CASE ACCIDENT X&<@ ^).Z `6 P& b \7 &<@ ` <@ P <@ b$<@ \Y.\ X  OF ('N':IVAL:=JVAL; ('?':IVAL:=JVAL+1; ('^':IVAL:=JVAL-1; ('D':IVAL:=JVAL-2; ('X':IVAL:=JVAL+2; 'END; > &PASCALSYUSERPROGPRINTERRINITIALIGETCMD %OCNOTE:=36+IVAL+(OCTIVE-2)*12; #END; PROCEDURE QUIET; VAR K : INTEGER; #BEGIN { SET MODE TO ALL VOICES, THEN LOAD UNPL n`& , @ R , *^/ńȄ 1MOVE(X+5,YY-9,DOWN); 1MOVE(X,YY-7,DOWN); 1MOVE(X,YY-17,DOWN); 1MOVE(X-2,YY+3,UP); 1MOVE(X+4,YY+10,DOWN); 1MOVE(X,YY+15,UAYABLE NOTES } %OUTPUT^:=CHR(74B);PUT(OUTPUT); %OUTPUT^:=CHR(05B);PUT(OUTPUT); %WRITE('CAA'); 'FOR K:= 1 TO 4 DO BEGIN )OUTP); 1MOVE(X,YY,DOWN); 1MOVE(X-3,YY-12,UP); 1MOVE(X,YY-4,DOWN); /END -ELSE /BEGIN { 1/8 REST } 1RESTFLAG(X,YY); 1IF RESTPUT^:=CHR(74B);PUT(OUTPUT);OUTPUT^:=CHR(05B);PUT(OUTPUT); )WRITE('H@A@A'); 'END; #END; PROCEDURE NOOP; #BEGIN { NOOP SENDVALUE>3 THEN 3BEGIN { 1/16 REST } 5RESTFLAG(X-4,YY-8); 5IF RESTVALUE>4 THEN 7BEGIN { 1/32 REST } 9RESTFLAG(X-8,YY-16)S A 'NO OPERATION' SIGNAL TO THE BOX. } %PUTBYTE(DC1); %WRITE('@A@A@A'); #END; PROCEDURE CONVERT(X:INTEGER); ; 9IF RESTVALUE>5 THEN ;BEGIN { 1/64 REST } =RESTFLAG(X-12,YY-24); =IF RESTVALUE>6 THEN =RESTFLAG(X-16,YY-32); ;END 7END 3END /END +END 'END #END; PROCEDURE BAR(X,Y : INTEGER); #BEGIN { DRAW A BAR TO SEPARATE MEASURES } %YY:=630-(Y* No user program linked in6P"dṔ6́4́7́8æ(, exceeds destination maximum length of آ *" )In*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58 source line: 46b  ./ .+  Variables in +-áprogram æ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, module ȡ)3 ˡ3:3O ʁ6  unused, ʁ7  in largest area.4 "d 55 .1Zp 3 3 Í3 + ٦:=    &Ȅ٦š r  - ORD( )TġHǀ ġ#٦ ''٦ CHR( )d ` @' B B3$ B@ ɍF(á ٦TRUE á٦FALSE V>`ߡ٦ *NOT SET* ޡ( ߓ ŧ7ȡ5ˡ0݊ Bġsá  ȡ%٦ ޓ3Zrˍ"á  á.ˡ*ɡe e+ e ܕڂȡ 0.    ˡá ˡ7̂ƂPƂ QƂġ0ȡ:b"v3˶3 ˍ.PP Pv\ Ɓ-(š4))EƀEƀP).TEXTU)J333 3 333!!OOPS!!Щ@ Z á{ NIL }  XP ȡ ؞&.,,˶,Ä ,,E٢: ^ to @ + 3R**ȡǀ ɍ8%ńAš٢&P٢&?EEƀEƀP.PMDTP,æSYSTEM.Eō9 in System, to exit)*T Ɓ- Dump to file:Ɓ/PƁ/Ɓ/́XƁXƁ/PƁX.TEXTUSystem I/O error(Unimplemented instruction(Floating point error(String overflow(Programmed hƁXPƁ/"áv./,́.3ʁ.ʁ.,á+́.+/Info written to alt(String too long(hString index out of range(GArgument out of range(*"|\F0/)Can't open file Ɓ/  )01E1ȡ0E1Í01ydE*4. 6,V| ~ :n n,or(No proc in seg-table(Exit from uncall10  0%a3+أ  أ  DŽ +ƁW`DsDsD nn ndnn'ýʁʁʁX-N3,>:+/BU(&l]  "$T8 ,---**SYSTEM.MISCINFOP+"á,+ ́ʁ>+>ʁJ+J ++n  ȡ,}ؤ---*,EDump: P+$EEP Up, Top, YP+,ˡ)EEPDown, Bottoۢ0ۢ ؞&}CONSOLE}SYSTERM???}?á';??m, ^P ˡ!EEPEdit, VPEEP File, QuitZP'Qá` 3Ɓ_ٟá'C &"á}PRINTER&"á}REMOTEƄƅ/Ƅ*SYSTEM.CHARSET/3E"223 8. to exit)*3 r unknown cause("áǀ"áƄ  ̄+ʄ+ȡ   ̄+ʄ+ȡƂ  hardware error(illegal unit #(illegal I/O request(data-com timeout(volume went off-line(}GRAPHIC :ƄPV77::9file lost in dir( bad file name(no room on volume(volume not found(file not found( dup dir ent988:9  6    .Xry(nfile already open(U file not open(@invalid input format($VB.{hQ> IO error: :: F7 :9CONSOLE:(:9SYSTERM:(8(< Unknown run-time error(Value range error(No proc in seg-table(Exit from uncall:986ë6!:%蓡$ ƀƀ.CODEƀPt   TE?Command: Edit, Run, Filer, Compile, Xecute, Init, Again T%>ˡ.ˡ sš sJ&$&::Eń[I.4i] P'T)S%SjTT|S@*SYSTEM.EDITORc *SYSTEM.FILEROKFA=8dAXE:E ERT'Jɡšɡš  0P= "3&(*,.Mˡ  š*SYSTEM.EDITOR &+ *SYSTEM.INITP&:*:azȄaA:)Type a < space > to continue:) "á *SYSTEM.INIT8 7 š  š*SYSTEM.EDITOR=á5%:.& XÍ ˫X `(ުP22ȡ7233 ȡ 23aħ3zȄ 23aA22988:9  6    .X.CODEt :98:9. +ƁW  á +:: F7 :9CONSOLE:(:9SYSTERM:(8 28lN&d4 TT|S@*SYSTEM.EDITORc *SYSTEM.FILEROKFA=8dAXڪP--áOPPáP/@P"áR.Q.Qȡ@.. č-O`.R/.SRPRSR0P= "3&(*,.Mˡ  š*SYSTEM.EDITOR &+ *SYSTEM.INITSP.. Bad block #0! not codeH-á"Illegal file name "á *SYSTEM.INIT8 7 š  š*SYSTEM.EDITOR=á5%:.No file Qv 2*SYSTEM.COMPILER*SYSTEM.SWAPDISK(7   .CODEt :98:9. +ƁW  á + Compiling.8 :..TEXTؚ*٪Pء6!á-E** Stack Overflow **PEE* :9"8}? *   R.٪PƁ.ƂZƁ.́VƁVPƁVǠƁV؞"ÚƁ..Ú.ۤƁ.Execution error #  (*>Já2šDh.|...:...P`.CODEۡ@.TEXTۡڡ..P.. áMš1 ˡ   á ͇ +>ˡCODEU.! No workfile. Execute: šA.á &88s ˄ 8sB$$>:&ˡ,ˡ sš s   , Ą:쓡"á  8"ë á 쓡-Ä+  ɡ"á M  $Ꟛšr#ń@ 񂾲y 񂾂0 ń Ȅ g>@ << á6铡,! }ÍV}M ˡ!  ,ȫ, 넡B BB/"ˡ ( ! 767, } ,Í1} š˄  `" R 9S328˄ šá  d</ dÍÍ (  d˯7 H ȡ   ˡ 퓄 Ä퓡  dÄÍ" ˄"ɡ0 H" ġ  *@#ٕš ګ۫ š۫ ګ,.  dá dá C#C˄ C    á&á    ȡQɫ  ȡ .  .ȡ? ȡ  ġ} -/18  Äɡ3ġ$ꕫš*á ?:22ȡá;2á!2ȡ5252š[2  á ġMáš3 삫 d #( -2š2222ȡ2š5252á4x4]11á4^1šX42233y  Íáɡ 럚肚Z ū 3042221ç42ç1Ä2*á444ńi55P.TEXTF.CODE4. < áš < c@B B Ä $ BINFO".GRAF.FOTO!}áë  B >Ä /  !š Í 7ÄȄĄMȄqfȡD ōɍ ō ȍ dč "ÄT ǐɄ96ń}66! á } 쓡ë  쓡 ! 8 ,} Ä{횧 :˄˥ń á   uš  gá   낫šꓡš땫ĚQ삫Ú< š 0.áBy0$yheEÍ ^ "á50 ɚ j ɍCá >듡ɡ 퀞$ $ # Bá    Q š *3á+   T p꾂ȡ龞š  4V j ɡ 逫-á-32768 Rġ?n꾂(ń꾂Ȅ4š뾂á뾞뾂NPńȄ00ń0ˡ nɡa ɍ.ń0á š肂蕿BšT뾕 -   $ $ $' 푞$ $ō ȡ4 š킥뾞<X h6!}?^EPlease put volume  $ġ $ $ $ȡ&  0 $č? in #4P'pá,##&á=$ *6*^   .ˡ>  Eɡ  -푫 š 0 0 lġ-   킂.  L((VFl8 Z*n`& , @ R , *^/ńȄ핕 킿:  핂 0 . 0 핂 肿 ɡ  , Mȡ龫.ń0á š肂蕿BšT뾕š 龕龫!낾  2 d?š !ȡ4 š킥뾞<X h6!}?^EPlease put volume šš"š Ą  ˡP %@B삾 0 Vá " *áá "ˡ ˄B"ˡ\ š < ń<ˡ0á ]+-Í-ëy 0>욹  - v /šá.Ą ɡ @y á +-Í-ëy 3,   ^(PASCALSYEDITOR S2 S3 S4 S5 S6 S7 *Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58S8 S9 INITIALIFINISH ENVIRONMBLEND EDITCORE   D"ۊ)HۊܳHaFæ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, D!٪P what marker? - ئ Щ,- V,Vȡ,-,,,ʁ6  unused, ʁ7  in largest area.4 "d 55 .1Zp t% . Type 1Error # . Type  á   XSd }0 45PP"dṔ6́4́7́8æXSd }0 45PP"dṔ6́4́7́8æ*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58æ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, æ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, ʁ6  unused, ʁ7  in largest area.4 "d 55 .1Zpʁ6  unused, ʁ7  in largest area.4 "d 55 .1ZpXSd }0 45PP"dṔ6́4́7́8æXSd }0 45PP"dṔ6́4́7́8æ*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58æ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, æ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, ʁ6  unused, ʁ7  in largest area.4 "d 55 .1Zpʁ6  unused, ʁ7  in largest area.4 "d 55 .1ZpXSd }0 45PP"dṔ6́4́7́8æXSd }0 45PP"dṔ6́4́7́8æ*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58 ػٳ قػ0  (|š  )1 B6H ȡ0ȡ8٤؂8٤؂ záz;67opqrst^uvwx + * )( '&%$ #"ȡABCDFGIJL M P Q R SVXz AZ az 09 )) ++   š.!)Í 삧)Z,>.+-?/=<٢>á ٢P٢N٢P٢NJ٢٢!٢ ٢ @*Hf,` YY˥YȍY++YP+.TEXTU+PY"6+Not present. Enteæ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used,   V)+'09ȡ %$ ^ƓƔ>Edit:Ɠʁ6  unused, ʁ7  in largest area.4 "d 55 .1ZpƓ*SYSTEM.SYNTAX"á' ')Ɠ'̓̓̓ʓʓʓ Ʉ̓ʓ(áʓ̓XSd }0 45PP"dṔ6́4́7́8æʓ ʓ0̓ʓ̓ʓ ˡ.')ʓ ʓ̓ʓá ʓ̓ʓ áRʓ̓ʓ*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58)ˡ>̓ƓƓ Ɠȥʓʓ̓Ɠ Vi2(Reading Yæ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, ˡ Reading file6NJ.̂̂̂ʂʂ̂ʂe. ʁ6  unused, ʁ7  in largest area.4 "d 55 .1Zp̂ʂ ̂ʂ̂ʂʂʂ á ʂʂ̂"ˡ Disk error!ʂFile too long to e XSd }0 45PP"dṔ6́4́7́8ædit>< 2Edit: Enter edit file, P.&Y+++:+.+PYP á|*Q`Td \6List Q-AQ-M ́:Qʁ:ȡ)æ--QM ï-QQ58 for . Ynew file or to exit.: PYæ6-QM -M ,ʁ9-M   files in directory, ʁ4  blocks used, PY6.TEXTYY˥YȍY++YP+.TEXTU+PY"6+Not present. Enteʁ6  unused, ʁ7  in largest area.4 "d 55 .1Zpr Edit file Pád ȡػǀػ$2 >,:yx !xx. 6NJˡ.ɡk) @jئPP QPؾٿٮ`áؾ7T D  ˡ.ɡ9 ˡU. Auto indent o Filling p Left margin r  Right margin  is   characters long. -s  Para margin t  Delimit char u Seek tokens qړf2Do you want to Exit from or Return to the editor?  -- ا-EÚ٫>ƂYPq Ignore case w Tab spacing z  Go command `ȡ+ړ-EW&  8$ڡCan't write the file"ۓNot enough room for fileDsá `Y File is unnamed$ File title is Z &\2 ˡ.ɡ9 ˡU.Y , Edit Cycle v  Editing time: xpC  hrs. x<  Y 0 Quit:P U1" Update the workfile and leave is   characters long. - Exit without updating* Return to the editor without updating$ Write to a fileqړf2Do you want to Exit from or Return to the editor?  -- ا-EÚ٫>ƂYP name and return -- :YL Write to Y?ړ-EW&  8$ڡCan't write the file"ۓNot enough room for fileDs --@N--Yá YP1Name of output file ( to return to editor):  ءTrueFalse.  ڳ@ T or FD.TEXT˲ȍ"P.TEXTUPV ɡ))ڳu@TÚTrue False  ݳ ɡ@ NئPˡ( QP0 /R<++ɡ ݂0ݳȄܓM% Must be in range [ .. ],,P,[Q,ǡ,]Ǣ,؞"ÚTWriting vvݧÍܡޚ  ا!á{ETX}Lا)á{CR}7ا+á{TAB}! ɡ^  --!# %-oprssrtuq P: Beginning End Marker P  Bá'EáMá اˡا$ w z *Go command: enter commands, type ` to end  /AT( cye  p5Marginate this paragraph?P Yá  "0-!# @*,]<2( á N Set0-ا7ɥ8ؤ  ġ ȡ7 : '8٤'0:Y ,04 Environment: { options } Q to leave [ Edit 4I.4i8]9P 5All markers are in use. Which one to replace? (0..9)P--0-2 з  8ؤe --!# %-oprssrtuq 7 7E  0 Set: Environment Marker P  EáMá اˡا w z *Go command: enter commands, type ` to end  /AT( cyFx 0> eXchange: TEXT { a char } [ escapes; accepts]P  Blend in file:P  .TEXT   ȍ" ̂2Ƃ2 PƂ2.TEXTUƂ2P--á;š4ق  -)á-!)˄ ̂2Ƃ2 Can't find Ƃ2 [Ƃ2. Blend in file: lƂ2P"áġ(á-á  -+-á س aA-ث--?-قؿ-Blending؍Z2ٓC.2 ڂ ء2ڞڂ--!-á!ګٞǀ3;=?Pš=0Zap > 80 characters? (y/n)P  mins.   characters, C슐󊇞 % full.y Patter"ˡ Disk errorٓBuffer overflow.ޕۂ߫  T( cyns:/ = 'zǀ'y- , = '8xǀ'7šá>,<,,(직 ŧĄ Invalid copy.x직ġNo room`療 Markers: 7ȡH :8á ħɄ療 療직療   Jump to0:Y ,04 Environment: { options } Q to leave [ Edit 4I.4i8]9P  з Xا78ؤ 8ؤ  Not there.eؤ W  0! JUM ɡ!No room to insert.( lpo-˄*ǀ2á ǀ-)!&-á&ȡ  ) po-!Ä -Í   #-+á psĄ-pÄ- ˄ %Ąۄ{-)á  h-áOȡ& ڶȡ  ]ڶġR*Editor almost full!!   ) ˡܡ    -&á -!-áثd; š Editor Full!!-+áz z B 0Ʉګڂ٥*č:c)o$p낾)átr f-&áO- ç z ^ġ)š (š  * ç,<öÍ (ç)Íɡ-n)ġ # ˄  ń ꂧ( d--á --'+) !&/-'+  ɡ P^!Ȅ0ɡášĶ  -)á-& F-ǀ?--   "ń? )á)      * á   ǀT ؂  ȡ  ! ɡ it#Ʉ5 á 8  ɡ    š   ˡP- á lšĶ   |$,<áZń7)á) -    ٕاsrġ - ؕ ؞ق)(ġ  ø ɡ Ʉ-ɡáĸ šTħo٫ګr    U ؂ \   0J Ins Í  = .*ȡ    "% Yˡ   ; š ert: Text { a char, a line } [ accepts, escapes]P  ˡOš  ^,ȡˡˡȡ ȡ 4[ p8 @4Lǀ zL[LLaA2LL š ɡ-ń šٮ 6á >   ؂  (á   3  X7&'؂ɡꂾ(Ä؂ fš ,dšBuffer overflow ݮ,-    0C Delete: < > { to delete, t( ˡ땫ꂧ(؂ ),o abort }P  --ߧá  á ߹ ߳  0K Adjust: Left, Right, Center { to leave }P --߹d- á,>á#$#h$d,<á#$V!R"N%Iá<,>,,!*35DBá --߹á   ߳0á<,>,  ȧ_% Oás\Jbٕ --˧-!˄ -!-!ámÄ L ٕ܄ɡ )Eܹ-r)1sڕ)$srڕr) 4-"á)zá )f"ٕٕ  ث ٕ٫  á ޶ O á r)/ ásڕ)srڕr) -!ˡ-!á۫,x ( l.á.á(+ "--á -)ö -*ˡ -ȡo,<á2# #ȥڷ0 $ĥڷw+P/-'+)/0- --Lá2-Vá%-Tá-Cá -Iá-P] *  =߹&+'',<á&'! #%߹Z- á,>á /- --P0 1zBáM-'+)   #$#l$h,<á#$Z!V"R%MšToo many%/*+ $) HFw`% Nfá /-E/- á.E)Eń  EE_-*áBC<DBFDFȡ,EȡD2áá   Dá2á *á   ߳EDEEDD-ˡ E-EE-EčآE آ!q &2L$ۂ 6+ȡLڂ)á-ń ۂڂS Lۂ áۂLۂá۶"H b3'+()(á!    =z  Replace' aborts, 'R' ~á ڧ"á ǀ ġۡڶ>ڧ˄KڶPá4ڶPreplaces, ' ' doesn't=--á -R˧-r˄xšWxš8Buffer full. Aborti#ڶNáڶNá lڳ aA, >پˡ ng Replace  xxɡ x8xxˡ x직x療xپعE٢I٢<٢-٢ ٢ LA6)x% >>̀̀ẁq̀̀á Find:=" Replace /from/to/ :=/01̀-"  0,0" % z2 á82ç çyǹ ʀȧل0:ʀ̀١!ނ߫ á>,<á ٪P&%ERROR: " Please press to continue.% áá6Y ġ? L ˡ     7f p86` ٓ"ʀńPattern not foundNo old pattern ʀ $R\0M Ed: Adjust Blen š=L ˡ  7lv9,>á98d Copy Delete Find Go Insert Jump Page Quit Replace Set XchngP --߭zá  á5)z  á Z;z')+   ߹k~ zxt plhd GCɄ zzöɄ  z)'+ ɡ š šȡá*ڧ%á  )" Repeatfactor > 10,000-߭` ꂾ)á) -@ȭ"ƁƂ<   š"á  á  á :Ɓ šB+Can't save the deleted text, delete anyway?P Y%ڕ󧁽 |UEx~P"&, * @ f P  D"ۊ)HۊܳHaFڂٕ ݞ݂)ˡ !U܂ZjڡD!٪P what marker? - ئ Щ,- V,Vȡ,-,,,<١1ۥ č&\7ȡ'eڤġeڤeڤ؂  t% . Type 1Error # . Type  á   ħɄ ؂ HZګ낾)uء-ŧ낾u˄낾)˄ ttá"ƁƂ<   š"á  á  á :Ɓtr ܕܕ܂( ) +'((áUEx~P"&, * @ f P  D"ۊ)HۊܳHaFá) 򧁾.ç Ä Äە sŧsrȍ: á܂)D!٪P what marker? - ئ Щ,- V,Vȡ,-,,,(r r)á7á '낾)ç낾uÍ ᓡ   t% . Type 1Error # . Type  á   !Rۂ+'(@ۂ(áݧۂ ۂ'á ܕ^l܂삧ݫ 5h-l)ڂ ٦P ۧ)ۧۥ ۧ ۂڞڂ)ˡ  !Uقč á3پš!   پ kۧ$á/پȡ ٦P 6ۧ)ˡ0Py^ )á)܂ ܂áؓɍš  ٚáء  QPپۿ ۧÚxV  šۊ)HۊܳHaF b ݂ɡ݂ەݕ 5 LD!٪P what marker? - ئ Щ,- V,Vȡ,-,,,ڂق؞ڂق؞-/š -0--ۍۡ t% . Type 1Error # . Type  á   # Char ] = nil then ,begin 0new(p); 0Micro [ MikChar ] := p; ,end; (Micro [ MikChar ] ^ := MicStr; $end {DefineMicro};  function UpperCase(c: char): char; $ $begin (if c in [ 'a' .. 'z' ] (then ,UpperCase := chr(ord(c) - ord('a') + ord('A')) (else ,UpperCase := c; $end {UpperCase}; procedure UpperIt(var S: string) { map S to Upper Case }; $ $var 9I: integer; ( $begin (for I := 1 to Length(S) do ,S [ I ] := UpperCase(S [ I ]); $end {UpperIt}; procedure InitKbdRead { initiate read from keyboard }; $ $begin (UnitClear(Console); (UnitRead(Console, KeyBuffer, 1,, 1); $end {InitKbdRead}; procedure message(S: string) { Print S with trimmings }; $ $begin (WriteLn; (WriteLn(Bell, '{ ', S, ' }'); $end {message}; pro$ $ $procedure ControlOut{C: char} { Print name of control character }; ( (procedure out( S : string ); (begin 0Write( S cedure message3(a, b, c: string) { print 3 part message }; $ $begin (message(concat(a, b, c)); $end {message3}; functio); 0Col := Col + Length( S ); (end; ( (procedure Chout( C : char ); (begin 0Write( C ); 0Col := Col + 1; (end; ( (begin nextChar: char { Return last keyboard character }; $ $begin (LastChar := chr(ord(KeyBuffer [ 1 ]) mod CharRange); (NextChan ,if Col > 65 then ,begin 0WriteLn; 0Write(' '); 0Col := 3; ,end; ,if ord(C) < 32 ,then 0begin 4Out('{'); 4if C = r := LastChar; $end {nextChar}; procedure InputCommand(c: char); $forward; Tab 4then 8Out('TAB') 4else 8if C = Return 8then  Delay; $end {Quiet}; Twiddle}; procedure NewOpen(fn: NameString) { Open output file }; $ $begin (UpperIt(fn); (if pos(TextSuffix, fn) = 0 thprocedure Await(Target: char) { wait for a particular char }; $ $var 6Done: boolean; 9T: integer; ( $begin (Done := falseen ,fn := concat(fn, TextSuffix); (Close(Fil); {$I-} (rewrite(Fil, fn); {$I+} (if ioresult <> 0 then ,begin 0Message3('Can; (T := 0; (repeat ,repeat 0Twiddle; 0T := T + 1; 0Done := T > TimeOut; ,until Ready in IoPort ^. ,InputCSR; ,MoveChar;''t open ', fn, '!!'); 0Abort; ,end; $ OutFileName := Fn; $end {NewOpen}; function Modem: char { return next Modem c (until Ch = Target; (if Done then ,Message('Host didn''t respond'); $end {Await}; procedure Send(S: string) { Write S har }; $ $begin (repeat ,Twiddle (until Ready in IoPort ^. (InputCSR; (Modem := chr(IoPort ^.InData mod CharRange); $endto line and screen }; $ $var 9I: integer; ( $begin (for I := 1 to Length(S) do ,SendAndEcho(S [ I ]); (SendAndEcho(Retur {Modem}; procedure MoveChar { Move char from modem output to screen }; $ $begin { MoveChar } n); $end {Send}; procedure SendWait(S: string) { Send S and Await handshake }; $ $begin (Send(S); (Await(PromptChar); (ch := chr(IoPort ^.InData mod CharRange); (if not ((ch = RubOut) or (ch = Null) or (ch = LineFeed)) then ,begin { prt } 0ch$end {SendWait};  procedure PutChar(c: char) { Send c to line, count columms }; $ $begin (Echo(c); (ColumnPosition := Ch [ 1 ] := ch; 0UnitWrite(SysTerm, chh, 1, 0, 1); ,end { prt }; $end {MoveChar}; procedure SendChar(c: char) { Send c toolumnPosition + 1; $end {PutChar}; procedure readc(var c: char) { get and Echo next Keyboard character }; $ $begin (Ini modem }; $ $begin (while not (Ready in IoPort ^.OutputCSR) do { Wait for it } ,; (IoPort ^.OutputData := c; (if Ready in tKbdRead; (unitwait(Console); (c := NextChar; (Write(c); $end {readc}; IoPort ^.InputCSR then ,MoveChar; $end {SendChar}; procedure Echo(c: char) { Echo c to screen and line }; $ $begin (ifO^ HalfDuplex then ,begin 0chh [ 1 ] := c; 0UnitWrite(SysTerm, chh, 1, 0, 1); ,end; (SendChar(c); $end {Echo}; procedurIB;e SendAndEcho(c: char) { Echo c to screen and line }; $ $begin (if HalfDuplex then ,Write(c); (SendChar(c); $end {Echo}; % ontrolBits = (BreakBit, b1, b2, b3, b4, b5, b6, Ready, 9b8, b9, b10, b11,b12, b13, b14, CarrierDetect); 1ControlSet = set of Sg ) : boolean ; forward;  segment procedure Micros { Handle Micro options }; $ $var 8Ch, 1MicroChar: char; ( $ $ $ $tatusControlBits; /Device = record GInputCSR: ControlSet; IInData: integer; FOutputCSR: ControlSet; EOutputData: char 9end $function UpperCase(c: char): char { Return uppercase character }; ( (begin ,if c in [ 'a' .. 'z' ] ,then 0UpperCase := c; +DualEntity = record =case boolean of Afalse: ( IoPtr: ^ Device); Atrue: ( I: integer) hr(ord(c) - ord('a') + ord('A')) ,else 0UpperCase := c; (end {UpperCase}; $ $ $ $ $ $procedure message(S: string) { Pri9end; $ (ErrorRecord = record :Starting,  nil then 4begin 8ControlOut(ch); 8Write(':'); 8for I := 1 to Length(Micro [ ch ] ^) do BControlOut(Micro [ ch ctal(S: string): integer { Convert string to integer }; , ,var AI, AT: integer; 0 ,begin 0T := 0; 0for I := 1 to Length(] ^ [ I ]); 8Writeln; 8Col := 0; 4end; (end {ListMicro}; $ $ $ $ $ $procedure ClerMicro { Clear all Micros }; ( S) do 4T := T * 8 + ord(S [ I ]) - ord('0'); 0octal := T; ,end {octal}; ( ( ( ( ( (Procedure SetUp(val: string) { Make (var  70 then 'begin ,Col := 3; ,WriteLn; ,Write(' '); 'end; $end; $ $ $ $procedure MakeMicro { Create a sNo('Are you sure you want to clear all Micros?') 9then ClerMicro; 0end; ,WriteLn; (until ch = 'Q'; (Message('Exit Micro moMicro string }; ( (var 8MicStr: string; , (begin ,Col := 0; ,Write('Micro character?'); ,get(Keyboard); de.'); $end {Micros}; ( ( segment procedure Initialize { Initialize program }; $ $const 2MinChar = 0; 0AsciiNull = 0,MicroChar := Keyboard ^; ,ControlOut(MicroChar); ,WriteLn; ,Write('Enter Micro string for '); ,ControlOut(MicroChar); ,Wr; )AsciiStartOfText = 2; +AsciiTextEndOf = 3; 0AsciiBell = 7; +AsciiBackSpace = 8; 1AsciiTab = 9; ,AsciiLineFeed = 10; .Aite(' , end with '''); ,ControlOut( CommandChar ); ,ControlOut( CommandChar ); ,WriteLn(''':'); ,Col := 0; ,Readmicro(KeybosciiReturn = 13; 'AsciiHorizontalTab = 16; 1AsciiXOn = 17; *AsciiBlockEndOf = 23; .AsciiEscape = 27; .AsciiRubOut = 127; 2ard, GlobString, MicroChar, true, false); ,WriteLn; ,MicStr := ' '; ,MicStr [ 1 ] := MicroChar; ,if GlobString = MicStr ,thMaxChar = 255; ( $ $ $ $ $procedure SerialAddress(var A: integer) { Find port address }; ( (const 5PassWord = 12345; en { Assume null case } 0Micro [ MicroChar ] := nil ,else 0begin 6DefineMicro(MicroChar, GlobString); 6Col := 0; 6Write('M2TrapAddress = 4; 2FlagAddress = 0; *ReturnFromInterrupt = 2; , (type 3DualEntity = record Ecase boolean of Ifalse: ( ' errupt; ,SaveFlag := Peek(FlagAddress); ,SaveTrap := Peek(TrapAddress); ,poke(TrapAddress, ord(ptr)); ,T := 0; ,repeat 0T 9if IoResult = 0 then = Max); ,Poke(TrapAddr Switch Options } Quit := false; SavingText := false; HalfDuplex := false; ess, SaveTrap); ,Poke(FlagAddress, SaveFlag); (end {SerialAddress}; $ $ $ $ $ $procedure ReadDefaults { Read init file } NeedCommand := false; (OverflowCheck:= true; { Important characters } EndOfText := c; ( (var =C: char; 6InitFile: text; , ( ( ( ( (procedure ReadInfo; , , , , , ,procedure GetMicro { Define a micrhr(AsciiTextEndOf); EndOfBlock := chr(AsciiBlockEndOf); StartOfText := chr(AsciiStartOfText); o from init file }; 0 0var CMik: Char; 4 0begin 3if InitFile^ = '^' then 5begin 9get(InitFile);  ExOn := chr(AsciiXOn); Tab := chr(AsciiTab); BackSpace := chr(AsciiBackSpace); 9if InitFile^ <> '^' then ;InitFile^ := Chr( Ord(InitFile^) - Ord('@') ); 5end; 2Mik := InitFile ^; 2get(InitFile); 2ReadM RubOut := chr(AsciiRubOut); Escape := chr(AsciiEscape); Return := chr(AsciiReturn)icro(InitFile, Globstring, Mik, false, InitFile^ = '=' ); 2DefineMicro(Mik, GlobString); 0end {GetMicro}; , , , , , ,beg; LineFeed := chr(AsciiLineFeed); Bell := chr(AsciiBell); Null := chr(Asciiin {ReadInfo} 0Write('Initializing'); 0if InitFile^ = '*' then 4ReadLn( InitFile ); 0while not eof(InitFile) do 4begin 8WrNull); SpaceEater := chr(AsciiHorizontalTab); LowChar := chr( MinChar ); ite('.'); 8C := InitFile ^; 8if C in [ ' ', 'C', 'D', 'O', 'M', 'X' ] 8then  Version ', Version); ,WriteLn; ,PrintLn('G Get file from other Computer to TERAK.'); ,PrintLn('S Send file from TERAK to other Computer.'); ,Options('D Toggle Half-DupleA /O^x.', HalfDuplex); WriteLn; ,PrintLn('H Prints this help list.'); ,PrintLn('Q Exit COM.'); ,WriteLn; ,WriteLn(' keyB Escapes one from any command.'); ,WriteLn; ,WriteLn(' Some other commands:'); ,Writeln; ,PrintLn('L List file to other Computer.') { jte }; ,Options('R Record text from other Computer.', SavingText); ( Write('( '); ,if BufferPointer > 0) ow handling. G.G. 4-May-79 Cleaned up code. Speeded up main loop. Improvine [ Length(Line) ]); @end; 0get(Keyboard); ,end; (WriteLn; $end {readl}; procedure GetFileName(s1: string; var S: Naed null character processing. G.G. 1-Jul-79 Added micros. Added init file.  ( Added auto-port select. More code cleanup. Checksum error detection. } {[a=19, P=5, I=4, q=1]}  {$D3} { } program com(input, output);   {$I COM.INIT.TEXT }   {$I COM.UTIL.TEXT } procedure SaveChar( C : char ) { save a char }; $ $begin { saveit } (ch := C; (if SavingText (then ,begin { staging } 0if BufferPointer < MaxBuf 0then 4begin 8BufferPointer := BufferPointer + 1; 8CharBuf [ BufferPointer ] := ch; 4end 0else 4begin 8SavingText := false; 8CharBuf [ BufferPointer ] := Return; 8Message('!! Record Buffer full !!'); 4end; ,end { staging }; (if (ch <> Null) and (ch { COM : TERAK communication program George Gonzalez 6-Jun-78 Loosely based on<> LineFeed) then ,begin { prt } 0chh [ 1 ] := ch; 0UnitWrite(SysTerm, chh, 1, 0, 1); ,end { prt }; $end {SaveChar}; p a program by Brian Hanson. COM makes the TERAK act as an 'intelligent' terminal. Beyond throcedure readl(var Line: string) { read a Line, check for escapes }; $ $ $ $ $ $procedure EraseChar; ( (begin ,if Line e normal terminal duties, it can send and receive files with error detection and correction. See f<> '' then 0begin 4delete(Line, Length( Line ), 1); 4Write(BackSpace, ' ', BackSpace); 0end; (end {EraseChar}; $ $ $ ile COM.DOC for further information. Modification History ------------ ------- $ $ $begin {readl} (Line := ''; (get(Keyboard); (while not eoln(Keyboard) do ,begin 0if Keyboard ^ = Escape 0then 4Abo John Easton 78/07/06 'L' list cmd added George Gonzalez 5-Sep-78 rt 0else 4if Keyboard ^ = Rubout 4then 8while Line <> '' do ƂYPړ-EW&LINE 1X 1Y 1TRUEY 1DESTY 1SX 1JUNK 1SY 1WX 1WY 1BOX 1WIDTH 1HEIGHT 1I 1THICK 1SPACING 1LX 1LY 1DRAWFILE1DRAWIT 1DRAWER 1XBAS$procedure InOpen(S: NameString; var Okay: boolean) { open S }; ( (begin ,Close(Fil); {$I-} ,reset(Fil, S); {$I+} ,Okay :=E 1X1 1Y1 1X2 1Y2 1YBASE 1FILENAME 1NEWPLACEf1PEN g1WHEREX e1WHEREY d1 ioresult = 0; (end {InOpen}; $ $ $ $ $ $begin {OpenIn} (GetFileName(ThisCommand, Name); (InOpen(GlobSText, Fine); (ifXHWINDOWb1YHWINDOW`1DISSCR m1LOOP _1XLWINDOWc1YLWINDOWa1DRAWSCR l1 not Fine then ,InOpen(GlobString, Fine); (if not Fine then ,begin 0Message3('Can''t find file ', GlobSText, '!!'); 0Abort; ,end; $end {OpenIn}; procedure OutputChar(Listing: boolean) { output file of char }; $ $ $ $ $ $procedure puteol; REGRESSEX A B C D Y Z CLASS (+ Մ(ǀ%ġՄJՄP ՄaՄpՄ|Մ@Մ á ՅՅ+Յ; ՅR Յjr K := Base to LastNonBlank do ՆU á Ն}ՆՆ9ՆՆ Ն?ՇՇ( ՇMՇxՇjՇť se + 3); 4end; 4 1if I < BufferPointer then 5WriteLn(Fil); 1if Dotty then 1begin 8if Lines mod 50 = 0 then :begin =WritˡՈ ǀ% Ո>,Ոث ՈՈ٫ՈثՈ Չ Չl۫ՉګՉ٫ՉثՉeLn; =Write('Writing to file', OutFileName); :end; 8Write('.'); 1end; 1 1Lines := Lines + 1; 1DumpLines := DumpLines + 1;$Պ"?ՊDՊSՊ_ȡՊz ՊՊՊՊέ7 b Ջ2ՋAՋ` 1I := I + 1; .end { outline }; $end {DumpBuffer}; procedure FlushBuf { Manually write out buffer }; $ $var 6SizeȄĄȄJՋ6Ռ ڤ5Ռ9ڤ&Ռiڤڤ>1$Ռ Ռ­ Սٕ Սؕ: integer; 9S: NameString; ( $begin { FlushBuf } (if BufferPointer > 0 (then ,begin { wtf } 0Size := BufferPointer; 0ThiՍˡ ՎՎ ˡ~Վ4ɡ7ՎNՎVՎՎՎՏ >Տš5Տ0Տ8ՏUsCommand := 'Write'; 0Prompt := ' Write Record Buffer to'; 0AskForNames(GlobSText); 0NewOpen(GlobSText); 0DumpLines := 0; 0ՏՏՏՏˡՏɡ>ՏՐˡ(ՐՐ!Ր?ՐՐՐEՐš<ՐՐˡ(DumpBuffer( pos(':', GlobString) <> Length( GlobString) ); 0Close(Fil, lock); 0Writeln; ՐՑՑPՑUՑhՑo@  N ՑՑՑ ՑՑՑ Ւ Ւ<0WriteLn(Bell, '{ ', DumpLines, ' lines written. }'); ,end { wtf } (else ,Message('Nothing in the buffer!!'); $end { flush in 4if CharBuf [ I ] = ' ' then 8Spaces := Spaces + 1; 4I := I + 1; 0end; (end {LeadingSpaces}; $ $begin { DumpBuffer } CharBuf }; procedure NextFile { open next output file }; $ $var 9Z: string; ( $begin (CharCount := 0; (if Suffix = '$end { SendFile }; procedure ListFile { List file raw to other system }; $ $var 6Okay: boolean; ( $begin (ThisComman(I := 1; (Lines := 0; (CharBuf [ BufferPointer ] := Return; (while I < BufferPointer do ,begin { outline } 0LeadingSpaces; d := 'List'; (OpenIn(Okay); (if Okay then ,begin 0ColumnPosition := 0; 0InitKbdRead; 0OutputChar(true); 0Close(Fil); 0Me0Base := I { delete trailing junk }; 0LastNonBlank := I - 1; 0while CharBuf [ I ] <> Return do 4begin 8if CharBuf [ I ] in ssage3('Listing of ', GlobSText, ' is complete.'); ,end; $end {ListFile}; "function YesNo{ S : string ) : boolean }; "varOkaySet then = Base 0then 4begin 8if Spaces > 2  (Yes : boolean; "begin (Write(S); (get(KeyBoard); (Yes := KeyBoard^ in ['Y', 'y']; " if Yes then +WriteLn('Yes') ( then ;Write(Fil, SpaceEater, chr(32 + Spaces)) 8else ;for K := 1 to Spaces do ?Write(Fil, ' '); 8fo, concat(GlobString, Z)); $end {NextFile}; Procedure ComputeCheckSum(var Sum: integer); $ $var 8ch: char; 2CountSet: Set0SaveChar( chr(IoPort ^.InData mod CharRange) ); ,until ch in QuitSet; ,EndCh := ch; ,Digit1 := Modem; ,Digit2 := Modem; , of char; 9I, 9J: integer; ( $begin (Sum := 0; (CountSet := [ LowChar .. HighChar ] - [ Rubout, Null ]; (for I := 1 to BuDigit3 := Modem; ,HostSum := Num(Digit1) * 64 + Num(Digit2) * 8 + Num(Digit3); ,ComputeCheckSum(LocalSum); ,Okay := (LocalSumfferPointer - 1 do ,begin 0ch := CharBuf [ I ]; 0If ch in CountSet 0then 4begin 8If ch = Return then  MaxTries); ,if Okay ,then 0begin 4BufferPointer := BufferPointer - 1; 4if CharCount > EditMax then  @while CharBuf [ J ] = ' ' do Dbegin HJ := J - 1; HSum := Sum - Ord(' '); Dend;  MaxTries then 7begin =ErrorCount := ErrorCount + 1; nge; 4end; ,end; $end {ComputeCheckSum}; procedure GetStuff { get a file from host }; $ $var 6Okay: boolean; =if ErrorCount <= ErrorMax then @with ErrorCache[ ErrorCount ] do @begin EStarting := BeginLine; EEnding := DumpLines; @e5Tries, 1BeginLine, 2LocalSum, 3HostSum: integer; 4Digit1, 4Digit2, 4Digit3, 5Endch: char; ( $ $ $ $ $Function Numnd; 4 end; 4Send('A'); 4Tries := 0; 0end ,else 0begin { err } 4Tries := Tries + 1; 4Send('N'); 4Message('Transmissio(C: char): integer; ( (begin ,Num := Ord(C) - Ord('0'); (end {Num}; $   procedure ErrorSummary;  var (I: integer;  n error-- retrying.'); 0end { err }; (until Okay and (Endch = EndOfText); (Await(PromptChar); (Close(Fil, lock); (Message3( (function min( I, J : integer ) : integer; (begin 0if I < J then 3min := I 0else 3min := J; (end; ( (  begin (if Err'File ', GlobSText, ' Saved'); (if Suffix <> '?' (then ,begin { ovflo } 0Message('Overflow text written to files:'); orCount = 0 then +Message('No transmission errors.') (else (begin 0WriteLn('Unrecovered errors!!:'); 0for I := 1 to min( Er0for ch := 'A' to Suffix do 4WriteLn(GlobString, '.', ch, TextSuffix); ,end { ovflo }; (ErrorSummary; $ Savingtext := farorCount, ErrorMax ) do 3with ErrorCache[ I ] do 8WriteLn( 'Error detected between line #', Starting, @' and line #', Ending)lse; $ BufferPointer := 0; $end {GetStuff}; procedure Getter { get file from host }; $ $var 3getname: NameString; (;  if ErrorCount > ErrorMax then 0WriteLn('Plus ', ErrorCount - ErrorMax, 8' more errors later in the file.') $ $procedure SendStuff( Out, Filler : string ); $var $ P : integer; $begin (P := pos('~', Out); (While P > 0 do ( be; (end;  end;  $ $ $ $begin {GetStuff} (Tries := 0; (repeat ,SavingText := true; ,BufferPointer := 0; ,Await(Startgin +Delete( Out, P, 1) ; +insert( Filler, Out, P); +P := pos('~', Out); ( end; ( (repeat -P := pos( '|', Out ); -if P =?' (then ,Suffix := 'A' (else ,Suffix := succ(Suffix); (Close(Fil, lock); (Z := '.Z.TEXT'; (Z [ 2 ] := Suffix; (NewOpen(OfText); ,Await(LineFeed); ,repeat 0repeat 4Twiddle; 0until Ready in IoPort ^.InputCSR; - haracter to:'); (Get(Keyboard); (CommandChar := Keyboard^; (WriteLn; (Write('{ Command prefix character changed to '); d('@') ) ) )else ,Write(Info, C); $end; $ $ $ $begin {UpdateInfo} (ReWrite(Info, InitName); (WriteLn(Info, '*** COM i(ControlOut( CommandChar );  Writeln(' }');  end;       procedure ReadMicro { var F : text ; var S : Longsnfo file'); (OutBoolean(HalfDuplex, 'D'); (OutBoolean(OverflowCheck, 'O'); (WriteLn( Info, 'X:', TransferCommand ); (Write(  0 then /begin 5Send( Out ); 5P := length( out ); /end -else 0Send( copy(Out, 1, P-1) ); - -delete(Out, 1, P); -if Out tring ; 6Self : char ; EchoChar, SpecialFile : boolean } { Read Micro def. }; $label *1; $var (LastChar: char; $ $ $proc<> '' then 0Await( PromptChar ); (until Out = ''; $end; $ $ $ $begin (ThisCommand := 'Get'; (Prompt := 'Get'; (HostFiledure GetChar( var F : text ); $begin )get(F); )if SpecialFile then )begin -if F^ = '^' then /begin 3get(F); 3if F^ <> 'e := ''; (AskForNames(getname); (NewOpen(getname); (SendStuff( TransferCommand, HostFile ); (InitKbdRead; (CharCount := 0; ^' then 5F^ := Chr( Ord(F^) - Ord('@') ); /end; )end; %end; % % % $begin (S := ''; (LastChar := Null; (GetChar(F); ((ErrorCount := 0; (DumpLines := 1; (Suffix := '?'; (Await(StartOfText); (if Modem = StartOfText (then ,GetStuff; while (F ^ <> CommandChar) or (Lastchar <> CommandChar) do ,begin 0if (S <> '') and (F ^ = Self) then 6Message('Micro cannot (UnitClear(Console); $end {Getter}; procedure Toggle(Name: string; var Switch: boolean) { Flip switch and notify }; $ $include itself!') 2else 2begin 0if Length(S) < LineSize 0then 4begin 8S := concat(S, ' '); 8if EoLn(F) then  0 then ort ^.OutputCSR; (if ModemStatus (then ,Message('Carrier detected') (else ,Message('Carrier lost'); $end {ModemWarning}; -Delete(S, Length(S), 1); $1: $end {ReadMicro}; procedure UpdateInfo { Write info file }; $ $var 9I: integer; 9C: ch procedure ClearBuffer { Clear saved text buffer }; $ $begin (if BufferPointer > 0 (then ,begin 1if YesNo('Do you reallar; 6Info: text; ( $ $ $ $ $procedure OutBoolean(Flag: boolean; C: char) { Output boolean }; ( (begin ,Write(Info, C, y want to clear the Record Buffer?') then 1begin 5BufferPointer := 0; 5Message('Record Buffer Cleared') 1end ,end (else ,':'); ,if Flag ,then 0WriteLn(Info, '+') ,else 0WriteLn(Info, '-'); (end {OutBoolean}; $ $ $ $procedure OutCtrl( C : cMessage('Record Buffer already empty'); $end {ClearBuffer};  procedure ChangeChar;  begin (Write('Change Command Prefix char ); $begin )if C = '^' then ,Write(Info, '^^') )else )if Ord(C) in [0..31, 127] then ,Write(Info, '^', Chr( Ord(C) + Or. or Micro keypress }; $ ( (procedure ProcessCommand; (var -ComChar: char; (begin ,NeedCommand := false; ,ComChar := UppearRange) ); (until Quit; $end {MainCom}; begin { com } $Initialize; $Help; $MainCom; end { com }. rCase( C ); ,if ComChar in CommandSet ,then 0InputCommand(ComChar) ,else 0Pressedkey(ComChar) (end ; ( ,procedure HandleKey; ,var 9I, High, Low, OldLow, Ticks: integer; ,begin 0if Ord( C ) = BreakCode then 3with IoPort^ do 4begin :OutputCSR := OutputCSR + [ BreakBit ]; :Ticks := 0; :OldLow := -1; :repeat @Time( High, Low ); : if Low <> OldLow then BTicks := Ticks + 1; : OldLow := Low; :until Ticks > BreakTime ; :OutputCSR := OutputCSR - [ BreakBit ]; Info, 'C:'); (OutCtrl(CommandChar); (WriteLn( Info ); (for C := LowChar to HighChar do ,if Micro [ C ] <> nil then 0begin  end 0else 0if Micro [ C ] <> nil 0then 4for I := 1 to Length(Micro [ C ] ^) do 8PressedKey(Micro [ C ] ^ [ I4Write(Info, 'M:'); 4OutCtrl(C); 4Write(Info, '='); 5for I := 1 to Length( Micro [ C ] ^ ) do  ]) 0else 4begin :SendChar(C); :if HalfDuplex then >SaveChar(C); :if Ready in IoPort^.InputCSR then >MoveChar; , 7OutCtrl( Micro [ C ] ^ [ I ] ); 5OutCtrl(CommandChar); 5OutCtrl(CommandChar); ( WriteLn( Info ); ( end;end; ,end; ( $begin { PressedKey } (PressLevel := PressLevel + 1; (if Presslevel > Nestmax then ,begin 0Message('Micros n (close(Info, Lock); (Message('Info file updated.'); $end {UpdateInfo}; procedure InputCommand { C : char } { Process a ested too deeply!'); 0InitKbdRead; 0Exit(Key); ,end; , (if NeedCommand then -ProcessCommand (else ,if C = CommandChar thuser command }; $ $begin { InputCommand } (case C of ,'C': 0ClearBuffer; ,'D': 0Toggle('Half Duplex', HalfDuplex); ,'G':en 0NeedCommand := true )else ( HandleKey; (PressLevel := PressLevel - 1; $end {PressedKey};  0Getter; ,'H': 0Help; ,'L': 0ListFile { jte }; ,'M': 0Micros; ,'O': 0Toggle('Overflow checking', OverflowCheck); ,'P'procedure Key { Process user key }; $ $begin (PressLevel := 0; (PressedKey(NextChar); (InitKbdRead; $end {Key}; proce: 0ChangeChar; ,'Q': 0Quit := true; ,'R': 0Toggle('Saving text', SavingText); ,'S': 0SendFile; ,'U': 0UpdateInfo; ,'W'dure MainCom { Main loop }; $ $begin (InitkbdRead; (repeat ,if ModemStatus <> (CarrierDetect in IoPort ^.OutputCSR) then 0: 0FlushBuf; (end; $end { InputCommand }; Procedure Key; $forward; procedure PressedKey(C: char) { Process a user ModemWarning; ,if not UnitBusy(Console) then 0Key; ,if Ready in IoPort ^.InputCSR then 5SaveChar( chr(IoPort ^.InData mod Ch/ ՊҭRVՋ Fš'Ջ!Ջ' Ջ7Ջ@ ՋMՋT:Ջ ՋɶMicro character?Ջ0՘զ176530՘176520՘177560ՙ ՙ005037ՙIՙgՙՙՙՌ Ռ'Ռ=ՌFEnter Micro string for ՌoՌ , end with 'ՌՌՌڶՙՙՙ՚90՚"՚8՚L90č՚w՚՚O"*՛^á(՛՛ܲ':Ռ ՌՍ3Ս= PՍNՍgՍy^ՍՍѶՍ Ս՜^ˡ ՜%@՜Q՜X՜m՜=՜إ՜߭5p ՝ Initializing՝+*Micro character ՎՎ5 defined.ՎIՎPRzՎ Վڧȡ{ՎyˡaՏՏá ՝I՝^ ՝{՝.՝՝՝՝ܲ՝՞ J՞& ՞H+*Տ7:ՏCyȡՏty؛ՏՏ ՏՏC Ր"ë՞t+ë"՞ ՞P~՞۹y Xr   "$&(*,.02468:<>@BȡՐGyՐ`All Micros clearedՐ}; NՐՐ%Micros: Define, List, Quit, or Clear?ՐDFLNPRTVXZ^bdfhjlnp՞6՞Bad init directive:՟&՟7՟BՐՑՑٳylՑCٹKՑ\_ՑpXՑ}*Are you sure you want to clear all Micros?՟I@}[bƁ.՟z COM.DATA.TEXT՟"á՟E՟՟́/Ɓ/*Ɓ/ COM.DATA.TEXTƁՑCLDT ]ՑԶՑQáՑExit Micro mode.Ւ  l. ˡaՏՏ/ՠ"áՠ!ՠ(ՠ7l ՠ!ՠ ՠա$ա-"աwաաբբ. բ^բբբ  d"n@@ COM *Տ7:ՏCyȡՏty؛ՏՏ ՏՏC Ր" MICROS INITIALIHELP Micros nested too deeply! " *?6?$aAmȡՐGyՐ`All Micros clearedՐ}; NՐՐ%Micros: Define, List, Quit, or Clear?Րáǐ$ǰBǾ׭x@;N @g ni ?ȴ Ⱦç#x 8#3?9xՐՑՑٳylՑCٹKՑ\_ՑpXՑ}*Are you sure you want to clear all Micros? dxǀɓ!ɟHXCƁKƂw  CƁKϰA0646<TX  ڪPՕ-Օ././ȡՖ -.0-..Ֆ5-ՖA.X LتPՖՖՖЭRՉڳ ՉaAՊ3Պ?8تPՊՊ{  }0՗Z՗k՗՘՘!ؚ՘3՘h՘v177570՘176570՘176560՘177530՘¦177520  է2է> է^էyէ||xR ՟"á՟E՟՟́/Ɓ/*Ɓ/ COM.DATA.TEXTƁ$R Record text from other Computer. իb( իnš0իǘ:d % full )իӶempty )/ՠ"áՠ!ՠ(ՠ7l ՠ!ՠ ՠա$ա-"աwաաբբ. բ^բբբ լ "C Clear text from Record Buffer.լ:"W Write Record Buffer to a file.լk"O Toggle file overflow haգ գ?գjգգդդ>\ դ%դ5ե)E եiUndling."լլ$P Change command Prefix character.լ-M Micro Mode. Define, List or Clear Micros.խ-U Upզ&yզ6 ȡզZy զqyxզzǘ:?զBATCH|X.NXFER,~Pզx#էتP|Հ ՀtR(Հ׶Հ Հ ՁAš(ՁՁ&Ձ/ Ձ= ՁI٪Pը ը$ { Currently ը>ءըRON }ըiOFF }ըyRjتPը ըՁO ɡՁjՁp{Ձ{اá ՁTAB}ՁáՁRETURNfՁاáՁRUBOUTNՁáՂ LINE FEED4Ղ2اáՂJESCըթ R4թ%թ0# < COM Options > Version 2.0թkAPEՂcՂiCTRL-Ղ{AՂՂ}ՂՂՂ֭  ՃtyáՃՃ~ՃyښՃՃ̥yթv*G Get file from other Computer to TERAK.թ+S Send file from TERAK to other Computer.թD Toggle Half-DupleتՃNՄ3ڳ ՄZaAՄՄ8ՅؾȡՅ-ٛٛՅP x.ժժ$H Prints this help list.ժM Q Exit COM.ժiժt( key Escapes one from any command2 Յ&ՅfՅ تPՆEՆP{  }ՆlR.ժժ Some other commands:ժ߶ժ L List file to other Computer.ի!V VڪP-٪PتPՆVP-Ǡ Ն@ ՇJfǀՇՇ& Ոg Ոsg c$R Record text from other Computer. իb( իnš0իǘ:d % full )իӶempty )ommand aborted!! ՈՈՈՈBՉ!#ՉA áՉbՉw Չ~,تՉ Չ.TEXTլ "C Clear text from Record Buffer.լ:"W Write Record Buffer to a file.լk"O Toggle file overflow haá!Պ.TEXT#Պ*KՊ@KՊU"ˡ#ՊpՊ{ Can't open !! ՊՊՊPՊŭDգ գ?գjգգդդ>\ դ%դ5ե)E եiUndling."լլ$P Change command Prefix character.լ-M Micro Mode. Define, List or Clear Micros.խ-U Upզ&yզ6 ȡզZy զqyxզzǘ:?զBATCH|X.NXFER,~Pզx#էdate Info file with current COM status.խV ժ߶ժ L List file to other Computer.ի!1 ȡՎՎՎ׭H%Տ K SՏ%Տ9K ՏS%-ՏbՏgKáՏՏ á ՏħKšՠ$KK ނ"ՠTȡՠpK ՠȡՠKzǘ:ՠ" ՠݕՋՋ$xՋSxǀՋ! ,Ռxǀ Ռ0ÍÍՌsՌeՌeՌՌǭՏ٥KՏՐˡՐ&%Ր-q? ~$ՐءՐՐՐՐՐԧՐՐՑ :ՑrؾšՑJՍxՍUՍ^xؚՍvxՍՍ/:ՎՎՎeؿՎ6eՎTՎ`Վj8*á ՑՑ:Ցš ՑՑ.šՒئ.Ւ<%l&ՓO;Փ_+ȡ(Փ;Վŧ ՎݶՎՎ&ՏJՏYՏcՏhՏwxՏՏՏՏՏšՏխ7HՐwՐ+؛;ՓԶ;+Ք To Host+!Ք,+šՔY++Ք+Ք+NoNameՔՐՐՐՐՐ'ՐxՐՑáՑ١Ց.Host didn't respond ՑMYX rتPՑ+,+," (ՕՕ9PACKՕKՕfՕn/ՕՕ+ՕFile + is now your primary file. Օl)ՖȡՑ+++ՑՒ &V >تPՒfՒr/ՒRՒՒՓՓ Փ%Փ'gSendPՖ;<"ՖQ+Ֆo+&Ֆ(Ֆ<ՖՖ5Final NOS Control Statement: ( Type RETURN for none )Ֆ ՓՓ+.Յ,ث Յ7 iՅQՅbǘ:ɡՅՅՅzǘ:Յ׹:ՅՅ Նzǘ:Ն.!! Record ՗ BATCH՗ ==NEW,=+"=՗FTEXT՗\՗m՗}K՗՗ ՗$՗ƥK՗)՗&՗eBuffer full !! ՆQՆXՆj˄ՆՆeՆeՆՆՇz7ՇՇՇ  '՘gListP՘"՘ءG՘՘՘ ՘$՘Kՙ Listing of is complete. ՙ8ՙ?l*ڪՇՇN ՈئPՈ)Ո< ՈZՈ_áՈ~ՈáՈئՈ ^Ո׶Pՙՙՙ -ՙ-ՙYes՚No!՚$-՚2áՉ JՉ ؾɡ?Չ2Չ9P QPՉVؾՉ~ؾՉՉՉՉՉƭRT՚՚쥀!՚; ՛;+՛7;&՛I:ˡ7՛t՛|K՛K ՛"՛˥K՛׹ ٪PՊc file: Պ+Պ+ՊՊ+ Պæ/+,Պ,šՊإ+-,՛՛ٓm՜՜   already exists, replace it?:՜l"Okay then, what shall we call thisP՜՜١- Ջإ+Ջ.تՋ@ ---.TEXT#-Ջ`x!٪ՌSKՌgKՌ}؞"ÚՌ 2#՜՜ʭ` +՝՝ޥzǘ:E2՞՞zǘ: á ՞)՞<՞L՞SL^-՞Ռ̥g!Ռ饁 #Ս Ս#Ս/)ՍEՍPCan't find file !! ՍՍՍ+ `"ՎJՎdՎoՎՎ՞՞zǘ:՞ɡ՞՞-՟՟4՟Fzǘ:ˡ,՟i՟nzǘ:U՟՟՟՟ġ՟՟2 իzիիիիիxլ xǀլ95լPլ` լsլլ2@22լ full!! ջw2ջջ١ջջջ;ջùջ۾š ռ۾ռ%( ռ:ս ١ս +0լōխ'ءyխ;խKխfǘ:šխ/խխ,խš:խխծ ȡ$ծ&  ծJծUۚծlծծծAս<-սNT=ս^áս^^Bսسս^@ վծծ9ծծծNծTransmission error-- retrying. կկ-ݧÄկS/կhKկFile  Saved կ?վ)h>Ɓ/վR COM.DATA.TEXTվm*** COM info fileվD=վ"O=վX:ˡ}կկԦOverflow text written to files: հA  ȡBհ&..TEXT հNվC:տ>տ.տ=́0ʁ0ȡտ^yˡuտ~տM:տ>տ=աաɡ ա8KաCءWաVա[2á:աyաաWriting to fileաա.աաահh3հz հհ`!61,٪PتPձW~,UձqUš/ձձ,Uձ,PUձ~,Uձҹձձբբբ+j,բšբբգgWritePգ Write Record Buffer toPգI +գ_ գ|,UձUáղղ,ղ",Uղ:ղH,VUVղj,Uղ{,ղ/ղ,ղn 6ղ٥gGwգ:,գ¥Kգضդ {   lines written. }դ<դetPղ쥀GetPճ;ճ+ճ*ճ@;6ճl ճyճճճ?ճճáճ1մ &մ 5UNothing in the buffer!! դw$" .դդ?áեA ե)եBKեR.Z.TEXTPեdե**٪Pմմմ turned ON մ turned OFF յRL7յhx#յ#յCarrier detected յצ C*n*եl/զ-զ>զsȡզզzǘ:զWզզá<զզarrier lost յJ8նFšcնgնl.Do you really want to clear the Record Buffer?%նննѦRecord Buffer Cleaէzǘ: áէ'է+է; էTէ[էbقǀէէէQ( 0ը0ը2թ9red "շRecord Buffer already empty շ-9շg#Change Command Prefix character to:շշ շթJթ\թh"4թ|á թNo transmission errors. թթζUnrecovered errors!!:թ շ϶&{ Command prefix character changed to ո ո. }ո;:չ,؞չ53չNչS4ȡvժ ժ;Error detected between line #  and line # ^á#չiչo؞չx^ˡ չ@չչչN;չۦչչ;պˍպBպGۦÄ%պqMicro cann šQժPlus   more errors later in the file.իի J3ի7իFիS իlot include itself! պպ۾ɡLպպ պ պջ۾ջ,ջ9!ջHջRMicro is3 áǐ$ǰBǾ׭x@;N @g ni ?ȴ Ⱦç#x 8#3?9xݟܟ˄ބ ݟÄܟÄÄÄ"    _ %á á  dxǀɓ!ɟHXCƁKƂw  CƁKϰA0646<TX   ,0H5 | ؿ"šۂZ "Z^tj<F 8v8 VX& H "," ! C.&Aٞقق؍+áˡǒٕám|Eġ<ؤJxtƃƊW BƲš2Micros nested too deeply! " *?6?$aAm;E);<<> R؟ˡM٣0:٣ á3٣ á,٣'u undefinedáǐ$ǰBǾ׭x@;N @g ni ?ȴ Ⱦç#x 8#3?9xZ 899á_ 88ˡ8á dxǀɓ!ɟHXCƁKƂw  CƁKϰA0646<TX  8 8S8ˡ8á 8ˡ8Ä  M8ˡ؟؟}" ġ<_ڟˡ(áڣa #g #Ch543(7 Fܣ E;8!8 8 9L8á< 8 8ܢܢ ܢ-ܢ ܢ7ܢFܢտý1ʁ1ȡ y؛>+>C>hInfo file updated. 2410ښ  á !ڧ)áˡ </ubz<2عL9] Half Duplex75 * զOverflow checking"7k:d ڟˡá )Ä   \2\ \%á9!\6 Saving text 7Fd'?y<8Œ.1CW*~~yu[VP<$9(6šM9 d$xá)$ ݧ$ ݢݢ ǂ𨀂 إ (`ááW ˡ9ݧ+á áÐإ%ü@4AQáerxąđݢĶ ˡ-'ݧ*áá iI#áá +إ .$áá *إ  j =<š]ݢŒ~Şyˡ;žyȡyܛ@.&A  ݚ P á۟ڟÍá 6 6ˡ Ä JxtƃƊW BƲš2Micros nested too deeply! " *?6?$aAmޓ%  66 ߫6  Ä c4 ٢)%%,٢٢)$ $٢P٢٢٢+٢ ٢ ٢)٢P ۦINTEGER Щ ЩCLOSE Щ SEEK Щ!RESET Щ"GET Щ#PUT Щ$SCAN Щ%ۢ +ۢ  ۦREAL Щۢ *ۢ  ۦCHAR Щۢ )ۢ  ۦBOOLEAN Щۢ (ۢ BLOCKREAЩ&BLOCKWRIЩ'DRAWLINEЩ(PAGE Щ)SIZEOF Щ*DRAWBLOCЩ+GOT ۦSTRING Щۢ $ۢ  ۦTEXT Щۢ 'ۢ  ۦINTERACTЩۢ %ۢ  ۦMAXINT OXY Щ+̀ʀȡgٳlpڡ  ̀ʀʀʀ ڡ ʀʀʀʀٚ LЩۢ +ۢۢ / /ۦINPUT Щۢ 'ۢۢۢۢ/ . .ۦOUTPUT Щۢ 'ۢۢۢۢqb ODD ЩCHR ЩTRUNC ЩROUND ЩSIN ЩCOS .  ۦKEYBOARDЩۢ 'ۢۢۢۢ ȡN ܢ (áܦFALSE ЩܦTRUE Щܢؚܢ ЩLOG ЩATAN Щ LN Щ EXP Щ SQRT Щ MARK Щ ښܢ (ٚ ۦNIL Щۢ &ۢۢۢ  j5 5ئ Щآ آ4 4RELEASE ЩIORESULTЩUNITBUSYЩPWROFTENЩUNITWAITЩUNITCLEAЩHALئ Щآ آآآ3 3ئ Щآ آآآآآ2 2ئ Щآ آآT ЩMEMAVAILЩWWȡܳF0ܹ( XX +X)+ XX *X* 11ئ Щآ آ آآآآآآآآآ00ئ Щآ آآ آآXXXXXX ۚXp+g( XX +XL*FA9+0( آآآآآآPREAD ЩREADLN ЩWRITE ЩWRITELN Щb[B>$=7ݡ  XXXXݡXX؟ˡYYYX ښXؚ EOF ЩEOLN ЩPRED ЩSUCC Щ ORD Щ SQR Щ ABSdn(,6D?A@;;ȡ));٢٢ Щ;;<EF=ǂܢۚ 8áhVZJƄƅ?Ƅ;ƅgƁƃ ƁƂ B SJ  Ƅ Щ NEW Щ UNITREADЩUNITWRITЩCONCAT ЩLENGTH ЩINSERT ЩƄ;ƁƁ#v @ |Z6 vf4  88ˡ8áDELETE ЩCOPY ЩPOS ЩMOVELEFTЩMOVERIGHЩEXIT Щ++٢٢**٢٢))٢٢((٢٢&&٢٢'',٢IDSEARCHЩTREESEARЩTIME ЩFILLCHARЩDISPOSE Щ########ЩREWRITE5 NJ; : "!#ڦPROGRAM Щ \8Y\V words long.;;A  linesBšX, B<  secs, BA |YGtSP<MxJتP"ˡ: Can't  lines per minute. BSmallest available space = >  words. ;;ȡ);open . RN L7 Compile: ƂPƂ *Ƃ  ;;;;ȡ1);ȡ٢ ;;C  "Compilation errors.̂*Ƃ*$Ƃ*:Ƃ*LƂ*P;̂*Ƃ*ƂPƂ*.TEXTUƂ*TEXT ̂*Ƃ*ƂPƂ*.CODE[*]XƂ*Y Y Yá _ˡ   á2   ޚߚCODE ̂*Ƃ*ƂPƂ*.PMDTƂ*PMD ;ˡǑ @C   7 _ٟ٢٢    " " ˡޢߚ á  á  ád ٢ :UCSD Pascal Compiler [I.4i](>   -;:u 7_ٟ٢٢ ǔ á   ޢ ˡk }ާ$Äf  ݧ+á٢--٢٢٦PROGRAM Щ٢ ٢٢٢٢٢;٢٢ ٢!á_ á );-ˡ -4ō P Pˡ ާ$  á  ޟˡkޢ ǔ -   á (Sá  á  C. jrxBN0  Ƃ*.CODE[*]XƂ* ݚ á   ޢ ˡk ޟˡ/ á&ˡ *áǏ š f ޚˡ á @ @BB s;;ȡa);šJSegment ٢    ٟ %>l ڟ˶zcڧ+ڧ*˄2 ġ%ɡ܂4 words long.;;A  linesBšX, B<  secs, BA  ɡ۸km2S@š  ڢ ڢڢڢ lines per minute. BSmallest available space = >  words. ;;ȡ);/ ł ڢڢ ˡ   ٶ˄/ڣ %ڣ áڢڣ ڣ Ȅ ڢڢ  ;;;;ȡ1);ȡ٢ ;;C  "Compilation errors.٢٢٢ á   ٢ ٢٢٢# #á!  $wd B s;;ȡa);šJSegment ٢   á  áU   ˡ8 ȡ,* m    ء n    6    á   ߟˡ ál ȡ 熚 ߚˡ9 ޚ7   . ˫ á á^   ˡá  ȡ ǎ  ޟá-á  ɡ _  łáy  ȡ ㏂ޟˡ  ߚ  ( (  á( @ _ޚ á  *á  á   ޟˡ&ާ+Íާ*Í s  ާ*ár ! á+    آߟˡ\ݚ˄< Í   ł á        ˡ o  ޚޟˡ% š ǩ M.áH  á    ٢ ٢ ٢٢    ˫ á  á  á (  ߢޚޟˡ ,(ߚ  ٟá249; #áQ_؟ٓ  öń ˡ%      ł  á%    ˡ Ǧ ٓۢۢڢؚ      ˫ á  ˫   Í  oo    á̜ ˡ  á ۥۢ ۢۢ ) Ä   آ ٚآá>   ޚ      ˫ á á%     ˡ  á ݥݢ ݢ ) Ä  ˡ ál ˡ áá&     ݟˡ   ڢ ۚ,ٟˡ)گ ٧,ˡآ,á%    ޚá؟*/3/"jآآ ái# # á)  ,ˡu , r á3 ݥݢٚݢݢ ݢݢ7   G  إآ آ,آ ,$ ˡ ˧  l   V V VG ˫ á  Gٟˡ>ݢ ۚݢ܂á۟ˡáݢ_Y á+á$ G G ,á á  ޚ_ؚá%    G,ˡu ,/3 >    ݟˡ2ȡ%ݧ*á m ݧ+á Ǖ ߢݚq ˫ á áw  @ ! @á  ˡ 6  7 8 7 FءE;$ V   á  á  á  á   876ˡǐ #;=? E.d ˡhP &ǐ G(á%27 !á  ˡ"܍  J9[ |X p86   !ˡ"g 0 XEv   á  ! á'  6áޓܢۚo ޓܢۚáP á4ޡz  ܢ ݚݟˡ x ܢ   7 _á 7á'6  2 Í Ä á"   ޓ{ á  "á=ޡǡ ܢ  á    39  88 : ˡǖ g   8ˡń P; P P8 7 FءE;$ V   á  á  á  á  áܟˡˡ NJ  >ˡ ˡq ܟˡ < , ! ȡ .ǀٿBǀ &á& ȡڢ 〮šNj ˡA*á ! @$ńˡá   á   ݚٟm. nء` Ǐ <; :;E :š >ǀ 3áná šˡ ۚš$ ġ á  E  Ǐ á ); áá_ ܟˡ?ܣáܣÄܣ Ä_ٳ0d@ HJ'ÍȄ'á ؂ ؂ #Ȅ؂ خ @MÍǀáܣ Äܣ ÄޓǠ ޓá 7E;ء:   Gڳáقšخáخǀ  خjȄ 3ǔ :EǕá EEá a۟ˡ>á-ˡ& á    ߧš߫;ܣ .aǀ Ȅ ?á(ۢá  (ۢܣ ;EؓǏ   17 F ܣ F7ɡ77  ɡ. _ޡ 9á ۢښ(ˡLJ !خ ٢`m ۢۢáޓܢۚo ޓܢۚáP á4ޡz  ܢ ݚݟˡ x ܢ   `mɡ(ġ 9!٫خ5R ˡr*˄&á*á33S,á'ޓ{ á  "á=ޡǡ ܢ  á    39  88 67)##:<> 4!zO˄ ˡS>á+8  ˡ} $x" ˡ' áˡ át á "  ˡǏ á   á  "+ˡ} á  +ˡ} %ááǞ eˡǢ WˡQ ٧*Íǟ < -ٟˡ á t ߮خ M+ á   *áȡ3á  <  á  á á   á á"ˡ +ˡ} *á  خMá   ˡ+*٣ á٣á0  !á - ؟ˡأ á أ أ } } R+ˡ} á  á%٣  27٣ ٣ ٣ á'٣  67٣ ٣ J/ö9  ˡ(á!)á "   á  "+ˡ} á( á"+ˡ} á  á   ˄ٮ"ág  ˡK+ M :* M)) M M+ˡ}  á8خ2خ"ɡٮM2خ} ˫ áٮM  .ö7. ˡ(á!)á "˫ ɡ šث $ ٚ+x á+ˡ/ á ˄ۮ&؟ˡ ȡ á& &ˡ +ˡ ا+á ١M ا*á8١îá2خá  ˡ +ˡ} á   ˡ +ˡ} á1M2خ٣á# "ˡ +ˡ} M]ا)á ١MJ ١M5 )ˡ ݕɡ ٣šث٫+áMM" ˡ ˡ} ás áeNORMAL Я ܮܮM} ˫ áۮM57 !ޣ á ޣ ˡǐ áٟá~ áˡˡ nj  áˡ á ǘ   # ǐ  " 2 ILOCK Я 2PURGE Я CRUNCH Я    M" Í Ä á"   ˡń   WˡO Í;áá ˡ çáǏ } Yá  +ˡ} } M E?9ˡ )ˡǏ  MǏ ˡńǍ  P P W,WWpá    (a73 7ˡ +ˡ} á  )á á á}  }  3ۮ .)Ä Iá >ءǚ á0)á(=ܢܢ= $ ˡ )ˡ} á  " á   + ˡˡ} 9 $C Ä +&Pˡ ݕˡǎ ګ+á ág  á ˡǎ ǚ  ˡˡ Lj   Ȅ   áF    lj ݡȄǎ ٟˡˡá  ٟˡ~ ޣ áVޣáޣ ;ˡ Mޣ ޣ 4ޣ áBޣ %ޣ 7áNޣ ޣ áO ݡ 㔜ޡߢ߫lj ˫ á  ޡ, = = .ޣ ޣ ޣ ˄ޣ "أ áأ á t ܳo"== ==V&Ni "$&(*,.02468:<>@BDFQA1ܹ !ݡ2  ˡˡ} )ÄǏ /áM M (ˡáá M &~$&&'á &۟s ˡ ġ} +ˡ+á*á} +ˡ+á*á} + >˄ۧ++Ä0#ۧ**Ä   dž #ۧ**Ä dž cۧ++Ä dž +á  á   ˡ +ˡ} Má Hۧ++Ä dž -ۧ((Ä dž  z'_F $ &% (`   M+ á    á   á %!+á*á dž (á %۟˄ۧ++Ä0#ۧ   + ˡ +ˡ} á    ˡ +ˡ}  " ˡ **Ä  dž jۧ++Ä0#ۧ**Ä  dž (ۧ((Ä  džˡ} ˡ!áM )  ÍM{wsokgc^+V  f& D$ˡ ەˡǁ ؚ,'$)áoL)&(&$|~|zL C:a_cecacaoagݡá  " z +á  )Í ˡ ȡ  $ )Í ˡ ȡ ۟˄á+á   ǁ *+á ا*$#M: M M.  ۣáۮ&ۣá ǂ ˡ# ' P' a ۧ*á ۧ(á ۮˡá+  *  á) ߧ$ ߢ߫     ǃ  DŽ  s $  ˡ  ǃ 4ǃ   "ٟ˄ڟˡ٣ áȡW)Äá <ç! &+ڧ* *  á   &ˡ(ˡ LJ   á ߫ :    Ǜ ؟ˡŧ* Ǐ   A áW ˡ>ˡǐ 0 !OUTPUTCH LISTING EXITTEXTNOTATMARREMOVEVOI FUNNYNAMI FINALCOMSENDFILEI ؟ˡç!  Ǒ 3   ǀ @ˡsˡǐ e V؟ˡ LASTCOM HOSTFILE+OKAY <FUNNY ;LISTFILEOKAY YESNO S YES -ASKFORNA!Dž  ~m0*564/1(0!7/ 1, )ǁ ( Zrç! 8߮ 6šá40Ǒ 7 @ !á 6 $@خá ˡ ō  á ) ˡ ȡ ٟ˄+UPPERCAS'C MESSAGE 'S ENFORCEM'MAKEMICR'MICSTR LISTMICR'I CH CLERMICRá*  *ޡJ)Ä$6ˡ-  )˄Pˡǁ ٫٫ lQ! 'CH MICROS 'CH MICROCHAOCTAL *S I .T -SETUP *VAL PEEK Q  F @ޡ*٣)($(ǒ 8Z<I: ǁ 3   d)" #áO *ADR POKE *ADR VAL SERIALAD*I MAX T SAVEFLAGSAVETRAP_ڤˡ_ڤ؟ٓá 9ٓǧ   7R n*(JPTR JUNK GETMICRO+MIK READINFO+READDEFA*C INITIALI*OPTIONS .S FLAG   á  :< D+ ٮ á 4  ( á 9خٮ (خ PRINTLN .S HELP .OUT S CHOUT C CONTROLOC DEFINEMIMIKCٮ `, 9ٟ߮ˡ٧*Í ǐ  á    ٟˡ_ PHAR P UPPERCASC UPPERIT I INITKBDRMESSAGE S MESSAGE3A Vܟˡ ȡáǜ   ܚޚ۟áښǓ ˫ á  (B -C NEXTCHARABORT TWIDDLE NEWOPEN FN MODEM MOVECHARSENDCHARC Jڟˡ9˫  Í߮ ݟˡc ݚܟá ,   9 š   ECHO C SENDANDEC QUIET DELAY T AWAIT TARGET T DONE ݟá á  @?mNO+- خ (J˫  á خ  SEND S I +SENDWAITS PUTCHAR C READC SAVECHARC 5 GI X. ٮ @ خ á 6 (9ٮخ B/áW   áERASECHAREADL GETFILEN S1 I ,INOPEN S OPENIN NAME PUTEOL RUBOUTS ;  NEEDCOMM$RETURN CH CHARCOUNHIGHCHARTHISCOMMgLINEFEED ENDOFBLOGLOBSTRIGLOBSTEX ˡعWildcard not allowedP*á not PFirst volume/file name was k a wildcarduPENDOFTEXINTEXTMOCOL COMMANDC COLUMNPOLOWCHAR HOSTFILE;IOPORT xSPACEEATMODEMSTA#ERRORCOU file loadedP3áNo SPعfilePvolumeP46"Illegal X PROMPT PRESSLEVSTARTOFTESCAPE TRANSFERBUFFERPODUMPLINESUFFIX RUBOUT NULL QUITname]P6ˡ$P [Pع6Volume to file nameP'File to volume nameP <=>% !OUTFILENEXON OVERFLOW"Illegal change <`>aP file name P scan string P volume name P- Illegal formar???rJanrFebrMarrAprrMayrJunrJultP - char. max >PNo directory on volumeP File foundPVolume already on linePOutput file fullPC ERR FN LEADINGSDUMPBUFFDOTTY BASE I K LINES LASTNONBrAugr Sepr Octr Novr Decr ???r???r???SPACES FLUSHBUFSIZE S NEXTFILEZ COMPUTECCH I J NUM P2 SDQSSؕRRŧRQɄS?Í- R=9T|tl C MIN I J ERRORSUMI GETSTUFFOKAY BEGINLINDIGIT1 MIæ((67MbتP&R Parity (CRC) errorPDIGIT2 DIGIT3 TRIES LOCALSUMHOSTSUM ENDCH SENDSTUFOUT ,FILLER P UGETTER Bad unit numberPBad IO operationP Timeout errorPVolume went off-linePFile lost in directoryPGETNAME TOGGLE NAME MODEMWAR CLEARBUF!CHANGECH"GETCHAR #READMICRSELF ECHOCHARLAST Bad file namePNo room on volPNo such volume on-linePjFile not foundPTDuplicate directory entryP3CHARSPECIALFOUTBOOLE%FLAG C OUTCTRL &C UPDATEIN$I C INPUTCOM Filer error!P 3dP1# \Blocked volumePUnblocked volumePRˡM oC PROCESSC)COMCHAR HANDLEKE*I HIGH LOW OLDLOW TICKS PRESSEDK(C r PSáPunRPPblkd volXP File name YPGFile or volume naKEY 'MAINCOM +COM C BACKSPACLASTCHARHALFDUPLRAWNAME +TAB SAVINGTE BELLmeP, Volume namePNVC*d"P expectedYPr:UZ 6P< 0  ڡ,-á -ˡ ڡ4Put  : in unit ڿ۶Ȅ: ȡز)(ئ(ȡA)ɡ))$=!Put in :&(ڡ-l ضض˄ ?ˡ:ئxɡ ...too long <ٹ@dAdBd ɡ:á ; / (*áH:á ? : 0 ($á   DdCdd)Ъ,,)оɡЦ - d:W, dˡ2ɡ  &7?)ū7::خ')*á)*)#áخٮ)خؾپšSOnly 2 .ݪ( =T/! 9==- 00á d/-áB}0 Ed . characters total allowed in a wildcard searchdvš% ȡ;6NdbT- ˡFdC:TOd dCd d ٓdlá  M=?6(d|:=5d4dC<@. F ڪd | ȡîM:!(ЦȄ0%=ȡЦÄ? &Í|å|ddtlšdStdl- Цdо ЦI)$tl|êX=?6*dtl=6Workfile already savedPNo workfile to savePZá TextP CodePP file lost [PI:!(T ݪ(á=ڡ%8 Pd 0 1A-M 6Dangerous! Suggest using ? on wildcards to same volumed:<>@BDFHJLNP "$&(*,.02468:<>1A -M Ȅ-M ç-M M:!@BDFHJLNjlVXZ\^`b%'nprtv|~iU9"$&(*,.0268(87:  ?  ,,Xá8Q,:,Pá2 ,d &v *ˡdȡ.ۛ ۛۛaA 0,1A 88 d8 =)-=N dЦ6 D ؾȡٛ š* &) $ ۪#  á1 ۿ)áڿ)š )b# = D,@d wإåTMIe=:T already exists; remove it ?  ,PX:c6  c changed to TcTl dd! Td ,YáDتP,پ, پ*تPPPRڪP$HdP"d4؍ءЦЦe&"7Z^c$!Remove@RdPd6 PUPR$%GetHRddT.TEXTT.CODE==;=:T RQRemove Q7r=:-QM : -QM  removedRRR%.TEXT=:T.CODEء5=:T .TEXT loaded(%QM8Update directory ?  Yá[QR 1A FQR-M ȡ*QM١5=:T .CODE loadedٍ.T=3d" <̀ƀ=ƀ:ƀTQRM-"RRQQ1 -aP"dKP"d2 = : T  removed ƀ.TEXTƀP+̀ƀ=ƀ:ƀTƀ.CODEƀPT̀ƀ=ƀ:ƀTƀ.PMDƀPЦЦsw4".?The current workfile is :. N}+~T}~š}( already exists.~(+ alreado workfile&l#%á%Put in ':0Put destination disk in unit #0 y exists.(T already exists.á Remove it? š Remove them?( X,,&'T/!','-,#áضò} &,l,á&`ض Yá&}~+T.T=.T= NewHRdd'T.TEXTT.CODE=ò} 67GBdd Do you still wish to continue ?  Yˡ X,Ud X,,=; LQ54ChangeChange to what ? `TdPdA6545æ<dærX,d = =#á,,Xá5,á,xUd Í% X,X=d556Change Q554*IMM:!(5P"%Q54Transfer To where ? tUdVd5056 Transfer Q5545P"dÄ,I:d )dI:!("  dJd ,Xˡ,ç,YÍ-W--M =W--M "dЦg:-ݡ what file what volume ? & о Ц-!ؓfX : changed to =:}W =?XWÄ?=X=r:6> ,47#RáWriting&.RR-QM -QM ,5454SYSTEM.آÄ  bad blocks{ /Ƃ+ƃWVolume to get boot from: P:쥁P2S%,ç,YÍ"d Pu} ]́+Ɓ+Possibly destroyآ آ5 آšG آ -rآ-آ  آ directory of Ɓ+ %Ɓ+: ? )Ɓ+ Yˡ #VbÄ22 X㧁WÄ5š2á  أ  ILLEGALPpBad diskPvCodefilePfTextfilePVInfofilePFDatafileP6R"çRÄDR85X P2S"d "dId5ń GraffileP&FotofilePxj\N@2$ * -Ɓ/4R5ء:Directo k b!llòCń!C"dnX:c6  ćry listing of`TdTd8Ɓ0=CONSOLE:P1XSd }0 45PP+Ɓ+ transferred to Ɓ+ Ɓ+:Ɓ+'Ɓ+,XˡP4ڍڡЦЦ &/A"dṔ6́4́7́8æ*Q`Td \6List Q-AQ-M E9~ $4MakeHRdd(,˧,Y˄,Xá4bP"dLa`\Ṕ:Qʁ:ȡ)æ--QM ï-QQ58æ6-QM -M ,ʁ9-M  "d0=:T made44Ц 'Prefix titles by6Vdd files in directory, ʁ4  blocks used, ʁ6  unused, ʁ7  in largest area.4 /;= Prefix is ;:&`(9Files on volume 0Cá"d 55 .1Zpd)=- 0%Version of 3 October 1979, 1.4iR on C -rC-C   File name Size Last moVolumes on-line: 0 0ȡ}0 ٦0  : پd-$ File name Size Last mod Place Bytes$+ض8%ÍK5%ا7ٲ? System files.ٲ; Default files. File Character-structured volume.$&()%8+ء 4%$+ا4 $65؄6G2988 9900 Prefix is - ;:/ ; .%Bad blocks scan of$Pdd088*ٕڶ7šڸ7šC6ڂ64{{{ Unused }}}   *b&"dRQ}0 ́QʁȡP0Qˡ4RRBlock Q  is badQQR? ateW Today is C -rC-C   New date ? PQ-M R٧-RM ɡRRRM-#0 -  markedkN%w(j4%Crunc oQyQ 0QQōۡQŧQ Ʉ CQh Pdd:M-M M ȡ-M -M ńMoving 3ܥń=  =QQȡ9QAĥQZȄ=QQAa =QQQQQ Qȡ#rQ SYSTEM.PASCAL=?-M ܕۧSšSš܂܂ۂ ȡd02ڂ"ˡCRead err= CQ QQ3ܡF5QyQ 0QQcȫ55 C Qd?- 00or, rel  , abs  ܂܂ۂ ȡd02ڂ"ˡCWrite error, rá̂SƂSPƂS:QƂSPƂ+"ˡ1 is not available, other file: áƂ++ˡUá-M C0 - New date is C -rC-C  J ; is not big enough to be a bootstrap, no transfer attempted0+"ˡI8 Error in attempt to wri2%Examine blocks on PddBlock number-range ?   1te boot, boot area now undefined/ Boot transferred successfully. Ƃ+ 1%Zero d  ɡۀɡ ܫQQܧ-M ɡ)Risk the directory ?  YˡR-M ̂Rʂȡ-Rirectory of$Pdd0&"d-ˡ2Destroy =: ?  YˡDuplicate directorM ̂ʂʂĄbؓ%File(s) endangered:ʂ ʂʂ ʂ RRy ?  ,,Yá ,XáN,-ˡs-M ħ-M 'ȄX-M  blocks ? ء&Try to fix them ?  YˡܫR̂RʂȡBlock R 0ƁRƁ0ƁR"á 0 ,,Xá,Yá -M ,YˡD# of blocks ?  ɡ Bad # blocksNew volume nR"Ɓ  may be ok* is badRɡRRšRRRɡá5Block ame ? P :á ō6d  CM   is still badLBlocks   thru   are still bad Mark them : correct ?  Yá00"d: zeroed1 n055ء (may remove files!) ?  YˡءARR-M ȡ/-RM ̂ʂʂĄ RM-"RR-M5إ/:3%E Date set: 1..31-Jan..Dec-00..99P'Cá No current d Má dC BAD.xxxxx.BADQ̂Qʂġ. QܲnQ0ܲnQQ@ rTۺ߈~0Tp`R.nDzT*áIE@Filer: List, Bad-blks,; &VT = 11; &CTRLS = 19; TYPE PEN = (UP,DOWN); &STRING = PACKED ARRAY[1..4] OF CHAR; &ALPHA = PACKED ARRAY[1..10] OF CHAR;  Ext-dir, Make, Vols, Xamine, Krunch, ZeroP6,x33EP,L))y)sok!g"c$_([# VAR LASTHY,LASTLY,LASTHX : INTEGER; &INTERVAL1,INTERVAL2,CHARACTER : CHAR; &WCOUNTER,NOTEVAL,NOTEVAL2:INTEGER; &OCTIVE,OCTIVW'S.O/K0G4C5?2;9BZ2;SOK#g;UI'U$U(ISA0I,QábX ntT p E2,QCOUNTER,UNITN : INTEGER; &LENGTH,SKEY : INTEGER; &INTNAME,INTTEMP,ANSWER : STRING; &DUMMY : ALPHA; &DRAW,JUSTLOOKING:BOOH4jjB!P$$>&''''*:)^++-z,-4.(0Z.020f3d4445T9:*5;<&''''*:)^++-z,-4.(0Z.020f3d4445T9:*5;<500) THEN NOTELETTR:='*' %ELSE READ(MUSDATA,NOTELETTR); %IF NOTELETTR='*' THEN 'BVE(X-8,YY-8,UP);MOVE(X+9,YY-2,DOWN); #END; PROCEDURE FLAT(X,Y,YNOTE : INTEGER); #BEGIN { FLAT } %YY:=606-(Y*150)+YNOTE*8; %EGIN )RESET(MUSDATA); )READLN(MUSDATA); )RESETUNIT:=TRUE; )TOTALEX:=0; )NEXT:=TRUE; )DRAW:=FALSE; 'END; %WHILE NOT (NOTEMOVE(X-6,YY+30,UP);MOVE(X-6,YY-9,DOWN);MOVE(X+5,YY+2,DOWN); %MOVE(X+7,YY+5,DOWN);MOVE(X,YY+8,DOWN);MOVE(X-6,YY+6,DOWN); #END; LETTR IN ['A'..'G']) DO %READ(MUSDATA,NOTELETTR); %READ(MUSDATA,ACCIDENT,OCTIVE,NOTELETTR2, %ACCIDENT2,OCTIVE2,INTERVAL1,INTE PROCEDURE DOUBLESHARP(X,Y,YNOTE : INTEGER); #BEGIN { DOUBLE SHARP } %YY:=606-(Y*150)+YNOTE*8; %MOVE(X-7,YY+7,UP);MOVE(X+7,YYRVAL2); %TOTALEX:=TOTALEX + 1; #END; ! ! !PROCEDURE GCLEFF(Y : INTEGER); #BEGIN { GCLEFF } %YY := 630-(Y*150); -7,DOWN);MOVE(X+7,YY+7,UP); %MOVE(X-7,YY-7,DOWN);MOVE(X-7,YY,UP);MOVE(X-7,YY,DOWN); %MOVE(X+7,YY,UP);MOVE(X+7,YY,DOWN);MOVE(X,%MOVE(8,YY-70,UP);MOVE(10,YY-72,DOWN);MOVE(11,YY-69,DOWN); %MOVE(8,YY-70,DOWN);MOVE(10,YY-75,DOWN);MOVE(12,YY-77,DOWN); %MOVEYY+7,UP); %MOVE(X,YY+7,DOWN);MOVE(X,YY-7,UP);MOVE(X,YY-7,DOWN); #END; PROCEDURE DOUBLEFLAT(X,Y,YNOTE : INTEGER); #BEGIN { DO(15,YY-75,DOWN);MOVE(17,YY-72,DOWN);MOVE(8,YY,DOWN); %MOVE(12,YY+5,DOWN);MOVE(15,YY+7,DOWN);MOVE(18,YY+5,DOWN); %MOVE(22,YY,DOUBLE FLAT } %FLAT(X,Y,YNOTE); %FLAT(X-14,Y,YNOTE); #END; PROCEDURE NATURAL(X,Y,YNOTE : INTEGER); #BEGIN { NATURAL SIGN } %WN);MOVE(0,YY-43,DOWN);MOVE(0,YY-50,DOWN); %MOVE(5,YY-56,DOWN);MOVE(15,YY-60,DOWN);MOVE(23,YY-56,DOWN); %MOVE(25,YY-45,DOWN);MYY:=606-(Y*150)+(YNOTE*8); %MOVE(X-5,YY+12,UP);MOVE(X-2,YY-8,DOWN);MOVE(X+2,YY+8,UP); OVE(22,YY-40,DOWN);MOVE(15,YY-38,DOWN); %MOVE(9,YY-42,DOWN);MOVE(10,YY-45,DOWN);MOVE(15,YY-50,DOWN); %MOVE(20,YY-50,DOWN); #E%MOVE(X+5,YY-12,DOWN);MOVE(X-4,YY+6,UP);MOVE(X+2,YY+8,DOWN); %MOVE(X-2,YY-8,UP);MOVE(X+4,YY-6,DOWN); #END; PROCEDURE DASH(X,ND; ! ! !PROCEDURE FCLEFF(Y : INTEGER); #BEGIN %YY:=630-(Y*150); %MOVE(5,YY-13,UP);MOVE(6,YY-13,DOWN);MOVE(4,YY-14,DOWN)Y,YNOTE : INTEGER); #BEGIN { DRAW DASH FOR NOTES ABOVE AND BELOW STAFF } %YY:=606-(Y*150)+YNOTE*8; %MOVE(X-16,YY,UP); %M&NEXT,UPDOWN,FORMAL,RESETUNIT : BOOLEAN; &FUNCTION RANDOM : REAL; EXTERN; ! !prOCEDURE PUTBYTE(BYTE : INTEGER); #BEGIN (; %MOVE(11,YY-4,DOWN);MOVE(15,YY-1,DOWN);MOVE(20,YY-2,DOWN); %MOVE(25,YY-4,DOWN);MOVE(30,YY-12,DOWN);MOVE(28,YY-20,DOWN); %MOWrite(byte); #END; ! ! !PROCEDURE MOVE(X,Y : INTEGER; PENSTATUS : PEN); VAR HX,LX,HY,LY : INTEGER; #BEGIN #{ MOVE SENDVE(1,YY-53,DOWN);MOVE(35,YY-7,UP);MOVE(38,YY-9,DOWN); %MOVE(35,YY-22,UP);MOVE(38,YY-24,DOWN); #END; ! ! !PROCEDURE SHARP(S TEKTRONIC PLOTTING DATA TO MOVE AN } ${ INVISIBLE 'PEN' TO THE SPECIFIED X,Y POSITION } %IF PENSTATUS = UP THEN at(x div 4, X,Y,YNOTE : INTEGER); #BEGIN { SHARP } %YY:= 606-(Y*150)+YNOTE*8; B OVE(X+16,YY,DOWN); #END; PROCEDURE CLEAR; #BEGIN { CLEAR SCREEN } %PUTBYTE(7677B); %PUTBYTE(7656B); %WRITELN(' (XSTEM,YSTEM-24,UP); 9MOVE(XSTEM+10,YSTEM-39,DOWN); 7END 7ELSE BEGIN 9MOVE(XSTEM,YSTEM+24,UP);  '); %QCOUNTER:=0; %SPACER:=140; #END { CLEAR SCREEN }; ! ! !PROCEDURE NOTE(X,Y,YNOTE,NOTEVALUE : I9MOVE(XSTEM+12,YSTEM+37,DOWN); 7END; 3END /END +END 'END; %IF (Y=0) AND (YNOTE=-7) THEN %DASH(X,Y,YNOTE); %IF (Y=0) ANDNTEGER; FLAGUP : BOOLEAN); VAR COUNT : INTEGER; #BEGIN { DRAW A NOTE } %YY:=606-(Y*150)+YNOTE*8; %IF NOTEVALUE<2 THEN 'BEGI (YNOTE>4) THEN 'BEGIN )DASH(X,Y,5); )IF YNOTE>6 THEN +BEGIN -DASH(X,Y,7); -IF YNOTE>8 THEN /BEGIN 1DASH(X,Y,9); 1IF YNN { OPEN NOTE } )MOVE(X-8,YY,UP);MOVE(X-3,YY+6,DOWN);MOVE(X+3,YY+6,DOWN); )MOVE(X+8,YY,DOWN);MOVE(X+3,YY-6,DOWN); )MOVE(X-3,YOTE>10 THEN 1DASH(X,Y,11); /END +END 'END; %IF (Y=1) AND (YNOTE<-6) THEN 'BEGIN )DASH(X,Y,-7); )IF YNOTE<-8 THEN +BEGINY-6,DOWN);MOVE(X-8,YY,DOWN); )COUNT:=COUNT+30; 'END %ELSE 'BEGIN { SOLID NOTE } )MOVE(X-8,YY-5,UP);MOVE(X+8,YY,DOWN); )MO -DASH(X,Y,-9); -IF YNOTE<-10 THEN DASH(X,Y,-11); +END 'END #END; PROCEDURE RESTFLAG(X,YY : INTEGER); #BEGIN { FLAGS FORVE(X-8,YY-2,DOWN);MOVE(X+8,YY+3,DOWN); )MOVE(X-8,YY+1,DOWN);MOVE(X+8,YY+6,DOWN); )COUNT:=COUNT+15; 'END;  1/4 TO 1/32 RESTS } %MOVE(X-7,YY-15,UP); %MOVE(X+7,YY+15,DOWN); %MOVE(X-4,YY+10,DOWN); %MOVE(X-8,YY+10,DOWN); %MOVE(X-10,Y%IF NOTEVALUE>0 THEN %IF FLAGUP THEN 'BEGIN )XSTEM:=X+8; )YSTEM:=YY+40; )MOVE(XSTEM,YY,UP); )MOVE(XSTEM,YSTEM,DOWN); 'ENY+12,DOWN); %MOVE(X-9,YY+14,DOWN); %MOVE(X-8,YY+15,DOWN); %MOVE(X-7,YY+14,DOWN); %MOVE(X-10,YY+12,DOWN); #END; PROCEDURE RD %ELSE 'BEGIN )XSTEM:=X-8; )YSTEM:=YY-40; )MOVE(XSTEM,YY,UP); )MOVE(XSTEM,YSTEM,DOWN); 'END; %IF NOTEVALUE>2 THEN 'BEGEST(X,Y,YNOTE,RESTVALUE : INTEGER); #BEGIN { DRAW A REST } %YY:=606-(Y*150)+YNOTE*8; %IF RESTVALUE=0 THEN 'BEGIN { WHOLIN { LET"S DRAW SOME FLAGS } )MOVE(XSTEM,YSTEM,UP); )IF FLAGUP THEN MOVE(XSTEM+10,YSTEM-15,DOWN) )ELSE MOVE(XSTEM+12,YSTEM+E REST } )MOVE(X-7,YY,UP);MOVE(X-7,YY-8,DOWN); )MOVE(X+7,YY-8,DOWN);MOVE(X+7,YY,DOWN); 15,DOWN); )IF NOTEVALUE>3 THEN { 1/16 NOTE FLAGS NOW } +BEGIN /IF FLAGUP THEN BEGIN MOVE(XSTEM,YSTEM-8,UP); /MOVE(XSTEM+1)MOVE(X-16,YY,UP);MOVE(X+16,YY,DOWN); 'END %ELSE 'BEGIN )IF RESTVALUE=1 THEN +BEGIN { HALF REST } -MOVE(X-7,YY,UP);MOV0,YSTEM-23,DOWN) END /ELSE BEGIN MOVE(XSTEM,YSTEM+8,UP); /MOVE(XSTEM+12,YSTEM+23,DOWN) END; -IF NOTEVALUE>4 THEN { 1/32 NOTE(X-7,YY+8,DOWN); -MOVE(X+7,YY+8,DOWN);MOVE(X+7,YY,DOWN); -MOVE(X-16,YY,UP);MOVE(X+16,YY,DOWN); +END )ELSE +BEGIN -IF RESTE FLAGS } /BEGIN 3IF FLAGUP THEN BEGIN MOVE(XSTEM,YSTEM-16,UP); 5MOVE(XSTEM+10,YSTEM-31,DOWN) 3END 3ELSE BEGIN MOVE(XSTEM,VALUE=2 THEN /BEGIN { 1/4 REST } 1MOVE(X,YY-17,UP); 1MOVE(X-5,YY-10,DOWN); 1MOVE(X-4,YY-7,DOWN); 1MOVE(X-1,YY-4,DOWN); YSTEM+16,UP); 5MOVE(XSTEM+12,YSTEM+31,DOWN) 3END; 1IF NOTEVALUE>5 THEN { 1/64 FLAGS } 3BEGIN 7IF FLAGUP THEN BEGIN 9MOVE1MOVE(X-5,YY+3,DOWN); 1MOVE(X,YY+12,DOWN); 1MOVE(X,YY+15,UP); 1MOVE(X+5,YY+8,DOWN); 1MOVE(X,YY,DOWN); 1MOVE(X-1,YY-4,DOWN);C ('A':JVAL:=9; ('B':JVAL:=11; ('C':JVAL:=0; ('D':JVAL:=2; ('E':JVAL:=4; ('F':JVAL:=5; ('G':JVAL:=7; 'END; 'CASE ACCIDENT X&<@ ^).Z `6 P& b \7 &<@ ` <@ P <@ b$<@ \Y.\ X  OF ('N':IVAL:=JVAL; ('?':IVAL:=JVAL+1; ('^':IVAL:=JVAL-1; ('D':IVAL:=JVAL-2; ('X':IVAL:=JVAL+2; 'END; > &PASCALSYUSERPROGPRINTERRINITIALIGETCMD %OCNOTE:=36+IVAL+(OCTIVE-2)*12; #END; PROCEDURE QUIET; VAR K : INTEGER; #BEGIN { SET MODE TO ALL VOICES, THEN LOAD UNPL n`& , @ R , *^/ńȄ 1MOVE(X+5,YY-9,DOWN); 1MOVE(X,YY-7,DOWN); 1MOVE(X,YY-17,DOWN); 1MOVE(X-2,YY+3,UP); 1MOVE(X+4,YY+10,DOWN); 1MOVE(X,YY+15,UAYABLE NOTES } %OUTPUT^:=CHR(74B);PUT(OUTPUT); %OUTPUT^:=CHR(05B);PUT(OUTPUT); %WRITE('CAA'); 'FOR K:= 1 TO 4 DO BEGIN )OUTP); 1MOVE(X,YY,DOWN); 1MOVE(X-3,YY-12,UP); 1MOVE(X,YY-4,DOWN); /END -ELSE /BEGIN { 1/8 REST } 1RESTFLAG(X,YY); 1IF RESTPUT^:=CHR(74B);PUT(OUTPUT);OUTPUT^:=CHR(05B);PUT(OUTPUT); )WRITE('H@A@A'); 'END; #END; PROCEDURE NOOP; #BEGIN { NOOP SENDVALUE>3 THEN 3BEGIN { 1/16 REST } 5RESTFLAG(X-4,YY-8); 5IF RESTVALUE>4 THEN 7BEGIN { 1/32 REST } 9RESTFLAG(X-8,YY-16)S A 'NO OPERATION' SIGNAL TO THE BOX. } %PUTBYTE(DC1); %WRITE('@A@A@A'); #END; PROCEDURE CONVERT(X:INTEGER); ; 9IF RESTVALUE>5 THEN ;BEGIN { 1/64 REST } =RESTFLAG(X-12,YY-24); =IF RESTVALUE>6 THEN =RESTFLAG(X-16,YY-32); ;END 7END 3END /END +END 'END #END; PROCEDURE BAR(X,Y : INTEGER); #BEGIN { DRAW A BAR TO SEPARATE MEASURES } %YY:=630-(Y*150); %MOVE(X,YY,UP); %MOVE(X,YY-64,DOWN) #END; PROCEDURE DOT(X,Y,YNOTE : INTEGER); #BEGIN { DRAW A DOT FOR LONGER NOTES  } %YY:=606-(Y*150)+YNOTE*8; %MOVE(X+16,YY+2,UP);MOVE(X+16,YY-2,DOWN); %MOVE(X+18,YY+2,UP);MOVE(X+18,YY-2,DOWN); #END; PROCEDURE INFO(HELP : BOOLEAN); #BEGIN { RUN-TIME INFORMATION FOR THE STUDENT } 'IF HELP THEN BEGIN )CLEAR; 'END %ELSE 'BEGIN: @5 @@eBA Am f&f& w-?BAa~ 5 >fff& w-#W-% )CLEAR; )IF FIRST THEN CLEAR; 'END; #END; PROCEDURE UNCODE(NOTELETTR,ACCIDENT:CHAR; OCTIVE:INTEGER); VAR IVAL,JVAL : INTEW-$!W/ 5W->>= ,fwzw Bew& RZ b`E@X d&GER; #BEGIN { UNCODE TURNS A CONVENTIONAL NOTATION NOTE INTO } ${ A NUMBER REPRESENTING IT"S FREQUENCY } 'CASE NOTELETTR OF .<@ R<@ b<@ `<@ X<@ d7.4d?Z  w dU@Xw ^>v.<@ d<@ Z<@ d<@D @' B B3$ B@ ɍF(á ٦TRUE á٦FALSE V>`ߡ٦ *NOT SET* ޡ( ߓ ŧ7ȡ5ˡ0݊ Bġsá  ȡ%٦ ޓ3Zrˍ"á  á.ˡ*ɡe e+ e ܕڂȡ 0.    ˡá ˡ7̂ƂPƂ QƂġ0ȡ:b"v3˶3 ˍ.PP Pv\ Ɓ-(š4))EƀEƀP).TEXTU)J333 3 333!!OOPS!!Щ@ Z á{ NIL }  XP ȡ ؞&.,,˶,Ä ,,E٢: ^ to @ + 3R**ȡǀ ɍ8%ńAš٢&P٢&?EEƀEƀP.PMDTP,æSYSTEM.Eō9 in System, :+/BU(&l]  "$T8 ,---**SYSTEM.MISCINFOP+"á,+ ́ʁ>+>ʁJ+J ++n  ȡ,}ؤ---*,EDump: P+$EEP Up, Top, YP+,ˡ)EEPDown, Bottoۢ0ۢ ؞&}CONSOLE}SYSTERM???}?á';??m, ^P ˡ!EEPEdit, VPEEP File, QuitZP'Qá` 3Ɓ_ٟá'C &"á}PRINTER&"á}REMOTEƄƅ/Ƅ*SYSTEM.CHARSET/3E"223 8. to exit)*3 r unknown cause("áǀ"áƄ  ̄+ʄ+ȡ   ̄+ʄ+ȡƂ  hardware error(illegal unit #(illegal I/O request(data-com timeout(volume went off-line(}GRAPHIC :ƄPV77::9file lost in dir( bad file name(no room on volume(volume not found(file not found( dup dir ent988:9  6    .Xry(nfile already open(U file not open(@invalid input format($VB.{hQ> IO error: :: F7 :9CONSOLE:(:9SYSTERM:(8(< Unknown run-time error(Value range error(No proc in seg-table(Exit from uncallwhX-2>Xed procedure(Integer overflow(Division by zero(NIL pointer reference(Program interrupted by user(> to exit)*T Ɓ- Dump to file:Ɓ/PƁ/Ɓ/́XƁXƁ/PƁX.TEXTUSystem I/O error(Unimplemented instruction(Floating point error(String overflow(Programmed hƁXPƁ/"áv./,́.3ʁ.ʁ.,á+́.+/Info written to alt(String too long(hString index out of range(GArgument out of range(*"|\F0/)Can't open file Ɓ/  )01E1ȡ0E1Í01ydE*4. 6,V| ~ :n n,or(No proc in seg-table(Exit from uncall10  0%a3+أ  أ  DŽ +ƁW`DsDsD nn ndnn'ýʁʁʁF  _ 6_ 8/efAA"hw & & E N\Et& B~ &- >e UB~ 7 E@ R7LU@6w&E75@p7w i7w 7 aw [w,- Ձ@  a a!~F@  B~ ~FhE`E `EՀ@N azE 3 E@  3? E@r r-nR7dd?^ Z~W  `E e `&& `E e `&EՀ~hEՀ~h74 D B 6E.7 *w wU &    Q7 7 7   7(  ҂ ~h E e ` E   @ ` G7\7 E7  7 E7 fePW  &f& w& w|e~z   7nH 7(6W w(N B  h6 Ew& \wRU W X7 27 0 ,Z 2*E@ $&?  w U@wb > 6  E7n ~h& EEt >d`V J %  D~ " ~ & 7  ~w ?  "U@ wEz7 vwdE D~ D C~ %  D~  ~& hAA~E e @`& E&~AA~E ^prDEL: .BYTE '_ BADCHR: .BYTE '? LINDEL: .BYTE 177 ALTMOD: .BYTtvf zfwft e @`&AA~E e @`  `@` t @L A@@A tfqfnfkfhfefbf_f \f"Yf$Vf&Sf(Pf*M JGDA>;85Bt J@ Ph ``f~ ``A~  ҇ d ``&& `  2/ ,")$&&#( *eeee e  e e& L# E e @a&&6E e @a&E e @a e8\h  EezN EE7h REB~ &z##607 " " &$@`@`$fH@7`e B~ B~h ~ Fdht \7 " ``WtB  aBE B<h  wN EC~ B~U @f F&:Hr~  ( 2 J d ~ T B b p  " 8 @ D z>d r x ~ 0  nt P  ?z  eN 8@ 6~E LU@t7`^~BE B @Wtw`>& B~6hzG |efX@ BCzEG@HPtJ$LM nO(kQRChTV焵W!cY_[\^^k `#ǭaxXcE e' e2-.E$E7  e w*6'exfhShjQYkoNmo9?pIrs|ouEw7x߄z @|Η}½  & &&&  &E&b4PE Ґ~ wU &f&f7 U   0z "(r.6>FNV^T-T-``f``f@`a@nXT-T-T-7 jL7 \>L7 N7 B&>L`V>L7 ,2>LhV>L6 \ 2   \  W T-T-T-T-T-T-T-T-T-  z   @ @  m eL5`\we w5 5@ \ɋE 5\\\..ww. @` dd&`f&d&b& w@ w  AFZ m eL ɋ e wvr@p@Pb&6()+|,,z]tA@AK wZZ NWFl ѕ  D@  R  xR נww w ʕtʕ  Q~EU 5~@A @`e eJh  C~C~ %h C~ J <  p UU Ve0   W Q@e@ E@W RC~c7 <# & @  z7 <# 7 d#7 d#7 d 7 d$7 d 7 d!7 d,&\ vw~- E&@W RE  t`  U&E w e Entte H  7 v   j7 d ZEeN7H  >?0_ (f&? 77B~f&& @׳@f&7 # % !%f&f&7 l #% # # # # # & .#%   \(&f&& eJe7B7 eeePPXXxhPXp \ e\>:L]L?ƪ@ \fEA#& e@ & f& f& f7 ! X& ff w xITING TO BE READ TRUNIT: .WORD 0 ; UNIT # OF CURRENT IO (ZERO MEANS NONE) TRBUFA: .WORD 0 ; ADDRESS OF USERS BUFFER   &@& &  (Z7 f7 VVw L7 L'@@'47 4 CptE`eE -ez\& Dr)&&\   5@5@7 X ! !0!0! #!!!! # # # # $!":! #  7 m-  ` ~ m- ` ~-'D! #D!x!f&\  \& \\r1@\[?\ ew & ?U?*@ڪAD h|ه   5  \ < L V <wH7F 8` <. <  ɝ^& _E7 C DE!:7  7aehD A   a C %     @  f&\   B -  e \z\Dw7e:wXP@P7n@eI70@wnM)w\ 7 , ßz 5U$ f C_  fW & @&&&&7 f" #<#p""f"! v" # ! !V" \" #"e\\;@\ \N @  J  E     7 7  @  27 !ׯ+U E `  =@f&ysE[\pCf&f&\% a @w   6 6 &  f 6    ͋D 5|w 5B N  5 , W#D  7W ΁A  v  6N\z\\\ N A f C %C B    \ ?Zw w   D5H5   :@ S~ e&-"wn.5) 5|w  w  D& &&@7  #D& && 6  A7 ^!$! $$!$ "$$$ #J$ # # # # ##  77 :  .-& pU`E@ wHw . e\ \S\ e& @7  :$#e\z$f& \:יc&>X4%]@& & & FU@ % eC ~% C ``` ez&f & & D&&D&& @%7 r!$  IA e e@ e& & & & & DU@ -X T~ & 7  F  <? :? -X  7 &&e #@  @6 7 !J%6 6 #?%-0 @ ׳I >m *@eBA Amf&f& w-Fh 5 >fff& w-SW-UW-!Rۂ+'(@ۂ(áݧۂ ۂ'á ܕ^lW  @W,+fw@!5 ,L+fwtW# :W-$@  >~+fwB ۥ ۧ ۂڞڂ)ˡ  !Uقč  reff@ wl :wv6 @ @m5 "@>m5 6y^ )á)܂ ܂áؓɍš  ٚáء wD@6@>6@>6- "@@eB@m>AmNPP  P~P~m>m  b ݂ɡ݂ەݕ 5 L: @5 @@eBA Am f&f& w-F?BAa~ 5 >fff& w-#W-%W-ڂق؞ڂق؞-/š -0--ۍۡ$!W/ 5W->>= 2-fwzw ew ASSUME R0 SCRATCH (WELL...=CR) AND INTERepeatfactor > 10,000-߭` ꂾ)á) -@RRUPTS DISABLED MTPS #PR0 .IF NDF,TERAK MOVB FILCNT,R0 ; GRAB NILL COUNT (IF ANY) BEQ 2$ 1$: TSTB @TXCSR ; HANG UNTIL  šB+Can't save the deleted text, delete anyway?P Y%ڕ󧁽 |ɡ š šȡá*ڧ%á  )ڂٕ ݞ݂)ˡ !U܂Zjڡ''''' et   p t `mwE : 7 ~á ڧ"á ǀ ġۡڶ>ڧ˄KڶPá4ڶPt7m7 El7h7^ 7\ZZ7 Vev 6 Feh #ڶNáڶNá lڳ aA, >پˡ ..& wt  {)7vP @ 7v7vx7vee~m m7vwt{) wvPپعE٢I٢<٢-٢ ٢ LA6)x%A 7t7v 7t7vx*)6)4)@)(v))))(ff, w   w :hv6 "  0,0" % u-@>m5 <wr@6@>6@>6- @eB@m>AmNPP  ~~m٪P&%ERROR: " Please press to continue.% ááJ tr ܕܕ܂( ) +'((áUEx~P", * @ f P  D"ۊ)HۊܳHaFá) 򧁾.ç Ä Äە sŧsrȍ: á܂)D!٪P what marker? - ئ Щ,- V,Vȡ,-,,,(r r)á7á '낾)ç낾uÍ ᓡ   t% . Type 1Error # . Type  á   ܂삧ݫ 5h-l)ڂ ٦P ۧ)ۧS  is badSST  bad blocks{ 1%Zero directory of$Pd á3پš!   پ kۧ$á/پȡ ٦P 6ۧ)ˡ0Pd0&"d-ˡ2Destroy ?: ?  YˡDuplicate directory ?  ,,Yá  QPپۿ ۧÚxV  šۊ)HۊܳHaF,XáN,-ˡs-M ħ-M 'ȄX-M  blocks ?  ,,Xá,Yá D!٪P what marker? - ئ Щ,- V,Vȡ,-,,,-M ,YˡD# of blocks ?  ɡ Bad # blocksNew volume name ? P t% . Type 1Error # . Type  á    :á ō6d  CM  : correct ? ȭ"ƁƂ<   š"á  á  á :Ɓ Yá.0"d: zeroed l2777/UEx~P", * @ f P  D"ۊ)HۊܳHaF:4%E/Date set: <1..31>--<00..99> OR P'Cá No current dateD!٪P what marker? - ئ Щ,- V,Vȡ,-,,,W Today is C -tC-C   New date ? P <١1ۥ č&\7ȡ'eڤġeڤeڤ؂  t% . Type 1Error # . Type  á   ħɄ ؂ HZګ낾)uء-ŧ낾u˄낾)˄ ttá"ƁƂ<   š"á  á  á :ƁK TM-#0 -  markedN%w(j5%Crunch Pdd:M4~  2L,$dd"!h#d%((&*(*, -/:.f00123-4D3475j8h999:@>t?":@@NAn7ҦEJFiler: cSyS 0SSōSŧS Ʉ CS4ń? -M M ȡ-M -M ńMoving  SYSTEM.PASCAL??- SSȡ+SAĥSZȄSSAaSS?S Sȡ#tS? CS SS4F7M ܕۧUšUš܂܂ۂ ȡi02"ˡERead error, rel  , abs SyS 0SScȫ77 C Sd?- 00á-M C0 - New da 6܂܂ۂ ȡi02"ˡEWrite error, rel ݕ , abs te is C -tC-C  F3%Examine blocks on P 6ۂáݚނ0 -? : crunchedߡ Please re-bootddBlock number-range ?   1  ɡۀɡ ܫS:U `}s`6'5),, á%$&,Qá:075ҦEJFiler: Sܧ-M ɡ)Risk the directory ?  YˡT-M ̂Tʂȡ-TM ̂ʂʂĄbؓ%File(sGet, Save, List, Change, Transfer, Remove, Fast, New, Date, ?, QuitP7,?áQEHFiler: Bad-blks, Ext-dir, Krunch, Make, Prefix) endangered:ʂ ʂʂ ʂ TTء&Try to fix them ?  Yˡ, Vols, Xamine, Zero, WhatP7,x55EP,i+++ !|5$!5 55ܫT̂TʂȡBlock T 0ƁTƁ0ƁT"á 0T"Ɓ  may be ok$!^*ZV)R0N1J2F5B6>3:BZ2Xqmi":sH rlr(HR@0Hr|" * is badTɡTTšTTTɡá5Block   is still badLB4~  2L,$dd"!h#d%((&*(*, -/:.f00123-4D3475j8h999:@>t?":@@NAn7ҦEJFiler: locks   thru   are still bad Mark themء (may remove files!) ? Get, Save, List, Change, Transfer, Remove, Fast, New, Date, ?, QuitP7,?áQEHFiler: Bad-blks, Ext-dir, Krunch, Make, Prefix YˡءATT-M ȡ/-TM ̂ʂʂĄ TM-"TT-M Má d, Vols, Xamine, Zero, WhatP7,x55EP,i+++ !|5$!5 55C BAD.xxxxx.BADŜSʂġ. SܲnS0ܲnSSS-M T٧-TM ɡTT՚~لt>@VbX0hb8v6\T*0Hr|" L Get, Save, List, Change, Transfer, Remove, Fast, New, Date, ?, QuitP7,?áQEHFiler: Bad-blks, Ext-dir, Krunch, Make, Prefix, Vols, Xamine, Zero, WhatP7,x55EP,i+++ !|5$!5 55