      org $0000
;  reset-vector
_0000  ld   sp,$9100
_0003  jp   _057C

_0006  defb $FF,$FF

_0008  add  a,a       ; rst $08... L:+=2A
_0009  jr   nc,_0010
_000B  inc  h         ; when's this used?
_000C  jp   _0010
_000F  defb $FF
_0010  add  a,l
_0011  ld   l,a
_0012  ret  nc
_0013  inc  h         ; when's this used?
_0014  ret

_0015  defb $FF,$FF,$FF

_0018  ld   (hl),a    ; memset function... when does this get used?
_0019  inc  hl
_001A  djnz _0018
_001C  ret

; data table, s.a. _0908
_001D  defb  $23,$06,$16,$23,$00,$19,$F7,$4B,$00,$23,$F0,$02,$F0,$5E,$00,$23,$F0,$24,$FB,$23,$00 

       defb  $FF,$FF


_0034  jp   (hl)         ; 'call  _0034' s.a. _056A

_0035  defb $FF,$FF,$FF

_0038  jp   _0513        ; rst $38 handler


      ; jp table for tasks of 0038
_003B  defb $BE,$05,$BF,$05,$D3,$08,$BE,$05,$F5,$06,$EE,$05,$BE,$05,$CA,$0E

;; note: _0158 - data table, 2-byte entries, second-byte is an offset into table at $9900, s.a. _0AAA


_004B:
       defb $23,$F0,$26,$23,$14,$13,$FE,$0D,$0B,$0A,$08,$06,$04,$03,$01,$23
       defb $FF,$FF,$FF,$44,$E4,$18,$FB,$44,$00,$FF,$FF,$C9,$23,$08,$08,$23
       defb $03,$1B,$23,$08,$0F,$23,$16,$15,$F7,$84,$00,$23,$16,$03,$F0,$97
       defb $00,$23,$16,$19,$FB,$23,$00,$FF,$FF,$23,$16,$01,$FE,$0D,$0C,$0A
       defb $08,$06,$04,$03,$01,$23,$FC,$30,$23,$00,$FF,$FF,$44,$27,$0E,$FB
       defb $44,$00,$FF,$FF,$33,$06,$18,$23,$00,$18,$F7,$B6,$00,$23,$F0,$08
       defb $F0,$CC,$00,$23,$F0,$20,$FB,$23,$00,$FF,$FF,$23,$F0,$20,$23,$10
       defb $0D,$FE,$1A,$18,$15,$10,$0C,$08,$05,$03,$23,$FE,$30,$23,$00,$FF
       defb $FF,$33,$E0,$10,$FB,$44,$00,$FF,$FF,$23,$03,$18,$33,$04,$10,$23
       defb $08,$0A,$44,$16,$12,$F7,$60,$01,$44,$16,$03,$F0,$73,$01,$44,$16
       defb $1D,$FB,$23,$00,$FF,$FF,$12,$18,$17,$12,$00,$80,$FF,$FF,$FF,$FF
       defb $FF,$FF,$FF,$FF,$FF,$14,$06,$14,$0C,$14,$08,$14,$0A,$1C,$00,$1C
       defb $12,$1E,$00,$1E,$12,$1C,$02,$1C,$10,$1E,$02,$1E,$10,$1C,$04,$1C
       defb $0E,$1E,$04,$1E,$0E,$1C,$06,$1C,$0C,$1E,$06,$1E,$0C,$1C,$08,$1C
       defb $0A,$1E,$08,$1E,$0A,$16,$06,$16,$0C,$16,$08,$16,$0A,$18,$00,$18
       defb $12,$1A,$00,$1A,$12,$18,$02,$18,$10,$1A,$02,$1A,$10,$18,$04,$18
       defb $0E,$1A,$04,$1A,$0E,$18,$06,$18,$0C,$1A,$06,$1A,$0C,$18,$08,$18
       defb $0A,$1A,$08,$1A,$0A,$44,$16,$06,$FE,$0C,$0B,$0A,$08,$06,$04,$02
       defb $01,$23,$FE,$30,$23,$00,$FF,$FF,$66,$20,$14,$FB,$44,$00,$FF,$FF
       defb $23,$06,$18,$23,$00,$18,$F7,$92,$01,$44,$F0,$08,$F0,$A8,$01,$44
       defb $F0,$20,$FB,$23,$00,$FF,$FF,$44,$F0,$26,$23,$10,$0B,$FE,$22,$20
       defb $1E,$1B,$18,$15,$12,$10,$23,$FE,$30,$23,$00,$FF,$FF,$66,$E0,$10
       defb $FB,$44,$00,$FF,$FF,$23,$03,$20,$23,$08,$0F,$23,$16,$12,$F7,$CA
       defb $01,$23,$16,$03,$F0,$E0,$01,$23,$16,$1D,$FB,$23,$00,$FF,$FF,$23
       defb $16,$01,$FE,$0D,$0C,$0B,$09,$07,$05,$03,$02,$23,$02,$20,$23,$FC
       defb $12,$23,$00,$FF,$FF,$44,$20,$14,$FB,$44,$00,$FF,$FF,$23,$00,$10
       defb $23,$01,$40,$22,$0C,$37,$23,$00,$FF,$FF,$23,$02,$3A,$23,$10,$09
       defb $23,$00,$18,$23,$20,$10,$23,$00,$18,$23,$20,$0D,$23,$00,$FF,$FF
       defb $23,$00,$10,$23,$01,$30,$00,$40,$08,$23,$FF,$30,$23,$00,$FF,$FF
       defb $23,$00,$30,$23,$05,$80,$23,$05,$4C,$23,$04,$01,$23,$00,$50,$FF
       defb $23,$00,$28,$23,$06,$1D,$23,$00,$11,$00,$40,$08,$23,$00,$11,$23
       defb $FA,$1D,$23,$00,$50,$FF,$23,$00,$21,$00,$20,$10,$23,$F8,$20,$23
       defb $FF,$20,$23,$F8,$1B,$23,$E8,$0B,$23,$00,$21,$00,$20,$08,$23,$00
       defb $42,$FF,$23,$00,$08,$00,$20,$08,$23,$F0,$20,$23,$10,$20,$23,$F0
       defb $40,$23,$10,$20,$23,$F0,$20,$00,$20,$08,$23,$00,$30,$FF,$23,$10
       defb $0C,$23,$00,$20,$23,$E8,$10,$23,$F4,$10,$23,$E8,$10,$23,$F4,$32
       defb $23,$E8,$10,$23,$F4,$32,$23,$E8,$10,$23,$F4,$10,$23,$E8,$0E,$23
       defb $02,$30,$FF,$23,$F1,$08,$23,$00,$10,$23,$05,$3C,$23,$07,$42,$23
       defb $0A,$40,$23,$10,$2D,$23,$20,$19,$00,$FC,$14,$23,$02,$4A,$FF,$23
       defb $04,$20,$23,$00,$16,$23,$F0,$30,$23,$00,$12,$23,$10,$30,$23,$00
       defb $12,$23,$10,$30,$23,$00,$16,$23,$04,$20,$23,$00,$10,$FF,$23,$00
       defb $15,$00,$20,$08,$23,$00,$11,$00,$E0,$08,$23,$00,$18,$00,$20,$08
       defb $23,$00,$13,$00,$E0,$08,$23,$00,$1F,$00,$20,$08,$23,$00,$30,$FF
       defb $23,$02,$0E,$23,$00,$34,$23,$12,$19,$23,$00,$20,$23,$E0,$0E,$23
       defb $00,$12,$23,$20,$0E,$23,$00,$0C,$23,$E0,$0E,$23,$1B,$08,$23,$00
       defb $10,$FF,$23,$00,$0D,$00,$C0,$04,$23,$00,$21,$00,$40,$06,$23,$00
       defb $51,$00,$C0,$06,$23,$00,$73,$FF,$23,$08,$20,$23,$00,$16,$23,$E0
       defb $0C,$23,$02,$0B,$23,$11,$0C,$23,$02,$0B,$23,$E0,$0C,$23,$00,$16
       defb $23,$08,$20,$FF,$12,$18,$1E,$12,$00,$34,$12,$FB,$26,$12,$00,$02
       defb $FC,$2E,$12,$FA,$3C,$FA,$9E,$03,$12,$F8,$10,$12,$FA,$5C,$12,$00
       defb $23,$F8,$F9,$EF,$7C,$03,$F6,$AB,$12,$01,$28,$12,$0A,$18,$FD,$52
       defb $03,$F6,$B0,$23,$08,$1E,$23,$00,$19,$23,$F8,$16,$23,$00,$02,$FC
       defb $30,$23,$F7,$26,$FA,$9E,$03,$23,$F0,$0A,$23,$F5,$31,$23,$00,$10
       defb $FD,$6C,$03,$12,$F8,$10,$12,$00,$40,$FB,$12,$00,$FF,$FF,$12,$18
       defb $1D,$12,$00,$28,$12,$FA,$02,$F3,$3F,$3B,$36,$32,$28,$26,$24,$22
       defb $12,$04,$30,$12,$FC,$30,$12,$00,$18,$F8,$F9,$FA,$0C,$04,$EF,$D7
       defb $03,$F6,$B0,$12,$01,$28,$12,$0A,$15,$FD,$AC,$03,$F6,$C0,$23,$08
       defb $10,$23,$00,$23,$23,$F8,$0F,$23,$00,$48,$F8,$F9,$FA,$0C,$04,$F6
       defb $B0,$23,$08,$20,$23,$00,$08,$23,$F8,$02,$F3,$34,$31,$2D,$29,$22
       defb $26,$1F,$18,$23,$08,$18,$23,$F8,$18,$23,$00,$10,$F8,$F9,$FD,$CC
       defb $03,$FB,$12,$00,$FF,$FF,$12,$18,$14,$12,$03,$2A,$12,$10,$40,$12
       defb $01,$20,$12,$FE,$71,$F9,$F1,$FA,$0C,$04,$EF,$30,$04,$F6,$AB,$12
       defb $02,$20,$FD,$14,$04,$F6,$B0,$23,$04,$1A,$23,$03,$1D,$23,$1A,$25
       defb $23,$03,$10,$23,$FD,$48,$FD,$20,$04,$12,$18,$14,$12,$03,$2A,$12
       defb $10,$40,$12,$01,$20,$12,$FE,$78,$FF,$12,$18,$14,$F4,$12,$00,$04
       defb $FC,$48,$00,$FC,$FF,$23,$00,$30,$F8,$F9,$FA,$0C,$04,$FD,$25,$04
       defb $12,$18,$14,$FB,$12,$00,$FF,$FF,$12,$18,$1E,$12,$00,$08,$F2,$99
       defb $04,$00,$00,$0A,$F2,$99,$04,$00,$00,$0A,$12,$00,$2C,$12,$FB,$26
       defb $12,$00,$02,$FC,$2E,$12,$FA,$3C,$FA,$9E,$03,$FD,$63,$03,$12,$00
       defb $2C,$12,$FB,$26,$12,$00,$02,$FC,$2E,$12,$FA,$18,$12,$00,$10,$FF
       defb $12,$18,$13,$F2,$C6,$04,$00,$00,$08,$F2,$CF,$04,$00,$00,$08,$12
       defb $18,$0B,$12,$00,$34,$12,$FB,$26,$FD,$58,$03,$12,$00,$10,$12,$18
       defb $0B,$FD,$D8,$04,$12,$00,$08,$12,$18,$0B,$12,$00,$06,$12,$00,$22
       defb $12,$FB,$26,$12,$00,$02,$FC,$2E,$12,$FA,$18,$12,$00,$20,$FF,$12
       defb $18,$1E,$12,$00,$14,$F2,$02,$05,$12,$00,$08,$F2,$02,$05,$12,$00
       defb $18,$12,$FB,$26,$FD,$58,$03,$12,$E2,$01,$F3,$08,$07,$06,$05,$04
       defb $03,$02,$01,$F5,$23,$00,$48,$FF


;       org $0513
_0513  xor  a            ; vector from int $0038
_0514  ld   ($6821),a
_0517  ld   a,($6804)
_051A  and  $02
_051C  jp   z,_0575
_051F  ld   a,($92A0)
_0522  inc  a
_0523  ld   ($92A0),a
_0526  ld   hl,($92A1)
_0529  and  $1F
_052B  dec  a
_052C  jr   z,_0536
_052E  inc  a
_052F  jr   nz,_0537
_0531  ld   a,h
_0532  or   $01
_0534  ld   h,a
_0535  inc  l
_0536  inc  h
_0537  ld   ($92A1),hl
_053A  ld   a,($99C7)
_053D  ld   e,a
_053E  ld   a,($92A7)
_0541  cp   e
_0542  rl   b
_0544  ld   a,($9015)
_0547  and  b
_0548  and  $01
_054A  ld   ($92AA),a
_054D  ld   c,$00
_054F  ld   hl,$9020
_0552  ld   a,c
_0553  add  a,l
_0554  ld   l,a
_0555  ld   a,(hl)
_0556  and  a
_0557  jr   nz,_055C
_0559  inc  c
_055A  jr   _054F
_055C  ld   b,a
_055D  ld   hl,_003B       ; main jp table is at _003B
_0560  ld   a,c
_0561  sla  a
_0563  add  a,l
_0564  ld   l,a
_0565  ld   e,(hl)
_0566  inc  hl
_0567  ld   d,(hl)
_0568  ex   de,hl
_0569  push bc
_056A  call _0034
_056D  pop  bc
_056E  ld   a,b
_056F  add  a,c
_0570  ld   c,a
_0571  and  $F8
_0573  jr   z,_054F
_0575  ld   a,$01
_0577  ld   ($6821),a
_057A  ei
_057B  ret



_057C  ld   de,$9100   ; extension of reset-vector, s.a. _0003
_057F  ld   a,(de)
_0580  and  a
_0581  jr   nz,_057F
_0583  ld   h,a
_0584  ld   l,a
_0585  ld   bc,$0010
_0588  add  a,(hl)
_0589  inc  hl
_058A  djnz _0588
_058C  dec  c
_058D  jr   nz,_0588
_058F  cp   $FF
_0591  jr   _0595        ; PATCH: jr   z,_0595
_0593  ld   a,$11       ; when jr not taken? when "checksum" fail, write a $11
_0595  ld   (de),a
_0596  ld   a,(de)
_0597  and  a
_0598  jr   nz,_0596
_059A  im   1
_059C  xor  a
_059D  ld   ($89E0),a
_05A0  ld   hl,$05B7    ; data table
_05A3  ld   de,$9021
_05A6  ld   bc,$0007
_05A9  ldir
_05AB  ld   a,$01
_05AD  ld   ($6821),a
_05B0  ei
_05B1  ld   sp,$9100
_05B4  jp   _05B1         ; looks like we spin here till int $38 occurs


_05B7  defb $01,$01,$00,$01,$01,$00,$0A   ; 7 bytes to copy, s.a. _05A0


_05BE  ret  ; this is a main  task (does nothing) but never seem to get called


; main task
; works in conjunction with task _0828 of CPU0 to update sprite RAM
_05BF  ld   a,$01       
_05C1  ld   ($92D7),a
_05C4  ld   hl,$8B00    ; sprite code/color (buffer)
_05C7  ld   de,$8B80
_05CA  ld   bc,$0040
_05CD  ldir
_05CF  ld   hl,$9300    ; sprite position (buffer)
_05D2  ld   de,$9380
_05D5  ld   c,$40
_05D7  ldir
_05D9  ld   hl,$9B00    ; sprite control (buffer)
_05DC  ld   de,$9B80
_05DF  ld   c,$40
_05E1  ldir
_05E3  xor  a
_05E4  ld   ($92D7),a
_05E7  ld   a,($92D6)
_05EA  dec  a
_05EB  jr   z,_05E7
_05ED  ret


_05EE  ld   a,($9014)     ; main task
_05F1  and  a
_05F2  ret  z
_05F3  ld   ($9217),a
_05F6  ld   a,($9827)
_05F9  and  a
_05FA  jr   z,_0613
_05FC  ld   hl,$9360      ; in sprite-pos buffer
_05FF  ld   a,(hl)
_0600  and  a
_0601  jr   z,_0613
_0603  call _0681
_0606  ld   a,($99BF)
_0609  and  a
_060A  jr   z,_0613
_060C  call _0649         ; when jr not taken?
_060F  xor  a
_0610  ld   ($982B),a
_0613  ld   hl,$9362      ; in sprite-pos buffer
_0616  ld   a,(hl)
_0617  and  a
_0618  ret  z
_0619  call _0681
_061C  ld   a,($99BF)
_061F  and  a
_0620  ret  z
_0621  ld   a,($9827)
_0624  and  a
_0625  jr   z,_0639
_0627  xor  a
_0628  ld   ($982B),a
_062B  ld   a,($9360)
_062E  ld   ($9362),a
_0631  ld   a,($93E2)
_0634  ld   hl,$93E0        ; in sprite-pos RAM
_0637  jr   _064F
_0639  xor  a
_063A  ld   ($9014),a
_063D  ld   ($9015),a
_0640  ld   ($9025),a
_0643  ld   ($99B9),a
_0646  ld   ($9217),a
_0649  ex   de,hl
_064A  ld   h,$93
_064C  set  7,l
_064E  ld   a,(hl)
_064F  sub  $08
_0651  res  7,l
_0653  ld   (hl),a
_0654  inc  l
_0655  ld   a,(hl)
_0656  sub  $08
_0658  ld   (hl),a
_0659  ld   h,$8B
_065B  ld   (hl),$0B
_065D  dec  l
_065E  ld   (hl),$20
_0660  ld   h,$88
_0662  ld   (hl),$08
_0664  inc  l
_0665  ld   (hl),$0F
_0667  dec  l
_0668  ld   h,$9B
_066A  ld   (hl),$0C
_066C  xor  a
_066D  ld   ($9827),a
_0670  ld   a,($9201)
_0673  dec  a
_0674  ld   ($9AB9),a
_0677  ld   a,($9217)
_067A  and  a
_067B  ret  nz
_067C  inc  a
_067D  ld   ($9213),a
_0680  ret
_0681  xor  a
_0682  ld   ($99BF),a
_0685  ld   h,$88
_0687  ld   a,(hl)
_0688  ld   h,$93
_068A  cp   $08
_068C  ret  z
_068D  ld   a,(hl)
_068E  ld   ixl,a
_0690  inc  l
_0691  ld   b,(hl)
_0692  ld   h,$9B
_0694  ld   a,(hl)
_0695  rrca
_0696  rr   b
_0698  ld   ixh,b
_069A  dec  l
_069B  ld   e,l
_069C  ld   a,($9008)
_069F  and  a
_06A0  jr   z,_06A8
_06A2  ld   l,$38     ; when jr not taken?
_06A4  ld   b,$04
_06A6  jr   _06AC
_06A8  ld   l,$00
_06AA  ld   b,$30
_06AC  call _06B7
_06AF  ld   l,$68
_06B1  ld   b,$08
_06B3  call _06B7
_06B6  ret


_06B7  ld   h,$92     ; begin 'call $06B7', s.a. 06AC
_06B9  ld   a,(hl)
_06BA  ld   h,$88
_06BC  or   (hl)
_06BD  rlca
_06BE  jr   c,_06F0
_06C0  ld   a,(hl)
_06C1  and  $FE
_06C3  cp   $04
_06C5  jr   z,_06F0
_06C7  ld   h,$93
_06C9  ld   a,(hl)
_06CA  and  a
_06CB  jr   z,_06F0
_06CD  sub  ixl
_06CF  sub  $07
_06D1  add  a,$0D
_06D3  jr   nc,_06F0
_06D5  inc  l
_06D6  ld   a,(hl)
_06D7  ld   h,$9B
_06D9  ld   c,(hl)
_06DA  dec  l
_06DB  rrc  c
_06DD  rra
_06DE  sub  ixh
_06E0  sub  $04
_06E2  add  a,$07
_06E4  jr   nc,_06F0
_06E6  ld   a,$01
_06E8  ld   ($99BF),a
_06EB  or   a
_06EC  ex   af,af'
_06ED  jp   _07C2
_06F0  inc  l
_06F1  inc  l
_06F2  djnz _06B7
_06F4  ret                ; end 'call _06B7', 


_06F5  ld   de,$92A4      ; main task
_06F8  ld   hl,$9364      ; in sprite-pos buffer
_06FB  call _0704
_06FE  ld   de,$92A5
_0701  ld   hl,$9366      ; in sprite-pos buffer
_0704  ld   a,(hl)
_0705  and  a
_0706  ret  z
_0707  ld   a,(de)
_0708  ld   b,a
_0709  and  $07
_070B  ex   af,af'
_070C  ld   a,$06
_070E  bit  7,b
_0710  jr   z,_0713
_0712  ex   af,af'
_0713  bit  6,b
_0715  jr   z,_0719
_0717  neg
_0719  add  a,(hl)
_071A  ld   (hl),a
_071B  cp   $F0
_071D  jr   nc,_0763
_071F  ld   ixl,a
_0721  inc  l
_0722  ex   af,af'
_0723  bit  5,b
_0725  jr   z,_0729
_0727  neg
_0729  ld   c,a
_072A  add  a,(hl)
_072B  ld   (hl),a
_072C  rra
_072D  xor  c
_072E  ld   h,$9B
_0730  rlca
_0731  jr   nc,_0738
_0733  rrc  (hl)
_0735  ccf
_0736  rl   (hl)
_0738  ld   c,(hl)
_0739  ld   h,$93
_073B  ld   a,(hl)
_073C  rrc  c
_073E  rra
_073F  ld   ixh,a
_0741  cp   $14
_0743  jr   c,_0760
_0745  cp   $9C
_0747  jr   nc,_0760
_0749  ld   e,l
_074A  ld   a,($901D)
_074D  and  a
_074E  jr   z,_0757
_0750  ld   hl,$9308    ; when jr not taken?
_0753  ld   b,$2C
_0755  jr   _075C
_0757  ld   hl,$9300    ; sprite-pos buffer
_075A  ld   b,$30
_075C  call _076A
_075F  ret

_0760  dec  l          ; jr here, s.a. 0743, 0747
_0761  ld   h,$93
_0763  ld   (hl),$00
_0765  ld   h,$9B
_0767  ld   (hl),$00
_0769  ret


_076A  ld   h,$92      ; begin 'call $076A', s.a. 075C
_076C  ld   a,(hl)
_076D  ld   h,$88
_076F  or   (hl)
_0770  rlca
_0771  jr   c,_07B4
_0773  ld   a,(hl)
_0774  ld   c,a
_0775  and  $FE
_0777  cp   $04
_0779  jr   z,_07B4
_077B  inc  l
_077C  ld   h,$9B
_077E  ld   d,(hl)
_077F  ld   h,$93
_0781  ld   a,(hl)
_0782  rrc  d
_0784  rra
_0785  dec  l
_0786  sub  ixh
_0788  sub  $03
_078A  add  a,$06
_078C  jr   nc,_07B4
_078E  ld   a,c
_078F  dec  a
_0790  and  $FE
_0792  ex   af,af'
_0793  ld   a,($9827)
_0796  and  a
_0797  ld   a,(hl)
_0798  jr   nz,_07A4
_079A  sub  ixl
_079C  sub  $06
_079E  add  a,$0B
_07A0  jr   c,_07B9
_07A2  jr   _07B4
_07A4  sub  ixl
_07A6  sub  $14
_07A8  add  a,$0B
_07AA  jr   c,_07B9
_07AC  add  a,$04
_07AE  jr   c,_07B4
_07B0  add  a,$0B
_07B2  jr   c,_07B9
_07B4  inc  l         ; s.a. _08D0
_07B5  inc  l
_07B6  djnz _076A
_07B8  ret

_07B9  ld   a,l        ; jr here, s.a. 07AA, 07B2
_07BA  ld   hl,($9844)
_07BD  inc  hl
_07BE  ld   ($9844),hl
_07C1  ld   l,a
_07C2  ld   d,$93
_07C4  xor  a
_07C5  ld   (de),a
_07C6  ld   d,$9B
_07C8  ld   (de),a
_07C9  inc  l
_07CA  ld   h,$8B
_07CC  ld   a,(hl)
_07CD  ld   c,a
_07CE  and  a
_07CF  jp   z,_08CA
_07D2  dec  l
_07D3  cp   $0B
_07D5  jr   z,_0815

_07D7  ex   af,af'      ; the following not used in game?
_07D8  jr   nz,_081E
_07DA  ex   af,af'
_07DB  ld   h,$92
_07DD  ld   (hl),$81
_07DF  ld   a,($9828)   ; jr here, s.a. _08B3,_0847,_08B3
_07E2  sub  l
_07E3  jr   nz,_07EC
_07E5  ld   ($982B),a   ; when not jr?
_07E8  inc  a
_07E9  ld   ($9828),a
_07EC  push hl
_07ED  ld   a,c
_07EE  cp   $07
_07F0  jr   nz,_07F5
_07F2  dec  a           ; when not jr?
_07F3  jr   _07F8
_07F5  dec  a
_07F6  and  $03
_07F8  ld   hl,$9AA1
_07FB  rst  $10
_07FC  ld   (hl),$01
_07FE  ld   a,c
_07FF  cp   $07
_0801  jr   nz,_0808
_0803  ld   hl,$982B    ; when not jr?
_0806  ld   (hl),$00
_0808  ld   hl,$9290
_080B  rst  $10
_080C  inc  (hl)
_080D  ex   af,af'
_080E  jr   z,_0811
_0810  inc  (hl)
_0811  pop  hl
_0812  jp   _07B4

_0815  ld   h,$93       ; when? in game? s.a. _07D5
_0817  ld   (hl),$00
_0819  ld   h,$88
_081B  ld   (hl),$80
_081D  ret              ; end to 'call _076A' apparently
; nothing from here till _08D3 seem to get used in game


_081E  ld   h,$88       ; jr here from _07D8...  first wave on demo has entered and crossed
_0820  push hl
_0821  ex   af,af'
_0822  inc  l
_0823  ld   a,(hl)
_0824  ld   h,$91
_0826  add  a,$13
_0828  ld   l,a
_0829  ld   (hl),$00
_082B  ld   hl,$9288
_082E  inc  (hl)
_082F  ld   hl,$92A8
_0832  dec  (hl)
_0833  pop  hl
_0834  jr   nz,_0849
_0836  ld   h,$92       ; when not jr?
_0838  ld   a,($9285)
_083B  ld   (hl),a
_083C  ld   a,($9284)
_083F  ld   h,a
_0840  ld   a,($929F)
_0843  add  a,h
_0844  ld   ($929F),a
_0847  jr   _07DF

_0849  ld   a,c
_084A  cp   $07
_084C  jr   nz,_0852
_084E  ld   d,$B8      ; when not jr?
_0850  jr   _08B0
_0852  ld   a,($982D)
_0855  cp   l
_0856  jp   z,_08B6
_0859  ld   a,l
_085A  and  $38
_085C  cp   $38
_085E  jp   z,_08B6
_0861  ld   a,c
_0862  cp   $01
_0864  jp   nz,_07DB
_0867  push de
_0868  ld   a,l
_0869  and  $07
_086B  ld   e,a
_086C  ld   d,$88
_086E  ld   a,(de)
_086F  cp   $09
_0871  jr   nz,_0899
_0873  push hl
_0874  ex   de,hl
_0875  inc  l
_0876  ld   a,(hl)
_0877  add  a,$13
_0879  ld   e,a
_087A  ld   d,$91
_087C  xor  a
_087D  ld   (de),a
_087E  ld   h,$8B
_0880  ld   (hl),$09
_0882  dec  l
_0883  ld   a,l
_0884  ld   ($9828),a
_0887  ld   h,$88
_0889  xor  a
_088A  ld   (hl),a
_088B  ld   ($928B),a
_088E  inc  a
_088F  ld   ($901D),a
_0892  ld   ($928D),a
_0895  ld   ($9AB1),a
_0898  pop  hl
_0899  pop  de
_089A  push hl
_089B  ld   a,$06
_089D  ld   ($92AD),a
_08A0  ld   a,l
_08A1  and  $07
_08A3  ld   hl,$9830
_08A6  rst  $10
_08A7  ld   a,(hl)
_08A8  inc  l
_08A9  ld   d,(hl)
_08AA  ld   hl,$929F  ; jp here, s.a. _08C7
_08AD  add  a,(hl)
_08AE  ld   (hl),a
_08AF  pop  hl
_08B0  ld   h,$92
_08B2  ld   (hl),d
_08B3  jp   _07DF


_08B6  push hl        ; jr here, s.a. _0856
_08B7  ld   hl,$99B0
_08BA  dec  (hl)
_08BB  pop  hl
_08BC  jp   nz,_07DB
_08BF  ld   a,($99B2)
_08C2  ld   d,a
_08C3  ld   a,($99B1)
_08C6  push hl
_08C7  jp   _08AA


_08CA  inc  a         ; s.a. _07CF
_08CB  ld   (hl),a
_08CC  ld   ($9AA4),a
_08CF  dec  l
_08D0  jp   _07B4


_08D3  ld   ix,$9100        ; main task
_08D7  ld   a,$0C
_08D9  ld   ($9289),a
_08DC  ld   hl,$9286
_08DF  ld   a,(hl)
_08E0  ld   (hl),$00
_08E2  inc  hl
_08E3  ld   (hl),a
_08E4  bit  0,(ix+$13)      ; s.a. _0E05
_08E8  jp   z,_0DFB
_08EB  ld   hl,$9286        ; just starting demo-mode
_08EE  inc  (hl)
_08EF  ld   l,(ix+$10)
_08F2  ld   h,$88
_08F4  ld   a,(hl)
_08F5  cp   $03
_08F7  jr   z,_0902
_08F9  cp   $09
_08FB  jr   z,_0902
_08FD  cp   $07
_08FF  jp   nz,_0E49
_0902  dec  (ix+$0d)
_0905  jp   nz,_0C05
_0908  ld   l,(ix+$08)      ; ix==$9100?
_090B  ld   h,(ix+$09)
_090E  ld   a,(hl)          ; HL==$1D?   jp here
_090F  cp   $EF
_0911  jp   c,_0BDC
_0914  push hl
_0915  cpl
_0916  ld   hl,_0920   ; ld address of jp table
_0919  rst  $08
_091A  ld   a,(hl)
_091B  inc  hl
_091C  ld   h,(hl)
_091D  ld   l,a
_091E  ex   (sp),hl
_091F  ret             ; this comes in on demo, first-wave enters and first shot is hit
                       ; ret'd address is ld'd from _0920 and put at (sp)

_0920 ; jp table, see also _0916  
      defb $49,$0E,$16,$0B,$46,$0B,$4E,$0B,$A0,$0A,$D1,$0B,$5F,$0B,$87,$0B
      defb $98,$0B,$A8,$0B,$42,$09,$53,$0A,$01,$0A,$7B,$09,$68,$09,$55,$09
      defb $4E,$09


_0942  ld   e,(ix+$10)   ; subtask of _08D3, not used?
_0945  ld   d,$88
_0947  ld   a,$03
_0949  ld   (de),a
_094A  inc  hl
_094B  jp   _090E


_094E  ld   a,($99C9)    ; subtask of _08D3, not used?
_0951  and  a
_0952  jp   _0959


_0955  ld   a,($99C8)    ;  subtask of _08D3 ... first wave of demo on screen diving
_0958  and  a
_0959  jr   z,_0963
_095B  inc  hl           ; when?
_095C  ld   a,(hl)
_095D  inc  hl
_095E  ld   h,(hl)
_095F  ld   l,a
_0960  jp   _0B8C


_0963  inc  hl           ; s.a. _0959
_0964  inc  hl
_0965  jp   _0B8B


_0968  ld   e,(ix+$10)   ; end part _08D3 (not used in game?)
_096B  ld   d,$01
_096D  ld   a,(de)
_096E  ld   e,a
_096F  ld   d,$99
_0971  inc  e
_0972  ld   a,(de)
_0973  add  a,$20
_0975  ld   (ix+$01),a
_0978  jp   _0B8B


_097B  push hl           ; subtask of _08D3, not used?
_097C  ld   e,(ix+$10)
_097F  ld   hl,$8838
_0982  ld   b,$04
_0984  ld   a,(hl)
_0985  rlca
_0986  jr   c,_098F
_0988  inc  l
_0989  inc  l
_098A  djnz _0984
_098C  jp   _09FA


_098F  ld   h,$8B
_0991  ld   d,h
_0992  ld   a,(de)
_0993  ld   (hl),a
_0994  inc  l
_0995  inc  e
_0996  ld   a,(de)
_0997  ld   (hl),a
_0998  dec  l
_0999  ld   a,l
_099A  ex   af,af'
_099B  ld   hl,$91EF
_099E  ld   de,$FFEC
_09A1  ld   b,$0C
_09A3  ld   a,(hl)
_09A4  and  $01
_09A6  jr   z,_09AE
_09A8  add  hl,de
_09A9  djnz _09A3
_09AB  jp   _09FA


_09AE  add  hl,de
_09AF  inc  hl
_09B0  ld   a,(ix+$00)
_09B3  ld   e,ixl
_09B5  ld   d,ixh
_09B7  ex   de,hl
_09B8  defb $FD,$6B     ; TODO: z80-asm ... ld   iyl,e
_09BA  defb $FD,$62     ; TODO: z80-asm ... ld   iyh,d
_09BC  ld   bc,$0006
_09BF  ldir
_09C1  ld   c,$06
_09C3  add  hl,bc
_09C4  ex   de,hl
_09C5  add  hl,de
_09C6  ex   de,hl
_09C7  ld   c,$04
_09C9  ldir
_09CB  ld   a,(ix+$13)
_09CE  ld   (iy+$13),a
_09D1  pop  hl
_09D2  inc  hl
_09D3  ld   a,(hl)
_09D4  ld   (iy+$08),a
_09D7  inc  hl
_09D8  ld   a,(hl)
_09D9  ld   (iy+$09),a
_09DC  ld   (iy+$0a),$01
_09E0  ld   (iy+$0b),$02
_09E4  ld   (iy+$0d),$01
_09E8  ex   af,af'
_09E9  ld   (iy+$10),a
_09EC  ld   e,a
_09ED  ld   d,$88
_09EF  ld   a,$09
_09F1  ld   (de),a
_09F2  inc  e
_09F3  defb $FD,$7D      ; TODO: z80-asm ...ld   a,iyl
_09F5  ld   (de),a
_09F6  inc  hl
_09F7  jp   _090E


_09FA  pop  hl
_09FB  inc  hl
_09FC  inc  hl
_09FD  inc  hl
_09FE  jp   _090E


_0A01  push hl            ; subtask of _08D3
_0A02  ex   de,hl
_0A03  ld   a,($9215)
_0A06  ld   c,a
_0A07  ld   a,($9362)
_0A0A  cp   $1E           ; end part _08D3
_0A0C  jr   nc,_0A10
_0A0E  ld   a,$1E         ; when not jr?
_0A10  cp   $D1
_0A12  jr   c,_0A16
_0A14  ld   a,$D1         ; when not jr?
_0A16  bit  0,c
_0A18  jr   z,_0A1E
_0A1A  add  a,$0E         ; when not jr?
_0A1C  neg
_0A1E  srl  a
_0A20  sub  (ix+$03)
_0A23  rra
_0A24  bit  7,(ix+$13)
_0A28  jr   z,_0A2C
_0A2A  neg
_0A2C  add  a,$18
_0A2E  jp   p,_0A32
_0A31  xor  a            ; when not jp?
_0A32  cp   $30
_0A34  jr   c,_0A38
_0A36  ld   a,$2F        ; when not jr?
_0A38  ld   h,a
_0A39  ld   a,$06
_0A3B  call _0EAA
_0A3E  ld   a,h
_0A3F  inc  a
_0A40  ex   de,hl
_0A41  rst  $10
_0A42  ld   a,(hl)
_0A43  ld   (ix+$0d),a
_0A46  pop  hl
_0A47  ld   a,$09
_0A49  rst  $10
_0A4A  ld   (ix+$08),l
_0A4D  ld   (ix+$09),h
_0A50  jp   _0BFF

_0A53  push hl            ; subtask of _08D3
_0A54  ld   a,($9215)
_0A57  ld   c,a
_0A58  ld   a,($9362)
_0A5B  add  a,$03
_0A5D  and  $F8
_0A5F  inc  a
_0A60  cp   $29
_0A62  jr   nc,_0A66
_0A64  ld   a,$29         ; when not jr?
_0A66  cp   $CA
_0A68  jr   c,_0A6C
_0A6A  ld   a,$C9         ; when not jr?
_0A6C  bit  0,c
_0A6E  jr   z,_0A73
_0A70  add  a,$0D         ; when not jr?
_0A72  cpl
_0A73  ld   ($928A),a
_0A76  srl  a
_0A78  ld   e,a
_0A79  ld   d,$48
_0A7B  ld   h,(ix+$01)
_0A7E  ld   l,(ix+$03)
_0A81  call _0E5B
_0A84  srl  h
_0A86  rr   l
_0A88  ld   (ix+$04),l
_0A8B  ld   (ix+$05),h
_0A8E  xor  a
_0A8F  ld   ($928B),a
_0A92  inc  a
_0A93  ld   ($9019),a
_0A96  ld   a,ixl
_0A98  ld   ($9829),a
_0A9B  pop  hl
_0A9C  inc  hl
_0A9D  jp   _090E


_0AA0  push hl           ; subtask of _08D3, s.a. _091F ... first demo wave has turned to head home
_0AA1  ld   l,(ix+$10)
_0AA4  ld   h,$88
_0AA6  ld   (hl),$09
_0AA8  ld   h,$01
_0AAA  ld   c,(hl)
_0AAB  inc  l
_0AAC  ld   l,(hl)
_0AAD  ld   h,$99
_0AAF  ld   b,(hl)
_0AB0  inc  l
_0AB1  ld   e,(hl)
_0AB2  ld   l,c
_0AB3  ld   c,(hl)
_0AB4  inc  l
_0AB5  ld   d,(hl)
_0AB6  srl  e
_0AB8  push de
_0AB9  ld   (ix+$11),b
_0ABC  ld   (ix+$12),c
_0ABF  ld   a,($9215)
_0AC2  and  a
_0AC3  jr   z,_0ACD
_0AC5  ld   a,b        ; when?
_0AC6  neg
_0AC8  ld   b,a
_0AC9  ld   a,c
_0ACA  neg
_0ACC  ld   c,a
_0ACD  ld   l,(ix+$00) ; s.a. _0AC3
_0AD0  ld   h,(ix+$01)
_0AD3  ld   d,c
_0AD4  ld   e,$00
_0AD6  sra  d
_0AD8  rr   e
_0ADA  add  hl,de
_0ADB  ld   (ix+$00),l
_0ADE  ld   (ix+$01),h
_0AE1  ld   e,h
_0AE2  ld   l,(ix+$02)
_0AE5  ld   h,(ix+$03)
_0AE8  ld   c,$00
_0AEA  sra  b
_0AEC  rr   c
_0AEE  sbc  hl,bc
_0AF0  ld   (ix+$02),l
_0AF3  ld   (ix+$03),h
_0AF6  ld   l,h
_0AF7  ld   h,e
_0AF8  ld   c,d
_0AF9  pop  de
_0AFA  call _0E5B
_0AFD  srl  h
_0AFF  rr   l
_0B01  ld   (ix+$04),l
_0B04  ld   (ix+$05),h
_0B07  ld   (ix+$06),d
_0B0A  ld   (ix+$07),e
_0B0D  set  6,(ix+$13)
_0B11  pop  hl
_0B12  inc  hl
_0B13  jp   _090E


_0B16  push hl          ; subtask of  _08D3, but not used?
_0B17  ex   de,hl
_0B18  ld   a,($9215)
_0B1B  rrca
_0B1C  ld   b,(ix+$13)
_0B1F  xor  b
_0B20  rlca
_0B21  ld   a,($93E2)
_0B24  inc  a
_0B25  dec  a
_0B26  jr   nz,_0B2A
_0B28  ld   a,$80
_0B2A  jr   c,_0B30
_0B2C  neg
_0B2E  add  a,$F2
_0B30  add  a,$0E
_0B32  ld   h,a
_0B33  ld   a,$1E
_0B35  call _0EAA
_0B38  ld   a,h
_0B39  ex   de,hl
_0B3A  rst  $10
_0B3B  ld   a,(hl)
_0B3C  ld   (ix+$0d),a
_0B3F  pop  hl
_0B40  ld   a,$09
_0B42  rst  $10
_0B43  jp   _0BFF


_0B46  inc  hl          ; subtask of _08D3
_0B47  ld   e,(hl)
_0B48  inc  hl
_0B49  ld   d,(hl)
_0B4A  ex   de,hl
_0B4B  jp   _090E


_0B4E  inc  hl          ; subtask of _08D3, but not used?
_0B4F  ld   e,(hl)
_0B50  inc  hl
_0B51  ld   (ix+$06),e
_0B54  ld   (ix+$07),$00
_0B58  set  5,(ix+$13)
_0B5C  jp   _0BFF


_0B5F  ld   a,($9215)   ; subtask of _08D3
_0B62  ld   c,a
_0B63  ld   e,(ix+$10)
_0B66  inc  e
_0B67  ld   d,$01
_0B69  ld   a,(de)
_0B6A  ld   e,a
_0B6B  ld   d,$98
_0B6D  ld   a,(de)
_0B6E  bit  0,c
_0B70  jr   z,_0B76
_0B72  add  a,$0E         ; when not jr?
_0B74  neg
_0B76  srl  a
_0B78  ld   (ix+$03),a
_0B7B  ld   a,($92AA)
_0B7E  and  a
_0B7F  jp   z,_0B8B
_0B82  ld   ($9AB3),a
_0B85  jr   _0B8B


_0B87  ld   (ix+$01),$9C  ; subtask of _08D3
_0B8B  inc  hl            ; jr here, s.a. _0B7F,_0B85,_0965,_0BCE
_0B8C  ld   (ix+$08),l
_0B8F  ld   (ix+$09),h
_0B92  inc  (ix+$0d)
_0B95  jp   _0DFB


_0B98  ld   a,(ix+$10)    ; subtask of _08D3
_0B9B  and  $38
_0B9D  cp   $38
_0B9F  jp   z,_0B46       ; s.a. _0BDA
_0BA2  inc  hl
_0BA3  inc  hl
_0BA4  inc  hl
_0BA5  jp   _090E


_0BA8  inc  hl            ; subtask of _08D3, not used?
_0BA9  ld   a,(hl)
_0BAA  bit  7,(ix+$13)
_0BAE  jr   z,_0BB4
_0BB0  add  a,$80
_0BB2  neg
_0BB4  ld   c,$00
_0BB6  sla  a
_0BB8  rl   c
_0BBA  sla  a
_0BBC  rl   c
_0BBE  ld   (ix+$04),a
_0BC1  ld   (ix+$05),c
_0BC4  ld   (ix+$0e),$1E
_0BC8  ld   a,($92C8)
_0BCB  ld   (ix+$0f),a
_0BCE  jp   _0B8B


_0BD1  ld   a,($92AA)   ; subtask of _08D3
_0BD4  ld   c,a
_0BD5  ld   a,($901D)
_0BD8  dec  a
_0BD9  and  c
_0BDA  jr   _0B9F

_0BDC  ld   c,a         ; jp here, s.a. _0911 ... demo-mode starting
_0BDD  and  $0F
_0BDF  ld   (ix+$0a),a
_0BE2  ld   a,c
_0BE3  rlca
_0BE4  rlca
_0BE5  rlca
_0BE6  rlca
_0BE7  and  $0F
_0BE9  inc  hl
_0BEA  ld   (ix+$0b),a
_0BED  ld   a,(hl)
_0BEE  inc  hl
_0BEF  bit  7,(ix+$13)
_0BF3  jr   z,_0BF7
_0BF5  neg
_0BF7  ld   (ix+$0c),a
_0BFA  ld   a,(hl)
_0BFB  inc  hl
_0BFC  ld   (ix+$0d),a
_0BFF  ld   (ix+$08),l   ; s.a. _0B43
_0C02  ld   (ix+$09),h
_0C05  bit  6,(ix+$13)
_0C09  jr   z,_0C2D
_0C0B  ld   a,(ix+$01)
_0C0E  sub  (ix+$06)
_0C11  jr   z,_0C1B
_0C13  jp   p,_0C18
_0C16  neg
_0C18  dec  a
_0C19  jr   nz,_0C2D
_0C1B  ld   a,(ix+$03)
_0C1E  sub  (ix+$07)
_0C21  jp   z,_0E08
_0C24  jp   p,_0C29
_0C27  neg
_0C29  dec  a
_0C2A  jp   z,_0E08
_0C2D  bit  5,(ix+$13)
_0C31  jr   z,_0C46
_0C33  ld   a,(ix+$01)
_0C36  sub  (ix+$06)
_0C39  jr   z,_0C3E
_0C3B  inc  a
_0C3C  jr   nz,_0C46
_0C3E  ld   (ix+$0d),$01
_0C42  res  5,(ix+$13)
_0C46  ld   b,(ix+$0c)
_0C49  ld   a,(ix+$04)
_0C4C  ld   e,a
_0C4D  add  a,b
_0C4E  ld   (ix+$04),a
_0C51  ld   d,(ix+$05)
_0C54  ld   l,$01
_0C56  bit  7,b
_0C58  jr   z,_0C5C
_0C5A  ld   l,$FF
_0C5C  rra
_0C5D  xor  b
_0C5E  ld   a,d
_0C5F  jp   p,_0C63
_0C62  add  a,l
_0C63  ld   (ix+$05),a
_0C66  ld   a,e
_0C67  ld   c,d
_0C68  bit  0,c
_0C6A  jr   z,_0C6D
_0C6C  cpl
_0C6D  add  a,$15
_0C6F  jr   nc,_0C75
_0C71  ld   b,$06
_0C73  jr   _0C81
_0C75  srl  a
_0C77  ld   b,a
_0C78  srl  b
_0C7A  add  a,b
_0C7B  rlca
_0C7C  rlca
_0C7D  rlca
_0C7E  and  $07
_0C80  ld   b,a
_0C81  ld   h,$8B
_0C83  ld   l,(ix+$10)
_0C86  ld   a,(hl)
_0C87  and  $F8
_0C89  or   b
_0C8A  ld   (hl),a
_0C8B  ld   h,$9B
_0C8D  ld   a,c
_0C8E  rrc  c
_0C90  xor  c
_0C91  inc  a
_0C92  rrc  c
_0C94  rla
_0C95  and  $03
_0C97  ld   (hl),a
_0C98  ld   a,($92A0)
_0C9B  and  $01
_0C9D  jr   z,_0CA4
_0C9F  ld   a,(ix+$0a)
_0CA2  jr   _0CA7
_0CA4  ld   a,(ix+$0b)
_0CA7  and  a
_0CA8  jp   z,_0D03
_0CAB  push hl
_0CAC  push ix
_0CAE  pop  hl
_0CAF  ld   b,a
_0CB0  ld   a,d
_0CB1  and  $03
_0CB3  ld   d,a
_0CB4  rlc  e
_0CB6  rl   d
_0CB8  push de
_0CB9  xor  d
_0CBA  rrca
_0CBB  jr   c,_0CBF
_0CBD  inc  l
_0CBE  inc  l
_0CBF  inc  d
_0CC0  bit  2,d
_0CC2  ld   a,b
_0CC3  jr   z,_0CC7
_0CC5  neg
_0CC7  ld   c,a
_0CC8  sra  c
_0CCA  jr   nc,_0CD0
_0CCC  ld   a,(hl)
_0CCD  add  a,$80
_0CCF  ld   (hl),a
_0CD0  inc  l
_0CD1  ld   a,(hl)
_0CD2  adc  a,c
_0CD3  ld   (hl),a
_0CD4  dec  l
_0CD5  ex   de,hl
_0CD6  ld   a,e
_0CD7  xor  $02
_0CD9  ld   e,a
_0CDA  pop  hl
_0CDB  srl  l
_0CDD  jr   nc,_0CE3
_0CDF  ld   a,l
_0CE0  xor  $7F
_0CE2  ld   l,a
_0CE3  ld   a,b
_0CE4  ld   b,h
_0CE5  ld   h,$00
_0CE7  call _0E97
_0CEA  ld   a,b
_0CEB  xor  $02
_0CED  dec  a
_0CEE  bit  2,a
_0CF0  jr   z,_0CFA
_0CF2  ld   b,h
_0CF3  ld   c,l
_0CF4  ld   hl,$0000
_0CF7  and  a
_0CF8  sbc  hl,bc
_0CFA  ex   de,hl
_0CFB  ld   a,e
_0CFC  add  a,(hl)
_0CFD  ld   (hl),a
_0CFE  inc  l
_0CFF  ld   a,d
_0D00  adc  a,(hl)
_0D01  ld   (hl),a
_0D02  pop  hl
_0D03  ld   a,($9215)   ; jp here, s.a. _0CA8,_0E46
_0D06  ld   c,a
_0D07  ld   h,$93
_0D09  ld   d,(ix+$03)
_0D0C  ld   a,$7F
_0D0E  cp   (ix+$02)
_0D11  ld   a,d
_0D12  rla
_0D13  bit  0,c
_0D15  jr   z,_0D1A
_0D17  add  a,$0D        ; when not jr?
_0D19  cpl
_0D1A  bit  6,(ix+$13)
_0D1E  jr   z,_0D23
_0D20  add  a,(ix+$11)
_0D23  ld   (hl),a
_0D24  inc  l
_0D25  ld   b,(ix+$01)
_0D28  ld   a,$7F
_0D2A  cp   (ix+$00)
_0D2D  rl   e
_0D2F  ld   a,b
_0D30  bit  0,c
_0D32  jr   nz,_0D38
_0D34  add  a,$4F
_0D36  cpl
_0D37  dec  e
_0D38  rr   e
_0D3A  rla
_0D3B  rl   e
_0D3D  bit  6,(ix+$13)
_0D41  jr   z,_0D50
_0D43  add  a,(ix+$12)
_0D46  ld   d,a
_0D47  rra
_0D48  xor  (ix+$12)
_0D4B  rlca
_0D4C  ld   a,d
_0D4D  jr   nc,_0D50
_0D4F  inc  e           ; when not jr?
_0D50  ld   (hl),a
_0D51  ld   h,$9B
_0D53  rrc  (hl)
_0D55  rrc  e
_0D57  rl   (hl)
_0D59  dec  (ix+$0e)
_0D5C  jp   nz,_0DFB
_0D5F  srl  (ix+$0f)
_0D63  jp   nc,_0DF5
_0D66  ld   a,(ix+$01)
_0D69  cp   $4C
_0D6B  jp   c,_0DF5
_0D6E  ld   a,($9015)
_0D71  and  a
_0D72  jp   z,_0DF5
_0D75  ld   a,($92AD)
_0D78  and  a
_0D79  jp   nz,_0DF5
_0D7C  ex   de,hl
_0D7D  ld   hl,$8868
_0D80  ld   b,$08
_0D82  ld   a,(hl)
_0D83  cp   $80
_0D85  jr   z,_0D8D
_0D87  inc  l
_0D88  inc  l
_0D89  djnz _0D82
_0D8B  jr   _0DF5       ; get here if we do not take jr at _0D85, how??
_0D8D  ld   (hl),$06
_0D8F  push hl
_0D90  ld   h,$93
_0D92  ld   d,h
_0D93  dec  e
_0D94  ld   a,(de)
_0D95  ld   c,a
_0D96  ld   (hl),a
_0D97  inc  e
_0D98  inc  l
_0D99  ld   a,(de)
_0D9A  ld   b,a
_0D9B  ld   (hl),a
_0D9C  ld   h,$9B
_0D9E  ld   d,h
_0D9F  ld   a,(de)
_0DA0  rrc  (hl)
_0DA2  rrca
_0DA3  rl   (hl)
_0DA5  rlca
_0DA6  rr   b
_0DA8  ld   a,($9362)
_0DAB  sub  c
_0DAC  push af
_0DAD  jr   nc,_0DB1
_0DAF  neg
_0DB1  ld   h,a
_0DB2  ld   a,($9215)
_0DB5  and  a
_0DB6  ld   a,$95
_0DB8  jr   z,_0DBC
_0DBA  ld   a,$1C       ; when not jr?
_0DBC  sub  b
_0DBD  jr   nc,_0DC1
_0DBF  neg              ; when not jr?
_0DC1  call _0EAA
_0DC4  ld   b,h
_0DC5  ld   c,l
_0DC6  srl  h
_0DC8  rr   l
_0DCA  srl  h
_0DCC  rr   l
_0DCE  add  hl,bc
_0DCF  srl  h
_0DD1  rr   l
_0DD3  srl  h
_0DD5  rr   l
_0DD7  ld   a,h
_0DD8  and  a
_0DD9  jr   nz,_0DE0
_0DDB  ld   a,l
_0DDC  cp   $60
_0DDE  jr   c,_0DE2
_0DE0  ld   a,$60
_0DE2  ld   b,a
_0DE3  pop  af
_0DE4  rr   b
_0DE6  pop  hl
_0DE7  ld   a,l
_0DE8  add  a,$08
_0DEA  and  $0F
_0DEC  ld   hl,$92B0
_0DEF  add  a,l
_0DF0  ld   l,a
_0DF1  ld   (hl),b
_0DF2  inc  hl
_0DF3  ld   (hl),$00
_0DF5  ld   a,($92E2)
_0DF8  ld   (ix+$0e),a
_0DFB  ld   hl,$9289   ; jp here, s.a. _0E58,_0B95
_0DFE  dec  (hl)
_0DFF  ret  z
_0E00  ld   de,$0014
_0E03  add  ix,de
_0E05  jp   _08E4


_0E08  xor  a          ; s.a. _0C21,_0C2A
_0E09  res  0,(ix+$13)
_0E0D  ld   (ix+$00),a
_0E10  ld   (ix+$02),a
_0E13  ld   h,$88
_0E15  ld   l,(ix+$10)
_0E18  ld   (hl),$02
_0E1A  ld   h,$8B
_0E1C  inc  l
_0E1D  ld   a,(hl)
_0E1E  dec  l
_0E1F  inc  a
_0E20  and  $07
_0E22  cp   $05
_0E24  jr   c,_0E3A
_0E26  ld   a,($982E)  ; when?
_0E29  ld   c,a
_0E2A  and  $F8
_0E2C  add  a,$06
_0E2E  ld   (hl),a
_0E2F  inc  l
_0E30  ld   a,c
_0E31  and  $07
_0E33  ld   (hl),a
_0E34  dec  l
_0E35  ld   a,$01
_0E37  ld   ($982D),a
_0E3A  ld   a,(ix+$06)  ; s.a. _0E24
_0E3D  ld   (ix+$01),a
_0E40  ld   a,(ix+$07)
_0E43  ld   (ix+$03),a
_0E46  jp   _0D03


_0E49  ld   h,$88      ; subtask of 08D3, something in second train-mode?
_0E4B  ld   l,(ix+$10)
_0E4E  ld   (hl),$80
_0E50  ld   h,$93
_0E52  ld   (hl),$00
_0E54  ld   (ix+$13),$00
_0E58  jp   _0DFB


_0E5B  push bc        ; begin 'call 0E5B'...  s.a. _0A81,_0AFA
_0E5C  push de
_0E5D  ld   a,e
_0E5E  sub  l
_0E5F  ld   b,$00
_0E61  jr   nc,_0E67
_0E63  set  0,b
_0E65  neg
_0E67  ld   c,a
_0E68  ld   a,d
_0E69  sub  h
_0E6A  jr   nc,_0E76
_0E6C  ld   d,a
_0E6D  ld   a,b
_0E6E  xor  $01
_0E70  or   $02
_0E72  ld   b,a
_0E73  ld   a,d
_0E74  neg
_0E76  cp   c
_0E77  push af
_0E78  rla
_0E79  xor  b
_0E7A  rra
_0E7B  ccf
_0E7C  rl   b
_0E7E  pop  af
_0E7F  jr   nc,_0E84
_0E81  ld   d,c
_0E82  ld   c,a
_0E83  ld   a,d
_0E84  ld   h,c
_0E85  ld   l,$00
_0E87  call _0EAA
_0E8A  ld   a,h
_0E8B  xor  b
_0E8C  and  $01
_0E8E  jr   z,_0E93
_0E90  ld   a,l
_0E91  cpl
_0E92  ld   l,a
_0E93  ld   h,b
_0E94  pop  de
_0E95  pop  bc
_0E96  ret


_0E97  push de       ; begin 'call 0E97', s.a. 0CE7
_0E98  ex   de,hl
_0E99  ld   hl,$0000
_0E9C  srl  a
_0E9E  jr   nc,_0EA1
_0EA0  add  hl,de
_0EA1  sla  e
_0EA3  rl   d
_0EA5  and  a
_0EA6  jr   nz,_0E9C
_0EA8  pop  de
_0EA9  ret


_0EAA  push bc      ; begin 'call _0EAA'
_0EAB  ld   c,a
_0EAC  xor  a
_0EAD  ld   b,$11
_0EAF  adc  a,a
_0EB0  jr   c,_0EBD
_0EB2  cp   c
_0EB3  jr   c,_0EB6
_0EB5  sub  c
_0EB6  ccf
_0EB7  adc  hl,hl
_0EB9  djnz _0EAF
_0EBB  pop  bc
_0EBC  ret

_0EBD  sub  c        ; when jr here? s.a. 0EB0
_0EBE  scf
_0EBF  jp   _0EB7


_0EC2  defb $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF


_0ECA  ld   a,($6802)        ; main task
_0ECD  and  $02
_0ECF  ret  nz
_0ED0  ld   hl,$10FF         ; when?
_0ED3  ld   a,(hl)
_0ED4  ld   l,$DF
_0ED6  ld   c,(hl)
_0ED7  ld   a,(hl)
_0ED8  xor  c
_0ED9  bit  4,a
_0EDB  jr   nz,_0EDE
_0EDD  rst  $00
_0EDE  ld   de,$89F7
_0EE1  ld   hl,$89F6
_0EE4  ld   bc,$0013
_0EE7  lddr
_0EE9  ld   ix,$0FD5
_0EED  ld   e,$E0
_0EEF  ld   bc,$0504
_0EF2  ld   a,(ix+$00)
_0EF5  inc  ix
_0EF7  ld   l,a
_0EF8  ld   h,$10
_0EFA  ld   a,(hl)
_0EFB  ld   a,e
_0EFC  add  a,c
_0EFD  ld   e,a
_0EFE  ld   a,(hl)
_0EFF  ld   (de),a
_0F00  djnz _0EF2
_0F02  ld   b,$05
_0F04  ld   hl,$89E4
_0F07  ld   a,(hl)
_0F08  inc  l
_0F09  or   (hl)
_0F0A  inc  l
_0F0B  cpl
_0F0C  and  (hl)
_0F0D  inc  l
_0F0E  and  (hl)
_0F0F  inc  l
_0F10  and  $0F
_0F12  jr   nz,_0F18
_0F14  djnz _0F07
_0F16  jr   _0F58


_0F18  dec  b
_0F19  jr   z,_0F6A
_0F1B  dec  b
_0F1C  sla  b
_0F1E  sla  b
_0F20  rrca
_0F21  jr   c,_0F26
_0F23  inc  b
_0F24  jr   _0F20


_0F26  ld   a,($89E0)
_0F29  srl  a
_0F2B  ld   e,a
_0F2C  rl   c
_0F2E  add  a,$E1
_0F30  ld   l,a
_0F31  ld   h,$89
_0F33  ld   a,(hl)
_0F34  bit  0,c
_0F36  jr   z,_0F3C
_0F38  rlca
_0F39  rlca
_0F3A  rlca
_0F3B  rlca
_0F3C  and  $F0
_0F3E  or   b
_0F3F  bit  0,c
_0F41  jr   z,_0F47
_0F43  rlca
_0F44  rlca
_0F45  rlca
_0F46  rlca
_0F47  ld   (hl),a
_0F48  ld   a,($89E0)
_0F4B  and  a
_0F4C  jr   nz,_0F50
_0F4E  ld   a,$02
_0F50  dec  a
_0F51  ld   ($89E0),a
_0F54  ld   a,e
_0F55  and  a
_0F56  jr   z,_0F61
_0F58  ld   hl,($89E2)   ; s.a. _0516,_0FA1,_0585
_0F5B  ld   a,(hl)
_0F5C  ld   ($89E1),a
_0F5F  jr   _0FA3


_0F61  ld   hl,($89E2)
_0F64  ld   a,($89E1)
_0F67  ld   (hl),a
_0F68  jr   _0FA3


_0F6A  ld   c,a         ; s.a. _0F19
_0F6B  ld   hl,$89E0
_0F6E  bit  0,c
_0F70  jr   nz,_0F9F
_0F72  ld   a,(hl)
_0F73  srl  a
_0F75  jr   z,_0F8A
_0F77  bit  3,c
_0F79  jr   nz,_0F87
_0F7B  ld   a,(hl)
_0F7C  cp   $05
_0F7E  jr   nc,_0F83
_0F80  inc  (hl)
_0F81  jr   _0F58


_0F83  ld   (hl),$05
_0F85  jr   _0F58


_0F87  dec  (hl)
_0F88  jr   _0F58
_0F8A  ld   hl,($89E2)
_0F8D  bit  3,c
_0F8F  jr   nz,_0F94
_0F91  dec  hl
_0F92  jr   _0F95
_0F94  inc  hl
_0F95  ld   ($89E2),hl
_0F98  ld   a,$01
_0F9A  ld   ($89E0),a
_0F9D  jr   _0F58
_0F9F  ld   (hl),$05
_0FA1  jr   _0F58


_0FA3  ld   hl,$83CA     ; s.a. _0F5F,_0F68
_0FA6  ld   de,$89E1
_0FA9  ld   b,$03
_0FAB  ld   a,(de)
_0FAC  inc  e
_0FAD  call _0FC6
_0FB0  djnz _0FAB
_0FB2  ld   hl,$87CA
_0FB5  ld   a,($89E0)
_0FB8  ld   b,$06
_0FBA  and  a
_0FBB  ld   c,a
_0FBC  jr   z,_0FC0
_0FBE  ld   c,$01
_0FC0  ld   (hl),c
_0FC1  inc  l
_0FC2  dec  a
_0FC3  djnz _0FBA
_0FC5  ret


_0FC6  ld   c,a        ;  begin 'call _0FC6', s.a. _0FAD (when?)
_0FC7  and  $0F
_0FC9  ld   (hl),a
_0FCA  inc  l
_0FCB  ld   a,c
_0FCC  rlca
_0FCD  rlca
_0FCE  rlca
_0FCF  rlca
_0FD0  and  $0F
_0FD2  ld   (hl),a
_0FD3  inc  l
_0FD4  ret

_0FD5  ; data? s.a. 0EE9
       defb $FD,$FB,$F7,$EF,$FE,$23,$00,$1B,$23,$F0,$40,$23,$00,$09,$23,$05
       defb $11,$23,$00,$10,$23,$10,$40,$23,$04,$30,$FF,$23,$02,$35,$23,$08
       defb $10,$23,$10,$3C,$23,$00,$FF,$FF,$32,$FF

_0FFF  defb $FF              ; end or ROM












