;:sys36864
	;.opt oo
prgstart	= 43
prgend	= 45
tmp	= 2
tmp2	= 4
then	= 167
goto	= 137
rem	= 143
setlink	= $a533
strout	= $ab1e
hi	= 252
lo	= 251
axout	= $bdcd
return	= $aad7
farb1	=53280
farb2	=53281
let	=136
out	=$ffd2
	*= 50000
	jmp init
messn	.word ms1,ms2,ms3,ms4,ms5
text	.byte "\x11\x9averbesserung zeile \x9e"
	.byt 0
ms1	.byte "\x99then \x05goto\x99 entfernt"
	.byt 0
ms2	.byte "\x05space\x99 im programmtext"
	.byt 0
ms3	.byte "\x99ueberfluessiges \x05anf. zeichen"
	.byt 0
ms4	.byte "\x99'\x05rem\x99' gefunden"
	.byt 0
ms5	.byte "\x99'\x05let\x99' gefunden"
	.byt 0
spar	.byte "\x11\x81fertig. sie haben \x1f"
	.byt 0
spar2	.byte " \x81bytes gespart."
	.byt 13
	.byte "anz. verbesserungen:\x1f "
	.byt 0
start	.byte "\x93\x98       ******* compaktor *******"
	.byt 13
	.byte "\x11(c) n. heusler 85/86"
	.byt 13
	.byte "\x11\x11\x11\x97compaktierung \x05laeuft \x97!\x11"
	.byt 13,0
in1	inc tmp
	bne z1020
	inc tmp+1
z1020	rts
in2	inc tmp2
	bne z1050
	inc tmp2+1
z1050	rts
trans	lda (tmp),y
	sta (tmp2),y
	rts
message	pha
	tya
	pha
	txa
	asl
	pha
	ldx #10
	lda #32
z1076	jsr out
	dex
	bne z1076
	pla
	tax
	lda messn+1,x
	tay
	lda messn,x
	jsr strout
	jsr return
	pla
	tay
	pla
	rts
verb	lda #<text
	ldy #>text
	jsr strout
	inc zahl
	bne z1120
	inc zahl+1
z1120	ldx lo
	lda hi
	jsr axout
	jsr return
	ldy #0
	rts
zahl	.word 0
flag	.byt 0
quot	.byt 0
weiter	.byt 0
init	ldx #1
z2010	lda prgstart,x
	sta tmp,x
	sta tmp2,x
	lda prgstart+1,x
	sta tmp+1,x
	sta tmp2+1,x
	dex
	bpl z2010
	lda #0
	sta farb1
	sta farb2
	sta zahl
	sta zahl+1
	lda #<start
	ldy #>start
	jsr strout
	lda tmp2
	sec
	sbc #1
	sta tmp2
	lda tmp2+1
	sbc #0
	sta tmp2+1
	lda tmp
	sec
	sbc #1
	sta tmp
	lda tmp+1
	sbc #0
	sta tmp+1
z2100	ldy #0
	sty quot
	sty weiter
	tya
	sta (tmp2),y
	jsr in2
	jsr in1
	jsr trans
	sta flag
	jsr in1
	jsr in2
	jsr trans
	bne z2250
	lda flag
	bne z2250
	jsr setlink
	jsr in2
	jmp auswert
z2250	sty flag
	jsr in1
	jsr in2
	jsr trans
	sta lo
	jsr in1
	jsr in2
	jsr trans
	sta hi
	jmp z2300
z2285	jsr verb
	ldx #0
	jsr message
	jmp z2300
z2286	jsr verb
	ldx #4
	jsr message
	jmp z2300
z2290	jsr verb
	ldx #1
	jsr message
z2300	jsr in1
	lda (tmp),y
	bit quot
	bmi z2500
	cmp #32
	beq z2290
	cmp #let
	beq z2286
	cmp #goto
	bne z2350
	bit flag
	bmi z2285
z2350	cmp #then
	sty flag
	bne z2380
	lda #255
	sta flag
	lda #then
z2380	cmp #0
	beq z2500
	bit weiter
	bmi z2300
	cmp #rem
	bne z2500
	lda #255
	sta weiter
	jsr verb
	ldx #3
	jsr message
	lda #rem
z2500	cmp #34
	bne z2580
	lda quot
	eor #255
	sta quot
	php
	lda #34
	plp
	bne z2580
	iny
	lda (tmp),y
	bne z2575
	dey
	lda tmp
	sec
	sbc #1
	sta tmp
	lda tmp+1
	sbc #0
	sta tmp+1
	lda (tmp),y
	pha
	jsr in1
	pla
	cmp #32
	beq z2575
	jsr verb
	ldx #2
	jsr message
	jmp z2300
z2575	lda #34
z2580	ldy #0
	pha
	jsr in2
	pla
	sta (tmp2),y
	cmp #0
	bne z2610
	jmp z2100
z2610	jmp z2300
auswert	lda #<spar
	ldy #>spar
	jsr strout
	lda prgend
	sec
	sbc tmp2
	tax
	lda prgend+1
	sbc tmp2+1
	jsr axout
	lda tmp2
	ldy tmp2+1
	sta prgend
	sty prgend+1
	lda #<spar2
	ldy #>spar2
	jsr strout
	ldx zahl
	lda zahl+1
	jsr axout
	jmp return
