;:poke56,128:clr
;:sys36864
	;.opt oo
	*= $8000
fa	=186
pos	=2
ref	=3
track	=4
sektor	=5
	jmp los
hi	.byt 13
	.byte "\x93\x97unscratch 1541  v1      nikolaus heusler"
	.byte "\x11macht den scratch-befehl  des disketten-"
	.byte "laufwerks rueckgaengig.         nh 12.90"
	.byte "\x11\x11bitte zu bearbeitende diskette einlegen!\x91"
	brk
wait1	.byte "directory wird gelesen, augenblick bitte"
	brk
errc	.byt 13
	.byte "\x12achtung! "
	brk
ciaou	.byt 13
	.byte "vorgang abgeschlossen.\x11"
	brk
break	.byt 13
	.byte "vorgang abgebrochen.\x11"
	brk
rep	.byte " wiederherstellen?"
	.byt 13,0
okdo	.byte "\x11welcher dateityp? (p) rg"
	.byte "\x11\x9d\x9d\x9d\x9d\x9d\x9d(s) eq"
	.byte "\x11\x9d\x9d\x9d\x9d\x9d\x9d(u) sr"
	.byte "\x11\x9d\x9d\x9d\x9d\x9d\x9d(r) el"
	.byte "\x11\x9d\x9d\x9d\x9d\x9d\x9d(a) bbruch"
	.byt 13,0
laeuft	.byt 13
	.byte "file wird wiederhergestellt!"
	.byt 13,0
jetza	.byt 13
	.byte "diskette wird re-organisiert. moment..."
	.byt 13,0
i0	.byte "i0"
kr	.byte "#"
u	.byte "u :3 0 "
tr	.byt 0,0,32
se	.byt 0,0
buftxt	.byte "b-p 3 0"
control	ldx #15
	jsr $ffc6
	ldx #0
getfek	jsr 65508
	cmp #13
	beq endfek
	sta fek,x
	inx
	bne getfek
endfek	lda #0
	sta fek,x
	jsr $ffcc
	lda fek
	cmp #"0"
	beq frei
	lda #<errc
	ldy #>errc
	jsr $ab1e
	lda #<fek
	ldy #>fek
	jsr $ab1e
	jsr $aad7
	lda #-1
frei	rts
sendcmd	sta u+1
	txa
	jsr numbasc
	stx tr
	sta tr+1
	tya
	jsr numbasc
	stx se
	sta se+1
	ldx #15
	jsr $ffc9
	ldx #0
comout	lda u,x
	jsr $ffd2
	inx
	cpx #12
	bcc comout
	jmp $ffcc
numbasc	ldx #"0"
	sec
numb1	sbc #10
	bcc numb2
	inx
	bcs numb1
numb2	adc #"9"+1
	rts
read	stx track
	sty sektor
	lda #"1"
	jsr sendcmd
	ldx #3
	jsr $ffc6
	ldx #0
dirin	jsr 65508
	sta buf,x
	inx
	bne dirin
	jsr $ffcc
	jmp control
write	ldx #15
	jsr $ffc9
	ldx #0
pntout	lda buftxt,x
	jsr $ffd2
	inx
	cpx #7
	bcc pntout
	jsr $ffcc
	ldx #3
	jsr $ffc9
	ldx #0
dirout	lda buf,x
	jsr $ffd2
	inx
	bne dirout
	jsr $ffcc
	ldx track
	ldy sektor
	lda #"2"
	sta ref
	jsr sendcmd
	jmp control
los	jsr 65409
	lda #<hi
	ldy #>hi
	jsr $ab1e
	lda #12
	sta 53280
	sta 53281
	jsr $ffe7
	lda #0
	sta 198
	sta ref
wk	cmp 198
	beq wk
	dec 198
	lda #<wait1
	ldy #>wait1
	jsr $ab1e
	lda #2
	ldx #<i0
	ldy #>i0
	jsr $ffbd
	ldx fa
	cpx #8
	bcc set8
	cpx #12
	bcc ok8
set8	ldx #8
ok8	lda #15
	tay
	jsr $ffba
	jsr $ffc0
	jsr control
	bne clos
	lda #1
	ldx #<kr
	ldy #>kr
	jsr $ffbd
	ldx fa
	lda #3
	tay
	jsr $ffba
	jsr $ffc0
	jsr control
	bne clos
	ldx #18
	ldy #0
	jsr read
	beq dirloop
clos	lda #0
	sta 198
cl	cmp 198
	beq cl
	sta 198
	bne los
dirloop	ldx buf
	bne nextrack
	jsr $ffcc
	lda #13
	jsr $ffc3
	lda ref
	beq uff
	lda #<jetza
	ldy #>jetza
	jsr $ab1e
	ldx #15
	jsr $ffc9
	lda #"v"
	jsr $ffd2
	jsr $ffcc
	jsr control
	bne abort
uff	lda #15
	jsr $ffc3
	lda #<ciaou
	ldy #>ciaou
	jmp $ab1e
nextrack	ldy buf+1
	jsr read
	beq red
abort	lda #<break
	ldy #>break
	jsr $ab1e
	lda #13
	jsr $ffc3
	lda #15
	jmp $ffc3
red	ldy #0
fileloop	sty pos
	lda buf+2,y
	bne qf
	lda buf+5,y
	bne weiter
qf	jmp fileist
weiter	jsr $aad7
	lda #34
	jsr $ffd2
	ldx #0
pnam	lda buf+5,y
	cmp #160
	beq namfert
	jsr $ffd2
	iny
	inx
	cpx #16
	bcc pnam
namfert	lda #34
	jsr $ffd2
	lda #20
	sta 211
	lda #<rep
	ldy #>rep
	jsr $ab1e
	lda #0
	sta 198
getjn	jsr 65508
	cmp #"a"
	beq abort
	cmp #"n"
	beq fileist
	cmp #"j"
	bne getjn
	lda #<okdo
	ldy #>okdo
	jsr $ab1e
	lda #0
	sta 198
getap	jsr 65508
	cmp #"a"
	beq fileist
	cmp #"p"
	beq prg
	cmp #"s"
	beq seq
	cmp #"r"
	beq rel
	cmp #"u"
	bne getap
	lda #$83
	.byt $2c
rel	lda #$84
	.byt $2c
seq	lda #$81
	.byt $2c
prg	lda #$82
	ldy pos
	sta buf+2,y
	lda #<laeuft
	ldy #>laeuft
	jsr $ab1e
	jsr write
	beq fileist
	jmp abort
fileist	lda pos
	clc
	adc #16
	bcc nstop
	jmp dirloop
nstop	tay
	jmp fileloop
fek	*=*+40
buf	=*
