home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 103.lha / ColRequest / colourreq.asm < prev    next >
Assembly Source File  |  1986-11-21  |  38KB  |  1,831 lines

  1. *
  2. *    A public domain Colour Requester by Rick Morris, Panorama User's Group
  3. *
  4. *
  5. *    This program was developed from an example by Joe Bostic in the Amigan
  6. *    and uses his Intuition Message handler 'Dispatcher' as a subroutine.
  7. *
  8. *    This code may be freely distributed and included in any program you
  9. *    write, with the proviso that you send me a copy of the program, 
  10. *    or release said program into the public domain, free of charge.
  11. *
  12. *    Disclaimer: this program definitely does exactly what it does.
  13. *    Anything you think it may do is entirely a figment of your imagination,
  14. *    and as such, I will not be held responsible for your halucinations.
  15. *
  16. *    How it works:
  17. *
  18. *
  19. *--------- include these statements in your code--------------
  20. *
  21. *    XDEF    ColourReq
  22. *
  23. *
  24. *    MOVE.L    ScreenPointer,a0    ;Address of your Screen, 0 if WorkBench Screen
  25. *    MOVE.L    CurrentColour,d0    ;The currently selected colour
  26. *    BSR    ColourReq
  27. *    ....    more of your code 
  28. *
  29. *-------------------------------------------------------------
  30. *
  31. *
  32. *    I have no idea about how you would call this routine in C or any 
  33. *    other foreign language, and invite you to give it a try. 
  34. *
  35. *    This routine conforms to Intuition register usage, i.e d0,d1,a0,a1
  36. *    are destroyed (definitely) and d2-d7,a2-a7 are preserved.
  37. *    Also, it opens/closes all libraries internally, so the only XDEF
  38. *    you need in your program is ColourReq itself
  39. *
  40. *    Basically, the routine puts up a nice little gadget panel allowing
  41. *    you to change colours, swap colours, copy one to another, spread
  42. *    out a range, etc. It includes cancel and undo functions. The 
  43. *    routine takes care of how deep the screen is, and stuff like that
  44. *    you really don't want to deal with.
  45. *
  46. *    Bug reports/Questions/Answers/Free Software/Cash to:
  47. *    Rick Morris
  48. *    4179 William St.
  49. *    Burnaby,B.C.
  50. *    Canada
  51. *    V5C 3J5
  52. *
  53. *    I am a member of PaNorAmA and can usually be found at their meetings. 
  54. *    Sorry, no Usenet/CI$ contacts, I'm to cheap (and busy).
  55. *
  56. *    If you're using CED or some other editor with adjustable tabs, 
  57. *    Put 'em here.
  58. *       X           X                           XX
  59.  
  60.  
  61.     include    'ram:includes&stuff'
  62.  
  63.     XDEF    ColourReq
  64.  
  65.     SECTION    one,CODE
  66.  
  67. ColourReq:
  68.     movem.l    d2-d7/a2-a6,-(sp)    Save the registers
  69.  
  70.     move.l    d0,Screen.Ptr    save the screen pointer
  71.  
  72. *    first thing we do...kill all the lawyers
  73.  
  74.     bne    CustomType     its a custom screen
  75.  
  76.     moveq    #2,d0    its a WorkBench Screen
  77.     bra    SetupBoxes
  78.  
  79.  
  80. CustomType:
  81.     move.l    d0,a0
  82.     move.b    sc_BitMap+bm_Depth(a0),d0    get screen depth
  83.     and.l    #$0000000f,d0
  84.     subq    #1,d0
  85.     mulu    #4,d0    make d0 longword length
  86.  
  87. SetupBoxes:
  88.     move.l    #BoxTableArray,a0    
  89.     add.l    d0,a0
  90.     move.l    (a0),a0    get pointer to gadget sizes
  91.     lea    ZeroGadg+gg_LeftEdge,a1
  92. 1$    moveq    #3,d7
  93. 2$    move.w    (a0)+,(a1)+    move the TopEdge etc. into 
  94.     dbf    d7,2$     the gadget structure
  95.     cmp.w    #0,(a0)    Last in chain?
  96.     beq    3$
  97.     add.l    #$24,a1    move on to next gadget
  98.     bra    1$
  99.     
  100. 3$    sub.l    #$c,a1    orient back to NextGadget
  101.     move.l    #0,(a1)    sever the gadget chain
  102.  
  103.     move.l    #RenderTable,a0    now fix the Render structs
  104.     add.l    d0,a0
  105.     move.l    (a0),a0
  106.     move.l    #ZeroRender+4,a1    first width/height pair
  107.     move.l    #31,d7    do all 32 renders
  108. 4$    move.l    (a0),(a1)    this gets both at once
  109.     add.l    #ig_SIZEOF,a1    goto next image
  110.     dbf    d7,4$
  111.  
  112. DoneBoxes:
  113.     
  114.     move.l    #PolyArray,a0    the gadget's box border array
  115.     move.l    #PolyArrayTable,a1    table of border values
  116.     add.l    d0,a1
  117.     move.l    (a1),a1     and the proper one
  118.     
  119.     moveq    #9,d7
  120. 1$    move.w    (a1)+,(a0)+    
  121.     dbf    d7,1$
  122.  
  123.  
  124.     lea    INTUIT.NAME,a1    Open Intuition
  125.     clr.l    d0
  126.     LINKLIB    _LVOOpenLibrary,_AbsExecBase    Macro, save typing
  127.     move.l    d0,Intuit.Ptr
  128.  
  129.     lea    GRAPHIC.NAME,a1    Open the graphics library
  130.     clr.l    d0
  131.     LINKLIB    _LVOOpenLibrary,_AbsExecBase
  132.     move.l    d0,Graphic.Ptr
  133.  
  134. OpenWindow:
  135.  
  136.     lea    AWindow,a0
  137.     LINKLIB     _LVOOpenWindow,Intuit.Ptr    And open the window
  138.     move.l    d0,Window.Ptr
  139.     beq    NoWindow    did the window open?
  140.     move.l    d0,a0    Yup.
  141.     move.l    wd_RPort(a0),RPort    Get the RastPort address
  142.  
  143. *    set the font
  144.  
  145.     move.l    #TextAttr,a0    80column text attribute pointer
  146.     LINKLIB    _LVOOpenFont,Graphic.Ptr    get the 80 column font
  147.     tst.l    d0
  148.     beq    NoFont    make sure the font exists
  149.     move.l    d0,a0
  150.     move.l    a0,Font.Ptr    save its pointer
  151.  
  152.     move.l    RPort,A1
  153.     LINKLIB    _LVOSetFont,Graphic.Ptr    set the font
  154.  
  155.     move.l    Window.Ptr,a0
  156.     move.l    wd_WScreen(a0),a0    Get the Screen Address
  157.     move.l    sc_ViewPort+vp_ColorMap(a0),a2 This is the colourmap
  158.     lea    ColourTable,a3    Here's where we get the colour
  159.     lea    ColourTemp,a4     Table for the screen
  160.     move.l    #0,d7
  161. 1$    move.l    a2,a0
  162.     move.l    d7,d0
  163.     LINKLIB    _LVOGetRGB4,Graphic.Ptr    Get Colour # described in d0
  164.     move.w    d0,(a3)+
  165.     move.w    d0,(a4)+
  166.     addq    #1,d7
  167.     cmp.b    #Colours+1,d7
  168.     bne    1$
  169.     
  170. *    draw window border
  171.  
  172.     lea    WindowBorder,a1    the window's BORDER struct
  173.     moveq    #0,d0    the x,y offsets
  174.     move.l    d0,d1
  175.     move.l    RPort,a0    
  176.     LINKLIB    _LVODrawBorder,Intuit.Ptr    draw the border
  177.  
  178.  
  179. *    draw box around current picked colour
  180.  
  181.     lea    ZeroGadg,a0
  182.     move.l    a0,CurrentColGadg
  183.     moveq    #1,d0
  184.     bsr    DrawBorder
  185.  
  186.     jsr    Update    set up the prop gadgets
  187.  
  188.  
  189.     move.l    Window.Ptr,a0    These are set-ups for 
  190.     move.l    wd_UserPort(a0),a0     Dispatcher, the Intuition
  191.     lea    VectorList,a1     handling routine.
  192.     jsr    Dispatcher
  193.  
  194. *    Dispatcher has returned, someone did an RTS with d0<>0
  195. *    therefore time to end the program
  196.     
  197. NoFont
  198.  
  199.     move.l    Font.Ptr,D0    Close the font
  200.     move.l    d0,a1
  201.     LINKLIB    _LVOCloseFont,Graphic.Ptr
  202.  
  203.  
  204. NoWindow
  205.     move.l    Window.Ptr,a0    Close the window
  206.     LINKLIB    _LVOCloseWindow,Intuit.Ptr
  207.  
  208.  
  209.     move.l     Intuit.Ptr,a1        Close the libraries
  210.     LINKLIB    _LVOCloseLibrary,_AbsExecBase
  211.     move.l    Graphic.Ptr,a1
  212.     LINKLIB     _LVOCloseLibrary,_AbsExecBase
  213.     clr.l    d0
  214.  
  215. *    the end of the program. Restore the registers
  216.  
  217.     movem.l    (sp)+,d2-d7/a2-a6
  218.  
  219.     rts    
  220.  
  221. *
  222. *    That's the end of the program. Now come the subroutines to handle
  223. *    the various gadgets as they are clicked
  224. *
  225. *    
  226. *Modify the screen's colour register according to selected gadget
  227. *
  228. *    This routine handles the Prop gadgets foe colour modification.
  229. *
  230. *    Dispatcher gives us on entry;
  231. *     a1=Pointer to the Gadget Structure
  232. *     d0=gg.GadgetID Value
  233. *     d1=0,gadget down   d1=1,gadget up
  234. *
  235. Modify:
  236.     cmp.l    #0,d1    Is this a Gadget Down?
  237.     beq    Update
  238.     move.l     a1,Currentgadg    save gadget info
  239.     move.l     d0,CurrentID
  240. Modify1:
  241.     move.l     Currentgadg,a1
  242.     move.l     CurrentID,d0
  243.     move    OldRed,d1    get the old colours
  244.     move    OldGreen,d2
  245.     move    OldBlue,d3
  246.     move.l     gg_SpecialInfo(a1),a0    get prop info pointer
  247.     btst    #3,d0    Is this a vertical only gadget
  248.     beq    1$
  249.  
  250. *
  251. *    This next section checks to see which colours have been modified by 
  252. *    checking the Gadget id value for specific bits. See in the menus for
  253. *    which bit does what
  254. *
  255.     btst    #0,d0    Is it a vertical only gadget?
  256.     beq    5$
  257.     move    pi_VertPot(a0),d3
  258.     bra    endif.m1
  259. 5$    btst    #1,d0
  260.     beq    6$
  261.     move    pi_VertPot(a0),d2
  262.     bra    endif.m1
  263. 6$    move    pi_VertPot(a0),d1
  264.     bra    endif.m1
  265.  
  266.  
  267. 1$    btst    #2,d0
  268.     beq    else.m1
  269.     move    pi_VertPot(a0),d1
  270.     btst    #1,d0
  271.     beq    else.m2
  272.     move    pi_HorizPot(a0),d2
  273.     bra    endif.m1
  274. else.m2:
  275.     move    pi_HorizPot(a0),d3
  276. else.m1:
  277.     btst    #1,d0
  278.     beq    3$
  279.     move    pi_VertPot(a0),d2
  280. 3$    move    pi_HorizPot(a0),d3
  281.  
  282. endif.m1:
  283.     and    #$f000,d1
  284.     lsr    #8,d1
  285.     lsr    #4,d1
  286.     and    #$f000,d2
  287.     lsr    #8,d2
  288.     lsr    #4,d2
  289.     and    #$f000,d3
  290.     lsr    #8,d3
  291.     lsr    #4,d3
  292.     move.l    Window.Ptr,a0
  293.     move.l    wd_WScreen(a0),a0
  294.     lea    sc_ViewPort(a0),a0
  295.     move.l    CurrentColour,d0
  296.     LINKLIB    _LVOSetRGB4,Graphic.Ptr
  297.     bra    DoneUpdate    
  298.     
  299. *Reflect the colour in gadgets
  300. Update:
  301.     bsr    GetColour
  302.  
  303.     mulu    #$1111,d1    propogate byte through 
  304. ;    ror.w    #4,d4     longword, ie $0004 
  305. ;    or    d4,d1     becomes $4444
  306. ;    move.w    d1,d4
  307. ;    ror.w    #8,d4
  308. ;    or    d4,d1
  309.  
  310.     mulu    #$1111,d2
  311. ;    ror.w    #4,d4
  312. ;    or    d4,d2
  313. ;    move.w    d2,d4
  314. ;    ror.w    #8,d4
  315. ;    or    d4,d2
  316.  
  317.     mulu    #$1111,d3
  318. ;    ror.w    #4,d4
  319. ;    or    d4,d3
  320. ;    move.w    d3,d4
  321. ;    ror.w    #8,d4
  322. ;    or    d4,d3
  323.  
  324.     move.w    d1,OldRed    save the colour values
  325.     move.w    d2,OldGreen
  326.     move.w    d3,OldBlue
  327.     lea    Red_G,a0
  328.     cmp.l    Currentgadg,a0    if eq, this one's already adjusted
  329.     beq    1$     so leave it alone
  330.     jsr    FixProp
  331. 1$    lea    Green_G,a0
  332.     cmp.l    Currentgadg,a0
  333.     beq    2$
  334.     jsr    FixProp    adjust the prop gadget structure
  335. 2$:    
  336.     lea    Blue_G,a0
  337.     cmp.l    Currentgadg,a0
  338.     beq    3$
  339.     jsr    FixProp
  340.  
  341. 3$:
  342.     lea    RedV_G,a0
  343.     cmp.l    Currentgadg,a0
  344.     beq    4$
  345.     jsr    FixProp
  346. 4$:
  347.     lea    GreenV_G,a0
  348.     cmp.l    Currentgadg,a0
  349.     beq    5$
  350.     jsr    FixProp
  351. 5$:
  352.     lea    BlueV_G,a0
  353.     cmp.l    Currentgadg,a0
  354.     beq    DoneUpdate
  355.     jsr    FixProp
  356.  
  357.  
  358. DoneUpdate:
  359.     move.l     #0,d0    back to dispatcher
  360.     rts
  361.     
  362. GetColour:
  363.     move.l     Window.Ptr,a0    get current colour
  364.     move.l     wd_WScreen(a0),a0
  365.     move.l     sc_ViewPort+vp_ColorMap(a0),a0
  366.     move.l     CurrentColour,d0
  367.     LINKLIB     _LVOGetRGB4,Graphic.Ptr
  368.     lea    ColourTemp,a0    plant the colour in temp table
  369.     add.l    CurrentColour,a0
  370.     add.l    CurrentColour,a0
  371.     move.w    d0,(a0)
  372.     bsr    BreakDown    make into d1,d2,d3
  373.     rts
  374.  
  375. BreakDown:
  376.     and    #$fff,d0
  377.     swap    d0    break the color down into 3 16 bit #'s
  378.     clr    d0
  379.     swap    d0
  380.     move.l     d0,d1
  381.     move.l     d0,d2
  382.     move.l     d0,d3
  383.     clr.b    d1
  384.     asl    #4,d1
  385.     asl    #4,d2
  386.     clr.b    d2
  387.     asl    #4,d2
  388.     asl    #8,d3
  389.     asl    #4,d3
  390.     rts
  391.  
  392. FixProp:
  393. *    find out which vertical and horizontal body values we need to adjust
  394. *    for each of the gadgets by testing bits in the SpecialInfo thus:
  395. *     bit 4= vertical gadget, off= 2-dimensional
  396. *     bit 2= RED
  397. *     bit 1= GREEN
  398. *     bit 0= BLUE
  399.  
  400.     move.l    gg_SpecialInfo(a0),a1
  401.     btst    #3,gg_GadgetID+1(a0)    If this bit is on,
  402.     bne 4$         its a vertical only gadg
  403.  
  404.     btst    #2,gg_GadgetID+1(a0)    the RED bit
  405.     beq    1$
  406.     move    d1,pi_VertPot(a1)
  407.     btst    #1,gg_GadgetID+1(a0)    the GREEN bit
  408.     beq    3$
  409.     move.w    d2,pi_HorizPot(a1)
  410.     bra    2$
  411. 3$:
  412.     move.w    d3,pi_HorizPot(a1)
  413.     bra    2$
  414. 1$:
  415.     move.w    d2,pi_VertPot(a1)
  416.     move.w    d3,pi_HorizPot(a1)
  417.     bra    2$
  418. *        a one-dimensional gadget
  419. 4$:
  420.     btst    #0,gg_GadgetID+1(a0)    the BLUE bit
  421.     beq    5$
  422.     move.w    d3,pi_VertPot(a1)
  423.     bra    2$
  424. 5$    btst    #1,gg_GadgetID+1(a0)
  425.     beq    6$
  426.     move.w    d2,pi_VertPot(a1)
  427.     bra    2$
  428. 6$    move.w    d1,pi_VertPot(a1)
  429.  
  430. 2$:
  431.  
  432. *    got body values moved properly, now adjust the display of the gadget
  433.  
  434.     movem.l    d1-d3,-(sp)
  435.     move.l    gg_SpecialInfo(a0),a1
  436.     move.w    pi_HorizPot(a1),d1
  437.     move.w    pi_VertPot(a1),d2
  438.     move.w    pi_HorizBody(a1),d3
  439.     move.w    pi_VertBody(a1),d4
  440.     move.w    pi_Flags(a1),d0
  441.     move.l    #1,d5
  442.     move.l    Window.Ptr,a1
  443.     LINKLIB    _LVONewModifyProp,Intuit.Ptr
  444.     movem.l     (sp)+,d1-d3
  445.     
  446.     rts
  447.  
  448.  
  449. *
  450. ChangeColour:
  451.  
  452. *
  453. *    user has picked a different colour to adjust, draw a border around it
  454. *
  455.     andi.l    #$7f,d0    strip valid gadget bit
  456.     move.l    d0,CurrentColour    update colour
  457.     move.l    #0,Currentgadg    for the fixprop routine
  458.     move.w    #31,d7    counter for gadgets to update
  459.     move.l    a1,-(sp)    save the gadget pointer
  460.  
  461. *    clear the border around the last gadget
  462.  
  463.     move.l    CurrentColGadg,a0
  464.     moveq    #0,d0
  465.     bsr    DrawBorder
  466.  
  467.  
  468.     move.l    (sp)+,a0    get pointer back in a0!
  469.  
  470.     move.l    a0,CurrentColGadg
  471.  
  472. *    draw a border around this gadget
  473.  
  474.     moveq    #1,d0
  475.     bsr    DrawBorder
  476.  
  477. *    change the colour of the large colour block
  478.  
  479.     move.l    CurrentColour,d0
  480.     move.l    RPort,a1
  481.     LINKLIB    _LVOSetAPen,Graphic.Ptr
  482.  
  483.     move.l    RPort,a1    
  484.     move.l    #2,d0
  485.     moveq    #HEIGHT_OFFSET,d1
  486.     move.l    #27,d2
  487.     move.l    #HEIGHT_OFFSET+25,d3
  488.     LINKLIB    _LVORectFill,Graphic.Ptr
  489.     bra    Update
  490.  
  491.  
  492.  
  493. DrawBorder:
  494. *    a0 contains gadget ptr,d0 contains frontpen
  495.  
  496.     lea    Border,a1    
  497.     move.b    d0,bd_FrontPen(a1)
  498.     move.w    gg_LeftEdge(a0),d0
  499.     subq    #1,d0
  500.     move.w    gg_TopEdge(a0),d1
  501.     subq    #1,d1
  502.  
  503.     move.l    RPort,a0    
  504.     LINKLIB    _LVODrawBorder,Intuit.Ptr
  505.     rts
  506.  
  507.  
  508.  
  509. Restore:
  510.  
  511. *    put all colours back to original
  512.  
  513.     lea    ColourTable,a1
  514.     lea    ColourTemp,a2
  515.     move.l    #15,d7
  516. 1$    move.l    (a1)+,(a2)+
  517.     dbf    d7,1$
  518.     lea    ColourTable,a1
  519.  
  520. Restore1:        ;entry point for the swap routine
  521.     move.l    Window.Ptr,a0
  522.     move.l    wd_WScreen(a0),a0
  523.     add.l    #sc_ViewPort,a0    viewport is a struct in screen
  524.     move    #Colours+1,d0
  525.     LINKLIB    _LVOLoadRGB4,Graphic.Ptr
  526.  
  527.     move.l    #0,Currentgadg    for the fixprop routine
  528.     
  529.     bra    Update
  530.  
  531.  
  532. SwapColours:
  533. *        Change the pointer, swap colours, change back
  534.  
  535.     bsr    SetPointer    
  536.  
  537. *        now get the next message, check for a gadget
  538.  
  539.     bsr    GetNextColour
  540.  
  541. *        now the gadget user data is in d7
  542. *        and its time to swap the two colours
  543.  
  544.  
  545.     move.l    d7,d0    get colour # back
  546.     move.l     Window.Ptr,a0
  547.     move.l     wd_WScreen(a0),a0
  548.     move.l     sc_ViewPort+vp_ColorMap(a0),a0
  549.     LINKLIB    _LVOGetRGB4,Graphic.Ptr    get its colour value
  550.     lea    ColourTemp,a0
  551.     add.l    CurrentColour,a0
  552.     add.l    CurrentColour,a0
  553.     move.w    d0,(a0)    plant it in the table
  554.  
  555.     move.l    CurrentColour,d0    get the other colour
  556.     move.l     Window.Ptr,a0
  557.     move.l     wd_WScreen(a0),a0
  558.     move.l     sc_ViewPort+vp_ColorMap(a0),a0
  559.     LINKLIB     _LVOGetRGB4,Graphic.Ptr
  560.  
  561.     lea    ColourTemp,a0    plant it in the table
  562.     add.l    d7,a0
  563.     add.l    d7,a0
  564.     move.w    d0,(a0)    
  565.     
  566. *    put the pointer back to original
  567.  
  568.     bsr    ClearPointer
  569.  
  570. *        now plant the colour table
  571.  
  572.     lea    ColourTemp,a1
  573.     bra    Restore1
  574.  
  575. SetPointer:
  576.     move.l    Window.Ptr,a0
  577.     lea    PointerImage,a1    change to special pointer
  578.     moveq    #17,d0
  579.     move.l    #16,d1
  580.     move.l    #-2,d2
  581.     move.l    d2,d3
  582.     LINKLIB    _LVOSetPointer,Intuit.Ptr
  583.     rts
  584.  
  585. ClearPointer:
  586. *    restore the default pointer
  587.     move.l    Window.Ptr,a0
  588.     LINKLIB    _LVOClearPointer,Intuit.Ptr
  589.     rts
  590.  
  591.  
  592. GetNextColour
  593.  
  594. *    get the next gadget clicked, make sure it's a colour gadget
  595.  
  596. 2$    move.l    Window.Ptr,a0
  597.     move.l    wd_UserPort(a0),a0
  598.     move.l    a0,-(sp)
  599.     LINKLIB    _LVOWaitPort,_AbsExecBase    wait for the next gadget
  600.     move.l    (sp)+,a0
  601.     jsr    _LVOGetMsg(a6)
  602.     move.l    d0,-(sp)    remember the IDCMP msg type
  603.     move.l    d0,a0
  604.     move.l    im_IAddress(a0),a1    
  605.     move.w    gg_GadgetID(a1),d7    Pointer to the gadget's colour
  606.     move.l    im_Class(a0),d1
  607.     cmp.l    #GADGETUP,d1    make sure its a gadget
  608.     beq    1$    colour gadget has been clicked?
  609.     move.l    #0,d7    set d7 to retry
  610. 1$    move.l    d0,a0
  611.     ext.l    d7
  612.     move.l    (sp)+,a1    message # (well, address actually)
  613.     jsr    _LVOReplyMsg(a6)    reply to the IntuiMessage
  614.     bclr    #7,d7
  615.     beq    2$    not a colour gadget that was picked
  616.     rts
  617.  
  618. Range:
  619. *    Routine to spread colour out between gadgets
  620.  
  621.     bsr    SetPointer
  622.     bsr    GetNextColour
  623.  
  624. *    d7 is selected colour, CurrentColour is one highlighted
  625.  
  626.     cmp.l    CurrentColour,d7
  627.     beq    NoRange    hit the same gadget, the dolt
  628.  
  629. *    now break down the colour and calculate the spread
  630.  
  631.     lea    ColourTemp,a3    holds high colour address
  632.     add.l    d7,a3
  633.     add.l    d7,a3
  634.  
  635.     lea    ColourTemp,a2    holds low colour address
  636.     add.l    CurrentColour,a2
  637.     add.l    CurrentColour,a2
  638.  
  639.     sub.l    CurrentColour,d7
  640.  
  641.     cmp.l    a2,a3
  642.     bgt    5$
  643.  
  644.     move.l    a2,a4    make sure a2 is lower
  645.     move.l    a3,a2     of the two addresses
  646.     move.l    a4,a3
  647.     eor.l    #-1,d7    make d7 positive again
  648.     addq    #1,d7
  649.  
  650. 5$:
  651. *    move.l    d7,d6
  652.  
  653.     moveq    #1,d5    current colour for divide
  654.  
  655.     move.w    (a2)+,d0    get low colour,point to next
  656.  
  657.     bsr    UnCrunch
  658.  
  659.     move.w    d1,OldRed    put in byte form in temp
  660.     move.w    d2,OldGreen     storage
  661.     move.w    d3,OldBlue
  662.  
  663. 1$    move.w    (a3),d0    get value to spread to
  664.  
  665.     bsr    UnCrunch
  666.  
  667.     sub.w    OldRed,d1    get the difference
  668.     bne    2$
  669.     move.w    OldRed,d1    make sure there is a difference
  670. 2$    sub.w    OldGreen,d2
  671.     bne    3$
  672.     move.w    OldGreen,d2
  673. 3$    sub.w    OldBlue,d3
  674.     bne    4$
  675.     move.w    OldBlue,d3
  676.  
  677. 4$    muls    d5,d1    multiply by current cell #
  678.     muls    d5,d2
  679.     muls    d5,d3
  680.  
  681.     divs    d7,d1    divide by # of cells
  682.     divs    d7,d2
  683.     divs    d7,d3
  684.  
  685.     add.w    OldRed,d1    add back the base colour
  686.     cmp    #$f,d1     make sure it doesn't overflow
  687.     ble    6$
  688.     move.w    OldRed,d1
  689. 6$    add.w    OldGreen,d2
  690.     cmp    #$f,d2
  691.     ble    7$
  692.     move.w    OldGreen,d2
  693. 7$    add.w    OldBlue,d3
  694.     cmp    #$f,d3
  695.     ble    8$
  696.     move.w    OldBlue,d3
  697.  
  698. 8$    bsr    Crunch    make back to one word
  699.  
  700.     move.w    d0,(a2)+    plant the colour in the table
  701.     addq    #1,d5    increment curren cell #
  702.     cmp.l    a2,a3    done the table yet?
  703.     bgt    1$
  704.  
  705. NoRange:
  706.     bsr    ClearPointer    back to default pointer
  707.     lea    ColourTemp,a1    show the colours
  708.     bra    Restore1
  709.  
  710. Crunch:
  711. *    make d1,d2,d3 fit in d0, 4 bits each
  712.  
  713.     lsl    #8,d1
  714.     lsl    #4,d2
  715.     move.w    d3,d0
  716.     add.w    d2,d0
  717.     add.w    d1,d0
  718.     rts
  719.  
  720. UnCrunch:
  721. *    do just the opposite..d0 to d1,d2,d3, 4 bits each
  722.  
  723.     move.w    d0,d1
  724.     and.l    #$0f00,d1
  725.     lsr    #8,d1
  726.     move.w    d0,d2
  727.     and.l    #$00f0,d2
  728.     lsr    #4,d2
  729.     move.w    d0,d3
  730.     and.l    #$000f,d3
  731.     rts
  732.  
  733.  
  734. Copy:
  735. *    copy the colour between gadgets
  736.  
  737.     bsr    SetPointer    set the 'to' pointer
  738.     bsr    GetNextColour    get next colour gadget picked
  739.  
  740.     lea    ColourTemp,a2    'from'
  741.     add.l    CurrentColour,a2
  742.     add.l    CurrentColour,a2
  743.  
  744.     lea    ColourTemp,a3    'to'
  745.     add.l    d7,a3
  746.     add.l    d7,a3
  747.  
  748.     move.w    (a2),(a3)    move the colour
  749.  
  750.     bra    NoRange    a convenient exit
  751.  
  752. Cancel:
  753. *    restore the original colours and close window
  754.  
  755.     bsr    Restore    
  756.     moveq    #1,d0
  757.     rts
  758.  
  759.  
  760.  
  761.  
  762. *    The vector list for the dispatcher routine follows
  763. VectorList:
  764.     dc.l    CLOSEWINDOW,QuitCode
  765.     dc.l    NEWPREFS,Update
  766.     dc.l    MOUSEMOVE,Modify1
  767.     dc.l    0
  768.  
  769. QuitCode    move.l #-1,d0
  770.     rts
  771.  
  772.  
  773.     SECTION  two,DATA,CHIP
  774. PKnobImage:
  775.     dc.w    %000011111110000
  776.     dc.w    %111111111111111
  777.     dc.w    %111111111111111
  778.     dc.w    %000011111110000
  779.  
  780. KnobImage:
  781.     dc.w    %000000111000000
  782.     dc.w    %000111111111000
  783.     dc.w    %000111111111000
  784.     dc.w    %000000111000000
  785.  
  786. PointerImage:
  787.     dc.w    0,0
  788.     dc.w    %000000000000000,%111111000000000
  789.     dc.w    %011111000000000,%111111100000000
  790.     dc.w    %011111000000000,%100001100000000
  791.     dc.w    %011110000000000,%100011000000000
  792.     dc.w    %011111000000000,%100001100000000
  793.     dc.w    %011111100000000,%100000110000000
  794.     dc.w    %000111110000000,%011000011000000
  795.     dc.w    %000011111000000,%000100001100000
  796.     dc.w    %000001111100000,%000010000110000
  797.     dc.w    %000000111000000,%000001001100000
  798.     dc.w    %000000010000000,%000111101110000
  799.     dc.w    %000111011110000,%001000100001000
  800.     dc.w    %000010010010000,%000101100001000
  801.     dc.w    %000010010010000,%000101100001000
  802.     dc.w    %000010010010000,%000101100001000
  803.     dc.w    %000010011110000,%000101100001000
  804.     dc.w    %000000000000000,%000010011110000
  805.  
  806. RGImage:
  807.     dc.w    %0000000111110000
  808.     dc.w    %0010001100011000
  809.     dc.w    %0110011000000000
  810.     dc.w    %0001011000111000
  811.     dc.w    %0000111000011000
  812.     dc.w    %1111111100011000
  813.     dc.w    %0110011111111000
  814.     dc.w    %0110011100000000
  815.     dc.w    %0111110010000000
  816.     dc.w    %0110110001100000
  817.     dc.w    %0110011001000000
  818.     dc.w    %1110001100000000
  819.  
  820. RGHImage:
  821.     dc.w    %1111111000001111
  822.     dc.w    %1101110011100111
  823.     dc.w    %1001100111111111
  824.     dc.w    %1110100111000111
  825.     dc.w    %1111000111100111
  826.     dc.w    %0000000011100111
  827.     dc.w    %1001100000000111
  828.     dc.w    %1001100011111111
  829.     dc.w    %1000001101111111
  830.     dc.w    %1001001110011111
  831.     dc.w    %1001100110111111
  832.     dc.w    %0001110011111111
  833.  
  834. GBImage:
  835.     dc.w    %0000000111110000
  836.     dc.w    %0010001100011000
  837.     dc.w    %0110011000000000
  838.     dc.w    %0001011000111000
  839.     dc.w    %0000111000011000
  840.     dc.w    %1111111100011000
  841.     dc.w    %0110011111111000
  842.     dc.w    %0110011100000000
  843.     dc.w    %0111110010000000
  844.     dc.w    %0110110001100000
  845.     dc.w    %0110011001000000
  846.     dc.w    %1110001100000000
  847.  
  848. GBHImage:
  849.     dc.w    %1111111000001111
  850.     dc.w    %1101110011100111
  851.     dc.w    %1001100111111111
  852.     dc.w    %1110100111000111
  853.     dc.w    %1111000111100111
  854.     dc.w    %0000000011100111
  855.     dc.w    %1001100000000111
  856.     dc.w    %1001100011111111
  857.     dc.w    %1000001101111111
  858.     dc.w    %1001001110011111
  859.     dc.w    %1001100110111111
  860.     dc.w    %0001110011111111
  861.  
  862. RBImage:
  863.     dc.w    %0000000111110000
  864.     dc.w    %0010001100011000
  865.     dc.w    %0110011000000000
  866.     dc.w    %0001011000111000
  867.     dc.w    %0000111000011000
  868.     dc.w    %1111111100011000
  869.     dc.w    %0110011111111000
  870.     dc.w    %0110011100000000
  871.     dc.w    %0111110010000000
  872.     dc.w    %0110110001100000
  873.     dc.w    %0110011001000000
  874.     dc.w    %1110001100000000
  875.  
  876. RBHImage:
  877.     dc.w    %1111111000001111
  878.     dc.w    %1101110011100111
  879.     dc.w    %1001100111111111
  880.     dc.w    %1110100111000111
  881.     dc.w    %1111000111100111
  882.     dc.w    %0000000011100111
  883.     dc.w    %1001100000000111
  884.     dc.w    %1001100011111111
  885.     dc.w    %1000001101111111
  886.     dc.w    %1001001110011111
  887.     dc.w    %1001100110111111
  888.     dc.w    %0001110011111111
  889.  
  890.  
  891.     SECTION    three,CODE
  892. NScreen            ;NewScreen structure
  893.  
  894. *            Lo-Res 5 deep
  895.  
  896.     DC.W    0,0,320,200,5    LeftEdge,TopEdge,Width,Height,Depth
  897.     DC.B    0,1    DetailPen,BlockPen
  898.     DC.W    0    V_HIRES    ViewModes
  899.     DC.W    CUSTOMSCREEN    Type
  900.     DC.L    0    *Font
  901.     DC.L    0    *DefaultTitle
  902.     DC.L    0    *Gadgets
  903.     DC.L    0    *CustomBitMap
  904.  
  905.  
  906. AWindow:
  907.     dc.w    0,0,163,99
  908.     dc.b    -1,-1
  909.     dc.l    CLOSEWINDOW!GADGETUP!GADGETDOWN!NEWPREFS!MOUSEMOVE
  910.     dc.l    BORDERLESS!WINDOWCLOSE!WINDOWDEPTH!WINDOWDRAG!SMART_REFRESH!ACTIVATE
  911.     dc.l    Red_G,0,Title
  912. Screen.Ptr:        ;actually a part of new window
  913.     dc.l    0
  914.     dc.l    0
  915.     dc.w    100,50,-1,-1
  916.     dc.w    CUSTOMSCREEN
  917.  
  918. *List of prop-gadgets
  919. *bit    meaning
  920. *0    blue on horizontal axis
  921. *1    green on horizontal if red is set or on vertical if blue is set
  922. *2    red on vertical axis
  923.  
  924.     CNOP    0,4
  925.  
  926. Red_G:
  927.     dc.l    Green_G
  928.     dc.w    61-8,57+HEIGHT_OFFSET-8,26+7,26+7
  929.     dc.w    GADGHIMAGE,GADGIMMEDIATE!FOLLOWMOUSE!RELVERIFY,PROPGADGET
  930.     dc.l    Red_Gx,Red_HGx,0,0,Red_GP    ;no text for now Red_T,0,Red_GP
  931.     dc.w    %0110    bits to indicate which colours to use
  932.     dc.l    Modify    Routine to be executed by dispatcher
  933.     
  934. Green_G:
  935.     dc.l    Blue_G
  936.     dc.w    97,57+HEIGHT_OFFSET,26,26
  937.     dc.w    GADGHCOMP,GADGIMMEDIATE!FOLLOWMOUSE!RELVERIFY,PROPGADGET
  938.     dc.l    Green_Gx,0,Green_T,0,Green_GP
  939.     dc.w    %0011    bits to indicate which colours to use
  940.     dc.l    Modify    Routine to be executed by dispatcher
  941.     
  942. Blue_G:
  943.     dc.l    RedV_G
  944.     dc.w    135,57+HEIGHT_OFFSET,26,26
  945.     dc.w    GADGHCOMP,GADGIMMEDIATE!FOLLOWMOUSE!RELVERIFY,PROPGADGET
  946.     dc.l    Blue_Gx,0,Blue_T,0,Blue_GP
  947.     dc.w    %0101    bits to indicate which colours to use
  948.     dc.l    Modify    Routine to be executed by dispatcher
  949. RedV_G:
  950.     dc.l    GreenV_G
  951.     dc.w    1,58+HEIGHT_OFFSET,14,24
  952.     dc.w    GADGHIMAGE,GADGIMMEDIATE!FOLLOWMOUSE!RELVERIFY,PROPGADGET
  953.     dc.l    RedV_Gx,RedV_HGx,RedV_T,0,RedV_GP
  954.     dc.w    %1100    bits to indicate which colours to use
  955.     dc.l    Modify    Routine to be executed by dispatcher
  956.     
  957. GreenV_G:
  958.     dc.l    BlueV_G
  959.     dc.w    19,58+HEIGHT_OFFSET,14,24
  960.     dc.w    GADGHIMAGE,GADGIMMEDIATE!FOLLOWMOUSE!RELVERIFY,PROPGADGET
  961.     dc.l    GreenV_Gx,GreenV_HGx,GreenV_T,0,GreenV_GP
  962.     dc.w    %1010    bits to indicate which colours to use
  963.     dc.l    Modify    Routine to be executed by dispatcher
  964.     
  965. BlueV_G:
  966.     dc.l    YesGadg
  967.     dc.w    37,58+HEIGHT_OFFSET,14,24
  968.     dc.w    GADGHIMAGE,GADGIMMEDIATE!FOLLOWMOUSE!RELVERIFY,PROPGADGET
  969.     dc.l    BlueV_Gx,BlueV_HGx,BlueV_T,0,BlueV_GP
  970.     dc.w    %1001    bits to indicate which colours to use
  971.     dc.l    Modify    Routine to be executed by dispatcher
  972. YesGadg:
  973.     dc.l    NoGadg
  974.     dc.w    128,14+HEIGHT_OFFSET,28,11
  975.     dc.w    GADGHBOX,RELVERIFY,BOOLGADGET
  976.     dc.l    YesBorder,0,Yes_T,0,0
  977.     dc.w    0    bits to indicate which 
  978.     dc.l    QuitCode    Routine to be executed by dispatcher
  979.  
  980. NoGadg:
  981.     dc.l    SwapGadg
  982.     dc.w    89,14+HEIGHT_OFFSET,36,11
  983.     dc.w    GADGHBOX,RELVERIFY,BOOLGADGET
  984.     dc.l    NoBorder,0,No_T,0,0
  985.     dc.w    0    bits to indicate which 
  986.     dc.l    Restore    Routine to be executed by dispatcher
  987.  
  988. SwapGadg:
  989.     dc.l    RangeGadg
  990.     dc.w    111,0+HEIGHT_OFFSET,36,11
  991.     dc.w    GADGHBOX,RELVERIFY,BOOLGADGET
  992.     dc.l    SwapBorder,0,Swap_T,0,0
  993.     dc.w    0    bits to indicate which 
  994.     dc.l    SwapColours    Routine to be executed by dispatcher
  995.  
  996. RangeGadg:
  997.     dc.l    CopyGadg
  998.     dc.w    29,0+HEIGHT_OFFSET,42,11
  999.     dc.w    GADGHBOX,RELVERIFY,BOOLGADGET
  1000.     dc.l    RangeBorder,0,Range_T,0,0
  1001.     dc.w    0    bits to indicate which 
  1002.     dc.l    Range    Routine to be executed by dispatcher
  1003.  
  1004. CopyGadg:
  1005.     dc.l    CancelGadg
  1006.     dc.w    74,0+HEIGHT_OFFSET,34,11
  1007.     dc.w    GADGHBOX,RELVERIFY,BOOLGADGET
  1008.     dc.l    CopyBorder,0,Copy_T,0,0
  1009.     dc.w    0    bits to indicate which 
  1010.     dc.l    Copy    Routine to be executed by dispatcher
  1011.  
  1012. CancelGadg:
  1013.     dc.l    ZeroGadg
  1014.     dc.w    36,14+HEIGHT_OFFSET,50,11
  1015.     dc.w    GADGHBOX,RELVERIFY,BOOLGADGET
  1016.     dc.l    CancelBorder,0,Cancel_T,0,0
  1017.     dc.w    0    bits to indicate which 
  1018.     dc.l    Cancel    Stub for now
  1019.  
  1020. ZeroGadg:
  1021.     dc.l    OneGadg
  1022.     dc.w    LeftColour,TopColour,WidthColour,HeightColour
  1023.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1024.     dc.l    ZeroRender,0,0,0,0
  1025.     dc.w    $80    bits to indicate which 
  1026.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1027.  
  1028. OneGadg:
  1029.     dc.l    TwoGadg
  1030.     dc.w    LeftColour+ColourSep*1+WidthColour*1,TopColour,WidthColour,HeightColour
  1031.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1032.     dc.l    OneRender,0,0,0,0
  1033.     dc.w    $81    bits to indicate which 
  1034.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1035.  
  1036. TwoGadg:
  1037.     dc.l    ThreeGadg
  1038.     dc.w    LeftColour+ColourSep*2+WidthColour*2,TopColour,WidthColour,HeightColour
  1039.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1040.     dc.l    TwoRender,0,0,0,0
  1041.     dc.w    $82    bits to indicate which 
  1042.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1043.  
  1044. ThreeGadg:
  1045.     dc.l    FourGadg
  1046.     dc.w    LeftColour+ColourSep*3+WidthColour*3,TopColour,WidthColour,HeightColour
  1047.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1048.     dc.l    ThreeRender,0,0,0,0
  1049.     dc.w    $83    bits to indicate which 
  1050.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1051.  
  1052. FourGadg:
  1053.     dc.l    FiveGadg
  1054.     dc.w    LeftColour+ColourSep*4+WidthColour*4,TopColour,WidthColour,HeightColour
  1055.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1056.     dc.l    FourRender,0,0,0,0
  1057.     dc.w    $84    bits to indicate which 
  1058.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1059.  
  1060. FiveGadg:
  1061.     dc.l    SixGadg
  1062.     dc.w    LeftColour+ColourSep*5+WidthColour*5,TopColour,WidthColour,HeightColour
  1063.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1064.     dc.l    FiveRender,0,0,0,0
  1065.     dc.w    $85    bits to indicate which 
  1066.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1067.  
  1068. SixGadg:
  1069.     dc.l    SevenGadg
  1070.     dc.w    LeftColour+ColourSep*6+WidthColour*6,TopColour,WidthColour,HeightColour
  1071.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1072.     dc.l    SixRender,0,0,0,0
  1073.     dc.w    $86    bits to indicate which 
  1074.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1075.  
  1076. SevenGadg:
  1077.     dc.l    EightGadg
  1078.     dc.w    LeftColour+ColourSep*7+WidthColour*7,TopColour,WidthColour,HeightColour
  1079.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1080.     dc.l    SevenRender,0,0,0,0
  1081.     dc.w    $87    bits to indicate which 
  1082.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1083.  
  1084. EightGadg:
  1085.     dc.l    NineGadg
  1086.     dc.w    LeftColour+ColourSep*8+WidthColour*8,TopColour,WidthColour,HeightColour
  1087.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1088.     dc.l    EightRender,0,0,0,0
  1089.     dc.w    $88    bits to indicate which 
  1090.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1091.  
  1092. NineGadg:
  1093.     dc.l    TenGadg
  1094.     dc.w    LeftColour+ColourSep*9+WidthColour*9,TopColour,WidthColour,HeightColour
  1095.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1096.     dc.l    NineRender,0,0,0,0
  1097.     dc.w    $89    bits to indicate which 
  1098.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1099.  
  1100. TenGadg:
  1101.     dc.l    ElevenGadg
  1102.     dc.w    LeftColour+ColourSep*10+WidthColour*10,TopColour,WidthColour,HeightColour
  1103.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1104.     dc.l    TenRender,0,0,0,0
  1105.     dc.w    $8A    bits to indicate which 
  1106.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1107.  
  1108. ElevenGadg:
  1109.     dc.l    TwelveGadg
  1110.     dc.w    LeftColour+ColourSep*11+WidthColour*11,TopColour,WidthColour,HeightColour
  1111.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1112.     dc.l    ElevenRender,0,0,0,0
  1113.     dc.w    $8B    bits to indicate which 
  1114.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1115.  
  1116. TwelveGadg:
  1117.     dc.l    ThirteenGadg
  1118.     dc.w    LeftColour+ColourSep*12+WidthColour*12,TopColour,WidthColour,HeightColour
  1119.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1120.     dc.l    TwelveRender,0,0,0,0
  1121.     dc.w    $8C    bits to indicate which 
  1122.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1123.  
  1124. ThirteenGadg:
  1125.     dc.l    FourteenGadg
  1126.     dc.w    LeftColour+ColourSep*13+WidthColour*13,TopColour,WidthColour,HeightColour
  1127.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1128.     dc.l    ThirteenRender,0,0,0,0
  1129.     dc.w    $8D    bits to indicate which 
  1130.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1131.  
  1132. FourteenGadg:
  1133.     dc.l    FifteenGadg
  1134.     dc.w    LeftColour+ColourSep*14+WidthColour*14,TopColour,WidthColour,HeightColour
  1135.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1136.     dc.l    FourteenRender,0,0,0,0
  1137.     dc.w    $8E    bits to indicate which 
  1138.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1139.  
  1140. FifteenGadg:
  1141.     dc.l    SixteenGadg
  1142.     dc.w    LeftColour+ColourSep*15+WidthColour*15,TopColour,WidthColour,HeightColour
  1143.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1144.     dc.l    FifteenRender,0,0,0,0
  1145.     dc.w    $8F    bits to indicate which 
  1146.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1147.  
  1148. SixteenGadg:
  1149.     dc.l    SeventeenGadg
  1150.     dc.w    LeftColour,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1151.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1152.     dc.l    SixteenRender,0,0,0,0
  1153.     dc.w    $90    bits to indicate which 
  1154.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1155.  
  1156. SeventeenGadg:
  1157.     dc.l    EighteenGadg
  1158.     dc.w    LeftColour+ColourSep*1+WidthColour*1,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1159.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1160.     dc.l    SeventeenRender,0,0,0,0
  1161.     dc.w    $91    bits to indicate which 
  1162.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1163.  
  1164. EighteenGadg:
  1165.     dc.l    NineteenGadg
  1166.     dc.w    LeftColour+ColourSep*2+WidthColour*2,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1167.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1168.     dc.l    EighteenRender,0,0,0,0
  1169.     dc.w    $92    bits to indicate which 
  1170.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1171.  
  1172. NineteenGadg:
  1173.     dc.l    TwentyGadg
  1174.     dc.w    LeftColour+ColourSep*3+WidthColour*3,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1175.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1176.     dc.l    NineteenRender,0,0,0,0
  1177.     dc.w    $93    bits to indicate which 
  1178.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1179.  
  1180. TwentyGadg:
  1181.     dc.l    TOneGadg
  1182.     dc.w    LeftColour+ColourSep*4+WidthColour*4,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1183.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1184.     dc.l    TwentyRender,0,0,0,0
  1185.     dc.w    $94    bits to indicate which 
  1186.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1187.  
  1188. TOneGadg:
  1189.     dc.l    TTwoGadg
  1190.     dc.w    LeftColour+ColourSep*5+WidthColour*5,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1191.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1192.     dc.l    TOneRender,0,0,0,0
  1193.     dc.w    $95    bits to indicate which 
  1194.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1195.  
  1196. TTwoGadg:
  1197.     dc.l    TThreeGadg
  1198.     dc.w    LeftColour+ColourSep*6+WidthColour*6,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1199.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1200.     dc.l    TTwoRender,0,0,0,0
  1201.     dc.w    $96    bits to indicate which 
  1202.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1203.  
  1204. TThreeGadg:
  1205.     dc.l    TFourGadg
  1206.     dc.w    LeftColour+ColourSep*7+WidthColour*7,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1207.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1208.     dc.l    TThreeRender,0,0,0,0
  1209.     dc.w    $97    bits to indicate which 
  1210.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1211.  
  1212. TFourGadg:
  1213.     dc.l    TFiveGadg
  1214.     dc.w    LeftColour+ColourSep*8+WidthColour*8,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1215.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1216.     dc.l    TFourRender,0,0,0,0
  1217.     dc.w    $98    bits to indicate which 
  1218.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1219.  
  1220. TFiveGadg:
  1221.     dc.l    TSixGadg
  1222.     dc.w    LeftColour+ColourSep*9+WidthColour*9,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1223.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1224.     dc.l    TFiveRender,0,0,0,0
  1225.     dc.w    $99    bits to indicate which 
  1226.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1227.  
  1228. TSixGadg:
  1229.     dc.l    TSevenGadg
  1230.     dc.w    LeftColour+ColourSep*10+WidthColour*10,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1231.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1232.     dc.l    TSixRender,0,0,0,0
  1233.     dc.w    $9A    bits to indicate which 
  1234.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1235.  
  1236. TSevenGadg:
  1237.     dc.l    TEightGadg
  1238.     dc.w    LeftColour+ColourSep*11+WidthColour*11,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1239.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1240.     dc.l    TSevenRender,0,0,0,0
  1241.     dc.w    $9B    bits to indicate which 
  1242.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1243.  
  1244. TEightGadg:
  1245.     dc.l    TNineGadg
  1246.     dc.w    LeftColour+ColourSep*12+WidthColour*12,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1247.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1248.     dc.l    TEightRender,0,0,0,0
  1249.     dc.w    $9C    bits to indicate which 
  1250.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1251.  
  1252. TNineGadg:
  1253.     dc.l    ThirtyGadg
  1254.     dc.w    LeftColour+ColourSep*13+WidthColour*13,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1255.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1256.     dc.l    TNineRender,0,0,0,0
  1257.     dc.w    $9D    bits to indicate which 
  1258.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1259.  
  1260. ThirtyGadg:
  1261.     dc.l    ThirtyOneGadg
  1262.     dc.w    LeftColour+ColourSep*14+WidthColour*14,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1263.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1264.     dc.l    ThirtyRender,0,0,0,0
  1265.     dc.w    $9E    bits to indicate which 
  1266.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1267.  
  1268. ThirtyOneGadg:
  1269.     dc.l    0
  1270.     dc.w    LeftColour+ColourSep*15+WidthColour*15,TopColour+HeightColour+ColourSep,WidthColour,HeightColour
  1271.     dc.w    GADGHBOX!GADGIMAGE,RELVERIFY,BOOLGADGET
  1272.     dc.l    ThirtyOneRender,0,0,0,0
  1273.     dc.w    $9F    bits to indicate which 
  1274.     dc.l    ChangeColour    Routine to be executed by dispatcher
  1275.  
  1276.  
  1277.  
  1278. ZeroRender:
  1279.     dc.w    0,0,WidthColour,HeightColour,0
  1280.     dc.l    0
  1281.     dc.b    0,0
  1282.     dc.l    0
  1283.  
  1284. OneRender:
  1285.     dc.w    0,0,WidthColour,HeightColour,0
  1286.     dc.l    0
  1287.     dc.b    0,1
  1288.     dc.l    0
  1289.  
  1290. TwoRender:
  1291.     dc.w    0,0,WidthColour,HeightColour,0
  1292.     dc.l    0
  1293.     dc.b    0,2
  1294.     dc.l    0
  1295.  
  1296. ThreeRender:
  1297.     dc.w    0,0,WidthColour,HeightColour,0
  1298.     dc.l    0
  1299.     dc.b    0,3
  1300.     dc.l    0
  1301.  
  1302. FourRender:
  1303.     dc.w    0,0,WidthColour,HeightColour,0
  1304.     dc.l    0
  1305.     dc.b    0,4
  1306.     dc.l    0
  1307.  
  1308. FiveRender:
  1309.     dc.w    0,0,WidthColour,HeightColour,0
  1310.     dc.l    0
  1311.     dc.b    0,5
  1312.     dc.l    0
  1313.  
  1314. SixRender:
  1315.     dc.w    0,0,WidthColour,HeightColour,0
  1316.     dc.l    0
  1317.     dc.b    0,6
  1318.     dc.l    0
  1319.  
  1320. SevenRender:
  1321.     dc.w    0,0,WidthColour,HeightColour,0
  1322.     dc.l    0
  1323.     dc.b    0,7
  1324.     dc.l    0
  1325.  
  1326. EightRender:
  1327.     dc.w    0,0,WidthColour,HeightColour,0
  1328.     dc.l    0
  1329.     dc.b    0,8
  1330.     dc.l    0
  1331.  
  1332. NineRender:
  1333.     dc.w    0,0,WidthColour,HeightColour,0
  1334.     dc.l    0
  1335.     dc.b    0,9
  1336.     dc.l    0
  1337.  
  1338. TenRender:
  1339.     dc.w    0,0,WidthColour,HeightColour,0
  1340.     dc.l    0
  1341.     dc.b    0,10
  1342.     dc.l    0
  1343.  
  1344. ElevenRender:
  1345.     dc.w    0,0,WidthColour,HeightColour,0
  1346.     dc.l    0
  1347.     dc.b    0,11
  1348.     dc.l    0
  1349.  
  1350. TwelveRender:
  1351.     dc.w    0,0,WidthColour,HeightColour,0
  1352.     dc.l    0
  1353.     dc.b    0,12
  1354.     dc.l    0
  1355.  
  1356. ThirteenRender:
  1357.     dc.w    0,0,WidthColour,HeightColour,0
  1358.     dc.l    0
  1359.     dc.b    0,13
  1360.     dc.l    0
  1361.  
  1362. FourteenRender:
  1363.     dc.w    0,0,WidthColour,HeightColour,0
  1364.     dc.l    0
  1365.     dc.b    0,14
  1366.     dc.l    0
  1367.  
  1368. FifteenRender:
  1369.     dc.w    0,0,WidthColour,HeightColour,0
  1370.     dc.l    0
  1371.     dc.b    0,15
  1372.     dc.l    0
  1373.  
  1374. SixteenRender:
  1375.     dc.w    0,0,WidthColour,HeightColour,0
  1376.     dc.l    0
  1377.     dc.b    0,16
  1378.     dc.l    0
  1379.  
  1380. SeventeenRender:
  1381.     dc.w    0,0,WidthColour,HeightColour,0
  1382.     dc.l    0
  1383.     dc.b    0,17
  1384.     dc.l    0
  1385.  
  1386. EighteenRender:
  1387.     dc.w    0,0,WidthColour,HeightColour,0
  1388.     dc.l    0
  1389.     dc.b    0,18
  1390.     dc.l    0
  1391.  
  1392. NineteenRender:
  1393.     dc.w    0,0,WidthColour,HeightColour,0
  1394.     dc.l    0
  1395.     dc.b    0,19
  1396.     dc.l    0
  1397.  
  1398. TwentyRender:
  1399.     dc.w    0,0,WidthColour,HeightColour,0
  1400.     dc.l    0
  1401.     dc.b    0,20
  1402.     dc.l    0
  1403.  
  1404. TOneRender:
  1405.     dc.w    0,0,WidthColour,HeightColour,0
  1406.     dc.l    0
  1407.     dc.b    0,21
  1408.     dc.l    0
  1409.  
  1410. TTwoRender:
  1411.     dc.w    0,0,WidthColour,HeightColour,0
  1412.     dc.l    0
  1413.     dc.b    0,22
  1414.     dc.l    0
  1415.  
  1416. TThreeRender:
  1417.     dc.w    0,0,WidthColour,HeightColour,0
  1418.     dc.l    0
  1419.     dc.b    0,23
  1420.     dc.l    0
  1421.  
  1422. TFourRender:
  1423.     dc.w    0,0,WidthColour,HeightColour,0
  1424.     dc.l    0
  1425.     dc.b    0,24
  1426.     dc.l    0
  1427.  
  1428. TFiveRender:
  1429.     dc.w    0,0,WidthColour,HeightColour,0
  1430.     dc.l    0
  1431.     dc.b    0,25
  1432.     dc.l    0
  1433.  
  1434. TSixRender:
  1435.     dc.w    0,0,WidthColour,HeightColour,0
  1436.     dc.l    0
  1437.     dc.b    0,26
  1438.     dc.l    0
  1439.  
  1440. TSevenRender:
  1441.     dc.w    0,0,WidthColour,HeightColour,0
  1442.     dc.l    0
  1443.     dc.b    0,27
  1444.     dc.l    0
  1445.  
  1446. TEightRender:
  1447.     dc.w    0,0,WidthColour,HeightColour,0
  1448.     dc.l    0
  1449.     dc.b    0,28
  1450.     dc.l    0
  1451.  
  1452. TNineRender:
  1453.     dc.w    0,0,WidthColour,HeightColour,0
  1454.     dc.l    0
  1455.     dc.b    0,29
  1456.     dc.l    0
  1457.  
  1458. ThirtyRender:
  1459.     dc.w    0,0,WidthColour,HeightColour,0
  1460.     dc.l    0
  1461.     dc.b    0,30
  1462.     dc.l    0
  1463.  
  1464. ThirtyOneRender:
  1465.     dc.w    0,0,WidthColour,HeightColour,0
  1466.     dc.l    0
  1467.     dc.b    0,31
  1468.     dc.l    0
  1469.  
  1470. YesBorder:
  1471.     dc.w    0,0
  1472.     dc.b    1,0,JAM1,5
  1473.     dc.l    YesXY
  1474.     dc.l    0
  1475. NoBorder:
  1476.     dc.w    0,0
  1477.     dc.b    1,0,JAM1,5
  1478.     dc.l    NoXY
  1479.     dc.l    0
  1480.  
  1481. CopyBorder:
  1482.     dc.w    0,0
  1483.     dc.b    1,0,JAM1,5
  1484.     dc.l    CopyXY
  1485.     dc.l    0
  1486.  
  1487. RangeBorder:
  1488.     dc.w    0,0
  1489.     dc.b    1,0,JAM1,5
  1490.     dc.l    RangeXY
  1491.     dc.l    0
  1492.  
  1493. SwapBorder:
  1494.     dc.w    0,0
  1495.     dc.b    1,0,JAM1,5
  1496.     dc.l    SwapXY
  1497.     dc.l    0
  1498.  
  1499. CancelBorder:
  1500.     dc.w    0,0
  1501.     dc.b    1,0,JAM1,5
  1502.     dc.l    CancelXY
  1503.     dc.l    0
  1504.  
  1505.  
  1506.  
  1507. Red_GP dc.w    FREEVERT!FREEHORIZ!$8,0,0,KnobSize,KnobSize
  1508.     dc.w    0,0,0,0,0,0
  1509.  
  1510. Green_GP    dc.w    AUTOKNOB!FREEVERT!FREEHORIZ,0,0,KnobSize,KnobSize
  1511.     dc.w    0,0,0,0,0,0
  1512.  
  1513. Blue_GP dc.w    AUTOKNOB!FREEVERT!FREEHORIZ,0,0,KnobSize,KnobSize
  1514.     dc.w    0,0,0,0,0,0
  1515.  
  1516. Red_Gx:                 ;ds.b    20
  1517.     dc.w    0,0,13,12,1
  1518.     dc.l    RGImage
  1519.     dc.b    1,0
  1520.     dc.l    0
  1521.  
  1522. Red_HGx:                 ;ds.b    20
  1523.     dc.w    0,0,12,12,1
  1524.     dc.l    RGHImage
  1525.     dc.b    1,0
  1526.     dc.l    0
  1527.  
  1528. ;Red_Gx ds.b    20
  1529. Green_Gx    ds.b    20
  1530. Blue_Gx ds.b    20
  1531.  
  1532. Red_T    dc.b    1,0,1,0
  1533.     dc.w    0,-9
  1534.     dc.l    0,Red_Tex,Red_1
  1535.  
  1536. Red_1    dc.b    1,0,1,0
  1537.     dc.w    -9,0
  1538.     dc.l    0,Red_Tex1,0
  1539.  
  1540. Green_T dc.b    1,0,1,0
  1541.     dc.w    0,-9
  1542.     dc.l    0,Green_Tex,Green_1
  1543.  
  1544. Green_1 dc.b    1,0,1,0
  1545.     dc.w    -9,0
  1546.     dc.l    0,Green_Tex1,0
  1547.  
  1548. Blue_T dc.b    1,0,1,0
  1549.     dc.w    0,-9
  1550.     dc.l    0,Blue_Tex,Blue_1
  1551.  
  1552. Blue_1 dc.b    1,0,1,0
  1553.     dc.w    -9,0
  1554.     dc.l    0,Blue_Tex1,0
  1555.  
  1556. Red_Tex dc.b    'G',0
  1557. Red_Tex1    dc.b    'R',0
  1558.  
  1559. Green_Tex    dc.b    'B',0
  1560. Green_Tex1    dc.b    'G',0
  1561.  
  1562. Blue_Tex    dc.b    'B',0
  1563. Blue_Tex1    dc.b    'R',0
  1564.  
  1565. RedV_GP dc.w    FREEVERT!$8,0,0,$ffff,KnobSize
  1566.     dc.w    0,0,0,0,0,0
  1567.  
  1568. GreenV_GP:
  1569.     dc.w    FREEVERT!$8,0,0,$ffff,KnobSize
  1570.     dc.w    0,0,0,0,0,0
  1571.  
  1572. BlueV_GP dc.w    FREEVERT!$8,0,0,$ffff,KnobSize
  1573.     dc.w    0,0,0,0,0,0
  1574.  
  1575. RedV_Gx:                 ;ds.b    20
  1576.     dc.w    0,0,15,4,1
  1577.     dc.l    KnobImage
  1578.     dc.b    1,0
  1579.     dc.l    0
  1580.  
  1581. GreenV_Gx:                ;ds.b    20
  1582.     dc.w    0,0,15,4,1
  1583.     dc.l    KnobImage
  1584.     dc.b    1,0
  1585.     dc.l    0
  1586.  
  1587. BlueV_Gx:                ;ds.b    20
  1588.     dc.w    0,0,15,4,1
  1589.     dc.l    KnobImage
  1590.     dc.b    1,0
  1591.     dc.l    0
  1592.  
  1593. RedV_HGx:                 ;ds.b    20
  1594.     dc.w    0,0,15,4,1
  1595.     dc.l    PKnobImage
  1596.     dc.b    1,0
  1597.     dc.l    0
  1598.  
  1599. GreenV_HGx:                ;ds.b    20
  1600.     dc.w    0,0,15,4,1
  1601.     dc.l    PKnobImage
  1602.     dc.b    1,0
  1603.     dc.l    0
  1604.  
  1605. BlueV_HGx:                ;ds.b    20
  1606.     dc.w    0,0,15,4,1
  1607.     dc.l    PKnobImage
  1608.     dc.b    1,0
  1609.     dc.l    0
  1610.  
  1611. RedV_T    dc.b    1,0,1,0
  1612.     dc.w    2,-9
  1613.     dc.l    0,RedV_Tex,0
  1614.  
  1615. GreenV_T dc.b    1,0,1,0
  1616.     dc.w    2,-9
  1617.     dc.l    0,GreenV_Tex,0
  1618.  
  1619. BlueV_T dc.b    1,0,1,0
  1620.     dc.w    2,-9
  1621.     dc.l    0,BlueV_Tex,0
  1622.  
  1623. RedV_Tex     dc.b    'R',0
  1624.  
  1625. GreenV_Tex    dc.b    'G',0
  1626.  
  1627. BlueV_Tex    dc.b    'B',0
  1628.  
  1629.     CNOP 0,4
  1630.  
  1631. Yes_T    dc.b    1,0,1,0
  1632.     dc.w    2,2
  1633.     dc.l    0,Yes_Tex,0
  1634.  
  1635. No_T    dc.b    1,0,1,0
  1636.     dc.w    2,2
  1637.     dc.l    0,No_Tex,0
  1638.  
  1639. Swap_T    dc.b    1,0,1,0
  1640.     dc.w    2,2
  1641.     dc.l    0,Swap_Tex,0
  1642.  
  1643. Range_T    dc.b    1,0,1,0
  1644.     dc.w    2,2
  1645.     dc.l    0,Range_Tex,0
  1646.  
  1647. Copy_T    dc.b    1,0,1,0
  1648.     dc.w    2,2
  1649.     dc.l    0,Copy_Tex,0
  1650.  
  1651. Cancel_T:
  1652.     dc.b    1,0,1,0
  1653.     dc.w    2,2
  1654.     dc.l    0,Cancel_Tex,0
  1655.  
  1656. Yes_Tex    dc.b    'OK',0
  1657. No_Tex    dc.b    'Undo',0
  1658. Swap_Tex    dc.b    'Swap',0
  1659. Range_Tex    dc.b    'Range',0
  1660. Copy_Tex    dc.b    'Copy',0
  1661. Cancel_Tex    dc.b    'Cancel',0
  1662.     CNOP 0,4
  1663.  
  1664.  
  1665. TextAttr
  1666.  
  1667.     dc.l    FontName
  1668.     dc.w    8
  1669.     dc.b    0
  1670.     dc.b    0
  1671.  
  1672.     
  1673. Window.Ptr    dc.l    0
  1674. Intuit.Ptr    dc.l    0
  1675. Graphic.Ptr    dc.l    0
  1676. RPort        dc.l    0
  1677. Currentgadg    dc.l    0
  1678. CurrentColGadg    dc.l    0
  1679. CurrentID    dc.l    0
  1680. ButtonValue    dc.l    0
  1681. WhichPointer    dc.l    0
  1682. Font.Ptr    dc.l    0
  1683. ColourTable    ds.w    33
  1684. OldRed:
  1685.         dc.w    0
  1686. OldGreen:
  1687.         dc.w    0
  1688. OldBlue:
  1689.         dc.w    0
  1690. CurrentColour:
  1691.         dc.l    0
  1692. ColourTemp:
  1693.         ds.w    33    max of 32 colours
  1694. INTUIT.NAME    dc.b    'intuition.library',0
  1695. GRAPHIC.NAME    dc.b    'graphics.library',0
  1696. Title    dc.b    'Color Changer',0
  1697. MouseEvents    dc.b    0
  1698. FontName    dc.b    'topaz.font',0
  1699.     CNOP    0,4
  1700.  
  1701.  
  1702. PolyArray:
  1703.     dc.w    0,0
  1704.     dc.w    0,WidthColour+1
  1705.     dc.w    WidthColour+1,HeightColour+1
  1706.     dc.w    HeightColour+1,0
  1707.     dc.w    0,0
  1708.  
  1709. Border:
  1710.     dc.w    0
  1711.     dc.w    0
  1712.     dc.b    0    frontpen
  1713.     dc.b    0    backpen
  1714.     dc.b    JAM1    drawmode
  1715.     dc.b    5    # of point pairs
  1716.     dc.l    PolyArray    
  1717.     dc.l    0    NextBorder
  1718.  
  1719. WindowBorder:
  1720.     dc.w    0
  1721.     dc.w    0
  1722.     dc.b    1    frontpen
  1723.     dc.b    0    backpen
  1724.     dc.b    JAM1    drawmode
  1725.     dc.b    4    # of point pairs
  1726.     dc.l    WindowBorderXY
  1727.     dc.l    PGBorderA        NextBorder
  1728.  
  1729. PGBorderA:
  1730.     dc.w    0
  1731.     dc.w    57+HEIGHT_OFFSET
  1732.     dc.b    1    frontpen
  1733.     dc.b    0    backpen
  1734.     dc.b    JAM1    drawmode
  1735.     dc.b    5    # of point pairs
  1736.     dc.l    PGBorderAXY
  1737.     dc.l    PGBorderB        NextBorder
  1738.  
  1739. PGBorderB:
  1740.     dc.w    18
  1741.     dc.w    57+HEIGHT_OFFSET
  1742.     dc.b    1    frontpen
  1743.     dc.b    0    backpen
  1744.     dc.b    JAM1    drawmode
  1745.     dc.b    5    # of point pairs
  1746.     dc.l    PGBorderAXY
  1747.     dc.l    PGBorderC        NextBorder
  1748.  
  1749. PGBorderC:
  1750.     dc.w    36
  1751.     dc.w    57+HEIGHT_OFFSET
  1752.     dc.b    1    frontpen
  1753.     dc.b    0    backpen
  1754.     dc.b    JAM1    drawmode
  1755.     dc.b    5    # of point pairs
  1756.     dc.l    PGBorderAXY
  1757.     dc.l    PGBorderD        NextBorder
  1758.  
  1759. PGBorderD
  1760.     dc.w    61-9
  1761.     dc.w    57+HEIGHT_OFFSET-9
  1762.     dc.b    1    frontpen
  1763.     dc.b    0    backpen
  1764.     dc.b    JAM1    drawmode
  1765.     dc.b    5    # of point pairs
  1766.     dc.l    PGBorderDXY
  1767.     dc.l    0    NextBorder
  1768.  
  1769. YesXY:
  1770.     dc.w    0,0
  1771.     dc.w    28,0
  1772.     dc.w    28,11
  1773.     dc.w    0,11
  1774.     dc.w    0,0
  1775. NoXY:
  1776.     dc.w    0,0
  1777.     dc.w    36,0
  1778.     dc.w    36,11
  1779.     dc.w    0,11
  1780.     dc.w    0,0
  1781. SwapXY:
  1782.     dc.w    0,0
  1783.     dc.w    36,0
  1784.     dc.w    36,11
  1785.     dc.w    0,11
  1786.     dc.w    0,0
  1787. RangeXY:
  1788.     dc.w    0,0
  1789.     dc.w    42,0
  1790.     dc.w    42,11
  1791.     dc.w    0,11
  1792.     dc.w    0,0
  1793. CopyXY:
  1794.     dc.w    0,0
  1795.     dc.w    34,0
  1796.     dc.w    34,11
  1797.     dc.w    0,11
  1798.     dc.w    0,0
  1799.  
  1800. CancelXY:
  1801.     dc.w    0,0
  1802.     dc.w    50,0
  1803.     dc.w    50,11
  1804.     dc.w    0,11
  1805.     dc.w    0,0
  1806.  
  1807. WindowBorderXY:
  1808.     dc.w    0,0
  1809.     dc.w    0,98
  1810.     dc.w    162,98
  1811.     dc.w    162,0
  1812.     
  1813. PGBorderAXY:
  1814.     dc.w    0,0
  1815.     dc.w    16,0
  1816.     dc.w    16,26
  1817.     dc.w    0,26
  1818.     dc.w    0,0
  1819.     
  1820. PGBorderDXY:
  1821.     dc.w    0,0
  1822.     dc.w    0,35
  1823.     dc.w    35,35
  1824.     dc.w    35,0
  1825.     dc.w    0,0
  1826.  
  1827.     include    'ram:boxes&bows'
  1828.  
  1829.     END
  1830.  
  1831.