home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD2.img
/
d4xx
/
d498
/
cpalette
/
src
/
cpalette11.asm
next >
Wrap
Assembly Source File
|
1991-06-06
|
8KB
|
514 lines
; *** 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