****************************************************************************
***********           Track 2 File V1.22 by Wanted Team          ***********
***********                Release date 28.10.99.                ***********
****************************************************************************

    include /system.gs
    include 'libraries/gadtools.i'
    include 'libraries/reqtools.i'
    include 'libraries/xfdmaster.i'
;    include 'misc/devpacmacros.i'

;    OPT o+

CP		=	0
GP		=	1
JR		=	2
SA		=	3
SC		=	4
SF		=	5
SP		=	6
SQ		=	7
AM1		=	8
AM2		=	9
LOB		=	10
RLE		=	11
SB		=	12
id89A8		=	13
id89AA		=	14
id89AB		=	15
id89AC		=	16
id89AD		=	17
id9999		=	18
id9AAA		=	19
id9ABB		=	20
id9ACC		=	21
id9ACD		=	22
id18051973	=	23
id0815		=	24
GC		=	25
ACE		=	26
ALC0		=	27
ARP3		=	28
ARPF		=	29
ATM5		=	30
ATN		=	31
ATOM		=	0
Ace?		=	1
ArcD		=	2
ArcR		=	3
arcD		=	4
BDPI		=	5
BH72		=	6
BH73		=	7
BHC3		=	8
BOND		=	9
CHFC		=	10
CHFI		=	11
CMP1		=	12
CrM		=	13
CrM2		=	14
Crm		=	15
Crm2		=	16
CRND		=	17
CRUa		=	18
CRUN		=	19
CSFX		=	20
D815		=	21
DHp2		=	22
DOUG		=	23
Dtpk		=	24
Dupa		=	25
EDAM		=	26
ESL		=	27
FB		=	28
FIRE		=	29
FLT		=	30
FRED		=	31
GC2		=	0
GC3		=	1
GP11		=	2
HAL		=	3
HUF		=	4
ICE		=	5
IFT?		=	6
IMP		=	7
Ice		=	8
KDUB		=	9
LR88		=	10
LSD		=	11
LZDA		=	12
LZSS		=	13
LZWH		=	14
LeCr		=	15
MASM		=	16
MASS		=	17
MD12		=	18
MICK		=	19
MTP1		=	20
MTPS		=	21
MWC1		=	22
PAC1		=	23
PACKV12		=	24
PARA		=	25
PP20		=	26
PaCK		=	27
PaK0		=	28
pack		=	29
RNC0		=	30
RNC1		=	31
RNC2		=	0
S300		=	1
S310		=	2
S400		=	3
S401		=	4
S403		=	5
S404		=	6
SFCD		=	7
SFHD		=	8
SLAM		=	9
SPv3		=	10
SSUR		=	11
TITS		=	12
TPWM		=	13
TSM		=	14
Taz		=	15
VDCO		=	16
VOL1		=	17
ViS1		=	18
ViSL		=	19
Vic2		=	20
WJSD		=	21
XP10		=	22
XPKF		=	23
XPKZ		=	24
XX50		=	25
xVdg		=	26
xXxX		=	27

;	STRUCTURE Variable,0
;	APTR	_DosBase
;	ULONG	_IntBase
;	STRUCT	Buffer,256
;
;	LABEL	vars_SIZEOF


DosBase		=	0*4
IntBase		=	1*4
GrfxBase	=	2*4
GadBase		=	3*4
ReqBase		=	4*4
XfdBase		=	5*4
Windows		=	6*4
WindowPrefs	=	7*4
FileReqL	=	8*4
FileReqS	=	9*4
FileList	=	10*4
FileListReq	=	11*4
FileListAdd	=	12*4
OriginalSize	=	13*4
PackedSize	=	14*4
StartFileID	=	15*4
EndFile		=	16*4
AllocStart	=	17*4
AllocEnd	=	18*4
AllocLength	=	19*4
FileHandles	=	20*4
LockZap		=	21*4
Scrl		=	22*4
ErrorTrack	=	23*4
SizeVar		=	24*4
Scr		=	25*4
Visual		=	26*4
IncVar		=	27*4
DecrVar		=	28*4
SkipVar		=	29*4
SetNameZero	=	30*4
DriveNum	=	31*4
DriveNum2	=	32*4
DisplayID	=	33*4
AboutPacker	=	34*4
Enable1		=	35*4
Enable2		=	36*4
Enable3		=	37*4
Enable4		=	38*4
Enable5		=	39*4
IncFileName	=	40*4
DecrFile	=	41*4
SkipFile	=	42*4
DeepSearch	=	43*4
FormatNumbers	=	44*4
DriveNumbers	=	44*4+2
RNC_old		=	45*4
Reserved	=	46*4
Reserved2	=	47*4
DeepVar		=	47*4+2
DiskVar		=	48*4+2
StartFileID2	=	49*4+2
DecrError	=	50*4+2
NextID		=	51*4+2
IncCancel	=	52*4+2
DecrCancel	=	53*4+2
SkipCancel	=	54*4+2
DeepCancel	=	55*4+2
DriveCancel	=	56*4+2
WindowLock	=	57*4+2
BufTextNames	=	58*4+2
BufTextNodes	=	59*4+2
FormatNum	=	60*4+2
FormatCancel	=	61*4+2
RNCCancel	=	62*4+2
BufOldRNC	=	63*4+2

Exec		=	4

;exec.library
Forbid		=	-132
Permit		=	-138
AllocMem	=	-198
FreeMem		=	-210
AvailMem	=	-216
FindTask	=	-294
AddPort		=	-354
RemPort		=	-360
GetMsg		=	-372
ReplyMsg	=	-378
WaitPort	=	-384
CloseLibrary	=	-414
SetFunction	=	-420
OpenDevice	=	-444
CloseDevice	=	-450
DoIO		=	-456
OpenResource	=	-498
RawDoFmt	=	-522
OpenLibrary	=	-552
OpenWindowTagList=	-606
OpenScreenTagList=	-612

;dos.library
Open		=	-30
Close		=	-36
Read		=	-42
Write		=	-48
Lock		=	-84
UnLock		=	-90
Examine		=	-102
IoErr		=	-132
SetComment	=	-180
SetIoErr	=	-462
Fault		=	-468
PrintFault	=	-474

;intuition.library
ClearPointer	=	-60
CloseWindow	=	-72
DisplayAlert	=	-90
ModifyIDCMP	=	-150
OffGadget	=	-174
OnGadget	=	-186
OpenWindow	=	-204
SetWindowTitles	=	-276
ActivateGadget	=	-462
LockPubScreen	=	-510
UnlockPubScreen	=	-516
EasyRequestArgs	=	-588

;graphics.library
Text		=	-60
SetFont		=	-66
OpenFont	=	-72
Move		=	-240
Draw		=	-246
RectFill	=	-306
SetAPen		=	-342
SetBPen		=	-348
SetDrMd		=	-354
ScrollRaster	=	-396

;gadtools.library
CreateGadgets	=	-30
FreeGadgets	=	-36
GT_SetGadgetAttrsA=	-42
GT_GetIMsg	=	-72
GT_ReplyIMsg	=	-78
GT_RefreshWindow=	-84
GT_BeginRefresh	=	-90
GT_EndRefresh	=	-96
CreateContext	=	-114
DrawBevelBoxA	=	-120
GetVisualInfoA	=	-126
FreeVisualInfo	=	-132

;reqtools.library
rtAllocRequestA	=	-30
rtFreeRequest	=	-36
rtChangeReqAttrA=	-48
rtFileRequestA	=	-54
rtFreeFileList	=	-60
rtEZRequestA	=	-66
rtGetStringA	=	-72
rtSetWaitPointer=	-114
rtLockWindow	=	-156
rtUnlockWindow	=	-162

;xfdmaster.library
xfdAllocBufferInfo=	-30
xfdFreeBufferInfo=	-36
xfdRecogBuffer	=	-54
xfdDecrunchBuffer=	-60
xfdGetErrorText	=	-78
xfdAllocObject	=	-114
xfdFreeObject	=	-120
xfdScanData	=	-138
xfdFreeScanList	=	-144
xfdInitScanHook	=	-156

WindowRastPort	=	$32
IDCMP		=	$56

GadWidth	=	100
GadHeight	=	24
GadNaStyk	=	20
GadLeftEdge	=	(640-(GadWidth*5)-(4*GadNaStyk))/2
GadTopEdge	=	31

	Section Main_Code,Code

	bra.b	Run

	dc.b	'$VER: Track2File V1.22 beta Release date 27.10.99.',0
	CNOP 0,2

Run:
	movem.l	d0/a0,-(sp)		save initial values
	lea	returnMsg(pc),a1
	clr.l	(a1)

	sub.l	a1,a1
	move.l	Exec.w,a6
	jsr	FindTask(a6)		find us
	move.l	d0,a4

	tst.l	pr_CLI(a4)
	beq.s	fromWorkbench

* we were called from the CLI
	movem.l	(sp)+,d0/a0		restore regs
	bra.s	end_startup		and run the user prog

* we were called from the Workbench

fromWorkbench
	lea	pr_MsgPort(a4),a0
	move.l	Exec.w,a6
	jsr	WaitPort(a6)		wait for a message

	lea	pr_MsgPort(a4),a0
	move.l	Exec.w,a6
	jsr	GetMsg(a6)		then get it
	move.l	d0,returnMsg		save it for later reply

* do some other stuff here like the command line etc

	movem.l	(sp)+,d0/a0		restore
end_startup
	bsr.s	_main			call our program

* returns to here with exit code in d0
	move.l	d0,-(sp)		save it

	tst.l	returnMsg
	beq.s	exitToDOS		if I was a CLI

	move.l	Exec.w,a6
	jsr	Forbid(a6)

	move.l	returnMsg(pc),a1
	move.l	Exec.w,a6
	jsr	ReplyMsg(a6)

exitToDOS
	move.l	(sp)+,d0		exit code
	rts

* startup code variable

returnMsg	dc.l	0

_main

	lea	Variables(pc),a5

;otwarcie dos.library

	moveq	#0,d0
	lea	DosName(pc),a1
	move.l	Exec.w,a6
	jsr	OpenLibrary(a6)
	move.l	d0,DosBase(a5)
	beq.w	ErrorOpenDos

;otwarcie intuition.library

	moveq	#0,d0
	lea	IntName(pc),a1
	move.l	Exec.w,a6
	jsr	OpenLibrary(a6)
	move.l	d0,IntBase(a5)
	beq.w	ErrorOpenInt

;otwarcie graphics.library

	moveq	#0,d0
	lea	GfxName(pc),a1
	move.l	Exec.w,a6
	jsr	OpenLibrary(a6)
	move.l	d0,GrfxBase(a5)
	beq.w	ErrorOpenGfx

; nowa funkcja Text z graphics.library

;	bsr.w	SetFunc

;otwarcie gadtools.library

	moveq	#37,d0		;wersja 37
	lea	GadName(pc),a1
	move.l	Exec.w,a6
	jsr	OpenLibrary(a6)
	move.l	d0,GadBase(a5)
	beq.w	DisplayAlertGad

;otwarcie reqtools.library

	moveq	#38,d0		;wersja 38
	lea	ReqName(pc),a1
	move.l	Exec.w,a6
	jsr	OpenLibrary(a6)
	move.l	d0,ReqBase(a5)
	beq.w	DisplayAlertReq

;otwarcie xfdmaster.library

	moveq	#37,d0		;wersja 37
	lea	XfdName(pc),a1
	move.l	Exec.w,a6
	jsr	OpenLibrary(a6)
	move.l	d0,XfdBase(a5)
	beq.w	DisplayAlertXfd

;allokacja pamieci na bufor tekstu

	move.l	#(200*14)+(200*100),d0
	move.l	#$10001,d1	;Public i Clear
	move.l	Exec.w,a6
	jsr	AllocMem(a6)
	move.l	d0,BufTextNodes(A5)
	beq.w	ErrorAllocBufText
	move.l	d0,a0
	lea	200*14(a0),a0
	move.l	a0,BufTextNames(A5)
	lea	ID_List2(pc),a0
	move.l	d0,(a0)
	move.l	d0,8(a0)

;przydzielenie struktury dla file requesterow

	moveq	#0,d0
	sub.l	a0,a0
	move.l	ReqBase(a5),a6
	jsr	rtAllocRequestA(a6)
	move.l	d0,FileReqL(a5)
	beq.w	ErrorAllocReqL

	moveq	#0,d0
	sub.l	a0,a0
	move.l	ReqBase(a5),a6
	jsr	rtAllocRequestA(a6)
	move.l	d0,FileReqS(a5)
	beq.w	ErrorAllocReqS

;otwarcie TrackDisk.device - dodanie tasku do systemu

	sub.l	a1,a1			; task name
	move.l	Exec.w,a6
	jsr	FindTask(a6)

	lea	DiskRep(pc),a1		; port address
	move.l	d0,16(a1)		; task address
	move.l	Exec.w,a6
	jsr	AddPort(a6)

;Public Screen

	sub.l	a0,a0			; screen name
	move.l	IntBase(a5),a6
	jsr	LockPubScreen(a6)
	move.l	d0,Scr(a5)		; screen ptr
	beq.w	ErrorPubScreen

;Get Visual Info

	move.l	d0,a0			; screen
	sub.l	a1,a1			; tag list
	move.l	GadBase(a5),a6
	jsr	GetVisualInfoA(a6)
	move.l	d0,Visual(a5)
	beq.w	ErrorVisual

	lea	Visual1(pc),a0
	move.l	d0,(a0)
	lea	Visual2(pc),a0
	move.l	d0,(a0)
	lea	Visual3(pc),a0
	move.l	d0,(a0)
	lea	Visual4(pc),a0
	move.l	d0,(a0)
	lea	Visual5(pc),a0
	move.l	d0,(a0)
	lea	Visual6(pc),a0
	move.l	d0,(a0)
	lea	Visual7(pc),a0
	move.l	d0,(a0)
	lea	Visual8(pc),a0
	move.l	d0,(a0)
	lea	Visual9(pc),a0
	move.l	d0,(a0)
	lea	Visual10(pc),a0
	move.l	d0,(a0)
	lea	Visual11(pc),a0
	move.l	d0,(a0)
	lea	Visual12(pc),a0
	move.l	d0,(a0)
	lea	Visual13(pc),a0
	move.l	d0,(a0)
	lea	Visual14(pc),a0
	move.l	d0,(a0)
	lea	Visual15(pc),a0
	move.l	d0,(a0)
	lea	Visual16(pc),a0
	move.l	d0,(a0)
	lea	Visual17(pc),a0
	move.l	d0,(a0)
	lea	Visual18(pc),a0
	move.l	d0,(a0)
	lea	Visual19(pc),a0
	move.l	d0,(a0)
	lea	Visual20(pc),a0
	move.l	d0,(a0)
	lea	Visual21(pc),a0
	move.l	d0,(a0)
	lea	Visual22(pc),a0
	move.l	d0,(a0)

;Create Context

	lea	Glist(pc),a0
	move.l	GadBase(a5),a6
	jsr	CreateContext(a6)
	lea	Gadget1(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorContext

;Create Gadget Disk Read

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	DiskReadGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	Gadget2(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Load File

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	LoadFileGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	Gadget3(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Search

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	SearchGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	Gadget4(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Prefs

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	PrefsGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	Gadget5(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget About

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	AboutsGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	Gadget6(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;czy NTSC

	move.l	GrfxBase(a5),a0
	cmpi.w	#200,$d8(a0)
	bgt.b	ScreenPAL

	lea	WinHei(pc),a0
	move.l	#189,(a0)
	lea	Box1(pc),a0
	move.l	#108,2(a0)
	lea	Box2(pc),a0
	move.l	#106,2(a0)
	lea	Niedodaj(pc),a0
	move.l	#11,2(a0)
	lea	Niedo(pc),a0
	move.l	#11,2(a0)
	lea	StatusGad(pc),a0
	move.w	#107,6(a0)

ScreenPAL:

;Create Gadget Status Window

	move.l	d0,a0
	moveq	#LISTVIEW_KIND,d0
	lea	StatusGad(pc),a1
	lea	TagListView2(pc),a2
	jsr	CreateGadgets(a6)
	lea	Gadget7(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;otarcie New Window

	sub.l	a0,a0
	lea	WindowTags(pc),a1
	move.l	IntBase(a5),a6
	jsr	OpenWindowTagList(a6)
	move.l	d0,Windows(a5)
	beq.w	ErrorOpenWindow

	lea	WindowLoad(pc),a0
	move.l	d0,(a0)
	lea	WindowSave(pc),a0
	move.l	d0,(a0)
	lea	WindowAbout(pc),a0
	move.l	d0,(a0)
	lea	WindowCont(pc),a0
	move.l	d0,(a0)
	lea	WindowCont2(pc),a0
	move.l	d0,(a0)

;ustawienie fontow Topaz 8

	lea	Font(pc),a0
	move.l	GrfxBase(a5),a6
	jsr	OpenFont(a6)

	move.l	d0,a0
	move.l	Windows(a5),a1
	move.l	WindowRastPort(a1),a1
	jsr	SetFont(a6)

***************************************************************************

	bsr.w	Box

;odswiezenie okna

	move.l	Windows(a5),a0
	sub.l	a1,a1
	move.l	GadBase(a5),a6
	jsr	GT_RefreshWindow(a6)

***************************************************************************

;loading preferences

	moveq	#50,d0
	move.l	#$10001,d1	;Public i Clear
	move.l	Exec.w,a6
	jsr	AllocMem(a6)
	move.l	d0,a4
	beq.w	ErrorLoadPrefs

	lea	PrefsName(pc),a0
	move.l	a0,d1
	move.l	#1005,d2
	move.l	DosBase(a5),a6
	jsr	Open(a6)
	move.l	d0,FileHandles(a5)
	beq.w	ErrorLoadPrefs

	move.l	d0,d1
	move.l	a4,d2			; adres przydzielonej pamieci na prefsy
	moveq	#50,d3
	jsr	Read(a6)

	tst.l	d0
	beq.w	ErrorLoadPrefs
	move.l	d0,d7

	move.l	FileHandles(a5),d1
	jsr	Close(a6)

	tst.l	d0
	beq.w	ErrorLoadPrefs

	cmpi.l	#32,d7
	bne.w	PrefsOk

	move.l	(a4),Enable1(a5)
	move.l	4(a4),Enable2(a5)
	move.l	8(a4),Enable3(a5)
	move.l	12(a4),IncFileName(a5)
	move.l	16(a4),DecrFile(a5)
	move.l	20(a4),SkipFile(a5)
	move.l	24(a4),DeepSearch(a5)
	move.w	28(a4),FormatNumbers(a5)
	move.w	30(a4),DriveNumbers(a5)

	bra.w	Main_3
PrefsOk
	moveq	#0,d7
	lea	EnableID(pc),a0
	lea	(a4),a1			; adres prefsow
	move.l	(a1)+,d0		; ustawione bity IDow
Loops4:
	tst.l	(a0)			; czy koniec tekstu z IDami
	beq.b	Main_2
	move.l	(a0),a2			; adres tekstu z IDem
	cmpi.b	#32,d7			; czy ostatni bit
	bne.b	NoOver4
	moveq	#0,d7
	move.l	(a1)+,d0		; nastepne ust. bity
NoOver4:
	btst	d7,d0
	beq.b	NoDisable5
	move.b	#'D',(a2)
	bra.b	NoDisable6
NoDisable5:
	move.b	#' ',(a2)
NoDisable6:
	addq.b	#1,d7
	addq.l	#4,a0
	bra.b	Loops4

ErrorLoadPrefs:
	lea	ErrorLoadPrefsText(pc),a0
	bsr.w	PrintStatus

Main_2:
	move.l	(a4),Enable1(a5)
	move.l	4(a4),Enable2(a5)
	move.l	8(a4),Enable3(a5)
	move.l	12(a4),Enable4(a5)
	move.l	16(a4),Enable5(a5)
	move.l	20(a4),IncFileName(a5)
	move.l	24(a4),DecrFile(a5)
	move.l	28(a4),SkipFile(a5)
	move.l	32(a4),DeepSearch(a5)
	move.w	36(a4),FormatNumbers(a5)
	move.w	38(a4),DriveNumbers(a5)
	move.l	40(a4),RNC_old(a5)
Main_3
	move.l	IncFileName(a5),IncVar(a5)
	lea	Inc(pc),a0
	move.l	IncFileName(a5),(a0)
	lea	IncCheck(pc),a0
	move.l	IncFileName(a5),(a0)
	move.l	DecrFile(a5),DecrVar(a5)
	lea	Decr(pc),a0
	move.l	DecrFile(a5),(a0)
	lea	DecrCheck(pc),a0
	move.l	DecrFile(a5),(a0)
	move.l	SkipFile(a5),SkipVar(a5)
	lea	Skip(pc),a0
	move.l	SkipFile(a5),(a0)
	lea	SkipCheck(pc),a0
	move.l	SkipFile(a5),(a0)
	move.l	DeepSearch(a5),DeepVar(a5)
	lea	Dee(pc),a0
	move.l	DeepSearch(a5),(a0)
	lea	DeepCheck(pc),a0
	move.l	DeepSearch(a5),(a0)
	lea	RNC_(pc),a0
	move.l	RNC_old(a5),(a0)
	lea	RNCCheck(pc),a0
	move.l	RNC_old(a5),(a0)

	move.w	FormatNumbers(a5),FormatNum+2(a5)
	lea	Format+2(pc),a0
	move.w	FormatNumbers(a5),(a0)
	lea	FormatActive+2(pc),a0
	move.w	FormatNumbers(a5),(a0)

	move.w	DriveNumbers(a5),DriveNum+2(a5)
	lea	Drv+2(pc),a0
	move.w	DriveNumbers(a5),(a0)
	lea	DriveActive+2(pc),a0
	move.w	DriveNumbers(a5),(a0)

	move.l	a4,a1
	moveq	#50,d0
	move.l	Exec.w,a6
	jsr	FreeMem(a6)

;Create Context2

	lea	Glist2(pc),a0
	move.l	GadBase(a5),a6
	jsr	CreateContext(a6)
	lea	GadgetPref1(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorContext

;Create Gadget Pref Cycle

	move.l	d0,a0
	moveq	#CYCLE_KIND,d0
	lea	CycleGad(pc),a1
	lea	TagListCycle(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref2(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget CheckBox

	move.l	d0,a0
	moveq	#CHECKBOX_KIND,d0
	lea	ChBoxGad(pc),a1
	lea	TagListChBox(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref3(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget CheckBox2

	move.l	d0,a0
	moveq	#CHECKBOX_KIND,d0
	lea	ChBoxGad2(pc),a1
	lea	TagListChBox2(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref4(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget CheckBox3

	move.l	d0,a0
	moveq	#CHECKBOX_KIND,d0
	lea	ChBoxGad3(pc),a1
	lea	TagListChBox3(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref5(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget CheckBox4

	move.l	d0,a0
	moveq	#CHECKBOX_KIND,d0
	lea	ChBoxGad4(pc),a1
	lea	TagListChBox4(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPrefA(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget CheckBox5

	move.l	d0,a0
	moveq	#CHECKBOX_KIND,d0
	lea	ChBoxGad5(pc),a1
	lea	TagListChBox5(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPrefF(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Save

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	SaveGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref6(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Use

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	UseGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref7(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Cancel

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	CancelGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref8(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Invert

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	InvertGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPrefB(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Clear

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	ClearGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPrefC(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Image

	move.l	d0,a0
	moveq	#BUTTON_KIND,d0
	lea	ImageGad(pc),a1
	lea	TagListButton(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPrefD(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Enable/Disable

	move.l	d0,a0
	moveq	#LISTVIEW_KIND,d0
	lea	ListViewGad(pc),a1
	lea	TagListView(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPref9(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

;Create Gadget Pref Cycle2

	move.l	d0,a0
	moveq	#CYCLE_KIND,d0
	lea	CycleGadE(pc),a1
	lea	TagListCycleE(pc),a2
	jsr	CreateGadgets(a6)
	lea	GadgetPrefE(pc),a0
	move.l	d0,(a0)
	beq.w	ErrorCreateGad

***************************************************************************

;glowny program

Main:
	move.l	Windows(a5),a0
	move.l	IDCMP(a0),a0
	move.l	Exec.w,a6
	jsr	WaitPort(a6)

	move.l	Windows(a5),a0
	move.l	IDCMP(a0),a0
	move.l	GadBase(a5),a6
	jsr	GT_GetIMsg(a6)

	tst.l	d0
	beq.b	Main

	move.l	d0,a1
	move.l	$14(a1),d5			; Class
	move.w	$18(a1),d6			; Code
;	move.w	$1a(a1),d7			; Qualifier
	move.l	$1c(a1),a4			; IAddress
	jsr	GT_ReplyIMsg(a6)

	cmpi.l	#IDCMP_CLOSEWINDOW,d5
	beq.w	Quit

	cmpi.l	#IDCMP_GADGETUP,d5
	bne.b	Keys

	move.w	$26(a4),d0

	cmpi.w	#1,d0
	beq.w	ReadDisk

	cmpi.w	#2,d0
	beq.w	LoadFile

	cmpi.w	#3,d0
	beq.w	Searching

	cmpi.w	#4,d0
	beq.w	Prefs

	cmpi.w	#5,d0
	beq.w	About

	bra.b	Main
Keys:
	cmpi.l	#IDCMP_VANILLAKEY,d5
	bne.b	Size

	cmpi.w	#27,d6
	beq.w	Quit

	cmpi.w	#'r',d6
	beq.w	ReadDisk

	cmpi.w	#'l',d6
	beq.w	LoadFile

	cmpi.w	#'s',d6
	beq.w	Searching

	cmpi.w	#'p',d6
	beq.w	Prefs

	cmpi.w	#'a',d6
	beq.w	About

	bra.w	Main
Size:
	cmpi.l	#IDCMP_NEWSIZE,d5
	beq.b	NewSize

	bra.w	Main

NewSize:
	bsr.b	Size2

	bra.w	Main

Size2:
	not.l	SizeVar(a5)

	tst.l	SizeVar(a5)
	bne.b	NoSize

	bsr.w	Box

	move.l	Windows(a5),a0
	sub.l	a1,a1
	move.l	GadBase(a5),a6
	jsr	GT_RefreshWindow(a6)

	clr.l	Scrl(a5)
NoSize:
	rts

***************************************************************************

Quit:
	tst.l	FileList(a5)
	beq.b	NotFree2

	move.l	FileList(a5),a0
	move.l	ReqBase(a5),a6
	jsr	rtFreeFileList(a6)

	clr.l	FileList(a5)

NotFree2:
	bsr.w	FreeMemory

	move.l	Windows(a5),a0
	move.l	IntBase(a5),a6
	jsr	CloseWindow(a6)

ErrorOpenWindow:

ErrorCreateGad:

	move.l	GadgetPref1(pc),a0
	move.l	GadBase(a5),a6
	jsr	FreeGadgets(a6)

	move.l	Gadget1(pc),a0
	jsr	FreeGadgets(a6)

ErrorContext:
	move.l	Visual(a5),a0
	move.l	GadBase(a5),a6
	jsr	FreeVisualInfo(a6)

ErrorVisual:
	sub.l	a0,a0
	move.l	Scr(a5),a1
	move.l	IntBase(a5),a6
	jsr	UnlockPubScreen(a6)

ErrorPubScreen:
	lea	DiskRep(pc),a1
	move.l	Exec.w,a6
	jsr	RemPort(a6)

ErrorOpenTrack:
	move.l	FileReqS(a5),a1
	move.l	ReqBase(a5),a6
	jsr	rtFreeRequest(a6)

ErrorAllocReqS:
	move.l	FileReqL(a5),a1
	move.l	ReqBase(a5),a6
	jsr	rtFreeRequest(a6)

ErrorAllocBufText
	move.l	BufTextNodes(a5),a1
	move.l	#(200*14)+(200*100),d0
	move.l	Exec.w,a6
	jsr	FreeMem(a6)

ErrorAllocReqL:
	move.l	XfdBase(a5),a1
	move.l	Exec.w,a6
	jsr	CloseLibrary(a6)

ErrorOpenXfd:
	move.l	ReqBase(a5),a1
	move.l	Exec.w,a6
	jsr	CloseLibrary(a6)

ErrorOpenReq:
	move.l	GadBase(a5),a1
	move.l	Exec.w,a6
	jsr	CloseLibrary(a6)

ErrorOpenGad:
;	bsr.w	SetOldFunc

	move.l	GrfxBase(a5),a1
	move.l	Exec.w,a6
	jsr	CloseLibrary(a6)

ErrorOpenGfx:
	move.l	IntBase(a5),a1
	move.l	Exec.w,a6
	jsr	CloseLibrary(a6)

ErrorOpenInt:
	move.l	DosBase(a5),a1
	move.l	Exec.w,a6
	jsr	CloseLibrary(a6)

ErrorOpenDos:
	moveq	#0,d0
	rts

***************************************************************************

DisplayAlertGad:
	lea	StructGad(pc),a1
	bsr.b	Display
	bra.b	ErrorOpenGad

DisplayAlertReq:
	lea	StructReq(pc),a1
	bsr.b	Display
	bra.b	ErrorOpenReq

DisplayAlertXfd:
	lea	StructXfd(pc),a1
	bsr.b	Display
	bra.b	ErrorOpenXfd

Display:
	sub.l	a0,a0
	sub.l	a2,a2
	sub.l	a3,a3
	move.l	IntBase(a5),a6
	jsr	EasyRequestArgs(a6)

	rts

StructGad:
	dc.l	GadSizeOf
	dc.l	0
	dc.l	DisplayGad
	dc.l	AlertGad
	dc.l	InGad
GadSizeOf:

StructReq:
	dc.l	ReqSizeOf
	dc.l	0
	dc.l	DisplayGad
	dc.l	AlertReq
	dc.l	InGad
ReqSizeOf:

StructXfd:
	dc.l	XfdSizeOf
	dc.l	0
	dc.l	DisplayGad
	dc.l	AlertXfd
	dc.l	InGad
XfdSizeOf:

DisplayGad:
	dc.b	'Track2File',0
AlertGad:
	dc.b	'Unable to open',10,'gadtools.library V37+',0
AlertReq:
	dc.b	'Unable to open',10,'reqtools.library V38+',0
AlertXfd:
	dc.b	'Unable to open',10,'xfdmaster.library V37+',0
InGad:
	dc.b	'Ok',0
	CNOP 0,2

***************************************************************************

Searching:
	bsr.w	WaitPointer
	bsr.b	SearchID
	bsr.w	WorkPointer

	bra.w	Main

SearchID:
	clr.l	DecrError(a5)

	moveq	#0,d0
	bsr.w	FillZero		;skasowanie paska kolorem tla

	clr.l	SetNameZero(a5)		;skasowanie licznika ilosci plikow

	tst.l	AllocStart(a5)
	beq.w	BufferEmpty		;czy bufor pusty

	lea	SearchIDText(pc),a0
	bsr.w	PrintStatus		;wyswietlenie tekstu

	move.l	AllocStart(a5),a0	;poczatek bufora
	move.l	AllocEnd(a5),a1		;koniec bufora
CS:
	bsr.w	WaitPointer		;wskaznik myszy zajety

	move.l	Enable1(a5),d3		;enable/disable IDs
	move.l	Enable2(a5),d4
	move.l	Enable3(a5),d5
	move.l	Enable4(a5),d6
	move.l	Enable5(a5),d7

	bsr.w	Search			;szukanie pliku
	beq.w	NoFind			;nic nie znalazl jezeli 0
	bmi.w	Abort			;przerwanie szukania

	bsr.w	PrintID			;dane o pliku
	move.l	StartFileID(a5),StartFileID2(a5)
SOC:
	tst.l	DecrVar(a5)		;czy decrunch before save
	bne.w	Decrunch

	tst.l	IncVar(a5)		;czy inc file name
	bne.b	SaFi

	bsr.w	SaveOrCont		;requester information
	tst.l	d0
	beq.b	ContSearch
	cmpi.l	#2,d0
	beq.w	Decrunch
	cmpi.l	#3,d0
	beq.w	Abort
SaFi:
	bsr.w	SaveFile		;nagranie pliku spakowanego

	tst.l	IncVar(a5)		;czy inc file name
	bne.b	ContSearch

	bra.b	SOC

ContSearch:
	lea	ContinueSearch(pc),a0
	bsr.w	PrintStatus

	move.l	StartFileID(a5),a0
	move.l	AllocEnd(a5),a1

	cmp.l	#'BOND',DisplayID(a5)
	beq.b	YesBond

	tst.l	SkipVar(a5)		;czy skip file
	beq.b	NoSkip
YesBond
	tst.l	PackedSize(a5)
	beq.b	NoSkip
	add.l	PackedSize(a5),a0	;dodaj dlugosc pliku
	subq.l	#4,a0
	bsr.w	Fill
NoSkip:
	cmpa.l	a0,a1			;czy koniec bufora
	bls.b	NoFind
	addq.l	#1,a0
	tst.l	DeepVar(a5)
	bne.w	CS3
	move.l	d0,-(a7)
	move.l	a0,d0
	btst	#0,d0
	beq.b	CS2
	addq.l	#1,a0
CS2:
	move.l	(a7)+,d0
CS3:
	cmpi.b	#'9',DisplayID(a5)
	beq.b	CS4
	cmpi.l	#'LOB ',DisplayID(a5)
	bne.w	CS
	addq.l	#2,a0
	bra.w	CS
CS4
	addq.l	#4,a0
	bra.w	CS

NoFind:
	moveq	#3,d0
	bsr.w	FillZero		;caly pasek na niebiesko

	lea	NothingFound(pc),a0
	bsr.w	PrintStatus

	tst.l	FileListAdd(a5)		;czy ostatni plik do wczytania
	bne.b	LoadNext
	
NoFile:
	rts

Abort:
	lea	AbortSearch(pc),a0
	bsr.w	PrintStatus

	rts

LoadNext:
;	clr.l	DecrError(a5)

	move.l	FileListAdd(a5),a0
	move.l	(a0),FileListAdd(a5)
	move.l	8(a0),a0
	bsr.w	LoadIt

	bra.w	SearchID

***************************************************************************

Search:
	moveq	#0,d0
ContSearching:
	tst.l	DeepVar(a5)
	beq.b	NoDeep

	lsl.l	#8,d0
	move.b	(a0)+,d0
	beq.w	CompareCounter
	bra.b	Deep
NoDeep
	swap.w	d0
	move.w	(a0)+,d0
	beq.w	CompareCounter
Deep
	cmpi.w	#'z!',d0
;	bhi.w	CompareCounter
	bcc.w	CompareCounter

	cmpi.w	#'CP',d0
	beq.w	_ID_CP

	cmpi.w	#'GP',d0
	beq.w	_ID_GP

	cmpi.w	#'JR',d0
	beq.w	_ID_JR

	cmpi.w	#'SA',d0
	beq.w	_ID_SA

	cmpi.w	#'SC',d0
	beq.w	_ID_SC

	cmpi.w	#'SF',d0
	beq.w	_ID_SF

	cmpi.w	#'SP',d0
	beq.w	_ID_SP

	cmpi.w	#'SQ',d0
	beq.w	_ID_SQ

	cmpi.l	#'=SB=',d0
	beq.w	_ID_SB

	cmpi.l	#$08090A08,d0
	beq.w	_ID_89A8

	cmpi.l	#$08090A0A,d0
	beq.w	_ID_89AA

	cmpi.l	#$08090A0B,d0
	beq.w	_ID_89AB

	cmpi.l	#$08090A0C,d0
	beq.w	_ID_89AC

	cmpi.l	#$08090A0D,d0
	beq.w	_ID_89AD

	cmpi.l	#$09090909,d0
	beq.w	_ID_9999

	cmpi.l	#$090A0A0A,d0
	beq.w	_ID_9AAA

	cmpi.l	#$090A0B0B,d0
	beq.w	_ID_9ABB

	cmpi.l	#$090A0C0C,d0
	beq.w	_ID_9ACC

	cmpi.l	#$090A0C0D,d0
	beq.w	_ID_9ACD

	cmpi.l	#$18051973,d0
	beq.w	_ID_18051973

	cmpi.l	#'0815',d0
	beq.w	_ID_0815

	cmpi.l	#'!GC!',d0
	beq.w	_ID_GC

	cmpi.l	#'ACE!',d0
	beq.w	_ID_ACE

	cmpi.l	#'ALC0',d0
	beq.w	_ID_ALC0

	cmpi.l	#'ARP3',d0
	beq.w	_ID_ARP3

	cmpi.l	#'ARPF',d0
	beq.w	_ID_ARPF

	cmpi.l	#'ATM5',d0
	beq.w	_ID_ATM5

	cmpi.l	#'ATN!',d0
	beq.w	_ID_ATN

	cmpi.l	#'ATOM',d0
	beq.w	_ID_ATOM

	cmpi.l	#'Ace?',d0
	beq.w	_ID_Ace?

	cmpi.l	#'ArcD',d0
	beq.w	_ID_ArcD

	cmpi.l	#'ArcR',d0
	beq.w	_ID_ArcR

	cmpi.l	#'arcD',d0
	beq.w	_ID_arcD

	cmpi.l	#'BDPI',d0
	beq.w	_ID_BDPI

	cmpi.l	#'BH72',d0
	beq.w	_ID_BH72

	cmpi.l	#'BH73',d0
	beq.w	_ID_BH73

	cmpi.l	#'BHC3',d0
	beq.w	_ID_BHC3

	cmpi.l	#'.BON',d0
	beq.w	_ID_BOND

	cmpi.l	#'CHFC',d0
	beq.w	_ID_CHFC

	cmpi.l	#'CHFI',d0
	beq.w	_ID_CHFI

	cmpi.l	#'CMP1',d0
	beq.w	_ID_CMP1

	cmpi.l	#'CrM!',d0
	beq.w	_ID_CrM

	cmpi.l	#'CrM2',d0
	beq.w	_ID_CrM2

	cmpi.l	#'Crm!',d0
	beq.w	_ID_Crm

	cmpi.l	#'Crm2',d0
	beq.w	_ID_Crm2

	cmpi.l	#'CRND',d0
	beq.w	_ID_CRND

	cmpi.l	#'CRUa',d0
	beq.w	_ID_CRUa

	cmpi.l	#'CRUN',d0
	beq.w	_ID_CRUN

	cmpi.l	#'CSFX',d0
	beq.w	_ID_CSFX

	cmpi.l	#'D815',d0
	beq.w	_ID_D815

	cmpi.l	#'DHp2',d0
	beq.w	_ID_DHp2

	cmpi.l	#'DOUG',d0
	beq.w	_ID_DOUG

	cmpi.l	#'Dtpk',d0
	beq.w	_ID_Dtpk

	cmpi.l	#'Dupa',d0
	beq.w	_ID_Dupa

	cmpi.l	#'EDAM',d0
	beq.w	_ID_EDAM

	cmpi.l	#'ESL!',d0
	beq.w	_ID_ESL

	cmpi.l	#'FB@@',d0
	beq.w	_ID_FB

	cmpi.l	#'FIRE',d0
	beq.w	_ID_FIRE

	cmpi.l	#'FLT!',d0
	beq.w	_ID_FLT

	cmpi.l	#'FRED',d0
	beq.w	_ID_FRED

	cmpi.l	#'GC!'<<8+2,d0
	beq.w	_ID_GC2

	cmpi.l	#'GC!'<<8+3,d0
	beq.w	_ID_GC3

	cmpi.l	#'GP11',d0
	beq.w	_ID_GP11

	cmpi.l	#'HAL!',d0
	beq.w	_ID_HAL

	cmpi.l	#'HUF#',d0
	beq.w	_ID_HUF

	cmpi.l	#'ICE!',d0
	beq.w	_ID_ICE

	cmpi.l	#'IFT?',d0
	beq.w	_ID_IFT?

	cmpi.l	#'IMP!',d0
	beq.w	_ID_IMP

	cmpi.l	#'Ice!',d0
	beq.w	_ID_Ice

	cmpi.l	#'KDUB',d0
	beq.w	_ID_KDUB

	cmpi.l	#'LR88',d0
	beq.w	_ID_LR88

	cmpi.l	#'LSD!',d0
	beq.w	_ID_LSD

	cmpi.l	#'LZDA',d0
	beq.w	_ID_LZDA

	cmpi.l	#'LZSS',d0
	beq.w	_ID_LZSS

	cmpi.l	#'LZWH',d0
	beq.w	_ID_LZWH

	cmpi.l	#'LeCr',d0
	beq.w	_ID_LeCr

	cmpi.l	#'MASM',d0
	beq.w	_ID_MASM

	cmpi.l	#'MASS',d0
	beq.w	_ID_MASS

	cmpi.l	#'MD12',d0
	beq.w	_ID_MD12

	cmpi.l	#'MICK',d0
	beq.w	_ID_MICK

	cmpi.l	#'MTP1',d0
	beq.w	_ID_MTP1

	cmpi.l	#'MTPS',d0
	beq.w	_ID_MTPS

	cmpi.l	#'MWC'<<8+1,d0
	beq.w	_ID_MWC1

	cmpi.l	#'PAC'<<8+1,d0
	beq.w	_ID_PAC1

	cmpi.l	#'PACK',d0
	beq.w	_ID_PACK

	cmpi.l	#'PARA',d0
	beq.w	_ID_PARA

	cmpi.l	#'PP20',d0
	beq.w	_ID_PP20

	cmpi.l	#'PaCK',d0
	beq.w	_ID_PaCK

	cmpi.l	#'PaK0',d0
	beq.w	_ID_PaK0

	cmpi.l	#'pack',d0
	beq.w	_ID_pack

	cmpi.l	#'RNC'<<8+0,d0
	beq.w	_ID_RNC0

	cmpi.l	#'RNC'<<8+1,d0
	beq.w	_ID_RNC1

	cmpi.l	#'RNC'<<8+2,d0
	beq.w	_ID_RNC2

	cmpi.l	#'S300',d0
	beq.w	_ID_S300

	cmpi.l	#'S310',d0
	beq.w	_ID_S310

	cmpi.l	#'S400',d0
	beq.w	_ID_S400

	cmpi.l	#'S401',d0
	beq.w	_ID_S401

	cmpi.l	#'S403',d0
	beq.w	_ID_S403

	cmpi.l	#'S404',d0
	beq.w	_ID_S404

	cmpi.l	#'SFCD',d0
	beq.w	_ID_SFCD

	cmpi.l	#'SFHD',d0
	beq.w	_ID_SFHD

	cmpi.l	#'SLAM',d0
	beq.w	_ID_SLAM

	cmpi.l	#'SPv3',d0
	beq.w	_ID_SPv3

	cmpi.l	#'SSUR',d0
	beq.w	_ID_SSUR

	cmpi.l	#'TITS',d0
	beq.w	_ID_TITS

	cmpi.l	#'T.S ',d0
	beq.w	_ID_T.S

	cmpi.l	#'TPWM',d0
	beq.w	_ID_TPWM

	cmpi.l	#'TSM!',d0
	beq.w	_ID_TSM

	cmpi.l	#'Taz!',d0
	beq.w	_ID_Taz

	cmpi.l	#'VDCO',d0
	beq.w	_ID_VDCO

	cmpi.l	#'VOL1',d0
	beq.w	_ID_VOL1

	cmpi.l	#'ViS1',d0
	beq.w	_ID_ViS1

	cmpi.l	#'ViSL',d0
	beq.w	_ID_ViSL

	cmpi.l	#'Vic2',d0
	beq.w	_ID_Vic2

	cmpi.l	#'WJSD',d0
	beq.w	_ID_WJSD

	cmpi.l	#'XP10',d0
	beq.w	_ID_XP10

	cmpi.l	#'XPKF',d0
	beq.w	_ID_XPKF

	cmpi.l	#'XPKZ',d0
	beq.w	_ID_XPKZ

	cmpi.l	#'XX50',d0
	beq.w	_ID_XX50

	cmpi.l	#'xVdg',d0
	beq.w	_ID_xVdg

	cmpi.l	#'xXxX',d0
	beq.w	_ID_xXxX
_ID_Exit:
	move.l	d0,-(a7)
	andi.l	#$ffffff00,d0

	cmpi.l	#'1AM '-32,d0
	beq.w	_ID_1AM
_1AM1_Exit:
	cmpi.l	#'2AM '-32,d0
	beq.w	_ID_2AM
_2AM1_Exit:

	move.l	(a7)+,d0

	tst.l	DeepVar(a5)
	bne.b	Nop

	cmpi.l	#'RLE '-32,d0
	beq.w	_ID_RLE

	bra.b	_RLE_Exit
Nop:
	andi.l	#$00ffffff,d0

	cmpi.l	#'RLE',d0
	beq.w	_ID_RLE
_RLE_Exit:
	andi.l	#$00ffffff,d0

	cmpi.l	#'LOB',d0
	beq.w	_ID_LOB
_LOB_Exit:

CompareCounter:
	move.l	a0,d2
	lsl.l	#4,d2
	tst.w	d2
	bne.b	NoFill
	bsr.w	Fill
	bne.b	ContAbort
NoFill:
	cmpa.l	a0,a1
	bhi.w	ContSearching		;w wersji 1.11 jest bge.w
;	bge.w	ContSearching

	moveq	#0,d0
	rts

ContAbort:
	moveq	#-1,d0
	rts

****************************************************************************

_ID_CP
	btst.l	#CP,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#6,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' CP ',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_GP
	btst.l	#GP,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#6,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' GP ',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_JR
	btst.l	#JR,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' JR ',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SA
	btst.l	#SA,d3
	bne.w	_ID_Exit

	move.l	a0,a2
	bsr.w	GetWord
	cmpi.w	#6,d1
	bhi.w	_ID_Exit

	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)

	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	GetWord
	beq.w	_ID_Exit
	lsl.l	#3,d1
	add.l	#14,d1
	moveq	#0,d2
	move.l	d1,d2
	addq.l	#6,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	d1,d2
	move.l	d2,PackedSize(a5)

	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' SA ',DisplayID(a5)
	lea	MagnText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SC
	btst.l	#SC,d3
	bne.w	_ID_Exit

	move.l	a0,a2
	bsr.w	GetWord
	cmpi.w	#6,d1
	bhi.w	_ID_Exit

	moveq	#0,d2
	move.w	d1,d2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	mulu.w	d2,d1
	move.l	d1,OriginalSize(a5)

	move.l	a0,a2
	bsr.w	GetWord
	moveq	#2,d2
	lsl.l	d1,d2
	add.l	#12,d2
	addq.l	#6,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	d1,d2
	move.l	d2,PackedSize(a5)

	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' SC ',DisplayID(a5)
	lea	MagnText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SF
	btst.l	#SF,d3
	bne.w	_ID_Exit

	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)

	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	andi.l	#$fffffffe,d1
	add.l	#12,d1
	move.l	d1,PackedSize(a5)

	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' SF ',DisplayID(a5)
	lea	MagnText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SP
	btst.l	#SP,d3
	bne.w	_ID_Exit

	move.l	a0,a2
	bsr.w	GetWord
	cmpi.w	#6,d1
	bhi.w	_ID_Exit

	moveq	#0,d2
	move.w	d1,d2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	mulu.w	d2,d1
	move.l	d1,OriginalSize(a5)

	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)

	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' SP ',DisplayID(a5)
	lea	MagnText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SQ
	btst.l	#SQ,d3
	bne.w	_ID_Exit

	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#7,d1
	andi.l	#$fffffff8,d1
	move.l	d1,OriginalSize(a5)

	addq.l	#4,a2
	bsr.w	GetLongWord
	andi.l	#$ffffff,d1
	beq.w	_ID_Exit
	lsl.l	#2,d1
	add.l	#10,d1
	move.l	d1,PackedSize(a5)
	andi.l	#$ffe00000,d1
	bne.w	_ID_Exit

	subq.l	#2,a0
	move.l	a0,StartFileID(a5)
	move.l	#' SQ ',DisplayID(a5)
	lea	MagnText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_1AM
	btst.l	#AM1,d3
	bne.w	_1AM1_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_1AM1_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_1AM1_Exit
	add.l	#16,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'1AM ',DisplayID(a5)
	lea	Stone3FakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'S',(a0)+
	move.b	#'3',(a0)+
	move.b	#'0',(a0)+
	move.b	#'0',(a0)
	addq.l	#4,a7
	moveq	#1,d0
	rts
_ID_2AM
	btst.l	#AM2,d3
	bne.w	_2AM1_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_2AM1_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_2AM1_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'2AM ',DisplayID(a5)
	lea	Stone2FakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'S',(a0)+
	move.b	#'4',(a0)+
	move.b	#'0',(a0)+
	move.b	#'1',(a0)
	addq.l	#4,a7
	moveq	#1,d0
	rts
_ID_LOB
	btst.l	#LOB,d3
	bne.w	_LOB_Exit
	move.l	a0,a2
	cmp.b	#6,(a0)
	bhi.w	_LOB_Exit

	cmp.l	#7,FormatNum(a5)
	bne.b	.skip

	bsr.b	LOB_decode
.skip
	bsr.w	GetLongWord
	beq.w	_LOB_Exit
	andi.l	#$001fffff,d1
	beq.w	_LOB_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	tst.b	(a2)
	bne.w	_LOB_Exit
	bsr.w	GetLongWord
	beq.w	_LOB_Exit
	add.l	#12,d1
	move.l	OriginalSize(a5),d0
	cmp.l	d1,d0
	bhi.s	Higher
	and.l	#$ffff,d1
	clr.b	5(a0)
Higher
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'LOB0',d0
	add.b	4(a0),d0
	move.l	d0,DisplayID(a5)
	lea	LOBText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
LOB_decode
	movem.l	D0-D2/D7/A0,-(SP)

	moveq	#0,d0
	moveq	#0,d1
	moveq	#$57,D2

	addq.l	#4,a0
	move.w	(a0),d0
;	move.l	#$848,d7

	ifne	1
	eor.w	d0,(a0)+
	move.w	D0,D1
	lsl.w	#4,D0
	add.w	D1,D0
	add.w	D2,D0

	eor.w	d0,(a0)+
	move.w	D0,D1
	lsl.w	#4,D0
	add.w	D1,D0
	add.w	D2,D0

	move.l	-4(a0),d7
	endc

	addq.l	#1,D7
	asr.l	#1,D7
	bra.b	lbC0266AC

lbC0266A2
	eor.w	D0,(A0)+
	move.w	D0,D1
	lsl.w	#4,D0
	add.w	D1,D0
	add.w	D2,D0
lbC0266AC
	subq.l	#1,D7
	bpl.s	lbC0266A2
	movem.l	(SP)+,D0-D2/D7/A0
	rts
_ID_RLE
	btst.l	#RLE,d3
	bne.w	_RLE_Exit
	tst.l	DeepVar(a5)
	beq.b	ContRLE
	addq.l	#1,a0
ContRLE:
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_RLE_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_RLE_Exit
	add.l	#64,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'RLE ',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SB
	btst.l	#SB,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'=SB=',DisplayID(a5)
	lea	SBText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_89A8
	btst.l	#id89A8,d3
	bne.w	_ID_Exit
	bsr.w	CheckStone
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'89A8',DisplayID(a5)
	lea	Text89A8(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_89AA
	btst.l	#id89AA,d3
	bne.w	_ID_Exit
	bsr.w	CheckStone
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'89AA',DisplayID(a5)
	lea	Text89A8(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_89AB
	btst.l	#id89AB,d3
	bne.w	_ID_Exit
	bsr.w	CheckStone
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'89AB',DisplayID(a5)
	lea	Text89A8(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_89AC
	btst.l	#id89AC,d3
	bne.w	_ID_Exit
	bsr.w	CheckStone
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'89AC',DisplayID(a5)
	lea	Text89A8(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_89AD
	btst.l	#id89AD,d3
	bne.w	_ID_Exit
	bsr.w	CheckStone
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'89AD',DisplayID(a5)
	lea	Text89A8(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
CheckStone
	lea	-8(A0),A2
	bsr.w	GetLongWord
	cmp.l	#'S300',D1
	beq.b	.yes
	moveq	#0,d1
	rts
.yes
	moveq	#-1,d1
	rts
_ID_9999
	btst.l	#id9999,d3
	bne.w	_ID_Exit
	bsr.w	CheckPP20fake
	tst.l	d0
	beq.w	_ID_Exit
	move.l	#'9999',DisplayID(a5)
	moveq	#1,d0
	rts

_ID_9AAA
	btst.l	#id9AAA,d3
	bne.w	_ID_Exit
	bsr.w	CheckPP20fake
	tst.l	d0
	beq.w	_ID_Exit
	move.l	#'9AAA',DisplayID(a5)
	moveq	#1,d0
	rts

_ID_9ABB
	btst.l	#id9ABB,d3
	bne.w	_ID_Exit
	bsr.w	CheckPP20fake
	tst.l	d0
	beq.w	_ID_Exit
	move.l	#'9ABB',DisplayID(a5)
	moveq	#1,d0
	rts

_ID_9ACC
	btst.l	#id9ACC,d3
	bne.w	_ID_Exit
	bsr.w	CheckPP20fake
	tst.l	d0
	beq.w	_ID_Exit
	move.l	#'9ACC',DisplayID(a5)
	moveq	#1,d0
	rts

_ID_9ACD
	btst.l	#id9ACD,d3
	bne.w	_ID_Exit
	bsr.w	CheckPP20fake
	tst.l	d0
	beq.w	_ID_Exit
	move.l	#'9ACD',DisplayID(a5)
	moveq	#1,d0
	rts

CheckPP20fake
;	tst.l	NextID(a5)
;	bne.w	._ID_Exit2

	lea	-8(A0),A2
	bsr.w	GetLongWord
	cmp.l	#'PP20',d1
	beq.w	._ID_Exit2

	cmp.w	#$8000,-4(a2)
	beq.b	.tnt

	bsr.w	TestFileSize
	beq.w	._ID_Exit2
	move.l	d1,PackedSize(a5)
	add.l	d1,a2
	subq.l	#4,a2
.go
	bsr.w	GetLongWord
	lsr.l	#8,d1
	beq.w	._ID_Exit2
	move.l	d1,OriginalSize(a5)
	andi.l	#$ffe00000,d1
	bne.w	._ID_Exit2
	subq.l	#8,a0
	move.l	a0,StartFileID(a5)
	move.b	#'P',(a0)+
	move.b	#'P',(a0)+
	move.b	#'2',(a0)+
	move.b	#'0',(a0)
	lea	TITSText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
._ID_Exit2
	moveq	#0,d0
	rts
.tnt
	subq.l	#4,a2
	clr.w	(a2)

	bsr.w	TestFileSize
	beq.w	._ID_Exit2
	move.l	d1,PackedSize(a5)

	bset	#7,(a2)
	add.l	d1,a2

	bra.b	.go

_ID_18051973
	btst.l	#id18051973,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CrM2',DisplayID(a5)
	lea	ViSLText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'2',(a0)
	moveq	#1,d0
	rts
_ID_0815
	btst.l	#id0815,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'0815',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_GC
	btst.l	#GC,d3
	bne.w	_ID_Exit
	move.l	#'!GC!',DisplayID(a5)
	move.b	#'P',-4(a0)
	move.b	#'P',-3(a0)
	move.b	#'2',-2(a0)
	move.b	#'0',-1(a0)
	bra.w	_IDpp20
_ID_ACE
	btst.l	#ACE,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ACE!',DisplayID(a5)
	lea	ByteKillerText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ALC0
	btst.l	#ALC0,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ALC0',DisplayID(a5)
	lea	ALC0Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ARP3
	btst.l	#ARP3,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	d1,a2
	add.l	#$20,d1
	move.l	d1,PackedSize(a5)
	lea	$18(a2),a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)

	tst.l	8-4(A0)
	beq.b	.skip
	move.l	A2,-(A7)
	move.l	A0,A2
	addq.l	#4,A2
	bsr.w	GetLongWord
	sub.l	#$C00000,D1
	add.l	d1,PackedSize(a5)
	move.l	(A7)+,A2
	add.l	D1,A2
	bsr.w	GetLongWord
	add.l	d1,OriginalSize(a5)
.skip
	tst.l	12-4(A0)
	beq.b	.skip2
	move.l	A2,-(A7)
	move.l	A0,A2
	addq.l	#8,A2
	bsr.w	GetLongWord
	sub.l	#$200000,D1
	add.l	d1,PackedSize(a5)
	move.l	(A7)+,A2
	add.l	D1,A2
	bsr.w	GetLongWord
	add.l	d1,OriginalSize(a5)
.skip2
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ARP3',DisplayID(a5)
	lea	ByteKillerText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ARPF
	btst.l	#ARPF,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	d1,a2
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ARPF',DisplayID(a5)
	lea	ByteKillerText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ATM5
	btst.l	#ATM5,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ATM5',DisplayID(a5)
	lea	IAMText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ATN
	btst.l	#ATN,d3
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ATN!',DisplayID(a5)
	lea	ATNText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ATOM
	btst.l	#ATOM,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ATOM',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_Ace?
	btst.l	#Ace?,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Ace?',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ArcD
	btst.l	#ArcD,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ArcD',DisplayID(a5)
	lea	ArcDText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ArcR
	btst.l	#ArcR,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#44,d1
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ArcR',DisplayID(a5)
	lea	ArcDText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_arcD
	btst.l	#arcD,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bclr.b	#7,(a2)
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'arcD',DisplayID(a5)
	lea	ArcDText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_BDPI
	btst.l	#BDPI,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'BDPI',DisplayID(a5)
	lea	DupaText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'M',(a0)+
	move.b	#'P',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_BH72
	btst.l	#BH72,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'BH72',DisplayID(a5)
	lea	StoneFakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'S',(a0)+
	move.b	#'4',(a0)+
	move.b	#'0',(a0)+
	move.b	#'4',(a0)
	moveq	#1,d0
	rts
_ID_BH73
	btst.l	#BH73,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'BH73',DisplayID(a5)
	lea	StoneFakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'S',(a0)+
	move.b	#'4',(a0)+
	move.b	#'0',(a0)+
	move.b	#'4',(a0)
	moveq	#1,d0
	rts
_ID_BHC3
	btst.l	#BHC3,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	move.l	(A2)+,D2
	addq.w	#1,A2
	moveq	#0,D1
	move.b	(A2)+,D1
	add.w	D1,A2
	add.w	(A2)+,A2
	add.w	(A2)+,A2
	add.w	(A2)+,A2
	move.l	A2,D1
	add.l	D2,D1
	sub.l	A0,D1
	addq.l	#6,D1
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'BHC3',DisplayID(a5)
	lea	BHC3Text(pc),a2
	move.l	a2,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_BOND
	btst.l	#BOND,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	cmp.b	#'R',-5(a2)
	bne.b	NotShadow
	cmp.b	#'D',(a2)
	bne.b	NotShadow
	moveq	#38,d1
	bra.b	Shadow
NotShadow
	cmp.b	#'A',-5(a2)
	bne.w	_ID_Exit
	cmp.b	#'D',(a2)
	bne.w	_ID_Exit
	moveq	#26,d1
Shadow
	sub.l	d1,a2
	addq.l	#2,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	moveq	#4,d2
DoIt
	bsr.w	GetLongWord
	beq.w	_ID_Exit
	cmp.l	d1,d2
	beq.b	LenOK
	addq.l	#4,d2
	subq.l	#4,a2
	bra.b	DoIt
LenOK
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	d1,PackedSize(a5)
	move.l	a2,a0
	move.l	a0,StartFileID(a5)
	move.l	#'BOND',DisplayID(a5)
	lea	BondText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CHFC
	btst.l	#CHFC,d4
	bne.w	_ID_Exit
	move.l	#'CHFC',DisplayID(a5)
	move.b	#'P',-4(a0)
	move.b	#'P',-3(a0)
	move.b	#'2',-2(a0)
	move.b	#'0',-1(a0)
	bra.w	_IDpp20

_ID_CHFI
	btst.l	#CHFI,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CHFI',DisplayID(a5)
	lea	DupaText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'M',(a0)+
	move.b	#'P',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_CMP1
	btst.l	#CMP1,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CMP1',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CrM
	btst.l	#CrM,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CrM!',DisplayID(a5)
	lea	CrunchManiaText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CrM2
	btst.l	#CrM2,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CrM2',DisplayID(a5)
	lea	CrunchManiaText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_Crm
	btst.l	#Crm,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Crm!',DisplayID(a5)
	lea	CrunchManiaText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_Crm2
	btst.l	#Crm2,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Crm2',DisplayID(a5)
	lea	CrunchManiaText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CRND
	btst.l	#CRND,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,-(a7)
	add.l	#20,d1
	move.l	d1,PackedSize(a5)
;	sub.l	#12,d1
;	add.l	d1,a2
	add.l	(a7)+,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CRND',DisplayID(a5)
	lea	ByteKillerText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CRUa
	btst.l	#CRUa,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CRUa',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CRUN
	btst.l	#CRUN,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CRUN',DisplayID(a5)
	lea	ByteKillerText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_CSFX
	btst.l	#CSFX,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'CSFX',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_D815
	btst.l	#D815,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'D815',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_DHp2
	btst.l	#DHp2,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#4,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'DHp2',DisplayID(a5)
	lea	Ace?Text(pc),a2
	move.l	a2,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_DOUG
	btst.l	#DOUG,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#16,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'DOUG',DisplayID(a5)
	lea	Stone3FakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'S',(a0)+
	move.b	#'3',(a0)+
	move.b	#'0',(a0)+
	move.b	#'0',(a0)
	moveq	#1,d0
	rts
_ID_Dtpk
	btst.l	#Dtpk,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Dtpk',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_Dupa
	btst.l	#Dupa,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Dupa',DisplayID(a5)
	lea	DupaText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'M',(a0)+
	move.b	#'P',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_EDAM
	btst.l	#EDAM,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'EDAM',DisplayID(a5)
	lea	DupaText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'M',(a0)+
	move.b	#'P',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_ESL
	btst.l	#ESL,d4
	bne.w	_ID_Exit
	move.l	#'ESL!',DisplayID(a5)
	move.b	#'P',-4(a0)
	move.b	#'P',-3(a0)
	move.b	#'2',-2(a0)
	move.b	#'0',-1(a0)
	bra.w	_IDpp20
_ID_FB
	btst.l	#FB,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'FB@@',DisplayID(a5)
	lea	LZWHText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'L',(a0)+
	move.b	#'Z',(a0)+
	move.b	#'W',(a0)+
	move.b	#'H',(a0)
	moveq	#1,d0
	rts
_ID_FIRE:
	btst.l	#FIRE,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'FIRE',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_FLT
	btst.l	#FLT,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'FLT!',DisplayID(a5)
	lea	DupaText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'M',(a0)+
	move.b	#'P',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_FRED
	btst.l	#FRED,d4
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'FRED',DisplayID(a5)
	lea	DupaText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'M',(a0)+
	move.b	#'P',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_GC2
	btst.l	#GC2,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'GC!2',DisplayID(a5)
	lea	GraftGoldText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_GC3
	btst.l	#GC3,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'GC!3',DisplayID(a5)
	lea	GraftGoldText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_GP11
	btst.l	#GP11,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	lea	12(a2),a2
	bsr.w	GetLongWord
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	GetLongWord
	beq.w	_ID_Exit
	sub.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'GP11',DisplayID(a5)
	lea	GP11Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_HAL
	btst.l	#HAL,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#4,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'HAL!',DisplayID(a5)
	lea	MasterText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'L',(a0)+
	move.b	#'S',(a0)+
	move.b	#'D',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_HUF
	btst.l	#HUF,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'HUF#',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ICE
	btst.l	#ICE,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ICE!',DisplayID(a5)
	lea	IAMText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_IFT?
	btst.l	#IFT?,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'IFT?',DisplayID(a5)
	lea	ViSLText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'2',(a0)
	moveq	#1,d0
	rts
_ID_IMP
	btst.l	#IMP,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'IMP!',DisplayID(a5)
	lea	IMPText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_Ice
	btst.l	#Ice,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
;	add.l	#17,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Ice!',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_KDUB
	btst.l	#KDUB,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#4,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'KDUB',DisplayID(a5)
	lea	MasterText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'L',(a0)+
	move.b	#'S',(a0)+
	move.b	#'D',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_LR88
	btst.l	#LR88,d5
	bne.w	_ID_Exit
	move.l	#'LR88',DisplayID(a5)
	move.b	#'P',-4(a0)
	move.b	#'P',-3(a0)
	move.b	#'2',-2(a0)
	move.b	#'0',-1(a0)
	bra.w	_IDpp20
_ID_LSD
	btst.l	#LSD,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#4,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'LSD!',DisplayID(a5)
	lea	MasterText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_LZDA
	btst.l	#LZDA,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'LZDA',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_LZSS
	btst.l	#LZSS,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'LZSS',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_LZWH
	btst.l	#LZWH,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'LZWH',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_LeCr
	btst.l	#LeCr,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#32,d1
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#50,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'LeCr',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_MASM
	btst.l	#MASM,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'MASM',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_MASS
	btst.l	#MASS,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'MASS',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_MD12
	btst.l	#MD12,d5
	bne.w	_ID_Exit
	move.l	#'MD12',DisplayID(a5)
	move.b	#'P',-4(a0)
	move.b	#'P',-3(a0)
	move.b	#'2',-2(a0)
	move.b	#'0',-1(a0)
	bra.w	_IDpp20

_ID_MICK
	btst.l	#MICK,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'MICK',DisplayID(a5)
	lea	TSMText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'c',(a0)+
	move.b	#'e',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_MTP1
	btst.l	#MTP1,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'MTP1',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_MTPS
	btst.l	#MTPS,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'MTPS',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_MWC1
	btst.l	#MWC1,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'MWC1',DisplayID(a5)
	lea	RNCFakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'R',(a0)+
	move.b	#'N',(a0)+
	move.b	#'C',(a0)+
	move.b	#1,(a0)
	moveq	#1,d0
	rts
_ID_PAC1
	btst.l	#PAC1,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'PAC1',DisplayID(a5)
	lea	RNCFakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'R',(a0)+
	move.b	#'N',(a0)+
	move.b	#'C',(a0)+
	move.b	#1,(a0)
	moveq	#1,d0
	rts
_ID_PACK
	cmp.b	#'V',(a0)
	bne.w	_ID_Exit
	cmp.b	#'1',1(a0)
	bne.w	_ID_Exit
	cmp.b	#'.',2(a0)
	bne.w	_ID_Exit
	cmp.b	#'2',3(a0)
	bne.w	_ID_Exit

	btst.l	#PACKV12,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#8,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'PACK',DisplayID(a5)
	lea	Master3Text(pc),a2
	move.l	a2,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_PARA
	btst.l	#PARA,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#46,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'PARA',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
PP20Var
	dc.l	ID
Mode
	dc.l	0
ID
	dc.l	0
	dc.b	0

best
	dc.b	'best',0
verygood
	dc.b	'very good',0
good
	dc.b	'good',0
mediocre
	dc.b	'mediocre',0
fast
	dc.b	'fast',0
	even

_ID_PP20
	btst.l	#PP20,d5
	bne.w	_ID_Exit

	move.l	#'PP20',DisplayID(a5)
_IDpp20
	move.l	a0,a2

	bsr.w	GetLongWord

	lea	best(pc),a2
	cmp.l	#$090A0C0D,d1		; best
	beq.w	ModeOk
	lea	verygood(pc),a2
	cmp.l	#$090A0C0C,d1		; very good
	beq.w	ModeOk
	lea	good(pc),a2
	cmp.l	#$090A0B0B,d1		; good
	beq.w	ModeOk
	lea	mediocre(pc),a2
	cmp.l	#$090A0A0A,d1		; mediocre
	beq.w	ModeOk
	lea	fast(pc),a2
	cmp.l	#$09090909,d1		; fast
	bne.w	_ID_Exit
ModeOk
	lea	Mode(pc),a1
	move.l	a2,(a1)
	
	move.l	a0,a2

;	cmpi.b	#$9,(a2)
;	blt.w	_ID_Exit
;	cmpi.b	#$d,(a2)
;	bgt.w	_ID_Exit
;	cmpi.b	#$9,1(a2)
;	blt.w	_ID_Exit
;	cmpi.b	#$d,1(a2)
;	bgt.w	_ID_Exit
;	cmpi.b	#$9,2(a2)
;	blt.w	_ID_Exit
;	cmpi.b	#$d,2(a2)
;	bgt.w	_ID_Exit
;	cmpi.b	#$9,3(a2)
;	blt.w	_ID_Exit
;	cmpi.b	#$d,3(a2)
;	bgt.w	_ID_Exit

	subq.l	#4,a0
	move.l	a0,StartFileID(a5)

	tst.l	NextID(a5)
	bne.w	Next

	movem.l	d0-a6,-(a7)

	lea	ID(pc),a0
	move.l	DisplayID(a5),(a0)

	lea	PP20CalcText(pc),a0
	lea	PP20Var(pc),a1
	bsr.w	Printf

	movem.l	(a7)+,d0-a6

	tst.l	IncVar(a5)		;czy inc file name
	bne.b	Trac

	bsr.w	TraceOrNot
	tst.l	d0
	beq.w	ContSeaID
Trac
	movem.l	d0-a6,-(a7)

	lea	PP20Calc2Text(pc),a0
	bsr.w	PrintStatus

	movem.l	(a7)+,d0-a6

	move.l	#-1,NextID(a5)

	move.l	a0,-(a7)
	addq.l	#2,a0
	move.l	AllocEnd(a5),a1

	move.l	DisplayID(A5),-(A7)

	bsr.w	Search			;szukanie nastepnego pliku
	beq.w	PPNoFind		;nic nie znalazl jezeli 0
	bmi.w	PPAbort			;przerwanie szukania

	move.l	(A7)+,DisplayID(A5)

	move.l	StartFileID(a5),d0	;nastepny ID
Tracing:
	move.l	(a7)+,a0		;ID glowny PP20
	move.l	a0,StartFileID(a5)

	bsr.w	PP20Trace
	tst.l	d0
	beq.b	TraceError

	move.l	d1,OriginalSize(a5)
	move.l	d0,PackedSize(a5)

;	move.l	#'PP20',DisplayID(a5)
	lea	PowerPackerText(pc),a0
	move.l	a0,AboutPacker(a5)

;	move.l	StartFileID(A5),a0
;	move.b	#'P',(a0)+
;	move.b	#'P',(a0)+
;	move.b	#'2',(a0)+
;	move.b	#'0',(a0)

	moveq	#0,d0
	bsr.w	FillZero		;skasowanie paska kolorem tla

	clr.l	NextID(a5)
Next:
	moveq	#1,d0
	rts
PPNoFind:
	addq.w	#4,A7
	move.l	AllocEnd(a5),d0
	bra.b	Tracing
PPAbort:
	addq.w	#4,A7
	move.l	(a7)+,StartFileID(a5)
	clr.l	NextID(a5)
	moveq	#-1,d0
	rts
TraceError:
	clr.l	OriginalSize(a5)
	clr.l	PackedSize(a5)
;	move.l	#'PP20',DisplayID(a5)
	lea	PowerPackerText(pc),a0
	move.l	a0,AboutPacker(a5)
	clr.l	NextID(a5)
	moveq	#1,d0
	rts

TraceOrNot:
	movem.l	d1-a6,-(a7)

	bsr.w	WorkPointer

	lea	TraceOrNotText(pc),a1
	lea	TraceOrNotGad(pc),a2
	sub.l	a3,a3
	sub.l	a4,a4
	lea	SaveOrContTags(pc),a0
	move.l	ReqBase(a5),a6
	jsr	rtEZRequestA(a6)

	move.l	d0,-(a7)

	bsr.w	WaitPointer

	move.l	(a7)+,d0

	movem.l	(a7)+,d1-a6

	rts

TraceOrNotText:
	dc.b	'Calculate PP20 file length ?',0
TraceOrNotGad:
	dc.b	'_Yes|_No',0
	CNOP 0,2

ContSeaID:
	movem.l	d0-a6,-(a7)
	lea	ContinueSearch(pc),a0
	bsr.w	PrintStatus
	movem.l	(a7)+,d0-a6

	move.l	#'PP20',d0
	move.l	StartFileID(a5),a0
	addq.l	#4,a0
	move.l	AllocEnd(a5),a1
	bra.w	_ID_Exit

PP20Trace:
	movem.l	d0/a0,-(a7)

	lea	Trace(pc),a0
	bsr.w	PrintStatus

	movem.l	(a7)+,d0/a0

	sub.l	a0,d0
	lea	Pointer(pc),a1
	moveq	#0,d1
	sub.l	a2,a2
	move.l	XfdBase(a5),a6
	jsr	xfdScanData(a6)

	tst.w	d0
	bne.b	ScanError

	move.l	Pointer(pc),a0
	move.l	xfdsn_SaveLen(a0),d0
	move.l	xfdsn_Save(a0),a1
	add.l	d0,a1
	move.l	-(a1),d1
	lsr.l	#8,d1

	movem.l	d0-d1,-(a7)

	move.l	Pointer(pc),a1
	jsr	xfdFreeScanList(a6)

	movem.l	(a7)+,d0-d1
	rts
ScanError:
	jsr	xfdGetErrorText(a6)
	lea	StatusText(pc),a0
	lea	StatusVar(pc),a1
	move.l	d0,(a1)
	bsr.w	Printf
	moveq	#0,d0
	rts
Pointer:
	dc.l	0

_ID_PaCK
	btst.l	#PaCK,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'PaCK',DisplayID(a5)
	lea	PaCKText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_PaK0
	btst.l	#PaK0,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'PaK0',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_pack
	btst.l	#pack,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	move.l	#0,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'pack',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_RNC0
	btst.l	#RNC0,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#8,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'RNC0',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_RNC1
	btst.l	#RNC1,d5
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit

	tst.l	RNC_old(a5)
	bne.b	_RNC1

	add.l	#18,d1
	bra.b	Siz
_RNC1
	add.l	#12,d1
Siz
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'RNC1',DisplayID(a5)

	tst.l	RNC_old(a5)
	bne.b	_RNC11

	lea	RNCText(pc),a0
	bra.b	Tex
_RNC11
	lea	RNCOldText(pc),a0
Tex
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_RNC2
	btst.l	#RNC2,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit

	tst.l	RNC_old(a5)
	bne.b	_RNC2

	add.l	#18,d1
	bra.b	Siz2
_RNC2
	add.l	#12,d1
Siz2
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'RNC2',DisplayID(a5)

	tst.l	RNC_old(a5)
	bne.b	_RNC21

	lea	RNCText(pc),a0
	bra.b	Tex2
_RNC21
	lea	RNCOldText(pc),a0
Tex2
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_S300
	btst.l	#S300,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#16,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'S300',DisplayID(a5)
	lea	StoneText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_S310
	btst.l	#S310,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'S310',DisplayID(a5)
	lea	StoneText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_S400
	btst.l	#S400,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'S400',DisplayID(a5)
	lea	StoneText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_S401
	btst.l	#S401,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'S401',DisplayID(a5)
	lea	StoneText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_S403
	btst.l	#S403,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#20,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'S403',DisplayID(a5)
	lea	StoneText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_S404
	btst.l	#S404,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'S404',DisplayID(a5)
	lea	StoneText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SFCD
	btst.l	#SFCD,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'SFCD',DisplayID(a5)
	lea	PMCText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SFHD
	btst.l	#SFHD,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'SFHD',DisplayID(a5)
	lea	PMCText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SLAM
	btst.l	#SLAM,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#18,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'SLAM',DisplayID(a5)
	lea	StoneFakeText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'S',(a0)+
	move.b	#'4',(a0)+
	move.b	#'0',(a0)+
	move.b	#'4',(a0)
	moveq	#1,d0
	rts
_ID_SPv3
	btst.l	#SPv3,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#8,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'SPv3',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_SSUR
	btst.l	#SSUR,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	GetLongWord
	beq.w	_ID_Exit
	andi.l	#$0000e0ff,d1
	bne.w	_ID_Exit
	move.b	(a2),d1
	ror.l	#8,d1
	move.b	1(a2),d1
	ror.l	#8,d1
	move.b	2(a2),d1
	ror.l	#8,d1
	move.b	3(a2),d1
	ror.l	#8,d1
	move.l	d1,OriginalSize(a5)
	clr.l	PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'SSUR',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_T.S
	cmp.b	#'2',(a0)
	bne.w	_ID_Exit
	cmp.b	#'.',1(a0)
	bne.w	_ID_Exit
	cmp.b	#'0',2(a0)
	bne.w	_ID_Exit
	cmp.b	#'0',3(a0)
	bne.w	_ID_Exit
	move.l	a0,-(A7)
	lea	TurtleSmasher2(pc),a0
	bsr.w	PrintStatus
	move.l	(A7)+,a0
	bra.w	_ID_Exit
_ID_TITS
	btst.l	#TITS,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	move.l	a0,a2
	subq.l	#4,a2
	add.l	d1,a2
	bsr.w	GetLongWord
	beq.w	_ID_Exit
	lsr.l	#8,d1
	andi.l	#$001fffff,d1
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	move.l	a0,StartFileID(a5)
	move.l	#'TITS',DisplayID(a5)
	lea	TITSText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_TPWM
	btst.l	#TPWM,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a0

	movem.l	d1-a6,-(a7)
	bsr.w	TPWM_Decr
	move.l	a6,d0
	movem.l	(a7)+,d1-a6

	sub.l	a0,d0
	move.l	d0,PackedSize(a5)
	move.l	a0,StartFileID(a5)
	move.l	#'TPWM',DisplayID(a5)
	lea	TPWMText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
TPWM_Decr:
	lea	(a0),a6
	sub.l	a5,a5
	move.l	(A6)+,D0
	move.l	(A6)+,D7
	movea.l	A5,A4
	adda.l	D7,A4
lbC000008:
;	cmpa.l	a6,a2
;	beq.b	Err
	move.b	(A6)+,D0
	moveq	#7,D7
lbC00000C:
	add.b	D0,D0
	bcs.s	lbC00001E
;	move.b	(A6)+,(A5)+
	addq.l	#1,a6
	addq.l	#1,a5
lbC000012:
	cmpa.l	A5,A4
	bls.s	lbC00001C
	dbra	D7,lbC00000C
	bra.s	lbC000008
lbC00001C:
	rts
lbC00001E:
;	cmpa.l	a6,a2
;	beq.b	Err
	move.b	(A6)+,D1
	moveq	#0,D2
	move.b	D1,D2
	asl.w	#4,D2
	move.b	(A6)+,D2
	andi.w	#15,D1
	addq.w	#2,D1
	movea.l	A5,A3
	suba.w	D2,A3
lbC000032:
;	move.b	(A3)+,(A5)+
	addq.l	#1,a3
	addq.l	#1,a5
	dbra	D1,lbC000032
	bra.s	lbC000012
_ID_TSM
	btst.l	#TSM,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'TSM!',DisplayID(a5)
	lea	TSMText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'c',(a0)+
	move.b	#'e',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_Taz
	btst.l	#Taz,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Taz!',DisplayID(a5)
	lea	TazText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'I',(a0)+
	move.b	#'C',(a0)+
	move.b	#'E',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_VDCO
	btst.l	#VDCO,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#13,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'VDCO',DisplayID(a5)
	lea	VDCOText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_VOL1
	btst.l	#VOL1,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	GetLongWord
	beq.w	_ID_Exit
	andi.l	#$001fffff,d1
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'VOL1',DisplayID(a5)
	lea	LOBText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_ViS1
	btst.l	#ViS1,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ViS1',DisplayID(a5)
	lea	ViS1Text(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_ViSL
	btst.l	#ViSL,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'ViSL',DisplayID(a5)
	lea	ViSLText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'2',(a0)
	moveq	#1,d0
	rts
_ID_Vic2
	btst.l	#Vic2,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'Vic2',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_WJSD
	btst.l	#WJSD,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#4,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'WJSD',DisplayID(a5)
	lea	MasterText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'L',(a0)+
	move.b	#'S',(a0)+
	move.b	#'D',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts
_ID_XP10
	btst.l	#XP10,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	lea	12(a2),a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#20,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'XP10',DisplayID(a5)
	lea	Ace?Text(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_XPKF
	btst.l	#XPKF,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#8,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	subq.l	#8,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	addq.l	#8,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'XPK ',DisplayID(a5)

	move.l	a0,a2
	addq.l	#8,a2
	bsr.w	GetLongWord
	lea	xpkID(pc),a1
Comp:
	move.l	(a1)+,d0
	cmp.l	d0,d1
	beq.b	Findxpk
	addq.l	#4,a1
	tst.l	(a1)
	beq.b	NoFindxpk
	bra.b	Comp
Findxpk:
	move.l	(a1),AboutPacker(a5)
	bra.b	NoXpk
NoFindxpk:
	lea	XPKFText+3(pc),a1
	addq.l	#8,a0
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+
	move.b	(a0),(a1)
	lea	XPKFText(pc),a0
	move.l	a0,AboutPacker(a5)
NoXpk:	
	moveq	#1,d0
	rts
_ID_XPKZ
	btst.l	#XPKZ,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'XPKZ',DisplayID(a5)
	lea	ViSLText(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'2',(a0)
	moveq	#1,d0
	rts
_ID_XX50
	btst.l	#XX50,d6
	bne.w	_ID_Exit
	move.l	#'XX50',DisplayID(a5)
	move.b	#'P',-4(a0)
	move.b	#'P',-3(a0)
	move.b	#'2',-2(a0)
	move.b	#'0',-1(a0)
	bra.w	_IDpp20
_ID_xVdg
	btst.l	#xVdg,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	sub.l	#12,d1
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#12,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'xVdg',DisplayID(a5)
	lea	xVdgText(pc),a0
	move.l	a0,AboutPacker(a5)
	moveq	#1,d0
	rts
_ID_xXxX
	btst.l	#xXxX,d6
	bne.w	_ID_Exit
	move.l	a0,a2
	addq.l	#2,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	move.l	d1,OriginalSize(a5)
	addq.l	#4,a2
	bsr.w	TestFileSize
	beq.w	_ID_Exit
	add.l	#14,d1
	move.l	d1,PackedSize(a5)
	subq.l	#4,a0
	move.l	a0,StartFileID(a5)
	move.l	#'xXxX',DisplayID(a5)
	lea	ViS1Text(pc),a2
	move.l	a2,AboutPacker(a5)
	move.b	#'C',(a0)+
	move.b	#'r',(a0)+
	move.b	#'M',(a0)+
	move.b	#'!',(a0)
	moveq	#1,d0
	rts

****************************************************************************

TestFileSize:
	move.b	(a2),d1
	lsl.l	#8,d1
	move.b	1(a2),d1
	lsl.l	#8,d1
	move.b	2(a2),d1
	lsl.l	#8,d1
	move.b	3(a2),d1
	tst.l	d1
	beq.b	NoID
	move.l	d1,-(a7)
	andi.l	#$ffe00000,d1
	bne.b	NoID_2
	move.l	(a7)+,d1
	tst.l	d1
	rts
NoID_2
	addq.l	#4,a7
NoID
	moveq	#0,d1
	tst.l	d1
	rts

GetLongWord:
	move.b	(a2),d1
	lsl.l	#8,d1
	move.b	1(a2),d1
	lsl.l	#8,d1
	move.b	2(a2),d1
	lsl.l	#8,d1
	move.b	3(a2),d1
	tst.l	d1
	rts

GetWord:
	moveq	#0,d1
	move.b	(a2),d1
	lsl.l	#8,d1
	move.b	1(a2),d1
	rts

***************************************************************************

Decrunch:
;	tst.l	RNC_old(a5)
;	bne.w	RNC_old_decrunch

	move.l	XfdBase(a5),a6
	moveq	#XFDOBJ_BUFFERINFO,d0
	jsr	xfdAllocObject(a6)
	move.l	d0,a4
	beq.w	ErrorAlloc

	moveq	#0,d0
	bset	#XFDPFB_DATA,d0
	move.w	d0,xfdbi_PackerFlags(a4)
	moveq	#0,d0
	bset	#XFDFB_RECOGEXTERN,d0
	move.w	d0,xfdbi_Flags(a4)
Pa
	move.l	StartFileID(a5),xfdbi_SourceBuffer(a4)
	move.l	PackedSize(a5),xfdbi_SourceBufLen(a4)
	tst.l	PackedSize(a5)
	bne.b	PackedOk
	move.l	OriginalSize(a5),xfdbi_SourceBufLen(a4)
PackedOk:
	move.l	a4,a0
	move.l	XfdBase(a5),a6
	jsr	xfdRecogBuffer(a6)
	tst.l	d0
	beq.b	DecrunchError

	lea	Decrunching(pc),a0
	bsr.w	PrintStatus

	move.l	#$10001,xfdbi_TargetBufMemType(a4)
	move.l	a4,a0
	move.l	XfdBase(a5),a6
	jsr	xfdDecrunchBuffer(a6)
	tst.l	d0
	beq.b	DecrunchError

	move.l	StartFileID(a5),-(a7)
	move.l	xfdbi_TargetBuffer(a4),StartFileID(a5)

	move.l	PackedSize(a5),-(a7)
	move.l	xfdbi_TargetBufSaveLen(a4),PackedSize(a5)

	bsr.w	SaveFile

	move.l	(a7)+,PackedSize(a5)
	move.l	(a7)+,StartFileID(a5)

	move.l	xfdbi_TargetBufLen(a4),d0
	move.l	xfdbi_TargetBuffer(a4),a1
	move.l	Exec.w,a6
	jsr	FreeMem(a6)

	clr.l	DecrError(a5)

QuitDecrunch:
	clr.l	KeyVar

	move.l	a4,a1
	move.l	XfdBase(a5),a6
	jsr	xfdFreeObject(a6)

	tst.l	DecrVar(a5)
	bne.w	ContSearch

	bra.w	SOC

DecrunchError:
	move.w	xfdbi_Error(a4),d0
	jsr	xfdGetErrorText(a6)

	lea	StatusText(pc),a0
	lea	StatusVar(pc),a1
	move.l	d0,(a1)
	bsr.w	Printf

	cmp.w	#XFDERR_WRONGKEY,xfdbi_Error(A4)
	bne.w	NotWrong

	move.l	DisplayID(a5),d0
	and.l	#$ffffff00,d0
	cmp.l	#'RNC '-32,d0
	bne.w	NotWrong

	tst.l	KeyVar
	beq.	Pa2
More
	moveq	#4,d0
	lea	KeyBuffer(pc),a1
	lea	KeyTitle(pc),a2
	sub.l	a3,a3
	lea	KeyTags(pc),a0
	move.l	ReqBase(a5),a6
	jsr	rtGetStringA(a6)
	tst.l	d0
	beq.w	NotWrong

	lea	KeyBuffer(pc),a0

	moveq	#3,d0
Lops
	cmp.b	#'0',(a0)
	bcs.b	More
	cmp.b	#'9',(a0)
	bhi.b	Anoth
	bra.b	NextChar
Anoth
	cmp.b	#'A',(a0)
	bcs.b	More
	cmp.b	#'F',(a0)
	bhi.b	Anoth2
	bra.b	NextChar
Anoth2
	cmp.b	#'a',(a0)
	bcs.b	More
	cmp.b	#'f',(a0)
	bhi.b	More
NextChar
	addq.l	#1,a0
	dbf	d0,Lops

	lea	KeyBuffer(pc),a0
	moveq	#3,d3
	moveq	#0,d4
Lops2
	lea	KeyTable(pc),a1
	lea	KeySub(pc),a2
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	move.b	(a0)+,d0
CompChar
	move.b	(a1)+,d1
	addq.w	#1,d2
	cmp.b	d0,d1
	bne.b	CompChar
	subq.w	#1,d2
	sub.b	(a2,d2.w),d0
	rol.w	#4,d4
	or.b	d0,d4
	dbf	d3,Lops2
	
	lea	KeyRaw(pc),a0
	move.w	d4,(a0)

Pa2
	st	KeyVar

	moveq	#0,d0
	bset	#XFDPFB_KEY16,d0
	move.w	d0,xfdbi_PackerFlags(A4)
	lea	KeyRaw(pc),a0
	move.l	A0,xfdbi_Special(A4)
	bra.w	Pa

NotWrong
	tst.l	DecrVar(a5)
	beq.w	QuitDecrunch

	addq.l	#1,DecrError(a5)

	bra.w	QuitDecrunch

ErrorAlloc:
	lea	ErrorAllocBufInfo(pc),a0
	bsr.w	PrintStatus

	tst.l	DecrVar(a5)
	bne.w	ContSearch

	bra.w	SOC

StatusVar:
	dc.l	0
KeyVar
	dc.l	0
KeyRaw
	dc.w	0	;$1984
KeyBuffer
	dc.b	'1984',0,0
KeyTags:
	dc.l	RT_Window
WindowCont2:
	dc.l	0
	dc.l	RT_ReqPos,REQPOS_CENTERWIN
	dc.l	RT_WaitPointer,1
	dc.l	RT_Underscore,'_'
	dc.l	RT_LockWindow,1
	dc.l	RTGS_TextFmt,KeyText
	dc.l	0
KeyText
	dc.b	'Min: 0000, Max: FFFF',0
KeyTitle
	dc.b	'Enter a 16 bit key:',0
KeyTable
	dc.b	'0123456789ABCDEFabcdef',0
KeySub
	dc.b	'0000000000','A'-10,'A'-10,'A'-10,'A'-10,'A'-10,'A'-10,'a'-10,'a'-10,'a'-10,'a'-10,'a'-10,'a'-10

	CNOP 0,2

;RNC_old_decrunch
;	move.l	OriginalSize(a5),d0
;	move.l	#$10001,d1	;Public i Clear
;	move.l	Exec.w,a6
;	jsr	AllocMem(a6)
;	move.l	d0,BufOldRNC(A5)
;	beq.w	ErrorAlloc

;	lea	Decrunching(pc),a0
;	bsr.w	PrintStatus

;	bsr.w	DecrOldRNC
;	tst.l	d0
;	beq.w	RNCOldOk

;	move.w	#XFDERR_CORRUPTEDDATA,d0
;	move.l	XfdBase(a5),a6
;	jsr	xfdGetErrorText(a6)

;	lea	StatusText(pc),a0
;	lea	StatusVar(pc),a1
;	move.l	d0,(a1)
;	bsr.w	Printf

;	addq.l	#1,DecrError(a5)

;	bra.b	FreeRNCOld

;RNCOldOk
;	move.l	StartFileID(a5),-(a7)
;	move.l	BufOldRNC(a5),StartFileID(a5)

;	move.l	PackedSize(a5),-(a7)
;	move.l	OriginalSize(a5),PackedSize(a5)

;	bsr.w	SaveFile

;	move.l	(a7)+,PackedSize(a5)
;	move.l	(a7)+,StartFileID(a5)

;	clr.l	DecrError(a5)

;FreeRNCOld
;	move.l	OriginalSize(a5),d0
;	move.l	BufOldRNC(a5),a1
;	move.l	Exec.w,a6
;	jsr	FreeMem(a6)

;	tst.l	DecrVar(a5)
;	bne.w	ContSearch

;	bra.w	SOC

;DecrOldRNC
;	move.l	StartFileID(a5),a0
;	move.l	BufOldRNC(A5),a1

;	cmp.b	#02,3(a0)
;	beq.w	RNC2_old

;RNC1_old
;	movem.l	D1-D7/A0-A6,-(SP)

;	move.l	A7,A4
	
;	bsr.s	lbC000060
;	cmp.l	#$524E4301,D0
;	bne.w	ErrorRNC1Old

;	bsr.s	lbC000060
;	lea	(A1,D0.L),A3

;	bsr.s	lbC000060
;	lea	(A0,D0.L),A6

;	move.b	-(A6),D3
;lbC000028:
;	bsr.s	lbC00006C
;	addq.w	#1,D5

;	cmp.l	A0,A6
;	bcs.w	ErrorRNC1Old
;	beq.w	RNC1OldEnd

;	bsr.w	lbC0000C2
;	bsr.w	lbC0000F6
;	subq.w	#1,D6

;	lea	0(A3,D7.W),A2
;	ext.l	D6
;	adda.w	D6,A2
;	tst.w	D7
;	bne.s	lbC00004A
;	lea	1(A3),A2
;lbC00004A:
;	cmp.l	A1,A2
;	bls.w	ErrorRNC1Old
;	cmp.l	A1,A3
;	bls.w	ErrorRNC1Old

;	move.b	-(A2),-(A3)

;	dbra	D6,lbC00004A
;	bra.s	lbC000028

;lbC000060:
;	moveq	#3,D1
;lbC000062:
;	lsl.l	#8,D0
;	move.b	(A0)+,D0
;	dbra	D1,lbC000062
;	rts

;lbC00006C:
;	moveq	#-1,D5
;	bsr.s	lbC0000B8
;	bcc.s	lbC0000AE
;	moveq	#0,D5
;	bsr.s	lbC0000B8
;	bcc.s	lbC0000A4
;	moveq	#3,D1
;lbC00007A:
;	clr.w	D5
;	move.b	lbB0000B0(PC,D1.W),D0
;	ext.w	D0
;	moveq	#-1,D2
;	lsl.w	D0,D2
;	not.w	D2
;	subq.w	#1,D0
;lbC00008A:
;	bsr.s	lbC0000B8
;	roxl.w	#1,D5
;	dbra	D0,lbC00008A
;	tst.w	D1
;	beq.s	lbC00009C
;	cmp.w	D5,D2
;	dbne	D1,lbC00007A
;lbC00009C:
;	move.b	lbB0000B4(PC,D1.W),D0
;	ext.w	D0
;	add.w	D0,D5
;lbC0000A4:
;	move.w	D5,-(SP)
;lbC0000A6:
;	cmp.l	A0,A6
;	bls.w	ErrorRNC1Old
;	cmp.l	A1,A3
;	bls.w	ErrorRNC1Old

;	move.b	-(A6),-(A3)
;	dbra	D5,lbC0000A6
;	move.w	(SP)+,D5
;lbC0000AE:
;	rts

;lbB0000B0:
;	dc.b	10
;	dc.b	3
;	dc.b	2
;	dc.b	2
;lbB0000B4:
;	dc.b	14
;	dc.b	7
;	dc.b	4
;	dc.b	1

;lbC0000B8:
;	lsl.b	#1,D3
;	bne.s	lbC0000C0

;	cmp.l	A0,A6
;	bls.w	ErrorRNC1Old

;	move.b	-(A6),D3
;	roxl.b	#1,D3
;lbC0000C0:
;	rts

;lbC0000C2:
;	moveq	#3,D0
;lbC0000C4:
;	bsr.s	lbC0000B8
;	bcc.s	lbC0000CC
;	dbra	D0,lbC0000C4
;lbC0000CC:
;	clr.w	D6
;	addq.w	#1,D0
;	move.b	lbB0000EC(PC,D0.W),D1
;	beq.s	lbC0000E2
;	ext.w	D1
;	subq.w	#1,D1
;lbC0000DA:
;	bsr.s	lbC0000B8
;	roxl.w	#1,D6
;	dbra	D1,lbC0000DA
;lbC0000E2:
;	move.b	lbB0000F1(PC,D0.W),D1
;	ext.w	D1
;	add.w	D1,D6
;	rts

;lbB0000EC:
;	dc.b	10
;	dc.b	2
;	dc.b	1
;	dc.b	0
;	dc.b	0
;lbB0000F1:
;	dc.b	10
;	dc.b	6
;	dc.b	4
;	dc.b	3
;	dc.b	2

;lbC0000F6:
;	moveq	#0,D7
;	cmp.w	#2,D6
;	beq.s	lbC000120
;	moveq	#1,D0
;lbC000100:
;	bsr.s	lbC0000B8
;	bcc.s	lbC000108
;	dbra	D0,lbC000100
;lbC000108:
;	addq.w	#1,D0
;	move.b	lbB000138(PC,D0.W),D1
;	ext.w	D1
;lbC000110:
;	bsr.s	lbC0000B8
;	roxl.w	#1,D7
;	dbra	D1,lbC000110
;	lsl.w	#1,D0
;	add.w	lbB00013C(PC,D0.W),D7
;	rts

;lbC000120:
;	moveq	#5,D0
;	clr.w	D1
;	bsr.s	lbC0000B8
;	bcc.s	lbC00012C
;	moveq	#8,D0
;	moveq	#$40,D1
;lbC00012C:
;	bsr.s	lbC0000B8
;	roxl.w	#1,D7
;	dbra	D0,lbC00012C
;	add.w	D1,D7
;	rts

;lbB000138:
;	dc.b	11
;	dc.b	4
;	dc.b	7
;	dc.b	0
;lbB00013C:
;	dc.b	1
;	dc.b	$20
;	dc.b	0
;	dc.b	0
;	dc.b	0
;	dc.b	$20
;	dc.b	0
;	dc.b	0

;RNC1OldEnd
;	moveq	#0,D0
;	bra.b	lbC000158

;ErrorRNC1Old
;	move.l	A4,A7
;	moveq	#-1,D0
;lbC000158:
;	movem.l	(SP)+,D1-D7/A0-A6
;	rts

;RNC2_old
;	movem.l	D1-D7/A0-A6,-(SP)

;	move.l	A7,A4

;	bsr.w	lbC00025A
;	cmp.l	#$524E4302,D1
;	bne.w	ErrorRNC2Old

;	bsr.w	lbC00025A
;	lea	(A1,D1.L),A3

;	bsr.w	lbC00025A
;	lea	(A0,D1.L),A6

;	lea	lbB000250(PC),A5
;	move.b	-(A6),D4
;	andi.w	#15,D4
;	move.b	D4,(A5)
;	move.b	(A6),D4
;	lsr.b	#4,D4
;	move.b	D4,-8(A5)

;	move.b	-(A6),D3
;lbC00019E:
;	bsr.s	lbC000206
;	bcc.s	lbC0001C6
;	moveq	#0,D6
;	bsr.s	lbC000206
;	bcc.s	lbC0001C0
;	moveq	#1,D2
;	moveq	#0,D5
;	moveq	#1,D6
;	bra.s	lbC0001B6

;lbC0001B0:
;	add.w	D2,D2
;	addq.w	#1,D2
;	addq.w	#1,D5
;lbC0001B6:
;	move.w	D5,D0
;	bsr.s	lbC000210
;	add.w	D7,D6
;	cmp.w	D2,D7
;	bge.s	lbC0001B0
;lbC0001C0:

;	cmp.l	A0,A6
;	bls.w	ErrorRNC2Old
;	cmp.l	A1,A3
;	bls.w	ErrorRNC2Old

;	move.b	-(A6),-(A3)
;	dbra	D6,lbC0001C0
;lbC0001C6:

;	cmp.l	A0,A6
;	bcs.w	ErrorRNC2Old
;	beq.w	RNC2OldEnd

;	moveq	#1,D6
;	bsr.s	lbC000206
;	bcc.s	lbC000226
;	moveq	#2,D1
;lbC0001D2:
;	bsr.s	lbC000206
;	dbcc	D1,lbC0001D2
;	move.b	-7(A5,D1.W),D0
;	bmi.s	lbC0001E2
;	bsr.s	lbC000210
;	move.w	D7,D6
;lbC0001E2:
;	move.b	-3(A5,D1.W),D0
;	ext.w	D0
;	add.w	D0,D6
;	moveq	#1,D1
;lbC0001EC:
;	bsr.s	lbC000206
;	dbcc	D1,lbC0001EC
;	move.b	1(A5,D1.W),D0
;	bsr.s	lbC000210
;	add.w	D1,D1
;	add.w	6(A5,D1.W),D7
;	bne.s	lbC000238
;lbC000200:

;	lea	1(A3),A2

;	bra.s	lbC00023E

;lbC000206:
;	add.b	D3,D3
;	bne.s	lbC00020E

;	cmp.l	A0,A6
;	bls.b	ErrorRNC2Old

;	move.b	-(A6),D3
;	addx.b	D3,D3
;lbC00020E:
;	rts

;lbC000210:
;	ext.w	D0
;	moveq	#0,D7
;lbC000214:
;	add.b	D3,D3
;	bne.s	lbC00021C

;	cmp.l	A0,A6
;	bls.b	ErrorRNC2Old

;	move.b	-(A6),D3
;	addx.b	D3,D3
;lbC00021C:
;	addx.w	D7,D7
;	dbra	D0,lbC000214
;	rts

;lbC000226:
;	moveq	#5,D0
;	moveq	#0,D1
;	bsr.s	lbC000206
;	bcc.s	lbC000232
;	moveq	#8,D0
;	moveq	#$40,D1
;lbC000232:
;	bsr.s	lbC000210
;	add.w	D1,D7
;	beq.s	lbC000200
;lbC000238:
;	add.w	D6,D7

;	lea	0(A3,D7.W),A2

;lbC00023E:

;	cmp.l	A1,A2
;	bls.b	ErrorRNC2Old
;	cmp.l	A1,A3
;	bls.b	ErrorRNC2Old
;	move.b	-(A2),-(A3)

;	dbra	D6,lbC00023E
;	bra.w	lbC00019E

;	dc.b	9
;	dc.b	1
;	dc.b	0
;	dc.b	$FF
;	dc.b	9
;	dc.b	5
;	dc.b	3
;	dc.b	1
;lbB000250:
;	dc.b	11
;	dc.b	4
;	dc.b	7
;	dc.b	0
;	dc.b	1
;	dc.b	$20
;	dc.b	0
;	dc.b	0
;	dc.b	0
;	dc.b	$20

;lbC00025A:
;	moveq	#3,D2
;lbC00025C:
;	lsl.l	#8,D1
;	move.b	(A0)+,D1
;	dbra	D2,lbC00025C
;	rts

;RNC2OldEnd
;	moveq	#0,D0
;	bra.b	lbC000280

;ErrorRNC2Old
;	move.l	A4,A7
;	moveq	#-1,D0
;lbC000280:
;	movem.l	(SP)+,D1-D7/A0-A6
;	rts

***************************************************************************

PrintID:
	movem.l	d0-a6,-(a7)

	lea	Arguments+4(pc),a0
	move.l	OriginalSize(a5),(a0)+
	move.l	PackedSize(a5),(a0)+
	move.l	AboutPacker(a5),(a0)

	lea	FilesID(pc),a0
	move.l	DisplayID(a5),(a0)

	tst.l	PackedSize(a5)
	beq.b	Zero

	lea	FoundIDText(pc),a0
	lea	Arguments(pc),a1
	bsr.w	Printf

ZeroCont:
	move.l	StartFileID(a5),EndFile(a5)
	move.l	PackedSize(a5),d0
	tst.l	PackedSize(a5)
	bne.b	.NoZero
	move.l	OriginalSize(a5),d0
.NoZero
	add.l	d0,EndFile(a5)

	lea	FileInMem(pc),a0
	lea	StartFileID(a5),a1
	bsr.w	Printf

	lea	BufferInMem(pc),a0
	lea	AllocStart(a5),a1
	bsr.w	Printf

	movem.l	(a7)+,d0-a6
	rts

Zero:
	lea	FoundIDTextZero(pc),a0
	lea	Arguments(pc),a1
	bsr.w	Printf

	bra.b	ZeroCont

***************************************************************************

SaveOrCont:
	bsr.w	WorkPointer

	tst.l	PackedSize(a5)
	beq.b	ZeroInfo

	lea	SaveOrContText(pc),a1
	lea	SaveOrContGad(pc),a2
	sub.l	a3,a3
	lea	Arguments(pc),a4
	lea	SaveOrContTags(pc),a0
	move.l	ReqBase(a5),a6
	jsr	rtEZRequestA(a6)

	bsr.w	WaitPointer
	rts

ZeroInfo:
	lea	Unknown(pc),a0
	lea	Arguments(pc),a4
	move.l	a0,8(a4)

	lea	UnknownText(pc),a1
	lea	SaveOrContGad(pc),a2
	sub.l	a3,a3
	lea	SaveOrContTags(pc),a0
	move.l	ReqBase(a5),a6
	jsr	rtEZRequestA(a6)

	bsr.w	WaitPointer
	rts

SaveOrContTags:
	dc.l	RT_Window
WindowCont:
	dc.l	0
	dc.l	RT_ReqPos,REQPOS_CENTERWIN
	dc.l	RT_WaitPointer,1
	dc.l	RT_Underscore,'_'
	dc.l	RT_LockWindow,1
	dc.l	RTEZ_ReqTitle,InfoGad
	dc.l	0

Arguments:
	dc.l	FilesID
	dc.l	0
	dc.l	0
	dc.l	0
FilesID:
	dc.l	0
	dc.b	0

SaveOrContText:
	dc.b	'File ID              : %s',10
	dc.b	'File original length : %ld bytes',10
	dc.b	'File   packed length : %ld bytes',10
	dc.b	'Comment about packer : %s',0

SaveOrContGad:
	dc.b	'_Save file|_Decrunch & save|_Abort|_Continue',0

InfoGad:
	dc.b	'Information',0

UnknownText:
	dc.b	'File ID              : %s',10
	dc.b	'File original length : %ld bytes',10
	dc.b	'File   packed length : %s',10
	dc.b	'Comment about packer : %s',0

Unknown:
	dc.b	'unknown',0

;	MSS			game Ran Trainer
;	CMP1			game ?
;	PAKO			game Project Battlefield
;	SAND			game Project Battlefield
;	LOB			game Chambers of Shaolin ( #$C350 )
;				game Last Ninja Remix ( #$5000 )
;				game Stone Age ( #$BB8 )
;				game Amberstar ( #$??? )
;				game Ambermoon ( #$400 i #$800 )
;				game Wings Of Death ( #$9C4 )
;	AXIS			demo Big Time Sensuality
;	Graftgold		game Empire Soccer
;	FUCK			game 9 lives
;	JEK! (end of file)	game Seven Gates Of Jambala
;	HUFF			game Last Ninja II
;	MARC (end of file)	game Flimbo's Quest,Venom
;	CHFI			game Bubble & Squeak (AudioGenic)
;				game Dizzy (IMP!)
;	CHFC			Code Masters (PP20)
;	PAC1			game Gulp (RNC1)
;	LR88			game Jungle Strike
;	Z&G! (S404)?		Zulu and Grey Packer
;	$b6b2afcb		demo Sequential - Andromeda

CrunchManiaText:
	dc.b	'Crunch Mania',10,'by Thomas Schwarz',0
PaCKText:
	dc.b	'???',10,'by WANTON - Crunch Mania clone - CrM!',0
ViS1Text:
	dc.b	'???',10,'by ??? - Crunch Mania clone - CrM!',0
ViSLText:
	dc.b	'???',10,'by ??? - Crunch Mania clone - CrM2',0
RNCText:
	dc.b	'Pro Pack V2.??',10,'by Rob Northen',0
	;dc.b	'Nick Pelling',0
RNCOldText:
	dc.b	'Pro Pack Old',10,'by Rob Northen',0
RNCFakeText:
	dc.b	'???',10,'by ??? - Pro Pack clone - RNC1',0
ATNText:
	dc.b	'???',10,'by Stefan Boberg - FImp clone - IMP!',0
SBText:
	dc.b	'LhA 3.0 converter',10,'by Stefan Boberg',0
IMPText:
	dc.b	'File Imploder',10,'by Albert Jan Brouwer',0
DupaText:
	dc.b	'???',10,'by ??? - FImp clone - IMP!',0
StoneText:
	dc.b	'Stone Cracker',10,'by Jouni Korhonen',0
ArcDText:
	dc.b	'???',10,'by Max Brown and Bill Duncan',0
Text89A8:
	dc.b	'Stone Cracker 2.99',10,'by Jouni Korhonen',0
XPKFText:
	dc.b	'xpk????.library',10,'by ???',0
xVdgText:
	dc.b	'AMOS Compiler',10,'by Fran',$e7,'ois Lionet - Byte Killer fake',0
Ace?Text:
	dc.b	'???',10,'by ???',0
IAMText:
	dc.b	'IAM Packer',10,'by Ken of Analog',0
LOBText:
	dc.b	'Thalion Packer',10,'by Lothar Becks',0
MagnText:
	dc.b	'Magnetic Fields Cruncher',10,'by Magnetic Fields',0
TITSText:
	dc.b	'???',10,'by ??? - Power Packer fake - PP20',0
GraftGoldText:
	dc.b	'GraftGold Cruncher',10,'by ???',0
PMCText:
	dc.b	'Power Player Music Cruncher',10,'by Stephan Fuhrmann',0
VDCOText:
	dc.b	'Virtual Dreams Cruncher',10,'by Virtual Dreams',0
ALC0Text:
	dc.b	'Alcatraz Cruncher',10,'by Alcatraz',0
GP11Text:
	dc.b	'Gnu Packer',10,'by Tax of Gnu Design (Thomas Neumann)',0
StoneFakeText:
	dc.b	'???',10,'by ??? - Stone Cracker clone - S404',0
Stone2FakeText:
	dc.b	'???',10,'by ??? - Stone Cracker clone - S401',0
Stone3FakeText:
	dc.b	'???',10,'by ??? - Stone Cracker clone - S300',0
PowerPackerText:
	dc.b	'Power Packer',10,'by Nico Fran',$e7,'ois',0
BondText:
	dc.b	'Bond Cruncher',10,'by A.R.Bond',0
TSMText:
	dc.b	'???',10,'by ??? - Ice! fake',0
TazText:
	dc.b	'???',10,'by ??? - ICE! fake',0
LZWHText:
	dc.b	'???',10,'by ??? - LZWH fake',0
MasterText:
	dc.b	'???',10,'by ??? - Master Cruncher 3.0 clone',0
Master3Text:
	dc.b	'Master Cruncher 3.0',10,'by Robert Frahm & Michael Cremer',0
ByteKillerText
	dc.b	'???',10,'by ??? - Byte Killer clone',0
TurtleSmasher2
	dc.b	'Found file ID: T.S 2.00 - Turtle Smasher 2.00 data',0
BHC3Text
	dc.b	'Blue House Cruncher',10,'by Nicholas Clarke',0
TPWMText
	dc.b	'Turbo Packer',10,'by Wolfgang Mayerle',0
	CNOP 0,2

xpkID:
	dc.l	'ACCA'
	dc.l	ACCAText

	dc.l	'BLZW'
	dc.l	BLZWText

	dc.l	'CBR0'
	dc.l	CBR0Text

	dc.l	'CRM2'
	dc.l	CRM2Text

	dc.l	'CRMS'
	dc.l	CRMSText

	dc.l	'DLTA'
	dc.l	DLTAText

	dc.l	'ELZX'
	dc.l	ELZXText

	dc.l	'ENCO'
	dc.l	ENCOText

	dc.l	'FAST'
	dc.l	FASTText

	dc.l	'FEAL'
	dc.l	FEALText

	dc.l	'GZIP'
	dc.l	GZIPText

	dc.l	'HFMN'
	dc.l	HFMNText

	dc.l	'HUFF'
	dc.l	HUFFText

	dc.l	'IDEA'
	dc.l	IDEAText

	dc.l	'ILZR'
	dc.l	ILZRText

	dc.l	'IMPL'
	dc.l	IMPLText

	dc.l	'LZCB'
	dc.l	LZCBText

	dc.l	'MASH'
	dc.l	MASHText

	dc.l	'NONE'
	dc.l	NONEText

	dc.l	'NUKE'
	dc.l	NUKEText

	dc.l	'PPMQ'
	dc.l	PPMQText

	dc.l	'PWPK'
	dc.l	PWPKText

	dc.l	'RAKE'
	dc.l	RAKEText

	dc.l	'RDCN'
	dc.l	RDCNText

	dc.l	'RLEN'
	dc.l	RLENText

	dc.l	'SHRI'
	dc.l	SHRIText

	dc.l	'SLZX'
	dc.l	SLZXText

	dc.l	'SMPL'
	dc.l	SMPLText

	dc.l	'SQSH'
	dc.l	SQSHText

	dc.l	0

ACCAText
	dc.b	'xpkACCA.library',10,'by Andr',$e9,' Osterhues',0
BLZWText:
	dc.b	'xpkBLZW.library',10,'by Bryan Ford',0
CBR0Text:
	dc.b	'xpkCBR0.library',10,'by Bilbo of Hypenosis',0
CRM2Text:
	dc.b	'xpkCRM2.library',10,'by Thomas Schwarz',0
CRMSText:
	dc.b	'xpkCRMS.library',10,'by Thomas Schwarz',0
DLTAText:
	dc.b	'xpkDLTA.library',10,'by Stephan Fuhrmann',0
ELZXText:
	dc.b	'xpkELZX.library',10,'by Adam Przybyla and Piotr Kasprzyk',0
ENCOText:
	dc.b	'xpkENCO.library',10,'by Urban Dominik M',$fc,'ller',0
FASTText:
	dc.b	'xpkFAST.library',10,'by Christian von Roques',0
FEALText:
	dc.b	'xpkFEAL.library',10,'by Christian von Roques',0
GZIPText:
	dc.b	'xpkGZIP.library',10,'by Antonio Schifano',0
HFMNText:
	dc.b	'xpkHFMN.library',10,'by Martin Hauner',0
HUFFText:
	dc.b	'xpkHUFF.library',10,'by Marc Zimmermann',0
IDEAText:
	dc.b	'xpkIDEA.library',10,'by Andr',$e9,' Beck',0
ILZRText:
	dc.b	'xpkILZR.library',10,'by Jose Renau',0
IMPLText:
	dc.b	'xpkIMPL.library',10,'by Peter Struijk',0
LZCBText:
	dc.b	'xpkLZCB.library',10,'by Charles Bloom',0
MASHText:
	dc.b	'xpkMASH.library',10,'by Zdenek Kabelac',0
NONEText:
	dc.b	'xpkNONE.library',10,'by Urban Dominik M',$fc,'ller',0
NUKEText:
	dc.b	'xpkNUKE.library',10,'by Urban Dominik M',$fc,'ller',0
PPMQText:
	dc.b	'xpkPPMQ.library',10,'by Charles Bloom',0
PWPKText:
	dc.b	'xpkPWPK.library',10,'by Michael J. Barsoom',0
RAKEText:
	dc.b	'xpkRAKE.library',10,'by Karsten Dagef',$f6,'rde',0
RDCNText:
	dc.b	'xpkRDCN.library',10,'by Daniel Frey',0
RLENText:
	dc.b	'xpkRLEN.library',10,'by Urban Dominik M',$fc,'ller',0
SHRIText:
	dc.b	'xpkSHRI.library',10,'by Matthias Meixner',0
SLZXText:
	dc.b	'xpkSLZX.library',10,'by Adam Przybyla and Piotr Kasprzyk',0
SMPLText:
	dc.b	'xpkSMPL.library',10,'by Jorma Oksanen',0
SQSHText:
	dc.b	'xpkSQSH.library',10,'by John Hendrikx',0

	CNOP 0,2

***************************************************************************

Fill:
	movem.l	d0/d3-d7/a0-a1,-(a7)

	move.l	a0,d2

	move.l	AllocStart(a5),d0
	move.l	AllocEnd(a5),d1
	sub.l	d0,d1
	sub.l	d0,d2
	rol.l	#4,d1
	rol.l	#4,d2
	clr.w	d1
	clr.w	d2
	swap	d1
	swap	d2
	tst.l	d1
	beq.b	NoDiv

	mulu.w	#618,d2
	divu.w	d1,d2

	moveq	#3,d0
	bsr.w	Pen

	move.w	#11,d0
	move.w	#68,d1
	addi.w	#10,d2
	move.w	#72,d3
	move.l	Windows(a5),a1
	move.l	WindowRastPort(a1),a1
	move.l	GrfxBase(a5),a6
	jsr	RectFill(a6)

	move.l	Windows(a5),a0
	move.l	IDCMP(a0),a0
	move.l	GadBase(a5),a6
	jsr	GT_GetIMsg(a6)

	tst.l	d0
	beq.b	NoDiv

	move.l	d0,a1
	move.l	$14(a1),d5
	move.w	$18(a1),d6
	jsr	GT_ReplyIMsg(a6)

	cmpi.l	#IDCMP_NEWSIZE,d5
	beq.b	NewSize2

	cmpi.w	#MENUDOWN,d6
	beq.b	NoDiv3

	cmpi.l	#IDCMP_VANILLAKEY,d5
	bne.b	NoDiv

	cmpi.w	#27,d6
	bne.b	NoDiv
NoDiv3:
	moveq	#1,d1
	bra.b	NoDiv2

NoDiv:
	moveq	#0,d1
NoDiv2:
	movem.l	(a7)+,d0/d3-d7/a0-a1
	rts

NewSize2:
	bsr.w	Size2
	bra.b	NoDiv

***************************************************************************

FillZero:
	movem.l	d0-a6,-(a7)

	bsr.w	Pen

	move.w	#11,d0
	move.w	#68,d1
	move.w	#629,d2
	move.w	#72,d3
	move.l	Windows(a5),a1
	move.l	WindowRastPort(a1),a1
	move.l	GrfxBase(a5),a6
	jsr	RectFill(a6)

	movem.l	(a7)+,d0-a6
	rts

***************************************************************************

LoadFile:
	bsr.b	Load
	bsr.w	WorkPointer
	bra.w	Main

Load:
	tst.l	FileList(a5)
	beq.b	NotFree

	move.l	FileList(a5),a0
	move.l	ReqBase(a5),a6
	jsr	rtFreeFileList(a6)

	clr.l	FileList(a5)

NotFree:
	lea	TagsLoad(pc),a0
	move.l	FileReqL(a5),a1
	lea	FileNameL(pc),a2
	lea	FileReqNameLoad(pc),a3
	move.l	ReqBase(a5),a6
	jsr	rtFileRequestA(a6)

	tst.l	d0
	beq.w	FileNotSelected

	move.l	d0,FileList(a5)
	move.l	d0,FileListReq(a5)

	move.l	d0,a0
	move.l	(a0),FileListAdd(a5)

	bsr.w	WaitPointer

	move.l	FileList(a5),a0
	move.l	8(a0),a0

LoadIt:
	lea	FullNameL(pc),a1
	move.l	FileReqL(a5),a2
	move.l	$10(a2),a2
	tst.b	(a2)
	beq.b	Petla2
Petla:
	move.b	(a2)+,(a1)+
	bne.b	Petla
	subq.l	#2,a1
	move.b	(a1)+,d0
	cmp.b	#':',d0
	beq.s	Petla2
	move.b	#'/',(a1)+
Petla2:
	move.b	(a0)+,(a1)+
	bne.b	Petla2
	move.b	#0,(a1)+

	clr.l	DiskVar(a5)

	bsr.w	FreeMemory

	lea	LoadingFile(pc),a0
	lea	FileL(pc),a1
	bsr.w	Printf

	lea	FullNameL(pc),a0
	move.l	a0,d1
	move.l	#1005,d2
	move.l	DosBase(a5),a6
	jsr	Open(a6)

	tst.l	d0
	beq.w	ErrorOpenFile
	move.l	d0,FileHandles(a5)

	lea	FullNameL(pc),a0
	move.l	a0,d1
	moveq	#-2,d2
	jsr	Lock(a6)

	tst.l	d0
	beq.w	ErrorLockFile
	move.l	d0,LockZap(a5)

	move.l	d0,d1
	lea	Bufor,a0
	move.l	a0,d2
	jsr	Examine(a6)

	move.l	LockZap(a5),d1
	jsr	UnLock(a6)

;allokacja pamieci

	lea	Bufor(pc),a0
	move.l	124(a0),d0

	tst.l	d0
	beq.w	NoLoad

	lea	124(a0),a1
	lea	BufferSize(pc),a0
	bsr.w	Printf

	bsr.w	AllocMemory

	tst.l	d0
	beq.w	ErrorAllocMemory

	move.l	FileHandles(a5),d1
	move.l	AllocStart(a5),d2
	move.l	AllocLength(a5),d3
	move.l	DosBase(a5),a6
	jsr	Read(a6)

ErrorLockFile
	move.l	FileHandles(a5),d1
	jsr	Close(a6)

ErrorOpenFile
	bsr.w	IOError
	bne.w	ErrorFile

	lea	LoadOk(pc),a0
	bsr.w	PrintStatus

	cmp.l	#901120,AllocLength(a5)
	bne.b	NotDiskFile

	move.l	#1,DiskVar(a5)
NotDiskFile
	bra.b	GOGO

ErrorFile
	bsr.w	FreeMemory
GOGO
	move.l	FileListReq(a5),a0
	move.l	(a0),FileListReq(a5)
	move.l	8(a0),a0
	lea	FileNameS(pc),a1
CopyName:
	move.b	(a0)+,(a1)+
	bne.b	CopyName

	tst.l	DiskVar(a5)
	beq.b	NotConvert2

	tst.l	FormatNum(a5)
	beq.b	NotConvert2

	bsr.w	Converter
NotConvert2
	rts

IOError
	move.l	DosBase(a5),a6
	jsr	IoErr(a6)
	tst.l	d0
	beq.b	NotError

	move.l	d0,d1
	lea	Header(pc),a0
	move.l	a0,d2
	lea	PutChData(pc),a0
	move.l	a0,d3
	moveq	#100,d4
	jsr	Fault(a6)

	lea	PutChData(pc),a0
	bsr.w	PrintStatus
	moveq	#1,d0
NotError
	tst.l	d0
	rts

***************************************************************************

SaveFile:
	cmpi.l	#'DOS ',DisplayID(a5)
	beq.b	ContSave0

	tst.l	SetNameZero(a5)
	bne.b	ContSave
ContSave0:
	bsr.w	WorkPointer

	lea	TagsSave(pc),a0
	move.l	FileReqS(a5),a1
	lea	FileNameS(pc),a2
	lea	FileReqNameSave(pc),a3
	move.l	ReqBase(a5),a6
	jsr	rtFileRequestA(a6)

	tst.l	d0
	beq.w	FileNotSelected

	tst.l	IncVar(a5)
	beq.b	ContSave2

ContSave:
	cmpi.l	#'DOS ',DisplayID(a5)
	beq.b	ContSave2

	tst.l	DecrError(a5)
	beq.b	.Once
	move.l	DecrError(a5),d1
	bra.b	.Loop
.Once
	moveq	#0,d1
.Loop
	bsr.w	NameZero
	dbf	d1,.Loop

ContSave2:
	bsr.w	WaitPointer

	lea	FileNameS(pc),a0
	lea	FullNameS(pc),a1
	move.l	FileReqS(a5),a2
	move.l	$10(a2),a2
	tst.b	(a2)
	beq.b	Petla4
Petla3:
	move.b	(a2)+,(a1)+
	bne.b	Petla3
	subq.l	#2,a1
	move.b	(a1)+,d0
	cmp.b	#':',d0
	beq.s	Petla4
	move.b	#'/',(a1)+
Petla4:
	move.b	(a0)+,(a1)+
	bne.b	Petla4
	move.b	#0,(a1)+

	lea	SavingFile(pc),a0
	lea	FileS(pc),a1
	bsr.w	Printf

	lea	FullNameS(pc),a0
	move.l	a0,d1
	move.l	#1006,d2
	move.l	DosBase(a5),a6
	jsr	Open(a6)

	tst.l	d0
	beq.w	ErrorOpenFile2
	move.l	d0,FileHandles(a5)

	move.l	d0,d1
	move.l	StartFileID(a5),d2
	move.l	PackedSize(a5),d3
	tst.l	PackedSize(a5)
	bne.b	NoZero
	move.l	OriginalSize(a5),d3
NoZero:
	jsr	Write(a6)
	move.l	d0,d2

	move.l	FileHandles(a5),d1
	jsr	Close(a6)

	tst.l	d0
	beq.w	ErrorCloseFile2

	cmp.l	d2,d3
	bne.w	DiskIsFull

	lea	Comment(pc),a0
	lea	ArgComment(pc),a1

	move.l	DisplayID(a5),10(a1)

	move.l	AllocStart(a5),d0
	move.l	StartFileID2(a5),d1
	sub.l	d0,d1
	move.l	d1,4(a1)

	clr.b	59(a0)

	tst.l	DiskVar(a5)
	beq.b	SetComm

	move.l	4(a1),d0
	move.l	d0,d1
	and.l	#$1ff,d0
	move.l	d0,4(a1)
;	and.l	#$fffffe00,d1
;	lsr.l	#8,d1
;	lsr.l	#1,d1
	divu	#512,d1
	move.w	d1,8(a1)

	cmpi.l	#'DOS ',10(a1)
	bne.b	Set
	clr.l	4(a1)
	clr.w	8(a1)
Set:
	move.b	#' ',59(a0)

SetComm:
	bsr.w	RawDoFormat

	lea	FullNameS(pc),a0
	move.l	a0,d1
	lea	PutChData(pc),a0
	move.l	a0,d2
	jsr	SetComment(a6)

ErrorCloseFile2
ErrorOpenFile2
	bsr.w	IOError
	bne.w	ErrorFile2

	lea	SaveOk(pc),a0
	bsr.w	PrintStatus

ErrorFile2
	bsr.w	WorkPointer

	rts

DiskIsFull
	lea	DiskFull(pc),a0
	bsr.w	PrintStatus

	bra.b	ErrorFile2

ArgComment:
	dc.l	ArgComment1
	dc.l	0
	dc.w	0
ArgComment1:
	dc.l	0
	dc.w	0

***************************************************************************

NameZero:
	lea	FileNameS(pc),a0

	tst.l	SetNameZero(a5)
	bne.b	AddName

	move.l	a0,a2
Loop:
	tst.b	(a0)+
	bne.b	Loop
	subq.l	#1,a0
	move.l	a0,d0
	sub.l	a2,d0
	addq.l	#1,d0
	move.l	d0,SetNameZero(a5)
	move.b	#'.',(a0)+
	move.b	#'0',(a0)+
	move.b	#'0',(a0)+
	move.b	#'1',(a0)
	move.b	#0,1(a0)
	rts

AddName:
	add.l	SetNameZero(a5),a0
	cmpi.b	#'9',2(a0)
	bne.b	Add0
	move.b	#'0',2(a0)

	cmpi.b	#'9',1(a0)
	bne.b	Add1
	move.b	#'0',1(a0)

	cmpi.b	#'9',(a0)
	bne.b	Add2
	move.b	#'0',(a0)

	rts

Add0:
	addq.b	#1,2(a0)
	rts
Add1:
	addq.b	#1,1(a0)
	rts
Add2:
	addq.b	#1,(a0)
	rts

***************************************************************************

Prefs:

;otarcie Window Prefs

	sub.l	a0,a0
	lea	WindowPrefTags(pc),a1
	move.l	IntBase(a5),a6
	jsr	OpenWindowTagList(a6)

	tst.l	d0
	beq.w	ErrorOpenWindowPrefs
	move.l	d0,WindowPrefs(a5)
	lea	WindowCheckID(pc),a0
	move.l	d0,(a0)

	move.l	Windows(a5),a0
	move.l	ReqBase(a5),a6
	jsr	rtLockWindow(a6)
	move.l	d0,WindowLock(a5)

;ustawienie fontow Topaz 8

	lea	Font(pc),a0
	move.l	GrfxBase(a5),a6
	jsr	OpenFont(a6)

	move.l	d0,a0
	move.l	WindowPrefs(a5),a1
	move.l	WindowRastPort(a1),a1
	jsr	SetFont(a6)

;odswiezenie okna

	move.l	WindowPrefs(a5),a0
	sub.l	a1,a1
	move.l	GadBase(a5),a6
	jsr	GT_RefreshWindow(a6)

	move.l	IncVar(a5),IncCancel(a5)
	move.l	DecrVar(a5),DecrCancel(a5)
	move.l	SkipVar(a5),SkipCancel(a5)
	move.l	DeepVar(a5),DeepCancel(a5)
	move.l	DriveNum(a5),DriveCancel(a5)
	move.l	FormatNum(a5),FormatCancel(a5)
	move.l	RNC_old(a5),RNCCancel(a5)

	moveq	#0,d6
	moveq	#0,d7
MainPrefs:
	move.l	WindowPrefs(a5),a0
	move.l	IDCMP(a0),a0
	move.l	Exec.w,a6
	jsr	WaitPort(a6)

	move.l	WindowPrefs(a5),a0
	move.l	IDCMP(a0),a0
	move.l	GadBase(a5),a6
	jsr	GT_GetIMsg(a6)

	tst.l	d0
	beq.s	MainPrefs

	move.l	d0,a1
	move.l	$14(a1),d5		;Class
	move.w	$18(a1),d6		;Code
	move.l	$1c(a1),a4		;IAddress
	move.w	$22(a1),d7		;MouseY
	jsr	GT_ReplyIMsg(a6)

	cmpi.l	#IDCMP_GADGETUP,d5
	bne.b	KeyPrefs

	move.w	$26(a4),d0

	cmpi.w	#6,d0
	beq.w	Drives

	cmpi.w	#7,d0
	beq.w	IncName

	cmpi.w	#8,d0
	beq.w	DecrName

	cmpi.w	#9,d0
	beq.w	SkipName

	cmpi.w	#10,d0
	beq.w	SavePrefs

	cmpi.w	#11,d0
	beq.w	UsePrefs

	cmpi.w	#12,d0
	beq.w	CancelPrefs

	cmpi.w	#13,d0
	beq.w	Disable

	cmpi.w	#14,d0
	beq.w	DeepName

	cmpi.w	#15,d0
	beq.w	Invert

	cmpi.w	#16,d0
	beq.w	Clear

	cmpi.w	#17,d0
	beq.w	ImageS

	cmpi.w	#18,d0
	beq.w	Formats

	cmpi.w	#19,d0
	beq.w	RNC

KeyPrefs:
	cmpi.l	#IDCMP_VANILLAKEY,d5
	bne.w	MainPrefs

	cmpi.w	#27,d6
	beq.w	CancelPrefs

	cmpi.w	#'d',d6
	beq.w	SelectDrive

	cmpi.w	#'o',d6
	beq.w	SelectFormat

	cmpi.w	#'i',d6
	beq.b	SelectInc

	cmpi.w	#'e',d6
	beq.w	SelectDecr

	cmpi.w	#'k',d6
	beq.w	SelectSkip

	cmpi.w	#'r',d6
	beq.w	SelectRNC

	cmpi.w	#'s',d6
	beq.w	SavePrefs

	cmpi.w	#'u',d6
	beq.w	UsePrefs

	cmpi.w	#'c',d6
	beq.w	CancelPrefs

	cmpi.w	#'p',d6
	beq.w	SelectDeep

	cmpi.w	#'v',d6
	beq.w	Invert

	cmpi.w	#'l',d6
	beq.w	Clear

	cmpi.w	#'m',d6
	beq.w	ImageS

	bra.w	MainPrefs

***************************************************************************

Drives:
	and.l	#$0000ffff,d6
	move.l	d6,DriveNum(a5)
	bra.w	MainPrefs

***************************************************************************

Formats:
	and.l	#$0000ffff,d6
	move.l	d6,FormatNum(a5)
	bra.w	MainPrefs

***************************************************************************

IncName:
	eor.l	#1,IncVar(a5)
	bra.b	Tu

SelectInc:
	lea	Inc(pc),a1
	clr.l	(a1)

	tst.l	IncVar(a5)
	bne.b	NoSelect

	move.l	#1,(a1)
NoSelect:
	eor.l	#1,IncVar(a5)

	move.l	GadgetPref3(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	IncTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)
Tu:
	tst.l	IncVar(a5)
	bne.w	MainPrefs

	lea	Decr(pc),a0
	clr.l	(a0)
	clr.l	DecrVar(a5)

	move.l	GadgetPref4(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DecrTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

IncTag:
	dc.l	GTCB_Checked
Inc:	dc.l	0
	dc.l	0

***************************************************************************

DecrName:
	lea	DecrVar(a5),a0
	eor.l	#1,DecrVar(a5)

	bra.b	Change

SelectDecr:
	lea	Decr(pc),a1
	clr.l	(a1)

	tst.l	DecrVar(a5)
	bne.b	NoSelect2

	move.l	#1,(a1)
NoSelect2:
	eor.l	#1,DecrVar(a5)

	move.l	GadgetPref4(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DecrTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	lea	Decr(pc),a0
Change:
	tst.l	(a0)
	beq.b	NoChange

	clr.l	IncVar(a5)

	bra.w	SelectInc

NoChange:
	move.l	#1,IncVar(a5)

	bra.w	SelectInc

DecrTag:
	dc.l	GTCB_Checked
Decr:	dc.l	0
	dc.l	0

***************************************************************************

SelectDrive:
	lea	Drv(pc),a1
	move.l	DriveNum(a5),d0
	cmp.l	#3,d0
	beq.b	DriveWewn2
	addq.l	#1,DriveNum(a5)
	move.l	DriveNum(a5),(a1)
GadView:
	move.l	GadgetPref2(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DriveTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

DriveWewn2:
	clr.l	DriveNum(a5)
	clr.l	(a1)

	bra.b	GadView

DriveTag:
	dc.l	GTCY_Active
Drv:	dc.l	0
	dc.l	0

***************************************************************************

SelectFormat:
	lea	Format(pc),a1
	move.l	FormatNum(a5),d0
	cmp.l	#6,d0
	beq.b	FirstFormat
	addq.l	#1,FormatNum(a5)
	move.l	FormatNum(a5),(a1)
GadViewE
	move.l	GadgetPrefE(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	FormatTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

FirstFormat
	clr.l	FormatNum(a5)
	clr.l	(a1)

	bra.b	GadViewE

FormatTag:
	dc.l	GTCY_Active
Format:	dc.l	0
	dc.l	0

***************************************************************************

SkipName:
	eor.l	#1,SkipVar(a5)

	bra.w	MainPrefs

SelectSkip:
	lea	Skip(pc),a1
	clr.l	(a1)

	tst.l	SkipVar(a5)
	bne.b	NoSelect3

	move.l	#1,(a1)
NoSelect3:
	eor.l	#1,SkipVar(a5)

	move.l	GadgetPref5(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	SkipTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

SkipTag:
	dc.l	GTCB_Checked
Skip:	dc.l	0
	dc.l	0

***************************************************************************

Disable:
	move.l	WindowPrefs(a5),a0
	move.l	GadBase(a5),a6
	jsr	GT_BeginRefresh(a6)

	move.l	GadgetPref9(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	TagsListNil(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	d6,Top			; d6 = code
	sub.w	#37,d7			; d7 = mouseY
	lsr.w	#3,d7
	sub.w	d7,Top+2
	bpl.b	Go
	clr.l	Top
Go:
	lea	EnableID(pc),a0
	add.w	d6,d6
	add.w	d6,d6
	add.l	d6,a0
	move.l	(a0),a0
	cmpi.b	#'D',(a0)
	beq.b	D
	move.b	#'D',(a0)
	bra.b	D1
D:
	move.b	#' ',(a0)
D1:
	moveq	#1,d0
	move.l	WindowPrefs(a5),a0
	jsr	GT_EndRefresh(a6)

	move.l	GadgetPref9(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	TagListView(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

TagsListNil:
	dc.l	GTLV_Labels,0
	dc.l	0

***************************************************************************

SavePrefs:
	bsr.w	CheckEnableID
	bne.w	MainPrefs

	moveq	#0,d0
	moveq	#0,d7
	lea	EnableID(pc),a0
	lea	Enable1(a5),a1
Loops:
	tst.l	(a0)
	beq.b	QuitSavePrefs
	move.l	(a0),a2
	cmpi.b	#32,d7
	bne.b	NoOver
	moveq	#0,d0
	moveq	#0,d7
	addq.l	#4,a1
NoOver:
	cmpi.b	#'D',(a2)
	bne.b	NoDisable
	bset	d7,d0
NoDisable:	
	move.l	d0,(a1)
	addq.b	#1,d7
	addq.l	#4,a0
	bra.b	Loops
QuitSavePrefs:

	move.l	IncVar(a5),IncFileName(a5)
	move.l	DecrVar(a5),DecrFile(a5)
	move.l	SkipVar(a5),SkipFile(a5)
	move.l	DeepVar(a5),DeepSearch(a5)
	move.w	FormatNum+2(a5),FormatNumbers(a5)
	move.w	DriveNum+2(a5),DriveNumbers(a5)
;	move.l	RNCVar(a5),RNC_old(a5)

	lea	PrefsName(pc),a0
	move.l	a0,d1
	move.l	#1006,d2
	move.l	DosBase(a5),a6
	jsr	Open(a6)

	tst.l	d0
	beq.w	ErrorSavePrefs
	move.l	d0,FileHandles(a5)

	move.l	d0,d1
	lea	Enable1(a5),a0
	move.l	a0,d2
	moveq	#50,d3
	jsr	Write(a6)

	move.l	d0,d2

	move.l	FileHandles(a5),d1
	jsr	Close(a6)

	tst.l	d0
	beq.w	ErrorSavePrefs

	tst.l	d2
	beq.w	ErrorSavePrefs

	lea	SavePrefsText(pc),a0
	bsr.w	PrintStatus

	bra.w	QuitPrefs

ErrorSavePrefs:
	lea	ErrorSavePrefsText(pc),a0
	bsr.w	PrintStatus

	bra.w	QuitPrefs

***************************************************************************

UsePrefs:
	bsr.w	CheckEnableID
	bne.w	MainPrefs

	moveq	#0,d0
	moveq	#0,d7
	lea	EnableID(pc),a0
	lea	Enable1(a5),a1
Loops2:
	tst.l	(a0)
	beq.b	QuitUsePrefs
	move.l	(a0),a2
	cmpi.b	#32,d7
	bne.b	NoOver2
	moveq	#0,d0
	moveq	#0,d7
	addq.l	#4,a1
NoOver2:
	cmpi.b	#'D',(a2)
	bne.b	NoDisable2
	bset	d7,d0
NoDisable2:	
	move.l	d0,(a1)
	addq.b	#1,d7
	addq.l	#4,a0
	bra.b	Loops2
QuitUsePrefs:
	move.l	IncVar(a5),IncFileName(a5)
	move.l	DecrVar(a5),DecrFile(a5)
	move.l	SkipVar(a5),SkipFile(a5)
	move.l	DeepVar(a5),DeepSearch(a5)
	move.w	FormatNum+2(a5),FormatNumbers(a5)
	move.w	DriveNum+2(a5),DriveNumbers(a5)
;	move.l	RNCVar(a5),RNC_old(a5)

	bra.w	QuitPrefs

***************************************************************************

CancelPrefs:
	moveq	#0,d7
	lea	EnableID(pc),a0
	lea	Enable1(a5),a1
	move.l	(a1)+,d0
Loops3:
	tst.l	(a0)
	beq.b	QuitCancelPrefs
	move.l	(a0),a2
	cmpi.b	#32,d7
	bne.b	NoOver3
	moveq	#0,d7
	move.l	(a1)+,d0
NoOver3:
	btst	d7,d0
	beq.b	NoDisable3
	move.b	#'D',(a2)
	bra.b	NoDisable4
NoDisable3:	
	move.b	#' ',(a2)
NoDisable4:
	addq.b	#1,d7
	addq.l	#4,a0
	bra.b	Loops3
QuitCancelPrefs:

	move.l	DriveCancel(a5),Drv
	move.l	DriveCancel(a5),DriveNum(a5)
;	move.l	DriveCancel(a5),DriveActive

	move.l	GadgetPref2(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DriveTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	FormatCancel(a5),Format
	move.l	FormatCancel(a5),FormatNum(a5)
;	move.l	FormatCancel(a5),FormatActive

	move.l	GadgetPrefE(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	FormatTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	IncCancel(a5),Inc
	move.l	IncCancel(a5),IncVar(a5)
;	move.l	IncCancel(a5),IncCheck

	move.l	GadgetPref3(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	IncTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	DecrCancel(a5),Decr
	move.l	DecrCancel(a5),DecrVar(a5)

	move.l	GadgetPref4(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DecrTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	SkipCancel(a5),Skip
	move.l	SkipCancel(a5),SkipVar(a5)

	move.l	GadgetPref5(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	SkipTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	DeepCancel(a5),Dee
	move.l	DeepCancel(a5),DeepVar(a5)

	move.l	GadgetPrefA(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DeepTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	move.l	RNCCancel(a5),RNC_
	move.l	RNCCancel(a5),RNC_old(a5)

	move.l	GadgetPrefF(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	RNCTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	QuitPrefs

***************************************************************************

DeepName:
	eor.l	#1,DeepVar(a5)

	bra.w	MainPrefs

SelectDeep:
	lea	Dee(pc),a1
	clr.l	(a1)

	tst.l	DeepVar(a5)
	bne.b	NoSelect7

	move.l	#1,(a1)
NoSelect7:
	eor.l	#1,DeepVar(a5)

	move.l	GadgetPrefA(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	DeepTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

DeepTag:
	dc.l	GTCB_Checked
Dee:	dc.l	0
	dc.l	0

***************************************************************************

RNC:
	eor.l	#1,RNC_old(a5)

	bra.w	MainPrefs

SelectRNC:
	lea	RNC_(pc),a1
	clr.l	(a1)

	tst.l	RNC_old(a5)
	bne.b	NoSelect8

	move.l	#1,(a1)
NoSelect8
	eor.l	#1,RNC_old(a5)

	move.l	GadgetPrefF(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	RNCTag(pc),a3
	move.l	GadBase(a5),a6
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

RNCTag:
	dc.l	GTCB_Checked
RNC_:	dc.l	0
	dc.l	0

***************************************************************************


Invert:
	move.l	WindowPrefs(a5),a0
	move.l	GadBase(a5),a6
	jsr	GT_BeginRefresh(a6)

	move.l	GadgetPref9(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	TagsListNil(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

	lea	EnableID(pc),a0
Loops5
	tst.l	(a0)
	beq.b	QuitInvertPrefs
	move.l	(a0),a1
	cmpi.b	#'D',(a1)
	bne.b	NoDis
	move.b	#' ',(a1)
	bra.b	Dis
NoDis:
	move.b	#'D',(a1)
Dis:
	addq.l	#4,a0
	bra.b	Loops5

QuitInvertPrefs:

	moveq	#1,d0
	move.l	WindowPrefs(a5),a0
	jsr	GT_EndRefresh(a6)

	move.l	GadgetPref9(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	TagListView(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

***************************************************************************

Clear:
	move.l	WindowPrefs(a5),a0
	move.l	GadBase(a5),a6
	jsr	GT_BeginRefresh(a6)

	move.l	GadgetPref9(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	TagsListNil(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

	lea	EnableID(pc),a0
.Loops
	tst.l	(a0)
	beq.b	QuitClearPrefs
	move.l	(a0),a1
	move.b	#' ',(a1)
	addq.l	#4,a0
	bra.b	.Loops

QuitClearPrefs:

	moveq	#1,d0
	move.l	WindowPrefs(a5),a0
	jsr	GT_EndRefresh(a6)

	move.l	GadgetPref9(pc),a0
	move.l	WindowPrefs(a5),a1
	sub.l	a2,a2
	lea	TagListView(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

	bra.w	MainPrefs

***************************************************************************

ImageS:
	tst.l	DiskVar(a5)
	beq.b	DiskNotLoad

	clr.l	StartFileID2(a5)

	move.l	#'DOS ',DisplayID(a5)

	move.l	StartFileID(a5),-(a7)
	move.l	AllocStart(a5),StartFileID(a5)

	move.l	PackedSize(a5),-(a7)
	move.l	AllocLength(a5),PackedSize(a5)

	bsr.w	SaveFile

	move.l	(a7)+,PackedSize(a5)
	move.l	(a7)+,StartFileID(a5)

	bra.w	MainPrefs

DiskNotLoad:
	lea	DiskNotL(pc),a0
	bsr.w	PrintStatus

	bra.w	MainPrefs

***************************************************************************

CheckEnableID
	lea	EnableID(pc),a0
Loops6
	tst.l	(a0)
	beq.b	QuitCheckID
	move.l	(a0),a1
	cmpi.b	#' ',(a1)
	beq.b	NoDis6
	addq.l	#4,a0
	bra.b	Loops6
NoDis6
	moveq	#0,d0
	rts

QuitCheckID:
	lea	CheckIDText(pc),a1
	lea	CheckIDGad(pc),a2
	sub.l	a3,a3
	sub.l	a4,a4
	lea	CheckIDTags(pc),a0
	move.l	ReqBase(a5),a6
	jsr	rtEZRequestA(a6)

	moveq	#1,d0
	rts

CheckIDTags:
	dc.l	RT_Window
WindowCheckID:
	dc.l	0
	dc.l	RT_ReqPos,REQPOS_CENTERWIN
	dc.l	RT_WaitPointer,1
	dc.l	RT_Underscore,'_'
	dc.l	RT_LockWindow,1
	dc.l	RTEZ_Flags,EZREQF_CENTERTEXT
	dc.l	0
CheckIDText:
	dc.b	'Please, choose at least',10
	dc.b	'one ID to be checked',0
CheckIDGad:
	dc.b	'_Ok',0

	CNOP 0,2

***************************************************************************

QuitPrefs:
	move.l	Windows(a5),a0
	move.l	WindowLock(a5),a1
	move.l	ReqBase(a5),a6
	jsr	rtUnlockWindow(a6)

	move.l	WindowPrefs(a5),a0
	move.l	IntBase(a5),a6
	jsr	CloseWindow(a6)

	bra.w	Main

ErrorOpenWindowPrefs:

	lea	ErrorOpenPrefs(pc),a0
	bsr.w	PrintStatus

	bra.w	Main

***************************************************************************

About:
	lea	AboutText(pc),a1
	lea	AboutGad(pc),a2
	sub.l	a3,a3
	sub.l	a4,a4
	lea	AboutTags(pc),a0
	move.l	ReqBase(a5),a6
	jsr	rtEZRequestA(a6)

	bra.w	Main

AboutTags:
	dc.l	RT_Window
WindowAbout:
	dc.l	0
	dc.l	RT_ReqPos,REQPOS_CENTERWIN
	dc.l	RT_WaitPointer,1
	dc.l	RT_Underscore,'_'
	dc.l	RT_LockWindow,1
	dc.l	RTEZ_ReqTitle,Info
	dc.l	RTEZ_Flags,EZREQF_CENTERTEXT
	dc.l	0

AboutText:
	dc.b	'Track2File v1.22 beta',10
	dc.b	'(c) 1995-97 by Wanted Team',10,10
	dc.b	'Send new ideas , bug reports to:',10
	dc.b	'Mr.Larmer of Wanted Team',10
	dc.b	'Czeslaw Maron',10
	dc.b	'ul.sw.Anny 45/17',10
	dc.b	'42-700 Lubliniec',10
	dc.b	'Poland',10,10
	dc.b	'E-mail: mrlarmer@polbox.com',10,10
	dc.b	'All code in assembler',10
	dc.b	'This program (FreeWare) uses',10
	dc.b	'reqtools.library by Nico Fran',$e7,'ois',10
	dc.b	'& Magnus Holmgren',10
	dc.b	'xfdmaster.library by Georg H',$f6,'rmann',0
AboutGad:
	dc.b	'_Ok',0
Info:
	dc.b	'About',0

	CNOP 0,2

***************************************************************************

BufferEmpty:
	lea	BufferEmptyText(pc),a0
	bsr.w	PrintStatus
	bsr.w	WorkPointer
	rts

*****************************************

FileNotSelected:
	lea	FileNotSelectedText(pc),a0
	bsr.w	PrintStatus
	rts

*****************************************

ErrorAllocMemory:
	lea	ErrorAllocMemoryText(pc),a0
	bsr.w	PrintStatus
	bsr.w	WorkPointer
	rts

*****************************************

NoLoad:
	lea	NoFi(pc),a0
	bsr.w	PrintStatus
	bsr.w	WorkPointer
	rts

*****************************************

FileL:
	dc.l	FullNameL
LoadingFile:
	dc.b	'Loading file "%1.58s"',0
BufferSize:
	dc.b	'Buffer size: %ld bytes',0
LoadOk:
	dc.b	'Status: load Ok!',0
	CNOP 0,2
FileS:
	dc.l	FullNameS
SavingFile:
	dc.b	'Saving file "%1.59s"',0
SaveOk:
	dc.b	'Status: save Ok!',0
DiskFull
	dc.b	'Status: disk is full!',0
ReadDiskText:
	dc.b	'Disk reading in drive %s',0
ReadDiskEndText:
	dc.b	'Status: Disk read Ok!',0
SearchIDText:
	dc.b	'Status: Searching file ID',0
FoundIDText:
	dc.b	'Found file ID: %s , original length: %08ld , packed length: %08ld',0
FoundIDTextZero:
	dc.b	'Found file ID: %s , original length: %08ld , packed length: unknown',0
FileInMem:
	dc.b	'File start at: $%08lx - $%08lx',0
BufferInMem:
	dc.b	'Buffer at:     $%08lx - $%08lx',0
ContinueSearch:
	dc.b	'Continue searching',0
NothingFound:
	dc.b	'File ID not found',0
AbortSearch:
	dc.b	'Aborted',0
PP20CalcText:
	dc.b	'Found file ID: %s , packer efficiency: %s',0
PP20Calc2Text:
	dc.b	'Searching next ID and calculating PP20 file length',0
Trace:
	dc.b	'Tracing... please wait',0
ErrorLoadPrefsText:
	dc.b	"Can't open 's:Track2File.prefs'",0
StatusText:
	dc.b	'Status: %s',0
ErrorAllocBufInfo:
	dc.b	'Status: Unable allocate memory for decrunched file',0
Decrunching:
	dc.b	'Status: Decrunching file',0
Header:
	dc.b	'Status',0
PrefsName:
	dc.b	'S:Track2File.prefs',0
SavePrefsText:
	dc.b	'Status: Preferences saved',0
ErrorSavePrefsText:
	dc.b	'Status: Error saving preferences',0
DiskNotL:
	dc.b	'Status: Disk not loaded',0
ErrorOpenPrefs:
	dc.b	'Status: Unable to open window prefs',0
BufferEmptyText:
	dc.b	'Status: Buffer is empty',0
FileNotSelectedText:
	dc.b	'Status: No file selected',0
ErrorAllocMemoryText:
	dc.b	'Status: Not enough memory',0
NoFi:
	dc.b	'Status: File not loaded - length is zero',0
ErrorDevice
	dc.b	'Status: Drive not detected',0
ErrorReadTrackText:
	dc.b	'Unable disk read - trackdisk error nr %ld',0
ErrorNoDiskText:
	dc.b	'Status: No disk in drive',0
ConvertText
	dc.b	'Converting buffer to "%s" format',0
ConvertOK
	dc.b	'Buffer converted',0
OceanText
	dc.b	'Converted %ld files, corrupted %ld files',0


;FileL:
;	dc.l	FullNameL
;LoadingFile:
;	dc.b	'Loading file "',$b6,$32,'%1.52s',$b6,$31,'"',3,0
;BufferSize:
;	dc.b	'Buffer size: ',$b6,$32,'%ld',$b6,$31,' bytes',3,0
;LoadOk:
;	dc.b	'Status: ',$b6,$32,'load Ok!',$b6,$31,3,0
;	CNOP 0,2
;FileS:
;	dc.l	FullNameS
;SavingFile:
;	dc.b	'Saving file "',$b6,$32,'%1.53s',$b6,$31,'"',3,0
;SaveOk:
;	dc.b	'Status: ',$b6,$32,'save Ok!',$b6,$31,3,0
;ReadDiskText:
;	dc.b	'Disk reading in drive ',$b6,$32,'%s',$b6,$31,3,0
;ReadDiskEndText:
;	dc.b	'Status: ',$b6,$32,'Disk read Ok!',$b6,$31,3,0
;SearchIDText:
;	dc.b	'Status: ',$b6,$32,'Searching file ID',$b6,$31,3,0
;FoundIDText:
;	dc.b	'Found file ID: ',$b6,$32,'%s',$b6,$31,' , original length: ',$b6,$32,'%08ld',$b6,$31,3,0,' , packed length: ',3,0,$b6,$33,'%08ld',$b6,$31,3,0
;FoundIDTextZero:
;	dc.b	'Found file ID: ',$b6,$32,'%s',$b6,$31,' , original length: ',$b6,$32,'%08ld',$b6,$31,' , packed length: ',$b6,$33,'unknown',$b6,$31,3,0
;FileInMem:
;	dc.b	'File start at: ',$b6,$32,'$%08lx',$b6,$31,' - ',$b6,$32,'$%08lx',$b6,$31,3,0
;BufferInMem:
;	dc.b	'Buffer at:     ',$b6,$32,'$%08lx',$b6,$31,' - ',$b6,$32,'$%08lx',$b6,$31,3,0
;ContinueSearch:
;	dc.b	'Continue searching',0
;NothingFound:
;	dc.b	$b6,$32,'File ID not found',$b6,$31,3,0
;AbortSearch:
;	dc.b	$b6,$32,'Aborted',$b6,$31,3,0
;PP20CalcText:
;	dc.b	'Found file ID: ',$b6,$33,'PP20',$b6,$31,3,0
;PP20Calc2Text:
;	dc.b	'Searching next ID and calculating PP20 file length',0
;Trace:
;	dc.b	'Tracing... please wait',0
;ErrorLoadPrefsText:
;	dc.b	$b6,$32,"Can't open 's:Track2File.prefs'",$b6,$31,3,0
;StatusText:
;	dc.b	'Status: ',$b6,$32,'%s',$b6,$31,3,0
;ErrorAllocBufInfo:
;	dc.b	'Status: ',$b6,$32,'Unable allocate memory for decrunched file',$b6,$31,3,0
;Decrunching:
;	dc.b	'Status: ',$b6,$32,'Decrunching file',$b6,$31,3,0
;Header:
;	dc.b	'Status',0
;PrefsName:
;	dc.b	'S:Track2File.prefs',0
;SavePrefsText:
;	dc.b	'Status: ',$b6,$32,'Preferences saved',$b6,$31,3,0
;ErrorSavePrefsText:
;	dc.b	'Status: ',$b6,$32,'Error saving preferences',$b6,$31,3,0
;DiskNotL:
;	dc.b	'Status: ',$b6,$32,'Disk not loaded',$b6,$31,3,0
;ErrorOpenPrefs:
;	dc.b	'Status: ',$b6,$32,'Unable to open window prefs',$b6,$31,3,0
;BufferEmptyText:
;	dc.b	'Status: ',$b6,$32,'Buffer is empty',$b6,$31,3,0
;FileNotSelectedText:
;	dc.b	'Status: ',$b6,$32,'No file selected',$b6,$31,3,0
;ErrorAllocMemoryText:
;	dc.b	'Status: ',$b6,$32,'Not enough memory',$b6,$31,3,0
;NoFi:
;	dc.b	'Status: ',$b6,$32,'File not loaded - length is zero',$b6,$31,3,0
;ErrorDevice
;	dc.b	'Status: ',$b6,$32,'Drive not detected',$b6,$31,3,0
;ErrorReadTrackText:
;	dc.b	$b6,$32,'Unable disk read - trackdisk error nr %ld',$b6,$31,3,0
;ErrorNoDiskText:
;	dc.b	'Status: ',$b6,$32,'No disk in drive',$b6,$31,3,0


	CNOP 0,2

***************************************************************************

ReadDisk:
	bsr.w	WaitPointer
	bsr.b	ReadTr

	tst.l	DiskVar(a5)
	beq.b	NotConvert

	tst.l	FormatNum(a5)
	beq.b	NotConvert

	bsr.w	Converter

NotConvert

	bsr.w	WorkPointer

	bra.w	Main

ReadTr:
	move.l	DriveNum(a5),d0
	add.w	d0,d0
	add.w	d0,d0
	lea	CycleLabels(pc),a1
	add.l	d0,a1

	lea	ReadDiskText(pc),a0
	bsr.w	Printf

	bsr.w	FreeMemory

	clr.l	DiskVar(a5)

	move.l	#1760*512,d0
	bsr.w	AllocMemory
	tst.l	d0
	beq.w	ErrorAllocMemory

	move.l	d0,a0			;a0 = disk bufor
	bsr.w	ReadTrack
	tst.l	d0
	bne.w	Err
	tst.b	31(a1)			;jezeli <>0 to error
	bne.w	ErrorReadTrack

	lea	ReadDiskEndText(pc),a0
	bsr.w	PrintStatus

	move.l	#1,DiskVar(a5)

	bsr.w	MotorOff
	rts

***************************************************************************

ReadTrack:
	movem.l	a0,-(a7)

	move.l	Exec.w,a6

	lea	DiskIO(pc),a1
	lea	DiskRep(pc),a0
	move.l	a0,14(a1)
	move.l	DriveNum(a5),d0			; numer napedu
	moveq	#0,d1
	lea	TrackName(pc),a0
	jsr	OpenDevice(a6)
	tst.l	d0
	bne.b	ErrorOpenDevice

	movem.l	(a7)+,a0

	lea	DiskIO(pc),a1
	move.w	#2,28(a1)
	move.l	a0,40(a1)
	move.l	#1760*512,36(a1)
	move.l	#0*512,44(a1)
	move.l	Exec.w,a6
	jsr	DoIO(a6)

	moveq	#0,d0
	rts

ErrorOpenDevice
	addq.l	#4,a7
	lea	ErrorDevice(pc),a0
	bsr.w	PrintStatus
	moveq	#-1,d0
	rts

ErrorReadTrack:
	cmpi.b  #29,31(a1)
	beq.b	NoDisk
	clr.l	d0
	move.b	31(a1),d0
	move.l	d0,ErrorTrack(a5)

	lea	ErrorReadTrackText(pc),a0
	lea	ErrorTrack(a5),a1
	bsr.w	Printf

	bsr.b	MotorOff
Err:
	bsr.w	FreeMemory
	rts

NoDisk:
	lea	ErrorNoDiskText(pc),a0
	bsr.w	PrintStatus

	bra.b	Err

***************************************************************************

MotorOff:
	lea	DiskIO(pc),a1
	move.w	#9,28(a1)
	clr.l	36(a1)
	move.l	Exec.w,a6
	jsr	DoIO(a6)

	lea	DiskIO(pc),a1
	jsr	CloseDevice(a6)

	rts

***************************************************************************

Converter
	movem.l	d0-a6,-(a7)

	cmp.l	#1,FormatNum(a5)
	beq.b	Graftgold

	cmp.l	#2,FormatNum(a5)
	beq.w	TenOfYlewen

	cmp.l	#3,FormatNum(a5)
	beq.w	PseudoOFS

	cmp.l	#4,FormatNum(a5)
	beq.w	Ocean

	cmp.l	#5,FormatNum(a5)
	beq.w	Robocop

	cmp.l	#6,FormatNum(a5)
	beq.w	DigitalDisco

	movem.l	(a7)+,d0-a6
	rts

Graftgold
	lea	ConvertText(pc),a0
	lea	CycleLabelsE+4(pc),a1
	bsr.w	Printf

	move.l	AllocStart(a5),a0
	move.l	a0,a1
	add.l	#901120+1024,a1

	move.w	#440-1,d0
c10
	moveq	#(1024/16)-1,d1
	lea	-2048(a1),a1
c11
	movem.l	(a0)+,d2-d5
	movem.l	(a1)+,a2-a5
	movem.l	d2-d5,-(a1)
	movem.l	a2-a5,-(a0)
	lea	16(a0),a0
	lea	16(a1),a1
	dbf	d1,c11
	dbf	d0,c10

	movem.l	(a7)+,d0-a6

	lea	ConvertOK(pc),a0
	bsr.w	PrintStatus

	rts

TenOfYlewen
	lea	ConvertText(pc),a0
	lea	CycleLabelsE+8(pc),a1
	bsr.w	Printf

	move.l	AllocStart(a5),a0
	move.l	a0,a1

	move.w	#160-1,d0
c20
	move.w	#(5120/16)-1,d1
c21
	movem.l	(a0)+,d2-d5
	movem.l	(a1)+,a2-a5
	movem.l	d2-d5,-(a1)
	movem.l	a2-a5,-(a0)
	lea	16(a0),a0
	lea	16(a1),a1
	dbf	d1,c21

	lea	512(a0),a0
	dbf	d0,c20

	move.w	#((160*512)/4)-1,d1
c22
	clr.l	-(a0)
	dbf	d1,c22

	movem.l	(a7)+,d0-a6

	lea	ConvertOK(pc),a0
	bsr.w	PrintStatus

	rts

PseudoOFS
	lea	ConvertText(pc),a0
	lea	CycleLabelsE+12(pc),a1
	bsr.w	Printf

	move.l	AllocStart(a5),a0
	move.l	a0,a1

	move.w	#1760-1,d0
c30
	moveq	#(24/4)-1,d1
c31
	clr.l	(a0)+
	dbf	d1,c31

	moveq	#(488/4)-1,d1
c32
	move.l	(a0),(a1)+
	clr.l	(a0)+
	dbf	d1,c32

	dbf	d0,c30

	movem.l	(a7)+,d0-a6

	lea	ConvertOK(pc),a0
	bsr.w	PrintStatus

	rts

Ocean
	lea	ConvertText(pc),a0
	lea	CycleLabelsE+16(pc),a1
	bsr.w	Printf

	move.l	AllocStart(a5),a0
	move.l	a0,a1

	add.l	#901120,a1
	moveq	#0,d2
	moveq	#0,d3
OceanLoop
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d7

	move.b	(a0),d0
	eor.b	#'R',d0
	subq.b	#1,d0
	move.b	1(a0),d1
	eor.b	d0,d1

	cmp.b	#'N',d1
	bne.b	c42

	subq.b	#1,d0
	move.b	2(a0),d1
	eor.b	d0,d1

	cmp.b	#'C',d1
	bne.b	c42

	subq.b	#1,d0
	move.b	3(a0),d1
	eor.b	d0,d1

	cmp.b	#1,d1
	bne.b	c42

	subq.b	#1,d0
	move.b	4(a0),d1
	eor.b	d0,d1

	tst.b	d1
	bne.b	c42

	subq.b	#4,d0
	move.b	8(a0),d1
	eor.b	d0,d1

	tst.b	d1
	bne.b	c42

	subq.b	#1,d0
	move.b	9(a0),d1
	eor.b	d0,d1

	move.b	d1,d7
	rol.l	#8,d7

	subq.b	#1,d0
	move.b	10(a0),d1
	eor.b	d0,d1

	move.b	d1,d7
	rol.l	#8,d7

	subq.b	#1,d0
	move.b	11(a0),d1
	eor.b	d0,d1

	move.b	d1,d7
	add.l	#$12,d7

	btst.l	#0,d7
	beq.b	Bit0
	addq.l	#1,d7
Bit0
	bsr.w	Decode

c42
	cmp.l	a0,a1
	bls.b	OceanEnd

	addq.l	#1,a0
	bra.w	OceanLoop

OceanEnd
	move.l	d2,OceanOk
	move.l	d3,OceanFault

	movem.l	(a7)+,d0-a6

	lea	OceanText(pc),a0
	lea	OceanOk(pc),a1
	bsr.w	Printf

	rts

OceanOk
	dc.l	0
OceanFault
	dc.l	0

Decode
	moveq	#0,d0
	moveq	#0,d1
c40
	move.b	(a0),d1
	eor.b	d7,d1
	eor.b	d1,d0
	ror.l	#1,d0
	move.b	d1,(a0)+
	subq.l	#1,d7
	bne.b	c40
	tst.l	(a0)
	beq.b	c41
	cmp.l	(a0),d0
	bne.b	c41

	addq.l	#3,a0
	addq.l	#1,d2

	rts
c41
	addq.l	#3,a0
	addq.l	#1,d3

	rts

Robocop
	lea	ConvertText(pc),a0
	lea	CycleLabelsE+20(pc),a1
	bsr.w	Printf

	move.l	AllocStart(a5),a0
	move.l	a0,a1

	move.w	#80-1,d0
c50
	move.w	#($1850/16)-1,d1
c51
	move.l	(a0)+,(a1)+
	move.l	(a0)+,(a1)+
	move.l	(a0)+,(a1)+
	move.l	(a0)+,(a1)+

	dbf	d1,c51

	lea	$13B0(a0),a0
	dbf	d0,c50

	move.w	#((80*$13B0)/16)-1,d1
c52
	clr.l	(a1)+
	clr.l	(a1)+
	clr.l	(a1)+
	clr.l	(a1)+
	dbf	d1,c52

	movem.l	(a7)+,d0-a6

	lea	ConvertOK(pc),a0
	bsr.w	PrintStatus

	rts

DigitalDisco
	lea	ConvertText(pc),a0
	lea	CycleLabelsE+24(pc),a1
	bsr.w	Printf

	move.l	AllocStart(a5),a0
	move.l	a0,a1

	add.l	#901120,a1
.loop
	move.l	(A0)+,D0
	not.l	D0
	cmp.l	#'M.K.',D0
	beq.b	.ok
	cmp.l	A0,A1
	bne.b	.loop
	bra.b	.end
.ok
	lea	-$438+4(A0),A0
	move.l	#$186A0,D0
.loop2
	not.l	(A0)+
	cmp.l	A0,A1
	beq.b	.end
	subq.l	#1,D0
	bne.b	.loop2
	bra.b	.loop
.end
	movem.l	(a7)+,d0-a6

	lea	ConvertOK(pc),a0
	bsr.w	PrintStatus

	rts

***************************************************************************

AllocMemory:
	move.l	d0,AllocLength(a5)
	move.l	d0,AllocEnd(a5)

	move.l	#$10001,d1	;Public i Clear
	move.l	Exec.w,a6
	jsr	AllocMem(a6)

	tst.l	d0
	beq.b	Error

	move.l	d0,AllocStart(a5)
	add.l	d0,AllocEnd(a5)
Error:
	rts

***************************************************************************

FreeMemory:
	tst.l	AllocStart(a5)
	beq.b	NoAlloc

	move.l	AllocStart(a5),a1
	move.l	AllocLength(a5),d0
	move.l	Exec.w,a6
	jsr	FreeMem(a6)

	clr.l	AllocStart(a5)
NoAlloc:
	rts

***************************************************************************

WaitPointer:
	movem.l	d0-a6,-(a7)

	move.l	ReqBase(a5),a6
	move.l	Windows(a5),a0
	jsr	rtSetWaitPointer(a6)

	movem.l	(a7)+,d0-a6
	rts

WorkPointer:
	movem.l	d0-a6,-(a7)

	move.l	IntBase(a5),a6
	move.l	Windows(a5),a0
	jsr	ClearPointer(a6)

	movem.l	(a7)+,d0-a6
	rts

***************************************************************************

Pen:
	movem.l	d0-a6,-(a7)

	move.l	Windows(a5),a1
	move.l	WindowRastPort(a1),a1
	move.l	GrfxBase(a5),a6
	jsr	SetAPen(a6)

	movem.l	(a7)+,d0-a6
	rts

***************************************************************************

Printf:
	movem.l	d0-a6,-(a7)

;	lea	PutChData(pc),a3
;	moveq	#99,d0
;Clears
;	clr.b	(a3)+
;	dbf	d0,Clears

	bsr.b	RawDoFormat

	lea	PutChData(pc),a0
	bsr.w	PrintStatus

	movem.l	(a7)+,d0-a6
	rts

RawDoFormat:
	movem.l	d0-a6,-(a7)

	lea	PutChProc(pc),a2
	lea	PutChData(pc),a3
	move.l	Exec.w,a6
	jsr	RawDoFmt(a6)

	movem.l	(a7)+,d0-a6
	rts

PutChProc:
	move.b	d0,(a3)+
	rts

***************************************************************************

;Print:
;	movem.l	d0-a6,-(a7)

;	move.l	a0,-(sp)

;	move.l	Windows(a5),a1
;	move.l	WindowRastPort(a1),a1
;	move.l	GrfxBase(a5),a6
;	jsr	Move(a6)

;	move.l	(sp)+,a0
;	move.l	a0,a1
;Add:
;	tst.b	(a1)+
;	bne.b	Add
;	subq.l	#1,a1
;	sub.l	a0,a1
;	move.l	a1,d0
;	move.l	Windows(a5),a1
;	move.l	WindowRastPort(a1),a1
;	jsr	Text(a6)

;	movem.l	(a7)+,d0-a6
;	rts

***************************************************************************

;PrintStatus:
;	movem.l	d0-a6,-(a7)

;	move.l	a0,-(sp)

;	bsr.b	Scroll

;	move.l	(sp)+,a0
;	cmpi.b	#1,(a0)
;	beq.b	NewColor
;	cmpi.b	#3,(a0)
;	bne.b	NoNew
;NewColor:
;	moveq	#0,d0
;	move.b	(a0)+,d0
;	move.l	a0,-(sp)
;	bra.b	Color
;NoNew:
;	move.l	a0,-(sp)
;	moveq	#2,d0
;Color:
;	bsr.w	Pen

;	move.l	(sp)+,a0
;	moveq	#24,d0
;	moveq	#79,d1
;	add.l	Scrl(a5),d1

;	bsr.b	Print

;	movem.l	(a7)+,d0-a6
;	rts

***************************************************************************

;Scroll:
;	movem.l	d0-a6,-(a7)

;IlLin:
;	cmpi.l	#17*9,Scrl(a5)
;	bne.b	DownLine

;	move.l	Windows(a5),a1
;	move.l	WindowRastPort(a1),a1
;	moveq	#0,d0
;	moveq	#9,d1
;	moveq	#16,d2
;	moveq	#81,d3
;	move.l	#621,d4
;Scro:	move.l	#233,d5
;	move.l	GrfxBase(a5),a6
;	jsr	ScrollRaster(a6)

;	movem.l	(a7)+,d0-a6
;	rts

;DownLine:
;	add.l	#9,Scrl(a5)

;	movem.l	(a7)+,d0-a6
;	rts

***************************************************************************

Box:
	movem.l	d0-a6,-(a7)

	move.l	Windows(a5),a0
	move.l	WindowRastPort(a0),a0
	moveq	#11,d0
	moveq	#20,d1
	move.l	#618,d2
	moveq	#46,d3
	lea	BevelTag(pc),a1
	move.l	GadBase(a5),a6
	jsr	DrawBevelBoxA(a6)

	move.l	Windows(a5),a0
	move.l	WindowRastPort(a0),a0
	moveq	#16,d0
	moveq	#23,d1
	move.l	#608,d2
	moveq	#40,d3
	lea	BevelTag2(pc),a1
	jsr	DrawBevelBoxA(a6)

	move.l	Windows(a5),a0
	move.l	WindowRastPort(a0),a0
	moveq	#11,d0
	moveq	#75,d1
	move.l	#618,d2
Box1:	move.l	#163,d3
	lea	BevelTag(pc),a1
	jsr	DrawBevelBoxA(a6)

	move.l	Windows(a5),a0
	move.l	WindowRastPort(a0),a0
	moveq	#13,d0
	moveq	#76,d1
	move.l	#614,d2
Box2:	move.l	#161,d3
	lea	BevelTag2(pc),a1
	jsr	DrawBevelBoxA(a6)

	movem.l	(a7)+,d0-a6
	rts

BevelTag:
	dc.l	GT_VisualInfo
Visual10:
	dc.l	0
	dc.l	GTBB_Recessed,1
	dc.l	0

BevelTag2:
	dc.l	GT_VisualInfo
Visual11:
	dc.l	0
	dc.l	0

***************************************************************************

DosName:	dc.b	'dos.library',0
IntName:	dc.b	'intuition.library',0
GfxName:	dc.b	'graphics.library',0
GadName:	dc.b	'gadtools.library',0
ReqName:	dc.b	'reqtools.library',0
XfdName:	dc.b	'xfdmaster.library',0
TrackName:	dc.b	'trackdisk.device',0

	CNOP 0,2

Variables:	ds.l	65

Glist:		dc.l	0
Gadget1:	dcb.l	8,0
Gadget2:	dcb.l	8,0
Gadget3:	dcb.l	8,0
Gadget4:	dcb.l	8,0
Gadget5:	dcb.l	8,0
Gadget6:	dcb.l	8,0
Gadget7:	dcb.l	8,0

Glist2:		dc.l	0
GadgetPref1:	dcb.l	8,0
GadgetPref2:	dcb.l	8,0
GadgetPref3:	dcb.l	8,0
GadgetPref4:	dcb.l	8,0
GadgetPref5:	dcb.l	8,0
GadgetPref6:	dcb.l	8,0
GadgetPref7:	dcb.l	8,0
GadgetPref8:	dcb.l	8,0
GadgetPref9:	dcb.l	8,0
GadgetPrefA:	dcb.l	8,0
GadgetPrefB:	dcb.l	8,0
GadgetPrefC:	dcb.l	8,0
GadgetPrefD:	dcb.l	8,0
GadgetPrefE:	dcb.l	8,0
GadgetPrefF:	dcb.l	8,0

	CNOP 0,2

***************************************************************************

TagsLoad:
		dc.l	RT_Window
WindowLoad:	dc.l	0
		dc.l	RT_ReqPos,REQPOS_CENTERWIN
		dc.l	RT_WaitPointer,1
		dc.l	RT_Underscore,'_'
		dc.l	RT_LockWindow,1
		dc.l	RTFI_Flags,FREQF_PATGAD!FREQF_MULTISELECT
		dc.l	RTFI_Height,248
		dc.l	RTFI_OkText,LoadFileG
		dc.l	0
FileReqNameLoad:
		dc.b	'Load file(s)',0
LoadFileG:
		dc.b	'L_oad',0
	CNOP 0,2

***************************************************************************

TagsSave:
		dc.l	RT_Window
WindowSave:	dc.l	0
		dc.l	RT_ReqPos,REQPOS_CENTERWIN
		dc.l	RT_WaitPointer,1
		dc.l	RT_Underscore,'_'
		dc.l	RT_LockWindow,1
		dc.l	RTFI_Flags,FREQF_SAVE
		dc.l	RTFI_Height,248
		dc.l	RTFI_OkText,SaveFileG
		dc.l	0
FileReqNameSave:
		dc.b	'Save file',0
SaveFileG:
		dc.b	'_Save',0
	CNOP 0,2

***************************************************************************

Comment:
	dc.b	'Track2File V1.22 by Mr.Larmer/WNT - ID: %s , Offset: $%08lx , Track: %04d',0
	CNOP 0,2

***************************************************************************

WindowTags:
	dc.l	WA_Left,0
	dc.l	WA_Top,11
	dc.l	WA_Width,640
	dc.l	WA_Height
WinHei:	dc.l	245
	dc.l	WA_DetailPen,0
	dc.l	WA_BlockPen,1
	dc.l	WA_IDCMP,IDCMP_NEWSIZE!IDCMP_CLOSEWINDOW!IDCMP_GADGETUP!IDCMP_VANILLAKEY!IDCMP_MOUSEBUTTONS!LISTVIEWIDCMP
	dc.l	WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_ACTIVATE!WFLG_RMBTRAP!WFLG_CLOSEGADGET!WFLG_NOCAREREFRESH
	dc.l	WA_Gadgets,Gadget1
	dc.l	WA_Title,WindowTitle
	dc.l	WA_ScreenTitle,WindowTitle
	dc.l	WA_MinWidth,0
	dc.l	WA_MinHeight,0
	dc.l	WA_MaxWidth,0
	dc.l	WA_MaxHeight,0
	dc.l	WA_Zoom,Zoom
	dc.l	0

Zoom:
	dc.w	0,11,214,11
WindowTitle:
	dc.b	'Track2File V1.22 beta © 1995-97 by Mr.Larmer of Wanted Team',0
	CNOP 0,2

***************************************************************************

WindowPrefTags:
	dc.l	WA_Left,120
	dc.l	WA_Top,60
	dc.l	WA_Width,400
	dc.l	WA_Height,185
	dc.l	WA_DetailPen,0
	dc.l	WA_BlockPen,1
	dc.l	WA_IDCMP,IDCMP_GADGETUP!IDCMP_VANILLAKEY!IDCMP_GADGETDOWN!LISTVIEWIDCMP
	dc.l	WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_ACTIVATE!WFLG_RMBTRAP!WFLG_NOCAREREFRESH
	dc.l	WA_Gadgets,GadgetPref1
	dc.l	WA_Title,WindowPrefTitle
	dc.l	WA_ScreenTitle,WindowTitle
	dc.l	WA_MinWidth,0
	dc.l	WA_MinHeight,0
	dc.l	WA_MaxWidth,0
	dc.l	WA_MaxHeight,0
	dc.l	0

WindowPrefTitle:
	dc.b	'Preferences',0
	CNOP 0,2

***************************************************************************

Font:		dc.l	Font2
		dc.w	8
		dc.b	0,1
Font2:		dc.b	'topaz.font',0
	CNOP 0,2

***************************************************************************

DiskReadGad:
		dc.w	GadLeftEdge+(GadWidth*0)+(GadNaStyk*0),GadTopEdge
		dc.w	GadWidth,GadHeight
		dc.l	DiskReadText
		dc.l	Font
		dc.w	1
		dc.l	PLACETEXT_IN
Visual1:	dc.l	0
		dc.l	0

TagListButton:
		dc.l	GT_Underscore,'_'
		dc.l	0

DiskReadText:	dc.b	'Disk _Read',0
	CNOP 0,2

***************************************************************************

LoadFileGad:
		dc.w	GadLeftEdge+(GadWidth*1)+(GadNaStyk*1),GadTopEdge
		dc.w	GadWidth,GadHeight
		dc.l	LoadFileText
		dc.l	Font
		dc.w	2
		dc.l	PLACETEXT_IN
Visual2:	dc.l	0
		dc.l	0

LoadFileText:	dc.b	'_Load File',0
	CNOP 0,2

***************************************************************************

SearchGad:
		dc.w	GadLeftEdge+(GadWidth*2)+(GadNaStyk*2),GadTopEdge
		dc.w	GadWidth,GadHeight
		dc.l	SearchText
		dc.l	Font
		dc.w	3
		dc.l	PLACETEXT_IN
Visual3:	dc.l	0
		dc.l	0

SearchText:	dc.b	'_Search',0
	CNOP 0,2

***************************************************************************

PrefsGad:
		dc.w	GadLeftEdge+(GadWidth*3)+(GadNaStyk*3),GadTopEdge
		dc.w	GadWidth,GadHeight
		dc.l	PrefsText
		dc.l	Font
		dc.w	4
		dc.l	PLACETEXT_IN
Visual4:	dc.l	0
		dc.l	0

PrefsText:	dc.b	'_Prefs',0
	CNOP 0,2

***************************************************************************

AboutsGad:
		dc.w	GadLeftEdge+(GadWidth*4)+(GadNaStyk*4),GadTopEdge
		dc.w	GadWidth,GadHeight
		dc.l	AboutsText
		dc.l	Font
		dc.w	5
		dc.l	PLACETEXT_IN
Visual5:	dc.l	0
		dc.l	0

AboutsText:	dc.b	'_About',0
	CNOP 0,2

***************************************************************************

StatusGad:
		dc.w	17,78
		dc.w	610,163
		dc.l	StatusText2
		dc.l	Font
		dc.w	18
		dc.l	PLACETEXT_ABOVE!NG_HIGHLABEL
Visual20:	dc.l	0
		dc.l	0

TagListView2:
		dc.l	GTLV_Labels,ID_List2
		dc.l	GTLV_ReadOnly,1
		dc.l	GTLV_ScrollWidth,18
		dc.l	LAYOUTA_Spacing,1
		dc.l	GTLV_Top
Top2:		dc.l	0
		dc.l	0

StatusText2:	dc.b	0
	CNOP 0,2
ID_List2:
;		dc.l	ID_Nodes0,0,ID_Nodes0,0
		dc.l	0,0,0,0

;ID_Nodes0:
;		dcb.b	50*14
;ID_Names0:
;		dcb.b	50*100
	CNOP 0,2

Licznik
	dc.l	0

PrintStatus
	movem.l	d0-a6,-(a7)

	move.l	a0,-(a7)

;	bsr.w	SetFunc

	move.l	Windows(a5),a0
	move.l	GadBase(a5),a6
	jsr	GT_BeginRefresh(a6)

	move.l	Gadget7(pc),a0
	move.l	Windows(a5),a1
	sub.l	a2,a2
	lea	TagsListNil(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

;	move.l	Windows(a5),a0
;	move.l	GadBase(a5),a6
;	jsr	GT_BeginRefresh(a6)

	cmp.l	#200,Licznik
	blt.b	NotTrans

	move.l	BufTextNames(A5),a0
	lea	100(a0),a1
	move.l	#(200-1)*100,d0
cop2
	move.b	(a1)+,(a0)+
	subq.l	#1,d0
	bne.b	cop2
NotTrans
	move.l	(a7)+,a0		; tekst do skopiowania
	move.l	BufTextNames(A5),a1
	move.l	Licznik(pc),d0
	mulu.w	#100,d0
	add.l	d0,a1
	cmp.l	#200,Licznik
	blt.b	minus
	lea	-100(a1),a1
minus
	moveq	#98,d0
cop
	subq.l	#1,d0
	move.b	(a0)+,(a1)+
	bne.b	cop

	tst.l	d0
	bpl.	od
	moveq	#0,d0
od
	subq.l	#1,a1

;	cmp.b	#3,(a1)
;	bne.b	NotOne
Clears
	move.b	#' ',(a1)+
	dbf	d0,Clears
;;	move.b	#$b6,(a1)+
;;	move.b	#$31,(a1)+
;	move.b	#3,(a1)+
	clr.b	(a1)
;NotOne

	move.l	BufTextNodes(A5),a0
	move.l	BufTextNames(A5),a2
	lea	ID_List2(pc),a3

	tst.l	Licznik
	bne.b	SecondNodes

	move.l	a0,(a3)
	move.l	a0,8(a3)

	move.l	a3,(a0)		;next node ptr
	addq.l	#4,(a0)+
	move.l	a3,(a0)+	;first node ptr
	clr.w	(a0)+
	move.l	a2,(a0)+	;text ptr
	bra.w	Compa

SecondNodes
	cmp.l	#1,Licznik
	bne.b	ThreeNodes

	move.l	Licznik(pc),d0
	subq.l	#1,d0
	move.l	d0,d1
	mulu.w	#14,d0
	add.l	d0,a0
	lea	14(a0),a1
	move.l	a1,(a0)+	;next node ptr
	move.l	a3,(a0)+	;prev node ptr
	clr.w	(a0)+
	mulu.w	#100,d1
	add.l	d1,a2
	move.l	a2,(a0)+	;text ptr

	move.l	a0,8(a3)

	move.l	a3,(a0)		;next node ptr
	addq.l	#4,(a0)+
	lea	-18(a0),a4
	move.l	a4,(a0)+	;prev node ptr
	clr.w	(a0)+
	lea	100(a2),a2
	move.l	a2,(a0)+	;text ptr

	bra.w	Compa

ThreeNodes
	cmp.l	#200,Licznik
	bge.b	Compa

	move.l	Licznik(pc),d0
	subq.l	#1,d0
	move.l	d0,d1
	mulu.w	#14,d0
	add.l	d0,a0
	lea	14(a0),a1
	move.l	a1,(a0)+	;next node ptr
	lea	-18(a0),a4
	move.l	a4,(a0)+	;prev node ptr
	clr.w	(a0)+
	mulu.w	#100,d1
	add.l	d1,a2
	move.l	a2,(a0)+	;text ptr

	move.l	a0,8(a3)

	move.l	a3,(a0)		;next node ptr
	addq.l	#4,(a0)+
	lea	-18(a0),a4
	move.l	a4,(a0)+	;prev node ptr
	clr.w	(a0)+
	lea	100(a2),a2
	move.l	a2,(a0)+	;text ptr

Compa
	cmp.l	#200,Licznik
	bge.b	Niedodaj

Dodaj
	addq.l	#1,Licznik
Niedodaj

	cmp.l	#17,Licznik
	bls.b	NotTop
	move.l	Licznik(pc),d0
Niedo
	sub.l	#17,d0
	move.l	d0,Top2
NotTop
	moveq	#1,d0
	move.l	Windows(a5),a0
	jsr	GT_EndRefresh(a6)

	move.l	Gadget7(pc),a0
	move.l	Windows(a5),a1
	sub.l	a2,a2
	lea	TagListView2(pc),a3
	jsr	GT_SetGadgetAttrsA(a6)

;	moveq	#1,d0
;	move.l	Windows(a5),a0
;	jsr	GT_EndRefresh(a6)

	movem.l	(a7)+,d0-a6

	rts

;SetFunc
;	move.l	Exec.w,a6
;	jsr	Forbid(a6)

;	move.l	#Text,a0
;	lea	NewFunc(pc),a1
;	move.l	a1,d0
;	move.l	GrfxBase(a5),a1
;	jsr	SetFunction(a6)
;	move.l	d0,OldFunc

;	jsr	Permit(a6)

;	rts

;SetOldFunc
;	move.l	Exec.w,a6
;	jsr	Forbid(a6)

;	move.l	#Text,a0
;	move.l	OldFunc(pc),d0
;	move.l	GrfxBase(a5),a1
;	jsr	SetFunction(a6)

;	jsr	Permit(a6)

;	rts

NewFunc
; Input
; D0 = length
; A0 = string
; A1 = rastport

;	movem.l	D0/A0-A1,-(SP)
;	subq.l	#1,D0
;	adda.l	D0,A0
;	cmpi.b	#3,(A0)
;	bne.s	lbC001092
;	suba.l	D0,A0
;lbC001088:
;	cmpi.b	#$B6,(A0)+
;	beq.s	lbC00109A
;	dbra	D0,lbC001088
;lbC001092:
;	movem.l	(SP)+,D0/A0-A1
;	bra.w	lbW001142

;lbC00109A:
;	cmpi.b	#$30,(A0)
;	bcs.s	lbC001092
;	cmpi.b	#$33,(A0)
;	bhi.s	lbC001092
;lbC0010A6:
;	cmpi.b	#$B6,(A0)+
;	beq.s	lbC0010B2
;	dbra	D0,lbC0010A6
;	bra.s	lbC001092

;lbC0010B2:
;	cmpi.b	#$30,(A0)
;	bcs.s	lbC001092
;	cmpi.b	#$33,(A0)
;	bhi.s	lbC001092
;	movem.l	(SP)+,D0/A0-A1
;	movem.l	D0-D7/A0-A6,-(SP)
;lbC0010C6:
;	moveq	#0,D0
;	tst.b	(A0)
;	beq.w	lbC00113C
;lbC0010CE:
;	tst.b	(A0)
;	beq.s	lbC001122
;	cmpi.b	#$B6,(A0)
;	beq.s	lbC0010DE
;lbC0010D8:
;	addq.w	#1,D0
;	addq.w	#1,A0
;	bra.s	lbC0010CE

;lbC0010DE:
;	cmpi.b	#$30,1(A0)
;	bcs.s	lbC0010D8
;	cmpi.b	#$33,1(A0)
;	bhi.s	lbC0010D8
;	move.b	1(A0),lbW00114C.L
;	suba.l	D0,A0
;	bsr.w	lbC00112E
;	adda.l	D0,A0
;	movem.l	D0-D7/A0-A6,-(SP)
;	moveq	#0,D0
;	move.b	lbW00114C.L,D0
;	subi.b	#$30,D0
;	movea.l	Variables+GrfxBase(pc),A6
;	jsr	SetAPen(A6)		; Set A Pen
;	movem.l	(SP)+,D0-D7/A0-A6
;	addq.l	#2,A0
;	bra.w	lbC0010C6

;lbC001122:
;	suba.l	D0,A0
;	subq.w	#1,D0
;	bsr.w	lbC00112E
;	bra.w	lbC00113C

;lbC00112E:
;	movem.l	D0/A0/A1,-(SP)
;	bsr.w	lbW001142
;	movem.l	(SP)+,D0/A0/A1
;	rts

;lbC00113C:
;	movem.l	(SP)+,D0-D7/A0-A6
;	rts

;lbW00114C:
;	dc.w	0
;lbW001142
;	dc.w	$4EF9
;OldFunc
;	dc.l	0

***************************************************************************

CycleGad:
		dc.w	10,20
		dc.w	70,14
		dc.l	CycleText
		dc.l	Font
		dc.w	6
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual6:	dc.l	0
		dc.l	0

TagListCycle:
		dc.l	GT_Underscore,'_'
		dc.l	GTCY_Labels,CycleLabels
		dc.l	GTCY_Active
DriveActive:	dc.l	0
		dc.l	0

CycleLabels:
		dc.l	Drives0
		dc.l	Drives1
		dc.l	Drives2
		dc.l	Drives3
		dc.l	0

Drives0:	dc.b	'DF0:',0
Drives1:	dc.b	'DF1:',0
Drives2:	dc.b	'DF2:',0
Drives3:	dc.b	'DF3:',0

CycleText:	dc.b	'_Drive to read',0
	CNOP 0,2

***************************************************************************

CycleGadE:
		dc.w	10,40
		dc.w	136,14
		dc.l	CycleTextE
		dc.l	Font
		dc.w	18
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual21:	dc.l	0
		dc.l	0

TagListCycleE
		dc.l	GT_Underscore,'_'
		dc.l	GTCY_Labels,CycleLabelsE
		dc.l	GTCY_Active
FormatActive	dc.l	0
		dc.l	0

CycleLabelsE
		dc.l	Format0
		dc.l	Format1
		dc.l	Format2
		dc.l	Format3
		dc.l	Format4
		dc.l	Format5
		dc.l	Format6
		dc.l	Format7
		dc.l	0

Format0:	dc.b	'Normal',0
Format1:	dc.b	'Graftgold',0
Format2:	dc.b	'10 of 11',0
Format3:	dc.b	'Pseudo OFS',0
Format4		dc.b	'Ocean',0
Format5		dc.b	'Robocop',0
Format6		dc.b	'Digital Disco',0
Format7		dc.b	'LOB decode',0

CycleTextE:	dc.b	'C_onverter',0
	CNOP 0,2

***************************************************************************

ChBoxGad:
		dc.w	10,60
		dc.w	26,11
		dc.l	ChBoxText
		dc.l	Font
		dc.w	7
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual7:	dc.l	0
		dc.l	0

TagListChBox:
		dc.l	GT_Underscore,'_'
		dc.l	GTCB_Checked
IncCheck:	dc.l	0
		dc.l	0

ChBoxText:	dc.b	'_Inc file name',0
	CNOP 0,2

***************************************************************************

ChBoxGad2:
		dc.w	10,75
		dc.w	26,11
		dc.l	ChBoxText2
		dc.l	Font
		dc.w	8
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual8:	dc.l	0
		dc.l	0

TagListChBox2:
		dc.l	GT_Underscore,'_'
		dc.l	GTCB_Checked
DecrCheck:	dc.l	0
		dc.l	0

ChBoxText2:	dc.b	'D_ecrunch before save',0
	CNOP 0,2

***************************************************************************

ChBoxGad3:
		dc.w	10,90
		dc.w	26,11
		dc.l	ChBoxText3
		dc.l	Font
		dc.w	9
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual9:	dc.l	0
		dc.l	0

TagListChBox3:
		dc.l	GT_Underscore,'_'
		dc.l	GTCB_Checked
SkipCheck:	dc.l	0
		dc.l	0

ChBoxText3:	dc.b	'S_kip file',0
	CNOP 0,2

***************************************************************************

ChBoxGad4:
		dc.w	10,105
		dc.w	26,11
		dc.l	ChBoxText4
		dc.l	Font
		dc.w	14
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual16:	dc.l	0
		dc.l	0

TagListChBox4:
		dc.l	GT_Underscore,'_'
		dc.l	GTCB_Checked
DeepCheck:	dc.l	0
		dc.l	0

ChBoxText4:	dc.b	'Dee_p search',0
	CNOP 0,2

***************************************************************************

ChBoxGad5
		dc.w	10,120
		dc.w	26,11
		dc.l	ChBoxText5
		dc.l	Font
		dc.w	19
		dc.l	PLACETEXT_RIGHT!NG_HIGHLABEL
Visual22	dc.l	0
		dc.l	0

TagListChBox5
		dc.l	GT_Underscore,'_'
		dc.l	GTCB_Checked
RNCCheck	dc.l	0
		dc.l	0

ChBoxText5	dc.b	'_RNC old',0
	CNOP 0,2

***************************************************************************

SaveGad:
		dc.w	((400-(60*3)-(2*60))/2)+(60*0)+(60*0),160
		dc.w	60,14
		dc.l	SaveText
		dc.l	Font
		dc.w	10
		dc.l	PLACETEXT_IN
Visual12:	dc.l	0
		dc.l	0

SaveText:	dc.b	'_Save',0
	CNOP 0,2

***************************************************************************

UseGad:
		dc.w	((400-(60*3)-(2*60))/2)+(60*1)+(60*1),160
		dc.w	60,14
		dc.l	UseText
		dc.l	Font
		dc.w	11
		dc.l	PLACETEXT_IN
Visual13:	dc.l	0
		dc.l	0

UseText:	dc.b	'_Use',0
	CNOP 0,2

***************************************************************************

CancelGad:
		dc.w	((400-(60*3)-(2*60))/2)+(60*2)+(60*2),160
		dc.w	60,14
		dc.l	CancelText
		dc.l	Font
		dc.w	12
		dc.l	PLACETEXT_IN
Visual14:	dc.l	0
		dc.l	0

CancelText:	dc.b	'_Cancel',0
	CNOP 0,2

***************************************************************************

InvertGad:
		dc.w	241,135
		dc.w	60,14
		dc.l	InvertText
		dc.l	Font
		dc.w	15
		dc.l	PLACETEXT_IN
Visual17:	dc.l	0
		dc.l	0

InvertText:	dc.b	'In_vert',0
	CNOP 0,2

***************************************************************************

ClearGad:
		dc.w	311,135
		dc.w	60,14
		dc.l	ClearText
		dc.l	Font
		dc.w	16
		dc.l	PLACETEXT_IN
Visual18:	dc.l	0
		dc.l	0

ClearText:	dc.b	'C_lear',0
	CNOP 0,2

***************************************************************************

ImageGad:
		dc.w	10,135
		dc.w	100,14
		dc.l	ImageText
		dc.l	Font
		dc.w	17
		dc.l	PLACETEXT_IN
Visual19:	dc.l	0
		dc.l	0

ImageText:	dc.b	'Save i_mage',0
	CNOP 0,2

***************************************************************************

ListViewGad:
		dc.w	230,35
		dc.w	152,95
		dc.l	ListViewText
		dc.l	Font
		dc.w	13
		dc.l	PLACETEXT_ABOVE!NG_HIGHLABEL
Visual15:	dc.l	0
		dc.l	0

TagListView:
		dc.l	GTLV_Labels,ID_List
		dc.l	GTLV_Top
Top:		dc.l	0
		dc.l	0

ListViewText:	dc.b	'Enable/Disable IDs',0
	CNOP 0,2
ID_List:
		dc.l	ID_Node0,0,ID_Node120,0
ID_Node0:
		dc.l	ID_Node1
		dc.l	ID_List
		dc.b	0,0
		dc.l	ID_Name0
ID_Name0:
		dc.b	'   1 : CP       ',0
	CNOP 0,2
ID_Node1:
		dc.l	ID_Node2
		dc.l	ID_Node0
		dc.b	0,0
		dc.l	ID_Name1
ID_Name1:
		dc.b	'   2 : GP       ',0
	CNOP 0,2
ID_Node2:
		dc.l	ID_Node3
		dc.l	ID_Node1
		dc.b	0,0
		dc.l	ID_Name2
ID_Name2:
		dc.b	'   3 : JR       ',0
	CNOP 0,2
ID_Node3:
		dc.l	ID_Node4
		dc.l	ID_Node2
		dc.b	0,0
		dc.l	ID_Name3
ID_Name3:
		dc.b	'   4 : SA       ',0
	CNOP 0,2
ID_Node4:
		dc.l	ID_Node5
		dc.l	ID_Node3
		dc.b	0,0
		dc.l	ID_Name4
ID_Name4:
		dc.b	'   5 : SC       ',0
	CNOP 0,2
ID_Node5:
		dc.l	ID_Node6
		dc.l	ID_Node4
		dc.b	0,0
		dc.l	ID_Name5
ID_Name5:
		dc.b	'   6 : SF       ',0
	CNOP 0,2
ID_Node6:
		dc.l	ID_Node7
		dc.l	ID_Node5
		dc.b	0,0
		dc.l	ID_Name6
ID_Name6:
		dc.b	'   7 : SP       ',0
	CNOP 0,2
ID_Node7:
		dc.l	ID_Node8
		dc.l	ID_Node6
		dc.b	0,0
		dc.l	ID_Name7
ID_Name7:
		dc.b	'   8 : SQ       ',0
	CNOP 0,2
ID_Node8:
		dc.l	ID_Node9
		dc.l	ID_Node7
		dc.b	0,0
		dc.l	ID_Name8
ID_Name8:
		dc.b	'   9 : 1AM      ',0
	CNOP 0,2
ID_Node9:
		dc.l	ID_Node10
		dc.l	ID_Node8
		dc.b	0,0
		dc.l	ID_Name9
ID_Name9:
		dc.b	'  10 : 2AM      ',0
	CNOP 0,2
ID_Node10:
		dc.l	ID_Node11
		dc.l	ID_Node9
		dc.b	0,0
		dc.l	ID_Name10
ID_Name10:
		dc.b	'  11 : LOB      ',0
	CNOP 0,2
ID_Node11:
		dc.l	ID_Node12
		dc.l	ID_Node10
		dc.b	0,0
		dc.l	ID_Name11
ID_Name11:
		dc.b	'  12 : RLE      ',0
	CNOP 0,2
ID_Node12:
		dc.l	ID_Node13
		dc.l	ID_Node11
		dc.b	0,0
		dc.l	ID_Name12
ID_Name12:
		dc.b	'  13 : =SB=     ',0
	CNOP 0,2
ID_Node13:
		dc.l	ID_Node14
		dc.l	ID_Node12
		dc.b	0,0
		dc.l	ID_Name13
ID_Name13:
		dc.b	'  14 : $08090A08',0
	CNOP 0,2
ID_Node14
		dc.l	ID_Node15
		dc.l	ID_Node13
		dc.b	0,0
		dc.l	ID_Name14
ID_Name14
		dc.b	'  15 : $08090A0A',0
	CNOP 0,2
ID_Node15
		dc.l	ID_Node16
		dc.l	ID_Node14
		dc.b	0,0
		dc.l	ID_Name15
ID_Name15
		dc.b	'  16 : $08090A0B',0
	CNOP 0,2
ID_Node16
		dc.l	ID_Node17
		dc.l	ID_Node15
		dc.b	0,0
		dc.l	ID_Name16
ID_Name16
		dc.b	'  17 : $08090A0C',0
	CNOP 0,2
ID_Node17
		dc.l	ID_Node18
		dc.l	ID_Node16
		dc.b	0,0
		dc.l	ID_Name17
ID_Name17
		dc.b	'  18 : $08090A0D',0
	CNOP 0,2
ID_Node18
		dc.l	ID_Node19
		dc.l	ID_Node17
		dc.b	0,0
		dc.l	ID_Name18
ID_Name18
		dc.b	'  19 : $09090909',0
	CNOP 0,2
ID_Node19
		dc.l	ID_Node20
		dc.l	ID_Node18
		dc.b	0,0
		dc.l	ID_Name19
ID_Name19
		dc.b	'  20 : $090A0A0A',0
	CNOP 0,2
ID_Node20
		dc.l	ID_Node21
		dc.l	ID_Node19
		dc.b	0,0
		dc.l	ID_Name20
ID_Name20
		dc.b	'  21 : $090A0B0B',0
	CNOP 0,2
ID_Node21
		dc.l	ID_Node22
		dc.l	ID_Node20
		dc.b	0,0
		dc.l	ID_Name21
ID_Name21
		dc.b	'  22 : $090A0C0C',0
	CNOP 0,2
ID_Node22
		dc.l	ID_Node23
		dc.l	ID_Node21
		dc.b	0,0
		dc.l	ID_Name22
ID_Name22
		dc.b	'  23 : $090A0C0D',0
	CNOP 0,2
ID_Node23
		dc.l	ID_Node24
		dc.l	ID_Node22
		dc.b	0,0
		dc.l	ID_Name23
ID_Name23
		dc.b	'  24 : $18051973',0
	CNOP 0,2
ID_Node24
		dc.l	ID_Node25
		dc.l	ID_Node23
		dc.b	0,0
		dc.l	ID_Name24
ID_Name24
		dc.b	'  25 : 0815     ',0
	CNOP 0,2
ID_Node25
		dc.l	ID_Node26
		dc.l	ID_Node24
		dc.b	0,0
		dc.l	ID_Name25
ID_Name25
		dc.b	'  26 : !GC!     ',0
	CNOP 0,2
ID_Node26
		dc.l	ID_Node27
		dc.l	ID_Node25
		dc.b	0,0
		dc.l	ID_Name26
ID_Name26
		dc.b	'  27 : ACE!     ',0
	CNOP 0,2
ID_Node27
		dc.l	ID_Node28
		dc.l	ID_Node26
		dc.b	0,0
		dc.l	ID_Name27
ID_Name27
		dc.b	'  28 : ALC0     ',0
	CNOP 0,2
ID_Node28
		dc.l	ID_Node29
		dc.l	ID_Node27
		dc.b	0,0
		dc.l	ID_Name28
ID_Name28
		dc.b	'  29 : ARP3     ',0
	CNOP 0,2
ID_Node29
		dc.l	ID_Node30
		dc.l	ID_Node28
		dc.b	0,0
		dc.l	ID_Name29
ID_Name29
		dc.b	'  30 : ARPF     ',0
	CNOP 0,2
ID_Node30
		dc.l	ID_Node31
		dc.l	ID_Node29
		dc.b	0,0
		dc.l	ID_Name30
ID_Name30
		dc.b	'  31 : ATM5     ',0
	CNOP 0,2
ID_Node31
		dc.l	ID_Node32
		dc.l	ID_Node30
		dc.b	0,0
		dc.l	ID_Name31
ID_Name31
		dc.b	'  32 : ATN!     ',0
	CNOP 0,2
ID_Node32
		dc.l	ID_Node33
		dc.l	ID_Node31
		dc.b	0,0
		dc.l	ID_Name32
ID_Name32
		dc.b	'  33 : ATOM     ',0
	CNOP 0,2
ID_Node33
		dc.l	ID_Node34
		dc.l	ID_Node32
		dc.b	0,0
		dc.l	ID_Name33
ID_Name33
		dc.b	'  34 : Ace?     ',0
	CNOP 0,2
ID_Node34
		dc.l	ID_Node35
		dc.l	ID_Node33
		dc.b	0,0
		dc.l	ID_Name34
ID_Name34
		dc.b	'  35 : ArcD     ',0
	CNOP 0,2
ID_Node35
		dc.l	ID_Node36
		dc.l	ID_Node34
		dc.b	0,0
		dc.l	ID_Name35
ID_Name35
		dc.b	'  36 : ArcR     ',0
	CNOP 0,2
ID_Node36
		dc.l	ID_Node37
		dc.l	ID_Node35
		dc.b	0,0
		dc.l	ID_Name36
ID_Name36
		dc.b	'  37 : arcD     ',0
	CNOP 0,2
ID_Node37
		dc.l	ID_Node38
		dc.l	ID_Node36
		dc.b	0,0
		dc.l	ID_Name37
ID_Name37
		dc.b	'  38 : BDPI     ',0
	CNOP 0,2
ID_Node38
		dc.l	ID_Node39
		dc.l	ID_Node37
		dc.b	0,0
		dc.l	ID_Name38
ID_Name38
		dc.b	'  39 : BH72     ',0
	CNOP 0,2
ID_Node39
		dc.l	ID_Node39a
		dc.l	ID_Node38
		dc.b	0,0
		dc.l	ID_Name39
ID_Name39
		dc.b	'  40 : BH73     ',0
	CNOP 0,2
ID_Node39a
		dc.l	ID_Node40
		dc.l	ID_Node39
		dc.b	0,0
		dc.l	ID_Name39a
ID_Name39a
		dc.b	'  41 : BHC3     ',0
	CNOP 0,2
ID_Node40
		dc.l	ID_Node41
		dc.l	ID_Node39a
		dc.b	0,0
		dc.l	ID_Name40
ID_Name40
		dc.b	'  42 : BOND     ',0
	CNOP 0,2
ID_Node41
		dc.l	ID_Node42
		dc.l	ID_Node40
		dc.b	0,0
		dc.l	ID_Name41
ID_Name41
		dc.b	'  43 : CHFC     ',0
	CNOP 0,2
ID_Node42
		dc.l	ID_Node43
		dc.l	ID_Node41
		dc.b	0,0
		dc.l	ID_Name42
ID_Name42
		dc.b	'  44 : CHFI     ',0
	CNOP 0,2
ID_Node43
		dc.l	ID_Node44
		dc.l	ID_Node42
		dc.b	0,0
		dc.l	ID_Name43
ID_Name43
		dc.b	'  45 : CMP1     ',0
	CNOP 0,2
ID_Node44
		dc.l	ID_Node45
		dc.l	ID_Node43
		dc.b	0,0
		dc.l	ID_Name44
ID_Name44
		dc.b	'  46 : CrM!     ',0
	CNOP 0,2
ID_Node45
		dc.l	ID_Node46
		dc.l	ID_Node44
		dc.b	0,0
		dc.l	ID_Name45
ID_Name45
		dc.b	'  47 : CrM2     ',0
	CNOP 0,2
ID_Node46
		dc.l	ID_Node47
		dc.l	ID_Node45
		dc.b	0,0
		dc.l	ID_Name46
ID_Name46
		dc.b	'  48 : Crm!     ',0
	CNOP 0,2
ID_Node47
		dc.l	ID_Node48
		dc.l	ID_Node46
		dc.b	0,0
		dc.l	ID_Name47
ID_Name47
		dc.b	'  49 : Crm2     ',0
	CNOP 0,2
ID_Node48
		dc.l	ID_Node49
		dc.l	ID_Node47
		dc.b	0,0
		dc.l	ID_Name48
ID_Name48
		dc.b	'  50 : CRND     ',0
	CNOP 0,2
ID_Node49
		dc.l	ID_Node49a
		dc.l	ID_Node48
		dc.b	0,0
		dc.l	ID_Name49
ID_Name49
		dc.b	'  51 : CRUa     ',0
	CNOP 0,2
ID_Node49a
		dc.l	ID_Node50
		dc.l	ID_Node49
		dc.b	0,0
		dc.l	ID_Name49a
ID_Name49a
		dc.b	'  52 : CRUN     ',0
	CNOP 0,2
ID_Node50
		dc.l	ID_Node51
		dc.l	ID_Node49a
		dc.b	0,0
		dc.l	ID_Name50
ID_Name50
		dc.b	'  53 : CSFX     ',0
	CNOP 0,2
ID_Node51
		dc.l	ID_Node52
		dc.l	ID_Node50
		dc.b	0,0
		dc.l	ID_Name51
ID_Name51
		dc.b	'  54 : D815     ',0
	CNOP 0,2
ID_Node52
		dc.l	ID_Node53
		dc.l	ID_Node51
		dc.b	0,0
		dc.l	ID_Name52
ID_Name52
		dc.b	'  55 : DHp2     ',0
	CNOP 0,2
ID_Node53
		dc.l	ID_Node54
		dc.l	ID_Node52
		dc.b	0,0
		dc.l	ID_Name53
ID_Name53
		dc.b	'  56 : DOUG     ',0
	CNOP 0,2
ID_Node54
		dc.l	ID_Node55
		dc.l	ID_Node53
		dc.b	0,0
		dc.l	ID_Name54
ID_Name54
		dc.b	'  57 : Dtpk     ',0
	CNOP 0,2
ID_Node55
		dc.l	ID_Node56
		dc.l	ID_Node54
		dc.b	0,0
		dc.l	ID_Name55
ID_Name55
		dc.b	'  58 : Dupa     ',0
	CNOP 0,2
ID_Node56
		dc.l	ID_Node57
		dc.l	ID_Node55
		dc.b	0,0
		dc.l	ID_Name56
ID_Name56
		dc.b	'  59 : EDAM     ',0
	CNOP 0,2
ID_Node57
		dc.l	ID_Node58
		dc.l	ID_Node56
		dc.b	0,0
		dc.l	ID_Name57
ID_Name57
		dc.b	'  60 : ESL!     ',0
	CNOP 0,2
ID_Node58
		dc.l	ID_Node59
		dc.l	ID_Node57
		dc.b	0,0
		dc.l	ID_Name58
ID_Name58
		dc.b	'  61 : FB@@     ',0
	CNOP 0,2
ID_Node59
		dc.l	ID_Node60
		dc.l	ID_Node58
		dc.b	0,0
		dc.l	ID_Name59
ID_Name59
		dc.b	'  62 : FIRE     ',0
	CNOP 0,2
ID_Node60
		dc.l	ID_Node61
		dc.l	ID_Node59
		dc.b	0,0
		dc.l	ID_Name60
ID_Name60
		dc.b	'  63 : FLT!     ',0
	CNOP 0,2
ID_Node61
		dc.l	ID_Node62
		dc.l	ID_Node60
		dc.b	0,0
		dc.l	ID_Name61
ID_Name61
		dc.b	'  64 : FRED     ',0
	CNOP 0,2
ID_Node62
		dc.l	ID_Node63
		dc.l	ID_Node61
		dc.b	0,0
		dc.l	ID_Name62
ID_Name62
		dc.b	'  65 : GC!2     ',0
	CNOP 0,2
ID_Node63
		dc.l	ID_Node64
		dc.l	ID_Node62
		dc.b	0,0
		dc.l	ID_Name63
ID_Name63
		dc.b	'  66 : GC!3     ',0
	CNOP 0,2
ID_Node64
		dc.l	ID_Node65
		dc.l	ID_Node63
		dc.b	0,0
		dc.l	ID_Name64
ID_Name64
		dc.b	'  67 : GP11     ',0
	CNOP 0,2
ID_Node65
		dc.l	ID_Node66
		dc.l	ID_Node64
		dc.b	0,0
		dc.l	ID_Name65
ID_Name65
		dc.b	'  68 : HAL!     ',0
	CNOP 0,2
ID_Node66
		dc.l	ID_Node67
		dc.l	ID_Node65
		dc.b	0,0
		dc.l	ID_Name66
ID_Name66
		dc.b	'  69 : HUF#     ',0
	CNOP 0,2
ID_Node67
		dc.l	ID_Node68
		dc.l	ID_Node66
		dc.b	0,0
		dc.l	ID_Name67
ID_Name67
		dc.b	'  70 : ICE!     ',0
	CNOP 0,2
ID_Node68
		dc.l	ID_Node69
		dc.l	ID_Node67
		dc.b	0,0
		dc.l	ID_Name68
ID_Name68
		dc.b	'  71 : IFT?     ',0
	CNOP 0,2
ID_Node69
		dc.l	ID_Node70
		dc.l	ID_Node68
		dc.b	0,0
		dc.l	ID_Name69
ID_Name69
		dc.b	'  72 : IMP!     ',0
	CNOP 0,2
ID_Node70
		dc.l	ID_Node71
		dc.l	ID_Node69
		dc.b	0,0
		dc.l	ID_Name70
ID_Name70
		dc.b	'  73 : Ice!     ',0
	CNOP 0,2
ID_Node71
		dc.l	ID_Node72
		dc.l	ID_Node70
		dc.b	0,0
		dc.l	ID_Name71
ID_Name71
		dc.b	'  74 : KDUB     ',0
	CNOP 0,2
ID_Node72
		dc.l	ID_Node73
		dc.l	ID_Node71
		dc.b	0,0
		dc.l	ID_Name72
ID_Name72
		dc.b	'  75 : LR88     ',0
	CNOP 0,2
ID_Node73
		dc.l	ID_Node74
		dc.l	ID_Node72
		dc.b	0,0
		dc.l	ID_Name73
ID_Name73
		dc.b	'  76 : LSD!     ',0
	CNOP 0,2
ID_Node74
		dc.l	ID_Node75
		dc.l	ID_Node73
		dc.b	0,0
		dc.l	ID_Name74
ID_Name74:
		dc.b	'  77 : LZDA     ',0
	CNOP 0,2
ID_Node75
		dc.l	ID_Node76
		dc.l	ID_Node74
		dc.b	0,0
		dc.l	ID_Name75
ID_Name75
		dc.b	'  78 : LZSS     ',0
	CNOP 0,2
ID_Node76
		dc.l	ID_Node77
		dc.l	ID_Node75
		dc.b	0,0
		dc.l	ID_Name76
ID_Name76
		dc.b	'  79 : LZWH     ',0
	CNOP 0,2
ID_Node77
		dc.l	ID_Node78
		dc.l	ID_Node76
		dc.b	0,0
		dc.l	ID_Name77
ID_Name77
		dc.b	'  80 : LeCr     ',0
	CNOP 0,2
ID_Node78
		dc.l	ID_Node79
		dc.l	ID_Node77
		dc.b	0,0
		dc.l	ID_Name78
ID_Name78
		dc.b	'  81 : MASM     ',0
	CNOP 0,2
ID_Node79
		dc.l	ID_Node80
		dc.l	ID_Node78
		dc.b	0,0
		dc.l	ID_Name79
ID_Name79
		dc.b	'  82 : MASS     ',0
	CNOP 0,2
ID_Node80
		dc.l	ID_Node81
		dc.l	ID_Node79
		dc.b	0,0
		dc.l	ID_Name80
ID_Name80
		dc.b	'  83 : MD12     ',0
	CNOP 0,2
ID_Node81
		dc.l	ID_Node82
		dc.l	ID_Node80
		dc.b	0,0
		dc.l	ID_Name81
ID_Name81
		dc.b	'  84 : MICK     ',0
	CNOP 0,2
ID_Node82
		dc.l	ID_Node83
		dc.l	ID_Node81
		dc.b	0,0
		dc.l	ID_Name82
ID_Name82
		dc.b	'  85 : MTP1     ',0
	CNOP 0,2
ID_Node83
		dc.l	ID_Node84
		dc.l	ID_Node82
		dc.b	0,0
		dc.l	ID_Name83
ID_Name83
		dc.b	'  86 : MTPS     ',0
	CNOP 0,2
ID_Node84
		dc.l	ID_Node85
		dc.l	ID_Node83
		dc.b	0,0
		dc.l	ID_Name84
ID_Name84
		dc.b	'  87 : MWC1     ',0
	CNOP 0,2
ID_Node85
		dc.l	ID_Node86
		dc.l	ID_Node84
		dc.b	0,0
		dc.l	ID_Name85
ID_Name85
		dc.b	'  88 : PAC1     ',0
	CNOP 0,2
ID_Node86
		dc.l	ID_Node87
		dc.l	ID_Node85
		dc.b	0,0
		dc.l	ID_Name86
ID_Name86
		dc.b	'  89 : PACKV1.2 ',0
	CNOP 0,2
ID_Node87
		dc.l	ID_Node88
		dc.l	ID_Node86
		dc.b	0,0
		dc.l	ID_Name87
ID_Name87
		dc.b	'  90 : PARA     ',0
	CNOP 0,2
ID_Node88
		dc.l	ID_Node89
		dc.l	ID_Node87
		dc.b	0,0
		dc.l	ID_Name88
ID_Name88
		dc.b	'  91 : PP20     ',0
	CNOP 0,2
ID_Node89
		dc.l	ID_Node90
		dc.l	ID_Node88
		dc.b	0,0
		dc.l	ID_Name89
ID_Name89
		dc.b	'  92 : PaCK     ',0
	CNOP 0,2
ID_Node90
		dc.l	ID_Node91
		dc.l	ID_Node89
		dc.b	0,0
		dc.l	ID_Name90
ID_Name90
		dc.b	'  93 : PaK0     ',0
	CNOP 0,2
ID_Node91
		dc.l	ID_Node92
		dc.l	ID_Node90
		dc.b	0,0
		dc.l	ID_Name91
ID_Name91
		dc.b	'  94 : pack     ',0
	CNOP 0,2
ID_Node92
		dc.l	ID_Node93
		dc.l	ID_Node91
		dc.b	0,0
		dc.l	ID_Name92
ID_Name92
		dc.b	'  95 : RNC0     ',0
	CNOP 0,2
ID_Node93
		dc.l	ID_Node94
		dc.l	ID_Node92
		dc.b	0,0
		dc.l	ID_Name93
ID_Name93
		dc.b	'  96 : RNC1     ',0
	CNOP 0,2
ID_Node94
		dc.l	ID_Node95
		dc.l	ID_Node93
		dc.b	0,0
		dc.l	ID_Name94
ID_Name94
		dc.b	'  97 : RNC2     ',0
	CNOP 0,2
ID_Node95
		dc.l	ID_Node96
		dc.l	ID_Node94
		dc.b	0,0
		dc.l	ID_Name95
ID_Name95
		dc.b	'  98 : S300     ',0
	CNOP 0,2
ID_Node96
		dc.l	ID_Node97
		dc.l	ID_Node95
		dc.b	0,0
		dc.l	ID_Name96
ID_Name96
		dc.b	'  99 : S310     ',0
	CNOP 0,2
ID_Node97
		dc.l	ID_Node98
		dc.l	ID_Node96
		dc.b	0,0
		dc.l	ID_Name97
ID_Name97
		dc.b	' 100 : S400     ',0
	CNOP 0,2
ID_Node98
		dc.l	ID_Node99
		dc.l	ID_Node97
		dc.b	0,0
		dc.l	ID_Name98
ID_Name98
		dc.b	' 101 : S401     ',0
	CNOP 0,2
ID_Node99
		dc.l	ID_Node100
		dc.l	ID_Node98
		dc.b	0,0
		dc.l	ID_Name99
ID_Name99
		dc.b	' 102 : S403     ',0
	CNOP 0,2
ID_Node100
		dc.l	ID_Node101
		dc.l	ID_Node99
		dc.b	0,0
		dc.l	ID_Name100
ID_Name100
		dc.b	' 103 : S404     ',0
	CNOP 0,2
ID_Node101
		dc.l	ID_Node102
		dc.l	ID_Node100
		dc.b	0,0
		dc.l	ID_Name101
ID_Name101
		dc.b	' 104 : SFCD     ',0
	CNOP 0,2
ID_Node102
		dc.l	ID_Node103
		dc.l	ID_Node101
		dc.b	0,0
		dc.l	ID_Name102
ID_Name102
		dc.b	' 105 : SFHD     ',0
	CNOP 0,2
ID_Node103
		dc.l	ID_Node104
		dc.l	ID_Node102
		dc.b	0,0
		dc.l	ID_Name103
ID_Name103
		dc.b	' 106 : SLAM     ',0
	CNOP 0,2
ID_Node104
		dc.l	ID_Node105
		dc.l	ID_Node103
		dc.b	0,0
		dc.l	ID_Name104
ID_Name104
		dc.b	' 107 : SPv3     ',0
	CNOP 0,2
ID_Node105
		dc.l	ID_Node106
		dc.l	ID_Node104
		dc.b	0,0
		dc.l	ID_Name105
ID_Name105
		dc.b	' 108 : SSUR     ',0
	CNOP 0,2
ID_Node106
		dc.l	ID_Node107
		dc.l	ID_Node105
		dc.b	0,0
		dc.l	ID_Name106
ID_Name106
		dc.b	' 109 : TITS     ',0
	CNOP 0,2
ID_Node107
		dc.l	ID_Node108
		dc.l	ID_Node106
		dc.b	0,0
		dc.l	ID_Name107
ID_Name107
		dc.b	' 110 : TPWM     ',0
	CNOP 0,2
ID_Node108
		dc.l	ID_Node109
		dc.l	ID_Node107
		dc.b	0,0
		dc.l	ID_Name108
ID_Name108
		dc.b	' 111 : TSM!     ',0
	CNOP 0,2
ID_Node109
		dc.l	ID_Node110
		dc.l	ID_Node108
		dc.b	0,0
		dc.l	ID_Name109
ID_Name109
		dc.b	' 112 : Taz!     ',0
	CNOP 0,2
ID_Node110
		dc.l	ID_Node111
		dc.l	ID_Node109
		dc.b	0,0
		dc.l	ID_Name110
ID_Name110
		dc.b	' 113 : VDCO     ',0
	CNOP 0,2
ID_Node111
		dc.l	ID_Node112
		dc.l	ID_Node110
		dc.b	0,0
		dc.l	ID_Name111
ID_Name111
		dc.b	' 114 : VOL1     ',0
	CNOP 0,2
ID_Node112
		dc.l	ID_Node113
		dc.l	ID_Node111
		dc.b	0,0
		dc.l	ID_Name112
ID_Name112
		dc.b	' 115 : ViS1     ',0
	CNOP 0,2
ID_Node113
		dc.l	ID_Node114
		dc.l	ID_Node112
		dc.b	0,0
		dc.l	ID_Name113
ID_Name113
		dc.b	' 116 : ViSL     ',0
	CNOP 0,2
ID_Node114
		dc.l	ID_Node115
		dc.l	ID_Node113
		dc.b	0,0
		dc.l	ID_Name114
ID_Name114
		dc.b	' 117 : Vic2     ',0
	CNOP 0,2
ID_Node115
		dc.l	ID_Node116
		dc.l	ID_Node114
		dc.b	0,0
		dc.l	ID_Name115
ID_Name115
		dc.b	' 118 : WJSD     ',0
	CNOP 0,2
ID_Node116
		dc.l	ID_Node117
		dc.l	ID_Node115
		dc.b	0,0
		dc.l	ID_Name116
ID_Name116
		dc.b	' 119 : XP10     ',0
	CNOP 0,2
ID_Node117
		dc.l	ID_Node118
		dc.l	ID_Node116
		dc.b	0,0
		dc.l	ID_Name117
ID_Name117
		dc.b	' 120 : XPKF     ',0
	CNOP 0,2
ID_Node118
		dc.l	ID_Node119
		dc.l	ID_Node117
		dc.b	0,0
		dc.l	ID_Name118
ID_Name118
		dc.b	' 121 : XPKZ     ',0
	CNOP 0,2
ID_Node119
		dc.l	ID_Node120
		dc.l	ID_Node118
		dc.b	0,0
		dc.l	ID_Name119
ID_Name119
		dc.b	' 122 : XX50     ',0
	CNOP 0,2
ID_Node120
		dc.l	ID_Node121
		dc.l	ID_Node119
		dc.b	0,0
		dc.l	ID_Name120
ID_Name120
		dc.b	' 123 : xVdg     ',0
	CNOP 0,2
ID_Node121
		dc.l	ID_List+4
		dc.l	ID_Node120
		dc.b	0,0
		dc.l	ID_Name121
ID_Name121
		dc.b	' 124 : xXxX     ',0
	CNOP 0,2

***************************************************************************

EnableID:
		dc.l	ID_Name0
		dc.l	ID_Name1
		dc.l	ID_Name2
		dc.l	ID_Name3
		dc.l	ID_Name4
		dc.l	ID_Name5
		dc.l	ID_Name6
		dc.l	ID_Name7
		dc.l	ID_Name8
		dc.l	ID_Name9
		dc.l	ID_Name10
		dc.l	ID_Name11
		dc.l	ID_Name12
		dc.l	ID_Name13
		dc.l	ID_Name14
		dc.l	ID_Name15
		dc.l	ID_Name16
		dc.l	ID_Name17
		dc.l	ID_Name18
		dc.l	ID_Name19
		dc.l	ID_Name20
		dc.l	ID_Name21
		dc.l	ID_Name22
		dc.l	ID_Name23
		dc.l	ID_Name24
		dc.l	ID_Name25
		dc.l	ID_Name26
		dc.l	ID_Name27
		dc.l	ID_Name28
		dc.l	ID_Name29
		dc.l	ID_Name30
		dc.l	ID_Name31
		dc.l	ID_Name32
		dc.l	ID_Name33
		dc.l	ID_Name34
		dc.l	ID_Name35
		dc.l	ID_Name36
		dc.l	ID_Name37
		dc.l	ID_Name38
		dc.l	ID_Name39
		dc.l	ID_Name39a
		dc.l	ID_Name40
		dc.l	ID_Name41
		dc.l	ID_Name42
		dc.l	ID_Name43
		dc.l	ID_Name44
		dc.l	ID_Name45
		dc.l	ID_Name46
		dc.l	ID_Name47
		dc.l	ID_Name48
		dc.l	ID_Name49
		dc.l	ID_Name49a
		dc.l	ID_Name50
		dc.l	ID_Name51
		dc.l	ID_Name52
		dc.l	ID_Name53
		dc.l	ID_Name54
		dc.l	ID_Name55
		dc.l	ID_Name56
		dc.l	ID_Name57
		dc.l	ID_Name58
		dc.l	ID_Name59
		dc.l	ID_Name60
		dc.l	ID_Name61
		dc.l	ID_Name62
		dc.l	ID_Name63
		dc.l	ID_Name64
		dc.l	ID_Name65
		dc.l	ID_Name66
		dc.l	ID_Name67
		dc.l	ID_Name68
		dc.l	ID_Name69
		dc.l	ID_Name70
		dc.l	ID_Name71
		dc.l	ID_Name72
		dc.l	ID_Name73
		dc.l	ID_Name74
		dc.l	ID_Name75
		dc.l	ID_Name76
		dc.l	ID_Name77
		dc.l	ID_Name78
		dc.l	ID_Name79
		dc.l	ID_Name80
		dc.l	ID_Name81
		dc.l	ID_Name82
		dc.l	ID_Name83
		dc.l	ID_Name84
		dc.l	ID_Name85
		dc.l	ID_Name86
		dc.l	ID_Name87
		dc.l	ID_Name88
		dc.l	ID_Name89
		dc.l	ID_Name90
		dc.l	ID_Name91
		dc.l	ID_Name92
		dc.l	ID_Name93
		dc.l	ID_Name94
		dc.l	ID_Name95
		dc.l	ID_Name96
		dc.l	ID_Name97
		dc.l	ID_Name98
		dc.l	ID_Name99
		dc.l	ID_Name100
		dc.l	ID_Name101
		dc.l	ID_Name102
		dc.l	ID_Name103
		dc.l	ID_Name104
		dc.l	ID_Name105
		dc.l	ID_Name106
		dc.l	ID_Name107
		dc.l	ID_Name108
		dc.l	ID_Name109
		dc.l	ID_Name110
		dc.l	ID_Name111
		dc.l	ID_Name112
		dc.l	ID_Name113
		dc.l	ID_Name114
		dc.l	ID_Name115
		dc.l	ID_Name116
		dc.l	ID_Name117
		dc.l	ID_Name118
		dc.l	ID_Name119
		dc.l	ID_Name120
		dc.l	ID_Name121
		dc.l	0

***************************************************************************

PutChData:	ds.b	100
DiskIO:		ds.l	20
DiskRep:	ds.l	8
FileNameL:	ds.b	108
FullNameL:	ds.b	256
FileNameS:	ds.b	108
FullNameS:	ds.b	256
	CNOP 0,4
Bufor:		ds.b	260
