	include	ssmac.h
	include	values/intuition.gs
	include	resources/disk.i

	opt	o+,w+,nochkimm

	dv.l	diskres
	dbuf.l	pointers,13
	dv.l	window_hd
	dv.l	rastport
	dv.w	out
	dv.w	in

	tbase	a4

	start
	dtl	<disk.resource>,a1
	moveq	#0,d0
	call	exec,OpenResource
	put.l	d0,diskres
	errc.ne	<Cannot open disk.resource>

	lea	my_window(pc),a0
	lea	gadgets(pc),a2
	geta	pointers,a3
	call	igs,igsOpenWindow
	put.l	d0,window_hd
	put.l	a0,rastport

	geta	pointers,a1
	moveq	#7,d0
1$	move.l	(a1)+,a0
	bset	#0,gg_Activation(a0)
	bset	#7,gg_Flags+1(a0)
	dbf	d0,1$

	get.l	pointers,a0
	get.l	window_hd,a1
	sub.l	a2,a2
	moveq	#-1,d0
	call	intuition,RefreshGList

	geta	pointers+8*4,a1
	moveq	#3,d0
2$	move.l	(a1)+,a0
	bset	#0,gg_Flags(a0)
	dbf	d0,2$

	sub.l	a0,a0
	moveq	#DRU_SIZE,d0
	call	ss,TrackIoRq
	move.l	d0,a1
	get.l	diskres,a6
	jsr	DR_GETUNIT(a6)
	errc.ne	<Cannot get unit>

	writeln	<Waiting...>

	put.w	#-1,out

	get.l	rastport,a1
	moveq	#3,d0
	call	gfx,SetAPen

	get.l	rastport,a1
	moveq	#3,d0
	call	SetDrMd

loop	moveq	#5,d1
	call	dos,Delay

	move.w	$bfe000,d0
	get.w	in,d1
	put.w	d0,in
	eor.w	d0,d1
	beq.s	1$
	geta	pointers+8*4,a1
	moveq	#3,d0
2$	move.l	(a1)+,a0
	move.w	d1,d2
	and.w	gg_GadgetID(a0),d2
	beq.s	3$
	mpush	a1/d0-1
	move.w	gg_LeftEdge(a0),d0
	move.w	gg_TopEdge(a0),d1
	move.w	d0,d2
	move.w	d1,d3
	add.w	gg_Width(a0),d2
	subq.w	#1,d2
	add.w	gg_Height(a0),d3
	subq.w	#1,d3
	get.l	rastport,a1
	call	gfx,RectFill
	mpop	a1/d0-1

3$	dbf	d0,2$

1$	get.l	window_hd,a0
	call	igs,igsGetIDCMP
	moveq	#-1,d0
	cmp.l	d0,d2
	beq.s	loop
	move.w	gg_GadgetID(a0),d1
	bne.s	chng

	get.l	diskres,a6
	jsr	DR_GIVEUNIT(a6)

	rts

chng	get.w	out,d0
	eor.w	d1,d0
	put.w	d0,out
	rol.w	#8,d0
	move.w	d0,$bfd100
	bra	loop

	include	source:ism/drivetest.ib

gadgets	dc.l	g_2
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	20,20
	dc.w	100,15
	dc.l	t_1,0
	dc.w	$80
	dc.l	$10
	ds.l	2

g_2	dc.l	g_3
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	130,20
	dc.w	100,15
	dc.l	t_2,0
	dc.w	$4
	dc.l	$10
	ds.l	2

g_3	dc.l	g_4
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	240,20
	dc.w	100,15
	dc.l	t_3,0
	dc.w	$2
	dc.l	$10
	ds.l	2

g_4	dc.l	g_5
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	350,20
	dc.w	100,15
	dc.l	t_4,0
	dc.w	$1
	dc.l	$10
	ds.l	2

g_5	dc.l	g_6
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	20,40
	dc.w	100,15
	dc.l	t_5,0
	dc.w	$40
	dc.l	$10
	ds.l	2

g_6	dc.l	g_7
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	130,40
	dc.w	100,15
	dc.l	t_6,0
	dc.w	$20
	dc.l	$10
	ds.l	2

g_7	dc.l	g_8
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	240,40
	dc.w	100,15
	dc.l	t_7,0
	dc.w	$10
	dc.l	$10
	ds.l	2

g_8	dc.l	g_9
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	350,40
	dc.w	100,15
	dc.l	t_8,0
	dc.w	$8
	dc.l	$10
	ds.l	2

g_9	dc.l	g_10
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	20,65
	dc.w	100,15
	dc.l	t_9,0
	dc.w	$20
	dc.l	$10
	ds.l	2

g_10	dc.l	g_11
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	130,65
	dc.w	100,15
	dc.l	t_10,0
	dc.w	$10
	dc.l	$10
	ds.l	2

g_11	dc.l	g_12
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	240,65
	dc.w	100,15
	dc.l	t_11,0
	dc.w	$8
	dc.l	$10
	ds.l	2

g_12	dc.l	g_13
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	350,65
	dc.w	100,15
	dc.l	t_12,0
	dc.w	$4
	dc.l	$10
	ds.l	2

g_13	dc.l	0
	dc.b	1,$FF
	dc.l	0
	ds.l	7
	dc.w	20,90
	dc.w	430,15
	dc.l	t_13,0
	dc.w	$0
	dc.l	$10
	ds.l	2



t_1	dc.b	'\MOTOR',0
t_2	dc.b	'\SIDE',0
t_3	dc.b	'DIR',0
t_4	dc.b	'\STEP',0
t_5	dc.b	'\SELECT 3',0
t_6	dc.b	'\SELECT 2',0
t_7	dc.b	'\SELECT 1',0
t_8	dc.b	'\SELECT 0',0
t_9	dc.b	'\READY',0
t_10	dc.b	'\TRACK 0',0
t_11	dc.b	'\WR PROT',0
t_12	dc.b	'\CHANGE',0
t_13	dc.b	'Quit',0

	tags
	library	igs,1
	finish

_LVOigsCleanup		equ	-30
_LVOigsAddTracker	equ	-36
_LVOigsFreeTracker	equ	-42
_LVOigsOpenScreen	equ	-48
_LVOigsOpenWindow	equ	-54
_LVOigsAlert		equ	-60
_LVOigsOpenScreenTagList	equ	-66
_LVOigsOpenWindowTagList	equ	-72
_LVOigsText		equ	-78
_LVOigsWaitIDCMP		equ	-84
_LVOigsGetIDCMP		equ	-90
_LVOigsStoreWaitIDCMP	equ	-96
_LVOigsStoreGetIDCMP	equ	-102
_LVOigsItemAddr		equ	-108
_LVOigsCommandItemAddr	equ	-114
_LVOigsMultiRequest	equ	-120
_LVOigsEvaluate		equ	-126
_LVOigsEvaluateError	equ	-132
_LVOigsHandleGMsg	equ	-138
_LVOigsSetMenu		equ	-144
_LVOigsCreateGadgets	equ	-150
_LVOigsControlMsgs	equ	-156
_LVOigsPrintErr		equ	-162
_LVOigsSetCleanupRoutine	equ	-168

