ORG #8000 kScan LD BC,#FEFE IN A,(C):CPL:LD E,A AND 1:LD (kCs),A RR E:LD A,E AND 1:LD (kZ),A LD A,E:RRA AND 1:LD (kX),A LD BC,#7FFE:IN A,(C) CPL:AND 1:LD (kSp),A:RET Cls1 LD HL,#4000 LD DE,#4001:LD BC,#17FF LD (HL),0:LDIR:RET FDiv CP C:CCF:RET C LD E,0:OR A:RET Z:LD B,8 FD1 SLA A:JR C,FD3 SUB C:JR C,FD2 DEFW #33CB:DJNZ FD1:RET FD2 SLA E:ADD A,C DJNZ FD1:OR A:RET FD3 SUB C:RL E DJNZ FD1:RET Rnd1 LD HL,(Sd+2) RL L:RL H:RL L:RL H LD C,H:LD A,(Sd):RLA LD B,A:LD DE,(Sd+1) RL E:RL D:RES 7,D LD HL,(Sd):ADD HL,BC LD (Sd),HL:LD HL,(Sd+2) ADC HL,DE:RES 7,H LD (Sd+2),HL:RET M LD HL,Sd:Rnd2 INC (HL) RET NZ:INC HL:JP Rnd2 Sd DEFW 1234,5678 MakeE LD DE,#4000 LD HL,sTab:LD C,24 MakE1 LD B,8 MakE2 LD (HL),E:INC HL LD (HL),D:INC HL:INC D DJNZ MakE2:LD A,E ADD A,32:LD E,A JR C,MakE3:LD A,D:SUB 8 LD D,A:MakE3 DEC C JR NZ,MakE1:RET Pint LD A,D:LD H,0:CP 192 RET NC:PUSH BC:LD A,E AND 7:LD C,A:LD B,H LD HL,Bits:ADD HL,BC LD A,(HL):LD HL,sTab LD C,D:ADD HL,BC ADD HL,BC:LD C,(HL) INC HL:LD H,(HL):LD L,C LD C,E:SRL C:SRL C SRL C:ADD HL,BC:POP BC RET Bits DEFB 128,64,32,16 DEFB 8,4,2,1 Line LD A,L:SUB E JR NC,Lixs:EX DE,HL Lixs PUSH DE:PUSH HL LD A,E:AND 7:LD C,A LD B,0:LD HL,Bits ADD HL,BC:LD C,(HL) LD A,E:RRA:RRA:RRA AND 31:LD IX,sTab LD E,D:LD D,B:ADD IX,DE ADD IX,DE:OR (IX):LD L,A LD H,(IX+1):LD DE,2:EXX POP HL:POP DE:LD A,L SUB E:LD C,A:LD A,H SUB D:JR NC,Li2:NEG EXX:LD DE,0-2:EXX Li2 LD B,A:SUB C JP NC,Li3:LD L,C SRL L:LD A,B:NEG:LD E,A LD D,#FF:JR NZ,Li2a LD D,A Li2a XOR A:LD B,A LD H,A:LD A,C EXX:OR A:RET Z LD B,A:LD A,C LiMX EXX:ADD HL,DE BIT 7,H:JR Z,LiMX1 ADD HL,BC:EXX:XOR (HL) LD (HL),A:RRC C LD A,L:ADC A,0:AND 31 ADD IX,DE:OR (IX) LD L,A:LD H,(IX+1) LD A,C:DJNZ LiMX JP LiMXF LiMX1 EXX:RRC C JP NC,LiMX2:XOR (HL) LD (HL),A:INC L:XOR A LiMX2 OR C:DJNZ LiMX LiMXF XOR (HL) LD (HL),A:RET Li3 LD L,B:SRL L:LD A,C NEG:LD E,A:LD D,#FF JR NZ,Li3a:LD D,A Li3a LD C,B:XOR A LD B,A:LD H,A:LD A,C EXX:OR A:RET Z LD B,A:LD A,C:XOR (HL) LD (HL),A LiMY EXX:ADD HL,DE BIT 7,H:JR Z,LiMY1 ADD HL,BC:EXX:RRC C LD A,L:ADC A,0:AND 31 ADD IX,DE:OR (IX) LD L,A:LD H,(IX+1) LD A,C:XOR (HL) LD (HL),A DJNZ LiMY:RET LiMY1 EXX:LD A,L:AND 31 ADD IX,DE:OR (IX) LD L,A:LD H,(IX+1) LD A,C:XOR (HL) LD (HL),A DJNZ LiMY:RET LDiv LD BC,0:LD A,16 LD1 ADD HL,HL:JR C,LD3 SBC HL,DE:JR C,LD2 SLA C:RL B:INC BC DEC A:JR NZ,LD1:RET LD2 SLA C:RL B:ADD HL,DE DEC A:JR NZ,LD1:RET LD3 SLA C:RL B:SBC HL,DE DEC A:JR NZ,LD1:RET VLine LD A,D:CP H JP C,VL1:LD D,H:LD H,A VL1 LD A,H:CP 192:RET NC SUB D:INC A:LD B,A PUSH DE:LD A,E:AND 7 LD E,A:LD D,0 LD HL,Bits:ADD HL,DE LD C,(HL):POP DE:LD A,E RRA:RRA:RRA:LD HL,sTab LD E,D:LD D,0:ADD HL,DE ADD HL,DE:LD E,A VL2 LD A,E:AND 31:OR (HL) LD E,A:INC HL:LD D,(HL) INC HL:LD A,(DE):XOR C LD (DE),A:DJNZ VL2:RET Cosine ADD A,64 Sine PUSH DE:PUSH HL LD C,A:AND #3F:RL C:RL C JR NC,Sine1:XOR #3F Sine1 LD E,A:LD D,0 LD HL,SineT:ADD HL,DE LD B,(HL):POP HL:POP DE RET SineT DEFB 3,9,#G,22 DEFB 28,34,41,47,53,59 DEFB 65,71,77,83,89,95 DEFB 101,107,112,118 DEFB 123,129,134,140 DEFB 145,150,155,160 DEFB 165,170,174,179 DEFB 183,188,192,196 DEFB 200,204,207,211 DEFB 215,218,221,224 DEFB 227,230,233,235 DEFB 238,240,242,244 DEFB 246,248,249,250 DEFB 252,253,254,254 DEFB 255,255,0,0 FMul LD B,8 EX DE,HL:LD HL,0 FMul1 SRA H:RR L:RRA JR NC,FMul2:ADD HL,DE FMul2 DJNZ FMul1 SRA H:RR L:RET NC INC HL:RET kZ DEFB 0 kX DEFB 0 kCs DEFB 0 kSp DEFB 0 sTab DEFS #180 ENDobj EQU kZ ENDvar EQU $