	; *** Compulsory in the user program

	XDEF	_loader			; the user entrypoint
	XDEF	_user_pbuffer		; the user relocatable routines
	XDEF	_general_pbuffer	; the HDStartup relocatable routines

	XDEF	_UserPatchRoutines	; label for user reloc routines
	XDEF	_EndUserPatchRoutines	; label for end of user reloc routines

	; *** Non-relocated routines. call normally with JSR
	; *** NEVER call them with JSRGEN: it would crash immediately.

	XREF	_CloseAll		; quit program (while the OS is up)
	XREF	_CloseAllQuiet		; quit program and close window
	XREF	_LoadDisks		; load diskfiles
	XREF	_LoadDiskFromName	; load a disk
	XREF	_LoadDisksIndex		; load a disk, starting from number D0
	XREF	_LoadFiles		; load files in the directory
	XREF	_LoadSmallFiles		; load small files (<D0)
	XREF	_Kick37Test		; check if Kickstart version <37
	XREF	_KickVerTest		; check against a given kick version
	XREF	_GetMemFlag		; returns MEMF_REVERSE flag isf available
	XREF	_FlushCachesSys		; flush caches using CacheClearU()
	XREF	_Enhance		; restores everything (caches, display)
	XREF	_Degrade		; degrades everything
	XREF	_DegradeCpu		; degrades only CPU related stuff
	XREF	_DegradeGfx		; degrades only GFX related stuff
	XREF	_TransfRoutines		; relocates routines on top of memory
	XREF	_SaveOSData		; saves OS data (mem,CIAs,custom...)
	XREF	_FreezeAll		; clears all ints, dma...
	XREF	_Display		; display a string pointed by A1
	XREF	_LoadRNCFile		; load a RNC file and unpack it
	XREF	_AllocExtMem		; allocate extension memory
	XREF	_Test1MBChip		; check against 1MB of chip (at least)
	XREF	_Test2MBChip		; check against 2MB of chip
	XREF	_Reboot			; reboots :-)
	XREF	_WaitReturn		; waits for the user to press return key

	; *** Relocated routines. always call with JSRGEN (see macros.i)
	; *** from user program. It works with JSR but if the OS is killed
	; *** JSRGEN is safer as it jumps in the allocated block
	; *** which is in the top of memory (MEMF_REVERSE) if kick > 38
	; *** fast memory is used when found, else chipmem is used
	; ***
	; *** I also included a short description of the routines
	; *** Please read the autodocs to get more details

	XREF	_GetSR			; returns SR in D0
	XREF	_GoECS			; resets sprite aspect/playfield/goes 15KHz
	XREF	_GetAttnFlags		; gets system attnflags, at any time
	XREF	_ResetDisplay		; switches in PAL or NTSC if specified
	XREF	_ResetSprites		; resets sprite aspect
	XREF	_BlackScreen		; sets all color registers to black
	XREF	_BlockFastMem		; allocates all fastmem. Do not use :-)
	XREF	_InitTrackDisk		; returns a fake disk IO pointer in A1
	XREF	_TrackLoadFast		; simulates DoIO()
	XREF	_TrackLoadHD		; does not work. Do not use
	XREF	_SetTDUnit		; sets drive unit in D0 (for DoIO emulation)
	XREF	_SetDisk		; sets current disk (useful with HDLOAD)
	XREF	_ReadRobSectorsFast	; reads sectors, rob northen interface
	XREF	_ReadFile		; reads file, rob northen interface, from RAM or HD
	XREF	_ReadFileFast		; reads file, rob northen interface, from RAM only
	XREF	_ReadFileHD		; reads file, rob northen interface, from HD only
	XREF	_WriteFileHD		; writes file on HD during game
	XREF	_DeleteFileHD		; deletes file from HD during game (careful :-))
	XREF	_ATNDecrunch		; decrunches ATN! files/blocks
	XREF	_RNCDecrunch		; decrunches RNC\01 files/blocks
	XREF	_FungusDecrunch		; decrunches Gremlins packer files/blocks
	XREF	_RNCDecrunchEncrypted	; decrunches RNC/01 encrypted files/blocks
	XREF	_RNCLength		; gives the length of decunched RNC file
	XREF	_FlushCachesHard	; flushes all caches
	XREF	_WaitBlit		; waits till blitter operation is complete
	XREF	_BeamDelay		; waits using $DFF006 register
	XREF	_TestFile		; check if a file is here
	XREF	_PatchExceptions	; install JOTD exception handler (done in SaveOSData)
	XREF	_StrcmpAsm		; compares 2 strings (null termintated). Not case sensitive
	XREF	_StrcpyAsm		; copies a string (null terminated)
	XREF	_StrlenAsm		; returns length of a string (ends with null)
	XREF	_ToUpperAsm		; converts a string in upper case
	XREF	_WaitMouse		; waits for LMB to be pressed. Colors fill the screen
	XREF	_WaitMouseInterrupt	; same thing but interrupts are enabled (HRTMon)
	XREF	_GetDiskPointer		; gets start of the specified diskfile (D0)
	XREF	_CheckAGA		; checks if the computer is AGA
	XREF	_InGameExit		; exits to WB from game
	XREF	_SaveCustomRegs		; saves important custom registers
	XREF	_RestoreCustomRegs	; restores them
	XREF	_SaveCIARegs		; saves all CIA info possible and LED state
	XREF	_RestoreCIARegs		; restores them
	XREF	_InGameOSCall		; call a user OS routine during the game
	XREF	_SetExitRoutine		; to call a user routine just before exit

	; *** exported variables

	XREF	_GeneralPatchRoutines	; HD Startup reloc routines
	XREF	reloc_userstack		; old user stack

	; *** system

	XREF	_DosBase		; dos.library base
	XREF	_SysBase		; exec.library base
	XREF	_GfxBase		; graphics.library base
