*************************************** * * * DUMP memory contents * * * * written by E. Lenz * * Johann-Fichte-Strasse 11 * * 8 Munich 40 * * Germany * * * *************************************** ***************************************************** * The FIND function * The find function is rather slow and cannot be * stopped (try searching 16MB) but it searches all of * memory (excepting the RTC and custom chip areas: * $C80000 - $D7FFFF and $DC0000 - $DFFFFF ) * so nothing can be hidden. Although my Buffer will * not be found by find, it always finds a replica * used by DOS. ***************************************************** XREF Disasm1,file,load,_Request ; EXEC.library routines _AbsExecBase equ 4 _LVOForbid equ -$84 _LVOPermit equ -$8a _LVOAllocMem equ -$c6 _LVOFreeMem equ -$d2 _LVOWait equ -$13e _LVOGetMsg equ -$174 _LVOReplyMsg equ -$17a _LVOWaitPort equ -$180 _LVOCloseLibrary equ -$19e _LVOOpenLibrary equ -$228 ; GRAPHICS.library routines _LVOText equ -$3c _LVOMove equ -$f0 ; INTUITION.library routines _LVOCloseWindow equ -$48 _LVOOpenWindow equ -$cc _LVOSetMenuStrip equ -$108 ; DOS.library routines _LVOOpen equ -$1e _LVOClose equ -$24 _LVORead equ -$2a _LVOWrite equ -$30 wd_UserPort equ $56 pr_MsgPort equ $5c pr_CLI equ $ac ThisTask equ $114 VBlankFrequency equ $212 code movea.l _AbsExecBase,a6 ; Start from Workbench ? moveq #0,d0 movea.l ThisTask(a6),a4 tst.l pr_CLI(a4) bne.s OpenLibs Not from WB ; Get WB Message lea pr_MsgPort(a4),a0 jsr _LVOWaitPort(a6) jsr _LVOGetMsg(a6) ; Open librarys OpenLibs move.l d0,-(a7) cmpi.b #60,VBlankFrequency(a6) test if PAL or NTSC beq.s isNTSC move.w #256,NewWindow+6 isNTSC lea GfxName(pc),a1 Open graphics.library moveq #0,d0 jsr _LVOOpenLibrary(a6) move.l d0,GfxBase Save graphics base address beq.s Gexit lea DosName(pc),a1 Open dos.library moveq #0,d0 jsr _LVOOpenLibrary(a6) move.l d0,DosBase beq.s Gexit lea IntuitionName(pc),a1 Open intuition.library moveq #0,d0 jsr _LVOOpenLibrary(a6) move.l d0,IntuitionBase Save intuition base address beq.s Gexit ; Open window movea.l d0,a6 Base address = IntuitionBase lea NewWindow(pc),a0 jsr _LVOOpenWindow(a6) move.l d0,Window Save pointer to window structure Gexit beq exit ; Set menu movea.l d0,a0 which window lea Menu1(pc),a1 which menu jsr _LVOSetMenuStrip(a6) ; Initial output move.w #0,Micro move.w #10,Times Initialize page multiplier move.w #10,Wordl Initialize word multiplier move.l #$fc0000,MemAdr Initialize MemAdr bsr PrintMem movea.l _AbsExecBase,a6 ; get disk buffer move.l #$420,d0 moveq #2,d1 jsr _LVOAllocMem(a6) move.l d0,diskbuff beq.s Gexit ; Main program Main movea.l Window(pc),a0 movea.l wd_UserPort(a0),a0 move.b $f(a0),d1 Load signal bit moveq #1,d0 lsl.l d1,d0 jsr _LVOWait(a6) MsgLoop movea.l _AbsExecBase,a6 movea.l Window(pc),a0 movea.l wd_UserPort(a0),a0 jsr _LVOGetMsg(a6) tst.l d0 beq.s Main No message movea.l d0,a1 move.l $14(a1),d7 Message in a7 movea.l IntuitionBase,a6 cmpi.l #4,d7 Refresh window bne.s Gadget ;Refresh window bsr PrintMem bra.s MsgLoop ; Gadgets selected Gadget cmpi.l #$40,d7 bne MenuPick movea.l Window(pc),a0 movea.l $5e(a0),a0 Load Window.MessageKey movea.l $1c(a0),a0 Load pointer to Gadget move.w $26(a0),d0 Load gadget ID move.l Number(pc),d1 tst.w gagsec beq.s ismem cmpi.w #3,d0 bge.s ismem bsr Gsec bra.s Fresh ismem cmpi.w #1,d0 beq.s Fresh2 Gadget #1 -> page down cmpi.w #2,d0 beq.s Fresh3 Gadget #2 -> page back move.w Times(pc),d1 move.l Number(pc),d2 mulu d2,d1 cmpi.w #3,d0 Gadget #3 -> forwards # pages bne.s gag4 Fresh2 move.l MemAdr(pc),d0 add.l d1,d0 bra.s Fresh1 gag4 cmpi.w #4,d0 bne.s gag5 Fresh3 move.l MemAdr(pc),d0 Gadget #4 -> back # pages sub.l d1,d0 Fresh1 move.l d0,MemAdr Fresh bsr PrintMem bra MsgLoop gag5 moveq #2,d1 Gadget #5 -> Word forward cmpi.w #5,d0 beq.s Fresh3 cmpi.w #6,d0 Gadget #6 -> Word backwards beq.s Fresh2 move.w Wordl(pc),d1 lsl.w #1,d1 cmpi.w #7,d0 beq.s Fresh3 Gadget #7 -> # words forward bne.s Fresh2 MenuPick cmpi.l #$100,d7 bne CloseWindow ; Choice from menu movea.l Window(pc),a0 movea.l $5e(a0),a0 Load Window.MessageKey move.w $18(a0),d0 Load message code move.w d0,d1 andi.w #$f,d1 bne.s ismenu2 andi.w #$f0,d0 Menu 1 set flag move.w d0,AHFlag Gfresh bra.s Fresh ismenu2 cmpi.w #1,d1 bne.s ismenu3 move.w d0,d1 andi.w #$f0,d0 Menu 2 bne.s menu22 bsr GetAddress Submenu 1 bra.s Gfresh menu22 cmpi.w #$20,d0 bne.s menu23 bsr GetPage Submenu 2 bra.s Gfresh menu23 cmpi.w #$40,d0 bne.s menu24 bsr Sword Submenu 3 bra.s Gfresh menu24 cmpi.w #$60,d0 bne.s menu25 bsr Find Submenu 4 bra.s Gfresh menu25 cmpi.w #$80,d0 bne.s menu26 bsr Change Submenu 5 bra.s Gfresh menu26 cmpi.w #$a0,d0 bne.s Gfresh cmpi.w #$a1,d1 Submenu 6 bne.s m1 moveq #0,d0 6.1 68000 bra.s ismic m1 cmpi.w #$8a1,d1 bne.s m2 moveq #1,d0 6.2 68010 bra.s ismic m2 moveq #2,d0 6.3 68020 ismic move.w d0,Micro Xfresh bra.s Gfresh ismenu3 cmpi.w #2,d1 Menu 3 bne.s GMsg andi.w #$f0,d0 bne.s menu32 bsr loads Submenu 1 bra.s Xfresh menu32 cmpi.w #$20,d0 bne.s menu33 move.w Menflg(pc),d0 Submenu 2 andi.w #$100,d0 move.w d0,gagsec GMsg bra MsgLoop menu33 cmpi.w #$40,d0 bne.s GMsg bsr Loadf Submenu 3 bra.s Xfresh CloseWindow cmpi.l #$200,d7 Close window bne.s GMsg ;Window closed end program movea.l Window(pc),a0 Close window jsr _LVOCloseWindow(a6) ;Close library exit movea.l _AbsExecBase,a6 move.l diskbuff(pc),d0 beq.s no_disk movea.l d0,a1 move.l #$420,d0 jsr _LVOFreeMem(a6) no_disk move.l GfxBase(pc),d0 Close graphics lib beq.s No_Gfx movea.l d0,a1 jsr _LVOCloseLibrary(a6) No_Gfx move.l IntuitionBase(pc),d0 Close intuition lib beq.s No_Intui movea.l d0,a1 jsr _LVOCloseLibrary(a6) No_Intui move.l DosBase(pc),d0 Close dos lib beq.s No_Dos movea.l d0,a1 jsr _LVOCloseLibrary(a6) No_Dos move.l (a7)+,d0 beq.s Nbench jsr _LVOForbid(a6) movea.l d0,a1 jsr _LVOReplyMsg(a6) Reply to WB jsr _LVOPermit(a6) Nbench moveq #0,d0 No errors rts ********** * Routines ********** ; Print memory contents PrintMem move.l a6,-(sp) Save old base address move.l MemAdr(pc),temp initialize memory address movea.l GfxBase(pc),a6 Base address = graphics base movea.l Window(pc),a4 movea.l $32(a4),a5 moveq #8,d7 y start prloop moveq #0,d0 x pos = 0 move.l d7,d1 y pos movea.l a5,a1 rastport jsr _LVOMove(a6) set cursor cmpi.w #$40,AHFlag beq.s Disassem bsr.s convert write into buffer bra.s Print Disassem move.l temp(pc),Begin move.l temp(pc),RelAddr lea Begin(pc),a0 jsr Disasm1 move.l Begin(pc),temp Print lea Buffer(pc),a0 moveq #80,d0 movea.l a5,a1 jsr _LVOText(a6) print line addq.b #8,d7 increment y move.w d7,d0 addi.w #$20,d0 can we print another line? cmp.w $a(a4),d0 blt.s prloop move.l temp(pc),d0 sub.l MemAdr(pc),d0 move.l d0,Number movea.l (sp)+,a6 restore base address rts ; Convert memory content to readable convert movea.l temp(pc),a0 Begin of memory lea Buffer(pc),a1 Begin of buffer lea Buffer+43(pc),a2 Ascii display in buffer move.b #$20,(a2)+ Space between hex + ASCII bsr.s start tst.w AHFlag bne.s Ascii moveq #$f,d2 Bytes per line cloop move.b d2,d3 andi.b #3,d3 cmpi.b #3,d3 bne.s noblnk moveq #$20,d3 Space after long word move.b d3,(a1)+ noblnk move.b (a0)+,d0 get byte move.b d0,d1 cmpi.b #$20,d1 bge.s isok moveq #$2e,d1 isok move.b d1,(a2)+ write ASCII bsr.s byte4 write hex dbeq d2,cloop movea.l a2,a1 aend move.l a0,temp Increment address moveq #19,d0 moveq #$20,d1 clop move.b d1,(a1)+ dbra d0,clop rts ; Memory output ASCII Ascii moveq #$34,d2 aloop move.b (a0)+,d0 cmpi.b #$20,d0 bge.s nocor moveq #'.',d0 nocor move.b d0,(a1)+ dbeq d2,aloop bra.s aend ; Write start address start move.l a0,d0 swap d0 bsr.s byte4 1st byte of address move.l a0,d0 lsr.w #8,d0 bsr.s byte4 2nd byte of address move.l a0,d0 bsr.s byte4 3rd byte of address move.b #':',(a1)+ rts ; Convert byte to ASCII and write into buffer byte4 move.b d0,d1 save byte lsr.b #4,d0 high half byte bsr.s byte3 move.b d1,d0 restore byte ; Convert half byte to ASCII and write into buffer byte3 andi.b #$f,d0 take lower half byte addi.b #$30,d0 convert to "0" - "9" cmpi.b #$3a,d0 above "9"? blt.s ncor addq.b #7,d0 convert to "A" - "F" ncor move.b d0,(a1)+ write into buffer rts ; Console handler ConWind movea.l DosBase(pc),a6 move.l d5,d1 move.l #$3ed,d2 Open for read + write jsr _LVOOpen(a6) move.l d0,ConHandle beq.s nocon move.l d0,d1 move.l d6,d2 move.l d7,d3 jsr _LVOWrite(a6) move.l ConHandle(pc),d1 move.l #Buffer,d2 moveq #60,d3 jsr _LVORead(a6) move.l ConHandle(pc),d1 jsr _LVOClose(a6) nocon rts *** Get start address *** GetAddress move.l #cname,d5 move.l #ctext,d6 moveq #cend-ctext,d7 bsr.s ConWind ; Write new memory address bsr.s Reconvert bne.s nmem move.l d1,MemAdr nmem rts *** Get page multiplier *** GetPage move.l #pname,d5 move.l #ptext,d6 moveq #pend-ptext,d7 bsr.s ConWind ; Write new page multiplier bsr.s Reconvert bne.s nopage move.w d1,Times nopage rts *** Get word multiplier *** Sword move.l #wname,d5 move.l #wtext,d6 moveq #wend-wtext,d7 bsr ConWind ; Write new word multiplier bsr.s Reconvert bne.s noword move.w d1,Wordl noword rts ; Convert input to Hex Reconvert moveq #0,d0 moveq #0,d2 lea Buffer(pc),a0 moveq #0,d1 move.b (a0)+,d0 cmpi.b #'$',d0 First char $? bne.s read1 then ignore readbuf move.b (a0)+,d0 Get next char read1 cmpi.b #$a,d0 End of input? beq.s readend addq.l #1,d2 subi.b #$30,d0 Convert to hex blt.s nogo Error in input cmpi.b #9,d0 ble.s risok 0..9 ok cmpi.b #16,d0 ble.s nogo :..§ not ok subq.b #7,d0 cmpi.b #15,d0 ble.s risok A..F ok subi.b #$20,d0 blt.s nogo G.. notok cmpi.b #15,d0 bgt.s nogo a..f ok risok lsl.l #4,d1 add.l d0,d1 bra.s readbuf nogo moveq #1,d0 Nogood rts readend tst.l d2 beq.s nogo No input moveq #0,d0 Is ok rts ; Find memory pattern Find move.l #fname,d5 move.l #ftext,d6 moveq #fend-ftext,d7 bsr ConWind ; See what you can find movem.l d2-d7,-(a7) lea Buffer(pc),a0 Find length of string moveq #-1,d3 leng addq.l #1,d3 cmpi.b #$a,(a0)+ bne.s leng tst.l d3 String of length 0? beq nofind cmpi.b #'$',Buffer First char $? bne.s nodoll bsr Reconvert First convert to hex bne.s nofind move.l d1,Buffer moveq #4,d3 nodoll move.l MemAdr(pc),d0 move.l d0,d1 move.l #Buffer,d2 move.l #$c80000,d4 move.l #$dc0000,d5 sub.l d3,d4 sub.l d3,d5 ; d0 = current memory address ; d1 = begin of search ; d2 = begin of buffer ; d3 = length of string ; d4 = 1st custom chip area ; d5 = 2nd custom chip area ; d6 = number of corresponding characters findloop addq.l #1,d0 Increment address andi.l #$ffffff,d0 mod 16KB cmp.l d1,d0 End of search? beq.s nofind Not found cmp.l d2,d0 Begin of buffer? bne.s custom add.l d3,d0 Set to end of buffer custom cmp.l d4,d0 Custom chips? bne.s nofirst move.l #$d80000,d0 Jump over custom chips nofirst cmp.l d5,d0 Custom chips? bne.s find1 move.l #$e00000,d0 Jump over rtc + custom chips find1 moveq #0,d6 Number of corresponding chars move.l d2,a0 Begin of find string move.l d0,a1 Begin of memory inner cmpm.b (a0)+,(a1)+ bne.s findloop No correspondence addq.l #1,d6 Inc number of found chars cmp.l d6,d3 Was that all? bne.s inner move.l d0,MemAdr String found nofind movem.l (a7)+,d2-d7 nof1 rts ; Change memory Change movea.l MemAdr(pc),a0 Write start address lea haddress(pc),a1 bsr start move.l #hname,d5 move.l #htext,d6 moveq #hend-htext,d7 bsr ConWind bsr Reconvert bne.s nochange movea.l MemAdr(pc),a0 move.l d1,(a0) rts ; Load file Loadf moveq #0,d0 move.l #160,d1 moveq #18,d2 lea FileLoad(pc),a0 jsr _Request tst.l d0 beq.s nochange jsr file tst.l d7 bne.s nochange move.l a3,MemAdr nochange rts ; Load sector loads move.l #jname,d5 move.l #jtext,d6 moveq #jend-jtext,d7 bsr ConWind bsr Reconvert bne.s nochange loadss move.l d1,secnum lea Buffer(pc),a0 move.l diskbuff(pc),d0 move.l Unitno(pc),d2 jsr load adda.l a0,a0 beq.s nochange move.l diskbuff(pc),MemAdr rts ; Get next sector Gsec move.l secnum(pc),d1 cmpi.w #1,d0 bne.s subt addq.l #2,d1 bra.s gogo subt subq.l #2,d1 gogo movea.l d1,a0 move.l d1,d7 lea Buffer(pc),a1 bsr start move.b #$a,-(a1) move.l d7,d1 bra.s loadss IntuitionBase ds.l 1 Pointer to intuition base GfxBase ds.l 1 Pointer to graphics base DosBase ds.l 1 Pointer to dos base Window ds.l 1 Pointer to window structure diskbuff ds.l 1 Pointer to disk buffer gagsec ds.w 1 Lock gagdets to sector mode secnum ds.l 1 sector number Unitno dc.l 0 Unit number cname dc.b 'CON:100/100/200/90/Start address',0 even ctext dc.b 'New start address',$d,$a cend: even pname dc.b 'CON:100/100/200/90/Page multiplier',0 even ptext dc.b 'New page multiplier',$d,$a pend: even wname dc.b 'CON:100/100/200/90/Word multiplier',0 even wtext dc.b 'New word multiplier',$d,$a wend: even fname dc.b 'CON:100/100/200/90/' item24txt dc.b 'Find',0 even ftext dc.b 'Find:',$d,$a,'$...HEX pattern' dc.b $d,$a,'else ASCII pattern',$d,$a fend: even hname dc.b 'CON:100/100/200/90/' item25txt dc.b 'Change',0 even htext dc.b 'Change ' haddress dc.b 'FFFFFF:',$d,$a hend: even jname dc.b 'CON:100/100/200/90/' item31txt dc.b 'Sector',0 even jtext dc.b 'Sector',$d,$a jend: even item33txt dc.b 'Load',0 even FileLoad dc.b 'dump - load a file',0 even ; Communication structure Begin ds.l 1 Begin of disassembly RelAddr ds.l 1 Relative address Micro ds.w 1 Microprocessor type OpCode ds.w 1 Opcode translation Type1 ds.w 1 Type of 1st operand Len1 ds.w 1 Length of 1st address Addr1 ds.l 1 1st address Type2 ds.w 1 Type of 2nd operand Len2 ds.w 1 Length of 2nd operand Addr2 ds.l 1 2nd address Total ds.w 1 Total no of bytes Buffer ds.b 20 Output buffer ; Once the libraries have been opened the texts are no longer ; needed so the space is reused as the output buffer IntuitionName dc.b 'intuition.library',0 GfxName dc.b 'graphics.library',0 DosName dc.b 'dos.library',0 even ; ***** Window definition ***** NewWindow dc.w 0,0 Position left,top dc.w 610,199 Size width,height dc.b 2,1 Colors detail-,block pen dc.l $344 IDCMP-Flags dc.l $144f Window flags dc.l Gadget1 ^Gadget ConHandle dc.l 0 ^Menu check ;Pointer to console handler MemAdr dc.l Wdname ^Window name ;Memory address (PrintMem) Number dc.l 0 ^Screen structure, ;Display count (PrintMem) Wind2 dc.l 0 ^BitMap ;Pointer to 2nd Window structure Times dc.w 100 MinWidth ;Page multiplier Wordl dc.w 40 MinHeight ;Word multiplier AHFlag dc.w 640 MaxWidth ;0 = Ascii + Hex 0 <> Ascii only temp dc.w 256,1 MaxHeight,Screen type ;Tempory memory address (PrintMem) Wdname dc.b 'Dump',0 even **** menu definition **** Menu1 dc.l Menu2 Next menu dc.w 50,0 Position left edge,top edge dc.w 50,20 Dimensions width,height dc.w 1 Menu enabled dc.l mtext1 Text for menu header dc.l item11 ^First in chain dc.l 0,0 Internal mtext1 dc.b 'Mode',0 even item11 dc.l item12 next in chained list dc.w 0,0 Position left edge,top edge dc.w 120,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I11txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I11txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item11txt Pointer to text dc.l 0 Next text item11txt dc.b 'ASCII and HEX',0 even item12 dc.l item13 next in chained list dc.w 0,10 Position left edge,top edge dc.w 120,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I12txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I12txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item12txt Pointer to text dc.l 0 Next text item12txt dc.b 'ASCII only',0 even item13 dc.l 0 next in chained list dc.w 0,20 Position left edge,top edge dc.w 120,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I13txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I13txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item13txt Pointer to text dc.l 0 Next text item13txt dc.b 'Disassembled',0 even ***** 2nd menu definition ***** Menu2 dc.l Menu3 Next menu dc.w 150,0 Position left edge,top edge dc.w 70,20 Dimensions width,height dc.w 1 Menu enabled dc.l mtext2 Text for menu header dc.l item21 ^First in chain dc.l 0,0 Internal mtext2 dc.b 'Options',0 even item21 dc.l item22 next in chained list dc.w 0,0 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I21txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I21txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item21txt Pointer to text dc.l 0 Next text item21txt dc.b 'Set start',0 even item22 dc.l item23 next in chained list dc.w 0,10 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I22txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I22txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item22txt Pointer to text dc.l 0 Next text item22txt dc.b 'Set page',0 even item23 dc.l item24 next in chained list dc.w 0,20 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I23txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I23txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item23txt Pointer to text dc.l 0 Next text item23txt dc.b 'Set word',0 even item24 dc.l item25 next in chained list dc.w 0,30 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I24txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I24txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item24txt Pointer to text dc.l 0 Next text item25 dc.l item26 next in chained list dc.w 0,40 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I25txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I25txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item25txt Pointer to text dc.l 0 Next text item26 dc.l 0 next in chained list dc.w 0,50 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I26txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l item261 dc.w 0 I26txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item26txt Pointer to text dc.l 0 Next text item26txt dc.b 'Micro',0 even item261 dc.l item262 next in chained list dc.w 80,0 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $15b itemtext+highcomp+itemenabled+checkit+checked dc.l 6 Mutual exclude dc.l I261txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I261txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item261txt Pointer to text dc.l 0 Next text item261txt dc.b ' 68000',0 even item262 dc.l item263 next in chained list dc.w 80,10 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $5b itemtext+highcomp+itemenabled+checkit dc.l 5 Mutual exclude dc.l I262txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I262txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item262txt Pointer to text dc.l 0 Next text item262txt dc.b ' 68010',0 even item263 dc.l 0 next in chained list dc.w 80,20 Position left edge,top edge dc.w 80,10 Dimensions width,height dc.w $5b itemtext+highcomp+itemenabled+checkit dc.l 3 Mutual exclude dc.l I263txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I263txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item263txt Pointer to text dc.l 0 Next text item263txt dc.b ' 68020',0 even Menu3 dc.l 0 Next menu dc.w 250,0 Position left edge,top edge dc.w 50,20 Dimensions width,height dc.w 1 Menu enabled dc.l mtext3 Text for menu header dc.l item31 ^First in chain dc.l 0,0 Internal mtext3 dc.b 'Disk',0 even item31 dc.l item32 next in chained list dc.w 0,0 Position left edge,top edge dc.w 120,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I31txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I31txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item31txt Pointer to text dc.l 0 Next text item32 dc.l item33 next in chained list dc.w 0,10 Position left edge,top edge dc.w 120,10 Dimensions width,height Menflg dc.w $5b itemtext+highcomp+checkit+itemenabled dc.l 0 Mutual exclude dc.l I32txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I32txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item32txt Pointer to text dc.l 0 Next text item32txt dc.b ' Gags to sec',0 even item33 dc.l 0 next in chained list dc.w 0,20 Position left edge,top edge dc.w 120,10 Dimensions width,height dc.w $52 itemtext+highcomp+itemenabled dc.l 0 Mutual exclude dc.l I33txt Pointer to intuition text dc.l 0 dc.b 0,0 dc.l 0 dc.w 0 I33txt dc.b 0 Front pen (blue) dc.b 1 Back pen (white) dc.b 0,0 Draw mode dc.w 0 Left edge dc.w 0 Top edge dc.l 0 Text font dc.l item33txt Pointer to text dc.l 0 Next text *** Gadget definition *** Gadget1 dc.l Gadget2 +0 Next gadget dc.w 10 +4 Left edge dc.w -15 +6 Top edge dc.w 20 +8 Width dc.w 10 +A Height dc.w 8 +C Flags dc.w 1 +E Activation dc.w 1 +10 Gadget type dc.l Border1 +12 Rendered as border or image dc.l 0 +16 Select render dc.l 0 +1A ^Gadget text dc.l 0 +1E Mutual exclude dc.l 0 +22 Special info dc.w 1 +26 Gadget ID dc.l 0 +28 User data Border1 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs1 Vector coordinate pairs dc.l 0 Next border Pairs1 dc.w 0,0 Lines which constitute the gadget dc.w 10,0 dc.w 10,8 dc.w 8,6 dc.w 10,8 dc.w 12,6 dc.w 10,8 dc.w 10,0 dc.w 20,0 dc.w 20,10 dc.w 0,10 dc.w 0,0 Gadget2 dc.l Gadget3 Next gadget dc.w 50 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border2 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 2 Gadget ID dc.l 0 User data Border2 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs2 Vector coordinate pairs dc.l 0 Next border Pairs2 dc.w 0,0 Lines which constitute the gadget dc.w 20,0 dc.w 20,10 dc.w 10,10 dc.w 10,2 dc.w 8,4 dc.w 10,2 dc.w 12,4 dc.w 10,2 dc.w 10,10 dc.w 0,10 dc.w 0,0 Gadget3 dc.l Gadget4 Next gadget dc.w 90 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border3 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 3 Gadget ID dc.l 0 User data Border3 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs3 Vector coordinate pairs dc.l 0 Next border Pairs3 dc.w 0,0 Lines which constitute the gadget dc.w 8,0 dc.w 8,6 dc.w 7,5 dc.w 10,8 dc.w 13,5 dc.w 12,6 dc.w 12,0 dc.w 20,0 dc.w 20,10 dc.w 0,10 dc.w 0,0 Gadget4 dc.l Gadget5 Next gadget dc.w 130 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border4 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 4 Gadget ID dc.l 0 User data Border4 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs4 Vector coordinate pairs dc.l 0 Next border Pairs4 dc.w 0,0 Lines which constitute the gadget dc.w 20,0 dc.w 20,10 dc.w 12,10 dc.w 12,4 dc.w 13,5 dc.w 10,2 dc.w 7,5 dc.w 8,4 dc.w 8,10 dc.w 0,10 dc.w 0,0 Gadget5 dc.l Gadget6 Next gadget dc.w 170 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border5 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 5 Gadget ID dc.l 0 User data Border5 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs5 Vector coordinate pairs dc.l 0 Next border Pairs5 dc.w 0,0 Lines which constitute the gadget dc.w 20,0 dc.w 20,10 dc.w 0,10 dc.w 0,5 dc.w 16,5 dc.w 14,4 dc.w 16,5 dc.w 14,6 dc.w 16,5 dc.w 0,5 dc.w 0,0 Gadget6 dc.l Gadget7 Next gadget dc.w 210 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border6 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 6 Gadget ID dc.l 0 User data Border6 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs6 Vector coordinate pairs dc.l 0 Next border Pairs6 dc.w 0,0 Lines which constitute the gadget dc.w 20,0 dc.w 20,5 dc.w 4,5 dc.w 6,4 dc.w 4,5 dc.w 6,6 dc.w 4,5 dc.w 20,5 dc.w 20,10 dc.w 0,10 dc.w 0,0 Gadget7 dc.l Gadget8 Next gadget dc.w 250 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border7 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 7 Gadget ID dc.l 0 User data Border7 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs7 Vector coordinate pairs dc.l 0 Next border Pairs7 dc.w 0,0 Lines which constitute the gadget dc.w 20,0 dc.w 20,10 dc.w 0,10 dc.w 0,6 dc.w 15,6 dc.w 14,7 dc.w 15,5 dc.w 14,3 dc.w 15,4 dc.w 0,4 dc.w 0,0 Gadget8 dc.l 0 Next gadget dc.w 290 Left edge dc.w -15 Top edge dc.w 20 Width dc.w 10 Height dc.w 8 Flags dc.w 1 Activation dc.w 1 Gadget type dc.l Border8 Rendered as border or image dc.l 0 Select render dc.l 0 ^Gadget text dc.l 0 Mutual exclude dc.l 0 Special info dc.w 8 Gadget ID dc.l 0 User data Border8 dc.w 0 Left edge dc.w 0 Top edge dc.b 1,2 Front pen,back pen dc.b 1,12 Draw mode,number of coord pairs dc.l Pairs8 Vector coordinate pairs dc.l 0 Next border Pairs8 dc.w 0,0 Lines which constitute the gadget dc.w 20,0 dc.w 20,4 dc.w 6,4 dc.w 7,3 dc.w 5,5 dc.w 7,7 dc.w 6,6 dc.w 20,6 dc.w 20,10 dc.w 0,10 dc.w 0,0 end