home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / a68kex_431.lzh / A68Kex / dump.asm < prev    next >
Assembly Source File  |  1991-01-17  |  48KB  |  1,491 lines

  1. ***************************************
  2. *                                     *
  3. *        DUMP memory contents         *
  4. *                                     *
  5. * written by E. Lenz                  *
  6. *            Johann-Fichte-Strasse 11 *
  7. *            8 Munich 40              *
  8. *            Germany                  *
  9. *                                     *
  10. ***************************************
  11.  
  12.  
  13.  
  14. *****************************************************
  15. *               The FIND function
  16. * The find function is rather slow and cannot be
  17. * stopped (try searching 16MB) but it searches all of
  18. * memory (excepting the RTC and custom chip areas:
  19. * $C80000 - $D7FFFF and $DC0000 - $DFFFFF )
  20. * so nothing can be hidden. Although my Buffer will
  21. * not be found by find, it always finds a replica
  22. * used by DOS.
  23. *****************************************************
  24.  
  25.  XREF Disasm1,file,load,_Request
  26.  
  27. ; EXEC.library routines
  28.  
  29. _AbsExecBase       equ 4
  30. _LVOForbid         equ -$84
  31. _LVOPermit         equ -$8a
  32. _LVOAllocMem       equ -$c6
  33. _LVOFreeMem        equ -$d2
  34. _LVOWait           equ -$13e
  35. _LVOGetMsg         equ -$174
  36. _LVOReplyMsg       equ -$17a
  37. _LVOWaitPort       equ -$180
  38. _LVOCloseLibrary   equ -$19e
  39. _LVOOpenLibrary    equ -$228
  40.  
  41. ; GRAPHICS.library routines
  42.  
  43. _LVOText           equ -$3c
  44. _LVOMove           equ -$f0
  45.  
  46. ; INTUITION.library routines
  47.  
  48. _LVOCloseWindow    equ -$48
  49. _LVOOpenWindow     equ -$cc
  50. _LVOSetMenuStrip   equ -$108
  51.  
  52. ; DOS.library routines
  53.  
  54. _LVOOpen         equ -$1e
  55. _LVOClose        equ -$24
  56. _LVORead         equ -$2a
  57. _LVOWrite        equ -$30
  58.  
  59. wd_UserPort     equ $56
  60. pr_MsgPort      equ $5c
  61. pr_CLI          equ $ac
  62. ThisTask        equ $114
  63. VBlankFrequency equ $212
  64.  
  65.              code
  66.  
  67.              movea.l _AbsExecBase,a6
  68.  
  69. ; Start from Workbench ?
  70.  
  71.              moveq   #0,d0
  72.              movea.l ThisTask(a6),a4
  73.              tst.l   pr_CLI(a4)
  74.              bne.s   OpenLibs   Not from WB
  75.  
  76. ; Get WB Message
  77.  
  78.              lea     pr_MsgPort(a4),a0
  79.              jsr     _LVOWaitPort(a6)
  80.              jsr     _LVOGetMsg(a6)
  81.  
  82.  
  83. ; Open librarys
  84.  
  85.  
  86. OpenLibs     move.l  d0,-(a7)
  87.  
  88.              cmpi.b  #60,VBlankFrequency(a6) test if PAL or NTSC
  89.              beq.s   isNTSC
  90.              move.w  #256,NewWindow+6
  91.  
  92. isNTSC       lea     GfxName(pc),a1   Open graphics.library
  93.              moveq   #0,d0
  94.              jsr     _LVOOpenLibrary(a6)
  95.              move.l  d0,GfxBase   Save graphics base address
  96.              beq.s   Gexit
  97.  
  98.              lea     DosName(pc),a1    Open dos.library
  99.              moveq   #0,d0
  100.              jsr     _LVOOpenLibrary(a6)
  101.              move.l  d0,DosBase
  102.              beq.s   Gexit
  103.  
  104.              lea     IntuitionName(pc),a1 Open intuition.library
  105.              moveq   #0,d0
  106.              jsr     _LVOOpenLibrary(a6)
  107.              move.l  d0,IntuitionBase Save intuition base address
  108.              beq.s   Gexit
  109.  
  110. ; Open window
  111.  
  112.              movea.l d0,a6         Base address = IntuitionBase
  113.              lea     NewWindow(pc),a0
  114.              jsr     _LVOOpenWindow(a6)
  115.              move.l  d0,Window  Save pointer to window structure
  116. Gexit        beq     exit
  117.  
  118. ; Set menu
  119.              movea.l d0,a0           which window
  120.              lea     Menu1(pc),a1    which menu
  121.              jsr     _LVOSetMenuStrip(a6)
  122.  
  123. ; Initial output
  124.  
  125.              move.w  #0,Micro
  126.              move.w  #10,Times        Initialize page multiplier
  127.              move.w  #10,Wordl        Initialize word multiplier
  128.              move.l  #$fc0000,MemAdr  Initialize MemAdr
  129.              bsr     PrintMem
  130.              movea.l _AbsExecBase,a6
  131.  
  132. ; get disk buffer
  133.  
  134.              move.l  #$420,d0
  135.              moveq   #2,d1
  136.              jsr     _LVOAllocMem(a6)
  137.              move.l  d0,diskbuff
  138.              beq.s   Gexit
  139.  
  140. ; Main program
  141.  
  142. Main         movea.l Window(pc),a0
  143.              movea.l wd_UserPort(a0),a0
  144.              move.b  $f(a0),d1   Load signal bit
  145.              moveq   #1,d0
  146.              lsl.l   d1,d0
  147.              jsr     _LVOWait(a6)
  148.  
  149. MsgLoop      movea.l _AbsExecBase,a6
  150.              movea.l Window(pc),a0
  151.              movea.l wd_UserPort(a0),a0
  152.              jsr     _LVOGetMsg(a6)
  153.              tst.l   d0
  154.              beq.s   Main          No message
  155.  
  156.              movea.l d0,a1
  157.              move.l  $14(a1),d7       Message in a7
  158.              movea.l IntuitionBase,a6
  159.  
  160.  
  161.              cmpi.l  #4,d7       Refresh window
  162.              bne.s   Gadget
  163.  
  164. ;Refresh window
  165.  
  166.              bsr     PrintMem
  167.              bra.s   MsgLoop
  168.  
  169. ; Gadgets selected
  170.  
  171. Gadget       cmpi.l  #$40,d7
  172.              bne     MenuPick
  173.  
  174.              movea.l Window(pc),a0
  175.              movea.l $5e(a0),a0   Load Window.MessageKey
  176.              movea.l $1c(a0),a0   Load pointer to Gadget
  177.              move.w  $26(a0),d0   Load gadget ID
  178.              move.l  Number(pc),d1
  179.  
  180.              tst.w   gagsec
  181.              beq.s   ismem
  182.              cmpi.w  #3,d0
  183.              bge.s   ismem
  184.              bsr     Gsec
  185.              bra.s   Fresh
  186.  
  187. ismem        cmpi.w  #1,d0
  188.              beq.s   Fresh2       Gadget #1 -> page down
  189.  
  190.              cmpi.w  #2,d0
  191.              beq.s   Fresh3       Gadget #2 -> page back
  192.  
  193.              move.w  Times(pc),d1
  194.              move.l  Number(pc),d2
  195.              mulu    d2,d1
  196.              cmpi.w  #3,d0        Gadget #3 -> forwards # pages
  197.              bne.s   gag4
  198. Fresh2       move.l  MemAdr(pc),d0
  199.              add.l   d1,d0
  200.              bra.s   Fresh1
  201.  
  202. gag4         cmpi.w  #4,d0
  203.              bne.s   gag5
  204. Fresh3       move.l  MemAdr(pc),d0 Gadget #4 -> back # pages
  205.              sub.l   d1,d0
  206. Fresh1       move.l  d0,MemAdr
  207. Fresh        bsr     PrintMem
  208.              bra     MsgLoop
  209.  
  210. gag5         moveq   #2,d1        Gadget #5 -> Word forward
  211.              cmpi.w  #5,d0
  212.              beq.s   Fresh3
  213.  
  214.              cmpi.w  #6,d0        Gadget #6 -> Word backwards
  215.              beq.s   Fresh2
  216.  
  217.              move.w  Wordl(pc),d1
  218.              lsl.w   #1,d1
  219.              cmpi.w  #7,d0
  220.              beq.s   Fresh3       Gadget #7 -> # words forward
  221.              bne.s   Fresh2
  222.  
  223.  
  224. MenuPick     cmpi.l  #$100,d7
  225.              bne     CloseWindow
  226.  
  227. ; Choice from menu
  228.  
  229.              movea.l Window(pc),a0
  230.              movea.l $5e(a0),a0   Load Window.MessageKey
  231.              move.w  $18(a0),d0   Load message code
  232.              move.w  d0,d1
  233.              andi.w  #$f,d1
  234.              bne.s   ismenu2
  235.  
  236.              andi.w  #$f0,d0      Menu 1 set flag
  237.              move.w  d0,AHFlag
  238. Gfresh       bra.s   Fresh
  239.  
  240. ismenu2      cmpi.w  #1,d1
  241.              bne.s   ismenu3
  242.              move.w  d0,d1
  243.              andi.w  #$f0,d0      Menu 2
  244.              bne.s   menu22
  245.              bsr     GetAddress   Submenu 1
  246.              bra.s   Gfresh
  247. menu22       cmpi.w  #$20,d0
  248.              bne.s   menu23
  249.              bsr     GetPage      Submenu 2
  250.              bra.s   Gfresh
  251. menu23       cmpi.w  #$40,d0
  252.              bne.s   menu24
  253.              bsr     Sword        Submenu 3
  254.              bra.s   Gfresh
  255. menu24       cmpi.w  #$60,d0
  256.              bne.s   menu25
  257.              bsr     Find         Submenu 4
  258.              bra.s   Gfresh
  259. menu25       cmpi.w  #$80,d0
  260.              bne.s   menu26
  261.              bsr     Change       Submenu 5
  262.              bra.s   Gfresh
  263. menu26       cmpi.w  #$a0,d0
  264.              bne.s   Gfresh
  265.              cmpi.w  #$a1,d1      Submenu 6
  266.              bne.s   m1
  267.              moveq   #0,d0        6.1 68000
  268.              bra.s   ismic
  269. m1           cmpi.w  #$8a1,d1
  270.              bne.s   m2
  271.              moveq   #1,d0        6.2 68010
  272.              bra.s   ismic
  273. m2           moveq   #2,d0        6.3 68020
  274. ismic        move.w  d0,Micro
  275. Xfresh       bra.s   Gfresh
  276.  
  277. ismenu3      cmpi.w  #2,d1         Menu 3
  278.              bne.s   GMsg
  279.              andi.w  #$f0,d0
  280.              bne.s   menu32
  281.              bsr     loads         Submenu 1
  282.              bra.s   Xfresh
  283. menu32       cmpi.w  #$20,d0
  284.              bne.s   menu33
  285.              move.w  Menflg(pc),d0 Submenu 2
  286.              andi.w  #$100,d0
  287.              move.w  d0,gagsec
  288. GMsg         bra     MsgLoop
  289. menu33       cmpi.w  #$40,d0
  290.              bne.s   GMsg
  291.              bsr     Loadf         Submenu 3
  292.              bra.s   Xfresh
  293.  
  294. CloseWindow  cmpi.l  #$200,d7      Close window
  295.              bne.s   GMsg
  296.  
  297. ;Window closed end program
  298.  
  299.              movea.l Window(pc),a0 Close window
  300.              jsr     _LVOCloseWindow(a6)
  301.  
  302.  
  303. ;Close library
  304.  
  305. exit         movea.l _AbsExecBase,a6
  306.              move.l  diskbuff(pc),d0
  307.              beq.s   no_disk
  308.              movea.l d0,a1
  309.              move.l  #$420,d0
  310.              jsr     _LVOFreeMem(a6)
  311.  
  312. no_disk      move.l  GfxBase(pc),d0   Close graphics lib
  313.              beq.s   No_Gfx
  314.              movea.l d0,a1
  315.              jsr     _LVOCloseLibrary(a6)
  316.  
  317. No_Gfx       move.l  IntuitionBase(pc),d0 Close intuition lib
  318.              beq.s   No_Intui
  319.              movea.l d0,a1
  320.              jsr     _LVOCloseLibrary(a6)
  321.  
  322. No_Intui     move.l  DosBase(pc),d0    Close dos lib
  323.              beq.s   No_Dos
  324.              movea.l d0,a1
  325.              jsr     _LVOCloseLibrary(a6)
  326.  
  327. No_Dos       move.l  (a7)+,d0
  328.              beq.s   Nbench
  329.  
  330.              jsr     _LVOForbid(a6)
  331.              movea.l d0,a1
  332.              jsr     _LVOReplyMsg(a6)  Reply to WB
  333.              jsr     _LVOPermit(a6)
  334.  
  335. Nbench       moveq   #0,d0    No errors
  336.              rts
  337.  
  338. **********
  339. * Routines
  340. **********
  341.  
  342. ; Print memory contents
  343.  
  344. PrintMem     move.l  a6,-(sp)    Save old base address
  345.              move.l  MemAdr(pc),temp initialize memory address
  346.              movea.l GfxBase(pc),a6  Base address = graphics base
  347.              movea.l Window(pc),a4
  348.              movea.l $32(a4),a5
  349.              moveq   #8,d7        y start
  350. prloop       moveq   #0,d0        x pos = 0
  351.              move.l  d7,d1        y pos
  352.              movea.l a5,a1        rastport
  353.              jsr     _LVOMove(a6)    set cursor
  354.  
  355.              cmpi.w  #$40,AHFlag
  356.              beq.s   Disassem
  357.              bsr.s   convert      write into buffer
  358.              bra.s   Print
  359.  
  360. Disassem     move.l  temp(pc),Begin
  361.              move.l  temp(pc),RelAddr
  362.              lea     Begin(pc),a0
  363.              jsr     Disasm1
  364.              move.l  Begin(pc),temp
  365.  
  366. Print        lea     Buffer(pc),a0
  367.              moveq   #80,d0
  368.              movea.l a5,a1
  369.              jsr     _LVOText(a6)  print line
  370.              addq.b  #8,d7         increment y
  371.              move.w  d7,d0
  372.              addi.w  #$20,d0     can we print another line?
  373.              cmp.w   $a(a4),d0
  374.              blt.s   prloop
  375.              move.l  temp(pc),d0
  376.              sub.l   MemAdr(pc),d0
  377.              move.l  d0,Number
  378.              movea.l (sp)+,a6    restore base address
  379.              rts
  380.  
  381. ; Convert memory content to readable
  382.  
  383. convert      movea.l temp(pc),a0       Begin of memory
  384.              lea     Buffer(pc),a1     Begin of buffer
  385.              lea     Buffer+43(pc),a2  Ascii display in buffer
  386.              move.b  #$20,(a2)+        Space between hex + ASCII
  387.              bsr.s   start
  388.  
  389.              tst.w   AHFlag
  390.              bne.s   Ascii
  391.  
  392.              moveq   #$f,d2         Bytes per line
  393. cloop        move.b  d2,d3
  394.              andi.b  #3,d3
  395.              cmpi.b  #3,d3
  396.              bne.s   noblnk
  397.              moveq   #$20,d3        Space after long word
  398.              move.b  d3,(a1)+
  399. noblnk       move.b  (a0)+,d0       get byte
  400.              move.b  d0,d1
  401.              cmpi.b  #$20,d1
  402.              bge.s   isok
  403.              moveq   #$2e,d1
  404. isok         move.b  d1,(a2)+       write ASCII
  405.              bsr.s   byte4          write hex
  406.              dbeq    d2,cloop
  407.              movea.l a2,a1
  408. aend         move.l  a0,temp        Increment address
  409.              moveq   #19,d0
  410.              moveq   #$20,d1
  411. clop         move.b  d1,(a1)+
  412.              dbra    d0,clop
  413.              rts
  414.  
  415. ; Memory output ASCII
  416.  
  417. Ascii        moveq   #$34,d2
  418. aloop        move.b  (a0)+,d0
  419.              cmpi.b  #$20,d0
  420.              bge.s   nocor
  421.              moveq   #'.',d0
  422. nocor        move.b  d0,(a1)+
  423.              dbeq    d2,aloop
  424.              bra.s   aend
  425.  
  426. ; Write start address
  427.  
  428. start        move.l  a0,d0
  429.              swap    d0
  430.              bsr.s   byte4          1st byte of address
  431.              move.l  a0,d0
  432.              lsr.w   #8,d0
  433.              bsr.s   byte4          2nd byte of address
  434.              move.l  a0,d0
  435.              bsr.s   byte4          3rd byte of address
  436.              move.b  #':',(a1)+
  437.              rts
  438.  
  439. ; Convert byte to ASCII and write into buffer
  440.  
  441. byte4        move.b  d0,d1          save byte
  442.              lsr.b   #4,d0          high half byte
  443.              bsr.s   byte3
  444.              move.b  d1,d0          restore byte
  445.  
  446. ; Convert half byte to ASCII and write into buffer
  447.  
  448. byte3        andi.b  #$f,d0         take lower half byte
  449.              addi.b  #$30,d0        convert to "0" - "9"
  450.              cmpi.b  #$3a,d0        above "9"?
  451.              blt.s   ncor
  452.              addq.b  #7,d0          convert to "A" - "F"
  453. ncor         move.b  d0,(a1)+       write into buffer
  454.              rts
  455.  
  456. ; Console handler
  457.  
  458. ConWind      movea.l DosBase(pc),a6
  459.              move.l  d5,d1
  460.              move.l  #$3ed,d2      Open for read + write
  461.              jsr     _LVOOpen(a6)
  462.              move.l  d0,ConHandle
  463.              beq.s   nocon
  464.  
  465.              move.l  d0,d1
  466.              move.l  d6,d2
  467.              move.l  d7,d3
  468.              jsr     _LVOWrite(a6)
  469.  
  470.              move.l  ConHandle(pc),d1
  471.              move.l  #Buffer,d2
  472.              moveq   #60,d3
  473.              jsr     _LVORead(a6)
  474.  
  475.              move.l  ConHandle(pc),d1
  476.              jsr     _LVOClose(a6)
  477. nocon        rts
  478.  
  479. *** Get start address ***
  480.  
  481. GetAddress   move.l  #cname,d5
  482.              move.l  #ctext,d6
  483.              moveq   #cend-ctext,d7
  484.              bsr.s   ConWind
  485.  
  486. ; Write new memory address
  487.  
  488.              bsr.s   Reconvert
  489.              bne.s   nmem
  490.              move.l  d1,MemAdr
  491. nmem         rts
  492.  
  493. *** Get page multiplier ***
  494.  
  495. GetPage      move.l  #pname,d5
  496.              move.l  #ptext,d6
  497.              moveq   #pend-ptext,d7
  498.              bsr.s   ConWind
  499.  
  500. ; Write new page multiplier
  501.  
  502.              bsr.s   Reconvert
  503.              bne.s   nopage
  504.              move.w  d1,Times
  505. nopage       rts
  506.  
  507. *** Get word multiplier ***
  508.  
  509. Sword        move.l  #wname,d5
  510.              move.l  #wtext,d6
  511.              moveq   #wend-wtext,d7
  512.              bsr     ConWind
  513.  
  514. ; Write new word multiplier
  515.  
  516.              bsr.s   Reconvert
  517.              bne.s   noword
  518.              move.w  d1,Wordl
  519. noword       rts
  520.  
  521. ; Convert input to Hex
  522.  
  523. Reconvert    moveq   #0,d0
  524.              moveq   #0,d2
  525.              lea     Buffer(pc),a0
  526.              moveq   #0,d1
  527.              move.b  (a0)+,d0
  528.              cmpi.b  #'$',d0    First char $?
  529.              bne.s   read1      then ignore
  530.  
  531. readbuf      move.b  (a0)+,d0   Get next char
  532. read1        cmpi.b  #$a,d0     End of input?
  533.              beq.s   readend
  534.              addq.l  #1,d2
  535.              subi.b  #$30,d0    Convert to hex
  536.              blt.s   nogo       Error in input
  537.              cmpi.b  #9,d0
  538.              ble.s   risok       0..9 ok
  539.              cmpi.b  #16,d0
  540.              ble.s   nogo        :..§ not ok
  541.              subq.b  #7,d0
  542.              cmpi.b  #15,d0
  543.              ble.s   risok       A..F ok
  544.              subi.b  #$20,d0
  545.              blt.s   nogo        G..  notok
  546.              cmpi.b  #15,d0
  547.              bgt.s   nogo        a..f ok
  548. risok        lsl.l   #4,d1
  549.              add.l   d0,d1
  550.              bra.s   readbuf
  551.  
  552. nogo         moveq   #1,d0      Nogood
  553.              rts
  554. readend      tst.l   d2
  555.              beq.s   nogo       No input
  556.              moveq   #0,d0      Is ok
  557.              rts
  558.  
  559. ; Find memory pattern
  560.  
  561. Find         move.l  #fname,d5
  562.              move.l  #ftext,d6
  563.              moveq   #fend-ftext,d7
  564.              bsr     ConWind
  565.  
  566. ; See what you can find
  567.  
  568.              movem.l d2-d7,-(a7)
  569.              lea     Buffer(pc),a0  Find length of string
  570.              moveq   #-1,d3
  571. leng         addq.l  #1,d3
  572.              cmpi.b  #$a,(a0)+
  573.              bne.s   leng
  574.              tst.l   d3         String of length 0?
  575.              beq     nofind
  576.  
  577.              cmpi.b  #'$',Buffer First char $?
  578.              bne.s   nodoll
  579.              bsr     Reconvert   First convert to hex
  580.              bne.s   nofind
  581.              move.l  d1,Buffer
  582.              moveq   #4,d3
  583.  
  584. nodoll       move.l  MemAdr(pc),d0
  585.              move.l  d0,d1
  586.              move.l  #Buffer,d2
  587.              move.l  #$c80000,d4
  588.              move.l  #$dc0000,d5
  589.              sub.l   d3,d4
  590.              sub.l   d3,d5
  591.  
  592. ; d0 = current memory address
  593. ; d1 = begin of search
  594. ; d2 = begin of buffer
  595. ; d3 = length of string
  596. ; d4 = 1st custom chip area
  597. ; d5 = 2nd custom chip area
  598. ; d6 = number of corresponding characters
  599.  
  600. findloop     addq.l  #1,d0        Increment address
  601.              andi.l  #$ffffff,d0     mod 16KB
  602.  
  603.              cmp.l   d1,d0       End of search?
  604.              beq.s   nofind      Not found
  605.  
  606.              cmp.l   d2,d0       Begin of buffer?
  607.              bne.s   custom
  608.              add.l   d3,d0       Set to end of buffer
  609.  
  610. custom       cmp.l   d4,d0       Custom chips?
  611.              bne.s   nofirst
  612.              move.l  #$d80000,d0 Jump over custom chips
  613.  
  614. nofirst      cmp.l   d5,d0       Custom chips?
  615.              bne.s   find1
  616.              move.l  #$e00000,d0 Jump over rtc + custom chips
  617.  
  618. find1        moveq   #0,d6     Number of corresponding chars
  619.              move.l  d2,a0     Begin of find string
  620.              move.l  d0,a1     Begin of memory
  621. inner        cmpm.b  (a0)+,(a1)+
  622.              bne.s   findloop  No correspondence
  623.              addq.l  #1,d6     Inc number of found chars
  624.              cmp.l   d6,d3     Was that all?
  625.              bne.s   inner
  626.  
  627.              move.l  d0,MemAdr String found
  628.  
  629. nofind       movem.l (a7)+,d2-d7
  630.  
  631. nof1         rts
  632.  
  633. ; Change memory
  634.  
  635. Change       movea.l MemAdr(pc),a0   Write start address
  636.              lea     haddress(pc),a1
  637.              bsr     start
  638.  
  639.              move.l  #hname,d5
  640.              move.l  #htext,d6
  641.              moveq   #hend-htext,d7
  642.              bsr     ConWind
  643.              bsr     Reconvert
  644.              bne.s   nochange
  645.              movea.l MemAdr(pc),a0
  646.              move.l  d1,(a0)
  647.              rts
  648.  
  649. ; Load file
  650.  
  651. Loadf        moveq   #0,d0
  652.              move.l  #160,d1
  653.              moveq   #18,d2
  654.              lea     FileLoad(pc),a0
  655.              jsr     _Request
  656.              tst.l   d0
  657.              beq.s   nochange
  658.              jsr     file
  659.              tst.l   d7
  660.              bne.s   nochange
  661.              move.l  a3,MemAdr
  662. nochange     rts
  663.  
  664. ; Load sector
  665.  
  666. loads        move.l  #jname,d5
  667.              move.l  #jtext,d6
  668.              moveq   #jend-jtext,d7
  669.              bsr     ConWind
  670.              bsr     Reconvert
  671.              bne.s   nochange
  672. loadss       move.l  d1,secnum
  673.              lea     Buffer(pc),a0
  674.              move.l  diskbuff(pc),d0
  675.              move.l  Unitno(pc),d2
  676.              jsr     load
  677.              adda.l  a0,a0
  678.              beq.s   nochange
  679.              move.l  diskbuff(pc),MemAdr
  680.              rts
  681.  
  682. ; Get next sector
  683.  
  684. Gsec         move.l  secnum(pc),d1
  685.              cmpi.w  #1,d0
  686.              bne.s   subt
  687.              addq.l  #2,d1
  688.              bra.s   gogo
  689. subt         subq.l  #2,d1
  690. gogo         movea.l d1,a0
  691.              move.l  d1,d7
  692.              lea     Buffer(pc),a1
  693.              bsr     start
  694.              move.b  #$a,-(a1)
  695.              move.l  d7,d1
  696.              bra.s   loadss
  697.  
  698. IntuitionBase    ds.l 1        Pointer to intuition base
  699. GfxBase          ds.l 1        Pointer to graphics base
  700. DosBase          ds.l 1        Pointer to dos base
  701. Window           ds.l 1        Pointer to window structure
  702. diskbuff         ds.l 1        Pointer to disk buffer
  703. gagsec           ds.w 1        Lock gagdets to sector mode
  704. secnum           ds.l 1        sector number
  705. Unitno           dc.l 0        Unit number
  706.  
  707. cname            dc.b 'CON:100/100/200/90/Start address',0
  708.                  even
  709. ctext            dc.b 'New start address',$d,$a
  710. cend:
  711.                  even
  712.  
  713. pname            dc.b 'CON:100/100/200/90/Page multiplier',0
  714.                  even
  715.  
  716. ptext            dc.b 'New page multiplier',$d,$a
  717. pend:
  718.                  even
  719.  
  720. wname            dc.b 'CON:100/100/200/90/Word multiplier',0
  721.                  even
  722.  
  723. wtext            dc.b 'New word multiplier',$d,$a
  724. wend:
  725.                  even
  726.  
  727. fname            dc.b 'CON:100/100/200/90/'
  728. item24txt        dc.b 'Find',0
  729.                  even
  730.  
  731. ftext            dc.b 'Find:',$d,$a,'$...HEX pattern'
  732.                  dc.b $d,$a,'else ASCII pattern',$d,$a
  733. fend:
  734.                  even
  735.  
  736. hname            dc.b 'CON:100/100/200/90/'
  737. item25txt        dc.b 'Change',0
  738.                  even
  739.  
  740. htext            dc.b 'Change '
  741. haddress         dc.b 'FFFFFF:',$d,$a
  742. hend:
  743.                  even
  744.  
  745. jname            dc.b 'CON:100/100/200/90/'
  746. item31txt        dc.b 'Sector',0
  747.                  even
  748.  
  749. jtext            dc.b 'Sector',$d,$a
  750. jend:
  751.                  even
  752.  
  753. item33txt        dc.b 'Load',0
  754.                  even
  755.  
  756. FileLoad         dc.b 'dump - load a file',0
  757.                  even
  758.  
  759. ; Communication structure
  760.  
  761. Begin        ds.l 1            Begin of disassembly
  762. RelAddr      ds.l 1            Relative address
  763. Micro        ds.w 1            Microprocessor type
  764. OpCode       ds.w 1            Opcode translation
  765. Type1        ds.w 1            Type of 1st operand
  766. Len1         ds.w 1            Length of 1st address
  767. Addr1        ds.l 1            1st address
  768. Type2        ds.w 1            Type of 2nd operand
  769. Len2         ds.w 1            Length of 2nd operand
  770. Addr2        ds.l 1            2nd address
  771. Total        ds.w 1            Total no of bytes
  772. Buffer       ds.b 20           Output buffer
  773.  
  774. ; Once the libraries have been opened the texts are no longer
  775. ; needed so the space is reused as the output buffer
  776.  
  777.  
  778. IntuitionName    dc.b 'intuition.library',0
  779. GfxName          dc.b 'graphics.library',0
  780. DosName          dc.b 'dos.library',0
  781.                  even
  782.  
  783. ; ***** Window definition *****
  784.  
  785. NewWindow        dc.w 0,0       Position left,top
  786.                  dc.w 610,199   Size width,height
  787.                  dc.b 2,1       Colors detail-,block pen
  788.                  dc.l $344      IDCMP-Flags
  789.                  dc.l $144f     Window flags
  790.                  dc.l Gadget1   ^Gadget
  791. ConHandle        dc.l 0         ^Menu check
  792.                                 ;Pointer to console handler
  793. MemAdr           dc.l Wdname    ^Window name
  794.                                 ;Memory address (PrintMem)
  795. Number           dc.l 0         ^Screen structure,
  796.                                 ;Display count (PrintMem)
  797. Wind2            dc.l 0         ^BitMap
  798.                                 ;Pointer to 2nd Window structure
  799. Times            dc.w 100       MinWidth
  800.                                 ;Page multiplier
  801. Wordl            dc.w 40        MinHeight
  802.                                 ;Word multiplier
  803. AHFlag           dc.w 640       MaxWidth
  804.                                 ;0 = Ascii + Hex  0 <> Ascii only
  805. temp             dc.w 256,1     MaxHeight,Screen type
  806.                                 ;Tempory memory address (PrintMem)
  807.  
  808. Wdname           dc.b 'Dump',0
  809.                  even
  810.  
  811. **** menu definition ****
  812.  
  813. Menu1            dc.l Menu2     Next menu
  814.                  dc.w 50,0      Position left edge,top edge
  815.                  dc.w 50,20     Dimensions width,height
  816.                  dc.w 1         Menu enabled
  817.                  dc.l mtext1    Text for menu header
  818.                  dc.l item11    ^First in chain
  819.                  dc.l 0,0       Internal
  820.  
  821. mtext1           dc.b 'Mode',0
  822.                  even
  823.  
  824. item11           dc.l item12    next in chained list
  825.                  dc.w 0,0       Position left edge,top edge
  826.                  dc.w 120,10    Dimensions width,height
  827.                  dc.w $52       itemtext+highcomp+itemenabled
  828.                  dc.l 0         Mutual exclude
  829.                  dc.l I11txt    Pointer to intuition text
  830.                  dc.l 0
  831.                  dc.b 0,0
  832.                  dc.l 0
  833.                  dc.w 0
  834.  
  835.  
  836. I11txt           dc.b 0         Front pen  (blue)
  837.                  dc.b 1         Back pen   (white)
  838.                  dc.b 0,0       Draw mode
  839.                  dc.w 0         Left edge
  840.                  dc.w 0         Top edge
  841.                  dc.l 0         Text font
  842.                  dc.l item11txt Pointer to text
  843.                  dc.l 0         Next text
  844.  
  845. item11txt        dc.b 'ASCII and HEX',0
  846.                  even
  847.  
  848. item12           dc.l item13    next in chained list
  849.                  dc.w 0,10      Position left edge,top edge
  850.                  dc.w 120,10    Dimensions width,height
  851.                  dc.w $52       itemtext+highcomp+itemenabled
  852.                  dc.l 0         Mutual exclude
  853.                  dc.l I12txt    Pointer to intuition text
  854.                  dc.l 0
  855.                  dc.b 0,0
  856.                  dc.l 0
  857.                  dc.w 0
  858.  
  859.  
  860. I12txt           dc.b 0         Front pen  (blue)
  861.                  dc.b 1         Back pen   (white)
  862.                  dc.b 0,0       Draw mode
  863.                  dc.w 0         Left edge
  864.                  dc.w 0         Top edge
  865.                  dc.l 0         Text font
  866.                  dc.l item12txt Pointer to text
  867.                  dc.l 0         Next text
  868.  
  869. item12txt        dc.b 'ASCII only',0
  870.                  even
  871.  
  872. item13           dc.l 0         next in chained list
  873.                  dc.w 0,20      Position left edge,top edge
  874.                  dc.w 120,10    Dimensions width,height
  875.                  dc.w $52       itemtext+highcomp+itemenabled
  876.                  dc.l 0         Mutual exclude
  877.                  dc.l I13txt    Pointer to intuition text
  878.                  dc.l 0
  879.                  dc.b 0,0
  880.                  dc.l 0
  881.                  dc.w 0
  882.  
  883.  
  884. I13txt           dc.b 0         Front pen  (blue)
  885.                  dc.b 1         Back pen   (white)
  886.                  dc.b 0,0       Draw mode
  887.                  dc.w 0         Left edge
  888.                  dc.w 0         Top edge
  889.                  dc.l 0         Text font
  890.                  dc.l item13txt Pointer to text
  891.                  dc.l 0         Next text
  892.  
  893. item13txt        dc.b 'Disassembled',0
  894.                  even
  895.  
  896.  
  897. ***** 2nd menu definition *****
  898.  
  899. Menu2            dc.l Menu3     Next menu
  900.                  dc.w 150,0     Position left edge,top edge
  901.                  dc.w 70,20     Dimensions width,height
  902.                  dc.w 1         Menu enabled
  903.                  dc.l mtext2    Text for menu header
  904.                  dc.l item21    ^First in chain
  905.                  dc.l 0,0       Internal
  906.  
  907. mtext2           dc.b 'Options',0
  908.                  even
  909.  
  910.  
  911. item21           dc.l item22    next in chained list
  912.                  dc.w 0,0       Position left edge,top edge
  913.                  dc.w 80,10     Dimensions width,height
  914.                  dc.w $52       itemtext+highcomp+itemenabled
  915.                  dc.l 0         Mutual exclude
  916.                  dc.l I21txt    Pointer to intuition text
  917.                  dc.l 0
  918.                  dc.b 0,0
  919.                  dc.l 0
  920.                  dc.w 0
  921.  
  922.  
  923. I21txt           dc.b 0         Front pen  (blue)
  924.                  dc.b 1         Back pen   (white)
  925.                  dc.b 0,0       Draw mode
  926.                  dc.w 0         Left edge
  927.                  dc.w 0         Top edge
  928.                  dc.l 0         Text font
  929.                  dc.l item21txt Pointer to text
  930.                  dc.l 0         Next text
  931.  
  932. item21txt        dc.b 'Set start',0
  933.                  even
  934.  
  935. item22           dc.l item23    next in chained list
  936.                  dc.w 0,10      Position left edge,top edge
  937.                  dc.w 80,10     Dimensions width,height
  938.                  dc.w $52       itemtext+highcomp+itemenabled
  939.                  dc.l 0         Mutual exclude
  940.                  dc.l I22txt    Pointer to intuition text
  941.                  dc.l 0
  942.                  dc.b 0,0
  943.                  dc.l 0
  944.                  dc.w 0
  945.  
  946.  
  947. I22txt           dc.b 0         Front pen  (blue)
  948.                  dc.b 1         Back pen   (white)
  949.                  dc.b 0,0       Draw mode
  950.                  dc.w 0         Left edge
  951.                  dc.w 0         Top edge
  952.                  dc.l 0         Text font
  953.                  dc.l item22txt Pointer to text
  954.                  dc.l 0         Next text
  955.  
  956. item22txt        dc.b 'Set page',0
  957.                  even
  958.  
  959. item23           dc.l item24    next in chained list
  960.                  dc.w 0,20      Position left edge,top edge
  961.                  dc.w 80,10     Dimensions width,height
  962.                  dc.w $52       itemtext+highcomp+itemenabled
  963.                  dc.l 0         Mutual exclude
  964.                  dc.l I23txt    Pointer to intuition text
  965.                  dc.l 0
  966.                  dc.b 0,0
  967.                  dc.l 0
  968.                  dc.w 0
  969.  
  970.  
  971. I23txt           dc.b 0         Front pen  (blue)
  972.                  dc.b 1         Back pen   (white)
  973.                  dc.b 0,0       Draw mode
  974.                  dc.w 0         Left edge
  975.                  dc.w 0         Top edge
  976.                  dc.l 0         Text font
  977.                  dc.l item23txt Pointer to text
  978.                  dc.l 0         Next text
  979.  
  980. item23txt        dc.b 'Set word',0
  981.                  even
  982.  
  983. item24           dc.l item25    next in chained list
  984.                  dc.w 0,30      Position left edge,top edge
  985.                  dc.w 80,10     Dimensions width,height
  986.                  dc.w $52       itemtext+highcomp+itemenabled
  987.                  dc.l 0         Mutual exclude
  988.                  dc.l I24txt    Pointer to intuition text
  989.                  dc.l 0
  990.                  dc.b 0,0
  991.                  dc.l 0
  992.                  dc.w 0
  993.  
  994.  
  995. I24txt           dc.b 0         Front pen  (blue)
  996.                  dc.b 1         Back pen   (white)
  997.                  dc.b 0,0       Draw mode
  998.                  dc.w 0         Left edge
  999.                  dc.w 0         Top edge
  1000.                  dc.l 0         Text font
  1001.                  dc.l item24txt Pointer to text
  1002.                  dc.l 0         Next text
  1003.  
  1004.  
  1005. item25           dc.l item26    next in chained list
  1006.                  dc.w 0,40      Position left edge,top edge
  1007.                  dc.w 80,10     Dimensions width,height
  1008.                  dc.w $52       itemtext+highcomp+itemenabled
  1009.                  dc.l 0         Mutual exclude
  1010.                  dc.l I25txt    Pointer to intuition text
  1011.                  dc.l 0
  1012.                  dc.b 0,0
  1013.                  dc.l 0
  1014.                  dc.w 0
  1015.  
  1016.  
  1017. I25txt           dc.b 0         Front pen  (blue)
  1018.                  dc.b 1         Back pen   (white)
  1019.                  dc.b 0,0       Draw mode
  1020.                  dc.w 0         Left edge
  1021.                  dc.w 0         Top edge
  1022.                  dc.l 0         Text font
  1023.                  dc.l item25txt Pointer to text
  1024.                  dc.l 0         Next text
  1025.  
  1026. item26           dc.l 0         next in chained list
  1027.                  dc.w 0,50      Position left edge,top edge
  1028.                  dc.w 80,10     Dimensions width,height
  1029.                  dc.w $52       itemtext+highcomp+itemenabled
  1030.                  dc.l 0         Mutual exclude
  1031.                  dc.l I26txt    Pointer to intuition text
  1032.                  dc.l 0
  1033.                  dc.b 0,0
  1034.                  dc.l item261
  1035.                  dc.w 0
  1036.  
  1037.  
  1038. I26txt           dc.b 0         Front pen  (blue)
  1039.                  dc.b 1         Back pen   (white)
  1040.                  dc.b 0,0       Draw mode
  1041.                  dc.w 0         Left edge
  1042.                  dc.w 0         Top edge
  1043.                  dc.l 0         Text font
  1044.                  dc.l item26txt Pointer to text
  1045.                  dc.l 0         Next text
  1046.  
  1047. item26txt        dc.b 'Micro',0
  1048.                  even
  1049.  
  1050.  
  1051. item261          dc.l item262   next in chained list
  1052.                  dc.w 80,0      Position left edge,top edge
  1053.                  dc.w 80,10     Dimensions width,height
  1054.                  dc.w $15b      itemtext+highcomp+itemenabled+checkit+checked
  1055.                  dc.l 6         Mutual exclude
  1056.                  dc.l I261txt   Pointer to intuition text
  1057.                  dc.l 0
  1058.                  dc.b 0,0
  1059.                  dc.l 0
  1060.                  dc.w 0
  1061.  
  1062.  
  1063. I261txt          dc.b 0          Front pen  (blue)
  1064.                  dc.b 1          Back pen   (white)
  1065.                  dc.b 0,0        Draw mode
  1066.                  dc.w 0          Left edge
  1067.                  dc.w 0          Top edge
  1068.                  dc.l 0          Text font
  1069.                  dc.l item261txt Pointer to text
  1070.                  dc.l 0          Next text
  1071.  
  1072. item261txt       dc.b '   68000',0
  1073.                  even
  1074.  
  1075. item262          dc.l item263   next in chained list
  1076.                  dc.w 80,10     Position left edge,top edge
  1077.                  dc.w 80,10     Dimensions width,height
  1078.                  dc.w $5b       itemtext+highcomp+itemenabled+checkit
  1079.                  dc.l 5         Mutual exclude
  1080.                  dc.l I262txt   Pointer to intuition text
  1081.                  dc.l 0
  1082.                  dc.b 0,0
  1083.                  dc.l 0
  1084.                  dc.w 0
  1085.  
  1086.  
  1087. I262txt          dc.b 0          Front pen  (blue)
  1088.                  dc.b 1          Back pen   (white)
  1089.                  dc.b 0,0        Draw mode
  1090.                  dc.w 0          Left edge
  1091.                  dc.w 0          Top edge
  1092.                  dc.l 0          Text font
  1093.                  dc.l item262txt Pointer to text
  1094.                  dc.l 0          Next text
  1095.  
  1096. item262txt       dc.b '   68010',0
  1097.                  even
  1098.  
  1099.  
  1100. item263          dc.l 0         next in chained list
  1101.                  dc.w 80,20     Position left edge,top edge
  1102.                  dc.w 80,10     Dimensions width,height
  1103.                  dc.w $5b       itemtext+highcomp+itemenabled+checkit
  1104.                  dc.l 3         Mutual exclude
  1105.                  dc.l I263txt   Pointer to intuition text
  1106.                  dc.l 0
  1107.                  dc.b 0,0
  1108.                  dc.l 0
  1109.                  dc.w 0
  1110.  
  1111.  
  1112. I263txt          dc.b 0          Front pen  (blue)
  1113.                  dc.b 1          Back pen   (white)
  1114.                  dc.b 0,0        Draw mode
  1115.                  dc.w 0          Left edge
  1116.                  dc.w 0          Top edge
  1117.                  dc.l 0          Text font
  1118.                  dc.l item263txt Pointer to text
  1119.                  dc.l 0          Next text
  1120.  
  1121. item263txt       dc.b '   68020',0
  1122.                  even
  1123.  
  1124. Menu3            dc.l 0         Next menu
  1125.                  dc.w 250,0     Position left edge,top edge
  1126.                  dc.w 50,20     Dimensions width,height
  1127.                  dc.w 1         Menu enabled
  1128.                  dc.l mtext3    Text for menu header
  1129.                  dc.l item31    ^First in chain
  1130.                  dc.l 0,0       Internal
  1131.  
  1132. mtext3           dc.b 'Disk',0
  1133.                  even
  1134.  
  1135. item31           dc.l item32    next in chained list
  1136.                  dc.w 0,0       Position left edge,top edge
  1137.                  dc.w 120,10    Dimensions width,height
  1138.                  dc.w $52       itemtext+highcomp+itemenabled
  1139.                  dc.l 0         Mutual exclude
  1140.                  dc.l I31txt    Pointer to intuition text
  1141.                  dc.l 0
  1142.                  dc.b 0,0
  1143.                  dc.l 0
  1144.                  dc.w 0
  1145.  
  1146.  
  1147. I31txt           dc.b 0         Front pen  (blue)
  1148.                  dc.b 1         Back pen   (white)
  1149.                  dc.b 0,0       Draw mode
  1150.                  dc.w 0         Left edge
  1151.                  dc.w 0         Top edge
  1152.                  dc.l 0         Text font
  1153.                  dc.l item31txt Pointer to text
  1154.                  dc.l 0         Next text
  1155.  
  1156. item32           dc.l item33    next in chained list
  1157.                  dc.w 0,10      Position left edge,top edge
  1158.                  dc.w 120,10    Dimensions width,height
  1159. Menflg           dc.w $5b       itemtext+highcomp+checkit+itemenabled
  1160.                  dc.l 0         Mutual exclude
  1161.                  dc.l I32txt    Pointer to intuition text
  1162.                  dc.l 0
  1163.                  dc.b 0,0
  1164.                  dc.l 0
  1165.                  dc.w 0
  1166.  
  1167. I32txt           dc.b 0         Front pen  (blue)
  1168.                  dc.b 1         Back pen   (white)
  1169.                  dc.b 0,0       Draw mode
  1170.                  dc.w 0         Left edge
  1171.                  dc.w 0         Top edge
  1172.                  dc.l 0         Text font
  1173.                  dc.l item32txt Pointer to text
  1174.                  dc.l 0         Next text
  1175.  
  1176. item32txt        dc.b '   Gags to sec',0
  1177.                  even
  1178.  
  1179. item33           dc.l 0         next in chained list
  1180.                  dc.w 0,20      Position left edge,top edge
  1181.                  dc.w 120,10    Dimensions width,height
  1182.                  dc.w $52       itemtext+highcomp+itemenabled
  1183.                  dc.l 0         Mutual exclude
  1184.                  dc.l I33txt    Pointer to intuition text
  1185.                  dc.l 0
  1186.                  dc.b 0,0
  1187.                  dc.l 0
  1188.                  dc.w 0
  1189.  
  1190. I33txt           dc.b 0         Front pen  (blue)
  1191.                  dc.b 1         Back pen   (white)
  1192.                  dc.b 0,0       Draw mode
  1193.                  dc.w 0         Left edge
  1194.                  dc.w 0         Top edge
  1195.                  dc.l 0         Text font
  1196.                  dc.l item33txt Pointer to text
  1197.                  dc.l 0         Next text
  1198.  
  1199. *** Gadget definition ***
  1200.  
  1201. Gadget1          dc.l Gadget2   +0 Next gadget
  1202.                  dc.w 10        +4 Left edge
  1203.                  dc.w -15       +6 Top edge
  1204.                  dc.w 20        +8 Width
  1205.                  dc.w 10        +A Height
  1206.                  dc.w 8         +C Flags
  1207.                  dc.w 1         +E Activation
  1208.                  dc.w 1         +10 Gadget type
  1209.                  dc.l Border1   +12 Rendered as border or image
  1210.                  dc.l 0         +16 Select render
  1211.                  dc.l 0         +1A ^Gadget text
  1212.                  dc.l 0         +1E Mutual exclude
  1213.                  dc.l 0         +22 Special info
  1214.                  dc.w 1         +26 Gadget ID
  1215.                  dc.l 0         +28 User data
  1216.  
  1217. Border1          dc.w 0         Left edge
  1218.                  dc.w 0         Top edge
  1219.                  dc.b 1,2       Front pen,back pen
  1220.                  dc.b 1,12      Draw mode,number of coord pairs
  1221.                  dc.l Pairs1    Vector coordinate pairs
  1222.                  dc.l 0         Next border
  1223.  
  1224. Pairs1           dc.w 0,0       Lines which constitute the gadget
  1225.                  dc.w 10,0
  1226.                  dc.w 10,8
  1227.                  dc.w 8,6
  1228.                  dc.w 10,8
  1229.                  dc.w 12,6
  1230.                  dc.w 10,8
  1231.                  dc.w 10,0
  1232.                  dc.w 20,0
  1233.                  dc.w 20,10
  1234.                  dc.w 0,10
  1235.                  dc.w 0,0
  1236.  
  1237. Gadget2          dc.l Gadget3   Next gadget
  1238.                  dc.w 50        Left edge
  1239.                  dc.w -15       Top edge
  1240.                  dc.w 20        Width
  1241.                  dc.w 10        Height
  1242.                  dc.w 8         Flags
  1243.                  dc.w 1         Activation
  1244.                  dc.w 1         Gadget type
  1245.                  dc.l Border2   Rendered as border or image
  1246.                  dc.l 0         Select render
  1247.                  dc.l 0         ^Gadget text
  1248.                  dc.l 0         Mutual exclude
  1249.                  dc.l 0         Special info
  1250.                  dc.w 2         Gadget ID
  1251.                  dc.l 0         User data
  1252.  
  1253. Border2          dc.w 0         Left edge
  1254.                  dc.w 0         Top edge
  1255.                  dc.b 1,2       Front pen,back pen
  1256.                  dc.b 1,12      Draw mode,number of coord pairs
  1257.                  dc.l Pairs2    Vector coordinate pairs
  1258.                  dc.l 0         Next border
  1259.  
  1260. Pairs2           dc.w 0,0       Lines which constitute the gadget
  1261.                  dc.w 20,0
  1262.                  dc.w 20,10
  1263.                  dc.w 10,10
  1264.                  dc.w 10,2
  1265.                  dc.w 8,4
  1266.                  dc.w 10,2
  1267.                  dc.w 12,4
  1268.                  dc.w 10,2
  1269.                  dc.w 10,10
  1270.                  dc.w 0,10
  1271.                  dc.w 0,0
  1272.  
  1273. Gadget3          dc.l Gadget4   Next gadget
  1274.                  dc.w 90        Left edge
  1275.                  dc.w -15       Top edge
  1276.                  dc.w 20        Width
  1277.                  dc.w 10        Height
  1278.                  dc.w 8         Flags
  1279.                  dc.w 1         Activation
  1280.                  dc.w 1         Gadget type
  1281.                  dc.l Border3   Rendered as border or image
  1282.                  dc.l 0         Select render
  1283.                  dc.l 0         ^Gadget text
  1284.                  dc.l 0         Mutual exclude
  1285.                  dc.l 0         Special info
  1286.                  dc.w 3         Gadget ID
  1287.                  dc.l 0         User data
  1288.  
  1289. Border3          dc.w 0         Left edge
  1290.                  dc.w 0         Top edge
  1291.                  dc.b 1,2       Front pen,back pen
  1292.                  dc.b 1,12      Draw mode,number of coord pairs
  1293.                  dc.l Pairs3    Vector coordinate pairs
  1294.                  dc.l 0         Next border
  1295.  
  1296. Pairs3           dc.w 0,0       Lines which constitute the gadget
  1297.                  dc.w 8,0
  1298.                  dc.w 8,6
  1299.                  dc.w 7,5
  1300.                  dc.w 10,8
  1301.                  dc.w 13,5
  1302.                  dc.w 12,6
  1303.                  dc.w 12,0
  1304.                  dc.w 20,0
  1305.                  dc.w 20,10
  1306.                  dc.w 0,10
  1307.                  dc.w 0,0
  1308.  
  1309. Gadget4          dc.l Gadget5   Next gadget
  1310.                  dc.w 130       Left edge
  1311.                  dc.w -15       Top edge
  1312.                  dc.w 20        Width
  1313.                  dc.w 10        Height
  1314.                  dc.w 8         Flags
  1315.                  dc.w 1         Activation
  1316.                  dc.w 1         Gadget type
  1317.                  dc.l Border4   Rendered as border or image
  1318.                  dc.l 0         Select render
  1319.                  dc.l 0         ^Gadget text
  1320.                  dc.l 0         Mutual exclude
  1321.                  dc.l 0         Special info
  1322.                  dc.w 4         Gadget ID
  1323.                  dc.l 0         User data
  1324.  
  1325. Border4          dc.w 0         Left edge
  1326.                  dc.w 0         Top edge
  1327.                  dc.b 1,2       Front pen,back pen
  1328.                  dc.b 1,12      Draw mode,number of coord pairs
  1329.                  dc.l Pairs4    Vector coordinate pairs
  1330.                  dc.l 0         Next border
  1331.  
  1332. Pairs4           dc.w 0,0       Lines which constitute the gadget
  1333.                  dc.w 20,0
  1334.                  dc.w 20,10
  1335.                  dc.w 12,10
  1336.                  dc.w 12,4
  1337.                  dc.w 13,5
  1338.                  dc.w 10,2
  1339.                  dc.w 7,5
  1340.                  dc.w 8,4
  1341.                  dc.w 8,10
  1342.                  dc.w 0,10
  1343.                  dc.w 0,0
  1344.  
  1345. Gadget5          dc.l Gadget6   Next gadget
  1346.                  dc.w 170       Left edge
  1347.                  dc.w -15       Top edge
  1348.                  dc.w 20        Width
  1349.                  dc.w 10        Height
  1350.                  dc.w 8         Flags
  1351.                  dc.w 1         Activation
  1352.                  dc.w 1         Gadget type
  1353.                  dc.l Border5   Rendered as border or image
  1354.                  dc.l 0         Select render
  1355.                  dc.l 0         ^Gadget text
  1356.                  dc.l 0         Mutual exclude
  1357.                  dc.l 0         Special info
  1358.                  dc.w 5         Gadget ID
  1359.                  dc.l 0         User data
  1360.  
  1361. Border5          dc.w 0         Left edge
  1362.                  dc.w 0         Top edge
  1363.                  dc.b 1,2       Front pen,back pen
  1364.                  dc.b 1,12      Draw mode,number of coord pairs
  1365.                  dc.l Pairs5    Vector coordinate pairs
  1366.                  dc.l 0         Next border
  1367.  
  1368. Pairs5           dc.w 0,0       Lines which constitute the gadget
  1369.                  dc.w 20,0
  1370.                  dc.w 20,10
  1371.                  dc.w 0,10
  1372.                  dc.w 0,5
  1373.                  dc.w 16,5
  1374.                  dc.w 14,4
  1375.                  dc.w 16,5
  1376.                  dc.w 14,6
  1377.                  dc.w 16,5
  1378.                  dc.w 0,5
  1379.                  dc.w 0,0
  1380.  
  1381. Gadget6          dc.l Gadget7   Next gadget
  1382.                  dc.w 210       Left edge
  1383.                  dc.w -15       Top edge
  1384.                  dc.w 20        Width
  1385.                  dc.w 10        Height
  1386.                  dc.w 8         Flags
  1387.                  dc.w 1         Activation
  1388.                  dc.w 1         Gadget type
  1389.                  dc.l Border6   Rendered as border or image
  1390.                  dc.l 0         Select render
  1391.                  dc.l 0         ^Gadget text
  1392.                  dc.l 0         Mutual exclude
  1393.                  dc.l 0         Special info
  1394.                  dc.w 6         Gadget ID
  1395.                  dc.l 0         User data
  1396.  
  1397. Border6          dc.w 0         Left edge
  1398.                  dc.w 0         Top edge
  1399.                  dc.b 1,2       Front pen,back pen
  1400.                  dc.b 1,12      Draw mode,number of coord pairs
  1401.                  dc.l Pairs6    Vector coordinate pairs
  1402.                  dc.l 0         Next border
  1403.  
  1404. Pairs6           dc.w 0,0       Lines which constitute the gadget
  1405.                  dc.w 20,0
  1406.                  dc.w 20,5
  1407.                  dc.w 4,5
  1408.                  dc.w 6,4
  1409.                  dc.w 4,5
  1410.                  dc.w 6,6
  1411.                  dc.w 4,5
  1412.                  dc.w 20,5
  1413.                  dc.w 20,10
  1414.                  dc.w 0,10
  1415.                  dc.w 0,0
  1416.  
  1417. Gadget7          dc.l Gadget8   Next gadget
  1418.                  dc.w 250       Left edge
  1419.                  dc.w -15       Top edge
  1420.                  dc.w 20        Width
  1421.                  dc.w 10        Height
  1422.                  dc.w 8         Flags
  1423.                  dc.w 1         Activation
  1424.                  dc.w 1         Gadget type
  1425.                  dc.l Border7   Rendered as border or image
  1426.                  dc.l 0         Select render
  1427.                  dc.l 0         ^Gadget text
  1428.                  dc.l 0         Mutual exclude
  1429.                  dc.l 0         Special info
  1430.                  dc.w 7         Gadget ID
  1431.                  dc.l 0         User data
  1432.  
  1433. Border7          dc.w 0         Left edge
  1434.                  dc.w 0         Top edge
  1435.                  dc.b 1,2       Front pen,back pen
  1436.                  dc.b 1,12      Draw mode,number of coord pairs
  1437.                  dc.l Pairs7    Vector coordinate pairs
  1438.                  dc.l 0         Next border
  1439.  
  1440. Pairs7           dc.w 0,0       Lines which constitute the gadget
  1441.                  dc.w 20,0
  1442.                  dc.w 20,10
  1443.                  dc.w 0,10
  1444.                  dc.w 0,6
  1445.                  dc.w 15,6
  1446.                  dc.w 14,7
  1447.                  dc.w 15,5
  1448.                  dc.w 14,3
  1449.                  dc.w 15,4
  1450.                  dc.w 0,4
  1451.                  dc.w 0,0
  1452.  
  1453. Gadget8          dc.l 0         Next gadget
  1454.                  dc.w 290       Left edge
  1455.                  dc.w -15       Top edge
  1456.                  dc.w 20        Width
  1457.                  dc.w 10        Height
  1458.                  dc.w 8         Flags
  1459.                  dc.w 1         Activation
  1460.                  dc.w 1         Gadget type
  1461.                  dc.l Border8   Rendered as border or image
  1462.                  dc.l 0         Select render
  1463.                  dc.l 0         ^Gadget text
  1464.                  dc.l 0         Mutual exclude
  1465.                  dc.l 0         Special info
  1466.                  dc.w 8         Gadget ID
  1467.                  dc.l 0         User data
  1468.  
  1469. Border8          dc.w 0         Left edge
  1470.                  dc.w 0         Top edge
  1471.                  dc.b 1,2       Front pen,back pen
  1472.                  dc.b 1,12      Draw mode,number of coord pairs
  1473.                  dc.l Pairs8    Vector coordinate pairs
  1474.                  dc.l 0         Next border
  1475.  
  1476. Pairs8           dc.w 0,0       Lines which constitute the gadget
  1477.                  dc.w 20,0
  1478.                  dc.w 20,4
  1479.                  dc.w 6,4
  1480.                  dc.w 7,3
  1481.                  dc.w 5,5
  1482.                  dc.w 7,7
  1483.                  dc.w 6,6
  1484.                  dc.w 20,6
  1485.                  dc.w 20,10
  1486.                  dc.w 0,10
  1487.                  dc.w 0,0
  1488.  
  1489.              end
  1490.  
  1491.