#ifndef _INLINE_HRGSYSTEM_H
#define _INLINE_HRGSYSTEM_H

#include <sys/cdefs.h>
#include <inline/stubs.h>

__BEGIN_DECLS

#ifndef BASE_EXT_DECL
#define BASE_EXT_DECL
#define BASE_EXT_DECL0 extern struct Library * HRGSystemBase;
#endif
#ifndef BASE_PAR_DECL
#define BASE_PAR_DECL
#define BASE_PAR_DECL0 void
#endif
#ifndef BASE_NAME
#define BASE_NAME HRGSystemBase
#endif

BASE_EXT_DECL0

/* Falsche FD/proto-Argumente !

	hrAdjustVirtSize gets 4 fd args and 3 protos.
*/

extern __inline LONG
hrAddModeInfo( BASE_PAR_DECL struct HRModeInfo * modeinfo )
{
	BASE_EXT_DECL
	register LONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRModeInfo *a0 __asm("a0") = modeinfo;
	__asm __volatile ("jsr a6@(-0xa8)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRBitMap *
hrAllocBitMap( BASE_PAR_DECL ULONG xx )
{
	BASE_EXT_DECL
	register struct HRBitMap * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register ULONG d0 __asm("d0") = xx;

	__asm __volatile ("jsr a6@(-0x3c)"
	: "=r" (_res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRColorMap *
hrAllocColorMap( BASE_PAR_DECL UWORD Colors )
{
	BASE_EXT_DECL
	register struct HRColorMap * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register UWORD d0 __asm("d0") = Colors;

	__asm __volatile ("jsr a6@(-0xf6)"
	: "=r" (_res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRHandle *
hrAllocScreen( BASE_PAR_DECL struct HRModeInfo * mode,
					UWORD width, UWORD height,
					STRPTR title, ULONG * error )
{
	BASE_EXT_DECL
	register struct HRHandle * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRModeInfo * a0 __asm("a0") = mode;
	register UWORD d0 __asm("d0") = width;
	register UWORD d1 __asm("d1") = height;
	register STRPTR a1 __asm("a1") = title;
	register ULONG * a2 __asm("a2") = error;

	__asm __volatile ("jsr a6@(-0xde)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (a1), "r" (a2)
	: "d0", "d1", "a0", "a1", "a2");
	return _res;
}
extern __inline ULONG
hrAllocSecondView( BASE_PAR_DECL struct HRHandle * hrh,
						 UWORD width, UWORD height, UBYTE mode )
{	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UWORD d0 __asm("d0") = width;
	register UWORD d1 __asm("d1") = height;
	register UBYTE d2 __asm("d2") = mode;

	__asm __volatile ("jsr a6@(-0x180)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
	: "d0", "d1", "a0", "a1", "d2");
	return _res;
}
extern __inline BOOL
hrAttachScreen( BASE_PAR_DECL struct HRHandle * hrh, struct Screen * scr )
{
	BASE_EXT_DECL
	register BOOL _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register struct Screen * a1 __asm("a1") = scr;
	__asm __volatile ("jsr a6@(-0xea)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (a1)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline BOOL
hrCalcVirtualSize( BASE_PAR_DECL struct HRModeInfo *mi,
						 UWORD *width, UWORD *height )
{	BASE_EXT_DECL
	register BOOL _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRModeInfo *a0 __asm("a0") = mi;
	register UWORD *a1 __asm("a1") = width;
	register UWORD *a2 __asm("a2") = height;

	__asm __volatile ("jsr a6@(-0xba)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (a1), "r" (a2)
	: "d0", "d1", "a0", "a1", "a2");
	return _res;
}
extern __inline ULONG
hrCheckScreenState( BASE_PAR_DECL struct Screen * scr )
{
	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct Screen  *a0 __asm("a0") = scr;
	__asm __volatile ("jsr a6@(-0x13e)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline BOOL
hrCheckVSizeMatch( BASE_PAR_DECL struct HRModeInfo * modeinfo,
						 UWORD vwidth, UWORD vheight, ULONG flags )
{	BASE_EXT_DECL
	register BOOL _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRModeInfo * a0 __asm("a0") = modeinfo;
	register UWORD d0 __asm("d0") = vwidth;
	register UWORD d1 __asm("d1") = vheight;
	register ULONG d2 __asm("d2") = flags;
	__asm __volatile ("jsr a6@(-0x138)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
	: "d0", "d1", "a0", "a1", "d2");
	return _res;
}
extern __inline void
hrClearScreen( BASE_PAR_DECL struct HRHandle * hrh )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	__asm __volatile ("jsr a6@(-0x8a)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline ULONG
hrCloseAutoScreen( BASE_PAR_DECL UBYTE *pattern )
{
	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register UBYTE *a0 __asm("a0") = pattern;
	__asm __volatile ("jsr a6@(-0x174)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrCloseScreen( BASE_PAR_DECL struct HRHandle * h_res )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = h_res;
	__asm __volatile ("jsr a6@(-0x60)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline LONG
hrDelModeInfo( BASE_PAR_DECL struct HRModeInfo * modeinfo )
{
	BASE_EXT_DECL
	register LONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRModeInfo *a0 __asm("a0") = modeinfo;
	__asm __volatile ("jsr a6@(-0xae)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrDoBanking( BASE_PAR_DECL struct HRBitMap * hrbitmap, ULONG bank )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRBitMap *a0 __asm("a0") = hrbitmap;
	register ULONG d0 __asm("d0") = bank;
	__asm __volatile ("jsr a6@(-0x24)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline ULONG
hrEazyCheckAbort( BASE_PAR_DECL struct HRHandle * h_res )
{
	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = h_res;
	__asm __volatile ("jsr a6@(-0x120)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRHandle *
hrEazyOpenScreen( BASE_PAR_DECL struct HRModeInfo * mode,
						UWORD width, UWORD height, ULONG ezmode,
						STRPTR title, ULONG * error )
{	BASE_EXT_DECL
	register struct HRHandle * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRModeInfo *a0 __asm("a0") = mode;
	register UWORD d0 __asm("d0") = width;
	register UWORD d1 __asm("d1") = height;
	register ULONG d2 __asm("d2") = ezmode;
	register STRPTR a1 __asm("a1") = title;
	register ULONG * a2 __asm("a2") = error;
	__asm __volatile ("jsr a6@(-0x12c)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (a1), "r" (a2)
	: "d0", "d1", "a0", "a1", "d2", "a2");
	return _res;
}
extern __inline struct HRHandle *
hrEazyScreenAttach( BASE_PAR_DECL struct HRHandle * hrh,
						  struct Screen * iscr,
						  ULONG ezmode, ULONG * error )
{	BASE_EXT_DECL
	register struct HRHandle * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	register struct Screen *a1 __asm("a1") = iscr;
	register ULONG d0 __asm("d0") = ezmode;
	register ULONG *a2 __asm("a2") = error;
	__asm __volatile ("jsr a6@(-0x132)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (a2)
	: "d0", "d1", "a0", "a1", "a2");
	return _res;
}
extern __inline ULONG
hrEazyWaitClose (BASE_PAR_DECL struct HRHandle * h_res, ULONG timeout)
{
	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = h_res;
	register ULONG d0 __asm("d0") = timeout;
	__asm __volatile ("jsr a6@(-0x126)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline ULONG
hrFindScreen( BASE_PAR_DECL UBYTE *pattern )
{
	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register UBYTE *a0 __asm("a0") = pattern;
	__asm __volatile ("jsr a6@(-0x17a)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrFlushBitMaps( BASE_PAR_DECL0 )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	__asm __volatile ("jsr a6@(-0x48)"
	: /* no output */
	: "r" (a6)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrFreeBitMap( BASE_PAR_DECL struct HRBitMap * bitmap )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRBitMap *a0 __asm("a0") = bitmap;
	__asm __volatile ("jsr a6@(-0x42)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrFreeColorMap( BASE_PAR_DECL struct HRColorMap *colormap )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRColorMap *a0 __asm("a0") = colormap;
	__asm __volatile ("jsr a6@(-0xfc)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrFreeScreen( BASE_PAR_DECL struct HRHandle * hrh )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	__asm __volatile ("jsr a6@(-0xe4)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrFreeSecondView( BASE_PAR_DECL struct HRHandle * hrh )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	__asm __volatile ("jsr a6@(-0x198)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline struct HRCursor *
hrGetDefaultCursor( BASE_PAR_DECL UBYTE type )
{
	BASE_EXT_DECL
	register struct HRCursor * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register UBYTE d0 __asm("d0") = type;
	__asm __volatile ("jsr a6@(-0xcc)"
	: "=r" (_res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline STRPTR
hrGetErrorText( BASE_PAR_DECL ULONG error )
{
	BASE_EXT_DECL
	register STRPTR _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register ULONG d0 __asm("d0") = error;
	__asm __volatile ("jsr a6@(-0x162)"
	: "=r" (_res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRHardwareInfo *
hrGetHardwareInfo( BASE_PAR_DECL0 )
{
	BASE_EXT_DECL
	register struct HRHardwareInfo *_res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	__asm __volatile ("jsr a6@(-0x36)"
	: "=r" (_res)
	: "r" (a6)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrGetPaletteRGBA( BASE_PAR_DECL struct HRHandle * hrh,
						HRCOL_RGBA * coltab, UBYTE start, UBYTE end )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	register HRCOL_RGBA *a1 __asm("a1") = coltab;
	register UBYTE d0 __asm("d0") = start;
	register UBYTE d1 __asm("d1") = end;
	__asm __volatile ("jsr a6@(-0x84)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline HRCOL_RGBA
hrGetRGBA( BASE_PAR_DECL struct HRHandle * hrh, UBYTE colnum )
{
	BASE_EXT_DECL
	register HRCOL_RGBA _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	register UBYTE d0 __asm("d0") = colnum;
	__asm __volatile ("jsr a6@(-0x6c)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline UBYTE *
hrLockBitMap( BASE_PAR_DECL struct HRBitMap * hrbm )
{
	BASE_EXT_DECL
	register UBYTE * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRBitMap *a0 __asm("a0") = hrbm;
	__asm __volatile ("jsr a6@(-0x4e)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRList *
hrLockHRList( BASE_PAR_DECL0 )
{
	BASE_EXT_DECL
	register struct HRList * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	__asm __volatile ("jsr a6@(-0x2a)"
	: "=r" (_res)
	: "r" (a6)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRModeInfo *
hrLockModeInfoList( BASE_PAR_DECL0 )
{
	BASE_EXT_DECL
	register struct HRModeInfo * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	__asm __volatile ("jsr a6@(-0x9c)"
	: "=r" (_res)
	: "r" (a6)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrLockScreenBase( BASE_PAR_DECL struct HRHandle * hrh )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	__asm __volatile ("jsr a6@(-0x144)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline struct HRModeInfo *
hrMatchModeInfoTagList( BASE_PAR_DECL UWORD bitmaptype,
								UWORD * width, UWORD * height,
								struct TagItem * tags )
{	BASE_EXT_DECL
	register struct HRModeInfo * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register UWORD d0 __asm("d0") = bitmaptype;
	register UWORD * a0 __asm("a0") = width;
	register UWORD * a1 __asm("a1") = height;
	register struct TagItem * a2 __asm("a2") = tags;
	__asm __volatile ("jsr a6@(-0xc0)"
	: "=r" (_res)
	: "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2)
	: "d0", "d1", "a0", "a1", "a2");
	return _res;
}

#ifndef NO_INLINE_STDARG
#define hrMatchModeInfoTags(a0, tags...) \
 ({ struct TagItem _tags[] = { tags }; hrMatchModeInfoTagList ((a0), _tags); })
#endif /* not NO_INLINE_STDARG */

extern __inline LONG
hrModifyHDCMP( BASE_PAR_DECL struct HRHandle * hrh, ULONG hdcmp )
{
	BASE_EXT_DECL
	register LONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register ULONG d0 __asm("d0") = hdcmp;
	__asm __volatile ("jsr a6@(-0x168)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrModifySpeeder( BASE_PAR_DECL struct HRHandle * hrh,
					  UWORD cspeed, UBYTE ct_reshold, UBYTE cdynamic )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	register UWORD d0 __asm("d0") = cspeed;
	register UBYTE d1 __asm("d1") = ct_reshold;
	register UBYTE d2 __asm("d2") = cdynamic;
	__asm __volatile ("jsr a6@(-0x16e)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
	: "d0", "d1", "a0", "a1", "d2");
}
extern __inline void
hrMoveSecondView( BASE_PAR_DECL struct HRHandle * hrh,
						UWORD xpos, UWORD ypos )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	register UWORD d0 __asm("d0") = xpos;
	register UWORD d1 __asm("d1") = ypos;
	__asm __volatile ("jsr a6@(-0x18c)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline UBYTE *
hrNameBitMapType( BASE_PAR_DECL UWORD bmtype, BOOL mode )
{
	BASE_EXT_DECL
	register UBYTE * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register UWORD d0 __asm("d0") = bmtype;
	register BOOL d1 __asm("d1") = mode;
	__asm __volatile ("jsr a6@(-0x156)"
	: "=r" (_res)
	: "r" (a6), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline struct HRHandle *
hrOpenScreenTagList( BASE_PAR_DECL struct TagItem * tags )
{
	BASE_EXT_DECL
	register struct HRHandle * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct TagItem *a0 __asm("a0") = tags;
	__asm __volatile ("jsr a6@(-0x5a)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}

#ifndef NO_INLINE_STDARG
#define hrOpenScreenTags(tags...) \
 ({ struct TagItem _tags[] = { tags }; hrOpenScreenTagList (_tags); })
#endif /* not NO_INLINE_STDARG */

extern __inline void
hrRemoveScreen( BASE_PAR_DECL struct HRHandle * hrh )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	__asm __volatile ("jsr a6@(-0xf0)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline struct HRModeInfo *
hrRequestModeTagList( BASE_PAR_DECL struct TagItem * tags )
{
	BASE_EXT_DECL
	register struct HRModeInfo * _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct TagItem *a0 __asm("a0") = tags;
	__asm __volatile ("jsr a6@(-0xb4)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}

#ifndef NO_INLINE_STDARG
#define hrRequestModeTags(tags...) \
 ({ struct TagItem _tags[] = { tags }; hrRequestModeTagList ( _tags); })
#endif /* not NO_INLINE_STDARG */

extern __inline void

hrResizeSecondView( BASE_PAR_DECL struct HRHandle * hrh,
							UWORD width, UWORD height )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UWORD d0 __asm("d0") = width;
	register UWORD d1 __asm("d1") = height;
	__asm __volatile ("jsr a6@(-0x186)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrScrollSecondView( BASE_PAR_DECL struct HRHandle * hrh,
						  UWORD width, UWORD height )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UWORD d0 __asm("d0") = width;
	register UWORD d1 __asm("d1") = height;
	__asm __volatile ("jsr a6@(-0x19e)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSLockBitMap( BASE_PAR_DECL struct HRBitMap * hrbm )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRBitMap * a0 __asm("a0") = hrbm;
	__asm __volatile ("jsr a6@(-0x150)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetBlanking( BASE_PAR_DECL struct HRHandle * hrh, BOOL blank )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register BOOL d0 __asm("d0") = blank;
	__asm __volatile ("jsr a6@(-0x114)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetBorderColor( BASE_PAR_DECL struct HRHandle * dfhb, ULONG col )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = dfhb;
	register ULONG d0 __asm("d0") = col;
	__asm __volatile ("jsr a6@(-0x11a)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetColorMap( BASE_PAR_DECL struct HRHandle *hrh,
									  struct HRColorMap *hrcm )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle *a0 __asm("a0") = hrh;
	register struct HRColorMap *a1 __asm("a1") = hrcm;

	__asm __volatile ("jsr a6@(-0x102)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (a1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetCursorData( BASE_PAR_DECL struct HRHandle * hrh,
										 struct HRCursor * data )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register struct HRCursor * a1 __asm("a1") = data;
	__asm __volatile ("jsr a6@(-0xc6)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (a1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetCursorPos( BASE_PAR_DECL struct HRHandle * hrh, WORD x, WORD y )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register WORD d0 __asm("d0") = x;
	register WORD d1 __asm("d1") = y;
	__asm __volatile ("jsr a6@(-0xd2)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetDispPos( BASE_PAR_DECL struct HRHandle * hrh, WORD posx, WORD posy )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register WORD d0 __asm("d0") = posx;
	register WORD d1 __asm("d1") = posy;
	__asm __volatile ("jsr a6@(-0x10e)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSetGfxAccel( BASE_PAR_DECL ULONG magic )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register ULONG d0 __asm("d0") = magic;
	__asm __volatile ("jsr a6@(-0x108)"
	: /* no output */
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline ULONG
hrSetHardwareTagList( BASE_PAR_DECL struct TagItem * tags )
{
	BASE_EXT_DECL
	register ULONG _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct TagItem *a0 __asm("a0") = tags;
	__asm __volatile ("jsr a6@(-0x1e)"
	: "=r" (_res)
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return _res;
}

#ifndef NO_INLINE_STDARG
#define hrSetHardwareTags(tags...) \
 ({ struct TagItem _tags[] = { tags }; hrSetHardwareTagList (_tags); })
#endif /* not NO_INLINE_STDARG */

extern __inline void
hrSetPaletteRGBA( BASE_PAR_DECL struct HRHandle * hrh,
										  HRCOL_RGBA * coltab,
										  UBYTE start, UBYTE end )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register HRCOL_RGBA * a1 __asm("a1") = coltab;
	register UBYTE d0 __asm("d0") = start;
	register UBYTE d1 __asm("d1") = end;
	__asm __volatile ("jsr a6@(-0x7e)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline BOOL
hrSetPresetPalette( BASE_PAR_DECL struct HRHandle * hrh, ULONG preset )
{
	BASE_EXT_DECL
	register BOOL _res __asm("d0");
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register ULONG d0 __asm("d0") = preset;
	__asm __volatile ("jsr a6@(-0x90)"
	: "=r" (_res)
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
	return _res;
}
extern __inline void
hrSetRGB32( BASE_PAR_DECL struct HRHandle * hrh,
								  UBYTE colnum, ULONG r, ULONG g, ULONG b )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UBYTE d0 __asm("d0") = colnum;
	register ULONG d1 __asm("d1") = r;
	register ULONG d2 __asm("d2") = g;
	register ULONG d3 __asm("d3") = b;
	__asm __volatile ("jsr a6@(-0x78)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
	: "d0", "d1", "a0", "a1", "d2", "d3");
}
extern __inline void
hrSetRGB8( BASE_PAR_DECL struct HRHandle * hrh,
								 UBYTE colnum, UBYTE r, UBYTE g, UBYTE b )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UBYTE d0 __asm("d0") = colnum;
	register UBYTE d1 __asm("d1") = r;
	register UBYTE d2 __asm("d2") = g;
	register UBYTE d3 __asm("d3") = b;
	__asm __volatile ("jsr a6@(-0x72)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
	: "d0", "d1", "a0", "a1", "d2", "d3");
}
extern __inline void
hrSetRGBA( BASE_PAR_DECL struct HRHandle * hrh,
								 UBYTE colnum, HRCOL_RGBA color )
{	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UBYTE d0 __asm("d0") = colnum;
	register HRCOL_RGBA d1 __asm("d1") = color;
	__asm __volatile ("jsr a6@(-0x66)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSwitchCursor( BASE_PAR_DECL struct HRHandle * hrh, UBYTE mode )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UBYTE d0 __asm("d0") = mode;
	__asm __volatile ("jsr a6@(-0xd8)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSwitchDisplay( BASE_PAR_DECL struct HRHandle * hrh, UBYTE mode )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register UBYTE d0 __asm("d0") = mode;
	__asm __volatile ("jsr a6@(-0x96)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrSwitchSecondView( BASE_PAR_DECL struct HRHandle * hrh, BOOL flag )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	register BOOL d0 __asm("d0") = flag;
	__asm __volatile ("jsr a6@(-0x192)"
	: /* no output */
	: "r" (a6), "r" (a0), "r" (d0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrUnlockBitMap( BASE_PAR_DECL struct HRBitMap * hrbm )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRBitMap * a0 __asm("a0") = hrbm;
	__asm __volatile ("jsr a6@(-0x54)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrUnlockHRList( BASE_PAR_DECL struct HRList * hrlock )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRList * a0 __asm("a0") = hrlock;
	__asm __volatile ("jsr a6@(-0x30)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrUnlockModeInfoList( BASE_PAR_DECL0 )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;

	__asm __volatile ("jsr a6@(-0xa2)"
	: /* no output */
	: "r" (a6)
	: "d0", "d1", "a0", "a1");
}
extern __inline void
hrUnlockScreenBase( BASE_PAR_DECL struct HRHandle * hrh )
{
	BASE_EXT_DECL
	register struct Library *a6 __asm("a6") = BASE_NAME;
	register struct HRHandle * a0 __asm("a0") = hrh;
	__asm __volatile ("jsr a6@(-0x14a)"
	: /* no output */
	: "r" (a6), "r" (a0)
	: "d0", "d1", "a0", "a1");
}

#undef BASE_EXT_DECL
#undef BASE_EXT_DECL0
#undef BASE_PAR_DECL
#undef BASE_PAR_DECL0
#undef BASE_NAME

__END_DECLS

#endif /* _INLINE_HRGSYSTEM_H */
