; *** WINDOWS.ASM MAKEWIN MACRO ;MACRO TO SETUP MAKEWINDOW SUBROUTINE LEA _THISTITLE,A0 ;\1 <= NULL TERMINATING TITLE MOVE.L \1,(A0) ;\2 <= LEFT MOVE.W \2,D4 ;\3 <= TOP MOVE.W \3,D5 ;\4 <= WIDTH MOVE.W \4,D6 ;\5 <= HEIGHT MOVE.W \5,D7 BSR MAKEWINDOW TST.L D0 BEQ \6 IFNC '\7','' MOVE.L D0,\7 ENDC ENDM ; NEW WINDOW STRUCTURE SUPPORT MAKEWINDOW MOVE.L #SIZE.NW,D0 ;D4 <= LEFT MOVE.L #MEMF_CLEAR!MEMF_CHIP,D1 ;D5 <= TOP SYSLIB ALLOCMEM ;D6 <= WIDTH TST.L D0 ;D7 <= HEIGHT BEQ ERR_MAKEAWINDOWMEM MOVE.L D0,NEWWINDOW MOVE.L D0,A0 MOVE.W D4,NW.LEFTEDGE(A0) MOVE.W D5,NW.TOPEDGE(A0) MOVE.W D6,NW.WIDTH(A0) MOVE.W D7,NW.HEIGHT(A0) MOVE.B #-1,NW.DETAILPEN(A0) MOVE.B #-1,NW.BLOCKPEN(A0) MOVE.L _THISIDCMP,NW.IDCMPFLAGS(A0) MOVE.L _THISFLAGS,NW.FLAGS(A0) MOVE.L _THISTITLE,NW.TITLE(A0) MOVE.W #80,NW.MINWIDTH(A0) MOVE.W #20,NW.MINHEIGHT(A0) MOVE.W #300,NW.MAXWIDTH(A0) MOVE.W #90,NW.MAXHEIGHT(A0) MOVE.W _THISTYPE,NW.TYPE(A0) MOVE.L _THISSCREEN,NW.SCREEN(A0) INTLIB OPENWINDOW TST.L D0 BEQ.S ERR_MAKEAWINDOW MOVE.L D0,_THISWINDOW MOVE.L #SIZE.NW,D0 MOVEA.L NEWWINDOW,A1 SYSLIB FREEMEM MOVE.L _THISWINDOW,D0 ZERO D1 RTS ERR_MAKEAWINDOWMEM MOVE.L #CANTALLOCMEM,D1 ENDE_MAKEAWINDOW ZERO D0 RTS ERR_MAKEAWINDOW MOVEQ.L #CANTOPENWINDOW,D1 BRA ENDE_MAKEAWINDOW IFD GFX _CLEARWINDOW ZERO D0 ;A0 <= POINTER TO WINDOW STRUCTURE _FILLWINDOW MOVE.L WW.RPORT(A0),RP SETAPEN RP MOVE.W WW.WIDTH(A0),D2 SUBI.W #4,D2 MOVE.W WW.HEIGHT(A0),D3 SUBI.W #2,D3 MOVE.W #2,D0 MOVE.W #10,D1 RECTFILL RP RTS ENDC NEWWINDOW DC.L 0 _THISWINDOW DC.L 0 _THISTYPE DC.W WBENCHSCREEN _THISTITLE DC.L 0 _THISIDCMP DC.L CLOSEWINDOW!MENUPICK!MOUSEBUTTONS!NEWSIZE!GADGETUP!GADGETDOWN _THISFLAGS DC.L ACTIVATE!WINDOWSIZING!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!SMART_REFRESH _THISSCREEN DC.L 0