; *** GADGETS.ASM ; GADGET SUPPORT ROUTINES FOR BOOLEAN, STRING, AND PROPORTIONAL TYPES SIZE.BBORDER EQU 40 BB.BUTTONLINES EQU 16 ; NEWPGADG MACRO NEWSGADG MACRO LEA \1,A0 LEA \2,A1 MOVE.W #\3,D4 MOVE.W #\4,D5 BSR MAKEASTRINGADGET MOVE.L \5,A0 MOVE.L D0,A1 BSR ADDNEWGADG ENDM NEWBGADG MACRO LEA \1,A1 MOVE.W #\2,D4 MOVE.W #\3,D5 BSR MAKEAGADGET MOVE.L \4,A0 MOVE.L D0,A1 BSR ADDNEWGADG ENDM ADDNEWGADG ZERO D0 MOVE.W #-1,D0 INTLIB ADDGADGET MOVE.L _THISGADGET,D0 RTS MAKEAGADGET MOVE.L A1,_THISGTEXT REMEMBERPUBMEM REMEMBERKEY,#SIZE.BBORDER TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,_THISBBORDER TST.L _THISGTEXT BNE.S GADGIT ; SKIP FOR NO-TEXT BOOLEANS ZERO D0 MOVE.L D0,_THISGITEXT BRA.S AFTERIT GADGIT REMEMBERPUBMEM REMEMBERKEY,#SIZE.IT TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,_THISGITEXT MOVE.L D0,A0 MOVE.L _THISGTEXT,A1 BSR CREATETEXT INTLIB INTUITEXTLENGTH MOVE.L D0,D6 ADDI.W #4,D6 BCLR #0,D6 MOVE.W _THISFONTHITE,D7 ADDI.W #4,D7 BCLR #0,D7 AFTERIT MOVEA.L _THISBBORDER,A0 ADDA.L #SIZE.BORD,A0 MOVE.W D6,4(A0) MOVE.W D6,8(A0) MOVE.W D7,10(A0) MOVE.W D7,14(A0) MOVE.W #-1,D0 CMP.W #STRGADGET,_THISGTYPE BNE.S BORDERMINONE MOVE.W #-5,D0 BORDERMINONE MOVE.W D0,2(A0) MOVE.W D0,6(A0) MOVE.W D0,18(A0) MOVE.W D0,(A0) MOVE.W D0,12(A0) MOVE.W D0,16(A0) MOVEA.L _THISBBORDER,A1 MOVE.L A0,BORD.XY(A1) MOVE.B #JAM1,BORD.DRAWMODE(A1) MOVE.B #1,BORD.FRONTPEN(A1) MOVE.B #5,BORD.COUNT(A1) _JUSTTHEGADGET REMEMBERCHIPMEM REMEMBERKEY,#SIZE.GADG TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,_THISGADGET MOVE.L D0,A0 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.W _THISGTYPE,GADG.TYPE(A0) MOVE.W _THISGACTIV,GADG.ACTIVATION(A0) MOVE.L _THISGITEXT,GADG.TEXT(A0) MOVE.W _THISGFLAGS,GADG.FLAGS(A0) MOVE.L _THISBBORDER,GADG.RENDER(A0) ZERO D1 MOVE.L _THISGADGET,D0 RTS ERR_MAKEAGADGETMEM MOVE.L #CANTALLOCMEM,D1 ZERO D0 RTS ERR_MAKEAGADGET MOVE.L #CANTALLOCMEM,D1 ZERO D0 RTS MAKEASTRINGADGET MOVE.W #STRGADGET,_THISGTYPE MOVE.L A0,_THISGBUFFER MOVE.L A1,_THISGUNDOBUF REMEMBERPUBMEM REMEMBERKEY,#SIZE.SI TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,A0 MOVE.L D0,_THISGSTRINGINFO MOVE.L _THISGBUFFER,SI.BUFFER(A0) MOVE.L _THISGUNDOBUF,SI.UNDOBUFFER(A0) MOVE.W #1,SI.BUFFERPOS(A0) MOVE.W #80,SI.MAXCHARS(A0) LEA SIZESTRING,A1 BSR MAKEAGADGET MOVE.L _THISGSTRINGINFO,GADG.SPECIALINFO(A0) MOVE.W #BOOLGADGET,_THISGTYPE RTS MAKEAPROPGADGET MOVE.W #PROPGADGET,_THISGTYPE REMEMBERCHIPMEM REMEMBERKEY,#SIZE.IMAG TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,_THISGIMAGE REMEMBERCHIPMEM REMEMBERKEY,#SIZE.PI TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,A0 MOVE.L D0,_THISGPROPINFO MOVE.W #AUTOKNOB!FREEHORIZ,PI.FLAGS(A0) CMP.B #'V',D3 BNE.S ITSHORIZONTAL MOVE.W #$8000,PI.VERTPOT(A0) MOVE.W #$1000,PI.VERTBODY(A0) MOVE.W #AUTOKNOB!FREEVERT,PI.FLAGS(A0) ITSHORIZONTAL MOVE.W #$8000,PI.HORIZPOT(A0) MOVE.W #$1000,PI.HORIZBODY(A0) BSR _JUSTTHEGADGET MOVE.L _THISGADGET,D0 ZERO D1 MOVE.L _THISGIMAGE,GADG.RENDER(A0) MOVE.L #0,GADG.TEXT(A0) MOVE.L _THISGPROPINFO,GADG.SPECIALINFO(A0) ENDMAKEPROPGADG MOVE.W #BOOLGADGET,_THISGTYPE RTS MAKEAGADGETC REMEMBERCHIPMEM REMEMBERKEY,#SIZE.IMAG TST.L D0 BEQ ERR_MAKEAGADGETMEM MOVE.L D0,_THISGIMAGE MOVE.L D0,A0 MOVE.W D6,IMAG.WIDTH(A0) MOVE.W D7,IMAG.HEIGHT(A0) BSR _JUSTTHEGADGET MOVE.L _THISGADGET,D0 ZERO D1 MOVE.L _THISGIMAGE,GADG.RENDER(A0) MOVE.L #0,GADG.TEXT(A0) RTS _THISGADGET DC.L 0 _THISGACTIV DC.W STRINGCENTER!RELVERIFY!GADGIMMEDIATE _THISGFLAGS DC.W GADGHCOMP _THISGTYPE DC.W BOOLGADGET _THISGTEXT DC.L 0 _THISGITEXT DC.L 0 _THISBBORDER DC.L 0 SIZESTRING DC.B 0 EVENPC _THISGSTRINGINFO DC.L 0 _THISGBUFFER DC.L 0 _THISGUNDOBUF DC.L 0 _THISGIMAGE DC.L 0 _THISGPROPINFO DC.L 0