ùúùú  Pˆ  Eù  .p  uóÿ;Áßÿ;Áßÿ;Áßÿ;Áßÿ;ÁßExecBase		equ	+$004

	; 	Exec functions

Forbid			equ	-$084
Permit			equ	-$08A
AddIntServer		equ	-$0A8
RemIntServer		equ	-$0AE
AllocMem		equ	-$0C6
FreeMem			equ	-$0D2
AddTail			equ	-$0F6
RemTail			equ	-$108
FindTask		equ	-$126
GetMsg			equ	-$174
ReplyMsg		equ	-$17A
WaitPort		equ	-$180
OldOpenLibrary		equ	-$198
CloseLibrary		equ	-$19E
OpenDevice		equ	-$1BC
CloseDevice		equ	-$1C2
DoIO			equ	-$1C8
SendIO			equ	-$1CE
CheckIO			equ	-$1D4
WaitIO			equ	-$1DA
AbortIO			equ	-$1E0
CopyMem			equ	-$270
CreateIORequest		equ	-$28E
DeleteIORequest		equ	-$294
CreateMsgPort		equ	-$29A
DeleteMsgPort		equ	-$2A0

;         Intuition functions

CloseWindow		equ	-$048
DisplayAlert		equ	-$05A
DrawBorder		equ	-$06C
DrawImage		equ	-$072
PrintIText		equ	-$0D8
RefreshGadgets		equ	-$0DE
SetWindowTitles		equ	-$114
LockPubScreen		equ	-$1FE
UnlockPubScreen		equ	-$204
EasyRequestArgs		equ	-$24C
OpenWindowTagList	equ	-$25E

;	   Gadtools functions

CreateGadgetA		equ	-$01E
FreeGadgets		equ	-$024
Gt_SetGadgetAttrsA	equ	-$02A
Gt_GetIMsg		equ	-$048
Gt_ReplyIMsg		equ	-$04E
Gt_RefreshWindow	equ	-$054
CreateContext		equ	-$072
GetVisualInfoA		equ	-$07E
FreeVisualInfo		equ	-$084

;	   Dos functions

DateStamp		equ	-$0C0
Delay			equ	-$0C6
AttemptLockDosList	equ	-$29A
UnlockDosList		equ	-$294
FindDosEntry		equ	-$2AC

;	Graphics functions

RectFill		equ	-$132
SetAPen			equ	-$156

WA_Left			equ	+$80000064
WA_Top			equ	+$80000065
WA_Width		equ	+$80000066
WA_Height		equ	+$80000067
WA_IDCMP		equ	+$8000006A
WA_Flags		equ	+$8000006B
WA_Gadgets		equ	+$8000006C
WA_Title		equ	+$8000006E
WA_CustomScreen		equ	+$80000070
WA_InnerWidth		equ	+$80000076
WA_InnerHeight		equ	+$80000077
WA_PubScreen		equ	+$80000079
WA_Zoom			equ	+$8000007D

WFLG_DRAGBAR		equ	+$00000002
WFLG_DEPTHGADGET	equ	+$00000004
WFLG_CLOSEWINDOW	equ	+$00000008
WFLG_GIMMEZEROZERO	equ	+$00000400
WFLG_ACTIVATE		equ	+$00001000

RT_FileReq		equ	+$00000000
RT_ReqPos		equ	+$80000003
RT_PubScrName		equ	+$80000006
RT_Screen		equ	+$80000007
RT_DefaultFont		equ	+$80000009
RT_SharelIDCMP		equ	+$8000000C
RT_ScreenToFront	equ	+$8000000E
RT_TextAttr		equ	+$8000000F
RT_Locale		equ	+$80000011
RTEZ_ReqTitle		equ	+$80000014
RTEZ_Flags		equ	+$80000016
RTGL_Min		equ	+$8000001E
RTGL_Max		equ	+$8000001F
RTGL_Width		equ	+$80000020

REQPOS_CENTERSCR	equ	+$00000002
EZREQF_CENTERTEXT	equ	+$00000004
TAG_DONE		equ	+$00000000

ASL_FILEREQUEST		equ	+$00000000
ASL_WINDOW		equ	+$80080002
ASL_LEFTEDGE		equ	+$80080003
ASL_TOPEDGE		equ	+$80080004
ASL_WIDTH		equ	+$80080005
ASL_HEIGHT		equ	+$80080006
ASL_FILE		equ	+$80080008
ASL_DIR			equ	+$80080009
ASL_MINHEIGHT		equ	+$80080010
ASL_MAXHEIGHT		equ	+$80080011

TD_NUMHEADS		equ	+$0002
TD_NUMSECS		equ	+$000B
TD_MOTOR		equ	+$0009
TD_SEEK			equ	+$000A
TD_FORMAT		equ	+$000B
TD_CHANGENUM		equ	+$000D
TD_CHANGESTATE		equ	+$000E
TD_RAWREAD		equ	+$0010
TD_RAWWRITE		equ	+$0011
TD_SECTOR		equ	+$0200

ETD_READ		equ	+$8002
ETD_WRITE		equ	+$8003
ETD_MOTOR		equ	+$8009
ETD_SEEK		equ	+$800A
ETD_RAWREAD		equ	+$8010
ETD_RAWWRITE		equ	+$8011

IOF_QUICK		equ	+$0001

CMD_INVALID		equ	+$0000
CMD_RESET		equ	+$0001
CMD_READ		equ	+$0002
CMD_WRITE		equ	+$0003
CMD_UPDATE		equ	+$0004
CMD_CLEAR		equ	+$0005
CMD_STOP		equ	+$0006
CMD_START		equ	+$0007
CMD_FLUSH		equ	+$0008
CMD_NONSTD		equ	+$0009

LDF_READ		equ	+$0001
LDF_DEVICES		equ	+$0004
LDF_VOLUMES		equ	+$0008

MOTOR_ON		equ	+$0001
MOTOR_OFF		equ	+$0000

MEMF_PUBLIC		equ	+$00000001
MEMF_CHIP		equ	+$00000002
MEMF_FAST		equ	+$00000004
MEMF_CLEAR		equ	+$00010000
MEMF_LARGEST		equ	+$00020000

BUTTON_KIND		equ	+$0001
CHECKBOX_KIND		equ	+$0002
LISTVIEW_KIND		equ	+$0004
MX_KIND			equ	+$0005
SCROLLER_KIND		equ	+$0009
SLIDER_KIND		equ	+$000B
STRING_KIND		equ	+$000C
TEXT_KIND		equ	+$000D

GTLV_Labels		equ	+$80080006
GTLV_ScrollWidth	equ	+$80080008
GTLV_ShowSelected	equ	+$80080035
GTLV_Selected		equ	+$80080036
GTTX_Text		equ	+$8008000B
GTTX_Border		equ	+$80080039
GTCB_Checked		equ	+$80080004
GTSC_Top		equ	+$80080015
GTSC_Total		equ	+$80080016
GTSC_Visible		equ	+$80080017
GTSC_Arrows		equ	+$8008003B
GTMX_Labels		equ	+$80080009
GTMX_Active		equ	+$8008000A
GTMX_Spacing		equ	+$8008003D
GTST_String		equ	+$8008002D
GTST_MaxChars		equ	+$8008002E
PGA_Freedom		equ	+$80031001

BUTTONIDCMP		equ	+$00000040
CHECKBOXIDCMP		equ	+$00000040
SCROLLERIDCMP		equ	+$00000070
MXIDCMP			equ	+$00000020
MENUPICKIDCMP		equ	+$00000100
RAWKEYIDCMP		equ	+$00000400
LISTVIEWIDCMP		equ	+$00400078
STRINGIDCMP		equ	+$00000040
CLOSEWINDOWIDCMP	equ	+$00000200
REFRESHWINDOWIDCMP	equ	+$00000004
DISKINSERTEDIDCMP	equ	+$00008000
DISKREMOVEDIDCMP	equ	+$00010000

PLACETEXT_LEFT		equ	+$001
PLACETEXT_RIGHT		equ	+$002
PLACETEXT_ABOVE		equ	+$004
PLACETEXT_BELOW		equ	+$008
PLACETEXT_IN		equ	+$010
NG_HIGHLABEL		equ	+$020
LORIENT_VERT		equ	+$002

GA_Immediate		equ	+$80030015
GA_Relverify		equ	+$80030016
GA_Disabled		equ	+$8003000E
GA_Selected		equ	+$80030013
GA_ToggleSelect		equ	+$8003001C

io_Unit			equ	+$0018
io_Command		equ	+$001C
io_Flags		equ	+$001E
io_Error		equ	+$001F
io_Actual		equ	+$0020
io_Lenght		equ	+$0024
io_Data			equ	+$0028
io_Offset		equ	+$002C

	Section Code,CODE_P

Start:
	MOVE.L	ExecBase,A6
	SUBA.L	A1,A1
	JSR	FindTask(A6)
	MOVE.L	D0,A4
	TST.L	$AC(A4)
	BNE.B	From_CLI
	LEA	$5C(A4),A0
	JSR	WaitPort(A6)
	LEA	$5C(A4),A0
	JSR	GetMsg(A6)
	MOVE.L	D0,WBMessage

From_CLI:
	MOVE.L	ExecBase,A6
	LEA	IntuiName,A1
	JSR	OldOpenLibrary(A6)
	MOVE.L	D0,IntuiBase
	BEQ.W	Close_FastCopy
	CMP.W	#$24,$14(A6)
	BMI.W	KickstartToLow
	MOVE.L	ExecBase,A6
	LEA	DosName,A1
	JSR	OldOpenLibrary(A6)
	MOVE.L	D0,DosBase
	BEQ.W	Close_FastCopy
	LEA	GraphName,A1
	JSR	OldOpenLibrary(A6)
	MOVE.L	D0,GraphBase
	BEQ.W	Close_FastCopy
	LEA	GadtoolsName,A1
	JSR	OldOpenLibrary(A6)
	MOVE.L	D0,GadtoolsBase
	BEQ.W	Close_FastCopy
	MOVE.L	DosBase,A6
	MOVE.L	#LDF_READ!LDF_DEVICES,D1
	JSR	AttemptLockDosList(A6)
	MOVE.L	D0,DosList
	LEA	OutText06,A0
	TST.L	D0
	BEQ.W	DisplayMessage
	LEA	TrackDisks,A5
	MOVEQ	#$03,D7

GetDevice01:
	MOVE.L	DosBase,A6
	MOVE.L	DosList,D1
	MOVE.L	#DriveName,D2
	MOVE.L	#LDF_READ!LDF_DEVICES,D3
	JSR	FindDosEntry(A6)
	TST.L	D0
	BEQ.W	GetDevice04
	MOVE.L	ExecBase,A6
	MOVEQ	#$14,D0
	MOVE.L	#MEMF_PUBLIC!MEMF_CLEAR,D1
	JSR	AllocMem(A6)
	MOVE.L	D0,A2
	ADD.L	#$0E,D0
	MOVE.L	D0,$0A(A2)
	MOVE.B	#$0A,$08(A2)
	MOVE.L	D0,A1
	LEA	DriveName,A0
	MOVEQ	#$04,D0
	JSR	CopyMem(A6)
	MOVE.B	#$3A,$11(A2)
	LEA	DeviceList,A0
	MOVE.L	A2,A1
	JSR	AddTail(A6)
	JSR	CreateMsgPort(A6)
	MOVE.L	D0,$00(A5)
	BNE.B	GetDevice02
	MOVE.L	DosBase,A6
	MOVE.L	#LDF_READ!LDF_DEVICES,D1
	JSR	UnlockDosList(A6)
	LEA	OutText03,A0
	BRA.W	DisplayMessage

GetDevice02:
	MOVE.L	ExecBase,A6
	MOVE.L	$00(A5),A0
	MOVEQ	#$30,D0
	JSR	CreateIORequest(A6)
	MOVE.L	D0,$04(A5)
	BNE.B	GetDevice03
	MOVE.L	DosBase,A6
	MOVE.L	#LDF_READ!LDF_DEVICES,D1
	JSR	UnlockDosList(A6)
	LEA	OutText04,A0
	BRA.W	DisplayMessage

GetDevice03:
	MOVE.L	ExecBase,A6
	LEA	TrackDiskName,A0
	MOVEQ	#$00,D0
	MOVEQ	#$00,D1
	MOVE.B	DriveName+$02,D0
	SUB.W	#$30,D0
	MOVE.L	$04(A5),A1
	JSR	OpenDevice(A6)
	TST.L	D0
	SEQ.B	D0
	EXT.W	D0
	EXT.L	D0
	MOVE.L	D0,$08(A5)
	BNE.B	GetDevice04
	MOVE.L	DosBase,A6
	MOVE.L	#LDF_READ!LDF_DEVICES,D1
	JSR	UnlockDosList(A6)
	LEA	OutText05,A0
	MOVE.B	DriveName+$02,OutText05+$31
	BRA.W	DisplayMessage

GetDevice04:
	ADD.L	#$0C,A5
	ADDQ.B	#$01,DriveName+$02
	DBF	D7,GetDevice01
	MOVE.L	DosBase,A6
	MOVE.L	#LDF_READ!LDF_DEVICES,D1
	JSR	UnlockDosList(A6)
	MOVE.L	IntuiBase,A6
	SUBA.L	A0,A0
	JSR	LockPubScreen(A6)
	MOVE.L	D0,Screen
	LEA	OutText07,A0
	TST.L	D0
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	MOVE.L	Screen,A0
	SUBA.L	A1,A1
	JSR	GetVisualInfoA(A6)
	MOVE.L	D0,Visual
	LEA	OutText08,A0
	TST.L	D0
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	LEA	GList,A0
	JSR	CreateContext(A6)
	MOVE.L	D0,Gadget
	LEA	OutText09,A0
	TST.L	D0
	BEQ.W	DisplayMessage
	MOVE.W	#$303A,DriveName+$02
	MOVE.L	GadtoolsBase,A6
	MOVEQ	#LISTVIEW_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget01,A1
	LEA	TagList02,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	MOVEQ	#LISTVIEW_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget02,A1
	LEA	TagList02,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	MOVEQ	#TEXT_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget03,A1
	LEA	TagList03,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	MOVE.L	D0,SourceGadget
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	MOVEQ	#TEXT_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget04,A1
	LEA	TagList03,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	MOVE.L	D0,DestinationGadget
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	MOVEQ	#BUTTON_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget05,A1
	LEA	TagList04,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	BEQ.W	DisplayMessage
	MOVE.L	GadtoolsBase,A6
	MOVEQ	#BUTTON_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget06,A1
	LEA	TagList04,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	BEQ.W	DisplayMessage
	MOVEQ	#CHECKBOX_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget07,A1
	LEA	TagList04,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	BEQ.W	DisplayMessage
	MOVEQ	#BUTTON_KIND,D0
	MOVE.L	Gadget,A0
	LEA	NewGadget08,A1
	LEA	TagList04,A2
	MOVE.L	Visual,$16(A1)
	JSR	CreateGadgetA(A6)
	LEA	OutText10,A0
	MOVE.L	D0,Gadget
	BEQ.W	DisplayMessage
	MOVE.L	IntuiBase,A6
	LEA	TagList01,A1
	MOVE.L	Screen,$04(A1)
	MOVE.L	GList,$34(A1)
	MOVE.L	$04(A1),A0
	MOVE.W	$0C(A0),D0
	SUBI.W	#$118,D0
	LSR.W	#$01,D0
	ANDI.L	#$FFFF,D0
	MOVE.L	D0,$0C(A1)
	SUBA.L	A0,A0
	JSR	OpenWindowTagList(A6)
	MOVE.L	D0,Window
	LEA	OutText11,A0
	TST.L	D0
	BEQ.W	DisplayMessage
	MOVE.L	Window,A0
	MOVE.L	50(A0),RP
	MOVE.L	GadtoolsBase,A6
	MOVE.L	Window,A0
	SUBA.L	A1,A1
	JSR	Gt_RefreshWindow(A6)
	MOVE.L	IntuiBase,A6
	MOVE.L	RP,A0
	LEA	Border01,A1
	MOVEQ	#$00,D0
	MOVEQ	#$00,D1
	JSR	DrawBorder(A6)
	MOVE.L	ExecBase,A6
	MOVE.L	#$000DC000,D2

AllocBuffer01:
	MOVE.L	D2,D0
	MOVE.L	#MEMF_CHIP!MEMF_LARGEST,D1
	JSR	AllocMem(A6)
	TST.L	D0
	BNE.B	AllocBuffer02
	ADDQ.W	#$01,DiskCount
	LSR.L	#$01,D2
	BRA.B	AllocBuffer01

AllocBuffer02:
	MOVE.L	D0,DiskBuffer
	
WaitForMessage:
	MOVE.L	ExecBase,A6
	MOVE.L	Window,A0
	MOVE.L	86(A0),A0
	JSR	WaitPort(A6)
	MOVE.L	GadtoolsBase,A6
	MOVE.L	Window,A0
	MOVE.L	86(A0),A0
	JSR	Gt_GetIMsg(A6)
	MOVE.L	D0,A5
	TST.L	D0
	BEQ.B	WaitForMessage
	CMP.L	#CLOSEWINDOWIDCMP,20(A5)
	BEQ.W	Message_CloseWindow
	CMP.L	#LISTVIEWIDCMP,20(A5)
	BEQ.W	Message_GadgetPressed
	CMP.L	#BUTTONIDCMP,20(A5)
	BEQ.W	Message_GadgetPressed
	CMP.L	#CHECKBOXIDCMP,20(A5)
	BEQ.W	Message_GadgetPressed

ReplyToMessage:
	MOVE.L	GadtoolsBase,A6
	MOVE.L	A5,A1
	JSR	Gt_ReplyIMsg(A6)
	BRA.B	WaitForMessage

Close_FastCopy:
	MOVE.L	ExecBase,A6
	LEA	TrackDisks,A5
	MOVEQ	#$03,D7

Close_FastCopy01:
	TST.L	$08(A5)
	BEQ.B	Close_FastCopy02
	MOVE.L	$04(A5),A1
	JSR	CloseDevice(A6)

Close_FastCopy02:
	TST.L	$04(A5)
	BEQ.B	Close_FastCopy03
	MOVE.L	$04(A5),A0
	JSR	DeleteIORequest(A6)

Close_FastCopy03:
	TST.L	$00(A5)
	BEQ.B	Close_FastCopy04
	MOVE.L	$00(A5),A0
	JSR	DeleteMsgPort(A6)

Close_FastCopy04:
	ADD.L	#$0C,A5
	DBF	D7,Close_FastCopy01
	TST.L	DiskBuffer
	BEQ.B	Close_FastCopy05
	MOVE.L	ExecBase,A6
	MOVE.L	DiskBuffer,A1
	MOVE.W	DiskCount,D1
	EXT.L	D1
	MOVE.L	#$000DC000,D0
	LSR.L	D1,D0
	JSR	FreeMem(A6)

Close_FastCopy05:
	TST.L	Window
	BEQ.B	Close_FastCopy06
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	JSR	CloseWindow(A6)
	
Close_FastCopy06:
	TST.L	GList
	BEQ.B	Close_FastCopy07
	MOVE.L	GadtoolsBase,A6
	MOVE.L	GList,A0
	JSR	FreeGadgets(A6)

Close_FastCopy07:
	TST.L	Visual
	BEQ.B	Close_FastCopy08
	MOVE.L	GadtoolsBase,A6
	MOVE.L	Visual,A0
	JSR	FreeVisualInfo(A6)

Close_FastCopy08:
	TST.L	Screen
	BEQ.B	Close_FastCopy09
	MOVE.L	IntuiBase,A6
	SUBA.L	A0,A0
	MOVE.L	Screen,A1
	JSR	UnlockPubScreen(A6)

Close_FastCopy09:
	MOVE.L	ExecBase,A6
	LEA	DeviceList,A0
	JSR	RemTail(A6)
	TST.L	D0
	BEQ.B	Close_FastCopy10
	MOVE.L	D0,A1
	MOVEQ	#$14,D0
	JSR	FreeMem(A6)
	BRA.B	Close_FastCopy09

Close_FastCopy10:
	TST.L	DosBase
	BEQ.B	Close_FastCopy11
	MOVE.L	ExecBase,A6
	MOVE.L	DosBase,A1
	JSR	CloseLibrary(A6)

Close_FastCopy11:
	TST.L	IntuiBase
	BEQ.B	Close_FastCopy12
	MOVE.L	ExecBase,A6
	MOVE.L	IntuiBase,A1
	JSR	CloseLibrary(A6)

Close_FastCopy12:
	TST.L	GadtoolsBase
	BEQ.B	Close_FastCopy13
	MOVE.L	ExecBase,A6
	MOVE.L	GadtoolsBase,A1
	JSR	CloseLibrary(A6)

Close_FastCopy13:
	TST.L	GraphBase
	BEQ.B	Close_FastCopy14
	MOVE.L	ExecBase,A6
	MOVE.L	GraphBase,A1
	JSR	CloseLibrary(A6)
	
Close_FastCopy14:
	TST.L	WBMessage
	BEQ.B	Close_FastCopy15
 	MOVE.L	ExecBase,A6
 	JSR	Forbid(A6)
	MOVE.L	WBMessage,A1
	JSR	ReplyMsg(A6)

Close_FastCopy15:
	MOVEQ	#$00,D0
	RTS

KickstartToLow:
	MOVE.L	IntuiBase,A6
	LEA	OutText01,A0
	MOVEQ	#$01,D0
	MOVEQ	#$20,D1
	JSR	DisplayAlert(A6)
	BRA.W	Close_FastCopy

DisplayMessage:
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest01,A1
	MOVE.L	A0,$0C(A1)
	SUBA.L	A0,A0
	SUBA.L	A2,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BRA.W	Close_FastCopy

Message_CloseWindow:
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest02,A1
	SUBA.L	A0,A0
	SUBA.L	A2,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	TST.L	D0
	BEQ.W	ReplyToMessage
	MOVE.L	GadtoolsBase,A6
	MOVE.L	A5,A1
	JSR	Gt_ReplyIMsg(A6)
	BRA.W	Close_FastCopy

Message_GadgetPressed:
	MOVE.L	28(A5),A0
	CMP.W	#$00,38(A0)
	BEQ.B	ChangeSource
	CMP.W	#$01,38(A0)
	BEQ.B	ChangeDestination
	CMP.W	#$02,38(A0)
	BEQ.W	FirstCopy
	CMP.W	#$03,38(A0)
	BEQ.W	NextCopy
	CMP.W	#$04,38(A0)
	BEQ.W	ChangeVerify
	CMP.W	#$05,38(A0)
	BEQ.W	AboutProgram
	BRA.W	ReplyToMessage

ChangeSource:
	MOVE.W	24(A5),D7
	LEA	DeviceList,A0

ChangeSource01:
	MOVE.L	$00(A0),A0
	DBF	D7,ChangeSource01
	MOVEQ	#$00,D0
	MOVE.B	$10(A0),D0
	SUB.W	#$30,D0
	MOVE.W	D0,SourceDrive
	ADD.L	#$0E,A0
	MOVE.L	GadtoolsBase,A6
	MOVE.L	Window,A1
	SUBA.L	A2,A2
	LEA	TagList03,A3
	MOVE.L	A0,$0C(A3)
	MOVE.L	SourceGadget,A0
	JSR	Gt_SetGadgetAttrsA(A6)
	BRA.W	ReplyToMessage
	
ChangeDestination:
	MOVE.W	24(A5),D7
	LEA	DeviceList,A0

ChangeDestination01:
	MOVE.L	$00(A0),A0
	DBF	D7,ChangeDestination01
	MOVEQ	#$00,D0
	MOVE.B	$10(A0),D0
	SUB.W	#$30,D0
	MOVE.W	D0,DestinationDrive
	ADD.L	#$0E,A0
	MOVE.L	GadtoolsBase,A6
	MOVE.L	Window,A1
	SUBA.L	A2,A2
	LEA	TagList03,A3
	MOVE.L	A0,$0C(A3)
	MOVE.L	DestinationGadget,A0
	JSR	Gt_SetGadgetAttrsA(A6)
	BRA.W	ReplyToMessage

ChangeVerify:
	MOVE.W	Verify,D0
	SEQ.B	D0
	EXT.W	D0
	MOVE.W	D0,Verify
	BRA.W	ReplyToMessage

AboutProgram:
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest03,A1
	SUBA.L	A0,A0
	SUBA.L	A2,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BRA.W	ReplyToMessage

ClearProgress:
	MOVE.L	GraphBase,A6
	MOVE.L	RP,A1
	MOVEQ	#$00,D0
	JSR	SetAPen(A6)
	MOVE.L	RP,A1
	MOVEQ	#$15,D0
	MOVEQ	#$4B,D1
	MOVE.W	#$103,D2
	MOVEQ	#$53,D3
	JSR	RectFill(A6)
	RTS

DrawProgress:
	MOVE.L	D0,-(SP)
	MOVE.L	GraphBase,A6
	MOVE.L	RP,A1
	MOVEQ	#$03,D0
	JSR	SetAPen(A6)
	MOVE.L	RP,A1
	MOVEQ	#$15,D0
	MOVEQ	#$4B,D1
	MOVEQ	#$53,D3
	MOVE.L	(SP)+,D2
	MULU	#$03,D2
	ADD.W	#$15,D2	
	JSR	RectFill(A6)
	RTS

DisplayIOError:
	MOVEM.L	D2-A5,-(SP)
	MOVE.L	IntuiBase,A6
	LEA	TrackDiskErrors,A0
	SUB.W	#$15,D0
	BMI.B	DisplayIOError01
	LSL.W	#$02,D0
	LEA	$00(A0,D0.W),A0
	LEA	EasyRequest06,A1
	MOVE.L	(A0),$0C(A1)
	BRA.B	DisplayIOError02
	
DisplayIOError01:
	LEA	EasyRequest06,A1
	MOVE.L	#OutText36,$0C(A1)

DisplayIOError02:
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	MOVEM.L	(SP)+,D2-A5
	RTS

ReadData:
	MOVE.L	ExecBase,A6
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	LEA	OutText18,A1
	LEA	-1,A2
	JSR	SetWindowTitles(A6)
	LEA	TrackDisks,A0
	MOVE.W	SourceDrive,D0
	MULU	#$0C,D0
	MOVE.L	$04(A0,D0.W),IORequest
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	JSR	CheckIO(A6)
	TST.L	D0
	BNE.B	ReadData01
	MOVE.L	IORequest,A1
	JSR	WaitIO(A6)

ReadData01:
	MOVE.L	ExecBase,A6
	MOVE.W	#TD_MOTOR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.B	#$00,io_Error(A1)
	MOVE.L	#MOTOR_OFF,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVE.L	IORequest,A1
	MOVE.W	#TD_CHANGESTATE,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	JSR	DoIO(A6)
	MOVE.L	IORequest,A1
	TST.L	io_Actual(A1)
	BEQ.B	ReadData02
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest04,A1
	MOVE.L	$0C(A1),A0
	MOVE.W	SourceDrive,D0
	ADD.W	#$30,D0
	MOVE.B	D0,$1F(A0)
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BRA.B	ReadData01

ReadData02:
	BSR.W	ClearProgress
	MOVE.L	DiskBuffer,A2
	MOVEQ	#$50,D7
	MOVE.W	DiskCount,D0
	LSR.W	D0,D7
	SUBQ.W	#$01,D7

ReadData03:
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_READ,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	A2,io_Data(A1)
	MOVE.L	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,io_Lenght(A1)
	MOVEQ	#$00,D0
	MOVE.W	SourceTrack,D0
	MULU.W	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,D0
	MOVE.L	D0,io_Offset(A1)
	JSR	DoIO(A6)
	TST.L	D0
	BNE.W	ReadData05
	MOVE.W	SourceTrack,D0
	BSR.W	DrawProgress

ReadData04:
	ADDQ.W	#$01,SourceTrack
	ADD.L	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,A2
	DBF	D7,ReadData03
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#TD_MOTOR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#MOTOR_OFF,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_CLEAR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#$00,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	LEA	WindowName,A1
	LEA	-1,A2
	JSR	SetWindowTitles(A6)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_CLEAR,io_Command(A1)
	JSR	DoIO(A6)
	MOVEQ	#$00,D0
	RTS

ReadData05:
	MOVEM.L	D0-A3,-(SP)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#TD_MOTOR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#MOTOR_OFF,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVEM.L	(SP)+,D0-A3
	BSR.W	DisplayIOError
	CMP.L	#-$01,D0
	BEQ.W	ReadData03
	CMP.L	#$01,D0
	BEQ.W	ReadData03
	CMP.L	#$02,D0
	BEQ.W	ReadData04
	MOVEM.L	D0-A3,-(SP)
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	LEA	WindowName,A1
	LEA	-1,A2
	JSR	SetWindowTitles(A6)
	MOVEM.L	(SP)+,D0-A3
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_CLEAR,io_Command(A1)
	JSR	DoIO(A6)
	MOVEQ	#$01,D0
	RTS

WriteData:
	MOVE.L	ExecBase,A6
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	LEA	OutText19,A1
	LEA	-1,A2
	JSR	SetWindowTitles(A6)
	LEA	TrackDisks,A0
	MOVE.W	DestinationDrive,D0
	MULU	#$0C,D0
	MOVE.L	$04(A0,D0.W),IORequest
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	JSR	CheckIO(A6)
	TST.L	D0
	BNE.B	WriteData01
	MOVE.L	IORequest,A1
	JSR	WaitIO(A6)

WriteData01:
	MOVE.L	ExecBase,A6
	MOVE.W	#TD_MOTOR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.B	#$00,io_Error(A1)
	MOVE.L	#MOTOR_OFF,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#TD_CHANGESTATE,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	JSR	DoIO(A6)
	MOVE.L	IORequest,A1
	TST.L	io_Actual(A1)
	BEQ.B	WriteData02
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest05,A1
	MOVE.L	$0C(A1),A0
	MOVE.W	DestinationDrive,D0
	ADD.W	#$30,D0
	MOVE.B	D0,$1F(A0)
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BRA.B	WriteData01

WriteData02:
	BSR.W	ClearProgress
	MOVE.L	DiskBuffer,A2
	MOVEQ	#$50,D7
	MOVE.W	DiskCount,D0
	LSR.W	D0,D7
	SUBQ.W	#$01,D7

WriteData03:
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_WRITE,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	A2,io_Data(A1)
	MOVE.L	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,io_Lenght(A1)
	MOVEQ	#$00,D0
	MOVE.W	DestinationTrack,D0
	MULU.W	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,D0
	MOVE.L	D0,io_Offset(A1)
	JSR	DoIO(A6)
	TST.L	D0
	BNE.W	WriteData05
	BSR.W	WriteData06
	TST.W	D0
	BEQ.B	VerifyOK
	MOVEQ	#$24,D0
	BRA.B	WriteData05

VerifyOK:
	MOVE.W	DestinationTrack,D0
	BSR.W	DrawProgress

WriteData04:
	ADDQ.W	#$01,DestinationTrack
	ADD.L	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,A2
	DBF	D7,WriteData03
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#TD_MOTOR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#MOTOR_OFF,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	LEA	WindowName,A1
	LEA	-1,A2
	JSR	SetWindowTitles(A6)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_CLEAR,io_Command(A1)
	JSR	DoIO(A6)
	MOVEQ	#$00,D0
	RTS

WriteData05:
	MOVEM.L	D0-A3,-(SP)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#TD_MOTOR,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#MOTOR_OFF,io_Lenght(A1)
	JSR	DoIO(A6)
	MOVEM.L	(SP)+,D0-A3
	BSR.W	DisplayIOError
	CMP.L	#-$01,D0
	BEQ.W	WriteData03
	CMP.L	#$01,D0
	BEQ.W	WriteData03
	CMP.L	#$02,D0
	BEQ.W	WriteData04
	MOVEQ	#$01,D0
	MOVEM.L	D0-A3,-(SP)
	MOVE.L	IntuiBase,A6
	MOVE.L	Window,A0
	LEA	WindowName,A1
	LEA	-1,A2
	JSR	SetWindowTitles(A6)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_CLEAR,io_Command(A1)
	JSR	DoIO(A6)
	MOVEM.L	(SP)+,D0-A3
	RTS

WriteData06:
	MOVEQ	#$00,D0
	TST.W	Verify
	BNE.B	WriteData07
	RTS

WriteData07:
	MOVEM.L	D1-A6,-(SP)
	MOVE.L	ExecBase,A6
	MOVE.L	IORequest,A1
	MOVE.W	#CMD_READ,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#VerifyBuffer,io_Data(A1)
	MOVE.L	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,io_Lenght(A1)
	MOVEQ	#$00,D0
	MOVE.W	DestinationTrack,D0
	MULU.W	#TD_SECTOR*TD_NUMSECS*TD_NUMHEADS,D0
	MOVE.L	D0,io_Offset(A1)
	JSR	DoIO(A6)
	LEA	VerifyBuffer,A0
	MOVE.L	A2,A1
	MOVE.W	#((TD_SECTOR*TD_NUMSECS*TD_NUMHEADS)/4)-1,D7
	MOVEQ	#$01,D0

WriteData08:
	CMPM.L	(A0)+,(A1)+
	BNE.B	WriteData09
	DBF	D7,WriteData08
	MOVEQ	#$00,D0
	
WriteData09:
	MOVEM.L	(SP)+,D1-A6
	RTS	

FirstCopy:
	BSR.W	ResetDrives
	CLR.W	SourceTrack
	CLR.W	DestinationTrack
	MOVE.W	DiskCount,D0
	MOVEQ	#$00,D6
	BSET.L	D0,D6
	SUBQ.W	#$01,D6	
	MOVE.W	SourceDrive,D0
	CMP.W	DestinationDrive,D0
	BEQ.B	FirstCopy01
	BSR.W	ReadData
	TST.L	D0
	BNE.W	ReplyToMessage
	BSR.W	WriteData
	BRA.W	ReplyToMessage

FirstCopy01:
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest04,A1
	MOVE.L	$0C(A1),A0
	MOVE.W	SourceDrive,D0
	ADD.W	#$30,D0
	MOVE.B	D0,$1F(A0)
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BSR.W	ReadData
	TST.L	D0
	BNE.W	ReplyToMessage
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest05,A1
	MOVE.L	$0C(A1),A0
	MOVE.W	DestinationDrive,D0
	ADD.W	#$30,D0
	MOVE.B	D0,$1F(A0)
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BSR.W	WriteData
	TST.L	D0
	BNE.W	ReplyToMessage
	DBF	D6,FirstCopy01
	BRA.W	ReplyToMessage

NextCopy:
	CLR.W	DestinationTrack
	TST.W	DiskCount
	BNE.W	FirstCopy
	BSR.B	ResetDrives
	CMP.W	#$50,SourceTrack
	BEQ.B	NextCopy01
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest07,A1
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BRA.W	ReplyToMessage

NextCopy01:
	MOVE.L	IntuiBase,A6
	LEA	EasyRequest05,A1
	MOVE.L	$0C(A1),A0
	MOVE.W	DestinationDrive,D0
	ADD.W	#$30,D0
	MOVE.B	D0,$1F(A0)
	SUBA.L	A0,A0
	LEA	EasyRequestIDCMP,A2
	SUBA.L	A3,A3
	JSR	EasyRequestArgs(A6)
	BSR.W	WriteData
	BRA.W	ReplyToMessage

ResetDrives:
	MOVEM.L	D0-A6,-(SP)
	MOVE.L	ExecBase,A6
	LEA	TrackDisks,A2
	MOVEQ	#$00,D0
	MOVE.W	DestinationDrive,D0
	MULU	#$0C,D0
	MOVE.L	$04(A2,D0.W),A3
	MOVE.W	SourceDrive,D0
	MULU	#$0C,D0
	MOVE.L	$04(A2,D0.W),A2
	MOVE.L	A2,A1
	MOVE.W	#CMD_RESET,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#$00,io_Lenght(A1)
	JSR	DoIO(A6)
	CMPA.L	A2,A3
	BEQ.B	ResetDrives01
	MOVE.L	A3,A1
	MOVE.W	#CMD_RESET,io_Command(A1)
	MOVE.B	#IOF_QUICK,io_Flags(A1)
	MOVE.L	#$00,io_Lenght(A1)
	JSR	DoIO(A6)

ResetDrives01:
	MOVEM.L	(SP)+,D0-A6
	RTS

	Section Data,DATA_P

DosBase:
	DC.L	0

IntuiBase:
	DC.L	0

GadtoolsBase:
	DC.L	0

GraphBase:
	DC.L	0

Screen:
	DC.L	0

Window:
	DC.L	0

Visual:
	DC.L	0

Gadget:
	DC.L	0

GList:
	DC.L	0

RP:
	DC.L	0

DosList:
	DC.L	0

DiskBuffer:
	DC.L	0

DiskCount:
	DC.W	0

WBMessage:
	DC.L	0

SourceGadget:
	DC.L	0

DestinationGadget:
	DC.L	0

SourceDrive:
	DC.W	0
	
DestinationDrive:
	DC.W	0

SourceTrack:
	DC.W	0
	
DestinationTrack:
	DC.W	0

Verify:
	DC.W	0

TrackDisks:
	BLK.L	12,0

IORequest:
	DC.L	0
	
TextAttr:
	DC.L	FontName
	DC.W	8
	DC.B	0,1

EasyRequest01:
	DC.L	0,0
	DC.L	0,0
	DC.L	OutText02

EasyRequest02:
	DC.L	0,0
	DC.L	0
	DC.L	OutText12
	DC.L	OutText13

EasyRequest03:
	DC.L	0,0
	DC.L	GadgetText06
	DC.L	OutText14
	DC.L	OutText15

EasyRequest04:
	DC.L	0,0
	DC.L	0
	DC.L	OutText16
	DC.L	OutText15

EasyRequest05:
	DC.L	0,0
	DC.L	0
	DC.L	OutText17
	DC.L	OutText15

EasyRequest06:
	DC.L	0,0
	DC.L	0
	DC.L	0
	DC.L	OutText20

EasyRequest07:
	DC.L	0,0
	DC.L	0
	DC.L	OutText37
	DC.L	OutText20

EasyRequestIDCMP:
	DC.L	DISKINSERTEDIDCMP

DeviceList:
	DC.L	DeviceList+4
	DC.L	0
	DC.L	DeviceList
	DC.B	0
	DC.B	0

TagList01:
	DC.L	WA_PubScreen
	DC.L	0
	DC.L	WA_Left
	DC.L	0
	DC.L	WA_Top
	DC.L	0
	DC.L	WA_InnerWidth
	DC.L	280
	DC.L	WA_InnerHeight
	DC.L	145
	DC.L	WA_Title
	DC.L	WindowName
	DC.L	WA_Gadgets
	DC.L	0
	DC.L	WA_Flags
	DC.L	WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_GIMMEZEROZERO!WFLG_ACTIVATE!WFLG_CLOSEWINDOW
	DC.L	WA_IDCMP
	DC.L	BUTTONIDCMP!CLOSEWINDOWIDCMP!CHECKBOXIDCMP!LISTVIEWIDCMP
	DC.L	TAG_DONE

TagList02:
	DC.L	GTLV_Labels
	DC.L	DeviceList
	DC.L	GTLV_Selected
	DC.L	0
	DC.L	GA_Relverify
	DC.L	1
	DC.L	GTLV_ScrollWidth
	DC.L	15
	DC.L	TAG_DONE

TagList03:
	DC.L	GTTX_Border
	DC.L	1
	DC.L	GTTX_Text
	DC.L	DriveName
	DC.L	TAG_DONE

TagList04:
	DC.L	GA_Relverify
	DC.L	1
	DC.L	TAG_DONE

NewGadget01:
	DC.W	20,15
	DC.W	100,42
	DC.L	GadgetText01
	DC.L	TextAttr
	DC.W	0
	DC.L	PLACETEXT_ABOVE!NG_HIGHLABEL
	DC.L	0
	DC.L	0

NewGadget02:
	DC.W	160,15
	DC.W	100,42
	DC.L	GadgetText02
	DC.L	TextAttr
	DC.W	1
	DC.L	PLACETEXT_ABOVE!NG_HIGHLABEL
	DC.L	0
	DC.L	0

NewGadget03:
	DC.W	20,52
	DC.W	100,11
	DC.L	0
	DC.L	TextAttr
	DC.W	0
	DC.L	PLACETEXT_ABOVE!NG_HIGHLABEL
	DC.L	0
	DC.L	0

NewGadget04:
	DC.W	160,52
	DC.W	100,11
	DC.L	0
	DC.L	TextAttr
	DC.W	0
	DC.L	PLACETEXT_ABOVE!NG_HIGHLABEL
	DC.L	0
	DC.L	0

NewGadget05:
	DC.W	20,98
	DC.W	240,12
	DC.L	GadgetText03
	DC.L	TextAttr
	DC.W	2
	DC.L	PLACETEXT_IN
	DC.L	0
	DC.L	0

NewGadget06:
	DC.W	20,112
	DC.W	240,12
	DC.L	GadgetText04
	DC.L	TextAttr
	DC.W	3
	DC.L	PLACETEXT_IN
	DC.L	0
	DC.L	0

NewGadget07:
	DC.W	20,126
	DC.W	0,0
	DC.L	GadgetText05
	DC.L	TextAttr
	DC.W	4
	DC.L	PLACETEXT_RIGHT
	DC.L	0
	DC.L	0

NewGadget08:
	DC.W	160,126
	DC.W	100,12
	DC.L	GadgetText06
	DC.L	TextAttr
	DC.W	5
	DC.L	PLACETEXT_IN
	DC.L	0
	DC.L	0

Border01:
	DC.W	0,0
	DC.B	1,0
	DC.B	1,4
	DC.L	TopTable01
	DC.L	Border02

Border02:
	DC.W	0,0
	DC.B	2,0
	DC.B	1,2
	DC.L	TopTable02
	DC.L	Border03

Border03:
	DC.W	0,0
	DC.B	2,0
	DC.B	1,2
	DC.L	TopTable03
	DC.L	Border04

Border04:
	DC.W	0,0
	DC.B	1,0
	DC.B	1,3
	DC.L	TopTable04
	DC.L	Border05

Border05:
	DC.W	0,0
	DC.B	2,0
	DC.B	1,3
	DC.L	TopTable05
	DC.L	Border06

Border06:
	DC.W	0,0
	DC.B	1,0
	DC.B	1,2
	DC.L	TopTable06
	DC.L	Border07

Border07:
	DC.W	0,0
	DC.B	2,0
	DC.B	1,2
	DC.L	TopTable07
	DC.L	0

TopTable01:
	DC.W	0,68,280,68,140,68,140,0

TopTable02:
	DC.W	0,69,280,69

TopTable03:
	DC.W	141,0,141,68
	
TopTable04:
	DC.W	20,84,20,74,260,74
	
TopTable05:
	DC.W	21,84,260,84,260,74
	
TopTable06:
	DC.W	0,90,280,90
	
TopTable07:
	DC.W	0,91,280,91

TrackDiskErrors:
	DC.L	OutText21
	DC.L	OutText22
	DC.L	OutText23
	DC.L	OutText24
	DC.L	OutText25
	DC.L	OutText26
	DC.L	OutText27
	DC.L	OutText28
	DC.L	OutText29
	DC.L	OutText30
	DC.L	OutText31
	DC.L	OutText32
	DC.L	OutText33
	DC.L	OutText34
	DC.L	OutText35
	DC.L	OutText38

DosName:
	DC.B	'dos.library',0

IntuiName:
	DC.B	'intuition.library',0

GraphName:
	DC.B	'graphics.library',0

GadtoolsName:
	DC.B	'gadtools.library',0

TrackDiskName:
	DC.B	'trackdisk.device',0

FontName:
	DC.B	'topaz.font',0

WindowName:
	DC.B	'Fast copy',0
	
DriveName:
	DC.B	'DF0',0,0

GadgetText01:
	DC.B	'Ze stacji',0
	
GadgetText02:
	DC.B	'Do stacji',0

GadgetText03:
	DC.B	'Kopiuj',0
	
GadgetText04:
	DC.B	'Powtórz kopiowanie',0

GadgetText05:
	DC.B	'Weryfikacja',0

GadgetText06:
	DC.B	'O programie',0

VersionString:
	DC.B	'$VER: FastCopy v1.0 by Piotr Wyderski (19.03.97)',0
	
OutText01:
	DC.B	0,100,17
	DC.B	'Ten program wymaga kickstartu w wersji 2.0 lub nowszej.',0
	DC.B	0,0

OutText02:
	DC.B	'Akceptujë',0

OutText03:
	DC.B	'Nie moûna utworzyê portu komunikacyjnego.',0

OutText04:
	DC.B	'Nie moûna utworzyê struktury IORequest.',0

OutText05:
	DC.B	'Nie moûna otworzyê trackdisk.device dla stacji DF0:',0

OutText06:
	DC.B	'Nie moûna pobraê struktury DosList.',0

OutText07:
	DC.B	'Nie moûna znaleúê domyôlnego ekranu publicznego',0

OutText08:
	DC.B	'Nie moûna pobraê struktury visual info.',0
	
OutText09:
	DC.B	'Nie moûna utworzyê struktury gadget context.',0

OutText10:
	DC.B	'Nie moûna utworzyê gadûetu.',0

OutText11:
	DC.B	'Nie moûna otworzyê okna.',0

OutText12:
	DC.B	'Czy jesteô pewien ?',0

OutText13:
	DC.B	'Tak|Nie',0

OutText14:
	DC.B	'       Fast copy v1.0',10,10
	DC.B	'  Autor: Piotr Wyderski.',10
	DC.B	'Program ma status freeware.',10
	DC.B	' Data kompilacji: 18.03.97',0

OutText15:
	DC.B	'OK',0

OutText16:
	DC.B	'Wîóû dysk úródîowy do stacji DF0:',0

OutText17:
	DC.B	'Wîóû dysk docelowy do stacji DF0:',0

OutText18:
	DC.B	'Odczyt...',0

OutText19:
	DC.B	'Zapis...',0

OutText20:
	DC.B	'Powtórz|Ignoruj|Zaniechaj',0

OutText21:
	DC.B	'Nie moûna znaleúê sektora.',0

OutText22:
	DC.B	'Niewîaôciwe rozpoznanie sektora.',0

OutText23:
	DC.B	'Niewîaôciwy identyfikator sektora.',0

OutText24:
	DC.B	'Niewîaôciwa suma kontrolna nagîówka.',0

OutText25:
	DC.B	'Niewîaôciwa suma kontrolna danych.',0

OutText26:
	DC.B	'Nie moûna znaleúê nastëpnych sektorów.',0

OutText27:
	DC.B	'Niewîaôciwy nagîówek danych.',0

OutText28:
	DC.B	'Dysk jest zabezpieczony przed zapisem.',0

OutText29:
	DC.B	'W stacji nie ma dysku.',0

OutText30:
	DC.B	'Nie moûna znaleúê ôcieûki zerowej.',0

OutText31:
	DC.B	'Brak pamiëci.',0

OutText32:
	DC.B	'Niewîaôciwy identyfikator stacji.',0

OutText33:
	DC.B	'Ta stacja nie jest obsîugiwana przez trackdisk.device',0

OutText34:
	DC.B	'Stacja znajduje sië w uûyciu przez inny program',0

OutText35:
	DC.B	'Uûytkownik wcisnâî RESET.',0

OutText36:
	DC.B	'Nieznany bîâd.',0

OutText37:
	DC.B	'W pamiëci nie znajduje sië poprzednia kopia dysku.',0

OutText38:
	DC.B	'Bîâd weryfikacji danych.',0

	Section Free,BSS_C

VerifyBuffer:
	DS.B	TD_SECTOR*TD_NUMSECS*TD_NUMHEADS
	
