'********************************
'*                              *
'* Open Window under Intuition  *
'* ---------------------------- *
'*                              *
'* Author : Wolf-Gideon Bleek   *
'* Date   : May 22 '88          *
'* Version: 1.1                 *
'* Operating system:V1.2 & V1.3 *
'*                              *
'********************************
  OPTION BASE 1
  DEFLNG a-z
' Bmaps located on disk named T&T2,yours may differ
  
  LIBRARY "T&T2:bmaps/exec.library"
  DECLARE FUNCTION AllocMem LIBRARY
  LIBRARY "T&T2:bmaps/intuition.library"
  DECLARE FUNCTION OpenWindow LIBRARY
  
  MList      = 0&
  
MainProgram:
  GOSUB OpenAll
   
  ' Main part
  FOR i = 1 TO 10000 : NEXT i
  
  GOSUB CloseAll
  
END

OpenAll:
  Title$  = "My first BASIC-Window"
  WinDef NWindow, 100, 50, 460, 150, 32+64+512&, 15&+4096&, 0&, Title$
  WinBase = OpenWindow(NWindow)
  IF WinBase = 0 THEN ERROR 7
RETURN
CloseAll:
  CloseWindow(WinBase)
  CALL UnDef
RETURN
'--------------------------------------------
SUB DefChip(Buffer, Size) STATIC
 SHARED MList
  Size=Size+8
  Buffer=AllocMem(Size,65538&)
  IF Buffer>0 THEN
    POKEL Buffer,MList
    POKEL Buffer+4,Size
    MList=Buffer
    Buffer=Buffer+8
  ELSE
    ERROR 7
  END IF
END SUB
SUB UnDef STATIC
 SHARED MList
undef.loop:
  IF MList>0 THEN
    Address = PEEKL(MList)
    ListSize = PEEKL(MList+4)
    FreeMem MList, ListSize
    MList   = Address
    GOTO undef.loop
  END IF
END SUB       
SUB WinDef(bs, x%, y%, b%, h%, IDCMP, f, gad, T$) STATIC
  Size = 48+LEN(T$)+1
  DefChip bs,Size
  POKEW bs   ,x%      ' Left Corner
  POKEW bs+ 2,y%      ' Top Corner
  POKEW bs+ 4,b%      ' Width
  POKEW bs+ 6,h%      ' Height (careful-don't make it too large)
  POKEW bs+ 8,65535&  ' Detail- BlockPen
  POKEL bs+10,IDCMP   ' IDCMP Flags
  POKEL bs+14,f       ' Flags
  POKEL bs+18,gad     ' First Gadget
  POKEL bs+26,bs+48   ' Title
  POKEW bs+46,1       ' ScreenType 
  FOR i%=1 TO LEN(T$)
     POKE bs+47+i%,ASC(MID$(T$,i%,1))
  NEXT
END SUB
