; *** 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
