8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RPATCHERT ;T ;' &PRODOS#B ,BASIC.SYSTEM*( 'STARTUP?&&"!/SLOTCLOCK.PATCHO&'"!+CLOCK.PATCH_j%b  !"#$%&'()L| Ly Lv Ӡֲ㮬f"f"C# "&i01h+# )#M8 % ) L"g# )L"@, )7(P0 ( @A p 8 )# f" +#$#0 &$#0 %# )ȍX#f"P# )ɂH#*# ) %)0I0hx H( , %Щ ߜ)#j )f 8'  )ɀ)4,- U JNT) )#L# ) f"` #K)D/ #3 &#'#(# ## iL X"0#"0ӠĠŠŠҠ`#{% F%Z]``e-.!0SB}/BiBB}/ gF/0k) y! ʿ  L##  m# m# J LB Qר)ɨ] оȱ ̀𩠙 i ȴ O Ѻ G \ ɟU ʿ V@$ A ɛL e '8 Jm ʈ0 o 0堠خ YYZLYLY@뿭`d 8#@8` %MNЩUMߩ  L 5   8 0 8  `0 / X   / &; Pb 8 )0`ddd1&… (n&Dž (\%T&Ln()8= (J 8(&(& >((ʎ1΋&΋&&3223 ')Д )18&"m11 2H22h2舌&&12H)M0 h1020I20h2 (`L%12 `\(#L  98" :ȱ)ɀ  ) ( ` (Xp< @ ( )m ( (. (( M (i  ``) '(j21 & &!` (&&(i)&)( CdBdDdFdGE ) ) ))) ))&$ >(,&& … >(ŅL 'JJJJ`Ϡ(8`&  LdDž )Pi)) () ))&-&),&͉&) ))&0)У` )ɥ`HZJ)  )zh %J)֭)n)}11J  2 (8`rȱȱȱ0\aȱeek+ȱ+ȱ++ȱ++ȱ+ *+ + *`L@+ + * L) *Ș8e` ,$`ee` `+ H++ d+` w+ H+ d+`hh8`8`+++`}+`e`H)hJJ+0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH "M,Z(") \i ᘏi᫫8(`hhh8k-<ʆ>Q=?BC8 é&'112`آ <B*IBGF08Lé'+8H <,``h(`@ڍL3HEVhEhH)IWHPHHHAHHHLaVEWLӿ``LKL`BLL ޥޥޥޥޥޥޥޥޥޥޥޥޥޥޥ(C)APPLE xLLM Mh@8nЍLޭ 0J @,,L=#P׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3Q`_^]ba`0h)ύh0HHHH " ׍hhhhhddhh .hh8`JIMJAYKERRY&MIKEhh@ihAiH(ؠȱ@JJJJq@)@ݔoȱ@Hȱ@Ah@@\e J) ހL JiB ހJ) @xNHHژHL(  ްʠx@BEOD  ް(`( C)CJJJlBJ,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h߈ ߐ( ߐ ߐ   ޕ0 HϭߍLпllll8` Q)T 22D) ɺi )?  }   ސ `@Hȱ@IױHXATȱH ɯȩ׍̰5H)/@a)_ .0 :A[8@`,뎰ڮЕ` } L ` r@>q)I38 kם`K8`@Nȱ@O@ eIiNȽבN)/ȩ/N`@Z VH:JjjjhA "'KI؍0JHi 뎣`ةC8` @)0 e/N0 *ڽ0 ti` <; 뮣ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّN0NN` G8`F@ 0 $ LK8`X YI8`FHGH GF܌ עFܽܕF芝ܝ 밸XY Z܅I m[IHHyHȘI L`ܞ @@ @Ю׍q)mיqʈ@ȱ@ȱ@lmq)5qI0ܢܽ n'c* 7FG (ef Ld܅Ip mcIH`  k0no cqHlFmG 밳lm 밨e%܈b" T)Ia)܍p*܍c'ܮ( 4 䭐 $H %HFFHGHG 됬`R8` )` cHq` _9܅IHHqqЍq  @`8 ` ͫ% ΫQ8`܅I `n܍op L8D`F` EgH)HFȍlHGm %܍&܍ܢ8* J8` }L ܝ\)I 'ܝX`d8ipFnGo`d܅IH3H ( )ȱH`ά8ceHI dSBX0k }ٙiٙgFleʈ L`8m0`,0H hi MȽٍ0dGF8yאFG  }$0 *01 E8`100 < 0̩ 谾 }谹`12)1`0`Ȏi i ٞU`)8`` U _G *A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`)َ 8ʈ` 0ٝ)i `8`O 鍮 dMمFمG ; ή0FG뮣0 ٭٭ٽ8`H8`  , 8`  `ٽJJJJ`Hͮhk)&NjNjNjN. 1Eͮ d8٭ u'Nۙ۰ڙک `Z8` 1# ` . . .8۰*J۩ ٰ:`JJJJ9 d묣͸ dٍ0 u  `H8` `ٍyٍiB0H0FGy h0`FG `ϩBxEdD0C ް(`(8`ؑ@`M8`8@ؐʈI묤)8 La LةC8`؍)@ fi)8wJ ] ؅F LW) y+%J(^ FإGؐ,` JHIH I%FHGI ԭJjHIH@=IؙJJ ?9 -4HIHI`JKJK`FHIG ( Ȣ؝؈JL)eKM`)` J Jͽ $0 άJFȱJL8`GBJ 6 FإG`BH 6FإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` d뀧J  ! dH   9ؙ` r@ }P8`K8`B8` j؈qJJJJح) ) )Ю ЪG.F $ ᭔ع+ؠ H  0h8` 䮣ٽ ٬ؠ@` ( j )8`)i п` H h)N$% LL L e L  pJ )@NJOK iKK IJ v JФ̭JjHFIH HIGxKE ް((H vhH h8`8@ȭ@L쬤8NNO 8 ؍JL`QʱLN0MOMEKP.MEKӱL-M O,up莿eNNO(`JNKOL / P L8 a ?ؑJ`L@ȱ@ `@Nȱ@O`؝}I轘ؐ` Gؽ؝ G  G؝؈` ` H 1h)N@ ; L  $ )dJ S ) iH h8` ) )حJjIHIH؊ PLJʱNLMO MІMEKݸP$MEK O,u PeNNO (` C  7 2JHIHI؊ aL-  ` ? H ع H ؙ؊IhHIhH a iع `  عiعi` )؍0CGHFHdBdFdGx ް(8hFhG`@4͔ L @Ai ׭2` . 0#ع؍0 <讣)`.@+ i 8` L )0 )p )@ f ) yʩ ؝j0lm 밫 }nolmFG w嬤؍؍؝ ؝ q) q )حk͸ d`H@h`h``N8`  ) ⬤Ȣ؝@ݼ@ʈL KIJHȢݼ ^魼)Jn 8  ؍ ؍ 2H8 ع)JJJJ Ȣ؝I؈ h(8H  h(8Hh(`ؑ@`@ȱ@ ` r@@8Wq ^鮣ٍٍٍHٍ8hqJJJJq2)q@` r%I -) 20@q)N8` @LL =@ ȹP8` i` ם0 B )( ȹ`8m8m@8` G8`F } r }P⭏)@N8`q)@J טyרםqq)׍q 밑 LȹL@ȅH@IL,0` rD }ﭩ: SH-)N 0 $q)@kP8` 2  dHqefe h`yٙ٭yٙ٩`H 1BFG 3%&N    ܮ `J HH hh` 0@ tL)lL S_Xܝ ݝ0ȩFG  0` ܅F݅G ` \ Sͬ 밽܅F݅G ` \) S$ L`LHH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 V9X(K VXXK تKo`V8`no` "on VI9XX`)&HJJJh`OeNeO࿰ V9XГO`@ȭ@` ON <NJKO`?>х=d<<>=?ILBJ DքEdFCJJJJ֍nH}IC J֭֬։/)DI@+8`@Ae C!$|1OIIJK,-NOPQRSu' @   !"#$ Ԡͭ HB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?<>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDL ֽ ְ& .Vӈ  JJJJH 8h Ei 8EX`'8`jӍWӥC)p> pӥCYӍY 轊( ( ӈBV ( ӭp0 \BkJ ՠ@iӦ> Ӑi'j:ZH i@ioZZH h ѐȭnWǥBJ Ӱ8XӦ>` Ր+>*L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| 0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌18V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D EFby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  ح o âXoύX`1e0e21ʆe dk)i/ k Lkdha+ # nrdcddpqt$q0c)crorcc0enib ` r )pqn  Эht X l)lhЏL2  9 X [ J  dgdshUj" !# wgjdg. wg'g%s wghg%s w h ɍ1Ɋɋɉɛ kʽ/`L2LY g Xȱl蝀igt 9 X   (L $ `dm &m &m &m &mlemmli`{g8s [t0{2H* Lh2  Xȱl i L `κºú` \GQ H ?h8 S / ?8 V []bj \ ^e_f a  i  \ 2EL 0 8`0)H ""H"h8 ek)E/8`HZ; [:HZ"h+h`8h`/Ȁ򈘍` L   `H0H"hHHH HHH "hpHH"VHH; [*i)    +hhHH"""8h/ ʎ S` ?8 r 0 88`  Can't run next application.ProDOS Error = $ Please insert the disk: Accept: M Cancel: Esc+,-./0123456789:;<=>LG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<JJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IջLYL 8!9 詍` "  4"/pŠϠŠà͠ӠàԠŠH06172839h` z97L75v^e ?/( ze?L[LLɍ$?`?e ɍɥAH93827160hH46576879h`,C fL ɍ f ,S0 @ pLޭBDEF޾ p  ޾ p($ذ z (0 k( L?ԦʚLeةީe s  pL f,FLk,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ kB94 l% fʽ  ՚,S` H $݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ͱc־JjjjZ[ (`O>0O z POپھ p WH־Ǿh۰8L־JjjjZ[ɾ)Ⱦ8 AOLӜ ҤLLX>(F`־ؾپھ׾` fɄ KDEF zLp z pL[ fKɍKL?`  zLp@3 @LtJ)s@J f 򟰸 p`H? hth?,E30ɍФ3 E3HD F3 Ʉ%h3 fM E  pLthɍLL3`3,A0s0% Ipn HpnI:L ؅303Lm8n933LҞAAJL ةޘг uv $ 8LʞeЌ>?@`>?@`Ba8` K  LK ֟ ֟  KK`JJJJ8`轶K)` #hhLJپھ pHJh` H!h߻g޻tػٻpứ `޻ٻtػp߻8nٻniػtpiٻٻtụs໅o8ễpڻiۻniݻi>j?kܻڻ߻>ٻ׻pڻ׻Ii׻׻߻߻ڻ l 1ڻۻ `>i>?Ek?!>Q>>>ڻۻ `` `>ڻ ۻ `e>>?ܻ?ܻ>?Emn(>e>ܻȱ>e?>Q>ؠ> ie>>?`׻;ػ=:<ٻ:<=;`׻׻mػ;>:8o>oȑ>ppȑ>> :oݻp` HKpn͵ @p;=po:i>?Ek?>Q>> L>ܻ `/ e>>?ܻ?ޱ>ȥj>>m⻑>` !im8i仍nj廍ki滥lj绥oS ST$I2 U)VJ :T)`l8`a HbIJhjǾȾɾ p٭b=a<I/q)im@^ʈ0 L/S 51-m@ʈ0 L٨/` E չ5TLG-T VV H$ZA@Lĩ8 `߹-U -W b WW)JJ HT$K j0IDK H H5K 0.)K H  XK`LGLl  HK m Y ܩ8jK` X,, ( 5 ` X,  `  X, `)a)_`0:8 `)H " H 媢h} I hm   8`0 :AG8 `) 媰 ` . . `SI-SRR¸)RʈS UT`RSSS8L `yGLɳ 8`H b kXklmno YhjWVL58 L tֻʆt "ֻtl e DޭVJ P eօ L s򩣍eS3 zLG # e $L? b 4 kimljn`  pg׾mȾXhؾmɾYtѮȾɾ YX`8g Ie f`8` P־ǾҾ,G0C ж=W)_`ZV"׾پӾؾھ pD`Y׾ؾOW)Ⱦɾʾ pD`8`W)CB) 5W) )W)@! pZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ ж p ධۥs׾tؾE` ( о(־Ǿ,G 8`_`W)H־JjjjhZ[ p̭ зLKǾ  . .8   ۭ (8 mȾȾmɾɾʾiʾ` Lpl8l:/0sНsƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND Hѫ5 FڬB :hQ|Q@@ -!S    !C- !ABELSDFRV@@ !$(19@EӱüϠž(+@ABCDEFGHIKLMNPSV     T[fouu~ՠٯ* PWN*]ĿNTz @n6VC/+A>@I5gN Oz @n[Dz @nd0,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt Nʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~Tһ   LiLMTRLLLLL[^)o `\o8` ԠŬLL@ABCDEFGHIJKLMN2 ProDOS 8 ThunderClock Driver Patch UtilityP Written by Greg Branche Copyright (c) 1991, Apple Computer, Inc. All Rights Reserved: This program allows a user to modify the table of year values stored within the' ThunderClock driver, thereby allowingQ the driver to calculate the correct{  value based on month, day, and day-  of-week. The table consists of seven  entrys, with each entry corresponding  to the year in which January 1st falls,  on the day-of-the-week for that table9  entry.? :m  Instructions and background information  are contained within the program. They  are displayed to the user at the beginning  of the program. : d(21):: turn off 80-col card6 n cu() = cumulative # of days in yearB xCU(12)j fill array with # of days in year CU(1)0: January I212 X CU(I)CU(I1)X I : DN$() = Names for days of week DN$(7) fill array with names of days of week I17( DN$(I)/ I5 :Y  yt() is the year table valuesd YT(7)j ": , Save original prefix 6(4)"Prefix" @PFX$ J: TMOD7(X)(((X7)(X7))7.5) ^: h Display some instructions r |A$ A$""İ900:1000 A$3 (37)21İ900:< 380B :o  Finds position of / within date string X0:On exit, contains position of /, or 0 if none found *I13 4(DAY$,I,1)"/"XI:I3 >I H R: Pause between screenfuls of informationI24:4:" to continue, to exit";:A$_A$(27)ġ:5000yA$(13)ĺ(7):900: get the user's input and convert"Please enter today's date (mm/dd/yy)""-> ";DAY$800: find slash separatorX01080R"Invalid date entered. Please try again.";(7)\$1010. Convert month value to numeric variable8MO((DAY$,1,X1))BDAY$(DAY$,X1)LMO1MO121050:Range check the month value V800:Parse out the current day`X01050Gj Convert day string into numeric value_tDA((DAY$,1,X1))t~DAY$(DAY$,X1)DA1DA311050:Range check the day value Convert year string into numeric valueYR(DAY$)YR0YR991050:Only allow 0-995YR39YRYR1900:40-99 must be 1940-1999cYR40YRYR2000:0-39 must be 2000-2039i:"Please enter the day of the week""(e.g. Wed) -> ";DOW$(DOW$)31270:Must be at least 3 characters"Invalid day of week. Please try again.";(7):12308(DOW$)3DOW$(DOW$,3)i Shift any lower case letters to upper cases B$""~I13A$(DOW$,I,1)((A$)("a")(A$)("z")A$((A$)(("a")("A")))2B$B$A$<IFDOW$B$$P Now convert day-of-week string to numeric value.ZDOW09dI17TnDOW$DN$(I)DOWI:I7[xIkDOW01260q: Calculate the number of days so far this yearDYSDACU(MO) Must account for extra day in leap year(YR4)(YR4)MO2DYSDYS1:H Now calculate the index to use to fill in the tableaIDXDOWMOD7(DYS)1sIDX(IDX10)IDX7IDXIDX7: Now we can fill in the year tableI17XYR1900X100XX100 "YT(IDX)X: store the year into table,IDXIDX1+6IDX1IDX7W@(YR4)(YR4)1660: not a leap yearpJII1: update indexTI71670: if entire array done, exit^YT(IDX)X: duplicate entry for leap yearhIDXIDX1rIDX1IDX7|YRYR1I:$I17:Poke table into memory5767I,YT(I)<I` Now that the table is set up, we can modify the file(s)6:1"You may now insert the disk containing":"the ProDOS file to be modified, then":"enter the location of the disk. You""can enter the location either as the":"volume name of the disk, or by its":"slot and drive location (ESC to exit):""-> ";12:4:958 A$A$"/"2100: input volume name A$"S"A$"s"2200: slot/drive input %(A$)275000: ESC pressed, exitO*(7);:2060:None of the above, try againU2:u3Read volume name from user4A$;:"";PTH$>PTH$"/"PTH$: build full pathnameHI2(PTH$)R(PTH$,I,1)"/"2160:Ensure only volume name is included0\"Please supply only the volume name.";(7)Gf12:4:868:2060NpI_z13:1:958(4)"Prefix "PTH$:Set ProDOS prefix2300:then go modify the ProDOS file:Read volume name from disk in specified drive"S";A$ SL(A$)HSL1SL7ĺ:"Slot number 1-7 only.";(7);:12:5:2210\SL;",D";:958dA$qDR(A$)DR1DR2ĺ:"Driver number 1 or 2 only.";(7):12:8:2250DR:958(4)"Prefix,S"SL",D"DR"  Prefix is now set to the proper volumeN (4)"Bload ProDOS,tsys,a$310,l$3,b$1b": Read P8 2.0 versionX A$""c$ I13r& X(783I)( X127XX128. A$A$(X)8 IB (A$)22400: it's not version 2.0L ADRS3958: location of table within imageV 2600: go write the new tableD` (4)"Bload ProDOS,tsys,a$310,l$3,b$651"Nj A$""Yt I13hv X(783I){x X127XX128~ A$A$(X) I (A$)1.92500: it's version 1.9 "Only ProDOS versions 1.9 and 2.0 may":"be patched by this program."+ "Would you like to try again? ";A$M (A$,1)"Y"(A$,1)"y"2050W 5000 ADRS12918: location of table within 1.9& :' Write the new table out to the file( (4),"BSave ProDOS,tsys,a$300,l7,b"ADRS2 2050(4)"Prefix"PFX$2"Quit to (B)ASIC or (P)roDOS program"G"launcher? ";A$o(A$,1)"P"(A$,1)"p"ĺ(4)"Bye"(A$,1)"B"(A$,1)"b"ė:(7);:5020_:` # of days in each monthj 31,28,31,30,31,30,31,31,30,31,30t Names of days of week*~ SUN,MON,TUE,WED,THU,FRI,SATT Informational text and instructions "This utility allows you to patch an" "internal table used by the ProDOS" "ThunderClock driver. This table is" "used to calculate the current year"+ "for date-stamping files on ProDOS"V "disks, since the ThunderClock does" "not return this information to ProDOS." "The table only holds seven values, one" "for each day of the week. There must"! "be at least one year duplicated within"=! "the table to account for the inter-"g! "vening leap year. Therefore, the"! "table must be updated at least every"! "six years to keep it current. This"! "utility will ask you to enter the""( "current date and day of the week. It"G"2 "will use this information to calculate"t"< "the entries to place into the table.""F "Next, it will ask you to insert a disk""P "containing the ProDOS file to be""Z "modified, and ask you to specify the"##d "location of the disk. The ProDOS"N#n "file must be either version 1.9 or"x#x "version 2.0. The location may be"# "specified as either the volume name"# "of the disk, or as its slot and drive"# "location. The utility will then"&$ "proceed to write out the new table"R$ "entries to the file. When the file"}$ "has been updated, the utility will"$ "again ask you to insert a disk and"$ "specify its location. This can be"$ "continued for every disk that you")% "wish to update. When you have com-"U% "pleted all of your disks, press the"z% "ESC key to exit the utility."% ""PQRSTUVWXYZ[\]^2 ProDOS 8 ThunderClock Driver Patch UtilityP Written by Greg Branche Copyright (c) 1991, Apple Computer, Inc. All Rights Reserved: This program allows a user to modify the table of year values stored within the' ThunderClock driver, thereby allowingQ the driver to calculate the correct{  value based on month, day, and day-  of-week. The table consists of seven  entrys, with each entry corresponding  to the year in which January 1st falls,  on the day-of-the-week for that table9  entry.? :m  Instructions and background information  are contained within the program. They  are displayed to the user at the beginning  of the program. : d(21):: turn off 80-col card6 n cu() = cumulative # of days in yearB xCU(12)j fill array with # of days in year CU(1)0: January I212 X CU(I)CU(I1)X I : DN$() = Names for days of week DN$(7) fill array with names of days of week I17( DN$(I)/ I5 :Y  yt() is the year table valuesd YT(7)j ": , Save original prefix 6(4)"Prefix" @PFX$ J: TMOD7(X)(((X7)(X7))7.5) ^: h Display some instructions r |A$ A$""İ900:1000 A$3 (37)21İ900:< 380B :o  Finds position of / within date string X0:On exit, contains position of /, or 0 if none found *I13 4(DAY$,I,1)"/"XI:I3 >I H R: Pause between screenfuls of informationI24:4:" to continue, to exit";:A$_A$(27)ġ:5000yA$(13)ĺ(7):900: get the user's input and convert"Please enter today's date (mm/dd/yy)""-> ";DAY$800: find slash separatorX01080R"Invalid date entered. Please try again.";(7)\$1010. Convert month value to numeric variable8MO((DAY$,1,X1))BDAY$(DAY$,X1)LMO1MO121050:Range check the month value V800:Parse out the current day`X01050Gj Convert day string into numeric value_tDA((DAY$,1,X1))t~DAY$(DAY$,X1)DA1DA311050:Range check the day value Convert year string into numeric valueYR(DAY$)YR0YR991050:Only allow 0-995YR39YRYR1900:40-99 must be 1940-1999cYR40YRYR2000:0-39 must be 2000-2039i:"Please enter the day of the week""(e.g. Wed) -> ";DOW$(DOW$)31270:Must be at least 3 characters"Invalid day of week. Please try again.";(7):12308(DOW$)3DOW$(DOW$,3)i Shift any lower case letters to upper cases B$""~I13A$(DOW$,I,1)((A$)("a")(A$)("z")A$((A$)(("a")("A")))2B$B$A$<IFDOW$B$$P Now convert day-of-week string to numeric value.ZDOW09dI17TnDOW$DN$(I)DOWI:I7[xIkDOW01260q: Calculate the number of days so far this yearDYSDACU(MO) Must account for extra day in leap year(YR4)(YR4)MO2DYSDYS1:H Now calculate the index to use to fill in the tableaIDXDOWMOD7(DYS)1sIDX(IDX10)IDX7IDXIDX7: Now we can fill in the year tableI17XYR1900X100XX100 "YT(IDX)X: store the year into table,IDXIDX1+6IDX1IDX7W@(YR4)(YR4)1660: not a leap yearpJII1: update indexTI71670: if entire array done, exit^YT(IDX)X: duplicate entry for leap yearhIDXIDX1rIDX1IDX7|YRYR1I:$I17:Poke table into memory5767I,YT(I)<I` Now that the table is set up, we can modify the file(s)6:1"You may now insert the disk containing":"the ProDOS file to be modified, then":"enter the location of the disk. You""can enter the location either as the":"volume name of the disk, or by its":"slot and drive location (ESC to exit):""-> ";12:4:958 A$A$"/"2100: input volume name A$"S"A$"s"2200: slot/drive input %(A$)275000: ESC pressed, exitO*(7);:2060:None of the above, try againU2:u3Read volume name from user4A$;:"";PTH$>PTH$"/"PTH$: build full pathnameHI2(PTH$)R(PTH$,I,1)"/"2160:Ensure only volume name is included0\"Please supply only the volume name.";(7)Gf12:4:868:2060NpI_z13:1:958(4)"Prefix "PTH$:Set ProDOS prefix2300:then go modify the ProDOS file:Read volume name from disk in specified drive"S";A$ SL(A$)HSL1SL7ĺ:"Slot number 1-7 only.";(7);:12:5:2210\SL;",D";:958dA$qDR(A$)DR1DR2ĺ:"Driver number 1 or 2 only.";(7):12:8:2250DR:958(4)"Prefix,S"SL",D"DR"  Prefix is now set to the proper volumeN (4)"Bload ProDOS,tsys,a$310,l$3,b$1b": Read P8 2.0 versionX A$""c$ I13r& X(783I)( X127XX128. A$A$(X)8 IB (A$)22400: it's not version 2.0L ADRS3958: location of table within imageV 2600: go write the new tableD` (4)"Bload ProDOS,tsys,a$310,l$3,b$651"Nj A$""Yt I13hv X(783I){x X127XX128~ A$A$(X) I (A$)1.92500: it's version 1.9 "Only ProDOS versions 1.9 and 2.0 may":"be patched by this program."+ "Would you like to try again? ";A$M (A$,1)"Y"(A$,1)"y"2050W 5000 ADRS12918: location of table within 1.9& :' Write the new table out to the file( (4),"BSave ProDOS,tsys,a$300,l7,b"ADRS2 2050(4)"Prefix"PFX$2"Quit to (B)ASIC or (P)roDOS program"G"launcher? ";A$o(A$,1)"P"(A$,1)"p"ĺ(4)"Bye"(A$,1)"B"(A$,1)"b"ė:(7);:5020_:` # of days in each monthj 31,28,31,30,31,30,31,31,30,31,30t Names of days of week*~ SUN,MON,TUE,WED,THU,FRI,SATT Informational text and instructions "This utility allows you to patch an" "internal table used by the ProDOS" "ThunderClock driver. This table is" "used to calculate the current year"+ "for date-stamping files on ProDOS"V "disks, since the ThunderClock does" "not return this information to ProDOS." "The table only holds seven values, one" "for each day of the week. There must"! "be at least one year duplicated within"=! "the table to account for the inter-"g! "vening leap year. Therefore, the"! "table must be updated at least every"! "six years to keep it current. This"! "utility will ask you to enter the""( "current date and day of the week. It"G"2 "will use this information to calculate"t"< "the entries to place into the table.""F "Next, it will ask you to insert a disk""P "containing the ProDOS file to be""Z "modified, and ask you to specify the"##d "location of the disk. The ProDOS"N#n "file must be either version 1.9 or"x#x "version 2.0. The location may be"# "specified as either the volume name"# "of the disk, or as its slot and drive"# "location. The utility will then"&$ "proceed to write out the new table"R$ "entries to the file. When the file"}$ "has been updated, the utility will"$ "again ask you to insert a disk and"$ "specify its location. This can be"$ "continued for every disk that you")% "wish to update. When you have com-"U% "pleted all of your disks, press the"z% "ESC key to exit the utility."% ""`abcdefghijklmn2 ProDOS 8 ThunderClock Driver Patch UtilityP Written by Greg Branche Copyright (c) 1991, Apple Computer, Inc. All Rights Reserved:Modified for ProDOS 8 2.0.2, 2-Nov-92 DAL (line 2370) : This program allows a user to modify the< table of year values stored within theh ThunderClock driver, thereby allowing the driver to calculate the correct  value based on month, day, and day-  of-week. The table consists of seven  entrys, with each entry correspondingA  to the year in which January 1st fallsm  on the day-of-the-week for that tablez  entry. :  Instructions and background information  are contained within the program. They  are displayed to the user at the beginning#  of the program.) :M d(21):: turn off 80-col cardw n cu() = cumulative # of days in year xCU(12) fill array with # of days in year CU(1)0: January I212 X CU(I)CU(I1)X I : DN$() = Names for days of week& DN$(7)R fill array with names of days of week] I17i DN$(I)p Iv :  yt() is the year table values YT(7) ": , Save original prefix 6(4)"Prefix" @PFX$ J: TMOD7(X)(((X7)(X7))7.5) ^:3 h Display some instructions9 rA |A$W A$""İ900:1000_ A$t (37)21İ900:} 380 :  Finds position of / within date string X0:On exit, contains position of /, or 0 if none found *I134(DAY$,I,1)"/"XI:I3>I"H(R:V Pause between screenfuls of information24:4:" to continue, to exit";:A$A$(27)ġ:5000A$(13)ĺ(7):900: get the user's input and convert"Please enter today's date (mm/dd/yy)"/"-> ";DAY$O800: find slash separator^X01080"Invalid date entered. Please try again.";(7)$1010. Convert month value to numeric variable8MO((DAY$,1,X1))BDAY$(DAY$,X1)*LMO1MO121050:Range check the month valueNV800:Parse out the current day\`X01050j Convert day string into numeric valuetDA((DAY$,1,X1))~DAY$(DAY$,X1)DA1DA311050:Range check the day value Convert year string into numeric value!YR(DAY$)GYR0YR991050:Only allow 0-99vYR39YRYR1900:40-99 must be 1940-1999YR40YRYR2000:0-39 must be 2000-2039:"Please enter the day of the week""(e.g. Wed) -> ";DOW$!(DOW$)31270:Must be at least 3 characters["Invalid day of week. Please try again.";(7):1230y(DOW$)3DOW$(DOW$,3) Shift any lower case letters to upper case B$""I13A$(DOW$,I,1)((A$)("a")(A$)("z")A$((A$)(("a")("A")))2B$B$A$#<I/FDOW$B$eP Now convert day-of-week string to numeric valueoZDOW0zdI17nDOW$DN$(I)DOWI:I7xIDOW01260: Calculate the number of days so far this yearDYSDACU(MO)& Must account for extra day in leap yearI(YR4)(YR4)MO2DYSDYS1O: Now calculate the index to use to fill in the tableIDXDOWMOD7(DYS)1IDX(IDX10)IDX7IDXIDX7: Now we can fill in the year tableI17XYR1900#X100XX100M"YT(IDX)X: store the year into table[,IDXIDX1l6IDX1IDX7@(YR4)(YR4)1660: not a leap yearJII1: update indexTI71670: if entire array done, exit ^YT(IDX)X: duplicate entry for leap yearhIDXIDX1)rIDX1IDX75|YRYR1<IB:eI17:Poke table into memoryv767I,YT(I)}I Now that the table is set up, we can modify the file(s)6:1I"You may now insert the disk containing":"the ProDOS file to be modified, then":"enter the location of the disk. You""can enter the location either as the":"volume name of the disk, or by its":"slot and drive location (ESC to exit):""-> ";12:4:958 A$A$"/"2100: input volume name: A$"S"A$"s"2200: slot/drive inputa%(A$)275000: ESC pressed, exit*(7);:2060:None of the above, try again2:3Read volume name from user4A$;:"";PTH$>PTH$"/"PTH$: build full pathnameHI2(PTH$)AR(PTH$,I,1)"/"2160:Ensure only volume name is includedq\"Please supply only the volume name.";(7)f12:4:868:2060pIz13:1:958(4)"Prefix "PTH$:Set ProDOS prefix2300:then go modify the ProDOS file:-Read volume name from disk in specified drive7"S";?A$LSL(A$)SL1SL7ĺ:"Slot number 1-7 only.";(7);:12:5:2210SL;",D";:958A$DR(A$)DR1DR2ĺ:"Driver number 1 or 2 only.";(7):12:8:2250DR:958 (4)"Prefix,S"SL",D"DR"M Prefix is now set to the proper volume (4)"Bload ProDOS,tsys,a$310,l$5,b$1b": Read P8 2.0 version  A$""$ I15& X(783I)( X127XX128. A$A$(X)8 I(B A$"2.0 "A$"2.0.1"A$"2.0.2"2400: it's not 2.0, 2.0.1, 2.0.2WL ADRS3958: location of table within imagezV 2600: go write the new table` (4)"Bload ProDOS,tsys,a$310,l$3,b$651"j A$""t I13v X(783I)x X127XX128~ A$A$(X) I (A$)1.92500: it's version 1.9f "Only ProDOS versions 1.9 and 2.0 may":"be patched by this program." "Would you like to try again? ";A$ (A$,1)"Y"(A$,1)"y"2050 5000 ADRS12918: location of table within 1.9& :' Write the new table out to the fileD( (4),"BSave ProDOS,tsys,a$300,l7,b"ADRSN2 2050d(4)"Prefix"PFX$j"Quit to (B)ASIC or (P)roDOS program""launcher? ";A$(A$,1)"P"(A$,1)"p"ĺ(4)"Bye"(A$,1)"B"(A$,1)"b"ė:(7);:5020 _:(` # of days in each monthOj 31,28,31,30,31,30,31,31,30,31,30kt Names of days of week~ SUN,MON,TUE,WED,THU,FRI,SAT Informational text and instructions "This utility allows you to patch an" "internal table used by the ProDOS"9 "ThunderClock driver. This table is"d "used to calculate the current year" "for date-stamping files on ProDOS" "disks, since the ThunderClock does" "not return this information to ProDOS."! "The table only holds seven values, one"E! "for each day of the week. There must"t! "be at least one year duplicated within"! "the table to account for the inter-"! "vening leap year. Therefore, the"! "table must be updated at least every"#" "six years to keep it current. This"M" "utility will ask you to enter the"{"( "current date and day of the week. It""2 "will use this information to calculate""< "the entries to place into the table."#F "Next, it will ask you to insert a disk"/#P "containing the ProDOS file to be"\#Z "modified, and ask you to specify the"#d "location of the disk. The ProDOS"#n "file must be either version 1.9 or"#x "version 2.0. The location may be"$ "specified as either the volume name"5$ "of the disk, or as its slot and drive"^$ "location. The utility will then"$ "proceed to write out the new table"$ "entries to the file. When the file"$ "has been updated, the utility will" % "again ask you to insert a disk and"6% "specify its location. This can be"`% "continued for every disk that you"% "wish to update. When you have com-"% "pleted all of your disks, press the"% "ESC key to exit the utility."% ""