TOP1:     EQU     0100H
MALTI:    EQU     TOP1+00F5H
MALEND:   EQU     TOP1+019EH
LINE:     EQU     TOP1+03B9H
LIDAT:    EQU     TOP1+0432H
LIFE:     EQU     TOP1+07DBH
STOCK:    EQU     TOP1+07DCH
SCORE:    EQU     TOP1+07DDH
          ORG     09F7H
;
;---- MOJI HYOUJI ----
;
MHYOUJ:   BIT     5,(IX+15)
          JR      Z,HMOJI
          LD      A,(IX+11)
          OR      A
          JR      NZ,ONH
          LD      A,(IX+2)
          OR      A
          JR      Z,OFFH
          DEC     (IX+2)
          JR      MJIRET
OFFH:     LD      A,(IX+10)
          LD      (IX+2),A
          LD      A,1
          LD      (IX+11),A
          JR      HMOJI
ONH:      LD      A,(IX+2)
          DEC     (IX+2)
          OR      A
          JR      NZ,HMOJI
          LD      A,(IX+9)
          LD      (IX+2),A
          XOR     A
          LD      (IX+11),A
          JR      MJIRET
          ;
HMOJI:    LD      E,(IX+7)
          LD      D,0
          LD      (LIDAT+4),DE
          LD      H,(IX+4)
          LD      L,(IX+3)
MJLOOP:   LD      A,(HL)
          OR      A
          JR      Z,MJIRET
          INC     HL
          LD      B,(HL)
          INC     HL
          LD      C,(HL)
          INC     HL
          CALL    MOJI
          JR      MJLOOP
          ;
MJIRET:   LD      A,(IX+1)
          INC     (IX+1)
          CP      (IX+8)
          JP      Z,MALEND
          RET
          ;
MOJI:     PUSH    HL
          CP      41H
          LD      D,30H
          JR      C,$+4
          LD      D,41H-10
          SUB     D
          ADD     A,A
          LD      HL,MOJIDAT
          ADD     A,L
          JR      NC,$+3
          INC     H
          LD      L,A
          LD      E,(HL)
          INC     HL
          LD      D,(HL)
          EX      DE,HL
          LD      A,B
          ADD     A,(IX+12)
          LD      B,A
          LD      A,C
          ADD     A,(IX+13)
          LD      C,A
          ;
          LD      A,(HL)
          ADD     A,A
          ADD     A,(HL)
          INC     HL
          INC     HL
          LD      E,A
          LD      D,0
          PUSH    HL
          ADD     HL,DE
          POP     DE
          DEC     DE
          DEC     DE
          DEC     DE
          ;
LOOPMJ:   LD      A,(HL)
          ADD     A,A
          ADD     A,(HL)
          PUSH    BC
          PUSH    DE
          ADD     A,E
          JR      NC,$+3
          INC     D
          LD      E,A
          LD      A,(DE)
          INC     DE
          BIT     1,(IX+15)
          JR      Z,$+4
          SLA     A
          BIT     2,(IX+15)
          JR      Z,$+4
          SRA     A
          ADD     A,B
          LD      B,A
          LD      A,(DE)
          BIT     3,(IX+15)
          JR      Z,$+4
          SLA     A
          BIT     4,(IX+15)
          JR      Z,$+4
          SRA     A
          ADD     A,C
          LD      C,A
          LD      (LIDAT),BC
          POP     DE
          POP     BC
          INC     HL
          LD      A,(HL)
          ADD     A,A
          ADD     A,(HL)
          PUSH    BC
          PUSH    DE
          ADD     A,E
          JR      NC,$+3
          INC     D
          LD      E,A
          LD      A,(DE)
          INC     DE
          BIT     1,(IX+15)
          JR      Z,$+4
          SLA     A
          BIT     2,(IX+15)
          JR      Z,$+4
          SRA     A
          ADD     A,B
          LD      B,A
          LD      A,(DE)
          BIT     3,(IX+15)
          JR      Z,$+4
          SLA     A
          BIT     4,(IX+15)
          JR      Z,$+4
          SRA     A
          ADD     A,C
          LD      C,A
          LD      (LIDAT+2),BC
          POP     DE
          POP     BC
          CALL    LINE
          INC     HL
          LD      A,(HL)
          DEC     HL
          OR      A
          JR      NZ,LOOPMJ
          INC     HL
          INC     HL
          LD      A,(HL)
          OR      A
          JR      NZ,LOOPMJ
          POP     HL
          RET
MOJIDAT:
DEFW      M0,M1,M2,M3,M4,M5,M6
DEFW      M7,M8,M9,MA,MB,MC,MD
DEFW      ME,MF,MG,MH,MI,MJ,MK
DEFW      ML,MM,MN,MO,MP,MQ,MR
DEFW      MS,MT,MU,MV,MW,MX,MY
DEFW      MZ
;
; MOJI POINT DATA
;
MR:
DEFB      6,0
DEFB      -12, 16,  0
DEFB      -12,-16,  0
DEFB        0,-16,  0
DEFB       12, -8,  0
DEFB        0,  0,  0
DEFB       12, 16,  0
DEFB      1,2,3,4,5,6,0,0
MO:
DEFB      6,0
DEFB        0,-16,  0
DEFB      -12, -8,  0
DEFB       12, -8,  0
DEFB      -12,  8,  0
DEFB       12,  8,  0
DEFB        0, 16,  0
DEFB      1,2,4,6,5,3,1,0,0
MC:
DEFB      6,0
DEFB        0,-16,  0
DEFB      -12, -8,  0
DEFB       12, -8,  0
DEFB      -12,  8,  0
DEFB       12,  8,  0
DEFB        0, 16,  0
DEFB      3,1,2,4,6,5,0,0
MK:
DEFB      5,0
DEFB      -12,-16,  0
DEFB      -12,  0,  0
DEFB      -12, 16,  0
DEFB       12,-16,  0
DEFB       12, 16,  0
DEFB      1,3,0,4,2,5,0,0
MI:
DEFB      2,0
DEFB        0,-16,  0
DEFB        0, 16,  0
DEFB      1,2,0,0
MT:
DEFB      4,0
DEFB      -12,-16,  0
DEFB       12,-16,  0
DEFB        0,-16,  0
DEFB        0, 16,  0
DEFB      1,2,0,3,4,0,0
MY:
DEFB      4,0
DEFB      -12,-16,  0
DEFB       12,-16,  0
DEFB        0,  0,  0
DEFB        0, 16,  0
DEFB      1,3,2,0,3,4,0,0
MA:
DEFB      5,0
DEFB      -12, 16,  0
DEFB       12, 16,  0
DEFB       -8,  6,  0
DEFB        8,  6,  0
DEFB        0,-16,  0
DEFB      1,5,2,0,3,4,0,0
MB:
DEFB      7,0
DEFB      -12,-16,  0
DEFB      -12, 16,  0
DEFB        0, 16,  0
DEFB       12,  8,  0
DEFB        0,  0,  0
DEFB       12, -8,  0
DEFB        0,-16,  0
DEFB      1,2,3,4,5,6,7,1,0,0
MD:
DEFB      6,0
DEFB      -12,-16,  0
DEFB      -12, 16,  0
DEFB        0, 16,  0
DEFB       12,  8,  0
DEFB       12, -8,  0
DEFB        0,-16,  0
DEFB      1,2,3,4,5,6,1,0,0
ME:
DEFB      6,0
DEFB      -11,-16,  0
DEFB       11,-16,  0
DEFB      -11,  0,  0
DEFB       11,  0,  0
DEFB      -11, 16,  0
DEFB       11, 16,  0
DEFB      2,1,5,6,0,3,4,0,0
MF:
DEFB      5,0
DEFB      -12,-16,  0
DEFB       12,-16,  0
DEFB      -12,  0,  0
DEFB        4,  0,  0
DEFB      -12, 16,  0
DEFB      2,1,5,0,3,4,0,0
MG:
DEFB      8,0
DEFB       12, -8,  0
DEFB        0,-16,  0
DEFB      -12, -8,  0
DEFB      -12,  8,  0
DEFB        0, 16,  0
DEFB       12,  8,  0
DEFB       12,  4,  0
DEFB        0,  4,  0
DEFB      1,2,3,4,5,6,7,8,0,0
MH:
DEFB      6,0
DEFB      -12,-16,  0
DEFB       12,-16,  0
DEFB      -12,  0,  0
DEFB       12,  0,  0
DEFB      -12, 16,  0
DEFB       12, 16,  0
DEFB      1,5,0,2,6,0,3,4,0,0
MJ:
DEFB      4,0
DEFB       12,-16,  0
DEFB       12,  8,  0
DEFB        0, 16,  0
DEFB      -12,  8,  0
DEFB      1,2,3,4,0,0
ML:
DEFB      3,0
DEFB      -12,-16,  0
DEFB      -12, 16,  0
DEFB       12, 16,  0
DEFB      1,2,3,0,0
MM:
DEFB      5,0
DEFB      -12, 16,  0
DEFB       -8,-16,  0
DEFB        0, 16,  0
DEFB        8,-16,  0
DEFB       12, 16,  0
DEFB      1,2,3,4,5,0,0
MN:
DEFB      4,0
DEFB      -12, 16,  0
DEFB      -12,-16,  0
DEFB       12, 16,  0
DEFB       12,-16,  0
DEFB      1,2,3,4,0,0
MP:
DEFB      6,0
DEFB      -12, 16,  0
DEFB      -12,-16,  0
DEFB        0,-16,  0
DEFB       12, -8,  0
DEFB        0,  0,  0
DEFB      -12,  0,  0
DEFB      1,2,3,4,5,6,0,0
MQ:
DEFB      8,0
DEFB        0,-16,  0
DEFB      -12, -8,  0
DEFB      -12,  8,  0
DEFB        0, 16,  0
DEFB       12,  8,  0
DEFB       12, -8,  0
DEFB        0,  8,  0
DEFB       12, 16,  0
DEFB      1,2,3,4,5,6,1,0
DEFB      7,8,0,0
MS:
DEFB      6,0
DEFB       12, -8,  0
DEFB        0,-16,  0
DEFB      -12, -8,  0
DEFB       12,  8,  0
DEFB        0, 16,  0
DEFB      -12,  8,  0
DEFB      1,2,3,4,5,6,0,0
MU:
DEFB      5,0
DEFB      -12,-16,  0
DEFB      -12,  8,  0
DEFB        0, 16,  0
DEFB       12,  8,  0
DEFB       12,-16,  0
DEFB      1,2,3,4,5,0,0
MV:
DEFB      3,0
DEFB      -12,-16,  0
DEFB        0, 16,  0
DEFB       12,-16,  0
DEFB      1,2,3,0,0
MW:
DEFB      5,0
DEFB      -12,-16,  0
DEFB       -8, 16,  0
DEFB        0,-16,  0
DEFB        8, 16,  0
DEFB       12,-16,  0
DEFB      1,2,3,4,5,0,0
MX:
DEFB      4,0
DEFB      -12,-16,  0
DEFB      -12, 16,  0
DEFB       12,-16,  0
DEFB       12, 16,  0
DEFB      1,4,0,2,3,0,0
MZ:
DEFB      4,0
DEFB      -12,-16,  0
DEFB      -12, 16,  0
DEFB       12,-16,  0
DEFB       12, 16,  0
DEFB      1,3,2,4,0,0
M0:
DEFB      6,0
DEFB        0,-16,  0
DEFB       -8, -8,  0
DEFB       -8,  8,  0
DEFB        0, 16,  0
DEFB        8,  8,  0
DEFB        8, -8,  0
DEFB      1,2,3,4,5,6,1,0,0
M1:
DEFB      3,0
DEFB       -4, -8,  0
DEFB        0,-16,  0
DEFB        0, 16,  0
DEFB      1,2,3,0,0
M2:
DEFB      5,0
DEFB       -8, -8,  0
DEFB        0,-16,  0
DEFB        8, -8,  0
DEFB       -8, 16,  0
DEFB        8, 16,  0
DEFB      1,2,3,4,5,0,0
M3:
DEFB      7,0
DEFB       -8, -8,  0
DEFB        0,-16,  0
DEFB        8, -8,  0
DEFB        0,  0,  0
DEFB        8,  8,  0
DEFB        0, 16,  0
DEFB       -8,  8,  0
DEFB      1,2,3,4,5,6,7,0,0
M4:
DEFB      5,0
DEFB        0,-16,  0
DEFB       -8,  8,  0
DEFB        8,  8,  0
DEFB        4, -8,  0
DEFB        4, 16,  0
DEFB      1,2,3,0,4,5,0,0
M5:
DEFB      7,0
DEFB        6,-16,  0
DEFB       -8,-16,  0
DEFB       -8, -4,  0
DEFB        4, -4,  0
DEFB        8,  8,  0
DEFB        0, 16,  0
DEFB       -8, 12,  0
DEFB      1,2,3,4,5,6,7,0,0
M6:
DEFB      8,0
DEFB        8, -8,  0
DEFB        0,-16,  0
DEFB       -8, -8,  0
DEFB       -8,  8,  0
DEFB        0, 16,  0
DEFB        8,  8,  0
DEFB        4,  0,  0
DEFB       -8,  0,  0
DEFB      1,2,3,4,5,6,7,8,0,0
M7:
DEFB      3,0
DEFB       -8,-16,  0
DEFB        8,-16,  0
DEFB        0, 16,  0
DEFB      1,2,3,0,0
M8:
DEFB      6,0
DEFB        0,-16,  0
DEFB       -8, -8,  0
DEFB        8,  8,  0
DEFB        0, 16,  0
DEFB       -8,  8,  0
DEFB        8, -8,  0
DEFB      1,2,3,4,5,6,1,0,0
M9:
DEFB      8,0
DEFB       -8,  8,  0
DEFB        0, 16,  0
DEFB        8,  8,  0
DEFB        8, -8,  0
DEFB        0,-16,  0
DEFB       -8, -8,  0
DEFB       -4,  0,  0
DEFB        8,  0,  0
DEFB      1,2,3,4,5,6,7,8,0,0
;
; MASTER POINT DATA
;
MSDATA:
DEFB      10,0
DEFB      -24,  0, 20
DEFB      -24,-18,-20
DEFB      -24, 20,-20
DEFB      -18,  0,-16
DEFB       24,  0, 20
DEFB       24,-18,-20
DEFB       24, 20,-20
DEFB       18,  0,-16
DEFB        0,-16,-22
DEFB        0,-10, 50
DEFB      1,2,3,1,4,2,0,3,4,9
DEFB      10,4,0,5,6,7,5,8,6,0
DEFB      7,8,10,0,8,9,0,4,8,0,0
;
;---- WRITE LIFE GAGE ----
;
WRLIFE:   PUSH    AF
          PUSH    HL
          LD      HL,0006H
          LD      (LIDAT+4),HL
          LD      H,178
          LD      L,20
          LD      (LIDAT+0),HL
          LD      L,39
          LD      (LIDAT+2),HL
          CALL    LINE
          LD      H,246
          LD      (LIDAT+0),HL
          LD      L,20
          LD      (LIDAT+2),HL
          CALL    LINE
          LD      H,180
          LD      L,30
          LD      (LIDAT+0),HL
          LD      H,244
          LD      (LIDAT+2),HL
          CALL    LINE
          ;
          LD      A,(LIFE)
          RLCA
          RLCA
          ADD     A,180
          LD      H,A
          LD      L,24
          LD      (LIDAT+0),HL
          LD      L,36
          LD      (LIDAT+2),HL
          LD      HL,0009H
          LD      (LIDAT+4),HL
          CALL    LINE
          ;
WSCORE:   CALL    STRIGB
          JR      NZ,RETSC
          LD      HL,(SCORE)
          LD      IX,SCOREM+15
          CALL    CHTEN
          LD      A,(STOCK)
          ADD     A,2FH
          LD      (SCOREM+42),A
          LD      IX,MDSCOR
          CALL    MALTI
RETSC:    POP     HL
          POP     AF
          RET
          ;
SCOREM:   DEFB    'S',20,30,'C',35,30,'O',50,30,'R',65,30,'E',80,30
          DEFB     0,107,30,0,119,30,0,131,30,0,143,30,0,155,30
          DEFB    'L',20,50,'E',35,50,'F',50,50,'T',65,50,'3',107,50,0
          ;
STRIGB:   PUSH    BC
          PUSH    DE
          LD      IY,(0FCC0H)
          LD      IX,00D8H
          LD      A,3
          CALL    001CH
          INC     A
          JR      Z,RETSTR
          LD      A,(0FBE5H+6)
          AND     00000100B
RETSTR:   POP     DE
          POP     BC
          RET
          ;
MDSCOR:   DEFB    1,0,0
          DEFW    SCOREM,MHYOUJ
          DEFB    8,1,0,0,0,0,0,0,00010101B
;
;---- CHANGE TEN ----
;
CHTEN:    PUSH    DE
          LD      DE,10000
          CALL    DOWNGE
          LD      (IX+0),A
          LD      DE,1000
          CALL    DOWNGE
          LD      (IX+3),A
          LD      DE,100
          CALL    DOWNGE
          LD      (IX+6),A
          LD      DE,10
          CALL    DOWNGE
          LD      (IX+9),A
          LD      DE,1
          CALL    DOWNGE
          LD      (IX+12),A
          POP     DE
          RET
          ;
DOWNGE:   XOR     A
          OR      A
          SBC     HL,DE
          JR      C,$+5
          INC     A
          JR      DOWNGE+1
          ADD     HL,DE
          ADD     A,30H
          RET
          ;
END:      EQU     $
