;z80
;zx-spectrum
;assembler

        ORG #5D49,#8000

START   RES 4,(IY+1)
        LD SP,#6000
        LD HL,#3E00:PUSH HL
        LD HL,#1303:PUSH HL
        LD (#5C3D),SP
        LD DE,(#5CF4)
        LD HL,#6000:PUSH HL
        LD B,145
        LD A,#BF:IN (#FE):RRA
        JR C,TURBO
        LD BC,#3005:CALL #3D13
        LD DE,(#5CF4),HL,#9000
        LD BC,#3005:CALL #3D13
        LD DE,(#5CF4),HL,#C000
        LD BC,#3105:CALL #3D13
        RET

TURBO   DI
LDSV1   LD C,0
LDSV3   PUSH BC:PUSH HL:PUSH DE
        LD A,C
        OR A :JR Z,LDSV4
        AND 3:JR NZ,LDSV5
        CALL REST
LDSV4   POP DE:PUSH DE
        LD A,D
        CALL POS
LDSV5   POP DE:POP HL
        LD A,E
        PUSH HL:PUSH DE
        LD D,0
        CALL LDSV9
        POP DE:POP HL:POP BC
        JR NC,LDSV7
        INC C
        JR LDSV3

LDSV7   INC H
        INC E
        BIT 4,E:JR Z,LDSV8
        RES 4,E:INC D
LDSV8   DJNZ LDSV1
        LD A,#50:JR OUTCMND

LDSV9   PUSH HL
        INC A
        LD C,#5F:CALL OUTPAR
        LD A,#80
        LD C,#1F:CALL OUTPAR
        LD IX,#3FD7
        LD BC,#017F
        POP HL
        CALL JPTR1
        SCF:RET Z
TEST    CALL TEST1:DI
        OR A:DEC B:RET Z
        SCF:RET

TEST1   LD HL,#20AA:PUSH HL
        LD A,#01:PUSH AF
        LD L,#99:JR JPTR

POS     SRL A
        LD C,#7F:CALL OUTPAR
        LD A,(#5D19)
        SET 4,A
        JR NC,POS1
        RES 4,A
POS1    AND #13
        OR #2C
        LD C,#FF:CALL OUTPAR
        LD A,#18
        JR REST1

INTER   LD A,#D0
OUTCMND LD C,#1F
OUTPAR  LD IX,#2A53
JPTR1   DB #DD
JPTR    PUSH HL
JPTR2   JP #3D2F

REST    LD A,8
REST1   LD D,#60
CMND    CALL OUTCMND
READY   LD HL,#3FD7
        PUSH HL
        LD BC,#017F:JR JPTR2

INDEX   LD D,#4D
        LD A,#D4
        JR CMND

ECODE

