unit Intuition;

INTERFACE
uses Exec, Graphics, Input, Keymap, Timer;


type
	pBorder = ^tBorder;
	tBorder = record
		LeftEdge: integer;
		TopEdge: integer;
		FrontPen: byte;
		BackPen: byte;
		DrawMode: byte;
		Count: shortint;
		XY: pinteger;
		NextBorder: pBorder;
		end;

	pMenu = ^tMenu;
	pMenuItem = ^tMenuItem;
	tMenu = record
		NextMenu: pMenu;
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		Flags: word;
		MenuName: pshortint;
		FirstItem: pMenuItem;
		JazzX: integer;
		JazzY: integer;
		BeatX: integer;
		BeatY: integer;
		end;

	pScreen = ^tScreen;
	pWindow = ^tWindow;
	pGadget = ^tGadget;
	tScreen = record
		NextScreen: pScreen;
		FirstWindow: pWindow;
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		MouseY: integer;
		MouseX: integer;
		Flags: word;
		Title: pbyte;
		DefaultTitle: pbyte;
		BarHeight: shortint;
		BarVBorder: shortint;
		BarHBorder: shortint;
		MenuVBorder: shortint;
		MenuHBorder: shortint;
		WBorTop: shortint;
		WBorLeft: shortint;
		WBorRight: shortint;
		WBorBottom: shortint;
		Font: pTextAttr;
		ViewPort: tViewPort;
		RastPort: tRastPort;
		BitMap: tBitMap;
		LayerInfo: tLayer_Info;
		FirstGadget: pGadget;
		DetailPen: byte;
		BlockPen: byte;
		SaveColor0: word;
		BarLayer: pLayer;
		ExtData: pbyte;
		UserData: pbyte;
		end;

	pPropInfo = ^tPropInfo;
	tPropInfo = record
		Flags: word;
		HorizPot: word;
		VertPot: word;
		HorizBody: word;
		VertBody: word;
		CWidth: word;
		CHeight: word;
		HPotRes: word;
		VPotRes: word;
		LeftBorder: word;
		TopBorder: word;
		end;

	pRemember = ^tRemember;
	tRemember = record
		NextRemember: pRemember;
		RememberSize: long;
		Memory: pbyte;
		end;

	pStringInfo = ^tStringInfo;
	tStringInfo = record
		Buffer: pbyte;
		UndoBuffer: pbyte;
		BufferPos: integer;
		MaxChars: integer;
		DispPos: integer;
		UndoPos: integer;
		NumChars: integer;
		DispCount: integer;
		CLeft: integer;
		CTop: integer;
		LayerPtr: pLayer;
		LongInt_: longint;
		AltKeyMap: pKeyMap;
		end;

	pIntuiMessage = ^tIntuiMessage;
	tIntuiMessage = record
		ExecMessage: tMessage;
		Class: long;
		Code: word;
		Qualifier: word;
		IAddress: pointer;
		MouseX: integer;
		MouseY: integer;
		Seconds: long;
		Micros: long;
		IDCMPWindow: pWindow;
		SpecialLink: pIntuiMessage;
		end;

	pImage = ^tImage;
	pNewWindow = ^tNewWindow;
	tNewWindow = record
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		DetailPen: shortint;
		BlockPen: shortint;
		IDCMPFlags: long;
		Flags: long;
		FirstGadget: pGadget;
		CheckMark: pImage;
		Title: pbyte;
		Screen: pScreen;
		BitMap: pBitMap;
		MinWidth: integer;
		MinHeight: integer;
		MaxWidth: word;
		MaxHeight: word;
		Type_: word;
		end;

	pRequester = ^tRequester;
	tWindow = record
		NextWindow: pWindow;
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		MouseY: integer;
		MouseX: integer;
		MinWidth: integer;
		MinHeight: integer;
		MaxWidth: word;
		MaxHeight: word;
		Flags: long;
		MenuStrip: pMenu;
		Title: pbyte;
		FirstRequest: pRequester;
		DMRequest: pRequester;
		ReqCount: integer;
		WScreen: pScreen;
		RPort: pRastPort;
		BorderLeft: shortint;
		BorderTop: shortint;
		BorderRight: shortint;
		BorderBottom: shortint;
		BorderRPort: pRastPort;
		FirstGadget: pGadget;
		Parent: pWindow;
		Descendant: pWindow;
		Pointer: pword;
		PtrHeight: shortint;
		PtrWidth: shortint;
		XOffset: shortint;
		YOffset: shortint;
		IDCMPFlags: long;
		UserPort: pMsgPort;
		WindowPort: pMsgPort;
		MessageKey: pIntuiMessage;
		DetailPen: byte;
		BlockPen: byte;
		CheckMark: pImage;
		ScreenTitle: pbyte;
		GZZMouseX: integer;
		GZZMouseY: integer;
		GZZWidth: integer;
		GZZHeight: integer;
		ExtData: pbyte;
		UserData: pshortint;
		WLayer: pLayer;
		IFont: pTextFont;
		end;

	pPreferences = ^tPreferences;
	tPreferences = record
		FontHeight: shortint;
		PrinterPort: byte;
		BaudRate: word;
		KeyRptSpeed: ttimeval;
		KeyRptDelay: ttimeval;
		DoubleClick: ttimeval;
		PointerMatrix: array [0..35] of word;
		XOffset: shortint;
		YOffset: shortint;
		color17: word;
		color18: word;
		color19: word;
		PointerTicks: word;
		color0: word;
		color1: word;
		color2: word;
		color3: word;
		ViewXOffset: shortint;
		ViewYOffset: shortint;
		ViewInitX: integer;
		ViewInitY: integer;
		EnableCLI: integer;
		PrinterType: word;
		PrinterFilename: array [0..29] of byte;
		PrintPitch: word;
		PrintQuality: word;
		PrintSpacing: word;
		PrintLeftMargin: word;
		PrintRightMargin: word;
		PrintImage: word;
		PrintAspect: word;
		PrintShade: word;
		PrintThreshold: integer;
		PaperSize: word;
		PaperLength: word;
		PaperType: word;
		SerRWBits: byte;
		SerStopBuf: byte;
		SerParShk: byte;
		LaceWB: byte;
		WorkName: array [0..29] of byte;
		RowSizeChange: shortint;
		ColumnSizeChange: shortint;
		PrintFlags: word;
		PrintMaxWidth: word;
		PrintMaxHeight: word;
		PrintDensity: byte;
		PrintXOffset: byte;
		wb_Width: word;
		wb_Height: word;
		wb_Depth: byte;
		ext_size: byte;
		end;

	pIntuitionBase = ^tIntuitionBase;
	tIntuitionBase = record
		LibNode: tLibrary;
		ViewLord: tView;
		ActiveWindow: pWindow;
		ActiveScreen: pScreen;
		FirstScreen: pScreen;
		Flags: long;
		MouseY: integer;
		MouseX: integer;
		Seconds: long;
		Micros: long;
		end;

	pIntuiText = ^tIntuiText;
	tIntuiText = record
		FrontPen: byte;
		BackPen: byte;
		DrawMode: byte;
		LeftEdge: integer;
		TopEdge: integer;
		ITextFont: pTextAttr;
		IText: pbyte;
		NextText: pIntuiText;
		end;

	tRequester = record
		OlderRequest: pRequester;
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		RelLeft: integer;
		RelTop: integer;
		ReqGadget: pGadget;
		ReqBorder: pBorder;
		ReqText: pIntuiText;
		Flags: word;
		BackFill: byte;
		ReqLayer: pLayer;
		ReqPad1: array [0..31] of byte;
		ImageBMap: pBitMap;
		RWindow: pWindow;
		ReqPad2: array [0..35] of byte;
		end;

	tImage = record
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		Depth: integer;
		ImageData: pword;
		PlanePick: byte;
		PlaneOnOff: byte;
		NextImage: pImage;
		end;

	tGadget = record
		NextGadget: pGadget;
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		Flags: word;
		Activation: word;
		GadgetType: word;
		GadgetRender: pointer;
		SelectRender: pointer;
		GadgetText: pIntuiText;
		MutualExclude: longint;
		SpecialInfo: pointer;
		GadgetID: word;
		UserData: pointer;
		end;

	pBoolInfo = ^tBoolInfo;
	tBoolInfo = record
		Flags: word;
		Mask: pword;
		Reserved: long;
		end;

	tMenuItem = record
		NextItem: pMenuItem;
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		Flags: word;
		MutualExclude: longint;
		ItemFill: pointer;
		SelectFill: pointer;
		Command: shortint;
		SubItem: pMenuItem;
		NextSelect: word;
		end;

	pNewScreen = ^tNewScreen;
	tNewScreen = record
		LeftEdge: integer;
		TopEdge: integer;
		Width: integer;
		Height: integer;
		Depth: integer;
		DetailPen: byte;
		BlockPen: byte;
		ViewModes: word;
		Type_: word;
		Font: pTextAttr;
		DefaultTitle: pbyte;
		Gadgets: pGadget;
		CustomBitMap: pBitMap;
		end;

	ppRemember = ^pRemember;


var
	IntuitionBase: pIntuitionBase;


const
	SYSREQUEST = $4000;
	BEEPING = $20;
	TOPAZ_SIXTY = 9;
	FANFOLD = 0;
	ALTRIGHT = $20;
	CHECKIT = 1;
	WBENCHWINDOW = $2000000;
	SSTOP_BITS = $F0;
	SMART_REFRESH = 0;
	SBUF_4096 = 3;
	PREDRAWN = 2;
	AUTOKNOB = 1;
	FREEVERT = 4;
	OKOK = 1;
	WBENCHCLOSE = 2;
	AUTOBACKPEN = 1;
	BOTTOMBORDER = $80;
	KNOBVMIN = 4;
	ACTIVEWINDOW = $40000;
	WINDOWACTIVE = $2000;
	SELECTUP = $E8;
	OKIMATE_20 = 9;
	GREY_SCALE2 = $1000;
	N_TRACTOR = $20;
	SHSHAKE_NONE = 2;
	SBUFSIZE_BITS = $F;
	STRINGCENTER = $200;
	CUSTOMBITMAP = $40;
	SHSHAKE_BITS = $F;
	NEWPREFS = $4000;
	SHADE_GREYSCALE = 1;
	CORRECT_BLUE = 4;
	AUTOITEXTFONT = 0;
	STDSCREENHEIGHT = $FFFFFFFF;
	REQOFFWINDOW = $1000;
	CUSTOMSCREEN = $F;
	US_LEGAL = $10;
	POINTREL = 1;
	DIAB_630 = 4;
	MENUDOWN = $69;
	HIGHBOX = $80;
	GADGET0002 = 2;
	LOWCOMMWIDTH = $10;
	W_TRACTOR = $30;
	MENUNULL = $FFFF;
	MENUTOGGLED = $4000;
	ALTLEFT = $10;
	RIGHTBORDER = $10;
	PARALLEL_PRINTER = 0;
	BAUD_110 = 0;
	US_LETTER = 0;
	GADGIMMEDIATE = 2;
	BOOLGADGET = 1;
	DISKREMOVED = $10000;
	BAUD_300 = 1;
	ITEMTEXT = 2;
	KNOBHIT = $100;
	INTEGER_SCALING = $100;
	GADGIMAGE = 4;
	MENUCANCEL = 2;
	AUTOFRONTPEN = 0;
	MIDRAWN = $100;
	OKABORT = 4;
	REFRESHBITS = $C0;
	BAUD_19200 = 6;
	AUTOTOPEDGE = 3;
	LACEWB = 1;
	AMIGARIGHT = $80;
	MAXBODY = $FFFF;
	SHADE_COLOR = 2;
	CORRECT_RGB_MASK = 7;
	CHECKWIDTH = $13;
	COMMSEQ = 4;
	NOISYREQ = 4;
	SUPER_BITMAP = $80;
	ASPECT_HORIZ = 0;
	PIXEL_DIMENSIONS = $40;
	ISDRAWN = $1000;
	WINDOWSIZING = 1;
	RMBTRAP = $10000;
	CBM_MPS1000 = 3;
	GRELHEIGHT = $40;
	MENUWAITING = 3;
	SCREENQUIET = $100;
	CLOSEWINDOW_ = $200;
	GADGETDOWN = $20;
	LONGINT_ = $800;
	GADGDISABLED = $100;
	SUPFRONT = $50;
	IMAGE_NEGATIVE = 1;
	CORRECT_RED = 1;
	FLOYD_DITHERING = $400;
	HIGHIMAGE = 0;
	ENDGADGET = 4;
	WINDOWDEPTH = 4;
	EPSON_JX_80 = 8;
	CURSORUP = $4C;
	LEFTBORDER = $20;
	WBENCHOPEN = 1;
	WINDOWCLOSE = 8;
	WUPFRONT = $40;
	MENUHOT = 1;
	SBUF_16000 = 5;
	HP_LASERJET = $B;
	PROPGADGET = 3;
	SIZEBBOTTOM = $20;
	TOPAZ_EIGHTY = 8;
	GADGETTYPE = $FC00;
	MOUSEBUTTONS = 8;
	GADGHCOMP = 0;
	NEWSIZE = 2;
	DIAB_ADV_D25 = 5;
	SPARITY_EVEN = 1;
	AMIGALEFT = $40;
	GADGHNONE = 3;
	STRINGRIGHT = $400;
	VANILLAKEY = $200000;
	HALFTONE_DITHERING = $200;
	DIMENSIONS_MASK = $F0;
	SINGLE = $80;
	SBUF_512 = 0;
	SPARITY_NONE = 0;
	HIGHFLAGS = $C0;
	WBENCHMESSAGE = $20000;
	DEADEND_ALERT = $80000000;
	SPARITY_BITS = $F0;
	AUTONEXTTEXT = 0;
	BOOLEXTEND = $2000;
	QUME_LP_20 = $A;
	ABSOLUTE_DIMENSIONS = $20;
	BORDERLESS = $800;
	ANTI_ALIAS = $800;
	WINDOWDRAG = 2;
	CUSTOM_NAME = 0;
	SHSHAKE_XON = 0;
	MENUTOGGLE = 8;
	FOLLOWMOUSE = 8;
	POINTERSIZE = $24;
	CURSORRIGHT = $4E;
	SUPER_UNUSED = $FCFC0000;
	SELECTDOWN = $68;
	SCRGADGET = $4000;
	REQGADGET = $1000;
	REPORTMOUSE_ = $200;
	SHSHAKE_RTS = 1;
	DITHERING_MASK = $600;
	SDRAGGING = $30;
	SIZEBRIGHT = $10;
	ASPECT_VERT = 1;
	HP_LASERJET_PLUS = $C;
	BOUNDED_DIMENSIONS = $10;
	NOITEM = $3F;
	INACTIVEWINDOW = $80000;
	NOCAREREFRESH = $20000;
	LW_RESERVED = 1;
	SPARITY_ODD = 2;
	GRELBOTTOM = 8;
	WDRAGGING = $20;
	LETTER = $100;
	GADGHIGHBITS = 3;
	SREAD_BITS = $F0;
	AMIGAKEYS = $C0;
	SDOWNBACK = $70;
	NOMENU = $1F;
	RAWKEY = $400;
	SCREENTYPE = $F;
	SIX_LPI = 0;
	SIZING = $10;
	REQSET = $80;
	BAUD_MIDI = 7;
	WDOWNBACK = $60;
	SCREENBEHIND = $80;
	DRAFT = 0;
	DELTAMOVE = $100000;
	IMAGE_POSITIVE = 0;
	ALPHA_P_101 = 1;
	LOWCHECKWIDTH = $D;
	PROPBORDERLESS = 8;
	INTUITICKS = $400000;
	ELITE = $400;
	MAXPOT = $FFFF;
	BAUD_1200 = 2;
	REQACTIVE = $2000;
	SIMPLE_REFRESH = $40;
	ORDERED_DITHERING = 0;
	MENUUP = $E9;
	CURSORLEFT = $4F;
	CLOSE_ = $80;
	STRGADGET = 4;
	MENUVERIFY = $2000;
	OKCANCEL = 2;
	CUSTOM = $40;
	SWRITE_BITS = $F;
	KEYCODE_B = $35;
	BAUD_2400 = 3;
	GZZGADGET = $2000;
	DIAB_C_150 = 6;
	GRELRIGHT = $10;
	ALTKEYMAP = $1000;
	GADGHBOX = 1;
	LONELYMESSAGE = $80000000;
	GRELWIDTH = $20;
	DEFERREFRESH = $8000;
	SYSGADGET = $8000;
	SIZEVERIFY = 1;
	BACKDROP = $100;
	FILENAME_SIZE = $1E;
	BAUD_4800 = 4;
	COMMWIDTH = $1B;
	WBENCHSCREEN = 1;
	SELECTED = $80;
	FREEHORIZ = 2;
	SERIAL_PRINTER = 1;
	BAUD_9600 = 5;
	AUTOLEFTEDGE = 6;
	MULTIPLY_DIMENSIONS = $80;
	KEYCODE_M = $37;
	CHECKED = $100;
	TOPBORDER = $40;
	PICA = 0;
	CURSORDOWN = $4D;
	KEYCODE_N = $36;
	RECOVERY_ALERT = 0;
	CORRECT_GREEN = 2;
	HIGHCOMP = $40;
	HIGHITEM = $2000;
	REQCLEAR = $1000;
	EPSON = 7;
	ALERT_TYPE = $80000000;
	KEYCODE_Q = $10;
	ITEMENABLED = $10;
	HIGHNONE = $C0;
	EIGHT_LPI = $200;
	BROTHER_15XL = 2;
	GADGETUP = $40;
	ACTIVATE = $1000;
	MENUSTATE = $8000;
	FINE = $800;
	NOSUB = $1F;
	RELVERIFY = 1;
	TOGGLESELECT = $100;
	REFRESHWINDOW = 4;
	WINDOWREFRESH = $1000000;
	CENTER_IMAGE = 8;
	KEYCODE_V = $34;
	MENUENABLED = 1;
	KNOBHMIN = 6;
	SBUF_1024 = 1;
	KEYCODE_X = $32;
	SBUF_8000 = 4;
	BOOLMASK = 1;
	REQVERIFY = $800;
	SHOWTITLE_ = $10;
	GADGHIMAGE = 2;
	IGNORE_DIMENSIONS = 0;
	DISKINSERTED = $8000;
	MOUSEMOVE = $10;
	GIMMEZEROZERO = $400;
	INREQUEST = $4000;
	MENUPICK = $100;
	OTHER_REFRESH = $C0;
	WINDOWTICKED = $4000000;
	SHADE_BW = 0;
	SBUF_2048 = 2;
	AUTODRAWMODE = 1;


procedure OpenIntuition;
procedure Intuition_ (ievent: pInputEvent);
function AddGadget
		(AddPtr: pWindow;
		Gadget: pGadget;
		Position: word): word;

function ClearDMRequest (Window: pWindow): boolean;
procedure ClearMenuStrip (Window: pWindow);
procedure ClearPointer (Window: pWindow);
procedure CloseScreen (Screen: pScreen);
procedure CloseWindow (Window: pWindow);
function CloseWorkBench: boolean;
procedure CurrentTime
		(Seconds: plong;
		Micros: plong);

function DisplayAlert
		(AlertNumber: long;
		String_: pbyte;
		Height: integer): boolean;

procedure DisplayBeep (Screen: pScreen);
function DoubleClick
		(sseconds: long;
		smicros: long;
		cseconds: long;
		cmicros: long): boolean;

procedure DrawBorder
		(RPort: pRastPort;
		Border: pBorder;
		LeftOffset: integer;
		TopOffset: integer);

procedure DrawImage
		(RPort: pRastPort;
		Image: pImage;
		LeftOffset: integer;
		TopOffset: integer);

procedure EndRequest
		(requester: pRequester;
		window: pWindow);

function GetDefPrefs
		(preferences: pPreferences;
		size: integer): pPreferences;

function GetPrefs
		(preferences: pPreferences;
		size: integer): pPreferences;

procedure InitRequester (req: pRequester);
function ItemAddress
		(MenuStrip: pMenu;
		MenuNumber: word): pMenuItem;

procedure ModifyIDCMP
		(Window: pWindow;
		Flags: long);

procedure ModifyProp
		(Gadget: pGadget;
		Ptr: pWindow;
		Req: pRequester;
		Flags: word;
		HPos: word;
		VPos: word;
		HBody: word;
		VBody: word);

procedure MoveScreen
		(Screen: pScreen;
		dx: integer;
		dy: integer);

procedure MoveWindow
		(window: pWindow;
		dx: integer;
		dy: integer);

procedure OffGadget
		(Gadget: pGadget;
		Ptr: pWindow;
		Req: pRequester);

procedure OffMenu
		(Window: pWindow;
		MenuNumber: word);

procedure OnGadget
		(Gadget: pGadget;
		Ptr: pWindow;
		Req: pRequester);

procedure OnMenu
		(Window: pWindow;
		MenuNumber: word);

function OpenScreen (OSargs: pNewScreen): pScreen;
function OpenWindow (OWargs: pNewWindow): pWindow;
function OpenWorkBench: boolean;
procedure PrintIText
		(rp: pRastPort;
		itext: pIntuiText;
		left: integer;
		top: integer);

procedure RefreshGadgets
		(Gadgets: pGadget;
		Ptr: pWindow;
		Req: pRequester);

function RemoveGadget
		(RemPtr: pWindow;
		Gadget: pGadget): word;

procedure ReportMouse
		(Boolean: boolean;
		Window: pWindow);

function Request
		(Requester: pRequester;
		Window: pWindow): boolean;

procedure ScreenToBack (Screen: pScreen);
procedure ScreenToFront (Screen: pScreen);
function SetDMRequest
		(Window: pWindow;
		req: pRequester): boolean;

function SetMenuStrip
		(Window: pWindow;
		Menu: pMenu): boolean;

procedure SetPointer
		(Window: pWindow;
		Pointer: pword;
		Height: integer;
		Width: integer;
		Xoffset: integer;
		Yoffset: integer);

procedure SetWindowTitles
		(window: pWindow;
		windowtitle: STRPTR;
		screentitle: STRPTR);

procedure ShowTitle
		(Screen: pScreen;
		ShowIt: boolean);

procedure SizeWindow
		(window: pWindow;
		dx: integer;
		dy: integer);

function ViewAddress: pView;
function ViewPortAddress (window: pWindow): pViewPort;
procedure WindowToBack (window: pWindow);
procedure WindowToFront (window: pWindow);
function WindowLimits
		(window: pWindow;
		minwidth: integer;
		minheight: integer;
		maxwidth: word;
		maxheight: word): boolean;

function SetPrefs
		(preferences: pPreferences;
		size: longint;
		flag: boolean): pPreferences;

function IntuiTextLength (itext: pIntuiText): longint;
function WBenchToBack: boolean;
function WBenchToFront: boolean;
function AutoRequest
		(Window: pWindow;
		Body: pIntuiText;
		PText: pIntuiText;
		NText: pIntuiText;
		PFlag: long;
		NFlag: long;
		W: integer;
		H: integer): boolean;

procedure BeginRefresh (Window: pWindow);
function BuildSysRequest
		(Window: pWindow;
		Body: pIntuiText;
		PosText: pIntuiText;
		NegText: pIntuiText;
		Flags: long;
		W: integer;
		H: integer): pWindow;

procedure EndRefresh
		(Window: pWindow;
		Complete: boolean);

procedure FreeSysRequest (Window: pWindow);
procedure MakeScreen (Screen: pScreen);
procedure RemakeDisplay;
procedure RethinkDisplay;
function AllocRemember
		(RememberKey: ppRemember;
		Size: long;
		Flags: long): pointer;

procedure AlohaWorkbench (wbport: longint);
procedure FreeRemember
		(RememberKey: ppRemember;
		ReallyForget: boolean);

function LockIBase (dontknow: long): long;
procedure UnlockIBase (IBLock: long);
function GetScreenData
		(buffer: pointer;
		size: word;
		type_: word;
		screen: pScreen): boolean;

procedure RefreshGList
		(Gadgets: pGadget;
		Ptr: pWindow;
		Req: pRequester;
		NumGad: integer);

function AddGList
		(AddPtr: pWindow;
		Gadget: pGadget;
		Position: word;
		NumGad: integer;
		Requester: pRequester): word;

function RemoveGList
		(RemPtr: pWindow;
		Gadget: pGadget;
		NumGad: integer): word;

procedure ActivateWindow (Window: pWindow);
procedure RefreshWindowFrame (Window: pWindow);
function ActivateGadget
		(Gadgets: pGadget;
		Window: pWindow;
		Req: pRequester): boolean;

procedure NewModifyProp
		(Gadget: pGadget;
		Ptr: pWindow;
		Req: pRequester;
		Flags: word;
		HPos: word;
		VPos: word;
		HBody: word;
		VBody: word;
		NumGad: integer);



function MENUNUM (n: word): integer;
function ITEMNUM (n: word): integer;
function SUBNUM (n: word): integer;
function SHIFTMENU (n: integer): word;
function SHIFTITEM (n: integer): word;
function SHIFTSUB (n: integer): word;
function FULLMENUNUM (menu, item, sub: integer): word;

function SHAKNUM (n: byte): integer;
function SPARNUM (n: byte): integer;
function SRBNUM (n: byte): integer;
function SSBNUM (n: byte): integer;
function SWBNUM (n: byte): integer;


IMPLEMENTATION
function ITEMNUM;
begin
	ITEMNUM := (n shr 5) and $3F
end;

function MENUNUM;
begin
	MENUNUM := n and $1f
end;

function SUBNUM;
begin
	SUBNUM := (n shr 11) and $1f
end;

function SHIFTITEM;
begin
	SHIFTITEM := (n and $3f) shl 5
end;

function SHIFTMENU;
begin
	SHIFTMENU := n and $1f
end;

function SHIFTSUB;
begin
	SHIFTSUB := (n and $1f) shl 11
end;

function FULLMENUNUM;
begin
	FULLMENUNUM := ((sub and $1f) shl 11) or
					((item and $3f) shl 5) or
					  (menu and $1f)
end;

function SPARNUM;
begin
	SPARNUM := n shr 4
end;

function SHAKNUM;
begin
	SHAKNUM := n and $f
end;

function SRBNUM;
begin
	SRBNUM := $8 - (n shr 4)
end;

function SSBNUM;
begin
	SSBNUM := $1 + (n shr 4)
end;

function SWBNUM;
begin
	SWBNUM := $8 - (n and $f)
end;

procedure OpenIntuition; xassembler;
asm
	movem.l	d3-d5/a2/a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$1E(a6)
	movem.l	(sp)+,d3-d5/a2/a6
end;

procedure Intuition_; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$24(a6)
	move.l	(sp)+,a6
end;

function AddGadget; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$2A(a6)
	move.w	d0,$12(sp)
	move.l	(sp)+,a6
end;

function ClearDMRequest; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$30(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$C(sp)
	move.l	(sp)+,a6
end;

procedure ClearMenuStrip; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$36(a6)
	move.l	(sp)+,a6
end;

procedure ClearPointer; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$3C(a6)
	move.l	(sp)+,a6
end;

procedure CloseScreen; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$42(a6)
	move.l	(sp)+,a6
end;

procedure CloseWindow; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$48(a6)
	move.l	(sp)+,a6
end;

function CloseWorkBench; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$4E(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,8(sp)
	move.l	(sp)+,a6
end;

procedure CurrentTime; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$54(a6)
	move.l	(sp)+,a6
end;

function DisplayAlert; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.l	(a6)+,a0
	move.l	(a6)+,d0
	move.l	IntuitionBase,a6
	jsr		-$5A(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$12(sp)
	move.l	(sp)+,a6
end;

procedure DisplayBeep; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$60(a6)
	move.l	(sp)+,a6
end;

function DoubleClick; xassembler;
asm
	movem.l	d3/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,d3
	move.l	(a6)+,d2
	move.l	(a6)+,d1
	move.l	(a6)+,d0
	move.l	IntuitionBase,a6
	jsr		-$66(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$1C(sp)
	movem.l	(sp)+,d3/a6
end;

procedure DrawBorder; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$6C(a6)
	move.l	(sp)+,a6
end;

procedure DrawImage; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$72(a6)
	move.l	(sp)+,a6
end;

procedure EndRequest; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$78(a6)
	move.l	(sp)+,a6
end;

function GetDefPrefs; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$7E(a6)
	move.l	d0,$E(sp)
	move.l	(sp)+,a6
end;

function GetPrefs; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$84(a6)
	move.l	d0,$E(sp)
	move.l	(sp)+,a6
end;

procedure InitRequester; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$8A(a6)
	move.l	(sp)+,a6
end;

function ItemAddress; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$90(a6)
	move.l	d0,$E(sp)
	move.l	(sp)+,a6
end;

procedure ModifyIDCMP; xassembler;
asm
	move.l	a6,-(sp)
	movem.l	8(sp),d0/a0
	move.l	IntuitionBase,a6
	jsr		-$96(a6)
	move.l	(sp)+,a6
end;

procedure ModifyProp; xassembler;
asm
	movem.l	d3-d4/a2/a6,-(sp)
	lea		$14(sp),a6
	move.w	(a6)+,d4
	move.w	(a6)+,d3
	move.w	(a6)+,d2
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$9C(a6)
	movem.l	(sp)+,d3-d4/a2/a6
end;

procedure MoveScreen; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$A2(a6)
	move.l	(sp)+,a6
end;

procedure MoveWindow; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$A8(a6)
	move.l	(sp)+,a6
end;

procedure OffGadget; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$AE(a6)
	movem.l	(sp)+,a2/a6
end;

procedure OffMenu; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$B4(a6)
	move.l	(sp)+,a6
end;

procedure OnGadget; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$BA(a6)
	movem.l	(sp)+,a2/a6
end;

procedure OnMenu; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$C0(a6)
	move.l	(sp)+,a6
end;

function OpenScreen; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$C6(a6)
	move.l	d0,$C(sp)
	move.l	(sp)+,a6
end;

function OpenWindow; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$CC(a6)
	move.l	d0,$C(sp)
	move.l	(sp)+,a6
end;

function OpenWorkBench; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$D2(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,8(sp)
	move.l	(sp)+,a6
end;

procedure PrintIText; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$D8(a6)
	move.l	(sp)+,a6
end;

procedure RefreshGadgets; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$DE(a6)
	movem.l	(sp)+,a2/a6
end;

function RemoveGadget; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$E4(a6)
	move.w	d0,$10(sp)
	move.l	(sp)+,a6
end;

procedure ReportMouse; xassembler;
asm
	move.l	a6,-(sp)
	moveq	#0,d0
	lea		8(sp),a6
	move.l	(a6)+,a0
	move.b	(a6)+,d0
	move.l	IntuitionBase,a6
	jsr		-$EA(a6)
	move.l	(sp)+,a6
end;

function Request; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$F0(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$10(sp)
	move.l	(sp)+,a6
end;

procedure ScreenToBack; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$F6(a6)
	move.l	(sp)+,a6
end;

procedure ScreenToFront; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$FC(a6)
	move.l	(sp)+,a6
end;

function SetDMRequest; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$102(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$10(sp)
	move.l	(sp)+,a6
end;

function SetMenuStrip; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$108(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$10(sp)
	move.l	(sp)+,a6
end;

procedure SetPointer; xassembler;
asm
	movem.l	d3/a6,-(sp)
	lea		$C(sp),a6
	move.w	(a6)+,d3
	move.w	(a6)+,d2
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$10E(a6)
	movem.l	(sp)+,d3/a6
end;

procedure SetWindowTitles; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$114(a6)
	movem.l	(sp)+,a2/a6
end;

procedure ShowTitle; xassembler;
asm
	move.l	a6,-(sp)
	moveq	#0,d0
	move.b	8(sp),d0
	move.l	$A(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$11A(a6)
	move.l	(sp)+,a6
end;

procedure SizeWindow; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$120(a6)
	move.l	(sp)+,a6
end;

function ViewAddress; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$126(a6)
	move.l	d0,8(sp)
	move.l	(sp)+,a6
end;

function ViewPortAddress; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$12C(a6)
	move.l	d0,$C(sp)
	move.l	(sp)+,a6
end;

procedure WindowToBack; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$132(a6)
	move.l	(sp)+,a6
end;

procedure WindowToFront; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$138(a6)
	move.l	(sp)+,a6
end;

function WindowLimits; xassembler;
asm
	movem.l	d3/a6,-(sp)
	lea		$C(sp),a6
	move.w	(a6)+,d3
	move.w	(a6)+,d2
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$13E(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$18(sp)
	movem.l	(sp)+,d3/a6
end;

function SetPrefs; xassembler;
asm
	move.l	a6,-(sp)
	moveq	#0,d1
	move.b	8(sp),d1
	movem.l	$A(sp),d0/a0
	move.l	IntuitionBase,a6
	jsr		-$144(a6)
	move.l	d0,$12(sp)
	move.l	(sp)+,a6
end;

function IntuiTextLength; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$14A(a6)
	move.l	d0,$C(sp)
	move.l	(sp)+,a6
end;

function WBenchToBack; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$150(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,8(sp)
	move.l	(sp)+,a6
end;

function WBenchToFront; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$156(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,8(sp)
	move.l	(sp)+,a6
end;

function AutoRequest; xassembler;
asm
	movem.l	d3/a2-a3/a6,-(sp)
	lea		$14(sp),a6
	move.w	(a6)+,d3
	move.w	(a6)+,d2
	move.l	(a6)+,d1
	move.l	(a6)+,d0
	move.l	(a6)+,a3
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$15C(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$30(sp)
	movem.l	(sp)+,d3/a2-a3/a6
end;

procedure BeginRefresh; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$162(a6)
	move.l	(sp)+,a6
end;

function BuildSysRequest; xassembler;
asm
	movem.l	a2-a3/a6,-(sp)
	lea		$10(sp),a6
	move.w	(a6)+,d2
	move.w	(a6)+,d1
	move.l	(a6)+,d0
	move.l	(a6)+,a3
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$168(a6)
	move.l	d0,$28(sp)
	movem.l	(sp)+,a2-a3/a6
end;

procedure EndRefresh; xassembler;
asm
	move.l	a6,-(sp)
	moveq	#0,d0
	move.b	8(sp),d0
	move.l	$A(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$16E(a6)
	move.l	(sp)+,a6
end;

procedure FreeSysRequest; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$174(a6)
	move.l	(sp)+,a6
end;

procedure MakeScreen; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$17A(a6)
	move.l	(sp)+,a6
end;

procedure RemakeDisplay; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$180(a6)
	move.l	(sp)+,a6
end;

procedure RethinkDisplay; xassembler;
asm
	move.l	a6,-(sp)
	move.l	IntuitionBase,a6
	jsr		-$186(a6)
	move.l	(sp)+,a6
end;

function AllocRemember; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,d1
	move.l	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$18C(a6)
	move.l	d0,$14(sp)
	move.l	(sp)+,a6
end;

procedure AlohaWorkbench; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$192(a6)
	move.l	(sp)+,a6
end;

procedure FreeRemember; xassembler;
asm
	move.l	a6,-(sp)
	moveq	#0,d0
	move.b	8(sp),d0
	move.l	$A(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$198(a6)
	move.l	(sp)+,a6
end;

function LockIBase; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),d0
	move.l	IntuitionBase,a6
	jsr		-$19E(a6)
	move.l	d0,$C(sp)
	move.l	(sp)+,a6
end;

procedure UnlockIBase; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$1A4(a6)
	move.l	(sp)+,a6
end;

function GetScreenData; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.l	(a6)+,a1
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$1AA(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$14(sp)
	move.l	(sp)+,a6
end;

procedure RefreshGList; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$1B0(a6)
	movem.l	(sp)+,a2/a6
end;

function AddGList; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$1B6(a6)
	move.w	d0,$1C(sp)
	movem.l	(sp)+,a2/a6
end;

function RemoveGList; xassembler;
asm
	move.l	a6,-(sp)
	lea		8(sp),a6
	move.w	(a6)+,d0
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$1BC(a6)
	move.w	d0,$12(sp)
	move.l	(sp)+,a6
end;

procedure ActivateWindow; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$1C2(a6)
	move.l	(sp)+,a6
end;

procedure RefreshWindowFrame; xassembler;
asm
	move.l	a6,-(sp)
	move.l	8(sp),a0
	move.l	IntuitionBase,a6
	jsr		-$1C8(a6)
	move.l	(sp)+,a6
end;

function ActivateGadget; xassembler;
asm
	movem.l	a2/a6,-(sp)
	lea		$C(sp),a6
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$1CE(a6)
	tst.l	d0
	sne		d0
	neg.b	d0
	move.b	d0,$18(sp)
	movem.l	(sp)+,a2/a6
end;

procedure NewModifyProp; xassembler;
asm
	movem.l	d3-d5/a2/a6,-(sp)
	lea		$18(sp),a6
	move.w	(a6)+,d5
	move.w	(a6)+,d4
	move.w	(a6)+,d3
	move.w	(a6)+,d2
	move.w	(a6)+,d1
	move.w	(a6)+,d0
	move.l	(a6)+,a2
	move.l	(a6)+,a1
	move.l	(a6)+,a0
	move.l	IntuitionBase,a6
	jsr		-$1D4(a6)
	movem.l	(sp)+,d3-d5/a2/a6
end;

end.
