; fix Cybercon III disk so it will work under WB2.0

ExecBase	EQU	4
FindTask	EQU	-294
AddPort		EQU	-354
RemPort		EQU	-360
OpenLib		EQU	-408
CloseLib	EQU	-414
OpenDev		EQU	-444
CloseDev	EQU	-450
DoIO		EQU	-456

CMD_READ	EQU	2
CMD_WRITE	EQU	3
TD_MOTOR	EQU	9
CMD_UPDATE	EQU	4


start:
	move.l	ExecBase,a6
	sub.l	a1,a1		; this task
	jsr	FindTask(a6)
	move.l	d0,readreply+$10

	lea	readreply,a1

	jsr	AddPort(a6)

	lea	diskio,a1

	moveq	#0,d0
	moveq	#0,d1
	lea	TrDev,a0
	jsr	OpenDev(a6)
	tst.l	d0
	bne	agr

	lea	diskbuff,a4

	lea	diskio,a1
	move.l	#readreply,14(a1)

	move.w	#TD_MOTOR,28(a1)
	move.l	#1,36(a1)
	jsr	DoIO(a6)		; turn drive on

	lea	diskio,a1
	move.w	#CMD_READ,28(a1)
	move.l	a4,40(a1)		; disk buffer
	move.l	#512,36(a1)		; 1 sector is length
	move.l	#149*512,44(a1)		; offset
	jsr	DoIO(a6)		; read the sector

	move.l	diskio+32,d6

	move.b	#$2c,159(a4)		; change byte

	lea	diskio,a1
	move.w	#CMD_WRITE,28(a1)
	move.l	a4,40(a1)		; disk buffer
	move.l	#512,36(a1)		; length is 1 sector
	move.l	#149*512,44(a1)		; offset
	jsr	DoIO(a6)		; write the sector

	lea	diskio,a1
	move.w	#CMD_UPDATE,28(a1)
	jsr	DoIO(a6)

	lea	diskio,a1
	move.w	#TD_MOTOR,28(a1)
	move.l	#0,36(a1)
	jsr	DoIO(a6)		; turn drive off

	lea	readreply,a1
	jsr	RemPort(a6)

	lea	diskio,a1
	jsr	CloseDev(a6)

	rts

agr:	move.w	#$0f00,$dff180
	rts


TrDev:	dc.b	'trackdisk.device',0



	SECTION green,BSS,CHIP
	even
diskbuff:	ds.b	512
readreply:	ds.l	8
diskio		ds.l	20


	end