LnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!)O^Ȭ29FINDER.DATA3p3*SOS.KERNEL `,Vþ0!aj#Ÿ/ DISKNAME.DATyٸFLASHNAME.DATzGw *MENU.MAKER | |!-READ.ME.FIRST]5O:*SOS.INTERP 4ke%! FINDER.ROOT 3p3III.BLM.15UFFu3' -BLOCREAD.TEXT8ٸ %*SOS.DRIVER %4"Z,BLOCREAD.DOCCp.ٸٸ*HELLO.TEXTrO)HELLO t/ %SEG.T @ >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@L  !"#f} *until success; *write (chr (30)); *unitclear (1); *YN_23 := wk_char; end; {YN_23} function filesize (var pathname: string): integer; var *reqtype: integer; *pages: integer; *sysbuf: packed array [0..1023] of 0..255; *r_char:= chr (ord (wk_char) - 32); 0success := true; 0end -else begin 0unitclear (1); 0gotoxy (0, 23); 0write (chr(30), chr (7), 'Please answer "Y" or "N."'); 0gotoxy (66, 23); 0write ('PRESS ANY KEY'); 0read (keyboard, wk_char); 0end; -{endi-success := false; -gotoxy (0, 23); -if length (s) > 66 then s := copy (s, 1, 66); -write (chr(30), s); -gotoxy (66, 23); -write ('(Y | N) --> '); -read (keyboard, wk_char); -if wk_char in ['Y','y','N','n'] then begin 0if wk_char > 'Y' then wk.'); *read (keyboard, wk_char); *unitclear (1); *write (chr (30)); end; {ERR_23} function YN_23 (s:string): char; {Prompt for Y/N at screen bottom. AMB 01/85} var wk_char: char; *success: boolean; begin *repeat -unitclear (1); boolean; 0 procedure ERR_23 (s:string); {Error msg and toot at screen bottom. AB 01/85} var wk_char: char; begin *unitclear (1); *gotoxy (0,23); *if length (s) > 65 then s := copy (s, 1, 65); *write (chr(30), chr(7), s, ' Press any key cpycount: integer; yyyymmdd: string; wk_str: string; *wk_integer: integer; *wk_curpos: integer; *outused: boolean; cpyused: boolean; *apple_2: boolean; *a2_char: variant; *OK: msg: array [1..24] of str14; inpath: string; outpath: string; outfile: text; *margin: integer; outcount: integer; cpypath: string; cpyfile: file; integer; answer: string; ans_ch: char; string1: packed array [1..8, 1..64] of char; xlate_1: packed array [1..8, 1..64] of char; xlate_2: packed array [1..8, 1..64] of char; blksize: integer; bufsub: integer; i: integer; ibegin: integer; icount: integer; *inchar: char; outhex: string; j: integer; l: str14 = string [14]; var master: file; mf_rec: packed record 7mf_char: packed array [1..512] of char; 7end; recread: integer; recnum: integer; blknum: integer; program blocread; {Read and display/print/copy a block AMB 07/22/85} 4{Maintenance 03/02/86 AMB - Handle a 0-block file } 4{Maintenance 08/12/86 AMB - Fix volname problem } uses *applestuff, plutil, sosio, genutil, chainstuff;  type efnum: integer; *retcode: integer; *blknum: integer; *ok: boolean; *wk_path: string; begin *filesize := 0; *reqtype := 1; *pages := 0; *wk_path := ''; *if pathname [1] in ['.', '/'] then begin -end *else begin -get_prefix (wk_path); -end; *wk_path := concat (wk_path, pathname); *ok := sos_open (wk_path, reqtype, pages, sysbuf, refnum, retcode); *if ok then begin -ok := sos_get_b_eof (refnum, blknum, retcode); -if ok then begin 0filesize := b- - '; *if outpath > '' -then msg [18] := 'P: Print Blok' -else msg [18] := 'P: DISABLED '; *{endif} *if cpypath > '' then msg [19] := 'C: Copy Block' else msg [19] := 'C: DISABLED '; {endif} msg [20tpath; *{endif} *msg [13] := 'Copy dest:'; *if length (cpypath) > 14 -then msg [14] := copy (cpypath, 1, 14) -else msg [14] := cpypath; *{endif} *msg [15] := '--------------'; msg [16] := ' OPTIONS '; msg [17] := '- - - - - 6copy (today, 3, 2), '/', 6copy (today, 5, 2)); msg [ 6] := '--------------'; msg [10] := '--------------'; msg [11] := 'Print dest:'; *if length (outpath) > 14 -then msg [12] := copy (outpath, 1, 14) -else msg [12] := ouwk_str, ' 512K Blks'); *if length (wk_str) > 14 -then msg [ 3] := copy (wk_str, 1, 14) -else msg [ 3] := wk_str; *{endif} msg [ 4] := '--------------'; msg [ 5] := concat ('Date: ', 6copy (today, 1, 2), '/', _str); if i > 0 then delete (wk_str, 1, i) else wk_str := copy (wk_str, 1, 14); {endif} end; msg [ 2] := wk_str; str (blksize, wk_str); wk_str := concat (3else margin := wk_integer; 0{endif} 0end; -{endif} -end; *{endif} *for i := 1 to 24 do msg [i] := ' '; msg [ 1] := '--------------'; wk_str := inpath; while length (wk_str) > 14 do begin i := pos ('/', wk0else margin := 0; -{endif} -write ('Enter left hand print file margin (Default = ', 0margin, ') ---> '); -readln (wk_str); -if length (wk_str) > 0 then begin 0wk_integer := evalint (wk_str, wk_curpos); 0if wk_integer < 0 3then margin := 0 put file. Program terminates.'); -exit (program); -end; *{endif} *close (master); *blksize := filesize (inpath); *reset (master, inpath); *unitclear (1); *gotoxy (0, 16); *if outpath > '' then begin -if outpath = '.PRINTER' 0then margin := 5 ount := 0; outcount := 0; *inpath := ''; *gotoxy (0, 12); *open (master, 'input file', 'RESET', inpath); *if inpath = '' then begin -if outpath > '' then close (outfile, purge); -if cpypath > '' then close (cpyfile, purge); -err_23 ('No in); gotoxy (0, 4); outpath := '.printer'; open (outfile, 'print file', 'REWRITE', outpath); gotoxy (0, 8); cpypath := '.d2/CPYFILE'; open (cpyfile, 'copy file', 'REWRITE', cpypath); cpyc recread := blockread (master, mf_rec, 1, recnum); end; procedure init; begin date (yyyymmdd); *today := concat (copy (yyyymmdd, 5, 4), copy (yyyymmdd, 3, 2)); *stdscreen *('BLOCREAD: Read & Display/Print/Copy File Blocks (v.08/86)'d;  procedure newscrn; begin gotoxy (0, 0); write (chr (28)); end; procedure get_block; var i: integer; begin if blknum < 0 then blknum := 1; *recnum := blknum - 1; tr := concat ('SOS Close failed, return code ', 3wk_str); 0respond (error, wk_str); 0end; -{endif} -end *else begin -str (retcode, wk_str); -wk_str := concat ('SOS Open failed, return code ', wk_str); -respond (error, wk_str); -end; *{endif} enlknum; 0end -else begin 0str (retcode, wk_str); 0wk_str := concat ('SOS Get-B-EOF failed, return code ', 3wk_str); 0respond (error, wk_str); 0end; -{endif} -ok := sos_close (refnum, retcode); -if not ok then begin 0str (retcode, wk_str); 0wk_s] := 'Q: Quit '; msg [21] := 'CR: Next Block'; msg [22] := 'nn: Block Num '; msg [23] := 'Select Option:'; msg [24] := '--> '; *apple_2 := false; *ans_ch := yn_23 ('Translate Apple II text format?'); *if ans_ch = 'Y' then apple_2 := true; *if outpath = '.PRINTER' then begin -newscrn; -gotoxy(16, 12); -write ('Set Printer to 10 cpi. Press RETURN when ready.'); -read (keyboard, ans_ch); -new else begin err_23 ('No PRINT file.'); gotoxy (0, 23);  '' then begin if outused then begin err_23 ('Block already printed.'); ?gotoxy (0, 23); ?write (xlate end else begin upperstr (answer); answer := copy (answer, 1, 1); if answer = 'Q' then begin end ompt (69, 23, 10, '', answer, []); blank1 (answer); 3if length (answer) > 0 6then i := intstr (answer) 6else i := blknum + 1; 3{endif} 3if i > 0 then begin blknum := i; answer := 'N'; ]); j := 3 * i; 4gotoxy (0, j-1); write (xlate_2 [i], '|', msg [j]); 0end; {for i} outused := false; cpyused := false; repeat unitclear (1); 3pr j := 3 * i - 2; gotoxy (0, j-1); write (string1 [i], '|', msg [j]); j := 3 * i - 1; gotoxy (0, j-1); write (xlate_1 [i], '|', msg [j wk_str := concat ('Block No ', wk_str); 0if length (wk_str) > 14 0 then msg [ 8] := copy (wk_str, 1, 14) 3else msg [ 8] := wk_str; 0{endif} decode_block; 0newscrn; for i := 1 to 8 do begin; {endif} end; begin init; blknum := 1; answer := 'y'; repeat -newscrn; -gotoxy(30, 12); -write ('Getting Block No ', blknum); -get_block; if recread > 0 then begin 0str (blknum, wk_str); j < 11 then write (outfile,msg [j]); .writeln (outfile); *end; {for i} *outcount := outcount + 1; *if (outcount mod 2) = 0 -then page (outfile) *else begin -writeln (outfile); -writeln (outfile); -writeln (outfile); -writeln (outfile); -end; *.if j < 11 then write (outfile,msg [j]); .writeln (outfile); .j := 3 * i - 1; .write (outfile,'':margin, 1xlate_1[i],'|'); .if j < 11 then write (outfile,msg [j]); .writeln (outfile); .j := 3 * i; .write (outfile,'':margin, 1xlate_2[i],'|'); .if with the unprintables} 2if (ord (inchar) < 32) 2or (ord (inchar) > 126) then string1 [i,l] := ' '; .end; *end; {for i} end; procedure write_outfile; begin *for i := 1 to 8 do begin; .j := 3 * i - 2; .write (outfile,'':margin, 1string1[i],'|'); r.word := inchar; 5if a2_char.bit [ 7] = true then begin 8a2_char.bit [ 7] := false; 8inchar := a2_char.word; 8end; 5{endif} 5end; 2{endif} 2nibblex (inchar, outhex); 2xlate_1 [i, l] := outhex [1]; 2xlate_2 [i, l] := outhex [2]; 2{don't even tryscrn; -end; *{endif} end; procedure decode_block; begin *for i := 1 to 8 do begin .ibegin := i * 64 - 63; .moveleft (mf_rec.mf_char [ibegin], string1 [i,1], 64); .for l := 1 to 64 do begin 2inchar := string1 [i, l]; 2if apple_2 then begin 5a2_chanswer = 'C' then begin if cpypath > '' then begin if cpyused then begin err_23 ('Block already copied.'); ?gotoxy (0, 23); ?write (xlate_2 [8], '|', msg [24]); ?end else begin cpyused := true; i := blockwrite (cpyfile, mf_rec, 1); cpycount := cpycount + i; end; >88  >!SHOLES 1!1!2@23#3#4$4$5%5%6^67&7&8*8*9(9(0)0)-_-=+=+\|QWERTYUI OP[{]}`~`~ASDFGHJ K L ;:;:'"'"ZXCVBNM ,<,<.>.>/?/?d0hp00000>0# #0~$ <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>>>> ""*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>>xr$&'()*+,-./0123456789:;<=>GA7  3  5  >>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< SOS DRVR"CUSTOM.3 )((8*,;((*,((+)((9/(p((>3  =9 :9 .(~|L|LNqooGoDDDcc0ccpc]]c"QM"|@@pAATT**|h); 0end; -{endif} -end; {endif} *newscrn; end. {blocread} hen; {Iocheck+} end else close (outfile, lock); {endif} -if outpath = '.PRINTER' then begin 0gotoxy(15, 12); 0write ('Reset Printer to 12 cpi. Press RETURN when ready.'); 0read (keyboard, ans_c {endif} if outpath > '' then begin if (outcount mod 2) <> 0 then page (outfile); if outcount = 0 then begin {$Iocheck-} close (outfile, purge); if (ioresult <> 0) t until (answer = 'Q'); *newscrn; *close (master); if cpypath > '' then begin if cpycount = 0 then close (cpyfile, purge) else close (cpyfile, lock); {endif} end; until ((answer = 'Q') or (answer = 'N')); end else begin err_23 ('End of File.'); blknum := blksize; 0if blknum < 1 then answer := 'Q'; {03/02/86} 0end; {endif} end else begin 9err_23 ('Invalid response.'); 9gotoxy (0, 23); 9write (xlate_2 [8], '|', msg [24]); 9answer := 'Y'; 9end; {endif} end; {endif} {endif} end else begin err_23 ('No COPY File.'); <=m@=>@?AL8 >m<>@m=@<=L8 <m>?=m@AL8 C9L8 ; ;k`;);k`,@`<,m p<L<`<p<`,ms<L=q=L: ,lXґȥӑ,10 h0  `,g0L  ҅ӥĥŰ+,0p 4 Ls  Ls i )"|tȌs|st HH` MjH,: <J h̰ <rh,oL`%CYgu9 Ln90$0%,7 ҥ L$0T,8OK50P;ҥ,8 L%\   8҅¥Ӆé҅L,5,6  & @jIH,5 p  He҅Ґhe…å逅h,23Lhʩd8,h)ec efeede`,5 H  h 4  `5!    4(P 4 4  `,g0L,10kH0 ԥ f0)ĭ9)9҅xh(ĥŐL i,1HȊ©L,52,9-P" a{) b) )ab)a a,h0& &+%a0 +hcefd(c,@cfabdf`cnx  (,4h`dd,9P"<:J H) +̰ H) +ʭcP h̰BTVSPLH   5"ʘ HH` (# (=  0`)aI>8?>p<<AAA@@8A@q==C)CB)B Crx 0, )ߍ:) J)*PR,T,V( : `,k<,: JI`I`<,:J̰`=m@>,:J}ʅ̽(I I `<Mj,:0pJՐ̑ʈ`pJհ0`ՑʭrpȐ`=m@< B h A`LL) @L) L8``Lթ`~L8L)  =H 'HH N M))Mhh0 }LO}~~Șݻ~`}}~L< L }ީ~` ɠɀ)ӮԮmwӥmxԐ mi` HHGH`  &xix 0ޤՐڢ,P<0 )ߍL- J,P,QJ,R,SJ,T,U,W`,t0L40 ( dȅɥŐ ĐL `ʝ`))ժuvЭ H ʊJyjhz|ֆ׆ح)JfJf$PIJfש ʈ8 @ש wx LVخ ʊJJJ莟mww HH`! (`ɖ" (èÈ``,t0L4 HH`L  d!  `ɖ" ( dÈ  ``,t0L4 d0Cս30. , V  @„ȄL5/((((PPPP @``` @@@@`xp<@ @ :H9H` (# ( -l..PcJt`,t$ ( t`tL4`,t0L4www """"""""33333333DDDDDDDDUUUUUUUUffffffffwwwwwwww(C) 1980 Apple Computer (+@EIR[ty} NQ9Copyright (C) 1983 Apple Computer, Inc. Graphics Driver..GRAFIX b """"""""33333333DDDDDDDDUUUUUUUUffffffffwwwww     ! ( 0 7 I N S _  . G R Y f {    ! $ 4 9 F I P S V \ a h m p s x |     ' + < ? D G N U f k p x ?BEJMRUX]`h  2;AGMS[fot|              . 3 6 9 < ? B E H N S V \ _ b w  KORY\aelpu !$(+.147<?BFILORUX]`finsw| !%*/369<+;CNU\eh "*-036<BLORX_fj &+38;?DGLTot <?BGLQgjox',/25:BG̑ʈ0 Ցʭr̈A萠L: ֦ڱΑ0Б֤ h L  p,:0 JfiΥiώJe΅Хiю@ B $p̑бʑΈ0 Б̱ΑʈeمΐeمАA萿 :  `ʝ"`t  !#%')L: 8p,:Jf׮@$PA B $P@/A'ʤ˅΄ϥ̤ͅЄ B $̑бʑΈ0Ƞ h L: $)טɀIim>ٮ@8pذ `$0"8,:Jک@ׅפ؈۩MjL,:08*Ȅ B ,:J}΅н(I I $0;P̑бʑΈ,:JՐϭPh0 йPL)`)L` L``  `L` H , 8 V ТΕLϦI ] +)J* g I V 8fxL@ ] I)!) g 80 J8}L y L 0yʽz0 y L7  Lh `*f*&*)`  MENU.MAKER TEXT MODULESEG=0"MENU.MAKER"890&*X=11000: TEXT SLOW-DOWN LOOP ,X.1,180,22:2,280,21:2,2380,23:z:A$="LISTING "+B$(I),16,B)$=01:=0::"80C";A$;::12)>=23:=0::"    ) . 6 = J P S X [    $ 3 : = F d  > B H M s `e|&+.QVYcjuy~':{%(-47=FMUX\_jmz  .169DWfy   % * > A H K Z v z }      % , 1 5 : = B K R Z _ b g n s x ~ /47=G\x{~'+.149?CGIKMOQSUWY[]_acegikmoqsuwy{}J) ܭL FܪJJJJ)`'+9;=?ACEGINR\aejns~  #&).369<ADGJMP^g $*-06=HLORWcfloruzp Q%Q̑`pPIE1pΦ#$01ʐ1`JJJJ)`%υߥ`1(ȦJJJ`&&*`JJ` **&*&ߥ`J` ***`` ` Jjjߊ` ߊ`JfJfFߪ߆` `JfJfJfF`ߩ`$011̰JJJ LP \LD$7߭$PH8 nߩ nh ߍϭ - k, ϥ- kϱϮEϑʩ`P z  HH` k(h`$0#$E$0p Q%Qʑ`pPIE1p$E$0(L%τ`ϩE҅0Ȅ(fL% ('Άѽн`8Hٰ hIiHمh8Iif٤Φݰ>Jj8ۅe݅eޅ $  m`!J8݅ eۅ$  m` , V $צ!ϤҐ мφi`Jf`<,&ʰ,i8i#Hiihifʦʆi) v`i,ʐi,iPIIʥ)ifʦʆ̐pLj/Fϐ&Ȅ`'@τ`Fϐ@ E҅F8ئȢΆѽϽ`/epɀjff&ݥeepɀjffݠ %)  %)`%  0.)      0  ` ` @ ``8٨JJJ ) u˘ vͽʅ̆`8Hi #i,$0F y բӅLx  mӥmԐL] h `  )`%)8`)    H   ʥ)Ģ    H Ģ L E% %) L 8`ۅ&ۥe륅eٍeڍ808٥8٥ 8مڅ H , V Εm٭mڭ))njnjnjfjfjfj+mӥmԐ8L( Ӣ й` m j`Hآ Hӭԭ h h`8٭028ٍڍ0Z$eٍeڍm٥m8٥08ٍڍ`8٥058ٍڍ0ԭ79C";"PRESS ANY KEY TO HALT LISTING"::202 1020#2,B$(I),16,B)ž#242:::1160Z=1#2;A$:"78A";A$Z=Z+1:Z>1842:::Z=1980*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"10?A[00000000|.PRINTER D M0934 0 77/09/30 Fawley, Susan 5634 R|Copy dest: 0000000040000000433330003033233233001000467667225776601000333325|.D2/CPYFILE 000010104000A0C0D09340E00077F09F30402063617C59C03531E08095563402|------------ idgewo9031C129A000000000000000000000000000000000| |------------ 0000000000000000000000000000000000000000000000000000000000000000|Print dest: 00000000000000000000000000000000000000000000000000000000te:7/23/83 A0073949A0C01734145A40A0D7A90A40A00B4504A0009B08FE50584A40000D10|------------ Job Title: Monthly Salary: | 4662567663001001466766725666773000000000000000000000000000000000|Block No 17 AF20494C5A404001DFE48C0046663000004667677300|.D2/STAFF C400108D000000005D0CF95503A0C09089254A40A003E1D5A0E0051442533A40|32 512K Blks City: ! State: = Zip: Dept: ) Phone Ext: A |------------ 0000467730002057676300003056730000004677301020566662477300100040|Da====================================================================== = Employee #: ) Hired: Name: Address: |------------ 010000130000100046766766223000204676630000blocks, in both character and hexadecimal format. You may look at any block in a file and choose to either print it or copy it to another disk file. BLOCREAD is invaluable for seeing what a file really looks like. A BLOCREAD display looks like this: ======BBBBBBBBBB 2303 San Marcos St, Blacksburg, VA 24060 BLOCREAD is a utility program that lets you look into the guts of a disk file. It shows you a file's 512-byte data BDEFGHIJKLMNOPQRSTUVWXYZ BBB BBB AAA AAA BBBBBBBBBBBB For the Apple /// AAAAAAAAAAAAAAA BBB BBB AAA AAA BBB BBB Allan M. Bloom, PhD CDP AAAAA AAAAA BBB AAAAAAAAA BBBBBBBBBBBBB BLOCREAD AAA AAA BBB BBB A Disk File Display/Print/Copy Utility AAA AAA ".D1/MENU.MAKER",220 d$="" A$="PRINTING "+B$(I),16,B)=01:=0::"80C";A$;:#3,B$(I),16,B)Z=1#3;b$:"78A";b$Z=Z+1:Z=18:1290 1260 #4,B$(I),16,B)#5,".PRINTER"+ž#4#5;12):::".D1/MENU.MAKE30C$="N"C$="n"1160;:=23:=0::"79C";"PRESS ANY KEY TO HALT LISTING": $1020.202 8::Z=1B::=23:=0::"79C";"WOULD YOU LIKE A PRINTED COPY?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"1170*C$="N"C$="n"od Way Woodville ( CA B 93137 ManufacturinC | OPTIONS 6666766625670000005666766660002044000040333330100046676667776640|------------ 94757FF4071940E0677FF469CC5080873140A027931370206BD1E56134529E30|P:Print Blok g 4 195 Engineering Associate $2100 |C:Copy Block 6000303330100046666667666247766667600011233330000000000000000000|Q: Quit 70804B1950A0BD5E79E5529E70133F391450A001421000000000000000000000|CR:NextBlock o move on to display another block of the file. Pressing RETURN yields the next block (Number 18 in the example). You may jump to any other block in the file by typing its number and pressing RETURN. You quit the program by typing "q" and pressing return. the displayed file block. You may press "P" (followed by RETURN) to print the block as displayed. You may enter "C" to copy the block to the defined "copy" file. You may print or copy a block once each while that block is displayed. You may als the printer or the screen yields garbage. Neither is designed to handle a 512 byte stream of hexadecimal. The OPTIONS section lets you know what you can do with the currently displayed block. You may choose among several options with respect toand where your "copy" output will go (.D2/CPYFILE). Printing the block yields the same character and hexadecimal format as on the display screen. Copying the block yields a 512 byte data block. You may direct either output to any valid pathname. Copying tohe file you are looking at (.D2/STAFF) and its length (32 blocks). This is followed by the current date (July 23, 1985) and the block you are currently viewing (Number 17). The next section shows you where your "print" output will go (.PRINTER) r decimal 5132. Apple stores its integers "backwards" compared with, say, IBM. The right hand part of the screen gives you general information about the file and asks what you would like to do with the displayed block. The top tells you the name of tAn integer takes up a full word, two bytes, so what you see is this: Position: 1 2 High Nibble: [0] [1] Low Nibble: [C] [4] This is the hexadecimal number "140C" odecimal notation (decimal 61). The ASCII code 61 (decimal) corresponds to the "equal symbol." An integer in the data block display appears a bit strange. For example, look at positions one and two of the first "line group" in the above example. ook at the eighth position of the first "line group" of the above example. The first line entry is "=" (the "equal symbol"), the second line entry is "3," and the third line entry is "D." The eighth byte of the block is composed of the nibbles "3D" in hexaion in the second line is the hexadecimal representation ("0" through "F") of the "high nibble" of the nth byte. The corresponding position in the third line is the hexadecimal representation of the "low nibble" of the nth byte. As an example, l A line group consists of a "character" line and two "hexadecimal" lines. Each position in each line refers to the "nth" byte in the block. The first line is the printable character representation -- if any -- of the "nth" byte. The corresponding posit three screen lines, so a block display consumes all 24 lines of an Apple /// screen. BLOCREAD July 23, 1985 Page 1 Bloom Block Read Utility =============================================== The screen is in two parts. On the left is the display of the data block. The block is broken up into "line groups" of 64 bytes each. A 512-byte block needs 8 line groups. Each line group takes up |nn: BlockNum 0000000000000000000000000000000000000000000000000000000000000000|SelectOption: 0000000000000000000000000000000000000000000000000000000000000000|--> [] ============================== You tell BLOCREAD all the information it needs on the program's introductory screen. That screen is displayed and explained on the following page. BLOCREAD July 23, 1985 Page 2 Bloom Block Read Utility | | A: |BLOCREam needs, the screen will blank and -- if you opted to have a "print" file -- invite you to set your printer to 10 cpi. You may ignore the invitation by pressing RETURN, but it is often convenient to print "file dumps" at 10 characters per inch. e, for example), each byte must have its "high bit" zeroed to be intelligible. Select "Y" if needed. This affects only the display. The data block still has the high bit "on." After you have selected the basic information that the progrmessage like "C." E: Enter the name of the block file to read. If you make a mistake, you will get a message like "C" and a second chance. F: If you entered a "print" file, you may select a margin. G: If the file is in Apple II text format (a PFS fil985 Page 3 Bloom Block Read Utility file. Press RETURN to accept the default or edit as in "B." To disable the "copy" option enter a blank. If an error, you'll get a another chance, or enter "ABORT" to terminate. If you enter "QUIT," it is the same as entering a blank -- for no file -- pathname. D: To copy selected blocks from the file, enter the pathname of the "copy" BLOCREAD July 23, 1 Openapple ->: Delete right If you don't want to enable the "print" option, enter a blank and press RETURN. You may "print" to any valid pathname, including a disk file. C: Appears only if the program could not find the file. Press RETURN for f your printer is named .PRINTER. Else edit the response as follows: ESC: Default reappears RET: Accept bracket contents L/R Arrows: Move cursor Openapple I: Toggle insert mode Openapple <-: Delete left | A: The title identifies this program as BLOCREAD, gives the program's revision date (July 1985), and shows the current date (July 23, 1985). B: Press RETURN to accept the default i | | |-----------------------------------------------------------------------| G: |Translate Apple II text format? (Y | N) --> [] | | | E: |Enter pathname of input file [ ] | | | F: |Enter left hand print file margin (Default = nn) ---> [] | || | | D: |Enter pathname of copy file [.D2/CPYFILE ] | | || || or "QUIT" for no file || || or "ABORT" to terminate program || || [.PRINTER ] | | | C: || ERROR: Error Message || || Enter RETURN to retry AD: Read & Display/Print/Copy File Blocks (v.07/85).......23-Jul-85| |-------------------------------------------------------------------------| | | B: |Enter pathname of print file BLOCREAD then announces that it is "Getting Block No 1." This takes a few seconds, a smidgen longer if you requested translation of Apple II (high bit on) text. You will then see the first block of the file. It will look like the example screen. INSTALLATION BLOCREAD comes as an executable code file on the accompanying diskette. DO NOT BOOT THE FOOL THING RIGHT OFF. You will be disappointed. The .PRINTER driver is non-standard. You must replace the SOS.DRISOS KRNLb.D1/SOS.INTERPŠ̠Š.D1/SOS.DRIVERР頞 0 ) (lH'&3&'&#e'#%e'%'&"$"$#%'#%h`$eor copy it to another disk file. BLOCREAD is invaluable for seeing what a file really looks like. Side One: Documentation and Source Code Side Two: BLOCREAD Program e Code Side Two: BLOCREAD Program \^: YES - Both Sides BLOCREAD is a utility program that lets you look into the guts of a disk file. It shows you a file's 512-byte data blocks, in both character and hexadecimal format. You may look at any block in a file and choose to either print it WAP /// SIG PUBLIC DOMAIN LIBRARY 12022 Parklawn Drive Rockville, MD. 20852 (301)-984-0300 PDS NAME: BLOCREAD by Bloom DISK ID#: 3BLM-15 BOOTABLE?EAD PASCAL TEXT FILES."04=10:"78C";"ANY KEY RETURNS TO THE MENU."!>G$:::".D1/MENU.MAKER",320R",220(204::"79A";""; 2D=1:F=1 <#4;a$ FD=D+1 P#5;a$ZD=60#5;12)dD=60D=1nF=F+1::d$;::Y=1100:Y x13402  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T R BLOCREAD July 23, 1985 Page 4 Page 4 or example) as a simple Pascal program. First copy the SYSTEM.STARTUP file from the distribution disk to a handy sub-directory and rename it BLOCREAD.CODE. Copy the disk's SYSTEM.LIBRARY file to the same sub-directory as BLOCREAD.LIB. oot disks over the existing SOS.DRIVER file on the BLOCREAD boot disk. (NOTE: We've switched out Dr. Bloom's driver with our own here but install your own SOS.DRIVER file if need be.) BLOCREAD can be installed on the ProFile (under "Catalyst" fVER file with one of your own. If you are comfortable with the "System Configuration Program," use it to replace the .PRINTER driver with your own driver. The easiest method is to simply use "System Utilities" to copy the file SOS.DRIVER from one of your b%e,ȥ,*,- y,,,-,,,ȱ,,- yL+,ȑ,` 2"p-,-L(Ġ %>,i-i8, ȱ,%,W,pp ڠ %p`l  " ) i _abcdefghijklmnopuvwx0 `8`HiHiH ihhȱh`86)IH)heuQɸ` ` W` ] %饚0` W` ߰4`)|E8LLLRLLLLL*LLLLLhh`LLL`SOS 1.3 01-NOV-82(C) 1980, 1982 BY APPLE COMPUTER INC. ) `G`î** }*`o^`on 8 JJAj@` *?($`ΠņɠŠ堠РѠ͠஠әƆH v?c,,,,h߈ߢ~))`3PLLP*%(i&`Ѕ񩏍E H pph`XǠĠӠ!((ͽϠРРSOS NTRPSOS DRVR(.D1(YYYYMMDDWHHMMSSMMM̱忠ΠͽŠ堠Р͠Ю̠Ɔx߭J ʈc(()o/ e/''ʈ((''()(1i / e/''ʈ((''((''((''' ('`ŠDAY, DD-MON-YY HH:MMSUNMONTUEWEDTHUFRISATJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECԠŠР@L&I/O ERRORINTERPRETER FILE NOT FOUNDINVALID INTERPRETER FILEINCOMPATIBLE INTERPRETERDRIVER FILE NOT FOUNDINVALID DRIVER FILEDRIVER FILE TOO LARGEROM ERROR: PLEASE NOTIFY YOUR DEALERTOO MANY DEVICESTOO MANY BLOCK DEVICESEMPTY DRIVER FILE '(i%%%h}%%`8 ȥ!8 !)"qȥ#q#e$ȱe%L)%`@(((( % %`((((࠰$(ɠH(@(h((((@(`%z %% %~(A{(L%`.8(.Je.&ʈ.s(1 6$P8"ȥ#L1$8"ȥ#(ϸ`"##L]$"qȥ#q0,$p)@"q"ȩq"8`*$% $% 8% $L$* $8%8 $`8 &'$% 8&$'% 8$%%`H   q ȥ q Hi hi 1  % H H ȱ h h % $$ 0 e e H i hi âz %` 1 8`    # &ȱ ' # i" i# # #`8 ȥ H h `8 6$P`8"#%#%"$w"$#%"`荚ٍ荺 荚`荺``` D ( )  * ) 4* * h* ))` L% q ȥ q Hi hi  i" i# #% $ȱ %ȱ &ȱ '`<!((g %(r(z(q( %y(i(0z %"#$ %&' $"#$%&'   `%$%ɠ%* " ~#C #p $ %*0"#)#)i $"% * %*  L! {" j% %ƌ(X#"$% "$ #%%& '   ` {" & ɠ% %)  !( (" %(r(z(q( %y(a(0: %   "$%&e$'e% R % <`` LLɠ8`ΛLL渠`ǽi `< Ȱ+<#5 ې'` ɐ /ݐE`W8`R` 5&i ` Ȱ 0i `<8> ȐT eİF cȰB)Hh5 ˭)*ȑƑȥǑ'(ȑ`L)ɭ)Ѷ*e`M) `ۅH)Ѱ%}ʈh Qܐ'``hi ` p6۽ʹZ5 HȐ/i i `гW8`0( ɐ Ȱ ʮ6E`5 խ ɐ ޢ ȰLȍ۱Ǎ X̰% & !J8` *LĢ `8 iۥƍۥǍ`ۅ %  6 )Ѱ Ѱ` 𝭧e ǐ bǰL*ۈ5ȱ۠ƍȱǍ X̐ H h1  /ݐE`ۈۅ ۅ 8ƭ X̐`LLŠǠ  ݭv̅w̅ ðzv̍ŭw̍ŭƭ ­ōō T̰]ŅƮņ X̠8iȱiiȱi ṰŅǭŅ XLōۭ۩ۅ ȱ8D`F`8eYƍťǍŠ)͠ Wٍۭۅ5ۅƭۅ X̰ ìۈۑ T̰ۅƭۅ X̰ۙ%ۍ" T`K8`)` İ ۱ۈ` ưW/ۈęۈЍ۩@` 8 MƐ  5 Q8`LŅ ۅ ۩ۍۅ Lɰ ʰۅۄÍÍۙ'Ù ۍ*ۨ  Ѝ۹ۙ8v- ðJ ¥ ð, ðLO ʰƥLT`'  mې浰``8 8 nʰ0 ̰+泱Ƴ m° x̰ ̐8` m° x̰8 ۢ8 ˰y ` ¥ nʰ泱Ƴ T̰#泪 Ѳ *Ƴ ` L:Ϡ`泑Ƴ` LaĥH8`JȘ I8`  S`ۈۥۥ۩Íۭۍۭۍ հL¢H8`Jj Ȅ ۍۆeۅiۅ Lɰ ʰWۅۄ ¦J> ɩE` eĐL Ȑ 15WL QL5WW{5 ې'`,55 ې'` ݠ B1 ȩȑ Lɦ8`5  @ R㥶i ` İG8`F`X8``éۅĩ >` T֩xxMH]@ Kۅ5H ɐE$ eİ Ȱ h`h`8`W h8`hR`hLҿ i x +ۅ5ۅ6 ǰ `E8<W`­ `0XLۅ5` ռ``ߤeI`IiţO`Ȯʆ/ )󘑡`()0zq 滅ѺY Ueۅ5Ѻ Ѻ  Qܐ'`i ҩ *C8/y.i/ ȑ  © $ E7<3W`ȽLֽȄ @8`R ) [)_[AͰ")[)_[A:0/.ЩȑΘ8e * ȩ`Loü 7)?۽۩ W٠Յ<ōōř ռV7 uM78 V榠=ü#)@5 ɐ /ݐE ) .) @L `lqhٯ޿=ϓTXIֲ̛̐~ؠIJK,-NOPQ0vt Ѷ"` ɰ Ȑ`E`Ɔ X̐8`>>5Ѷ Qܩ<`>`\ʊJJJJ ۍ۩  ˰Fȱ X̰6 0 Lɠ 0ۑۑ8ȱ`H8` ɹ $  8JJJJ8 ` ۪` H hQ)fʅ F jF jF jF &!  eװ*  ̰F湥 ƹ`Z8`@  ʰ泭ۑƳ ʐ` ʐ` ˰ ƹ Wː`ۘ . . .۪8*JۦȱN8`) ))УJ8` ۑȭۑǠۑۑȭۑ($S8`O8` "` / 򑺠+* ͐H h8` ΰi `()  *ǵ յý5Ņ4gȩυɩč5 iψ }.8` iϙLIѠ ˢ L΢ ΰ LϠ ˢ ΰ1` Đ@ АP8`B8`ۑJJJJ -ѥ +jѲ84ƳJJ 2ΐ3泑ƳLTΩ潑ƽ`ƱƳ ΰ( {Π۵*+)e`8`)` J J + ΰ" 0 ΰ 🱼ѼL8`ǩ Ϡ` ϰ ƑȥǑ` Ѻе*`)ȥ+8ۍې  ,ѺLTΠ"LΠ5 խ ɐ /ݐE`C8`)@ ϰa)ۥ,8ېu+J,\ ȱLJΠ) ϰ'#,J(] { ΰ ƑȥǑ.8` { ΰ,JѲ ƳL΅ƱƳ ΰҥ,J0`#$"0#`!qȱi 5H5Ƶ ǽ jh5`L2̩ƍv̥Ǎw̩ÎL%ϠƄǥLj̩۬L~̠HHh` ̐`*ѺG0?M`)J"u-- M8`HER SUBROUTINEnSLOW=110xFLASH/2=FLASH/2):۴ =11:=07 FLASH$ SLOW FLASH:".d1/Menu.Maker"5 WAP /// SIG HELLO PROGRAM. UPDATED 4/12/89 DGO :#1,".D1/hello.text" ž#170 (#1;ERIN$ 2ERIN$<40F#1/P=23:=25:"PRESS ANY KEY TO CONTINUE.":G$U-Z#2,".D1/FLASHNAME.DAT":#2;FLASH$:#2%dFLASH=110: FLASsk file. BLOCREAD is invaluable for seeing what a file really looks like. Another great program from Dr. Al Bloom. We hope your enjoy it! Pascal program that is self-booting on side two of this disk. We hope you enjoy it! ility program that lets you look into the guts of a disk file. It shows you a file's 512-byte data blocks, in both character and hexadecimal format. You may look at any block in a file and choose to either print it or copy it to another diqs0 WELCOME! WAP /// SIG Public Domain Library Disk Category/Number :Bloom Disks/3BLM-15 Disk Format: Self-booting (Both Sides) BLOCREAD is a ut /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// SIG, Washington Apple Pi 12022 Parklawn Drive Rockville, MD. 20852 (301)-984-030۬` # ː`  = O̰)= I`JJJJѶQi Lˢ  0 ̐ `"L˦ `H8`8$$"$= O̰=`$0`#$"0`$  )LBѠٳ )8`i (` )N8`*eȱ+eȱ,i۠Ѻ*ȱ+L - ť.Lkҥ. ՅL ͐Ld ~ pа.J/)@߅4 ͰU..++,,IJ/ ӥ-.?Цե,J+jѲ4Ƴǥ4聠 H hH kh8`8-ȥ.L 8*Ʊ )8 0*-`.G.ʱ*+,EP'.E.LұE0+,,ӄ*p-e1600 =Q:WW=0A=:A=21A=9&oldprefix$=40A=31410: Control C "aborts" program to Basic(:A=13770: Return Selects a file *DA=27:50: Escape to change disks/FA=324000: back out one directory level 3GA=(80+UCA)A=(80+L"BASIC 0":150A$="TEXT 0":150A$="CAT 0":150A$="FONT 0":150A$="FOTO 0":150A$(L),"BLOCKS")510*=27:=19:"FREE MEMORY AVAILABLE: ";=7:=20:"80C";A$(L);$:=5:THPOS=4:I=1:IBOTM=J-1:620Q=:=26:=21:sic; +Q Quits."r12);::"80C";a$;:+w#9,"DISKNAME.DAT":#9;DISKNAME$:#9|d$=DISKNAME$$=23:=0::"80C";d$;::12)201M=3:=14:"This /// SIG Disk is \^ 19";Р,2)", Washington Apple `, Ltd."=4:B$(1)="":B$(2)=""A$=16,B) THEN 240 #1, d$="":=10:"80C";d$ ž#1300I=0"I=I+1:#1;A$(I):290,#1 6L=I-1@j=1:same=0 J:SEG=0 Tœ2030^CT<1CT=1cCT>13000Zha$="{,|,~,}; selects; to new disk; J/2)=4:=+1:ۙ=44B$(J);:J=J+1I:1,180,22:2,280,21:2,2380,23:8A$(1000),B$(1000),C%(511),C$(20),name$(20):=10:=0UCA=128:LCA=UCA+32CT=15 IF PREFIX$= PREFIX$+MID$(B$(I),{}~VOLUME NAME (/DISKNAME) OR DEVICE NAME (.Dx)"P12);::"80C";a$;:Zb$="CHANGING DISKS"$d=23:=0::"80C";b$;::12).n=12:=20:"MAKE A NEW MENU FOR DISK: ";N$xN$)<2110=N$ :210 I=1L(A$(I),A$))200B$0 WAP /// SIG MENU.MAKER PROGRAM (v. 6.2) =".D1"210: Coldstart (320: Warmstart &*X=11000: TEXT SLOW-DOWN LOOP ,X.1 CHANGE DISK SUBROUTINE23œ202:2200<RFa$=" YOU MAY SELECT YOUR DISK BY THE WAP OFFICE LIBRARY HAS A NUMBER OF APPLE /// BOOKS AND MAGAZINES. BLOCREAD BY BLOOM RSION PATHS) BY BLOOM (` L Ͱ2 ~ P kҐ#L8 T 2ΠHHȑhhȑ`Ld )N8` xհ*eȱ+eȱ,i۠Ѻ۹ۑ񥤅- ť.Lcԥ.La Ͱ$)rJ Lɰ )# Ԑ)CA)"PRINT.ALL": OA+P 3HA=(81+UCA)A=(81+LCA):::: OA+Q Quits 3IA=(83+LCA)A=(83+UCA)"PRINT.SHOW": OA+S 2JA=(68+LCA)A=(68+UCA)/Screen.Savers/HELLON=THPOS:B$(I);XA<8A>11540bA-7640,660,690,720l:=THPOS:B$(I);v:520: 500THPOS=4:I/2=I/2)I=I-1I=IBOTM THPOS=44:I/2<>I/2)I=I+1I2=-1:I=I-2:IBOTM<30THPOS=44I=IBOTM/2)*2:=+IBOTM/2)-1: ˦,+* ʈJj =ؠ yiȩ`y4泱ƳHhz ʠiȱizLA`L;ؠ"  `1` Đ7@8V۩ Lɠ۪8ۊ۠X)JJJƄ X Ġȱ۠ ȍ۱۠ ۭ) ۍ ð*)#  O̰``)(`N8` ) xհۈ ̰آ*գ  Ͱ ݢգ LvL{ؠ;i ڥ(8` ְ( ȱ5 HȦ)`Lxץ: ש ְ⥺i ꥻ(8`Lx Lxש u )۠0)p խ.8`)@ ϰ) ϰۈۅƭۅǭۅ5 X̰ *ƭ۬͵̶L  ΐ` Wհ> H۪ȱHۑhƳh sϰq ` ʰiȱi `)5©éՅĩ5 }JJ+`.`8`ɂ )`@ ש ְO ֤FHۑۑh8`P) հ Wհҥ,J+j泭۪ƳۑȊ ) ~ fPL ͊.>.ʱ+,EP!.E.Lw+,,ӄ*- P*e (` հB հ5 Wհ0,J۪泭ۑƳ sa$,1)="/"5060:s=s-1 5030=a$240 MENU.MAKER 6.2 * Thanks to C.M.Davidson for his help!l; G$:::320H: Error Routine 202:U=11:"79C";"BAD PATH ERROR (NO DISK IN DISK DRIVE OR DESIRED FILE NOT FOUND.)"X=11000:X:::210Z a$="{,|,~,}; selects; back 1 leve 1600 &:WW=1:0 :SEG=1;".D1/SEG.F" SEG=1".D1/SEG.G"diskname$=3802  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T READ PASCAL TEXT FILES."04=10:"7M$="NOVEMBER":1750M$="DECEMBER":1750826);"-";M$;" ";Ѡ,2));", ";"19";Р,2);" ";/П,2))=>13П,2))-12;џ,6);:1780$П,2))=0"12";џ,6);:ٟ;$П,2))=>12" PM-":" AM-" 1830WW=1530 =26:=211660,1670,1680,1690,1700,1710,1720,1730,1740^M$="JANUARY":1750hM$="FEBRUARY":1750rM$="MARCH":1750|M$="APRIL":1750M$="MAY":1750M$="JUNE":1750M$="JULY":1750M$="AUGUST":1750M$="SEPTEMBER":1750M$="OCTOBER":1750T 0")2070H540R\A$="RUNNING "+B$(I),16,B)f"79C";A$;:=0pB$(I),16,B) z::SEG=1".D1/SEG.T"t=+B$(I),16,B) yCT=CT+1~240:=24:=0:"@ ..... "DATE.TIME.LINE" ....JM=Ҡ,4,2))BTM1630,1640,1650,0=+IBOTM/2-.5):I=IBOTM:I/2=I/2)I=I-1 œ2120B=B$(I),16)," ")-1 B$(I),"BASIC 0")850B$(I),"TEXT 0")890 B$(I),"CAT 0")1140*B$(I),"FONT 0")18504B$(I),"FOTO 0")1930>B$(I),"PASTXJۑĥ` İo!)N8`WپX0 ĥLä X0 ĥLà !"#$ Đ2@H AڰCŰrP` 3ڰ(` AڰѶ? İG8`Fە1 ռ İ ЩP߭)@N8`1@8` Aڰ񈱴ۈ)ۅƭۅ X̰ 3ڰLÍLT̥L㼠  ʰ` İK ХP8` LɐH80)N  հ)@LO ˰)0 ̐` M ­۠泭ۑƳѲƱƳ X̰ Rڰä,] Xx,f (I0јIFjFjFji```x@gŽPy+wLwԠ͠ŠԹ.D1 .D2 .D3 .D`HJJJJh)y` (2ϩ 1ޠ== f ɰ`ޭ`5=(5= i Х(`=H hDC5 L3ܵ ɐ /ݐ 8`5 ˥JJJJ8 H h ` ܠ825H h5 ɐ /ݐ 8`Hh ܥ5 `ɥܥܥܥܥ5`܅܅܅܅܅5`( ݰ)Ѻ ݰL ݰ泱Ƴ ʰȭۮ ʰͩΪΩۦ eװqȭqLJ  ˰Aۅƭۅ X̰2%&N  ʰƭ X̐`Ӏ堁ӠҠՈ՘̠ƠŠӠ̠ɤӮȪŅ͠Ϊ ܆5 HȰ4 )ߍ) hjjjjۥ0CF = -$(L !LLL&L L-LJ٥eƦ ,L  # ` (L.L…ҥÅӭƅХDžѥL1LUȑ  i ߩLL )  札)  ҩLL` **éL0;` H ) abRcdTefVghXijSdfhj RR`^0U ` 0 ʠ0 8 `ůàՠԠàࠝӢӠ ȠDž̖͌͊頀ϐωŠŠӠҠȠγ`%!^0 ^)@`a R =` *^)ـooL]^)?i |TU QTU]qUoqTITsUsprRprqs]ToUXa` RL=Xa` R` *R`X`U T  *\AX[ @F\B9ɏ5\o*Ɂo)[[ @^`U V  *C?^0: ݳ ٢ ^)?i` *)@o `p^ XiH 1h `)X0 8~X 1`C X`)X0`C РǠ𠠐ŠŠӠҠȠƠŮƠҢâӠUAQY @?ZY 9ZYY^TU QZoȥɭ }`` ? }``  }`X0i 8~XX0H }h襯` ©Wéĭ }0W`F X0A */5BL. zF`LLz Lz`Y `Ơ堧 B k L( LO  %   }` ` ?!©UéĩU󥣍V }`` ?)) $p10LYeieLVȱ d0L`Hȱ hh` WɸSI I.ȩ8A 8ɸ4ɠ(H)h h8   `    i Ȣ d` $,)?P^ GL㢮 5L}P.)(Ơ L`ޠ LR  稱 I)0JJJJѤ  БĈ` H`)à`֩ нѽ>`]PU]]UPPX0 0 PPXPP  į󠠩ҙ̙ɠΠɊՐӠӢ̢ՠҠŠԠҚРĠ鱃ԠȠࠠLQ  * WHHH>%H H @`)h8`  HШБˆeЅА SYSTEM FAILURE = $hh8`hhhxآY_Z@tPRVT,p S JJJJ ) ʍL@ i0i6`îӉ͠堧ǥӥ``HhHy)(h`H` 0L?i `h` `` `x)( 8 `jjJJԥ)եӬɂ )Ӆ҅`  `H0Xh`Π'à̠ȈL` 8`څ  Lk%  Lk8Lu텚8嚅 L L Ld V ``  h` ک V `ۅץ  VLFx) ( :` H ) L  .P'pб0 &L:L5'8+8`0Fܢ` ř,Ř 0 8f)J DžŠƠŚ̮ÎȠ Ӡ̠Ӡ` LL#L/LL'Lgab `abBcd cdBrcadbho:ab.cݰdDcݰd8abҊ v+abcde0f`   cCȱcD C Ea  UV 1 ELUFVG FUUCVDեYCWZDXWXCUDV[ v`b0WXYZiUcȥVcWX eeYZ ggE` @SATRŭ᭭򭭪𭭠򠭠頭퀠Šӳ頠𠠀𠠠堠젭ӠΠSOS NTRPRHeLZĠР쁭堠堠ՠP򠭠έ魭    ) . 6 = J P S X [    $ 3 : = F d  > B H M s `e|&+.QVYcjuy~':{%(-47=FMUX\_jmz  .169DWfy   % * > A H K Z v z }      % , 1 5 : = B K R Z _ b g n s x ~ /47=G\x{~'+.149?CGIKMOQSUWY[]_acegikmoqsuwy{}J) ܭL FܪJJJJ)`'+9;=?ACEGINR\aejns~  #&).369<ADGJMP^g $*-06=HLORWcfloruzp Q%Q̑`pPIE1pΦ#$01ʐ1`JJJJ)`%υߥ`1(ȦJJJ`&&*`JJ` **&*&ߥ`J` ***`` ` Jjjߊ` ߊ`JfJfFߪ߆` `JfJfJfF`ߩ`$011̰JJJ  )* i LiHh`PQPQ>P Q,PQ"PɀQ@PAQ`8`nɀ<)nopoLpp` 0h8蘠fȊf` ab 1abo)abaݰb L9c`` a N0Ioa0H ha`pLopna n`  3ɠ/8 L %iLɠ8逨J Hh $`b >_-%^%p_^^_ab"08^c_L8^c_L8^c_L8^c_ȑcc\] ab^_ ``aV R0M bba dda `Q8STRQ ST`c\ȱc]a  b 5DU e\^e]_ ^_ ^_LH8\^]_?Je\^e]_,78\^]_ ^ݰ_ ^_LH^_ $bL@A^_aoQ*@A RQL@A `T8`RLSJTKQHIQiHiIKNJ)M8逅OPOPHMIN'a MHNILHOIPaOHPI8JHFKIGFGaHMINNMʆSTL8HSITQQST̠Ώ h:gpOn[n٧s]ds3issssssss0b>&dsjs|T}|s[:: 悅 lc!)` +b` +b` sL :b#`L,H s h ऊL(,L8f` A KL jLdjOPPKLL h AKL` Ѽ   (`H shLs Aji!S)Lt`SSS`L` z :0.`9::hhgg.%g& $gegަhH逪hhʰ` ҥ [ aLT ҥIJJABB=>>;<<?@@T ě hhhHH  `89$ 0~!L`!sm?iٰcL`S )!a{)Qi ڐ߽S) -ai) -aɢ ɣɍж$HS -ahʥ0SSȩ5%"/װ&hԐɈf0ɔĐ 8,f 8f L_ʅSS=ȄL`ȱi8eiidHddhd) _ ƢLh _L>h jhP _S @a-Qggeg5hih 6i6 "]S" ]$%SSSg a aL^ S S`La8 SiUjjS):,$f 0$ p fHhH_HcH uhch_hhhfhi0hhhB B A` ֥'( )&񦕤LNKM$Lb ě $m wl "m6X6+5 56ɀ56H $mhɀ(Z)& mL k~ wlL ͝dL Nsd# wl^_ ꂅ__hg^`8 悕`gHhHhH5?6@6@*5g5666gҦhhhhhhhhg:e:;e; ;m;`@c@c?be^@e@ _m__^ \Lx] i6g55``BY BSAMHH H] LPL(\)&P ěj9ȑ9ȑ99i=:i: >i>`Ɂ7XWWXjnXWi` ]?@@bgchch )^ ]b ]b^b^L\b8g+H__^8_ABB 9::)ѭ [ I[ aυ婶ZeLLL^$%Lae LGidFddddddd.ddddddddd ɕdˏd`Ls  Apple Business BASIC v1.23 - Copyright Apple Computer, 1980-83 CTERESOURCE UNAVAILABLDIRECTORY FULDUPLICATE VOLUM ERROR Please Press SPACE BAR IN PROGRAM INTERRUPTED%&'(%+.@C$DE FG!H"I'MN#PQRTW(X潭`: 808`:dd@՚H Z#IJJCSTRING TOO LONFORMULA TOO COMPLECAN'T CONTINUUNDEF'D FUNCTIOVARIABLSOS CALFILES BUSNOT SOI/FILE TOO LARGWRITE PROTECDISK SWITCHEBAD PATFILE NOT FOUNPATH NOT FOUNVOLUME NOT FOUNDUPLICATE FILDISK FULFILE LOCKEFILE NOT OPEDEVICE DISCONNECONV&CONV$CONV%LEFT$RIGHT$MID$INSTR>=<^/*-+NEXT WITHOUT FOSYNTARETURN WITHOUT GOSUOUT OF DATILLEGAL QUANTITOVERFLOOUT OF MEMORUNDEF'D STATEMENBAD SUBSCRIPRANGINVOKSTACK OVERFLOREDIM'D ARRADIVISION BY ZERILLEGAL DIRECTYPE MISMATNDEELSCONLISCLEAGENETABTSPCUSINTHEAMOSTEANOEXTENSIODIAFNOAAAAAAAAAAAAAASGNINTABSATYPRECAAAAAAAAAAPDLBUTTONSQRRNDLOGEXPCOSSINTANATNAAAAAAAAAAAASTR$HEX$CHR$LENVALASCTENAACONVOERRLIERKBEOTIMEDATEPREFIXEXFNEXFN%OUTREINDENAAAAAAAPOHOMA SUB$OFTRACNOTRACNORMAINVERSSCALERESUMALEGOTIRESTORSWAGOSURETURRESTOOALOASAVDELETRURENAMLOCUNLOCCREATEXECHAIAAACATALOAADATIMAGCADEAPRIssssssssss\3!z~IssssssssssssIG%ӓ,ssևwn7}|tttUUZ{fzxxˆU膅[L<^ENFONEXINPUOUTPUDIREAWRITOPECLOSATEXABYAAAAAWINDOINVOKPERFORAAFRHPOVPdd A 6 s e 9c()' 9cKHLI jLdj89弅:彬: 悅`H hɝɞɜ)`dd  6芅 e ()'` e'()HKIL 9cL>hL<^) i!Ls j @aLK$L% L<^gHhHhH , - b j$% @ag5h6h6hhhhh8g5h6h 悅`6 "]La ud `L  d.CONSOLE[[ TdSdddddd0 ddddd`?TUJ)TU  ' Lsi imLqLsh E0`H ty ))ELyq  8 $0!PizEn{dUeUi hLqLs `wLr !L2 {}$ 0`QɀX zLs.+"2mXm tL qXXW zzEn{i x }H$ ]kh8 )KLe9e:: }Lgi , p s$8$0p`PL<^Յ H s r ɀ ȱX Hih0 & ?<I?iE W Lq s )L<^ȱQȱȅR dj sLHoUVV$ LhU Lp$ LL<^opL^```?EXTRA IGNORED?REENTER $0pL,`LgXW ׫ k*iXX 4X \\L<^Xii7 { n k$ |WlXVVE$ P% eT{||Hd ̐h p IkLo00$0 L>o "m nV dj$D$ P 膼Lo$0",i [ kLoHSHhp< {}$ p0H 07h ]k ,LmUVV `p F sLn 2 ukLoF вLm jȪЖ LL<^~p l nhhLgOPP` Add# 6d s S SS@Ln A " r ,; s lLn#f  ;П ⭩,SLn "mʆ,S _S% nLh "mL_T ST#L(, U VV ׫$ 0  QpU= d hkddhe##5ddˏdd?Ll ,?#$04dHHd = d hkddˡddhhd`LsL#&F  ; s b 0` L+l$ Nsd#Lzm566ȱ5Ll H# wl m#͉LchL$m QRKLLsh$0LU$^`=8WW>X> 悅XXXL:^ g`L<^ l Jj bx bp,_;Ll  ~q$0P oՅ5R66R l ~ L%l $m0 =k $m#`$L#i)8#Ll  s s( L7bʊ# L-l m hxd5d$0H h`L^bLb$%/%5$ &5 &5e$$5e%%$&%$e$% Lk ׫ sHH ~qLPkHHh$0'ph | ZlWȥmW`L$|hXWXL-hm lmmLkl VYZZ{|| w ᐥlmmYZZ LxWXX ox ExYW# kXX 4=^W^0A, 9:: Ga.ghh 悅` A` \\ɾ,L<^hhZkKhLhhhe9e:: mLg jei `Ls j:,"hhhhLgɜEɝDɞLb Hɾɺдmhɾ Qp aj pi `p j` jLi j,d wlOZL^L^-L(dPL<^OPMNKLhhLg` Ls ҥ?ieCiLa,  aFL s a iLg ]hhh5h689H: H:HLHKHH6H5HHH` ui` pi` Qp j pi `p i` j jK$L%8eȢЅ iLOPP$pX0S&ȱhȱKȱLe潥ɂ逅$L# $mKL x~ m khLgLsLc h5逢)&a TH THLgL6k8:9: STT`)ɀLK$Lb8gLOPPKLMNhhm Vf0 mLf) mWA 0 -a mL8fW;8<< 悕` 6kLU*i kXX 4XLy \\'_ch_chbi^g \ihh ] Qp aj ih `p b iq bqn %jjg56Ly { b bq | XHWHHHֺh$PLh wlȱȱ%$LWH mh x~  m#W", mȱ28eLeji`Lwl mȱ"Ɂɂ ȱ :, iTjj ȱiVjj8逪XW0 Vf0WHW$ 0X: h ,@dd )e dʙdH &eh(dL ddک,ddLd:e``eLeHELLO ue 5eLse6e:7ee8ee:e`EAd j @a(% -, bLs j {ghhi L[ s r$PLsi,L3-hLs L*tɘcɭ_ TTLdd`jk8L|L3L3TL3,L3i LL r$PLLBLsș Ȅ ( qƚƚ` s s),;,=,#,(,,ѼLL<^L<^ llmm$P$`LćHƽ Ƽh`$ lȱlLL{ɝɍLɎСL s HI s shmHmHlHHɦ# shmHmHlHH , hHLt  ,, shTTLui ui,L3$0 |Lu xijk6kxyy xxy6+|] {n LU{HLʁIڢIڢ-(h#5ᆥ](IڢʥnH BiHɁy U{y рhɁ xhLB` vy{| g|S}dpL}Qz}c0~~D:~L̑56gh6hegehh `iɇoȘ戅 aziȅ xdo`Abi$nFn) i  j g g ^ ܇.Laz͠Lć ^ ׄ& ć ׄ ć ͠L- x |z K{ | T}{ x xnH yxn0 I B xh B Lр |  ZuL.y +|z% T}uH }h{ ~|H !z az ~hJ inIn`L~8;)q4X>Vt~w/z*|cYX ~uƀ1rP aziP | |iɈ { T}i8Huiiu x BU 瀩{h z` |] az 뀩]Laz | i8fe.șR0șRmymlylkykjyj00ڊIi i/ȄȪ)Re.șRI)ЪR0.ȩ+f.8f-RER/8 i:RRRRRR`y`'d |Ģ { &{f o0`LB ` H$ge &{h 80 '~L}H |h |zEn{iLxf d$h0Ly ef q80fL}COt#t$JZ mLKjk8 | ~Lm ^|-$nșRnȩ0iL f~ azea~ } \~ } &{e B{e yx %}ei0nihoi8傐IL|`7 z!L|iD8$n yiLyn)FjjjLyiɠ %}nnI*imLyjklm` s e-o+ smo..IE)2s S -+fh r$h8fL}fg s$gPf8ef B{f65m5l5k5n j5i`d,]WXX566 |m5 ^|l5k5n %j5i5` |m l)m |m`znth` |ht`i  y my`i n*` |jkjI*mlinLyFn`nEz0ʢiH xv5ui`uei0,iiL0y{n`nI0hhL,yLy |i{ xi` |={{ {LZ{ zL{ |8ii zivjwk xlym* 蕁24(y&x&w&v0⨥ymyxlxwkwvjvL{@jjj)(L{L<^~jklmL y56y^Vy dv88; 54541r |LiHi z xz U{y xy рz xh '~z zLz z~ zm zl zk zj zL{LyJ eyexew~ev~f~ffffJ`5665y5x5w5zEn{z lkj |yjJkjlkmlmi in`emeymlexlkewkjevjLkyi&m&l&k&j8iIiii9fjfkflfmf`nIngjIjgIm lkj`L<^}i0vvvvvj`L656 wh H5Gh`lmm566 Lx5Hȱ5ȱ5 F665 w56h(` x("LH)&h`( '&'`lmm566LxĠLx znInEz{iLx y? zL||uu`8i$iznIii0ĨV y${Wiuu8Iem_B_B`)&N> ȱI8gJJ hhge ghh f feLH>H= x\L|F )XHABB8 __^hHI8e^ @1 @+?%GHHHIJJih BABGHh`$  ě u Дs IJJ^__Lveȱeȱe 8` `H Jh(L悈`H逨h` Hh8 Hɀjhji` HihJi(`  ~q$L ɺ b$P i pi$ȱLdjɻƟ dj 柰ީ Lihh sLg  s ! b   s "!!!" ऩ थ (! ( ऩ थ (" ( द!LGb8Lऩ@iu +-ELj) e | ^ .' "5 1 p) iIii i)Lm` ?i $0 ׄ $0 $0 ^`Hhth`^Qb ^^ 78ߠȘH yxy hL3 j kqHHHH s H , ,H s s ~qhh 1 lhhXhXhWWȱW7ȱW8 eLNLXZWX ` GGH HlHmHmH khmhmhlh hk8j7k8Lޒ e7788IjJkJk )lmm'&`UR{R||L̐: / cRRȹRRȥ Rл s `Lsh sh5lh6mh6mhxhyhy x x Qȱx7ȱx88 Ƃ 7e7888ł75 楽HHȱȱ6H6H5H s =к bqhhh Lshhhh` ~R/mZlmYZ PujHkki^^`H"h{||kjkȱ{ "ie{||  V{|56|6 w&5L<^i8e` ě u8A?pB@B@ )onL܇jkL| Nsdȩ8 NsdL2Lа,L<^ A s ׫ g iq s= sXHXHWHHHH ajL? b rLiq HHH s iqhhh5ȱ6ȱLI65 g5H6 2|Hgȑgʆ5a g5ȑgȥg <^^^__ɂ逅____<;إy6 hlhm^Ȋ^LL:^ȥ5^H^h ͎el5emȆ6п  ͎e^e__ iLZe *& eegggegȱgehh Ľ ,L<^  8` ^LQ ŠhhL6 $P 訽5 ͎56ۥ 8ee L:^?be^@ce@c __^_ \__^;<<6  $Phihi^Ȋ^6h656H |mHlHkHjHiHl5 8eeghh^__` HHH H bqh hhhn0iɐ1 }L yxL%}\i FHHHHH 6hhhHHlm ,҄ shh)>=>hgh<<;[a{p ;<<ccb? @c@ube.a{bb,\(eb cc`ebcA[8饰 a{8`8\e@@He? ]@@?hbbb0 ea ȑbc8L@ @@h5H ?5^6_6_hhXhXhWLk ? % ?Џ`5566` xe5566ɂ66` s p `  zLseff z.!'$ iߪ$ 0 H8eAi\h$ P8 (Lt$ 0}5}} ,kk} , kklm Lٓ[ 80@ 6 2`  dkH) ojhJJJJ ojL 0:i`L<^ jHHHHHH s jhLyqhhh6h6h555_ȱ5VHHHH %L/5H6H6Ht $mlmkljkij8ihn`L,$0DpA q enHi80 @Lyu \ % @u ćh `&m&l&k&j`2L0 և yxLT}$0pLI oբRLi `u LLi u Lui0 ܆ چ,,% п 擩lm0u 1eL5665`iɀ*iH i  @8 ei $ tutt tj ȡhn` t` 0RN0R 0R$n-RRR`i` p`5665i`$0BP?iH i hLbe55f5f6e}Lme6u5u }`6ʈ`v`jip` ? #  ue }~ %u $ چ 0 u}` L uu  ) }Li <i@L{i$i0 p $ 1`ui` LL Lbb `}i~ei^~0] e e^`}`566i5`_cf_cfi^eub` ?^qbep`L<^ ?8b^e` rp`I` ? ㄩp^|be #^b ebbu|beiee^^iL56^f8 hx57 xLCx8I77JJ8 88` H dhjL YYHH dYZZ oxhhe5566ɂ逅66 wZZY L YIL=m ) s  ʊHYImm shhhhYhZhZHHE` 3YZZ xLCxl5Ym6Zm6Z x` Lj5 3LٓL bq VlmL{} ӓ0566 `sL{ bq Zm*elLmLiɑL %}lm$%`L:^fCDDEFUVFVX L; d  seRթR`yiɀjjn*8miɝ d L .q$uL$)JJ8偅8傪 u Tf$i0Ł!y0GLqL~䁰< 0$H ,GhGթ $u$n 0GЫ-Gv)' $G uJ-$n0+G $G0)`u vphh` Ljk ,hh`Sj9-k L9j ekekk|z)ekk |j[ ٢  L`j 9kkj"j"kеAX"+-&$.ECR/#Z*! DBA0 k$JJJJ) vvyLj L ʟ,-uukv kv@vvyL5Lj ʟA80멀uukeqqtt$uA)*t L; $uЫkЦuuj ysLq,kl$uhuuj XkkNuuj k 4%v. #  1$u tAvʘtDթ q(~th`pvquts~y fp$pp8j/;XAx=|8ez{{ ghh "o `L x  wwghhoؠKkqvj L`$uZuukvN kGv@  pJ LUL-LG -$p0`pog $mkڥrok8o,koLdjAaCcoJ mko 5 $mkk mLw L L HG56H6LExh  (`|||}z,A[ :808Ш`,ޞ@`y Gy`LHq,;' L Pu  pLLwl`|H}HzH{HHH ɶ# xhH s  ~q s,; Ls  ~q$ hxrL iLpnH ~hɀ8(*iR.-:/ RRhhh{hzh}h| Pu p 0|8cJcm J_mm嚍J_AgBhBh \^A_B_B` ^"( zM jF566 x}z{6{LҜ #z{{"} GLsL<^ jHHH i dj ٥z{{ j}hhh ;в| |膆  RRRRH uhA?B@7B@87F8f7877878L:^7 8*JA5gB6B68 悅h圍h?H@H@HI?J@J@ "]h@h@h?gAhBhBJJ8 悅J圍J7ߚ8BܚLs`䚌B L:^`Ib^J sL͙ɚʚ `pAƚЙϚŚњ˚ ̚8 悅DDF͚ Κ8 DiFEC CD)ӚDmӚDԚCBКLěŚAݚ⚠IȌ 8 ꂍ  8 ꂅJJ` !7Ri88 pi UŦLUUU HHHHL 2hh LW iL 2hlhkhn jhimhHɗ8 Ls`LIŚ1CUDVDVU Lŧ 0 7U L`L:^֩ ŚEĚ L| Qp QeeRee8 1 V` 痠U` hh R LsL  z (L[ Rީ  @Y%(&:$LU s և ^|iHn %jHkHlHK s n ZlHmH5 s iH jHH楩e ) ,LsLR eՅ7V8U #   785U6VLΔU7e778ҥU^V_bcF_hcCgDhebbc \^__`U8傅UV` |UȱU` L<^ |UUƜ0ƛ ӗWqeWȱWqei W` |8UUWȥVUX`UeUUVUO / +'L U)łiV VL LI 8U 7ȱ7 UU ЯUVULU7V8 p L LZ U qUU qUH85h688V77U U 5qUWȥ6qUX7qWWȥ8qWW ٥IiV) V LVU?e8V je?e>e8U>e5V?e665e=e@eeehi?e ueL5e qrL,op ɩ`et?ek;e`hZ L<^hZL<^L=ee>e ?e`opqrst !e5ehe?eLje LjeR=89R>:>:iR:RiRRiRL`8(RR(`EeFe  s bq Vml0L dMeL` bՍe :RRRiRȐȰRe9Re: J 2IHJh*=>> 95:6:6R L1 1Lԫ`L:^  aFL^R, ue 5eLڭR7>e?e5e?eJeKeLje֩ u>e?eՍ "] a a$% iLg֢   sLj$%`8f  a e ; ` s ɩ` YLILcopL7 z0xH ׫$0_ ;h8fH`aai shH2 h zJJJJf Ik ɩ` ̬ t os YLA ևLLק jWXX` ׫$`pd8isŠt`dyoopd8ip`J uv`&&&8孪孪宐橈`! @ uA?B@B 悅@=g>h>h ]=i>j>k a=g8i>hj>h 悅ki=5j>6k6k;el)@7Me0u(> ƬƫHH ,hohp` ɩCe0R`ȹR`ee?e@e ue 5e T L=e;e`Lso`n}pm aa`dyo ɃɄ b`" lJJJJYe s ˰L8Ls LԫN l@u=ekPe tMe )llNesOet NeOetMeCOeNeȌ=e>e;eed?e