;:poke56,11000/256:clr
;:sys36864
	;.opt oo
	*= 11000
feld	=15000
numb	=665
ss	=$3ab7
tmp	=166
xmk	=170
ymk	=8
zei	=181
mea	=15046
mem2	=51776
mem1	=40960
fld	=2
buf	=823
bre	=156
spa	=151
xxmk	=820
dp	=195
lg	=196
an	=191
typ1	=189
typ2	=190
flp1	=704
flp2	=flp1+5
	jmp start
t1	.byte "\x0e\x08\x12\x93Tabula-Print Vers.1     fuer Tabula Rasa"
	.byte "von Nikolaus Heusler            nh 11.91"
	.byt 13,13
	.byte "Bitte Kenndaten eingeben!"
	.byt 13,13
	.byt 13
	.byte " Dateiname        ? tr/"
	brk
name	.byte "tr/             "
t2	.byt 13
	.byte "\x11 linker Druckrand ? 5\x9d"
	brk
lira	.byte "   "
lr	=247
t3	.byt 13
	.byte "\x11 von Zeile        ? 1\x9d"
	brk
z1	=248
t4	.byt 13
	.byte "\x11 bis Zeile        ? 16 \x9d\x9d\x9d"
	brk
z2	=249
t5	.byt 13
	.byte "\x11 von Spalte       ? "
	brk
s1	=250
t6	.byt 13
	.byte "\x11 bis Spalte       ? "
	brk
s2	=251
t7	.byt 13
	.byte "\x11 Schmalschrift    ? [j/n]\x9d\x9d\x9d\x9d\x9d"
	brk
sch	=252
t8	.byt 13
	.byte "\x11 Formeln/Werte    ? [f/w]\x9d\x9d\x9d\x9d\x9d"
	brk
fw	=253
not	.byt 13
	.byte "\x12Bitte Drucker bereitmachen, <Taste>"
	brk
pt1	.byt 13
	.byt 13
	.byte "Tabula Rasa C64   von Nikolaus H"
	.byte "eusler   (c) 1991   "
	brk
uml1	.byt $a1,$a2,$a3,$a4,$a5,$a6,$ae,$40,$ff,$7b,$7d
uml2	.byt $84,$8e,$94,$99,$81,$9a,$e1,$63,$e3,$5b,$5d
print	stx xxmk
	cmp #13
	beq return
	pha
	inc numb
	lda sch
	bne eng
	inc numb
eng	lda numb
	cmp #142
	bcc druck
	lda #200
	sta numb
	pla
	rts
druck	pla
	cmp #$41
	bcc gut
	cmp #$5f
	bcs evtl
	ora #32
	bne gut
evtl	cmp #$c1
	bcc gut
	cmp #$de
	bcs gut
	and #$7f
gut	ldx #10
suchuml	cmp uml1,x
	beq gotuml
	dex
	bpl suchuml
	bmi nouml
gotuml	lda uml2,x
nouml	jsr $ffd2
	ldx xxmk
	rts
return	lda #13
	jsr $ffd2
	lda #0
	sta numb
	ldx lr
	beq nora
	lda #32
rand	jsr print
	dex
	bne rand
nora	ldx xxmk
	lda #13
	rts
bar	lda $3ab7
	bne bbar
	rts
bbar	lda #$7c
	bne print
noprt	jsr $ffcc
	lda #<not
	ldy #>not
	jsr $ab1e
	lda #0
	sta 198
wak	cmp 198
	beq wak
	sta 198
	jmp led
calc	sei
	lda #48
	sta 1
	lda mem2,x
	sta tmp
	lda mem2+208,x
	sta tmp+1
	tya
	asl
	tay
	lda (tmp),y
	sta fld
	iny
	lda (tmp),y
	sta fld+1
	ldy #55
	sty 1
	cli
	tay
	rts
xout	stx $63
	lda #0
	sta $62
	ldx #144
	sec
	jsr $bc49
	jsr $bddf
	ldx #0
x0	lda $100,x
	beq x1
	jsr print
	inx
	bne x0
x1	rts
start	lda #0
	sta 157
	lda #<t1
	ldy #>t1
	jsr $ab1e
	ldx #3
getnam	jsr $ffcf
	cmp #13
	beq cr
	sta name,x
	inx
	cpx #16
	bcc getnam
cr	txa
	ldx #<name
	ldy #>name
	jsr $ffbd
err1	lda #<t2
	ldy #>t2
	jsr $ab1e
	ldx #0
	stx lr
getlin	jsr $ffcf
	cmp #13
	beq cr2
	pha
	lda lr
	asl
	sta lr
	asl
	asl
	adc lr
	sta lr
	pla
	and #15
	cmp #10
	bcs err1
	adc lr
	sta lr
	inx
	cpx #3
	bcc getlin
cr2	dec lr
	lda lr
	cmp #70
	bcs err1
err2	lda #<t3
	ldy #>t3
	jsr $ab1e
	ldx #0
	stx z1
getz1	jsr $ffcf
	cmp #13
	beq cr3
	pha
	lda z1
	asl
	sta z1
	asl
	asl
	adc z1
	sta z1
	pla
	and #15
	cmp #10
	bcs err2
	adc z1
	sta z1
	inx
	cpx #3
	bcc getz1
cr3	lda z1
	beq err2
	cmp #209
	bcs err2
err3	lda #<t4
	ldy #>t4
	jsr $ab1e
	ldx #0
	stx z2
getz2	jsr $ffcf
	cmp #13
	beq cr4
	pha
	lda z2
	asl
	sta z2
	asl
	asl
	adc z2
	sta z2
	pla
	and #15
	cmp #10
	bcs err3
	adc z2
	sta z2
	inx
	cpx #3
	bcc getz2
cr4	lda z2
	cmp #209
	bcs err3
	cmp z1
	bcc err2
	lda #<t5
	ldy #>t5
	jsr $ab1e
err4	jsr 65508
	cmp #"a"
	bcc err4
	cmp #"z"+1
	bcs err4
	sta s2
	jsr $ffd2
	sbc #"@"-1
	sta s1
	lda #<t6
	ldy #>t6
	jsr $ab1e
err5	jsr 65508
	cmp s2
	bcc err5
	cmp #"z"+1
	bcs err5
	jsr $ffd2
	sbc #"@"-1
	sta s2
	lda #<t7
	ldy #>t7
	jsr $ab1e
err6	jsr 65508
	tax
	cmp #"j"
	beq ok
	cmp #"n"
	bne err6
	ldx #0
ok	stx sch
	jsr $ffd2
	ldx #4
sp	jsr $ab3f
	dex
	bne sp
	lda #<t8
	ldy #>t8
	jsr $ab1e
err7	jsr 65508
	tax
	cmp #"f"
	beq ok2
	cmp #"w"
	bne err7
	ldx #0
ok2	stx fw
	jsr $ffd2
	ldx #4
sp2	jsr $ab3f
	dex
	bne sp2
	jsr $aad7
	ldx #8
	ldy #0
	jsr $ffba
	lda #0
	ldx #<feld
	ldy #>feld
	jsr $ffd5
	bcc led
	jmp $e0f9
led	lda #4
	jsr $ffc3
	ldx #4
	ldy #1
	lda #4
	jsr $ffba
	lda #0
	jsr $ffbd
	jsr $ffc0
	ldx #4
	jsr $ffc9
	lda 144
	beq dok
	jmp noprt
dok	lda sch
	beq breit
	lda #15
	jsr $ffd2
breit	lda #27
	jsr $ffd2
	lda #"2"
	jsr $ffd2
	ldx #0
pt1o	lda pt1,x
	beq pt1i
	jsr print
	inx
	bne pt1o
pt1i	ldx #0
dato	lda $3ab8,x
	beq dati
	jsr print
	inx
	cpx #15
	bcc dato
dati	jsr return
	lda #"-"
	ldx #64
strich	jsr print
	dex
	bpl strich
	jsr return
	jsr print
	lda #"#"
	jsr print
	jsr print
	jsr print
	jsr bar
	ldx s1
	dex
ou3	inx
	lda $3a97,x
	tay
	clc
	adc #1
	lsr
	sta tmp
ou4	dec tmp
	bne ou5
	txa
	ora #192
	.byt $2c
ou5	lda #32
	stx xmk
	sty ymk
	jsr print
	ldy ymk
	ldx xmk
	dey
	bne ou4
	jsr bar
	ldx xmk
	cpx s2
	bcc ou3
	jsr return
	lda #<mem1
	ldy #>mem1
	sta tmp
	sty tmp+1
	ldx #208
	ldy #0
nw2	lda tmp
	sta mem2,y
	lda tmp+1
	sta mem2+208,y
	iny
	lda tmp
	clc
	adc #52
	sta tmp
	bcc nw6
	inc tmp+1
nw6	dex
	bne nw2
	ldx #0
vd1	lda mem2,x
	sta tmp
	lda mem2+208,x
	sta tmp+1
	ldy #51
	lda #0
vd2	sta (tmp),y
	dey
	bpl vd2
	inx
	cpx #208
	bcc vd1
	lda #<mea
	ldy #>mea
	sta zei
	sty zei+1
vd3	ldy #0
	lda (zei),y
	beq zeile
vd4	tax
	dex
	lda mem2,x
	sta tmp
	lda mem2+208,x
	sta tmp+1
	iny
	lda (zei),y
	sec
	sbc #1
	asl
	tay
	lda zei
	sta (tmp),y
	iny
	lda zei+1
	sta (tmp),y
	ldy #8
vd5	iny
	lda (zei),y
	bne vd5
	iny
	tya
	clc
	adc zei
	sta zei
	bcc vd3
	inc zei+1
	bne vd3
zeile	ldx z1
	cpx #100
	bcs pot
	lda #32
	jsr print
	cpx #10
	bcs pot
	jsr print
pot	jsr xout
	jsr bar
	ldy s1
spalt	sty spa
	dey
	lda 15000,y
	sta bre
	ldx z1
	dex
	jsr calc
	bne noua
	jmp oua
noua	lda fw
	bne oug
	ldy #7
	lda (fld),y
	bmi ouf
oug	ldy #8
	ldx #-1
sa1	inx
	iny
	lda (fld),y
	sta buf,x
	bne sa1
	beq oui
ouf	jsr werts
	ldx #-1
ouj	inx
oui	cpx bre
	bcs ouk
	lda buf,x
	bne ouj
	ldy #8
	lda (fld),y
	and #%110000
	beq oun
	cmp #%10000
	beq oul
	lda #32
oum	sta buf,x
	inx
	cpx bre
	bcc oum
	bcs ouk
oul	ldy bre
ouo	lda buf,x
	sta buf,y
	dey
	dex
	bpl ouo
	lda #32
oup	sta buf,y
	dey
	bpl oup
	bmi ouk
oun	txa
	clc
	adc bre
	lsr
	tay
	pha
ouq	lda buf,x
	sta buf,y
	dey
	dex
	bpl ouq
	lda #32
our	sta buf,y
	dey
	bpl our
	pla
	tay
	dey
	lda #32
ous	iny
	cpy bre
	bcs ouk
	sta buf,y
	bcc ous
ouk	ldx #0
ouu	lda buf,x
	jsr print
	inx
	cpx bre
	bcc ouu
	bcs ouh
oua	lda #32
	ldx bre
oub	jsr print
	dex
	bne oub
ouh	jsr bar
	ldy spa
	cpy s2
	bcc qou9
	lda z1
	cmp z2
	bcs ende
	inc z1
	jsr return
	jmp zeile
qou9	iny
	jmp spalt
ende	jsr return
	jsr print
	jsr $ffcc
	lda #4
	jmp $ffc3
werts	and #64
	bne ws1
	lda #"?"
	sta buf
	lda #0
	sta buf+1
	rts
ws1	ldy #7
	lda (fld),y
	sta typ1
	iny
	lda (fld),y
	and #192
	sta typ2
	lda fld
	clc
	adc #2
	tax
	lda fld+1
	adc #0
	tay
	txa
	jsr $bba2
	lda typ2
	bne ws4
	jsr $bccc
	jmp ws3
ws4	cmp #64
	beq ws3
	ldx #<flp1
	ldy #>flp1
	jsr $bbd4
	lda typ1
	and #31
	sta an
	jsr $bc3c
	lda #$f9
	ldy #$ba
	jsr $ba8c
	lda $61
	jsr $bf7b
	ldx #<flp2
	ldy #>flp2
	jsr $bbd4
	lda #<flp1
	ldy #>flp1
	jsr $ba28
	jsr $b849
	jsr $bccc
	jsr $bc0c
	lda #<flp2
	ldy #>flp2
	jsr $bba2
	jsr $bb12
ws3	ldy #0
	bit $66
	bpl ws6
	iny
ws6	jsr $bddf
	ldx #-1
	lda typ2
	cmp #64
	beq ws55
wsx	inx
	lda $100,x
	beq wsy
	cmp #"e"
	bne wsx
	beq ws55
wsy	ldx #-1
ws7	inx
	lda $100,x
	beq ws8
	cmp #"."
	bne ws7
	beq ws9
ws55	jmp ws00
ws8	sta $101,x
	lda #"."
	sta $100,x
ws9	stx dp
	lda typ1
	and #32
	beq wsa
	lda #","
	sta $100,x
wsa	ldy #-1
wsb	inx
	iny
	lda $100,x
	bne wsb
wbc	cpy an
	beq wbd
	lda #"0"
	sta $100,x
	iny
	inx
	bne wbc
wbd	lda #0
	sta $100,x
	ldx #-1
wbe	inx
	lda $100,x
	bne wbe
	stx lg
	lda dp
	beq wbg
	cmp #1
	bne wbf
	lda $100
	cmp #"-"
	bne wbf
wbg	inc lg
	ldx lg
wbi	lda !$ff,x
	sta $100,x
	dex
	cpx dp
	bne wbi
wbj	lda #"0"
	sta $100,x
	inc dp
wbf	lda typ1
	and #32
	beq ws0
	lda #3
	sta tmp
	ldy dp
nu2	dey
	bmi ws0
	dec tmp
	bpl nu2
	lda #3
	sta tmp
	iny
	sty tmp+1
	ldy lg
nu4	lda $100,y
	sta $101,y
	dey
	cpy tmp+1
	bcs nu4
	inc lg
	iny
	lda #"."
	sta $100,y
	bne nu2
ws0	lda an
	bne ws00
	ldx lg
	lda !$ff,x
	cmp #"."
	beq ws000
	cmp #","
	bne ws00
ws000	lda #0
	sta !$ff,x
ws00	ldx #-1
ws5	inx
	lda $100,x
	sta buf,x
	bne ws5
	rts
