plnum0	LDA #0
	STA &14
	JMP pdec
plnum5	LDA #1
	STA &14
pdec	LDA #0
	STA &37
	LDY #8
pdecl1	LDX #&30
pdecl2	LDA &2A
	SEC
	SBC decnum,Y
	PHA
	LDA &2B
	SBC decnum+1,Y
	BCC pdeco1
	STA &2B
	PLA
	STA &2A
	INX
	BNE pdecl2
pdeco1	PLA
	TXA
	CMP #&30
	BNE pdeco2
	BIT &37
	BMI pdeco2
	LDA &14
	BEQ pdeco3
	CPY #0
	BEQ pdeco3
	LDA #32
	JSR &FFEE
	JMP pdeco3
pdeco2	DEC &37
	JSR &FFEE
pdeco3	DEY
	DEY
	BPL pdecl1
	BIT &37
	BMI pdeco4
	LDA #&30
	JSR &FFEE
pdeco4	RTS
decnum	DW 1
	DW 10
	DW 100
	DW 1000
	DW 10000

fpBA	LDA &2E
	STA &3B
	LDA &2F
	STA &3C
	LDA &30
	STA &3D
	LDA &31
	STA &3E
	LDA &32
	STA &3F
	LDA &33
	STA &40
	LDA &34
	STA &41
	LDA &35
	STA &42
	RTS

cfin	JSR st4B
	LDY #4
	LDA (&4B),Y
	STA &34
	DEY
	LDA (&4B),Y
	STA &33
	DEY
	LDA (&4B),Y
	STA &32
	DEY
	LDA (&4B),Y
	STA &2E
	DEY
	LDA (&4B),Y
	STA &30
	STY &34
	STY &2F
	ORA &2E
	ORA &32
	ORA &33
	ORA &34
	BEQ fpinov
	LDA &2E
	ORA #&80
fpinov	STA &31
	RTS

fpinB	LDY #4
	LDA (&4B),Y
	STA &41
	DEY
	LDA (&4B),Y
	STA &40
	DEY
	LDA (&4B),Y
	STA &3F
	DEY
	LDA (&4B),Y
	STA &3B
	DEY
	LDA (&4B),Y
	STA &3D
	STY &42
	STY &3C
	ORA &3B
	ORA &3F
	ORA &40
	ORA &41
	BEQ fpinoB
	LDA &3B
	ORA #&80
fpinoB	STA &3E
	RTS

normal	LDA &31
	BMI enrml2
	ORA &32
	ORA &33
	ORA &34
	ORA &35
	BEQ enrml1
	LDA &30
nrml1	LDY &31
	BMI enrml2
	BNE nrmlo1
	LDX &32
	STX &31
	LDX &33
	STX &32
	LDX &34
	STX &33
	LDX &35
	STX &34
	STY &35
	SEC
	SBC #8
	STA &30
	BCS nrml1
	DEC &2F
	BCC nrml1
nrml2	LDY &31
	BMI enrml2
nrmlo1	ASL &35
	ROL &34
	ROL &33
	ROL &32
	ROL &31
	SBC #0
	STA &30
	BCS nrml2
	DEC &2F
	BCC nrml2
enrml1	STA &2E
	STA &2F
	STA &30
enrml2	RTS

admant	ADC &35
	STA &35
	BCC eadmnt
	INC &34
	BNE eadmnt
	INC &33
	BNE eadmnt
	INC &32
	BNE eadmnt
	INC &31
	BNE eadmnt
	BCC eadmnt
	ROR &31
	ROR &32
	ROR &33
	ROR &34
	ROR &35
	INC &30
	BNE eadmnt
	INC &2F
eadmnt	RTS

cfout	JSR st4B
	LDY #0
	LDA &30
	STA (&4B),Y
	INY
	LDA &2E
	AND #&80
	STA &2E
	LDA &31
	AND #&7F
	ORA &2E
	STA (&4B),Y
	LDA &32
	INY
	STA (&4B),Y
	INY
	LDA &33
	STA (&4B),Y
	INY
	LDA &34
	STA (&4B),Y
	RTS

settop	LDA &18
	STA &13
	LDY #0
	STY &12
	INY
sttp1	DEY
	LDA (&12),Y
	CMP #13
	BNE badtop
	INY
	LDA (&12),Y
	BMI endtop
	LDY #3
	LDA (&12),Y
	BEQ badtop
	CLC
	JSR sttp2
	BNE sttp1
endtop	INY
	CLC
	TYA
sttp2	ADC &12
	STA &12
	BCC sttp3
	INC &13
sttp3	LDY #1
	RTS
badtop	JSR &FFE7
	JSR pflmss
	ASC "Bad program"
	DW 13
clbimm	JSR rstzp
	LDX #Bimmed
	JMP clbROM
rsvgot	LDA &18
	STA &C
	LDY #0
	STY &B
	INY
	LDA (&B),Y
	BMI rsv3
rsv1	LDY #4
rsv2	LDA (&B),Y
	CMP #&8D
	BEQ rsv8
	INY
	CMP #13
	BNE rsv2
	LDA (&B),Y
	BMI rsv3
	LDY #3
	LDA (&B),Y
	CLC
	ADC &B
	STA &B
	BCC rsv1
	INC &C
	BCS rsv1
rsv3	JMP clBimm
rsv8	JSR rsv15
	JSR rsv14
rsv4	LDY #0
	LDA (&37),Y
	BMI rsv7
	LDA (&3B),Y
	INY
	CMP &2B
	BNE rsv6
	LDA (&3B),Y
	CMP &2A
	BNE rsv6
	LDA (&37),Y
	STA &3D
	DEY
	LDA (&37),Y
	STA &3E
	LDY &A
	DEY
	LDA &B
	STA &37
	LDA &C
	STA &38
	JSR rsv11
rsv5	LDY &A
	BNE rsv2
rsv6	JSR rsv9
	LDA &3B
	ADC #2
	STA &3B
	BCC rsv4
	INC &3C
	BCS rsv4
rsv7	TYA
	PHA
	JSR pflmss
	ASC "Failed at "
	BRK
	PLA
	TAY
	INY
	LDA (&B),Y
	STA &2B
	INY
	LDA (&B),Y
	STA &2A
	JSR plnum0
	JSR &FFE7
	JMP rsv5
rsv9	INY
	LDA (&37),Y
	ADC &37
	STA &37
	BCC rsv10
	INC &38
	CLC
rsv10	RTS
rsv11	LDA &3E
	ORA #&40
	STA (&37),Y
	DEY
	LDA &3D
	AND #&3F
	ORA #&40
	STA (&37),Y
	DEY
	LDA &3D
	AND #&C0
	STA &3D
	LDA &3E
	AND #&C0
	LSR A
	LSR A
	ORA &3D
	LSR A
	LSR A
	EOR #&54
	STA (&37),Y
	JSR rsv12
	JSR rsv12
	JSR rsv12
	LDY #0
	CLC
	RTS
rsv12	INC &37
	BNE rsv13
	INC &38
rsv13	RTS
rsv14	LDA &12
	STA &3B
	LDA &13
	STA &3C
	LDA &18
	STA &38
	LDA #1
	STA &37
	RTS
rsv15	INY
	LDA (&B),Y
	ASL A
	ASL A
	TAX
	AND #&C0
	INY
	EOR (&B),Y
	STA &2A
	TXA
	ASL A
	ASL A
	INY
	EOR (&B),Y
	STA &2B
	INY
	STY &A
	SEC
	RTS
cfmult	JSR st4B
	JSR mult2
norovr	JSR normal
ovrflw	LDA &35
	CMP #&80
	BCC mltv1B
	BEQ mltov1
	LDA #&FF
	JSR admant
	JMP mltv1B
mltov1	LDA &34
	ORA #1
	STA &34
mltv1B	LDA #0
	STA &35
	LDA &2F
	BEQ emult
       BPL cltobg
fp0	LDA #0
	STA &2E
	STA &2F
	STA &30
	STA &31
	STA &32
	STA &33
	STA &34
	STA &35
	RTS
cltobg	CBRK
	DFB 20
	ASC "Too big"
	BRK
emult	RTS
mult2	JSR testA
	BEQ emult
	JSR fpinB
	BNE multo2
	JMP fp0
multo2	CLC
	LDA &30
	ADC &3D
	BCC multo3
	INC &2F
	CLC
multo3	SBC #&7F
	STA &30
	BCS multo4
	DEC &2F
multo4	LDX #5
	LDY #0
multl1	LDA &30,X
	STA &42,X
	STY &30,X
	DEX
	BNE multl1
	LDA &2E
	EOR &3B
	STA &2E
	LDY #&20
multl2	LSR &3E
	ROR &3F
	ROR &40
	ROR &41
	ROR &42
	ASL &46
	ROL &45
	ROL &44
	ROL &43
	BCC multo5
	CLC
	JSR abmant
multo5	DEY
	BNE multl2
	RTS
abmant
	LDA &35
	ADC &42
	STA &35
	LDA &34
	ADC &41
	STA &34
	LDA &33
	ADC &40
	STA &33
	LDA &32
	ADC &3F
	STA &32
	LDA &31
	ADC &3E
	STA &31
	RTS

clwend	JSR cendA
clwnd2	LDA #0
	LDY #whlpnt
	STA (wkpnt),Y
	RTS
while	LDY #whlpnt
	LDA (wkpnt),Y
	CMP #&1C
	BCS tomywh
	ADC #whlstk
	TAY
	LDA &A
	CLC
	ADC &B
	STA &19
	STA (wkpnt),Y
	PHP
	TYA
	CLC
	ADC #&1C
	TAY
	LDA &C
	PLP
	ADC #0
	STA &1A
	STA (wkpnt),Y
	LDA #0
	STA &1B
	LDY #whlpnt
	LDA (wkpnt),Y
	CLC
	ADC #1
	STA (wkpnt),Y
while1	JSR gtintB
	LDA &2A
	ORA &2B
	ORA &2C
	ORA &2D
	BNE whltru
	LDA &1B
	CLC
	ADC &19
	STA &B
	LDA &1A
	ADC #0
	STA &C
	LDA #0
	STA &A
srcwnd	JSR fndwnd
	INC &A
	LDY #whlpnt
	LDA (wkpnt),Y
	BEQ nowhle
	SEC
	SBC #1
	STA (wkpnt),Y
	JMP cendA
tomywh	CBRK
	DFB 58
	ASC "Too many WHILEs"
	BRK
wend	LDY #whlpnt
	LDA (wkpnt),Y
	BEQ nowhle
	CLC
	ADC #whlstk-1
	TAY
	LDA (wkpnt),Y
	STA &19
	TYA
	CLC
	ADC #&1C
	TAY
	LDA (wkpnt),Y
	STA &1A
	LDA #0
	STA &1B
	JMP while1
whltru	LDA &1B
	STA &A
	LDA &19
	STA &B
	LDA &1A
	STA &C
	JMP cendA
fndwnd	JSR whlget
	CMP #87
	BNE fndwnd
	JSR whlget
	CMP #69
	BNE fndwhl
	JSR whlget
	CMP #78
	BNE fndwnd
	JSR whlget
	CMP #68
	BNE fndwnd
	RTS
nowhle	CBRK
	DFB 59
	ASC "No WHILE"
	BRK
fndwhl	CMP #72
	BNE fndwnd
	JSR whlget
	CMP #73
	BNE fndwnd
	JSR whlget
	CMP #76
	BNE fndwnd
	JSR whlget
	CMP #69
	BNE fndwnd
	JSR fndwnd
	JMP fndwnd
whlget	JSR whgtbt
	CMP #13
	BEQ whnewl
	RTS
whnewl	JSR whgtbt
	BMI nowend
	JSR whgtbt
	JSR whgtbt
whgtbt	LDA &B
	CLC
	ADC #1
	STA &B
	LDA &C
	ADC #0
	STA &C
	LDY #0
	LDA (&B),Y
	RTS
nowend	CBRK
	DFB 60
	ASC "No WEND"
	BRK

comcli	JSR gtstrA
	JSR cendB
	LDX #0
	LDY #6
	JMP &FFF7

vrsion	LDA &F6
	PHA
	LDA &F7
	PHA
	LDA #128
	STA &F7
	LDA #21
	STA &F6
	LDY #74
	LDA (&50),Y
	TAY
	JSR &FFB9
	TAY
	PLA
	STA &F7
	PLA
	STA &F6
	TYA
	RTS

cpyA_B	LDA &3B
	STA &2E
	LDA &3C
	STA &2F
	LDA &3D
	STA &30
	LDA &3E
	STA &31
	LDA &3F
	STA &32
	LDA &40
	STA &33
	LDA &41
	STA &34
	LDA &42
	STA &35
eplus	RTS
cfplus	JSR st4B
	JMP fpplus
cfmins	JSR st4B
	JSR negA
fpplus	JSR fpinB
	BEQ eplus
	JSR fplus2
	JMP ovrflw
fplus2	JSR testA
	BEQ cpyA_B
	LDY #0
	SEC
	LDA &30
	SBC &3D
	BEQ fplsl9
	BCC fplsl4
	CMP #&25
	BCS eplus
	PHA
	AND #&38
	BEQ fplsl2
	LSR A
	LSR A
	LSR A
	TAX
fplsl1	LDA &41
	STA &42
	LDA &40
	STA &41
	LDA &3F
	STA &40
	LDA &3E
	STA &3F
	STY &3E
	DEX
	BNE fplsl1
fplsl2	PLA
	AND #7
	BEQ fplsl9
	TAX
fplsl3	LSR &3E
	ROR &3F
	ROR &40
	ROR &41
	ROR &42
	DEX
	BNE fplsl3
	BEQ fplsl9
fplsl4	SEC
	LDA &3D
	SBC &30
	CMP #&25
	BCC *+5
	JMP cpyA_B
	PHA
	AND #&38
	BEQ fplsl6
	LSR A
	LSR A
	LSR A
	TAX
fplsl5	LDA &34
	STA &35
	LDA &33
	STA &34
	LDA &32
	STA &33
	LDA &31
	STA &32
	STY &31
	DEX
	BNE fplsl5
fplsl6	PLA
	AND #7
	BEQ fplsl8
	TAX
fplsl7	LSR &31
	ROR &32
	ROR &33
	ROR &34
	ROR &35
	DEX
	BNE fplsl7
fplsl8	LDA &3D
	STA &30
fplsl9	LDA &2E
	EOR &3B
	BPL fpls11
	LDA &31
	CMP &3E
	BNE fpls10
	LDA &32
	CMP &3F
	BNE fpls10
	LDA &33
	CMP &40
	BNE fpls10
	LDA &34
	CMP &41
	BNE fpls10
	LDA &35
	CMP &42
	BNE fpls10
	JMP fp0
fpls10	BCS fpls13
	SEC
	LDA &42
	SBC &35
	STA &35
	LDA &41
	SBC &34
	STA &34
	LDA &40
	SBC &33
	STA &33
	LDA &3F
	SBC &32
	STA &32
	LDA &3E
	SBC &31
	STA &31
	LDA &3B
	STA &2E
	JMP normal
fpls11	CLC
	JSR abmant
	BCC fpls12
	ROR &31
	ROR &32
	ROR &33
	ROR &34
	ROR &35
	INC &30
	BNE fpls12
	INC &2F
fpls12	RTS
fpls13	SEC
	LDA &35
	SBC &42
	STA &35
	LDA &34
	SBC &41
	STA &34
	LDA &33
	SBC &40
	STA &33
	LDA &32
	SBC &3F
	STA &32
	LDA &31
	SBC &3E
	STA &31
	JMP normal

citofp	LDX #0
	STX &35
	STX &2F
	LDA &2D
	BPL cnvi1
	JSR cnvi2
	LDX #&FF
cnvi1	STX &2E
	LDA &2A
	STA &34
	LDA &2B
	STA &33
	LDA &2C
	STA &32
	LDA &2D
	STA &31
	LDA #&A0
	STA &30
	JMP normal
cnvi2	SEC
	LDA #0
	TAY
	SBC &2A
	STA &2A
	TYA
	SBC &2B
	STA &2B
	TYA
	SBC &2C
	STA &2C
	TYA
	SBC &2D
	STA &2D
	LDA #&40
	RTS

cftoi	JSR fptoi1
	LDA &31
	STA &2D
	LDA &32
	STA &2C
	LDA &33
	STA &2B
	LDA &34
	STA &2A
	RTS
fptoi2	JSR cpyB_A
	JMP fp0
fptoi1	LDA &30
	BPL fptoi2
	JSR fptoi5
	JSR testA
	BNE fptoi4
	BEQ fptoi7
fptoi3	LDA &30
	CMP #&A0
	BCS fptoi6
	CMP #&99
	BCS fptoi4
	ADC #8
	STA &30
	LDA &40
	STA &41
	LDA &3F
	STA &40
	LDA &3E
	STA &3F
	LDA &34
	STA &3E
	LDA &33
	STA &34
	LDA &32
	STA &33
	LDA &31
	STA &32
	LDA #0
	STA &31
	JMP fptoi3
fptoi4	LSR &31
	ROR &32
	ROR &33
	ROR &34
	ROR &3E
	ROR &3F
	ROR &40
	ROR &41
	INC &30
	BNE fptoi3
fptoi9	JMP cltobg
fptoi5	LDA #0
	STA &3B
	STA &3C
	STA &3D
	STA &3E
	STA &3F
	STA &40
	STA &41
	STA &42
	RTS
fptoi6	BNE fptoi9
fptoi7	LDA &2E
	BPL fptoi8
	SEC
	LDA #0
	SBC &34
	STA &34
	LDA #0
	SBC &33
	STA &33
	LDA #0
	SBC &32
	STA &32
	LDA #0
	SBC &31
	STA &31
fptoi8	RTS

cpyB_A	LDA &2E
	STA &3B
	LDA &2F
	STA &3C
	LDA &30
	STA &3D
	LDA &31
	STA &3E
	LDA &32
	STA &3F
	LDA &33
	STA &40
	LDA &34
	STA &41
	LDA &35
	STA &42
	RTS

cltrig	JSR vrsion
	CMP #&34
	BNE etrig
	LDX #trig
	JSR clbROM
etrig	RTS

cosine	JSR cltrig
	LDX #cos
	JMP clbROM
sine	JSR cltrig
	LDX #sin
	JMP clbROM

enlarg	JSR getrlA
	LDX #40
	LDY #6
	JSR cfout
	JSR chkcma
	JSR getrlB
	LDX #55
	LDY #6
	JSR cfout
	JSR cendB
enlar2	JSR fp0
	LDX #45
	LDY #6
	JSR cfout
	JSR fp0
	LDX #50
	LDY #6
	JSR cfout
 	JMP mtmult

matrix	JSR getrlA
	LDX #40
	LDY #6
	JSR cfout
	JSR chkcma
	JSR getrlB
	LDX #45
	LDY #6
	JSR cfout
	JSR chkcma
	JSR getrlB
	LDX #50
	LDY #6
	JSR cfout
	JSR chkcma
	JSR getrlB
	LDX #55
	LDY #6
	JSR cfout
	JSR cendB
	JMP mtmult

reflct	JSR getrlA
	INC &30
	BCC *+4
	INC &2F
	LDX #0
	LDY #6
	JSR cfout
	JSR cendB
	LDX #0
	LDY #6
	JSR cfin
	JSR cosine
	LDX #40
	LDY #6
	JSR cfout
	JSR negA
	LDX #55
	LDY #6
	JSR cfout
	LDX #0
	LDY #6
	JSR cfin
	JSR sine
	LDX #45
	LDY #6
	JSR cfout
	LDX #50
	LDY #6
	JSR cfout
	JMP mtmult

clear2	LDA &12
	STA 0
	STA 2
	LDA &13
	STA 1
	STA 3
	LDA &18
	STA &1D
	LDA 6
	STA 4
	LDA 7
	STA 5
	LDA #0
	STA &24
	STA &25
	STA &26
	STA &1C
	LDX #&80
clr2l	STA &47F,X
	DEX
	BNE clr2l
	RTS

tclear	JSR cendA
	JSR clear2
	LDY #4
tclrlp	STA &400,Y
	INY	
	CPY #&80
	BNE tclrlp
	JMP clwnd2

testdi	LDA &C
	CMP #7
	BNE notdi
	RTS
notdi	CBRK
	DFB 61
	ASC "Direct only"
	BRK

badpge	CBRK
	DFB 62
	ASC "Bad PAGE boundary"
	BRK

mvpage	JSR testdi
	JSR gtintA
	JSR cendB
	LDA &2A
	BNE badpge
	JSR settop
	LDA #0
	STA &54
	LDA &18
	STA &55
	LDA &12
	STA &56
	LDA &13
	SEC
	SBC &18
	STA &57
	LDA #0
	STA &58
	LDA &2B
	STA &59
	STA &18
	JSR mvpge2
	JSR settop
	JSR clear2
	RTS

mvpge2	LDA &54
	SEC
	SBC &58
	LDA &55
	SBC &59
	BCC moveup
	JMP movedn
epmove	RTS
movedn	LDA &54
	CLC
	ADC &56
	STA &56
	LDA &55
	ADC &57
	STA &57
mvednl	LDY #0
	LDA (&54),Y
	STA (&58),Y
	INC &54
	BNE *+4
	INC &55
	INC &58
	BNE *+4
	INC &59
	LDA &54
	CMP &56
	BNE mvednl
	LDA &55
	CMP &57
	BNE mvednl
	RTS
moveup	LDA &54
	PHA
	LDA &55
	PHA
	LDA &54
	CLC
	ADC &56
	STA &54
	LDA &55
	ADC &57
	STA &55
	LDA &58
	CLC
	ADC &56
	STA &58
	LDA &59
	ADC &57
	STA &59
	PLA
	STA &57
	PLA
	STA &56
upmeml	LDY #0
	LDA (&54),Y
	STA (&58),Y
	LDA &58
	SEC
	SBC #1
	STA &58
	LDA &59
	SBC #0
	STA &59
	LDA &54
	SEC
	SBC #1
	STA &54
	LDA &55
	SBC #0
	STA &55
	CMP &57
	BNE upmeml
	LDA &54
	CMP &56
	BNE upmeml
	LDY #0
	LDA (&54),Y
	STA (&58),Y
	RTS

srchln	LDY #&00
	STY &3D
	LDA &18
	STA &3E
	LDY #&01
	LDA (&3D),Y
	CMP &2B
	BCS *+&10
	LDY #&03
	LDA (&3D),Y
	ADC &3D
	STA &3D
	BCC *-&10
	INC &3E
	BCS *-&14
	BNE *+&16
	LDY #&02
	LDA (&3D),Y
	CMP &2A
	BCC *-&16
	BNE *+&0C
	TYA 
	ADC &3D
	STA &3D
	BCC *+&05
	INC &3E
	CLC 
	LDY #&02
	RTS 

fndlim	JSR gtintA
	LDA &2A
	STA &54
	LDA &2B
	STA &55
	JSR chkcma
	JSR gtintB
	LDA &2A
	STA &56
	LDA &2B
	STA &57
	JSR cendB
fndlm2	JSR settop
	LDA &54
	STA &2A
	LDA &55
	STA &2B
	LDA #0
	STA &2C
	STA &2D
	JSR srchln
	BCS erfnd1
	LDA &3D
	SEC
	SBC #3
	STA &3D
	LDA &3E
	SBC #0
	STA &3E
erfnd1	LDA &3D
	STA &54
	LDA &3E
	STA &55
	LDA &56
	STA &2A
	LDA &57
	STA &2B
	JSR srchln
	BCS erfnd2
	LDY #0
	LDA (&3D),Y
	SEC
	SBC #3
	CLC
	ADC &3D
	STA &3D
	LDA &3E
	ADC #0
	STA &3E
erfnd2	LDA &3D
	STA &56
	LDA &3E
	STA &57
	RTS

erase	JSR testdi
	JSR fndlim
eraslp	LDY #0
	LDA (&56),Y
	STA (&54),Y
	INC &56
	BNE eraso1
	INC &57
eraso1	INC &54
	BNE eraso2
	INC &55
eraso2	LDA &56
	CMP &12
	BNE eraslp
	LDA &57
	CMP &13
	BNE eraslp
	JSR settop
	JMP clear2

	CHN "EXT2D"