O p O  @`! #@%`')+-/1 3@o79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{}/O` @ ` @ ` @ ` / ɠ @ ` ׀ ٠   @`O  @`! #@%`')+-/1 3@o79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{}/O` @ ` @ ` @ ` / ɠ @ ` ׀ ٠   @`&HLS_READPRG BDHLS5_MODTXT BDz HLS5_MODS BDHLS5_MODPRG BD HLS4_BUFS BD 8HLS4_BUFPRG BDHLS4 PRG BDHEXFIND PRG BD%FILECMP TTP BDDA_02H TOS BD'COPYLOK2TXT BD(COPYLOCKTXT BD.BUFFER PRG BD5BROWSE PRG BD<ANALYZERTOS BDTEMPLMONPRG BD8TEMPLMONDOC BDULT4 PRG BDTEMPLMONTXT BDSUPERMONPRG BD|SCRGRAB PRG BDpSCRGRAB DOC BDSCRGRAB BAS BD SAVEFILES BDROMSAVE PRG BDREADFILES BDNUTRBOOTPRG BDNUTER S BDMONST2 PRG BD[MONST2 DOC BDiLOADER S BDJOSHUA TOS BD2  b`aJaBgNABgHz?<NAXaNuJjPHzNu0:bA:20JAg?<Bg?<O?BgB/:D?<NNOTy` hls4.dat,( HLS5_MOD The following will describe how to 'crack' an HLS protected program without the need for the HLS5.PRG and HLS5.DAT files in the end. The reason you might want to go thru this extra hassle is so you can look at the original program file in an unencrypted form. This could allow you to change some things to allow it to run in a folder, hard drive, etc. You will still need to run the HLS4_BUF.PRG on the ORIGINAL disk in order to get the required sector data. Please note that the data file will be saved to drive D, but can be changed if you wish. The first thing that you should do is coldstart your computer and then run TEMPLEMON.PRG. Next you should run MONST.PRG. At the prompt, load the HLS_MOD.PRG for the subject program. Search [G] for the NOP instruction. [G]/[I]/NOP Execute until [U] the NOP instruction. [U] address Get the return address from the Supervisor Stack $8(A7'). Search [G] for the instruction [I] ADDA.L (A1)+,A0 from the above return address. [M] address , [G]/[I]/ADDA.L (A1)+ Execute until [U] the address where ADDA.L (A1)+,A0 is found. At the address { A1+4 }, search for 00. This signals the end of the relocation table and our subject program. Write down this address +2. At { A0-$100 }, find the Text Size, Data Size and BSS size. [M] address /[X]. You should see something like this: 0002 fbf4 001f 8000 0002 fcf4 0001 a0da |- | (Text Size)-0001 a0da 0004 9dce 0 10f2 |- | (Data Size)-0 10f2 0004 aec0 0 3788 |- | (BSS Size)-0 3788 Write down all three of the above numbers. In some cases there might not be any numbers, so if they are all zero don't worry. Now, find the beginning of the file { A0-$1c }. [M] address . Starting at this address, modify the bytes as follows: 601a Text Size Data Size BSS Size Next, hit alt help to jump into Templemon. Save the file by typing the following command S {path}, Beginning Address (A0-$1c) Ending Address (found above). Example: s a:\loader.prg, 2fd26 350a6 Program by I.C Docs rewritten by Big Bird * * Generic FLOPRD Trap handler to get around belittling * HLS protection. For sector scheme={1..9,f5..f7}. But * flexible enough for previous and future revisions. * See comments for necessary parameter changes. * * Put in the hacker domain by * I.C * Changed a tad by Big Bird (text formatting,etc.) * move.l a7,a5 lea MyStack(pc),a7 move.l 4(a5),a5 move.l $c(a5),d0 add.l $14(a5),d0 add.l $1c(a5),d0 add.l #$100,d0 move.l d0,-(a7) m&ove.l a5,-(a7) move.w d0,-(a7) move.w #$4a,-(a7) trap #$1 lea 12(a7),a7 pea string1(pc) move.w #$9,-(a7) trap #$1 ; advertise addq.l #$6,a7 bsr.s create ; create hls buffer pea install(pc) ; install routine move.w #$26,-(a7) ; in super mode trap #$0e addq.l #$6,a7 pea null(pc) pea null(pc) pea RunFn(pc) clr.w -(a7) move.w #$4b,-(a7) trap #$01 ; load & go lea 16(a7),a7 pea restore(pc) move.w #38,-(a7) trap #$0e ; restore if prg exits (wish!) addq.l #$06,a7 exit: clr.w -(a7) trap #$1  create: clr.w -(a7) pea name1(pc) move.w #$3d,-(a7) trap #$1 ; fopen addq.l #$8,a7 bsr.s chek move.w d0,d1 ; d1=fhandle pea hlsbuf(pc) move.l #$1800,-(a7) ; 12 sectors * 512 bytes move.w d1,-(a7) move.w #$3f,-(a7) trap #$1 ; fread lea $c(a7),a7 bsr.s chek move.w d1,-(a7) move.w #$3e,-(a7) trap #$1 ; fclose addq.l #$4,a7 bsr.s chek rts  chek: tst.l d0 bpl.s out addq.l #$8,a7 pea exit(pc) out: rts install: move.l $b8.w,trape ; trap #$e address move.l #trp_e,$b8.w ; new trap #$e move.l $24.w,trace ; save trace vector move.l $84.w,trap_1 ; get trap 1 vector move.l #my_trp1,$84.w ; new trap #$1 rts reg_1: move.l trap_1,a0 jmp (a0) my_trp1: move.w sup_cnt,d0 ; continue to monitor? beq.s reg_1 lea $6(a7),a0 btst #5,(a7) bne.s trp_1 move.l usp,a0 trp_1: cmp.w #$20,(a0) bne.s reg_1 subq.w #1,sup_cnt bne.s reg_1 move.l trace,$24.w ; restore trace vector nop ; set bkpt here/[U] ret addr.+ bra.s reg_1 restore: move.l trape(pc),$b8.w ; restore original trap #$e rts  reg_e: move.l trape(pc),a0 jmp (a0) trp_e: move.l a7,a0 ; a0 always points to parameter list addq.l #6,a0 ; skip SR and return addr btst.b #5,(a7) ; was it in USER mode? bne.s go_ahd ; no use sup. stack move.l usp,a0 ; yes, parameter list is in user stack  go_ahd: cmpi.w #$8,(a0) ; floprd? bne.s reg_e cmpi.w #$4f,$e(a0) ; track 4f? bne.s reg_e move.w $c(a0),d0 ; start sector move.w $12(a0),d1 ; # sectors move.l $2(a0),a1 ; dest. buffer * Another flex point. * Actual translation for sector numbering scheme. (#1 - #12) moveq #0,d2 cmp.w #$f6,d0 bne.s j0 lea null(pc),a2 moveq #1,d2 sub.w (a2),d2 move.w d2,(a2) j0: cmp.w #10,d0 blt.s j1 sub.w #$eb,d0 ; xlate ($f5-$f7) => ($a-$c) j1: subq.w #1,d0 lsl.w #1,d0 ; times 2 lsl.w #8,d0 ; you know  lea hlsbuf(pc),a0 ; source buffer adda.w d0,a0 ; = offset in buffer subq.w #$1,d1 * assumes aligned boundary loopa: moveq #$7f,d0 ; move data loopb: move.l (a0)+,(a1)+ ; at dbf d0,loopb ; 512 bytes/sector dbf d1,loopa ; for each sector add.w d2,-2(a1) moveq #$0,d0 ; status rte string1: dc.b 27,'f',27,'E',27,'b',1,10,10 dc.b 10,10,10,10,10,10,10,10,10,10,13 dc.b ' I.Cs Workshop Presents.',0 * Yet another. * Filenames are generic to allow a person to just use the prgs, * and later use a sector editor to change names. Or easier just * change here in the source code! RunFn: dc.b "HLS.BRK",0 name1: dc.b "HLS.DAT",0 trace: dsbss.l 1 trap_1: dsbss.l 1 trape: dsbss.l 1 null: dsbss.w 1 hlsbuf: dsbss.b $1800 sup_cnt: dc.w 4 dsbss.l 128  MyStack: dsbss.l 1} z`*OO*m - ЭЭ// ??<JNAO HzV?< NA\a4Hzv?<&NN\HzHzHziBg?<KNAOHz?<&NN\BgNABgHzO?<=NAPa(2HzX/<??<?NAO a??<>NAXaNuJjPHzNu#! #$#!Nu yN09gAfNh P fSyf!$Nq`!Nu zN O\fNh Pf hOf0( 2("ht|f EtR4| m@S@HHApSAp"QQipNsfEb I.Cs Workshop Presents.HLS.BRKHLS.DAT   * HLS protection buffer creator. For use with generic * FLOPRD handler. * * by I.C * bsr.s floprd ; read sectors bsr.s fcreate ; create file exit: clr.w -(a7) trap #$01 ; exit fcreate:clr.w -(a7) move.l #name1,-(a7) move.w #$3c,-(a7) trap #$1 ; fcreate addq.l #$8,a7 bsr.s chek move.w d0,d1 move.l #hlsbuf,-(a7) move.l #$1800,-(a7) ; 12*512 bytes move.w d1,-(a7) move.w #$40,-(a7) trap #$1 ; fwrite add.l #$c,a7 bsr.s chek move.w d1,-(a7) move.w #$3e,-(a7) trap #$1 ; fclose addq.l #$4,a7 chek: tst.l d0 bmi exit out: rts floprd: move.l #hlsbuf,buffer ; buffer locale clr.w s_count ; sector count bckwrd: move.w s_count,d0 move.l #sector,a0 ; sector read data table move.w $0(a0,d0.w),d1 tst.w d1 ; = 0 for end of table beq.s out move.w #$1,-(a7) ; count clr.w -(a7) ; sideno move.w #$4f,-(a7) ; trackno move.w d1,-(a7) ; sector clr.w -(a7) ; drive clr.l -(a7) ; filler move.l buffer,-(a7) ; buffer move.w #$8,-(a7) trap #$e ; floprd add.l #20,a7 add.l #512,buffer ; inc buffer addq.w #2,s_count ; inc pointer/count bra.s bckwrd * sector data table sector: dc.w $1,$2,$3,$4,$5,$6,$7,$8,$9,$f5,$f6,$f7,$0 name1: dc.b 'hls4.dat',0 .bss s_count:ds.w 1 buffer: ds.l 1 hlsbuf: ds.b $1800 `aHaBgNABg/<?<NAXJkNu#By09 |20JAg?<Bg?<O?BgB/9?<NNTy` hls4.dat .`p /< //Bg?<JNA /< ?< NA\a,/<?<&NN\/<t/<t/<bBg?<KNABgNABg/<U?<=NAPa(2/<|/<??<?NA a ??<>NAXJkNu#p#Nu ypNNh hf hOf#t3 x3zH"yt<9z:9x| mESEMM$||SF~"QQLpNsfEb I.Cs Workshop Presents.sb?.datsb?.brk0  ``#"pN6NNN pN*NNNlN"N*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN0 lHhNX/,?,NP\?<N?<A?<NAXNuNV?<HnBgNP @o.H|`0< `N^NuNVHlNXHlN XHl NXHlFNXHlHNXHlNXHlNXHlNXHnHlNpP0.`|g` `&`|g````z``HlN|XHlNrXBn`X0.R@=@?.?.?.HlNJ no"HlN4XN=@BnHlNX0.R@=@ nmHlNXN=@`HlNXBgN xTN^NuNuNV?.N T nn0<`?.?<>N HX9@g0<`0<N^NuNV?.?<LN "XN^NuNV/ AB&H`0+ |g/ N*X AB"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+N (XBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gL0+ |f0<`l0+ |g?<B?+ N P?/+?+ NP @f0<`6k -K k o?<B?+ N DP n!@&Bk0<LN^NuNV/ &n0+ |fk@ 0+ |`g0<` fT0+ |g ABAA &'@`*0+H/N X&'@ fk `k `-K?<?+ B?<BN 2 n!@& k f HlVNX0+ |g0<`0+?/?+ NP7@Sk0+ @l kfk `k@ Bk0<` SRH|&_N^NuNV/ &n 0+ |fk@ 0+ |@g0<` fT0+ |g ABAA &'@`*0+H/NX&'@ fk `k `0+ |g SR k `<0+ |g2k SR . H| g kl . H|`T/ NBXJ@g k@ 0<`<0+ |gBk. H|`"` 0+S@7@k . SRH|&_N^NuNV/ &n 0+ |f f0<`Rk. S SH&_N^NuNV nSh0( @m n R @H|` /.N6XN^NuNV n Sh0( @m. n "R AH|`/. . H?N\N^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@NuNVH n"n $0(H@6C|g.0)H@:E|gE|BB0<まef bRAQ$0P`HNVH n$0(H@6C|gd"n .0)H@:E|gD|E(HD*HE20HGHBBB8:BGBBЇӄЂӅJg$0P`B`NVH"n 0<9@ܱQ`NVH"n Bl n,0(H@8D|fB.0)H@:E|fB2$60Enfl8,:.6$0Jg0Eg|n0@gDԇ0,ܱQ fBB`HSCdTC0|g0|gԼdRC`|"|CHB|C0|@HB AHABA LN^NuNVH0.|=@n n f n0H-@HnNXA-H`> n(g nf. n-P n(f HnNX` HnNXA-H/./. 0.A PNPLN^/W DNuN^Nu)@HlNXONuHlN XO ,NuNVH n "(fJg"¼м@ LN^NuNVH nB fB`м8 LN^NuNVH n$fBCB`nD6< f႖|NN^NuNVH0&n$n Bn-J @A)X)XA BEG>O|g|JGn|m` REHl/ NPO`SEHl/ NbPO`&0+H@JGgDG0<0dR@0.BAQ,>QQֆG|0QB`Rn0.g$nB`0R 2.HmB`d .6.HЃR$@ nH|0fRZ"H|9o R"` nH|0f$n R&@g`SE .6.HЃ @B n0L N^NuNVH$.". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BNZ -@?<?.B?<BN@ -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@g <` `Bl . N^NuNV/.?<HN\N^NuNV/.?<INr\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J~)_zNA"l$l~/,zNuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/N X-@ .fp0.gHSn0.A P m0.A0| |A`0.A0|0 SR`LN^NuNVH&n n f=| A)X)XHlHHl?<NV]|@0. R@?HnHnHnN.g SR-.H|0f.f SR`J nff>.n RG0lo0,`0> Gl0<`0?HnHnHnN>BF0g" nm0RFA SRSGSn` nm SR0Sn`0. g SR.0. g nl SR0RnSn `0. Sn J@g$ Go0RFAH`0<0 SRSG``` SR0. g SR.><0. Sn J@g0RGA SR` SRE?.HlP/N: /N XHѓLN^NuNVBn n PH|0m4 n PH|9n$0. n PHC|0=@ nR`0.N^NuNVH0&n -n @$PXgVgH|%g nR`H|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN"X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NT 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @A)X)X/,/,Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f .n nR` .R-@` nB .L N^NuNV/. HnNhP=@/.HnN8P0.N^NuNVHnHlVNPN^NuNVHn /.N&PN^NuNV ng/. nRH?NL\`N^NuNV nf:0,(l&f0<9@&9@(0<g?<N T=@ nf*0,(g Sl(?<?<NX?<D?<NX` n f00,(Rl(A* ?< ?<NX?< ?<NX`r nf ?<NrT nf20.2,(Rl(A*?< ?<NbX?< ?<NTX`&0.2,(Rl(A*?.?<N0X`A*&H|f0<`0,&Rl&A*H`` nf?<NT``0.=| 0.HNPA BnBnBnBn=|Bn=|AT)X)XA G-f|N>`B.Bn0. g G-f0.g =|` G0m G9n0.g0. G|0=@`t G0gBn0.fRn`^0.gSn0.fNA)X)XHnHl?<N?/Hl?< NTHl\Hl?<NA Sn`0 G.f0.f=|` GEg Gef0.f=|``=|N>Sn `0.f9|0.g 0.n`0.n0.gd nl.A)X)XHnHl?<NA Rn`,A)X)XHnHl?<NA Sn`.g(A)X)XHldHl?<NA 0,g/,"?N\`SA)X)XLN^NuNVH0BnBl nX&Pg.H=@ n g n g n f,N=@ ng0,g/,"?.Nr\`S` n%gHNN=@ nf0<`0.ng"0,g/,"?.N,\`S0.``0<=@=@=|H|*f=|RH|0m H|9n-KHnNX=@&nH|lf=|RH=@ ncf4Np=@ @f0<`0.f0. nX PRn` ndg nog nxg nhfN@=@ @f0<`?.?.?.N\-@0,g0.`0.fF0.g nX  @ `. nhf . nX" A` . nX" A0Rn`: neg nffN=@ @f0<`?.?.NXXA 0,g0.`0.fH0.g$A)X)X nX" AA `A)X)XNv nX" A Rn` nsfN=@ @f0<`|0.f nX$P0.g> n g6 n g. n g&0.f0.N=@ @f0<`.Sn`B0,g/,"?.N\`SRn`0.L N^NuNVAB)H"9|HnNXN^NuNVH0&n$K`Rf L N^NuNV0. Sn J@g6 nH| f?< ?<N~X nRH??<NfX`N^NuNV0. Sn J@g nRH??<N8X`N^NuNV0. Sn J@g nRH??<N X`N^NuNVH0&n $KAl-H nf?./ N4\=n`H nf?./ N`\=n`* nf?./ Np\=n` -KBn?.NTTJ@f ndH| f |o@ H-@/./.?.?<@N6 9@Hg0<`0,n/./<?.?<@N 9@ @g0<`hRnR -@`R``` 6.ƼЃ$@ H-@/./.?.?<@N =@9@Hg0<`Bl0.L N^NuCB"2"2 2"2"2"22"2"2"22"2x9|@)l")l&)l*)l.)l29|CA"A"A"A$"A*"A"A "9|(9|&NueEH Utility for finding Hex and decimal numbers of characters [1]- display Hex and Decimal numbers of characters 0-255 [2]- quit Selection:%d ===char===dec===hex=== %c %d %x press space to continue ===char===dec===hex=== press space to continue f @$??CON:AUX:PRT: %d @H E` L a/<H?Nr?<NA oCH" 2<g:B0< fR`"RAg"< g< fB(g< gS`B(NuNV nf:a 6. a . Ja . a . a .a ~a:.4 n /(aXX3P.6 n /(a>X3R yPm yRlB>P n /(/<8a@P>R n /(/<Ka&P.^aaa r n . n /(/<aPBn>/aX>/aX`>Ra$=@ng>?. n /( n /(?./<a>?./<av\Bn`4 nl0.nl=n0n6H>/<a@XRn nm>/<a$XBn`$>Pav=@m>/<aXRn nm.aBn`4 nl0.nl=n0n6H>/<aXRn nm>/<aXBn`$>Ra=@m>/<apXRn nm.aXJnma P|yga`Zn0.@0.@`PaRn.//aP.//aP0.@0.@>Pa =@l>RaJ@m n . n /(/<aPa n . n /(/<anPN^NuNV."aZa yPo >PaP yRo >Pa/(o*O ` ><(o*OPB9HByN Igl<%g< fa`a`gN<%g<-f H`aJg LSH 0f0IaR(H3N`H@<sg<Sf~49Ng$ Uan@e@SBJ9Hf,9IaQ ]"Ha`DAH`AH/`/?< NAT9IaPQ _a f < a6`<df@0H# Ja849Ngaܴe@SBJ9Hf9IaQ`x<lg <Lg<Df# JAH `<xf#JAH0`<Xf#JAH `t<cg<Cfp0`j oB -fRaDNu .g$ 9b 0e"Ё¼Ё`R 5eRNu /"/JjDaDNuJj DaDDNucPgc "pNurpNu$BBHBR&("a."€"$HBHB҂b DbR`S`HB@H@40H@t20H@4Nu o"og<.fNu|.fBNu oa`<Rg<Ug <WgpNu?<//?<=NAPNu?<//?<NAXNu /"/4/ HH@??<?NA Nu /"/4/ HH@??<@NA Nu0//<H/<??<?NA <f |HNu(o/ BE/ /<??<?NA fXREFgD< f/ /<??<?NA f < g?<?/<?<BNA B| NupNu<`2/ o0/g^S@QNuJgn H`6 G.Nu o>/a `l o>/p"|HRg  f|  R`Jg n(/<H/??<@NA Nu/<H?< NA\Nu"|H GfNu< a^< `V o2/ /gSVJk"oS Nu o"oBgnfHSgggL`JgPBNuLSNu o"oBg0f*HSggԲg` LBNuJgPBNu0/<Ak<[k<ak<{kpNuaJf`0/< g`&h(h 89o62Nu?<?<NAX0/| a0/| `(/&<"<f`?<NNTe?9?9?<NN\NuaS"ofNu o"oggNuNu?<?9/<?<BNA Nu?<NATNu?<NATNu o"opR@fNu32Nu o"o / g"$ nDggf,f&g2gg"`""QNuQNuҀn Ag `  QNu&h(h 89o62Nu /3JHCH IE8//<H/<??<@NA NuASTART Version 1.01This program will compare two files and inform you of anydifferences between them. You need to specify both filnames whencalling by defining this program as a .TTP file (TOS takesparameters). This program is taken from the DVC/65 package andrewritten using the DVC/68 runtime package. rr%s error code #%d %s error code #%d Can't open one or both of the files! Comparing %s and %s... Files are different at %d %s != %s %d != %d >%c< != >%c< $%x >$%x< >$%x< Continue?(Y/N) %s is larger than %s %s == %s Press key... 0123456789ABCDEF Z    "8264 B8 6 (",,ؖ  D`'Q` Efv*oM@ m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALN6Hz2?< NA\pdAxr0XQ)K\NN6bbbbnnJrBjNuHz?<&NN\CAp$L Qp NBlJpNNpMN9@pdAr 0Q0tr N9lNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu    -Hn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N|?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N6.JgtBnNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A d$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0Nup"_0HqNp"_0HqNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNua NuN IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkN`RB0 b b瀀`RB0 fрd`2p <0N>`QNupC 0(gFd"P$I` *N>$E$R(S@jv A(Wf( ae zb Q DNuH&NvրNvjNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNvNp$_& Y Qfdփփ!8NNtNn~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NhL"2` NqR YEjrd0` SjN" KC`e NV`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNu?k?<NM"UAf J@fH@NuDW?<NMXNuPj0,lf$J,nk l*fp?Np N9|nNpA0,l2J,jk 0"fZRAR@ 0"g 0 f` 0 g 0,f9@lTll`BllA"H"g"A4`Q"AA 0! NuS@R@ 0 g 0,f9@lRll`R@ 0 fQj`N>NBll?<?<?<NM\NVHQN&g ! ge l*g l*gpNNu<,*?Hj\F FfN|`H FfNt`9@^9A`9Ab~`$aJf,H@ Kg Mg Pg Hf~`BSGj>RGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HNLNu0,^2,`NXzEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(N>ldeS@f lbfSl`9Ab9FdNupapqr`p`p`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8Nf  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNN|HP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NVYp-KNu"l`Yd&-KNNV"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuNV"l`QepZNC ҳfHP0(N>$W$RR@H`2Q"H _$l` dd" $X&0BP6Y&|Hg R@@%E ҳeHQ0)N$_$RR@H`2QNu$Y 0P1@Hg R@@%NuNV$l` epZNNpp@pWBg?<NN\?<NNTJWHfN@A p0?<NNTSWHfNdA @0?<NNTUWHfNA 0pp@pWAN??<NN\pZChNpZCbNNN4Disk Analyzer V0.2h, (c) 1988, pNNN4 pThe Judge.pNNpqNNNN4 Dedicated to Captain INNN4/Would you like a printout of the analysis (y/n) NVC*NBNN4%Highest sectors/track to check (1-11)yN"+@V -VN`zN@pJBgp/ -VN`&<x*<NFpJBgp$VHgN`|NN4Start track to analyze (0-82)N"+@Z -ZN`&<x*<N@pJBgp/ -ZN`&<x*<NFpJBgp$VHgN`xNN4End track to analze ( -ZNN&-82)NN"+@^ -^N`H -ZN`H <r$<L8N L8NFpJBgp/ -^N`&<x*<NFpJBgp$VHgNP`NNNN4Disk Analyzer V0.2h, (c) 1988, pNNN& pThe JudgepNNpqNNNN4 Dedicated to Captain INA*NHPpYN"_NfN A 0NBmp"<NC$NBNprNVN&Sector: NNprNVN4Track: 4NNprNVN4Error: 4NNp rNVN4Error message: BN -ZAN\ -^N`AN+mVNBRA 0 -VN`ANNHPpN"_NfN Bpp@pWBg?<NN\pp@pWAN??<NN\N| -JJVHfN vp2NXNp rNVp rONNNHm$BAN/AN/BHxA$NfNpr NVANN4 4NNpr NVANN4 4NNpr NV -JNN& NA N&<x*<NfN! -JN`&<x*<NpJBgp/ -JN`&<x*<NpJBgp$VHfN!N!NN4 Error code -JNN& on track ->NN4 , sector 4 -:Np.NN -J\WHg NXN!NR`NqAN/ -NCbNAN/ -RChNNR`NqN -ZAN\ -^N`ANANChNJWHfN#@NN&Track ANN4 shows 4ANCbNNN4 sectors/track.NA N&<x*<NfN#:NN&Track ANN4 shows 4ANCbNNN4 sectors/track.NN#NN&Track ANN4 is not readable.NA N&<x*<NfN#NN&Track ANN4 is not readable.NNR`NqNNNN4Disk Analyzer finished. pNNN&2p---> The Judge Development <--> T.A.P. Guild <---pNNpqNNNNNN&Another Disk (y/n)NVC0NBA0NHPpYN"_NfN$NN$pp@pWBg?<NN\pp@pWAN??<NN\N|N| AFN ABN A>N A:N A6N"_ANpNCNB?-H?-D?-@?-Np.NNSNA N&<x*<NfN&RNN4!Sector not found error on sector r -:NN&, track ->Np.NN -J\WHfN'(Np rNVN4Track not found at track c ->NN&*. )NRRA N&<x*<NfN'(NN4Track not found at track o ->Np.NN -J WHfN'Np rNVN4'Disk not in drive A, aborting analysis. NpN$NNN|.$$RHVn~vZV ΂fL7COPYLOCK_2 revised for new copylock 07/12/88 Copylock protection is in the form of a prg file in the auto folder which when run will read in track 0 and get two bytes before the data in the first sector and use it to unencrypt a file that ends with a pro extender. The pro file is sometimes found in the auto folder as a hidden file and other times just as a normal file in the root directory of the disk. You can use Universal 2.01 or Dcopy 1.91 to see if there are any hidden files on the disk. The following procedure should be followed to 'crack' the copylock scheme. The first thing you should do is coldstart your machine and run TEMPLMON.PRG. Next run MONST.PRG. At the prompt, load in the subject program file. [I]ntelligent copy the program to another location (example.. [I] start: $5cc36 end: $5d4cc destination: $6cc36). Note you can find the end of the file by possibly doing an [H] command and looking at the basepage information. Change the program counter (PC) with the [R]egister command.. Type [R] and then P and then input whatever the destination address was in the step above. Now the PC will be at the relocated address. Hit the tab key to get to the relocated code. Step thru the program (Control Z or [U]) until you get to the 2 (PC) relative instructions, ie. LEA $0006CC36(PC),A0 LEA $0006CC88(PC),A1 Step thru the LEA instructions (should be to a CLR.L D0) and then change A0 and A1 to the original PC values using the [R] command and then A1 and A2. Continue the loop by doing a [U] command to the command after BNE which occurs after the CMP.W D2,D0. The unencrypted version will be at the original PC value now ($5cc36) in our example above. Next set the PC to where you left off by resetting the program counter back to the original location by typing [R] for register then [P] for program counter and then the address you want to set it to ($5cc88 in our example). Hitting the tab key will put you to the new PC location. It will look like movea.l $0004(a7),a5. Step thru the next four(4) instructions to get to the first BSR instruction of many. Change the PC to point to the 3rd BSR instruction. ie. [R] [P] address . This will skip the first two BSR subroutines. Now do an [X] to scan the program for the PRO filename. You can also do a search [G] [T] PRO to find where it is at. Insert the encryption key bytes that is found in the first track into the 2 bytecs before the program filename. Now hit the TAB key to get back to the BSR instruction that we were at. Execute this BSR by using the Control T command. This will load in the PRO file. Step thru the next BSR instruction and also step thru the next 3 instructions (should be into the first instruction of a BSR routine). You should be looking at a lsr.l #2,d0 instruction if you did everything right so far. You are looking at a small subroutine that does a checksum of the original program file to make sure that it hasn't been tampered with (hehehehehe). Intelligent copy this routine to somewhere else in memory and execute it. ie... [I] start: address end: address to: address [R] [P] to address [U] address of the RTS instruction Now, step thru the RTS instruction and you will be back to where you were before you copied the code. Now do a [Q] and find the address of the next RTS instruction. If you are in low rez, it will be at the bottom of the screen. Execute [U]ntil that RTS instruction and then step thru it with a Control Z. You should be back to the group of BSR instructions. Search for the word 601a .. [G] [W] 601a The bra.s instruction that you are looking at is the start of the unencrypted PRO file! Right? RIGHT. Find the end of the program, jump into Templemon and save the cracked file out to disk! Congrats on a job well done. Use Disk Mechanic to find the 2 byte key to put in the original program file. Load up Disk Mechanic and put the original disk in drive A. Select the analyze track option and choose track 00 to read in. The key bytes should be found before the first group of a1 bytes. I have a degas pic of one and line 80 looks like this: 80 : 4e 4e 72 35 a1 a1 a1 fb 00 00 4e 4e 4e 4e 4e 4e : ascii stuff \__\__ These are the key bytes These bytes should be put into the original unencrypted file just before where the .pro file name is found. The bytes should be 00 00 if everything was done right. Copylock protection requires the original disk to do anything with. If you know someone that has a copylock protected disk all he needs to do is have the Disk Mechanic program and another pd program called snapshot.prg. Have them load in snapshop.prg and then Disk Mechanic. They should then put the copylock disk in the drive and do an analyse of track 00. When the track data is on the screen all they have to do is hit the Alt Help keys (the copylock disk should be out of the drive now and another disk put in its place) and a screen dump will be made in the form of a Degas picture. They can then arc the disk along with the Degas pic and send it to you or someone that can follow these instructions. The original crack scheme belongs to I.C These instructions were written by Big Bird TCOPYLOCK Copylock protection is in the form of a prg file in the auto folder which when run will read in track 0 and get two bytes before the data in the first sector and use it to unencrypt a file that ends with a pro extender. The pro file is sometimes found in the auto folder as a hidden file and other times just as a normal file in the root directory of the disk. You can use Universal 2.01 or Dcopy 1.91 to see if there are any hidden files on the disk. The following procedure should be followed to 'crack' the copylock scheme. The first thing you should do is coldstart your machine and run TEMPLMON.PRG. Next run MONST.PRG. At the prompt, load in the subject program file. [I]ntelligent copy the program to another location (example.. [I] start: $5cc36 end: $5d4cc destination: $6cc36) Change the program counter (PC) with the [R]egister command.. Type [R] and then P and then input whatever the destination address was in the step above. Now the PC will be at the relocated address. Hit the tab key to get to where you want to be. Step thru the program (Control Z or [U]) until you get to the 2 (PC) relative instructions, ie. LEA $0006CC36(PC),A0 LEA $0006CC88(PC),A1 Step thru the LEA instructions (should be to a CLR.L D0) and then change A0 and A1 to the original PC values using the [R] command and then A1 and A2. Continue the loop by doing a [U] command to the command after BNE which occurs after the CMP.W D2,D0. The unencrypted version will be at the original PC value now ($5cc36) in our example above. Next set the PC to where you left off by resetting the program counter back to the original location by typing [R] for register then [P] for program counter and then the address you want to set it to ($5cc88 in our example). Hitting the tab key will put you to the new PC location. Starting at the beginning of the file minus $1C you need to modify the bytes as follows: 601A Text Size Data Size BSS Size The Text, Data and BSS sizes can be found from within Monst by using the [H] command. All of the sizes are Long words (8 bytes) You can now save the original unencrypted program file out to disk by jumping into Templemon (Alt-Help). Save the file by typing the following command.. S {path}, Beginning Address (Start of program minus $1C) Ending Address.. Example: s a:\loader.prg, 5cc1a 5d4f0 The following should look very similar to the file that you just saved if you would load it into Monst again. These additional modifications can be made before you save it out the first time. 42a7 clr.l -(a7) ;change to 606e 3f3c0020 move.w #$0020,-(a7) 4e41 trap #$01 dffc06 adda.l #$06,a7 2f00 move.l d0,-(a7) 2f3904ba move.l $04ba,-(a7) 243c0200 move.l #$0200,d2 263c0a5a move.l #$0a5a,d3 41faffdc lea $0005cc36(pc),a0 ;place to look for 43fa002a lea $0005cc88(pc),a1 ;when stepping thru 4280 clr.l d0 4281 clr.l d1 3a30 move.w $00(a0,d0.w),d5 bb711000 eor.w d5,$00(a1,d1.w) 3a311000 move.w $00(a1,d1.w),d5 5481 addq.l #2,d1 b243 cmp.w d3,d1 6600fff2 bne $0005cc68 5480 addq.l #2,d0 b07c0052 cmp.w #$0052,d0 6700fff8 beq $0005cc78 b042 cmp.w d2,d0 6600ffdc bne $0005cc62 2e3904ba move.l $04ba,d7 ;see below The above instruction is where you should execute [U]ntil when you are having the original program unencrypt itself. The actual instruction will look different because it will not have been unencrypted yet. Once you set the PC back to the original location, it will look like the above. 9e9f sub.l (a7)+,d7 3f3c0020 move.w #$0020,-(a7) 4e41 trap #$01 dffc06 adda.l #$06,a7 bebc0212 cmp.l #$0212,d7 6e076 bgt $0005cd1a 2a6f0004 movea.l $0004(a7),a5 206d0010 movea.l $0010(a5),a0 43fa0840 lea $0005d4f0(pc),a1 2288 move.l a0,(a1) 610002a8 bsr $0005cf5e ;change to 4e714e71 The above routine is used to read in the first track and get the encryption key for use in unencrypting the pro file that is to be read in. (next instruction) 61016 bsr $0005ccd0 ;reads in .pro file 61064 bsr $0005cd22 ;unencrypts .pro file 61000126 bsr $0005cde8 ;see below An easier way to go about this is to let the original file execute [U]ntil this instruction instead of saving it out as described above. You will need to find where the .pro file was loaded into memory (not very hard) and when you find it you will notice that all of the file header is intact (the 601a along with all of the text, data and bss stuff). This can be saved from the 601a memory location to the end of the .pro file (you will have to find that also). If you elect to save out the original unencrypted prg file then you will need to use Disk Mechanic to find the 2 byte key to put in the saved plrogram file. Load up Disk Mechanic and put the original disk in drive A. Select the analyze track option and choose track 00 to read in. The key bytes should be found at bytes $82 and $83. I have a degas pic of one and line 80 looks like this: 80 : 4e 4e 72 35 a1 a1 a1 fb 00 00 4e 4e 4e 4e 4e 4e : ascii stuff \__\__ These are the key bytes These bytes should be put into the original unencrypted file just before where the .pro file name is found. The bytes should be 00 00 if everything was done right. Once the key bytes are put in the program file, it is cracked! Copylock protection requires the original disk to do anything with. If you know someone that has a copylock protected disk all he needs to do is have the Disk Mechanic program and another pd program called snapshot.prg. Have them load in snapshop.prg and then Disk Mechanic. They should then put the copylock disk in the drive and do an analyse of track 00. When the track data is on the screen all they have to do is hit the Alt Help keys (the copylock disk should be out of the drive now and another disk put in its place) and a screen dump will be made in the form of a Degas picture. They can then arc the disk along with the Degas pic and send it to you or someone that can follow these instructions. The original crack scheme belongs to I.C These instructions were written by Big Bird b`aHaBgNABg/<?<NAXJkNu#By09 |20JAg?<Bg?<O?BgB/9?<NNTy` hls4.dat  . `Q\`Z** .*** COPYRIGHT (c) WB SOFTWARE DEVELOPMENT 1985 ALL RIGHTS RESERVED *** 860318 ***O.|*m -" Y Nq(@#// ??<JNA Nq,M# |aXNNtN^Nu y$y#.J$ ļ$B#nG&SI(TR& Ƽ&C#r8 |<B49|gNBX&yr#vFGIHR |c"|pPa*a&yr#v<<# y*f |l"|yaN |y ( gN@H<g"<Nq 9Jg"|y ) gaJ48`68 9 |w#Dp=،،ѤNHr |y"|h<PaL |"|y<Pa8 |yJ``NqK 968gB58 9 |w#Dp=،،ѤNHrI |#Nq 9Sfѥ |CUR #2`L 9Sf" |HALF#20933@` |PAGE#209330< |2"|a 9TgFR#*-CA#PS O#N-**#*-CA(#PS O,#N-**0`DR#-CAP#S OF#F-**#-CAP(#S OF,#F-**0Nq9VXa&p#Zr#V 9FNFd##^ |("|^$INE |5"| "|001ѨѩN :ѷ y#0< |S"|caNN& |"|TpN? 9H |H"|TpN? 9IN<g`Nqa<g a |NB a<ga`0 9RNG<"<,d$<Qap<fQ |#N |J6<r < R Q 9Ff 9GfV38 9BRNFd |0 |Ѣ#Dpp=،،ѤNHr`X28 9B 9zrRNFd |0#Dp=،،ѤNHr#NN <g&JKѤ |6<  Q |"|F<g` 9կfѨѩU8 9B= |#DNHr،،N-, |6<  QN&،`H&<$|w-Q |y"|w<g`NqLNuHS@QLNuNq<ae <{d< Nu9g |NB |<B49|gNBX |B9|g 9Ng NrNq<a/<NA"/0<NBNuNqH@29:g9Bf 9Ѥf\`X:8،BB،،NJ<g89NHr`NqѨѩ |~"|paB |"|pNqN?NqNNqѷ9Bf 9=gB9RgNqB9=ѩ<eS9،gS@ev|gn9،gS@e^Nq<eTNFd# |N"|$INEB9= |<¼UA<QNqQNq9=ѩW9،<gSNq9،gSNq<e NFd# |N"|$INENq9،gRA9،<gRASA |r<g QNq 9ZNGSЁNq 0 g <gSS`NqRTѨB 0 g RR<g`Nq@|<f2<|A3`Nq 9.~gH89ѨѩNHr:`aZ`N9،ѧ<gBB`da`zNqaѷ`hNq9،g`,Ѥ،،Bѷ`. |"|r6<4< QQ"|r$I<g< g`R"J`Nqѷѫ 9Z#Ѯ#Z9RѬR`N]`NW`NS`NqN<`~NZ`tNqNa`hNqNM`\NqNR`PNqNt<Ug\`e Ѩ`LѨѩNqLNuNqѦ8،9HB#:ѶѷNuNq،ѷNu<N#NuH yr#v#f&yn<aZ<g<ga 9 0c`Nq &g 9&#vRf`h#vRf,HbF/ |:NB _Nq<aְ<gF<gaB 9 0cZ`fRf`(H , f , f`    9f#j<aB#f#2#6#z yn!|#~#Nq.9j#B<< |ya yr#v&y~# 9Ff(yr#z(yz#2BBBvzN,BBB,ynNq,Mb0 9FgF/ |:NB _<a`8Nq'F'|'Ef'CbhN, 9HgX 2gL 9IgBH"92 d"H 9j#f yzL`XLRRR 9Hgn<fnNq 9IgFHe"92 d"H 9j#f yzL`L` NqH`Nq<S` Nq< fNqDbk#bNqB 9FgNqD#,"|,$|0 ,9, 9Hg<g 9Hg&y# 9HgR6 9Ig 2eH"92 d"H 9j#f yzL`L`g<f `<c<c><g,< g&< g,< g< g< gR2` R2 9Hf<g`G#R&y#'F'|'|& R<S#zR$9rƼ# #$ 9~#B`/ |NB _90`NqH 9Kf |#<`N@HLNuNqH 9Kf> 9 g.R9"y0<QB#&` <`NA LNuNqH 9Kf<`NALNu/ |ԼNB R90 _Nu. 9Hg\R0<30<33 9Pf3` 9Hf 093R NqR91 91f 9B2f 9W1f`ԻLNuH fa`HBE*FGp9FS@ |J Q |"|~$|ղ&|(|*|N,|ւ <'       Q{կKzծJ~# .# 2vGHLNuNqaƲ<g`< fB`Nqax<g<g<g <g,`z`EB9BgB`BHGE0<ND0=> |XBSr<SCaQB`PNq<g< lF9g,9g$9g9g9g 9g`a`Nq9=<f<9><m0<?m,<Lm$NqB<L&|.Ga``Pa`NqHBar&|JB9>|G0HRC9GeGLNua`:NqH0a <ga"<f <g`<NqL NuNqH< lش9g(9g<9gP9gb9gt<?`NqS9=;:`NqR9=;:`NqS9>;:`dNqR9>;:`JNq 9=f 9L>e >`L>=;`NqR9>Nqa9><lP>S9=;`<Po>R9=;9=<l=;`<o=;Nq9;<g9>@9=ND0LNu/ |?NB _NuNqH?4"|6<$IgNq"JQB`LNuH`?< NATLNuH`?<?<NAXLNuHBA??<NAXLNuLNuHB 9ZNG<"@S|~*yJ,9B |4NB 98g&| (|׎` &|(|׎6<Q$|Vp2< J/6<PNBX&<gRSBC9FSC&|J(|״Q$|צp2< J/6<PNBX&<gS9Rg9RgNqNq$|rE J09J"9J69>|CCGNBXR<gS$|E J09N"9N69>|CCGNBXR<gzS$|zE J09R"9R69>|CCGaR<g>S$|E J09V"9V69>|CCGaR<gS`$|rE J09J"9J9،<f 9f` NqS0<<`69>|CCGNBXR<gS$|E J09N"9N9f`NqS`69>|CCGaR<gPS$|z9،E J09R"9R69>|CCGaR<g S$|E J09V"9VanR<gS$|ǂE J09Z"9ZaFR<gS$|E J09^"9^aR<gS$|ȊE J09b"9baR<glS$|E J09f"9faR<gDS$|ɒE J09j"9jaR<gS$|E J09n"9na~R<gS$|ʚE J09r"9raVR<gS$|E J09v"9va.R<gS$|ˢE J09z"9zaR<g|S$|&E J09~"9~aR<gTS$|̪E J09т"9тaR<g,S$|.E J09ц"9цaR<gS$|ͲE J09ъ"9ъafR<gS$|6E J09ю"9юa>R<gS$|κE J09ђ"9ђaR<gS$|>E J09і"9іa 9Իg g]*| 9ZNG<,@S$|rE.9FQ#J$|`.g(*|5.<$|rQ#J$|NqB+9ffg*|ؒ،9g #ON-*ؚ` #OFF-ؚNq9g*|.<`Nq.9F 9ZNG<,@SEQB+$|zfzN89،f9،f`jNqN89،fR9،fH$|r؉ 9؎g# JfJ؊a.N8$|؉ 9؎g# NfN؊aN8$|z؉ 9؎g# RfR؊aN8$|؉ 9؎g@# VfV؊aVN8$|ǂ؉ 9؎g# ZfZ؊aN8$|؉ 9؎g# ^f^؊aN8$|Ȋ ؉ 9؎gh#  bfb ؊a~N8$| ؉ 9؎g #  fff ؊a6N8$|ɒ ؉ 9؎g#  jfj ؊aN8$| ؉ 9؎g#  nfn ؊aN8$|ʚ ؉ 9؎gH#  rfr ؊a^N8$|؉ 9؎g# vfv؊aN8$|ˢ؉ 9؎g# zfz؊aN8$|&؉ 9؎gp# ~f~؊aN8$|̪؉ 9؎g(# тfт؊a>N8$|.؉ 9؎g# цfц؊aN8$|Ͳ؉ 9؎g# ъfъ؊aN8$|6؉ 9؎gP# юfю؊afN8$|κ؉ 9؎g# ђfђ؊aN8$|>؉ 9؎g# іfі؊aN8$|؉ 9؎gx# њfњ؊aN8$|F؉ 9؎g0# ўfў؊aHN8`d*|9g #ON-*` #OFF-.9F،9؉؈ 9ZNG<,@SEQ`NqN9g 9؍،Nq 9gL9؊<g8 9ZNG<"@SB29ARA<e<QdѩѨ`Nq 9BĚfR 9WęfH 91ijf> 9kĹf4 91Ĵf* 92ĵf 9aĸf 9 Ķf 9Oķf`ؐLNuH&|>:<SG< jVNq9g&< f  3*Pg RE|dD`RE|d:`4 9Wf < g< g9X` < `<jRE|dQg؎3L?NuH. 9g$+g ؎`p؎`"+g ؎`L؎B+&+B+*+ʼ,+̼Nq 9FffH*yNqg`Nq.$j~Nq#*y~Nq*-ʼg`Nq#$yr&9 S.9Nq<<" JNA <fRQUNq*y*-ʼNq,-̼g(ݭ-f`NqL`"yr I`NqNq"yr INqLtNuH9f9Nq 9gHNqD<f`R 9ֳg 9f9f #N`NqNq9g |# | j#NqN<f:0<ND09fN`NNq ygV.9 9N9RgvNqk: 9NNG<"ZS9،gS9،gSNq NG`NqH`"|0B4<<0fQ<0` RSQLNuNqa489B09NFd | a#D= | P> |#HB9NFd | aV#L?B9NFd | a2#P@NHr<`rNqaѷ89 | P< e< = |#D | P<e<> |#HB9NFd | a#L?B9NFd | aj#P@NHr<`Nq89NHr<`Nq9f9f9f 9f 9fHab89 | P<$e<$= |#DNHr<`a 89 | P<$e<$= |#DNHr< `a89 | P<e<= |#D | P<$e<$> |#HB9NFd | a#L?B9NFd | a#P@NHr<NqѷNqLNuNq9g/ y# y# _NuH~/<a $H&I&SC(X"K<g&f"K:<g<Q<g X``R PNq/<a2 L~NuH&H<g<NqNq<g<g<g<`"|`"| `"|"(I0<H`?/ ?<=NAPLk8<`JD3$<g<`6Nq0<H`?/ ?<NAXLg D3$<LNuH~&H?<NATO|gBAH??<NAXL f KL~NuH&H*,.(B.<f 4<PSB`g8<3*0<P3P,`>g8B@BA2Ag<g<|Pe|PA3*83,g0aJ4<Pg4g(KI SB $ f Q4<SNqg6Cf0 9.ga.89,`Nqa.RC0<??NAXQg"g4<PGSB0<< ??NAXQpg(ad.Nq9g69Ҷ|gNqQLNuNqH 9g"B9SB&|0<??NAXQLNuNqH 9g"B9SB&|$0<??NAXQLNuNqHB=B>9g`NqfSESF`B9BSEBSFg NFd*94 NFd,94f~`B9SC>Q6QNqB9SC&|t0<??NAXQ60<??NAXQg"B9SC&|0<??NAXQ60<??NAXQg"B9SC&|0<??NAXQNq9g69ж|gNqQLNuH/<a g$<Q`XtA SBDQNq"<&|8$Nq<<0Q/<a LNuH/<al g$<Q`XtA SBDQNq"<&|8$Nq<<0Q/<a LNuH/<a *B'k'$<a~`氼k$<ad`谼dkd$<aL`谼 k ta8`찼gSta(`Nq &< |8Nq<<0Q`Nq&<DQNu/<a> LNuH/<a( *BkҼ'$<a\`谼kҼ$<aD`谼kҼd$<a,`谼k Ҽ ta`찼gRta`Nq `Nq&<DQNu/<a LNuH/<ar *,B8<<Q8<<QNq &< |8Nq<<0QNq/<a LNuNuHB98< |g<ggfNq |ڭNB `.Nq99g،99g"| 6< Q"| < d<g<f9=$yDa`ְ<f9>$yHa`<f9?$yLa`<f9@$yPav`<f9A$yTa^`v<f9B$yXaD`\Nq |NB `>Nq`BNq fgDNq&| 6< # fQ`,4<C|g SB8(| &I#Q(| -QNq"| 6<O Q"| < d<g<f9=$yDa`ְ<f9>$yHa~`<f9?$yLaf`<f9@$yPaN`<f9A$yTa8`z<f9B$yXa `bNq |NB `Nq`JNq`Nq|SCQNuN%nLNuH/<a~  |"|~$|ղ&|(|*|N,|ւ <'       Q{կKzծJ~|հLրB@9G<g |J"|~$|{&|z(||a"|ղ$|կ&|ծ(|հax"|$|&|(|a\"|$|&|(|aB"|N$|K&|J(|La("|ւ$|&|~(|րa<b<`8NqHx@ &<J ܰ<gS<"fDg`9ܴ< f"`z<"fr.`b<'f:g`P9ܴ< f'`6<'f0.`"< g<,fNq 9 g@ 9.g6 f(NqR<0e<:d f`` g Nqg fNqLNu/<a LNuHNq 9կf9g`Nq9հ |ծ"|0<NW<f`Nq9հ |ծ"|0<NW<f`Nq9հ9ղN 9կf<Of9ճN<Nf 9fp`299g |9a<g<dNq6<"| Q<6<"|R< f<*<Q`DNq9հ 9կfD9ղN<Of@9ճN<Ff9մN<Ff Nq9 9f`JNq9ղN<Sf9ճN<Ef9մN<TfNq9f6<"| Q<6<&| 9g9 |"|$|at<f9 |"|$|aP<f9L |K"|N$|Ja.<fp9ր |"|ւ$|~a <fN` NqH g g" Ia*<g<dS*Nq<`Nq<NqLNuNqHp<dB<gX#HNHrѨѩ:9R<`Nq89B"|ծ)=X#DB"|)>X#HNHrѨѩ:9R<`6Nq-89NHrѨѩ:9R<`Nq.8 9NHr9R،،ѤB<ѷ`NqR0<30<3 9Pf3` 9Hf 093<ѷ`JNq0< 30<"3 9Pf3 9Hf 093<ѷNqLNuNqHp(f&BSCAa:a2f Q<`<LNuHNq 9կf`Nq9հ |ծ"|0<NW<f`:Nq9հ |ծ"|0<NW<f`Nq9հNq |ծ"|0<NW<f 9g9`Nq9հ |ծ"|0<NW<f 9g9`fNq89B"H)=X#DB"|z)>X#HNHrѨѩ:<`Nq/89NHrѨѩ:<`lNq08 9NHr،،ѤB<ѷ`$NqR189="|#DB>"|#HNHr#*-CA#PS O#N-**#*-CA(#PS O,#N-**0ѷ`Nq189="|#DB>"|#HNHr#-CAP#S OF#F-**#-CAP(#S OF,#F-**0RѷNqLNuH/< Nq 9կf`Nq9հ |ծ"|0<a<f`LNq9հ |ծ"|0<a<f`&Nq9հ |ծff*f"g (.f (e` (e` ( e`NqB(S@Z`Nq(XB6SC"|#| #| <ae <zd< QNq |*"|pag#N a 90#" 94#&`NqB9կ |ղS#0#0"|" Q 9"9a배Re 9R#N`"Nq89aB9{|Ѩѩ:<`Nq89B"|ծ)=X#DaѨѩ:<`Nq 89B<="|#D"|$<>#HaFѷ`PNq8 9a&،،ѤB<ѷ` NqѷNq/< LNuH/< # .# 2Nq9| |zfZfRfJgB (.f8 (e. ( d$"|&aDNq 9կf`Nq9հ |ծfffg (.f (e ( d"|.a |*"|.a<f aj 90#6 94#:`\Nq |*"|&aְ<g <f `:Nq a& 90#6 94#:"|&$|.&<QNqNq"|&6<Q 9N a 90#> 94#B 9 .g`NqHB(S@ZB2SA#| #| <ae <zd< QLNuNqH?~$H&Ip&SC(X"K<g2< g&f"K:<g<Q<gX``<`<` <"QNqNqL~NuNqH$< |8<<0QLNuNq89B"|z)=X#D"|F<>#HaѨѩ:<`RNq89B"|ծ)=X#DaѨѩ:<`Nq 89aѨѩ:<`Nq 89B<="|&#DB"|@<>#Ha"ѷ`~Nq89B<="|&#D"|@<>#HB<?"|.#L"|8<@#PaѷNq/< LNuNqH 9Nf9gHNNq:89NHr | p2<94<6<NBX |B9Nr(9g(9g(NqNq 9կf`Nq9հ |ծ"|g0<NW<f`Nq9հ |ծ"|k0<NW<f`Nq9հNq |ծ&H"|O0<NW<f$9 9f(N<fr`JNq9հ |ծ"|Y0<NW<f$9 9fN<f*`Nq9հ |ծ"|U0<NW<f$9 9fNP<f`Nq9հ |ծ"|a0<NW<f 9gf9 |"|x0<NW<g&"|y0<NW<g |"|~0<NW<g |"|0<NW<g |"|l0<NW<g |"|m0<NW<g |"|q0<NW<gx |"|r0<NW<gZNq99f |B9SC<0ḛ<:e <Ae<Ge<ae<ge`RQNq9 9fN<f:`Nq9հ |ծ"|f0<NW<f$T 9g9 |g`6Nq9հ |ծg 9g>9 |g* 9gH9 |"|]0<NW<f` 9Hf9L 9Kg &|`N<fX`0NqD8 9NHr<ѷ`PNq89B"H)=X#DB"|z)>X#HNHrѨѩ:<`Nq89NHrѨѩ:<`Nq89NHrѨѩ:<`~Nq=89B"K)=X#DNHrѨѩ:<`2Nq78 9NHr،،ѤB<ѷ`Nq889NHrѨѩ:<`Nq989NHrѨѩ:<`~NqC89NHrѨѩ:<`H;8 9NHr<ѷ`$<8 9NHr<ѷNqLNuH/<T 9=9،a5n;8 9a|<ѷNq=،Nq/<U LNuH9Rf9Ѧg09Ѵ#Ѧ`L9Ѧga#Ѧ`XѦ`"09# 9Pg 9Hgf,NqNq9،f 9،g |("|$INENq |"|N$INE&yNj&|Nq#N` NqNNqLNuNqBB9=9؈<gd<A9،f9،f <d<`4<d<`(Nq<d 9،f9،f<`<NqNFdNuH9RfNqB(yN&yRc: 9Ѧf 9ѥfa#`9Ѧg^#N |"|N$INE(yNѦ9،f 9،gNq |("|N$INE(yN`9Ѧg0<Ѧ#`|9Ѧg 0<"#`B9Ѧg09Ѵ#Ѧ`9ѦgaBѦ#`Ѧ$|`09$|#Nqp"#9،g |("|XR$INE9،g |("|$INE`9،g |("|$INE 9򞰹d^Nq9،g |("|$INE9،g |("|$INE`9،g |("|$INENq |"|N$INE(yNb(KNq#N`Nq0<"NuNqB9=<d.<9،gS@9،gS@` 9،gS@Nq`FNqW@9،gS@dp`0Nq9،gS@dp`Nq9،gS@dp`Nq|gNFdNuNqNѦ 9Իf 9ؐf`]<PANFdNuLNuHB 9Ѧf 9ѥfla`j9Ѧg Ѧ`x9Ѧg0<@`29Ѧg0<`"9Ѧg09Ѵ`9ѦgaNqѦ`09 | "|^$INE 9^k 9#^ |"|^$INENq |5"|  9^#Z |"|Z$INE |5"|`&Nq 9=f0<` BB9>S@NFdNuLNuH 9Zg f`Nq |"|($|ZaNq |5"| 9Z#^ |"|^$Ia 9^kz 9#^ |"|^$|Za& 9Zg f`Nq |"|($|ZaԊNq |5"| |"|^$Iad |5"| NqLNuH 9կf`Nq9հ |ծ"|0<NW<f` Nq9հ |ծ"|0<NW<f`6< |BNq"PPPP 1Pf P`Nq1PPNq1Pg P`pNq1Pg`Nq1PgP`NNq$|*8< a<g PP`,Nq$|8< a<g PP` NqPNqNqPQF |B6< Nq0Pg0PfP 9 fra^NqPEQ |B6< Nq0PgZ0PfRP0P 9 fa<f a `a~<d̰<g  ` NqPEQ`Nq |B6< Nq0PgT0PfLP0P 9 f  a<dJ<gB9հd`NqPEQNqNq |B6< Nq0Pgh0Pf`P0P 9 fa<fa`Nq 9 f| 0PB"pP)=X#DNqPEQNqNq |B6< Nq0Pgf0Pf^P0P 9 faX<fav`DNq 9 f 0PB"pP)=X#DNqPEQNqNqNqNy4<f8Nq 9 gHBB y 9DSE9 |dV 9 g`9 9ָEeNqNq`HxAP&JBB1P<d2"H$K fQ` PQ<`+LNuNqHx*pPRB<e <`6V&SC%Q6<DSC< Q < "NGNGX#HNHrѨѩ:`JNq'89NHrѨѩ:`Nq(89NHrѨѩ:`Nq)89NHrѨѩ:`Nq+89BB y <DNFd | !N<>#D=NHrѨѩ:`PNq,89NFd | !N<>#D=NHrѨѩ:NqNq<`Nq<NqLNuH<<< 9UfT;`NqC;Nq&y BSC y"H$KSgNg<"`<'Nqgf<g<`<`<f<f<<PgF<pg@<TgT<tgN<CgZ<cgT<Xg<xfX;`^P;`DT;`2C;` Nq9Rg<ae <zd< RQ&9g|SD y "HR 9gRNq$HVRa<gV<0e<:eJ<Ae<[e><ae<{e2NqѨѩ:*89NHr`NqQ`9g|SD y "HR 9gRNqgh$HV&| jBR<0e <:e<Ae<Ger<ae<gefNqѨѩ:89NHr`2NqRѨѩ:89NHr`Nqfav<`ad<BNqNqQ@ y# | j# y # |# `vNq(|:< <gQ<NuNq<ae<W`<Ae<7`<0NuNq 89NHrѨѩ:`"Nq<`"Nq89NHrNqNq<NqLNuH/<F ,IBNqB9<gTBSNqg2NqgP<ae <{d< <ae <{d< g*fNq9g<=g<~f < fg<.f< e<d`ܲ<#f<0eδ<:e`²<-f<0e<:e`<@f$<Ae<[e<ae<{e`~<f<Aeh<[eh`^<$f4< gP<0eP<:eB<AeB<[e4<ae4<{e&`*g&`Nqg`NqBBSAVf`NqQNq"N9g )ap<g1`ab<g`9g )aF<g1`a8<f`9g)a<f1`a <gt`hNq<!eP<#gP<$gJ<@gD<"g8<'g2<(g,<)g&<0e <:e <@e<[e<ae<{eNq<`<NqNuNq<`NqBNq/<G LNu33##3#B9f9f 9f>B9gp.9N9=<e@ 9ZNGSЁ`BB# 9fB`j9=<dF 9:g$Nq9gNqNqNq.9N`0.9BBB9Rv`.9NB9> 9ZNG<#9Rf&S`"R<e<#9RfR#9RfXB e$W9،gS9،f 9،gSNq" NG<Ёk*NFd.`@Nq èSNqй9،gS9،gS`Nq~NqNqμ#(GfP9f f:`0Nq.9Rμ NG9G| y |F3&y.+μ#9f 9f`B>9TG#`xNqNqNqNqLNuH/<L Nq&y+f #Nq&ya.# 9؎gV$|avaް<f`NqRy>9G| y |F3&y.+μ#`NqNqNqNq/<Ma LNuH9gz"9 NFd |2"|00<Q 0<ND0 |0NB 0<ND0 9f 9f` ]8>9BBBBB9f 9g$y  9#9պd*9ָehCSFEe\RGSG y"|SggNqS0S@@e0R@N}<fRRFFeQ`Nq3<`Nq<Nq`"NqH@BBSAVf<NqLNuNqLNuH/<^ BBBBBB>99f 9gNq$y 9 9<g#eNqdNqCNq9ռeHERGSG y"|S0a<fSFEeSQ`NqSF3<`Nq<NqNqNqNq/<_a LNuH؊$|r؎،،9،g،،9،g،،.9Nμ(G&y~,+̼g.+f`8،(|&y~`Nq *|"<Nq<<0Q$|r# J# N6<*|JQN89g8$|r*|.<Q9،،؍#:J`^9،g>*| 9ZNG<,@S$|rE.9FQ#:J$|`Nq#:J$|ra.Nq$|9،g*|5.<$|Q9Rf2*|.<$|zQ*|5.<$|Q`JNqH 9ZNG9GG|PeV|` R؊a9GG|Pef|` b؊aN8#: j$|ɒa`Nq$| ؉ 9؎g#  nf^n9RfPrPv`,Nq>9GG|Pev|` r ؊aN8#:z$|ˢaNq$|&؉ 9؎g<# ~f^~9RfPтPц`,Nq>9GG|Peц|` т؊a>N8#:ъ$|Ͳa Nq$|6؉ 9؎g# юf^ю9RfPђPі`,Nq>9GG|Peі|` ђ؊aN8#:њ$|ab`*|9g #ON-*` #OFF-.9F،9؉؈ 9ZNG<,@SEQ`JNqH 6<-QLNuH"|&J*K(JB>:<SG< jTNq9g@< f:Nq 09`    1*Pg RE|dV`NqRE|dJ`D9X`<j<N<N9Rg`RE|dQdg؎9RgH 9ZNG9Ѧg09Ѵ#JѦ`J9Ѧga#JѦ`JѦ`"09#J 9Pg 9HgfNq9،g |("|J$IaNq |J"|N$Ia&yNj&|Nq#NNq/<g LNuNqBB9=9؈<gd<¼A9،f <d<`*<d<`Nq<d9،f<`<NqaNuH/<ha B(yN&yRcZ: 9Ѧf 9ѥfa#N`9ѦgP#N |R"|N$Ia(yNѦ9،gdNq |("|N$IaH(yN`F9Ѧg0<Ѧ#N`n9Ѧg 0<#N`B9Ѧg09Ѵ#NѦ`9ѦgaѦ#N`Ѧ` 09#NNq|fp#V9،g |("|V$Ia9،g |("|V$Ia`Nq 9VNd LNuNqH 9կf`$Nq9հ |ծ"|^0<NW<f`HNq9հ |ծ"|b0<NW<f` Nq9հ |ծgR9կ |ղN NG8 9NHr،،ѤB<ѷ`HNq?89NHrѨѩ:<`Nq@89NHrѨѩ:<`R؏#Z |r6< W Q"|(I |aH"LA |a6&|*|d,|X6< Nq"L |a r?C0|11f < HEL)@

#HNHr،،ѤB<ѷ`Nq=89B<="| #DNHrѨѩ:<`NqG8 9NHr،،ѤB<ѷ`rNq89B"H)=X#DB"|z)>X#HNHrѨѩ:<`<ѷNqLNuNqH9=9>Nq:89NHr | p2<94<6<NBX | p92<4<P6<PNBXB 9ZNG |צ0<Pa8<f, |r(H4<Nq L0a<fQB`x<`pNqHx(6|g4SCNqN ,<gN ><g6<N TNqN lQf0< N l< N lB`<LNuLNuNq`Nq`NqH9=9>`NqH9=9>`2Nq:89NHr | p2<94<6<NBXB 9ZNG`NqH9=9>`LNq:89NHr | p2<94<6<NBX | p92<4<P6<PNBXB<f* |Jr6< $g fQB` <d0<Nq9Rg倰f<NqNqW@69(g8<z`8<P 9ZNGNr`Nq(B9 |~Nr`Nq(B9 |Nr`pNq(B9 |Nr`LNqB9 |Nr(9g(9g(`NqNqLNuNqH 9N#:9،BNq:89NHr | p2<94<6<NBX | p92<4<P6<PNBXB 9ZNGNq 9*#N،N-,NqeTN<f |>"|N$INE 9Cg |("|N$INECNqN-,`Nq#>|= Nf=g2NT<f,S |>"|N$INEN-,=`B`<`Nq*.9*μ#N(G&y~,+̼g+f``lNq.SGNqN8 9؎g0Nr<fQ`6NqHpB <0"4<<g SCQNGLNu"9:#N9B،LNuHNq9R^9Rf RRRRNq 9կfD9^g 9V9Rgм`м#Va 9f`8Nq9հ |ծ"|g0<NW<f`Nq9հ |ծ"|k0<NW<f`tNq9հNq |ծ"|a0<NW<f 9f` >Nq9հ |ծ"|_0<NW<f, 9gZ9 | 9gJ9`Nq9հ |ծ"|d0<NW9հ |ծ<f 9fpgNq<f|B(< dnXSCB"|N"0"0 Q |N6<a <0k<:k<Ak<Gja <靊Q#Va 9f`NqHa lH/<?<?<NMPO#FLH/<l?<?<NMPOL yV"|6< N8<$|0Q    8<?Q    QH 9F/?<?<NMPOLa`*Nq< 9gS#ZR`LNuNq89B"H)=X#DB"|z)>X#HNHrѨѩ:9^R<`~NqQ89B"H)=X#DB"|z)>X#HNHrѨѩ:9^R<` NqS89NHrѨѩ:9^R<`NqP8 9NHr9^R،،ѤB<ѷ`vNqR89B"H)=X#DB"|z)>X#HNHrѨѩ:9^R<`NqV89B<= 9ZN"|0#DNHrѨѩ9^R<`NqH/<?<?<NMPO#FLH/<X?<?<NMPOL*|,M B4<B6<aNQ*|,M $(|B4<B6<a QH 9F/?<?<NMPOLa 9.(NFd |0"|6<Q9$<f |lN<f |qN<f |vN |{"|6<Q N |0"|6<Q 96,(NFd |0"|6<Q N |0"|6<Q 92*(NFd |0"|R6<Q N |0"|\6<Q | R%_fDiN BfApN NoN NqB |0(NFd |3"|V6<Q N |4"|]6<Q (NFd |0"|6<Q N |0"|6<Qa"|r&|J6<4<6 X QQ"|r$I |<g< g`R"J`Nqѫ 9Z#Ѯ#Z9R^RRѷ<U`VNq9^f9،99F 9N# 9~# 9B# 9# 9# 9R#$ 9r#( 9Z#, 9^#06< |w"|QF |#N |#Z |P#^ |#r |t#~# |D#B# R6< |"|wQR 9կg<կ&|JB9հѨ|A6<  Q9|Ѩ`Nq9RR9،9F9 9#N 9(#r 9#~ 9#B 9# 9 # 9$#R 9,#Z 90#^6< |"|wQ<ѷLNuNqaNq.( f&( f(Nq*--*`2Nq *g.`Rf--*`    NqQa.*N>,M NuNqHB?< NA\O#JLNuNqH/9J?< NA\OLNuNq`n<Ak <A< `<0Nu<ae <{d< NuH$ |8&<<NQLNu# ^NN/9 ^Nu# ^NM/9 ^Nu# ^NA/9 ^NuNV3eByBy3NN^NuNV# f# n .мZ# r3dBy3  n 3N n 0# v f# v n# r#\ jN^Nu# b"< bpsNBNuNV30.|Hм(-@=|` nH2n2RRn nm.NB@09N^NuNV#>#B#F#J#N#,R#>> aF3pN^NuNV>a*pN^NuNV## >ZN n0B@09N^NuNV>MN n0 n 0 n0 n0B@09N^NuNV3# >NNN^NuEef    -a:*.* FILENAME.EXTCCB=2.30TCB=2.30    ; < = > ? @ A B C D b a  H P  M 0K     EewEfpqHJ<Y=TCBPCB=2.30D (08@HPX`hpxFHw>=FH<FHG:=PCBDCB=2.30?SOFTKEY DEFINITION1 KEYS SOFTKEY DEFINITION3 F "&&" all SOFTKEY DEFINITION5 SOFTKEY DEFINITION6 SOFTKEY DEFINITION7 SOFTKEY DEFINITION8 SOFTKEY DEFINITION9 SOFTKEY DEFINITION10 HELP KEY UNDO KEY  * * * * * * * * * * * * * * * * =DCB=CCB<{˓K;Cz2 *"**bzj*rafeHY!EBROWSE Select a filename and click OK or type in a new filename and click OK  K K  . CANCELBY.YOU\CANCELBY.YOU A JBROWSE.HLP A\*.* Anewfile 68K PRG TTP ACC O SYS OBJ COM HEX REL ARC LIB IMG BLK PIC RSC S C H INF TXT DOC BAT SUB IC PLI FOR BAS ASM HLP BROWSE [fully qualified pathname] [drive:][\pathname\]filename[.type] BROWSE - select a new file * CAPS - convert to upper case COLS - display a columns line DIR - list file directory  DISK - not implimented yet * DISPLAY - define nondisplay char END - return to GEMDOS * FIND - find specified string HELP - display long error msg * HEX - display in hexidecimal * KEYS - display prog funct keys* LOCATE - start display at offset * MEMORY - display memory * PRINT - send screen to printer RESET - remove columns RFIND - repeat the find command UP - move up x # of lines DOWN - move down x # of lines LEFT - move left x # of lines RIGHT - move right x # of lines * TABS - set the tabs F1 - help. display long msg F3 - end. return to GEMDOS F5 - repeat find F6 - print highlighted line F7 - up  F8 - down F9 - right  F10 - left UNDO - return to GEMDOS  For complete documentation send $10 plus postage to WB SOFTWARE DEVELOPMENT. 112 Oakhampton Pl. SW, CALGARY, ALBERTA, CANADA T2V 4B2 To get more help on commands marked with *, enter command ? eg: FIND ? Cursor movement keys are the (4) cursor keys and tab  PRESS any key to FREEZE this panel KThis program may be FREELY COPIED and distributed for non-commercial, non-profit 4personal use only. If you like and use this program, I would appreciate it very 5much if you would send me $10.00 or less. This will encourage me to write and  "distribute more ATARI ST software, and compensate me for time and materials in 6producing BROWSE for the ATARI ST. Further, if you include the full $10.00 plus 5return postage, I will send you complete documentation. ( 35 - 8.5x11 pages ) WB SOFTWARE DEVELOPMENT m112 OAKHAMPTON PLACE S.W. kCALGARY, ALBERTA tCANADA T2V 4B2 * i* Copyright (c) 1985,1986 * i* by * i* WB Software Development * i* ALL RIGHTS RESERVED * i* . * i* vers * i* * OH PRESS any key to CONTINUE  2                     -CURSHALFPAGE""" lFIND F RFIND LOCATE LOC L TABS TAB COLS COL HEX CAPS RESET RES HELP ? PRINT DIR DIRS SETUP *KEYS DISPLAY PFK1 DOWN \PFK9 PFK10 LEFT PFK11 RIGHT PFK12 @MEMORY MEM DISASM  BROWSE ^ J *** WARNING The file is TOO BIG to fit into available memory. WARNING *** Trying small buffer option ! ERROR - during file read. Retrying... TERMINAL ERROR - too many i/o errors on disk !? ?0?0?0?0?0?0?0?x P OVATARI ST BROWSE - - -! COMMAND ===> 2SCROLL ===> PAGE LINE 0 COL 001 0801 HELP 2 F "un 3 END 4 5 RFIND 6 PRINT 7 UP 8 DOWN 9 RIGHT 0 LEFT Getnchar logic error**-TABS ON-* TOP OF DATA *-CAPS ON-** **-TABS ON-* BOTTOM OF DATA *-CAPS ON-** -+-1-+-2-+-3-+-4-+-5-+-6-+-7-+-8-+-9-+-0-+-1-+-2-+-3-+-4!  ';$INVALID COL1COL1 MUST BE <=  . (132 - STRING LENGTH + 1) .INVALID COL2COL2 MUST BE >=  . (COL1 + STRING LENGTH - 1) .TOO MANY PARAMETERS2 PARMS MAX. HEX [ ON \ OFF \ ? ] [ VERT \ DATA ] HEX SYNTAX BELOW:HEX \ HEX ON \ HEX OFF \ HEX VERT \ HEX DATA \ HEX ON VERT \ HEX ON DATA .TOO MANY PARAMETERS1 PARM MAX. CAPS [ ON \ OFF \ ? ]CAPS SYNTAX BELOW:CAPS OFF \ CAPS \ CAPS ON \ - translates find strings to upper case before comp.CAPS set  .FIND strings  be translated to upper case before the string is compared.SMALL BUFFER being used.The file is TOO LARGE to fit in available memory. Using  char buffer.FILE was TRUNCATED.NOT ENOUGH MEMORY TO HOLD ALL RECORD DESCRIPTORS.  chars dropped at end.FILE NOT FOUND.THE FILE  COULD NOT BE FOUND. CORRECT THE NAME AND TRY AGAIN.FILE NOT FOUND.THE FILE :  COULD NOT BE FOUND and BROWSE.HLP does not exist.FILE NOT SPECIFIED.THE FORMAT IS : BROWSE filename.filetype eg. browse browse.hlpPRINT SYNTAX BELOW:PRINT [ SCREEN\DATA\LINE\from# to#\* len [ ASIS ] \ SETUP [ D\L\W\N\hexstring] ]CONFLICTS WITH HEXUNABLE TO SEND AN UNFORMATTED HEX FILE TO THE PRINTER. Remove ASIS keyword.ENDING LINE INVALIDTHE ENDING LINE NUMBER MUST BE PRESENT , NUMERIC , and GREATER THAN START.PRINTING-Please WaitWAIT UNTIL THE PRINT FUNCTION IS COMPLETE. Press CTRL-Z key to CANCEL.PRINT COMPLETED.THE REQUESTED PRINT FUNCTION HAS COMPLETED.PRINT CANCELLEDPRINT CANCELLED AT OPERATOR REQUEST. (CTRL-Z key pressed).TOO MANY PARAMETERSFOR THE  SUBCOMMAND.KEYS SYNTAX BELOW:KEYS [ pfkey# default-pfkey# ] or [ pfkey# new-command-in-quotes ].INVALID PFK NUMBERPFKEY NUMBER MUST BE BETW:EEN 1 and 12BAD PFK ASSIGNMENTREQUIRED 3rd PARM MUST BE pfkey# 1-12 or A COMMAND STRING IN QUOTES.PFK  RE-ASSIGNEDPFK  HAS BEEN RE-ASSIGNED TO A NEW ACTION.# LINES TO PRINT INVALIDTHE NUMBER OF LINES TO PRINT MUST BE PRESENT and NUMERIC.PRINTER NOT DEFINEDTHE PRINTER WAS NOT DEFINED IN CONFIG. RERUN the CONFIG program.TABS SYNTAX BELOW:TABS [ ? \ HELP \ ON [x] \ OFF \ SET [a] [b] [c] [d] ]FIND SYNTAX BELOW:FIND T\C\P\X"string" [PREV\FIRST\LAST\ALL] [WORD\PRE\SUF] [startcol [endcol]]DISPLAY SYNTAX BELOW:DISPLAY [ 'non-display-char' ] \ [ CC \ CRLF \ NOCC \NOCRLF ] eg DISPLAY '?'DISPLAY VALUES BELOW:DISPLAY '' .MEMORY SYNTAX BELOW:MEMory [ ? \ HELP \ [ [ON] addr ] \ OFF ] addr=0-F eg. MEM 0500MEMORY ADDRESS MISSINGMEMORY ADDRESS MUST BE PRESENT 0-F eg. MEM 0500MEMORY ADDRESS INVALIDTHE MEMORY ADDRESS MUST BE 1-8 HEX DIGITS 0-F eg. MEM 0500TOO MANY92N;ELOW:BROWSE [ ? \ [ pathname ] pathname=[drive:][\foldername\]filename[.filetype]ACCESSING NEW FILEPREPARING TO BROWSE FILE : ''.PLEASE WAIT.MEMORY ACCESS ERRORA BUS ERROR OCCURRED STARTING AT ADDRESS : '' . MEMORY DOES NOT EXIST. help?onoffdataverthelp?onoffhelp?ON OFFWILL NOTWILLhelp?                      ASSIGN screenlinedataasissetup*help?wwidennarrowddraftlletterFROM-TO !y2ծJ~first next last prev all FIRST NEXT LAST PREV ALL chars word prefix pre suffix suf CHARS WORD PREFIX PRE SUFFIX SUF help? =~.#-@<>$?51?*#ax-+-3-+-3-+-3-+-3-+-3-+-3-+-3-+-3-+-3-+-3-+-3-+-3-+-3- ++-31-++-32-++-33-++-34-++-35-++-36-++-37-++-38-++-39-++-30-++-31-++-32-++-33-  KEYShelp?1 HELP 2 3 END 4 5 RFIND 6 PRINT 7 UP 8 DOWN 9 RIGHT 10 LEFT 11 RIGHT 12 CURSOR currentdefault PFK ===> To change a PFKEY, enter either format:KEYS pfk# default# eg. KEYS 2 6 - Key 2 will have same action as PFK6 ie. PRINTKEYS pfk# "command" eg. KEYS 6 'F "UNDEFINED" ALL 45 132' - PFK6 is FIND cmd**WARNING** - changes are temporary. To make permanent, use CONFIG pgm.DISPLAYccnocccrlfnocrlfhelp? 0 onoffmaphelp? 256K 512K1 Meg?K 16 Megabyte Memory Map 1 1 2 3 3 4 5 5 6 7 7 8 8 9 1 Memory 6 2 9 5 2 8 4 1 7 4 0 6 3 9 6 0 Address 0 4 8 2 6 0 4 8 2 6 0 4 8 2 6 0 2 ;4 x = 0 1 2 3 4 5 6 7 8 9 A B C D E F 000x0 * 0 001x0 4 002x0 4 003x0 TOS reports x $x bytes of RAM present  004x0 Memory $0-$1000 (1st 4K) is read/write protected 005x0 lower limit of program area is x $x 006x0 upper limit of program area is x $x 007x0 RAM available for programs is x $x 008x0 NO CARTRIDGE is present at FA0  009x0 ROM present at FC0 is Version x $x  00Ax0 Hardware registers (restricted) start at FF8000 00Bx0 (just reading them could cause system abends) 00Cx0 4 00Dx0 4 00Ex0 4 00Fx0 4 1234567890123456789012* MEMORY OPTION * -&@ PPPPPPP`PPPpP P  PP0PPP@PPPPPPFirst line of 5memory displaySecond line EThird line FFourth line EFifth line FSixth line FSeventh line DEighth line ENineth line ETenth line FEleventh line CTwelveth line CThirteen line CFourteenth line AFifthteenth line @Sixteenth line BSeventeenth line @Eighteenth line ANineteenth line ALast line 9Memory display`$r    &             *        B  D           0 "       ,  (6   *       ^                      "$,    <  "    P *        $. &4  $  * Z          $ (  $ $                      * &0    &                                                        0*.  R            $  8           2>*X*Z 8JN  & ( $ 66VlN6   &$.  (&  z      $                          T            p0            & FF  " "                                     @                      *                                   p"2 $0$ $ $   ,    0    .h    $D4< D,V.**        $   ( "    &  (       $X (2  &                              40H"B2       $*,          (     ,    B*F   vR                       J   (    8 8" " @                4<           0>   @,      &$2$  " (       N    $    08`*O.| h*m - ЭЭм// ?<?<JNAX*_XKO hA\aa |C l"س fa 9 l4Vxg"Aa\ASaRa< fBgNAAa:9 a<:aBAV9 bdJfgaAaBA5a<0a<=a$BA p"0 aNA:a<0a<=a$BA "0 a R<f69 A!aA)gA-apaA1 gA5aVahA?gAAaa"9 aFANa"9 a4I &y a" a <:aa"aX fN|/HAa"?IIa2Ia 2?Ia2|< c^<0`fH?< NATJk LBNuH?<NATLJ@fH@<NuH@|De|TcH@`H~/?< NAT _L~Nu2< H??<NAXLNu2< a2< `HJfB?< NA#\LNuHJg/9?< NAB\LNu * * Crash Analyzer * * 1986 Compute! Pub. * * NO SYSTEM CRASH DATA IN MEMORY! LAST SYSTEM VECTOR WAS # AT Registers  d a Stacks: User= Super=RESET Intial Supervisor Stack Pointer corrupted.Program Counter destroyed after RESET.Bus Error.Address Error.Illegal Instruction.Divide by Zero.CHK instruction.TRAPV instruction.Privilege Violation. Trace Not On. Line-A error. Line-F error. Reserved.Unintialized Interrupt Vector.Reserved.Spurious Interrupt.Level 0-7 autovector interrupts. /TRAP 0-15 instruction vectors.0?Reserved.@User Interrupt vectors. Flags: TrcUsrSupXcXs+- 0VcVsCcCs --Press RETURN.--4              6J`8ZN8T8F8N`7$/9#@F%H`?<?<NMXLF#Nu/9#@F%H`?<?<NMXLF#Nu/9#H`?`` 2`` J`` `6`T`H`````@``` \`HSR D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 PC USPSSPBEVAEVTS IXNZVCBreak by user trace programException # : Error : Loading from Saving from , first unused address : Return from GSTraceIllegal instructionIllegal interruptInterrupt #Trap #TRAPV instructionCHK instructionBREAK instructionDivision by zeroPrivilege violationKeyboard breakEntry by breakpointEntry by breakpoint #Tracemode not activeactive C: R:BUS ERROR at ADDRESS ERROR at - SR: / super SR: / instruction: Protocol file openedclosed TOS error #Breakpoint set at Skipped.Unable to set breakpoint at No breakpoints set No sufficient memory block available OK. Block hasn't been allocated TEMPLEMON V1.12 installed. aJfg f`.C g e cF fgpFa^`P1 aP1 aH1  ga:f$p=a*CRa J 1 ga`aNua,gCa0,aCa"la,g( ,aC+a0,aC(ar0,a,g0,azNuCaP,gC`C`:arapRaptatataaBBCa1 g"aD1 H0,Th1 aVBgNuBlBgT)Ia`BgTaDaha0O abaBSaHk !g gC4<AgXQ`a N`BBJlga6`aCaDC`JgJfQa,`f|`|`|`|`|`|`|`|`|`| `| `| `a(| `a | `|`|`|`~|`x|`r _<F"8:*_N?,BlaM*Na g, gV2,RAld gN eab` & gR M9_gP ga`QM`dAԽgS`g`aJ@g6aDH@ ;fap /g> EgV OgV Af`자`Ё@aCax0``zJAg|/arCaR H@`b`V`Pkr -f@a*`f SfpARCJ"QNu RfpCRAJ"QNu +g :g4 . gBa(`x`a(,F JjBC f/ <Ȁfv (4gXfN fpD Cf X@gp8ld0a( g frD`  frAp;aa`pRa~aJCf fRC cBC fNu f,Tgt`tNu FgNakCABBg VRBe`a)f ) g.aZ)faba`\aXk$ gCggV`)RNutNu aTt Dg Afxt xCRaa4ka^a,6K#0RBQNua"ab)bHHhiF@lTlT`Fag0a =f&fa fa`aCRJ# Jfg `ajNu a`kX -f"aTjBFNuBaFfǬFNu +fa,j)|FNuBFBagFFNu(,F` ak"A)IaJGjNua RfVa2Nuk8 -faB,T`" +faA#$|TaatCda`JaBC%` ",JGkV Sf aFklal ,g ak0 ,fX l da/aaD"aJGjJg: AJP)AJj,TfC`CKf Q! "aPagRh,fB,DJj$Jy>f,T' 'fT`TJ,TkgT`afF` gC z.faGQa lN`.l/,?,TLVNsBlG!G`B@A$,g R@ @fNu @Nu0, A $,`WNuHT(zPHV)_9_T)_B,)ONh)HO a(J,ga,f<T`J,Tg lX` lX)PB,T,gTKgfb 9g*,Tg)l`)lAR"@NJgCi`zgafgTCeJ,gNJ,g,ag&YSh"f1h "9@CO|`&`fg8,TfA`A ,b l PNug PNwg PNsffPDfaV?Bg (,Fa$la , &Ja<> aapa g 0fTa.a ` 1fT` FfT`& RfHJ,Tk ,TfC`C QK! "`,Tf)l`)l` Og g Af` Dfp!ap,a, a ab`. Sf)KCa` Bf"agCWad apa&`0, @ gA H!Rl Nu.E`42J QJf NuJ,g?HQC%a aa0tNu/9A#*YBBBDAE,g #`Jg"haTJRD eCBC0, gBDA E0` "XanTJRDQ9CB#JBgaCRaa< g<ftNuBGEg "S QJf2XTR eNuB,D6,Bg,BlB0, BBC E0`g Q PJf0XITJRBQBl NuC a.jaZaffe`Sf)JNuaktBCagR*NgD gFRB  g ?f fR`g `a6a aZ`a"jRJBk`Nu C agRapB f@Rd RDBc`Nu C aLgaNAXLNuCaݤ` ak/ ,g a>k fBgx BBQaaHk2 @f"aaf)APa*k ,f@aCa^"_Nu/ ??,/?<BNA $_JkNu -f2a a8j/?<INA\ JgCH`C:`a0/ Bg/ ?<=NAP$_J@k9@pra)@p",az",’)Af/ /?<HNA\$_Jgk$@)@f&JCa^ aj/ / / ?,?<?NAP$_&_JkBa\Ca* `6ag"/ Jlg ?</ ?<=`Bg/ ?<`<`B`x````` `"`"`x``````|```Z`l````` ` "` *p.apWaa lkNup)`p(`*p#`p$`p,`DA<&0@x0@g@@aSDfA.N vp*aQaU`x6KƼ Cg CfaX Cfa` Cfp-aפ CkalpD CgpAa׌0@|0a~ Ck Cg,a< Cfp+abNua8a2`,a(0`"a"pD2jpAa60HH@|0a$p.apW gpLa`6C8 CgRDf&6KKC Cg CgCCf4gL^D6KCC`L`gggg0@f00an0ah0@f Dgp/aP` p-aHRC C8fNu8 6C8 C gK"`K aa8`Fa8 Daa`a8Da D kp0R@| D ja80|0`.p.a*pLa$8af D(apUa pSapP`Ϡaax D `a@aad8D`a*aaNpSapR`aaa8pCaa`a 8aFpAa@0H@0`2aa`8 Da$LL`DD6KKCCNua.`a`a`p.apLf pBgpWa`Ƽgb<gT<j\ Cg <f&6C Cj։`։`& 0HրaaPpPaxpCarg8`"a>0a8`a,a,Kg<ga`0`6KC B`k BbjC A00a00`$IL{NuA#A# A|#$A# A#A#A#A#A0#`A2#d#l#t#|M<#p @R@ @Pe|A AR#Nu B?< NA\A 9|g*oA` - Э"ҍAȤ (AQ"@TЍ@A0 "A*0мA aAMBXeBp)@FXE Y$LE Y$L9|P9|av/:2?< NA\Hz֮?< NA\Bg/:?<1NA yN/:?< NA\BgNANuN NuN8L8LN TEMPLEMON short command summary /Version 1.12/ 6.2.88 NOTE: All values are displayed/entered in hexadecimal. "!" is the monitor's prompt. stands for first address. stands for the first excluded address (roughly expressed - ending address). can optionally be replaced with X (n = number of bytes) and in some cases with Z (n = number of lines to be displaed). The ending address can be replaced with a "." (i.e. "M 1000.") when used in the functions "M", "D" and "I" to achieve an open-ended listing. The contents of a register may also be used in place of an address using "R" as a prefix followed by the register (i.e. "D R PC."). Decimal values can be entered with "&". The value of any register can be entered with "R". The plus- and minus-signs can be used to build expressions (i.e. "M RA0+2"). Any address can be prefixed with the offset-variable "O" (i.e. "M O24E."). See the "O " command later in the overview for information on setting the offset-variable. All output to the screen can be stopped and restarted with the /SPACE/ key or aborted with any other key. Try out the F1 and F2 keys ! F1 displays the monitor, while F2 displays the original screen (TEMPLEMON uses its own screen to protect the original). M Memory dump (values displayed are byte size). : ... Store bytes starting at . D Disassemble an area of memory. O Set the offset variable "O" to the value . C Copy bytes from ..-1 to ..+(-). V Verify bytes (see "C" function for range information). H ... Hunt (bytes). Use "?" as joker. H '" Hunt (string). Use "?" as joker. F ... Fill memory with bytes. Use "?" as joker. F '" Fill memory with a string. Use "?" as joker. I ASCII dump. ' /SPACE/ Store ASCII-characters (bytes) into memory B Display all breakpoints B Set breakpoint number to address B- Clear all breakpoints G Leave TEMPLEMON and continue execution at address (NOTE: is optional). GS Call a subroutine at , then return to TEMPLEMON. T+ Trace-mode on. T- Trace-mode off. NOTE: If Trace-mode is on a "G"-function will not execute directly, but will wait for one of the following keys: /SPACE/ for executing displayed instruction /ESC/ to enter monitor commands (enter "G" to continue tracing). /O/ to execute without display (stops only at breakpoints or when ALT/HELP is pressed). /R/ to return from a subroutine (execute without display until return) /A/ similar to "O", but forces all instructions to be traced. All Traps can be traced and breakpoints can even be checked in ROM. (NOTE: Trace will be disabled while the interrupt-mask is set to 6 or 7, or the system-variable $43E (flock) is non-zero.) /F/ similar to "O", but the program will run with full speed (no tracing). /D/ disassembles next instructions. /B/ sets breakpoint at next or displayed line. You can use this command whenever you want to skip over a subroutine call or a loop: If the next line looks like "JSR

", simply press "B" then "F" (or "O") and the subroutine will be called without having to trace it step by step. If you want to skip over a loop, press "D" several times until you have displayed a line behind the loop. Then press "B" and "F" (or "O") and you will get behind the loop. R ... Show selected registers (D0-A7,SR or F,PC,SSP,USP). R = Store longword into register . R F = Sets flag to value (i.e. "R FC=0" to clear the carry-flag). R: ... Set register-default-display (i.e. for Trace). R Show all registers. RS Saves all registers RR Restores all saved registers. P Clear screen (output a form feed). S , Saves memory to a file named P Open a protocol file. All outputs will be send to the file (i.e. "P PRN:" sends output to printer). PC Closes an opened protocol file. Q Quit ( calls Pterm0() ). I hope that you will find TEMPLEMON useful and that your bug-swatting problems are eased by my monitor. If you would like a more detailed description of the TEMPLEMON debugger/monitor with additional hints on bug-tracing please send a donation of 15 U.S. dollars to the address below (Please add 7 dollars when you send a check). THANK YOU AND GOOD HUNTING ! Thomas Tempelmann Nordendstr. 64 D-8000 Mnchen 40 West Germany `*O.|*m - ЭЭм// ??<JNA /<l?< NA\aH/<?<&NN\/</</<Bg?<KNA//<?<&NN\?<LNA\NuBg/<?<=NAPa(2/</<??<?NA a ??<>NAXJkNu##Nu#Nu yN O\0 fNh hf hOf#3 3H"y<9:9ĺ| m|SEMM$|SF~"QQLpNsfEb I.Cs Workshop Presents.HANG_ON?.DATHANG_ON?.BRK.0 (  -! TEMPLEMON -# Copyright (C) 1986, Thomas Tempelmann Thomas Tempelmann, Nordendstr. 64, D-8000 Mnchen 40, West Germany -O The versions 1.xx of TEMPLEMON may be considered Public Domain and can be freely copied under the following condition: TEMPLEMON.PRG must be in a folder named TEMPLEMON when a copy is made for others. The files READ.ME and INSTRUCT.TXT must be included in the folder. -O Dear ST User ! TEMPLEMON is a machine language monitor and debugger. It preserves you from any bombs your system usually produces ! The program runs on every ST with b/w monitor or color monitor. It is useful to copy TEMPLEMON into the AUTO folder of your boot disk. It installs itself and stays resident until the system will be rebootet. If a system error occoures, e.g. a bus error, no bombs will be seen. Instead, TEMPLEMON will display a message. If you're familiar with the 68000 machine language, you can disassemble (e.g. the command 'D RPC-20 Z15' disassembles 15 lines beginning 20 Bytes below the address where the error occoured) or trace the program. You can enter the monitor at any time holding down the Alternate key, then pressing the Help key. You can get a more detailed manual for this program if you send me a donation of 25 German Mark (about 15 U.S. dollars). Please add 10 Mark (~ 7 dollars) if you send a check instead of cash. To prevent some questions: - TEMPLEMON will not be able to use symbols (like SID). - You cannot load programs with TEMPLEMON to start them. Instead, you have to place an 'ILLEGAL' (code is $4AFC) instruction into your program to get into TEMPLEMON after you have started it from the desktop. Thomas Tempelmann Nordendstr. 64 D-8000 Mnchen 40 West Germany  `]B~*O*m - ЭЭм" Ҁ¼.A// ??<JNA ND/<NAN1vN6N5NjNNlNuN68N53}63}:3}<3}80<3}D3}F3O}@3 }B3 }0f9f3}H#n}NNuN63}V3}XN6v |d@N1H3}V3}XN6v |dN1H3}V3}XN6v |dN1HN7N5N6NuN6JgH@<DgH<Kf N`ܰ<Mf N`̰<Pf N`<HfN`Nu#}l}2NJNu#}p}2NJNu 9}.g #}.` #}*}.N3hNu 9}.м}*n #}.` #}.N3hNuN6 y}2 9}.S"pN3 }V3}XN6vN50/D@|m0<H"|o qN1HN7N5N6^ _TNN5#}*#}.#c}&#c}l#c}pN3hNuN5#f}&#}*#}.#fH}l#fh}pN3hN6F |fN1HNu#}*#}.#gF}l#g^}p#gv}&N3hN6F |fN1HNuN5#eN}&#e}l#e.}p#n}#}*#}.N3hN6F |fN1HNuNNd#}*#}.#g}&#g}l#g}pN6F |h;N1HN3hNuN5#kx}&#}*#}.#k8}l#kX}pN3hN6F |nN1HNuN5#nB}&#}*#}.#n }l#n&}pN3hN6F |nN1HNu#}*#}.#l}l#l}p#l}&N3hN6F |m4N1HNuN5B9tA^eaF6JfpDB9t~B9t}t Dg? Tg? Hg: Sg7 Fg6 Mg6 Lg2 Bg2 Gg3 Rg44 Cg6J Ig5 Eg`f09}<-?N6Q*|h>< ?N6QN6N6(y}J*L3}\}Z6<8:9}h6N4N46(M><?< N6QN4y}ZN6QN6L8}3m`jNuN6F |f#N1H3}V3}XN6vN609o.|f3}3}`3}3}3}f#n}N NN3}XN6vN5N6F |fN1HN68N"N6NuH#}}J3}\3}ZN3N63}V3}XN6vN6*/<}jN7N68Jy}jkV09}XY@H49}V|H„B29}j&y}JN5$ y4}Vm 3}VVy}VN6v` 9~H@<KgB<Mgf<Pg<HgB<Rg<rg<gN5$N6v`<09}V|n 37}VWy}VN6vN6`09}V|4m 3}VVy}VN6vN6`N6809}X|m09}\y}f@y}\}J3}V}dN33}d}V3}XN6v`Vy}gLy}\}J3}V}dN33}d}V3}XN6v`Ry}XN6vN6`$N6809}X|f09}\|gy}g@y}\}J3}V}dN33}d}V3}XN6v`Hy}\}J3}V}dN33}d}V3}XN6vSy}XN6vN6`j3}V3}XN6vLxNuH3}V3}XN6v |eN1H&|en6<-?N6Q |eN1HN6N7<yg <Yfl09o.|g2<??9}:?9}6?9}8?9}NN.NNQ>N6N6FN5N.N |nN1HN7NNNN6FN5N6F |oN1HLxNuN333<<Nv3<9}8Nv3<<Nv.<9gSf?Nu?NfN6N7N6F |fN1HN5`09}y}Bm 0<`R@3}H <0fH@<0fN3hNu09}|oS@`09}B3}H <0fH@<0fN3hNu3}3}3}f 9}JnH@J@g }J#}J}3}\3}V3}XN6v |f#N1HN N6FN5N6F |fN1HNNN6^N6Nu3}\#n}J3}3}f3}X3;}VN6v |g N1HB@0<?N2 |gN1H3}X3}VN6vN6N6N3N6H@<Hg8<Pg<g <Kg<Mg`N`N`09}\|gy}\}J09}\HH|3~3;}V3}XN6v |g N1H?9~N2 |gN1HN5`>09}\29}|Agy}\}J09}\HH|3~3;}V3}XN6v |g N1H?9~N2 |gN1HN5`N6Nu/ 3}XN6vN5 |gN1H4<!(|en?N6Q |g4N1HN6N7<Yg <yf8?9}?9}:?9}6?<?9}<(N(NuN69Nd@?><(Q>FNuNNd3NdNuNNd3nNdNuN09}<|n6Ry}: <@|9<FNuN3<NNuNB}~@~F'333<<4<3}Լn#}Nv <n   3<<Nv.<*y}0<Q9g.Sg\ } } }}~n3:93}|g3NF~Nu``NNh3<9}6Nv3<<Nv.<Sg9fNu?NN.NNNN.NNFNNQ>NLxNu3}\#n}J3}f3d}h3}3}N6^N6NN6NuN6FN5 |oN1H09}<|nNNN.NNNNN.NNrNNNNuN333<<Nv38<<<.<Nv9g Sg `QNu?B|m`09}H3}>H<0hH@Hd<0hH@H <0hH@<0hN3hNu?By}Hm0<3}>H<0hH@Hd<0hH@H <0hH@<0hN3hNu09}>3}N h09}J@g*|l"S@3}>#}.NrN!NuN6F?|}y}??9}/<n?<?<NMJ@k&N6FN5N6F |h;N1HL88Nu?Nf`N6FN5N6F |eN1HN6N7N5`NuH?9}<09}>U@}y}J@j0<3}??</<n?<?<NMJ@kl09} H@R@3}8H@43}:29}|fHg 3}:3}6N"N"N6F |h;N1HLxNuNJf@?Nf`09}:<0e09}8H <0eH@<0e09}6H <0eH@<0eNu3}\3}f3?}h#n}J3}3}N6^N63}V3}XN6v |hPN1HNNuHNNdN3}V3}XN6v |hN1H3}fN5&|~(K#}J#}NN6^N&N6^#~}JN5N'N5N6H@<gʰ<Hg,<PgȰ<Kg<MfN`~N`t09}X|o@3}VN6vN'Sy}X3}VN6vN5N'N5`V ~}JgH 9}J09}fR@ }JN&3}X3}VN6vN5N'N5`09}X|nd09}XR@|H,y}J6g3}VN6vN'Ry}X3}VN6vN5N'N5N6v`\09}XR@|H,y}J6g>09}fR@ й}J#}JN6^N&N6^N5N'N5`NN6FN5N6F |h;N1HL8Nu y}J09}X|H0 <g,09}S@3}>#}.Nr`N`Jy}g09}#~~ BC09}?9}9}f< ?N6< ?N6B<< 5HgR?N65HR?N6Q3}N6N(3(}N6N(237}N6N(r3}VRy}XN6v Qf3}V3}XN6v |iN1HNu3}`&y}J3}69}X|H< ?N6?N638g`?N6R<< 38R?N6Q3}N6N(3(}N6N(237}N6N(rNu3}`< ?N609}X|H3I33}?N2< ?N6Nu69}X|HB&y}J38383838/N2?< N6Nu69}X|H&y}J38<gl38 <g6<g<<gB<g |jN1HNu |k&N1H` |jN1H` |jN1H` |kN1H` |kN1H`N6FN5N6 |kN1H?9}6N2 |lN1H?9}:N2 |l%N1H?9}<NN+p09o2><N+p0<<N+p09}609}:09n09o.|g*|g|g 2<`2<`2<`2<09o4><NN+p09o2><N+p0<><N+p09o.<N+p09o6><NN+p09nR@3ny}o09o8><NN+pNuS@QNu <   Nu333<<Nv3<<Nv.<Sg9fNu?NNN.NNN+zN*XNN+N6N6FN5N.N |lqN1HN7NQ>NNN6FN5N6F |nN1HLxNu|cm 0<`R@Nu09o0N,3o0 <0neH@<0nfN3hNu09o2N,3o2 <0npH@<0nqN3hNu09o4N,3o4 <0n{H@<0n|N3hNu09o6N,3o6 <0nH@<0nN3hNu? @e6@Aca `$Jg @gf AcaAcaS` ?g gRf AcaAca`2AI4JBJAAtg ` 0 9c^Acab`vAaaTArRaJAa@a@Ab a6Aqa,$9u:Aa7aAa#aAaea`Aaaa4J9tf3t`pa $A`aA` aaJ9tf(M ga *@a `|A`aJg$ 0gd 1g 2gF 3gd`ArRaa DA_aVaJ9tfArRaaXa z`a $af yt 9tR29ta`A_aa Acxa&MA_aA_aaJ9tfAcxa۹l`a a `B9tAbEa Jg Ag Bg Egf`Abva~AtpaAtGtJg ?W` tAt e"yt$ytGta(&9tCSCAs e b`p.QB 9St}f a`aLtR`AbaArpfa Ng ra R`a < a LNuaaF`a ag Qg qgx Pgp Vgh vg` Hgv Ugn ugf Mg Rg rg Kgb LgZ lgR M6g`nNu3cAcxa aF`L3cAc{a ؛a&`,Jycg@ ycgrSyca$`b3cAc{a r:a`@p a h3c` ycg yclPraRyc`r `aB9tBBa2J9tg Ja 09caja``aZ`jPta DH @d&a iLPt ae ` LJ9tfNuAcl` Aco` AsSACQBAs` AsSADQBAs` fp a Lr>a3ca K4g PgR Hg~ Kg^ MgPt29caRa^aTraXRyc yco3cAcxa a(`nraBSycJycjd3cAc{a a`8p a |3c`aa$t*yt 9St}g`0aPAra Pa ag Qg qg` 9teaAr 29ta`(MTGsa 2Ar   $ a P   4a X bCr) dAr& NuBNuaaDJ9tft#tu:`B9tB9tB9t#E$.yuJ/9u:@29tAA@?LtNs@tHt\u6J9tffJ9tfpJ9tfz*yu:Gr 9St}gRaAr 29ta~ArafAc!a#u:` #u:LtNsAcra aHAcua aArava M6g Rgz rgr K4gr Lgj lgb +gd ag Qg qg`Nf#u:` #u:#uJ\uJ|`Pt`Pt`PtBuB#u>Aba`u>n4RuB`ֿu>m RuB`¿u>f RuB`$9uBAc aZAca^B9tB9tB9t`F(MTa Aaa^af B& rNuAa$ atAaCa9tf -R`QNuEt  Da  AaB& rNuv $ KaQNuBytA``aJfpSt} EgV Sg Fg Pf3tNuBytA`-aJfpMt~ Eg 9Dt~g 9Pt~g 9Mt~g`A_a 9StgB 9Mtg6 9Ttg 9St}faJ9tg*yu:#tNuAclaaJ9tg*yu:#tAcoaA_aaJ9tg*yt#t(M*ytNuArRaa, aX*@#t(@#tArRaa>``?</NAT#t?NAXJ@kNu?</?<=NAP3tJ@kNu//??<@NA Jk?< NAJ@g(av ag Qg qg gNuF9tfAbaNuAba`/ /?9t?<?NA JknNuAra\?<Hyr?< f`  f g Z`  f g `  f(2Ig  b ? e ` f e -g ` f` 2I g :b (e- g He g " e - pf A]`b qf A]`P rf A]`> sf A]`, uf A]` vf A^`A]a`>- f-8 fDa-ab,<H`:BB@ g2e@A^/ gNua܍Ta` f SR`RA`BA]afQ -#a,aa`t6KC g g6C Cf S`A]a a`4A^a`6KC gf g^gV-<? bPA]aMt`6KC gJ gBg-? d- @dA`A]aba`A]aP`L- g - ` JfAS`6 fLS`" fROX` ROf R`L f`haa0-g a4`f|#0,-a`0NuD`A`(a)Nua+Nu-`B<a`B,a( g,a*`fa:>,a0`a >,a`- a:`6KC fx` fx` `vAaa g??a6>,Jg`a,`zB-Hf<HNua- aaV`A]a -   f a<`a.,-g a `a`A]`tA]`jA]``A]ab- ` gA]aF` A]a8 f S`U xva`FGsA]aP6KRa gaTab,-a|`-ap,a0a>`B2IfA^a`@ fA]a`* fA]ap` fA]aZ f xa`2A8 Ag$aa`Jf A]`X f A]`F f A^`4 f A]`" f A]` f,A]aI- ?  Program termination requested Kstart address: KSOURCE KDESTINATION CCCCCC end address: Kbytes free: need: Kinput-> M)emory, P)rg file, D)ata file, E)xit: Koutput-> S)creen, P)rinter, F)ile, E)xit: K1) file to memory 2) memory to file 3) memory to memory 0) exit: Kpathname: I/O error no $_ KDo you want save altered file (N,Y): Current prg. adr: _ p From $_ to $_ q p text $_-$_ data $_-$_ bss $_-$_ q _ status: _ XNZVC KNew CCR value [$0-$1f]: KDATA file: PRG file: Kbreak point address: Khow many times: Ksearch Ascii string, Byte hex string , Exit: Kascii string: Khex byte string: found at memory adr. $ found at file offset $ not found at: pause Kcontinue working... Ktraced _ instruction > traced exception < Bus errorAddress errorIllegal intructionjkpq I ABDCjA CCkq0DNNNPP@ccdd dd$d-d; Track Track w/sync Sector Cluster Format FATS Options Disassembler end Super Disk/Programming utility v1.0  by Richard Morris (track editor portion by Abacus) call Chem-Link BBS 918-437-3837 Select menu items using cursor keys @, Lrp Leneyeeeeee drive: 0 side: 0 track: 00 sector: 01 READ WRITE EDIT BACK p Write this sector to: qp ? qp Not written. qp SECTOR MODE qp EDIT MODE: < return > := END q@  rN eneyefffff Sec/Trk : 09 READ WRITE EDIT Tr. BACK p TRACK MODE qp TRACK WITH SYNCS MODE qp Sector: qp Write this track to qp < yes/no > q@reneyeggf READ WITH SYNCS ADDR. FIELD r! \#b! \#benheheh4h&e CLUST: 0 NEXT STARTofFILE EDIT p CLUSTER MODE qp When leaving CLUSTER MODE, last read Cluster is updated in SECTOR Menu qp This was the last cluster qp Filename: File attribute: Start cluster: Number of bytes: qp Put start cluster in menu with read with , . qp Write this cluster to: q Bytes per sector: Sectors per cluster: Bytes per cluster: Sectors per directory: Sector per FAT: Sector number of second FAT: Sector of first data cluster: Number of clusters: Number of sides: p First directory sector on Side: 0 Track: 1 Sector: 3 qp First directory sector on Side: 1 Track: 0 Sector: 3 q Subdirectory Read/Write  Read only  HIDDEN File Deleted  Diskette name @ )J+rN)J+eneyefkkkk FORMAT XFORMAT GAPS BACK p Format track mode qp Track: format ? qp Not formatted  q on side : of drive:p Really format with new GAPs between the sectors? qp Wait a second, then press key q Format track b enllmmm+ MAXTRACK: 79 MAXSECTOR: 09 INIT DRIVE SHOW BPB BACK p INIT DRIVE MENU qp Bios Parameter Block of active drive < press key > qp Directory starts at Side: 0 Track: 1 Sector: 3 qp Directory starts at Side: 1 Track: 0 Sector: 3 q ,--R--/P.B.v../0JPn^nintnnnn GAP1: 60 GAP2: 12 GAP3: 22 GAP4: 40 GAP5: 664 Bytes/ec: 0512 BACK p Drive format mode qp Change gaps between sectors qp Please wait a second, then press a key qp SECTOR MODE q< (p Track: Side: Sector: Bytes: Checksum(hex) qJKpqY!!HEABLlwfe Jpp2p[pcpkptp}pppppppqq&q0q9qCqMqdqnqxqqqqqqp NO BOOTSECTOR qp Directory sector defective q error3 error4 error5 error6 p Track not present (may be protected disk) q error8 p Sector does not exist!q error10 error11 error12 error13 p Please remove write protect. q error15 error16 error17 error18 error19 p No more clusters q error21 error22 error23 error24 error25 error26 error27 error28 error29 8            r          6              @                          "        2        .     2,( $  ""   "$   4   0 0   $          .                    6    @    :"        ,     , $$$                         P86D            & , "4    "2  *  ( :    B* "\    &  <   * 6      r    *"&       :      "$B**`   V `J\>X.&xL .h@R ^ 0$$0$><  .$$4 "R`DB?< NA\/ yV0<JgQ`!<NAX9=R<9o<0=3Nu(picture0.pi"0  , SCREEN GRABBER from Page 6 Magazine, Issue #29 address: Page 6, P.O.Box 54, STAFFORD, ST16 1DR, ENGLAND This program allows you to 'snatch' pictures of commercial games and programs to disk by redirecting the key screen dump to disk files named PICTURE0, PICTURE1, PICTURE2, etc. These are Degas compatible format, the resolution determined by the monitor in use at the time the program is implemented. SCRGRAB.BAS is the basic program which creates the machine code program, SCRGRAB.PRG. All you have to do is put SCRGRAB.PRG on your disk, double-click on it before running the software you want to 'shoot'. While your game or program is running, just press simultaneously and a file will be written to disk (you did remove your program disk and inserted a disk with enough space -32K each, to store your pics, didn't you?) for every 'shot' at the screen. This program has the advantage of not 'inverting' pics you want to use with Publishing Partner like Snapshot does. If you have any problems, try loading BASIC into your machine. LOAD SCRGRAB.BAS and then RUN it. It will create a new SCRGRAB.PRG perhaps unique to your monitor, on disk. All should be well then but I think it will run O.K. as it is. Have fun snapping and remember, 10 32K files can fill up a SS disk pretty fast!! (This program is also known as GRABBER. It is NOT the same as the GRABBER circulating around. The file name has been changed to avoid confusion.)10 rem *7 20 rem * 5* 30 rem * ST SCREEN Grabber * 40 rem * by Paul Lay * 50 rem * 5* 51 rem * from PAGE 6 Magazine * 52 rem * Sept/Oct 1987 * 60 rem *7 70 fullw 2: clearw 2: gotoxy 0,0 80 ? " ST SCREEN Grabber": ? " By Paul Lay": ? 90 ? " Insert destination disk & hit any key"; 100 key$=input$(1): ?: ?: ? " *** Creating file 'a:grabber.prg'" 110 on error goto 210 120 open "R", #1, "a:grabber.prg", 1 130 field #1, 1 as byte$ 140 on error goto 220 150 checksum%=0: for rec%=1 to 368 160 read code%: checksum%=checksum%+code% 170 lset byte$=chr$(code%): put #1, rec% 180 next rec%: close #1 190 if checksum%<>17716 then 220 200 ? " *** Creation successful":end 210 ? " *** Error opening file": end 220 ? " *** Error in data statements": end 230 data 96,26,0,0,1,68,0,0 240 data 0,0,0,0,0,0,0,0 250 data 0,0,0,0,0,0,0,0 260 data 0,0,0,0,66,167,63,60 270 data 0,32,78,65,92,143,47,0 280 data 32,121,0,0,4,86,48,60 290 data 0,7,74,152,103,6,81,200 300 data 255,250,96,6,33,60,0,0 310 data 0,60,63,60,0,32,78,65 320 data 92,143,66,103,47,60,0,0 330 data 4,0,63,60,0,49,78,65 340 data 74,121,0,0,4,238,103,2 350 data 78,117,16,57,0,255,130,96 360 data 2,64,0,3,51,192,0,0 370 data 1,20,6,0,0,49,19,192 380 data 0,0,1,65,48,60,0,15 390 data 32,124,0,255,130,64,34,124 400 data 0,0,1,22,50,24,2,65 410 data 7,119,50,193,81,200,255,246 420 data 63,60,0,0,47,60,0,0 430 data 1,54,63,60,0,60,78,65 440 data 80,143,51,192,0,0,1,18 450 data 47,60,0,0,1,20,47,60 460 data 0,0,0,34,63,57,0,0 470 data 1,18,63,60,0,64,78,65 480 data 223,252,0,0,0,12,66,128 490 data 16,57,0,255,130,1,225,136 500 data 16,57,0,255,130,3,225,136 510 data 47,0,47,60,0,0,125,0 520 data 63,57,0,0,1,18,63,60 530 data 0,64,78,65,223,252,0,0 540 data 0,12,63,57,0,0,1,18 550 data 63,60,0,62,78,65,88,143 560 data 16,57,0,0,1,61,82,0 570 data 176,60,0,57,111,4,16,60 580 data 0,48,19,192,0,0,1,61 590 data 51,252,255,255,0,0,4,238 600 data 78,117,0,0,0,0,0,0 610 data 0,0,0,0,0,0,0,0 620 data 0,0,0,0,0,0,0,0 630 data 0,0,0,0,0,0,0,0 640 data 0,0,0,0,0,0,0,0 650 data 0,0,112,105,99,116,117,114 660 data 101,48,46,112,105,0,0,0 670 data 0,0,0,34,48,10,16,22 680 data 14,6,12,44,18,14,18,0 [* SAVE TO DISK. YOU MUST PUT IN THE ADDRESS OF THE START OF MEMORY * AND THE SIZE OF THE FILE WITH THE COMPARE TO BE SAME.. * CAN BE BROKEN UP TO USE AS SUB-R0UTINES. * HOPE THIS HELP TO SAVE THE FILE AFTER YOU GET IT IN..TO MEMORY.. * THIS IS THE EASYEST I COULD DO FOR NOW WILL SHOW YOU OTHER WAYS * IN THE FUTURE... * THIS WILL SAVE TO THE DRIVE IT WAS BOOTED FROM. * The DB boys CLR.W -(SP) * CLEAR THE STACK POINTER PEA NAME(PC) * PUSH FILENAME ONTO STACK MOVE.W #$4E,-(sp) * FUNCTION # FOR SFIRST TRAP #1 * GO AND DO IT ADDQ.L #8,SP * CORRECT STACK TST.W D0 * IF = SMALL # THEN IT ALREADY EXISTS BMI OK * IF - # DON'T EXIT SO LETS WRITE IT BRA QUIT * IT EXITS SO QUIT (OMIT IF YOU WANT TO) OK PEA NAME(PC) * SAME AS ABOVE MOVE.W #$3C,-(SP) * FUNCTION FOR CREATE FILE TRAP #1 * GO DO IT ADDQ.L #8,SP TST D0 * YOU CAN TEST HERE IF YOU WISH BMI QUIT * IF OTHER THEN GOOD # QUIT MOVE.W D0,D6 * SAVE THE # OF THE FILE * THE SAVE PART IS HERE MOVE.L #$10,-(SP) * ADDRESS OF MEMORY START OF SAVE * CHANGE TO THE START YOU NEED TO USE MOVE.L #$C000,-(SP) * WRITE FILE SIZE IN HEX MOVE.W D0,-(SP) * NUMBER OF FILE MOVE.W #$40,-(SP) * FUNCTION # OF WRITE FILE TO DISK TRAP #1 * GO DO IT ADD.L #12,SP * CORRECT STACK CMP.L #$C000,D0 * DO CONTAINS # OF BYTES WRITTEN IT SHOULD BNE QUIT * IF NOT QUIT ..BE THE SAME.. MOVE.W D6,-(SP) * WAS DO MOVED TO D6 FILE # MOVE.W #$3e,-(SP) * FUNCTION # FOR CLOSE trap #1 * DO IT ADDQ.L #6,SP * CORRECT STACK * THIS IS QUIT QUIT MOVE.L #$0,(SP) TRAP #1 NAME DC.B "FILE.DAT",0 * THIS IS THE FILE NAME TO BE WRITTEN N`Bg?< NA |C~0<2QBgAd/?<NNAPJ@gLBgAN/?<2g0C>/ /<?:(?<@NA f ?:?<>NA.NAroms.datDV * * to read a file * from disk * do this * ** The DB boys ** here1 is the place to load it to in memory if you wish you can ** use move.l #buffer2,-(sp) and it will load just above this ** and you can move it in memory from there or if its PIC code go to it ** like jmp #buffer2 ** here3 is a jump to where in the loaded file you wish to jump to ** I'll send someother things like changin res's and colors up in the ** next few days to help.. ** there are many ways to write this this is the simple and easyest way ** I could do it for now will show you other ways in the future ** change the name at bottom to the name of the file you wish to load clr.l -(SP) * CLEAR STACK pea name(pc) * name of file to look for move.w #$3d,-(SP) * function # of open trap #1 * is it on the disk addq.l #8,sp * correct stack move.w d0,d6 * save the file # from d0 tst.l d0 * if - it is not bmi shit * then quit here move.l #$24000,-(SP) * the address to load at or #buffer2 here1 move.l #$10,-(SP) * size in hex bytes move.w d6,-(SP) * file # move.w #$3f,-(SP) * fuction of open trap #1 * go read it add.l #12,sp cmp.l #$10,d0 * was it right size bne shit move.w d6,-(sp) * close file move.w #$3e,-(sp) trap #1 addq.l #4,sp here3 jmp $fc0 * jump to where it is ** change this add * shit move.l #$0,-(SP) trap #1 quit bra shit name dc.b "name.prg",0,0 buffer2 ds.b $200 C``B B?<NNT#:N` ?</9:/9:?<NN NuHzP?< NA\?<NAT @ gBNAB?<BgBg?<BgB/<P?<NNJ@fAPJfNHz?< NA\?<NA`NHz\?< NA\?<NATBHzT?<NNAPJ@g~HzB?</<*/<??<@NA fJ?9>?<>NANHz?< NA\?<NA`"Nq The file is done you may try to boot from the boot.prg if the Nuter boot disk is in A I'm not sure this is a nuter booter If its not your wasting time and it won't work A Nuter booter has NO Directory Please insert a disk to Write to In the drive you ran Nutbreak.prg from And press any key to Write file called boot.prg Please insert the Nuter-booter Disk to be read into memory and saved Press to go. Any other key aborts Written by The Diskbusterboot.prg`?< NAF'F :" u; Nuter booter relocator to look at loader of said...booter ; Written by The Diskbuster ; GenST 68000 Editor/Assembler from HiSoft v 1.22 ; As simple as possible. ; You will probibly have to use a monitor to look and debug.. ; A Nuter booter sets on the first track first sector of the ; Disk and is most often the loader of the Program. clr.l -(sp) ; Now lets turn off the mouse dc.w $a00a ; Lets put up a menu to tell the user to insert Nuter booter ; disk and press enter ; find top of screen and store... clr.l -(sp) ; clear stack move.w #2,-(sp) ; function number trap #14 ; do the call addq.l #2,sp ; reset stack move.l d0,topscr ; d0 will contain top of screen jsr clrsrn bra cont ; Now that we have it lets clear the screen clrsrn:move.w #1,-(sp) ; med res move.l topscr,-(sp) ; Physical base of screen move.l topscr,-(sp) ; Logical base of screen move.w #5,-(sp) ; fuction number trap #14 ; do the call add.l #12,sp ; reset stack rts ; Screen cleared lets put up a small menu cont:pea menu(pc) ; put address of menu on stack move.w #9,-(sp) ; fuction number trap #1 ; print it addq.l #6,sp ; correct stack ; Now wait for a key press to go lets say space to go and ; any other key aborts. move.w #7,-(sp) ; fuction number trap #1 ; the call addq.l #2,sp ; more stack correction ; what the $%^& did the user push cmp.w #$20,d0 ; was it the space bar beq go4it ; if is go ; If not space bar lets shut er down quit:clr.l -(sp) trap #1 ; If space bar lets do it ; First thing to do is read in the first sector of the Disk go4it:clr.l -(sp) move.w #1,-(sp) ; number of sectors to read in clr.w -(sp) ; side 0 of disk.. move.w (0or1),-(sp) clr.w -(sp) ; track number.. move.w #track,-(sp) move.w #1,-(sp) ; number of sector 1-9 clr.w -(sp) ; number of drive move.w #1 for B clr.l -(sp) move.l #buff2,-(sp) ; address to read it to move.w #8,-(sp) ; fuction number trap #14 ; do it add.l #20,sp ; fix stack ; lets make sure it was a good read d0 should contain a 0 if good tst d0 ; was it a good read bne quit ; oh damn! ; Was it a Nuter booter disk* lea buff2,a0 ; put start of buffer in a0 tst.b (a0) ; if its a 0 then its not bne itwas ; if its not 0 its a nuter boot ; It was not a booter nuter. jsr clrsrn ; go clr the screen pea sure(pc) ; address of it not one move.w #9,-(sp) ; fuction num trap #1 ; do it addq.l #6,sp ; stack move.w #7,-(sp) ; fuction of key wait trap #1 ; doit and wait bra quit ; turkey's don't know what one is... ; ok if we reach here it must be good so lets write it out to a file ; first lets add a header that is ready for the file ; lets clear the screen again itwas:jsr clrsrn ; put in a clean disk to write too pea clndsk(pc) ; address of put a god disk in move.w #9,-(sp) ; fuction # of out to screen (print) trap #1 ; doit addq.l #6,sp ; stack move.w #7,-(sp) ; fuction of key wait trap #1 ; go wait on key press addq.l #2,sp ; stack ; write the file out to disk name it boot.prg clr.l -(sp) pea bfnam(pc) ; choose file name boot.prg move.w #$4e,-(sp) ; fuction # of check file name trap #1 ; doit look at disk addq.l #8,sp ; stack tst.w d0 ; was it on the disk if 0 it was beq quit ; turkeys don't change the file names pea bfnam(pc) ; put address of name on stack move.w #$3c,-(sp) ; fuction # of open file trap #1 ; doit open file addq.l #8,sp ; stack move.w d0,handle ; save the file # move.l #buff1,-(sp) ; put the memory address to read to move.l #$200,-(sp) ; # of bytes to write move.w d0,-(sp) ; move file # to stack move.w #$40,-(sp) ; fuction # of write to disk trap #1 ; go write to disk adda.w #$c,sp ; The Stack cmp.l #$200,d0 ; was it the right size written bne quit ; it was or (wasnot) move.w handle,-(sp) ; put file # on stack move.w #$3e,-(sp) ; fuction # to close file trap #1 ; go close file ; we are now done and can quit but first tell them. jsr clrsrn pea done(pc) ; put address on stack of done move.w #9,-(sp) ; fuction # of print trap #1 ; go print to screen addq.l #6,sp ; some women move.w #7,-(sp) ; fuction # of key wait trap #1 ; go and wait bra quit ; this is the end my only freind the END nop ; The Doors topscr:dc.w 0,0 handle:dc.b 0,0 done:dc.b $0a,$0d,"The file is done you may try to boot",$0a,$0d dc.b "from the boot.prg if the Nuter boot disk is in A",0 even sure:dc.b $0a,$0d,"I'm not sure this is a nuter booter",$0a,$0d dc.b "If its not your wasting time and it won't work" dc.b $0a,$0d,"A Nuter booter has NO Directory",0 even clndsk:dc.b $0a,$0d,"Please insert a disk to Write to",$0a,$0d dc.b "In the drive you ran Nutbreak.prg from",$0a,$0d dc.b "And press any key to Write file called boot.prg",0 even menu:dc.b $0a,$0d,"Please insert the Nuter-booter Disk" dc.b $0a,$0d,"to be read into memory and saved",$0a,$0d dc.b "Press to go. Any other key aborts" dc.b $0a,$0d,"Written by The Diskbuster",0 even ; makes the odd byte go away bfnam:dc.b "boot.prg",0 even buff1:dc.b $60,$1a,0,0,02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,$FF,$ff,$3f,$3c,0,$20,$4e,$41,$46,$fc,$27,0 even buff2:dc.l 0,0,0,0 `[x` APMONST2 (C) HiSoft 1988 o,hO(HC[B" ( ШШ//Bg?<JNAO JfZ N0<BQ-LPtAJfPK?a/fxA|a0"a0JAqXmX!X"=XfHx~?<HNA\Jf ?B+F`5GdLE:|>|Fa5|`8xGLE:6|>DFa5\'nLB`8hGxLE:|>DFBBa52`8D/ Ga2GLn$_a5PP`5D f@eeepNupNuHLfe dNu<NuJ.kgH@Ga1BQkLNua|k^aز< gP<gԲ|bg|qg<AeA4ggTH`&nN` .g&@ag`a6`az .g&@<Zg<:ea`~0a6`r/ Ga0GL nta,V$_A C p0QPPa4a6aak<gag`a6`<Zgal`HzT kH|H8g4|Hg2|Pg0|P2g|Kg(|Mg&Jng< gXrNuNNNN N NkNuB kHNrNu<AgH<Bg<Egl<FgT<Lgb<Og<Pg6<Rg²<Sg<TgNu +>g +>gA7aMf'BB`a/a/Jnf +>ga5`a*p :+7@@a"GaJ.gGa Gda`apP .g@őkk0+H7@PQa2z`|/ vA7aMa1fNJgJ$Lg<=fC$ SBa&\fH(Ja bLf /a4$aJnfa&_Nua4&_Nu/ GJkfa&_Nua&_Nu+><gr<g<gNu + ?a.~`/ vA7aLa0TfdJg`ag aNJI`*tJg.<,f<?gB<*gN<=gT<-fJgZafJf,a4 $v"EaIfaJ&_Nua3&_NuaJf/ a3(_v`Jfa3v`Jf|a3vt`a3"EaIfaJ`a.tfA7&`LxP aQ NuJnfp +>gh +>g`/ vA7 aKa/dfHpJg LJf$"LSBa$f ?a3F0&_P?a 4gaJnf/ aD&_`a3&_NuJnfJ.gz+><g& +Fg<fbIKn#fTxE`IKNn#fr<gr<grJgr'nBA>BkLa1a a+`NuQQa.A  C3j+><gC3P<gC3|f| BPP`.ABvDGHHI`LpMbNOP >R S UDV>Wv> r <aJxa`Jf +>f"kBHzaFgGtv`FjNua@.Of$nLafaJz`ENuA3tYaIfaF`A5dtYaIgK(NuJDg&.Of$nLadfNua2aJ.J`NXA3 `IaJaJ"nLaFFfN hfN|`N^aJa"JvtaEfaI`N>Nuaa-JLtLa"`JDgvA2aH>a+fg aDg I``//a/"_tvaEZgLNuvaGA2a nrT (>g@vL a)ajk<g߲<Bg<Wg<Lg <Tg<IfA a*a IBxa+fjK <IgD<Tg>B-af <Bg<Wg*`:`Jg<,gaHI`A ` Lf SB.@ a.`Bn `.Gra, n$hB(><g G vg<ga<If2``ReedNuʲNu$|NuSz` af(J`(REgaf(JJg Kag fSf`$L` n(FYd -L-LB`-L .g-LaN``F Tfavg J< gfHRSCg gL `L &n'JB`(J` ga "JE aIʳ gE aaBg*J/ a3p. SCA g< f`JgHS@VLg $_aa`(_`.<g GaFaFxa*a,2`Nuv Lg a(QJ, gv Aga(zQNuJ$gbE0ma(n$|g>Rg$, a`aDaaPJ, gRFkfa|<g|a&rB`afa,VNuJgJ.n na BA.af-K-KnhJ.g#g GNa+`bGa+IKNEx`(LE.|>DFa('nB`,A.)vaDBa'f+Jg+Atg<,f(H/a _g Ia'`B a.f-K-K-KBS-K` NuvaCa'Zf^JgZt/a+VaEBKa h _f./a r f/?<HNA\Jg&@ @a ~a aDpNup?a aD0aDpNua+pNuv A.aCrA.J.la:gZlA.J.ma*gZmA.J.!agZ!A.J."a gvZ"`nVaHrNJgrYa&RSka4ak<gD< g6߲<Yg<Nf?a&$a02<ONuvL a$rNuaa`X`*@A.ZaaI\r2.fEC:a&BIaZIa&fafe洼d=BfaA.aaI".a/&BIaa%f~a@gI`-BarA.aDa@ak߲<YfLaC|BgHz.?<`aA8?a0`@`'va?A,/aaa<g߲<Gg<Ug <Ig<Sf?a"a2<GgT<SgT<Ug.I".ga,BIa^Ia# fPaf-B~`"I ha@I ha"f2aNf~`a&`~aA+J.oa$gZo?a6`F2`&( JfɌSDNuE+aA'HHaaja|`a&`a xET2a$a@a$a $a2a(RD|fra~I2,gZ$aatJ.gt agaRa$Ta\ lfat ar?a!E ga!`aaIHQNuA*v a>VBn`a?Ia!faTf<,fR-Ba>fԴo-B$Baf$nafaJraa@B.x`a?lIa!^fQJgFaf-BBJg<,fafJfƴe-B$.f affR. BBaraaK *xB.`a>Ia fJg^azf<,f*alfشopJg <,f߲<Bgp<Wg<Lf"R*R*:7|a`BaHra a>B.xIa bfJga>N Labga=`a=a$*nJ.gBn4a|f(* gSg Xm`Tm`Rm`a*t`P*nJnfafQ Qa#A'ba<`P aa6Q Qa#JnfNuE * gm lpNuE `pNuoNuJ. jafz/ I(DC.BS* g@S@gL x"a(,\`:W x2a(,\`B xa(^,\| (_` Ha)tL( aNAX .gT/?<HNA\-@$ n/(,/ / ?<?<KNAO&j`p"a: `:-CPPhBg/ ?<=NAP>kHnHx??<?NAO f .gpЮЮBg?/?<BNAO .$gR-@$//.??<?NAO fp n$ .S@"nPa`X( d> e: e6 $) e$) e$) dը B( (H W fS@`PB( QBPNu??<>NAX$nPPAT .dЮh}-@l"n%i$"nPC-IBvta5O(B/.PB?<?<KNAO-@Qh nP/(,a\ _aXBDa9>GaBA"7a (PkJg.J.j(BGNJkg +>f|>aaa`/?<INA\NuJTgLCBQB/ B/<KNAOJk.&@"<ҬҬҬ ғdA И И kC ,ЬSe0Qd , Ser Qd k$r gհg<f`Ё`"k-IBtva4,O(Ph-KPCAT .dЮh}-@lJg,A-H$J,fP ,US@"KaB/ B/<KNAOOa7`hGtJkg?a44NQNuGtJkg?WPa a 4NQNuB kHN`` ````NqrNu>+$kBa aa")a+@fa`a&arAaar:a$i$ a+?aaR<8fra4.JaNqa8.Ja+@+@ araz$.Da$nD+?aara\$.Laax$nLQtatgFra6$.xan$nxp.v;8a`J.ug ra6$.|aH$n|p.v;a:Pta`$A4arS frUataQNug`R`TXNZVC`` ````NqrNu$kB<+J+?ft a f $ at`$ aa +?a ga Barr Lfrana/ a@at$_SfNuaPU'JBpNuaDT``` ``L`B``0+@HBpNu +BR$@<+ajSf'JBrNu +BR$@NuaaJ`aa,H`HQQaLA JfJkLgWS7@Lg>|e$|Dd@HrAQ@drDP@0 `C PYf ! BP` tLata XB|HfNuApJhg:2(LAf2|Lf (>g."6 Bg!ABH/AB4a _LANQNuH"nL (BR$@m<(WFe/ aJgQ"_" LM`"_LM`$kB<+SFaWfJFk aaQNug " fg " fRpNupNu``(`8``N``$kBag/ aDaJ$_'JBanpNu$kB4+SBaW`$kB4+SBag^t<:d<0dd~af0CtRBa|gaf$`/ a"_gx(It`~`"~ g <>f~ ` ~`~ f~ R _L`NutS~`<0e޲<:dԂ ЀЀԀ0ԁ<:d<0d~`DHtpGN`v`,`N``p< gfg`Se`0ef<d`Ԃej0eJ<e`B0eB< dld8H`tr n$Jg g g J( g`(f LNuJ.fNue dH@J.k( n"g fLpNuJgl!@B` n"gܰfAB( LH"a HBA LNu @pg&a4SWgJ(gp \pg aSWNuNu/J$gBB Opnfo4.fJ."f~S|epQ(& n$gZRgFfBf0 gS@BQ`<ae <{dNu n$8|oxSD6C g`RgD0/C (aIJf2Q0j J(f$Jf `0J(g\afQnfgJg _J(g` _2`*2`@Bg/?<NAXNuH HBp@@"npJDN0+7@`N` ``aA'H Nu  !()0189@AHIPQXY`ahipqxy  !$%(),-014589<=@ADEHILMPQTUXY\]`adehilmpqtuxy|}j"Qp`"ip7@'iLC'I&A'H Nu``@`h`` ``l|gp"i`p"Q'iL7@r2+7ANu/ $k r"J4+SBQQ$IAQ$_Nu"k k1p2<QNu"k SAkCrpQpNuk$k p2 4+SB|g*0<2<Jf QNuFQNuHA0@A2IIA8z-|JVg~D/4+SB0<2<+)+ QLJg 0+FS@fNu2<k"k p1 `/6+SCSC4+SB2<$k J@j Sx8AQ6Q(Nu0+S@S@ Sx8A`Q6Q(Nu"ip`k"ip7@'iLC'IP&Nu`t`>``` ``D|g p"i` p"i'iL7@Nu4+SB"H2QQAPQNuP4+FAPSBfNuP4+SB0<rPJf QNuFQNuPp2<PQNuPp@QpNu6+SCSC4+SBrP"SJ@j$IA0QCPQNu0+S@A$HC0QAQNu$k6+SC SN$k S"kAN$k SN SSC$kN SSC$kN B"np0+$kN$kNpa0+S@7@BkNupaBNuJ. fH :+4+2+RA6+AoSCgx?a4RBSEfL0Nu?.?<a8XJ@Nu=CA (-HNua46.`< far a`A "nf?a 2`-INu .A (g Hn (/?.?<@NAO g `J. jBaˊf `4JnfA??.?<a o \f?< ?.?<az\LNuHJ. g 0< dr `HJ. f< g 0+kgL Rk~a@LNuNqBk0+k`x LJf*SEaa6+tDP4@aak< g<g<g\<gt|Gg|Kg4|Mg8Jgƺn g0REDg AP`S@fal@RDB4Pax`JDgaXSD`DgaNRD`JDgaD0Dg A@XS@fSDSE`0DgdA@XS@fSE`a< Nua8Bxz`.?tD6+Q4@a,2Nu?+ Lar a7_Nu?+4. a7_Nu/ ntn8.a`$_A p W| BA 'HHBkL~P/ (KG4,6,nr Jg J,Fgr0,FH0aL RBA gH1Jfr azLRB`2,SA4,6,H0azL 2,lajLSB6,af2,4,l6,aR&L(_Nu-Ip nt0<?BQ<ng 4<(6<x`4<P6<x` 4<P6<2xprG ntaB0+R@=@pABhNQBL&<nL(gL.H=E =F Nu N;N;&uNN 2 5 25NN X2 5X 25&& X&&B.#Iz<n IgIaa(aDpLQaba^LHLHGJg/ &nJkgQPa&_-KPP`6<8 .g&t|8f6<CNJv0fQNuG0`GdtJkg+FgNQNuHHz*aQQaJBkGJkgPPa2`4LNur2+p+>@|(NNu``&`D`h A|erA?A'HHNuAn'HHtv |(dtvB@C?NuA&dr<dr<erA?A'HHNu|?Ab'HHNuPC:SR:A7'Divide by zeroCHK exceptionTRAPV exceptionPrivilege violationTraceBad interruptInvalid TRAPIllegal exceptionBreakpointD:A:Searching...Address errorBus error ; , Text: Data: BSS : Current Breakpoints: Data start,end<,size>Cross-reference listFilenameDisassemblyMemoryMonST 2.01 HiSoft 1988RegistersSource code ESC to abort Window start address?[Return] Filename to loadSource file to loadExecutable file to loadCommand lineProgram terminatedRegister=valueTOS error: 12345Cannot runIn ROM!It's odd!Cannot write!Too many breakpoints!Run until PC=Kill all breakpoints Y/N?Breakpoint address<,param>HistorySearch for B/W/L/T/I? Printer not respondingRegister to lockEnter expressionSymbolsPREFERENCESScreen timer Y/N? Follow traps Y/N? Relative offsets Y/N? Ignore case Y/N? Symbol lengthTop of RAMBDOS BreakpointCopy start,end,toFill start,end,withSet current drive/directorySave binary, filenamestart address,endRun: Go,Until,Instruction,Slow Watch Y/N? HelpDisassemble start,endRe-install exceptionsSave preferences Y/N? MONST2.INFJj-D`JAj-DA` a`fB d0Nu$p/t?fJgP²< o^02Q$NuH@ @pgQJ(g\p gQLNuA0g NuTFHILSCCCSNEEQVCVSPLMIGELTGTLEAH.P NuBWL?AH NuTST CHG CLR SET 0NuH@00NBSQNu>B.uA BR4XXfBA Sg`IUeQa BNuA:EMaNuXFB0@P&Fb,|XX0`a#Jf2a"`<g"a.`2a,?<a8B#2aJ,x=0fxe`: < mE;P`?xa>.t-nx|Qt?,2< iA4JBx?a0J.tgJgPuLxAHxNu@tNu2`0Nua,#2`aA`,USP G< e1 0Nu$<.gRa4`z.xd<Jg:<Pg2x=`,zxa$,`Dzxa,`@ a?xla|v<,pVQQ6[<DaJgJg/6<AJg$pg@|7JgSg*Jf -7NuSf-|6/` Jg`/SdSNu RaJ<48< f2ar,x4aD|vNuaR`zxa.OO0,DNuzxda< 2i,A`&2IaD0," 4H҂Ү $`2IAanBx=`a#2IIAfra,x?`0@2II<@g<Hg&<g2??NuDa,D`Aax,A`Daf,A`2Ig <ga`S(BRA `S(BSR g|.S HHҍҮ $` 2HU`a,D2II`p 4Xfa4JJg$-(AaA(aa)NuDa,D`),-(AaP<fI`02(AazAa2IIah)+Nu)+,(AA:M`R:::ZZZ R(CMPAaxa,A2II` Aaaxa,D`CMPAaaDa,x=`EOR0@|@g |Hg|fI(EXG `<gNaT0@fxa^,D2II`xD2IIaj,0@x?|g*8<<`":MRaxa,A2II`(2<g< aHa2IIf#Afra,D`D`Ia  zx<`AAв<fXrLpfrRNuASLSRORO2`CagNuI>(/a| [ _"(0(|g4|g*|g?C pgQ..`*`=aJ]NuNu2A4J<A` 2bpLgD`gJgA`gtf0@@-v$xEv(Aa)Nugja+Nug\-.tfaEp;PxNug42Htfp@@ 6$Ё-@xEvJ$gV . "g&TeJ\dD0H/RaLgaz`.J.!g$<g0H/tJж $$apgaP`a`,H0X@< 6 fH-HxEvNug~8tf 0@@ v$aa(Aa,JDkD`A2 < iax<WDg<L.)NuA``FTz??Nug2Haa6.WNutf-AxEvNug"a` g2HҍTҮ $aaA`(PC) g<8HHҍTҮ $aAaJFk D` (PC, A2p ia.FgL`W)tgNuA`g$#<f2`H<f"`V2`H?Nu8  @ 0@0JJNpNqNrNsNuNvNwH@HHNPNXN`NhN@@DFHJNNHL@H@@BDFJAAPPPQ`p080@0MOVEP.ORIANDISUBIADDIBEORICMPIBMOVE.B MOVEA.L MOVE.L MOVEA.W MOVE.W !DC.W "ILLEGALRESETNOPSTOP #RTERTSTRAPVRTRSWAP DEXT.W DEXT.L D LINK AUNLK A MOVE.L A MOVE.L USP,A TRAP # MOVE SR,. MOVE.B MOVE.W  NBCD . TAS . JSR . JMP .MOVEMMOVEM PEA . NEGX CLR NEG NOT TSTCHK LEA DBSADDQSUBQBMOVEQ #SBCD DIVU DIVS ORSUBASUBXSUBCMPMEXG ABCD MULU MULS ANDADDAADDXADD !DC.W H/.$B$/ xK$MafBTMHa6L f*C<[g <?g< fXp-_$$ML8JNuQ*_UMp`-JLJ` Al <f/A f _` aJEf 1Q2J QJEf !B1CpNu JapNupAf JhgpNuHQpNupAa HQNuJhgBh"P QJf2Nu-I|=Q2JNuA-HhpBFJQNu nhCp Q D0J LChfA-HhNuEa |?aA'HHa$ja`Ja2<YNux}x~ .|tg4-@x=x@=xBx`1@1B`uvNu=|pa6`=|pa,`yz1@1BNu 8ffgNu..fNuJ.lg=|(pNuaFx@aFx@Nu-_-xA!NM!/.Nu-_-xA!NN`AG0gHh/??<NMP& _`QiPjzDl=|r=|p@|Hzz?<E?<NMP-@F-xA!=|rHz?<!?<NM-@PNuG~0gHk/ ??<NMP&_`A!Hz?<!?<NMPNuAFG0gHh/??<NMP _`/.?<E?<NMP!/.?<!?<NMPNu\^  #$%&'()*+,/\/p`/p/,zlPjH?-_<-_\6=_J-_L-ODO?.Of($nLEa,fE a"fTpbWf-JL0`\/p `,/p`&/p` /p`/p`/p`/p`/p U/,zPjH?-_<-_=_J-_L-ODONh-H@/.8"nL< g8<g<| |BB.n"nL?a˜aatGa\2aPk-_`aJf.ngA"Lgp nx (@<gn<gJ.og(agl nx (@||a$aaa nx (@J.mgh.J<gJ`PB.nJ`BI ha2fJfJg nx (@x ` Sfr` nB"P2J0.J@n=@JjJ.ng`Hnvgp|gzPabfZHaL0(|g>|g(|gI Ha͚LfTJfPJgL`R`DSg`<2Bhx ``x `Z-nxLafx`J2p-@| n"P2JaH.Of$nLaf"JagJJnJj&.Of$nLafJ.mf0@|N@gQj.nD n@N`/.L?.JLNs0(@|N@g0.J@=@-H2J`2-HaJ`|NuB//,zJ.ig@/AeAe _QiJ.ngB.n` _QiJ.ngB.n`o 0.pkS@faVp=@p/n,_ Nua.axCnJ`H` z/< !xA!NMX zt!LgPiNu hNBH瀀 zN0(rk:J(jf4/ f&/NhP _f"U z(1|rB(nLX`&og/hLNuAMPlWindow Commands Alt-A . Set Address Alt-B . Set Breakpoint Alt-E . Edit Window Alt-F . Font Size Alt-L . Lock Window Alt-O . Show Other Alt-P . Printer Dump Alt-S . Split Windows Alt-T . Change Type Alt-Z . Zoom Window Screen Switching V .View Other Screen Ctrl-O . Other Screen Mode Breakpoints Alt-B . Set Breakpoint Help .Show Help and Breakpoints Ctrl-B . Set Breakpoint U .Go Until Ctrl-K . Kill Breakpoints Ctrl-A . Set Breakpoint then Execute Ctrl-D . BDOS Breakpoint Loading and Saving Ctrl-L . Load Executable Program B .Load Binary File S .Save Binary File A .Load ASCII File Executing Programs Ctrl-R . Return to program / Run Ctrl-Z . Single-Step Ctrl-Y . Single-Step Ctrl-T . Interpret an Instruction (Trace) R .Run (various) Searching Memory G .Search Memory (Get a sequence) N .Find Next Miscellaneous Ctrl-C . Terminate Ctrl-P . Preferences I .Intelligent Copy W .Fill Memory With L .List Labels P .Disassemble to Printer/Disk M .Modify Address O .Show Other Bases D .Change Drive & Directory Shift-Alt-Help .Interrupt Program H .Show History Buffer * * Generic FLOPRD Trap handler to get around belittling * HLS protection. For sector scheme={1..9,f5..f7}. But * flexible enough for previous and future revisions. * See comments for necessary parameter changes. * * Put in the hacker domain by * I.C * Changed a tad by Big Bird * move.l a7,a5 move.l #MyStack,a7 move.l 4(a5),a5 move.l $c(a5),d0 add.l $14(a5),d0 add.l $1c(a5),d0 add.l #$100,d0 move.l d0,-(sp) move.l a5,-(sp) move d0,-(sp) move #$4a,-(sp) trap #$1 add.l #12,sp move.l #string1,-(a7) move.w #$9,-(a7) trap #$1 ; advertise addq.l #$6,a7 bsr.s create ; create hls buffer move.l #install,-(a7) ; install routine move.w #$26,-(a7) ; in super mode trap #$0e addq.l #$6,a7 move.l #dest,-(a7) move.l #dest,-(a7)  move.l #RunFn,-(a7) clr.w -(a7) move.w #$4b,-(a7) trap #$01 ; run program add.l #$10,a7 move.l d0,-(a7) move.l #restore,-(a7) move #38,-(a7) trap #$0e add.l #$06,a7  exit: move #$4c,-(a7) trap #$1 add.l #$06,a7 rts  create: clr.w -(a7) move.l #name1,-(a7) move.w #$3d,-<(a7) trap #$1 ; fopen addq.l #$8,a7 bsr.s chek move.w d0,d1 ; d1=fhandle move.l #hlsbuf,-(a7)  * # of sectors may need to be changed with other HLS revisions. move.l #$1800,-(a7) ; 12 sectors * 512 bytes move.w d1,-(a7) move.w #$3f,-(a7) trap #$1 ; fread add.l #$c,a7 bsr.s chek move.w d1,-(a7) move.w #$3e,-(a7) trap #$1 ; fclose addq.l #$4,a7  chek: tst.l d0 bmi.s exit rts install:move.l $b8,trape ; trap #$e address move.l #loop,$b8 ; new trap #$e rts restore:move.l trape,$b8 ; restore original trap $0e vector rts  regular:move.l (trape),a0 jmp (a0) loop: move.l sp,a0 ; a0 always points to parameter list add.l #6,a0 ; skip SR and return addr move (sp),d0 ; get caller's SR btst #13,d0 ; was it in USER mode? bne goloop ; no use sup. stack move usp,a0 ; yes, parameter list is in user stack  goloop: cmpi.w #$8,$0(a0) ; floprd? bne.s regular cmpi.w #$4f,$e(a0) ; track 4f? bne.s regular move.l $2(a0),dest ; dest. buffer move.w $c(a0),stsect ; start sector move.w $12(a0),sects ; # sectors movem.l d1-d7/a1-a7,-(a0) move.l dest,a1 move.w sects,d6 move.w stsect,d5 * Another flex point. * Actual translation for sector numbering scheme. (#1 - #12) cmp.w #10,d5 blt.s j1 sub.w #$eb,d5 ; xlate ($f5-$f7) => ($a-$c) j1: subq.w #1,d5 lsl #1,d5 ; times 2 lsl #8,d5 ; you know  forward:move.l #hlsbuf,a2 ; source buffer adda.w d5,a2 ; = offset in buffer subq.w #$1,d6 * assumes aligned boundary loopa: moveq #$7f,d7 ; move data loopb: move.l (a2)+,(a1)+ ; at dbf d7,loopb ; 512 bytes/sector dbf d6,loopa ; for each sector movem.l (a0)+,d1-d7/a1-a7 moveq #$0,d0 ; status rte string1:dc.b 27,'f',27,'E',27,'b',1,10,10 dc.b 10,10,10,10,10,10,10,10,10,10,13 dc.b ' I.Cs Workshop Presents.',0 * Yet another. * Filenames are generic to allow a person to just use the prgs, * and later use a sector editor to change names. Or easier just * change here in the source code! name1: dc.b "HLS4?.DAT",0 RunFn: dc.b "HLS4?.BRK",0 .bss trape: ds.l 1 dest: ds.l 1 stsect: ds.w 1 sects: ds.w 1 hlsbuf: ds.b $1800 ds.l 128  MyStack ds.l 1 C`% 1N*O.|3*m - ЭЭм// ??<JNA N/<NA"/0<NBNuNVBn`0n70Rn n m37.8 /<5j/<7N!PN^NuNVN$:>5jaB?<N$T>5jN!5jN!nN$N^NuNV.'a.?<HN$T#7r.7ra`.'aaBy8By738>?a`8a `2N,`*.H>a:`a2``H |&rW h@N>N$@|ffN^NuNV. H`2.'a`>.'a`2.'a`&.'a``|*g|+g°|-gȰ|/g>a4-y7r.'ah>a-y7r.(aN. H`f .Ю.a`n ..ax`\/./.N"P.a``DJg/./.N#2P.aB` .( a``|*g|+g|-g|/gaN^NuNV.($aa-y7`\.a> aBn`, y72n70H>a> aRn noaF .м-@ .5dcN^NuNV.(,a*a-y7`T.af> a*Bn`$ y72n70H>aRn n?oa .м@-@ .5dcN^NuNV.(8aa.(>aa L=@-y7` y7"n70H98fb=| y72n70H"|84nHAf0n"|80HRnJf0.nf a.a ZR .5dcpa.(NaaN^NuNVB..(\aa.(laa.(|aa.(aa.(aa.(a`>N$@.H`x.(abaNa@`t.(aHa4a>@`Z.(a0aa@`B.(aaaZ@`*.(a|``H |'rW hNJ.gVaN^NuNV.(a >atN^NuNVBna 97r-@ .7rga|.(a an`jaf.a > a n.a > ar>a=@0.`X`*Y`$ n 7rX``|gܰ|gܰ|g nfpN^NuNVBna* 97r-@ .7rga .),a a `la .a > a n>a > a >aR=@0.` T`,U`& 97r"n2T``|gڰ|gڰ|g nfpN^NuNVBnat-y7r`ra ".a |> a @ nH>a z> a *>a =@0.`"R`.S`( 97rH"nR``|gذ|gذ|g nfpN^NuNV=|a-y7r`a .a > a Bn` n2n0H>a Rn nFma P.)Va Va =@Jng0Bn` n2n2n8Rn0n"|8J0f0.HѮJnfjpN^NuNV.)`a a .)oa a .)~a a .)a a .)a 38`V>N$@.H`(By8`838`.38`$3 8``|1gҰ|2g԰|3gذ|4g y8ga.>?N$yf6>7Bg?98?98Bg/./<9R?< N$=@`a.)a `4>7Bg?98?98Bg/./<9R?<N$=@JnfaN`.)a>a ,>N$a@|xfa2.* a.9Raa N^NuNVBnBn`a h>a> a Bn`v0n"|9R0H>aRn0n"|9R0H>aRn0n"|9R0H>a|Rn0n"|9R0H>abRn> a Rn nmRn nm\BnBn`Ha0.@>a> aBn`0n"|9R0H>aRnRn n@mRn nmN^NuNV>5jN >5jN! N^NuNV>5jN >5jN >5jN"R.*a&>8a.*"a>8an>5jN" N^NuNVBna.*(a`>N$@`=|`=|`a=|`a"=|`Ry8 y 8f38 yO8gRy8=|`tSy8Jy8f3 8Jy8gSy8=|`FaV=|`Bg?98?98BgB/<9R?<N$=@Jng.*fa`.*}a>N$yf 9p`B99pa.*aJ>N$yf$>?N$yf@>Bg?98?98BgB/<9R?< N$=@Jng .*aN^NuNVaB.*aaN^NuNVa*.*avaN^NuNV.+ ab>a 97r38.+aD>a 97r38N^NuNVBBBn.+(aa.+3aaaBW/<8?<=N$\=@Jnm`H .м-@Bn`, N2n(H>a N2n ( fRRn no./<?.?<?N$P=@|gBn`, N2n(H>an N2n ( fRRn0.nm0.HЮ-@a a.+Da.a.+Naa.+Ua.a~a` .+_aa>?<>N$TN^NuNVpy838.+raJy8gBW`>aazN^NuNVpy737.+{ajJy7gBW`>aaBN^NuNVBn`6 .g 0n8Rn.H>a<`JnoSna>N$@| f |82nBa0.N^NuNV. H|@ . l|. . H>aN^NuNV/< ./N#2P@/< ./N#2P@/</.N#2P@ .@Bn`0n6H>aRn noN^NuNV.+a>a#7r7.+a>a#7r5daN^NuNVa.+aa.+aa.+aa.+aa.,aa~.,5aap.,PavaT.,uahaT.,aZaF.,aLa:.,a@>8aa$.,a*>7aa.,aa.- aaN^NuNVBn` n2n0H>aRn0n"nJ0fN^NuNVB@0.|=@B@0.|H=@>a >aN^NuNV. H|@. H|p@.HH@J. l .HP@@ . o .H^@@ . o .H^@@.H>W0a@.H>W0a2N^NuNV> a$> aN^NuNV>a> a >aN^NuNV. H>?<N$T . f| Jy8g. H>?<N$TJy7g. H>?<N$TN^NuNVJng .-3an` .-8abN^NuNV.-N$@.H`>=|=|.H>a`6=|=|.H>a`=|``| g|+g|-g .0m .9o* .am .fo .Am .Fo .f .g0.nf6a\Sn/< 97r2n7HH/N#2P#7r.H>a8.H|@ . o.H_@|@0n7Rn=| 97r.HHЁ#7r`W0aSnJnlN^NuNV>?N$@.H`2a`@a y8ma6`0`,a0`*`&.H>N\``| gΰ| gܰ|g``N^NuNV-|BW/<8?<?<>N$TN^NuNV094Dy8By8N^NuNV>N$@.H`V`jaj`b`^`Z`X`V`Tar`Na`H`F`D34D`:`8`6`4`2.H>N\>?N``H |-hrW h@NN^NuNV>a~H34DN^NuNV>ab=@38N^NuNV>aF=@Bn`>N$@.H>aRn0.nmN^NuNV098|=@098H=@098P=@0.H2.HЁм-@0.`B=|`N=|@`F=| `>=|`6=|`.=|`&=|`=|``|b@0@- PN=| y8lRBn`D0.. HAg( n2.P0Hn2.PHҮ"A0.@=@Rn nmRy8N^NuNVBnBn`">N$2. Ё=@Rn0.nm0.N^NuNV3837N >Bg?98?98BgB/<9R?<N$=@Jng8..uN>N\..N>N$ f`..NN l>7?98?95jN"X`.H`,Ry8`:Sy8`2y 7`(y 7`a``H |.rW hN yE7o37 y7l3E7 y8o38 y8l38>7?98?95jN"X>N$@|f@N^NuNV-|9R097]@H 298UAAA=@N ..NBn`$0n2n9R0H>N\Rn nm..N>N0n 7r>7?98?95jN"X.7rNHN^NuNVB.BN ..N>N$yf|N ..N>N$yfN By8`>*NJ.g8>/ Bg?98?<Bg/./<9R?<N$> Bg?98?<?</./<9R?< N$Ry8 yP8mNBy8N^NuNV. H`@-|`N-|(`D-|`:-|`0./ N-|``J@g|g|gİ|g`Bn`Bn`0.n=@ n2n/a _ n2n/a _@P n2n/a _@ n2n/az _@ n2n/ad _@@ n2n/aP _@ n2n/a< _@ n2n/a( _@0Rn n(mBn n>m*N^NuNV>?<N$TJg>?<N$TN^NuNV38By8By83838N"N^NuNV38By8By83 838N"N^NuNV38By8By83 838N"N^NuNV38By8By83838N"N^NuNV38By8By83838N"N^NuNV#3$#3, .мZ#303d8By83 8 n 38N" n 08#3D3$#4H3,#6r30#5r3(N^NuNV38By8By83838N"N^NuNV38By8By83 838N"N^NuNV3 3D3 3F38By8383 838N"N^Nu#83 "<3 psNBNuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNVH?BCB..,. f#34 <`hlDRCJlDRCn8fzB`0l :HGH`xe`Jge`|fD#34 D`#34 JLN^NuNV370.|Hм%-@=|` nH2n72RRn nm.8N>B@098N^NuNV#75H#75L#75P#85T#85X#`b5\#5H8> aF388pN^NuNV>a*pN^NuNV37# 8>NN#N^Nu#38NN/938Nu#38NM/938Nu#38NA/938Nu    -[1][kein Resoure File][Bye Bye]ELEPHANT.RSC *+-/acdehimprsvbltwx * Z > L 4JOSHUA Mon520 V0.0 Free Space : BytesAdd :$Subtract :$Mul :tiply :$Divide :$ with :$. Result :$The ANSWER is FORTY-TWODisplayASCII-Dump Hunt Search String: End of Search(l) Modify Long(w) Modify Word(b) Modify Byte(t) Modify Text(x) No ModificationSelect : LongWordByteTextWhy not CHICKEN ?Enter first Address :$Attention, Attention: A LONGADDRESS is ALWAYS even !Hey you ! A WORDADDRESS is always even.New Text:(1) 19200 Baud(2) 9600 Baud(3) 1200 Baud(4) 300 BaudSelect : 1920096001200300 Baud Are you shure to write this Block ?No modification made. Disk Error :$Buffer Address :$Tr:$ Se:$ Again, Read, Write, Next, Previous, Boot, Modify, Copy, eXitCan't boot Boot Block' Boot COMMAND.PRG first ? Calculate BOOT Checksum ? Shall I write this Boot Block ?Write Error occured Read Block.  Write Block. Enter Track : Enter Sector :Show File.Enter Filename: Length : BytesLines : Cannot open File !Printer RS-232 from: to: Available Commands are: a : Display ASCII memory contents.c : Displays a tiny Copyright Message.d : Display hexadecimal memory contents.e : Enter Disk Monitor.h : Hunt for ASCII String.i : Install RS-232 Speed. Current: m : Modify Memory.s : Show File.v : Get and View C-64 Picp : Turn Printer Protocol r : Turn RS-232 Protocol + - * / : Calculate with Adresses. c: This Key shows you the DESKTOP.OFF.ON.JOppich's SHameful Undiscovered Analogical!"<>EFGNOTacfnpr desx~Read and Save MACPic. Enter Filename: Diskerror !!! Read Error: Press Modification ModeOld Value: $ New Value: $Format Destination Disk ?Backup Disk. Source in A, Destination in B. OK? Screen set to 0.*    d" .<2 < 4  2(  Z: V@TDJ,(  $  $$    Bd6 >  (   "   td " 2.`D  @ ( < J n  2 $ < *$*xZ6                 >   zf  $