8L xC)pJJJJ IH(ȱH:=IH[H`@H^H 2 9 @   I/H`JLNGȄBȄF aK ' faaFF  RJm# KKJ qJ )J ۈJJm  JFȱJGJKaȄM ' 5aaNNJFLGJC! $ " " &#M8nf $ ) L! " " &J, )7(P0  ( @p !"0 *%"0"" &/) )"" &ЭL!)0I0 (Щ ߍ UNFORKIT' &PRODOS:23 ! 2,BASIC.SYSTEM&(Ҩ! Ҩ(UNFORKIT; %NOTESE#STARTUPT`aa8aa XL LG &PRODOS`DaElH$?EGvѶK+`L XX LU ŠϠĠӥS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8R)f 8'  )ɀ)4,- U JNT)  !N)Gi/ "4 "" " " iL X%!L!ΠΠҠ`  !"#$@~@}J@` ߩ%S @ ~`E hhhߺ0 h ߐ# ߐ ߐ ߐ 0 HϭߍLпllllhh8` QSTV،h@ihAiȱ@JJJJq@)@evȱ@Hȱ@Ah@@cee J) LxL LxJiB LxJ) GxNhHHHHL(  ްƠx@BEOD  ް(`( C)CJJJlBJ,~آ <B*IBGF08Lé'+8H <(h`@ڍL3<>=?<>CAB@?A` 1 L  <>` ڢF]PL8i m L   6< L  BLRAM' hLDLHB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`bLJCAB@=?,<ʆ>*=?BC8 é&'112`݁(݉(`}(`e`H)hJJ?(0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <((ȱ( Y'( ' f'L&`L' 'L' Y' L& Y'L'8ei` ,$`ee` `( '( (` *( ' (`hh8`8`(l&j"L  <8# ȱ)ɀ  )t& ` (Xp< @t& )mt&t&.t&w& Mt&i  ``rȱȱȱȱ0]cȱeem(ȱ(ȱ((ȱԠŠҬîʎ1DžϠl&8f ZHH)hh8JhJJJJJ j&Hk&8H) 12 (j21 h!hH h %)Ђ12H)M0 h10200I20h2 |&`L($_뿩 8!@8` MNЩUMܩ  L 5   8 0 8 `0 / x X$$%&%0`ŠӠЭ[ V7 c L '0%O '8O JmO * ʈ0  0ŠϠĠ͢Š͠͠ϠŠŠϠĠخ͠ ͍B B(8`;YYZLYLYLY"7"Y"/"ll"*# HQ$WON!-PB}OBiB ,m# m# J Qڨ)̰n]e мȱ ; ̀𩠙< iO P F V >Z SY ɘL` X _ 'P0ōҍJJJJ ɺi) ɺiLD )?      `l@Hȱ@IױHXATȱH ɯȩ׍̞5H)/@a)_ .0 :A[8@`,뎞׮Б` L` @>_)I38Ypqם`K8`@Nȱ@O@ IiNȽבN)/ȩ/N`@[ WHJjjjhA <'KI؍_JJJJح}) ) )в|J8` GpF $ ᭔ع+ؠ HH  Jh8` 䮑ٽ ٬ؠ@` ( X )8`)i пJGBJ a FإG`BH aFإG`H hHB؅F  ؅GxDE؍00C ް(`(8` L7J  G"L H  G 9ؙ` @ P8`B8` X؈ ;JHIH ILFFHGI ѭJjHIH;7IؙJJ g3HIHILJKJK`FHIG ( Ȣ؝؈JL)eKM`)` J Jͫ $0 ΚJFJL8`0C ް(`(8`ؑ@`M8`8@ؐʈI묒)8 L LةC8`؍)@ i)8zJ _ ؅F L) +&J(b ;FإGؐ/8`*J۩ ٰ`JJJJi LdH8`ͦ ٍ0  ` `ٍyٍiB0H0FG h0`שB5xED "8`  `ٽJJJJ`H͜hn)NjNjNjN. dH͜ ;٭ *Nۙ۰ڙک `Z8` d# B` . . .8۰0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`) 8ʈ` )0ٝ)i `8`R "ꍜ NمFمG < Μ0 FGL鮑0 ٭٭ٽ8`H8`  ,0 d01 E8`100 v$0ʩGF 밽 谸 谳`12)1`0`Ȏi 0U`)8`θ` )W G JA)H ܝʈh٭ )ȱHθ`Κ8QeHI SBF0Y ٙWٙUFZSʈ {猺`8m0`,0H hi L荸Ƚθhٍ0GF8yאFG  `* ΙQ8`5IF܅G 됾`\܍]^ {8D`F` tlH)HFȍZHG[ $%܍&܍!ܢ8* J8` L ܝJ)I 'ܝF`R8i^F\G]`R5IH3H (  밯ZF[G 밠S%܈P" X)Im'܅F(܅G)܍^*܍Q 4 䭐 $H %HFFHGHG 됨`R8`)` QH_` :R(5IHH__Ѝ_@`8 e ͙_ʈ@}ȱ@oȱ@y{|rZ[_)7_I0ܢܽ \'Q*ܩu 7pqFG (ST L܅I^ mQIH` } }Y0\F]G Q_HZF[G` G8`F@ 0 e LK8`F GI8`FHGH hGhF܌ բFܽܕF芝ܝ 밶FFGG H܅I mIIHHyHȘI Lܝ` @o@ w@Ю׍_)m0JHi 뎑`C8` @ 3N@) d莽 ⭺i`0 v0GF #0 W,0 ).H hȑNWȮّNW8`ٍّNθ0NN` H h)N$% LL L L H  :pJ덯 )@፲NJOK HiKKήή IJί JФ̭JjHFIH HIGxKE ް((H hH h8`8@ȭ@LH쬒8NNO 8 ؍JL`RήʱLN.MOMEKP/MEKήLML-M O,p莭eNNO(`JNKOL H/  :P L8 gؑJ`L@ȱ@LL`BLLޢޢޢޢޢޢޢޢޢޢޢޢޢޢޢCOPR. APPLE,1983LM Mh@8nЍLޭ 0J @,,L:,L@   !"#$Ԡ͠ˠĠԠhhhhILhH),dx8 (8`@Ae f!55s+aIJK,-NOPQRSuHUSTON!' J5 s9X(K sXXK تKo`V8`no` < on sI9XX`)HJJJh`OeNeO࿰ s9XАO`@ȭ@` ON YNJKO`HHHHх܅F݅G ` ͬ 밽܅F݅G ` * % L`FGL 4܍ݍ8`FHGH 4ܙhGhF`@Bɼ>K@yٙ٩`O dIpFqG :%&N  # 4܅F܅G `J HH hh` 0 @ L\L# [Tܝ ݝ0ȩFG  0` רם__)׍_pFqG 밍 hPם8`;Zx3QTTSRWVUHEVhEhH)IWHPHHHAHHHLaVEWLӿ ְ& .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Ӧ>` Ր+>YL 8!9 詍` "  à4"/pŠϠŠà͠ӠàԠŬ%'()*+,-./0123456789JJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IzLLG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)< &@DEF   %LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ ƠϠ ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'ĝL  LL L)'L L L'L  (L(L $ʩ $$ $L `ީ % XʩXύX X A %  % ɍNH hɛɘɉɈ $ Lc :Lcې)ɮ۰ɺ'Ɲ Lc  : X i % $ɛ$8V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌1֍ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` *L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| H06172839h` v97L75v^a ?/( va?LLLɍ$?`?a ɍɥAH93827160hH46576879h`,C bL ɍ b w,S0 @ lLޭB 鸍긍$I2 U)VJ зT)`l8`a HbIJhjǾȾɾ p٭b=aSL/id /`H) hJJJJ ɺi` M  ` ת.8 `O`S  AI-L9 ᪰B C VW>m>` _m8injkiljo풼i>?Ek?>Q>> L> \/ e>>?́?ޱ>ȥpnG @p;G=po:Q>>>̀ `` \> ̀ `e>>?́?>?Emn(>e>ȱ>e?>Q>ؠ> ie>>?`|;}=:<~:<=;`||m};>:8o>oȑ>ppȑ>> :op`G DKJپھ pHJh` D!hgt}~p `~t}p8n~ni}tpi~~tso8pinii>j?k̈́>~|p|Ii||̈́ l - `>i>L8933LΞAAJL ةޘг uv $ 8LƞaЌ>?@`>?@`B8` K  춼LK ҟ ҟ ( KK`HJJJJ8`HK)` #hhL𚾤3 @LtJ)s@J b  l`a?sa?,E30ɍФ3 E3HD F3 Ʉ%h3 bM E  lLthɍLL3`3,A0s0% Ipn DpnI:L ؅303پھ p H־Ǿh۰8L־Jjjjɾ)Ⱦ8 ѱ OLӜ ĤLLX>(F`־ؾپھ׾` bɄ KDEF vLl v lL bKɍKL?` w  vLl@$݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ]c־Jjjj `O>0O l PODEF޾ p ޾ p($ذ v (0 ( L?ԦʚLeةީa s  lL b,FLg,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ B94 l% bʽ  ՚,S` H Eо VV :$ZA@L8 `u-U -W b WW)JJ :T$K \0IDK : :5K 0.)K :쭼󬮼XK`L9L^ :K mY ܩ 8jK` J,, ( 5̪ ` J, ̪ ` J, `)a)_ͩ`0:8 `)H"H ת תh}I תhm8`0 :AG8 `) ת `..`SI-SRRX)sƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND6D(!쫂8 ( 8о(־Ǿ,G 8`_`W)H־Jjjjh p̭ fLᶢǾ ת..8 ۭ (8mȾȾmɾɾʾiʾ` Lpl8l:/,s`\"׾پӾؾھ pD`־ǾY׾ؾOW)ݩȾɾʾ pD`8`W)CB) 5W) =)W)@! pZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ f p vۥs׾tؾE` `޾Lp h־Ҿ,G0^W)TP) ecfdپھ׾ؾӾ p$c d pccddީ 8`ȾɾʾNfne}ȾȾI>Ie f`8` P־ǾҾ,G0C f=W)_`:_`蹀:`V)8`MN; b;`;C b N8` G)̀#:蹀:`V)R ޾,N0MHhHh p' L,N HCNh`M`M N N `9V) ` V) ޾ p`  (8` 8`8`(W)`_V)Ij!؍Í`_ FjЭW)`_ Ͼ pH Lh8`jGMоM  G)p pY)ικ`lP *,N!ǾȾɾʾ pǾ~H h8`8`,C  8` ȾɾM$ mHݓǾ phϾ pH Lh8`Ͼо־ǾҾ_` 볩Ӿ pW) "LEC`C )莼 з l6 7= /& /8Hh /` 6Y׾ؾ+پھ p|پɾʾ`HV)jh츾$-#Ͼ p о־޾Ǿ` 8` 8`ɾ)ɾ̸ ɾɾ0miȾ ;τ<:: <`:8` e eվ'OV)Jj зf Ja l + ѱ:ji Ĥ Ƀ B ,  簰 ` l])Y 񩢍`Ⱦɾ0Ǿ p1׾ؾ  p p ٷ H rh(`׾ؾ` : ߭׾t8퍼mؾŰ펼t폼 L28` ˌھپLp k V)@W0!XY X6Y7` YX`X:Y) F з8` # `l׾ XYW0V)4W׾ؾ_`)0%I0)3]8X^YȰ8` 8` p Ⱦɾʾ8`پھW)@%ZȾ pSԩ p`S pLjÍ FN I 9 : ׾hؾ  p hgͺ칾`LٷV)jC mMjà Lp `VJJ°L9Lp з)< L з L緭W)8VJưϥ3 켼 `F`4W)ɐ/XYjV  kimljn` pg׾mȾXhؾmɾYtѮȾɾ aYX`8g@I5gN Oz @n[Dz @nd0,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt N SECOND FORKFK1%1505NCB(CB)(VE17)(VE18)256:CBCB1BUF8192512:705: POINT BACK AT $1E00 (RES.HEADER)  FIGURE OUT WHAT THE HELL BLOCK THE DIRECTORY IS IN/FBBK:XCFC:BUF163844BK(VE37)(VE38)25691100(LE(0)0)BUFBUF256FKEVE,(VE)((VE)16)16ST(FK)16~Y17:VE16Y,(BUFY):: MOVE FORK INFO INTO DIRVE16,TY:VE28,0:VE29,0:VE31,0:VE32,0:TY6ĹVE32,32RFCB(CB)IB(FK0):CBCB1800:RFFK0750900 STORAGE TYPES,X INTERPRET FORKS?]CB0:RF0:BB0MbFK0:550[lFK1:550qqCB(CB)RH:CBCB1vLE(0)LE(1)700RF$(F$,13)".R"RF1D$"CREATE "PFX$;RF$",T"TYD$"BLOAD "PFX$",T15,A$2000": RELOAD DIRECTORY FK.HEADER INTO $1E00 !600= & INTERPRET RESOURCE HEADERX 0RBBUF:FK1RBRB256 :LE(FK)(RB5)(RB6)256(RB7)65536 DBU(FK)(RB3)(RB4)256: BLOCKS USED BY FORK IIB(FK)(RB1)(RB2)256: INDEX BLOCK FOR FORKNST(FK)(RB):500. "YOU SHOULD NEVER SEE THIS LINE.":4 F AU1:IN1FLO 170e  UNFORK THE FILEk  "WORKING ON "F$ RH(BUF17)(BUF18)256: RESOURCE HEADER BLOCK VEBUF: VOLUME ENTRY LOCATION BKRH:BUF8192512:1100: LOAD RES(PFX$,1)"/"PFX$PFX$"/"& 100> IN(IN$):IN0140n FCFA(IN)1:BUF8192FC39((FC13)1)51 ST((BUF)16):FR(BUF)ST16 F$"":Z1FR:F$F$((BUFZ)): AUST13Ă:100 ST13PP$PFX$:PFX$PFX$F$"/":100 ST5T ROOT DIRECTORY  155. PFX$PP$:1004 \ "A-ALL P-PREFIX Q-QUIT #-SELECT:";h "";IN$ IN$"Q"IN$"q"ĺ::: IN$"P"IN$"p"155 IN$"A"IN$"a"200 160 OP$PFX$::"NEW PREFIX: ";PFX$:PFX$""PFX$OP$:100 :<=>?@ABCPFX$""ĺD$"prefix /":D$"prefix":PFX$:105U nD$"BLOAD "PFX$",T15,A$2000":120u s216,0:(222)6PFX$OP$: t"SOME STUPID RANDOM ERROR HAPPENED.": x216,0:1500 }FL130 ~ZZ1(PFX$):(PFX$,ZZ,1)"/"Ă ZXZX1::ZX2129: NO :D$(4)!FA(60).BUF8192DD$"PREFIX":PFX$ZMLI768:PLMLI16TY6:DZ0: SET DZ=1 FOR READ/WRITE INFO::"UNFORKIT V0.1 7/4/94 BY IVAN DRUCKER"34,2 1000: INITIALIZEd GET CATALOGf115/ iPFX$"/"LLwLLL) `8` ԠŬLLʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~T#>XC13DBBK:850: FOUND ITLCXCXC13:BK(BUF)(BUF1)256:825oR WRITE THE MODIFIED DIRECTORYWBUF8192(((VE8192)512)512)\1200: WRITEaFKRFĺD$"RENAME "PFX$;F$","PFX$;(F$,13)".D":870bFKĺD$"RENAME "PFX$;F$","PFX$;(F$,13)".R"CfD$"BLOAD "PFX$",T15,A$2000": RELOAD DIRECTORYIkw CLEAR UNWANTED BLOCKS FROM BLOCK BITMAPZX0CB1BY(CB(ZX)8):BTCB(ZX)BY8BY511BBBB1:BYBY512:925BKBB6:BUF12288:1100: READ BITMAP BLOCK+B a header which contains information about the file. Usually one of the forks is empty; typically programs, fonts and sounds have a resource fork, and documents have a data fork. The Macintosh stores files this way, as does (I think) the Apple IIgs GUI. out moving the actual file data. This makes it much faster, but, as mentioned, more risky. What is a forked file? If you don't know, you probably don't have to worry. A forked file is a file which contains two parts, a resource fork and a data fork, andut you can't say you weren't warned. UnForkIt is a BASIC, ProDOS 8 program which converts a forked file to one or two standard (unforked) files. Unlike a similar program, it does not copy the forks to new files; instead it changes directory pointers withDFGHIJKLMNOPQRSk. I HAVE NOT TESTED IT EXTENSIVELY. It seems to work fine for me. If you are prudent you will only use it on floppy disks whose entire contents are disposable. I take my chances, myself; I think I've gotten the bugs out. Whew, I'm glad that's over, bUnForkIt v0.1 7/4/94 by Ivan Drucker WARNING: UnForkIt is a dangerous utility. It works by altering directory entries and the free space bitmap under ProDOS. If something goes wrong, or if there is an unfound bug, it could completely screw up a hard disIR ";:1640^"FRK ";$hF$mFL20(FL20)ĺ:"PRESS A KEY TO CONTINUE...":16384,128:16368,0:22:35);:21:1r1570& FIRST RELEASE 7/4/94& V0.1 IVAN DRUCKER& IMPROVE THIS PROGRAM& AND ADD YOUR NAME 1570ST13ST51580R"BUFBUF39:(FC13)FC13BUFBUF5: NEXT BLOCKX'^(}, FORKED FILE OR DIRECTORY6F$""@Z1FR:F$F$((BUFZ)):: GET FILENAMEEF$"DESKTOP"1570FFLFL1:FA(FL)FCJFL" ";:5TST13ĺ"D TOTAL ENTRIES IN DIRECTORY0BUF8196:DB0= FC1TF`ST((BUF)16): STORAGE TYPEFR(BUF)ST16: # OF CHARS IN FILENAMERF1560Z1FR:XF$XF$((BUFZ))::RF$XF$FCFC1:VE8192FC39((FC13)1)51:XF$"":XF$"": IT ~ WRITE A BLOCKAML3,129: SET WRITE COMMANDZ1115: REST IS SAMEfFL13016384,128:KB(16384):16368,0:KB12827ĉ:: PARSE DIRECTORYFL0:BUF8192DB33TF(BUF4DB)(BUF5DB)2561:3,BUF256: BLOCK ADDRESSSjPL5,(BK256):PL4,BK(PL5)256: SET BLOCK #bnDZ01145o(MLI3)128ĺ"READ";:1137p"WRITE";q" BLOCK "BK" ";r(MLI3)128ĺ"INTO";:1140s"FROM";t" ADDRESS ";BUFyMLI: READ OR WRITECALL PRODOS COMMANDWMLI5,(PL256):MLI4,PL(ML5)256: ADDRESS OF PARM LISTvPL,3: # OF PARMS IN LISTPL2,0: LOW BYTE OF DATA BUFFER$L READ A BLOCKVML3,128: SET READ COMMAND[PL1,(48944): PRODOS UNIT #`PLUFBY,(BUFBY)(2(7BT)): FLIP THE BITJ1200: WRITE BITMAP BLOCKPZAUĂq"FILE";:AUĺ"S";" CONVERTED.":"PRESS ESC TO QUIT OR ANY KEY TO RESTART"1300:100 INITIALIZEMLI,32:MLI1,0:MLI2,191:MLI6,96: This is all well and good, but forked files choke ProDOS 8, which simply returns an I/O error when you try to access them (or delete them). You get forked files when an environment which uses them copies something into ProDOS. I guess this can happen over file servers and on the IIgs in different ways, but the way it happens to me is when I use the extension ProDOS File System on my Macintosh, which allows you to mount ProDOS disks on the Mac desktop. Whenever you drag over any Mac-created file, even if 8K (trees), more than one index block is needed, so a master index block is created which keeps track of where all the index blocks are in the same way that index blocks keeps track of where data blocks are. The directory entry points at the master index what order to read the blocks in an additional block, called an index block, is created which keeps a list of which blocks to use and in what order. There are 256 entries in the index block, and the directory entry points at it. For files larger than 12 files. A block is 512 bytes. Seedlings, saplings and trees are standard file forms in ProDOS. A seedling occupies exactly one block, so the directory entry points at that one block. A Sapling may occupy up to 256 blocks, so in order for ProDOS to knowow, five kinds of files: Seedlings (512 bytes or less), saplings (513 bytes to 128K bytes), and trees (128K+1 bytes to 16M bytes). In addition, there are subdirectories, which hold information about the files on the disk, and there are our friends, forkedning for anything that isn't How it works, for detailheads: If you find any of the following terminology to be wrong, which some probably is, feel free to go right ahead and fix it. I'll try to be brief about this. In ProDOS 8, there are, as far as I kn. You increase the version number accordingly 2. You leave my name and those of any other modifiers there 3. You leave these docs basically intact 4. You document your changes in the docs. 5. Your changes be (reasonably) reliable, and you provide ample warut it. If it's made you a whole new person, you can tell me about that. Modware: This program is Modware. Distribute it to your heart's content, I hold rights to nothing. Better still, improve it any way you see fit and reupload it. I only ask that: 1 take place, in line 6 set DZ=1; otherwise it doesn't tell you anything. That's about all you need to know about UnForkIt. I rather like it, myself. Questions, comments, whatever to drucker@lclark.edu. If it destroys your life's work, don't tell me abo that was the data fork and a .R appended to the name of the part that was the resource fork. Files that have only a resource fork still get the .R, and files that have only a data fork are left untouched. If you want to see each read and write operation. Then it goes to work, and you're done. You may also choose (A)ll and it will (theoretically) unfork all the forked files in that directory. P will allow you to type in a new prefix. Files that have both forks have a .D appended to the name of the part enter a number to select. If the number is a directory, it changes to that directory. If the directory you change to has no directories or forked files, you remain in the first directory. Otherwise, you can enter the number of the forked file to unfork reads the current directory and looks for either forked files or directories. If it finds neither, it goes out to the root directory. If it still can't find any, it asks for a path. You then get a menu of the forked files and directories, which you cannd up using Apple File Exchange to bring the files over, thereby defeating the purpose of ProDOS File System extension. So I wrote this instead, which took long enough to run Apple File Exchange several thousand times. Using it: When you run UnForkIt, itit only has a data fork, it saves the file as forked. (Note: I have sometimes been able to get around this if the file's creator is "pdos" and the type is "TEXT".) This is a damned nuisance, since a forked file is useless under ProDOS 8, and I usually wiblock. I just typed this all out, and now realize it's not really necessary to understand how UnForkIt works. But you love it, right? So then there are forked files. See the above description for what these are. The upshot is is that they are like two files in one. The Mac or whatever creates a resource header block to keep track of both parts. This block is split into two halves; each half has the information which would normally be found in a directory about each fork of the file. The first half o type -UNFORKIT"d "Warning":E"UnForkIt may self-destruct at random."s("Lock or copy this disk and make copies"2"of all disks you are about to use.":<"The NOTES file is a text file. Open it"F"in a word processor.": P"To run UnForkIt, above only with the empty data block of the new file instead of the empty data block of the empty fork j. 4e above And that's about all. It seems fairly reliable, though I'd still try it on a floppy before using it on your hard drive. directory so it has the new file entry c. 4a above for the data fork d. 4b above for the data fork e. change attention from the original subdirectory entry to the new one f. 4a above for the resource fork g. 4b above for the resource fork h. 4c above i. 4dtmap d. mark the resource header block and the empty fork data block free (an empty fork is a seedling, and so still takes up one block) e. write the modified bitmap 5. if both forks are full: a. create a new empty file for the resource fork b. reload the block and load it 3. examine both forks 4. if one of the forks is empty: a. copy all the pointers found in the resource header block pertaining to the full fork into the subdirectory entry itself b. write the modified subdirectory c. load the free space bints at the resource header block. Unfortunately, ProDOS 8 doesn't know what the hell to make of a resource header block, so it conks out. UnForkIt fixes this by doing the following: 1. load the relevant subdirectory 2. from it, find the resource header f the block points at one of the three types discussed above for the file in the data fork, depending on whether it is a seedling, sapling, or tree. The second half of the resource header block does the same for the resource fork. The directory entry poiz#