; *** CPallete BRA _START DOS EQU 1 INT EQU 1 GFX EQU 1 WIN EQU 1 GAD EQU 1 TXT EQU 1 INCLUDE "HEADER" MAIN TST.L ENDFROMWB BNE.S _BUILDGADGETS FROMUSER DOSPRINT STDOUT,#OPENMESSAGE ZERO D0 MOVEA.L COMMAND,A0 CMPI.B #'?',(A0) BEQ USAGE _BUILDGADGETS ;BORDER FOR COLOR GADGETS LEA LINES,A1 LEA GADGETBORDER,A0 MOVE.L A1,BORD.XY(A0) ;ACTION GADGETS LEA GADGETS,A5 MOVE.W _MYGADGACTIV1,_THISGACTIV MOVE.W _MYGADGFLAGS1,_THISGFLAGS LEA NEXTG,A1 MOVE.W #15,D4 MOVE.W #75,D5 BSR MAKEAGADGET MOVE.L _THISGADGET,(A5)+ LEA CANCELG,A1 MOVE.W #230,D4 MOVE.W #75,D5 BSR MAKEAGADGET MOVE.L _THISGADGET,(A5)+ ;SLIDERS MOVE.W _MYGADGACTIV2,_THISGACTIV MOVE.W _MYGADGFLAGS2,_THISGFLAGS MOVE.W #15,D4 MOVE.W #40,D5 MOVE.W #-20,D6 MOVE.W #9,D7 BSR MAKEAPROPGADGET MOVE.L _THISGADGET,(A5)+ MOVE.W #15,D4 MOVE.W #50,D5 MOVE.W #-20,D6 MOVE.W #9,D7 BSR MAKEAPROPGADGET MOVE.L _THISGADGET,(A5)+ MOVE.W #15,D4 MOVE.W #60,D5 MOVE.W #-20,D6 MOVE.W #9,D7 BSR MAKEAPROPGADGET MOVE.L _THISGADGET,(A5)+ ;COLORGADGETS MOVE.W _MYGADGACTIV3,_THISGACTIV MOVE.W _MYGADGFLAGS3,_THISGFLAGS MOVE.W #31,D0 ;MAX COLORS -1 LEA CGADGETS,A5 CG PUSHREG D0 ZERA A1 BSR MAKEAGADGETC MOVE.L _THISGADGET,(A5)+ PULLREG D0 DBRA D0,CG ;BUILD ITEXT MODULES MAKEITEX RED,ERROR,REDIT MAKEITEX GREEN,ERROR,GREENIT MAKEITEX BLUE,ERROR,BLUEIT MOVE.L _MYIDCMPFLAGS,_THISIDCMP MOVE.L _MYFLAGS,_THISFLAGS MOVE.W #CUSTOMSCREEN,_THISTYPE _BUILDAWINDOW MOVE.L _INTBASE,A0 MOVE.L IB.FIRSTSCREEN(A0),A0 MOVE.L A0,_THISSCREEN BSR CHECKDIM MAKEWIN #MYWINDOWTITLE,LEFT,TOP,WIDTH,HEIGHT,ERROR MOVE.L D0,A0 MOVE.L D0,WINDOW MOVE.L WW.WSCREEN(A0),SCRN MOVE.L WW.RPORT(A0),RP INTLIB VIEWPORTADDRESS MOVE.L D0,A0 MOVE.L A0,VP MOVE.L VP.COLORMAP(A0),CM MOVE.L SCRN,A0 ZERO D0 MOVE.B SCRN.BITMAP+BM.DEPTH(A0),D0 ZERO D1 MOVE.L VP,A0 MOVE.W VP.MODES(A0),D1 PUSHREG D1 AND.W #HAM,D1 CMP.W #HAM,D1 BNE.S 19$ MOVE.W #4,D0 19$: PULLREG D1 AND.W #EXTRA_HALFBRITE,D1 CMP.W #EXTRA_HALFBRITE,D1 BNE.S 29$ MOVE.W #5,D0 29$: MOVE.W #1,D1 ASL.W D0,D1 TST.W D1 BNE.S 100$ MOVE.W #1,D1 100$: CMP.W #32,D1 BLT.S 200$ MOVE.W #32,D1 200$: MOVE.W D1,NUMBEROFCOLORS ; POP UP INTUITEXTS & COLOR GADGET BORDER BSR REFRESHINTS COLORGADGETS ; GET SCREEN INFO TO DETERMINE PALETTE SIZE MOVE.W NUMBEROFCOLORS,D1 ZERO D6 MOVE.W #288,D6 DIVS D1,D6 MOVE.W #20,D7 MOVE.L #0,D0 MOVE.W #6,D4 MOVE.W #12,D5 LEA CGADGETS,A5 LEA COLORPALETTE,A4 SUBI.W #1,D1 GADG2 PUSHREG D0-D1 MOVE.L (A5)+,A0 PUSHREG A0 BSR SIZEGADGET PULLREG A0 BSR COLORIZEGADG ADD.W D6,D4 MOVE.L CM,A0 GFXLIB GETRGB4 MOVE.W D0,(A4)+ PULLREG D0-D1 ADDI.B #1,D0 DBRA D1,GADG2 MOVE.W #0,ACTIVECOLOR BSR PROPADJUST ; POP UP GADGETS LEA GADGETS,A5 ZERO D7 MOVE.W NUMBEROFCOLORS,D7 ADDI.L #4,D7 GADG1 ZERO D0 MOVE.W #-1,D0 MOVE.L WINDOW,A0 MOVE.L (A5)+,A1 INTLIB ADDGADGET DBRA D7,GADG1 BSR REFRESHING LOOP MOVE.L WINDOW,A0 MOVE.L WW.USERPORT(A0),A0 SYSLIB WAITPORT MOVE.L WINDOW,A0 MOVE.L WW.USERPORT(A0),A0 SYSLIB GETMSG TST.L D0 BEQ.S 9$ MOVE.L D0,A1 MOVE.L IM.CLASS(A1),D2 MOVE.W IM.CODE(A1),D3 MOVE.W IM.QUALIFIER(A1),D4 MOVE.L IM.IADDRESS(A1),D5 SYSLIB REPLYMSG CMP.L #CLOSEWINDOW,D2 BEQ DONE CMP.L #GADGETUP,D2 BEQ.S 10$ CMP.L #NEWSIZE,D2 BNE.S 8$ BSR REFRESHINTS BRA RELOOP 8$: CMP.L #MOUSEMOVE,D2 BNE.S 9$ BSR MMOVE BRA RELOOP 9$: ; UNKNOWN MESSAGE - MAKE SURE SCREEN SURVIVED MOVE.L _INTBASE,A0 MOVE.L IB.FIRSTSCREEN(A0),A0 12$: CMP.L SCRN,A0 BEQ.S 11$ CMP.L #0,A0 BEQ.S 13$ MOVE.L (A0),A0 BRA 12$ 13$: BRA 101$ 11$: BRA.S RELOOP 10$: BSR DOGADGET TST.B D6 ; REQUIRES CHANGING SCREEN? BEQ.S 2$ MOVE.L WINDOW,A0 INTLIB CLOSEWINDOW MOVE.L _INTBASE,A0 MOVE.L IB.FIRSTSCREEN(A0),A0 INTLIB SCREENTOBACK 101$: BRA _BUILDAWINDOW 2$: RELOOP BRA LOOP DONE ZERO D0 QUIT PUSHREG D0 TST.L WINDOW BEQ.S 1$ MOVE.L WINDOW,A0 INTLIB CLOSEWINDOW 1$: PULLREG D0 QUITNOW RTS USAGE DOSPRINT STDOUT,#USAGETEXT BRA DONE ERROR MOVE.L #CANTALLOCMEM,D0 BRA QUIT CHECKDIM MOVE.L _THISSCREEN,A0 MOVE.W SCRN.WIDTH(A0),D0 MOVE.W WIDTH,D1 MOVE.W LEFT,D2 ADD.W D1,D2 CMP.W D0,D2 BLE.S 1$ MOVE.W #0,LEFT CMP.W D0,D1 BLE.S 1$ MOVE.W #80,WIDTH 1$: MOVE.W SCRN.HEIGHT(A0),D0 MOVE.W HEIGHT,D1 MOVE.W TOP,D2 ADD.W D1,D2 CMP.W D0,D2 BLE.S 2$ MOVE.W #0,TOP CMP.W D0,D1 BLE.S 2$ MOVE.W #20,HEIGHT 2$: RTS DOGADGET MOVE.L D5,A0 LEA GADGETS,A1 BSR GETGADG CMP.W #0,D0 BEQ ENDDOGADGET CMP.W #1,D0 BNE.S 2$ ; NEXTSCRN MOVE.L WINDOW,A0 MOVE.W WW.LEFTEDGE(A0),LEFT MOVE.W WW.TOPEDGE(A0),TOP MOVE.W WW.WIDTH(A0),WIDTH MOVE.W WW.HEIGHT(A0),HEIGHT MOVE.B #1,D6 BRA ENDDOGADGET 2$: CMP.W #2,D0 BNE.S 3$ ; CANCEL MOVE.L VP,A0 LEA COLORPALETTE,A1 MOVE.W NUMBEROFCOLORS,D0 GFXLIB LOADRGB4 BSR PROPADJUST BSR REFRESHING ZERO D6 BRA ENDDOGADGET 3$: CMP.W #5,D0 BGT.S 4$ ; RED/GREEN/BLUE LEA PGADGETS,A5 MOVE.L #2,D5 20$: ZERO D4 MOVE.L (A5)+,A0 MOVE.L GADG.SPECIALINFO(A0),A0 MOVE.W PI.HORIZPOT(A0),D4 DIVS #$1111,D4 PUSHREG D4 MULS #$1111,D4 MOVE.W D4,PI.HORIZPOT(A0) DBRA D5,20$ PULLREG D3 PULLREG D2 PULLREG D1 MOVE.L VP,A0 MOVE.W ACTIVECOLOR,D0 GFXLIB SETRGB4 BSR REFRESHING ZERO D6 BRA ENDDOGADGET 4$: ;COLOR GADGETS SUB.W #6,D0 MOVE.W D0,ACTIVECOLOR BSR PROPADJUST BSR REFRESHING ZERO D6 ENDDOGADGET RTS GETGADG ; A0-GADGET / A1-GADGET PTR LIST ZERO D0 ; D0-PTR # (0=NOT FOUND) / D1-GADGET MOVE.W #1,D0 GGLOOP MOVE.L (A1)+,D1 CMP.L #0,D1 BEQ.S GGNOGO CMP.L D1,A0 BEQ.S GGGOT ADDI.W #1,D0 BRA.S GGLOOP GGGOT RTS GGNOGO MOVE.W 0,D0 RTS MMOVE ; RED/GREEN/BLUE MOVES LEA PGADGETS,A5 MOVE.L #2,D5 20$: ZERO D4 MOVE.L (A5)+,A0 MOVE.L GADG.SPECIALINFO(A0),A0 MOVE.W PI.HORIZPOT(A0),D4 DIVS #$1111,D4 PUSHREG D4 DBRA D5,20$ PULLREG D3 PULLREG D2 PULLREG D1 MOVE.L VP,A0 MOVE.W ACTIVECOLOR,D0 GFXLIB SETRGB4 COLORIZEGADG ;A0-GADGET / D0-COLOR MOVE.L GADG.RENDER(A0),A0 MOVE.B D0,IMAG.PLANEONOFF(A0) RTS SIZEGADGET ;A0-GADGET / D4/D5/D6/D7-SIZE DATA MOVE.W D4,GADG.LEFTEDGE(A0) MOVE.W D5,GADG.TOPEDGE(A0) MOVE.W D6,GADG.WIDTH(A0) MOVE.W D7,GADG.HEIGHT(A0) MOVE.L GADG.RENDER(A0),A0 MOVE.W D6,IMAG.WIDTH(A0) MOVE.W D7,IMAG.HEIGHT(A0) RTS REFRESHING MOVE.L GADGETS,A0 MOVE.L WINDOW,A1 ZERA A2 INTLIB REFRESHGADGETS RTS REFRESHINTS ; DISPLAY RGB PRINTOLDAT WINDOW,REDIT,3,39 PRINTOLDAT WINDOW,GREENIT,3,49 PRINTOLDAT WINDOW,BLUEIT,3,59 ; BOX IN COLOR PALETTE MOVE.L RP,A0 LEA GADGETBORDER,A1 ZERO D0 ZERO D1 INTLIB DRAWBORDER RTS PROPADJUST MOVE.W ACTIVECOLOR,D0 MOVE.L CM,A0 GFXLIB GETRGB4 LEA PGADGETS,A5 MOVE.L #8,D4 MOVE.L #2,D5 PROP1 MOVE.L (A5)+,A0 MOVE.L GADG.SPECIALINFO(A0),A0 MOVE.W D0,D1 LSR.W D4,D1 AND.W #$000F,D1 MULS #$1111,D1 MOVE.W D1,PI.HORIZPOT(A0) SUBI.W #4,D4 DBRA D5,PROP1 RTS ; *** DATA MYWINDOWTITLE DC.B 'CPalette v1.1',0 EVENPC USAGETEXT DC.B 'USAGE: [RUN] CPalette',10,0 EVENPC OPENMESSAGE DC.B 'CPallete V1.1 from LeverEdge',10,0 EVENPC RED DC.B 'R',0 EVENPC REDIT DC.L 0 GREEN DC.B 'G',0 EVENPC GREENIT DC.L 0 BLUE DC.B 'B',0 EVENPC BLUEIT DC.L 0 NEXTG DC.B 'Next SCRN',0 EVENPC CANCELG DC.B 'Cancel',0 EVENPC WINDOW DC.L 0 SCRN DC.L 0 RP DC.L 0 VP DC.L 0 CM DC.L 0 GADGETS DCB.L 2,0 PGADGETS DCB.L 3,0 CGADGETS DCB.L 32,0 DC.L 0 LEFT DC.W 20 TOP DC.W 0 HEIGHT DC.W 90 WIDTH DC.W 300 ACTIVECOLOR DC.W 0 NUMBEROFCOLORS DC.W 4 COLORPALETTE DCB.W 32,0 GADGETBORDER DC.W 0,0, DC.B 1,0,JAM1,5 DC.L 0,0 LINES DC.W 5,11,5,32,294,32,294,11,5,11 _MYIDCMPFLAGS DC.L CLOSEWINDOW!GADGETUP!MOUSEMOVE!NEWSIZE _MYFLAGS DC.L WINDOWSIZING!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!SMART_REFRESH _MYGADGACTIV1 ;OPTIONS DC.W RELVERIFY!GADGIMMEDIATE _MYGADGFLAGS1 DC.W GADGHCOMP _MYGADGACTIV2 ;COLOR SLIDERS DC.W RELVERIFY!GADGIMMEDIATE!FOLLOWMOUSE _MYGADGFLAGS2 DC.W GADGIMAGE!GADGHCOMP!GRELWIDTH _MYGADGACTIV3 ;COLOR PALETTE DC.W RELVERIFY!GADGIMMEDIATE _MYGADGFLAGS3 DC.W GADGHCOMP!GADGIMAGE _THISFONTHITE DC.W 9 END