;:rem      freezer-quellprogramm
;::
;:rem    (c)1987 by patrick urban
;::
;::
;:sys32768
	;.opt oo
	*= $f72c
vic	= 53248
sid	= 54272
tastatur	= $ea87
save	= $ffd8
setnam	= $ffbd
setfls	= $ffba
anf1	= $0800
end1	= $a000
la1	= 2
la2	= 2
anf2	= $2000
end2	= $9803
load	= $ffd5
la3	= 2
anf3	= $d000
end3	= $d019
open	= $ffc0
close	= $ffc3
chkout	= $ffc9
clrch	= $ffcc
adr	= 8192
print	= $ffd2
reg0	= 1000
reg1	= 1005
reg2	= reg1 + 1
reg3	= reg2 + 1
reg4	= reg3 + 1
z	= reg4 + 1
h1	= z + 1
h2	= h1 + 1
flag1	= h2 + 1
irq	lda $d019
	and #1
	bne irq2
	jmp $ea31
irq2	sta $d019
	pla
	tay
	pla
	tax
	pla
	rti
ende	ldx 323
	ldy 324
	lda 322
	cli
	rti
name1	.byte "f1"
name2	.byte "f2"
name3	.byte "f3"
anfang1	sta 322
	lda #$7f
	sta $dd0d
	lda $dd0d
	stx 323
	sty 324
	lda #255
	sta 56322
	sta 317
loop	jsr tastatur
	lda 203
	cmp #13
	bne lo1
	jmp speichern
lo1	cmp #42
	bne lo2
	jmp laden
lo2	cmp #17
	bne lo3
	jmp reset
lo3	cmp #41
	bne lo4
	jmp drucken
lo4	cmp #14
	bne lo5
	jmp restore
lo5	cmp #33
	bne lo6
	jmp invers
lo6	cmp #22
	bne lo7
	jmp $fe66
lo7	cmp #60
	bne loop
	jmp ende
restore	lda 322
	ldx 323
	ldy 324
	jmp ($0318)
invers	inc 317
	jmp drucken
speichern	lda 788
	sta 319
	lda 789
	sta 320
	lda #>irq
	sta 789
	lda #<irq
	sta 788
	ldx #8
	jsr setfls
	lda #la1
	ldx #<name1
	ldy #>name1
	jsr setnam
	lda $fb
	pha
	lda $fc
	pha
	lda #<anf1
	sta $fb
	lda #>anf1
	sta $fc
	lda $9d
	bpl spe1
	lda #0
	sta $9d
spe1	lda #$fb
	ldx #<end1
	ldy #>end1
	jsr save
	pla
	sta $fc
	pla
	sta $fb
	lda #0
	sta $b8
	sta $b9
	sta $bb
	lda #$20
	sta $bc
	ldy #0
	ldx #0
spe2	lda ($b8),y
	sta ($bb),y
	iny
	bne spe2
	inc $b9
	inc $bc
	inx
	cpx #8
	bne spe2
	lda #<kopier
	sta $b8
	lda #>kopier
	sta $b9
	lda #$10
	sta $bc
	ldx #0
	ldy #0
spe3	lda ($b8),y
	sta ($bb),y
	iny
	bne spe3
	inc $b9
	inc $bc
	inx
	cpx #1
	bne spe3
	jmp $1000
spe4	lda #$88
	sta $bc
	lda #$d0
	sta $b9
	ldy #0
	ldx #0
spe5	lda ($b8),y
	sta ($bb),y
	
	iny
	bne spe5
	inc $b9
	inc $bc
	inx
	cpx #16
	bne spe5
	ldx #8
	jsr setfls
	lda #la2
	ldx #<name2
	ldy #>name2
	jsr setnam
	tsx
	stx $9802
	lda #<anf2
	sta $fb
	lda #>anf2
	sta $fc
	lda #$fb
	ldx #<end2
	ldy #>end2
	jsr save
	ldx #8
	jsr setfls
	lda #la3
	ldx #<name3
	ldy #>name3
	jsr setnam
	lda #<anf3
	sta $fb
	lda #>anf3
	sta $fc
	lda #$fb
	ldx #<end3
	ldy #>end3
	jsr save
	jmp reset
kopier	sei
	lda 1
	pha
	lda #52
	sta 1
	lda #0
	sta $b8
	lda #1
	sta $bb
	lda #$28
	sta $bc
	lda #$a0
	sta $b9
	ldy #0
	ldx #0
kop1	lda ($b8),y
	sta ($bb),y
	iny
	bne kop1
	inc $b9
	inc $bc
	inx
	cpx #96
	bne kop1
	pla
	sta 1
	cli
	jmp spe4
laden	ldx #8
	ldy #1
	jsr setfls
	lda #la2
	ldx #<name2
	ldy #>name2
	jsr setnam
	lda #0
	jsr load
	lda #$8c
	sta $bc
	lda #$d4
	sta $b9
	lda #0
	sta $b8
	lda #1
	sta $bb
	ldy #0
lad1	lda ($bb),y
	sta ($b8),y
	lda $bb
	clc
	adc #1
	sta $bb
	lda $bc
	adc #0
	sta $bc
	lda $b8
	clc
	adc #1
	sta $b8
	lda $b9
	adc #0
	sta $b9
	cmp #>56325
	bne lad1
	lda $b8
	cmp #<56325
	bne lad1
	lda $b8
	clc
	adc #241
	sta $b8
	lda $b9
	adc #0
	sta $b9
	lda $bb
	clc
	adc #241
	sta $bb
	lda $bc
	adc #0
	sta $bc
lad2	lda ($bb),y
	sta ($b8),y
	lda $bb
	clc
	adc #1
	sta $bb
	lda $bc
	adc #0
	sta $bc
	lda $b8
	clc
	adc #1
	sta $b8
	lda $b9
	adc #0
	sta $b9
	cmp #224
	bne lad2
	lda #<copier
	sta $b8
	lda #>copier
	sta $b9
	lda #$10
	sta $bc
	lda #0
	sta $bb
	ldx #0
	ldy #0
lad3	lda ($b8),y
	sta ($bb),y
	iny
	bne lad3
	inc $b9
	inc $bc
	inx
	cpx #1
	bne lad3
	jsr $e5a0
	jmp $1000
lad4	ldy #0
fuell	lda $881b,y
	sta 295,y
	iny
	cpy #21
	bne fuell
	lda 321
	ldx #8
	ldy #1
	jsr setfls
	lda $9d
	bpl lad8
	lda #0
	sta $9d
lad8	lda #la1
	ldx #<name1
	ldy #>name1
	jsr setnam
	lda #0
	jsr load
	sei
	ldx 321
	lda 320
	sta 789
	lda 319
	sta 788
	cli
	ldx #8
	ldy #1
	jsr setfls
	lda #la3
	ldx #<name3
	ldy #>name3
	jsr setnam
	lda #0
	jsr load
	ldy #0
fuell2	lda 295,y
	sta $d01a,y
	iny
	cpy #21
	bne fuell2
	jmp ende
reset	ldx #255
	sei
	txs
	cld
	ldx #5
	jmp $fcef
copier	sei
	lda 1
	pha
	lda #52
	sta 1
	lda #0
	sta $b8
	lda #1
	sta $bb
	lda #$28
	sta $bc
	lda #$a0
	sta $b9
	ldy #0
	ldx #0
cop1	lda ($bb),y
	sta ($b8),y
	iny
	bne cop1
	inc $b9
	inc $bc
	inx
	cpx #96
	bne cop1
	pla
	sta 1
	lda #0
	sta $b9
	sta $bb
	lda #$20
	sta $bc
	ldy #0
	ldx #0
cop2	lda ($bb),y
	sta ($b8),y
	iny
	cpy #184
	bne cop2
	iny
	iny
	iny
	iny
	iny
cop3	lda ($bb),y
	sta ($b8),y
	iny
	bne cop3
	inc $b9
	inc $bc
	inx
	cpx #8
	bne cop3
	ldx $9802
	txs
	cli
	jmp lad4
drucken	lda #1
	jsr close
	lda #0
	sta flag1
	lda #1
	ldx #4
	ldy #0
	jsr setfls
	lda #0
	jsr setnam
	jsr open
	ldx #1
	jsr chkout
	jsr drucker
druck1	lda vic+22
	and #16
	cmp #16
	bne druck2
	inc flag1
druck2	lda 56576
	and #3
	eor #3
	tax
	inx
	lda #0
	sta $fb
	sta $fc
druck3	dex
	beq druck4
	lda $fc
	clc
	adc #64
	sta $fc
	jmp druck3
druck4	lda vic+17
	and #32
	cmp #32
	beq druck41
	jmp zeichen
druck41	lda vic+24
	and #8
	cmp #8
	bne druck5
	lda $fc
	clc
	adc #32
	sta $fc
druck5	lda $fc
	clc
	adc #31
	sta reg4
	ldx #0
druck0	lda move,x
	sta 970,x
	inx
	cpx #25
	bne druck0
	ldx #0
	stx 2
laap	lda #27
	jsr print
	lda #"k"
	jsr print
	lda #128
	jsr print
	lda #2
	jsr print
	lda #0
	sta $fd
loop2	ldy #0
	ldx #3
	jsr 970
	lda #0
	sta $fe
loop3	clc
	lda $fe
	bne le2
	sec
le2	ror
	sta $fe
	lda #0
	sta z
	ldx #0
lei1	ldy #1
lei2	lda reg0,x
	and $fe
	beq lei3
	lda #1
lei3	sta h1
	sty h2
	dec h2
	lda h2
	stx h2
	clc
	adc h2
	adc h2
	sta h2
	inc h2
lei4	dec h2
	lda h2
	beq lei5
	lda h1
	asl
	sta h1
	jmp lei4
lei5	lda h1
	ora z
	sta z
	iny
	cpy #3
	bne lei2
	inx
	cpx #4
	bne lei1
	lda 317
	bne einf
	lda z
	eor #255
	sta z
einf	lda z
	jsr print
	ldx flag1
	beq lei6
	jmp multi
lei6	jsr print
	lda $fe
	cmp #1
	bne loop3
weite	lda $fb
	clc
	adc #8
	sta $fb
	lda $fc
	adc #0
	jmp weite1
	lda $c2
	sta $ad
	lda $c1
	sta $ac
	rts
	lda #$08
	sta $a3
	lda #$00
	sta $a4
	sta $a8
	sta $9b
	sta $a9
	rts
weite1	sta $fc
	inc $fd
	lda $fd
	cmp #40
	bcs weit
	jmp loop2
weit	lda #13
	jsr print
	inc 2
	lda 2
	cmp #1
	bne weit2
	dec $fc
	lda $fb
	sec
	sbc #60
	sta $fb
	lda $fc
	sbc #0
	sta $fc
	jmp weit3
weit2	lda #0
	sta 2
	lda $fb
	sec
	sbc #4
	sta $fb
	lda $fc
	sbc #0
	sta $fc
weit3	lda $fc
	cmp reg4
	bcc weit4
	lda $fb
	cmp #62
	bcs end
weit4	jmp laap
end	jsr clrch
	lda #1
	jsr close
	jmp ende
multi	inc reg1
	lda reg1
	and #1
	cmp #1
	bne mul2
	lda z
	sta reg2
	jmp loop3
mul1	.byte "p.u.1987"
mul2	lda reg2
	jsr print
	lda z
	jmp lei6
move	sei
	lda 1
	pha
	lda #52
	sta 1
le1	lda ($fb),y
	sta reg0,x
	dex
	iny
	cpy #4
	bne le1
	pla
	sta 1
	cli
	rts
zeichen	lda vic+24
	and #%11110000
	lsr
	lsr
	lsr
	lsr
	tax
	inx
zeich3	dex
	beq zeich4
	lda $fc
	clc
	adc #4
	sta $fc
	jmp zeich3
zeich4	lda $fc
	clc
	adc #3
	sta reg4
	ldy #0
	sty reg2
zeich5	ldx #0
zeich8	lda ($fb),y
	iny
	bne zeich6
	inc $fc
zeich6	and #127
	cmp #32
	bcs zeich7
	adc #64
zeich7	jsr print
	inx
	cpx #40
	bne zeich8
	lda #13
	jsr print
	inc reg2
	lda reg2
	cmp #25
	bne zeich5
	jsr clrch
	lda #1
	jsr close
	jmp ende
drucker	ldx #0
drucker1	lda das,x
	jsr print
	inx
	cpx #1
	bne drucker1
	rts
das	.byte 13
