type
    ViewPort_t = unknown 40,
    RastPort_t = unknown 100,
    BitMap_t = unknown 40,
    Layer_Info_t = unknown 102;

type
    Screen_t = struct {
	*Screen_t sc_NextScreen;
	*Window_t sc_FirstWindow;
	
	uint sc_LeftEdge, sc_TopEdge;
	uint sc_Width, sc_Height;
	
	int sc_MouseY, sc_MouseX;
	
	uint sc_Flags;
	
	*char sc_Title;
	*char sc_DefaultTitle;
	
	ushort sc_BarHeight, sc_BarVBorder, sc_BarHBorder,
	    sc_MenuVBorder, sc_MenuHBorder;
	ushort sc_WBorTop, sc_WBorLeft, sc_WBorRight, wc_WBorBottom;
	
	*TextAttr_t sc_Font;
	
	ViewPort_t sc_ViewPort;
	RastPort_t sc_RastPort;
	BitMap_t sc_BitMap;
	Layer_Info_t sc_LayerInfo;
	
	*Gadget_t sc_FirstGadget;
	
	ushort sc_DetailPen, sc_BlockPen;
	
	uint sc_SaveColor0;
	
	*Layer_t sc_BarLayer;
	
	*byte sc_ExtData;
	
	*byte sc_UserData;
    };

uint	
    SCREENTYPE	    = 0x000F,
    WBENCHSCREEN    = 0x0001,
    CUSTOMSCREEN    = 0x000F,

    SHOWTITLE	    = 0x0010,

    BEEPING	    = 0x0020,

    CUSTOMBITMAP    = 0x0040,

    SCREENBEHIND    = 0x0080,

    SCREENQUIET     = 0x0100;

uint
    STDSCREENHEIGHT = 65535;

type
    NewScreen_t = struct {
	uint ns_LeftEdge, ns_TopEdge, ns_Width, ns_Height, ns_Depth;
	
	ushort ns_DetailPen, ns_BlockPen;
	
	uint ns_ViewModes;
	
	uint ns_Type;
	
	*TextAttr_t ns_Font;
	
	*char ns_DefaultTitle;
	
	*Gadget_t ns_Gadgets;
	
	*BitMap_t ns_CustomBitMap;
    };

extern
    CloseScreen(*Screen_t sc)void,
    DisplayBeep(*Screen_t sc)void,
    GetScreenData(*byte buffer; ulong size, typ; *Screen_t sc)bool,
    MakeScreen(*Screen_t sc)void,
    MoveScreen(*Screen_t sc; long deltaX, deltaY)void,
    OpenScreen(*NewScreen_t newScreen)*Screen_t,
    ScreenToBack(*Screen_t sc)void,
    ScreenToFront(*Screen_t sc)void,
    ShowTitle(*Screen_t sc; ulong showIt)void;
