;z80
;zx-spectrum
;assembler

        ORG #6000

MBANK   EQU 6

;        DI
;        LD A,#51:OUT (#FD)
;        LD HL,MUSIC,DE,#C000
;        LD BC,10000:LDIR
;        LD A,#CD:LD (#C25F),A
;        LD HL,CHMUS,(#C260),HL
;        CALL #C000
;        LD A,#50:OUT (#FD)
;        JR STRT
;
;CHMUS   PUSH BC
;        LD BC,20:ADD HL,BC
;        LD (#C31C),HL
;        POP BC:RET
;
;EXIT
;        DI
;        XOR A:LD H,A
;        LD DE,#FFBF
;        LD C,#FD
;MFM     LD B,D:OUT (C),A
;        LD B,E:OUT (C),H:INC A
;        CP 14:JR NZ,MFM
;        LD A,#C9:LD (#6000),A
;        LD A,#54:OUT (#FD)
;        JP #C000

STRT
        LD (USP),SP
        LD A,#5E,H,A,I,A:IM 2
        LD L,0
        INC A
S1      LD (HL),A:INC L:JR NZ,S1
        INC H:LD (HL),A
        LD L,H
        LD (HL),#C3:INC HL
        LD (HL),INT]:INC HL
        LD (HL),INT[

        CALL DPCMR

        HALT:CALL CLS
        LD HL,#5800,DE,#5801
        LD BC,767:LD (HL),#47
        LDIR

        LD A,#57
        LD (LB),A:OUT (#FD)
        LD HL,#4000
        LD DE,#C000
        LD BC,6912:LDIR

        LD A,20
        LD (PATA),A
        LD B,8,C,1:CALL WPAT

        LD A,1:LD (EMAIN+1),A
        LD DE,TBMORPH
LOOPM   LD A,(DE):INC DE:LD L,A
        LD A,(DE):INC DE:LD H,A
        PUSH DE,BC
        CALL DIR
;        JR $
        POP BC
        CALL WPAT
        POP DE
        JR LOOPM

STARTK  LD A,27;21
        LD (PATA),A
        XOR A:LD (EMAIN+1),A
        EI
        LD HL,STARTT
        LD (ABORT),HL
        HALT:CALL CLS

        CALL DPCKRUG

        LD BC,#1501
        CALL WPAT

        LD IX,TBKRUG
        LD IY,TBKRUG-5
        LD C,B
MLOOP   LD A,(IX+4),B,A
        RRA:RRA:RRA:AND 7
        HALT
        OUT (#FE)
        LD A,B
        PUSH BC
        CALL CLATR,KRUG0
        POP BC
        LD B,19
MLP1    PUSH BC:CALL KRUG:POP BC
        DJNZ MLP1
        XOR A:LD (CLLINE),A
        LD DE,5:ADD IY,DE
MLP2    PUSH BC:CALL KRUG:POP BC
        LD HL,#5C00
        LD A,(POSIT)
        CP 26:JR NZ,MLP6
        LD A,(HL):CP 215
        LD A,(POSIT)
        JR C,MLP6
        JR NZ,MLP6
MLP3    LD A,8
        OR A:JR Z,MLP4
        DEC A:LD (MLP3+1),A
MLP4    HALT:CALL CLATR,KRUG0
        JR MLP3

MLP6    CP C:JR C,MLP2
        LD (HL),0
        INC C
MLP7    LD DE,5:ADD IX,DE
        JR MLOOP

STARTT  LD A,32;#FF
        LD (PATA),A
        EI
        HALT:CALL CLS
        LD HL,STARTE,(ABORT),HL
        LD A,#50
        LD (LB),A:OUT (#FD)

        LD HL,#A000,DE,#5800
        LD BC,768
        PUSH DE,BC
        LDIR
        POP BC,HL
        LD A,#57
        LD (LB),A:OUT (#FD)
        LD DE,#D800
        LDIR

        LD A,#57:LD (LB),A
GO      EI:HALT:DI
        CALL MTUN
        LD A,(LB)
        XOR #0A
        LD (LB),A
        LD A,(POSIT)
        CP 31:JR NZ,GO
        XOR A:LD (MDTUN+3),A
        JR GO

STARTE  LD A,#FF,(PATA),A
;        EI:HALT
        CALL CLS
        EI:HALT
;        JP EXIT
        RET

WPAT    LD A,(POSIT)
        CP B:JR C,WPAT
        LD A,B:ADD A,C:LD B,A
        RET

INT     PUSH AF,HL,DE,BC
        EXX:EXA
        PUSH AF,HL,DE,BC,IX,IY
;        LD A,#7F:IN (#FE)
;        RRA:JP NC,EXIT

        LD A,(LB):AND #18
        OR #40:OR MBANK
        OUT (#FD)
        CALL #C006
        LD HL,#5C00:INC (HL)
        LD HL,(#C31C)
        LD DE,#CAA3
        OR A:SBC HL,DE
        LD A,L:LD (POSIT),A
PATA    EQU $+1
        CP #FF
        JR NC,ABRT
EMAIN   LD A,0
        OR A
;        LD A,1:OUT (#FE)
        CALL NZ,MAIN
;        LD A,0:OUT (#FE)
        LD A,(LB):OUT (#FD)
        POP IY,IX,BC,DE,HL,AF
        EXX:EXA
        POP BC,DE,HL,AF
        EI
        RET

ABRT    LD SP,(USP)
ABORT   EQU $+1
        JP STARTK

DIR     LD A,(LB)
        AND #F8
        LD (LB),A:OUT (#FD)
        LD DE,BUFER

        LDI
DIR0    PUSH HL,DE
        LD C,0,B,120
DIR1    LD A,(DE):CP (HL)
        JR Z,$+9
        JR C,$+4
        DEC A,A
        INC A
        LD (DE),A:LD C,D
        INC DE:INC HL

        LD A,(DE):CP (HL)
        JR Z,$+9
        JR C,$+4
        DEC A,A
        INC A
        LD (DE),A:LD C,D
        INC DE:INC HL

        LD A,(DE):CP (HL)
        JR Z,$+9
        JR C,$+4
        DEC A,A
        INC A
        LD (DE),A:LD C,D
        INC DE:INC HL

        DJNZ DIR1

        POP DE,HL
        LD A,C:OR A:RET Z
;        LD A,2:OUT (#FE)
        HALT:JR DIR0

MAIN    LD (MAINSP+1),SP
        LD A,(LB):AND #08
        OR #55
        CP #55:JR NZ,MAIN0
        OR #57
MAIN0   OUT (#FD)
        AND 8
        LD HL,CLSDOT
        JR Z,MAIN1
        LD HL,CLSDOT2
MAIN1   XOR A:CALL JPHL
        LD IX,BUFER
        LD BC,360
        ADD HL,BC
        LD SP,HL

        LD A,(SUX2):LD E,A
        LD A,(SUX2+1):LD D,A
        LD A,(SUX2+2):LD LY,A
        LD A,(IX):INC IX
        LD HY,A
LOOP    LD H,(IX)
        LD A,E
        LD L,A
        LD C,(HL)
        ADD A,64
        LD L,A
        LD B,(HL)

        LD H,(IX+1)
        LD A,C
        SUB (HL)
        ADD A,160
        LD (SR2+1),A
        LD L,E

        LD A,B
        ADD A,(HL)
        ADD A,160
        LD H,A

        LD A,D
        LD L,A
        LD C,(HL)
        ADD A,64
        LD L,A
        LD B,(HL)

        LD H,(IX+2)
        LD A,C
        SUB (HL)
        ADD A,161
        LD (SR1+1),A
        LD L,D

        LD A,B
        ADD A,(HL)
WYS     ADD A,96
        EXA

SR2     LD H,0
        LD A,LY
        LD L,A
        LD C,(HL)
        ADD A,64
        LD L,A
        LD B,(HL)

SR1     LD H,0
        SUB 64
        LD L,A
        LD A,B
        ADD A,(HL)
COORXA  ADD A,148
        LD C,A

SR3     EXA:LD L,A
        LD H,BUF400[
        LD B,(HL):INC H
        LD A,(HL):INC H
        LD L,C
        OR (HL):INC H
        LD C,A
        LD A,(BC)
        OR (HL)
        LD (BC),A

        PUSH BC
        DEC SP

NOPL    LD BC,3
        ADD IX,BC

        DEC HY
        JP NZ,LOOP

        LD IY,SUX2

        LD A,(IY)
DDS1    ADC A,1
;        LD A,0
        LD (IY),A

        LD A,(IY+1)
DDS2    ADC A,254
;        LD A,#E0
        LD (IY+1),A

        LD A,(IY+2)
DDS3    ADC A,2
;        LD A,#E0
        LD (IY+2),A
        LD A,(LB):XOR 8
        LD (LB),A
AAA     LD HL,BUF100
        BIT 7,L
        LD B,L
        RES 7,L
        LD A,(HL)
        JR Z,$+4
        NEG
        LD L,B
        INC L
        LD (AAA+1),HL
        SRA A
        SRA A
        ADD A,96
        LD (WYS+1),A
OOO     LD HL,BUF100+#63
        LD A,(HL)
        SRA A
        SRA A
        ADD A,128
        LD (COORXA+1),A
        INC L
        LD (OOO+1),HL
MAINSP  LD SP,0
        RET

JPHL    JP (HL)

DPCMR
        LD A,#50
        LD (LB),A:OUT (#FD)

        LD HL,BUFER
        LD DE,BUFER+1
        LD BC,361
        LD (HL),#A0
        LDIR

        LD HL,SINUS
        LD DE,BUF400
        LD BC,64
        LDIR

        LD HL,SINN
        LD DE,BUF100
        LD BC,256
        LDIR
        LD HL,22528
        LD DE,22529
        LD (HL),L
        LD BC,767
        LDIR

INST    LD HX,BUF400[
        LD HY,#A0
M0      XOR A:LD E,A,LX,A
        OR #80:LD L,A,LY,A
        LD D,HY,H,D
        EXX
        LD A,HY
        ADD A,A,A,A,A,A:LD C,A
        LD B,64,D,0
M1      LD E,(IX):INC LX
        LD H,C
        LD L,D
.5      ADD HL,HL:JR NC,$+3:ADD HL,DE
        BIT 7,L:JR Z,M2
        INC H
M2      XOR A:SUB H
        LD (IY),A
        EXX
        LD (DE),A:DEC E
        NEG
        LD (HL),A:DEC L
        EXX
        LD (IY-128),A
        INC LY
        DJNZ M1
        EXX
        LD A,(IY-1)
        LD (DE),A:NEG:LD (HL),A
        INC HY:LD A,HY
        CP #C0:JR NZ,M0

        LD DE,#8000
        LD HL,#BF00
        LD B,#20
M3      XOR A
        SUB (HL):INC L
        LD (DE),A:INC E
        JR NZ,M3
        INC D:DEC H
        DJNZ M3


TABS    LD HL,BUF400
        LD DE,#C000
        LD C,#80,B,0
TABS1   LD A,H
        LD (HL),D:INC H
        LD (HL),E:INC H
        LD (HL),B:INC H
        LD (HL),C:LD H,A
        INC L:INC D
        RRC C:JR NC,TABS1
        INC B
        LD A,E:ADD A,#20:LD E,A
        JR NC,TABS2
        LD A,B:CP #18
        JR NZ,TABS3
        LD D,0:JR TABS1

TABS2   LD A,D:SUB 8:LD D,A
TABS3   BIT 5,B:JR Z,TABS1

        LD HL,CLSDOT
        XOR A
        LD DE,#0232
TBCL1   LD B,120
TBCL2   LD (HL),E:INC HL
        LD (HL),A:INC HL
        LD (HL),A:INC HL
        DJNZ TBCL2
        LD (HL),#C9:INC HL
        DEC D:JR NZ,TBCL1


        LD IY,MDATA
        LD HL,#C000
        LD DE,TBMORPH
        LD B,12
STM     EX DE,HL
        LD (HL),E:INC HL
        LD (HL),D:INC HL
        EX DE,HL
        PUSH DE,BC,HL
        LD A,B
        CP 10:JR NZ,STM1
        PUSH IY
        CALL SETCUB
        POP IY
        JR STM2

STM1    CALL DRAW
STM2    POP DE:PUSH HL
        OR A:SBC HL,DE
        EX DE,HL
        LD HL,361:SBC HL,DE
        EX DE,HL:POP HL
        JR Z,STM4
        LD C,#A0
STM3    LD (HL),C:INC HL
        DEC DE
        LD A,D:OR E:JR NZ,STM3
STM4    POP BC,DE
        DJNZ STM
        RET

DRAW    PUSH HL:INC HL
        LD HX,0
        LD A,(IY):INC IY:LD LX,A
DR1     LD E,0
DR1A    LD A,(IY):INC IY
        CP #70:JR C,DR1B
        SUB #70:LD E,A
        JR DR1A

DR1B    EXX:LD E,A:EXA
        LD HL,#8000,D,L
        CALL DIV:RL C:RL B
        BIT 7,C:JR Z,DR2:INC B
DR2     LD A,B
        EXX
        LD C,A
        LD D,(IY):INC IY
        EXA:LD B,A
DR3     LD A,(DE):ADD A,#A0
        LD (HL),A:INC HL
        LD A,E:ADD A,64:LD E,A
        LD A,(DE):ADD A,#A0
        LD (HL),A:INC HL
        LD A,LX:LD (HL),A:INC HL
        LD A,E:SUB 64
        ADD A,C:LD E,A
        INC HX
        DJNZ DR3
        LD A,(IY):INC IY
        ADD A,LX:LD LX,A
        JR NC,DR1
        LD A,HX
        POP DE:LD (DE),A
        RET

CDX     EQU 8
CDY     EQU 8
CDZ     EQU 8

SETCUB  LD (HL),114:INC HL
        LD D,#9F-CDX*5/2
        LD E,#9F-CDY*2
        LD C,#9F-CDZ*2
        CALL GRAN
        LD A,C:ADD A,CDZ:LD C,A
        LD HX,3
SETC1   PUSH DE,DE
        LD LX,2
SETC2   PUSH DE
        LD B,6
SETC3   LD (HL),D:INC HL
        LD (HL),E:INC HL
        LD (HL),C:INC HL
        LD A,D:ADD A,CDX:LD D,A
        DJNZ SETC3
        POP DE
        LD A,E:ADD A,CDY*4:LD E,A
        DEC LX:JR NZ,SETC2
        POP DE
        LD LX,2
SETC4   PUSH DE
        LD B,3
SETC5   LD A,E:ADD A,CDY:LD E,A
        LD (HL),D:INC HL
        LD (HL),E:INC HL
        LD (HL),C:INC HL
        DJNZ SETC5
        POP DE
        LD A,D:ADD A,CDX*5:LD D,A
        DEC LX:JR NZ,SETC4
        POP DE
        LD A,C:ADD A,CDZ:LD C,A
        DEC HX:JR NZ,SETC1
GRAN    PUSH DE
        LD HX,5
GRAN1   PUSH DE
        LD B,6
GRAN2   LD (HL),D:INC HL
        LD (HL),E:INC HL
        LD (HL),C:INC HL
        LD A,D:ADD A,CDX:LD D,A
        DJNZ GRAN2
        POP DE
        LD A,E:ADD A,CDY:LD E,A
        DEC HX:JR NZ,GRAN1
        POP DE
        RET

;*******************************

KRUG    EI:HALT
KRUG0   DI
        CALL OUTLINE
        CALL CLLINE
        EI:RET

OUTLINE
AD1     LD HL,#D800
AD2     LD DE,#D840
        LD B,(IX+2)
        LD C,(IX+3)
        EXX
        CALL LOP

        LD A,(AD1+1)
        ADD A,(IX+0)
        LD (AD1+1),A
        LD A,(AD2+1)
        ADD A,(IX+1)
        LD (AD2+1),A

        LD A,(AD1+2)
MOD1    ADC A,1:AND #3F
        JR NZ,LLI
        LD A,(MOD1)
        XOR #10
        LD (MOD1),A
        LD A,(AD1+2)
LLI     OR #C0
        LD (AD1+2),A

        LD A,(AD2+2)
MOD2    ADD A,1
        AND #3F
        JR NZ,LLO
        LD A,(MOD2)
        XOR #10
        LD (MOD2),A
        LD A,(AD2+2)
LLO     OR #C0
        LD (AD2+2),A
        RET

CLLINE  RET
ADS1    LD HL,#D800
ADS2    LD DE,#D840
        LD B,(IY+2)
        LD C,(IY+3)
        EXX
        CALL LOP

        LD A,(ADS1+1)
        ADD A,(IY)
        LD (ADS1+1),A
        LD A,(ADS2+1)
        ADD A,(IY+1)
        LD (ADS2+1),A

        LD A,(ADS1+2)
MOS1    ADC A,1:AND #3F
        JR NZ,LLIS
        LD A,(MOS1):XOR #10
        LD (MOS1),A
        LD A,(ADS1+2)
LLIS    OR #C0
        LD (ADS1+2),A

        LD A,(ADS2+2)
MOS2    ADD A,1:AND #3F
        JR NZ,LLOS
        LD A,(MOS2):XOR #10
        LD (MOS2),A
        LD A,(ADS2+2)
LLOS    OR #C0
        LD (ADS2+2),A
        RET

LOP     LD A,#50
        LD (LB),A:OUT (#FD)
        LD BC,#8000+(BUF400[)
LOP0    EXX
        LD A,(HL):ADD A,128
        EXA
        LD A,(DE):ADD A,96
        EXX:LD L,A:EXX
        LD A,L:ADD A,B:LD L,A
        LD A,E:ADD A,C:LD E,A
        EXX
        LD H,C
        LD D,(HL):INC H
        LD A,(HL):INC H
        EXA:LD L,A:EXA
        OR (HL):INC H
        LD E,A
        LD A,(HL)
        EX DE,HL
        RES 7,H
        XOR (HL)
        LD (HL),A
        DJNZ LOP0
        RET

;*******************************

DPCKRUG LD A,#50
        LD (LB),A:OUT (#FD)

        LD H,#A0:LD DE,#C000
        LD A,#20
DPK2    LD L,0
        LD BC,#0080:LDIR
        INC H
        DEC A:JR NZ,DPK2

        EXX
        LD HL,SINUS,DE,BUF100
        LD BC,64:LDIR

        LD D,#00,B,#40
        EXX
        LD HX,BUF100[
DPK3    LD LX,1:LD B,63
        LD HL,#7F:ADD HL,DE
        XOR A:LD (DE),A:INC E
DPK4    LD A,(IX):INC LX
        EXX
        LD E,A
        LD H,B,L,D
.7      ADD HL,HL:JR NC,$+3:ADD HL,DE
        BIT 7,L:LD A,H
        JR Z,DPK5:INC A
DPK5    EXX
        LD (DE),A:INC E
        LD (HL),A:DEC L
        DJNZ DPK4
        LD (HL),A
        LD A,E:ADD A,#40:LD E,A
        JR NC,DPK6:INC D
DPK6    EXX:INC B:INC B:EXX
        JR NZ,DPK3

        LD H,#C0
DPE1    LD L,#80
DPE2    LD A,(HL):NEG:LD (HL),A
        INC L
        JR NZ,DPE2
        INC H
        JR NZ,DPE1

; TUNNEL; BANK=#50

        LD HL,CTRL
        LD BC,END
        XOR A
        LD DE,128
        LD LX,16
IKS0    LD (HL),C:INC HL
        LD (HL),B:INC HL
        LD (HL),E:INC HL
        LD (HL),0:INC HL
        LD (HL),E:INC HL
        LD (HL),D:INC HL
        LD (HL),A:INC HL
        ADD A,#10
        EXA
        LD A,E:SUB 8:LD E,A
        EXA
        INC B,B
        DEC LX:JR NZ,IKS0

        LD A,#12,(CTRL+3),A


        LD HL,BUF514
        LD DE,#E177
        LD B,0
WRCL    LD (HL),D:INC HL
        LD (HL),E:INC HL
        DJNZ WRCL
        LD (HL),#DD:INC HL
        LD (HL),#E9

        LD HL,KILL0
        LD C,4:XOR A
WRCL1   LD B,0
WRCL2   LD (HL),A:INC HL
        DJNZ WRCL2
        DEC C:JR NZ,WRCL1

;        LD A,#FF
;        LD (KILL0+1),A
;        LD (KILL1+1),A

        LD HL,#A000
        LD BC,#4007
        LD DE,#0300
LOOK    LD A,(DE):INC E
        AND C
        JR NZ,LOOK1
        LD A,C
LOOK1   OR B
        LD (HL),A:INC L
        JR NZ,LOOK
        INC H
        DEC D
        JR NZ,LOOK

        LD IY,END
ZOOM1   LD HL,#00FF
        LD DE,59:ADD HL,DE
        EX DE,HL
        LD HL,7532
        CALL DIV
        LD E,C:INC E
; E #20 TO #7F
        LD D,0,IX,TBCI,B,4
ZOOM5   LD H,(IX):INC IX
        LD L,D
.8      ADD HL,HL:JR NC,$+3:ADD HL,DE
        LD A,H:ADD A,#80
        LD (IY),A
        LD (IY+9),A
        NEG
        LD (IY+16),A
        LD (IY+25),A
        LD H,(IX):INC IX
        LD L,D
.8      ADD HL,HL:JR NC,$+3:ADD HL,DE
        LD A,H:ADD A,#80
        LD (IY+1),A
        LD (IY+24),A
        NEG
        LD (IY+8),A
        LD (IY+17),A
        INC IY,IY
        DJNZ ZOOM5
        LD DE,24:ADD IY,DE
        LD HL,ZOOM1+1
        DEC (HL)
        LD A,(HL):INC A
        JP NZ,ZOOM1

        LD A,#57
        LD (LB),A:OUT (#FD)
        LD HL,#C000,DE,#C001
        LD BC,#17FF:LD (HL),L
        LDIR
        RET

MTUN    LD (PRINTE+1),SP
        LD A,(LB)
        BIT 3,A
        LD HL,KILL0
        JR NZ,CLE0
        LD HL,KILL1
CLE0    LD SP,HL
        LD DE,HL
;        INC HL:LD A,(HL)
;        INC A:JR Z,CLE1
        XOR A:LD IX,CLE1
        JP BUF514

CLE1    EX DE,HL
        INC H:INC H
        LD SP,HL
PRI0    LD A,0:DEC A
        LD (PRI0+1),A
        RRCA:LD B,A
        RRCA:RRCA:RRCA
        AND #0F:LD C,A
        ADD A,A,A,A,A,A:SUB C
        LD E,A:LD D,0
        LD IX,CTRL:ADD IX,DE
        LD L,(IX+2),H,0
        LD DE,TABLE0:ADD HL,DE
        LD A,B:AND 7
        NEG:ADD A,7
        LD E,A:LD D,0
        ADD HL,DE:EX DE,HL
        LD L,(IX+4)
        LD H,(IX+5)
        LD BC,TABLE1:ADD HL,BC
        LD C,A:LD B,0
        ADD HL,BC
        EX DE,HL

        LD A,(HL):LD (NIVA0+1),A
        LD A,(DE):LD (NIVA1+1),A

        EXX:LD BC,7:EXX

        LD IX,CTRL
        LD C,16

PRI2    EXX
        LD L,(IX+0),H,(IX+1)
        EXX

        INC (IX+2)
        LD L,(IX+2):LD H,0
        LD DE,TABLE0
        ADD HL,DE

        LD E,(IX+4),D,(IX+5)
        INC DE
        LD A,D
        CP 2:JP NC,KL11
        DEC A:JP NZ,KL1
        LD A,E
        CP 224:JP C,KL1
KL11    LD IY,#FE20
        ADD IY,DE:LD DE,IY

KL1     LD (IX+4),E,(IX+5),D
        LD IY,TABLE1:ADD IY,DE

        LD A,(HL):SUB 32
        EXX
NIVA0   SUB 0:LD D,A;  Y
        LD A,(IY)
NIVA1   SUB 0:LD E,A;  X
        EXX

        LD A,(IX+3),(PRIM),A

PRI2A   LD B,16
PRI1    EXX
        LD A,(HL):INC HL:ADD A,E
        EXA
        LD A,(HL):INC HL:ADD A,D
        EXX:LD L,A
        LD H,BUF400[
        LD D,(HL):INC H
        LD E,(HL):INC H
        EXA:LD L,A
        LD A,(HL):INC H
        ADD A,E:LD E,A
        LD A,(DE)
        OR (HL)
PRIM    LD (DE),A
        PUSH DE
        DJNZ PRI1

        EXX
        LD (IX+0),L,(IX+1),H
        INC (IX+6)
        JR NZ,LM0

        LD HL,END
        LD (IX+0),L,(IX+1),H

        LD DE,128
        LD L,(IX+2),H,(IX+3)
        ADD HL,DE
        LD (IX+2),L,(IX+3),H

        LD L,(IX+4),H,(IX+5)
        ADD HL,DE
        LD (IX+4),L,(IX+5),H

MDTUN   LD (IX+3),#12

LM0     ADD IX,BC
        EXX
        DEC C:JP NZ,PRI2

PRINTE  LD SP,0
        RET

DIV     EX DE,HL;DELENIE
        LD BC,0
        LD A,L
        OR H
        RET Z
        LD A,1
MUL0    BIT 7,H
        JP NZ,MUL1
        ADD HL,HL
        INC A
        JP MUL0

MUL1    EX DE,HL

DEV3    OR A
        SBC HL,DE
        CCF
        JP C,DEV4
        ADD HL,DE
        OR A
DEV4    RL C
        RL B
        RR D
        RR E
        DEC A
        JP NZ,DEV3
        RET


CLS     LD (CLSUSP+1),SP
        LD HL,#4800
        LD D,L,E,L
        LD C,3
CLS1    LD SP,HL
        LD B,128
CLS2
.8      PUSH DE
        DJNZ CLS2

        LD A,H:ADD A,8:LD H,A
        DEC C:JR NZ,CLS1
CLSUSP  LD SP,0
        RET

CLATR   LD (CLATSP+1),SP
        LD E,A,D,A
        LD SP,#5B00
        LD B,48
CLAT1
.8      PUSH DE
        DJNZ CLAT1
CLATSP  LD SP,0
        RET

;CIRCLES/BEGIN Y
;PTS/RAD/ADDY ... PTS/RAD/ADDY

MDATA
DSHAR   DB #8A
        DB 2,#A9,0
        DB 16,#A9,4
        DB 16,#B3,7
        DB 16,#B9,9
        DB 16,#BB,9
        DB 16,#B9,7
        DB 16,#B3,4
        DB 16,#A9,#FF

DCONUS  DB #8A
        DB 16,#B7,7
        DB 16,#B3,7
        DB 16,#AF,7
        DB 16,#AC,7
        DB 16,#A9,7
        DB 16,#A6,7
        DB 16,#A3,3
        DB 2,#A0,#FF

DTRUB   DB #8B
        DB 2,#B0,0
.6      DB 16,#B0,7
        DB 16,#B0,#FF

DLAMPA  DB #85
        DB 9,#A7,4
        DB 9,#AE,5
        DB 9,#B2,5
        DB #77,2,#A9,0
        DB 9,#B2,5
        DB #77,2,#A8,0
        DB 9,#B2,5
        DB #77,2,#A7,0
        DB 9,#AF,5
        DB #77,2,#A6,0
        DB 9,#AD,5
        DB #77,2,#A5,0
        DB 7,#AA,5
        DB #77,2,#A4,0
        DB 7,#AA,4
        DB 7,#AA,4
        DB 7,#AA,4
        DB 7,#A8,4
        DB 4,#A5,#FF

DTABUR  DB #88
        DB 4,#B0,0,4,#AE,6
        DB 4,#AF,0,4,#AD,6
        DB 4,#AE,0,4,#AC,6
        DB 4,#AD,0,4,#AB,6
        DB 4,#AC,0,4,#AA,6
        DB 4,#AB,0,4,#A9,6
        DB 14,#B3,2
        DB 14,#B3,0
        DB 13,#B0,0
        DB 11,#AC,0
        DB 9,#A8,0
        DB 5,#A5,#FF

DBOTL   DB #83
        DB 8,#A5,0
.5      DB 8,#AC,6
        DB 8,#A9,7
        DB 8,#A6,7
.2      DB 8,#A6,7
        DB 8,#A6,#FF

DRUM    DB #8B
        DB 16,#B8,6
        DB 16,#B7,6
        DB 16,#B4,6
        DB 16,#B0,6
        DB 16,#A8,6
        DB 1,#A0,0
        DB 1,#A0,5
        DB 16,#A8,1
        DB 16,#B0,#FF

DSTAK   DB #89
        DB 12,#B2,0
        DB 12,#B4,7
        DB 12,#B3,7
        DB 12,#B2,7
        DB 12,#B1,7
        DB 12,#B0,7
        DB 12,#AF,7
        DB 12,#AE,0
        DB 1,#A0,0
        DB 6,#A6,0
        DB 11,#AA,#FF

DAPPL   DB #88
        DB 15,#A9,2
        DB 1,#A0,0
        DB 15,#B3,7
        DB 15,#B9,9
        DB 15,#BB,9
        DB 15,#B9,7
        DB 1,#A0,0
        DB 15,#B3,2
        DB 15,#A9,0
        DB 1,#A1,2
        DB 1,#A1,2
        DB 1,#A2,2
        DB 1,#A3,2
        DB 1,#A3,2
        DB 1,#A5,2
        DB 1,#A7,#FF

DCAP    DB #90
        DB 24,#B6,6
        DB 1,#BB,0
        DB 1,#B9,0
        DB 1,#BF,0
        DB 1,#BD,0
        DB 12,#B5,6
        DB 1,#BF,0
        DB 1,#BD,0
        DB 12,#B4,6
        DB 1,#BB,0
        DB 1,#B9,0
        DB 12,#B3,5
        DB 1,#B6,0
        DB 1,#B4,0
        DB 12,#B1,5
        DB 10,#AD,4
        DB 20,#AB,0
        DB 5,#A7,0
        DB 3,#A4,#FF

DTAR    DB #9A
        DB 24,#BB,1
        DB 12,#B8,2
        DB 12,#B5,2
        DB 12,#B2,2
        DB 12,#B0,2
        DB 12,#AF,2
        DB 24,#AD,0
        DB 6,#A7,0
        DB 3,#A0,#FF

TBCI    DB 255,0
        DB 236,98
        DB 180,180
        DB 98,236

TBKRUG  DB 1,4,1,1,#45
        DB 2,3,2,2,#44
        DB 1,5,1,3,#46
        DB 5,0,3,2,#42
        DB 2,4,2,8,#43
        DB 2,3,4,3,#47
        DB #FF

SUX2    DB 0,0,0

SINN    INCB "SIN"
SINUS   INCB "SIN64/FF"

TABLE0  INCB "JUMP"
TABLE1  INCB "SIN512"

ECODE

LB      DB 0
USP     DW 0
POSIT   DB 0
TBMORPH DS 24
ENDPR

        ORG ENDPR^

BUF400  DS #0400
BUFER   DS 343

BUF100  EQU #5B00
CTRL    EQU BUF100

        ORG BUFER
BUF514  DS 514
KILL0   DS 512
KILL1   DS 512

CLSDOT2 EQU #8000-361
CLSDOT  EQU CLSDOT2-361

END     EQU #8000

        ORG ECODE
MUSIC   INCB "M.EXE"
EFILE




