ShellPrintEditor[/PRG formatted GEOS file V1.02`RPʘ($H$HH% H g Shell EditV1.0George H. Wells, Jr.asic 9 > 9 6  9 Shell Printer Driver Editor. (Will not open under GEOS 128 if DA's are present.)   ( 9cT!#bfs) #)6 * 5*6*0#L(ƉńϐՔ R. )iiLLvDp-==@@OOqD?OqD/o,>rP,5vJXD""rDTShell Editr&'  )) )*+ ,- Shell Editor',un -p-X1@5(9=@DHp-X1@5(9=@DH 0AAA{ (O \ׇ؇ه @  `O88C(}T(}e(}v(}(}(}(}(} 8 9 8 L< 8 ? `,  <   $  Lf  i  ` Hh`Hh `T S HH H H ` hh hhu؅% !M {$ 9 8 ` hHHH~hhh(`8 H HH < hh h LV… H qe , h`   HH8 i: i0 L[ Error I: 7 5 6 L©@{L~` LN    (LNLE LE <  ; Lw© < { ; H thL©,,, , ,H hL ,,, , ,,,,,,,!,$,',*,-,0Hx hioil LO LO LO LO LO LO LOLG"hhH5 hhhHH``e) (8eȐ`V U Lp` !L| !$L|   ! |  L,­ժ) ``0Eg؄uc̄GWOC7u3, ,o , , , ,,NDŽ: 1: x      X`HHH hՠ' r hh: LHH Lo Lo LoLLOLO LuH h u,L + $A ` G F OHHLO: LN LE   N  LE   N  LB&LE   N  LE   HHHʍ9)L/)   N  L!E O OLO4 `4 4 /LK    G F ] OHHLO ~LK ] x ©-XLt)A[8`L 0$LH`L 0x  0  ݭ ݩЩȍЩЩЭ!Щ؅ { * 'Ѝ(Э)X `x  ݭ )ݩ;Щ9ЩȍЩ 0 (X` ? K/ )/@..L7LOLNLEL{***` & &e & & &`J 0 J `x   2(qBI y( yL( y,H  L$E  LH  X`Hx  h  y(Bq y  X` uoo8 u`,   o( +/ L    `Pi`P e e` ~q1(`ĐŏHH ~hhĐ ŏL!`Q R ! ş ( !ſ 󢉠 ŋLf ! ȱ ȱ eȱ e(Ҋ0ȱ ie !! ( 05ȱ 0ȱ *ȱ ȱ Ő䏰  e !!`)I 8 ~ȥȥLNHI8eČŋ h`0 ~hL!,D 0ZHHeȱeD $,O eO P eP  hh`iШutsrqpq) *,q q`tsrqp`)`pv`vp`IqIquIu LRvqvrvsvtvu`tustrsqrqiѨ`q0pppu&t&s&r&q$q0 p"L8ppӰLputsr qq pu`p fqfrfsftfu`LHue{uteztseysrexrqewqLppLvʢ8p pIi LI8uuutttsssrrrqqq LILvep0ipE Lpv` LJ H wu||f|f}f~ffhJ`p.vp& |Hq :h|q ` pip pL  HLp~vv L8pp pwqxr yszt* 24(z&y&x&w0⨥ztzysyxrxwqwL@ u(Lp8LH HLp8頦 H h qrst`pɑL, Vts`pɐ  L,LVq*rstup Lqrstup LޢH h LH e heL`H hL)88 ` `p$0ɢ- 0HI7ɡ3+/.f$P%p8)E ff$Pp($ f)$0 !Щ j*I /` HvL vp{uztIL` F-ȑȩ0pLL^ H dT Y    J Vi 0 i8.ȑ0ȑtyftsyesrydrqycq00ڊIi i/ȄȪ).ȑI)$<Ш0.ȩ+28-ȑE/8 i:Hȩh`ȩ`nk'>nk(  p j`p`pɠ Vut󩠅p  `F` L  HplvL S SH  +H E   E d AhJ`LHpI`8;)< H duiP R pɈ i8Hu  hLLq4X>Vt~w/z*|cYX ~u1r c p`p8Hp: H ? H  H ! D H h I HLdL,^Vy dv88; 54541r H  L  H  L    H H J N IN 1 H h 1L SN Z S EN  ELHLIڢIڢ-(h#5](IڢH 1pHɁ  H g hɁ  H h 1` vy{| g|S}dpL}Qz}c0~~D:~L̑ LHH ShhHH I dhhe I HHhh` LHH S  dhh  ELduLRuL ~LK ªHH       x  E,] LE 8僅儅L M BJ K 356X8?7Dž4LxL  L ee Š ,H L$E  LHL L L'  Q / # L  F / # L ; /"*LHF ȱG `RQLx 8# )#,)Q )#, 8#Q Q u F G L L`)ȭG F e` F* A! L*0 A!,O!`L  *L{! E * X* ) L!0E8勅縷包ŭŬ $0C ~0ڥee8L~ee8L~LHee` ! 'E ! !  !L!IIi` `J   ee ,# 0 nLz"0 "  eJ  С e(`H /"2 e,$HH !hhh  h©`h`h`L!悄 : 0:,8(` # Օەɕ` # # $ ե ۥ ɥ   `  8ðIi  8ϰIi  `&&JfJf8ee` &  i` i  i  r  r`؇ ه4    x$ %LO % q 'н)^ ( I-Ѝн)^ ( I-ЍнH )  M# $h)@ % LJ% } uÕH h*н^ I-L% Ѝе} uϙ` w w } w L3%` Ș݉ ) ` ݕ ;   `   e e  ^ Ѝ `Ƚe k  N Z8juHȱZuHiN hhο` LF   ޭ ާ 潥) I  j Օەɕᩀ ` gp x ,' ЩЎЎԎ Ԏԍԍ ԍԭ) ~ u  @. M ] 4 56 K w. 3 D 1 2 8873L Dž4<$ALO\ [  xX W Z Y 9` 0Ki  L*0:  L* L  *L' E * X*  ) ``On disk:Insert new diskswap errorgeoBasic and data fileP@must be on the same diskPPin a one drive systemgeosgeoBasic Info ?Extra ignored?RedoTPH HH L)@); ; { t $:     hh hLNShell EditV1.07 6 5 )# 6 5 ` 6 5 `' M LK )L) )L)t,w,,,,,,) Š  LH`  F  # ` `   ȱ ei` )` 0 ` )` )  ȘL) )L/" 0 `   ȭ ` L* .x *H  '  h *    (LX* *"  )  P+L.* L+* eHeHx  m ) 4*  )    P+hh  (` ȥ`Lc3?fc0fc3fc3>9  ` l l l l l p`L© T& Q@  X M P 7U`LKĠX r LK UFU?UUBU@U:UU;UO);   {V3 {KNQOQ 'QЍ(QQ)QV G Q , LQ@ =)5V ;)3Vߍ<)4V` X X ( RR S RRʍRR6 7 R T=V#WH<V"WHV=©<©@U @ R , hÃf훆cf͛cf͛f͛f͛c>À~L¬``6 6 L©6 0ɠ` TJ@  2X M Pة{HH hh@ YŠLO `RR S RRʍR&U 6 7 &U T @ @ U ,  SP Ġ' M ¸P@`` ' =  {X 0  HRHH LK w`U@UU @ tŠ O`` basic data V1.0basic@ !AA!Shell EditV1.0George H. Wells, Jr.asic 9 > 9 6  9 5  |geoBasic 8Copyright (c) 1988, Berkeley Softworks`   W M LK`HH ;hh W ieW$L;  e e ii ! 8僅JfJf  e  e    `Disk full, remove some filesPlease Select Option:new documentexisting documentto deskTopFile exists, choose another.Data file is beyond V1.0WARNING!This file is write protected.Please enter new filename:Please enter an author nameopening filecreating fileLu  H @@~h ei2i( 5HХ LHLHL  L2v ­L   P ' hLhL 5hХ H @~@ {h v M Pv r  ')JJJJ5'Ѝ* `Not enough free space onP@disk for desk accessory.running desk accessoryLNLNU V U UU/ - T S ,w S  R Q S OOd ZUU)@   9 ?LpOH OL') OLLUU@`……ȱW Y ȱX Z Y Z Y i[ Z i\ [ K$\ L$Y B$Z C$U V `DCՅ) ՠȱ ȱȱ爈ɑȱ eU iV $ ` AQ BQBQAQSP _S NT M LK` PAQ.BQAQiAQ G­BQAQ J©U M LK BQAQ  'AQIBQI U&TPT M `NDžVe u8AQ8BQ8P8Qii"/E` 0p gp xL  " / 3 D A+ , -  ')JJJJ 'Ѝ* %Щ&   e e ii ! 8僅JfJf  e  e    `©,2BM慁 "Dž,Lx # y` `(C ;©8iH h `i ` ԅ x `Please reboot your systemP@using the same GEOS diskPPthat was first used to runP`geoBasicCannot install geoBasic onP@this disk. Please refer toPPinstallation directions inP`the manual.Cannot install geoBasic on aP@write protected disk.Error installing geoBasicgeoBasic installed.Lux  { t© ) )  OɜZ   ) )   ȱ/ Oɜ yOɜLH8僅儅 x )v  ) ) w  Oɜ8 x ; <  / XLcvX` Ȅm   LH  *   ` Q ; /" eeHHȱĠ0hh`Ɂ Ƀ xP vP whihieÑÅȱeđÅ)?ȩ-ȩ(ȩבȩ i i eÍ ȱeč eÑeđqȩ Lw wȱeÑȱeđHHHȩ eÑ eđ)?< wȱeÑȱeđHeÑeđqȩhhhhL?weÑȱeđ`eÑȱeđ`Lx  eÑȱeđȱeÑȱeđоȱeÅȱeąȘHeÅȱeąHH QR u hhG #LHF iȥieÑȱeđkȩhLw`ÅeÅiLyeÅȱeąHH QxR u hhG #LHF q)xqȐxix(ȥixeÑȱeđeÑeđtȩiLx`    feeii   e  e  `LWgLITL]LZLL8LLLL ]L,]LTLJnLTLmLnLL &iee`HHH H [h hHHst /#,ʄ E\hh)ŌLP   eȱeɥ OL-Q,LH O ] ȭ ȭ ȑ $Phihiȑȑ Q e?e4 ]掤Ǝ8ȑL-QLQ`hsht HȊ@ȥ Qes et΅ ʭ ʆ~ Qee`LP ~ *& e~e`LH YJ S RH!RH K\ ͢R , h!h hh  YLY YJ   ooSS jS SS SR5 7 R uSR ,  '  Y\ SLR Ġ' M LRHH hho   C B  t­C B @=  LY +oH  -o ( ' ;SL* SbSٞٳٳ?03L©`5 0ɠ`5 I5 L W ihh H Hl ( \ ˍQ GR M L 򅂤Ƃ` 6L ȱ e'0 SLTLa:L]ȱȱe )# ZTM L.HLT"8逰!i@:e`L_J cHcHL)#J cHcHL)#L] 0`J HH .nF G nhh ` V M\ AV U TL0. ` W. ` U TL3 H\ U E\ ?L 2UL9 W"<` PUL$ PU. L' PUL* V  LUL[tIUU U  K\ .k V +_X`q ,ϩ`JHjh`JjFf` ` `ǥҔ6`66` V `@L)fȅL)f, k V- ^ V K\ k V ^ V` k V ^ V`LL5 3 f78586 6fLf W8$0`LHNcHMcH VL*WLch h!H LtHsHrHqHpHl h#d VhJhvhwhxhyhzhEp`ƂƁHH [ [ /#8騐*IEY )#L C B  -桪 ? > C B ,= 0=  XLYLHLq q q?  XLLH S!H H ^HH phhh h!  ŠLpLp S nH!nH ^HH ^HH pnn mrnʅohhhoeohoeo o"nn t )hhhh ) wh!h Lq qXLYx  ,= P = 0 ? > C B  H ? > C B h  LHX` S!H H ph h! er!n n H nʅ h Lponn t )@= Lp! L8­@ A # C B  UsLp@ A `  pr> ? B C = o wŠLp  X`  ` H H h h HH/H H Mhhh h б H H     xhh Lr ȭA LJ©,= PL tA @ B C W$0 d iA @ C B   , rL,= P =   /#&, A @ C B )#Ls,Lp A @ C B X` 6t  )  X` W  H prh )  C B @= X`L[ 6t  )  X` 6t  )  X` Wo /#H,Ђo x W i o /#, WoX`H th`LoLXpLpLSqLoLoL7q ()LCB  /#ɚhɝc,S; )#` W$0 d iHH  (( ~hh C /#Lo8 i  W)#(m ʝ( C )#LoL]x   y  X`goJJJJpH)ph p(` 03+   9 0S @gHPublic Domain Software by George H. Wells, Jr.for use only with Shell Printer Drivers$BÁB~6""6~BÁB$Z<,3PAHdSdelet@delete$Ltinser@insert9Ltdone@doneMLtN   " 0> KHdBM$than 109 bytes and cannotbe edited.v   9 0V @qHToo many bytes: The sizeof the printer driver mustbe less than 1600 bytes.dBM$]   : 0U @XHToo many bytes: A messagecannot exceed 109 bytes.dBM$v   : 0S @qHToo many bytes: The totalnumber of bytes in allmessages cannot exceed 256.dBM$   6 0R @kHFirst select a byte todelete. If more than onebyte is to be deleted,select the last one.   6 0Q @lHThe number of bytes todelete cannot be greaterthan the number of bytesto the left of the cursor.:!( 3more@moreLtedit@edit-Lt_` N'8ᅈQ(Q(_/P((' ᅀ_QQ_PQN_>    {p <    >y_c]Q`@@P@Q@@q_rrn"@"Nr# Q" Q" Q" Q"  n?""Q>! Q"n0@9s9,DQE(CEDP}DPA(DQEC9 ('//(' /"//6PAHOU\WgnW{POWWinc1@iCW1Ltinc10@iCW10Ltdec1@dCW1ɢLtdec10@dCW10ܢLtinc1@iCD1Ltinc10@iCD10Ltdec1@dCD1Ltdec10@dCD10(Ltinc1@iPP1;Ltinc10@iPP10NLtdec1@dPP1aLtdec10@dPP10tLtinc1@iSP1Ltinc10@iSP10Ltdec1@dSP1Ltdec10@dSP10Lttext@iTextӢLtxface@iXfaceLtboth@iBothLtu   " 0@ @XHdBM$more bytes(s) to import therequested routine(s).No transfer has been made.n@@r!-!H!H!OH!aHr!'!  8 /U ?sHAt least one paint colormust always be selected onthe monochrome filter. Turnanother on and try again.  8 /V ?rHYou cannot turn a bordercolor off. Turning anotherone on will automaticallyturn this one off._SᅈT%T%S%Pᅀ_=ᅏEEEEE=ᅀi076JQ&benabl@enableMono$Ltdisab@disableMono=Ltnewfl@newFilterWLtI(/6Benabl@enableMonoLtdisab@disableMono5Lt#dummy@returnLt""done@redrawLt Shell Editor info@infoLqdiscard@start/Lqprint screen@printJLqquit@quit]Lq9X'6=QXcgeneral@doGeneralLqmessages@doMessagesLqcolor@doFiltersLq90bgeneral@hGeneralLqpage width and length@hPageSizeLqprimary interface@hPrimary7Lqsecondary interface@hSecondary\Lqimporting routines@hImportingLqUP%AHhomessages@hMessagesLqgraphics messages@hGraphicsMLqtext messages@hTextMessLqASCII codes@hASCIICode!LqPetASCII codes@hPetASCIICLqUi-4Ncolor@hColor{Lqpaint, canvas, border@hPaintCanvLqmonochrome filter@hMonochromŢLqcolor filters@hFiltersLqcolor codes & names@hCodesName LqUufile  j`mode  ΅`help  `help  U`help  `-(@_>@CQ@Vd@iw@|@ h  ,, H  HHadjMesadjXfa>clearWconsta, contFipcontImcontOp contRedBRetudCD1dCD10dCW1dCW10dPP1dPP10dSP1vdSP10delete0disabldispHedispWidoBord6doCDowdoCWiddoChardoClrsdoEdit4doFiltdoGenedoM0doM1doMessdoPrimdoSecddonedrawTa*editenableerrPri error+getErrgetFil(getParhASCII>&hClearX hCodesv*hColor'hFilte)hGener hGraph$hImpor#hMessa,$hMonoc)hPageS!hPaintZ(hPetAS&hPrima8"hSecon"hTextM%iBothiCD1iCD10iCW1iCW10iPP1^iPP10|iSP1:iSP10XiText4iXfacefimportinfoinitScinitVa inserthkeyloopRe maskhmoremove newFil~print quit$ redrawregetFrenameZ retGet2retRenZreturnsaveEdstarttestNa menu8bord16del0.delnc@/ed109'-imMax15in109-in256H.inMaxu-info,pant16icon1(3icon2/icon3,icon47icon5Q8icon68both1dec1,dec10,delet0disab*7doneb0edit0enabl7inc1,inc10,inser 1more1newfl5textL2xface2 @constants  @start @initScreen( @getFile2 @retGetFile< @initVariablesF @clearWindowsP @renameZ @retRenamed @getParametersn @redrawx @contRedraw @redraw @initScreen @drawTab @regetFile @contRedraw "menu" @error modemodeM (mode) @doGeneral, @doMessages, @doEdit, @doFilters  @doGeneral  mode1  mode 1 edN0 @saveEd @clearWindow 15,355" "Page width: Page length:", 31,62;6 "(cards) (pixels) (cards) (pixels)"@ 15,75>J "Primary interface: Secondary interface:"T 25,1027^ "(decimal) (hex) (decimal) (hex)"h 50,124?r "Import the following routines from another driver:"| @doCWide @doCDown @doPrimary @doSecdary "icon1"   @doMessages mode2  mode 2  @doM0 firstM0: lastM9 extratrue  @doM1 @clearWindowK lastM nMessages1 lastMnMessages1: extrafalse mNfirstM lastM& mN;":";30);0 mL(mLTablemN)': mStartmTable(mOTablemN)1 D c1N cmLX (mStartc);b cmL ",";:l cc1 v   mN "icon2"   @more extra @doM0 firstMfirstM10 lastMlastM10  @doM1  @edit edN0 @saveEdL "Enter message number to edit:",edN$  (edN$)0 edN1: edN(edN$)?  edN0 edNnMessages edN1:* mode3 4 @doEdit> mL(mLTableedN)GH dBM$bold$"Message number " (edN)" is longer "=R mL109 "ed109": edN1: @dBReturn\ dBM$""f @clearWindowp 10,26z "Message #";edN; 100,40F mL0 "There are no bytes in this message."  n1 nmL n10 n2473, 26 n;":"; nn1  n10 nmL 55, n39 n;":"; nn10  c1 message$""%$ mStartmTable(mOTableedN)1. cmL8 row (c10)B column crow10L xcolumn2472V yrow1030` x,y,x23,y12 j t char(mStartc)~ char;! message$message$(char)  cc1  c0 @doChars "icon3"   @doChars 0,0,0  @key, (70,28,310,140)  x(0): y(0)  column((x72)24) row ((y30)10)  c0A( column0 column9 row0 row10 2 crow10column< c1 cmL c0: F xcolumn2472P yrow1030Z x,y,x23,y12d n a(mStartc) x a; @key,1 1,(0),(0)6 0,0,319,199    @key i1 15:  a$ (a$)1 a$(29) a(a10)! a$"0" aa10(a$)} a255 a99: aa100:  x,y,x23,y12   a; mStartc,aB" message$(message$,c1) (a)(message$,c1), 1, (0), (0)66 0,0,319,199 @ a$J T ^ h @insertJr "Number of bytes to insert:",n$| n(n$)H dBM$bold$ "Use "(256mTL)" or less. "C n256mTL "in256": @dBReturnL dBM$bold$ "Use "(48959pDFin)" or less. "< n48959pDFin "inMax": H dBM$bold$ "Use "(109mL)" or less. "C n109mL "in109": @dBReturn dBM$"" n1 c0:  buff, mStartc  buff2, mStartcn% buff4, pDFinmStartc  @adjMessageL cc cn1 (mStartc1),0   @doEdit & 0 @delete: mL0 ;D c0 "del0": JN "Number of bytes to delete:",n$X n(n$)b n1 c0: Al nc "delnc": c0: v nn buff, mStartc1 buff2, mStartcn1% buff4, 48959mStartc  @adjMessageL @doEdit  @adjMessageL @move mLTableedN,mLn mNedN1 mNnMessages@ (mOTablemN), (mOTablemN)n mNmN1    mTLmTLn 47747,(47747)n  47376,(47376)n* 47942,(47942)n4 48040,(48040)n> @adjXfacePointersH 48042,(48042)nR 48044,(48044)n\ 47395,(47395)nf 47404,(47404)np 47407,(47407)nz pDFinpDFinn pDSizepDSizen driver$,pDTemp,pDSize   @done mode2  @doM1  @saveEd@ driver$,pDTemp,pDSize: edN1: message$""   @info "info"  $ @quit. buff ,pDTemp8 buff2,pDAddB buff4,pDSizeL @moveV head$,buff ` buff73,pDFinpDOffsetj buff,nameAddt i1 (name$)@~ nameAdd1i, ((name$,i,1))  nameAdd1i,0 a0 8 mCa, mC2%(a)  mC,lBuff,hBuff,0 13,"temp",1  @print @errPrint  @error   @errPrint7( (27)"Printer or Driver is inaccessible.",a$ 2 a$""< @errorF P Z @renamed unname$name$%n name$(name$,11)".mod" x "New Name:", rename$A (rename$)0 name$(rename$,15) @loopRename @testName name$ @testName 6,err err5 @contOpen err10 2 dBM$(27)name$" exists. Enter another:" dBM$,rename$_ (rename$)0 name$(rename$,15): @loopRename  @contOpen dBM$"": rename$"" @drawTab @retRename" , @constants6 false0: true1@ bold$(24)J pDAdd30976T pDTemp47360^ pDOffsetpDTemppDAddh nameAdd46756r mC46728| head$(27)"h" grab$(27)"g" driver$(27)"d" buff46776 hBuff(buff256) lBuffbuffhBuff256 w883 (27) mC1%(11),mC2%(8),mC3%(12), clr(15),pos(15),filter(3), hiOff(15),bitMask(15), boMask(1)  a0 11 mC1%(a)  a0 8 mC2%(a)   a0 12 mC3%(a) & 0 a0 15: clr(a)D N a0 15X pos(a)b l a0 15v hiOff(a)  a0 15 bitMask(a)  162,0 : ldx #0" 189,0,129 : l lda $8100,x! 157,184,182: sta buff,x 202 : dex 208,247 : bne l & 96 : rts  133,20 : sta r9L 134,21 : stx r9H 132,22 : sty r10L$ 76,237,193 : jmp SaveFile  162,5 : ldx #5! 189,184,182: l lda buff,x 149,2 : sta r0,x* 202 : dex4 16,248 : bpl l$> 76,126,193 : jmp MoveData @H 0,11,12,15,1,5,13,7, 9,2,8,10,4,6,14,3AR 0,4,9,15,12,5,13,7, 10,8,11,1,2,6,14,3>\ 0,1,1,1,0,0,1,0, 1,0,1,1,0,0,1,0Af 1,8,16,128,2,32,32,128, 2,4,1,4,16,64,64,8p z @move a0 12 mCa, mC3%(a) mC   @initVariables mode 1 edN 1 fiNumber0   @initScreen screen(35840) screen$ 1,18,38,18 . 28 0,0,319,199B @clearWindow L 255V 0,14,318,158` 0,0,319,199j 100,170*t " This area for printer driver "~ 13,"temp",1   @clearWindow 0,0,0  @key @return screen(35840)  0 1,15,317,157 screen 7,10,37,16 17(screen 15) 1,18,38,18  10,20,310,143 @return:  ( @getFile2 rename$name$< 9,"ShellDriver",0F name$P name$unname$"" aZ name$"" name$rename$:rename$"": @redrawd rename$""n a0 11x mCa, mC1%(a)   name$,pDTemp: mC 13,"temp",1 @getError driver$,5000,5000 driver$,pDTemp,1600 head$,buff,256 @drawTab @retGetFile  @getError9 (27)"Disk is write-protected or too full.",a$   @regetFile 13,"temp",1" driver$,pDTemp, 47441,cWide6 47443,cDown@ 47410,primaryJ 47412,secdaryT 47773,clrs^ 47782,white17h 47959,coEnable r cFAddcFTablefiNumber4| i0 3 cFAddi,filter(i)   edN0  c1I mStart mTable (mOTableedN)1 mL(mLTableedN) c mLC (mStartc), ((message$,c,1)) cc1     @getParameters cWide(47441) cDown(47443) primary(47410)& secdary(47412)0 coEnable(47959): clrs(47773)D black(clrs16)N whiteclrs 15X 47782, white17Ab blackwhite black white 15l clrs black16 whitev 47773, clrs pDFin(48044)pDOffset pDSizepDFinpDTemp! cFTable(47657)pDOffset! mOTable(47453)pDOffset! mLTable(47448)pDOffset  mTable(47457)pDOffset% nCFilters(mOTablecFTable)4  nMessagesmTablemLTableG mTL(mOTablenMessages1) (mLTablenMessages1)D black8 cFTable, (cFTable) 2(black.01)D black7 cFTable1, (cFTable1) 2(black7.99) @mask i0 3  filter(i)(cFTablei)     * @drawTab4 0,0,319,199> leftTab 160 H 9R leftTab,3,318,14 \ 1!f leftTab,14 leftTab,4#p leftTab,4 leftTab5,2z leftTab5,2 313,2 313,2 318,4 318,4 318,149 leftTab2(name$)4 160,10 " ";name$;" "   @dispWindow x8x8: y8y8 x8,y8,x8w81,y812  255 x86,y81,x8w8,y813 : parm;   @dispHexWindow ww8: w884$ x8x8: y8y8. x8,y8,x8w81,y812 8 255B x86,y81,x8w8,y813L : "$";V pHi(parm16)` pLoparmpHi16j (pHi48(pHi9)7);t (pLo48(pLo9)7); ~ w8w   @iCW1 cWidecWide1 @doCWide  @iCW10 cWidecWide10 @doCWide  @dCW1 cWidecWide1 @doCWide  @dCW10 cWidecWide10&  @doCWide  @doCWide cWide80 cWide80( cWide1 cWide12 47441,cWide< x5:y5:parmcWideF @dispWindowP x9:y5:parmcWide8Z @dispWindowd n x  @iCD1 cDowncDown1 @doCDown  @iCD10 cDowncDown10 @doCDown  @dCD1 cDowncDown1 @doCDown  @dCD10 cDowncDown10& @doCDown  @doCDown cDown255 cDown255 cDown1 cDown1 47443,cDown" x22:y5:parmcDown, @dispWindow6 x26:y5:parmcDown8"@ w884: @dispWindow:w883J T ^ @iPP1h primaryprimary1r @doPrimary | @iPP10 primaryprimary16 @doPrimary  @dPP1 primaryprimary1 @doPrimary  @dPP10 primaryprimary16& @doPrimary  @doPrimary" primary255 primary255 primary0 primary0 47410,primary x5:y10:parmprimary @dispWindow  x9 @dispHexWindow& 0 : @iSP1D secdarysecdary1N @doSecdary X @iSP10b secdarysecdary16l @doSecdary v @dSP1 secdarysecdary1 @doSecdary  @dSP10 secdarysecdary16& @doSecdary  @doSecdary" secdary255 secdary255 secdary0 secdary0 47412,secdary x22:y10:parmsecdary @dispWindow  x26 @dispHexWindow    @dBReturn  dBM$"":* 4 @iText> fTexttrueH fXfacefalseR @import\ f @iXfacep fTextfalsez fXfacetrue @import  @iBoth fTexttrue fXfacetrue  @import sAd(48042) fText sAd(48040) eAd(48042) fXface eAd(48044) iSIeAdsAd driver$,pDTemp,1600 9,"ShellDriver",0 iname$ (iname$)0  iname$,pDTemp$ iname$"". 13,"temp",18 bTA(48040)B oBT(47747)bTAL oPT(47376)bTAV oET(47942)bTA` oXF(48042)bTAj bXA(48042)t oOC(47407)bXA~ oSB(47404)bXA oCC(47395)bXA oPE(48044)bXA pImp(47410) sImp(47412) sAd(48042) fText sAd(48040)" eAd(48042)  fXface eAd(48044)$ grab$,sAdpDOffset,eAdsAd driver$,pDTemp! npDFineAdsAdiSI489597 dBM$bold$"The current driver needs "(n)" "6 n0 "imMax": @dBReturn  fXface @contImport noXF(48042)(48040) sAd(48042)pDOffset( buff,sAd2 buff2,sAdn< buff4,48959sAdBF n0 buff4,pDFinsAdP @moveBZ grab$, (48040)pDOffsetd (47747),(48040)oBTn (47376),(48040)oPTx (47942),(48040)oET @adjXfacePointers @contImport sAd(48042) fText sAd(48040) grab$,sAdpDOffset fText (47747),(48040)oBT: (47376),(48040)oPT: (47942),(48040)oET: (48042),(48040)oXF (47407),(48042)oOC (47404),(48042)oSB (47395),(48042)oCC (48044),(48042)oPE pDFin(48044)pDOffset pDSizepDFinpDTemp primarypImp @doPrimary secdarysImp @doSecdary" driver$,pDTemp,pDSize, edN1 6 2@ 0,159,319,199J driver$,pDTempT ^ h @maskr boMask(0)0| boMask(1)0 ihiOff(pos(white)) b bitMask(pos(white))I ccFTable cFTablenCFilters42 2 ci,(ci) bD boMask(0) boMask(0) (c)F boMask(1) boMask(1) (c1)     @doFilters mode4  mode4 edN0 @saveEd @clearWindow backscreen 15  1& i0 150 xi16 55: x,79,x9,88D x,103,x9,112eN boMask(hiOff(i)) bitMask(i) x,127,x9,136X clr(i)16 backb x7iil x,10,x,10v x,13,x,13 x,16,x,16    0 xpos(white) x1653,77,x1666,90! x1653,101,x1666,114  255! x1653,125,x1666,138 10,307 nCFilters2 "There is one color filter.";C nCFilters2 "There are "nCFilters1" color filters."; 150,49= coEnable0 "The monochrome filter is disabled."<  coEnable0 "The monochrome filter is enabled." 20,86  "paint:"* 10,1104 "canvas:"> 13,134H "border:";R @doClrs"\ nCFilters1 "icon4" "f nCFilters1 "icon5" p @contFiltersz 10,60,200,75   cFAddcFTablefiNumber4 i0 3 filter(i)(cFAddi)   pCount0 x0 15 x16x16 1 ! x1658,94,x1661,97  y0 1D bit(filter(hiOff(x)yy) bitMask(x))E y0 pCount pCountbit bit255D x1653,y2477, x1666,y2490  $ 0. x1658,94,x1661,97 8 B 10,67VL fiNumber0 nCFilters1 "This is the monochrome filter:";CV fiNumber0 "This is color filter number "fiNumber":";` 0,0,319,199j t ~ @newFilterS "Enter filter number (0 for mono):",n$ (n$)0  n(n$)5 n0 nnCFilters  fiNumbern  driver$,pDTemp,pDSize edN1: message$"" fiNumbern @contFilters  @doClrs. (53,77,306,138)  x(0): y(0)  (x,y) ! x(x163.3):y(y243) x16x16: y24y24( y2 @doBorder2 bit (x1653,y2477)Z< pCount1 y0 bit fiNumber0 "pant1": ?F x1653,y2477, x1666,y2490?P x1654,y2478, x1665,y2489EZ y0 pCountpCount(bit.5)d dhiOff(x)yyn bbitMask(x);x bit filter(d) filter(d) b; bit filter(d) filter(d) b cFAddd,filter(d) dhiOff(x) boMask0I ccFTabled cFTablenCFilters41 2 boMaskboMask (c)   boMask(d)boMask ( boMask b) x1655,127,x1664,136 y0 bit  i0 15I filter(hiOff(i)) bitMask(i) blackclr(i)   clrsblack16white 47773,clrs" , 6 @doBorder=@ (x1653,y2477) "bord1": J 255T x1653,125,x1666,138^ 0: x1653,77,x1666,90: x1653,101,x1666,114: ipos(white):whiteclr(x): 0: i16i16: i1653,125,i1666,138fh 1: i1655,79,i1664,88: i1655,103,i1664,112r clrsblack16white| 47773,clrs 47782,white17   @enableMono coEnable255 47959,coEnable 140,42,310,52   150,49. "The monochrome filter is enabled.";   @disableMono coEnable0  47959,coEnable 140,42,310,52 & 0 150,49/: "The monochrome filter is disabled.";D N X @hClearWindowb 0,0,0 l @keyv @return 0 1,15,317,157 screen 1,10,38,18 10,15,317,157 "icon6"   @hGeneral @hClearWindowJ "This Editor will allow you to make minor changes in Shell Printer"F "Drivers which are the only type that will show up in the file"H "selection dialog box. It is recommended that you print each of"J! "these help screens before proceeding. There are three help menus"I ! "which apply to the three edit modes called general, message, and"K! "color. The general mode applies to page width and length, primary"M ! "and secondary interface parameters, and importing text or interface" M*! "routines from other Shell Printer Drivers. The message mode applies"G4! "to printer code sequences and the color mode applies to adding"H>! "color to a non-color Shell driver or modifying the colors of an"MH! "existing Shell driver for a color printer or for grey-scale printing" R! "on a non-color printer."@\! "WARNING: Shell Printer Drivers use a second-generation"Bf! "specification which may not work with some applications."; p! z! ! @hPageSize! @hClearWindowJ! "The page width and length are used by some applications to adjust"L! "the way printouts are done but other applications assume a specific"O! "size and let the printer driver truncate the printout if it is too big"J! "to fit on the page. For example, geoPaint assumes the size is 80"H! "by 90 cards. (A card is an 8 by 8 pixel square the size of the"M! "coloring tool in geoPaint.) GeoPublish and geoFile use a fixed size"G! "of 80 by 94 cards but geoWrite and geoCalc will adjust for any"F! "width between 60 and 80 cards and can handle any length up to"M! "255 cards. Usually it is best to leave the width at the maximum of" M! "80 and let the driver make all necessary adjustments. If you make" G! "a change in the page length you may also need to modify one of"=" "the printer messages to change the real page length."=" "Be careful when attempting to do this with Commodore"<" "compatible printers that lack a form-feed command.";$" ." 8" @hPrimaryB" @hClearWindowHL" "The primary interface parameter is most commonly used by serial"IV" "bus routines as the device number which is 4 for most interfaces"J`" "and Commodore compatible printers. However, many have a DIP" Dj" "switch to allow you to change the device number from 4 to 5"Ht" "which you would do for a second printer connected to the serial"J~" "bus. Then for any driver designed to work for the second printer"I" "you would change its primary interface parameter from 4 to 5 and"J" "use the select printer option from the geos menu before running" N" "an application to determine which printer will be used. Printers and"G" "interfaces can also have device numbers of 6 or 7 if they have")" "the DIP switches to select them."F" "The geoPrint Cable routine does not use interface parameters."8" "Check with the author's documentation for other"@" "interface routines to see how to treat the parameters.";" " " @hSecondary" @hClearWindowJ# "The secondary interface parameter is most commonly used by serial"E # "bus routines as the Secondary Address. Commodore compatible"I# "printers use an SA of 7 but the routine requires a hex $60 to be"C# "added to the SA in order to work properly. Use $67. Most"I(# "interfaces require an SA of 5 to put them in transparent mode so":2# "the parameter should be set to hex $65 for these."H<# "Some printers and interfaces use other SA's which can be easily"LF# "set with this Editor. The manual will usually describe the SA with""P# "a BASIC commands such as:"Z# "OPEN 4,4,7"Gd# "The third number is the SA but remember to add a hex $60 to it")n# "before setting it in the Editor."x# # # @hImporting# @hClearWindowR# "Shell Printer Drivers are divided into four sections: the Shell itself, a"M# "graphic routine, a text routine, and an interface routine. You can" K# "copy the text and interface routines between Shell drivers so that"K# "once you find a set that works with your printer/interface you can"J# "easily combine them with any other graphic routine that you might"M# "like to try. This is especially useful if you normally use a serial"F# "interface and then decide to switch over to a geoPrint Cable."H# "When you import an interface routine, its primary and secondary"I# "parameters are also automatically copied. The major differences"F# "among text routines have to do with whether they use standard"J$ "ASCII or PetASCII. These text codes are similar except that they"5$ "interchange upper and lower case characters."$ "$ ,$ @hMessages6$ @hClearWindowJ@$ "A message is a piece of information that is sent to a printer for"JJ$ "the purpose of controlling the printer rather than being printed."NT$ "Virtually all printers use ASCII control codes or sequences beginning"G^$ "with an ASCII control code to encode their messages. Messages"Jh$ "do everything from a simple linefeed or page eject to setting the"Qr$ "font for text printing or setting the dot density for graphic printing." L|$ "Unfortunately, there is no standard set of messages that works with"N$ "all printers but the Shell Printer Drivers are organized around a set"K$ "of eight messages that can be edited individually for any printer."M$ "The first four of these involve graphic printing and the second four"N$ "are for text printing. Drivers can use additional messages but since"G$ "there is no standard for doing this you will have to check the"K$ "author's documentation if you need to modify them" "$ "for a different printer.";$ $ $ @hGraphicsM$ @hClearWindowM$ "Message 0 is used by all Shell Drivers at the start of each page of" P$ "graphics printing. It usually includes a reset code and any additional"N% "codes such as setting the page length, linefeed distance, or margins."% J% "Message 1 is used at the beginning of each scan of the print head"H&% "when doing graphic printing and may include information for the"D0% "number of bytes of graphic data as well as the dot density.":% JD% "Message 2 is used at the end of each scan of the print head while"MN% "printing in graphic mode. It may include a carriage return code and"X% "a line feed."b% >l% "Message 3 is used at the end of each page of graphics"Cv% "printing and often is just a form feed (page eject) code.";% % % @hTextMess% @hClearWindowI% "Message 4 is used at the start of each page of text printing and"J% "usually includes a reset and any additional codes required to set"I% "the number of lines per inch to six and to set the default font."% G% "Message 5 is used at the end of each page of text printing and")% "often is just a form feed code." % J% "Message 6 is used at the end of each line of text printing and is"J% "usually a carriage return follow by a line feed for non-Commodore"D& "printers and just a carriage return for Commodore printers." & H& "Message 7 is used immediately after message 4 whenever the user" & "selects NLQ printing." *& 4& >& @hASCIICode H& @hClearWindowJR& "The ASCII code defines meanings for bytes with values from 0 thru"O\& "127. The first 32 values, 0 thru 31, and 127 are non-printing control"@f& "codes. The ones commonly used by printers are: 7:bell"Lp& "8:backspace 9:tab 10:linefeed 12:formfeed 13:carriage return"1z& "27:escape (used to start code sequences)"T& "The remaining values are all printable characters: 32:space 33:! 34:"(34)O& "35:# 36:$ 37:% 38:& 39:' 40:( 41:) 42:* 43:+ 44:, 45:- 46:."P& "47:/ 48:0 49:1 50:2 51:3 52:4 53:5 54:6 55:7 56:8 57:9 58::"O& "59:; 60:< 61:= 62:> 63:? 64:@ 65:A 66:B 67:C 68:D 69:E 70:F"N& "71:G 72:H 73:I 74:J 75:K 76:L 77:M 78:N 79:O 80:P 81:Q 82:R"M& "83:S 84:T 85:U 86:V 87:W 88:X 89:Y 90:Z 91:[ 92:\ 93:] 94:^"R& "95:_ 96:` 97:a 98:b 99:c 100:d 101:e 102:f 103:g 104:h 105:i 106:j"J& "107:k 108:l 109:m 110:n 111:o 112:p 113:q 114:r 115:s 116:t"J& "117:u 118:v 119:w 120:x 121:y 122:z 123:{ 124:| 125:} 126:~";& & & @hPetASCII& @hClearWindowJ' "The PetASCII code set is activated on Commodore printers and most"M' "interfaces by using a Secondary Address of 7. It interchanges upper"I' "and lower case letters and usually does not implement any of the"M$' "control codes except carriage return and linefeed. Without formfeed"J.' "the driver must count lines and output the required number at the"S8' "end of the page. The printable characters are: 32:space 33:! 34:"(34)OB' "35:# 36:$ 37:% 38:& 39:' 40:( 41:) 42:* 43:+ 44:, 45:- 46:."PL' "47:/ 48:0 49:1 50:2 51:3 52:4 53:5 54:6 55:7 56:8 57:9 58::"OV' "59:; 60:< 61:= 62:> 63:? 64:@ 65:a 66:b 67:c 68:d 69:e 70:f"O`' "71:g 72:h 73:i 74:j 75:k 76:l 77:m 78:n 79:o 80:p 81:q 82:r"Mj' "83:s 84:t 85:u 86:v 87:w 88:x 89:y 90:z 91:[ 92:\ 93:] 94:^"Qt' "95:_ 96:` 97:A 98:B 99:C 100:D 101:E 102:F 103:G 104:H 105:I 106:J"J~' "107:K 108:L 109:M 110:N 111:O 112:P 113:Q 114:R 115:S 116:T" J' "117:U 118:V 119:W 120:X 121:Y 122:Z 123:{ 124:| 125:} 126:~";' ' ' @hColor' @hClearWindowK' "In order to print using color, you must use a color driver and you"H' "must be printing from an application that uses color. The only"I' "GEOS program supplied by Berkeley Softworks that prints in color"I' "is geoPaint, and then only when it is turned on or when printing"K' "from the deskTop. The easiest way to turn color on is by clicking"P' "on the COLOR icon. Shell Printer Drivers all have the ability to print"L' "a single set of colors by enabling the monochrome filter with this" N( "Editor. In addition, those that are designed for color printers will"J ( "have several more sets of color filters which can also be edited."L( "The default canvas color in geoPaint is light grey which means that"H( "you will have to manually color an entire document white if you"L(( "want light grey to be a printable color. You must also be careful" B2( "not to double-click on the eraser when color is turned on"A<( "or the canvas color will be changed back to light grey.";F( P( Z( @hPaintCanvd( @hClearWindowIn( "GeoPaint provides for 16 colors which appear in the toolbox when"Gx( "you click on the COLOR icon. One of these must be selected as"H( "the border color which will never print and is removed from the"K( "filters in the Editor. If you wish to change the border color you"P( "must first turn off that color in all of the paint and canvas filters." L( "Whenever the driver prints in color, it uses one of the filter sets"I( "and prints anything on the document whose colors are selected in"L( "that filter set. For monochrome printing, the entire document will"N( "print using that one set but for color printers, the sets are changed"J( "according to the design of the programmer. Normally any paint" I( "color that is selected would also have the canvas color selected"L( "but it is possible to design a driver for which they are different.";( "Since paint and canvas colors appear the same when"A( "color is turned on, turn color off to distinguish them.";( ) ) @hMonochrom) @hClearWindowJ") "The purpose of the monochrome filter is to provide color printing"I,) "for non-color printers with the use of solid color ribbons which"K6) "are readily available for most printers. You will need to print a"G@) "colored geoPaint document several times, each with a different"LJ) "colored ribbon and a corresponding driver which you edit to select" JT) "the colors appropriate to each of your ribbons. The hardest part"N^) "about doing multiple printing like this is aligning the paper so that"Lh) "it starts at exactly the same place each time. If your printer has"Kr) "tractors that pull the paper after it has been printed, you can do"P|) "this fairly easily by taking two sheets of fanfold paper and installing"L) "them in your printer ready to print at the top of the second sheet."N) "Mark on the first sheet the location of the tractors so that you will"<) "be able to re-install it the same way on subsequent") "passes.";) ) ) @hFilters) @hClearWindowI) "The additional color filters beyond the monochrome filter appear"I) "only if the programmer of the original driver has provided them."K) "You cannot change the number of filters any given driver has. The"G) "programmer can use these filters in a wide variety of ways but"K) "usually they will be grouped according to color intensity. A very"M* "useful type of driver would be one that printed only the five levels"J* "of grey including black and white. This driver would operate the"J* "printer at twice or three times normal density and make two or" G&* "three passes. This would expand each pixel into four, six, or"I0* "nine dots. Black would then be printed using the maximum number"H:* "of dots and the greys would print using proportionately smaller"HD* "numbers. If a driver like this is available for your non-color"@N* "printer, then you can make additional drivers sensitive"IX* "to the colors on the ribbons you have."; b* l* v* @hCodesName* @hClearWindowF* "The color codes and names are shown in the table below. They"D* "are grouped in this editor in the same order they appear on"$* "the color bars in geoPaint."* &* " 0 - Black"180)"9 - Brown")* " 11 - Dark Grey"180)"2 - Red".* " 12 - Medium Grey"180)"8 - Orange"1* " 15 - Light Grey"180)"10 - Light Red"(* " 1 - White"180)"4 - Purple"%* " 5 - Green"180)"6 - Blue"3* " 13 - Light Green"180)"14 - Light Blue"&* " 7 - Yellow"180)"3 - Cyan"+  + + @error + 6,errV*+ err47 (27)"Saving current driver to disk.",a$: @quit4+ @error>+