3\X COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<ԯ2 Շ!۶2:2a{_:۷ʖ:۷>Ľʖ:=2–!B!6#5ʖ:۷Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "ַ"͌#>?͌͘ =_.:;<> Oօo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER!yO#< Ty#O 3ׯ21y_͸2y2ͽ:Է˜1͘A͌>>92^ :۷¥.!_~#fow]٭ڎڥ!v"!çREAD ERRORçNO FILE^:۷ ! ~ 3#0 Wx x ր ւ G ~ # 3x~#B!Y~ɯ2:۷=!۾ý:۷=!۾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ٯw4!Y~ʆ͌†t=ʆf ^ T ٯ2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Yڸpsp2mÆÆf ͧÆFILE EXISTS _: É: :۷ʉ=2)ͽÉ T!@k!0}|q=qf^!~2>`~2ۯ2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !۶ Â$$$ SUBܙܥܫܱ"C{2!"E9"1A߯22!ty)K!G_^#V*Cސ~E ,&-AGMSߛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :߷E B 2>: ߷b# : ߷y! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! ߾ Hù H H $O͐: 2 *CN# x: 2 p&x~+é7ݯ2 H! >w_: ! ߾5ͤNkͱ¦ͱxʊ#Nx: ߷! ߖ2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:页o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*鯆# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw**{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A߾#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:E߷ẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E߷͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄSBASIC COML OVERLAYBCOM6BASICLIBREL !"BASICLIBRELD#$%&'USERLIB REL(WS COM )*+,-./01WSOVLY1 OVR23456789:;<=>?@AWSOVLY1 OVRBWSMSGS OVRkCDEFGHIJKLMNOPQBKMENU BASiRSTUVWXCANDR-C BASYZCANDR-S BAS[\CANDR-S COM.]^_CBMENU BASw`abcdefgDPLAY BAShFAC BASiGRAPHICSBASjkGRAPHICSDOCBlmnopSBMENU BAS3qrstSBAENU AOA-uvwxyz{|}~XAMN BASH !$$$i6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!B߾w!>2*C~=2u:B2~2wE:A*C߶w>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>2é#Êï $imquy}Ç?Ù  0123456789-, ., D De2:32!JF#N#~ :G:H KAYPRO 10 CP/M Version 2.2F !"P>!2"!2":OyOmie Warm Boot 1qCTy,u} *TDM"Ty2 >( q*P+"P|:M :.3ʝ.*Ý>͊(:M /:.6ʝ.-͝!5O ~!ay''O "K>2M*KN#"K:M=2My~y2My.'Ý:.9ʝ.EÝ.6Ý.9Ý:.9ʝR.E@ʝ.9Ý:.Bʝ.<ʝ? y˟.4. 0.,.(.$. !"P.!"P.:4(.!sR1&{R˿~#O   8 >1͌0͌>>Ì 2N2O2<:N(!2O:O_ 2:N_ :<:O_ :N_ ÙCopyright (c) 1980 By G.Ohnysty Structured BASIC (S-BASIC) Compiler All rights reservede1:e_12!"*"LʊOVERLAYBCOM~#"_  CANNOT OPEN OVERLAYBcREAD ERROR OVERLAYBi:|=_} $$$$$$FfGfHfIffff,*G' tm S-BASIC Compiler Version 5.4b Y'r&>22!9"\:j'&:w":8MY>XXYͯ4p=X:tXYX:uXY>2:Y2͇:Y:v;[Z:~ [:z[f:xb,$END.MODULExr&LXtYHҚ=o&)^#VʠHSc K d HS w HSHSk!!!!)}$$HSHS$HSVHSHSHSR HSc,Aid5JXq w  20 F 9~Nc7:8/28*&ͬ)MY!)MY&*&b,=S*&ͬ)!,R*L>2PS&ʓh,ON>ڗ/×:X/2Xr&>2&*&ͬ)"a*&:::=2?a!w#x6 #&L*r&!\>!͉K!\>͉K:!]~# a:, ʍ*t:X>2X&:OG'MODULE NOT FOUND2XØb,$MODULE|&:4!,|ʂ#nr&)r&2X"tͯ&>22ì\!\>ͫK!\>!ͫK͹&&h,ON>/:w/2wͯ4p=X>XYX>XYr&>2&> ͽX>2e> ͽX>2l 5 5MYMYMYyMY2/)MY}MYH)͈)MY>2l 5 5MYMYMY"/)MY{MY2H)͈)MYMY[&b,ERROR *&*&:Y» MY!*&LR%YtY>MY>XXYͯ4s=b,OFFHS>é >2l 5MYMY}2I :Y2J   NS*&:J  MYMYX:I <2I XY:J  MY$ MYLR%YtY:J < MY&* `SX>XY*&LR%YtY*&:YK w RX>P X>XY>2MY/)**͈)>$2[*x2M L"P "N QS=%*P *:*N ">2:::M r&&b,=SMYͯ4=?2M 2l 5TSͯ4C?MY222"b%"K "I X!I N):H *#">2MY/)**͈)>#2[*ͬM" " QS=%* *:* ">2::r&MY222"b%" " X! N): *#"!,QS>2 *| }~ " 3 >23 G2lx= 5-S * ~#9 MY%YtY: * |MYX* {XYzXY*MY!)ͯ4=>2 *}/_|/W*o" z MYX{XYzXY*MY!)ͯ4= :a ʊS/2a MY/)XtY& b," X>"XY͊(!_6"#6!~ XXY# r&j'[&L6 XtY&[&b,DATAP ,>,22 XXYH)͈)&L*&ʃ (*҃ ͨ(&ä !,ͺRESy MY*)ä MY!)x³ ͯ4x?  ͯ4|?  ͯ4?  ͯ4?  ͯ4? Sͯ4?:y *`Sb &!-w# LRMY!%YtYͯ4s?DATA[&R>2l(*d 5MYMY"/)MYH)͈)MYMY*& 5>*&!ͺRESxSMY*)MY*&=l:*6SMYMYMYMYMYMY"/)MYMYH)͈)MYMYMYMYMYMY")MYMYMY")MYMY")MYMY")>2l 5*,MYMY; 5MY>MYMYͯ4?:WS>22&:RmSmDZS&Á:22:2b,R>2l 5:RʬMY!MYMYMYͯ4o?MY*oYڿ.1*o"o{XYzXYMY>MYMY!!5):MYXXYͯ4i?:< ]S!*e+r+s+:wMYͯ4=X:XYX:XYX:A>A>XY/Y{XYzXY:Ro!=6#4!=6#4Á!=6#4!=6#4:<2:y *Q"*`Sr&j'Q*&b,#`S>2l 5R"**`SMYͯ4=?>2l 5R*>2l 5ͯ4C?ͯ4=?MY]MY>MYMY!!5)ͯ4i?ͯ4C?ͯ4=*&b,#`S>2l 5Rͯ4=*&b,ONPb,OFFHS>!>MY>XXYͯ4=>v[&b,#b >24*&b,#`S5$21Sʕ:y "*`S&;&"*ҵr&j'Û*`SÛL*[&(*,ͨ(!,ͺRSyMY*MY!)xMY>XXY:1R:4 ͯ4=ͯ4=+ͯ4=ͯ4=MYMY MYMYMY>2l 5ͯ4=>2l 5:YfS 5ͯ4=>2l 5ͯ4=>2l 5ͯ4=ɯ2l 5HS:Y$iS**͈)r&j'[&ʪ:Y ""X!N):lMY>XXYͯ4>:lMY>XXYͯ4> 5b,:lS:lͯ4>Q ͯ4>Q-ͯ4>Q:ͯ4>QGͯ4>QHSͯ4>MY/)**͈):l2l""""MY%Y!N)**X!N)ê*&>2ͯ4C?MY:YfS 5:Y  5mMY/)**͈)H):l!>*!>*!>* !>*HS!>GX~#XY,""X!N)MY!/)͈)MY>XXYͯ4=:l:>2H)**͈)ͯ&r&MY!%Y""!N)2¶ͯ4y=ͯ4=ͯ4=ͯ4=HSͯ4=:oS͹&H)**͈)&:Y2&&:YrS2l 5&MY"T"R%Y!RN)2lH)*͈)* 5>2:YuS&MY/)**͈)[&œ,r&j'""""MY%Y!N)X!N)2l 5>2:YxS:lͯ4>0ͯ4>0 ͯ4>0ͯ4>0&ͯ4>0HSͯ4>MY/)**͈)&͢:Yʃ:y c[&:Yʀr&j'[&:Yʀ>2&2',MY/)**͈)&͢[&LҽX>XY%YtY&""X!N):KS>2>2*&:Y>2*&%>2*&%Rx2`{2a&R:`x:Rh,:x*&ͬ)|3S}2a&Rxh,:h>2l 5&xMY!MYPMYMY:YS&R(*S>:>2l>2Q8!, ~#¨:`MYMYMY5HS!<:*!, w #HS&Rͬ)<&R*:*6S2bO:`G:aRN_:I{MYXXYMY!!5)MY>MYͯ4i?&x:`:MY*&!ͺRESy{Sx*&b,AT~S>2l 5´MY*)MY~MYMY")MYwMYMY")*&!]RESy{Sx*&b,AT~S>2l 5MYMY")MY!)ͯ4+?&*&!ͺRES>āS*&b,=S*&h,VAR҆!ͺRES>ʛMY!)ygMY")MYMY>MYMY*)ͯ4=h,ARRAYҥ!]RESMY*)Vh,SPECҼ!]RESOh,FILEb,#`S*&ͬ)}!*e~cS#^#V!#S!&Ûh,FCBԄSb,#`S*&ͬ)}!*e~cS#^#VO:KS>2!,"m2w# E!,*&:YSb,,Nb,=}"*tNr&j'N*&%*oR,ʻ7&ڌb,:*&ͬ)"|'S:_!,"mSRxPSMY!*o###"o+)MY")XXYXXYX{=XYS:KS>2!,"m2w# B!,*&:YSb,,Kb,=z"*qKr&j'K*&%*qR,ʸ7&ډb,:Ҿ*&ͬ)"|'S:_þ!,"mSRxPS*q"qxX{>XYXXYS>2!,"m22w# -!,*&:YSb,,6b,=e"*\6r&j'6*&%Rxux2l&b,:Ң*&ͬ)"|'S:_&:2!,"mSRx¾PS*o"oxX{>XYXXYSҾ!4ڇS*mw#"mH|HS*d9I#+#:##~7(#F#^*o*m~7#~^#"m:y͹&:s:sX>XYXXYXXY&(*S&!ͺRڿMY!)L*&(*ESͨ(MY&*`S>2l 5>2Q85&b,=S>2l 5ͯ4P>*&L*& (*v>2ͨ(x2l͝R*&b,=S:leͯ4C?yMY>XXYͯ4=ͯ4C?ͯ4>b,= !,ͺR ySx2l͝R:lyMY>XXYyMY*)MY!)ͯ4=:Yr&yMY*)MY!)ͯ4>:/2ͯ4=?:l2b 5::b2l5ͯ4>@ͯ4>Kͯ4$>Vͯ4->aͯ41>*&MY>Xb,ON>z>XYMY2!>4*&MY>Xb,ON>ڟ>XYMY2!>4!!&ͬ)}~>24:!>MY>XXYͯ4>>2![&>2!b,USING2 ,>2l 5>2!MY>XXYͯ4>/!2l[&:YN N ,&! 5!:ld ͯ4i> q ͯ4m> ~ ͯ4q> ‹ ͯ4u> ˜ ͯ4x>ò S:ʭ ͯ4> ͯ4}>:! ͯ4> :! ͯ4>* >2!:!5 ͯ4>5 "* >2!5 : !:Y!:y 9S>2!&!: :Y :!̀![&@!b!̀!,b,#b!,5$SY!"*`S:y {!:MYXXYMYͯ41?̀!:!ʞ!>2!MY>XXYͯ4>ͯ47?ͯ4?!!!>2.$24x2/$y20$:MYXXYMYͯ41?21$22$23$:.$]#&]#b,#^"b,"j"͊(23$L*#ͯ47?ͯ4\>:3$G!,xD"~XXY#-"XXYX:1$XY:2$!!5$"*`ST">24$L*[&(*ҍ"*&>24$2ͨ(Ù"!,ͺRS#:2$"/22$:/$ʹ"ͯ47?ͯ4c>:1$"xq#ʯ#ͯ47?MYyͯ4>:4$"ͯ4C? #y#MY*) #MY!)x#ͯ4?!)#ͯ4 ?!6#ͯ4 ?!C#ͯ4?!P#ͯ4?!Sͯ4?!:0$ͯ47?MYyͯ4?ͯ47?ͯ4 ?:4$ʑ#ͯ4C?MYw!y¥#MY*)MYw!MY2)!ͯ47?MYyͯ4>:4$#ͯ4C?ͯ4I?!y#MY*)ͯ4I?!MY!)ͯ4I?!&#$b,;>21$b,,$>21$:Y2.$>21$>2l 5ͯ41?:y >S*>S 5:yMY>XXYMY:4MY>XXYͯ4=>R>2r&ͯ&**o=%:>22b%"ͯ&r&j',ʯ$7&ڸ$:Y ²$͹&*&ͬ)}MYXXY*&*`S (2<%ͯ&ͯ4\> (G:<%%xXXY$͹&XXY&>3%"*>3%*>`SXXY*j+*h+*f+*d+*b+*`+*j"%"%*j*`+%!`>%*j*b+%!b>%*j*d+%!d>%*j*f+%!f>%*j*h+%!h>%#6*%"j6*%^#V r+s##=%}/o|/g# |&~z &{&#&,7&&,I&&,R7&*&b, b, b, h, h, h, ,g&7&[&>2: :&&/2&:,:y ʕ&,&,*t2x2y}<'o|'g"t:v<'2v:v='2v:y &[&,r&j':l&ͯ4>&ͯ4>&ͯ4> 'ͯ4>'ͯ4>Sͯ4>:|!}0'> ͽX!x~> ͽX4<6'~#U'dG'> d> d> d> d:'w'/2'*t|0ͽX|0ͽX}0ͽX}0ͽX:>:´'>*ͽX:v0ͽX:v0ͽX> ͽXMY*MYMYMYMY!5)!"XXY>2N?2S?2X?2^?:W(/2W:X ( c +( '> RͽX!x4 B(2X(:X( Q(͘&j'> 2X(XXY*o#ʅ(=XXY#l("o! ("wy #y SÑ(")!,]RS>2l( 5=ù(>2Q8>2l5MY!)ͯ4%?:(ͯ4=?*)y9Y/Y/Y*){XYzXY5)%YK)%YXY|}XYu)X!XY~XY# V)~u)XXY:XY:ʀ)XYXY>|)!~W+MY>XXYͯ4=:+=2+)+ͯ4C?MY:ʕ+:*{+&b,=S&%ES!+^#p*+*+!k,!,,~|,#m,/7#~#,/!,ʢ,#~ʞ,Ï,7;:[]<>{},()"=#-+/*%~^ '\  ,,,k,\,r&j',:,/2: bk2Y:W-/2W:X- c S͋,%--0-:-2X>2W/~Q-̀-2Y~ 2y z-e-ͽX!x4~`u- [u- w#;- 'e-~A-[-Ao&)-^#VM...v// 0000I1K1M1112L222L3364F4q4444k,$LINES>1k,$PAGE>2k,$TRACE>?k,$LOADPT>@k,$INCLUDE>Ak,$LIST>Bk,$CONSTANT>Ck,ABS>k,ATN>k,ASC>k,ASCII>k,AND>دk,BEGIN>k,BASE>%k,BASED>'دk,COM>k,COMMON>k,COMMENT>k,CASE>#k,CLOSE>*k,CREATE>0k,CHAIN>5k,CALL>:k,COS>k,CHR$>k,CHR>k,CONSOLE>Dk,CONTROL.C.TRAP>Fدk,DIM>k,DIMENSION>k,DO>k,DELETE>.k,DATA>8دk,END> k,ELSE>k,EXECUTE>;k,ECHO>Ek,EXP>k,EQV>دk,FOR>k,FUNCTION>"k,FILES>(k,FIX>k,FFIX>k,FINT>k,FCB>k,FCB$>k,FRE>دk,GOTO>k,GOSUB>k,GO>دk,HEX$>دk,INPUT> k,INPUT1> k,INPUT2> k,INPUT3>k,IF>k,INITIALIZE>-k,INT>k,INSTR>k,INP>k,IMP>دɯɯk,LOCATE>&k,LOCATION>4k,LET>6k,LPRINTER>7k,LOG>k,LOG10>k,LEFT$>k,LEFT>k,LEN>دk,MID$>k,MID>دk,NEXT>k,NUM$>k,NOT>دk,OF>$k,OPEN>)k,ON>3k,OUT>=k,OR>دk,PRINT>k,PROCEDURE>!k,POKE>>k,POS>k,PEEK>دɯk,REM>k,REMARK>k,RETURN>k,RET>k,REPEAT>k,READ>+k,RENAME>/k,RESTORE>9k,RECORD.SEQUENTIAL>Gk,RND>k,RIGHT>k,RIGHT$>دk,SUB>k,STOP>k,STEP> k,SGN>k,SIN>k,SQR>k,STRING$>k,STRING>k,SPC>k,SPACE$>k,STR$>k,SIZE>دk,TO>k,THEN>k,TEXT>k,TO>k,TAN>k,TAB>دk,UNTIL>دk,VAR>k,VARIABLE>k,VAL>دk,WHILE>k,WRITE>,دk,XLATE>k,XOR>دɯɯ"4"4^#V#6#4*4*44X>XY%Y~#4XY4XY6#%Y~#5XY4XY>2Q82>2 @!~7:7"525*5~a5|756y6 76 57S#~#"5Ҝ55!:l=*! *!R8~ʐS6#4ù5! *;ʱ5$Œ5>2Ì5:5BS<25#~ 725! ==*|;Ì5#~#"52l25#"5:5BS:l6ͯ45>6ͯ4:>6ͯ4?>$6ͯ4H>/6ͯ4L>>2l25#~#S6K6ͯ4=25ͯ4=25MYX~#XY~#"5XY*MY!)#^#V#!,w#‚6MY%YzY:5BS<25#~#"5 7*5~ 25#~25:l25ͯ4>25#^#V#~27#F#N###"5y6MY!)ͯ4e?:7G:5BS25!8:5BSG:l%7x<7ͯ4>x<7:l<7ͯ4>O7:lO7ͯ4 >x!=e7=*=6#4:l==!*E=6#4#~#F#N#^#V#"5x-8y8x77x´7ͯ4=77ͯ4=7Sͯ4=)!8MY*)x7y7MY&MYMY!8MY>XXYMY*)ͯ4=x 7!5425yC8MY!)MY!8MY*)MY!8DGTDLTDLDGDEQDNEQDSUDADDDIDMUDTDDPCDABDNEDEPRGTRLTRLRGREQRNEQRSURADRDIRMURTDRPCRABRNEREPBGTBLTBLBGBEQBNEQBSUBADBDIBMUBTDBPCBABBNEBEXIGTILTILIGIEQINEQISUIADIDIIMUITDIPCIABINEIEXWGTWLTWLWGWEQWNEQISUIADIDIIMUWTDWPCWABWNEIEXSGTSLTSLSGSEQSNEQSSUSADSDISMUSTDSPCSABSNESEXIIMIEQIXOIOIANINOABATCOEXFIINLOLOG1PRNSGSISQTAFFIFINASCICHRFRCVTFSIZCVT$CVT$STRINLEFRIGHMILEINSTSPACENUMVAXLATHEXIMPOTABPEERGHTFCBRSRBNRCIRCIRSRURRDRRDBRDRDRDRDLONERFORRFORRFORBFORFORCHAIFOPFCLOSREASWRITRREARWRITRSEASCIFDERENAFCREAMPUSMPOXPOXZPHRPHRPHBSPOSPUSCBNCWCSCLRCLRCLBCLCLCLCRDCRSCBNCICWCSSETMIPSTSTRPMPRMPPRPRPBPPCHPSAPSFMPNUPTATABSCLEADUBSTRPUCMPRCMPRCMPBCMPCMPSTTSTRTSTRTSTBTSTTSTTSTSTECHFCNTLIBURETIRIRIBIIICHIIIWRARRABASESAVIGETISAVHGETHSMOERRERRSYSISYSOUMAREDIMPDSEDRDRDBDINDCHADSEXCYͫ???XCY!R8 ~?#X~XY#? ñ?!=ñ?!p=~@X#~XY?#?#@#?*j#6"B!6#:lw#6"B2B2B26B>2C7B@:YG@@à@*@"*@b,:@:'/F͋,ڌ@:͏E/FB҄@!,[QCS>2B2@(*A:*Ab,"ڭE*B~@DA>AYBҼ@ͷB2@BBà@@>2x@2l*B6 #6"BDA>AͷB2@*B~SBB@>ͷB2@*B~1AB2@BA:C:Q8SD2@:B:YdA_A֖SÿAֿÿA:B˜Ab,NOT>ڿAb,%>ڿAb,+>ڿAb,->ڿA$SB!SʿAʿAʿAʿA ʿAʿAA2B2BG26BxG'BBA"A>A> A> A>7x!B :x<BG#B7<>=#-+/*~%+-^,7&'B>26B:6BKB26B2B: 2B,7&NB7777G*B~ҔBҙBҞBңBҨBҭBҲBx7x?x?x?x?x?x?x?*B#w"B@*B~+"B@*B6#w#6"BL*'B(*ҎC7B!,]R_:l:Q8>2Q8*B6#>w2l#6"BͷB{2@=@C*(C:*-SRBS:*0S*B6#2Q8kC"Cx*C2lw#6"B*B6#s#r#w#p#q#C!,ͺRyFx͝R*B:l¸C6#|2lw#6#q#p#q#s#r#"B6"DW2BzC(*S:lW:CGO2DͷB>2D*D*|AD}AD>2D*}/_|/W*o"D|AD*B6 #6#s#r#6"ByʐD*B6#w#6"B2l>2C*D:D:D2@2D2D"D:* ʍDID-S0S2D*BOzŸDy6#wO#6#s#r#:Dw#6#6"Bx2C>2BBSy2l:D2@*D|2@*B6 #:Dw#s#r#6"B2@2B7B(*S!*K_:lW:CGN#ͷBy_E~#*B6#w#6"B2l>2C2@:* \E/E-S0S~*BOzjEy6#wW#6#s#6"Bx2C>2BBSz2l!E#O~y’E/0123456789.,'MY/):¿E͛)e)!w ("Ew#6E S!@! ~#EXyXY*͛)e)G !áCMY/)e)!@ëFMY/)e)!@:'hF:lFFFʨFhF*SF:'†F (o*&:'HS&ÎFͬ)|3S" H* HG!áCͬ)" H* HG!áC=G*HG!áC H*"HG!áC!"H)H*"HG!áCy-GXXY GH)͈)͛)> 2H>2H!Hw#MG!~ʈG0sGʌG*S*&!VG *SͼG!Hw#VGͼGͼG#~ʰG0*S *SG!HwÑG:HGðG!H~w#G ¾G!H53S:H!H~w#G G:Hg2H!H53S!"H)H:(HW:%H2%H" J3H*S!~+DH-DH+>+2J#"J>+2J~#ʓHESH&:,+pH-pH>+2JyH&!,~ʖH{_~I_#~H+6E:J+{ʡH/<2'J0Ix//2J!J9K:J+H:J2J:'JI!8JH/<2'J!*J"(J>͉K:'J= I2'J*(J>͉K?JH!1J>͉K!J>͉K?J* J>ͫK* J^K* J~w2JG!J>6#=2JCI!JJ~#gI!JJI!JJI!JJI!JJII2J!J>6+= I!JJI:JʸI CI:JI*J!'JEI.I4I:JJ!JJIɯw+I0J >7ѯ7"J!J>ͫK!J>ͫK!J~_w!J~Ww"J:J2J!Jw#sJ0ÅJʠJJJ~J!JJ w+ ”J~J:JG:J2J K!J^K*J!J.K!J>͉K!!J ~w+ J!J~w# K`!J~+~=w!J ~w+K K2JzW~w0#~+~=w~w~w+QK ;K>w+>gK~O:P<2P=:PO(P ;P:MO:P!>!>!>!>!>!>!>!> !> !> !> !> !>!>!>!>!>!>!>!>!>!>!>!>!>!>!>!>!>!>!> !>!!>"!>#!>$!>%!>&!>'!>(!>)!>*!>+!>,!>-!>.!>/!>0!>1!>2!>3!>4!>5!>6!W>2~:y >22̕&ʻS>$ͽXr&>$ͽX½S!TS#~SS#~ͽX~SSS*\> ͽX> ͽX Not valid label numbe GO is reserved word / TO or SUB expecte End of line unexpecte TYPE does not exis No vars give Error code 0 Missing = sign, = sign expecte Missing left bracke No names give Line too lon Un-defined operan ERROR CODE 1 Name given is a reserved wor One of these VAR names in us Too many left parenthese Too many right parenthese Reserved symbol ex. ": Two symbols make no sense ex. "%+ Number too larg Error in numbe Not enough argument Too many argument This number too large/smal Missing right bracke Error in print statemen Cannot end like thi Intr. symbol overflo Does not balanc Var not define Cannot process this / Statement erro Local code onl Form: ON /ERROR GOTO/GOSUB B2e:f ZZZ@2|Z>2zZ:e2|>A2f:g HZZ@ZXHZYPZ@2>a8Z:e2>a>S2gXZ>2{8Z>2|8Z>2}8Z!]~~#`Z!]Aa~#pZa:z‹ZiaaÞZ>2,cÞZ>2,c!d"-c!|:}·Z:{Z>2bZ>2bZ!d"bZ!d"bb͟a!Z~[#ͽXZ ****** End of program ****** ͘?!|:}A[:{A[>b*[OQc͏b:z:~Q[iCYCY>,c*:`}W[)|p[O2d[b:|2\:e=2eG'Compilation complete G'Compilation aborted ͉!"e):g:[MYɯ2!"\!e ~#^#V#!&R\!#S\!>g\[ͣ\:P1\=2P*\^#V#"\>g\\MY͛)e)ͣ\:!V#~zX/YXY#~#XY=D\ɷʓ\*oMY!)MY")*o#"oXXY*\s#r#"\!4*\6#6#"\!4P PRN:|=_}ʃa2!":`G'CANNOT CREAT OBJ FILE:>a=_@aa2`a!"a=_@a2`a!"a=_@aG'ERROR IN CLOSING PRN FILE:>a=_@a:?a=_\*a=_@a¥cG'ERROR IN EXTENDING PRN FILEcG'END OF DISK DATA FOR PRN FILEG'OUT OF DIR SPACE FOR PRN FILE\:?a=_\d>2\G'DISK READ ERROR:]Kd! 5d:|=_}†dG'ERROR IN EXTENDING OBJ FILE¯dG'END OF DISK DATA FOR OBJ FILEG'NO DIR SPACE FOR OBJ FILE__:eLe!le!yele!]>~ee#=e!ele:e&e0ee:e0ee:e<'2e> ee> ee> ee>2eee :e<92eد2e> _~ee#~me Program: Page: REAL.DOUBLEREALFLOAT.DOUBLEFLOATFIXEDINTEGERCHARSTRINGPBYTECopyright (C) 1979, By Topaz programming. All rights reserved. From here on protected by End User License.  ;<~#ʑÃ> > > > !ʻҵ)ì*>#">*<#"<*@#"@:x=##^#Vɯ2::y2y:w< 2wɯ2w1@2~2}2\!e>$w#w#w:e22!]~#I4̓͆I>2w*a"B!;"6!wڐڥں&1HOSZ^djpsz~  ()1>E^ery ; HHOOSSd  *w#*>s#r#"6#"6_W*@"@og|+ _W*<"<;; !zw#+ͬڌڞ:k>2̓UN-DEFINED LINE NUMBER(S)!z~#|n> > ^#V*D} | ^#V{ z :!y#òï#7!z"~#B#6 *"#># 7ɯ###);;_W*F} | ;;_W*B} | *>p">*]* |z*_*r |zj &:o:_" *<*B*>*~ >#=#F#Nx> r+s##  > #= * +" |">*<*B"D*>"F> *Dt !t *]t *_t *F*@t t !t !t !t !x4>2w:2 *~ > #=• ! 5 :2 ~ > #=± ! 5© !#~##š * := : Ú #~##¶ *: ö 2q "o *o #:q 6 =2q e #$ ~#~̓XREFF LIB TO LIB ERROR*o ~#U #e ## u} | !x4>2w!p~ #‘ !x4>2w#rͪ\° ; \ ̓I'M LOST.. . .ͪ! ͦͪ+| ͪͪø ͪ ͪͪͪ=! ͦ*~* Gͪ ͪͪø ^#V2 ͖ I y 8 A͖ c yHG } | 8 x=! ͦ*^#VA͖ syHG } | 8 : g{® ͪW%s| ͪOzW|=2 ͪͪø \ ; \ ̓I'M LOST.. . .! ͦ+|  =! ͦ*~G G7  ^#V2 ͳ f y U Aͳ ڀ yHG } | U x=! ͦ*^#VAͳ syHG } | U : g{ W%s| OzW|=2  *]|/ }/ *_|/ }/ *w}  )|% Ox͘:M ̓Compilation complete͆̓Compilation aborted*"lͪ\p ͪ2nͰ:n={ ͪͪ\x :o2\™ 2n:n=¤ \ʡ :o2  6##: 6 ̓UN-DEFINED LIB-REF.!c~# ͪWͪͪͪ2q=! ͦ*~Bͪ2ͪͪ ͪGTI:p_TITs:qҕ{=! ͦ*6I̓UN-RECOVERABLE ERROR¬̓GEN LIB ERROR̓REV-DEF LIB ERROR:q=! ͦ*#~#SW2q=! ͦ*~ G͂":p_͂"͂s:qҕ{=! ͦ*6"ygxͪGszxͪ2pxG ͪͪ y•ʦGszʦ2pxG *l6#ͪw#¸ͪ2oͪw#ͪw#"l"6#6*l6#w#2ow#w#"l6#6!c6 #!c4w#&w*c#>UX#G7#X##: COMBASICLIBRELUSERLIB REL:_22!"y̓CANNOT OPEN BASICLIB:2!"y:_22!"{̓CANNOT OPEN USERLIB:42!"{:~_2h\ʨ!"u2|̓CANNOT OPEN TEMP FILE:hƒ2|!"u:}_2!"w̓CANNOT OPEN-CREAT OBJ FILE:}_̓ERROR IN CLOSSING OBJ FILE:}_j2!"w̓CANNOT CREAT OBJ FILE:}_:~_\*y|¼͝!!y"y*u|0!!u"u*{| !!}"{*w| v!!w"wuK! 5:~_\~ym̓READ PAST EOF̓DISK READ ERROR TMP FILEy͸! ¢:_y̓READ PAST EOF̓DISK READ ERROR BASICLIB}%! :_XyG̓READ PAST EOF̓DISK READ ERROR USERLIBw͑! {:}_̓ERROR IN EXTENDING OBJ FILE̓END OF DISK DATA FOR OBJ FILE̓NO DIR SPACE FOR OBJ FILE___ :\=:=SICLIB}%! :_XyG̓READ PAST EOF̓DISK READ ERROR USERLIBw͑! {:}_̓ERROR IN EXTENDING OBJ FILE̓END OF DISK DATA FOR OBJ FILE̓NO DIR SP!.MAIN.\.PROG..DATA..BLNK.FORRD $\FORRS FORBN FORI mFORW -\REPX 1LOG DEPX CSW M\CWS SRD RDS RSRD .\RDRS .CBNI cBNRD 7RDBN \RDW CIRD QRDI NFINT 7U\FFIX &SADD bIEXP :EXP \RND fINT 6FIX hSGN C\ABS !$SQR "xATN # TAN $-v\COS %SIN &IMP ' FRE (^ \POS )$SETMID*RFCB$ +!TAB$ ,\HEX$ -EPEEK .ASCII /CHR$ 0 Y\STRING1$LEFT 2'RGHT$ 3YRIGHT 4D\MID 5?XLATE 6kINSTR 7iSPACE$8\LEN 9)VAL :KNUM$ ;BGTE <B\BLTE =BLT >BGT ?BEQU @k\BNEQU ABABS BBNEG C PNUM D\P$ EEXC FCHAIN GSIZE H\RENAM IXFCREATJFDEL K=FOPN L6\FCLOS MRSET NRREAD OGRWRITEP\SWRITEQ^SREAD RSETFCBSIIMP Tl\IEQV U IXOR V IOR W IAND X \INOT Y IGTE ZILTE [ILT \\IGT ]IEQU ^INEQU _IABS `\ISUB a IADD b IMUT cIDIV d)l\INEG e WGTE f WLTE gWLT h \WGT iWEQU j WNEQU kWABS l #\WNEG mDGTE nDLTE oDLT p\DGT qDEQU rDNEQU sDABS tA\DNEG u RGTE vRLTE wRLT x9\RGT yREQU zRNEQU {RABS |\RNEG } SGTE ~SLTE SLT \SGT SEQU SNEQU PRS Q\PRD qCMPSTR^CMPRD cCMPRS c\CMPEX CMPBN ICMPI CLS s\RSTR CLBN RBN #CLRD \RRD %CLRS RRS RI .\CLW RW CRSL CRDL \CBNL CIL CWL CSL \TSTRS TSTRD TSTBN 'TSTI \TSTSTR%TSTW $PBN BDIV i\BMUT &BSUB BADD  DRD \DRS DBN DINT DCHAR \DST iDNUM SDSET IRS 2\RADD RSUB +RMUT KRDIV d|\RSNORMmIRD /DADD DSUB 3p\DMUT `DDIV yRDNORMlREDIM I<\BASET 0MAT ARRAY IBN -;\PCHR APST 1PST 9PI \\CI lCBN uICHR +IIN \IS ERR20 dMPY ]COVDECrp\GETVALIBUF STRPMT"PSTR 2\PRMPT ONERR FMT tSTRCLR\MPOP MPUSH 7ERR1 (LN p\ERR2 SAVHL GETHL SAVIO \GETIO TAB TAB1 RETN \IWRD 8DUBL =SCLEAN6STRPUT 9\SPUSH SPOP |SMOV %SCHNL17\SCHNL2FCNTLCECHO BASOUT\ASCIO iZP XP !PHRS <\PHRD PHBN ZPOP XPOP +\SYSIN SYSOUTf;D"f"!>@!> ;b">! >/;(dͷ*>2!> ;;C*>!:0͇;NHi*!>@!>;b`!C*> !>>;u3͸!*>!n;2͇QHQi4; V;D"f"!>@!>;b">! >7;(dͱ*>2!>;;C*>!:0͈;NHi*!>@!>;b`!C*> !>C;u3Ͳ!*>!y;2͈QHQi2;\;D"e"!>@!>;b">! >2;(dͧ*>2!>;;C*>":`͊;Nh*! >!>;b!*>@!>D;ufͦC*>!;d͊PʐPh;X;D"G"ZD"k"iH"!"%;I"K"W*k*"*i/;+:l]2͋J@*!*;?i*k!**ka;U"!d͋:ʐ:J;i;D"""~wy%{o;!~w!~;*@; $"!>2! >; B:#2#B:2,2;* C!>3";< C!>!!>B;O dͲ! >3 0ͳ;` C!$>!!$>!(;s >!$ >!->"; ͱ!$>@!(>; f2B*|@!->; b*|g}o" !; >dͳ*| !'; >C! >0ͳ5; C! >&îͳ@:, ; !>!->`!l; >dʹ*"; A; $"!>0!H":V; $t:Ht!>`!;) >d͈[*#"E;= C!>!!>ʹn;P C!>$ *| ž!;d >C!>0͈;v HҞ*+"!>!; >ͳ!>c; C!>3!z; y=´ >!V; >! >ʹ ; C!>2Ͳ!>C; C!>!!>!; >! >!>͢; !>d!>0;# C!> >2! >;8 fͳͱD:=-!>ͼ;K ͳȱ*|@p;] !>`ͳ͒;n ȱ*!zLOG <= ; 0 OR A^X A<=; ; <цxAr; RrX^; R]@; $"!>2! >; B:2B: 22 -;* C!>30=;; C!>!!>!;N >͸!>:';a $p!">2ô@!>;u d! >2)`͹!; >C!> !">; 3ͷ!!>!; >&":@!>o; f$"! >0; I*b͹: !>; 2!">! >h; dͺ*; ;# "d!p>!;7 $"h"f!"j!>v;L C!p>2͇@*f#";_ f!p>!>`;r Ⱥ!p>dD*f|; !p>!>``; ɇ*f+"f!p>V; C!>2͹!p>K; HÇ!p>d!>0@; d͇*h#"h!p >; C! >2͹!p>; H!p>d!>0; d͸!~>2!~>O; C!~>!!p>!;3 >!!"n>2l !p>L;G 2!~>! >+;[ d͹!~>2*n";n n>C!~>0͹; dͷ:l=I2lK!p >; $2l:l=I$2l!p >n; C!w>!!~>!O; >͹!~>!~; >! >*j|; +#e"jͺ; d͹!p>3ͷ !p>; 2!p>!w >~; d͇™!p>@*f|;1 FFC!>0͹Q;C dͷ*h|#` !>/;V 3͹2͸*d;h r;} ; ; I$I ; 88.; ؝I$I}; F; ; ]ݪrs;% >2>",![>!.;: >!$"<!T>0';M C!M>!!?>!?O;` >!F >!.5;s ~#u!.>*<:; 3͹!!.>!MR; >!T >ȹ!M; >![ >!.>͙; ͺ!M>`͹!; ?>dͷ!?>0; C!?>!!F>͇; I !.5#<; D:>= 2>*<#"< ]!;! ?>@*,h;5 ;J  ;_ ""!>!;t >*|g}oH"Ҝo; C!>2͹*|ʺ; C!>!!>͹; C!>$y*; ; &"!6&`:ox; !; >;&" :`!^;&" `;![;$"$!'>2:*W2* ; z2-!' >!;);$"$!'>2:-W:*; 2*!' >!k;);$"O!]>0!@:`t;R:`R:_;) R:_ R:^;>R:bNe!;RDM)) )O L;&"->2G!g ;w#L!0"ȶ!0;'>!;!"}>2ͅ!>;~% !#@x~;'f2,f!,:w!;8'>1:6| K/@;J$<2!>2: =n2;^!>ͥØV:6;q3:6!o;d;&"``|ʀ!;!;!"F|2Pe)};lg"N!I>6#=>/!Ie;*2wͻ:P$=:O 2O!;>I>!;$">!G>2*H}lg:G; !B=A 5Gu;*|g}ox!5;3"! >:%; ! >2!1>;#fͧ! > Q;4;$"! >1! w#>\;w+>!h;&"_f2!` ;2!!;"f!`!~ 8#;4&.wG# ;xR;H Ny22.; [`2!;z5!z8zW#;{_'`z@8q;)`iDM!;$"d!o>2!o>;C!s>!!o>!;'>ͱK>2"d;;C!s>!!o>!g;N>! >!w>͊;a!>d!>0;sC!g>!!k>!w;@{~#‹!w>;C!>2ͳ!w>;C!o>!!s>ͳ;C!o>!!g>!ok;>! >!w> ;ʹ̳ͱ!g>;!g>d!k>0r; d͈[!w{ -#;:$=[2!g>͕;3!k>d!>0;EC!>2ͱ!>2;XHÃ!g>`!;l_; R;&"W͝HN!Z>`!;b>dͳ!^>0A;%dʹ!b>2!b>o;8C!b>3Ͳ !b>P;J2!b>!e; ]PT;3"P!_ >:b6;f !_>!2 >!;$fͱ!_> ;5;$"P!_>2:bH2g:_;!S3 !_4#~w;*I%:_$!b:gG~";?w!_͵!!_>!;R!!c>*P;fx; 3"!!! >:!!; /:!#@>!>H2B!?;& >*!!;>`*;8 !2;!$"! >2:#2#g;!C! >!+;"!"h>2w!!k>!k;">!o >ȴ!s#;'">!k >!s>;:"ʹ!s>`ͱ!9;K"o>dʹ!w5Hg!s;_">,!;s"e;#$"!>2: 2:;#2!>@!>;(#f͈H]!>`! ;:#>dʹ!>0;L#C!>&cͲHc2;`#D"!>@!>b;t#d! >2!>;#C!>!!>!;#>>H2!>`;#ȳ!>fͳ`ͱ:;#=¡! >!a;#:!!>:-;#2!>!u;#;#":u;$$"&!)>2!)>;$d&!)>3%0ʹ;; %$!;%3"&~!& >̱&;&$"~!>2: 2;&2!>! >D;)&d͈M!>@!>I;<&fͲC!> !;N&>C!>0͈;`&Hҥ!>d!>0;s&d͈ڗ!>@!>;&fͲC!> å!;&>I!Ä:l;&B:2D:22';&C!>!!>ͳ ;&C!>!!>!;&>ͳ!>!b;&>! >!>͞; &!>d!>0;&C!>3ͳͲ !>3;1&3ͳ2Ͳ!>;C&fͳͲC!>0ͳY;T&dͲ!>3ͳ !>;f&2:!w@!>:;z&`!o;&]3;&|%;'{2_N;(}!9* |/g}/oF;(# |! <?;*(^#V"`i ;>(O! N# I\; S(+|F;)x!ZCe !{T;) y!{ NI;*&"Kf2!`;*D"N"PF*P|€Jx<;&*J:OaJw#@;9*DJ J:N=2N0!B;N*;+&"!6S2;+> 2!;,&"!Z N{%; , O8!;-&":!z@=w#;-z=w#{̀=w#{ ;)-=w>f2!; ;-0:; .N*;/&"!6:_T;/!;0>A;1""""1"E:"0!Q;1 w#!;2""""%a!6:%;2f2!f!;#2;3&"T` &"W2;3f!f!!(;$3#~${b2*W`:;73H>2Wo`e:W;K3@:W!!;4"";">f2`!͌;4!!>:N ;#40! ړ@2> :>T;64!!5;5""8"=&";`2!I;5!!:;r;$5O :=d:=!!;85;6&"df2!`;62!!;"6f!32! "g";36i*i~ʈ^#"iO0!;G6 ~5B*gw#"g`!4C;[6M5!;7&"ff2!`!;72!;"7f!K!:;47G:ʘa:Œ[v;H7T e#ʀH# ;]7 =!J;8#""}!6 #= M; 8l!;9&"&f2!`!;9!~# ;#9!;:&"=f2!`!;:!D"Ͷ!@;":H7:J g:G2G!D;7:>!W;;!">2P̈́;;!;<3"A͊ >AA ;=3"A͊ >AAA b;>3"A͊ >AA ;?3"A͊ >AA>@;?`A9;@3"A͊ >AA ;A&"͊>>!};A;B3"C! >: ;B`C1;C&"!>: 2y;C !>0!;D`:_!6>H22S;DI222$2222^;)DB2>02B2> 2!";?DI"""&"*o@"~R;SDHg:‰/2!ӐrN;gDHʀ~$\w*~H *;}DHQ*+"*#~͐1;DB*$!*|$B;DHm:„m>2͐**;D##"Ç**|;D*m:m>H2*;DB*##"$‡> 2;D2*Ç,%*|;DB*|m>22@Ç-;;'DHI*|B:>2HÇ:];=D!>2!+w *|\;RD!c>2 >+2Ç :;gDB>2>+2^¬i;|DD**|m*#~^Y;D*É>2~-@‡>;DH2Ç.H¿:ˆ/2;DBÇ#‡B::2;DHÇ*#"o!"";D ~ *!- *>X;D 2~.ʄ# # E#o;DH#*w#I"B*~;#D.*~ BHEH H*;8Dw#"͒J*(E¹;MD>+2*~-e @e+U;bDIk2*#~+~|>0*c;xD$+"2͉*~2:0o&;D! c:0o &b;D$":$-¹*`eL;DH"*6B*|@:;D*|**a ;DF*͋IR*\ *;De*a*͋l;DHR*eͦ͐*e;D#*͋$Ґ*"* ;0D#*"~w~:R;DD w!͋*;WD#*+~#w+0!;jD1͋` >12͘B!];}DI"@*+"~ *#";^DHF**͋> $ :;rDʸ**+ȋҖ;D>* *$#"{**;D2͋Ҹ@:>$̐ :";D>* :g:*2;D#*͋!> *#;DI":g:g:/;D:>$- : :;D !"":ʁ@**;DaH"*|H?*C;-D~#" D*+"Ð%*;BD|ʛ*1!͋>,;UD *>~ # =\";jD*a"*:;~DH?*|Dʛ+"*~#"8;D Á@:>.̐ *;D|*|*~#"';DH *+"*+" è*;D|+B">0 H:l;D*|C>E͐ :;D>+ >- *|;D1e" *! 0dW;%D}0 ! c@*-;9D`a}0H : :;MD>- H: "*;bD!* "*";vDF*a$"*@*;Da"*|#" *6;D0#"ÐH"**u;D" "*1a" *;DD*"**"*;D|*+~#w+"!>;Dȋ>0d2*#H"B;D@#.,-$*;D^+:O*;-D"#"*"#"* #"ɇ;BDD*#"D*#">% |;WD> *I"*"|>;lDBq>2>22H22;DI222 b;D; D;Ed*o"~$:@·>;EL2!r"*~!L5:C;)E!/> !Ç/v *;>E#~/N"ʷ ?L"!;TE~h́# T Ç;iE> hÇ&˜:3;~E0O!>*~ !ʲ;E!/ʲ&ʲ#"G\@©F#;EB"x##"o:o;E0O!>!r"om;Ea:O;F0u}͸;F&}Ð?:3;)F };È&2;?Ff2f!`!};OF0:O~Aa# T6x2;cF}}>E;wFf2GG$$$ SUB;F;F;G0!6*%%L"S;GL* w#€~ ;(G@7=_*6 6;=G@* Q!0;QG@* 6*%{/_z/;fG W"!~_#Vʊ#N7;{G#F* r+so*"`;G$"W:@2f;G *% w#z€*;G*%CHAIN/EXEC;GUTE OPEΪ F;G5;>DHMSru;G>!$GO t͜;GO_O*t{€t<;$G>! Ow#=@,|;9G$FO+|=Ow#GG;OGy]! ~\;dGO@ ;yGPROGRAM CHAIN/E;GXECUTE ERROR$;HfK!@"2;H:@#=_2;'H! |A ;6#=+!;9K!m;L M>@~RʀSʧ;L&!(FILE OPE";)L!6"!6`ͬ;6#=6#6!;LR-TYPE FILE NOT;0L FOUN`;M }2M>ʀ~J;M!RʰS-&!")FILE;'M CLOS"%~~;QS-T;MYPE FILE CLOS"N3$X;M0N ~#¼:N ;Ma:N3N+;M0*N3 *N3(6;M;NGx !2:O>;Nb-~R- ";(Nw! |2@"3A;=ND""@"!$ 2;RN~#HU: @9;gN$:ʯI£ **6;|N6 #{|+6 +6 *3$/;N  w#—!6;NIʟ+rʹ+H;NIË >2 9;NË+BË:*;N *|}*KH!;Nd:I9=* "*L;N"*H":>';&N"/2*IK7!0;:NH]*3$w#BDM*5;PN }2zW{_|;eNg}o\z1" "~";zNZ22\D:*;N|1}@1}O*3 ;N~@*3q*;N3! *3R;ND!9]!~w##;N$:!d:i2!\;N:*}2; N}2Y:] =_*M; N!"7!"5* !;5N}o":S ͅ¹;IN=‰Dͅ+|;^NHS:5Iͅa ;sN:Ÿ:}Ÿ9;N!w#`3;N]:ʭ";N"_:ʿD*~#"~{o;N xs*5;Nw#"5 }耄;N]:"_:;N*~#"~{€!7;N@"5}$G:@8Ϳ;.N=’,ͅ+|;CND89 :~;XN_!_:ʐq*Z';mN #"Z{@ x&;NHK:8>*7};N`$9:ʭ;N!_:ʿ*Z #"Z{+;N$28!F&;N #"7ѯx|g}o;N>!) #=;N@)) #Ð!;Nd!2!];'NL!!3;:N\;ONG;dN2;yN;NR-TYPE REAE;NXTENDING FILEND OF ;NDISK DAT RANDOM RECO;NR R-TYPE FILE NOT OP;NE NO MORE DIR SPAC*q;NWRONG TYPE FIL;O1P=P*P 4;OP2!Pw#;#O&=!3*P0P,;4OaPkPw#=˜7P,;P"=ʪ!*~};P ~#k~}#=;,PH* w#4 ":;APO>~Rª ~;TP!$"@ ~#a ;iP=_!x~*;~PD͗*w"#"͗@*~#;PD"*|"ʤ+" !;P!׀D;P READ/WRITE PAST EO;P+READ/WRITE SEQUENC;QF"+: O>@~`;Q S ~R>Ww";(Q@+~#-HI*+;>Q~͋~#@U=_!~*;SQ+~͋#=U*;hQ+w#‰j͢!-0-;|QI*!"&*#$"(Ì@*&|z;QDs+"&*(w#"( :%!;Q::*¸/2**!;Q "@*#:-;Q =_;Q x!R;Q;Q;#Q S-FILE WRI;8QTWRITE ON UN-OPENEDD;MQ FIL,S TYPE FIL;RF"Z: O>@#~;R S# ~W#>Rw".;(R@0*~#-H^͞);>Rf2!͞w#=D;QRb!*Zdw=_!);eR~*Z̀w#=j*.;zR@0*w#ͳ!\;Rd*Q"V*S"X@*V|;RDʈ+"V*X~#"XH:U!jh;R2*Q "@*S=;R:0 =_0;RB x;RÄ*Q"; R}>M6# ;!R!;5R`;JRRE;_RAD PAST EOREAD ON U;tRN-OPENED FIL,S TYPE *;RFIL;S@!> 6 # =!6k;S2!`::>@1~#;'S#`/ @~@T#; ;S_y{ʠ  >?w#ˆ;S/;TzW{_x/Wy/_;Ux/Wy/_; VzW{_`; WzW{__; XzW{_~; Yz/W{/_";Z3"_͋ >__ ;[3"_͋ >___ ;\3"_͋ >__ ;]3"_͋ >__>;]`_;^3"_͋ >__ ;_&"͋>>!Y;_;`| /g}/o#;a}o|gɯ;b}o|g;c3"dd 0e;c`*d;d$"0"e!;d| |exŷe ;'d; e|/g}/o#;fy>k k X;gy>k k k I;hy>k k N;iy>k k >0k ;jy>k k \;ky>ƒ >͖;l{ /<_; m{/<_;n3"s͇ >ss ;o3"s͇ >sss k;p3"s͇ >ss ;q3"s͇ >ss>{;q`s;r3"s͇ >ss ;s&"͇>>!L;s;t3"u! >: ;t`u;u&"!>: 24;u !>0!_;v3"{͈ >{{ ;w3"{͈ >{{{ B;x3"{͈ >{{ ;y3"{͈ >{{>Z;y`{;z3"{͈ >{{ ;{&"͈>>!A;{;|3"}! >:;|`};}&"!>:22;}!>0!];~3"͆ >҃ ;3"͆ >ڃ̃à ;3"͆ >ڃ ;3"͆ >ʃ><;`Ã;3"͆ >ʃ ;&"͆>>!A;~;>2P"022. 23!l;6>D:7ʘ:92/N;) 29!6 >>0X;2͈\@!@>;OfʹD!.47>0;aC!H>2͈ҁ@!@>;tfͳD!.5\:3šZ;$/23!L>3ͱ 7!;6>B!.~/<; Ҵ^~w>25{24!:;Ąw#@+~0;لA:/> >-2:4;$1:4=B2.>24>25;L!::4=24~#L;  >.D:5X=@25~;,#!$::4/<6.#6;@0=>:4 G:5G#wN;V+~0ʄX.f#6:.v;k ʘ6E# +{/<-p#T;" ڈ:Oxʔ0w#q-;#6!~¯60#6>;d2ú#~¯x2:P;:n :O>;Єf!A*0!6 >;C!@>2ͳ!6>;$22!6~$  = w!9;; ~w+ ‘:222 ! ;!6͵:20;5?;J7+;>2"82262<;C!?>":@ʠ@:E2;'72EC!?> >{;2͇\@!S>;OfͺD!647>0;aC!a>2͇ҁ@!S>f;tf͹D!65\:<šB;$/2<!h>3ͷ 7!;?>B!6~/< ; Ҵ^~w> 2>{2=!F;ą w#@+~0;مA:7> >-2:=;$1:==B26>2=> 2>;L!F:==2=~#-;  >.D:>X=@2>~;,#!$F:=/<6.#6;@0=>:= G:>G#wN;V+~0ʄX.f#6:6m;k ʠ6E# +{/<-p#K;" ڈ 2p0O x2oQ;@ʜ0w#q#6!~·;60#6>2#~·i;3x2: :Ӏn>;Ѕ:O>3! *8;!?>!S>`;ȹ!?>b2:@!?~.;H((=w@!E~w+ ;D::2:Ó!?ͻ ::c;20;G;\Ѵ$5 `;&"3!6!6j;!~ʀKO;$D62#! ~;9 1Oz„2#8À1 ;N"12M1l;&"`!>! >;!: &~n;$_:  !͉9;5F*`! `~w!;H @R@_#r; [ T!;&"`!>!>;! :&~v;$_:!͉9;5F*`!` ~w!;H @R@_#w; [ T!; Oy;?;&"F! >!> ;!: .~>*;%7EE0 ~7l;9E+@9!;zz>7zR; {; }Í;$"!H!!; TrueFalse; }Ï;$"!H!>`!X;c; }Ñ;$"!H!>`!T;; }Ó;$"!H!>`!X; ;! !; }Ö;&.T .F;&"͝!!!;j;&"͞!!!;i;&"͟!!!;h;&"͠!!!;g;&"͢!!!;f;&"͡!!!;e;>Þ; >"!:>; @/!;!"$>!!;# O~#>!; |>; "#{ʃâ!2;6*#:â;}T t Yʀ yY; >>2;""!>:2;C!>0:nʐ0!;(>ͧ!> 6#=5;:5Ƙh! 0R6;L #E.@v#~##;a0v>6 #=h60##É=;v`:gw-ʀ6 #w +9;a:nʓ#6 #6>0 !+;0w:nʘ:O>0; *;aͧ2ͧͥ >2;y!#L !B;&#)&`!;:7>'# ?3;NLf! ȥ!y5:xʟ;a3z!2ͥ!y4>2x;uB6:y! 򧀟<C;'# •HүE@Ë Z;F!`ͥxw`! ̈́;äɥÉ!:`2;Ԥpw x*".;a!>!>`̀;̧*a!>*q; &! DIVISION; BY ZER :0:;1 !̥!;B(!7>Π;U'wG# QxK;aͧ2ͧ>H2ͽ8; > 2 $͗D@>;(3!0ͧD+~0§;9=&L!͘!;Ma:2]pw:5;aPڃ*&"!> ;tC!>2ͧ*0!;>*:u; G:<7C2!O=; ~Ҹ!;¥~+ ~~$;ץ!~w# ; `ç~w+?;!! !f;§`!w# ;`ͧ~@>w`ç>; wç3;B >U>2n;8!@:@*pN;*w>*̀;>H!'w# Dù;S:>!HjC;i27>5;~'w## @v>Hj!;@ !ِ!;@OVERFLOW/UNDERFLOe;י~w> 2;ҧ""">!>!;d*H!;M; 1ͮö; 1ͮð; 1ͮ; 1ͮȀ;3ͭ!~w;#3* ~;BP""'"+>,O#~ʚ;'33 #x2~);;AFy,E ##" !";O&!VOUT OF STRIN|;cG DAT;f* ~9~ " ; ",ʄ(+# ;( #" xf2!`" ;9L!?OUT OF NUMERI ;MC DAT;@" ~,#H" ;I")!+Ͷ:1W@:.;$2.*)+w#  >; );>ò{;>2/",!!7>!2x;>262;<@!2>;(`!;20!57wҦ+š;@:0G!5~w!2͵;A:325!5~_w!j;в:~W w:/W"0!2;@7NG x 1;H4#~w€6;~/w+~w+~;$w !;$"!>2!>;D::!~_;) w!~Ww":H2!;? w#BTʐo;THM!w+ ;iIcM:G:O2xc;~: x*!A;>:!>*{;D*!::!>;!!>2*j;г;!~w+ !;~w# D!7wy;B+ 0!~+~=w!;$~w+) 2;9zW~ww;$"!^>2!Z>;D:_:[!a~_;) w!]~Ww"b:ZH2V%;?U!YD: ʀH!]:;UH!a]+ˆ^?D;kH!a]+sD};D:^o:VgG2V| x;!x"*b!$>E;C!!>"*!Y7;!w+»$!W.!V4#>c;Ӵ w!V͵*b!Y :Wͮ;紐E!V>!!>i;*!<RS> D;IVISION BY ZER;#!_.@![~w# 1;9~w+@<zW~*;Nww-;c;~2@#~ -+~=w;~w~w+ $;*6:@+~6# 8;?>w+>K;T~+2~;; #"> +2~#ʀ ʱ;P ʅ EG~+ʀj-;ej+>+2#~ʅ{;z_~_#Ap+6E:+{F;/<2́"x//2!dͻ: +ʿ:; 2 :!( /;Ͷ$<2!">@:= ;ᶒ2*>͹e;C!!>!!>͹O;a*>*ͻA*w;~w2 G!>;-6#=.A*~E#"Y;B.O>25 !;W ~#‰Y!  !;l  I!  ! ; $2!>6+=E;I’! $:@ʪ *;H5:‘*!Eʾ;.4$ü:H! ;ֶH ɯw+ ;0 >77a;0;1;*;>øo;>2/",!!:>!2l;>292AB@!2>;(`!;<$!2!:Q;QB*0|oD:0i!9,;fIo!A$!A9;{ +x*0}};H!9>H20!87w;+ :0G!8~>;&w!2ͻA:328!8V;θ~_w!@~W w:/;W"0!2@:NG ;;xH~<w#^; ~w ~/w+@*;"~w+~w )\;$"!>2!>;D::!~_v;) w!~Ww":H2!;?w#B0Tʐo;TH M! w+ ;iIcM:G:O2xB;~: x*!;>O!>*6;D*!:O!>;!!>2*R;й_;;! ~w+ !o;~w# D! 7w8;$B,+ `!~+~=w!;9 ~w+> .2;NzW~wwɨ;$"!p>2!i>;D:q:j!v~_N;) w!o~Ww"w:iH2b1;?0U!hDF ʀH!oF;UH!vo+ˆ^?D;kH!vo+sDM;D:po:bgG2b| x;!x"*w!0>Q;C!*>"*!h7;!w+»$!c:!b4#>9;Ӻ w!bͻ!bͻA *w ;I!h:cQ!!b>!q;!!#>*! 0O;  DIVISION BY ZER;"!q:;7@!j~w# =~w+;L HzW~ww?;a;v;0~2@#~ -+~=w;~w~w+ ;*6:@+~6# 8;?>w+> JЋ;T~@]}>Ҁb/2@;c#}o|g@"DM:#¨;y*  " |!92͐,;L!,:w>!'`*{;$>> 2> 2!;7'w#L<!`2~;J+Y-†Z>2#~ʏ;_0rʄ#@Z 1;tBB„  !(; w#Z!  ; #~:³: o;~0 B@!';wÞ:!(;~w#D !5:;(!'~w#@ J;:(gH2(!5;&H ; }2f2!6:n;:O>0?;#"/32!0;`:_!6!:/;# O>@*/;#"732!0;`:_!6:Ӏn;;#Ù1!:O>*7;5W;#"Z f0;& !6 :e+@%w#7;&1wA%x;60#<2;;62:ӄnT!:_;N O>@*ZP;""Y!f|>+2e@}/&;o|/g#>-2e[N#F;* |7,+y/Ox/G ;?y0w#R@&V;T@*Y;i; "^>!a2`:f.; >+2g" >-2g!as;*~0@H~01;? #*X":`W /2`;T*^;i.;1:#0*~#0!; 5,ƒ#5" ;' I;33 ;s#r ;*:OG~ "T#; r~"ʂ9# r+;(A~"; # r+~#t;=! F,; yK"y2;R,9# h~HT;{;h FÓF! !;|ِ::í;ɀSTRING INPU??;H!%ERROR IN INPUT,; RE-ENTER PLEAS0:;)c:Oِy!E;;fِ:`??H!N%;NNUMBER TO LARGE/SMALA;c;y!Dx+; )! "[>2Z;+7?{_zW!Z5ʀWyOj;@xG#yO# xG/*[ DM; Uˀ/BK;02 +B->2N;`i"p! 8T])))֛;)0 ?F_:z;=|/g}/o# *pDM! ;RHȷ707 b?_"; g))))P;#"]:ON`*~a; #ʐN~,@h ;(Bh hE~C+h;>-h #"u ~,V ;T# >0u~,N C5;i _~,†u# "0y2S;|);O>O2!;c"2ar;' aʄw ʨq;;d`26:>E6;wx+ ~ x ;+ >>0 p;>Ba>#;f!>@>#1;fd:!;c:O2:TOO ;MANY CHARECTERS. MAX ;IS 252!"2;^#V"> !+P;#F**0*~ @N;6Fi#"a:2Q;HL!>"!\*0*;[0*6!"#";ma:2\>2\@;-ASCII FILL;~#d#~#;y ;B21~!A20#~!;"!05!$ :10; ) y; L!ِ?; f2%"&ɧ;D2n"(&+H2q!q;d!r"o!q0:;'!*o$~#.;<,-$*^+/;Q&!\€_#~`:OE;e0~#À.;y;;r;];H;3;; ;!;6;K;`;N# 6~#@ ;6#;y/Ox/G*  " ~#; x6;* w# x" $!;9z! `! *** OUT;) OF MEMORY **%;^"!#:%0&;f:**&;';C2m~2 #~2# :m!;؂nD`:O>[W`;'>]> d:o=H2oD,;;>2oyz;N_":n/2n;c0€b8;^"$#&!͘:;` WARNING ONL:;)O͒!H͐`:;<!N͐@W ERRO IN ;Q LINE*|0;e|0}o;x0}0!5;>w~!4; !#Ð~;* s#r#" ;* +V+^" ; y2 #;`:Oz;> ;`!Z ~> ; <.; O> >1 2c; >$^#V;>!!7:7`;(a:5 ;&":f:!`:; `:!0:;#f!a:90:; 4!!;&"2"!1O  ;3~2!0!0 ;%f2!dF; {;^#V#"~2#:[; !!; "zz@4OFx@Ky;A#6K#wKK;* #6ÁKO~Q F,;? #6#1y*z"x;Ta|e}eqØ6!};h3y2&*x@KF;z;0FO #6 w;@zʀ! ;;;*;?;T;i;~;m;X;C;.;;;;;*;?;T;i;~;l;W;B;-;; ;; ; $ !Z 4 '=;6'!{ 4 '6y2X;,>F: 2Y;?^#V!P!Y> :XO;T@:Y;i~;~i; m; !A  7N;#~#^#VN#!A ;**7~#7;?;T;i;~};h;S;>;);;;;&;;;P;e;~#^#V#0;"(^#=ʀV#=;&*(*(;^#V#N#F#N#FG;^#V#N#F#N#F#N#F#T;N;^#V#N#F#N#F#N#F;;~#^#V#0;"(__{ s{;+='r+ ='s+=€!b;*;!.MAIN.\.PROG..DATA..BLNK.SYSIN \SYSOUTERR1 ERR2 ; f/};@M> !D ;&!%BAD CHANNEL ;)NUMBEw$//Ð;>Ió//$/4ÐnO;SI&//$//Ð//;hH//_@|Z;}@*:; ¢ʗ 2;@Ì!|;x:|;*7>|;  22;;È*|!w; "_ ;&_7:Q;<\!>2;QB:~p\;f!_<2~!;z~ɀ&INPUT FILE REA;ĥ;@|Z;}@*:; ¢ʗ 2;@Ì!|;x:|;*7>|;  22;;È*|!w; "_,, -  COPYRIGHT (C) 1983, MicroPro International Corporation.  MicroPro WordStar Release 3.30 KAYPRO 10 #7639GM  Kaypro Computer  Standard Printer  No communications protocol  CP/M List Output driver (LST:) "tE2P= B0C0 @ *2!*2  mB@ @..BUGNWBDFIS;G,"/B&&/O<>><<==<>==><>=.AND..OR.Y[]{}AEIOU:+.M@DDF< eeReghChChdhBheke h yge  Bj Kj 0j 1j 2j 3j 4j 5j 6j 7j 8j 9j     2 0.         )       "$6& (*,.08:H4        `(C))0<z   -__7777l clUlWx2z7W:Gd~~56   YZRCDTTVV2CCTTBT2STTTTTTTTTTCBTTTTVUUUVUUVVSSVUfVVTVVTUVVgVVUTVTVUTTTTTTSTTRRTRfTTTTSSSTTfTTTTVTVU <NIQYdXfjly"+8AIW^o~YN @@@@ now now INTERNAL ERRORFATAL Name of  to fileMailMerge PRINT a file Ԡ  *** FATAL ERR F25: NOT ENOUGH MEMORY $ File  not found. Menus &  messages will display as @@@@ only.  WAIT  Print\paused MailMerge printing\ \not\editing\ ڽ ׽ *** Press ESCAPE Key *** INTERRUPTED***  E*** I***   F: G! w~x7*Y;:S;w*a;*U;d| !͠ "p;!"w;"y;#"u;~2r;#^#V## 2x;~2r;+~2v;##͍~"s;d|"y;"s;O:S;!<=7 / q#s#r#ww#;w!h;~#U #~*%6|/!Cs >2&6W *%6|/͏ *>;!9">;:$6C 5 ";͏ ë  :<; x~> x:;*;";";ͫ*;͠ W ;3 "; ͏ !;͉m͉à: : *9;W{S z!{!4ʖ za > W_ !J;z>#>29;{ ȯ29;{ x~ #È !9"@;! t% ͽ &*@;:$6 "C:$6%Có LH SR1 UJ BP PL9 MTE MBK HMQ FMW CW] PCn POe PA CP} PN OP HE FO !S;>wͭ n!o;>$ !T;! í !X;< !`;< !\;< !d;< K >$ !k;D !m;z D > >>2:;;%ڤ ͅ"D;iÊ *;ñ *;>o;w#&  & w#- 6> ;% ! > ONOFͮ%t% };% }&5+} nd !4[`.{>2;;!J;~6ͱ{ڍ:4!;;6>J:4!X; !x;ͩ*;!u;ͩ!r;é*5;*D;zĠ:$6>2;>2<;>*F;_:S;<=*p;͠:4nd*p;!`; !r;ͩ'!u;ͩ> .7*;#~+::; ͅ:h;;!m;n*D;|Z} > .ͪ(2h;i"B;!R; .+ .> /#~+ ͅ:h;;~(#~]\#~]"#*D;ͪ ":D;#~]  +.!yo:+;}L>:+;:h;K >!h;w:+;~e>b>JK o>^#~(> Ju*F;:,;ʔd|:S;w͠ͷ:J;À:,;N#͍ ʓ> .> Jö> .+|#>Ó!".g|,-:4J}> JG!I;~6!4x!k;^;n(x!0GO!D> K>~R>- Ba x!H;~<> BCf †!"H;> >*S;&*F;"F;*U;͠*F;|ͅ!"F;*D;#"D;2J;i*S;>*o;> :4*F;|:,;*U;ͷͅ> J*F;|ʽì HK| &B!H;~%5K;!G̰#~ ̋͋:<;7*D;*3;à͙ËCď >2&6Ï r'͏ ­C̏ µď :4͙<:4>C}:|;;E!;E!"$6"&6<=G:'67?*;~7?p#~Z_x2::;*:ʻ*:::g";yHG*:::g":::o&{2:y:;wy_!;*/;d:: x> ڨ!w::~’=<<*/;-ʦҤ<>Z ~x_}Gy2;:;! ;4!;4x*;::w";ͫ";!;4::#4! ;4x::*;w";! ;x * ;*;";*;* ;ͫ" ;!" ;";" ;!;~6fy_!";";ͫ";!;4t!;4!;~::5*;";: ;!;2 ;*;" ;* ;|:;*;)::G$%==xxy2;>2 ; :/;=|g}o| *;&*/;*#;d"#;" ;:ġ͍ͱ͍͘9iR͡ #R͡iR͘iR* ;");:;K͡Yͨ* ;"';*;)*;T]:: ~:ʆ* ;à*;&#;÷*;%;÷ͱͱ*;!;÷*;;* ;d|" ;:/;w#~w+͠ >< ~# y͠O>G ><6 -+~ ))y+#x 6#@$%%$o>gSSdDMxɅo|gg}o|g^#V#~#fo# ”Gz©{xɾ~~/w~#ö   :.,;?!0?:ɷ @[A?a{r'/N#"@5w@w#6:#6@n i6.#o6 yw# n͈ý0 ڐ{:|Ĉ_:¼# {2F5_=!s#):OGHGx2y2::"6#<8!6!#6+6+6::A5ȿ7>#<>͓&*6"67E#)JJ:6C7C7E0*D5!͘!7͘!:6!6~6C7:hhh#<#>͍&/<8/<##!wɷ/Խد/!?7bk++~ͅ!7͠z:7Zͅ!C7w/"ؿ:ͦʹ> ͍&PĽ>!"͍ |<s#rɯ7>G/r'^#V#W /͉^#V+ѷ͉~W #/:h72u7i7>2h7!74!7i73!D8*7*͠ʂ!7",6:h77͠?9͠>͍%}):7=!9=z27!9i73W >w3!9w:͠ý!B!.:7ͣ*7+##+L!D͓Gͣ~L/ -%!ͣ~L 3%;!R ͩ̈́k6#~!Ͷ> 0*5~*5~ w#~<!5"5*:G5/!': *7+w\*|96!26:U͚>n:l͝>!*wy͔:ʑ/D!5"5"5P@ G:E5Ox:3 x  yON#F | p+q ͮ!W *7:3O&:2=!! DM#:G5h?# /b +S H`"  Y!ͣͩ;!;!E5  â*D5>+ ,&":D5  *D5-">ʉͶTE[#0w!4w:$6FDH:%6J:&6Lͫ$I'%ó*6a*66*7Mʳk}#^#VʩʮkNP++O:H5Gy:ø>~ͳܚ >  :E5 >^ @  :G59 v !455  !!E5 j b 4ͣ*7wͩ#8!6*7\ +4:2=ڋ :3*7w"7*7w\ 5*7!*3&*7m}ͣͩ}ͣ> -¾ ͩ;!O: y6#*D5͠ý0> nO !<5!w"Á":?53!ͣ*7~G:7wͩ26!"7:?5X!:3!*D50#!6~v!5ͣ*7~w27ͩ*D5*":6o&͕!ͮ!*D5͠"*6:6o*D5}!o!6:!<=:!}=!!/!:G5~<=#~ !!0:2=!:3""=OM#:G5n"~ @"# 3"yw +~ F" ͘!!P~!m"A> d"!ͣ6 # t"ͩ;!!n~’"!g!Ϳ"!*D5"͘"!~!͊*2-&"D5M#5!"7:?5•" ":!:K0#*H\:G#!4#!=#!B!!:JG{  ~6#K*7*7m*7do&U\*7:3O^# ]#*&{#}!&Đ)>26*D5"6 t$ t$t$I'!#ʶ#ʶ##*6 ""É#!####l$## #*D5%͘!y!  $>$$!$>$-&$!45&$>!ʎ)#ʺ)#)!oy^>Iy <o26}+q#%:=5:2$<26262626%y!>û$͉$ù$'%y!>!D5!00:6!6$~:D5!6!"6"626262626͌!$260$Ì!:H%:H%:H%:H%:GOf%:%6`% y| xK%!{&2j%&_:j%W~ʨ%#ʙ%###É%~“%#^#Vê%}& ʮ% ʮ%!ͮ%%%0% %T])))_&%%0% %|7&%x 7 7 77?h8h8h8h8h8@8B8D8F8H8J8L8N8\89P8R8T8V8X8h8h8h8f8h8^8h8`8b8d8h8h8h8h8h8h88h88888888h888h8h8h8888h8h8!|ï&V'Ϳ"b'͉7-!~V'+1y-:626͉!$b'>}x1͝$26:626!&26%Ç-!6~6*5~͝!66:68'!!z÷&~G!|6~6̓1:6&'o&)&^#Vo&D~:6/!(6Ÿ'5:6v *D5! ͘!f͘!!v *6|!(6º'W ½02(6*7"6(:&6'(h:6(:%6'm(:$6'(j(l!4((n`:3OU(!!:6*6u(*6u(:6z(>U(:626*7"6(O (G:3PxT(m(*7*6dW(> z(}z(| Ҋ(>^z(@!H5\™(> Þ( ʟ(#*7++*6w͠ڵ(#"6:&6(:$(:J5!6m(G(^#V#(~#z((:!!&!6 )26E)!6N61q!6FwOH):6E):!>S)26!6E)2626/262654>31:O5!44f)~W :6hb:60):&/Ð)>!&Fw>2626))26 :6¶)26:6<):6=26!"626)}:6O/ G:&:6)o#}!6Ĭx:&ʠ)W *:6=0)!6ͬG:6 2*!6):6̧):6W:6)_:6!6<*:6*#+ W+:6/<_y!6҈*l*qy!6ں*<26͗,z<26W !6:6ʺ*:6Һ*z26*z*!6l*26*7"6:6O:6G/!p((r*6@"6}x/+!t(y++>͸(v:3U(:6W×,!6452626*7"6:6T+266͊,+:626Ğ,:3O *76 #=d+#̈́+ x Gm+:6G*6+F+N <ʰ+"6}++F+N 26++++DM>26>.!i,### ʸ+#~+  +26*7"6*76+r+s ͠(,:6(,,,+~w͂,+*6 !e, ~`,#:, G,~*6QSYuHEvREwCOxOVy$$z6"6}>26j*7ë,#p+q}+F+N <,#Vp+^qBK,+V+^ oʤ,ڹ,, ,,,1/4-><1/4-<-<:<-:<-*<~-:%6!q1ͪ"*/4*K"7"7"7*7"7"7"7"7"7"7*7"7! * d!"6"626*/426/26y-!"6"6"6:60!-!4~=º-w]1 '>26!&6~/++! q1:6M*.>14(:%6-*7"7126|=;3.=5c.^#Vq126262626%>26ͳ/ͻ..26G:6X.x ʤ.?G~ʤ.h.[.#~ʨ.:6<#^#V++oN26ͻ.i.26O~ʨ.###~ʤ.#ʍ.Ô.7#^#V|7!$ /*D5W ̲0H/W ./6.=͌!͘!9%/=͌!7ä'>26Ͳ0H/ ͫ!͘!:6F/!/~F/E%F/6w`3^ͫ! ͘!*(:6b/1=!60:63^ͤ'W :6!6ͬo:6†/:6o:6/!6ڝ/!6ک/o&ͮ!W "<É/h):6!6IJ06͓:6G:=5O*,6|!6/6:6!6ᠡ/6W s04(%:&6!7:)6!7:6026750x/50͂020Ͷ!"6͉͹$:626:6R0!6~6!7*,6|!",6͹$:626s0>26!)6~6ȯ26:3Pڏ0!7:14 ͘"8026Ç-:6N!60w:60:6=0w~=!6)!6H)0h`0w`:6133:6!6ͬ!6ͬ!6ͬ*7"7"7>26:/!606EW6Ei7Eѯ2.62U62h7~#26~26#"6Ô1}26|26"6Ô1~#26~#26"6:6=>$Ԭ&11i`)2^#V*6 *6)))2N!}6 :66i`)2^#V#^#V#g2~#fo)DM!!q#p#N#F 2X2X2 2~>'č&#:6>,č&6 >*č&w!^#V>(č&!}6:6w3>&܍&x2>܍&!$~͍&><Cv~3 have to068.0606 060630606#0606o06v0606}W6306'06-06f06!06i06~  855???????????!͓6!N͓6͋6You are trying to run an uninstalled WORDSTAR.Please run INSTALL first.-͋6 ͖6̈́6~̄6 #Ö6**************************WHAT ARE THE OUTPUT STATUS PORT BITS FOR YOUR PRINTER?͌ZlڜYLgҜYܯ^Yl:x͝ *************************************************************WHAT ARE THE INPUT STATUS PORT BITS FOR YOUR PRIN: k+\l-\l:\l<\:'[f3=\Of(=\f@=\f7=\c3\d(\!e@\de7\ 0:+\0:9\ 0:N\0:\\ 0:q\0:\͝  *************** CAUTION *****************THE FOLLOWING PROCEDURE WILL NOT WORK ON ALL HARDWARE ANDMAY HAVE UNUSUAL RESULTS SOMETIMES. PLEASE REMOVE YOURDISKS FROM THE DRIVES AND REPLACE THEM ONLY WHEN TOLD TO.&`>2^͝ ****************************************************************************************************************************YOU MAY NOW REPLACE THE DISKS YOU REMOVED EARLER.*************************************************************************************?V<<214!9"/4ͨ<>:l2,:] @:4,:5,*/4͢<&ʇ-!4~6ʞ<=wʇ-:l277!u&<Ç-B=>:L!=!͘!!A*?%=!͘!!N*!*!?*!:=#:=#:=#:=:M2=5:P2&2F5`*i!$6@:2G5`=͘"=:F5þ*͗="7:3~++"7"7="7+"7:3~++"7"7"7*:G5¸=*2L&bj «=d+#"7"7*2-M#"7"7c"7d"7:G5*2-=|!L=>o&))))>>god:/->M>?->26:226=26=26r>:7*7>ԓ& i7! !=5~o>>o>6!d",6?-:2ڛ>yқ>?Ԕ>:3@ڛ>қ>!n8",6>͓&g- -4:G5:>>:g>>2H52I5>:2?5F!u!Ø"!16 !%X6!T66.!{66/:26ɛ This software has been provided pursuant to a License  Agreement containing restrictions on its use. The software  contains valuable trade secrets and proprietary information  of MicroPro International Corporation and is protected by  federal copyright law. It may not be copied or distributed  in any form or medium, disclosed to third parties, or used  in any manner not provided for in said License Agreement  except with prior written authorization from MicroPro. ͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠ҩ ͠͠͠͠͠͠͠͠͠͠ ͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠͠ҩ:!:K0#*H\:G#!4#!=#!B!!:JG{  ~6#K*7*7m*7do&U\*7:3O^# ]#*&{#}!&*2!"F*2&F  COPYRIGHT (C) 1983, MicroPro International Corporation. All rights reserved. WordStar release 3.30 overlay file number 1. NOSEY, AREN'T YOU? Bý<>AE>x ʡ</{/:<><2/;!:: *;<6#";=Ae@ !> :=%>:=A6#J= J=~*:::O ~!:ͥ>!":*;ͮ>========!=F6#>=J=~6# Ox͡?ç=":!::! ;"@2;::?Y>͗2:2:ALe x4>!:~6)>::ͪA2'6L>2:2;:;!:’>*:*:d*:P*:P͠Ғ>2;?T?e:J= > +~<>*;++~:>>>>>ġ?#*:\A! >!:ͥ>*:ͮ>9?F#>.?J=~ O#x͡?{?> ͡?":";{2:!::: ;2 ;!2>!:ͥ>*:\A*:::_>G{ʛ?H>G>y”?ʕ? O>xF͡?w?*:\A2;WG ҙ@ʙ@ʙ@?2;:?:?:?q>2;@@@>@A?::=$@<<=͖B@9@´2:>3@N@?::)>@!:1A#oHͿ@::x :=*/;>AͿ@î@Q::@:::=@@z@z :::@:::! ZBZBZBZB*{;#"{;e*:&]>A~1APYð*A*:&:;HA]*:":*:":!*:dEA]*:":*:*9<|d":::_jA*:|*9 –B>!,<*:-,=AҵBAÙB!"{;ý0zÇvýv}vÑy]ya !.; ?delete? rename? New name? copy from? copy to ? *w vh%:=5!78:=508$02=526%:=5!77!6@*Ͷ$:626'%7$!75f#ͶvQv@_#~:w#Ͷwv>;͂y{þ6!4͂$'%Qw!z~Nw4w#Ewz~#$O*&+1*D5"6"6*6͘!ͫ${#Ͷ$~@xy:6GxTxTxMy=wҹw$9nw$8nwywoxwEnwyw!6w8nw>܍&w8nwy>xoxxEnw>x8$I' !1x#~>xEnwͫ$}!&Đ)8~gx#[x$8nw!06ͭx:6ʑx!ͭx!ͭx!7ͭx:%6ʩx!;ͭx:4!;ĭx# ͔8éxկ x=yxy.x#y xͶ7!yy y!yy>  y~,y#.:*? пͶ#~+:Xy~?Q?@##*w"v9w$v]y͂y!6 6+:%6!4!6ʬz*w&v9w(vʕy'z͂y>2zGOyy*763yx2)6vcLv:2,:2]1%24:6«v 8͍y?%÷v8͓yyI'EvvQyv7v2626:&2C5:B5͐)K-EhNw:6wͥ!4~6-ww!% E!2v! h%!7:72w!7 swI'͌wswQw!7H*7yCJͦE!7xEKJ`Jy’J`J!"6!7gH*7wC͎Iҡw`Jv:%67-%$ 8.| I':&6:%67-ÿw8w8>25G*$6|!8z:%6z%:=5x!8ͫ$:626̅$!4/x,v2,]1'%$*&+1*D5"6"6*6͘!ͫ${#+w#Ͷ$~ʌxͻxڠxʃx1yڠxGͶ xxGMxͫ$}!&Đ)8~ʳx#çx$8Jxկ x1yxx.x#x xͶ7y y xyy>  y~ y#.:*? пͶ#~+:Ly~?Q?@##%:%6%zfy$8uy:%6z҈y$8.| I':%6xy$.v͓y.0v!4:4̩y*$~ʿy ʿy.#yìy6.#7 yw# y+~.y#6*vy!y#~$I' *7*7d!'͠?!(8",6!C7)z!; ͔7?x JvQvWv4EDBACKUP$$$BAKNEW FILE:x/25bv͒v͡vKw]1:4:O2J5>,w:j2M52K5:3!kڈv~<2O5>24!@>2%!v!͒ʾv!v!͒v!8",6Ç-!@!6@22(2+2=K-*7""7*7*7d|<2626|D!"6>26!w)"6(w26!5wȷ! @>2 !m:%6!4̬!~ͪxw:,ywͪxw:ʅw>26C7 !v!~7!v !:4=w!%5!7!4M:6w6 #:@!4M!4~M:4= x!5%:6>܍&> č&>܍&>7x2Bx26v?%!v!:5,w:&2B5:C5͐)͠):%6ĕxsx!8",6:=5=?*,6!N!>5”x5!p8",6;! ͔7?دɛ{ vcvtv:%/Wͳv̇v!ʂ|k͵LzWLj!7H*7:%x̢G1!jnvͳvnv,v!ʂvk͇v:%ʤv:G2Häv&w͆xI'͵k:%ƒwCÐvnv!Dk!Dk&w7v*7*7dv!U*͠> ܍&10MGI'W ixg"6!7G*7*7w# w"7zwCCv!"6Uw!vk:>wnv>͍&:%|z!H:G6w:%nw*"|> č&}> ԍ&:>č&:>͍&͉wÐv*h*7͠ҥx:{®wïw͠ҥxzWx|¦wwzwww:ILx={xڦwwLxæw{xæw!D:I7ȷ:I=4xLx;x:Go&A> zxx1x{(x;x>2IxwÏw{xA%xQx*7#"7{>2IwC>z:I={xLxnxæwgo2D2I#C>2D>2D2I*G&"h|2{| xx+!Df:Io=Lx{x}2I|2D"h>2{*G|g*GͣR8͵L̓V*G"G2A"E`i"B2?<2I2DLy:&ogyy&"GDynxzyz=y͈zz$y"ELy*EDy*G&[zv{ʨ{zyTyv{[z}{qy33"E!yKâz͚zځ{Šynx͚zڛ{ʕ{*G"+:&g$o"G2D2Iz*+"G7z|Ҙy˜y:&y+Lxy[z:Gg:HG{|yDM v{{my"E:G&oA:HzyGw{>2DmymyTywC'LyG;xQ'LQz*LNzwCy͈zz |z |z͈zGx*B}”z7+"BxwCKz!Azʾz z6 6Úz6GͿz>xɯx z#z+:D2IG{x G{ #|z͝x+z:D1{||z:G){|z>2D7=|z>2D:H|z|z){> z`{e{}J{W{# }e{ Gx*EâGâGwC>ZD> ZD!Þ{wC'LwC:&{y  ¶{ v{:H{|yJ{o|{{%{E{8pw{8{ ×vÞv(wz#9IWWFIND? REPLACE WITH? OPTIONS? (? FOR HELP) *** NOT FOUND: "REPLACE (Y/N):  ???R5"2äv2>25O͂$'%v$!R5f#25yv>,}v$!r5f#25>)}ͫ$*D5!5 @>2525:5w͘!v!5 f#Fyv͉!(kUw.(!(k25:5Kw:5Uw>dxUw:BUw^x:5hw:5̘kĞk*5"5uxI'wҋw*5|!v!v÷&:5 x*5|ʞw+"5:5!(k:5»w:5^xqw:5qw>dxqw}:5JÃJ+1!CywxxwCI'ww:5̞kĘk7;!:5Wxx+x:5:B*7wwCh:5*7wC*7!r5ͤx*7͝G:5:q5dxW /KwC*7*7͠~wC!R5C:5ŠxͤxÜxͤx>+wx+w#y25~xºx>  > x # èx+p#:5K?wC! v"6Ͳ0ͤ'/y! y#~:5 y:5 y>dx!H5 7*7~ -% *6͘!3%=yͫ!͘!yI' Ͷ#Gyy?gy$77!|vy>25#‚y>25#”y>25:525#Ÿy25#«y>25> }"v$v$7+~#bk))y0_y"5y!:5z!7z*7(zwC!7z*7MzzH:B {zȮ>{~>z~>ɛwvvvv%v7vÅvÖvͷKK4v(vC[gL*LJv=v#D*P:6O~`lvyͪ`lvlv Wv~~wyͪ`‚vDM26PjͷKKhÈv:p*K5͒iڰv*O5+++mڳv*M5"K52p!ւ-kH)*6"6!6ð!\ev!e"6>26!"6:6*:vXK/w!ڂ|k*ͷK/ww[g!΂ e>267ɯ2{Ͷww3w{Ͷw*w7?@wͤw{uwͶwwʃwͤw>2ͶwwpwE7:7ͶwSʚwDwͶw-7+ڂL"#{ʼwI'K? | ڼw7*wɾ#45wɛy6BwXwgwÁwxCxwwwwwwÛxxwwx9s{IQ0 ENTER space OR NEW LINE SPACING (1-9): LEFT MARGIN COLUMN NUMBERumn)? (ESCAPE for cursor col RIGHT For decimal tab stop enter "#" and decimal point column  SETJUMNF TAB AT COL CLEAR./; A for all)? =*2L&bj «=$Bv1< 2$!6~6dw6H)!5Dvͦw2M52K5<<<2O5===!K5w!M5wsyH)=xʸw*"|}w>w<>!w!ð!ð!ð!ð! Ͱ+1!!H)ð:"!#w!48",6!%wHv!5xyͩw_z#/xXxXxH)y!54@zxJv!5Azy4xͩw_{w!54wsx)))){/w!4+ʒx~ʁx’x{244H)k yx+C!ނ-k0y**M5d*O5*|x͕_}x!ނ|k> ZD-x!ڂ|kk y y+wC-y:qw:=͋wH)xͷK*s"lͿ7(ly *"sͷK*s":s_lͿ(lCy;y!*x#/x-Vx;yzy'%ͫ$f#Gy¨yͶ#ʦy!¨yW#Ͷ7yyͶ{|y|y~:0#bk))wy{&1wzYzSPELSTAROVRSTARINDXOVR%3 COMMAND? WHAT???   NOT FOUND  Enter the name of the program you wish to Run,  optionally followed by appropriate arguments.  Example (shows disk space): STAT check / add to dictionary? Index? 24:%6Cw!8",6g-̓͠!8?w26̓1!с!@ !!8?wE>1:2!M!"~2!tE":4zaz!:v7z'%4vͫ$!{?6yy> 6y 6y~Hy#.: пկ YyͰy y~y.vy#~yx͜yʑy ~y͜yŠy>  ’y~ͧy#*?HyͶ#~+:y~?Q?@##~#fo"d{#d"f{z*zzo*z4zg*f{s#r+|z~w#+|y*d{F#"d{xG z8%:=5͹$:626ͅ$'%$2v>245w24%~!#v z>/͍&E!77z!4{'%>vͫ$!{:f#Ͷ~Syz6vÖzz8vÖzE!{x>245w%~!v {>/͍&E!87z!4{'%21Îyʈ 7*>212͟E:E1!͢È!~"*!`͏!!͏!"ÔG:x~# ×^#V+~#ʸÀé!ͩéO> π2>*_yN#!5x>4!E!E!E!! ͢͢!͢ɀ8d Hit any key to return to WordStar: Replace diskette with file , hit any key: *** file  still not found *** *** file  bad (too big ??!@&*) *** *** file  bad (too short) *** ***  found is bad or incompatible version *** ^C Cannot return to WordStar. Replace system disk (if removed), Hit any key to return to Operating System: Hit any key to return to Operating System: iz(vv:6:%6W6g2>uv:%6uv!&6~6Cv:$6]1 >2:%:6]v8!4*8w>2:2&6/2:2$6:6NzC!:@4!%;!4:$6ʮv/x8ôv/x8:6ĥwv+~!8v",64v~#v!4~v]1!9"gz$8:6<26x:6͌!Ͷ$=͌!8!4ͺw/x,8w:5w?w(x!%58y"3;w!+5*8y"5;w!15.8:$6y"7;wx8!4:̺w 8#ͺw#:4/"8̺ww$8$I'!; ͔7?$ xwN!w#+wAxw#~xp*gz xw>;!x#~$7I' ?:62626:626̅$'%$O*&+1*D5"6"6*6͘!ͫ${#Ͷ$+w#~xUyxxMyxyʾxyQxxʾx8$I' !ʷx#~Qxͫ$}!&Đ)8~x#x$8Qxx$9Qx$8Qx!;;y!06;y!W6;y!i7;y:67y!;y!;y!7;y# ͔87yկ [yyڍy͑y.xy#͑y ʍyͶ7ͯyʤy ‘yͯyy>  ¥y~ͺy#.:*? пͶ#~+:y~?Q?@##$*D5&͘!bkͫ$f#Ͷ)zͶzyͶ$7ȷ~:0#bk))Jz_Jz,z!*7*7d!'͠?!&8",6kp ÖMIZ"&,48PAGE\ LINE\FC= FL= COL\MAR\RELINSERT\ONdecimalLINE\SPACING\cFG?ALʡCڤC*7m"7`i͟LiL͉D*7mF*7 "7"7iL~GÞC*7"7dDͫL C   QDCGÞC|ÞC*7m"7F`iDͫL W W >D FD zLQD*D~GD G*7w#"7+͟D`iD͟L'D͉DrD*7"7ãD2xʽ0:y*7d:"/̫ED|D D D#D*7+ m!"""͏Fxʽ0 k%dEExʽ0  ^E 0E Exʽ0  Eg*#"*#":"QE*͠YE> ͖ED>͖EnED:yĽED*͈Es#r!"*#"*&)*g:"2l|bk+_:**:"EͫE!EE!Et%EELHCFPLXFMT^FMBdFCPFPA F% nE> ͖E*#"% E>͖EFnE;%E% E**#͠FE;%EE%g}2 ÀF! gF!gF!;%EE%yW{͇F͟F|EO: & !Q *** d|F`h: /<_F Fi`" 2xG  GG F9GOGF:"G9GOG"GF:O`G*+":yGG9G>2!454k%*+"*+"͈E͍"*7dA|#O zG fGxͬ&>26!7YH**6͠H"6!7YHHHd*6͠6H"6*6͠DH"6*=7*=dH`i)\fH!7#͠+HͶHͩHnH!7͠H++++ÂH!7H ͩHҚH####7͠H++͉s#r+##s#r++H͉#r+s +r+s!7͉m.II>܇I I:6GO I+I IbI͎I>eI1I!64F!6II=O:6=G͎IbI WI*7+:V7!W~zI6!-kwC*7#iI*6*7d*7͠**6͠ҸIͽIͦ*6#"6"7*7JI:@7W~zCJI*6*7͠J*6HH͠J:J*6HH͠7-Jͽ:Jͦ*6+"6J"7:G+~# OJ> XJJ͒H.I?K*6!72KÒJJ`J!7K*7ͫJJڡJ2@7"7 •JbI}77:73~J#J7>J>:!77:7`JI!7K*7}:bI"7 JbI.I*6͒H͠DK*6)$$EK=KO>ͬ&gH͒H͠TK)|Lɯ2 'M:WnKwC}K*72 /2 *7ڇK*7m:WʭK:­K*|ʰKPY͠ڬKDMɯ2WH*72 ͷKxK~# ! ~6K2 *7*7mx‚LcJ\Kx7*7ɯ2 'M*7L*7m>2 *7LLx4L+~ ! ~6RL=2 !7͉mx‚LJLx7͵L͟LͫLyLnL    7L?L L ɯo>g>_:mCW o g _ Wz}|{ L*7͠*7͠>ͬ&LLL M*7M*7}o|g_P}!\M͵L0M{fM>Ĭ&zʅM*7*7d͠[M̓JBM*7>ÎM<>Ĭ&*7*7d҅͠MJlM*7z7>2 }:2!uCڢM~=26=26ڳM~26=26``i"R "T͏F>26Ç-N*6<͠N:6N!6~6̭N /c N:6*6*67LN2626^N'* .4NyN!fx N*6"6"6"6y26x26:6!6[N26-ʂ͵LL-k:=5ڥNͤ'9%:6> 0Ͳ026W %͂0͉͹$:626ɯ2626:=5͉!$88'L KwCKʻNNN! |  7N!6~6ʐO͞P+O`i+~+++O6! ^#V{\Oʹ`?G1G:6EO>JOx=`͍RckL7>~͌`P̓QҜO*R~~O͞_PlO` ʜO_wQ~O͞P+O~QPͰP+OP΂P{<[g҂P{[gւP{gW 2l:K5!‚-kͯEO!|k*TDM͵kwC|k2K5:l~QÜO͵L :6``i"P͵L̓V:%26*&" "":(2:|6@P̓1 W :`b^:W!|k2WLP2$!6~6/W |Pͫ! ͘!:6=ʋP͗PڒP7ԗPH)!65mmͣRoR7ȷ͂^P͞P:ͪ`P!6s^wQðP>P:6`2&:W!tC)Q! 45P͙RP=6++++!tCP/Q! ~Q͙R!tC)Q Q QLP͵LcUlQ̓V͆L_QI`ͺ_yR:Qzbg 整yR͍RzWLI`L:6=ÀQ>`! ʖQ~wçQ ʡQ~§QͶQêQ͍RoRQLP͵LoR̓V ͍RoRiRz9R iR iR͆LSQI` R̓V͆LRͩ^yR͍RSQoRiRQyRQ hR͆L.RiR͎^SQRI` IRiR TR WL͍RoRIRiRLùQ:6!͵LzWL:<2I`:=ÕRLP*pC!&####:S~ʰR°R###~R+++Rzͪ`R~ʰRR+~G+++Rx:S~:S~:S~Sz!tC:S++++~:S:SDMz!sC:S!uC:S226LP7JS>2? T mS> GSbX:hYS‰S: 'TSBS:!I5”SSGS| S: S>^BSSS@BS^VʯS@GSôS*h#"h*E+"E*h+"h!TSS'T>T>͂ST> }T>~!kU: 1T: 1Tɯ2 :Wz2%*h:?JT+"&:k2(>2=:>T:U+zT*7M*7wT*7M*7*-wTzU*7:wTzU*0͠UU*h͠UUjVM*7+++++{TTU}~+TU!H5! F6BSOx2 y>2VL*LԌU2VLL͢Ux̿U+~  U#x̿U+~ # +åU>*L#:hG:?!:US#~\V*0}=V#6{="V=2>2;!k:22[\V:=2;2VW*-p#"-w#>2@[\V#54+U:i\V*0*h͠UGxG"026=2/*+ ÃV!"h9"+!W~ʚV6>2VLz2]>2\:22!:#:% 2jW:D=&XOy@X @X@X -XxgêWWxAX!X*h|}/<7:EjX=rZ:A:%2E-[:ͨXY:͓XY:;ʠX:2 2j͓X:\2\#̀\X:͓X:Y:͓XỲ\> #WGSͫX üX:X:͓XK Y Y Ỳ\YY#:ͨX@+:@[> O2?:]'TX:\LwN\AY͊\:%OY:AtY:kGYYw#WY:jwW 2VX͵L:COY:<«Y*0"h|}ªY!GڪY>2CS!YZbX:E=W:kGS]Yw#·YjXîY:`<2a=YYY*hZj73ZL͍ZWO$%Z.}Z.Ey=!G1Zx.Zw:%0y#QZ!CFZQZw!45!w~[>>HU:F:B3ZZ2`2F=2E=2_:]¿Z \zZ!_4:% [ZZ:Z>2k:]̆L`X?ԆL[[:%[:G<[:H<[2Aɯ:`=ZZZ:I/!ꂦ!Z*hM|D!G~®[\[=2D>2k:Cg[ڝ[:Hڪ[ʢ[O:`‰[:_=ڪ[ʪ[y!Bp!E2BGy/? ]͓X\`i{=)]~)]# ]w#]!k!H5:ÓX:ÓX\:":#7 ^l8\LH7]PL7]MT7]MB7]HM\FM\PC\PO\SR\UJ\BP\CW\PA\CP\PN\OP\HE\FO\IG\PF+]OJ+]IJ+]LS+]CS+]DM+]SV+]AV+]RP+]DF+]RV+]FI+]IF+]EF+]EX+]IA1]IB1]IC1]ID1]IE1]II1]IL1]IM1]IN1]IO1]IP1]IR1]IT1]!L*Lk%^*Lv\^`W P^ \^͍R!6:^LPý0\^LP͵L̓V *1V`$__S`͞_1^h``!6_ͪ`1$__S``͡_!6^V`^W:G5^:^^z`^^n"!^j&͘!Ò":6WJ#!*7m*7ͣ ͩm;!WN`:G5u_:W|_>E_z`:&?_:6!6]_:6?_26)H)Ϳ"> Ͷh`ͅ_ͅ_!W^:6WJ#Ñ ͕_||g}o&PY!>m! pý0`i&_&_PY!>m!ö__=_L`DM͵L`a`ý0ͣRa``*:oCW 8`8`͆LB`I`%`7 I` ::6`a` ~&!rCÇ`:qC`!vC/Ö`W:pC&_ʦ` Ø`G1Ox1!6/<12og))B DM!BS ͒_}!77Fwx# `͂$:$a>!J5FO:6a *6|a:&6!6O! #~ :a 2a:3'Pam(!4(̀\ta͸(C*#]b(C*#]bÝa͸(C:_*͟L Ҍa'b(C*#'b(C*"#$%aS>-z(]b:$z(*6|a>+G((*7*6de."6:J5!6m(~a>͸(C:pb>͸(#Cb>%͸(!C:$&b>0͸('C0z(3bb:b+|:bx]b`i3bz(~v :6:6WV)O*7:3=G:!“b:&:I5b:1b:0ʥbҾbb{!K5zҶb!I5w# b“b6+b> bw#b6 ͗,z26>26{!M5cbͪ`:6` V^:&!6)*R++++~ e:6!6d͂^͇e:^!G5`V^*R~0_~Q eÇe!~6ʮeq1 K+!J5ð:K5:ӂ=[gͫg*7++wC>2ӂ2K5 f.(oN /*D526264(͘! fÁf!fh!m626-Ef!645Cfk!45Ef>́f!045]f#Mf:;́f̈́ ~:6/!m!6^NR26!fLgLlGggxԳhڟf!ͶxZD h!65 g͘lhf26Kf hgg:J5h~ hC*P~###g~gw+w+w###A͠f gg!Ƃ-k!΂|k'L 7g*L7g#>g!q4HgD*"+""|k*ӂ-Wg!z!"p"6:p:J57:ӂ=ȷ[ggmҏg!6~6H)!65:$=ͣg=g!J545ʻgh> ZD> ZDfͷKKgg+G_w#¾gwCwC `îg:M5!K5wH).(!6h͞_=gP͇e j0.(!6h_~Q`  h͞_P e!hʹ`g?<:ς[g'LcDyh*P~~whKͳeOh!ӂ~yyh4 :p!q~ʍh5!Ƃ-k!΂|k> ZD-k:ɂ|kK'LͷKkd̍d[gCj*P:!h: h~~w++++~~w>2m[g i:p!"Ԃ$"҂L*Li i#΂L͏i6i!""͑gz:J5iiͷK*"mwCKfi+fi#!"@iwC `> Ll:> ʟf*"mf> ZDÀi*":§i{_izʽii} 7 Öi{үiiʕi2p31i*O5mүi*M5mڕi 7ȷ{!54w~io&" *P~j++++j~dj"PDM#^#V###N#fid>2VXKQj2W2VwC!")* |dj{K+zʕj#!)#:!j]j+: ]j+wC'Lj9k0j*&Z~###Dk6_/k_j!w+1k:H5͵Lz> >͆L>:%#$k=w<6j6#w#w#wd}))~wj~~wjYk9kKk>̍&>+1WDM͵kzI'wC26Ãk!vkKI'+1!]0MwCÞkW ͵L{k{kk|k!kZD 7> ijԶ€lO31!"ym3l>2m2r$mljm `l*~*O5d"+|lNp:po `[gͧn `l}wC26*"*K5m*O5*"mz!m7?{kͷK*smKͿ7Mm+oSm~w#(l*mwC*s*K5"sdEp÷K}ނ>L!u@ mʄm> 2}:y:|ʣm!:8",6m!}5m*z"~*"*"oo mͳe7Ϳ7m>+w#_+nW*s(l*O5*sn#m$n:z$n"z+>L:z{joBnzjo>Mn{Fn2|z>G}!u~p#wzxdnO#~q#wz2*sxn#"~!y4+x>L=¢n: L*Lw2 }L*LW¹n6XK2onoWʿnͿ7+wC:$=_}>ZD> ZDnI'*K5"sEp÷K:rLڂ͆L7K(o(o+wCͷKKLo/o `Hoͳe/o+RoCK zjo+6 -:vG:!64~o!xҎowOҞo!4ʞo<552x!x2ނXK}Koo}!v5o:o!x5o!5o!5o=<ʳooͷKóo:wC!p~G~w(p}xp>OxG͢G p>p p :/!r:v!!]1 oͷKóo:wC! /c N:6*6*67LN2626^N'* .4NyN!fx N*6"6"6"6y26x26:6!6[N26-ʂ͵LL-k:=5ڥ~|!! ͠8~:61~̓1~!&8",6!7Q*7";";";";";";";";6#";";@6#";";";";">; s#r":2;:4::~>2-;=/~2+;2,;>:>:>/2.;/!6̬:4./2'6>:4! W:-;! 2%6:$6| ]1 q1&ͭ *;;w#6*;w#62::S;2::l2:2o;*":!"D;:2:;>29;S;!Q;#:3ODN +y=!7#͠+i͓͠X!7͠;++++l!7ހ ͓҄####7͠ހ++͉s#r+##s#r++ހ͉#r+s +r+s͉mɯ2k2k*k"kw#wɛe{ÓvÓvv.zÿvzt.7Kj]Action(F/B/I/D/S)?Spelling Check Completed Add to Dictionary:  Add to Supplement: (Y/N)? #x25<8$I' v!|“v>25v>2425>2#x:=5v>8$!"zyI'!(k'wwz!%v!#v÷&ͫw;xw:5x x+1!vTwFwwCI'x'w:5̞kĘk7Ow>2|6;!:5nw!7́w*7د͇w+wC!7́w*7د+͙w#jwH7 Ïw# ŒwŒw7 áw+ žwžw7*7#C*7W /!!v"6ͤ'*6"zw!H5 *7~ -% *z͘!3%wͫ!͘!wI'w'LwCKwC}:5JÃJ:=52=5͂$2=5'%!Ø!!7́wy'xx͝xdyʗxͼw2|62z!ʌx#}x#ʆx#}x#}xSx yʗxSxz*7z͝G7>2|6*7zG2z+#]zx{x'x`x_>&y2zéxxx x x x xy2zéx:z2zxx2z*z͘!:zG:$y'v0y:_y)v$:z}+v-v*D5"zw*z"D5$G:͓y!zz~ʑy#F‚y#ty~2zz!z"zæ͌x!z:z(z zzE:H5 *7+*7:6w~/G~w#͠]zEz~'!G~vzʇz#izxA{?a[?ɯxWyO\*h"h!_~w!E~w"b"d ADDz B<:xĔA!::>!"<2:ez=*;S<<6#";!&*;":#>2:2:B~5I=BLe xq=!:~6i=::B2'6L2:::G::W*::.;==!}>>x=!:y=!:zU=2:)>}>>| >x= >y=z!:5 >z=I=|xOzO>2:2:K>::?>ɷH>::33ɯ2:d>::?>::2:z>C>::z>::!:4><2:͚>::::!:ڃ>!:@?e:-;!:!: @:>: ͵< > :>?>?>?~>?>i?#::E=2:! >!:ͽ>*:>Y?F#>N?͌WG +@+@+@:”?qBBBB¿?C>i=%@!:ʭB#z=:-;<̆B::!:A@ ::O::U@W@>!:`@ H::̔@:-;::@x :=@B͔@|@@ ::=Q::@:-;::@:=@B@ë@¾@ ::=::zA:O::@:O::@ɷ@z @ :-;@A::;By! %A+A *A*A!:4x!:4::ͰA!:x=AG]ÀA!"{;e:enAͦA]A:='=DM:Ox 2 GP:$=6=JY*{;#WA::=2:> ;AðA:x=A͔AA!1;A6A6:1;ͦAAB!2;4:y=>22;ͦAB~A5>KA͔A!1;~4:x=:2;?5B!yA:-;B:-;@B!:~5N*:!:+#{ 2:yeB!:{|Bw::!:5*:!:::+ʛBҒB#<2:w":~ʭBPYͰJ 6ͦBBͦB:.;= B<=/AB B<2/;!:: !8!:>!":*; >N=N=N=N=N=N=N=N=!N=F6##>G=ͨ<~6# Ox>=":!::! ;"@2;::;?ͷ=͗2:2:ALe x’=!:~6=::ͱA2'6L>2:2;:;!:=*:*:d*:P*:P͠=2;^>į>e:ͨ< .> +~*;++~:>V>>V>>>#*:A! D>!:>*: >ʔ>F##>‰>͛{u>> >":";{2:!::: ;2 ;!2D>!:>*:A*:::_7>G{>H7>G#>y>> O7>xF>>*:A2;WG ???!?2;:9?:9?:A?q>2;a?a?a?j?A;?PAz?;?::Ç=?!:7A#<€?x$AAA!::APY+:A@ 8::AÛ=oH?::x :=*/;aA??Q::@:::=@?z@z :::@:::! úA::!:x=@GW@z@!"{;e:eh@͠@W@:='=DM:Ox 2 GP:$=6=JY*{;#Q@:x=@͎@@!1;@6@6:1;͠@ê@@!2;4:y=>22;͠@@~@5>E@͎@!1;~4:x=:2;?A!y@*:&]aA~7APYð0A*:&!:0A A<=,@UA:;kA]*:":*:":!*:dhA]*:":::_ÍA>2:2:PAAPAADA ,@AA 82:!::|A2B!:~6B͢B͈B**:ͻB":!:ywz:įBPA!xnBB**:͸B":!:~RBRBNVB!2B͢B!:~6vB!:x!sBPA!:xpx!nBʝBʝB,@PA!:yw:OPAy,@:O|J͠B!BdyKByOB#zxSɛ <<<"<5<ɯL̍&>͍&!Dk!Dkxwv!ƂjI'6!:3ڭvJO:͢Gڍv6E!Ƃvkxx>wvxI'!0M!͆Lv*76͑wCv*7:CJ6ͦEx6!4͂$'%$O*&+1*D5"6"6*6͘!ͫ${#Ͷ$~ʡwwڵwµwMywyʟwyx5wwʟw8$I' !ʘw#~5wͫ$}!&Đ)8~w#üw$85ww$95w$85wկ wYxxx.x#x xͶ7=x2x x=x+x>  3x~Hx#.:*? пͶ#~+:tx~?Q?@##!06Ͱx!Ͱx!Ͱx!7Ͱx:%6ʬx!;Ͱx:4!;İx# ͔8ìxx!vk:x>͍&:>č&:>͍&!ʂvk:%> ͍&> ͍& COPYRIGHT (C) 1983, MicroPro International Corporation. All rights reserved. WordStar 3.30 message texts &j= )L o-  "%%&'(6+,-*++2-q.._1d2}2332233l44445'6q044G4uu@(ur&u() *67M7777I88888 9#9u%8H999:G:h:u(&,CQXVq?p9_e\uXuuuuuu1t:12/.5u222:u:::::::u;*;u;;;;- > >  D Open Document File | Y DELETE a file | H Set HELP LEVEL  N Open Non-document File | E RENAME a file | L Change Drive  X EXIT to System | O COPY a file | R Run a program  F Directory & | P   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  M Run MailMerge S Run SpellStar < < < O P E N I N G M E N U > > >  󭭭 | 堠 |  L Change logged disk drive | | R Run a program  F File directory & | P  | X EXIT to system  H Set help level | |  孭 | E RENAME a file |  D Open a document file | O COPY a file | M Run MailMerge  N Open a non-document file | Y DELETE a file | S Run SpellStar  For maximum help (full menu display),  select Help Level 3 by typing ^JH3.  This message will clear when a key is pressed.  To hypnenate, press -. Before pressing -, you may  move cursor: ^S=cursor left, ^D=cursor right.  If hyphenation not desired, type ^B.  < < < M A I N M E N U > > >  | | |  ^S char left ^D char right |^G char | ^I Tab ^B Reform | (from Main only)  ^A word left ^F word right |DEL chr lf| ^V INSERT ON/OFF |^J Help ^K Block  ^E line up ^X line down |^T word rt|^L Find/Replce again|^Q Quick ^P Print  筭 |^Y line |RETURN End paragraph|^O Onscreen  ^W up line ^Z down line | | ^N Insert a RETURN |  ^R up screen ^C down screen| | ^U Stop a command | CURSOR: ^A=left word ^S=left char ^D=right char  ^F=right word ^E=up line ^X=down line  SCROLL: ^W=up line ^Z=down ^R=up screen ^C=down  DELETE: DEL=char left ^G=right ^T=word ^Y=line  OTHER: ^V=insert off/on ^I=tab RETURN=end para ^U=stop  ^N=insert a RETURN ^B=reform ^L=find/replace again  PREFIX KEYS ^Q ^J ^K ^O ^P display additional menus < < < M A I N M E N U > > >  | | |  ^S char left ^D char right |^G char | ^I Tab ^B Reform | (from Main only)  ^A word left ^F word right |DEL chr lf| ^V INSERT ON/OFF |^J Help ^K Block  ^E line up ^X line down |^T word rt|^L Find/Replce again|^Q Quick ^P Print  筭 |^Y line |RETURN End paragraph|^O Onscreen  ^W up line ^Z down line | | ^N Insert a RETURN |  ^R up screen ^C down screen| | ^U Stop a command | CURSOR: ^A=left word ^S=left char ^D=right char  ^F=right word ^E=up line ^X=down line  SCROLL: ^W=up line ^Z=down ^R=up screen ^C=down  DELETE: DEL=char left ^G=right ^T=word ^Y=line  OTHER: ^V=insert off/on ^I=tab RETURN=end para ^U=stop  ^N=insert a RETURN ^B=reform ^L=find/replace again  PREFIX KEYS ^Q ^J ^K ^O ^P display additional menus  ^Q PREFIX (to cancel prefix, press SPACE bar)  CURSOR: S=left Side E=top X=bottom D=right enD line  R=beginning file C=end file 0-9,B,K,V,P=to marker  SCROLL: W=continuous up Z=continuous down  DELETE TO END LINE: DEL = left Y = right  FIND, REPLACE: F=Find a string A=find And substitute  REPEAT NEXT COMMAND: Q=repeat until key pressed < < < Q U I C K M E N U > > >  | | |  S left side D right side |Y line rt|F Find text in file | (from Main only)  E top scrn X bottom scrn |DEL lin lf|A Find & Replace |^J Help ^K Block  R top file C end file |L Find Misspelling |^Q Quick ^P Print  B top block K end block |Q Repeat command or |^O Onscreen  0-9 marker W up Z down | key until space |Space Bar returns  P previous V last Find or Block | bar or other key |you to Main Menu.  ^K PREFIX (to cancel prefix, press SPACE bar)  END EDIT/SAVE: D=Done X=done,eXit S=Save,reedit Q=abandon  MARK BLOCK: B=Block start K=blocK end H=Hide/display  BLOCK OPERATIONS: V=moVe block C=Copy block Y=delete block  ADDITIONAL FILES R=Read file W=Write block J=delete file  & PRINTING: O=cOpy file E=rEname P=  DISK & DIRECTORY: L=Log disk F=File directory & MISC: 0-9 = set/hide place markers N=columN move % < < < B L O C K M E N U > > >  砠 | | 堠 |  S Save & resume | B Begin K End | R Read P Print | (from Main only)  D Save--done | H Hide / Display | O Copy E Rename | ^J Help ^K Block  X Save & exit | C Copy Y Delete| J Delete | ^Q Quick ^P Print  Q Abandon file | V Move W Write | 렠 | ^O Onscreen  | N Column %|L Change logged disk| Space Bar returns  0-9 set/hide 0-9| |F Directory&| you to Main Menu. ^P PREFIX: Put Control Character in File  V=subscript T=superscript Y=ribbon color change  S=underScore B=Boldface D=Double strike  A=alternate pitch N=standard pitch X=strikeout begin/end  O=non-break space F=phantom space G=phantom rubout  C=pause H=overprint char RETURN=overprint line  Q,W,E,R=user printer controls SPACE=cancel prefix < < < P R I N T M E N U > > >  󠭭 | 砠 |  (begin and end) | (one time each) | A Alternate pitch | (from Main only)  B Bold D Double | H Overprint char | N Standard pitch |^J Help ^K Block  S Underscore | O Non-break space | C Printing pause |^Q Quick ^P Print  X Strikeout | F Phantom space | Y Other ribbon color|^O Onscreen  V Subscript | G Phantom rubout | 󭭠 |Space Bar returns  T Superscript | RET Overprint line | Q(1) W(2) E(3) R(4) |you to Main Menu. ^O PREFIX: on-screen formatting commands  S=line Spacing C=Center cursor line F=margins/tabs from line  L=Left margin X=margin release E=soft Entry   R=Right margin W=Word wrap  D=, ctrl dspy   I=set tab stop J=Justify  P=Page display #  N=clear tab V=Var tabs  T=ruler display!  G=para tab H=Hyphn-Help SPACE=cancel prefix < < < O N S C R E E N M E N U > > >  󠦠 | 堠 | 󭭠 |  L Set left margin |C Center text |J Justify | (from Main only)  R Set right margin|S Set line spacing |V Vari-Tabs|^J Help ^K Block  X Release margins | |H Hyph-help|^Q Quick ^P Print  I Set N Clear tab| 󭭭 |E Soft hyph|^O Onscreen  G Paragraph tab |W Wrd wrap|D Prnt disp |Space Bar returns  F Ruler from line |T Rlr line!|P Pge break#|you to Main Menu. < < < H E L P M E N U > > >  | |  H Display & set help level |S Status line | (from Main only)  B Paragraph reform (CTRL B)|R Ruler line |^J Help ^K Block  F Flags in rightmost column|M Margin & Tab |^Q Quick ^P Print  D Dot commands, print ctrls|P Place markers|^O Onscreen  I Index of commands |V Moving text |Space Bar returns  | |you to Main Menu. < < < H E L P M E N U > > >  | |  H Display & set the help level | S Status line | (from Main only)  B Paragraph reform (CONTROL-B) | R Ruler line | ^J Help ^K Block  F Flags in right-most column | M Margins & Tabs | ^Q Quick ^P Print  D Dot commands, print controls | P Place markers | ^O Onscreen  I Index of commands | V Moving text | Space Bar returns  | | you to Main Menu.  ^S=delete character ^Y=delete entry ^F=File directory  ^D=restore character ^R=Restore entry ^U=cancel command  Type ^KP to continue print.  To return cursor to position before save,  type ^QP before typing anything else.  Type 1-9 to vary speed, SPACE to stop *** WARNING:  Wrong version of WSMSGS.OVR.  Some message may be incorrect. *** *** WARNING:  Screens over 48 lines high or 120 columns wide  have not been tested and debugged. Proceed with  caution; reduce width if bugs are encountered. *** WARNING: Disk full,  deleting old .BAK file to make space.  (Normally, the previous backup file is deleted  only after edit is successfully completed).  Can't display page breaks in a non-document file.*** WARNING: Word too long to fit margins. Put at file beginning for correct page break display. Normally press RETURN only, or enter one or more of:  number=repeat count, B=search Backwards, W=whole Words only, U=ignore case, N=replace w/o asking, G=replace in entire file. To search for misspelled words, enter one of the following -  RETURN = search forward, B = search backward:  F - Fix word D - Add to dictionary  B - Bypass word S - Add to supplemental dictionary  I - Ignore word  HELP LEVELS  3 all menus and explanations displayed.  2 main editing menu (1-control-char commands) suppressed.  1 prefix menus (2-character commands) also suppressed.  0 command explanations (including this) also suppressed.  The current help level is .  Enter SPACE or new help level (0, 1, 2, OR 3):  The LOGGED DISK (or Current Disk or Default Disk) is the  disk drive used for files except those files for which  you enter a disk drive name as part of the file name.  WordStar displays the File Directory of the Logged Disk.  The logged disk drive is now  New logged disk drive (letter, colon, RETURN)?  Use this command to create and alter program source files  and other non-documents. Word wrap defaults off;  tabbing defaults to fixed (TAB chars in file; 8-col stops);  page breaks not shown; high bit flags not used in file.  For normal word processing uses, use the "D" command instead.  Use this command to create a new document file,  or to initiate alteration of an existing document file.  A file name is 1-8 letters/digits, a period,  and an optional 1-3 character type.  File name may be preceded by disk drive letter A-P  and colon, otherwise current logged disk is used.  WARNING: You are editing the same file as you are printing.  WordStar will not allow you to save the edited version  until the print has completed or has been abandoned.  Allow print to finish before editing a file.  Your system does not have enough memory to  permit simultaneous editing and printing.  Can't edit a file while MailMerging ---  Finish or abandon MailMerge before editing.  Finishing print before exit  (type ^U to cancel exit command) ...  Finishing print of same file before saving  (Type ^U to cancel Save command) ...  Finishing print of .BAK file before saving  (Type ^U to cancel Save command) ...  Abandoning unchanged  Abandon edited version of Invalid file name:  File  not found.  Now printing file  "Y" to abandon print, "N" to resume, ^U to hold:  Name of file to MailMerge?  Name of file to print?  For default press RETURN for each question: Start at page number (RETURN for beginning)?  Stop after page number (RETURN for end)?  Number of copies (RETURN for 1)?  Disk file output (Y/N):  Output file name?  Use form feeds (Y/N):  Suppress page formatting (Y/N):  Pause for paper change between pages (Y/N):  Ready printer, press RETURN: WARNING: You are printing the same file as you are editing.  The last saved version will be printed, not reflecting un-  saved changes. Furthermore, WordStar will not allow you to  save the file being edited while the print is in progress.  End edit (^KD) before starting print.  Your system does not have enough memory to  permit simultaneous editing and printing.  *** Print output disk is full. Print paused. *** That place marker is not set. Block beginning is not marked  (or marker is undisplayed). Block end is not marked  (or marker is undisplayed). Block end marker is before beginning marker.Block is too long -  move or delete in two smaller blocks. Cursor is not in range for column move/copy. Column read/write is not allowed. That file exists on destination disk.  Delete existing file first,  or use a different diskette. Disk is full. Invalid copy length. Address in "HOLE" (TSTADR). Memory full (MAK256). Memory shortage (MKSP). Pointer > 64K from cursor (PPTOAD). Insufficient memory  or your operating system is not  relocated to make all RAM available. Diskette directory is full. Close failure -  system failure, or you changed diskettes Rename failure -  system failure, or you changed diskettes. Invalid screen height or width.  Message  Can't edit a file of type .BAK or .$$$.  -- rEname or cOpy before editing. Bad overlay #Bad overlay file, or  Wrong version overlay file. Overlay file  not found. File  not found.  (The separately supplied file   is required for use of chosen function.) not found. Program is an empty file! Program too large for  memory available under WordStar Let print complete before running a program.  Not enough memory to use "RUN PROGRAM" command.  File  not found.  Cannot RUN a program unless  is available.  For spelling check, enter name of file to be checked.  (^R for last file edited)  For dictionary maintenance, enter name of file  containing words to add to or delete from dictionary.  Enter the name of the file you wish to index.  (^R for last file edited)  To put the processed text, table of contents, and index  files on other than the logged drive, enter the drive  letter and a colon after the file name.  To specify a format file other than FORMAT.FMT, enter the  format file name after the drive letter.  EXAMPLE : LETTER.DOC A: B:LETTER.FMT  File  already exists.  File  not on same drive.  Insufficient memory to copy while  editing or MailMerging  File  exists -- overwrite? (Y/N): File  in use by WordStar. File  opened by another user.   P=   Press SPACE after reading screen. *** Invalid Dot Command Ignored: *** File not found *** but found, and will use, *** Cannot change disk in drive , request ignored. Insert diskette with file ;then press RETURN.  Insufficient memory for MailMerge  *** No .DF before .RV: *** WARNING: Overlong data value truncated. *** Invalid variable name in .RV command ignored. *** WARNING: Data exhausted, null value(s) used. *** WARNING: Unknown conditional character. *** WARNING: Illegal string or constant. *** WARNING: Unbalanced parenthesis. *** WARNING: Expression or terminator missing. *** WARNING: Target greater than 32767 or longer than 20 characters. *** WARNING: Extra data in command line. *** WARNING: Specified .EF not found. ***** Print Directives *****  PRINT CONTROL CHARACTERS may be entered anywhere in a line  to invoke underlining, boldface, subscripts, pauses, etc.  They are entered by typing ^P and a letter. A directory  of most print controls is given on the ^P PREFIX MENU;  see manual for more.  DOT COMMANDS are special lines beginning with a period and  a two-letter code. They control page breaks, headings,  page numbering, page layout, etc. Dot commands are  typed in like other text.  SPACE bar for DOT COMMAND SUMMARY, ^U to return to editing:  ***** Dot Commands *****  PUT EACH DOT COMMAND ON SEPARATE LINE, WITH . IN COL 1  .PA new PAge  .CP n new page if less than n lines left on this page  .OP Omit Page numbers when printing, starting this page  .PN print Page Numbers, starting this page (default)  .PN n set Page Number to n, print page numbers  .PC n Page number Column (default 33 (30 if 64-col screen))  .PO n Page Offset: extra indent when printed (default 8)  .. text comment, not printed  Press SPACE bar for next frame:  .HE text HEading used until next .HE (default blank)  .FO text FOoting (replaces page number) (blank)  .PL n Paper Length: total number of lines (default 66)  .MT n Margin at Top: # lines, top of paper to text (3)  .MB n Margin at Bottom: # lines, end text to end paper (8)  # lines text on page is PL - MT - MB (defaults to 55)  .HM n Heading Margin: blank lines between head and text (2)  .FM n Footing Margin: blank lines, text to footing (2)  For page breaks to display as they will print, use  .PL,.MT,.MB, AND .LH (next frame) at file beginning only.  Press SPACE bar for next frame:  THE FOLLOWING WORK ONLY WITH INCREMENTAL PRINTERS:  .LH n Line Height in 48ths of an inch (default 8)  .CW n Character Width in 120ths of an inch, for standard or  alternate pitch, whichever is in use (see ^P menu).  (default 12 for standard, 10 for alternate)  .SR n Subscript / Superscript Roll in 48ths of an inch (3)  .UJ OFF/ON "MICROJUSTIFICATION" off/on (default ON)  Use to insure that printed column alignment exactly  matches screen, e.g. for tabular material:  Put .UJ OFF before table, put .UJ ON after table.  Press SPACE for next frame, ^U to return to editing:  SPECIAL CHARACTERS in HEADINGS (.HE) and FOOTINGS (.FO):  # prints as current page number  \ do not interpret next character as a special character  ^K do not print following spaces if on even-numbered page  PAGE NUMBER POSITIONING: If a footing text is specified (.FO  dot command), the default bottom center page number is not  printed. Use a # in heading or footing to position page  number where desired. ^K followed by spaces followed by #  may be used to produce alternating left/right page numbers.  Press SPACE for next frame, ^U to return to editing:  ***** MailMerge Dot Commands *****  .DF filename specify Data File for .RV  .RV name,name,name,... Read Variable values from data file  .AV "PROMPT",name Ask operator for Variable value  &name& anywhere in document prints as variable value.  variable names are letter, then 0-39 letters, digits, -'s.  .FI filename Insert document File  .DM message Display Message  See manual for details and additional commands. MailMerge  is an optional feature, operational only if MAILMRGE.OVR is  on your diskette.  Press any key to return to editing:  ***** STATUS LINE (top line of screen) *****  ^JS at left end of line is command now executing  A:NAME.TYP is name of file you are now editing  PAGE n is page number of cursor (disregards .PN's)  LINE n is printout line on page of cursor position  COL n is printout column on line of cursor position  INSERT ON shows if character insertion is on (^V command)  MAR REL shows if margins are released (^OX command)  decimal shows during decimal tabbing  LINE SPACING n shows if line spacing is not 1 (^OS command)  PRINT PAUSED shows if printer is stopped (^KP to resume)  when WAIT appears, stop typing.  Press SPACE bar for next frame:  If page break display is OFF (^OP command) or edit  was started with N command, then Status Line shows  FC=nnnn FL=nnnn in place of PAGE n LINE n .   FC=nnnn cursor position in characters (bytes) from  beginning of file  FL=nnnn cursor position in file lines from beginning  of file, including dot command lines   Press SPACE bar to return to editing:  ***** FLAG CHARACTERS (rightmost column of screen) *****  < line ends in "HARD" carriage return, entered by user  space this line break arose from word wrap or paragraph  reform, and may be moved on subsequent reform  + this line of document continues to right of screen  - next line will overprint this line  ? unrecognized or incomplete dot command  M MailMerge (optional feature) dot command  P page break  : this screen line is before beginning of document  . this screen line is after end of document  Press SPACE bar to return to editing:  COMMANDS TO -- ARE --  move cursor on main and ^Q menus  scroll file up or down on main menu; also find (^QF)  delete text on main and ^Q menus; also ^KY  move or copy text on ^K menu  end edit / save file ^KD; see ^K menu  print (while editing) ^KP  set tabs and margins on ^O menu  reformat text ^B; ^JB gives info  find a string; replace ^QF; ^QA; ^L repeats last  Press SPACE bar for "ENTERING TEXT":  ***** ENTERING TEXT *****  To enter text at cursor position, just type the text.  Use RETURN key for paragraph end or other fixed line break;  let word wrap form lines within paragraph.  Type ^V to turn insertion off (to overtype) or back on.  ^N may be used to create blank lines ahead of cursor,  as before inserting a paragraph.  Use ^B to realign margins after corrections.  ^JM shows info on margins, tabs, table entry, outline entry. Press SPACE bar to return to editing:  ***** TO MOVE A BLOCK OF TEXT *****  1. Put cursor on first character, type ^KB to mark start.  2. Put cursor after last character, type ^KK to mark end  (for end line, use start next line to include RETURN).  3. Put cursor at destination, type ^KV to move the text,  or ^KC to make a duplicate copy.  To undisplay markers afterwards, use ^KH.  ^KB and ^KK may be entered in either order, with or without  other intervening commands.  All above commands are on ^K menu.  Press SPACE bar to return to editing:  ***** PARAGRAPH REFORM (^B) *****  To realign margins of a paragraph after corrections, place  cursor at beginning of paragraph and type ^B.  To change margins of paragraph already entered, set margins  (^OL, ^OR), place cursor at paragraph beginning, type ^B.  To change between justified and ragged right, or change line  spacing, set desired justification (^OJ) & line spacing  (^OS), place cursor at paragraph beginning, and type ^B.  To obtain WordStar's help in hyphenating long words, place  cursor at beginning of paragraph and type ^B.  Press SPACE bar for next frame:  ^B reforms lines to end of paragraph as indicated by "HARD"  carriage return (< in rightmost column).  Thus, it is important not to use RETURN between lines  within a paragraph when entering text.  ^B may be used to form hanging indents, change margins in  mid-paragraph, etc. The exact rule is:  "^B STARTS ON THE CURSOR LINE, AT THE LEFT MARGIN  column, or at the cursor position, whichever is  farther left, and proceeds to the next 'hard'  carriage return".  Press SPACE bar for next frame:  ***** Hyphen-Help *****  ^B will occasionally stop before the end of the paragraph  and ask you whether you wish a word hyphenated.  Following the instructions that appear on the screen, move  the cursor if desired to adjust the hyphen position,  then press "-" to hyphenate, or ^B to not hyphenate.  To turn off "HYPHEN-HELP", type ^OH.  Press SPACE bar to return to editing:  ***** MARGINS *****  To set left margin: Type ^OL. WordStar will ask for column.  Type desired column number 1-240 and press RETURN.  Or, to use column of cursor in file, just press ESCAPE.  To set right margin: type ^OR, proceed as above.  To set both margins to match text in a line already entered:  place cursor in that line, type ^OF.  To temporarily set left margin to next tab stop: type ^OG.  Margins apply to text subsequently entered. To remarginate  text already entered: set margins and use ^B.  Press SPACE bar for next frame:  ***** LINE SPACING AND JUSTIFICATION *****   To set line spacing: type ^OS. WordStar will ask for line  spacing. Enter a digit 1 thru 9.  To turn justification off (for ragged right format),  or to turn justification back on: type ^OJ.  Line spacing and justification settings apply to text  subsequently entered; they may be applied to previously  entered text with the paragraph reform command (^B).  Press SPACE bar for "TAB STOPS":  ***** TAB STOPS *****   To set a tab: type ^OI. WordStar will ask for column number.  Type column number and press RETURN. Or, to use cursor  column, press the ESCAPE key. To set a decimal tab stop,  type "#" before typing column number or pressing ESCAPE.  To clear a tab stop or all tab stops: type ^ON.  To tab: type ^I, or press TAB key if present. Tabbing  inserts spaces to next tab stop if insertion (^V) is on.  Tabbing advances cursor over text if insertion is off.  Press SPACE bar for next frame:  ENTERING A COLUMNAR TABLE -- We Suggest:   Set a tab stop for each column of table.  Clear all other tab stops.  If not at end of file, turn on insertion (^V),  or use ^N to make blank lines.  Tab (^I) after entering each table item. After last column  on a line, tabbing will move to first item on next line.  Press SPACE bar for next frame:  OUTLINE FORMAT TEXT ENTRY -- We Suggest:  Set tab stops at desired indentations.  Set right margin as desired.  For each item:  Type ^OG's as required for item number indentation.  Type item number.  Type ^OG.  Type text of item, without using RETURN.  At end of item, press RETURN. Left margin resets.  Press RETURN again if blank line desired.  Press SPACE bar to return to editing:  ***** RULER LINE *****   L----!----!----!----!----!----!----!----!---------R   L Left margin (set with ^OL)  R Right margin (set with ^OR)  ! regular tab stop (set with ^OI, clear with ^ON)  # decimal tab stop (set with ^OI, clear with ^ON)  - other positions between margins   Press SPACE bar to return to editing:  ***** PLACE MARKERS *****   Up to 10 place markers, identified by numbers (n) 0-9,  may be set in a file while the file is being edited.  To set place marker n at the cursor position: type ^Kn.  will display to indicate the marker position.  To return the cursor to place marker n: type ^Qn any  time during the same edit.  To remove the from the display: type ^Kn when the  cursor is already at the marker position.  Press SPACE bar for next frame:  ***** OTHER MARKER & RELATED COMMANDS *****   The block beginning marker, ¾, and the block end marker,  ˾, are set and moved to in a similar manner; the  text between these markers can be moved (^KV), copied  (^KC), deleted (^KY), or written to a file (^KW).   ^QP moves cursor to its position before preceding command.   ^QV moves cursor to start of last find/replace, or to  source of text for last block move or copy.  Press SPACE bar to return to editing:  If this displays, you are using the wrong version of WSMSGS.OVR.  COMMENT ********************************************************* * * * Backup menu program for Kaypro 10. * * * * By R. Schrader * * * * Copyright (C) 1983 by Non-Linear Systems, Inc * * No warranty is made, expressed, or implied. * * * ********************************************************* END FILES R(128) $LINES VAR CREDIT_STRING = STRING CREDIT_STRING = " WRITTEN BY ROBERT SCHRADER " VAR VERSION_STRING = STRING VERSION_STRING = "Version 2.1" DIM BYTE BUFFER_128(128) DIM BYTE FCBUFF(32) VAR SETDMA, SEARCH_FIRST, SEARCH_NEXT = INTEGER SETDMA = 26 SEARCH_FIRST = 17 SEARCH_NEXT = 18 VAR RESPONSE, ESC, RTN, UP_ARROW, DOWN_ARROW, BACK_SPACE = CHAR VAR FILE_NAME, N_STR = STRING:14 VAR TRUE, FALSE = INTEGER FALSE= 0 TRUE = NOT FALSE ESC = 1BH RTN = 0DH UP_ARROW = 0BH DOWN_ARROW = 0AH BACK_SPACE = 8 N_STR = "" VAR BDOS = INTEGER BDOS = 5 REM The possible video attributes. VAR INVERSE, REDUCED, BLINKING, UNDERLINE, CURSOR = CHAR REM Intitialize attributes. INVERSE = '0' REDUCED = '1' BLINKING = '2' UNDERLINE = '3' CURSOR = '4' REM Translation tables. VAR SPEC_CHAR = STRING:128 VAR UP_CASE = STRING:128 UP_CASE = "..............................." +\ " !"+CHR(34)+"#$%&'()*+,-./0123456789:;<=>?" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" SPEC_CHAR = "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" +\ " !"+chr(34)+"#$%&'()$+$-$/0123456789$$$$$$" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" VAR MSG_1, MSG_0 = STRING MSG_0 = "Hit the down-arrow to use this menu, or ESC to exit." MSG_1 = "Hit RETURN to run a program, or ESC to exit. " VAR J, K, L = INTEGER VAR CALLING_INT = INTEGER VAR CALLING_USER = STRING VAR XPL_MAX = INTEGER XPL_MAX = 14 VAR CHOICE_MAX = INTEGER CHOICE_MAX = 6 REM Image for printing menu on screen. DIM STRING:49; SCREEN(20) SCREEN (0) = " " SCREEN (1) = " Select user groups " SCREEN (2) = " List files " SCREEN (3) = " Run BACKUP program " SCREEN (4) = " Run RESTORATION program " SCREEN (5) = " Look at backup files " SCREEN (6) = " Instructions " REM Text of explanations. DIM STRING:25; EXPLAIN(20,20) EXPLAIN (0,1) = " Use the arrow keys to" EXPLAIN (0,2) = " move the highlighted bar" EXPLAIN (0,3) = " up and down. When the" EXPLAIN (0,4) = " program(s) that you want" EXPLAIN (0,5) = " is(are) highlighted, hit" EXPLAIN (0,6) = " the return key. " EXPLAIN (0,7) = " " EXPLAIN (0,8) = " A short description " EXPLAIN (0,9) = " of the highlighted item " EXPLAIN (0,10) = " will appear in this box." EXPLAIN (0,11) = " " EXPLAIN (0,12) = " If you wish to exit " EXPLAIN (0,13) = " from this menu, hit the " EXPLAIN (0,14) = " escape key. " EXPLAIN (1,1) = " This option allows" EXPLAIN (1,2) = " you to select the user " EXPLAIN (1,3) = " group that you want to " EXPLAIN (1,4) = " backup. " EXPLAIN (1,5) = " " EXPLAIN (1,6) = " " EXPLAIN (1,7) = " " EXPLAIN (1,8) = " " EXPLAIN (1,9) = " " EXPLAIN (1,10) = " " EXPLAIN (1,11) = " " EXPLAIN (1,12) = " " EXPLAIN (1,13) = " " EXPLAIN (1,14) = " " EXPLAIN (2,1) = " This option will show" EXPLAIN (2,2) = " you all of the files in " EXPLAIN (2,3) = " this user group on the " EXPLAIN (2,4) = " currently logged disk. " EXPLAIN (2,5) = " " EXPLAIN (2,6) = " " EXPLAIN (2,7) = " " EXPLAIN (2,8) = " " EXPLAIN (2,9) = " " EXPLAIN (2,10) = " " EXPLAIN (2,11) = " " EXPLAIN (2,12) = " " EXPLAIN (2,13) = " " EXPLAIN (2,14) = " " EXPLAIN (3,1) = " This option will copy" EXPLAIN (3,2) = " files from a given user " EXPLAIN (3,3) = " area to one or more " EXPLAIN (3,4) = " floppy disks. Be sure to" EXPLAIN (3,5) = " have several formatted " EXPLAIN (3,6) = " disks available with the" EXPLAIN (3,7) = " write-protect notches " EXPLAIN (3,8) = " uncovered. " EXPLAIN (3,9) = " It is recommended that" EXPLAIN (3,10) = " the user read the docu- " EXPLAIN (3,11) = " mentation on 'MUFBAR' " EXPLAIN (3,12) = " before selecting this " EXPLAIN (3,13) = " option. " EXPLAIN (3,14) = " " EXPLAIN (4,1) = " This option will re- " EXPLAIN (4,2) = " store files from disks " EXPLAIN (4,3) = " created by the backup " EXPLAIN (4,4) = " option. It expects the " EXPLAIN (4,5) = " files to be restored to " EXPLAIN (4,6) = " be on a floppy in drive " EXPLAIN (4,7) = " C, and it will copy them" EXPLAIN (4,8) = " back to drive A." EXPLAIN (4,9) = " " EXPLAIN (4,10) = " " EXPLAIN (4,11) = " " EXPLAIN (4,12) = " " EXPLAIN (4,13) = " " EXPLAIN (4,14) = " " EXPLAIN (5,1) = " This option will list " EXPLAIN (5,2) = " all the files on your " EXPLAIN (5,3) = " backup disk. " EXPLAIN (5,4) = " " EXPLAIN (5,5) = " " EXPLAIN (5,6) = " " EXPLAIN (5,7) = " " EXPLAIN (5,8) = " " EXPLAIN (5,9) = " " EXPLAIN (5,10) = " " EXPLAIN (5,11) = " " EXPLAIN (5,12) = " " EXPLAIN (5,13) = " " EXPLAIN (5,14) = " " EXPLAIN (6,1) = " This option provides " EXPLAIN (6,2) = " some instructions for " EXPLAIN (6,3) = " the use of the backup " EXPLAIN (6,4) = " programs. It, however, " EXPLAIN (6,5) = " is not intended as a " EXPLAIN (6,6) = " substitute for reading " EXPLAIN (6,7) = " the documentation. " EXPLAIN (6,8) = " " EXPLAIN (6,9) = " " EXPLAIN (6,10) = " " EXPLAIN (6,11) = " " EXPLAIN (6,12) = " " EXPLAIN (6,13) = " " EXPLAIN (6,14) = " " REM ************************** PROCEDURES ************************** PROCEDURE POSITION (X,Y=CHAR) PRINT ESC;'=';Y+31;X+31; END PROCEDURE CLEAR REM CLEAR VIDEO DISPLAY PRINT " " PRINT CHR(1AH); END PROCEDURE PAUSE VAR X = CHAR INPUT3 "PLEASE PUSH ANY KEY TO CONTINUE.";X END PROCEDURE SET_ON (ATT=CHAR) PRINT ESC; 'B'; ATT; END PROCEDURE SET_OFF (ATT=CHAR) PRINT ESC; 'C'; ATT; END PROCEDURE PIXON (X1,Y1 = CHAR) PRINT ESC; '*'; Y1+31; X1+31; END PROCEDURE PIXOFF (X1,Y1 = CHAR) PRINT ESC; ' '; Y1+31; X1+31; END PROCEDURE LINEON (X1,Y1,X2,Y2 = CHAR) PRINT ESC; 'L'; Y1+31; X1+31; Y2+31; X2+31; END PROCEDURE LINEOFF (X1,Y1,X2,Y2 = CHAR) PRINT ESC; 'D'; Y1+31; X1+31; Y2+31; X2+31; END PROCEDURE CHANGE_TO_USER (NEW_USER=INTEGER) BASED CURRENT_USER = BYTE BASE CURRENT_USER AT 04H CURRENT_USER = NEW_USER * 16 VAR HL, DE, BC, AF = INTEGER BC = 20H DE = NEW_USER CALL (BDOS, HL, DE, BC, AF) CLEAR END PROCEDURE FIND_CALLING_USER BASED CURRENT_USER = BYTE BASE CURRENT_USER AT 04H CALLING_INT = CURRENT_USER/16 IF (CURRENT_USER/16 < 9) \ THEN CALLING_USER = CHR(48+CURRENT_USER/16) ELSE CALLING_USER = "1"+CHR(38+CURRENT_USER/16) END FUNCTION KBHIT=INTEGER VAR M = INTEGER VAR B = CHAR INPUT3 #5; RESPONSE IF RESPONSE = 0 THEN M = 0 ELSE M = -1 END = M FUNCTION COMMAND_LINE_USER = INTEGER VAR U = INTEGER BASED S = STRING BASE S AT 80H U = 0 IF LEN(S) = 2 THEN U = ASC(MID(S,2,1))-48 IF LEN(S) = 3 THEN U = ASC(MID(S,3,1))-38 END = U PROCEDURE BUILD_SUB_FILE(NAME1,NAME2=STRING;G=INTEGER) IF G < 10 THEN NAME2 = NAME2 + ' ' + CHR(G+48) ELSE NAME2 = NAME2 + " 1" + CHR(G+38) CREATE "$$$.SUB" OPEN #0;"$$$.SUB" VAR ADDR, REC = INTEGER LOCATION FILE ADDR = #0 BASED LINE = STRING BASE LINE AT ADDR ON ERROR GOTO 0END REC = 0 WHILE(1) DO BEGIN READ #0,REC REC = REC + 1 END 0END ON ERROR OFF POKE ADDR, LEN(NAME2) LINE = NAME2 POKE ADDR + LEN(NAME2) + 1, 0 WRITE #0,REC POKE ADDR, LEN(NAME1) LINE = NAME1 POKE ADDR + LEN(NAME1) + 1, 0 WRITE #0,REC+1 CLOSE #0 STOP END PROCEDURE DUMP_NAMES(GROUP=INTEGER) VAR M = INTEGER REM This is a modified version of dump_names. REM It prints files of all extents. VAR COL = INTEGER VAR AF, BC, DE, HL = INTEGER BC = SETDMA LOCATION ARRAY DE = BUFFER_128 CALL (BDOS,HL,DE,BC,AF) FOR M = 0 TO 11 FCBUFF(M) = "?" NEXT M FOR M = 12 TO 31 FCBUFF(M) = 00H NEXT M COL = 0 PRINT LOCATION ARRAY DE = FCBUFF BC = SEARCH_FIRST CALL(BDOS,HL,DE,BC,AF) WHILE ( AF >= 0 ) DO BEGIN AF = AF / 256 AF = AF * 32 IF (BUFFER_128[AF] = CHR(GROUP)) THEN BEGIN FOR M = (AF+1) TO (AF+11) PRINT BUFFER_128(M); NEXT M PRINT " "; COL = COL + 1 IF COL = 5 THEN BEGIN COL = 0 PRINT END END LOCATION ARRAY DE = FCBUFF BC = SEARCH_NEXT CALL (BDOS,HL,DE,BC,AF) END END PROCEDURE GET_RESPONSE INPUT3 RESPONSE REPEAT BEGIN CASE RESPONSE OF UP_ARROW: IF L > 0 THEN BEGIN POSITION 2, L+6 PRINT SCREEN[L] L = L - 1 SET_ON INVERSE POSITION 2, L+6 PRINT SCREEN[L] SET_OFF INVERSE END DOWN_ARROW: IF L < CHOICE_MAX THEN BEGIN POSITION 2, L+6 PRINT SCREEN[L] L = L + 1 SET_ON INVERSE POSITION 2, L+6 PRINT SCREEN[L] SET_OFF INVERSE END END POSITION 4, 24 IF L = 0 THEN PRINT MSG_0; ELSE PRINT MSG_1; K = 1 WHILE ( (NOT KBHIT) AND (K<=XPL_MAX) ) DO BEGIN POSITION 52, K+6 PRINT EXPLAIN[L,K] K = K + 1 END END UNTIL (RESPONSE=ESC)OR((RESPONSE=RTN)AND(L>0)) END PROCEDURE DRAW_SCREEN VAR I = INTEGER ECHO OFF CLEAR REM Draw the outer border. LINEON 2,2, 159,2 LINEON 2,2, 2,98 LINEON 2,98, 159,98 LINEON 159,2, 159,98 REM Draw the inner lines. LINEON 2,19, 159,19 LINEON 101,19, 101,91 LINEON 2,91, 159,91 POSITION 20, 3 PRINT " << KAYPRO 10 BACKUP MENU >>" POSITION 4, 24 PRINT MSG_0; POSITION 55,3 PRINT VERSION_STRING; POSITION 7,20 PRINT " "; POSITION 7,20 PRINT "CURRENTLY IN USER #";J; POSITION 7,21 PRINT " "; POSITION 7,21 CASE J OF 0: PRINT "System and utilities" 1: PRINT "Word processing" 2: PRINT "Spreadsheet" 3: PRINT "MBasic" 4: PRINT "C-Basic" 5: PRINT "S-Basic" 6: PRINT "Telecommunications" END FOR I = 1 TO CHOICE_MAX POSITION 2, I+6 PRINT SCREEN[I] NEXT I L = 0 FOR K = 1 TO 14 POSITION 52, K+6 PRINT EXPLAIN[L,K] NEXT K SET_ON INVERSE POSITION 2, L+6 PRINT SCREEN[L] SET_OFF INVERSE END REM ***************************************************** J = COMMAND_LINE_USER CHANGE_TO_USER J 0MENU REM MASTER MENU ENTRY POINT SET_OFF CURSOR DRAW_SCREEN GET_RESPONSE ECHO OFF IF (RESPONSE = RTN) THEN BEGIN CASE L OF 1: BEGIN ECHO ON SET_ON CURSOR REPEAT BEGIN CLEAR POSITION 5,5 PRINT "WHAT USER GROUP DO YOU WISH TO USE" POSITION 5,6 PRINT " THIS PROGRAM IN (0 - 15)"; INPUT J END UNTIL ((J>=0) AND (J<=15)) SET_OFF CURSOR ECHO OFF CHANGE_TO_USER J GOTO 0MENU END 2: BEGIN CLEAR PRINT "A";J;">D *.*" DUMP_NAMES J PRINT PAUSE GOTO 0MENU END 3: BEGIN CLEAR SET_ON CURSOR BUILD_SUB_FILE "MUFBACK","BKMENU",J END 4: BEGIN CLEAR SET_ON CURSOR BUILD_SUB_FILE "MUFREST","BKMENU",J END 5: BEGIN CLEAR SET_ON CURSOR BUILD_SUB_FILE "MUFLOOK","BKMENU",J END 6: BEGIN CLEAR SET_ON CURSOR BUILD_SUB_FILE "MUFDESC","BKMENU",J END END END CHANGE_TO_USER 0 SET_ON CURSOR CLEAR  0MENU REM MASTER MENU ENTRY POINT SET_OFF CURSOR DRAW_SCREEN GET_RESPONSE ECHCOMMENT ********************************************************* * * * Auxilliary program for CBMENU.BAS * * * * By R. Schrader * * * * Copyright (C) 1983 by Non-Linear Systems, Inc * * No warranty is made, expressed, or implied. * * * ********************************************************* END $LINES VAR CREDIT_STRING = STRING CREDIT_STRING = " WRITTEN BY ROBERT SCHRADER " VAR C = CHAR VAR FILE_NAME = STRING:14 BASED F_NAME = STRING:14 BASE F_NAME AT 80H VAR TRUE, FALSE = INTEGER REM Translation tables. VAR SPEC_CHAR = STRING:128 VAR UP_CASE = STRING:128 UP_CASE = "..............................." +\ " !"+CHR(34)+"#$%&'()*+,-./0123456789:;<=>?" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" SPEC_CHAR = "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" +\ " !"+chr(34)+"#$%&'()$+$-$/0123456789$$$$$$" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" PROCEDURE COMMAND_LINE( FILE_NAME1,DEFAULT_CMND,COM_FILE,RECOVER=STRING ) DEFAULT_CMND = " "+DEFAULT_CMND BASED FILE_CONTROL_BLOCK = STRING BASED COMMAND_BUFFER = STRING BASED DRIVE_NUMBER, BUFFER_LENGTH = BYTE BASED EXTENT_NUMBER, RECORD_NUMBER = BYTE $CONSTANT TFCB = 5CH $CONSTANT TBUFF= 80H BASE FILE_CONTROL_BLOCK AT TFCB BASE DRIVE_NUMBER AT TFCB BASE EXTENT_NUMBER AT TFCB+16 BASE RECORD_NUMBER AT TFCB+32 BASE COMMAND_BUFFER AT TBUFF BASE BUFFER_LENGTH AT TBUFF FILE_CONTROL_BLOCK = FCB$(RIGHT(FILE_NAME1,3)) EXTENT_NUMBER = 0 RECORD_NUMBER = 0 DRIVE_NUMBER = ASCII(FILE_NAME1)-64 COMMAND_BUFFER = XLATE(DEFAULT_CMND,UP_CASE) BUFFER_LENGTH = LEN(DEFAULT_CMND) IF LEN(RECOVER) THEN EXECUTE COM_FILE,RECOVER ELSE EXECUTE COM_FILE END of procedure set up parameters for command line. F_NAME = RIGHT(F_NAME,2) F_NAME = LEFT$(F_NAME,(LEN(F_NAME)-4)) PRINT "A4>CBAS2 ";F_NAME PRINT "A4>CRUN2 ";F_NAME COMMAND_LINE F_NAME,F_NAME,"CBAS2.COM","CRUN2 "+F_NAME ME1,DEFAULT_CMND,COM_FILE,RECOVER=STRING ) DEFAULT_CMND = 0 DRIVE_NUMBER = ASCII(FILE_NAME1)-64 COMMAND_BUFFER = XLATE(DEFAULT_CMND,UP_CASE) BUFFER_LENGTH = LEN(DEFAULT_CMND) IF LEN(RECOVER) THEN EXECUTE COM_FILE,RECOVER ELSE EXECUTE COM_FILE END of procedure set up parameters for command line. F_NAME = RIGHT(F_NAME,2) F_NAME = LEFT$(F_NAME,(LEN(F_NAME)-4)) PRINT "A4>CBAS2 ";F_NAME PRINT "A4>CRUN2 "COMMENT ********************************************************* * * * Auxilliary program for SBMENU.BAS * * * * By R. Schrader * * * * Copyright (C) 1983 by Non-Linear Systems, Inc * * No warranty is made, expressed, or implied. * * * ********************************************************* END $LINES VAR CREDIT_STRING = STRING CREDIT_STRING = " WRITTEN BY ROBERT SCHRADER " VAR C = CHAR VAR FILE_NAME = STRING:14 BASED F_NAME = STRING:14 BASE F_NAME AT 80H VAR TRUE, FALSE = INTEGER REM Translation tables. VAR SPEC_CHAR = STRING:128 VAR UP_CASE = STRING:128 UP_CASE = "..............................." +\ " !"+CHR(34)+"#$%&'()*+,-./0123456789:;<=>?" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" SPEC_CHAR = "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" +\ " !"+chr(34)+"#$%&'()$+$-$/0123456789$$$$$$" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" PROCEDURE COMMAND_LINE( FILE_NAME1,DEFAULT_CMND,COM_FILE,RECOVER=STRING ) DEFAULT_CMND = " "+DEFAULT_CMND BASED FILE_CONTROL_BLOCK = STRING BASED COMMAND_BUFFER = STRING BASED DRIVE_NUMBER, BUFFER_LENGTH = BYTE BASED EXTENT_NUMBER, RECORD_NUMBER = BYTE $CONSTANT TFCB = 5CH $CONSTANT TBUFF= 80H BASE FILE_CONTROL_BLOCK AT TFCB BASE DRIVE_NUMBER AT TFCB BASE EXTENT_NUMBER AT TFCB+16 BASE RECORD_NUMBER AT TFCB+32 BASE COMMAND_BUFFER AT TBUFF BASE BUFFER_LENGTH AT TBUFF FILE_CONTROL_BLOCK = FCB$(RIGHT(FILE_NAME1,3)) EXTENT_NUMBER = 0 RECORD_NUMBER = 0 DRIVE_NUMBER = ASCII(FILE_NAME1)-64 COMMAND_BUFFER = XLATE(DEFAULT_CMND,UP_CASE) BUFFER_LENGTH = LEN(DEFAULT_CMND) IF LEN(RECOVER) THEN EXECUTE COM_FILE,RECOVER ELSE EXECUTE COM_FILE END of procedure set up parameters for command line. F_NAME = LEFT$(F_NAME,(LEN(F_NAME)-4)) F_NAME = RIGHT(F_NAME,2)+".AAX" PRINT "A5>SBASIC ";F_NAME PRINT "A5>";LEFT$(F_NAME,(LEN(F_NAME)-4)) COMMAND_LINE F_NAME,F_NAME,"SBASIC.COM",LEFT$(F_NAME,(LEN(F_NAME)-4))  ) DEFAULT_CMND = 0 DRIVE_NUMBER = ASCII(FILE_NAME1)-64 COMMAND_BUFFER = XLATE(DEFAULT_CMND,UP_CASE) BUFFER_LENGTH = LEN(DEFAULT_CMND) IF LEN(RECOVER) THEN EXECUTE COM_FILE,RECOVER ELSE EXECUTE COM_FILE END of procedure set up parameters for command line. F_NAME = LEFT$(F_NAME,(LEN(F_NAME)-4)) F_NAME = RIGHT(F_NAME,2)+".AAX" PRINT "A5>SBASIC ";F_NAME PRINT "A5*J>͔ ͔ N$ WRITTEN BY ROBERT SCHRADER !)!#!&"$c*a*$~"$wÓ...............................Ù !Þ"ÿ#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!s!ͻ*Uͻ!ͻ!ͻ!ͻ!#Z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$` !e"Æ#$%&'()$+$-$/0123456789$$$$$$ê @ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_ `ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!:!]ͻ*cUͻ!hͻ!ͻ!ͻ!+#lͬ ! #!#!~#!-#͹ & !$!~ͻ!~#!s"q!v"t!y"w!|"z!"}!"`\*^*q~"qwr\*p"w\Ä*}*] "}Ø\Ý **] "ñ**t~"tw*"z!-*͉*q#*&>*}*&>* @!->* &Q >*w!~!*t#!~8>*z! 8i b!! >ak!aq*$*$8*oQ b*$#ÑÙ.AAX*$*͉!ͻ*$#  A5>SBASIC !r *$r  A5>!r *$*$8*Q br *$*$& SBASIC.COM!/*$*$8*-Q bCopyright (C) 1979, By Topaz programming. All rights reserved. From here on protected by End User License.  "Ͷ2!#Ͷ2!#!Q !Q !~#w#x y222!";!6#͞ 2> 2!"R!6#:_!>""!6#:2!Q !""Ͷ2!#!Q !:N ! 2:!!þ"1Ͷ2!#Ͷ2!#!Q !Q 2!"4"6*6~+#"6O! ~*4w#"4!4!"^Ͷ2!#!Q !~#S!‡à:ʜÇ2Ͷ2!#!:O~# µ6x2>2 $$$ SUB!6#*%%"͞ * w#~9=_*6 6*S!l * 6*%{/_z/W"!~_#Vʌ#N#F* r+sq*"b $"Y : 2*% w#z¯**%CHAIN/EXECUTE OPE     ! 7 = @ F J O U t w >!I Q v Q _Q *v {v >!Q w#=. |H Q +|? Q w#I y_ ! ~\Q   PROGRAM CHAIN/EXECUTE ERROR$!F > 6 #=£ !6!E ::> ~##` @~ #.  ~ #. N ~ # !F $ !N $ !E  w# ~*0 > _y{> > >?w#& }o|g}o|g|>" Ͷ2!#:_!6:K ʣ !:O>ͫ * 2 ~ 2 #~ ! 5 ö :  y 2K "  Ͷ2N !N #!O "L !N Q :!*L  ~#.,-$*^+/&!\< #~:O~# N# 6~d #Z 6#d ^"#: ʉ * : ** 2 ~2#~2#: ! :O>[[ >]> : =2 >2 y + : /2 + ^"#* ! ͔ : WARNING ONL:O ͔ !L ͔ :!R ͔ [ ERRO IN LINE*|0|0}0}0!>w~ !4#Ô * s#r#" * +V+^" y2 1:O!4 ~ > < O> > 2^#V#"~2"#:"!!"zWOFxnyA#6n#wnn A#6nO~ti #6#y*"|ˆ}ˆqY!y2*͟nFO #6 wçz  !4 4 6!U 4 6y22>v123^#V!*!3>:2O:3ʔ!A ‚#~#^#VN#!A  ~#­"(^#=V#=*(*("(__{s+='r+='s+=!`4~> G!D !Ml %BAD CHANNEL NUMBEè`````eßNW````````_8|*:727ý!é:78|*7>|)2727*L|! "L__7:‚\!l >2:¡\!l _<2!~ɀ&INPUT FILE REAPPPPPPPtCOMMENT ********************************************************* * * * C-Basic menu program for Kaypro 10. * * * * By R. Schrader * * * * Copyright (C) 1983 by Non-Linear Systems, Inc * * No warranty is made, expressed, or implied. * * * ********************************************************* END $LINES VAR CREDIT_STRING = STRING CREDIT_STRING = " WRITTEN BY ROBERT SCHRADER " VAR VERSION_STRING = STRING VERSION_STRING = "Version 1.0" DIM BYTE BUFFER_128(128) DIM BYTE FCBUFF(32) VAR SETDMA, SEARCH_FIRST, SEARCH_NEXT = INTEGER SETDMA = 26 SEARCH_FIRST = 17 SEARCH_NEXT = 18 VAR RESPONSE, ESC, RTN, UP_ARROW, DOWN_ARROW, BACK_SPACE = CHAR VAR FILE_NAME, N_STR = STRING:14 VAR TRUE, FALSE = INTEGER FALSE= 0 TRUE = NOT FALSE ESC = 1BH RTN = 0DH UP_ARROW = 2DH DOWN_ARROW = 2BH BACK_SPACE = 8 N_STR = "" VAR BDOS = INTEGER BDOS = 5 REM Alter the vector pad: "+" is down, "-" is up. REM EA35 and EA36 are equates in the BIOS that assign the arrow keys. BASED NEW_UP, NEW_DOWN = BYTE BASE NEW_UP AT 0EA35H BASE NEW_DOWN AT 0EA36H NEW_UP = UP_ARROW NEW_DOWN = DOWN_ARROW REM The possible video attributes. VAR INVERSE, REDUCED, BLINKING, UNDERLINE, CURSOR = CHAR REM Intitialize attributes. INVERSE = '0' REDUCED = '1' BLINKING = '2' UNDERLINE = '3' CURSOR = '4' REM Translation tables. VAR SPEC_CHAR = STRING:128 VAR UP_CASE = STRING:128 UP_CASE = "..............................." +\ " !"+CHR(34)+"#$%&'()*+,-./0123456789:;<=>?" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" SPEC_CHAR = "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" +\ " !"+chr(34)+"#$%&'()$+$-$/0123456789$$$$$$" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" VAR MSG_1, MSG_0 = STRING MSG_0 = "Hit the down-arrow to use this menu, or ESC to exit." MSG_1 = "Hit RETURN to run a program, or ESC to exit. " VAR J, K, L = INTEGER VAR XPL_MAX = INTEGER XPL_MAX = 14 VAR CHOICE_MAX = INTEGER CHOICE_MAX = 6 REM Image for printing menu on screen. DIM STRING:49; SCREEN(20) SCREEN (0) = " " SCREEN (1) = " List CBasic source programs (*.BAS) " SCREEN (2) = " List CBasic compiled programs (*.INT) " SCREEN (3) = " Edit a program " SCREEN (4) = " Compile a program " SCREEN (5) = " Run a program " SCREEN (6) = " Compile and run a program " REM Text of explanations. DIM STRING:25; EXPLAIN(20,20) EXPLAIN (0,1) = " Use the arrow keys to" EXPLAIN (0,2) = " move the highlighted bar" EXPLAIN (0,3) = " up and down. When the" EXPLAIN (0,4) = " program(s) that you want" EXPLAIN (0,5) = " is(are) highlighted, hit" EXPLAIN (0,6) = " the return key. " EXPLAIN (0,7) = " " EXPLAIN (0,8) = " A short description " EXPLAIN (0,9) = " of the highlighted item " EXPLAIN (0,10) = " will appear in this box." EXPLAIN (0,11) = " " EXPLAIN (0,12) = " If you wish to exit " EXPLAIN (0,13) = " from this menu, hit the " EXPLAIN (0,14) = " escape key. " EXPLAIN (1,1) = " This option will show" EXPLAIN (1,2) = " you all of the CBasic " EXPLAIN (1,3) = " source(uncompiled) files" EXPLAIN (1,4) = " in this user group. " EXPLAIN (1,5) = " " EXPLAIN (1,6) = " " EXPLAIN (1,7) = " " EXPLAIN (1,8) = " " EXPLAIN (1,9) = " " EXPLAIN (1,10) = " " EXPLAIN (1,11) = " " EXPLAIN (1,12) = " " EXPLAIN (1,13) = " " EXPLAIN (1,14) = " " EXPLAIN (2,1) = " This option will show" EXPLAIN (2,2) = " you all the executable " EXPLAIN (2,3) = " CBasic files in this " EXPLAIN (2,4) = " user group. " EXPLAIN (2,5) = " " EXPLAIN (2,6) = " " EXPLAIN (2,7) = " " EXPLAIN (2,8) = " " EXPLAIN (2,9) = " " EXPLAIN (2,10) = " " EXPLAIN (2,11) = " " EXPLAIN (2,12) = " " EXPLAIN (2,13) = " " EXPLAIN (2,14) = " " EXPLAIN (3,1) = " This option allows you" EXPLAIN (3,2) = " to edit a CBasic file " EXPLAIN (3,3) = " using WordStar. " EXPLAIN (3,4) = " " EXPLAIN (3,5) = " " EXPLAIN (3,6) = " " EXPLAIN (3,7) = " " EXPLAIN (3,8) = " " EXPLAIN (3,9) = " " EXPLAIN (3,10) = " " EXPLAIN (3,11) = " " EXPLAIN (3,12) = " " EXPLAIN (3,13) = " " EXPLAIN (3,14) = " " EXPLAIN (4,1) = " This option allows you" EXPLAIN (4,2) = " to compile a CBasic " EXPLAIN (4,3) = " program. That is, you " EXPLAIN (4,4) = " can turn a BAS file into" EXPLAIN (4,5) = " an INT file. " EXPLAIN (4,6) = " " EXPLAIN (4,7) = " " EXPLAIN (4,8) = " " EXPLAIN (4,9) = " " EXPLAIN (4,10) = " " EXPLAIN (4,11) = " " EXPLAIN (4,12) = " " EXPLAIN (4,13) = " " EXPLAIN (4,14) = " " EXPLAIN (5,1) = " This option allows you" EXPLAIN (5,2) = " to run a psuedo-compiled" EXPLAIN (5,3) = " (.INT) program. " EXPLAIN (5,4) = " " EXPLAIN (5,5) = " " EXPLAIN (5,6) = " " EXPLAIN (5,7) = " " EXPLAIN (5,8) = " " EXPLAIN (5,9) = " " EXPLAIN (5,10) = " " EXPLAIN (5,11) = " " EXPLAIN (5,12) = " " EXPLAIN (5,13) = " " EXPLAIN (5,14) = " " EXPLAIN (6,1) = " This option compiles " EXPLAIN (6,2) = " and runs a program. If " EXPLAIN (6,3) = " the compilation does not" EXPLAIN (6,4) = " complete(due to errors)," EXPLAIN (6,5) = " an attempt will still be" EXPLAIN (6,6) = " made to run the INT file" EXPLAIN (6,7) = " of the same name. " EXPLAIN (6,8) = " " EXPLAIN (6,9) = " " EXPLAIN (6,10) = " " EXPLAIN (6,11) = " " EXPLAIN (6,12) = " " EXPLAIN (6,13) = " " EXPLAIN (6,14) = " " REM ************************** PROCEDURES ************************** PROCEDURE POSITION (X,Y=CHAR) PRINT ESC;'=';Y+31;X+31; END PROCEDURE CLEAR REM CLEAR VIDEO DISPLAY PRINT " " PRINT CHR(1AH); END PROCEDURE PAUSE VAR X = CHAR INPUT3 "PLEASE PUSH ANY KEY TO CONTINUE.";X END PROCEDURE SET_ON (ATT=CHAR) PRINT ESC; 'B'; ATT; END PROCEDURE SET_OFF (ATT=CHAR) PRINT ESC; 'C'; ATT; END PROCEDURE PIXON (X1,Y1 = CHAR) PRINT ESC; '*'; Y1+31; X1+31; END PROCEDURE PIXOFF (X1,Y1 = CHAR) PRINT ESC; ' '; Y1+31; X1+31; END PROCEDURE LINEON (X1,Y1,X2,Y2 = CHAR) PRINT ESC; 'L'; Y1+31; X1+31; Y2+31; X2+31; END PROCEDURE LINEOFF (X1,Y1,X2,Y2 = CHAR) PRINT ESC; 'D'; Y1+31; X1+31; Y2+31; X2+31; END PROCEDURE RE_SET REM Set the vector pad back to normal. NEW_UP = 0BH NEW_DOWN = 0AH REM Restore the cursor. SET_ON CURSOR END FUNCTION KBHIT(ENTRY=CHAR)=INTEGER VAR AF, BC, DE, HL = INTEGER BC = 6 DE = 0FFH CALL (BDOS,HL,DE,BC,AF) ENTRY = CHR(AF/256) END = AF/256 PROCEDURE COMMAND_LINE( FILE_NAME1,DEFAULT_CMND,COM_FILE,RECOVER=STRING ) DEFAULT_CMND = " "+DEFAULT_CMND BASED FILE_CONTROL_BLOCK = STRING BASED COMMAND_BUFFER = STRING BASED DRIVE_NUMBER, BUFFER_LENGTH = BYTE BASED EXTENT_NUMBER, RECORD_NUMBER = BYTE $CONSTANT TFCB = 5CH $CONSTANT TBUFF= 80H BASE FILE_CONTROL_BLOCK AT TFCB BASE DRIVE_NUMBER AT TFCB BASE EXTENT_NUMBER AT TFCB+16 BASE RECORD_NUMBER AT TFCB+32 BASE COMMAND_BUFFER AT TBUFF BASE BUFFER_LENGTH AT TBUFF FILE_CONTROL_BLOCK = FCB$(RIGHT(FILE_NAME1,3)) EXTENT_NUMBER = 0 RECORD_NUMBER = 0 DRIVE_NUMBER = ASCII(FILE_NAME1)-64 COMMAND_BUFFER = XLATE(DEFAULT_CMND,UP_CASE) BUFFER_LENGTH = LEN(DEFAULT_CMND) IF LEN(RECOVER) THEN EXECUTE COM_FILE,RECOVER ELSE EXECUTE COM_FILE END of procedure set up parameters for command line. PROCEDURE DUMP_NAMES(TYPE=STRING;GROUP=INTEGER) VAR COL = INTEGER VAR AF, BC, DE, HL = INTEGER BC = SETDMA LOCATION ARRAY DE = BUFFER_128 CALL (BDOS,HL,DE,BC,AF) FOR J = 0 TO 11 FCBUFF(J) = "?" NEXT J FOR J = 12 TO 31 FCBUFF(J) = 00H NEXT J COL = 0 PRINT LOCATION ARRAY DE = FCBUFF BC = SEARCH_FIRST CALL(BDOS,HL,DE,BC,AF) WHILE ( AF >= 0 ) DO BEGIN AF = AF / 256 AF = AF * 32 IF (BUFFER_128[AF] = CHR(GROUP)) AND \ (BUFFER_128(AF+9)=MID(TYPE,1,1)) AND \ (BUFFER_128(AF+10)=MID(TYPE,2,1)) AND \ (BUFFER_128(AF+11)=MID(TYPE,3,1)) THEN BEGIN FOR J = (AF+1) TO (AF+11) PRINT BUFFER_128(J); NEXT J PRINT " "; COL = COL + 1 IF COL = 5 THEN BEGIN COL = 0 PRINT END END LOCATION ARRAY DE = FCBUFF BC = SEARCH_NEXT CALL (BDOS,HL,DE,BC,AF) END END FUNCTION GET_FILE_NAME( TYPE=STRING )=INTEGER SET_ON CURSOR VAR RESULT,P,LENGTH = INTEGER CLEAR TEXT 0,% Name the file, following these rules: a. Use A: or B: or C: to indicate in which drive the file is located. If none is given, A: will be assumed. b. Give a file name of eight characters or less. The first character must be alphabetic. Then either alphabetic or numeric characters may be used. c. Type a period. d. Give a file type of three characters or less. If you do not give a file type, a default type may be supplied. Example: B:SMITH.MSS If you want to return to the main menu, press the ESCape key. If you want to continue, enter the file name here ==>%; INPUT3 FILE_NAME IF RIGHT$(FILE_NAME,1)<>ESC AND LEN(FILE_NAME)<>0 THEN BEGIN IF MID(FILE_NAME,2,1)<>":" THEN FILE_NAME="A:"+FILE_NAME IF INSTR(1,"bBcC",LEFT$(FILE_NAME,1))=0 THEN FILE_NAME="A"+RIGHT(FILE_NAME,2) ELSE FILE_NAME=XLATE(LEFT$(FILE_NAME,1),UP_CASE)+\ RIGHT(FILE_NAME,2) REM At this point the drive name is adequate. REM Now we attend to the period. P = INSTR(3,FILE_NAME,".") IF P = 3 THEN BEGIN FILE_NAME=LEFT$(FILE_NAME,2)+"$"+RIGHT(FILE_NAME,3) P = 4 END LENGTH = LEN(FILE_NAME) IF ((P=0) OR (P>11)) THEN BEGIN IF LENGTH>10 THEN LENGTH=10 FILE_NAME=LEFT$(FILE_NAME,LENGTH)+"." LENGTH = LENGTH + 1 P = LENGTH END REM A period now exists in the 4th to 11th characters. REM Now the extent must be handled. IF ((P+3)>LENGTH) THEN FILE_NAME=LEFT$(FILE_NAME,P)+TYPE LENGTH = LEN(FILE_NAME) REM Now replace certain special characters in REM between colon and period or in extent, and REM change all lowercase letters to uppercase. FILE_NAME=LEFT$(FILE_NAME,2)+\ XLATE(MID$(FILE_NAME,3,(P-3)),SPEC_CHAR)+\ "."+\ XLATE(RIGHT$(FILE_NAME,(LENGTH-P)),SPEC_CHAR) RESULT = TRUE END ELSE BEGIN Set return false + clear esc sequence to video. RESULT = FALSE PRINT ' '; END SET_OFF CURSOR END = RESULT PROCEDURE GET_RESPONSE INPUT3 RESPONSE REPEAT BEGIN CASE RESPONSE OF UP_ARROW: IF L > 0 THEN BEGIN POSITION 2, L+6 PRINT SCREEN[L] L = L - 1 SET_ON INVERSE POSITION 2, L+6 PRINT SCREEN[L] SET_OFF INVERSE END DOWN_ARROW: IF L < CHOICE_MAX THEN BEGIN POSITION 2, L+6 PRINT SCREEN[L] L = L + 1 SET_ON INVERSE POSITION 2, L+6 PRINT SCREEN[L] SET_OFF INVERSE END END POSITION 4, 24 IF L = 0 THEN PRINT MSG_0; ELSE PRINT MSG_1; K = 1 WHILE (NOT KBHIT(RESPONSE) AND (K<=XPL_MAX)) DO BEGIN POSITION 52, K+6 PRINT EXPLAIN[L,K] K = K + 1 END END UNTIL ((K>=XPL_MAX)OR(RESPONSE=ESC)OR((RESPONSE=RTN)AND(L>0))) END PROCEDURE DRAW_SCREEN VAR I = INTEGER ECHO OFF CLEAR REM Draw the outer border. LINEON 2,2, 159,2 LINEON 2,2, 2,98 LINEON 2,98, 159,98 LINEON 159,2, 159,98 REM Draw the inner lines. LINEON 2,19, 159,19 LINEON 101,19, 101,91 LINEON 2,91, 159,91 POSITION 20, 3 PRINT " << KAYPRO 10 CBASIC MENU >>" POSITION 4, 24 PRINT MSG_0; POSITION 55,3 PRINT VERSION_STRING; FOR I = 1 TO CHOICE_MAX POSITION 2, I+6 PRINT SCREEN[I] NEXT I L = 0 FOR K = 1 TO 14 POSITION 52, K+6 PRINT EXPLAIN[L,K] NEXT K SET_ON INVERSE POSITION 2, L+6 PRINT SCREEN[L] SET_OFF INVERSE END 0MENU REM MASTER MENU ENTRY POINT SET_OFF CURSOR DRAW_SCREEN REPEAT GET_RESPONSE UNTIL ( (RESPONSE = ESC) OR ((RESPONSE = RTN)AND(L>0)) ) ECHO ON IF (RESPONSE = RTN) THEN BEGIN CASE L OF 1: BEGIN CLEAR PRINT "A4>D *.BAS" DUMP_NAMES "BAS",4 PRINT PAUSE GOTO 0MENU END 2: BEGIN CLEAR PRINT "A4>D *.INT" DUMP_NAMES "INT",4 PRINT PAUSE GOTO 0MENU END 3: BEGIN IF NOT GET_FILE_NAME ("BAS") THEN GOTO 0MENU RE_SET CLEAR PRINT "A4>WS ";FILE_NAME COMMAND_LINE FILE_NAME,FILE_NAME,"WS.COM","CBMENU" END 4: BEGIN IF NOT GET_FILE_NAME ("BAS") THEN GOTO 0MENU RE_SET CLEAR PRINT "A4>CBAS2 ";FILE_NAME COMMAND_LINE FILE_NAME,FILE_NAME, "CBAS2.COM", "CBMENU" END 5: BEGIN IF NOT GET_FILE_NAME ("INT") THEN GOTO 0MENU RE_SET CLEAR PRINT "A4>CRUN2 ";LEFT$(FILE_NAME,(LEN(FILE_NAME)-4)) COMMAND_LINE FILE_NAME,FILE_NAME,"CRUN2.COM","CBMENU" END 6: BEGIN IF NOT GET_FILE_NAME ("BAS") THEN GOTO 0MENU RE_SET CLEAR COMMAND_LINE FILE_NAME,FILE_NAME,"CANDR-C.COM", "CBMENU" END END END RE_SET CLEAR TN) THEN BEGIN CASE L OF ";FILE_NAME COMMAND_LINE FILE_NAME,FILE_NAME, "CBAS2.COM", "CBMENU" END 5: BEGIN IF NOT GET_FILE_NAME ("INT") REM USED TO "PLAY" WITH RANDOM DISK FILES var x,y=integer var xdata=integer files r(256) if size("JUNK")=0 then create "JUNK" open #0;"JUNK" 0 input "SEQ ON=0 OFF=1";x if x=0 then record.sequential on if x=1 then record.sequential off input "0=READ 1=WRITE";x input "RECORD #";y if x=1 then begin input "DATA=";xdata write #0,y; xdata end if x=0 then begin read #0,y; xdata print "DATA=";xdata end goto 0  Rem This function finds X! Function fac(i=real)=real If i=0 then i=1 else i=fac(i-1)*i End =i Var x=real 0Loop Input x Print fac(x) Goto 0Loop End WSMSGS OVRkCDEFGHIJKLMNOPQBKMENU BASiRSTUVWXCANDR-C BASYZCANDR-S BAS[\CANDR-S COM.]^_CBMENU BASw`abcdefgDPLAY BAShFAC $$$PROCEDURE SET.ON (ATT=CHAR) PRINT CHR(27); 'B'; ATT; END PROCEDURE SET.OFF (ATT=CHAR) PRINT CHR(27); 'C'; ATT; END PROCEDURE POSITION (VERT, HORZ = CHAR) PRINT CHR(27); '=' ; VERT+31; HORZ+31; END PROCEDURE PIXON (VERT1,HORZ1=CHAR) PRINT CHR(27);'*';(VERT1+31);(HORZ1+31); END PROCEDURE PIXOFF (VERT1,HORZ1=CHAR) PRINT CHR(27);' ';(VERT1+31);(HORZ1+31); END PROCEDURE LINEON (VERT1,HORZ1,VERT2,HORZ2=CHAR) PRINT CHR(27);'L';(VERT1+31); (HORZ1+31); (VERT2+31); (HORZ2+31); END PROCEDURE LINEOFF (VERT1,HORZ1,VERT2,HORZ2=CHAR) PRINT CHR(27);'D';(VERT1+31);(HORZ1+31);(VERT2+31);(HORZ2+31); END PROCEDURE CLEAR.SCREEN PRINT CHR(26) END FUNCTION SQRT(N=INTEGER) =INTEGER VAR ROOT1,ROOT2 = INTEGER ROOT1 = N ROOT2 = 1 WHILE (ROOT1 > ROOT2) DO BEGIN ROOT1 = (ROOT1 + ROOT2)/2 ROOT2 = N/ROOT1 END END = ROOT1 PROCEDURE CIRCLE (CENTER.Y, CENTER.X, RADIUS = INTEGER) VAR X, Y, OFFSET = INTEGER OFFSET = (RADIUS * 100) / 141 PIXON CENTER.Y + RADIUS - 1, CENTER.X PIXON CENTER.Y - RADIUS + 1, CENTER.X FOR X = 1 TO OFFSET Y = SQRT(RADIUS^2 - X^2) PIXON CENTER.Y + Y , CENTER.X + X PIXON CENTER.Y + Y , CENTER.X - X PIXON CENTER.Y - Y , CENTER.X + X PIXON CENTER.Y - Y , CENTER.X - X NEXT PIXON CENTER.Y, CENTER.X + RADIUS - 1 PIXON CENTER.Y, CENTER.X - RADIUS + 1 FOR Y = 1 TO OFFSET X = SQRT(RADIUS^2 - Y^2 ) PIXON CENTER.Y + Y , CENTER.X + X PIXON CENTER.Y + Y , CENTER.X - X PIXON CENTER.Y - Y , CENTER.X + X PIXON CENTER.Y - Y , CENTER.X - X NEXT END PROCEDURE RECTANGLE (Y, X, HEIGHT, WIDTH = INTEGER) LINEON Y, X, Y + HEIGHT, X LINEON Y, X + WIDTH, Y + HEIGHT, X + WIDTH LINEON Y, X, Y, X + WIDTH LINEON Y + HEIGHT, X, Y + HEIGHT, X + WIDTH END PROCEDURE SQUARE (Y, X, SIDE = INTEGER) RECTANGLE Y, X, SIDE, SIDE END PROCEDURE BAR(REF.Y,REF.X,HEIGHT,WIDTH,DEPTH,INSIDE,VERT.P,HORZ.P=INTEGER) VAR I, TEMP, EMPTY, FULL, X, Y = INTEGER DIM INTEGER REF(2) CENTER(2) REAR(2) X = 1 Y = 2 FULL = 1 EMPTY = 0 REF(X) = REF.X REF(Y) = REF.Y CENTER(X) = REF.X + (WIDTH * HORZ.P) CENTER(Y) = REF.Y + (HEIGHT * VERT.P) REAR(X) = CENTER(X) + (DEPTH * HORZ.P) REAR(Y) = CENTER(Y) + (DEPTH * VERT.P) IF (INSIDE = EMPTY) THEN BEGIN FOR I = REF(X) TO CENTER(X) STEP HORZ.P LINEOFF REF(Y), I, CENTER(Y), I NEXT I FOR I = 0 TO (WIDTH*HORZ.P) STEP HORZ.P LINEOFF CENTER(Y), CENTER(X)-I, REAR(Y), (REAR(X)-I) NEXT I FOR I = 0 TO (HEIGHT*VERT.P) STEP VERT.P LINEOFF CENTER(Y)-I, CENTER(X), (REAR(Y)-I), REAR(X) NEXT I LINEON REF(Y),REF(X),CENTER(Y),REF(X) LINEON REF(Y),REF(X),REF(Y),CENTER(X) LINEON CENTER(Y),CENTER(X),CENTER(Y),REF(X) LINEON CENTER(Y),CENTER(X),REF(Y),CENTER(X) LINEON CENTER(Y),CENTER(X),REAR(Y),REAR(X) LINEON REF(Y),CENTER(X),(REAR(Y)-HEIGHT*VERT.P),REAR(X) LINEON CENTER(Y),REF(X),REAR(Y),(REAR(X)-WIDTH*HORZ.P) LINEON REAR(Y),REAR(X),(REAR(Y)-HEIGHT*VERT.P),REAR(X) LINEON REAR(Y),REAR(X),REAR(Y),(REAR(X)-WIDTH*HORZ.P) END IF (INSIDE = FULL) THEN BEGIN FOR I = REF(X) TO CENTER(X) STEP HORZ.P LINEON REF(Y), I, CENTER(Y), I NEXT I FOR I = 0 TO (WIDTH*HORZ.P) STEP HORZ.P LINEON CENTER(Y), CENTER(X)-I, REAR(Y),(REAR(X)-I) NEXT I FOR I = 0 TO (HEIGHT*VERT.P) STEP VERT.P LINEON CENTER(Y)-I, CENTER(X), (REAR(Y)-I),REAR(X) NEXT I LINEOFF CENTER(Y),CENTER(X),CENTER(Y),REF(X) LINEOFF CENTER(Y),CENTER(X),REF(Y),CENTER(X) LINEOFF CENTER(Y),CENTER(X),REAR(Y),REAR(X) END END Y)-I, CENTER(X), (REAR(Y)-I), REAR(X) NEXT I LINEON REF(Y),REF(X),CENTER(Y),REF(X) LINEON REF(Y),RE G R A P H I C S D O C U M E N T A T I O N =============== ========================= In the S-Basic graphics package (graphics.bas), there are several procedures that allow the user to draw complicated figures with just one command. These are: - a circle drawing routine; it requires three parameters: the vertical coordinate of the center of the circle, the horizontal coordinate of the center, and the radius of the circle. - a rectangle drawing routine: it has four parameters: the vertical coordinate of the upper left corner, the horizontal coordinate of that corner, the height, and the width. - a square drawing routine: it needs three parameters: the vertical coordinate of the upper left corner, the horizontal coordinate of the upper left corner, and the length of a side. - a bar drawing routine; it requires eight parameters: the vertical coordinate of the base of the bar, the horizontal coordinate of the base, the height, the width, the depth, the interior of the bar filled or empty, vertical illusion of depth up or down, and horizontal illusion of depth up or down. The fifth parameter should be 0 for an empty bar, or 1 for a full one. The seventh parameter should be 1 for down, -1 for up. the eighth should be 1 for right, -1 for left. It is reccommended that the user run the following program to observe the use of these procedures: $INCLUDE GRAPHICS.BAS VAR V1, H1, RADIUS = INTEGER VAR V2, H2, HEIGHT, WIDTH = INTEGER VAR V3, H3, LENGTH = INTEGER VAR V4, H4, H, W, V.PERSPECTIVE, H.PERSPECTIVE, INTERIOR, DEPTH = INTEGER V1 = 15 H1 = 15 RADIUS = 10 CIRCLE V1, H1, RADIUS V2 = 30 H2 = 10 HEIGHT = 20 WIDTH = 40 RECTANGLE V2, H2, HEIGHT, WIDTH V3 = 60 H3 = 20 LENGTH = 30 SQUARE V3, H3, LENGTH V4 = 80 H4 = 80 H = 50 W = 15 DEPTH = 8 V.PERSPECTIVE = -1 H.PERSPECTIVE = 1 INTERIOR = 0 BAR V4, H4, H, W, DEPTH, INTERIOR, V.PERSPECTIVE, H.PERSPECTIVE V4 = 20 H4 = 130 H = 50 W = 10 DEPTH = 15 V.PERSPECTIVE = 1 H.PERSPECTIVE = 1 INTERIOR = 1 BAR V4, H4, H, W, DEPTH, INTERIOR, V.PERSPECTIVE, H.PERSPECTIVE VIDEO GRAPHICS AND ATTRIBUTES COMMAND SET FOR THE KAYPRO 10 =========================================================== INTRODUCTION The KAYPRO 10 has a graphics and attributes set that currently includes drawing and erasing lines, drawing and erasing pixels, inverse video, reduced intensity, blinking fields, graphics char- acters, cursor positioning, and cursor on/off. GRAPHICS To draw graphics on the KAYPRO 10, the screen is treated as an array 100 pixels high, and 160 pixels wide. Any spot on the screen can be addressed by a vertical coordinate (ranging from 32 to 131) and a horizontal coordinate (ranging from 32 to 191). The pixel in the upper left corner of the screen has coordinates of 32,32. Line and pixel graphics are drawn on the screen by writing an escape sequence to the console output. For the purpose of drawing lines and pixels, an escape sequence is a 4 or 6 byte sequence defined as follows: Escape sequence = ESC

[

] where: 1) ESC is an ascii 27 (1B hex). 2) is a character of the set { *, (space), L, D }. 3) V1, H1, V2, H2 are 1-byte values indicating locations on the screen. To write a pixel, the sequence-type must be a "*". H2 and V2 are not used. V1 is the vertical coordinate of the pixel. H1 is the horizontal coordinate. To erase a pixel, the sequence-type must be a space. H1, V1, H2, and V2 are the same as above. To draw a line, the sequence-type must be a "L". H1 is the horizontal coordinate of the first point of the line. V1 is the vertical coordinate of the first point. H2 is the horizontal coordinate of the last point. V2 is the vertical coordinate of the last point. To delete a line, the sequence-type must be a "D". H1, V1, H2, and V2 are the same as above. CURSOR POSITIONING When positioning the cursor on the KAYPRO 10, the screen is treated as an array 25 characters high, and 80 characters wide. Any spot on the screen can be addressed by a vertical coordinate (ranging from 32 to 66) and a horizontal coordinate (ranging from 32 to 111). The character in the upper left corner of the screen has coordinates of 32,32. The cursor can be moved to a desired position on the screen by writing an escape sequence to the console output. For the purpose of cursor positioning, an escape sequence is a 4 byte sequence defined as follows: Escape sequence = ESC EQUALSIGN

where: 1) ESC is an ascii 27 (1B hex). 2) EQUALSIGN is the character '=' (3D hex). 3) V1, H1 are 1-byte values indicating the location on the screen. GRAPHICS CHARACTERS Each of the character positions on the screen occupies the same area as eight pixels (4 high, 2 wide). Thus, pixels can be addressed in groups of eight at a time. To set pixels in a character position, the cursor is moved to that position, and then a byte is sent to the console output. This byte must have the high order bit set to 1 to distinguish it from normal characters. The remaining seven bits are use to set 7 of the 8 pixels. I.E: to write these pixels.... ------- Pixel # 1 ------> | | | <------ Pixel # 0 |---+---| Pixel # 3 ------> | | | <------ Pixel # 2 |---+---| Pixel # 5 ------> | | | <------ Pixel # 4 |---+---| Pixel # 7 (off)------> | | | <------ Pixel # 6 ------- output this byte: ------------------------------- must be '1' --> | | | | | | | | | <-- bit for # 0 ------------------------------- ^ ^ ^ ^ ^ ^ | | | | | | bit for # 6 | | | | bit for # 1 | | | | bit for # 5 | | bit for # 2 | | bit for # 4 bit for # 3 As shown above, pixel # 7 is off. To write a pixel with it on, send the inverse video command (ESC,B,0), then output the inverse for bits 0 through 6. I.e: 10000000b would print a blank graphics character; (ESC,B,0),10000000b would print a solid character. ATTRIBUTE COMMANDS A character can be set to inverse video, blinking, reduced intensity, or underlined. Also, the cursor can be turned off. These attributes are activated by sending a 3 byte escape sequence to the console output: Escape sequence = ESC where: 1) ESC is an ascii 27 (1B hex) 2) is a 'B' to set an attribute on, or a 'C' to set it off. 3) has a value of 0 through 4, as follows: 0 = inverse video, 1 = reduced intensity, 2 = blinking, 3 = underline, 4 = cursor. Default for these attributes is: 0 = off, 1 = off, 2 = off, 3 = off, 4 = on. COMMENTS 1) Examples of line and pixel drawing can be found in GRAPHICS.BAS. 2) All of the coordinates used are 32 or greater. At first glance, it would seem natural to start them at 1 or 0. However BDOS interprets some byte values of 32 or less as control keys. For example, an attempt to use a coordinate of 9 will result in eight spaces being printed on the screen (BDOS thinks that the 9 is a tab). 3) A line drawn from point a to point b will not always look the same as a line from b to a; it will be a mirror image. 4) Graphics characters, pixels, and lines cannot write over normal characters. SUMMARY Graphics commands: Set Pixel ESC, * , V1, H1 Clear Pixel ESC, , V1, H1 Set line ESC, L , V1, H1, V2, H2 Delete line ESC, D , V1, H1, V2, H2 Attribute commands: Inverse video on ESC, B, 0 Reduced intensity on ESC, B, 1 Blinking on ESC, B, 2 Underlining on ESC, B, 3 Cursor on ESC, B, 4 Inverse video off ESC, C, 0 Reduced intensity off ESC, C, 1 Blinking off ESC, C, phics characters, pixels, and lines cannot write over normal characters. SUMMARY Graphics commands: Set Pixel ESC, * , V1, H1 Clear Pixel ESC, , V1, H1 Set line ESC, L , V1, H1, V2, H2 Delete line ESC, D , V1, H1, V2, H2 AtCOMMENT ********************************************************* * * * S-Basic menu program for Kaypro 10. * * * * By R. Schrader * * * * Copyright (C) 1983 by Non-Linear Systems, Inc * * No warranty is made, expressed, or implied. * * * ********************************************************* END $LINES VAR CREDIT_STRING = STRING CREDIT_STRING = " WRITTEN BY ROBERT SCHRADER " VAR VERSION_STRING = STRING VERSION_STRING = "Version 1.0" DIM BYTE BUFFER_128(128) DIM BYTE FCBUFF(32) VAR SETDMA, SEARCH_FIRST, SEARCH_NEXT = INTEGER SETDMA = 26 SEARCH_FIRST = 17 SEARCH_NEXT = 18 VAR RESPONSE, ESC, RTN, UP_ARROW, DOWN_ARROW, BACK_SPACE = CHAR VAR FILE_NAME, N_STR = STRING:14 VAR TRUE, FALSE = INTEGER FALSE= 0 TRUE = NOT FALSE ESC = 1BH RTN = 0DH UP_ARROW = 2DH DOWN_ARROW = 2BH BACK_SPACE = 8 N_STR = "" VAR BDOS = INTEGER BDOS = 5 REM Alter the vector pad: "+" is down, "-" is up. REM EA35 and EA36 are equates in the BIOS that assign the arrow keys. BASED NEW_UP, NEW_DOWN = BYTE BASE NEW_UP AT 0EA35H BASE NEW_DOWN AT 0EA36H NEW_UP = UP_ARROW NEW_DOWN = DOWN_ARROW REM The possible video attributes. VAR INVERSE, REDUCED, BLINKING, UNDERLINE, CURSOR = CHAR REM Intitialize attributes. INVERSE = '0' REDUCED = '1' BLINKING = '2' UNDERLINE = '3' CURSOR = '4' REM Translation tables. VAR SPEC_CHAR = STRING:128 VAR UP_CASE = STRING:128 UP_CASE = "..............................." +\ " !"+CHR(34)+"#$%&'()*+,-./0123456789:;<=>?" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" SPEC_CHAR = "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" +\ " !"+chr(34)+"#$%&'()$+$-$/0123456789$$$$$$" +\ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_" +\ "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~" VAR MSG_1, MSG_0 = STRING MSG_0 = "Hit the down-arrow to use this menu, or ESC to quit." MSG_1 = "Hit RETURN to run a program, or ESC to quit. " VAR J, K, L = INTEGER VAR XPL_MAX = INTEGER XPL_MAX = 14 VAR CHOICE_MAX = INTEGER CHOICE_MAX = 6 REM Image for printing menu on screen. DIM STRING:49; SCREEN(20) SCREEN (0) = " " SCREEN (1) = " List S-Basic source programs (*.BAS) " SCREEN (2) = " List S-Basic compiled programs (*.COM) " SCREEN (3) = " Edit a program " SCREEN (4) = " Compile a program " SCREEN (5) = " Run a program " SCREEN (6) = " Compile and run a program " REM Text of explanations. DIM STRING:25; EXPLAIN(20,20) EXPLAIN (0,1) = " Use the arrow keys to" EXPLAIN (0,2) = " move the highlighted bar" EXPLAIN (0,3) = " up and down. When the" EXPLAIN (0,4) = " program(s) that you want" EXPLAIN (0,5) = " is(are) highlighted, hit" EXPLAIN (0,6) = " the return key. " EXPLAIN (0,7) = " " EXPLAIN (0,8) = " A short description " EXPLAIN (0,9) = " of the highlighted item " EXPLAIN (0,10) = " will appear in this box." EXPLAIN (0,11) = " " EXPLAIN (0,12) = " If you wish to exit " EXPLAIN (0,13) = " from this menu, hit the " EXPLAIN (0,14) = " escape key. " EXPLAIN (1,1) = " This option will show" EXPLAIN (1,2) = " you all of the S-Basic " EXPLAIN (1,3) = " source(uncompiled) files" EXPLAIN (1,4) = " in this user group. " EXPLAIN (1,5) = " " EXPLAIN (1,6) = " " EXPLAIN (1,7) = " " EXPLAIN (1,8) = " " EXPLAIN (1,9) = " " EXPLAIN (1,10) = " " EXPLAIN (1,11) = " " EXPLAIN (1,12) = " " EXPLAIN (1,13) = " " EXPLAIN (1,14) = " zÇvýv}vÑy]ya !.; ?delete? rename? New name? copy from? copy to ? *w vh%:=5!78:=508$02=526%:=5!77!6@*Ͷ$:626'%7$!75f#ͶvQv@_#~:w#Ͷwv>;͂y{þ6!4͂$'%Qw!z~Nw4w#Ewz~#$O*&+1*D5"6"6*6͘!ͫ${#Ͷ$~@xy:6GxTxTxMy=wҹw$9nw$8nwywoxwEnwyw!6w8nw>܍&w8nwy>xoxxEnw>x8$I' !1x#~>xEnwͫ$}!&Đ)8~gx#[x$8nw!06ͭx:6ʑx!ͭx!ͭx!7ͭx:%6ʩx!;ͭx:4!;ĭx# ͔8éxկ x=yxy.x#y xͶ7!yy y!yy>  y~,y#.:*? пͶ#~+:Xy~?Q?@##*w"v9w$v]y͂y!6 6+:%6!4!6ʬz*w&v9w(vʕy'z͂y>2zGOyy*763yx2)6vcLv:2,:2]1%24:6«v 8͍y?%÷v8͓yyI'EvvQyv7v2626:&2C5:B5͐)K-EhNw:6wͥ!4~6-ww!% E!2v! h%!7:72w!7 swI'͌wswQw!7H*7yCJͦE!7xEKJ`Jy’J`J!"6!7gH*7wC͎Iҡw`Jv:%67-%$ 8.| I':&6:%67-ÿw8w8>25G*$6|!8z:%6z%:=5x!8ͫ$:626̅$!4/x,v2,]1'%$*&+1*D5"6"6*6͘!ͫ${#+w#Ͷ$~ʌxͻxڠxʃx1yڠxGͶ xxGMxͫ$}!&Đ)8~ʳx#çx$8Jxկ x1yxx.x#x xͶ7y y ,2) = " to run a compiled (.COM)" EXPLAIN (5,3) = " program. " EXPLAIN (5,4) = " " EXPLAIN (5,5) = " " EXPLAIN (5,6) = " " EXPLAIN (5,7) = " " EXPLAIN (5,8) = " " EXPLAIN (5,9) = " " EXPLAIN (5,10) = "xxGMxͫ$}!&Đ)8~ʳx#çx$8Jxկ x1yxx.x#x xͶ7y y xWxW*8>ͮI>ͮIͮIU$ WRITTEN BY ROBERT SCHRADER !0!RKn Version 1.0!b!RK}*{!8>!BÐ *!8>!Bã*>!8SPô*>!:SP*>!!jSP*jS?>!hSP*&>!@SP *&>!BSP-*&>!DSP++**&>!FSP=*<&>!HSPO!N!YSK^*\>!lSP!pS"nS!sS"qS{5*y"nSÈ6*"qS*DS>*nSP*FS>*qSPì0*&>!tSPþ1*&>!vSP2*&>!xSP3*&>!zSP4*&>!|SP%...............................+ !0"Q#$%&'()*+,-./0123456789:;<=>?u @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_Ù `ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!!(0:*.:0:!30:!T0:!x0:!SK$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ !"#$%&'()$+$-$/0123456789$$$$$$< @ABCDEFGHIJKLMNOPQRSTUVWXYZ$\$^_` `ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!!0:*:0:!0:!0:!?0:!~SK4Hit the down-arrow to use this menu, or ESC to quit.!!TK 4Hit RETURN to run a program, or ESC to quit. !!TK*>!(UP**(>!*UP;1*9G*E!8>!B[*Y!,UͷDJÝ1 !kJKì*!,UͷDJ1 List S-Basic source programs (*.BAS) !JK*!,UͷDJ?1 List S-Basic compiled programs (*.COM) ! JKN*L!,UͷDJÐ1 Edit a program !^JKß*!,UͷDJ1 Compile a program !JK*!,UͷDJ21 Run a program !JKA*?!,UͷDJÃ1 Compile and run a program !QJKÒ*Þ*ç*!8>!Bû**!3UͷDJ Use the arrow keys to!JK**!3UͷDJ0 move the highlighted bar!JK?*=H*F!3UͷDJr up and down. When the!XJKÁ*Ê*!3UͷDJô program(s) that you want!JK**!3UͷDJ is(are) highlighted, hit!JK:bI"7 JbI.I*6͒H͠DK*6)$$EK=KO>ͬ&gH͒H͠TK)|Lɯ2 'M:WnKwC}K*72 /2 *7ڇK*7m:WʭK:­K*|ʰKPY͠ڬKDMɯ2WH*72 ͷKxK~# ! ~6K2 *7*7mx‚LcJ\Kx7*7ɯ2 'M*7L*7m>2 *7LLx4L+~ ! ~6RL=2 !7͉mx‚LJLx7͵L͟LͫLyLnL    7L?L L ɯo>g>_:mCW o g _ Wz}|{ L*7͠*7͠>ͬ&LLL M*7M*7}o|g_P}!\M͵L0M{fM>Ĭ&zʅM*7*7d͠[M̓JBM*7>ÎM<>Ĭ&*7*7d҅͠MJlM*7z7>2 }:2!uCڢM~=26=26ڳM~26=26``i"R "T͏F>26Ç-N*6<͠N:6N!6~6̭N /c N:6*6*67LN2626^N'* .4NyN!fx N*6"6"6"6y26x26:6!6[N26-ʂ͵LL-k:=5ڥNͤ'9%:6> 0Ͳ026W %͂0͉͹$:626ɯ2626:=5͉!$88'L KwCKʻNNN! |  7N!6~6ʐO͞P+O`i+~+++O6! ^#V{\Oʹ`?G1G:6EO>JOx=`͍RckL7>~͌`P̓QҜO*R~~O͞_PlO` ʜO_wQ~O͞P+O~QPͰP+OP΂P{<[g҂P{[gւP{gW 2l:K5!‚-kͯEO!|k*TDM͵kwC|k2K5:l~QÜO͵L :6``i"P͵L̓V:%26*&" "":(2:|6@P̓1 W :`b^:W!|k2WLP2$!6~6/W |Pͫ! ͘!:6=ʋP͗PڒP7ԗPH)!65mmͣRoR7ȷ͂^P͞P:ͪ`P!6s^wQðP>P:6`2&:W!tC)Q! 45P͙RP=6++++!tCP/Q! ~Q͙R!tC)Q Q QLP͵LcUlQ̓V͆L_QI`ͺ_yR:Qzbg 整yR͍RzWLI`L:6=ÀQ>`! ʖQ~wçQ ʡQ~§QͶQêQ͍RoRQLP͵LoR̓V ͍RoRiRz9R iR iR͆LSQI` R̓V͆LRͩ^yR͍RSQoRiRQyRQ hR͆L.RiR͎^SQRI` IRiR TR WL͍RoRIRiRLùQ:6!͵LzWL:<2I`:=ÕRLP*pC!&####:S~ʰR°R###~R+++Rzͪ`R~ʰRR+~G+++Rx:S~:S~:S~Sz!tC:S++++~:S:SDMz!sC:S!uC:S226LP7JS>2? T mS> GSbX:hYS‰S: 'TSBS:!I5”SSGS| S: S>^BSSS@BS^VʯS@GSôS*h#"h*E+"E*h+"h!TSS'T>T>͂ST> }T>~!kU: 1T: 1Tɯ2 :Wz2%*h:?JT+"&:k2(>2=:>T:U+zT*7M*7wT*7M*7*-wTzU*7:wTzU*0͠UU*h͠UUjVM*7+++++{TTU}~+TU!H5! F6BSOx2 y>2VL*LԌU2VLL͢Ux̿U+~  U#x̿U+~ # +åU>*L#:hG:?!:US#~\V*0}=V#6{="V=2>2;!k:22[\V:=2;2VW*-p#"-w#>2@[\V#54+U:i\V*0*h͠UGxG"026=2/*+ ÃV!"h9"+!W~ʚV6>2VLz2]>2\:22!:#:% 2jW:D=&XOy@X @X@X -XxgêWWxAX!X*h|}/<7:EjX=rZ:A:%2E-[:ͨXY:͓XY:;ʠX:2 2j͓X:\2\#̀\X:͓X:Y:͓XỲ\> #WGSͫX üX:X:͓XK Y Y Ỳ\YY#:ͨX@+:@[> O2?:]'TX:\LwN\AY͊\:%OY:AtY:kGYYw#WY:jwW 2VX͵L:COY:<«Y*0"h|}ªY!GڪY>2CS!YZbX:E=W:kGS]Yw#·YjXîY:`<2a=YYY*hZj73ZL͍ZWO$%Z.}Z.Ey=!G1Zx.Zw:%0y#QZ!CFZQZw!45!w~[>>HU:F:B3ZZ2`2F=2E=2_:]¿Z \zZ!_4:% [ZZ:Z>2k:]̆L`X?ԆL[[:%*  *!3UͷDJ4 !JKC*AL *J!3UͷDJv !\JKÅ*Î*!3UͷDJø !JK**!3UͷDJ This option allows you!JK **!3UͷDJ< to run a compiled (.COM)!"JKK*IT*R!3UͷDJ~ program. !dJKÍ*Ö*!3UͷDJ !JK**!3UͷDJ !JK**!3UͷDJD !*JKS*Q\*Z!3UͷDJÆ !lJKÕ*Þ*!3UͷDJ !JK* *!3UͷDJ  !JK*" * !3UͷDJL !2JK[*Yd *b!3UͷDJÎ !tJKÝ*æ *!3UͷDJ !JK* *!3UͷDJ !JK!***(!3UͷDJT !:JKc*al*j!3UͷDJÖ This option compiles !|JKå*î*!3UͷDJ and runs a program. If !JK**!3UͷDJ the compilation does not!JK)*'2*0!3UͷDJ\ complete(due to errors),!BJKk*it*r!3UͷDJÞ an attempt will still be!JKí*ö*!3UͷDJ made to run the COM file!JK**!3UͷDJ" of the same name. !JK1*/:*8!3UͷDJd !JJKs*q| *z!3UͷDJæ !JKõ*þ *!3UͷDJ !JK* *!3UͷDJ*  ! JK9 *7 B *@ !3UͷDJl  !R JK{ *y Ä * !3UͷDJî  ! JKý * * !3UͷDJ  ! JKX!cc= 31cczW{!54w~2c    !0$'*- :6gDLTʨcI'?!cw~g26:%6ʵc| ýcŠcˆc ‡c†c" !65KwC'LcwC*LcNc*L #!wC'Lc#*Ld cͿ1d*L#+'d#!65ͷKkd͍dwC*6:5_0MwC:@*8"0H)w`jK ʳeͿ+K|d+Kʍd+ͨd:6!6ed~ e j*P~ e jddsed"PKd dPôd*P####:6=ê`1``i j*R j!"6:6/!&º)`  edd!65s^:W!G5Ee>ͪ`:6` V^:&!6)*R++++~ e:6!6d͂^͇e:^!G5`V^*R~0_~Q eÇe!~6ʮeq1 K+!J5ð:K5:ӂ=[gͫg*7++wC>2ӂ2K5 f.(oN /*D526264(͘! fÁf!fh!m626-Ef!645Cfk!45Ef>́f!045]f#Mf:;́f̈́ ~:6/!m!6^NR26!fLgLlGggxԳhڟf!ͶxZD h!65 g͘lhf26Kf hgg:J5h~ hC*P~###g~gw+w+w###A͠f gg!Ƃ-k!΂|k'L 7g*L7g#>g!q4HgD*"+""|k*ӂ-Wg!z!"p"6:p:J57:ӂ=ȷ[ggmҏg!6~6H)!65:$=ͣg=g!J545ʻgh> ZD> ZDfͷKKgg+G_w#¾gwCwC `îg:M5!K5wH).(!6h͞_=gP͇e j0.(!6h_~Q`  h͞_P e!hʹ`g?<:ς[g'LcDyh*P~~whKͳeOh!ӂ~yyh4 :p!q~ʍh5!Ƃ-k!΂|k> ZD-k:ɂ|kK'LͷKkd̍d[gCj*P:!h: h~~w++++~~w>2m[g i:p!"Ԃ$"҂L*Li i#΂L͏i6i!""͑gz:J5iiͷK*"mwCKfi+fi#!"@iwC `> Ll:> ʟf*"mf> ZDÀi*":§i{_izʽii} 7 Öi{үiiʕi2p31i*O5mүi*M5mڕi 7ȷ{!54w~io&" *P~j++++j~dj"PDM#^#V###N#fid>2VXKQj2W2VwC!")* |dj{K+zʕj#!)#:!j]j+: ]j+wC'Lj9k0j*&Z~###Dk6_/k_j!w+1k:H5͵Lz> >͆L>:%#$k=w<6j6#w#w#wd}))~wj~~wjYk9kKk>̍&>+1WDM͵kzI'wC26Ãk!vkKI'+1!]0MwCÞkW ͵L{k{kk|k!kZD 7> ijԶ€lO31!"ym3l>2m2r$mljm `l*~*O5d"+|lNp:po `[gͧn `l}wC26*"*K5m*O5*"mz!m7?{kͷK*smKͿ7Mm+oSm~w#(l*mwC*s*K5"sdEp÷K}ނ>L!u@ mʄm> 2}:y:|ʣm!:8",6m!}5m*z"~*"*"oo mͳe7Ϳ7m>+w#_+nW*s(l*O5*sn#m$n:z$n"z+>L:z{joBnzjo>Mn{Fn2|z>G}!u~p#wzxdnO#~q#wz2*sxn#"~!y4+x>L=¢n: L*Lw2 }L*LW¹n6XK2onoWʿnͿ7+wC:$=_}>ZD> ZDnI'*K5"sEp÷K:rLڂ͆L7K(o(o+wCͷKKLo/o `Hoͳe/o+RoCK zjo+6 -:vG:!64~o!xҎowOҞo!4ʞo<552x!x2ނXK}Koo}!v5o:o!x5o!5o!5o=<ʳooͷKóo:wC!p~G~w(p}xp>OxG͢G p>p p :/!r:v!!]1 oͷKóo:wC! /c N:6*6*67LN2626^N'* .4NyN!fx N*6"6"6"6y26x26:6!6[N26-ʂ͵LL-k:=5ڥ~|!! ͠8~:61~̓1~!&8",6!7Q*7";";";";";";";";6#";";@6#";";";";">; s#r":2;:4::~>2-;=/~2+;2,;>:>:>/2.;/!6̬:4./2'6>:4! W:-;! 2%6:$6| ]1 q1&ͭ *;;w#6*;w#62::S;2::l2:2o;*":!"D;:2:;>29;S;!Q;#:3ODN +y=!7#͠+i͓͠X!7͠;++++l!7ހ ͓҄####7͠ހ++͉s#r+##s#r++ހ͉#r+s +r+s͉mɯ2k2k*k"kw#wɛe{ÓvÓvv.zÿvzt.7Kj]Action(F/B/I/D/S)?Spelling Check Completed Add to Dictionary:  Add to Supplement: (Y/N)? #x25<8$I' v!|“v>25v>2425>2#x:=5v>8$!"zyI'!(k'wwz!%v!#v÷&ͫw;xw:5x x+1!vTwFwwCI'x'w:5̞kĘk7Ow>2|6;!:5nw!7́w*7د͇w+wC!7́w*7د+͙w#jwH7 Ïw# ŒwŒw7 áw+ žwžw7*7#C*7W /!!v"6ͤ'*6"zw!H5 *7~ -% *z͘!3%wͫ!͘!wI'w'LwCKwC}:5JÃJ:=52=5͂$2=5'%!Ø!!7́wy'xx͝xdyʗxͼw2|62z!ʌx#}x#ʆx#}x#}xSx yʗxSxz*7z͝G7>2|6*7zG2z+#]zx{x'x`x_>&y2zéxxx x x x xy2zéx:z2zxx2z*z͘!:zG:$y'v0y:_y)v$:z}+v-v*D5"zw*z"D5$G:͓y!zz~ʑy#F‚y#ty~2zz!z"zæ͌x!z:z(z zzE:H5 *7+*7:6w~/G~w#͠]zEz~'!G~vzʇz#izxA{?a[?ɯxWyO\*h"h!_~w!E~w"b"d ADDz B<:xĔA!::>!"<2:ez=*;S<<6#";!&":{L2M!MK{L2L!LK!MkI!LkI!L~h:#^:Mww:#k:x~:y2LKL2M2N!":!L6K?2L> 2LKL!":!L6K:L_!>":":!L6K::2L!LkIKL!"R;O@&"U;{L2L!LK!LkI!L#~";{2L*U;:L<;2U;oʹ@:U;ͥP:U;!!";";{L2L!LK!LkI!;:LN !L ڗ;2;ͥP:;!!Ì;";";";{L2L!LK!LkI!L:;O :;ͥP:;!!"><{L2M!MK{L2L!LK!LkI!MkI2L!L"A<"C<*C<~8<#"C2?x=$$$ SUB!L6K*%%":>?*:>L w#•=~ʯ==_*:>6 6*:>=!<>ÆI*:> 6*%q>{/_z/W"8>!O>~_#V>#N#F*8> r+s=*:>">$">:?2u>q>*% w#z%>**%CHAIN/EXECUTE OPE|>>>>>>>>>>>>>>>>>!¿>>>>_>*>{>>!>w#=¤>|ʾ>>+|µ>>w#ÿ>y>! ~\>> PROGRAM CHAIN/EXECUTE ERROR$!?> 6 #=?!L6!L?:L:>E?~##`C? @~h?#.h?I?~h?#.h?Z??~y?#m?!?͚?!?͚?!L? w#‘?~*¦?> _y{ʴ? ´?>?w#œ?zW{_zW{_z/W{/_"L@RA>H@F@"L@RA>H@H@F@"L@RA>H@F@"L@RA>H@H@>H@"L@RA>H@F@"L@RA>H@>͍A!|\@/g}/o#}o|g}o|g"@͠@ͱE@*@"@͠@E@!||@xŷ@|/g}/o#y>@@y>@>͙A"@@>@>nA!"'A!M6K*S1S,U3UCopyright (C) 1979, By Topaz programming. All rights reserved. From here on protected by End User License.  "9"9":" :"9"9"9"9*:*"* ::::RA9*9* :*:!**:^@"!RA999"$:!L6K&:Lo!>":{L2M!MK{L2L!LK!MkI!LkI!L~h:#^:Mww:#k:x~:y2LKL2M2N!":!L6K?2L> 2LKL!":!L6K:L_!>":":!L6K::2L!LkIKL!"R;O@&"U;{L2L!LK!LkI!L#~";{2L*U;:L<;2U;oʹ@:U;ͥP:U;!!";";{L2L!LK!LkI!;:LN !L ڗ;2;ͥP:;!!Ì;";";";{L2L!LK!LkI!L:;O :;ͥP:;!!"><{L2M!MK{L2L!LK!LkI!MkI2L!L"A<"C<*C<~8<#"C2?x=$$$ SUB!L6K*%%":>?*:>L w#•=~ʯ==_*:>6 6*:>=!<>ÆI*:> 6*%q>{/_z/W"8>!O>~_#V>#N#F*8> r+s=*:>">$">:?2u>q>*% w#z%>**%CHAIN/EXECUTE OPE|>>>>>>>>>>>>>>>>>!¿>>>>_>*>{>>!>w#=¤>|ʾ>>+|µ>>w#ÿ>y>! ~\>> PROGRAM CHAIN/EXECUTE ERROR$!?> 6 #=?!L6!L?:L:>E?~##`C? @~h?#.h?I?~h?#.h?Z??~y?#m?!?͚?!?͚?!L? w#‘?~*¦?> _y{ʴ? ´?>?w#œ?zW{_zW{_z/W{/_"L@RA>H@F@"L@RA>H@H@F@"L@RA>H@F@"L@RA>H@H@>H@"L@RA>H@F@"L@RA>H@>͍A!|\@/g}/o#}o|g}o|g"@͠@ͱE@*@"@͠@E@!||@xŷ@|/g}/o#y>@@y>@>͙A"@@>@>nA!"'A!M6KÙCopyright (c) 1980 By G.Ohnysty Structured BASIC (S-BASIC) Compiler All rights reservede1:e_12!"*"LʊOVERLAYBCOM~#"_  CANNOT OPEN OVERLAYBcREAD ERROR OVERLAYBi:|=_} $$$$$$FfGfHfIffff,*G' tm S-BASIC Compiler Version 5.4b Y'r&>22!9"\:j'&:w":8MY>XXYͯ4p=X:tXYX:uXY>2:Y2͇:Y:v;[Z:~ [:z[f:xb,$END.MODULExr&LXtYHҚ=o&)^#VʠHSc K d HS w HSHSk!!!!)}$$HSHS$HSVHSHSHSR HSc,Aid5JXq w  20 F 9~Nc7:8/28*&ͬ)MY!)MY&*&b,=S*&ͬ)!,R*L>2PS&ʓh,ON>ڗ/×:X/2Xr&>2&*&ͬ)"a*&:::=2?a!w#x6 #&L*r&!\>!͉K!\>͉K:!]~# a:, ʍ*t:X>2X&:OG'MODULE NOT FOUND2XØb,$MODULE|&:4!,|ʂ#nr&)r&2X"tͯ&>22ì\!\>ͫK!\>!ͫK͹&&h,ON>/:w/2wͯ4p=X>XYX>XYr&> Q!D !QÆI%BAD CHANNEL NUMBEnQ&R&RâQùQêQ&R&R&R+ReQRR&R&R&R&R&R&R&R&R_Q|‡Q*Q:Q™QʎQ2QÃQ!QúQoQ:QQQ|Q*Q7>|Q2QQ2QQ*R|! "R__7:vRHR\!wRʆI>2vR:uRgR\!wR†I_<2uR!~ɀ&INPUT FILE REAPPPPPPPPPPPPPPt $lines REM XAMN Disk track and sector editor. REM No warranty is made, expressed, or implied. var hl,de,bc,a_psw ; cpu registers dph ; location of disk parameter header block_size ; cp/m logical block size max_tracks ; number of tracks/disk seldsk ; bios select disk settrk ; bios set track routine setsec ; bios set sector routine setdma ; bios set dma address b_read ; bios read sector b_write ; bios write sector sectran ; bios sector skew disk_number ; disk number to examine = integer var crt ; logical device list ; logical device CR ; ASCII CR BS ; ASCII BS ascii_mask ; ASCII mask bit_0_mask ; mask used to look at bit 0 true, false ; true/false logical flags = integer var menu_selection ; prompt return = char var r1, r2, r3, r4 ; Real number for computations = real based spt ; sectors/track dsm ; max data block number drm ; number of dir blocks off ; number of reserved tracks wboot ; entry to bios dpb ; location of disk parameter block skew_table ; location of bios skew table (used by sectran) alv ; pointer to allocation table = integer based bsh ; block shift factor blm ; block mask exm ; extent mask alloc_byte ; used in searching allocation table = byte crt = 0 rem S-BASIC device # for con: list = 1 rem S-BASIC device # for lst: CR = 0DH BS = 8 ascii_mask = 007FH bit_0_mask = 1 true = -1 false = not true base wboot at 1 rem location of bios wboot entry seldsk = wboot + 0018H rem set up bios entry address settrk = wboot + 001BH setsec = wboot + 001EH setdma = wboot + 0021H b_read = wboot + 0024H b_write= wboot + 0027H sectran= wboot + 002DH rem dma buffer for read/write sector operations dim byte sector(128) var loc_sector = integer location array loc_sector = sector dim base char file_chars(11) fcb_name(11) byte_dm(15) dim base integer word_dm(7) based bios_return = byte rem high order byte of a_ $lines REM XAMN Disk track and sector editor. REM No warranty is made, expressed, or implied. var hl,de,bc,a_psw ; cpu registers dph ; location of disk parameter header block_size ; cp/m logical block size max_tracks ; number of tracks/disk seldsk ; bios select disk settrk ; bios set track routine setsec ; bios set sector routine setdma ; bios set dma address b_read ; bios read sector b_write ; bios write sector sectran ; bios sector skew disk_number ; disk number to examine = integer var crt ; logical device list ; logical device CR ; ASCII CR BS ; ASCII BS ascii_mask ; ASCII mask bit_0_mask ; mask used to look at bit 0 true, false ; true/false logical flags = integer var menu_selection ; prompt return = char var r1, r2, r3, r4 ; Real number for computations = real based spt ; sectors/track dsm ; max data block number drm ; number of dir blocks off ; number of reserved tracks wboot ; entry to bios dpb ; location of disk parameter block skew_table ; location of bios skew table (used by sectran) alv ; pointer to allocation table = integer based bsh ; block shift factor blm ; block mask exm ; extent mask alloc_byte ; used in searching allocation table = byte crt = 0 rem S-BASIC device # for con: list = 1 rem S-BASIC device # for lst: CR = 0DH BS = 8 ascii_mask = 007FH bit_0_mask = 1 true = -1 false = not true base wboot at 1 rem location of bios wboot entry seldsk = wboot + 0018H rem set up bios entry address settrk = wboot + 001BH setsec = wboot + 001EH setdma = wboot + 0021H b_read = wboot + 0024H b_write= wboot + 0027H sectran= wboot + 002DH rem dma buffer for read/write sector operations dim byte sector(128) var loc_sector = integer location array loc_sector = sector dim base char file_chars(11) fcb_name(11) byte_dm(15) dim base integer word_dm(7) based bios_return = byte rem high order byte of a_A'+disk_number;':' print "Sectors/track ..............";spt, '['; hex$(spt) ;']' print "Tracks/Disk ................";max_tracks, '['; hex$(max_tracks) ;']',\ "XAMN Disk editor" print "Number of reserved tracks ..";off, '['; hex$(off) ;']',\ "Version 1.1" print "# of logical blocks ........";dsm+1, '['; hex$(dsm+1) ;']' print "# of directory entries .....";drm+1, '['; hex$(drm) ;']' print "Block size .................";block_size, '['; hex$(block_size) ;']' print "128 byte sectors/block .....";block_size/128, '['; hex$(block_size/128) ;']' print "Disk size in K .............";(dsm+1)*(2^(bsh-3)), '['; hex$( (dsm+1)*(2^(bsh-3)) ) ;']' text 0,% Help Examin a sector (physical)......... 1 A Examin a sector (logical skew)..... 2 B Move Sectors ...................... 3 C Produce a map of a file ........... 4 D Produce a map of disk ............. 5 E Find bad sectors .................. 6 F Compute Block from Trk & Sec ...... 7 G Compute Trk & Sec from Block ...... 8 H Select disk ....................... 9 I % input2 "Please enter selection ==>"; menu_selection var track, sectr =integer var letter = char function group ( trk, sec = integer ) = integer var sectrs, grp = real sectrs = ((trk-off)*spt)+sec-1 grp = sectrs/(block_size/128) end = grp procedure trk_sec ( grp = integer ) = integer var sectrs, sec, trk = real sectrs = grp*(block_size/128) trk = sectrs/spt track = trk + off sec = sectrs-((track-off)*spt) sectr = sec + 1 end procedure bump ( amount = integer ) sectr = sectr + amount if sectr>spt then begin track = track +1 if track>=max_tracks then track=max_tracks-1 sectr = 1 end if sectr<1 then begin track = track -1 if track<0 then track=0 sectr = spt end end of bump procedure dump_physical ( device = integer ) get_sector track, physical_sec(sectr) print #device; "Track=";track; " Physical sector=";sectr, \ " Logical sector=";skew(se Q!D !QÆI%BAD CHANNEL NUMBEnQ&R&RâQùQêQ&R&R&R+ReQRR&R&R&R&R&R&R&R&R_Q|‡Q*Q:Q™QʎQ2QÃQ!QúQoQ:QQQ|Q*Q7>|Q2QQ2QQ*R|! "R__7:vRHR\!wRʆI>2vR:uRgR\!wR†I_<2uR!~ɀ&INPUT FILE REAPPPPPPPPPPPPPPt byte_dm at loc_sector+113 locate word_dm at loc_sector+113 if match then dump_fcb crt bump 1 next directory sector var x=char print input2 "Press to continue";x end end of option #4 '5': begin function bin( x = integer ) = string var bits = string:8 var y = integer bits = "" for y=1 to 8 if x and bit_0_mask then bits="1"+bits else bits="0"+bits x=x/2 next y end = bits bc = 14 de = disk_number call(5,hl,de,bc,a_psw) rem bdos seldsk function var x, y = integer print for x = 0 to (dsm/8) step 8 print hex$(x*8);": "; for y = 0 to 7 if x+y<=(dsm/8) then begin base alloc_byte at alv+x+y print bin(alloc_byte);' '; end next y print next x print "Last block is";dsm+1,'[';hex$(dsm+1);']' input2 "Press return to cont.";x end of option #5 '6': begin var x = real var t1, t2 = integer input "Starting track, last track ";t1,t2 track = t1 sectr = 1 for x = 1 to (t2-t1+1)*spt print "Track:";track; " Sector:";sectr; " "; get_sector track, physical_sec(sectr) if sector[0]<>0 then print "{BAD}" else print chr(0DH); bump 1 next x print input2 "Read complete, press to cont.";x end of option #6 '7': begin input "Track, Sector ";track,sectr print "Group #";group(track,sectr), hex$(group(track,sectr)) input "Press to cont. ";track end of #7 '8': begin var x = integer input "Group number";x trk_sec x print "Track:";track,"Sector:";sectr input "Press to cont.";x end of #8 end of function number menu selection if menu_selection = '9' then 0seldsk case menu_selection of 'A': begin text 0,% To examine a physical sector use this command. Sectors are numbered from 1 to the end of the track. Tracks are numbered from 0 to the end of the disk. The physical sector number displayed is the sector number from 1 to end of track, the logical secte:ͨ< .> +~*;++~:>V>>V>>>#*:A! D>!:>*: >ʔ>F##>‰>͛{u>> >":";{2:!::: ;2 ;!2D>!:>*:A*:::_7>G{>H7>G#>y>> O7>xF>>*:A2;WG ???!?2;:9?:9?:A?q>2;a?a?a?j?A;?PAz?;?::Ç=?!:7A#<€?x$AAA!::APY+:A@ 8::AÛ=oH?::x :=*/;aA??Q::@:::=@?z@z :::@:::! úA::!:x=@GW@z@!"{;e:eh@͠@W@:='=DM:Ox 2 GP:$=6=JY*{;#Q@:x=@͎@@!1;@6@6:1;͠@ê@@!2;4:y=>22;͠@@~@5>E@͎@!1;~4:x=:2;?A!y@*:&]aA~7APYð0A*:&!:0A A<=,@UA:;kA]*:":*:":!*:dhA]*:":::_ÍA>2:2:PAAPAADA ,@AA 82:!::|A2B!:~6B͢B͈B**:ͻB":!:ywz:įBPA!xnBB**:͸B":!:~RBRBNVB!2B͢B!:~6vB!:x!sBPA!:xpx!nBʝBʝB,@PA!:yw:OPAy,@:O|J͠B!BdyKByOB#zxSɛ <<<"<5<ɯL̍&>͍&!Dk!Dkxwv!ƂjI'6!:3ڭvJO:͢Gڍv6E!Ƃvkxx>wvxI'!0M!͆Lv*76͑wCv*7:CJ6ͦEx6!4͂$'%$O*&+1*D5"6"6*6͘!ͫ${#Ͷ$~ʡwwڵwµwMywyʟwyx5wwʟw8$I' !ʘw#~5wͫ$}!&Đ)8~w#üw$85ww$95w$85wկ wYxxxB~SBB@>ͷB2@*B~1AB2@BA:C:Q8SD2@:B:YdA_A֖SÿAֿÿA:B˜Ab,NOT>ڿAb,%>ڿAb,+>ڿAb,->ڿA$SB!SʿAʿAʿAʿA ʿAʿAA2B2BG26BxG'BBA"A>A> A> A>7x!B :x<BG#B7<>=#-+/*~%+-^,7&'B>26B:6BKB26B2B: 2B,7&NB7777G*B~ҔBҙBҞBңBҨBҭBҲBx7x?x?x?x?x?x?x?*B#w"B@*B~+"B@*B6#w#6"BL*'B(*ҎC7B!,]R_:l:Q8>2Q8*B6#>w2l#6"BͷB{2@=@C*(C:*-SRBS:*0S*B6#2Q8kC"Cx*C2lw#6"B*B6#s#r#w#p#q#C!,ͺRyFx͝R*B:l¸C6#|2lw#6#q#p#q#s#r#"B6"DW2BzC(*S:lW:CGO2DͷB>2D*D*|AD}AD>2D*}/_|/W*o"D|AD*B6 #6#s#r#6"ByʐD*B6#w#6"B2l>2C*D:D:D2@2D2D"D:* ʍDID-S0S2D*BOzŸDy6#wO#6#s#r#:Dw#6#6"Bx2C>2BBSy2l:D2@*D|2@*B6 #:Dw#s#r#6"B2@2B7B(*S!*K_:lW:CGN#ͷBy_E~#*B6#w#6"B2l>2C2@:* \E/E-S0S~*BOzjEy6#wW#6#s#6"Bx2C>2BBSz2l!E#O~y’E/0123456789.,'MY/):¿E͛)e)!w ("Ew#6E S!@! ~#EXyXY*͛)e)G !áCMY/)e)!@ëFMY/)e)!@:'hF:lFFFʨFhF*SF:'†F (o*&:'HS&ÎFͬ)|3S" H* HG!áCͬ)" H* HG!áC=G*HG!áC H*"HG!áC!"H)H*"HG!áCy-GXXY GH)͈)͛)> 2H>2H!Hw#MG!~ʈG0sGʌG*S*&!VG *SͼG!Hw#VGͼGͼG#~ʰG0*S *SG!HwÑG:HGðG!H~w#G ¾G!H53S:H!H~w#G G:Hg2H!H53S!"H)H:(HW:%H2%H" J3H*S!~+DH-DH+>+2J#"J>+2J~#ʓHESH&:,+pH-pH>+2JyH&!,~ʖH{_~I_#~H+6E:J+{ʡH/<2'J0Ix//2J!J9K:J+H:J2J:'JI!8JH/<2'J!*J"(J>͉K:'J= I2'J*(J>͉K?Jor number is the number your BIOS uses to access this physical sector. When you type this command you will be asked for the track and sector you wish to examine. After you respond the sector will be displayed. You will then be asked if you want to move forward or backward from your current position on the disk. You may, at this time, specify a range of sectors to be displayed from the current position on the disk. You may also edit the sector making changes to it in an buffer internal to XAMN. And last but not least you can exit to the main menu. Each option is selected by one key press. The letters are F, B, R, C, and E. When changing a sector the sector address in hex will be displayed along with the hex contents of the byte and the ASCII character it represents (Period if none). To enter a new value type it in, to move forward push return, backward push back space, and to exit push period. Upon exit you may re-edit, write the sector to the disk, or abort leaving the sector on the disk un-changed. % input2 "Press to cont.";track end of 'A' 'B': begin text 0,% Use this command to examine and edit logical sectors. Logical sectors are the sectors that the BDOS refers to, the physical sector number may be different. It is the physical sectors that the BIOS access. For more info see 'A' above. % input2 "Press to cont.";track end of 'B' 'C': begin text 0,% This command is used to move sectors around on the disk. It can be used to move physical sectors or logical sectors around. The main purpose for moving sectors around is to allow re-formatting of a track on the disk. First, move the data on the track you wish to re-format to an unused area of the disk. This area can be found by ͪͪ=! ͦ*~* Gͪ ͪͪø ^#V2 ͖ I y 8 A͖ c yHG } | 8 x=! ͦ*^#VA͖ syHG } | 8 : g{® ͪW%s| ͪOzW|=2 ͪͪø \ ; \ ̓I'M LOST.. . .! ͦ+|  =! ͦ*~G G7  ^#V2 ͳ f y U Aͳ ڀ yHG } | U x=! ͦ*^#VAͳ syHG } | U : g{ W%s| OzW|=2  *]|/ }/ *_|/ }/ *w}  )|% Ox͘:M ̓Compilation complete͆̓Compilation aborted*"lͪ\p ͪ2nͰ:n={ ͪͪ\x :o2\™ 2n:n=¤ \ʡ :o2  6##: 6 ̓UN-DEFINED LIB-REF.!c~# ͪWͪͪͪ2q=! ͦ*~Bͪ2ͪͪ ͪGTI:p_TITs:qҕ{=! ͦ*6I̓UN-RECOVERABLE ERROR¬̓GEN LIB ERROR̓REV-DEF LIB ERROR:q=! ͦ*#~#SW2q=! ͦ*~ G͂":p_͂"͂s:qҕ{=! ͦ*6"ygxͪGszxͪ2pxG ͪͪ y•ʦGszʦ2pxG *l6#ͪw#¸ͪ2oͪw#ͪw#"l"6#6*l6#w#2o5m512z10p2s40t1d2i1l0h