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"