LnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!)SOS KRNLb.D1/SOS.INTERPŠ̠Š.D1/SOS.DRIVERР頞 0 ) (lH'&3&'&#e'#%e'%'&"$"$#%'#%h`$e4z!3 /SCREENWRIT.TEXT<z!/MAKEINTERP.TEXT z!EXERSOSu' *SOS.KERNEL ,Vz!*SOS.INTERP 43dz!*SOS.DRIVER g. !. %HELLO x'Jz!7 +SCREEN.CODEu$; !5 )TOOL.CODE >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@L%e,ȥ,*,- y,,,-,,,ȱ,,- yL+,ȑ,` 2"p-,-L(Ġ %>,i-i8, ȱ,%,W,pp ڠ %p`l  " ) i   !"#$%&'()*+,-./0120 `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ۦȱ ˦,+* ʈ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۪泭ۑƳ sϰ(` L Ͱ2 ~ P kҐ#L8 T 2ΠHHȑhhȑ`Ld )N8` xհ*eȱ+eȱ,i۠Ѻ۹ۑ񥤅- ť.Lcԥ.La Ͱ$)rJ Lɰ )# Ԑ) ͰU..++,,IJ/ ӥ-.?Цե,J+jѲ4Ƴǥ4聠 H hH kh8`8-ȥ.L 8*Ʊ )8 0*-`.G.ʱ*+,EP'.E.LұE0+,,ӄ*p-e  )LBѠٳ )8`i (` )N8`*eȱ+eȱ,i۠Ѻ*ȱ+L - ť.Lkҥ. ՅL ͐Ld ~ pа.J/)@߅4N8`) ))У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`۬` # ː`  = O̰)= I`JJJJѶQi Lˢ  0 ̐ `"L˦ `H8`8$$"$= O̰=`$0`#$"0`$Jۑĥ` İ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` @SATRV$CONV%LEFT$RIGHT$MID$INSTR>=<^/*-+NEXT WITHOUT FOSYNTARETURN WITHOUT GOSUOUT OF DATILLEGAL QUANTITOVERFLOOUT OF MEMORUNDEF'D STATEMENBAD SUBSCRIPRANGINVOKSTACK OVERFLOREDIM'D ARRADIVISION BY ZERILLEGAL DIRECTYPE MISMATCSTRING TONLISCLEAGENETABTSPCUSINTHEAMOSTEANOEXTENSIODIAFNOAAAAAAAAAAAAAASGNINTABSATYPRECAAAAAAAAAAPDLBUTTONSQRRNDLOGEXPCOSSINTANATNAAAAAAAAAAAASTR$HEX$CHR$LENVALASCTENAACONVCONV&CONKBEOTIMEDATEPREFIXEXFNEXFN%OUTREINDENAAAAAAAPOHOMA SUB$OFTRACNOTRACNORMAINVERSSCALERESUMALEGOTIRESTORSWAGOSURETURRESTOOALOASAVDELETRURENAMLOCUNLOCCREATEXECHAIAAACATALOAADATIMAGCADEAPRINDEELSCtttttt'-Wi|mtttttttttttt:CyyJz"zttD;UyyyVu9uzuWW}|zzWYvRmO(L]ENFONEXINPUOUTPUDIREAWRITOPECLOSATEXABYAAAAAWINDOINVOKPERFORAAFRHPOVPOERRLIERǡկ i h^qo*Lo_tqetjttttt䆤itttDcPctttttt_tt0c7ctttttttjetgdickcacdctctkj{Wi{jjGkiuktRjmF!tttttjGk>t)ndGki|f`n`) tDt:t@t,2.t4t!ttttt356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeǡաϡӕǡկ١šͯšá͡šůӡɡկӡӡկӡ͡ӫ͡š˯ɡšϡӁ뫯ǡաɯš͡á͡šɯɡɡկסѡǡկšϡšɯաSOS NTRPTcLbɯաů˳ɡաϡ˯ǻǡաɡš͡͡ӫǡ͡š˯ɡաϡӁǡկǡšFšˡ͡ɡšϡӁջǡաɡš͡ǡկšաɯš  )* 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ʆSTL8HSITQQSTOO 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 DISCONNECTERESOURCE UNAVAILABLDIRECTORY FULDUPLICATE VOLUM ERROR IN BREAK%&'(%+.@C$DE FG!H"I'MN#PQRTW(XɁ7XWWXjnXWi` 4]?@@bgchch M^ ]b ]b^b^L\b8g+H__^MNKLhhLh` Lt x jejL`, ʦ `FL t ` jLh ']hhh5h689H: H:HLHKHH6H5HHH` >j` 9j` q k 9j )q j` k PkK$L%8eȢ 9:: `.ghh ` 2` a\ɼLe潥ɂ逅$L# mKL m 8iLhLtLd pi5逢)&a VHUHLgLk8:9: ASTT`)ɀLK$Lc8gLOPPKLMNhhe @m+\L^L3^-L(ePL]OP<< ` kLW*i lXX XXL{ a\'_ch_chbi^g \ihh '] q *k tjh )q c 2r +rn %jjh56L;| 4~ c +r ~ ߏXHWHHH iLOPP$pX0S&ȱhȱKȱ m#W", |nȱ28eLfji`L@m |nȱ"Ɂɂ ȱ :, iVjj ȱiXjj8逪XW0 'g0WHW$ 0X: h zn 'g0 |nLg) |nWA 0 ` znL gW;8eeee`,@ee >f eʮeH ;fh(eL Υeeک,eeLeOf`áufafHELLO k `(% -, cLt k {ghhh$PLpi @mȱȱ%$LWH znh  `LK$L% L]gHhHhH , - c k$% `g5h6h6hhhhh8g5h6h `6 saLae `L`  e.CONSOLE.^ UeTeeefe f0 e (`H thLt 2ee 2 ܨ t e Md()' MdKHLI PkL-k89弅:彬: `H hɝɞɜ)`ee  ܨ芅 e ()'` e'()HKIL MdL iL]) xj!Lt k:)ѭ ;b `k婷ofL7^$%Lvf Lj ?c` ?c` tL;z Nc#`L ,H t ;zh LL,L8f` 2 KL PkL-kOPPKLLh 2KL` Ѽ  ?be^@e@ _m__^ \La潭`: 808`:LPL(\)&P 6j9ȑ9ȑ99i=:i: >i>`ee@̜H z b#IJJABB 9:JABB=>>;<<?@@U 6 XihhHH  `89::  d!)`gHhHhH5?6@6@*5g5666gҦhhhhhhhhg:e:;e; ;m;`@c@cԐɈf0ɔĐ 8,f 8f L_ʅTT=ȄL`ȱi8eiiji!T)L_TTT`Ll_ k :0.`9::hhgg.%g& $gegަhH逪hhʰ` x ;b @aLT xIJmT T`Li`8 TiWjjT):,$f 0$ p $ 0~!L_!sm?iٰcL7`T )!a{)Qi ڐ߽T) `i) `ɢ ɣɍж$HT `hʥ0TTȩ5%"/װ&h 56ɀ56H mhɀ\)& cnL @mL ΥͲeL te# @meHeehe) ^ ʢLh _L i khP _T `-Qggeg5hih 6i6 saT" a$%TTTg @a aL7^ 8_^_ __hg^`8 ` i6g55``BY BSAMHH H]fHhH_HcH vhch_hhhfhi0hhhB B A` L]'( y)&񦕤LNKM$Lc 6 m @m m6Z6!5,L]hhZkKhLhhhe9e:: mLh Mkei `Lt Pk:,"hhhhLhɜEɝDɞLd ;zHɾɺдmhɾ q *k 9j )q k` kLj k,h`LrcLd$%/%5$ &5 &5e$$5e%%$&%$e$% Lk w tHH GrLlHHh$0'ph ~ KlWȥmW`Ll~hXWXLhm lmmLzll GYZZ{|| x ҔlmmYZZ yWXX 9y yYW# lXX X=^W^0A,^`=8WW>X> XXXL] g`L] m z $YZZ xL yl5Ym6Zm6Z x` zLz5 $LyL +r GlmLà y0566 `zL4~ +r Km*elL5zmLiɑL mlm$%` Lz }nInEz{iLz 4|> }L~u j665 x56h(` x("LڅH)&h`( '&'`lmm566Lx >zH UhjLҔ yYYHH UYZZ 9yhhe5566ɂ逅66 xZZY yLҔ yYIL[ym ) t ;z yʊHYImm thhhhYhZhZHHE` 'hhge ghh Af feLweLwL]lqx |xL] Gxy{|y| xeGGHHɂHHlm{|m| x |xLҔ ߈xyyLyHI855J J6 666 h`{Hȱ{ȱ{ j656 xh H5Gh`lmm566 y5Hȱ5ȱ5h ' 8ȱe iȅ s eff8  8ffHs.GbHcHcL}wGgHhHhHH \hhhGHHBBA!AghhLw8 8ffeLv \^A_B_B`)&N> ȱI8gJJ $\hxy56y6( y( y\LF )XHABB8 8__^hHI8e^ 8@1 @+?%GHHHIJJih BABGHh`$  6 v Дs IJJ^__L~weȱeȱe XE )s LwɁ >H>H= lL{pF вLn MkȪL]ȱQȱȅR -k tLpUVV$ e# ܨe tT TT@Lo 2 " s ,; t mL]o#f ;П ,TLo mʆ,T ^T% nLri mL^T ST#Lȭ, U VV w$ 0  qUVVE$ P% fU{||He h Rq l4eHHe kee˶eehhe`LL#&F  ; t c ` Ll$ te#LCn566ȱ5Lm H# @m m#͉LehLm QRKLLth$0LW$ LL]Gq m nhhLhOPP` 2eJj cx cp,_;Lm  Gr$0P <˅5T66T m Ѐ vLl m0 㨹k m#`$L߈#i)8#Lm 8z t t( LKcʊ# Ll m v 2ye5e$0H keehe##5eeˤee?Lcm ,?#$0u8i$iznIii0ŨV (|${Wiuu8Iemlkj {jJkjlkmlmi in`emeymlexlkewkjevjL{i&m&l&k&j8iIiii9fjfkflfmf`nIngjIjgIm lkj`L]}i0vvvvvj`L|^Vy dv88; 54541r ~L iHiU| zZ| };| z@| _| zh od| }L} C}~ |m |l |k |j |L!~L{J eyex}`566i5`_cf_cfi^eub` ^qbep`L] 8b^e` ?p`I` p^|be ^b ebbu|beiee^^iL͉56^fbe55f5f6e}L:e6u5u }`8 '88`@iu +-EL7) 2 | + .' "5 1 v p) viIii i)L:` i 0 0 0 +`Hhth`^Qb ^^ Ubb U`}i~ei^~0] e Ue^`HHHH t ;zH , ;z,H t t Grhh 1 lhhXhXhWWȱW7ȱW8 eL NLXZWX Q GGH HlHmHmH _lhmhmhlh hk8j7k8L 別 e77888 2y57 xL y8I77JJ c ;z  t ;z"!!!"  L! L   L" L !L[c8Lh th5lh6mh6mhxhyhy x x Qȱx7ȱx88 Ƃ 別7e7888ł75 78ߠȘH ߈yxy yhL$ [ 4rhh `iɂ8` `H Jh(L `H逨h` Hh8 Hɀjhji` HihJi(`  Gr$L ɺ c$P i ΋pi$ȱL-kɻƟ -k 柰ީ Ljhh tLh ;z t ;z!? zh DL e~  s~] 4~n 1L}HLIڢIڢ-(h#5ᆥ](IڢʥnH iHɁ;| } hɁ5 zhL` vy{| g|S}dpL}Qz}c0~~D:~L̑56gh6hegeE}` e~] | ]L| b~oȘ戅 |iȅ zdo`Abi$nFn) i RL|͠L J m B ͠L5 z ~:z } ~ { z? znH zn0 I HH @L/5H6H6HH Z5^6_6_hhXhXhWLl Z @ ZЏ`5566` xe5566ɂ66`8;)q4X>Vt~w/z*|cYX ~uƀ1rt |iP ~ ~iɈ `} i8Huiiu z y {h TTTTT`y`'d ~ 4~ZuLv{ s~z% uH ch{ ~H i| | hJ inIn`L [HHHHHH t [hLBrhhh6h6h555_ȱ5VHH |e c  c n}e }e z mei0 i8fe.șT0șTmymlylkykjyj00ڊIi i/ȄȪ)Te.șTI)ЪT0.ȩ+f.8f-TET/8 i:T2s S -+fh r$h8fL(fg s$gPf8ef }f n}f o0`L ` H$ge n}h 80 oLH ~h zEn{iLzf d$h0L{ ef q80fL COt#t$&\ cnLKjk8  ЀLcn ~-$nșTnȩ0iL{`i n*` ~jkjI*mlinLO{Fn`nEz0ʢiH znihoi8傐IL~`7 }!L(iD8$n {iL8|n)FjjjL(|iɠ mnnI*imLO{jklm` s e-o+ smo..IE)ymyxlxwkwvjvL}@jjj)(L!~L]~jklmLT{5665m5l5k5n j5i`d,]WXX566 ~m5 ~l5k5n %j5i5` ~m l)m ~m`znth` ~ht`i  { ew~ev~f~ffffJ`5665y5x5w5zEn{z v5ui`uei0,iiLx{{n`nI0hhLt{L{ ~i{ zi` ~}{ 4~L} }L~ ~8ii C}ivjwk xlym* 蕁24(y&x&w&v0⨥6ʈ`v`jip` y ue }~ u 0 B}`  Bu ΋ ) }Lщi i@L~i$i0 p  `ui` Lщ u eLՉ5665`iɀ*iH ki ΋ y@8 2i tutt tj hn` t` ⋢0TN0T 0T$n-TTT`i` p`5665i`$0BP?iH ki ΋hLu y mlmkljkij8ihn`LJz$0DpA }L ŧ 0 7U `L`UT{T||L: / c뜩TTȹTTȥ Tл t ;`LH vhA?B@7B@87F8f7877878L]7 8*JA5gB6B68 h圍h?H@H@HI?J@J@K ht ; KlHmH5 ht 쌢iH [HH楩e ) ,LtL eՅ7Ti88 ۙi UŦLWUU HHHHL hh L™ iLp hlhkhn jhimhH`8 Lt`L:1CUDVDVUV` 痠UȱU` L] 痠UUƜ0ƛ >WqeWȱWqei W` 8UUWȥVUX`UeUV` RU` hh T LtLX  k (LU[ Tީ  @Y%(&:$LW ht ~iHn %jHkHlHU qUH85h688V77U U `5qUWȥ6qUX7qWWȥ8qWW R٥IiV) V RLU7V8U #  } `785U6VL9U7e778ҥU^V_bcF_hcCgDhebbc \^__`U8傅UUHVH >U7WUV8XVV8 >Wb7ȥXɂ逅c7 5ef fbe  7U8VLh88h7UVUO / +'L U)łiV VLR }L 8U 7ȱ7 UU `ЯUVULYU7V8 ۙ L `LŖ U qUk Mlmm'&`L]fCDDEFUVFVX L  tQfRfSfTf8V TfSf8USf5VTf665QfRf QfRfRfJi SfRfUfQf 85壍SfQf6复TfRf ר 痠Uȱ6H6H5H t =к +rhhh Lthhhh` ՀT/mZlmYZ vjHkki^^`H"h{||kjkȱ{ "ie{||  G{|56|6 x&5L]i8IjJkJ v8A?pB@B@ MonLjkL  teȩ8 teL#Lа,L] y 2 t w g 2r t= tXHXHWHHHH *kL0 c cL2r ~HHH t 2rhhh5ȱ6ȱL:65 g5H6 z~HHHȱ5a g5ȑgȥg <^^^__ɂ逅____<;إy6 hlhm^Ȋ^LL]ȥ5^H^h el5emȆ6п  e^e__ iLKe *& eee`  6gegȱgehh L ,L]  8` ^LB  hhL6 $P 訽5 56ۥ 8ee L]?be^@ce@c __^_ \__^;<<6  $Phihi^Ȋ^6gȑgmHlHkHjHiHl5 8eeghh^__` HHH H +rh hhhn0iɐ" cL zLm\i FHHHHH 'hhhHHlm ,҄ thh)>=>hgh<<;[a{gg<ccb? @c@ube.a{bb,\(eb cc`ebcA[8饰 a{8`8\e@@He? 4]@@?hbbb0 ea ȑbc8L1 @@h5h656H ~m Ly[ 80@ 6 2` z UkH) 2nHi80 @L{u ) @u h k`&m&l&k&j`LNz zL$0pL: <ˢTLvi ΋`u ΋LLi ΋u ΋Lui0 ,,% п zlm0}5}} kk} kkl sah@h@h?gAhBhBJJ8 J圍J7֜8לBӜL`ۜܜB؜ۜ ܜL]`Ib^JcJcmۜ J_mܜmܜJ_AgBhBh \^A_B_B`L] pE Ls q ffegfe8Å ר  tLě )qAНƜȜœ Ü8 DDFĜ Ŝ8 DiFEC CD)ʜDmʜD˜CBǜL6Aݜ服ԜٜIȌ 8   8 JJ` !TvTTLL o``L& ,Nku X ul)F oPfH`PfQf bf Nbf NhHPf nhPfl)Nl ҩlEN)`LBr ܨ 㨢 c ɃɄ c`" lJJJJnf t ; LުLt ƨLtN @uRfkkPf`L >zHIJh*Pf) H hQfL$ >zъ) Pf)LLW= ɀ6"2豼T : ,H -khWTiPfiTQfL Gr 2yWH khW 5TWW ߈W` ܨL& , t +r G )mqlr jl)# wu 0 JfgL L$ >z l)v +rHqhLCL豤kPf Pf ef 묤qr` ܨ L` H  h8Ll 4 kL&vPf vkPfk L t ;zʊ0  eSf=89T>:>:iT`9mT:mT: J &IHJh=>>TSfTTf9QfRf`L] æ `FL7^, JfLz ;PfHQfH t =PfRfQfSfhQfhPfL,af ;aRffSfTfL ;L >z ^8fl)I)I  o`op eeeeޭeeeeeeeeeнɪeзˤeб`  Apple Business BASIC v1.2 - (C) Apple Computer 1980, 1981, 1982  ^  ^RfQf Lר bf` ^a a  aLר רLtˍQfTRfTf $uyG-++ $n-G` kiekiiIif`ri8r` 20#T 0Ti)T`T`L豊 A eʿe# ee\ʐ @mLm ee˶eдe`eeʿee ΥPfH רhLL`ȔeeeeuAG)EGȩ+$i-Gȥf8 i y L*H 0Gh 0GG5H6H6yLme D Gȥ ꤑGƁ8 Lãii0$iti8ti &8偅w恤wvwuJ-$n0+G0)GGwLg 200`T 0r)`rqqL$uLM$)JJ8偅8傪 : f$i0Ł!y0GL6Lã~䁰< Ӥ0$H ,GhGթ $u$n 0GЫ-Gv)' $G uJ-$n0+G $G0)GG(sȢ8傅䂐$u Ӥ0 ꤑGLң$-k TL 9j ekekk|z)ekk h|j[ g  TLPv`j 9kkj"j"kеAX"+-&$.ECR/#Z*! DBA0 k$JJJJ) ݙTթT`yiɀjjn*8miɝ d TL qLPj A80멀uukeqqtt$uA)*DHt L $uЫkЦuuj ysL6,Ƞkl$uhuuj XkkNuuj k 4%v. O t# t ء`u vphh` TLPjk h,hh`Sj9pvquts~y ءfp$pp8j/;XAx=|8ez{{ Aghh r"o h t`LP x  wwghhoؠKkqvj LȠ`$uZuukvN kGv@  vvyLŠj L ,Ƞ-uukv kv@vvyLrok8o,koL)jAaCcoJ mko 5 mkk mL< Ţ TL ߈LH HG56H6Lyh r (`|||}z,A[ :808Ш`,@`y Gy`LPHq1$u tAvʘtDթ q(~th`{HHH ɶ# zhH t  Gr t,; Lt  Gr$ 2yrL ⋭iLpnH Ѐhɀ8(*iT.-:/ TThhh{hzh}h| v ̞p 0|8pJ TLWLLEG $p0`pog mkT ^"( kM [F566 x}z{6{L #z{{"} GLtL] kHHH j -k ٥z{{ Pk}hhh ;в| r|膆  ,;' LP v ̞ TpLL@m`|H}HzHef tbf )llcfsdft cfdftbfCdfcfȌRfSfPfQf Jf"dfcfȘ pL0L L nXfTf mUf8 n XfvkPfl)@7bf0u(> EƬƫHH ҩhohp` oXf0T`ȹT`QfQf LܫnfN ;  Jf#X bfefF=nf7NYf LnSffTfUf Jf T pL@RfPf`L豦o`n}pm aa`dyopd8isŠt`dyoopd8ip`J uv`&&fhijklmnopqrs 7  3  5  >>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< SOS DRVR"CHARSET )((8*,;((*,((+)((9/(p((>3  =9 :9 .(+( 8#8# %3(8 ((,+)(%.4$)?((,(103 t +r Gml0L [fZf`ht[asa\2kjz``⥉7x]p6x y߈yJfxGhnglMkIllЀ+i49DHH \hh Hh`L )i   HH `TH..TH..TH..THAT'S ALL, FOLKS! e $'SfdTfQfTRf JfL8`LLzTTT) \TJnT \TJJJJ \/TT`H $ ЀhmTTTTTT`0T`TT \:TTL\ ; t ɋ 0#\fYf ᶭ\fZf]f[f^fL LLtZf[f  %T$T 'TT. ''T&T( TT7 `st?9ﰙTst5 װwx! װs8wtx װuuLdzTYP= PRO= UNKNWNBAD PASCODPASTXTTEXT PASDTABINARYFONT FOTO BASIC DATA WPTEXTSYSTEMRESERVRESERVCAT RPSDATRPSIDXkPfoE MODIFIED TIME CREATED TIME EOF 嵰T)!T)*TT)TTT mTmTyTi<T) 0:ipv TJJJJLtTsmTiTpToTn <TTTT  ЀȹTTTʈ00Tk @mkPf OT mL@Lz @mLƨluvefcfsdftjfwkfx`F TTqru uHtH`Ƴӳ Ƴu+ T)TT(T)T TT 'VT#T $ ЀȹT Tuu`@೙T TYPE BLKS NAML]4\L]aRffSf Tf`\f]f^fYRffSfTf_f`fLopqrst ǬQfQf` : JfXML$0% qr : qrqLj o`LdTnf m LӲ ef 3 PfOCKS FREE: BLOCKS USED: TOTAL BLOCKS: 4`L豤upHoHp  j w(hiSfhiTf LJf )qrLҩop o`QfRfsSftTfkPf`  JfL豹ȱKfOLffMfرOf`EAd4\ liʽ`L}, l)% `L}` t ;z L ʊ0 `Pf ר bf רbfLBrPfeɪeH רhL豦 㨹v1 keeʿee LLLdeT L^H OhTTE  Ѐ TT`BL j o l t d sd gLݮLdʆ `! `Ȣ` a  o`$ ߈LҮu u`I Il8)id`  k q [$ <,8 )q  Gri$ 2y656$0 p ~n %jjF$00ЭLLdopLg 0xH w$0_ ۯh8fH`aai thH2 h JJJJf l o` l t os L L?L} [WXX` w$` ,`HȘe`{ai|a|h IlLNF   ; ` t op j w &8孪孪宐橈`! @ vA?B@B @=g>h>h a=i>j>k ʦ a=g8i>hj>h ki=5j>6k6> sa @a 'a$% jLh  tLk$%`8f   ; ` t o` >> ""*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>>(`hh% ( ΍ ύ逅Ñ`` " ( ĩÍĩϭ & &υΠÑΈΝ + ҰةeÅÐн,,P,`,$ ( $  x) (,`ÙJ`ÙE`)S`)T`)U`)V`)W`)X`MY0ȱ͏ ȱ͐L" ()^ JJ* I `x|x|,,P-X + ΝL  `,0 x) `, HH`L5L  d     HEJ lO  zh) `(" ( (ÈE  z`)QȱÍR`)P`Ɂ" (`Hh) L L L [LM LM ,0L5 HH`! (56O[agm x `(" ((èDÈ`QȭR`P```JÈ`EÈ`S`T`U`V`W`X`[ȭ\` `YȭȭéL͐\L" ,XL \\L" ,CL [\L" [,)LL L YL Z)ߍZ`Z Z`aL bL )Z) ZL   x) `(, LL͏[`͐\L" Yo}"+9GPYo ` Xb[m][\m_\]_^`L ]m[]_m\_[\L [m]^\m_`L bXL Z Z`Z)Z`,@`[, [L[`[͏[`,s[L\RLґȥӑ,P0 h0  z`,0L5 ҅ӥĥŰ+,0p J L Lz )"Ơ̏ HH` MH,Y [J h̰ [h,L`  ;2,X-P" a{)X LnX0$0%,V ҥ #L$0T,WOKT0P;ҥ,W #LA\   8҅¥Ӆé҅L,T ,U H,T p  He҅Ґhe…å逅h,Q h̰ʩ8,)΂ ̓`,T H h J `T!   J(P J J `,0L5,P0H0 ԥ f0)ĭX)X҅x  (ĥŐL ,PHȊ©L,T`{ ~I)_ J) ) )) ,0E EJ%O J(,@`[,S`,XP"[YJ H) +̰ H) +ʭP((PPPPBTVSPLH   5Aʘ ;H:H` (# (I// 0`)I<0 ^)WL)6L5 I`6 `7 I`8 I`9A)I@DL8H\0`(d  $,($  , .CONSOLE a (C) 1980 by Apple Computer Inc.O  OOEJLf ((0,>!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>" <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>8  8`% (L5, `é ĩ `Y) jYZNZ~ZO,Y0'^^^]]8^][[```__8`_\\b)ba)a b 04 )ߍY) J,P,QJ,R,S,T,V " `,[,Y JI`I`[,Y J)`)`\m_],YJ}ʅ̽(I I `[M,Y0JՐ̑ʈ`Jհ0`Ցʭ̏Ȑ`\m_[ * P `L" 8,YJf׮_$PJ& -- ExerSOS x1.0 - Jeff/Don/Bob. :n$(41),ref(40),path$(40),lev(40),buffer$(256),qw$(41)Gn$(1)="Create":n$(2)="Destroy":n$(3)="Rename":n$(4)="Set_File_Info";n$(5)="Get_File_Info":n$(6)="Volume":n$(7)="Set_Prefix"Cn$(8)="Get_Prefix":n$(9)=h3h4h hEȹF4H3H58CB`9.CONSOLEHF>986321,( UP:lh&h'h h+ȹ,'H&H(`.,$3.HtvgA3/1.1 SAVESCRE ~36qw. 3 8 D o w z   , 7 > K ` e h      & ) 0 3 6 < A H M P S X \ _ b e j o t w z   $ ' , / 6 = N S X ` t (-1:C\aeqw "$&(*,.024HQW]ciq|           & + . 1 4 7 : = @ F K N T W Z o w |     $ !$',/47:>ADGJMRUX\_behknsv|  !$'*-27;@EILORUX[`chknsv~!$,169>AILORU[aknqw~ $27?DGKPSX`{ (+2;X[^chm%=BEHKPX]aehorw{L" ֦ڱΑ0Б֤ P L׭,Y0 JfiΥiώJe΅Хiю_ * $p̑бʑΈ0 Б̱ΑʈeمΐeمА`萿 " `ʝA`f(,:<>@BDFHJZbmt{` * $P_/`'ʤ˅΄ϥ̤ͅЄ * $̑бʑΈ0Ƞ P L" $)טɀIim]ٮ_8ذ `$0"8,YJک@ׅפ؈۩MLp,Y08*Ȅ * ,YJ}΅н(I I $0;P̑бʑΈ,YJՐ̑ʈ0 Ցʭ̈`萠"Open":n$(10)="New_Line":n$(11)="Read"Bn$(12)="Write":n$(13)="Close":n$(14)="Flush":n$(15)="Set_Mark"J$n$(16)="Get_Mark":n$(17)="Set_EOF":n$(18)="Get_EOF":n$(19)="Set_Level"(.n$(20)="Get_Level":n$(23)="D_Status";8n$(24)="D_Control":n$(25)="Get_Devwyz{|}~60,5960 1750 -- CREATE call --0y=1:desc$="pathname":6920:pathname$=string$$y=2:min&=0:max&=8:desc$="length"6920:length%=numlength%=02130*y=3:desc$="file_type$":min&=0:max&=2556920:fileid%=numlength%<32130* y=4:dtion);:4,437,20:=1selection1980,2160,2210,2270,2540,2810,2890,2940,3010,3150,3250,3340,3420,3530,3590,3690,3760,3860,3930,3980,1770,1770,4040,4240,4400,4460,4690,4840,5040,5150,5270Cselection-315360,5420,5480,5540,5730,5860,5960,5960,591770Dselection>01900.N::=12:=25:"Okay to Exit ExerSOS? ";a$Xa$<>"Y"a$<>"y"1750brelbuffer:::l -- dispatch the calls --v:9selection<38restorescreen(%1):ەrestorescreen(%2)1:=(80-n$(selection)))/2:n$(selec::videon$ -- get selection --::restorescreen(%0)35,2178,23:-y=2:desc$="Enter selection (0 to EXIT) $" œ1770 6920selection=-1:num=01870(&i=141:qw$(i))=numselection=i0$:selection<0selection>41nput Parameters"h:3,338,20:0r:39,180,21:::=12:"Output Parameters"|:41,378,20:1,180,24savescreen(%1)& -- paint the utilities screen --:1,180,21:::3,278,20:1,180,24 savescreen(%2):(A):63,278,9: A=3337#=a-31:=2:qw$(A);") ";N$(A):24,1178,19:: "A=3841,=10:qw$(A);") ";N$(A):624,2178,23:@1,180,24:savescreen(%0)&J -- paint the secondary menu -- T.^:1,140,21:::=12:"I:"ExerSOS Utilities",=24:=35:"(c) 1982 by Apple Computer";:3,221,23: A=120#=2:=a+1:qw$(A);") ";N$(A);:24,240,9: A=2326#=a-21:=2:qw$(A);") ";N$(A):43,260,9: A=2732#=a-23:=2:qw$(A);") ";N$r(@error%):error%=013702F:::=20:"** CANNOT ALLOCATE I/O BUFFER **" P:=20: Z -- paint the main menu -- dvideoff$n1,180,24::,x=4:"File Calls";:=25:"Device Calls";/=44:"Memory Calls";:=64:"Utility Calls""=43:=10rrow=21:escape=27:retrn=13>arrows$=uparrow)+downarrow)+leftarrow)+rightarrow)::videoff$1,180,5:::3,278,4::=2:=30 "** ExerSOS 1.0 **";videon$ œ1350"tool.code","screen.code"(2findbuffer&<geterro0)="43":qw$(31)="44":qw$(32)="45"Dqw$(33)="60":qw$(34)="61":qw$(35)="62":qw$(36)="63":qw$(37)="64"3qw$(38)="1":qw$(39)="2":qw$(40)="3":qw$(41)="4":videoff$=14):videon$=15):clrline$=30):bell$=7)Huparrow=11:downarrow=10:leftarrow=8:righta"C8":qw$(10)="C9"Dqw$(11)="CA":qw$(12)="CB":qw$(13)="CC":qw$(14)="CD":qw$(15)="CE"Dqw$(16)="CF":qw$(17)="D0":qw$(18)="D1":qw$(19)="D2":qw$(20)="D3"Dqw$(23)="82":qw$(24)="83":qw$(25)="84":qw$(26)="85":qw$(27)="40"Dqw$(28)="41":qw$(29)="42":qw$(3)="Display Directory"Ljn$(39)="Display Open File Table":n$(40)="Display Active Memory Segments"1tn$(41)="Display/Edit Contents of Data Buffer"?~qw$(1)="C0":qw$(2)="C1":qw$(3)="C2":qw$(4)="C3":qw$(5)="C4"@qw$(6)="C5":qw$(7)="C6":qw$(8)="C7":qw$(9)=_Num":n$(26)="D_Info">Bn$(27)="Request_Seg":n$(28)="Find_Seg":n$(29)="Change_Seg"CLn$(30)="Get_Seg_Info":n$(31)="Get_Seg_Num":n$(32)="Release_Seg";Vn$(33)="Set_Fence":n$(34)="Get_Fence":n$(35)="Set_Time"D`n$(36)="Get_Time":n$(37)="Get_Analog":n$(38esc$="aux_type":min&=0:max&=655356920:auxid%=num length%<421306*y=5:desc$="storage_type [1 or $D]":6920:type%=num4type%<>1type%<>132090>length%<821308Hy=6:desc$="EOF [0 ... $00FFFFFF]":6920:eofile&=num&DRsoscreate(@pathname$,%length%,%fileid%,%auxid%,%type%,&eofile&) \7250 f7320p -- DESTROY call -- 0zy=1:desc$="pathname":6920:pathname$=string$destroy(@pathname$) 7250 7320 -- RENAME call -- 0y=1:desc$="pathname":6920:pathname$=string$3y==1:min&=0:max&=255:desc$="ref_num" 6920:refnum%=num/* y=2:min&=0:max&=16384:desc$="request_count"4 6920:bytes%=num> soswrite(%refnum%,%bytes%) H 7250 R 7320\ -- CLOSE call -- 'f y=1:min&=0:max&=255:desc$="ref_num"p 6920:refnum%=num=1:min&=0:max&=255:desc$="ref_num" 6920:refnum%=num/ y=2:min&=0:max&=16384:desc$="request_count" 6920:bytes%=num* sosread(%refnum%,%bytes%,@bytesread%) 7250/ desc$="transfer_count":num=bytesread%:7160  7320 -- WRITE call --' yx&=255:desc$="ref_num"b 6920:refnum%=num*l y=2:min&=0:max&=255:desc$="is_newline"v 6920:isnew%=num, y=3:min&=0:max&=255:desc$="newline_char" 6920:newchar%=num( newline(%refnum%,%isnew%,%newchar%) 7250 7320 -- READ call -- ' ye$,%length%,%access%,@refnum%)  7250% desc$="ref_num":num=refnum%:7160,& index=refnum%:index>16index=index-1110 getlevel(@level%)?: ref(index)=refnum%:path$(index)=pathname$:lev(index)=level% D 7320N -- NEW_LINE call --'X y=1:min&=0:maname = ";pathname$ 7320 -- OPEN call -- 0 y=1:desc$="pathname":6920:pathname$=string$$ y=2:min&=0:max&=1:desc$="length" 6920:length%=num length%=03080( y=3:min&=0:max&=3:desc$="req_access" 6920:access%=num3 sosopen(@pathnam -- Set_PREFIX call -- 0T y=1:desc$="pathname":6920:pathname$=string$^ setprefix(@pathname$) h 7250 r 7320| -- Get_PREFIX call -- & y=1:min&=0:max&=255:desc$="length" 6920:length%=num# getprefix(@pathname$,%length%) 7250 "path -- VOLUME call --/ y=1:desc$="dev_name":6920:devname$=string$5 volume(@devname$,@volname$,@totblks%,@freeblks%)  7250" "vol_name = ";volname$+, desc$="total_blocks":num=totblks%:7160+6 desc$="free_blocks":num=freeblks%:7160 @ 7320J cks_used":num=blocks%:7160 length%<152800 "last_mod"# desc$=" year":num=year%:7160% desc$=" month":num=month%:7160# desc$=" date":num=date%:7160# desc$=" hour":num=hour%:7160' desc$=" minute":num=minute%:7160 732060P length%<428002Z desc$="aux_type":type%=15desc$="num_blocks"d num=auxid%:7160n length%<52800(x desc$="storage_type":num=type%:7160 length%<928001 desc$="EOF":num&=eofile&:num=eofile&):7160 length%<112800) desc$="blogth%=num~ getfileinfo(@pathname$,%length%,@attrib%,@fileid%,@auxid%,@type%,@eofile&,@blocks%,@year%,@month%,@date%,@hour%,@minute%)  7250( length%=02800$2 desc$="access":num=attrib%:7160< length%<22800'F desc$="file_type":num=fileid%:71nute%=nume setfileinfo(@pathname$,%length%,%attrib%,%fileid%,%auxid%,%year%,%month%,%date%,%hour%,%minute%) 7250 7320 -- Get_FILE_INFO call --0 y=1:desc$="pathname":6920:pathname$=string$% y=2:min&=0:max&=15:desc$="length" 6920:len=0:max&=99:desc$="year"t 6920:year%=num$~ y=7:min&=0:max&=12:desc$="month" 6920:month%=num# y=8:min&=0:max&=31:desc$="date" 6920:date%=num# y=9:min&=0:max&=24:desc$="hour" 6920:hour%=num& y=10:min&=0:max&=60:desc$="minute" 6920:mi& y=3:min&=0:max&=255:desc$="access" 6920:attrib%=num$ length%<22510). y=4:min&=0:max&=255:desc$="file_type"8 6920:fileid%=numB length%<42510*L y=5:min&=0:max&=65535:desc$="aux_type"V 6920:auxid%=num` length%<152510#j y=6:min&2:desc$="new_pathname":6920:newpath$=string$$sosrename(@pathname$,@newpath$) 7250 7320 -- Set_FILE_INFO call -- 0y=1:desc$="pathname":6920:pathname$=string$%y=2:min&=0:max&=15:desc$="length"6920:length%=num length%=02510z sosclose(%refnum%) 7250$ refnum%>16refnum%=refnum%-111% refnum%<>0ref(refnum%)=0:3520 getlevel(@level%)& a=140:lev(a)>=level%ref(a)=0 7320 -- FLUSH call -- ' y=1:min&=0:max&=255:desc$="ref_num" 6920:refnum%=num flush(%refnum%) 7250 7320 -- Set_MARK call -- 'y=1:min&=0:max&=255:desc$="ref_num"6920:refnum%=num"$y=2:min&=0:max&=3:desc$="base".6920:base%=num8y=3:desc$="displacement"B6920:displacement&=num&,Lsetmark(%refn6920:page%=numR.findseg(%mode%,%segid%,@page%,@basebk%,@basepg%,@limitbk%,@limitpg%,@segnum%)8geterror(@error%)5Berror%<>2257250:4970: spcl case for SEGRQDNL42,478,20:V"SOS Error Code = ";:=23`ERROR%),2):!jdesc$="pages%,@segnum%) 7250%desc$="seg_num":num=segnum%:7160 7320 -- FIND_SEG call -- +y=1:min&=0:max&=255:desc$="search_mode"6920:mode%=num&y=2:min&=0:max&=255:desc$="seg_id"6920:segid%=num'y=3:min&=0:max&=65535:desc$="pages"$py=2:desc$="base page"z6920:basepg%=numy=3:desc$="limit bank"6920:limitbk%=numy=4:desc$="limit page"6920:limitpg%=num&y=5:min&=0:max&=255:desc$="seg_id"6920:segid%=numCreqseg(%basebk%,%basepg%,%limitbk%,%limitpg%,%segidh%<84680*desc$="total_blocks":num=blocks%:7160 length%<104680%*desc$="manuf_id":num=manuf%:71604length%<114680)>desc$="version_num":num=vernum%:7160 H7320R -- REQUEST_SEG call -- \y=1:desc$="base bank"f6920:basebk%=num ";devname$length%<14680'desc$="slot_num":num=slotnum%:7160length%<24680'desc$="unit_num":num=unitnum%:7160length%<44680'desc$="dev_type":num=devtype%:7160length%<64680&desc$="sub_type":num=devsub%:7160 lengtFO call --&vy=1:min&=0:max&=24:desc$="dev_num"6920:devnum%=num%y=2:min&=0:max&=11:desc$="length"6920:length%=numhdinfo(%devnum%,@devname$,%length%,@slotnum%,@unitnum%,@devtype%,@devsub%,@blocks%,@manuf%,@vernum%) 7250"dev_name =+num)1dcontrol(%devnum%,%code%,@devlist$,%length%) 7250 &73200 -- Get_DEV_NUM call --/:y=1:desc$="dev_name":6920:devname$=string$"Dgetdevnum(@devname$,@devnum%) N7250%Xdesc$="dev_num":num=devnum%:7160 b7320l -- D_IN&=0:max&=255:desc$="control_code"6920:code%=num/y=3:min&=0:max&=255:desc$="length of input"6920:length%=numlength%=04370devlist$=""#a=1length%:y=a+4:y>24y=24'min&=0:max&=255:desc$="byte #"+a)"6920:devlist$=devlist$@length%>2554150Jlength%=04230T42,878,20:^a=1length%hascii=devlist$,a,1))*rdesc$="Byte #"+a):num=ascii):7160| 7320 -- D_CONTROL call --'y=1:min&=0:max&=255:desc$="dev_num"6920:refnum%=num,y=2:minfirst%=2558min&=0:max&=0:y=3:desc$="Initialize Buffer [Y or N]"6920:a$=string$,1)%a$="Y"a$="y"init%=1:init%=06"dstatus(%devnum%,%code%,%first%,%init%,@devlist$) ,7250;6y=3:desc$="Amount of keyboard output":6920:length%=num -- Get_LEVEL call -- "[None]"getlevel(@level%) 7250"desc$="level":num=level%:7160 7320 -- D_STATUS call --'y=1:min&=0:max&=255:desc$="dev_num"6920:refnum%=num+y=2:min&=0:max&=255:desc$="status_code"6920:code%=numin&=0:max&=255:desc$="ref_num"(6920:refnum%=num2geteof(%refnum%,@eofile&) <72501Fdesc$="EOF":num&=eofile&:num=eofile&):7160 P7320Z -- Set_LEVEL call --&dy=1:desc$="level":6920:level%=numnsetlevel(%level%) x7250 7320min&=0:max&=255:desc$="ref_num"6920:refnum%=num"y=2:min&=0:max&=3:desc$="base"6920:base%=numy=3:desc$="displacement"6920:displacement&=num&+seteof(%refnum%,%base%,&displacement&) 7250 7320 -- Get_EOF call -- 'y=1:mum%,%base%,&displacement&) V7250 `7320j -- Get_MARK call -- 'ty=1:min&=0:max&=255:desc$="ref_num"~6920:refnum%=numgetmark(%refnum%,@mark&) 7250.desc$="mark":num&=mark&:num=mark&):7160 7320 -- Set_EOF call -- 'y=1:":num=page%:7160'tdesc$="base bank":num=basebk%:7160'~desc$="base page":num=basepg%:7160)desc$="limit bank":num=limitbk%:7160)desc$="limit page":num=limitpg%:7160%desc$="seg_num":num=segnum%:7160 7320 -- CHANGE_SEG call --'y=1:min&=0:max&=255:desc$="seg_num"6920:segnum%=num+y=2:min&=0:max&=255:desc$="change_mode"6920:mode%=num'y=3:min&=0:max&=65535:desc$="pages"6920:page%=num&changeseg(%segnum%,%mode%,@page%) 7250! desc$="pages":num=page%:7160 =57:"$";page%),2);=67:"$";segid%),2) 7320/ -- Display/Edit Contents of IO Buffer -- /=25:y=1:desc$="Page Number":min&=0:max&=636920:pagenum%=num:-displaybuffer(@part1$,@part2$,%pagenum%)bufptr=0:n$=part1$:67(%segnum%,@basebk%,@basepg%,@limitbk%,@limitpg%,@page%,@segid%)'Lgeterror(@error%):error%<>06300V=7:"$";segnum%),2);`=19:"$";basebk%),2);j=24:"$";basepg%),2);t=37:"$";limitbk%),2);~=43:"$";limitpg%),2);(refnum);:=30:path$(refnum);=57:lev(refnum):a=1a=0=31:"[None]" :7320* -- Display Active Memory Segments --5$=5:"Seg Num Base Address Limit Address";!." Pages Seg ID":8segnum%=130NBgetseginfo0œ:=25:"Device/Pathname Not Found":7320"pathname$)=0:pathname$ :7320' -- Display File Table utility -- %=15:"Refnum";:=30:"Pathname";=55:"Level":a=0refnum=140ref(refnum)=06140+=17:ref="JSn-X":num=jval3%:7160"4desc$="JSn-Y":num=jval4%:7160 >7320'H -- ExerSOS utility dispatcher -- R5,376,19:%\selection-375990,6060,6170,6320f -- CATALOG utility -- 'p=25:y=1:desc$="Directory Pathname"z6920:pathname$=string$:yme$,16)):7160 7320 -- Get_ANALOG call -- (y=1:min&=0:max&=255:desc$="joy_mode"6920:jmode%=num6joystick(%jmode%,@jval1%,@jval2%,@jval3%,@jval4%) 7250"desc$="JSn-B":num=jval1%:7160# desc$="JSn-Sw":num=jval2%:7160"*desc$*desc$="date":num=tyme$,7,2)):71601desc$="day of week":num=tyme$,9,1)):7160+desc$="hour":num=tyme$,10,2)):7160-desc$="minute":num=tyme$,12,2)):7160-desc$="second":num=tyme$,14,2)):71600desc$="microsecond":num=t999:desc$="microsecond":6920":tyme$=tyme$+"0000"+num),3)Dsettime(@tyme$) N7250 X7320b -- Get_TIME call -- l"[None]"vgettime(@tyme$) 7250*desc$="year":num=tyme$,1,4)):7160+desc$="month":num=tyme$,5,2)):7160+000))y=5:min&=0:max&=23:desc$="hour":6920"tyme$=tyme$+"0000"+num),2)+y=6:min&=0:max&=59:desc$="minute":6920"tyme$=tyme$+"0000"+num),2)+y=7:min&=0:max&=59:desc$="second":6920"&tyme$=tyme$+"0000"+num),2)10y=8:min&=0:max&=t_TIME call -- .y=1:min&=1980:max&=9999:desc$="year":6920tyme$="0000"+num),4)*y=2:min&=0:max&=12:desc$="month":6920"tyme$=tyme$+"0000"+num),2))y=3:min&=0:max&=31:desc$="date":6920"tyme$=tyme$+"0000"+num),2)tyme$=tyme$- Set_FENCE call -- %6y=1:min&=0:max&=255:desc$="fence"@6920:priority%=numJsetfence(%priority%) T7250 ^7320h -- Get_FENCE call -- r"[None]"|getfence(@priority%) 7250%desc$="fence":num=priority%:7160 7320 -- Sepage"6920:segpg%=num(getsegnum(%segbk%,%segpg%,@segnum%) 7250%desc$="seg_num":num=segnum%:7160 7320 -- RELEASE_SEG call -- 'y=1:min&=0:max&=255:desc$="seg_num"6920:segnum%=numrelseg(%segnum%) 7250 "7320, -:7160)ddesc$="limit bank":num=limitbk%:7160)ndesc$="limit page":num=limitpg%:7160!xdesc$="pages":num=page%:7160#desc$="seg_id":num=segid%:7160 7320 -- Get_SEG_NUM call --y=1:desc$="seg bank"6920:segbk%=numy=2:desc$="seg 7320 -- Get_SEG_INFO call -- '(y=1:min&=0:max&=255:desc$="seg_num"26920:segnum%=numN<getseginfo(%segnum%,@basebk%,@basepg%,@limitbk%,@limitpg%,@page%,@segid%) F7250'Pdesc$="base bank":num=basebk%:7160'Zdesc$="base page":num=basepg%20n$=part2$:67201,2280,24:=2:=4O" to Exit, to move cursor, to alter data"5,376,19, x=1:y=1:lastx=1:lastxx=1:lasty=1:was$="" -- Editor -- +=lasty:=lastxx:" ";:=lastxx+3:" ";(=52+lastx:was$;2xx=(x-1)*3+1:z=x+((y-1)*16)<=y:=xx:"[";:=xx+3:"]";&Fis$=buffer$(z):is$)<32is$="."P=52+x::is$;:&Zlastx=x:lastxx=xx:lasty=y:was$=is$d - get a byte -na$:a=a$)>xa=escape=xx:" ";:=xx+3:" ";:=52+lastx:warror%),2):error%=0:ۭ6 -- see if he's done. if so, back to main menu --1,2280,24: =12:=2@"Enter to return to Main Menu, to continue" a$:a$=escape)175042,478,20: :1940num&<0num&=num&+65536 "8#";num&;:=28:"$";*num1&=num&65536+4num&>65535(num&-num1&)/65536));>num1&))HR -- error handler -- \42,478,20: fERROR%=0pgeterror(@error%)z"SOS Error Code = ";:=23e767num=(num-65536)min&=0max&=0.num&max&=y:clrline$:6920min&=0:max&=0; -- output a value with its description & hex value -->num<1000000num&=num): [ else num& has been loaded ] desc$;" = ";:=17)))((string$,1)="$")(hx=1))71000string$,1)="$"string$=string$,lstr-1)num&=string$))num&<0num&=65536+num&lstr<=471003num&=num&+(string$,string$)-4))*65536))#num&<65536num=num&):num=0num>320)" [";min&));" ... ";max&));"]";(:hx" - $";string$:ۃ" - ";string$'Dstring$="\":min&=0:max&=0:1750!Nlstr=string$):lstr=06930Xstring$,1)<>" "7030blstr=16930#lstring$=string$,lstr-1):6990vnum&=string$$,@part2$,%pagenum%)a<32was$=".":was$=a$, -- input a numeric or string value -- <=y:hx=0:desc$,1)="$"hx=1:desc$=desc$,desc$)-1) desc$;<&hx=0min&<>0max&<>0)" [";min&;" ... ";max&;"]";H0hx=1min&<>0max&<>;x$: - calc value & update -&a=hi$+lo$):a$=a):buffer$(z)=a$z>128z=z-128y<9n$=part1$:n$=part2$z>1l$=n$,z-1):l$="""z<>128r$=n$,128-z):r$=""*y<9part1$=l$+a$+r$:part2$=l$+a$+r$-replacebuffer(@part1,a$)=0bell$;:6640,hi$=lo$:lo$=a$ 66640!@ - display half of buffer - Jptr=0Ta=18:x$="":=2^b=116:ptr=ptr+1hn=n$,ptr,1))(rbufptr=bufptr+1:buffer$(bufptr)=n)|n),2);" "; n>31x$=x$+n):x$=x$+".":" "1 6420 - prep for user input -"lo$=a$:xx=xx+1:old$=buffer$(z)old$=old$)),2)hi$=old$,1) - value input -=xx:hi$;lo$;a$:a=a$) a=escape=xx:old$;:6420a=retrn6820:64204""0123456789ABCDEFabcdef"s$;:7320,"0123456789ABCDEFabcdef",a$)<>06600#arrows$,a$)=0bell$;:6500 a=uparrowy=y-1:y<1y=16"a=downarrowy=y+1:y>16y=13a=leftarrowx=x-1:x<1x=16:y=y-1:y<1y=164a=rightarrowx=x+1:x>16x=1:y=y+1:y>16y=RETADR 3ADDRESS  ESS DEVNUM2 ,VNUM2 SAVESCRE SAVESCREADDRESS }ESS DEVNUM2 )RESTORES RESTORESADDRESS  SCREENBU SCREENBU 2LTCopyright (c) 1982, Apple Computer Inc.222hhh|h}HH`hh}H|HHH`6hShTh5h6 ~50L?THSH`X{| |~! " `gA3/1.1ӄv GLOBALS RETADR 3ADDRESS  ESS DEVNUM2 ,VNUM2 SAVESCRE SAVESCREADDRESS }ESS DEVNUM2 )RESTORES RESTORESADDRESS %SCREENBU SCREENBU  Copyright (c) 1982, Apple Computer Inc.33333%%(& h h   `+% 6 hh ` ( h/h0h1h2hhhhh.hh-h ,`1/-+%"E&!P hhh/h .0舭1舭2舭3`/)#UED6 d h hhhhh `-8 hhh=h>h:h 9?舭@`=;9$QA@<1` h.h/h+h *`-+);-,(J{vpmif\ pl  ` , h"hhWhX  `!+: hhhDhhCh  = @ꈘ`DC@+`nkgd_[WS?M hhhhhWhX XY0L OTVUW `Xh]h X`^khe\[URQNLJGD81GFA? hhhhhhhhhhhhhhhhhhhhhhhh ľJ) JJJJJ )ȭ` ,  340L .`3ic_TM}|vihca hkhhlhhmhh mihJJJmh mjhh`hah_hh^h 2 2 `0L6`A) OIE>3+)'d hh 舘`" hIhJhKhLhhhhhHhhFhGhEhhDh ?`EKIGE?<:85)" g8720v  L `@EA;2$NH?;851nE `!* hQhhhhWhX Qm 9WX 9`0L? `O<1$_QPH,(r hBmhCopyright (c) 1982, Apple Computer Inc.zvuskh]K ACH I8 L3C;6N h/h0h1h2hhhhh.hh-h ,`1/-+%"E&!P hhh/h .0舭1舭2舭3`/)#C;6N hh ` ( hh ȭ` %"0 hWhXhh hhh?hh>h = `%"K;6*%"` hh  Lhhh+hh*h )` 9/H hh !$ꈘ`-'&! ROR GETSTRIN TSTRINRESTACK  STACK STRING  RING VOLUME VOLUME  UNSTACK w STACK PATHNAMESTHNAMEERROR OROR GETSTRIN THNAMEERROR  ROR GETSTRIN TSTRINRESTACK  STACK GETFILEI GETFILEI UNSTACK a STACK PATHNAME NAMEPUTSTRIN TSTRINERROR 6 RING UNSTACK % STACK PATHNAME THNAMEERROR  ROR GETSTRIN TSTRINRESTACK  STACK SETFILEI SETFILEI UNSTACK  STACK PATHNAME TSTRINRESTACK  STACK UNSTACK  STACK PATHNAMES . NAMESOSRENAM SOSRENAM ERROR O ROR GETSTRINE + TRINRESTACK H STACK STRING SOSCREATERROR  ROR GETSTRIN TSTRINRESTACK  STACK UNSTACK { STACK PATHNAME THNAMEDESTROY DESTROY ERROR  ROR GETSTRIN# RING IOBUFFER FFERUNSTACK  STACK ERROR _ ROR RESTACK Z STACK UNSTACK U STACK GETERROR GETERRORPATHNAME THNAMESOSCREAT  RING DISPLAYB DISPLAYBIOBUFFER FFERUNSTACK w STACK PATHNAME THNAMEREPLACEB REPLACEBGETSTRIN  TRINRESTACK  STACK STRING ROR IOBUFFER  BUFFERSEI FFERSEERROR S ROR RELBUFFE RELBUFFEPATHNAME THNAMEPUTSTRIN TSTRINRESTACK  STACK STRING PATHNAME~GLOBALS GLOBALS BUFFERSEPUTSTRINUERROR GETSTRIN"RESTACK STRING IOBUFFERUNSTACK BUFFERSE FFERSEFINDBUFF FINDBUFFERROR 71+(%"QC>\d 8f0$8z.d<PD  B t  *)]Xz hhh)hh(h D'*舭+`'$9,'D hh E` ( hh `` ( hh a舘`%"0  b` , hWhX c `' 8 hhhhhhhhh<h d;=>?@`V hhhhhhhhhhhhhQh CPRSTUVX򈘑W`KE?<9630! o]Xz hhh)hh(h D'*舭+`'$9,'D hh E` ( hh %M1,X hhhhhhhhhhhhhdhhch efAbeghijk򈘑f`]ZQMKEB?<96' p^ h5hh6hhh78 B47舭8`74,(#K1,< hhhhhhhhhhhhhhhvhhWhXhqh p wxyz|~}`wqhbVSPMJGD@=:*}y8 hhh9hh8hh7hh6hh5h @4:舘`741.+ETSTRINRESTACK HSTACK SETPREFI SETPREFI UNSTACK ?STACK PATHNAMETHNAMEPUTSTRINTSTRINERROR ROR RESTACK }STACK UNSTACK oSTACK GETPREFI GETPREFIPATHNAMETHNAMESOSOPEN SOSOPEN ERROR ROR GETSTRINTSTRINRESTACK STACK UNSTACK STACK ERROR ]TSTRINRESTACK `STACK STRING kRING SETTIME 'SETTIME 'UNSTACK WSTACK PATHNAMETHNAMEPUTSTRINTSTRINGETTIME (GETTIME (ERROR ROR RESTACK STACK UNSTACK STACK GETFENCE &GETFENCE&ERROR /ROR RESTACK (STACK UNSTACK #STACK ERROR gROR GETSTRINSTACK GETSEGNU #GETSEGNU#UNSTACK STACK ERROR ROR RESTACK STACK RELSEG $RELSEG $UNSTACK STACK SETFENCE %SETFENCE%ERROR STACK CHANGESE !CHANGESE!UNSTACK STACK ERROR  ROR RESTACK STACK GETSEGIN "GETSEGIN"UNSTACK STACK ERROR ROR RESTACK STACK REQSEG REQSEG UNSTACK STACK FINDSEG FINDSEG  ERROR BROR RESTACK .STACK UNSTACK STACK ERROR ROR RESTACK STACK PATHNAMEvTHNAMEDINFO  DINFO PUTSTRIN3TSTRINERROR -ROR RESTACK &STACK UNSTACK STACK ERROR ROR RESTACK STACK STRING RING UNSTACK ySTACK PATHNAMETHNAMEERROR ROR GETSTRINTSTRINRESTACK STACK GETDEVNU GETDEVNUUNSTACK CROR RESTACK <STACK STRING T.' DSTATUS DSTATUS UNSTACK STACK DCONTROL DCONTROLERROR ROR GETSTRINTSTRINRESTACK SETLEVELUNSTACK STACK ERROR ROR RESTACK STACK GETLEVEL GETLEVELUNSTACK STACK PATHNAMEHTHNAMEPUTSTRINNTSTRINERROR STACK SETEOF SETEOF ERROR tROR RESTACK mSTACK GETEOF GETEOF UNSTACK cSTACK ERROR ROR RESTACK STACK SETLEVEL STACK UNSTACK iSTACK GETMARK GETMARK ERROR ROR RESTACK STACK UNSTACK STACK ERROR 7ROR RESTACK 0STACK UNSTACK SOSCLOSEUNSTACK STACK ERROR LROR RESTACK ESTACK FLUSH FLUSH UNSTACK =STACK SETMARK SETMARK ERROR ROR RESTACK QSTACK ERROR ROR RESTACK STACK IOBUFFERFFERSOSWRITE SOSWRITEUNSTACK STACK ERROR ROR RESTACK  STACK SOSCLOSE .ROR RESTACK 'STACK NEWLINE NEWLINE UNSTACK STACK ERROR yROR RESTACK cSTACK IOBUFFERlfFFERSOSREAD SOSREAD UNSTACK ROR RESTACK STACK STRING RING UNSTACK STACK ERROR ROR RESTACK STACK JOYSTICK )JOYSTICK)UNSTACK STACK  H M B (/N^ʤ ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   START .EQU 9000 ; Code begins at $9000 (.ORG START-0E ; Leave 12 bytes for header (.ASCII "SOS NTRP" ; label for SOS.INTERP (.WORD 0000 on the ExerSOS disk. ;  ;***************************************************************** (.PAGE  ;***************************************************************** ; ; Header Part of File ; hem: this ; is recommended practice with the Apple III Pascal ; Assembler.  ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; The source file for the Screenwriter program is replicated ; as SCREENWRIT.TEXTan be coded ; as subroutines. They can be coded with or without a ; macro, SOS. The macro itself can use the SOS call number, ; or it can use the name, via an .EQUate. In general, ; data structures appear before the code using t ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;  ; Note on programming style: the style of this program is ; deliberately inconsistent, to show several ways to code ; SOS calls. They can be coded in line; they cto the interpreter. If the character typed before the ; CONTROL-Q is ESC, the event handler beeps thrice and ; issues a TERMINATE call; if not, the event handler just ; beeps thrice.  ; rites explicitly, without using screen ; echo. ;  ; The interpreter contains an event mechanism. When ; CONTROL-Q is read, the console driver detects it as an ; event. The event is processed when control next returns ; homas Root, 11 August 1982  ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; This program reads bytes from the keyboard, then writes ; them out to the screen, without filtering out control ; characters. It w(.ABSOLUTE (.NOPATCHLIST (.NOMACROLIST  .PROC SCREENWRITER   ;***************************************************************** ; ; Screenwriter Program ; ; Sample Interpreter for SOS Reference Manual ;  ; Don Reed and T ; opt_header_length = 0 (.WORD START ; loading_address (.WORD CODELEN ; code_length (JMP BEGIN ; Jump to beginning of code  ;***************************************************************** (.PAGE  ;***************************************************************** ; ; Macros, Equates, and Global Data Area  ; ; The syntax for a SOS call using the macro below is ;  ; SOS call_num, parameter_list pointer ;  ; The macro definiti(JSR SETCONS ; Disable echo (JSR ARMCTRLQ ; Arm attention event (SOS 60, FENLIST ; Set event fence to 0: @; here we coded "60" directly (LDA REF ; Set up ref_num (STA RREF ; This is the setup portion, executed at the start. ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   BEGIN .EQU *  JSR OPENCONS ; Open .CONSOLE (JSR GETDNUM ; Get dev_num  ;***************************************************************** (.PAGE  ;***************************************************************** ;  ; Main Program Code ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; ount WPLIST .BYTE 03 ; 3 parameters for WRITE WREF .BYTE 00 ; ref_num (from OPEN call) .WORD BUFFER ; data_buffer pointer WCNT .WORD 0000 ; request_count   RCLIST .BYTE 04 ; 4 parameters for READ RREF .BYTE 00 ; ref_num (.WORD BUFFER ; data_buffer pointer (.WORD 0001 ; request_count RCNT .WORD 0000 ; transfer_c lists for SOS calls in the ; main program. ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: FENLIST .BYTE 01 ; 1 parameter for SET_FENCE (.BYTE 00 ; fence = 0 en out. ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   BUFFER .BYTE 00, 0A ; data buffer with trailing LF (  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; Here are required parameter ; Console dev_num  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;  ; Here is the data buffer for the READ and WRITE calls in ; the main program. Only the first byte is written into; ; one or both are writt ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  CNAME .BYTE 08 ; name_length (.ASCII ".CONSOLE" ; pathname of console REF .BYTE 00 ; Console ref_num CONSNUM .BYTE 00 r (.PAGE  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; These variables are used for communication between the ; main program and the OPENCONS subroutine. ; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; Here are more .EQUates: ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  FALSE .EQU 00 TRUE .EQU 80  BREG .EQU 0FFEF ; Bank registe  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: (  READ .EQU 0CA ; call_num for READ WRITE .EQU 0CB ; call_num for WRITE D_CNTL .EQU 083 ; call_num for D_CONTROL   ;:::::(.BYTE %1 ; call_num (.WORD %2 ; parameter_list pointer (.ENDM ; end of macro definition  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;  ; Here are .EQUates for call_nums: ;on for a SOS call block using the above ; format is below: ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: (.MACRO SOS ; Macro def for SOS call block (BRK ; Begin SOS call block for reads (STA WREF ; and writes   ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ; This is the main loop, executed until termination. ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  $010 SOS READ, RCLIST ; Read in one byte: @; here we used READ for 0CA (LDA RCNT ; IF no bytes were read (BEQ $010 ; THEN go read again (STA WCNT ; Set up write count (LDABANK .BYTE 00 ; Event handler bank (.BYTE 11 ; Attention char = CTRL-Q  ARMCTRLQ (LDA BREG ; Set up bank number (STA BANK ; of event handler (LDA CONSNUM ; Set up ; control_list pointer   CLIST ; Control list (.BYTE 0FF ; Event priority (.BYTE 02 ; Event ID (.WORD HANDLER ; Event handler address ::::::::::::::::::: DCLIST .BYTE 03 ; 3 required parms for D_CONTROL DNUM .BYTE 00 ; dev_num of .CONSOLE goes here (.BYTE 06 ; control_code= 06: @; Arm Attention Event (.WORD CLIST CNUM ; of .CONSOLE (SOS D_CNTL, SETLIST (RTS   ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ; ; ARMCTRLQ: Arm the Attention Event for CONTROL-Q  ;  ;:::::::::::::::::::::::::::::::::::::::::::::: .BYTE 0B ; control_code = 0B: screen echo (.WORD CONLIST ; control_list pointer  CONLIST .BYTE FALSE ; Disable screen echo   SETCONS (LDA CONSNUM ; Set up device number (STA een echo ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: SETLIST .BYTE 03 ; 3 required parms for D_CONTROL CNUM .BYTE 00 ; dev_num of .CONSOLE GDLIST (LDA GDNUM ; Save the result dev_num (STA CONSNUM ; for console control (RTS (.PAGE  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ; ; SETCONS: set the .CONSOLE file to suppress scr::  GDLIST .BYTE 02 ; 2 parameters for GET_DEV_NUM .WORD CNAME ; dev_name pointer GDNUM .BYTE 00 ; dev_num goes here   GETDNUM (BRK (.BYTE 84 ; Call GET_DEV_NUM (.WORD(STA REF ; for READs and WRITEs. (RTS  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ; ; GETDNUM: Get the device number of .CONSOLE  ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::e didn't use a macro. (BRK ; Begin SOS call block. (.BYTE 0C8 ; Open the console. (.WORD COLIST ; Pointer to parameter list (LDA CREF ; Save the result ref_num ; ref_num returned here (.WORD COPLIST ; option_list pointer (.BYTE 01 ; length of opt parm list   COPLIST .BYTE 03 ; Open for reading and writing  OPENCONS ; Here wOPENCONS: open the .CONSOLE file for reading ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  COLIST .BYTE 04 ; 4 required parameters for OPEN (.WORD CNAME ; pathname pointer CREF .BYTE 00  ;***************************************************************** (.PAGE  ;***************************************************************** ; ; SUBROUTINES ;  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ; ; BUFFER (CMP #0D ; IF first byte in buffer is CR (BNE $020 ; THEN write out LF also (INC WCNT $020 SOS WRITE, WPLIST ; Write out 1 or 2 bytes (JMP $010 ; Repeat ad infinitum ( device number (STA DNUM ; for control request (SOS D_CNTL, DCLIST ; D_CONTROL call macro (RTS (.PAGE  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;  ; HANDLER: Attention event handler subroutine ; ; This subroutine reads the attention character (CONTROL-Q) ; from .CONSOLE, then beeps thrice. If the previous ; character was ESCAPE, the program terminates. ; ; A buffer separate from the main data buffer is used O^  CODELEN .EQU *-START ; Calculate number of bytes in (.END ; program  ;*****************************************************************  ;*****************************************************************   ;***************************************************************** ; ; End of program -- calculate length ; ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::SCAPE (BNE $010 ( (SOS 0CC, HBLK3 ; THEN CLOSE all files (SOS 065, HBLK4 ; and TERMINATE  $010 JSR ARMCTRLQ ; ELSE re-arm attention event ' RTS ; and resume execution ; for console READ ' STA HREF2 ; and console WRITE ' SOS READ, HBLK1 ; Read attention character ' SOS WRITE, HBLK2 ; Write three BELs to .CONSOLE (LDA BUFFER (CMP #1B ; IF last keystroke was E ; 1 required parameter for CLOSE (.BYTE 00 ; ref_num = 0: CLOSE all files HBLK4 .BYTE 00 ; 0 required parms for TERMINATE (.PAGE  HANDLER ' LDA REF ; Set up reference numbers ' STA HREF1 HBLK2 .BYTE 03 ; 3 required parameters for WRITE HREF2 .BYTE 00 ; ref_num ' .WORD BELLS ; data_buffer pointer ' .WORD BELLEN ; request_count HBLK3 .BYTE 01 ; ref_num ' .WORD HBUF1 ; data_buffer pointer ' .WORD 0001 ; request_count (.WORD 0000 ; transfer_count  HBUF1 .BYTE 0 ; Buffer for attention character 16, 16, 16, 16, 16, 16, 16, 16, 16 ; SYNCs ' .BYTE 07 ; BEL BELLEN .EQU *-BELLS ; Calculate buffer length HBLK1 .BYTE 04 ; 4 required parameters for READ HREF1 .BYTE 00 :::::::  BELLS .EQU * ; Buffer with BELs and delay: ' .BYTE 07 ; BEL (.BYTE 16, 16, 16, 16, 16, 16, 16, 16, 16 ; SYNCs ' .BYTE 07 ; BEL (.BYTE ; The buffer BELLS contains three BEL characters, separated ; by a number of SYNC characters. When written to the ; console, these cause a total delay of about 150 ms.  ;  ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::for ; reading the attention character, as otherwise the ; attention character would sometimes clobber the character ; in the data buffer before it could be written. ; } END; CLOSE(F,LOCK); CLOSE(G,LOCK); WRITELN;WRITELN; WRITELN(' File converted.'); END. BLKS := BLOCKREAD(F, BUFFER, 1, I); {READ BLOCK 1 OF INPUT} WHILE NOT EOF(F) DO BEGIN BLKS := BLOCKWRITE(G, BUFFER, 1, I-1); {WRITE NEXT OUTPUT BLOCK} I := I + 1; WRITE('.'); BLKS := BLOCKREAD(F, BUFFER, 1, I); {GET NEXT INPUT BLOCKtearns 7 October 1981'); WRITELN; WRITE(' Input pathname? '); READLN(INNAME); RESET(F,INNAME); WRITE(' Output pathname? '); READLN(OUTNAME); REWRITE(G,OUTNAME); WRITELN; WRITE(' Converting Files'); I := 1; INNAME,OUTNAME: STRING; BUFFER: PACKED ARRAY [0..511] OF CHAR; I,BLKS: INTEGER; BEGIN WRITELN;WRITELN;WRITELN; WRITELN(' MakeInterp Utility'); WRITELN(' Creates SOS.INTERP-format file from Pascal Code File'); WRITELN(' Bryan S *} {* BJS 7 October 1981 *} {* *} {****************************************************************} VAR F,G: FILE; PROGRAM MakeInterp; {****************************************************************} {* *} {* Convert a .CODE file into a SOS.INTERP file. *} {*