;:sys36864
	;.opt oo
	*= $c000
vic	=$d000
tmp	=253
tmp2	=251
hires	=$2000
cint	=65409
reset	=64738
key	=198
rept	=650
load	=$ffd5
status	=157
open	=$ffc0
close	=$ffc3
chkout	=$ffc9
clrchn	=$ffcc
setnam	=$ffbd
setpar	=$ffba
dr	=4
return	=$aad7
bsout	=$ffd2
strout	=$ab1e
get	=65508
input	=65487
clrx	=59903
name	=820
clall	=$ffe7
setcr	=58732
zeile	=214
spalte	=211
space	=43839
	jmp titel
rebit	.byt $80,$40,$20,$10,8,4,2,1
mult	=*
	.word $2000,$2140,$2280,$23c0
	.word $2500,$2640,$2780,$28c0
	.word $2a00,$2b40,$2c80,$2dc0
	.word $2f00,$3040,$3180,$32c0
	.word $3400,$3540,$3680,$37c0
	.word $3900,$3a40,$3b80,$3cc0
	.word $3e00
xx	.word 0
yy	brk
x1	.word 0
y1	brk
x2	brk
y2	brk
anz	brk
xcoord	.word 0
x3	brk
y3	brk
kont	brk
qkont	.byt 1
wert	brk
modus	brk
mask	brk
zeig	brk
ormask	brk
prin	.byt 3
sek	.byt 1
zeichen	.byte " .+ijlx&fz%omw#*@"
predata	=*
	.byt %0000 	; space 0
	.byt %0000
	.byt %0000
	.byt %0000
	.byt %0000 	; .     1
	.byt %0100
	.byt %0000
	.byt %0000
	.byt %0000 	; +     2
	.byt %0100
	.byt %0010
	.byt %0000
	.byt %0000 	; i     3
	.byt %0111
	.byt %0000
	.byt %0000
	.byt %0000 	; j     4
	.byt %1000
	.byt %0111
	.byt %0000
	.byt %0000 	; l     5
	.byt %1111
	.byt %1000
	.byt %0000
	.byt %1101 	; x     6
	.byt %0010
	.byt %0101
	.byt %0000
	.byt %0110 	; &     7
	.byt %1001
	.byt %1010
	.byt %1000
	.byt %1111 	; f     8
	.byt %0101
	.byt %0001
	.byt %0001
	.byt %1000 	; z     9
	.byt %1101
	.byt %1011
	.byt %1001
	.byt %1101 	; %    10
	.byt %0101
	.byt %1010
	.byt %1011
	.byt %1110 	; o    11
	.byt %1001
	.byt %1001
	.byt %1111
	.byt %1111 	; m    12
	.byt %1111
	.byt %1001
	.byt %1001
	.byt %1001 	; w    13
	.byt %1011
	.byt %1111
	.byt %1111
	.byt %1110 	; #    14
	.byt %1111
	.byt %1111
	.byt %0111
	.byt %1110 	; *    15
	.byt %1111
	.byt %1111
	.byt %1111
	.byt %1111 	; @    16
	.byt %1111
	.byt %1111
	.byt %1111
hello	.byte "\x08\x9e\x11 letterprint 1.4   von nikolaus heusler"
	.byt 13
	.byte " \xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3\xa3        zwengauerweg 18\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d"
	.byte "\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x118000 muenchen 71"
	.byt 13
	.byte " \xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4"
	.byt 13
	.byte "\x11  a: grafik laden"
	brk
h2	.byt 13
	.byte "\x11  b: grafik zeigen"
	.byt 13
	.byte "\x11  c: invertieren"
	.byt 13
	.byte "\x11  d: preview / <shift>: drucken"
	.byt 13
	.byte "\x11  e: kontrast:"
	.byt 13
	.byte "\x11  f: drucker:"
	.byt 13
	.byte "\x11  g: sekundaeradresse:"
	.byt 13
	.byte "\x11  h: ende"
	.byt 13
	.byte " \xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4"
	.byt 13
	.byte "\x11 (c) nh 12.91"
	brk
namtxt	.byte " filename ? "
	brk
pritab	.word pri1,pri2,pri3,pri4,pri5
pri1	.byte "commodore mps"
	brk
pri2	.byte "ascii mit lf "
	brk
pri3	.byte "ascii ohne lf"
	brk
pri4	.byte "epson mit lf "
	brk
pri5	.byte "epson ohne lf"
	brk
whatab	.word wha1,wha2,wha3,wha4,wha5
wha1	.byt 8,13,15,0
wha2	.byt 13,0
wha3	.byt 13,10,0
wha4	.byt 13,0
wha5	.byt 13,10,0
sektab	.byt 0,1,1,1,1
randt	.byt 15,15,15,7,7
initeps	.byt 27,64,27,48,27,31,16,27,69,0
mentab	.word lade,look,invert,previ,kontrast,delpri
	.word sekund,reset
titel	jsr clall
	jsr cint
	lda #<hello
	ldy #>hello
	jsr strout
	lda #128
	sta rept
	lda #0
	sta vic+32
	lda #6
	sta vic+33
	lda #<h2
	ldy #>h2
	jsr strout
fur	jsr kontout
	jsr outpri
	lda #0
	sta key
men	jsr get
	cmp #"\x13"
	beq home
	cmp #"D"
	beq druck
	cmp #"a"
	bcc men
	cmp #"i"
	bcs men
	sbc #"@"
	asl
	tay
	lda mentab,y
	sta tmp
	lda mentab+1,y
	sta tmp+1
	jsr gogo
	jmp titel
home	lda #0
	sta kont
	lda #1
	sta qkont
	bne fur
druck	jsr print
	jmp titel
gogo	jmp (tmp)
show	lda #59
	sta vic+17
	lda #29
	sta vic+24
	ldx #4
	stx tmp+1
	ldy #0
	sty tmp
	lda #1
faerb	sta (tmp),y
	iny
	bne faerb
	inc tmp+1
	dex
	bne faerb
	rts
invert	jsr show
	ldx #32
	stx tmp+1
	ldy #0
	sty tmp
inv	lda (tmp),y
	eor #-1
	sta (tmp),y
	iny
	bne inv
	inc tmp+1
	dex
	bne inv
	jmp waitkey
hide	ldy #0
	sty tmp
	sty tmp2
	ldx #32
	stx tmp+1
	lda #64
	sta tmp2+1
hi	lda (tmp),y
	sta (tmp2),y
	iny
	bne hi
	inc tmp+1
	inc tmp2+1
	dex
	bne hi
	rts
rueck	ldy #0
	sty tmp
	sty tmp2
	ldx #32
	stx tmp+1
	lda #64
	sta tmp2+1
ru	lda (tmp2),y
	sta (tmp),y
	iny
	bne ru
	inc tmp+1
	inc tmp2+1
	dex
	bne ru
	rts
look	jsr show
waitkey	lda #0
	sta key
wk	cmp key
	beq wk
	dec key
	rts
reihe	lda #<316
	sta xx
	lda #>316
	sta xx+1
	lda #79
	sta x3
r5	lda modus
	bne r6
	ldy prin
	ldx randt,y
rand	jsr space
	dex
	bne rand
r6	lda #0
	sta yy
	lda #49
	sta y3
r1	lda #0
	sta anz
	lda #3
	sta y2
	lda yy
	sta y1
	jsr get
	cmp #"\x03"
	bne r3
	rts
r3	lda #3
	sta x2
	lda xx
	sta x1
	lda xx+1
	sta x1+1
r4	ldx y1
	lda x1
	sta xcoord
	lda x1+1
	sta xcoord+1
	jsr point
	tax
	and (tmp),y
	beq aus
	inc anz
aus	txa
	eor (tmp),y
	sta (tmp),y
	inc x1
	bne n1
	inc x1+1
n1	dec x2
	bpl r4
	inc y1
	dec y2
	bpl r3
	lda anz
	clc
	adc kont
	bpl posit
	lda #0
posit	cmp #16
	bcc kl16
	lda #16
kl16	tax
	lda modus
	beq hard
	jsr soft
	jmp beide
hard	lda zeichen,x
	jsr bsout
beide	lda yy
	clc
	adc #4
	sta yy
	dec y3
	bpl qr1
	lda modus
	bne nrt
	lda prin
	asl
	tax
	lda whatab,x
	ldy whatab+1,x
	jsr strout
nrt	lda xx
	sec
	sbc #4
	sta xx
	lda xx+1
	sbc #0
	sta xx+1
	dec x3
	bmi nr5
	jmp r5
nr5	rts
qr1	jmp r1
soft	txa
	asl
	asl
	sta zeig
	lda #3
	sta y2
	ldx yy
	lda xx
	sta xcoord
	lda xx+1
	sta xcoord+1
	jsr point
	cmp #10
	bcc low
	lda #%1111
	.byt $2c
low	lda #%11110000
	sta mask
s5	ldx zeig
	inc zeig
	lda predata,x
	bit mask
	bmi noshift
	asl
	asl
	asl
	asl
noshift	sta ormask
	lda (tmp),y
	and mask
	ora ormask
	sta (tmp),y
	iny
	dec y2
	bpl s5
	rts
point	txa
	lsr
	lsr
	lsr
	asl
	tay
	lda mult+1,y
	sta tmp+1
	txa
	and #7
	clc
	adc mult,y
	sta tmp
	lda xcoord
	and #$f8
	adc tmp
	sta tmp
	lda tmp+1
	adc xcoord+1
	sta tmp+1
	lda xcoord
	and #7
	tax
	lda rebit,x
	ldy #0
noeps	rts
auf	lda #0
	jsr setnam
	ldy sek
	lda #dr
	tax
	jsr setpar
	jsr open
	ldx #dr
	jsr chkout
	lda prin
	cmp #3
	bcc noeps
	lda #<initeps
	ldy #>initeps
	jmp strout
lade	jsr return
	ldx #23
	jsr clrx
	lda #23
	sta zeile
	jsr setcr
	lda #<namtxt
	ldy #>namtxt
	jsr strout
	ldx #0
	stx status
getname	jsr input
	cmp #13
	beq ret
	sta name,x
	inx
	cpx #16
	bcc getname
ret	txa
	bne warwas
	rts
warwas	txa
	ldx #<name
	ldy #>name
	jsr setnam
	jsr show
	ldx #8
	ldy #0
	jsr setpar
	lda #0
	tax
	ldy #32
	jsr load
	jmp waitkey
print	lda #0
	sta modus
	jsr hide
	jsr show
	jsr auf
	jsr reihe
	jsr rueck
	lda prin
	cmp #3
	bcc nok
	lda #27
	jsr bsout
	lda #"@"
	jsr bsout
nok	lda #dr
	jmp close
previ	lda #1
	sta modus
	jsr hide
	jsr show
	jsr reihe
	jsr waitkey
	jmp rueck
kontrast	lda kont
	clc
	adc qkont
	sta kont
	cmp #-16
	beq wende
	cmp #16
	bne nowende
wende	lda qkont
	eor #-2
	sta qkont
nowende	pla
	pla
	jmp fur
kontout	lda #15
	sta spalte
	lda #14
	sta zeile
	jsr setcr
	lda kont
	bne da
	lda #"0"
	jsr bsout
	bne cont
da	sta wert
	bpl plus
	lda #-1
	eor wert
	clc
	adc #1
	sta wert
	lda #"-"
	.byt $2c
plus	lda #"+"
	jsr bsout
	lda wert
	cmp #10
	bcc kl10
	lda #"1"
	jsr bsout
	lda wert
	sec
	sbc #10
	sta wert
kl10	lda wert
	ora #"0"
	jsr bsout
cont	jsr space
	jmp space
delpri	ldx prin
	inx
	cpx #5
	bcc kl3
	ldx #0
kl3	stx prin
	lda sektab,x
	sta sek
	jmp nowende
outpri	lda #14
	sta spalte
	lda #16
	sta zeile
	jsr setcr
	lda prin
	asl
	tax
	lda pritab,x
	ldy pritab+1,x
	jsr strout
	lda #23
	sta spalte
	lda #18
	sta zeile
	jsr setcr
	ldx sek
	lda #0
	jmp $bdcd
sekund	ldx sek
	inx
	txa
	and #7
	sta sek
	jmp nowende
