?login_element?

Subversion Repositories NedoOS

Rev

Rev 1596 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.         device zxspectrum128
  2.         include "../../_sdk/sys_h.asm"
  3.  
  4. ;FIX=1
  5.         include "settings.ast"
  6.  
  7. INTSTACK=0x4000
  8.  
  9. ROM_START       equ     0
  10.  
  11. SCREEN          equ     #4000
  12. SCR_ATTRS       equ     #5800
  13.  
  14. bas_LAST_K      equ     #5C08
  15. bas_5C3A        equ     #5C3A
  16.  
  17. bas_FLAGS       equ     #5C3B
  18. off_FLAGS       equ     bas_FLAGS-bas_5C3A
  19.  
  20. bas_ERRSP       equ     #5C3D
  21. bas_5C78        equ     #5C78   ;increments every 50 Hz by basic interrupt handler
  22. word_5CC3       equ     #5CC3
  23.  
  24. bit_NEW_KEY     equ     5
  25. bit_CAPS_LOCK   equ     3
  26.  
  27. EGA=0
  28.  
  29. _K=0x01
  30. _Q=0x09
  31. _R=0x11
  32. _B=0x21
  33. _N=0x31
  34. ;_P=0x41
  35.  
  36.                 MACRO   EOS
  37.                 org     $-1
  38.                 db      {b $}|#80
  39.                 ENDM
  40.  
  41.         org PROGSTART
  42. begin
  43.         OS_HIDEFROMPARENT
  44.  
  45.         ld e,3+0x80 ;6912+keep
  46.         ;ld e,0+0x80 ;EGA+keep
  47.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  48.         ;call setgfx
  49.  
  50.         ld e,0 ;color byte
  51.         OS_CLS
  52.  
  53.         OS_GETMAINPAGES
  54. ;dehl=pages in 0000,4000,8000,c000
  55.         ld a,e
  56.         ;ld (pgmain4000),a
  57.         ld a,h
  58.         ;ld (pgmain8000),a
  59.         ld a,l
  60.         ;ld (pgspr),a  
  61.  
  62.         ld a,(user_scr0_high) ;ok
  63.         SETPG4000
  64.        
  65.         ld hl,scr
  66.         ld de,0x4000
  67.         ld bc,0x1b00
  68.         ldir
  69.        
  70.         YIELDGETKEYLOOP
  71.        
  72.         ld de,pal
  73.         OS_SETPAL
  74.  
  75.         YIELD
  76.  
  77.  
  78.         ld hl,font
  79.         ld bc,0x300
  80. boldfont0
  81.         ld a,(hl)
  82.         rrca
  83.         or (hl)
  84.         ld (hl),a
  85.         cpi
  86.         jp pe,boldfont0
  87.  
  88.         call swapimer
  89.        
  90.         ld sp,0x8000
  91.         ld iy,23610
  92.         jp START_POINT
  93.  
  94. pal
  95. ;DDp palette: %grbG11RB(low),%grbG11RB(high), inverted
  96.         ;dw 0xffff,0xfefe,0xfdfd,0xfcfc,0xefef,0xeeee,0xeded,0xecec
  97.         ;dw 0xffff,0xdede,0xbdbd,0x9c9c,0x6f6f,0x4e4e,0x2d2d,0x0c0c
  98.         dw 0xffff,0xfefe,0xfdfd,0xfcfc,0x7d7d,0xeeee,0x8d8d,0x0c0c
  99.         dw 0xffff,0xdede,0xbdbd,0x9c9c,0x6f6f,0x4e4e,0x2d2d,0x0c0c
  100.  
  101. keymatrix
  102.         ds 8,0xff
  103.  
  104.         include "int.asm"
  105.         include "rst38.asm"
  106. rst10
  107.         push af
  108.         push bc
  109.         push de
  110.         push hl
  111.  
  112. rst10_phase=$+1
  113.         ld b,0 ;0=code, 1=X, 2=Y
  114.         djnz rst10_noATY
  115.         ld (rst10_y),a
  116.         ld a,2
  117.         ld (rst10_phase),a
  118.         jr rst10_q
  119. rst10_noATY
  120.         djnz rst10_noATX
  121.         ld (rst10_x),a
  122.         xor a
  123.         ld (rst10_phase),a
  124.         call rst10_countscr
  125.         jr rst10_q
  126. rst10_noATX
  127.  
  128.         cp 22 ;AT
  129.         jr z,rst10_AT
  130.              
  131. rst10_scr=$+1
  132.         ld de,0x4000
  133.              
  134.         ld l,a
  135.         ld h,0
  136.         add hl,hl
  137.         add hl,hl
  138.         add hl,hl
  139.         ld bc,font-256
  140.         add hl,bc
  141.         ld b,0
  142. prchar0
  143.         ld a,(hl)
  144.         ld (de),a
  145.         inc hl
  146.         inc d
  147.         djnz prchar0
  148.  
  149.         ld hl,rst10_scr
  150.         inc (hl)
  151.         ld hl,rst10_x
  152.         inc (hl)
  153.         ld a,(hl)
  154.         cp 32
  155.         jr nz,rst10_q
  156.         ld (hl),0
  157.         ld hl,rst10_y
  158.         inc (hl)
  159.         ld a,(hl)
  160.         cp 24
  161.         jr nz,$+4
  162.         ld (hl),0
  163.         call rst10_countscr
  164. rst10_q
  165.         pop hl
  166.         pop de
  167.         pop bc
  168.         pop af
  169.         ret
  170.        
  171. rst10_AT
  172.         ld a,1
  173.         ld (rst10_phase),a
  174.         jr rst10_q
  175.        
  176. rst10_countscr
  177. rst10_x=$+1
  178. rst10_y=$+2
  179.         ld bc,0
  180.         ld a,b ;a = Y = 0b000TTYYY
  181.         LD L,A
  182.         and 0b00011000
  183.         add a,0x40;screen/256
  184.         LD H,A
  185.         ld a,l
  186.         rrca
  187.         rrca
  188.         rrca
  189.         and 0b11100000
  190.         add a,c ;x
  191.         LD L,A
  192.         ld (rst10_scr),hl
  193.         ret
  194.  
  195.        if FIX
  196. RandomizeSetup
  197.         ld hl,starting_setup
  198.         ld de,starting_setup+1
  199.         ld bc,8-1
  200.         ld (hl),0
  201.         ldir
  202.  
  203.         call goodrnd
  204.         and 6
  205.         call RandomizeSetup_HLplaceA
  206.         ld (hl),_B
  207.         call goodrnd
  208.         and 6
  209.         inc a
  210.         call RandomizeSetup_HLplaceA
  211.         ld (hl),_B
  212.  
  213.         call goodrnd
  214.         add a,6
  215.         jr nc,$-2
  216. ;a=0..9
  217.         call RandomizeSetup_HLemptyplaceA
  218.         ld (hl),_Q
  219.  
  220.        if 1
  221. ;должны равновероятно выбираться 10 вариантов расстановки коней в 5 свободных клетках
  222.         call goodrnd
  223.         add a,10
  224.         jr nc,$-2
  225. ;a=0..9
  226.         add a,a
  227.         ld c,a
  228.         ld b,0
  229.         ld hl,knightsetups
  230.         add hl,bc
  231.         ex de,hl
  232.         ld a,(de)
  233.         inc de
  234.         call RandomizeSetup_HLemptyplaceA
  235.         ld (hl),_N
  236.         ld a,(de)
  237.         call RandomizeSetup_HLemptyplaceA
  238.         ld (hl),_N
  239.        else
  240. ;так распределение коней неравномерно
  241.         call goodrnd
  242.         and 3
  243.         call RandomizeSetup_HLemptyplaceA
  244.         ld (hl),_N
  245.         call goodrnd
  246.         and 3
  247.         call RandomizeSetup_HLemptyplaceA
  248.         ld (hl),_N
  249.        endif
  250.  
  251.         ld hl,starting_setup-1
  252.         call RandomizeSetup_findempty
  253.         ld (hl),_R
  254.        ld a,l
  255.        sub starting_setup&0xff
  256.        ld (leftrookinitpos),a
  257.         call RandomizeSetup_findempty
  258.         ld (hl),_K
  259.         call RandomizeSetup_findempty
  260.         ld (hl),_R
  261.        ld a,l
  262.        sub starting_setup&0xff
  263.        ld (rightrookinitpos),a
  264.         ret
  265.        
  266. RandomizeSetup_HLplaceA
  267.         ld c,a
  268.         ld b,0
  269.         ld hl,starting_setup
  270.         add hl,bc
  271.         ret
  272.  
  273. RandomizeSetup_findempty
  274. RandomizeSetup_findempty0
  275.         inc hl
  276.         ld a,(hl)
  277.         or a
  278.         jr nz,RandomizeSetup_findempty0
  279.         ret
  280.  
  281. RandomizeSetup_HLemptyplaceA
  282.         inc a
  283.         ld b,a
  284.         ld hl,starting_setup-1
  285. RandomizeSetup_HLemptyplaceA0
  286.         call RandomizeSetup_findempty
  287.         djnz RandomizeSetup_HLemptyplaceA0
  288.         ret
  289.        
  290. knightsetups
  291.         db 0,0
  292.         db 0,1
  293.         db 0,2
  294.         db 0,3
  295.         db 1,1
  296.         db 1,2
  297.         db 1,3
  298.         db 2,2
  299.         db 2,3
  300.         db 3,3
  301.  
  302. memorizernd
  303.         ld hl,(rndseed1)
  304.         ld (oldrndseed1),hl
  305.         ld hl,(rndseed2)
  306.         ld (oldrndseed2),hl
  307.         ret
  308.        
  309. setoldrnd
  310. oldrndseed1=$+1
  311.         ld hl,0
  312.         ld (rndseed1),hl
  313. oldrndseed2=$+1
  314.         ld hl,0
  315.         ld (rndseed2),hl
  316.         ret
  317.  
  318. goodrnd:
  319.         PUSH de
  320.         PUSH HL
  321. ;Patrik Rak
  322. rndseed1=$+1
  323.         ld  hl,0xA280   ; xz -> yw
  324. rndseed2=$+1
  325.         ld  de,0xC0DE   ; yw -> zt
  326.         ld  (rndseed1),de  ; x = y, z = w
  327.         ld  a,e         ; w = w ^ ( w << 3 )
  328.         add a,a
  329.         add a,a
  330.         add a,a
  331.         xor e
  332.         ld  e,a
  333.         ld  a,h         ; t = x ^ (x << 1)
  334.         add a,a
  335.         xor h
  336.         ld  d,a
  337.         rra             ; t = t ^ (t >> 1) ^ w
  338.         xor d
  339.         xor e
  340.         ld  h,l         ; y = z
  341.         ld  l,a         ; w = t
  342.         ld  (rndseed2),hl
  343.         ld b,a
  344.         POP HL
  345.         POP de
  346.         ret ;b=rnd
  347.  
  348.        endif
  349.  
  350. font
  351.         incbin "font.bin"
  352.  
  353. scr
  354.         incbin "CyrusII.scr"
  355.  
  356.                 ds 0x637c-$
  357.                
  358. unk_637C:       ds 1                    ; DATA XREF: sub_A262+4
  359. txt_buf_6:      ds 6                    ; DATA XREF: sub_9FB2+33
  360.                 ds 3
  361. buf_10bytes:    ds 10                   ; DATA XREF: sub_8977   sub_8977+17 ... ;сюда пишется название хода
  362.                 ds 1
  363. CLK_1:          ds 8                    ; DATA XREF: sub_9018+15
  364.                                         ; INIT_PRINT_CLOCKS+3   ...
  365. CLK_2:          ds 8                    ; DATA XREF: sub_9018+1D
  366.                                         ; INIT_PRINT_CLOCKS+E   ...
  367. TAPE_header:    ds 17                   ; DATA XREF: sub_8EA7+7 sub_8EFB ...
  368.                 ds 3
  369. byte_63B5:      ds 1                    ; DATA XREF: sub_8C20+19F9
  370. byte_63B6:      ds 9                    ; DATA XREF: sub_8C20+1A09
  371.                                         ; sub_8C20+1A14 ...
  372. unk_63BF:       ds 65                   ; DATA XREF: sub_8C20+1A0F
  373.  
  374.  
  375.  
  376.                 ds 0x6400-$
  377. SCR_BUF_6400:   ds      #1b00           ; up to 7EFF
  378.  
  379.                 ; 7F00..7FFF free
  380.  
  381.  
  382.  
  383.  
  384.  
  385.                 ds 0x8000-$
  386. START_POINT:
  387.  
  388. ; FUNCTION CHUNK AT 8067 SIZE 00000033 BYTES
  389.  
  390.                 jr      loc_8032
  391.  
  392. ; ---------------------------------------------------------------------------
  393. aCopyright1986I:db      'COPYRIGHT (1986) INTELLIGENT CHESS SOFTWARE LTD.'
  394. ; ---------------------------------------------------------------------------
  395.  
  396. loc_8032:
  397.                 di
  398.                 ld      (save_SP), sp
  399.                 exx
  400.                 ld      (save_HLtick), hl
  401.  
  402.                 ld      hl, (bas_ERRSP)
  403.                 ld      (save_ERRSP), hl
  404.                if !FIX
  405.                 ld      hl, INT_VEC
  406.                 ld      (hl), INT_PROC&255
  407.                 inc     hl
  408.                 ld      (hl), INT_PROC/256
  409.                 ld      a, INT_VEC/256
  410.                 ds 2 ;ld        i, a
  411.                 ds 2 ;im        2
  412.                endif
  413.                 jp      loc_8067
  414.  
  415.  
  416. ; =============== S U B R O U T I N E =======================================
  417.  
  418.  
  419. INT_PROC:                               ; DATA XREF: RAM:8044   RAM:8047
  420.                 push    af
  421.                 push    hl
  422.                 push    iy
  423.                 ld      hl, DECREMENT_50HZ
  424.                 dec     (hl)
  425.                 ld      iy, bas_5C3A
  426.                 call    L0038;ROM_START+#38
  427.  
  428.                 pop     iy
  429.                 pop     hl
  430.                 pop     af
  431.                 ei
  432.                 ret
  433.  
  434. ; End of function INT_PROC
  435.  
  436. ; ---------------------------------------------------------------------------
  437. ; START OF FUNCTION CHUNK FOR START_POINT
  438.  
  439. loc_8067:                               ; CODE XREF: RAM:804F
  440.                 ld      sp, RAM_END_D800
  441.                 di
  442.                 ld      hl, BRD_88_0
  443.                 ld      b, 0
  444.                 ld      a, RAM_END_D800/256
  445.  
  446.  
  447. loc_8072:                               ; CODE XREF: START_POINT+75
  448.                 ld      (hl), b
  449.                 inc     hl
  450.                 cp      h
  451.                 jp      nz, loc_8072
  452.  
  453.                 res     bit_NEW_KEY, (iy+off_FLAGS)     ; clear keypressed bit
  454.                 res     bit_CAPS_LOCK, (iy+#30) ; CAPS LOCK off
  455.                 xor     a
  456.                 ld      (SEL_SCRorBUF), a
  457.                 call    CLR_SCR_OR_BUF
  458.  
  459.                 call    CLR_BOARD ;??? потом ещё раз
  460.  
  461.                 call    PRT_DETECT
  462.  
  463.                 ld      a, 1
  464.                 ld      (curlevel), a
  465.                 ld      a, #FF
  466.                 ld      (stk_1bvalue), a
  467.                 ld      (byte_D0F0), a
  468.  
  469. ; END OF FUNCTION CHUNK FOR START_POINT
  470. ; START OF FUNCTION CHUNK FOR sub_92D7
  471.  
  472. loc_809A:                               ; CODE XREF: sub_92D7+35
  473.                 xor     a
  474.                 ld      (byte_D0B4), a ;visible board?
  475.                 call    sub_9EE6 ;print Cyrus II, level, space to see board
  476.  
  477. ; END OF FUNCTION CHUNK FOR sub_92D7
  478. ; START OF FUNCTION CHUNK FOR sub_8C20
  479.  
  480. NEW_GAME:                               ; CODE XREF: sub_8C20-3
  481.         if FIX
  482.          call memorizernd
  483.         endif
  484.                 call    sub_96A6
  485.  
  486.                 call    CLR_BOARD
  487.  
  488.                 call    INIT_PRINT_CLOCKS
  489.  
  490.                 call    BEEP_start
  491.  
  492.                 ei
  493.                 ld      a, (byte_D20C) ;oldmove #?
  494.                 dec     a
  495.                 jr      z, loc_80B9
  496.  
  497.                 ld      a, #FF
  498.                 ld      (stk_1bvalue), a
  499.  
  500.  
  501. loc_80B9:                               ; CODE XREF: sub_8C20-B6E
  502.                 xor     a
  503.                 ld      (byte_D0B3), a ;d3=swap board
  504.                 inc     a
  505.                 ld      (byte_D049), a ;move # ;бесполезно - 875B тоже туда пишет
  506.                 scf
  507.                 call    sub_A915
  508.  
  509.                 ld      hl, 0
  510.                 ld      (word_D09F), hl
  511.  
  512.  
  513. loc_80CB:                               ; CODE XREF: sub_8C20-1DA
  514.                 call    InitBoard_ClearMoves
  515.  
  516.  
  517. loc_80CE:                               ; CODE XREF: sub_8C20-511
  518.                                         ; sub_8C20-186
  519.                 call    sub_A262
  520.  
  521.                 ld      a, (CFG_BITS)
  522.                 and     #30
  523.                 jr      z, loc_80F5
  524.  
  525.                 call    sub_A43C
  526.  
  527.                 ld      b,#1E
  528.  
  529.  
  530. loc_80DD:                               ; CODE XREF: sub_8C20-B3C
  531.                 push    bc
  532.                 ld      a,#3D
  533.                 call    loc_A476
  534.  
  535.                 pop     bc
  536.                 djnz    loc_80DD
  537.  
  538.                 call    sub_A43C
  539.  
  540.                 ld      a, (byte_D049) ;move #
  541.                 dec     a
  542.                 jr      z, loc_80F5 ;first move
  543.  
  544.                 call    sub_939F
  545.  
  546.                 call    sub_94C4
  547.  
  548.  
  549. loc_80F5:                               ; CODE XREF: sub_8C20-B4A
  550.                                         ; sub_8C20-B33
  551.                 ld      hl, #F7F7
  552.                 ld      (word_D240), hl
  553.                 xor     a
  554.                 ld      (byte_D04D), a
  555.                 ld      l, a
  556.                 ld      h, a
  557.                 ld      (word_D0F7), hl
  558.  
  559.  
  560. loc_8104:                               ; CODE XREF: sub_8C20-507
  561.                                         ; sub_8C20-BD
  562.                 ld      hl, 0
  563.                 ld      (word_D25A), hl
  564.  
  565.  
  566. loc_810A:                               ; CODE XREF: sub_8C20:loc_82E8
  567.                                         ; sub_8C20-852 ...
  568.                 ld      hl,  word_D240+1
  569.                 call    sub_B976
  570.  
  571.                 jr      c, loc_811C
  572.  
  573.                 bit     3, (hl)
  574.                 jp      nz, loc_8B9B
  575.  
  576.                 ld      hl,  word_D240+1
  577.                 set     3, (hl)
  578.  
  579.  
  580. loc_811C:                               ; CODE XREF: sub_8C20-B10
  581.                 ld      hl, (word_D09F)
  582.                 ld      a, l
  583.                 or      h
  584.                 jp      nz, loc_8AE8
  585.  
  586.                 ld      hl, CFG_BITS
  587.                 res     5, (hl)
  588.                 call    PrintMoveNumber
  589.  
  590.                 call    UnDrawMoveAndCursors
  591.  
  592.                 call    sub_954C
  593.  
  594.                 ld      hl, byte_D0B4
  595.                 bit     5, (hl)
  596.                 jr      nz, loc_8142 ;invisible board?
  597.  
  598.                 ld      sp, RAM_END_D800
  599.                 call    sub_8C2D
  600.  
  601.                 call    sub_93A4
  602.  
  603.  
  604. loc_8142:                               ; CODE XREF: sub_8C20-AE9
  605.                 ld      a, (byte_D00A)
  606.                 cp      100
  607.                 jp      nc, loc_8B9B
  608.  
  609.                 ld      a, (byte_D02D)
  610.                 or      #80
  611.                 ld      (byte_D0BF), a
  612.                 rra
  613.                 ld      a, (byte_D0B2)
  614.                 jr      nc, loc_815E
  615.  
  616.                 or      a
  617.                 jr      z, loc_8162
  618.  
  619.                 jp      loc_82EB
  620.  
  621. ; ---------------------------------------------------------------------------
  622.  
  623. loc_815E:                               ; CODE XREF: sub_8C20-ACA
  624.                 or      a
  625.                 jp      z, loc_82EB
  626.  
  627.  
  628. loc_8162:                               ; CODE XREF: sub_8C20-AC7
  629.                 ld      a, #BE
  630.                 ld      (byte_D0E3), a
  631.                 ld      (byte_D0F3), a
  632.                 ld      hl, 0
  633.                 ld      (INC_SECONDS), hl
  634.                 ld      (word_D02B), hl
  635.                 xor     a
  636.                 ld      (bas_5C78), a
  637.                 ld      (byte_D0DF), a
  638.                 ld      hl, byte_D0B4
  639.                 bit     0, (hl)
  640.                 jp      nz, loc_8CE9 ;move?
  641.  
  642.                 ld      a, (hl)
  643.                 or      #40
  644.                 and     #6F
  645.                 ld      (hl), a
  646.                 bit     5, a
  647.                 jr      z, loc_818F
  648.                 call    DrawMoveAndCursors
  649. loc_818F:                               ; CODE XREF: sub_8C20-A96
  650.                 call    sub_9F0D ;show state and help
  651.  
  652.                 ld      ix, word_D059
  653.                 call    sub_A903
  654.  
  655.                 call    sub_A90F
  656.  
  657.                 jr      nz, loc_81A1
  658.  
  659.                 scf
  660.                 jr      loc_81B7
  661.  
  662. ; ---------------------------------------------------------------------------
  663.  
  664. loc_81A1:                               ; CODE XREF: sub_8C20-A84
  665.                 ld      hl, byte_D0B6
  666.                 res     2, (hl)
  667.                 call    sub_A900
  668.  
  669.                 push    af
  670.  
  671.  
  672. loc_81AA:                               ; CODE XREF: sub_8C20-A6C
  673.                 ld      hl, byte_D0DF
  674.                 bit     0, (hl)
  675.                 jr      z, loc_81B6
  676.  
  677.                 call    sub_8F4D
  678.  
  679.                 jr      loc_81AA
  680.  
  681. ; ---------------------------------------------------------------------------
  682.  
  683. loc_81B6:                               ; CODE XREF: sub_8C20-A71
  684.                 pop     af
  685.  
  686.  
  687. loc_81B7:                               ; CODE XREF: sub_8C20-A81
  688.                 ex      af, af' ;'
  689.                 ld      hl, 0
  690.                 ld      (word_D09F), hl
  691.                 ld      hl, byte_D0B4
  692.                 ld      a, (hl)
  693.                 ld      b, a
  694.                 and     #9F
  695.                 ld      (hl), a
  696.                 bit     5, b
  697.                 jp      nz, loc_8520 ;invisible board?
  698.  
  699.                 ex      af, af' ;'
  700.                 jp      c, loc_8B8D
  701.  
  702.                 call    BEEP_move
  703.  
  704.                 ld      a, (byte_D09E)
  705.                 or      a
  706.                 jr      z, loc_81E0
  707. ;end of opening?
  708.                 ld      a, (byte_D0B6)
  709.                 bit     2, a
  710.                 call    nz, sub_A684
  711.  
  712.  
  713. loc_81E0:                               ; CODE XREF: sub_8C20-A4A
  714.                                         ; sub_8C20-8BE
  715.                 ld      h, (ix+0)
  716.                 res     7, h
  717.                 ld      l, (ix+1)
  718.                 res     7, l
  719.                 push    hl
  720.                 ld      ix, word_D059
  721.                 call    sub_A903
  722.  
  723.                 ld      ix, RAM_END_D800
  724.                 ld      bc, 3
  725.                 pop     hl
  726.  
  727.  
  728. loc_81FA:                               ; CODE XREF: sub_8C20-A20
  729.                                         ; sub_8C20-A1A
  730.                 add     ix, bc
  731.                 ld      a, (ix+0)
  732.                 cp      h
  733.                 jr      nz, loc_81FA
  734.  
  735.                 ld      a, (ix+1)
  736.                 cp      l
  737.                 jr      nz, loc_81FA
  738.  
  739.                 ld      a, (ix+0)
  740.                 ld      (byte_D0C4), a
  741.                 call    sub_9FF5
  742.  
  743.                 ld      (byte_D0C2), a
  744.                 ld      a, (ix+1)
  745.                 ld      (byte_D0C5), a
  746.                 call    sub_9FF5
  747.  
  748.                 ld      (byte_D0C3), a
  749.                 call    sub_A906
  750.  
  751.                 call    sub_BC00
  752.  
  753.  
  754. loc_8226:                               ; CODE XREF: sub_8C20-703
  755.                 call    sub_939F
  756.  
  757.                 push    ix
  758.                 pop     hl
  759.                 ld      bc, RAM_END_D800
  760.                 xor     a
  761.                 ld      e, a
  762.                 sbc     hl, bc
  763.                 ld      bc, 3
  764.  
  765.  
  766. loc_8236:                               ; CODE XREF: sub_8C20-9E7
  767.                 inc     e
  768.                 sbc     hl, bc
  769.                 jr      nz, loc_8236
  770.  
  771.                 dec     e
  772.                 ld      hl, (word_D0F7)
  773.                 inc     hl
  774.                 ld      (word_D0F7), hl
  775.                 ld      a, (ix+2)
  776.                 and     #80 ; '?'
  777.                 or      e
  778.                 ld      hl, (ptr_stk_1bvalue)
  779.                 ld      (hl), a
  780.                 inc     hl
  781.                 ld      (ptr_stk_1bvalue), hl
  782.                 ld      (hl), #FF
  783.  
  784.  
  785. loc_8253:                               ; CODE XREF: sub_8C20-E5
  786.                 ld      hl, byte_D00A
  787.                 ld      a, (hl)
  788.                 ld      (byte_D029), a
  789.                 inc     (hl)
  790.                 pop     af
  791.                 push    af
  792.                 jp      po, loc_8279
  793.  
  794.                 push    hl
  795.                 ld      l, (ix+1)
  796.                 ld      h, #D0  ; 'Р'
  797.                 ld      l, (hl)
  798.                 res     2, l
  799.                 inc     l
  800.                 inc     h
  801.                 ld      e, (hl)
  802.                 ld      hl, (ptr_stk_1bvalue)
  803.                 ld      (hl), e
  804.                 inc     hl
  805.                 ld      (ptr_stk_1bvalue), hl
  806.                 ld      (hl), #FF
  807.                 pop     hl
  808.                 jr      loc_8281
  809.  
  810. ; ---------------------------------------------------------------------------
  811.  
  812. loc_8279:                               ; CODE XREF: sub_8C20-9C3
  813.                 jp      p, loc_8281
  814.  
  815.                 and     #F
  816.                 dec     a
  817.                 jr      nz, loc_8283
  818.  
  819.  
  820. loc_8281:                               ; CODE XREF: sub_8C20-9A9
  821.                                         ; sub_8C20:loc_8279
  822.                 xor     a
  823.                 ld      (hl), a
  824.  
  825.  
  826. loc_8283:                               ; CODE XREF: sub_8C20-9A1
  827.                                         ; sub_8C20-CB
  828.                 call    sub_8977 ;вывод хода в buf_10bytes
  829.  
  830.                 call    sub_8B66
  831.  
  832.                 ld      hl, (word_D09F)
  833.                 ld      a, h
  834.                 or      l
  835.                 jr      nz, loc_82B2
  836.  
  837.                 ld      hl, byte_D0B4
  838.                 bit     5, (hl)
  839.                 jr      nz, loc_82B2 ;invisible board?
  840.  
  841.                 call    sub_8D9E
  842.  
  843. loc_829A:                               ; CODE XREF: sub_8C20-97E
  844.                 call    sub_8F4D
  845.  
  846.                 ld      hl, byte_D0DF
  847.                 bit     0, (hl)
  848.                 jr      nz, loc_829A
  849.  
  850.                 call    ShowBOARD2
  851.  
  852.                 ld      hl, BOARD2
  853.                 ld      de, BOARD
  854.                 ld      bc,#40  ; '@'
  855.                 ldir
  856.  
  857.  
  858. loc_82B2:                               ; CODE XREF: sub_8C20-992
  859.                                         ; sub_8C20-98B
  860.                 ld      hl, (word_D09F)
  861.                 ld      de, (word_D0F7)
  862.                 sbc     hl, de
  863.                 jr      c, loc_82CD
  864.  
  865.                 ld      a, (CFG_BITS)
  866.                 bit     5, a
  867.                 jr      nz, loc_82CD
  868.  
  869.                 ld      a, h
  870.                 or      a
  871.                 jr      nz, loc_82D7
  872.  
  873.                 ld      a, l
  874.                 cp      9
  875.                 jr      nc, loc_82D7
  876.  
  877.  
  878. loc_82CD:                               ; CODE XREF: sub_8C20-965
  879.                                         ; sub_8C20-95E
  880.                 ld      hl, byte_D0B4
  881.                 bit     5, (hl)
  882.                 jr      nz, loc_82D7 ;invisible board?
  883.                 call    sub_9FB2 ;добавление хода на экране со скроллом?
  884. loc_82D7:                               ; CODE XREF: sub_8C20-95A
  885.                                         ; sub_8C20-955 ...
  886.                 ld      hl, byte_D02D
  887.                 ld      a, (hl)
  888.                 xor     1
  889.                 ld      (hl), a
  890.                 ld      (byte_D0BF), a
  891.                 rra
  892.                 jr      nc, loc_82E8
  893.  
  894.                 ld      hl, byte_D049 ;move #
  895.                 inc     (hl)
  896.  
  897. loc_82E8:                               ; CODE XREF: sub_8C20-93E
  898.                 jp      loc_810A
  899.  
  900. ; ---------------------------------------------------------------------------
  901.  
  902. loc_82EB:                               ; CODE XREF: sub_8C20-AC5
  903.                                         ; sub_8C20-AC1 ...
  904.                 ld      hl, byte_D0B4
  905.                 ld      a, (hl)
  906.                 bit     1, a
  907.                 jr      z, loc_82F9
  908.  
  909.                 call    sub_A6E4
  910.  
  911.                 jp      loc_8CE9 ;move?
  912.  
  913. ; ---------------------------------------------------------------------------
  914.  
  915. loc_82F9:                               ; CODE XREF: sub_8C20-92F
  916.                 and     #9F ; '?'
  917.                 ld      (hl), a
  918.                 ld      ix, word_D059
  919.                 call    sub_A903
  920.  
  921.                 call    sub_A90F
  922.  
  923.                 jp      z, loc_8B8D
  924.  
  925.                 call    sub_8446
  926.  
  927.                 xor     a
  928.                 ld      hl, 0
  929.                 ld      (INC_SECONDS), hl
  930.                 ld      a, (byte_D09E)
  931.                 or      a
  932.                 jr      z, loc_8365
  933. ;end of opening?
  934.                 ld      a, (byte_D0B4)
  935.                 rra
  936.                 jr      c, loc_8365
  937.  
  938.                 ld      hl, (word_D25A)
  939.                 res     7, l
  940.                 ld      d, l
  941.                 res     7, h
  942.                 ld      e, h
  943.                 ld      hl, RAM_END_D800
  944.                 call    _FindMove_D_E
  945.  
  946.                 jr      c, loc_8365
  947.  
  948.                 push    hl
  949.                 pop     ix
  950.                 call    sub_A906
  951.  
  952.                 call    sub_939F
  953.  
  954.                 ld      hl, byte_D0B4
  955.                 set     5, (hl) ;invisible board?
  956.                 ld      a, (byte_D02D)
  957.                 ld      hl, byte_D0B3 ;d3=swap board
  958.                 res     1, (hl)
  959.                 rra ;???
  960.                 jr      z, loc_834B ;???
  961.                 set     1, (hl)
  962. loc_834B:                               ; CODE XREF: sub_8C20-8D9
  963.                 ld      h, (ix+0)
  964.                 ld      l, (ix+1)
  965.                 ld      (word_D0DA), hl
  966.                 pop     af
  967.                 push    af
  968.                 ld      a, 1
  969.                 jp      po, loc_835C ;???
  970.                 dec     a
  971. loc_835C:                               ; CODE XREF: sub_8C20-8C8
  972.                 ld      (byte_D0DC), a
  973.                 call    sub_A909
  974.  
  975.                 jp      loc_81E0
  976.  
  977. ; ---------------------------------------------------------------------------
  978.  
  979. loc_8365:                               ; CODE XREF: sub_8C20-909
  980.                                         ; sub_8C20-903 ...
  981.                 ld      hl, (tbl_D803)
  982.                 ld      (word_D25A), hl
  983.                 ld      hl, (word_D059)
  984.                 ld      (word_D05C), hl
  985.                 ld      ix, word_D059
  986.                 call    sub_A903
  987.  
  988. loc_8378:                               ; CODE XREF: sub_8C20-216
  989.                 call    sub_9F0D ;show state and help
  990.  
  991.                 ld      b, 0
  992.                 ld      a, (byte_D02D)
  993.                 rra
  994.                 jr      nc, loc_8385
  995.                 ld      b,#70
  996. loc_8385:                               ; CODE XREF: sub_8C20-89F
  997.                 ld      a, b
  998.                 ld      (needdrawcursor1), a
  999.                 ld      a, #FF
  1000.                 ld      (needdrawcursorfrom), a
  1001.                 ld      (byte_D0CD), a
  1002.                 call    DrawMoveAndCursors
  1003.  
  1004. loc_8394:                               ; CODE XREF: sub_8C20-83A
  1005.                                         ; sub_8C20-82D ...
  1006.                 ld      hl, byte_D0DF
  1007.                 ld      a, 2
  1008.                 ld      (hl), a
  1009.                 xor     a
  1010.                 ld      (keycodeformenu), a
  1011. loc_839E:                               ; CODE XREF: sub_8C20-87A
  1012.                                         ; sub_8C20-86E
  1013.                 call    sub_8F4D
  1014. loc_83A1:                               ; CODE XREF: sub_8C20-68E
  1015.                 ld      hl, byte_D0DF
  1016.                 bit     0, (hl)
  1017.                 jr      nz, loc_839E
  1018.  
  1019.                 bit     4, (hl)
  1020.                 jp      nz, loc_845D
  1021.  
  1022.                 ld      hl, keycodeformenu
  1023.                 ld      a, (hl)
  1024.                 or      a
  1025.                 jr      z, loc_839E
  1026.  
  1027.                 ld      (hl), 0
  1028.                 cp      'C'
  1029.                 jp      z, loc_A4F4
  1030.  
  1031.                 cp      'P'
  1032.                 jp      z, loc_A29F
  1033.  
  1034.                 cp      'I'
  1035.                 jr      nz, loc_83D1
  1036.  
  1037.                 call    UnDrawMoveAndCursors
  1038.  
  1039.                 ld      hl, byte_D0B3
  1040.                 ld      a, (hl)
  1041.                 xor     8
  1042.                 ld      (hl), a ;d3=swap board
  1043.                 jp      loc_810A
  1044.  
  1045. ; ---------------------------------------------------------------------------
  1046.  
  1047. loc_83D1:                               ; CODE XREF: sub_8C20-85E
  1048.                 call    ChangeLevel_ifL
  1049.  
  1050.                 jr      nc, loc_83E8
  1051.  
  1052.                 cp      #48 ; 'H'
  1053.                 jr      nz, loc_83F6
  1054.  
  1055.                 call    UnDrawMoveAndCursors
  1056.  
  1057.                 ld      hl, (word_D25A)
  1058.                 call    ShowHintMove
  1059.  
  1060.                 call    DrawMoveAndCursors
  1061.  
  1062.                 jr      loc_8394
  1063.  
  1064. ; ---------------------------------------------------------------------------
  1065.  
  1066. loc_83E8:                               ; CODE XREF: sub_8C20-84C
  1067.                 call    BEEP_start
  1068.  
  1069.                 ld      a, (byte_D02D)
  1070.                 or      #80
  1071.                 ld      (byte_D0BF), a
  1072.                 jp      loc_8394
  1073.  
  1074. ; ---------------------------------------------------------------------------
  1075.  
  1076. loc_83F6:                               ; CODE XREF: sub_8C20-848
  1077.                 push    af
  1078.                 call    sub_A6E4
  1079.  
  1080.                 pop     af
  1081.                 cp      #41 ; 'A' - analysis
  1082.                 jp      z, loc_841F
  1083.  
  1084.                 cp      #4D ; 'M' - move
  1085.                 jp      z, loc_8CDA
  1086.  
  1087.                 cp      #44 ; 'D' - demo
  1088.                 jp      z, loc_8CD5
  1089.  
  1090.                 cp      #42 ; 'B' - back
  1091.                 jp      z, loc_8443
  1092.  
  1093.                 cp      #46 ; 'F' - forward
  1094.                 jp      z, loc_8A9D
  1095.  
  1096.                 cp      #53 ; 'S' - set position
  1097.                 jp      z, loc_8595
  1098.  
  1099.  
  1100. loc_8419:                               ; CODE XREF: sub_8C20-7AF
  1101.                 call    BEEP_3
  1102.  
  1103.                 jp      loc_8394
  1104.  
  1105. ; ---------------------------------------------------------------------------
  1106.  
  1107. loc_841F:                               ; CODE XREF: sub_8C20-823
  1108. ;'A' - analysis
  1109.                 ld      hl, loc_8394
  1110.                 push    hl
  1111.                 ld      hl, byte_D0B6
  1112.                 ld      a, (hl)
  1113.                 xor     1
  1114.                 and     1
  1115.                 ld      (hl), a
  1116.  
  1117. ; END OF FUNCTION CHUNK FOR sub_8C20
  1118.  
  1119. ; =============== S U B R O U T I N E =======================================
  1120.  
  1121.  
  1122. sub_842C:                               ; CODE XREF: sub_9F0D
  1123.                 ld      hl, byte_D0B6
  1124.                 ld      a, (hl)
  1125.                 or      a
  1126.                 ld      hl, #D00
  1127.                 ld      (scr_XY), hl
  1128.                 ld      hl, a_8spaces   ; "       "
  1129.                 jr      z, loc_843F
  1130.  
  1131.                 ld      hl, aAnalysis   ; "ANALYSI"
  1132.  
  1133.  
  1134. loc_843F:                               ; CODE XREF: sub_842C+E
  1135.                 call    PRINT_STR_FF
  1136.  
  1137.                 ret
  1138.  
  1139. ; End of function sub_842C
  1140.  
  1141. ; ---------------------------------------------------------------------------
  1142. ; START OF FUNCTION CHUNK FOR sub_8C20
  1143.  
  1144. loc_8443:                               ; CODE XREF: sub_8C20-814
  1145. ;'B' - back
  1146.                 jp      loc_8A0D
  1147.  
  1148. ; END OF FUNCTION CHUNK FOR sub_8C20
  1149.  
  1150. ; =============== S U B R O U T I N E =======================================
  1151.  
  1152.  
  1153. sub_8446:                               ; CODE XREF: sub_8C20-917
  1154.                 ld      hl, tbl_D803
  1155.                 ld      de, unk_F000
  1156.  
  1157.  
  1158. loc_844C:                               ; CODE XREF: sub_8446+13
  1159.                 ld      a, (hl)
  1160.                 cp      #FF
  1161.                 jr      z, loc_845B
  1162.  
  1163.                 ld      b, 3
  1164.  
  1165.  
  1166. loc_8453:                               ; CODE XREF: sub_8446+11
  1167.                 ld      a, (hl)
  1168.                 ld      (de), a
  1169.                 inc     hl
  1170.                 inc     de
  1171.                 djnz    loc_8453
  1172.  
  1173.                 jr      loc_844C
  1174.  
  1175. ; ---------------------------------------------------------------------------
  1176.  
  1177. loc_845B:                               ; CODE XREF: sub_8446+9
  1178.                 ld      (de), a
  1179.                 ret
  1180.  
  1181. ; End of function sub_8446
  1182.  
  1183. ; ---------------------------------------------------------------------------
  1184. ; START OF FUNCTION CHUNK FOR sub_8C20
  1185.  
  1186. loc_845D:                               ; CODE XREF: sub_8C20-876
  1187.                 call    sub_8C2D
  1188.  
  1189.                 ld      a, (needdrawcursorfrom)
  1190.                 ld      b, a
  1191.                 ld      a, (needdrawcursor1)
  1192.                 ld      c, a
  1193.                 ld      hl, RAM_END_D800
  1194.  
  1195.  
  1196. loc_846B:                               ; CODE XREF: sub_8C20-7AB
  1197.                                         ; sub_8C20-7A5
  1198.                 inc     hl
  1199.                 inc     hl
  1200.                 inc     hl
  1201.                 ld      a, (hl)
  1202.                 cp      #FF
  1203.                 jp      z, loc_8419
  1204.  
  1205.                 cp      b
  1206.                 jr      nz, loc_846B
  1207.  
  1208.                 inc     hl
  1209.                 ld      a, (hl)
  1210.                 dec     hl
  1211.                 cp      c
  1212.                 jr      nz, loc_846B
  1213.  
  1214.                 push    hl
  1215.                 call    sub_A6E4
  1216.  
  1217.                 call    UnDrawMoveAndCursors
  1218.  
  1219.                 call    BEEP_move
  1220.  
  1221.                 pop     ix
  1222.                 ld      a, (ix+0)
  1223.                 ld      (byte_D0C4), a
  1224.                 call    sub_9FF5
  1225.  
  1226.                 ld      (byte_D0C2), a
  1227.                 ld      a, (ix+1)
  1228.                 ld      (byte_D0C5), a
  1229.                 call    sub_9FF5
  1230.  
  1231.                 ld      (byte_D0C3), a
  1232.                 call    sub_A906
  1233.  
  1234.                 call    sub_BC00
  1235.  
  1236.                 pop     af
  1237.                 push    af
  1238.                 jp      po, loc_8515
  1239.  
  1240.                 ld      hl, byte_D0DF
  1241.                 bit     7, (hl)
  1242.                 res     7, (hl)
  1243.                 ld      a, (byte_D0DC)
  1244.                 jp      nz, loc_84DF
  1245.  
  1246.                 ld      (hl), 8
  1247.                 xor     a
  1248.                 ld      (keycodeformenu), a
  1249.  
  1250.  
  1251. loc_84BF:                               ; CODE XREF: sub_8C20-743
  1252.                 call    sub_93A4
  1253.  
  1254.                 ld      a,#14
  1255.                 call    halt_A_frames
  1256.  
  1257.                 call    sub_8F4D
  1258.  
  1259.                 jr      nz, loc_84DF
  1260.  
  1261.                 call    sub_A909
  1262.  
  1263.                 call    sub_93A4
  1264.  
  1265.                 call    sub_A906
  1266.  
  1267.                 ld      a,#14
  1268.                 call    halt_A_frames
  1269.  
  1270.                 call    sub_8F4D
  1271.  
  1272.                 jr      z, loc_84BF
  1273.  
  1274.  
  1275. loc_84DF:                               ; CODE XREF: sub_8C20-76A
  1276.                                         ; sub_8C20-756
  1277.                 ld      (byte_D0DC), a
  1278.                 call    sub_A909
  1279.  
  1280.                 call    sub_93A4
  1281.  
  1282.                 call    sub_A906
  1283.  
  1284.                 ld      a, (byte_D0DC)
  1285.                 ld      b, 5
  1286.                 cp      #52 ; 'R'
  1287.                 jr      z, loc_8500
  1288.  
  1289.                 ld      b, 3
  1290.                 cp      #4E ; 'N'
  1291.                 jr      z, loc_8500
  1292.  
  1293.                 ld      b,#83 ; '?'
  1294.                 cp      #42 ; 'B'
  1295.                 jr      nz, loc_8512
  1296.  
  1297.  
  1298. loc_8500:                               ; CODE XREF: sub_8C20-72E
  1299.                                         ; sub_8C20-728
  1300.                 ld      l, (ix+1)
  1301.                 ld      h, BRD_88_0/256
  1302.                 ld      l, (hl)
  1303.                 res     2, l
  1304.                 inc     l
  1305.                 inc     h               ; h=word_D100/256
  1306.                 ld      (hl), b
  1307.                 res     7, (ix+2)
  1308.                 call    sub_BC00
  1309.  
  1310.  
  1311. loc_8512:                               ; CODE XREF: sub_8C20-722
  1312.                 call    BEEP_move
  1313.  
  1314.  
  1315. loc_8515:                               ; CODE XREF: sub_8C20-777
  1316.                 ld      a, (curlevel)
  1317.                 cp      #A
  1318.                 call    z, sub_8D6A
  1319.  
  1320.                 jp      loc_8226
  1321.  
  1322. ; ---------------------------------------------------------------------------
  1323.  
  1324. loc_8520:                               ; CODE XREF: sub_8C20-A58
  1325.                                         ; sub_8C20-7D
  1326.                 ld      hl, byte_D0DF
  1327.                 res     5, (hl)
  1328.                 pop     af
  1329.                 push    af
  1330.                 jp      po, loc_8533
  1331.  
  1332.                 ld      hl, (ptr_stk_1bvalue)
  1333.                 dec     hl
  1334.                 ld      (ptr_stk_1bvalue), hl
  1335.                 ld      (hl), #FF
  1336.  
  1337.  
  1338. loc_8533:                               ; CODE XREF: sub_8C20-6F9
  1339.                 ld      hl, (word_D0F7)
  1340.                 dec     hl
  1341.                 ld      (word_D0F7), hl
  1342.                 ld      hl, (ptr_stk_1bvalue)
  1343.                 dec     hl
  1344.                 ld      (ptr_stk_1bvalue), hl
  1345.                 ld      (hl), #FF
  1346.                 call    sub_A909
  1347.  
  1348.                 ld      hl, (word_D059)
  1349.                 ld      (word_D25A), hl
  1350.                 ld      hl, (word_D05C)
  1351.                 ld      a, (byte_D05E)
  1352.                 ld      (word_D059), hl
  1353.                 ld      (byte_D05B), a
  1354.                 ld      a, (byte_D029)
  1355.                 ld      (byte_D00A), a
  1356.                 ld      hl,word_D240-1
  1357.                 ld      de,word_D240+1
  1358.                 ld      bc,#17
  1359.                 lddr
  1360.                 ld      hl, byte_D02D
  1361.                 ld      a, (hl)
  1362.                 xor     1
  1363.                 ld      (hl), a
  1364.                 or      #80
  1365.                 ld      (byte_D0BF), a
  1366.                 rra
  1367.                 jr      c, loc_857C
  1368.  
  1369.                 ld      hl, byte_D049 ;move #
  1370.                 dec     (hl)
  1371.  
  1372. loc_857C:                               ; CODE XREF: sub_8C20-6AA
  1373.                 ld      hl, (word_D059)
  1374.                 ld      (word_D05C), hl
  1375.                 ld      ix, word_D059
  1376.                 call    sub_A903
  1377.  
  1378.                 ld      hl, curkey_D0D9
  1379.                 ld      a, (hl)
  1380.                 ld      (hl), 0
  1381.                 ld      (keycodeformenu), a
  1382.                 jp      loc_83A1
  1383.  
  1384. ; ---------------------------------------------------------------------------
  1385.  
  1386. loc_8595:                               ; CODE XREF: sub_8C20-80A
  1387.                                         ; sub_8C20-24
  1388. ;'S' - set position
  1389.                 xor     a
  1390.                 ld      (byte_D0B7), a
  1391.                 call    UnDrawMoveAndCursors
  1392.  
  1393.                 ld      a, #FF
  1394.                 ld      (needdrawcursorfrom), a
  1395.                 call    DrawMoveAndCursors
  1396.  
  1397.                 call    restore_6_spaces
  1398.  
  1399.                 call    PrintMoveText
  1400.  
  1401.                 call    sub_A150
  1402.  
  1403.                 ld      hl,#1200
  1404.                 jr      nc, loc_85B4
  1405.  
  1406.                 ld      h, #A
  1407.  
  1408.  
  1409. loc_85B4:                               ; CODE XREF: sub_8C20-670
  1410.                 ld      (scr_XY), hl
  1411.                 ld      hl, aSIXbuf     ; "     "
  1412.                 call    PRINT_STR_scr0
  1413.  
  1414.                 ld      a,#40
  1415.                 ld      (byte_D08E), a
  1416.                 ld      a, (byte_D02D)
  1417.                 rra
  1418.                 ld      a, 6
  1419.                 rra
  1420.                 ld      (byte_D08D), a
  1421.                 ld      hl, byte_D04D
  1422.                 set     0, (hl)
  1423.                 ld      hl, byte_D0B4
  1424.                 set     0, (hl)
  1425.                 set     3, (hl)
  1426.  
  1427.  
  1428. loc_85D8:                               ; CODE XREF: sub_8C20-608
  1429.                                         ; sub_8C20-5E4 ...
  1430.                 call    BEEP_move
  1431.  
  1432.                 jr      loc_85E0
  1433.  
  1434. ; ---------------------------------------------------------------------------
  1435.  
  1436. loc_85DD:                               ; CODE XREF: sub_8C20-4D5
  1437.                 call    BEEP_3
  1438.  
  1439.  
  1440. loc_85E0:                               ; CODE XREF: sub_8C20-645
  1441.                 call    sub_9F0D ;show state and help
  1442.  
  1443.                 ld      hl, #1601
  1444.                 ld      (scr_XY), hl
  1445.                 ld      hl, aWhite      ; "WHIT"
  1446.                 ld      a, (byte_D08D)
  1447.                 rlca
  1448.                 jr      c, loc_85F5
  1449.  
  1450.                 ld      hl, aBlack      ; "BLAC"
  1451.  
  1452.  
  1453. loc_85F5:                               ; CODE XREF: sub_8C20-630
  1454.                 call    PRINT_STR_scr0
  1455.  
  1456.                 ld      hl, byte_D0DF
  1457.                 ld      (hl), 4
  1458.  
  1459. loc_85FD:                               ; CODE XREF: sub_8C20+A
  1460.                 call    DrawMoveAndCursors
  1461.  
  1462. loc_8600:                               ; CODE XREF: sub_8C20-618
  1463.                 call    sub_8F4D
  1464.  
  1465.                 ld      hl, keycodeformenu
  1466.                 ld      a, (hl)
  1467.                 or      a
  1468.                 jr      z, loc_8600
  1469.  
  1470.                 ld      (hl), 0
  1471.                 push    af
  1472.                 call    sub_8C2D
  1473.  
  1474.                 pop     af
  1475.                 cp      'Z'
  1476.                 jr      nz, loc_863F
  1477.  
  1478.                 call    INIT_PRINT_CLOCKS
  1479.  
  1480.                 jr      loc_85D8
  1481.  
  1482. ; ---------------------------------------------------------------------------
  1483.  
  1484. loc_861A:                               ; CODE XREF: sub_8C20-4C8
  1485.                 ld      a, (byte_D08D)
  1486.                 add     a, b
  1487.  
  1488. loc_861E:                               ; CODE XREF: sub_8C20-4DE
  1489.                 ld      c, (hl)
  1490.                 ld      (hl), a
  1491.                 bit     0, c
  1492.                 jr      nz, loc_862E
  1493.                 bit     2, c
  1494.                 jr      z, loc_862E
  1495.                 res     2, c
  1496.                 ld      l, c
  1497.                 inc     h
  1498.                 set     7, (hl)
  1499. loc_862E:                               ; CODE XREF: sub_8C20-5FE
  1500.                                         ; sub_8C20-5FA ...
  1501.                 ld      sp, RAM_END_D800
  1502.                 ld      a, 3
  1503.                 ld      (byte_D04D), a
  1504.                 call    sub_93A4
  1505.  
  1506.                 call    sub_96A6
  1507.  
  1508.                 jp      loc_85D8
  1509.  
  1510. ; ---------------------------------------------------------------------------
  1511.  
  1512. loc_863F:                               ; CODE XREF: sub_8C20-60D
  1513.                 call    ChangeLevel_ifL
  1514.  
  1515.                 jp      nc, loc_85D8
  1516.  
  1517.                 cp      'C'
  1518.                 jr      nz, loc_864E
  1519.  
  1520.                 call    sub_87CD
  1521.  
  1522.                 jr      loc_862E
  1523.  
  1524. ; ---------------------------------------------------------------------------
  1525.  
  1526. loc_864E:                               ; CODE XREF: sub_8C20-5D9
  1527.                 cp      'M'
  1528.                 jr      z, loc_865C
  1529.  
  1530.                 cp      'S'
  1531.                 jp      nz, loc_871C
  1532.  
  1533.                 ld      hl, byte_D0B4
  1534.                 res     0, (hl)
  1535.  
  1536. loc_865C:                               ; CODE XREF: sub_8C20-5D0
  1537. ;"Move"
  1538.                 ld      hl, #1600
  1539.                 ld      (scr_XY), hl
  1540.                 ld      hl, a_8spaces   ; "       "
  1541.                 call    PRINT_STR_scr0
  1542.  
  1543.                 call    restore_6_spaces
  1544.  
  1545.                 ld      hl, byte_D0DF
  1546.                 res     2, (hl)
  1547.                 ld      a, (byte_D08D)
  1548.                 ld      hl, byte_D02D
  1549.                 ld      b, (hl)
  1550.                 res     0, b
  1551.                 sub     3
  1552.                 ld      (byte_D0B2), a
  1553.                 jr      z, loc_8682
  1554.                 set     0, b
  1555. loc_8682:                               ; CODE XREF: sub_8C20-5A2
  1556.                 ld      a, b
  1557.                 cp      (hl)
  1558.                 jr      z, loc_868C
  1559.                 ld      (hl), b
  1560.                 ld      a, 3
  1561.                 ld      (byte_D04D), a
  1562. loc_868C:                               ; CODE XREF: sub_8C20-59C
  1563.                 ld      a, (byte_D04D)
  1564.                 and     2
  1565.                 jr      z, loc_8712
  1566.  
  1567.                 call    sub_881D
  1568.                 ld      a, #A ;??? сюда никогда не попадаем?
  1569.                 ld      (byte_D049), a ;move #
  1570.                 call    sub_A915
  1571.  
  1572.                 xor     a
  1573.                 ld      (byte_D00A), a
  1574.                 ld      hl, word_D059
  1575.                 ld      b, 6
  1576.  
  1577.  
  1578. loc_86A7:                               ; CODE XREF: sub_8C20-577
  1579.                 ld      (hl), a
  1580.                 inc     l
  1581.                 djnz    loc_86A7
  1582.  
  1583.                 xor     a
  1584.                 ld      (word_D00D), a
  1585.                 ld      ix, word_D059
  1586.                 ld      hl, byte_D02D
  1587.                 inc     (hl)
  1588.                 push    hl
  1589.                 call    sub_BC00
  1590.  
  1591.                 pop     hl
  1592.                 dec     (hl)
  1593.                 or      a
  1594.                 call    z, sub_8C20
  1595.  
  1596.                 ld      a, #FF
  1597.                 ld      (stk_1bvalue), a
  1598.                 ld      hl, #F7F7
  1599.                 ld      (word_D240), hl
  1600.                 ld      hl, byte_D02D
  1601.                 ld      a, (hl)
  1602.                 and     1
  1603.                 ld      b, a
  1604.                 ld      a, (ix+2)
  1605.                 and     #FE
  1606.                 or      b
  1607.                 ld      (byte_D301), a
  1608.                 ld      a, (ix+1)
  1609.                 ld      (byte_D300), a
  1610.                 ld      a, (byte_D00A)
  1611.                 ld      (byte_D302), a
  1612.                 ld      a, (byte_D049) ;move #
  1613.                 ld      (byte_D20C), a ;oldmove #?
  1614.                 ld      hl, word_D100
  1615.                 ld      de, array_64bytes
  1616.                 ld      b, #20 ; ' '
  1617. loc_86F6:                               ; CODE XREF: sub_8C20-51F
  1618.                 ld      a, (hl)
  1619.                 ld      (de), a
  1620.                 inc     hl
  1621.                 inc     de
  1622.                 ld      a, (hl)
  1623.                 ld      (de), a
  1624.                 inc     de
  1625.                 ld      a, l
  1626.                 add     a, 7
  1627.                 ld      l, a
  1628.                 djnz    loc_86F6
  1629.  
  1630.                 ld      hl, stk_1bvalue
  1631.                 ld      (ptr_stk_1bvalue), hl
  1632.                 call    BEEP_move
  1633.  
  1634.                 call    sub_96A6
  1635.  
  1636.                 jp      loc_80CE
  1637.  
  1638. ; ---------------------------------------------------------------------------
  1639.  
  1640. loc_8712:                               ; CODE XREF: sub_8C20-58F
  1641.                 xor     a
  1642.                 ld      (byte_D04D), a
  1643.                 call    BEEP_move
  1644.  
  1645.                 jp      loc_8104
  1646.  
  1647. ; ---------------------------------------------------------------------------
  1648.  
  1649. loc_871C:                               ; CODE XREF: sub_8C20-5CC
  1650.                 cp      #58 ; 'X'
  1651.                 jr      nz, loc_8737
  1652.  
  1653.                 call    restore_6_spaces
  1654.  
  1655.                 ld      hl, byte_D08D
  1656.                 ld      a, (hl)
  1657.                 xor     #80
  1658.                 ld      (hl), a
  1659.                 ld      hl, byte_D0BF
  1660.                 ld      a, (hl)
  1661.                 xor     1
  1662.                 ld      (hl), a
  1663.                 call    PrepareAndPrintMoveText
  1664.  
  1665.                 jp      loc_85D8
  1666.  
  1667. ; ---------------------------------------------------------------------------
  1668.  
  1669. loc_8737:                               ; CODE XREF: sub_8C20-502
  1670.                 cp      #45 ; 'E'
  1671.                 jr      nz, loc_8745
  1672.  
  1673.                 ld      h, #D0
  1674.                 ld      a, (needdrawcursor1)
  1675.                 ld      l, a
  1676.                 xor     a
  1677.                 jp      loc_861E
  1678.  
  1679. ; ---------------------------------------------------------------------------
  1680.  
  1681. loc_8745:                               ; CODE XREF: sub_8C20-4E7
  1682.                 ld      hl, KING
  1683.                 call    sub_8CF7 ;поиск класса фигуры по имени
  1684.  
  1685.                 jp      c, loc_85DD
  1686.  
  1687.                 inc     hl
  1688.                 inc     hl
  1689.                 ld      a, (hl)
  1690.                 ld      b, a
  1691.                 ld      a, (needdrawcursor1)
  1692.                 ld      l, a
  1693.                 ld      h, BRD_88_0/256
  1694.                 jp      loc_861A
  1695.  
  1696. ; END OF FUNCTION CHUNK FOR sub_8C20
  1697.  
  1698. ; =============== S U B R O U T I N E =======================================
  1699.  
  1700.  
  1701. InitBoard_ClearMoves:                           ; CODE XREF: sub_8C20:loc_80CB
  1702.        if FIX
  1703.         call RandomizeSetup
  1704.        endif
  1705.                 xor     a
  1706.                 ld      (byte_D0FF), a
  1707.                 ld      hl, array_D200
  1708.                 ld      b, #A
  1709. loc_8764:                               ; CODE XREF: InitBoard_ClearMoves+B
  1710.                 ld      (hl), a
  1711.                 inc     l
  1712.                 djnz    loc_8764
  1713.  
  1714.                 ld      (hl), #FF
  1715.                 ld      c, a
  1716.                 ld      b, a
  1717.                 ld      hl, array_D200
  1718. loc_876F:                               ; CODE XREF: InitBoard_ClearMoves+16
  1719.                 dec     hl
  1720.                 ld      (hl), a
  1721.                 djnz    loc_876F
  1722.  
  1723.                 ld      hl, unk_D080
  1724.                 ld      b, #80
  1725. loc_8778:                               ; CODE XREF: InitBoard_ClearMoves+1F
  1726.                 dec     hl
  1727.                 ld      (hl), a
  1728.                 djnz    loc_8778
  1729.  
  1730.                 call    Copy_starting_setup
  1731.  
  1732.                 ld      de, word_D100 ;пустышка (а потом там будет положение короля?)
  1733.                 ld      c, #41
  1734.                 call    sub_87BF ;копирует ряд de по |c в hl
  1735.  
  1736.                 ld      l, #60
  1737.                 ld      c, #C1
  1738.                 call    sub_87BF ;копирует ряд de по |c в hl
  1739.  
  1740.                 ld      c, #81
  1741.                 call    Copy_starting_setup
  1742.  
  1743.        if !FIX
  1744.                 xor     a
  1745.                 ld      (byte_D09E), a
  1746.                 inc     a
  1747.        else
  1748.         ld a,1
  1749.         ld (byte_D09E), a ;end of opening?
  1750.        endif
  1751.                 ld      (byte_D0B2), a
  1752.                 ld      (byte_D02D), a
  1753.                 ld      (byte_D0BF), a
  1754.                 ld      (byte_D049), a ;move #
  1755.                 ld      (byte_D097), a
  1756.                 ld      (byte_D20C), a ;oldmove #?
  1757.                 ld      hl, stk_1bvalue
  1758.                 ld      (ptr_stk_1bvalue), hl
  1759.                 ld      hl, RAM_END_D800
  1760.                 ld      (word_D099), hl
  1761.                 call    sub_87DE
  1762.  
  1763.                 jp      loc_8828
  1764.  
  1765. ; End of function InitBoard_ClearMoves
  1766.  
  1767.  
  1768. ; =============== S U B R O U T I N E =======================================
  1769.  
  1770. Copy_starting_setup:                            ; CODE XREF: InitBoard_ClearMoves+21 InitBoard_ClearMoves+35
  1771.                 ld      de, starting_setup
  1772. ; End of function Copy_starting_setup
  1773. ; =============== S U B R O U T I N E =======================================
  1774. sub_87BF:                               ; CODE XREF: InitBoard_ClearMoves+29 InitBoard_ClearMoves+30
  1775.                 ld      b, 8
  1776. loc_87C1:                               ; CODE XREF: sub_87BF+7
  1777.                 ld      a, (de)
  1778.                 or      c
  1779.                 ld      (hl), a
  1780.                 inc     l
  1781.                 inc     de
  1782.                 djnz    loc_87C1
  1783.  
  1784.                 ld      a, 8
  1785.                 add     a, l
  1786.                 ld      l, a
  1787.                 ret
  1788.  
  1789. ; End of function sub_87BF
  1790.  
  1791.  
  1792. ; =============== S U B R O U T I N E =======================================
  1793.  
  1794.  
  1795. sub_87CD:                               ; CODE XREF: sub_8C20-5D7
  1796.                                         ; sub_8C20-1D7
  1797.                 call    sub_A262
  1798.  
  1799.                 xor     a
  1800.                 ld      hl, BRD_88_0
  1801. loc_87D4:                               ; CODE XREF: sub_87CD+B
  1802.                 ld      (hl), a
  1803. loc_87D5:                               ; CODE XREF: sub_87CD+F
  1804.                 inc     l
  1805.                 bit     3, l
  1806.                 jr      z, loc_87D4
  1807.                 bit     7, l
  1808.                 jr      z, loc_87D5
  1809.  
  1810. ; End of function sub_87CD
  1811.  
  1812.  
  1813. ; =============== S U B R O U T I N E =======================================
  1814.  
  1815. sub_87DE:                               ; CODE XREF: InitBoard_ClearMoves+5B
  1816.                 ld      hl, word_D100
  1817.                 xor     a
  1818. loc_87E2:                               ; CODE XREF: sub_87DE+9
  1819.                 set     7, (hl)
  1820.                 add     a, 8
  1821.                 ld      l, a
  1822.                 jr      nc, loc_87E2
  1823.                 ret
  1824.  
  1825. ; End of function sub_87DE
  1826.  
  1827.  
  1828. ; =============== S U B R O U T I N E =======================================
  1829.  
  1830.  
  1831. sub_87EA:                               ; CODE XREF: sub_87EA+30 sub_881D+3     ...
  1832.                 ld      d, (hl)
  1833.                 bit     7, d
  1834.                 jr      nz, loc_8814
  1835.  
  1836.                 inc     l
  1837.                 ld      b, (hl)
  1838.                 dec     l
  1839.                 ld      a, b
  1840.                 and     #F
  1841.                 dec     a
  1842.                 jr      z, loc_8814
  1843.  
  1844.                 set     7, (hl)
  1845.                 ld      a, l
  1846.                 and     #80
  1847.                 or      3
  1848.                 ld      e, a
  1849.                 ld      a, b
  1850.                 and     #8F
  1851.                 push    hl
  1852.                 ld      hl, KING-1
  1853.                 call    sub_8CF7 ;поиск класса фигуры по цене
  1854.  
  1855.                 inc     hl
  1856.                 inc     hl
  1857.                 inc     hl
  1858.                 ld      a, (hl)
  1859.                 or      e
  1860.                 ld      h, #D0  ; 'Р'
  1861.                 ld      l, d
  1862.                 ld      (hl), a
  1863.                 pop     hl
  1864.  
  1865.  
  1866. loc_8814:                               ; CODE XREF: sub_87EA+3 sub_87EA+C
  1867.                 ld      a, l
  1868.                 add     a, 8
  1869.                 ld      l, a
  1870.                 bit     6, a
  1871.                 jr      nz, sub_87EA
  1872.  
  1873.                 ret
  1874.  
  1875. ; End of function sub_87EA
  1876.  
  1877.  
  1878. ; =============== S U B R O U T I N E =======================================
  1879.  
  1880.  
  1881. sub_881D:                               ; CODE XREF: sub_8C20-58D
  1882.                 ld      hl, unk_D140
  1883.                 call    sub_87EA
  1884.  
  1885.                 ld      l, #C0          ; word_D1C0&255
  1886.                 call    sub_87EA
  1887.  
  1888.  
  1889. loc_8828:                               ; CODE XREF: InitBoard_ClearMoves+5E
  1890.                 ld      de, BRD_88_0
  1891.                 ld      h, word_D100/256
  1892.  
  1893.  
  1894. loc_882D:                               ; CODE XREF: sub_881D+1A sub_881D+22
  1895.                 ld      a, (de)         ; bytes from D000 are pointers into D100 table
  1896.                 bit     0, a
  1897.                 call    nz, sub_8853
  1898.  
  1899.                 ld      a, #10
  1900.                 add     a, e
  1901.                 ld      e, a
  1902.                 jp      p, loc_882D
  1903.  
  1904.                 res     7, e
  1905.                 inc     e
  1906.                 bit     3, a
  1907.                 jr      z, loc_882D
  1908.  
  1909.                 ld      l, 0            ; word_D100&255
  1910.                 call    sub_884D
  1911.  
  1912.                 ld      l, #80          ; word_D180&255
  1913.                 ld      a, b
  1914.                 or      (hl)
  1915.                 jp      m, sub_8C20     ; illegal setup
  1916.  
  1917. ; End of function sub_881D
  1918.  
  1919.  
  1920. ; =============== S U B R O U T I N E =======================================
  1921.  
  1922.  
  1923. sub_884D:                               ; CODE XREF: sub_881D+26
  1924.  
  1925. ; FUNCTION CHUNK AT A912 SIZE 00000003 BYTES
  1926.  
  1927.                 ld      b, (hl)
  1928.                 inc     l
  1929.                 ld      a, (hl)
  1930.                 jp      loc_A912
  1931.  
  1932. ; End of function sub_884D
  1933.  
  1934.  
  1935. ; =============== S U B R O U T I N E =======================================
  1936.  
  1937.  
  1938. sub_8853:                               ; CODE XREF: sub_881D+13
  1939.                 ld      l, a
  1940.                 dec     l
  1941.                 bit     6, l
  1942.                 jr      z, loc_8879
  1943.  
  1944.                 ld      a, #70 ; 'p'
  1945.                 and     e
  1946.                 jr      z, loc_88D7
  1947.  
  1948.                 cp      #70 ; 'p'
  1949.                 jr      z, loc_88D7
  1950.  
  1951.                 ld      b, 1
  1952.                 ld      a, #80
  1953.                 and     l
  1954.                 xor     #80
  1955.                 scf
  1956.                 rra
  1957.                 ld      c, a
  1958.                 ld      a, e
  1959.                 and     7
  1960.                 cp      3
  1961.                 jr      z, loc_88DB
  1962.  
  1963.                 cp      4
  1964.                 jr      z, loc_88DB
  1965.  
  1966.                 jr      loc_88BB
  1967.  
  1968. ; ---------------------------------------------------------------------------
  1969.  
  1970. loc_8879:                               ; CODE XREF: sub_8853+4
  1971.                 ld      a, #78 ; 'x'
  1972.                 and     l
  1973.                 jr      nz, loc_888D
  1974.  
  1975.                 ld      c, 1
  1976.                 ld      b, 0
  1977.                 bit     1, l
  1978.                 jr      z, loc_8888
  1979.  
  1980.                 ld      b, #30 ; '0'
  1981.  
  1982.  
  1983. loc_8888:                               ; CODE XREF: sub_8853+31
  1984.                 call    sub_88E9
  1985.  
  1986.                 jr      loc_88D7
  1987.  
  1988. ; ---------------------------------------------------------------------------
  1989.  
  1990. loc_888D:                               ; CODE XREF: sub_8853+29
  1991.                 cp      #10
  1992.                 ld      c, #E
  1993.                 ld      b, 9
  1994.                 jr      c, loc_88B2
  1995.  
  1996.                 jr      nz, loc_88A3
  1997.  
  1998.                 ld      c, 8
  1999.                 ld      b, 5
  2000.                 bit     1, l
  2001.                 jr      z, loc_88AF
  2002.  
  2003.                 ld      b, #15
  2004.                 jr      loc_88AF
  2005.  
  2006. ; ---------------------------------------------------------------------------
  2007.  
  2008. loc_88A3:                               ; CODE XREF: sub_8853+42
  2009.                 ld      b, 3
  2010.                 ld      c, 0
  2011.                 cp      #20 ; ' '
  2012.                 jr      nz, loc_88AF
  2013.  
  2014.                 ld      b, #83 ; '?'
  2015.                 ld      c, 4
  2016.  
  2017.  
  2018. loc_88AF:                               ; CODE XREF: sub_8853+4A sub_8853+4E ...
  2019.                 call    sub_88E9
  2020.  
  2021.  
  2022. loc_88B2:                               ; CODE XREF: sub_8853+40
  2023.                 call    sub_88E9
  2024.  
  2025.  
  2026. loc_88B5:                               ; CODE XREF: sub_8853+94
  2027.                 ld      a, #82 ; '''
  2028.                 and     l
  2029.                 set     6, a
  2030.                 ld      l, a
  2031.  
  2032.  
  2033. loc_88BB:                               ; CODE XREF: sub_8853+24 sub_8853+77
  2034.                 call    sub_88E9
  2035.  
  2036.                 call    sub_88E9
  2037.  
  2038.                 call    sub_88E9
  2039.  
  2040.                 ld      a, l
  2041.                 add     a, #10
  2042.                 ld      l, a
  2043.                 bit     6, a
  2044.                 jr      nz, loc_88BB
  2045.  
  2046.                 xor     #80
  2047.                 or      #58
  2048.                 ld      l, a
  2049.                 call    sub_88E9
  2050.  
  2051.                 call    sub_88E9
  2052.  
  2053.  
  2054. loc_88D7:                               ; CODE XREF: sub_8853+9 sub_8853+D ...
  2055.                 pop     hl
  2056.                 jp      sub_8C20
  2057.  
  2058. ; ---------------------------------------------------------------------------
  2059.  
  2060. loc_88DB:                               ; CODE XREF: sub_8853+1E sub_8853+22
  2061.                 ld      a, l
  2062.                 and     #82
  2063.                 or      #58
  2064.                 ld      l, a
  2065.                 call    sub_88E9
  2066.  
  2067.                 call    sub_88E9
  2068.  
  2069.                 jr      loc_88B5
  2070.  
  2071. ; End of function sub_8853
  2072.  
  2073.  
  2074. ; =============== S U B R O U T I N E =======================================
  2075.  
  2076.  
  2077. sub_88E9:                               ; CODE XREF: sub_8853:loc_8888
  2078.                                         ; sub_8853:loc_88AF ...
  2079.                 res     1, l
  2080.                 ld      a, (hl)
  2081.                 rla
  2082.                 jr      c, loc_88F4
  2083.  
  2084.                 ld      a, 8
  2085.                 add     a, l
  2086.                 ld      l, a
  2087.                 ret
  2088.  
  2089. ; ---------------------------------------------------------------------------
  2090.  
  2091. loc_88F4:                               ; CODE XREF: sub_88E9+4
  2092.                 ld      (hl), e         ; D000 (hl) and D100 (de) point to each other here
  2093.                 ld      a, l
  2094.                 set     2, a
  2095.                 ld      (de), a
  2096.                 inc     l
  2097.                 ld      (hl), b
  2098.                 set     2, l
  2099.                 inc     l
  2100.                 ld      (hl), c
  2101.                 pop     bc
  2102.                 ret
  2103.  
  2104. ; End of function sub_88E9
  2105.  
  2106. ; ---------------------------------------------------------------------------
  2107. starting_setup:
  2108.         ;db     #11,#31,#21,#09,#01,#21,#31,#11
  2109.         db      _R,_N,_B,_Q,_K,_B,_N,_R
  2110.  
  2111. aSIXbuf:        db      '      '
  2112.                 EOS
  2113.  
  2114. ; =============== S U B R O U T I N E =======================================
  2115.  
  2116. PrintMoveText:                          ; CODE XREF: sub_8C20-679
  2117.                                         ; restore_6_spaces+D ...
  2118.                 ld      hl, #61A
  2119.                 ld      (scr_XY), hl
  2120.                 ld      hl, aSIXbuf     ; "     "
  2121.                 call    PRINT_STR_FF
  2122.  
  2123.                 ld      hl, #1700
  2124.                 ld      (scr_XY), hl
  2125.                 ld      hl, aSIXbuf     ; "     "
  2126.                 call    PRINT_STR_scr0
  2127.                 ret
  2128. ; End of function PrintMoveText
  2129. ; =============== S U B R O U T I N E =======================================
  2130. restore_6_spaces:                       ; CODE XREF: sub_8C20-67C
  2131.                                         ; sub_8C20-5B8 ...
  2132.                 ld      hl, aSIXbuf     ; "     "
  2133.                 ld      b, 5
  2134.                 ld      a, #20 ; ' '
  2135. loc_892F:                               ; CODE XREF: restore_6_spaces+9
  2136.                 ld      (hl), a
  2137.                 inc     hl
  2138.                 djnz    loc_892F
  2139.                 ld      (hl),' '|#80
  2140.                 call    PrintMoveText
  2141.                 ret
  2142. ; End of function restore_6_spaces
  2143. ; =============== S U B R O U T I N E =======================================
  2144.  
  2145. PrepareAndPrintMoveText:                                ; CODE XREF: sub_8C20-4EF
  2146.                                         ; sub_9128+37   ...
  2147.                 call    restore_6_spaces
  2148.                 ld      hl, aSIXbuf     ; "     "
  2149.                 ld      a, (needdrawcursorfrom)
  2150.                 cp      #FF
  2151.                 jr      nz, loc_8949
  2152.                 ld      a, (needdrawcursor1)
  2153. loc_8949:                               ; CODE XREF: PrepareAndPrintMoveText+B
  2154.                 call    sub_8960 ;вывод имени поля A в hl
  2155.  
  2156.                 ld      a, (needdrawcursorfrom)
  2157.                 cp      #FF
  2158.                 jr      z, loc_895C
  2159.  
  2160.                 ld      (hl),'-'
  2161.                 inc     hl
  2162.                 ld      a, (needdrawcursor1)
  2163.                 call    sub_8960 ;вывод имени поля A в hl
  2164. loc_895C:                               ; CODE XREF: PrepareAndPrintMoveText+18
  2165.                 call    PrintMoveText
  2166.                 ret
  2167. ; End of function PrepareAndPrintMoveText
  2168. ; =============== S U B R O U T I N E =======================================
  2169. sub_8960:                               ; CODE XREF: PrepareAndPrintMoveText:loc_8949
  2170. ;вывод имени поля A в hl                                        ; PrepareAndPrintMoveText+20    ...
  2171.                 ld      b, a
  2172.                 and     #F
  2173.                 add     a,'a'
  2174.                 ld      (hl), a
  2175.                 inc     hl
  2176.                 ld      a, b
  2177.                 and     #F0
  2178.                 rlca
  2179.                 rlca
  2180.                 rlca
  2181.                 rlca
  2182.                 neg
  2183.                 add     a, 7
  2184.                 add     a,'1'
  2185.                 ld      (hl), a
  2186.                 inc     hl
  2187.                 ret
  2188. ; End of function sub_8960
  2189. ; =============== S U B R O U T I N E =======================================
  2190.  
  2191. sub_8977:                               ; CODE XREF: sub_8C20:loc_8283
  2192. ;вывод хода в buf_10bytes
  2193. ;(ix+0)=откуда ходим
  2194. ;(ix+1)=куда ходим (при рокировке записан ход короля)
  2195. ;(ix+2)D3=съедение
  2196. ;(ix+2)D4=рокировка, (ix+1)D2=короткая (годится и для Chess960)
  2197. ;(ix+2)D7=шах
  2198.                 ld      hl, buf_10bytes
  2199.                 ld      b, #A
  2200. loc_897C:                               ; CODE XREF: sub_8977+8
  2201.                 ld      (hl), #20 ; ' '
  2202.                 inc     hl
  2203.                 djnz    loc_897C
  2204.  
  2205.                 xor     a
  2206.                 ld      (byte_D0DC), a
  2207.  
  2208.                 bit     4, (ix+2)
  2209.                 jr      z, loc_89A4 ;не рокировка
  2210.                 ld      hl, aOOO        ; "O-O-O"
  2211.                 ld      de, buf_10bytes+1
  2212.                 ld      c, 5
  2213.                 bit     2, (ix+1)
  2214.                 jr      z, loc_899E ;рокируем в левую половину доски
  2215.                 inc     hl
  2216.                 inc     hl ;"O-O"
  2217.                 inc     de
  2218.                 ld      c, 3
  2219. loc_899E:                               ; CODE XREF: sub_8977+20
  2220.                 ldir
  2221.                 ex      de, hl
  2222.                 dec     hl
  2223.                 jr      loc_89FB
  2224.  
  2225. ; ---------------------------------------------------------------------------
  2226.  
  2227. loc_89A4:                               ; CODE XREF: sub_8977+12
  2228.                 ld      hl, buf_10bytes
  2229.                 ld      a, (byte_D0C2)
  2230.                 ld      (hl), a
  2231.                 inc     hl
  2232.                 ld      a, (ix+0)
  2233.                 call    sub_8960 ;вывод имени поля A в hl
  2234.  
  2235.                 ld      (hl),'-'
  2236.                 bit     3, (ix+2)
  2237.                 jr      z, loc_89BC ;просто ход
  2238.                 ld      (hl),'x' ;съедение
  2239. loc_89BC:                               ; CODE XREF: sub_8977+41
  2240.                 inc     hl
  2241.                 ld      a, (ix+1)
  2242.                 call    sub_8960 ;вывод имени поля A в hl
  2243.  
  2244.                 dec     hl
  2245.                 pop     de
  2246.                 pop     af
  2247.                 push    af
  2248.                 push    de
  2249.                 jp      po, loc_89F3 ;not promotion
  2250.  
  2251.                 inc     hl
  2252.                 ld      (hl), '/'
  2253.                 inc     hl
  2254.                 push    hl
  2255.                 ld      hl, (ptr_stk_1bvalue)
  2256.                 dec     hl
  2257.                 ld      a, (hl)
  2258.                 and     #8F
  2259.                 pop     hl
  2260.                 ld      b, 'Q'
  2261.                 cp      9
  2262.                 jr      z, loc_89EC
  2263.                 ld      b, 'R'
  2264.                 cp      5
  2265.                 jr      z, loc_89EC
  2266.                 ld      b, 'B'
  2267.                 cp      #83
  2268.                 jr      z, loc_89EC
  2269.                 ld      b, 'N'
  2270. loc_89EC:                               ; CODE XREF: sub_8977+65 sub_8977+6B ...
  2271.                 ld      a, b
  2272.                 ld      (hl), a
  2273.                 ld      (byte_D0DC), a
  2274.                 jr      loc_89FB
  2275.  
  2276. ; ---------------------------------------------------------------------------
  2277.  
  2278. loc_89F3:                               ; CODE XREF: sub_8977+51
  2279.                 jr      nc, loc_89FB
  2280.  
  2281.                 inc     hl
  2282.                 ld      (hl), #65 ; 'e'
  2283.                 inc     hl
  2284.                 ld      (hl), #70 ; 'p'
  2285.  
  2286.  
  2287. loc_89FB:                               ; CODE XREF: sub_8977+2B sub_8977+7A ...
  2288.                 bit     7, (ix+2)
  2289.                 jr      z, loc_8A04
  2290.  
  2291.                 inc     hl
  2292.                 ld      (hl), '+'
  2293.  
  2294.  
  2295. loc_8A04:                               ; CODE XREF: sub_8977+88
  2296.                 set     7, (hl)
  2297.                 ret
  2298.  
  2299. ; End of function sub_8977
  2300.  
  2301. ; ---------------------------------------------------------------------------
  2302. ; START OF FUNCTION CHUNK FOR sub_8C20
  2303.  
  2304. loc_8A07:                               ; CODE XREF: sub_8C20-204
  2305.                                         ; sub_8C20-167
  2306.                 call    BEEP_3
  2307.  
  2308.                 jp      loc_8378
  2309.  
  2310. ; ---------------------------------------------------------------------------
  2311.  
  2312. loc_8A0D:                               ; CODE XREF: sub_8C20:loc_8443
  2313. ;'B' - back
  2314.         if FIX
  2315.          call setoldrnd
  2316.         endif
  2317.                 call    UnDrawMoveAndCursors
  2318.  
  2319.                 ld      a, (needdrawcursorfrom)
  2320.                 or      a
  2321.                 call    p, UnDrawCursor
  2322.  
  2323.                 ld      hl, (word_D0F7)
  2324.                 ld      a, l
  2325.                 or      h
  2326.                 jp      z, loc_8A07
  2327.  
  2328.                 ld      a, (timeformove)
  2329.                 ld      c, a
  2330.                 ld      b, 0
  2331.                 ld      hl, (word_D088)
  2332.                 sbc     hl, bc
  2333.                 jr      nc, loc_8A2F
  2334.  
  2335.                 ld      hl, 0
  2336.  
  2337.  
  2338. loc_8A2F:                               ; CODE XREF: sub_8C20-1F6
  2339.                 ld      (word_D088), hl
  2340.  
  2341.  
  2342. loc_8A32:                               ; CODE XREF: sub_8C20-11
  2343.                                         ; sub_8C20+172A ...
  2344.                 call    BEEP_move
  2345.  
  2346.                 call    sub_96A6
  2347.  
  2348.                 ld      hl, (word_D0F7)
  2349.                 dec     hl
  2350.                 ld      (word_D09F), hl
  2351.                 ld      a, (byte_D20C) ;oldmove #
  2352.                 ld      (byte_D049), a ;move #
  2353.                 dec     a
  2354.                 jp      z, loc_80CB
  2355.  
  2356.                 call    sub_87CD
  2357.  
  2358.                 ld      de, array_64bytes
  2359.                 ld      a, (byte_D300)
  2360.                 ld      (word_D059+1), a
  2361.                 ld      a, (byte_D301)
  2362.                 ld      (byte_D05B), a
  2363.                 ld      (byte_D02D), a
  2364.                 and     1
  2365.                 ld      (byte_D0B2), a
  2366.                 ld      (byte_D0BF), a
  2367.                 ld      a, (byte_D302)
  2368.                 ld      (byte_D00A), a
  2369.                 ld      hl, word_D100
  2370.                 ld      b, #20 ; ' '
  2371.  
  2372.  
  2373. loc_8A71:                               ; CODE XREF: sub_8C20-1A4
  2374.                 ld      a, (de)
  2375.                 ld      (hl), a
  2376.                 inc     hl
  2377.                 inc     de
  2378.                 ld      a, (de)
  2379.                 ld      (hl), a
  2380.                 inc     de
  2381.                 ld      a, l
  2382.                 add     a, 7
  2383.                 ld      l, a
  2384.                 djnz    loc_8A71
  2385.  
  2386.                 ld      hl, word_D100
  2387.                 ld      de, BRD_88_0
  2388.  
  2389.  
  2390. loc_8A84:                               ; CODE XREF: sub_8C20-18E
  2391.                 ld      a, (hl)
  2392.                 or      a
  2393.                 jp      m, loc_8A8E
  2394.  
  2395.                 ld      e, a
  2396.                 ld      a, l
  2397.                 or      4
  2398.                 ld      (de), a
  2399.  
  2400.  
  2401. loc_8A8E:                               ; CODE XREF: sub_8C20-19A
  2402.                 ld      a, l
  2403.                 add     a, 8
  2404.                 ld      l, a
  2405.                 jr      nc, loc_8A84
  2406.  
  2407.                 ld      hl, stk_1bvalue
  2408.                 ld      (ptr_stk_1bvalue), hl
  2409.                 jp      loc_80CE
  2410.  
  2411. ; ---------------------------------------------------------------------------
  2412.  
  2413. loc_8A9D:                               ; CODE XREF: sub_8C20-80F
  2414. ;'F' - forward
  2415.                 call    UnDrawMoveAndCursors
  2416.  
  2417.                 ld      a, (needdrawcursorfrom)
  2418.                 or      a
  2419.                 call    p, UnDrawCursor
  2420.  
  2421.                 ld      a, (timeformove)
  2422.                 ld      c, a
  2423.                 ld      b, 0
  2424.                 ld      hl, (word_D088)
  2425.                 add     hl, bc
  2426.                 ld      (word_D088), hl ; add byte D0F4 to word D088
  2427.                 ld      hl, (ptr_stk_1bvalue)
  2428.                 ld      a, (hl)
  2429.                 inc     a
  2430.                 jp      z, loc_8A07     ; check gor end mark on stack
  2431.  
  2432.                 ld      hl, (word_D0F7)
  2433.                 inc     hl
  2434.                 ld      (word_D09F), hl
  2435.                 call    BEEP_move
  2436.  
  2437.                 jp      loc_810A
  2438.  
  2439. ; ---------------------------------------------------------------------------
  2440.  
  2441. loc_8AC9:                               ; CODE XREF: sub_8C20-119
  2442.                 ld      hl, 0
  2443.                 ld      (word_D09F), hl
  2444.                 ld      a, (byte_D02D)
  2445.                 and     1
  2446.                 ld      (byte_D0B2), a
  2447.                 ld      hl, (ptr_stk_1bvalue)
  2448.                 dec     hl
  2449.                 ld      (ptr_stk_1bvalue), hl
  2450.                 ld      hl, (word_D0F7)
  2451.                 dec     hl
  2452.                 ld      (word_D0F7), hl
  2453.                 jp      loc_82EB
  2454.  
  2455. ; ---------------------------------------------------------------------------
  2456.  
  2457. loc_8AE8:                               ; CODE XREF: sub_8C20-AFF
  2458.                 ld      sp, RAM_END_D800
  2459.                 ld      de, (word_D0F7)
  2460.                 or      a
  2461.                 sbc     hl, de
  2462.                 jp      z, loc_8B58
  2463.  
  2464.                 inc     de
  2465.                 ld      (word_D0F7), de
  2466.                 ld      hl, (ptr_stk_1bvalue)
  2467.                 ld      c, (hl)
  2468.                 ld      b, 0
  2469.                 inc     hl
  2470.                 ld      (ptr_stk_1bvalue), hl
  2471.                 ld      a, c
  2472.                 cp      #FF
  2473.                 jr      z, loc_8AC9     ; if end mark
  2474.  
  2475.                 res     7, c
  2476.                 ld      hl, tbl_D803    ; index into 3byte structs array
  2477.                 add     hl, bc
  2478.                 add     hl, bc
  2479.                 add     hl, bc
  2480.                 push    af
  2481.                 push    hl
  2482.                 ld      ix, word_D059
  2483.                 call    sub_A903
  2484.  
  2485.                 pop     ix
  2486.                 pop     af
  2487.                 rla
  2488.                 jr      nc, loc_8B24
  2489.  
  2490.                 set     7, (ix+2)
  2491.  
  2492.  
  2493. loc_8B24:                               ; CODE XREF: sub_8C20-102
  2494.                 ld      a, (ix+0)
  2495.                 call    sub_9FF5
  2496.  
  2497.                 ld      (byte_D0C2), a
  2498.                 ld      a, (ix+1)
  2499.                 call    sub_9FF5
  2500.  
  2501.                 ld      (byte_D0C3), a
  2502.                 call    sub_A906
  2503.  
  2504.                 pop     af
  2505.                 push    af
  2506.                 jp      po, loc_8253
  2507.  
  2508.                 ld      hl, (ptr_stk_1bvalue)
  2509.                 ld      b, (hl)
  2510.                 inc     hl
  2511.                 ld      (ptr_stk_1bvalue), hl
  2512.                 ld      l, (ix+1)
  2513.                 ld      h, BRD_88_0/256
  2514.                 ld      l, (hl)
  2515.                 res     2, l
  2516.                 inc     l
  2517.                 inc     h               ; word_D100/256
  2518.                 ld      (hl), b
  2519.                 xor     a
  2520.                 ld      (byte_D00A), a
  2521.                 jp      loc_8283
  2522.  
  2523. ; ---------------------------------------------------------------------------
  2524.  
  2525. loc_8B58:                               ; CODE XREF: sub_8C20-12E
  2526.                 ld      (word_D09F), hl
  2527.                 ld      a, (byte_D02D)
  2528.                 and     1
  2529.                 ld      (byte_D0B2), a
  2530.                 jp      loc_8104
  2531.  
  2532. ; END OF FUNCTION CHUNK FOR sub_8C20
  2533.  
  2534. ; =============== S U B R O U T I N E =======================================
  2535.  
  2536.  
  2537. sub_8B66:                               ; CODE XREF: sub_8C20-99A
  2538.                 ld      hl, (word_D059)
  2539.                 ld      (word_D05C), hl
  2540.                 ld      a, (byte_D05B)
  2541.                 ld      (byte_D05E), a
  2542.                 ld      l, (ix+0)
  2543.                 ld      h, (ix+1)
  2544.                 ld      a, (ix+2)
  2545.                 ld      (word_D059), hl
  2546.                 ld      (byte_D05B), a
  2547.                 ld      hl, unk_D22B
  2548.                 ld      de, unk_D229
  2549.                 ld      bc, #19         ; 25
  2550.                 ldir
  2551.                 ret
  2552.  
  2553. ; End of function sub_8B66
  2554.  
  2555. ; ---------------------------------------------------------------------------
  2556. ; START OF FUNCTION CHUNK FOR sub_8C20
  2557.  
  2558. loc_8B8D:                               ; CODE XREF: sub_8C20-A54
  2559.                                         ; sub_8C20-91A
  2560.                 ld      hl, aCheckmate  ; "CHECKMAT"
  2561.                 ld      a, (byte_D05B)
  2562.                 rla
  2563.                 jr      c, loc_8B9E ;конец игры
  2564.  
  2565.                 ld      hl, aStalemate  ; "STALEMAT"
  2566.                 jr      loc_8B9E ;конец игры
  2567.  
  2568. ; ---------------------------------------------------------------------------
  2569.  
  2570. loc_8B9B:                               ; CODE XREF: sub_8C20-B0C
  2571.                                         ; sub_8C20-AD9
  2572.                 ld      hl, aDraw       ; "DRA"
  2573.  
  2574. loc_8B9E:                               ; CODE XREF: sub_8C20-8C sub_8C20-87
  2575. ;конец игры
  2576. ;hl=msg
  2577.                 ld      a, (byte_D0B4)
  2578.                 bit     5, a
  2579.                 jp      nz, loc_8520 ;invisible board?
  2580.  
  2581.                 xor     a
  2582.                 ld      (byte_D0BF), a
  2583.         push hl
  2584.                 call    sub_A43C
  2585.  
  2586.                 call    sub_A45A
  2587.  
  2588.                 call    sub_A43C
  2589.  
  2590.         pop hl ;msg
  2591.                 call    PrintStrF00
  2592.  
  2593.                 ld      hl, aBBackSSetPosn_ ; "B - Back          S - Set posn. G - new"...
  2594.                 ld      de, #1000
  2595.                 call    PrintGameState
  2596.  
  2597.                 call    sub_9939
  2598.  
  2599.                 ld      a, (byte_D02D)
  2600.                 ld      hl, word_D100
  2601.                 rra
  2602.                 jr      nc, loc_8BCF
  2603.                 ld      l, #80
  2604. loc_8BCF:                               ; CODE XREF: sub_8C20-55
  2605.                 ld      b, #30
  2606.                 ld      d, 0
  2607.                 ld      l, (hl)
  2608.                 dec     h               ; BRD_88_0/256
  2609.                 ld      e, (hl)
  2610.                 ld      c, e
  2611.                 or      a
  2612. loc_8BD8:                               ; CODE XREF: sub_8C20-8 sub_8C20-5
  2613.                 ld      a, e
  2614.                 ld      e, d
  2615.                 ld      d, a
  2616.                 ld      (hl), e
  2617.                 push    bc
  2618.                 push    hl
  2619.                 push    de
  2620.                 call    c, BEEP_move
  2621.  
  2622.                 call    sub_93A4
  2623.  
  2624.                 ld      hl, byte_D0DF
  2625.                 ld      (hl), 8
  2626.                 ld      a, #A
  2627.                 call    sub_8C34
  2628.  
  2629.                 pop     de
  2630.                 pop     hl
  2631.                 pop     bc
  2632.                 ld      (hl), c
  2633.                 jr      z, loc_8C13
  2634.  
  2635.                 cp      #53 ; 'S'
  2636.                 jr      nz, loc_8BFF
  2637.  
  2638.                 call    sub_93A4
  2639.  
  2640.                 jp      loc_8595
  2641.  
  2642. ; ---------------------------------------------------------------------------
  2643.  
  2644. loc_8BFF:                               ; CODE XREF: sub_8C20-29
  2645.                 cp      #42 ; 'B'
  2646.                 jr      nz, loc_8C12
  2647.  
  2648.                 push    hl
  2649.                 ld      hl, byte_D0B4
  2650.                 res     1, (hl)
  2651.                 ld      hl, (word_D0F7)
  2652.                 ld      a, l
  2653.                 or      h
  2654.                 pop     hl
  2655.                 jp      nz, loc_8A32
  2656.  
  2657. loc_8C12:                               ; CODE XREF: sub_8C20-1F
  2658.                 scf
  2659.  
  2660. loc_8C13:                               ; CODE XREF: sub_8C20-2D
  2661.                 ld      a, (byte_D0B4)
  2662.                 bit     1, a
  2663.                 jp      z, loc_8BD8
  2664.  
  2665.                 djnz    loc_8BD8
  2666.  
  2667.                 jp      NEW_GAME
  2668.  
  2669. ; END OF FUNCTION CHUNK FOR sub_8C20
  2670.  
  2671. ; =============== S U B R O U T I N E =======================================
  2672.  
  2673.  
  2674. sub_8C20:                               ; CODE XREF: sub_8C20-562
  2675.                                         ; sub_881D+2D   ...
  2676.  
  2677. ; FUNCTION CHUNK AT 80A1 SIZE 0000038B BYTES
  2678. ; FUNCTION CHUNK AT 8443 SIZE 00000003 BYTES
  2679. ; FUNCTION CHUNK AT 845D SIZE 000002FE BYTES
  2680. ; FUNCTION CHUNK AT 8A07 SIZE 0000015F BYTES
  2681. ; FUNCTION CHUNK AT 8B8D SIZE 00000093 BYTES
  2682. ; FUNCTION CHUNK AT 8CD5 SIZE 00000022 BYTES
  2683. ; FUNCTION CHUNK AT A29F SIZE 00000112 BYTES
  2684. ; FUNCTION CHUNK AT A4F4 SIZE 00000035 BYTES
  2685. ; FUNCTION CHUNK AT A596 SIZE 000000EE BYTES
  2686.  
  2687.                 pop     hl
  2688.                 ld      hl, aIllegalSetup ; "ILLEGAL SETU"
  2689.                 call    PrintStrF00
  2690.  
  2691.                 call    BEEP_3
  2692.  
  2693.                 jp      loc_85FD
  2694.  
  2695. ; End of function sub_8C20
  2696.  
  2697.  
  2698. ; =============== S U B R O U T I N E =======================================
  2699.  
  2700.  
  2701. sub_8C2D:                               ; CODE XREF: sub_8C20-AE4
  2702.                                         ; sub_8C20:loc_845D ...
  2703.                 ld      hl, a_32spaces  ; "                        "
  2704.                 call    PrintStrF00
  2705.  
  2706.                 ret
  2707.  
  2708. ; End of function sub_8C2D
  2709.  
  2710.  
  2711. ; =============== S U B R O U T I N E =======================================
  2712.  
  2713.  
  2714. sub_8C34:                               ; CODE XREF: sub_8C20-34 ShowHintMove+3D ...
  2715.                 xor     a
  2716.                 ld      (keycodeformenu), a
  2717.  
  2718. loc_8C38:
  2719.                 ld      a, #A
  2720.  
  2721.  
  2722. loc_8C3A:                               ; CODE XREF: sub_8C34+8
  2723.                 halt
  2724.                 dec     a
  2725.                 jr      nz, loc_8C3A
  2726.  
  2727.                 call    sub_8F4D
  2728.  
  2729.                 ld      a, (keycodeformenu)
  2730.                 push    af
  2731.                 xor     a
  2732.                 ld      (keycodeformenu), a
  2733.                 pop     af
  2734.                 or      a
  2735.                 ret
  2736.  
  2737. ; End of function sub_8C34
  2738.  
  2739. ; ---------------------------------------------------------------------------
  2740.         if !FIX
  2741.                 ld      c, #A
  2742. loc_8C4E:                               ; CODE XREF: RAM:8C56
  2743.                 ld      a, #25 ; '%'
  2744. loc_8C50:                               ; CODE XREF: RAM:loc_8C50 RAM:8C53
  2745.                 djnz    $
  2746.                 dec     a
  2747.                 jr      nz, loc_8C50
  2748.                 dec     c
  2749.                 jr      nz, loc_8C4E
  2750.                 ret
  2751.  
  2752. ; ---------------------------------------------------------------------------
  2753.                 ld      a, (byte_D0B3) ;d3=swap board
  2754.                 bit     4, a
  2755.                 ret     z
  2756.                 bit     6, a
  2757.                 ret     nz
  2758.                 ld      hl, byte_D0B4
  2759.                 bit     5, (hl)
  2760.                 ret     nz
  2761.                 ld      hl, (tbl_D803)
  2762.         endif
  2763.  
  2764. ; =============== S U B R O U T I N E =======================================
  2765.  
  2766.  
  2767. ShowHintMove:                           ; CODE XREF: sub_8C20-840
  2768. ;l=from, h=to?                                  ; sub_8FC1+37
  2769.                 ld      a, l
  2770.                 or      h
  2771.                 ret     z
  2772.                 ld      a, l
  2773.                 call    sub_8CC1 ;a = 0yyy0xxx -> 00yyyxxx с учётом swap board
  2774.                 ld      c, a
  2775.                 ld      a, h
  2776.                 call    sub_8CC1 ;a = 0yyy0xxx -> 00yyyxxx с учётом swap board
  2777.                 ld      b, 0
  2778.                 ld      hl, BOARD
  2779.                 add     hl, bc
  2780.                 ld      e, (hl)
  2781.                 ld      b, a ;00yyyxxx
  2782.                 ld      hl, BOARD
  2783.                 add     a, l
  2784.                 ld      l, a
  2785.                 ld      a, 0
  2786.                 adc     a, h
  2787.                 ld      h, a
  2788.                 ld      d, (hl)
  2789.                 ld      hl, byte_D0B3 ;d3=swap board
  2790.                 bit     3, (hl)
  2791.                 jr      z, loc_8C98
  2792.                 ld      a, b
  2793.                 xor     #3F
  2794.                 ld      b, a
  2795.                 ld      a, c
  2796.                 xor     #3F
  2797.                 ld      c, a
  2798. loc_8C98:                               ; CODE XREF: ShowHintMove+23
  2799.                 push    de ;e=from fig, d=to fig?
  2800.                  push   bc ;c=from pos, b=to pos?
  2801.                 ld      c, e
  2802.                 ld      a, b
  2803.                 call    SHOW_FIG_POS ;show to
  2804.                  pop    bc
  2805.                  push   bc
  2806.                 ld      a, c
  2807.                 call    SH_EMPT_POS ;show from
  2808.  
  2809.                 call    BEEP_move
  2810.  
  2811.                 call    sub_8C34
  2812.                 call    sub_8C34
  2813.  
  2814.                  pop    bc
  2815.                 pop     de
  2816.                 push    de ;e=from fig, d=to fig?
  2817.                  push   bc ;c=from pos, b=to pos?
  2818.                 ld      a, c
  2819.                 ld      c, e
  2820.                 call    SHOW_FIG_POS ;show old from
  2821.                  pop    bc
  2822.                 pop     de
  2823.                 ld      a, b
  2824.                 ld      c, d
  2825.                 call    SHOW_FIG_POS ;show old to
  2826.  
  2827.                 or      1
  2828.                 ret
  2829.  
  2830. ; End of function ShowHintMove
  2831.  
  2832.  
  2833. ; =============== S U B R O U T I N E =======================================
  2834.  
  2835.  
  2836. sub_8CC1:                               ; CODE XREF: ShowHintMove+4 ShowHintMove+9
  2837. ;a = 0yyy0xxx -> 00yyyxxx с учётом swap board
  2838.                 push    af
  2839.                 and     7
  2840.                 ld      b, a
  2841.                 pop     af
  2842.                 rra
  2843.                 and     #38
  2844.                 add     a, b
  2845.                 push    hl
  2846.                 ld      hl, byte_D0B3 ;d3=swap board
  2847.                 bit     3, (hl)
  2848.                 pop     hl
  2849.                 ret     z
  2850.                 xor     #3F
  2851.                 ret
  2852.  
  2853. ; End of function sub_8CC1
  2854.  
  2855. ; ---------------------------------------------------------------------------
  2856. ; START OF FUNCTION CHUNK FOR sub_8C20
  2857.  
  2858. loc_8CD5:                               ; CODE XREF: sub_8C20-819
  2859. ;'D' - demo
  2860.                 ld      hl, byte_D0B4
  2861.                 set     1, (hl)
  2862.  
  2863. loc_8CDA:                               ; CODE XREF: sub_8C20-81E
  2864. ;'M' - move
  2865.                 call    BEEP_move
  2866.  
  2867.                 ld      a, (needdrawcursorfrom)
  2868.                 or      a
  2869.                 call    p, UnDrawCursor
  2870.  
  2871.                 ld      hl, byte_D0B4
  2872.                 res     0, (hl)
  2873.  
  2874.  
  2875. loc_8CE9:                               ; CODE XREF: sub_8C20-AA1
  2876.                                         ; sub_8C20-92A
  2877.                 ld      hl, byte_D0B2
  2878.                 ld      a, (hl)
  2879.                 or      a
  2880.                 ld      a, #16
  2881.                 jr      z, loc_8CF3
  2882.  
  2883.                 xor     a
  2884.  
  2885.  
  2886. loc_8CF3:                               ; CODE XREF: sub_8C20+D0
  2887.                 ld      (hl), a
  2888.                 jp      loc_810A
  2889.  
  2890. ; END OF FUNCTION CHUNK FOR sub_8C20
  2891.  
  2892. ; =============== S U B R O U T I N E =======================================
  2893.  
  2894.  
  2895. sub_8CF7:                               ; CODE XREF: sub_8C20-4D8
  2896. ;поиск класса фигуры по номеру, коду, имени                                     ; sub_87EA+1D   ...
  2897.                 ld      b, 6
  2898.  
  2899.  
  2900. loc_8CF9:                               ; CODE XREF: sub_8CF7+8
  2901.                 cp      (hl)
  2902.                 ret     z
  2903.                 inc     hl
  2904.                 inc     hl
  2905.                 inc     hl
  2906.                 inc     hl
  2907.                 djnz    loc_8CF9
  2908.  
  2909.                 scf
  2910.                 ret
  2911.  
  2912. ; End of function sub_8CF7
  2913.  
  2914. ; ---------------------------------------------------------------------------
  2915.                 db    0    ;цена K              ; DATA XREF: sub_87EA+1A sub_9FF5+20
  2916. KING:           db  'K'    ;имя K                         ; DATA XREF: sub_8C20:loc_8745
  2917.                 db    6    ;номер K             ; DATA XREF: sub_94C9:loc_94FF
  2918.                 db    0    ;код K
  2919.                 db    9    ;цена Q
  2920.                 db  'Q'    ;имя Q
  2921.                 db    5    ;номер Q
  2922.                 db    8    ;код Q
  2923.                 db    5    ;цена R
  2924.                 db  'R'    ;имя R
  2925.                 db    4    ;номер R
  2926.                 db  #10    ;код R
  2927.                 db  #83    ;цена B
  2928.                 db  'B'    ;имя B
  2929.                 db    3    ;номер B
  2930.                 db  #20    ;код B
  2931.                 db    3    ;цена N
  2932.                 db  'N'    ;имя N
  2933.                 db    2    ;номер N
  2934.                 db  #30    ;код N
  2935.                 db    1    ;цена P
  2936.                 db  'P'    ;имя P
  2937.                 db    1    ;номер P
  2938.                 db  #40    ;код P
  2939.  
  2940. ; =============== S U B R O U T I N E =======================================
  2941.  
  2942. ChangeLevel_ifL:                                ; CODE XREF: sub_8C20:loc_83D1
  2943.                                         ; sub_8C20:loc_863F
  2944.                 cp      'L'
  2945.                 scf
  2946.                 ret     nz
  2947.                 ld      a, (curlevel)
  2948. loc_8D22:                               ; CODE XREF: ChangeLevel_ifL+8 ChangeLevel_ifL+C
  2949.                 inc     a
  2950.                 jr      z, loc_8D22
  2951.                 cp      #D
  2952.                 jr      nc, loc_8D22
  2953.                 ld      (curlevel), a
  2954. ; End of function ChangeLevel_ifL
  2955. ; =============== S U B R O U T I N E =======================================
  2956. PrintCurLevel:                          ; CODE XREF: sub_9EE6+23
  2957.                 ld      a, (curlevel)
  2958.                 push    af
  2959.                 or      a
  2960.                 call    sub_A915
  2961.  
  2962.                 ld      a, #FF
  2963.                 ld      (NEED_SCR2BUF), a
  2964.                 pop     af
  2965.                 ld      de, #41B
  2966.                 ld      (scr_XY), de
  2967.                 cp      #A
  2968.                 jr      nc, loc_8D56
  2969.  
  2970.                 push    af
  2971.                 ld      a, ' '
  2972.                 call    PRINT_LETTER
  2973.                 pop     af
  2974.                 add     a, '0'
  2975.                 call    PRINT_LETTER
  2976.  
  2977.                 ld      hl,  a_8spaces+5
  2978.                 jr      loc_8D65
  2979. ; ---------------------------------------------------------------------------
  2980. loc_8D56:                               ; CODE XREF: PrintCurLevel+17
  2981.                 ld      hl, a_ADAP      ; "ADA"
  2982.                 jr      z, loc_8D65
  2983.                 ld      hl, a_INF       ; "INF"
  2984.                 cp      #B
  2985.                 jr      z, loc_8D65
  2986.                 ld      hl, aProb       ; "PRO"
  2987. loc_8D65:                               ; CODE XREF: PrintCurLevel+28 PrintCurLevel+2D ...
  2988.                 call    PRINT_STR_FF
  2989.                 xor     a
  2990.                 ret
  2991.  
  2992. ; End of function PrintCurLevel
  2993.  
  2994.  
  2995. ; =============== S U B R O U T I N E =======================================
  2996.  
  2997.  
  2998. sub_8D6A:                               ; CODE XREF: sub_8C20-706
  2999.                                         ; sub_8DE9+68
  3000.                 ld      a, (timeformove)
  3001.                 ld      c, a
  3002.                 ld      b, 0
  3003.                 ld      h, b
  3004.                 ld      l, c
  3005.                 add     hl, hl
  3006.                 add     hl, hl ;*4
  3007.                 add     hl, bc
  3008.                 add     hl, bc
  3009.                 add     hl, bc ;*7
  3010.                 ld      bc, (INC_SECONDS)
  3011.                 dec     bc
  3012.                 dec     bc
  3013.                 bit     7, b
  3014.                 jr      z, loc_8D84
  3015.                 ld      bc, 0
  3016. loc_8D84:                               ; CODE XREF: sub_8D6A+15
  3017.                 add     hl, bc
  3018.                 ld      b, 3
  3019. loc_8D87:                               ; CODE XREF: sub_8D6A+21
  3020.                 srl     h
  3021.                 rr      l
  3022.                 djnz    loc_8D87 ;*7/8
  3023.  
  3024.                 ld      a, h
  3025.                 or      a
  3026.                 jr      z, loc_8D93
  3027.                 ld      l, #FE
  3028. loc_8D93:                               ; CODE XREF: sub_8D6A+25
  3029.                 ld      a, l
  3030.                 cp      2
  3031.                 jr      nc, loc_8D9A
  3032.                 ld      a, 2
  3033. loc_8D9A:                               ; CODE XREF: sub_8D6A+2C
  3034.                 ld      (timeformove), a
  3035.                 ret
  3036.  
  3037. ; End of function sub_8D6A
  3038.  
  3039.  
  3040. ; =============== S U B R O U T I N E =======================================
  3041.  
  3042.  
  3043. sub_8D9E:                               ; CODE XREF: sub_8C20-989
  3044.                                         ; sub_9128+10E ...
  3045.                 push    ix
  3046.                 push    hl
  3047.                 push    de
  3048.                 push    bc
  3049.                 ld      hl, byte_D0B4
  3050.                 bit     5, (hl)
  3051.                 jr      z, loc_8DB0 ;visible board?
  3052.  
  3053.                 call    BEEP_move
  3054.  
  3055.                 call    sub_8C2D
  3056.  
  3057. loc_8DB0:                               ; CODE XREF: sub_8D9E+A
  3058.                 ld      a, (SEL_SCRorBUF)
  3059.                 or      a
  3060.                 jr      z, loc_8DBC
  3061.  
  3062.                 call    ShowBOARD2
  3063.  
  3064.                 jp      loc_8E2C
  3065.  
  3066. ; ---------------------------------------------------------------------------
  3067.  
  3068. loc_8DBC:                               ; CODE XREF: sub_8D9E+16
  3069.                 ld      a, (byte_D0C4) ;a=0b0YYY0XXX
  3070.                 call    sub_96F7 ;count scr_XY, scr_pix_addr, scr_attr_addr with swap board
  3071.  
  3072.                 ld      hl, (scr_XY)
  3073.                 ld      (word_D0C6), hl
  3074.                 ld      a, (byte_D0C5) ;a=0b0YYY0XXX
  3075.                 call    sub_96F7 ;count scr_XY, scr_pix_addr, scr_attr_addr with swap board
  3076.  
  3077.                 ld      hl, (scr_XY)
  3078.                 ld      (word_D0C8), hl
  3079.                 ld      bc, (word_D0C6)
  3080.                 call    sub_8EFB ;write bc=scr_XY, scr_pix_addr, scr_attr_addr to TAPE_header+...
  3081.  
  3082.                 call    sub_8E81
  3083.  
  3084.                 ld      hl, byte_D0DF
  3085.                 set     0, (hl)
  3086.                 xor     a
  3087.                 ld      (DECREMENT_50HZ), a
  3088.                 jr      loc_8DF3
  3089.  
  3090. ; End of function sub_8D9E
  3091.  
  3092.  
  3093. ; =============== S U B R O U T I N E =======================================
  3094.  
  3095.  
  3096. sub_8DE9:                               ; CODE XREF: sub_8F4D:loc_8FBC
  3097.                 ld      a, (DECREMENT_50HZ)
  3098.                 or      a
  3099.                 ret     p
  3100.                 push    ix
  3101.                 push    hl
  3102.                 push    de
  3103.                 push    bc
  3104.  
  3105.  
  3106. loc_8DF3:                               ; CODE XREF: sub_8D9E+49
  3107.                 call    sub_8EA7
  3108.  
  3109.                 ld      hl, (word_D0C6)
  3110.                 ld      de, (word_D0C8)
  3111.                 ld      a, h
  3112.                 cp      d
  3113.                 jr      z, loc_8E06
  3114.  
  3115.                 inc     h
  3116.                 jr      c, loc_8E06
  3117.  
  3118.                 dec     h
  3119.                 dec     h
  3120.  
  3121.  
  3122. loc_8E06:                               ; CODE XREF: sub_8DE9+16 sub_8DE9+19
  3123.                 ld      a, l
  3124.                 cp      e
  3125.                 jr      z, loc_8E0F
  3126.  
  3127.                 inc     l
  3128.                 jr      c, loc_8E0F
  3129.  
  3130.                 dec     l
  3131.                 dec     l
  3132.  
  3133.  
  3134. loc_8E0F:                               ; CODE XREF: sub_8DE9+1F sub_8DE9+22
  3135.                 ld      (word_D0C6), hl
  3136.                 or      a
  3137.                 sbc     hl, de
  3138.                 push    af
  3139.                 ld      bc, (word_D0C6)
  3140.                 call    sub_8EFB ;write bc=scr_XY, scr_pix_addr, scr_attr_addr to TAPE_header+...
  3141.  
  3142.                 call    sub_8EA3
  3143.  
  3144.                 pop     af
  3145.                 jr      z, loc_8E2C
  3146.  
  3147.                 ld      hl, DECREMENT_50HZ
  3148.                 ld      a, (hl)
  3149.                 add     a, 8            ; figure move speed
  3150.                 ld      (hl), a
  3151.                 jr      loc_8E7B
  3152.  
  3153. ; ---------------------------------------------------------------------------
  3154.  
  3155. loc_8E2C:                               ; CODE XREF: sub_8D9E+1B sub_8DE9+38
  3156.                 ld      hl, byte_D0B4
  3157.                 bit     5, (hl)
  3158.                 jr      z, loc_8E73 ;visible board?
  3159.  
  3160.                 call    sub_A6E4
  3161.  
  3162.                 call    sub_9FB2 ;добавление хода на экране со скроллом?
  3163.  
  3164.                 ld      a, (byte_D0B6)
  3165.                 bit     2, a
  3166.                 call    nz, sub_A684
  3167.  
  3168.                 ld      hl, BOARD2
  3169.                 ld      de, BOARD
  3170.                 ld      bc, #40
  3171.                 ldir
  3172.                 ld      a, (curlevel)
  3173.                 cp      #A
  3174.                 call    z, sub_8D6A
  3175.  
  3176.                 ld      hl, (INC_SECONDS)
  3177.                 ld      (word_D02B), hl
  3178.                 ld      hl, 0
  3179.                 ld      (INC_SECONDS), hl
  3180.                 call    ShowBOARD
  3181.  
  3182.                 ld      hl, byte_D0B3 ;d3=swap board
  3183.                 bit     5, (hl)
  3184.                 ld      hl, byte_D0B4
  3185.                 jr      z, loc_8E71
  3186.                 set     7, (hl)
  3187.                 res     1, (hl)
  3188.  
  3189. loc_8E71:                               ; CODE XREF: sub_8DE9+82
  3190.                 res     5, (hl) ;visible board?
  3191.  
  3192. loc_8E73:                               ; CODE XREF: sub_8DE9+48
  3193.                 ld      hl, byte_D0DF
  3194.                 res     0, (hl)
  3195.                 call    sub_9F0D ;show state and help
  3196.  
  3197. loc_8E7B:                               ; CODE XREF: sub_8DE9+41
  3198.                 pop     bc
  3199.                 pop     de
  3200.                 pop     hl
  3201.                 pop     ix
  3202.                 ret
  3203.  
  3204. ; End of function sub_8DE9
  3205.  
  3206.  
  3207. ; =============== S U B R O U T I N E =======================================
  3208.  
  3209.  
  3210. sub_8E81:                               ; CODE XREF: sub_8D9E+3D
  3211.                 ld      c, 3
  3212.                 ld      hl,  TAPE_header+2
  3213.  
  3214.  
  3215. loc_8E86:                               ; CODE XREF: sub_8E81+1A
  3216.                 ld      b, #18
  3217.                 xor     a
  3218.  
  3219.  
  3220. loc_8E89:                               ; CODE XREF: sub_8E81+A
  3221.                 ld      (hl), a
  3222.                 inc     hl
  3223.                 djnz    loc_8E89
  3224.  
  3225.                 ld      e, (hl)
  3226.                 inc     hl
  3227.                 ld      d, (hl)
  3228.                 inc     hl
  3229.                 ld      b, 3
  3230.                 ld      a, (de)
  3231.  
  3232.  
  3233. loc_8E94:                               ; CODE XREF: sub_8E81+15
  3234.                 ld      (hl), a
  3235.                 inc     hl
  3236.                 djnz    loc_8E94
  3237.  
  3238.                 inc     hl
  3239.                 inc     hl
  3240.                 dec     c
  3241.                 jr      nz, loc_8E86
  3242.  
  3243.                 and     7
  3244.                 ld      (byte_D0CB), a
  3245.                 ret
  3246.  
  3247. ; End of function sub_8E81
  3248.  
  3249.  
  3250. ; =============== S U B R O U T I N E =======================================
  3251.  
  3252.  
  3253. sub_8EA3:                               ; CODE XREF: sub_8DE9+34
  3254.                 ld      a, 1
  3255.                 jr      loc_8EA8
  3256.  
  3257. ; End of function sub_8EA3
  3258.  
  3259.  
  3260. ; =============== S U B R O U T I N E =======================================
  3261.  
  3262.  
  3263. sub_8EA7:                               ; CODE XREF: sub_8DE9:loc_8DF3
  3264.                 xor     a
  3265.  
  3266.  
  3267. loc_8EA8:                               ; CODE XREF: sub_8EA3+2
  3268.                 ld      (byte_D0CC), a
  3269.                 ld      b, 3
  3270.                 exx
  3271.                 ld      hl, TAPE_header
  3272.  
  3273.  
  3274. loc_8EB1:                               ; CODE XREF: sub_8EA7+3B sub_8EA7+51
  3275.                 ld      e, (hl)
  3276.                 inc     hl
  3277.                 ld      d, (hl)
  3278.                 inc     hl
  3279.                 ld      c, 8
  3280.  
  3281.  
  3282. loc_8EB7:                               ; CODE XREF: sub_8EA7+20
  3283.                 push    de
  3284.                 ld      b, 3
  3285.  
  3286.  
  3287. loc_8EBA:                               ; CODE XREF: sub_8EA7+1B
  3288.                 ld      a, (de)
  3289.                 ex      af, af' ;'
  3290.                 ld      a, (hl)
  3291.                 ld      (de), a
  3292.                 ex      af, af' ;'
  3293.                 ld      (hl), a
  3294.                 inc     de
  3295.                 inc     hl
  3296.                 djnz    loc_8EBA
  3297.  
  3298.                 pop     de
  3299.                 inc     d
  3300.                 dec     c
  3301.                 jr      nz, loc_8EB7
  3302.  
  3303.                 ld      e, (hl)
  3304.                 inc     hl
  3305.                 ld      d, (hl)
  3306.                 inc     hl
  3307.                 ld      a, (byte_D0CC)
  3308.                 or      a
  3309.                 jr      nz, loc_8EE5
  3310.  
  3311.                 ld      b, 3
  3312.  
  3313.  
  3314. loc_8ED5:                               ; CODE XREF: sub_8EA7+36
  3315.                 ld      a, (de)
  3316.                 ex      af, af' ;'
  3317.                 ld      a, (hl)
  3318.                 ld      (de), a
  3319.                 ex      af, af' ;'
  3320.                 ld      (hl), a
  3321.                 inc     hl
  3322.                 inc     de
  3323.                 djnz    loc_8ED5
  3324.  
  3325.                 exx
  3326.                 dec     b
  3327.                 exx
  3328.                 jr      nz, loc_8EB1
  3329.  
  3330.                 ret
  3331.  
  3332. ; ---------------------------------------------------------------------------
  3333.  
  3334. loc_8EE5:                               ; CODE XREF: sub_8EA7+2A
  3335.                 ld      a, (byte_D0CB)
  3336.                 ld      c, a
  3337.                 ld      b, 3
  3338.  
  3339.  
  3340. loc_8EEB:                               ; CODE XREF: sub_8EA7+4C
  3341.                 ld      a, (de)
  3342.                 ld      (hl), a
  3343.                 and     #F8 ; 'ш'
  3344.                 or      c
  3345.                 ld      (de), a
  3346.                 inc     hl
  3347.                 inc     de
  3348.                 djnz    loc_8EEB
  3349.  
  3350.                 exx
  3351.                 dec     b
  3352.                 exx
  3353.                 jr      nz, loc_8EB1
  3354.  
  3355.                 ret
  3356.  
  3357. ; End of function sub_8EA7
  3358.  
  3359.  
  3360. ; =============== S U B R O U T I N E =======================================
  3361. ;write bc=scr_XY, scr_pix_addr, scr_attr_addr to TAPE_header+...
  3362.  
  3363. sub_8EFB:                               ; CODE XREF: sub_8D9E+3A sub_8DE9+31
  3364.                 ld      ix, TAPE_header
  3365.                 ld      (scr_XY), bc
  3366.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  3367.  
  3368.                 ld      hl, (scr_pix_addr)
  3369.                 ld      (ix+0), l
  3370.                 ld      (ix+1), h
  3371.                 ld      hl, (scr_attr_addr)
  3372.                 ld      (ix+#1A), l
  3373.                 ld      (ix+#1B), h
  3374.                 inc     b
  3375.                 ld      (scr_XY), bc
  3376.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  3377.  
  3378.                 ld      hl, (scr_pix_addr)
  3379.                 ld      (ix+#1F), l
  3380.                 ld      (ix+#20), h
  3381.                 ld      hl, (scr_attr_addr)
  3382.                 ld      (ix+#39), l
  3383.                 ld      (ix+#3A), h
  3384.                 inc     b
  3385.                 ld      (scr_XY), bc
  3386.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  3387.  
  3388.                 ld      hl, (scr_pix_addr)
  3389.                 ld      (ix+#3E), l
  3390.                 ld      (ix+#3F), h
  3391.                 ld      hl, (scr_attr_addr)
  3392.                 ld      (ix+#58), l
  3393.                 ld      (ix+#59), h
  3394.                 ret
  3395.  
  3396. ; End of function sub_8EFB
  3397.  
  3398.  
  3399. ; =============== S U B R O U T I N E =======================================
  3400.  
  3401.  
  3402. sub_8F4D:                               ; CODE XREF: sub_8C20-A6F
  3403.                                         ; sub_8C20:loc_829A ...
  3404.                 push    ix
  3405.                 push    iy
  3406.                 ld      hl, bas_5C78
  3407.                 ld      a, (hl)
  3408.                 cp      50
  3409.                 jr      c, loc_8F9B
  3410.                 sub     50
  3411.                 ld      (hl), a
  3412.  
  3413.                 ;1 second passed
  3414.                 ld      hl, (INC_SECONDS)
  3415.                 inc     hl
  3416.                 ld      (INC_SECONDS), hl
  3417.  
  3418.                 ld      a, (byte_D0B4)
  3419.                 bit     5, a
  3420.                 jr      nz, loc_8F94 ;invisible board?
  3421.  
  3422.                 bit     6, a
  3423.                 jr      z, loc_8F94
  3424.  
  3425.                 ld      a, (timeformove)
  3426.                 inc     a
  3427.                 jr      z, loc_8F94
  3428.  
  3429.                 push    bc
  3430.                 ld      a, (byte_D0F3)
  3431.                 ld      b, 0
  3432.                 add     a, a
  3433.                 rl      b
  3434.                 cp      l
  3435.                 jr      nz, loc_8F93
  3436.  
  3437.                 ld      a, b
  3438.                 cp      h
  3439.                 jr      nz, loc_8F93
  3440.  
  3441.                 ld      hl, byte_D0B4
  3442.                 set     7, (hl)
  3443.                 ld      hl, timenorm
  3444.                 dec     (hl)
  3445.                 ld      a, (hl)
  3446.                 and     #F0
  3447.                 jr      nz, loc_8F93
  3448.                 inc     (hl)
  3449. loc_8F93:                               ; CODE XREF: sub_8F4D+31 sub_8F4D+35 ...
  3450.                 pop     bc
  3451.  
  3452.  
  3453. loc_8F94:                               ; CODE XREF: sub_8F4D+1B sub_8F4D+1F ...
  3454.                 ld      a, (byte_D0DF)
  3455.                 rra
  3456.                 call    nc, sub_9018
  3457.  
  3458.  
  3459. loc_8F9B:                               ; CODE XREF: sub_8F4D+A
  3460.                 ld      a, (byte_D0DF)
  3461.                 rra
  3462.                 jr      c, loc_8FBC
  3463.  
  3464.                 call    KEY_SCAN
  3465.                 push    af
  3466.                 ld      hl, byte_D0DF
  3467.                 bit     5, (hl)
  3468.                 jr      z, loc_8FB2
  3469.  
  3470.                 pop     af
  3471.                 call    sub_924C
  3472.  
  3473.                 jr      loc_8FB6
  3474.  
  3475. ; ---------------------------------------------------------------------------
  3476.  
  3477. loc_8FB2:                               ; CODE XREF: sub_8F4D+5D
  3478.                 pop     af
  3479.                 call    c, sub_8FC1
  3480.  
  3481.  
  3482. loc_8FB6:                               ; CODE XREF: sub_8F4D+63 sub_8F4D+72
  3483.                 pop     iy
  3484.                 pop     ix
  3485.                 or      a
  3486.                 ret
  3487.  
  3488. ; ---------------------------------------------------------------------------
  3489.  
  3490. loc_8FBC:                               ; CODE XREF: sub_8F4D+52
  3491.                 call    sub_8DE9
  3492.  
  3493.                 jr      loc_8FB6
  3494.  
  3495. ; End of function sub_8F4D
  3496.  
  3497.  
  3498. ; =============== S U B R O U T I N E =======================================
  3499.  
  3500.  
  3501. sub_8FC1:                               ; CODE XREF: sub_8F4D+66
  3502.  
  3503. ; FUNCTION CHUNK AT 90E1 SIZE 00000007 BYTES
  3504.  
  3505.                 ld      hl, keycodeformenu
  3506.                 ld      a, (hl)
  3507.                 ld      (hl), 0
  3508.                 cp      ' '
  3509.                 jp      z, sub_95C5
  3510.  
  3511.                 cp      'G'
  3512.                 call    z, sub_92D7
  3513.  
  3514.                 ld      (hl), a
  3515.                 ld      hl, byte_D0B4
  3516.                 bit     6, (hl)
  3517.                 jr      z, loc_8FFC
  3518.  
  3519.                 ld      a, (keycodeformenu)
  3520.                 cp      'M'
  3521.                 ld      hl, byte_D0B4
  3522.                 jr      nz, loc_8FE7
  3523.  
  3524.                 set     7, (hl)
  3525.                 res     1, (hl)
  3526.  
  3527. loc_8FE7:                               ; CODE XREF: sub_8FC1+20
  3528.                 bit     5, (hl)
  3529.                 jp      nz, loc_90E1 ;invisible board?
  3530.  
  3531.                 ld      hl, keycodeformenu
  3532.                 ld      a, (hl)
  3533.                 ld      (hl), 0
  3534.                 cp      'H'
  3535.                 ret     nz
  3536.                 ld      hl, (tbl_D803)
  3537.                 call    ShowHintMove
  3538.                 ret
  3539.  
  3540. ; ---------------------------------------------------------------------------
  3541.  
  3542. loc_8FFC:                               ; CODE XREF: sub_8FC1+16
  3543.                 ld      hl, keycodeformenu
  3544.                 ld      a, (hl)
  3545.                 ld      hl, byte_D0DF
  3546.                 bit     3, (hl)
  3547.                 jr      z, loc_9008
  3548.                 ret
  3549. ; ---------------------------------------------------------------------------
  3550. loc_9008:                               ; CODE XREF: sub_8FC1+44
  3551.                 or      a
  3552.                 ret     nz
  3553.                 call    sub_9128 ;ввод имени поля?
  3554.                 ret
  3555.  
  3556. ; End of function sub_8FC1
  3557.  
  3558. ; ---------------------------------------------------------------------------
  3559. ; START OF FUNCTION CHUNK FOR HotKeys
  3560.  
  3561. HotKeys_keepkey_pop_ret:                                ; CODE XREF: HotKeys+A HotKeys+F ...
  3562.                 ld      (curkey_D0D9), a
  3563.                 ld      hl, byte_D0B4
  3564.                 set     7, (hl)
  3565.                 pop     af
  3566.                 ret
  3567.  
  3568. ; END OF FUNCTION CHUNK FOR HotKeys
  3569.  
  3570. ; =============== S U B R O U T I N E =======================================
  3571.  
  3572.  
  3573. sub_9018:                               ; CODE XREF: sub_8F4D+4B
  3574.                 ld      a, (byte_D04D)
  3575.                 rra
  3576.                 ret     c
  3577.                 ld      a, (byte_D0BF)
  3578.                 or      a
  3579.                 ret     p
  3580.                 push    iy
  3581.                 push    bc
  3582.                 push    de
  3583.                 ld      hl, (scr_XY)
  3584.                 push    hl
  3585.                 call    sub_A164
  3586.  
  3587.                 ld      de, CLK_1
  3588.                 ld      hl, #405
  3589.                 jr      c, loc_903A
  3590.  
  3591.                 ld      de, CLK_2
  3592.                 ld      l, #F
  3593.  
  3594.  
  3595. loc_903A:                               ; CODE XREF: sub_9018+1B
  3596.                 ld      (scr_XY), hl
  3597.                 push    de
  3598.                 ex      de, hl
  3599.                 ld      de, 7
  3600.                 add     hl, de
  3601.                 push    hl
  3602.                 res     7, (hl)
  3603.  
  3604.  
  3605. loc_9046:                               ; CODE XREF: sub_9018+41
  3606.                 inc     (hl)
  3607.                 ld      a, (hl)
  3608.                 cp      #3A ; ':'
  3609.                 jr      c, loc_905B
  3610.  
  3611.                 ld      (hl), #30 ; '0'
  3612.                 dec     hl
  3613.                 inc     (hl)
  3614.                 ld      a, (hl)
  3615.                 cp      #36 ; '6'
  3616.                 jr      c, loc_905B
  3617.  
  3618.                 ld      (hl), #30 ; '0'
  3619.                 dec     hl
  3620.                 dec     hl
  3621.                 jr      loc_9046
  3622.  
  3623. ; ---------------------------------------------------------------------------
  3624.  
  3625. loc_905B:                               ; CODE XREF: sub_9018+32 sub_9018+3B
  3626.                 pop     hl
  3627.                 set     7, (hl)
  3628.                 pop     hl
  3629.                 push    hl
  3630.                 call    PRINT_STR_FF
  3631.  
  3632.                 call    sub_A150
  3633.  
  3634.                 ld      hl, #1100
  3635.                 jr      c, loc_906D
  3636.  
  3637.                 ld      h, 9
  3638.  
  3639.  
  3640. loc_906D:                               ; CODE XREF: sub_9018+51
  3641.                 ld      (scr_XY), hl
  3642.                 pop     hl
  3643.                 inc     hl
  3644.                 call    PRINT_STR_scr0
  3645.  
  3646.                 pop     hl
  3647.                 ld      (scr_XY), hl
  3648.                 pop     de
  3649.                 pop     bc
  3650.                 pop     iy
  3651.                 ret
  3652.  
  3653. ; End of function sub_9018
  3654.  
  3655.  
  3656. ; =============== S U B R O U T I N E =======================================
  3657.  
  3658.  
  3659. sub_907E:                               ; CODE XREF: sub_8C20:loc_A2DA
  3660.                                         ; sub_8C20+175A ...
  3661.                 push    hl
  3662.                 ld      hl, bas_FLAGS
  3663.  
  3664.  
  3665. loc_9082:                               ; CODE XREF: sub_907E+E sub_907E+1F
  3666.                 ld      a, #7F
  3667.                 in      a, (#FE) ;TODO fix
  3668.                 rra
  3669.                 ccf
  3670.                 jr      c, space_pressed
  3671.  
  3672.                 bit     bit_NEW_KEY, (hl)               ; keypressed bit
  3673.                 jr      z, loc_9082
  3674.  
  3675.                 res     bit_NEW_KEY, (hl)
  3676.                 ld      a, (bas_LAST_K)
  3677.                 cp      #C
  3678.                 jr      z, space_pressed
  3679.  
  3680.                 cp      #D
  3681.                 jr      z, space_pressed
  3682.  
  3683.                 cp      #21 ; '!'
  3684.                 jr      c, loc_9082
  3685.  
  3686.                 or      a
  3687.  
  3688.  
  3689. space_pressed:                          ; CODE XREF: sub_907E+A sub_907E+17     ...
  3690.                 push    af
  3691.                 call    BEEP_4
  3692.  
  3693.                 pop     af
  3694.                 pop     hl
  3695.                 ret
  3696.  
  3697. ; End of function sub_907E
  3698.  
  3699.  
  3700.  
  3701.  
  3702. KEY_SCAN:
  3703.                 xor     a                       ;CY=0
  3704.                 ld      hl, bas_FLAGS
  3705.                 bit     bit_NEW_KEY, (hl)
  3706.                 ret     z                       ;return with CY=0 if nothing pressed
  3707.                 res     bit_NEW_KEY, (hl)
  3708.                 ld      (keycode), a
  3709.                 ld      (keycodeformenu), a
  3710.                 ld      a, (bas_LAST_K)
  3711.                 cp      'I'
  3712.                 jr      nc, loc_90D6    ; >='I'
  3713.                 cp      'A'
  3714.                 jr      nc, loc_90D1    ; >='A'
  3715.                 cp      '9'
  3716.                 jr      nc, loc_90D6    ; >='9'
  3717.                 cp      '1'
  3718.                 jr      nc, loc_90D1    ; >='1'
  3719.                 cp      8
  3720.                 ccf
  3721.                 ret     nc      ;report scancodes 0..7 as non-keypresses
  3722.                 cp      #E
  3723.                 jr      nc, loc_90D6    ; >=#0E
  3724. loc_90D1:
  3725.                 ; when scancode copied here:
  3726.                 ;  'A'<=SCANCODE<='H'
  3727.                 ;  '1'<=SCANCODE<='8'
  3728.                 ;  8<=SCANCODE<#0E
  3729.                 ; 8-LEFT,9-RIGHT,10-DOWN,11-UP
  3730.                 ld      (keycode), a
  3731.                 scf                     ;CY=1 was keypress
  3732.                 ret
  3733. loc_90D6:
  3734.                 cp      'A'
  3735.                 jr      c, loc_90DC     ; <'A'
  3736.                 and     #5F             ;uppercase letters
  3737. loc_90DC:
  3738.                 ; when scancode copied here:
  3739.                 ;  SCANCODE>='I', 'a'..'z' are uppercased
  3740.                 ;  '9'<=SCANCODE<'A'
  3741.                 ;  #0E<=SCANCODE<'1'
  3742.                 ld      (keycodeformenu), a
  3743.                 scf                     ;CY=1 was keypress
  3744.                 ret
  3745.  
  3746. ; End of function KEY_SCAN
  3747.  
  3748. ; ---------------------------------------------------------------------------
  3749. ; START OF FUNCTION CHUNK FOR sub_8FC1
  3750.  
  3751. loc_90E1:                               ; CODE XREF: sub_8FC1+28
  3752.                 call    HotKeys
  3753.  
  3754.                 call    sub_9128 ;ввод имени поля?
  3755.  
  3756.                 ret
  3757.  
  3758. ; END OF FUNCTION CHUNK FOR sub_8FC1
  3759.  
  3760. ; =============== S U B R O U T I N E =======================================
  3761.  
  3762.  
  3763. HotKeys:                                ; CODE XREF: sub_8FC1:loc_90E1
  3764.  
  3765. ; FUNCTION CHUNK AT 900E SIZE 0000000A BYTES
  3766. ; FUNCTION CHUNK AT 92CB SIZE 0000000C BYTES
  3767. ; FUNCTION CHUNK AT 9326 SIZE 00000032 BYTES
  3768. ; FUNCTION CHUNK AT 935D SIZE 00000003 BYTES
  3769.  
  3770.                 ld      hl, keycodeformenu
  3771.                 ld      a, (hl)
  3772.                 or      a
  3773.                 ret     z
  3774.                 ld      (hl), 0
  3775.                 cp      #4D ; 'M'
  3776.                 jp      z, HotKeys_keepkey_pop_ret
  3777.  
  3778.                 cp      #42 ; 'B'
  3779.                 jp      z, HotKeys_keepkey_pop_ret
  3780.  
  3781.                 cp      #46 ; 'F'
  3782.                 jp      z, loc_92CB ;F=Forward
  3783.  
  3784.                 cp      #48 ; 'H'
  3785.                 jp      z, loc_9340
  3786.  
  3787.                 cp      #49 ; 'I'
  3788.                 jp      z, loc_9326
  3789.  
  3790.                 cp      #44 ; 'D'
  3791.                 jp      z, HotKeys_keepkey_pop_ret
  3792.  
  3793.                 cp      #41 ; 'A'
  3794.                 jp      z, HotKeys_keepkey_pop_ret
  3795.  
  3796.                 cp      #53 ; 'S'
  3797.                 jp      z, HotKeys_keepkey_pop_ret
  3798.  
  3799.                 cp      #4C ; 'L'
  3800.                 jp      z, loc_935D ;L=Level
  3801.  
  3802.                 cp      #43 ; 'C'
  3803.                 jp      z, HotKeys_keepkey_pop_ret
  3804.  
  3805.                 cp      #50 ; 'P'
  3806.                 jp      z, HotKeys_keepkey_pop_ret
  3807.  
  3808.                 ret
  3809.  
  3810. ; End of function HotKeys
  3811.  
  3812.  
  3813. ; =============== S U B R O U T I N E =======================================
  3814.  
  3815.  
  3816. sub_9128:                               ; CODE XREF: sub_8FC1+49
  3817. ;ввод имени поля?                                       ; sub_8FC1+123
  3818.  
  3819. ; FUNCTION CHUNK AT 9290 SIZE 00000010 BYTES
  3820.  
  3821.                 ld      hl, keycode
  3822.                 ld      a, (hl)
  3823.                 or      a
  3824.                 ret     z
  3825.                 ld      (hl), 0
  3826.                 ld      bc, (needdrawcursorfrom)
  3827.                 cp      #D
  3828.                 jp      z, loc_91CE ;Enter
  3829.  
  3830.                 cp      #C
  3831.                 jp      z, loc_9290
  3832.  
  3833.                 jp      loc_9163 ;ввод символьного имени поля
  3834.  
  3835. ; ---------------------------------------------------------------------------
  3836.  
  3837. ReDrawMoveAndCursors:                           ; CODE XREF: sub_9128+50 sub_9128+70 ...
  3838.                 push    bc
  3839.                 ld      a, b
  3840.                 cp      #FF
  3841.                 call    nz, UnDrawCursor
  3842.  
  3843.                 pop     bc
  3844.                 ld      a, c
  3845.                 cp      #FF
  3846.                 call    nz, UnDrawCursor
  3847.  
  3848.                 ld      a, (needdrawcursor1)
  3849.                 cp      #FF
  3850.                 call    nz, DrawCursor
  3851.  
  3852.                 ld      a, (needdrawcursorfrom)
  3853.                 cp      #FF
  3854.                 call    nz, DrawCursorFrom
  3855.  
  3856.                 call    PrepareAndPrintMoveText
  3857.                 ret
  3858.  
  3859. ; ---------------------------------------------------------------------------
  3860.  
  3861. loc_9163:                               ; CODE XREF: sub_9128+16
  3862.                 cp      #41 ; 'A'
  3863.                 jr      c, loc_917B
  3864.  
  3865.                 cp      #49 ; 'H'+1
  3866.                 jr      nc, loc_917B
  3867.  
  3868.                 push    bc
  3869.                 sub     #41 ; 'A'
  3870.                 ld      b, a
  3871.                 ld      hl,  needdrawcursor1
  3872.                 ld      a, (hl)
  3873.                 and     #F0
  3874.                 or      b
  3875.                 ld      (hl), a
  3876.                 pop     bc
  3877.                 jp      ReDrawMoveAndCursors
  3878.  
  3879. ; ---------------------------------------------------------------------------
  3880.  
  3881. loc_917B:                               ; CODE XREF: sub_9128+3D sub_9128+41
  3882.                 cp      #31 ; '1'
  3883.                 jr      c, loc_919B
  3884.  
  3885.                 cp      #39 ; '9'
  3886.                 jr      nc, loc_919B
  3887.  
  3888.                 push    bc
  3889.                 sub     #31
  3890.                 neg
  3891.                 add     a, 7
  3892.                 rlca
  3893.                 rlca
  3894.                 rlca
  3895.                 rlca
  3896.                 ld      b, a
  3897.                 ld      hl,  needdrawcursor1
  3898.                 ld      a, (hl)
  3899.                 and     #F
  3900.                 or      b
  3901.                 ld      (hl), a
  3902.                 pop     bc
  3903.                 jp      ReDrawMoveAndCursors
  3904.  
  3905. ; ---------------------------------------------------------------------------
  3906.  
  3907. loc_919B:                               ; CODE XREF: sub_9128+55 sub_9128+59
  3908.                 push    bc
  3909.                 ld      hl, byte_D0B3 ;d3=swap board
  3910.                 bit     3, (hl)
  3911.                 jr      z, loc_91A5
  3912.                 xor     1
  3913. loc_91A5:                               ; CODE XREF: sub_9128+79
  3914.                 ld      b, a
  3915.                 xor     a
  3916.                 bit     1, b
  3917.                 jr      nz, loc_91B5
  3918.  
  3919.                 bit     0, b
  3920.                 jr      z, loc_91B2
  3921.  
  3922.                 inc     a
  3923.                 jr      loc_91BF
  3924.  
  3925. ; ---------------------------------------------------------------------------
  3926.  
  3927. loc_91B2:                               ; CODE XREF: sub_9128+85
  3928.                 dec     a
  3929.                 jr      loc_91BF
  3930.  
  3931. ; ---------------------------------------------------------------------------
  3932.  
  3933. loc_91B5:                               ; CODE XREF: sub_9128+81
  3934.                 bit     0, b
  3935.                 jr      nz, loc_91BD
  3936.  
  3937.                 add     a, #10
  3938.                 jr      loc_91BF
  3939.  
  3940. ; ---------------------------------------------------------------------------
  3941.  
  3942. loc_91BD:                               ; CODE XREF: sub_9128+8F
  3943.                 sub     #10
  3944. loc_91BF:                               ; CODE XREF: sub_9128+88 sub_9128+8B ...
  3945.                 ld      hl,  needdrawcursor1
  3946.                 add     a, (hl)
  3947.                 ld      b, a
  3948.                 and     #77
  3949.                 cp      b
  3950.                 jr      nz, loc_91CA
  3951.                 ld      (hl), a
  3952. loc_91CA:                               ; CODE XREF: sub_9128+9F
  3953.                 pop     bc
  3954.                 jp      ReDrawMoveAndCursors
  3955.  
  3956. ; ---------------------------------------------------------------------------
  3957.  
  3958. loc_91CE: ;Enter pressed                                ; CODE XREF: sub_9128+E
  3959.                 ld      a, (byte_D0DF)
  3960.                 bit     2, a
  3961.                 ret     nz
  3962.                 ld      a, c ;needdrawcursorfrom
  3963.                 cp      b
  3964.                 jr      nz, loc_91E0
  3965.  
  3966.                 ld      a, #FF
  3967.                 ld      (needdrawcursorfrom), a
  3968.                 jp      ReDrawMoveAndCursors
  3969. ; ---------------------------------------------------------------------------
  3970. loc_91E0:                               ; CODE XREF: sub_9128+AE
  3971.                 inc     a
  3972.                 jr      nz, loc_91F0
  3973.  
  3974.                 call    sub_92A0
  3975.                 jp      nz, ReDrawMoveAndCursors
  3976.                 ld      a, b
  3977.                 ld      (needdrawcursorfrom), a
  3978.                 jp      ReDrawMoveAndCursors
  3979. ; ---------------------------------------------------------------------------
  3980. loc_91F0: ;accept move?                         ; CODE XREF: sub_9128+B9
  3981.                 call    sub_92B6
  3982.  
  3983.                 jp      nz, ReDrawMoveAndCursors
  3984.  
  3985.                 push    bc
  3986.                 push    hl
  3987.                 ld      a, (needdrawcursorfrom)
  3988.                 ld      (byte_D0C4), a
  3989.                 ld      a, (needdrawcursor1)
  3990.                 ld      (byte_D0C5), a
  3991.                 call    UnDrawMoveAndCursors
  3992.  
  3993.                 pop     ix
  3994.                 ld      hl, byte_D0B4
  3995.                 bit     5, (hl)
  3996.                 jr      z, loc_922A ;visible board?
  3997.  
  3998.                 ld      d, (ix+0)
  3999.                 ld      e, (ix+1)
  4000.                 ld      hl, (word_D0DA)
  4001.                 or      a
  4002.                 sbc     hl, de
  4003.                 jr      z, loc_9231
  4004.  
  4005.                 pop     bc
  4006.  
  4007. loc_921F:                               ; CODE XREF: sub_924C+22
  4008.                 ld      hl, byte_D0B4
  4009.                 set     7, (hl)
  4010.                 ld      hl, byte_D0DF
  4011.                 set     4, (hl)
  4012.                 ret
  4013.  
  4014. ; ---------------------------------------------------------------------------
  4015.  
  4016. loc_922A:                               ; CODE XREF: sub_9128+E6
  4017.                 ld      hl, byte_D0DF
  4018.                 set     4, (hl)
  4019.                 pop     bc
  4020.                 ret
  4021.  
  4022. ; ---------------------------------------------------------------------------
  4023.  
  4024. loc_9231:                               ; CODE XREF: sub_9128+F4
  4025.                 pop     bc
  4026.                 ld      a, (byte_D0DC)
  4027.                 or      a
  4028.                 jp      z, sub_8D9E
  4029.  
  4030.                 ld      hl, byte_D0DF
  4031.                 ld      a, (hl)
  4032.                 or      #E0
  4033.                 ld      (hl), a
  4034.                 call    UnDrawMoveAndCursors
  4035.  
  4036.                 call    ShowBOARD2
  4037.  
  4038.                 ld      a, #14
  4039.                 ld      (DECREMENT_50HZ), a
  4040.                 ret
  4041.  
  4042. ; End of function sub_9128
  4043.  
  4044.  
  4045. ; =============== S U B R O U T I N E =======================================
  4046.  
  4047.  
  4048. sub_924C:                               ; CODE XREF: sub_8F4D+60
  4049.                 ld      hl, keycodeformenu
  4050.                 ld      a, (hl)
  4051.                 or      a
  4052.                 jr      z, loc_9279
  4053.  
  4054.                 ld      (hl), 0
  4055.                 cp      #20 ; ' '
  4056.                 jp      z, sub_95C5
  4057.  
  4058.                 ld      (byte_D0DC), a
  4059.                 ld      hl, byte_D0DF
  4060.                 bit     6, (hl)
  4061.                 res     6, (hl)
  4062.                 res     5, (hl)
  4063.                 call    nz, ShowBOARD
  4064.  
  4065.                 ld      a, (byte_D0DC)
  4066.                 cp      #51 ; 'Q'
  4067.                 jp      nz, loc_921F
  4068.  
  4069.                 ld      hl, byte_D0DF
  4070.                 res     7, (hl)
  4071.                 jp      sub_8D9E
  4072.  
  4073. ; ---------------------------------------------------------------------------
  4074.  
  4075. loc_9279:                               ; CODE XREF: sub_924C+5
  4076.                 ld      hl, DECREMENT_50HZ
  4077.                 ld      a, (hl)
  4078.                 or      a
  4079.                 ret     p
  4080.                 ld      (hl), #14
  4081.                 ld      hl, byte_D0DF
  4082.                 ld      a, (hl)
  4083.                 xor     #40
  4084.                 ld      (hl), a
  4085.                 and     #40
  4086.                 jp      nz, ShowBOARD2
  4087.  
  4088.                 jp      ShowBOARD
  4089.  
  4090. ; End of function sub_924C
  4091.  
  4092. ; ---------------------------------------------------------------------------
  4093. ; START OF FUNCTION CHUNK FOR sub_9128
  4094.  
  4095. loc_9290:                               ; CODE XREF: sub_9128+13
  4096.                 ld      a, #FF
  4097.                 cp      c
  4098.                 ret     z
  4099.                 ld      a, #FF
  4100.                 ld      (needdrawcursorfrom), a
  4101.                 ld      a, c
  4102.                 ld      (needdrawcursor1), a
  4103.                 jp      ReDrawMoveAndCursors
  4104.  
  4105. ; END OF FUNCTION CHUNK FOR sub_9128
  4106.  
  4107. ; =============== S U B R O U T I N E =======================================
  4108.  
  4109.  
  4110. sub_92A0:                               ; CODE XREF: sub_9128+BB
  4111.                 ld      hl, unk_F000
  4112.  
  4113.  
  4114. loc_92A3:                               ; CODE XREF: sub_92A0+D
  4115.                 ld      a, (hl)
  4116.                 cp      #FF
  4117.                 jr      z, loc_92AF
  4118.  
  4119.                 cp      b
  4120.                 ret     z
  4121.                 inc     hl
  4122.                 inc     hl
  4123.                 inc     hl
  4124.                 jr      loc_92A3
  4125.  
  4126. ; ---------------------------------------------------------------------------
  4127.  
  4128. loc_92AF:                               ; CODE XREF: sub_92A0+6 sub_92B6+6
  4129.                 push    af
  4130.                 call    BEEP_3
  4131.  
  4132.                 pop     af
  4133.                 or      a
  4134.                 ret
  4135.  
  4136. ; End of function sub_92A0
  4137.  
  4138.  
  4139. ; =============== S U B R O U T I N E =======================================
  4140.  
  4141.  
  4142. sub_92B6:                               ; CODE XREF: sub_9128:loc_91F0
  4143. ;проверка валидности хода b-c? (рокировка = ход королём на указанную клетку, TODO ход королём на свою ладью! иначе некоторые рокировки не ввести)
  4144.                 ld      hl, unk_F000
  4145.  
  4146.  
  4147. loc_92B9:                               ; CODE XREF: sub_92B6+13
  4148.                 ld      a, (hl)
  4149.                 cp      #FF
  4150.                 jr      z, loc_92AF
  4151.  
  4152.                 cp      c
  4153.                 jr      nz, loc_92C6
  4154.  
  4155.                 inc     hl
  4156.                 ld      a, (hl)
  4157.                 dec     hl
  4158.                 cp      b
  4159.                 ret     z
  4160.  
  4161.  
  4162. loc_92C6:                               ; CODE XREF: sub_92B6+9
  4163.                 inc     hl
  4164.                 inc     hl
  4165.                 inc     hl
  4166.                 jr      loc_92B9
  4167.  
  4168. ; End of function sub_92B6
  4169.  
  4170. ; ---------------------------------------------------------------------------
  4171. ; START OF FUNCTION CHUNK FOR HotKeys
  4172.  
  4173. loc_92CB:                               ; CODE XREF: HotKeys+14
  4174. ;F=Forward
  4175.                 ld      hl, (ptr_stk_1bvalue)
  4176.                 ld      l, (hl)
  4177.                 inc     l
  4178.                 jp      nz, HotKeys_keepkey_pop_ret     ; if not #FF
  4179.  
  4180.                 call    BEEP_3
  4181.  
  4182.                 ret
  4183.  
  4184. ; END OF FUNCTION CHUNK FOR HotKeys
  4185.  
  4186. ; =============== S U B R O U T I N E =======================================
  4187.  
  4188.  
  4189. sub_92D7:                               ; CODE XREF: sub_8FC1+D
  4190.  
  4191. ; FUNCTION CHUNK AT 809A SIZE 00000007 BYTES
  4192.  
  4193.                 push    af
  4194.                 push    bc
  4195.                 push    de
  4196.                 push    hl
  4197.                 call    sub_9933
  4198.  
  4199.                 ld      hl, #1500
  4200.                 ld      (scr_XY), hl
  4201.                 ld      hl, aNew        ; " NEW "
  4202.                 call    PRINT_STR_scr0
  4203.  
  4204.                 ld      de, #C00
  4205.                 ld      (scr_XY), de
  4206.                 ld      hl, aNewGameYN  ; "NEW GAME (Y/N)?"
  4207.                 call    PRINT_STR_FF
  4208.  
  4209.  
  4210. loc_92F7:
  4211.                 call    KEY_SCAN
  4212.                 jr      nc, loc_92F7
  4213.  
  4214.                 push    af
  4215.                 ld      hl, #1500
  4216.                 ld      (scr_XY), hl
  4217.                 ld      hl, a_8spaces   ; "       "
  4218.                 call    PRINT_STR_scr0
  4219.  
  4220.                 pop     af
  4221.                 cp      'Y'
  4222.                 jp      z, loc_809A ;9EE6 + NEW_GAME
  4223.  
  4224.                 call    BEEP_move
  4225.  
  4226.                 ld      hl,  a_32spaces+#C
  4227.                 ld      de, #C00
  4228.                 ld      (scr_XY), de
  4229.                 call    PRINT_STR_FF
  4230.  
  4231.                 pop     hl
  4232.                 ld      (hl), 0
  4233.                 pop     de
  4234.                 pop     bc
  4235.                 pop     af
  4236.                 ret
  4237.  
  4238. ; End of function sub_92D7
  4239.  
  4240. ; ---------------------------------------------------------------------------
  4241. ; START OF FUNCTION CHUNK FOR HotKeys
  4242.  
  4243. loc_9326:                               ; CODE XREF: HotKeys+1E
  4244.                 call    UnDrawMoveAndCursors
  4245.  
  4246.                 ld      hl, byte_D0B3
  4247.                 ld      a, (hl)
  4248.                 xor     8
  4249.                 ld      (hl), a ;d3=swap board
  4250.                 call    RotateBOARD
  4251.  
  4252.                 call    ShowBOARD
  4253.  
  4254.                 call    RotateBOARD2
  4255.  
  4256.                 call    DrawMoveAndCursors
  4257.  
  4258.                 call    sub_A177
  4259.  
  4260.                 ret
  4261.  
  4262. ; ---------------------------------------------------------------------------
  4263.  
  4264. loc_9340:                               ; CODE XREF: HotKeys+19
  4265.                 ld      hl, (word_D25A)
  4266.                 call    UnDrawMoveAndCursors
  4267.  
  4268.                 call    ShowBOARD2
  4269.  
  4270.                 call    BEEP_move
  4271.  
  4272.                 ld      a, #14
  4273.                 call    halt_A_frames
  4274.  
  4275.                 call    ShowBOARD
  4276.  
  4277.                 call    DrawMoveAndCursors
  4278.  
  4279.                 ret
  4280.  
  4281. ; END OF FUNCTION CHUNK FOR HotKeys
  4282.  
  4283.  
  4284.  
  4285. halt_A_frames:
  4286.  
  4287.                 halt
  4288.                 dec     a
  4289.                 ret     z
  4290.                 jr      halt_A_frames
  4291.  
  4292.  
  4293. ; ---------------------------------------------------------------------------
  4294. ; START OF FUNCTION CHUNK FOR HotKeys
  4295.  
  4296. loc_935D:                               ; CODE XREF: HotKeys+32
  4297. ;L=Level
  4298.                 jp      HotKeys_keepkey_pop_ret
  4299.  
  4300. ; END OF FUNCTION CHUNK FOR HotKeys
  4301.  
  4302. ; =============== S U B R O U T I N E =======================================
  4303.  
  4304.  
  4305. RotateBOARD:                            ; CODE XREF: HotKeys+248
  4306.                 ld      hl, BOARD
  4307.                 ld      de,  BOARD+#3F
  4308.                 jp      loc_936F
  4309. ; End of function RotateBOARD
  4310. ; =============== S U B R O U T I N E =======================================
  4311. RotateBOARD2:                           ; CODE XREF: HotKeys+24E
  4312.                 ld      hl, BOARD2
  4313.                 ld      de, BOARD2+63
  4314. loc_936F:                               ; CODE XREF: RotateBOARD+6
  4315.                 ld      b, #20 ; ' '
  4316. _loc_9371:                              ; CODE XREF: RotateBOARD2+F
  4317.                 ld      c, (hl)
  4318.                 ld      a, (de)
  4319.                 ld      (hl), a
  4320.                 ld      a, c
  4321.                 ld      (de), a
  4322.                 inc     hl
  4323.                 dec     de
  4324.                 djnz    _loc_9371
  4325.                 ret
  4326.  
  4327. ; End of function RotateBOARD2
  4328.  
  4329.  
  4330. ; =============== S U B R O U T I N E =======================================
  4331.  
  4332.  
  4333. ShowBOARD2:                             ; CODE XREF: sub_8C20-97C
  4334.                                         ; sub_8D9E+18   ...
  4335.                 ld      hl,  BOARD2+#3F
  4336.                 jr      loc_9383
  4337. ; End of function ShowBOARD2
  4338. ; =============== S U B R O U T I N E =======================================
  4339. ShowBOARD:                              ; CODE XREF: sub_8DE9+77 sub_924C+1A ...
  4340.                 ld      hl,  BOARD+#3F
  4341. loc_9383:                               ; CODE XREF: ShowBOARD2+3
  4342.                 ld      b, #40
  4343. _loc_9385:                              ; CODE XREF: ShowBOARD+1C
  4344.                 ld      a, (hl)
  4345.                 push    bc
  4346.                 push    de
  4347.                 push    hl
  4348.                 ld      c, a
  4349.                 ld      a, b
  4350.                 dec     a
  4351.                 ld      hl, byte_D0B3 ;d3=swap board
  4352.                 bit     3, (hl)
  4353.                 jr      z, _loc_9395
  4354.                 xor     #3F
  4355. _loc_9395:                              ; CODE XREF: ShowBOARD+11
  4356.                 call    SHOW_FIG_POS
  4357.  
  4358.                 pop     hl
  4359.                 pop     de
  4360.                 pop     bc
  4361.                 dec     hl
  4362.                 djnz    _loc_9385
  4363.                 ret
  4364. ; End of function ShowBOARD
  4365.  
  4366.  
  4367. ; =============== S U B R O U T I N E =======================================
  4368.  
  4369.  
  4370. sub_939F:                               ; CODE XREF: sub_8C20-B31
  4371.                                         ; sub_8C20:loc_8226 ...
  4372.                 ld      hl, BOARD2
  4373.                 jr      loc_93A7
  4374.  
  4375. ; End of function sub_939F
  4376.  
  4377.  
  4378. ; =============== S U B R O U T I N E =======================================
  4379.  
  4380.  
  4381. sub_93A4:                               ; CODE XREF: sub_8C20-AE1
  4382.                                         ; sub_8C20:loc_84BF ...
  4383.                 ld      hl, BOARD
  4384.  
  4385.  
  4386. loc_93A7:                               ; CODE XREF: sub_939F+3
  4387.                 ld      (TMP_BOARD_PTR), hl
  4388.                 ld      b, 0
  4389.                 ld      hl, BRD_88_0
  4390.  
  4391.  
  4392. loc_93AF:                               ; CODE XREF: sub_93A4+78 sub_93A4+81
  4393.                 push    hl
  4394.                 ld      a, (hl)
  4395.                 and     #43 ; 'C'
  4396.                 cp      #43 ; 'C'
  4397.                 ld      a, (hl)
  4398.                 jr      nz, loc_93C3
  4399.  
  4400.                 ld      c, 1
  4401.                 bit     7, (hl)
  4402.                 jr      nz, loc_93C0
  4403.  
  4404.                 set     3, c
  4405.  
  4406.  
  4407. loc_93C0:                               ; CODE XREF: sub_93A4+18
  4408.                 jp      loc_93F2
  4409.  
  4410. ; ---------------------------------------------------------------------------
  4411.  
  4412. loc_93C3:                               ; CODE XREF: sub_93A4+12
  4413.                 ld      c, 0
  4414.                 or      a
  4415.                 jr      z, loc_93F2
  4416.  
  4417.                 and     #F8 ; 'ш'
  4418.                 inc     a
  4419.                 ld      l, a
  4420.                 inc     h
  4421.                 ld      c, 6
  4422.                 ld      a, #F
  4423.                 and     (hl)
  4424.                 jr      z, loc_93EC
  4425.  
  4426.                 ld      c, 1
  4427.                 cp      1
  4428.                 jr      z, loc_93EC
  4429.  
  4430.                 ld      c, 4
  4431.                 cp      5
  4432.                 jr      z, loc_93EC
  4433.  
  4434.                 ld      c, 5
  4435.                 jr      nc, loc_93EC
  4436.  
  4437.                 ld      c, 2
  4438.                 bit     7, (hl)
  4439.                 jr      z, loc_93EC
  4440.  
  4441.                 ld      c, 3
  4442.  
  4443.  
  4444. loc_93EC:                               ; CODE XREF: sub_93A4+2E sub_93A4+34 ...
  4445.                 bit     7, l
  4446.                 jr      nz, loc_93F2
  4447.  
  4448.                 set     3, c
  4449.  
  4450.  
  4451. loc_93F2:                               ; CODE XREF: sub_93A4:loc_93C0
  4452.                                         ; sub_93A4+22   ...
  4453.                 ld      a, b
  4454.                 ld      hl, byte_D0B3
  4455.                 bit     3, (hl) ;d3=swap board
  4456.                 jr      z, loc_93FC
  4457.  
  4458.                 xor     #3F ; '?'
  4459.  
  4460.  
  4461. loc_93FC:                               ; CODE XREF: sub_93A4+54
  4462.                 ld      hl, (TMP_BOARD_PTR)
  4463.                 ld      e, a
  4464.                 ld      d, 0
  4465.                 add     hl, de
  4466.                 ld      a, c
  4467.                 cp      (hl)
  4468.                 jr      z, loc_9417
  4469.  
  4470.                 ld      (hl), a
  4471.                 push    bc
  4472.                 ld      hl, (TMP_BOARD_PTR)
  4473.                 ld      de, BOARD2
  4474.                 or      a
  4475.                 sbc     hl, de
  4476.                 ld      a, b
  4477.                 call    nz, SHOW_FIG_POS
  4478.  
  4479.                 pop     bc
  4480.  
  4481.  
  4482. loc_9417:                               ; CODE XREF: sub_93A4+61
  4483.                 pop     hl
  4484.                 inc     hl
  4485.                 inc     b
  4486.                 bit     3, l
  4487.                 jp      z, loc_93AF
  4488.  
  4489.                 ld      de, 8
  4490.                 add     hl, de
  4491.                 bit     7, l
  4492.                 jp      z, loc_93AF
  4493.  
  4494.                 ret
  4495.  
  4496. ; End of function sub_93A4
  4497.  
  4498.  
  4499. ; =============== S U B R O U T I N E =======================================
  4500.  
  4501.  
  4502. CLR_BOARD:                              ; CODE XREF: START_POINT+87
  4503.                                         ; sub_8C20-B7C
  4504.                 di
  4505.                 ld      hl, BOARD
  4506.                 ld      b, #40 ; '@'
  4507.                 xor     a
  4508.  
  4509.  
  4510. loc_9430:                               ; CODE XREF: CLR_BOARD+9
  4511.                 ld      (hl), a
  4512.                 inc     hl
  4513.                 djnz    loc_9430
  4514.  
  4515.                 xor     a
  4516.                 ld      c, a
  4517.  
  4518.  
  4519. loc_9436:                               ; CODE XREF: CLR_BOARD+15
  4520.                 push    af
  4521.                 call    SH_EMPT_POS ;show square
  4522.                 pop     af
  4523.                 inc     a
  4524.                 cp      #40 ; '@'
  4525.                 jr      nz, loc_9436
  4526.  
  4527.                 ei
  4528.                 ret
  4529.  
  4530. ; End of function CLR_BOARD
  4531.  
  4532.  
  4533. ; =============== S U B R O U T I N E =======================================
  4534.  
  4535.  
  4536. SH_EMPT_POS:                            ; CODE XREF: ShowHintMove+37 CLR_BOARD+E
  4537.                 ld      c, 0
  4538.  
  4539. ; End of function SH_EMPT_POS
  4540.  
  4541.  
  4542. ; =============== S U B R O U T I N E =======================================
  4543.  
  4544. ; A - position (0..63)
  4545. ; C - figure:
  4546. ; 0..6: empty,pawn,knight,bishop,rook,queen,king ; 0..6 white, 8..E black
  4547.  
  4548. SHOW_FIG_POS:                           ; CODE XREF: ShowHintMove+31 ShowHintMove+49 ...
  4549.                 ld      b, a           
  4550.                 ld      d, #34 ; '4' ;attr: paper=6, ink=4
  4551.                 and     9
  4552.                 jr      z, loc_9451
  4553.                 cp      9
  4554.                 jr      z, loc_9451
  4555.                 ld      d, #26 ; '&' ;attr: paper=4, ink=6
  4556. loc_9451:                               ; CODE XREF: SHOW_FIG_POS+5
  4557.                                         ; SHOW_FIG_POS+9
  4558.                 dec     c
  4559.                 inc     c
  4560.                 jr      z, loc_9463 ;empty figure - use default attr
  4561.  
  4562.                 ld      a, d
  4563.                 and     #F8
  4564.                 ld      d, a ;attr=paper
  4565.                 ld      a, 0
  4566.                 bit     3, c
  4567.                 jr      nz, loc_9461 ;nz=black
  4568.                 ld      a, 7 ;white
  4569. loc_9461:                               ; CODE XREF: SHOW_FIG_POS+19
  4570.                 or      d
  4571.                 ld      d, a ;attr
  4572.  
  4573. loc_9463:                               ; CODE XREF: SHOW_FIG_POS+F
  4574.                 push    bc
  4575.                 push    de
  4576.                 ld      a, b ;position (0..63)
  4577.                 call    sub_95FA ;out: a=0b0YYY0XXX
  4578.  
  4579.                 call    sub_9703 ;calc scr_XY, scr_pix_addr, scr_attr_addr
  4580.  
  4581.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  4582.  
  4583.                 call    sub_9609 ;recount scr_pix_addr, scr_attr_addr to scrbuf if needed
  4584.  
  4585.                 ld      hl, (scr_attr_addr)
  4586.                 pop     de
  4587.                 ld      b, 3
  4588. loc_9478:                               ; CODE XREF: SHOW_FIG_POS:loc_9484
  4589.                 ld      (hl), d ;attr
  4590.                 inc     hl
  4591.                 ld      (hl), d ;attr
  4592.                 inc     hl
  4593.                 ld      (hl), d ;attr
  4594.                 ld      a, #1E
  4595.                 add     a, l
  4596.                 ld      l, a
  4597.                 jr      nc, loc_9484
  4598.                 inc     h
  4599. loc_9484:                               ; CODE XREF: SHOW_FIG_POS+3D
  4600.                 djnz    loc_9478 ;set attr for figure
  4601.  
  4602.                 pop     bc
  4603.                 ld      hl, (scr_pix_addr)
  4604.                 push    hl
  4605.                 ld      a, c
  4606.                 and     7
  4607.                 ld      b, a
  4608.                 add     a, a
  4609.                 add     a, a
  4610.                 add     a, a
  4611.                 add     a, b
  4612.                 ld      l, a
  4613.                 ld      h, 0
  4614.                 add     hl, hl
  4615.                 add     hl, hl
  4616.                 add     hl, hl
  4617.                 ld      de, FIG_sprites
  4618.                 add     hl, de
  4619.                 ex      de, hl
  4620.                 pop     hl
  4621.                 ld      a, 3
  4622.                 ex      af, af' ;'
  4623. loc_94A2:                               ; CODE XREF: SHOW_FIG_POS+78
  4624.                                         ; SHOW_FIG_POS+7E
  4625.                 push    hl
  4626.                 ld      c, 3
  4627. loc_94A5:                               ; CODE XREF: SHOW_FIG_POS+6D
  4628.                 push    hl
  4629.                 ld      b, 8
  4630. loc_94A8:                               ; CODE XREF: SHOW_FIG_POS+68
  4631.                 ld      a, (de)
  4632.                 ld      (hl), a
  4633.                 inc     de
  4634.                 inc     h
  4635.                 djnz    loc_94A8
  4636.  
  4637.                 pop     hl
  4638.                 inc     hl
  4639.                 dec     c
  4640.                 jr      nz, loc_94A5
  4641.  
  4642.                 pop     hl
  4643.                 ex      af, af' ;'
  4644.                 dec     a
  4645.                 ret     z
  4646.                 ex      af, af' ;'
  4647.                 ld      a, #20 ; ' '
  4648.                 add     a, l
  4649.                 ld      l, a
  4650.                 jr      nc, loc_94A2
  4651.  
  4652.                 ld      a, h
  4653.                 add     a, 8
  4654.                 ld      h, a
  4655.                 jr      loc_94A2
  4656.  
  4657. ; End of function SHOW_FIG_POS
  4658.  
  4659.  
  4660. ; =============== S U B R O U T I N E =======================================
  4661.  
  4662.  
  4663. sub_94C4:                               ; CODE XREF: sub_8C20-B2E
  4664.                 ld      hl, BOARD2
  4665.                 jr      loc_94CC
  4666.  
  4667. ; End of function sub_94C4
  4668.  
  4669.  
  4670. ; =============== S U B R O U T I N E =======================================
  4671.  
  4672.  
  4673. sub_94C9:                               ; CODE XREF: sub_8C20+16ED
  4674.                 ld      hl, BOARD
  4675.  
  4676.  
  4677. loc_94CC:                               ; CODE XREF: sub_94C4+3
  4678.                 push    hl
  4679.                 call    sub_A43C
  4680.  
  4681.                 call    sub_A43C
  4682.  
  4683.                 pop     hl
  4684.                 ld      b, 8
  4685.                 ld      d, #FF
  4686.                 ld      e, #39 ; '9'
  4687.                 ld      a, (byte_D0B3) ;d3=swap board
  4688.                 bit     3, a
  4689.                 jr      z, loc_94E5
  4690.  
  4691.                 ld      d, 1
  4692.                 ld      e, #30 ; '0'
  4693.  
  4694.  
  4695. loc_94E5:                               ; CODE XREF: sub_94C9+16 sub_94C9+59
  4696.                 ld      c, 8
  4697.                 ld      a, e
  4698.                 add     a, d
  4699.                 ld      e, a
  4700.                 call    loc_A476
  4701.  
  4702.                 ld      a, #20 ; ' '
  4703.                 call    loc_A476
  4704.  
  4705.  
  4706. loc_94F2:                               ; CODE XREF: sub_94C9+51
  4707.                 ld      a, (hl)
  4708.                 push    hl
  4709.                 push    de
  4710.                 push    bc
  4711.                 ld      c, a
  4712.                 and     7
  4713.                 jr      nz, loc_94FF
  4714.  
  4715.                 ld      a, #2E ; '.'
  4716.                 jr      loc_950D
  4717.  
  4718. ; ---------------------------------------------------------------------------
  4719.  
  4720. loc_94FF:                               ; CODE XREF: sub_94C9+30
  4721.                 ld      hl, KING+1
  4722.                 call    sub_8CF7 ;поиск класса фигуры по номеру
  4723.  
  4724.                 dec     hl
  4725.                 ld      a, (hl)
  4726.                 bit     3, c
  4727.                 jr      z, loc_950D
  4728.  
  4729.                 or      #20 ; ' '
  4730.  
  4731.  
  4732. loc_950D:                               ; CODE XREF: sub_94C9+34 sub_94C9+40
  4733.                 call    loc_A476
  4734.  
  4735.                 ld      a, #20 ; ' '
  4736.                 call    loc_A476
  4737.  
  4738.                 pop     bc
  4739.                 pop     de
  4740.                 pop     hl
  4741.                 inc     hl
  4742.                 dec     c
  4743.                 jr      nz, loc_94F2
  4744.  
  4745.                 call    sub_A43C
  4746.  
  4747.                 call    sub_A43C
  4748.  
  4749.                 djnz    loc_94E5
  4750.  
  4751.                 ld      a, d
  4752.                 neg
  4753.                 ld      d, a
  4754.                 ld      a, e
  4755.                 add     a, #30 ; '0'
  4756.                 ld      e, a
  4757.                 ld      b, 2
  4758.  
  4759.  
  4760. loc_952E:                               ; CODE XREF: sub_94C9+6A
  4761.                 ld      a, #20 ; ' '
  4762.                 call    loc_A476
  4763.  
  4764.                 djnz    loc_952E
  4765.  
  4766.                 ld      b, 8
  4767.  
  4768.  
  4769. loc_9537:                               ; CODE XREF: sub_94C9+7A
  4770.                 ld      a, e
  4771.                 call    loc_A476
  4772.  
  4773.                 ld      a, #20 ; ' '
  4774.                 call    loc_A476
  4775.  
  4776.                 ld      a, e
  4777.                 add     a, d
  4778.                 ld      e, a
  4779.                 djnz    loc_9537
  4780.  
  4781.                 call    sub_A43C
  4782.  
  4783.                 call    sub_A43C
  4784.  
  4785.                 ret
  4786.  
  4787. ; End of function sub_94C9
  4788.  
  4789.  
  4790. ; =============== S U B R O U T I N E =======================================
  4791.  
  4792. sub_954C:                               ; CODE XREF: sub_8C20-AF1
  4793.                 call    sub_A164
  4794.                 ld      a, #70 ; 'p'
  4795.                 jr      c, loc_9554
  4796.                 xor     a
  4797. loc_9554:                               ; CODE XREF: sub_954C+5
  4798.                 ld      (needdrawcursor1), a
  4799.                 ld      a, #FF
  4800.                 ld      (needdrawcursorfrom), a
  4801.                 ret
  4802.  
  4803. ; End of function sub_954C
  4804.  
  4805.  
  4806. ; =============== S U B R O U T I N E =======================================
  4807. DrawMoveAndCursors:                             ; CODE XREF: sub_8C20-A94
  4808.                                         ; sub_8C20-88F ...
  4809.                 ld      a, (needdrawcursor1)
  4810.                 cp      #FF
  4811.                 call    nz, DrawCursor
  4812.                 ld      a, (needdrawcursorfrom)
  4813.                 cp      #FF
  4814.                 call    nz, DrawCursorFrom
  4815.                 call    PrepareAndPrintMoveText
  4816.                 ret
  4817. ; End of function DrawMoveAndCursors
  4818. ; =============== S U B R O U T I N E =======================================
  4819. UnDrawMoveAndCursors:                           ; CODE XREF: sub_8C20-AF4
  4820.                                         ; sub_8C20-85C ...
  4821.                 ld      a, (needdrawcursor1)
  4822.                 cp      #FF
  4823.                 call    nz, UnDrawCursor
  4824.                 ld      a, (needdrawcursorfrom)
  4825.                 cp      #FF
  4826.                 call    nz, UnDrawCursor
  4827.                 call    restore_6_spaces
  4828.                 ret
  4829. ; End of function UnDrawMoveAndCursors
  4830. ; =============== S U B R O U T I N E =======================================
  4831.  
  4832. DrawCursor:                             ; CODE XREF: sub_9128+2C DrawMoveAndCursors+5
  4833. ;A=номер поля?=0b0YYY0XXX
  4834.                 push    af
  4835.                 ld      a, (byte_D04D)
  4836.                 or      a
  4837.                 ld      d, 0   ;and
  4838.                 ld      e, #A9 ;or
  4839.                 jr      z, loc_9592
  4840.                 ld      e, #AA ;or
  4841. loc_9592:                               ; CODE XREF: DrawCursor+9
  4842.                 pop     af
  4843.                 jr      loc_959B
  4844. ; End of function DrawCursor
  4845. ; =============== S U B R O U T I N E =======================================
  4846. UnDrawCursor:                           ; CODE XREF: sub_8C20-20C
  4847.                                         ; sub_8C20-17C ...
  4848. ;A=номер поля?=0b0YYY0XXX
  4849.                 ld      d, #FF ;and
  4850.                 ld      e, 0   ;or
  4851.                 jr      loc_959B ;???
  4852. ; ---------------------------------------------------------------------------
  4853. loc_959B:                               ; CODE XREF: DrawCursor+E UnDrawCursor+4 ...
  4854. ;A=номер поля?=0b0YYY0XXX
  4855.                 push    hl
  4856.                 push    af
  4857.                 push    de
  4858.                 call    sub_95AE
  4859.                 pop     de
  4860.                 and     d
  4861.                 or      e
  4862.                 ld      (hl), a
  4863.                 pop     af
  4864.                 pop     hl
  4865.                 ret
  4866. ; End of function UnDrawCursor
  4867. ; =============== S U B R O U T I N E =======================================
  4868.  
  4869. DrawCursorFrom:                         ; CODE XREF: sub_9128+34 DrawMoveAndCursors+D
  4870.                 ld      d, 0   ;and
  4871.                 ld      e, #29 ;or
  4872.                 jr      loc_959B
  4873. ; End of function DrawCursorFrom
  4874. ; =============== S U B R O U T I N E =======================================
  4875.  
  4876. sub_95AE:                               ; CODE XREF: UnDrawCursor+9
  4877. ;A=номер поля?=0b0YYY0XXX
  4878.                 and     #77
  4879.                 ld      hl, byte_D0B3 ;d3=swap board
  4880.                 bit     3, (hl)
  4881.                 jr      z, loc_95B9
  4882.                 xor     #77
  4883. loc_95B9:                               ; CODE XREF: sub_95AE+7
  4884.                 call    sub_9703 ;calc scr_XY, scr_pix_addr, scr_attr_addr
  4885.  
  4886.                 ld      hl, (scr_attr_addr)
  4887.                 ld      a, (hl) ;нормальный цвет из угла клетки
  4888.                 ld      de, #21
  4889.                 add     hl, de ;позиция курсора на клетке
  4890.                 ret
  4891. ; End of function sub_95AE
  4892. ; =============== S U B R O U T I N E =======================================
  4893.  
  4894. sub_95C5:                               ; CODE XREF: sub_8FC1+8 sub_924C+B ...
  4895.                 ld      hl, SEL_SCRorBUF
  4896.                 ld      a, (hl)
  4897.                 cpl
  4898.                 ld      (hl), a
  4899.                 call    SET_BRD_COLOR
  4900.  
  4901.                 ld      hl, SCREEN
  4902.                 ld      de, SCR_BUF_6400
  4903.                 ld      c, #1B
  4904.                 ld      b, 0
  4905. loc_95D8:                               ; CODE XREF: sub_95C5+1B sub_95C5+1E
  4906.                 ld      a, (hl)
  4907.                 ex      af, af' ;'
  4908.                 ld      a, (de)
  4909.                 ld      (hl), a
  4910.                 ex      af, af' ;'
  4911.                 ld      (de), a
  4912.                 inc     hl
  4913.                 inc     de
  4914.                 djnz    loc_95D8
  4915.                 dec     c
  4916.                 jr      nz, loc_95D8
  4917.                 ret
  4918.  
  4919. ; End of function sub_95C5
  4920.  
  4921.                 ;unused data???
  4922.                 db      #47,#1F,#E6,#38,#4F,#78,#E6,#07,#81
  4923.  
  4924. ; =============== S U B R O U T I N E =======================================
  4925.  
  4926.  
  4927. sub_95EF:                               ; CODE XREF: sub_95FA+1
  4928.                 push    hl
  4929.                 ld      hl, byte_D0B3 ;d3=swap board
  4930.                 bit     3, (hl) ;swap board?
  4931.                 pop     hl
  4932.                 ret     z
  4933.                 xor     #3F
  4934.                 ret
  4935.  
  4936. ; End of function sub_95EF
  4937.  
  4938.  
  4939. ; =============== S U B R O U T I N E =======================================
  4940.  
  4941.  
  4942. sub_95FA:                               ; CODE XREF: SHOW_FIG_POS+22
  4943. ;a=position (0..63)
  4944.                 push    bc
  4945.                 call    sub_95EF ;swap board if needed
  4946.                 ld      b, a
  4947.                 and     #38
  4948.                 rlca
  4949.                 ld      c, a ;c=0b0YYY0000
  4950.                 ld      a, b
  4951.                 and     7
  4952.                 or      c    ;a=0b0YYY0XXX
  4953.                 pop     bc
  4954.                 ret
  4955.  
  4956. ; End of function sub_95FA
  4957.  
  4958.  
  4959. ; =============== S U B R O U T I N E =======================================
  4960. ;recount scr_pix_addr, scr_attr_addr to scrbuf if needed
  4961.  
  4962. sub_9609:                               ; CODE XREF: SHOW_FIG_POS+2B
  4963.                 ld      a, (SEL_SCRorBUF)
  4964.                 or      a
  4965.                 ret     z
  4966.                 jr      loc_9615
  4967.  
  4968. ; ---------------------------------------------------------------------------
  4969.                 ld      a, (SEL_SCRorBUF)
  4970.                 or      a
  4971.                 ret     nz
  4972.  
  4973.  
  4974. loc_9615:                               ; CODE XREF: sub_9609+5
  4975.                 push    de
  4976.                 push    hl
  4977.                 ld      de, #2400
  4978.                 ld      hl, (scr_pix_addr)
  4979.                 add     hl, de
  4980.                 ld      (scr_pix_addr), hl
  4981.                 ld      hl, (scr_attr_addr)
  4982.                 add     hl, de
  4983.                 ld      (scr_attr_addr), hl
  4984.                 pop     hl
  4985.                 pop     de
  4986.                 ret
  4987.  
  4988. ; End of function sub_9609
  4989.  
  4990.  
  4991. ; =============== S U B R O U T I N E =======================================
  4992.  
  4993.  
  4994. CLR_SCR_OR_BUF:                         ; CODE XREF: START_POINT+84
  4995.                 di
  4996.                 ld      hl, SCREEN
  4997.                 ld      a, (SEL_SCRorBUF)
  4998.                 or      a
  4999.                 jr      z, loc_9638
  5000.  
  5001.                 ld      hl, SCR_BUF_6400
  5002. loc_9638:                               ; CODE XREF: CLR_SCR_OR_BUF+8
  5003.                 ld      a, h
  5004.                 add     a, #18
  5005.                 ld      b, 0
  5006. loc_963D:                               ; CODE XREF: CLR_SCR_OR_BUF+15
  5007.                 ld      (hl), b
  5008.                 inc     hl
  5009.                 cp      h
  5010.                 jr      nz, loc_963D
  5011.  
  5012.                 ld      b, #28    ; ink=0, paper=5
  5013.                 add     a, 3
  5014. loc_9646:                               ; CODE XREF: CLR_SCR_OR_BUF+1E
  5015.                 ld      (hl), b
  5016.                 inc     hl
  5017.                 cp      h
  5018.                 jr      nz, loc_9646
  5019.  
  5020. ; End of function CLR_SCR_OR_BUF
  5021.  
  5022.  
  5023. ; =============== S U B R O U T I N E =======================================
  5024.  
  5025.  
  5026. SET_BRD_COLOR:                          ; CODE XREF: sub_95C5+6 FillAttrsAndBorder+30   ...
  5027.                 ld      a, (SEL_SCRorBUF)
  5028.                 or      a
  5029.                 ld      a, 5
  5030.                 jr      nz, loc_9655
  5031.                 ld      a, 5 ;???
  5032. loc_9655:                               ; CODE XREF: SET_BRD_COLOR+6
  5033.                 ld      (BRD_COLOR), a
  5034.                 out     (#FE),  a
  5035.                 ei
  5036.                 ret
  5037.  
  5038. ; End of function SET_BRD_COLOR
  5039.  
  5040.  
  5041. ; =============== S U B R O U T I N E =======================================
  5042.  
  5043.  
  5044. FillAttrsAndBorder:                             ; CODE XREF: sub_9EE6
  5045.                 di
  5046.                 ld      hl, 0
  5047.                 ld      (gamestatemsgaddr), hl
  5048.                 ld      hl, SCR_BUF_6400
  5049.                 ld      a, (SEL_SCRorBUF)
  5050.                 or      a
  5051.                 jr      z, loc_966F
  5052.                 ld      hl, SCREEN
  5053. loc_966F:                               ; CODE XREF: FillAttrsAndBorder+E
  5054.                 ld      a, h
  5055.                 add     a, #18
  5056.                 ld      b, 0
  5057. loc_9674:                               ; CODE XREF: FillAttrsAndBorder+1B
  5058.                 ld      (hl), b
  5059.                 inc     hl
  5060.                 cp      h
  5061.                 jr      nz, loc_9674
  5062.  
  5063.                 ld      c, #18
  5064.                 ld      de, fill_attrs
  5065. loc_967E:                               ; CODE XREF: FillAttrsAndBorder+2D
  5066.                 ld      b, #20 ; ' '
  5067.                 ld      a, (de)
  5068. loc_9681:                               ; CODE XREF: FillAttrsAndBorder+27
  5069.                 ld      (hl), a
  5070.                 inc     hl
  5071.                 djnz    loc_9681
  5072.                 dec     c
  5073.                 jr      z, loc_968B
  5074.                 inc     de
  5075.                 jr      loc_967E
  5076. ; ---------------------------------------------------------------------------
  5077. loc_968B:                               ; CODE XREF: FillAttrsAndBorder+2A
  5078.                 ei
  5079.                 jr      SET_BRD_COLOR
  5080.  
  5081. ; End of function FillAttrsAndBorder
  5082.  
  5083. ; ---------------------------------------------------------------------------
  5084. fill_attrs:     db  #3A,#3A,#29,#29,#29,#29,#29,#29
  5085.                 db  #29,#29,#29,#29,#29,#29,#29,#29
  5086.                 db  #32,#32,#32,#32,#32,#32,#32,#32
  5087.  
  5088. ; =============== S U B R O U T I N E =======================================
  5089.  
  5090.  
  5091. sub_96A6:                               ; CODE XREF: sub_8C20:NEW_GAME
  5092.                                         ; sub_8C20-5E7 ...
  5093.                 ld      hl, #600
  5094.                 ld      (scr_XY), hl
  5095.  
  5096.  
  5097. loc_96AC:                               ; CODE XREF: sub_96A6+11
  5098.                 ld      hl, a_32spaces  ; "                        "
  5099.                 call    PRINT_STR_FF
  5100.  
  5101.                 ld      a, (scr_XY+1)
  5102.                 cp      #D
  5103.                 jr      nz, loc_96AC
  5104.  
  5105.                 xor     a
  5106.                 ld      (byte_D0C0), a
  5107.                 ret
  5108.  
  5109. ; End of function sub_96A6
  5110.  
  5111.  
  5112. ; =============== S U B R O U T I N E =======================================
  5113.  
  5114.  
  5115. CALC_SCR_ADDRS:                         ; CODE XREF: sub_8EFB+8 sub_8EFB+22     ...
  5116.                 push    bc
  5117.                 push    de
  5118.                 push    hl
  5119.                 ld      bc, (scr_XY)
  5120.                 ld      a, b
  5121.                 ld      hl, SCREEN
  5122.                 ld      de, #800
  5123. loc_96CC:                               ; CODE XREF: CALC_SCR_ADDRS+15
  5124.                 cp      8
  5125.                 jr      c, loc_96D5
  5126.                 sub     8
  5127.                 add     hl, de
  5128.                 jr      loc_96CC
  5129. loc_96D5:                               ; CODE XREF: CALC_SCR_ADDRS+10
  5130.                 rrca
  5131.                 rrca
  5132.                 rrca
  5133.                 add     a, c
  5134.                 ld      e, a
  5135.                 ld      d, 0
  5136.                 add     hl, de
  5137.                 ld      (scr_pix_addr), hl
  5138.                 ld      l, b
  5139.                 ld      h, 0
  5140.                 add     hl, hl
  5141.                 add     hl, hl
  5142.                 add     hl, hl
  5143.                 add     hl, hl
  5144.                 add     hl, hl
  5145.                 ld      de, SCR_ATTRS
  5146.                 add     hl, de
  5147.                 ld      e, c
  5148.                 ld      d, 0
  5149.                 add     hl, de
  5150.                 ld      (scr_attr_addr), hl
  5151.                 pop     hl
  5152.                 pop     de
  5153.                 pop     bc
  5154.                 ret
  5155.  
  5156. ; End of function CALC_SCR_ADDRS
  5157.  
  5158.  
  5159. ; =============== S U B R O U T I N E =======================================
  5160.  
  5161.  
  5162. sub_96F7:                               ; CODE XREF: sub_8D9E+21 sub_8D9E+2D
  5163. ;a=0b0YYY0XXX
  5164.                 push    hl
  5165.                 ld      hl, byte_D0B3 ;d3=swap board
  5166.                 bit     3, (hl)
  5167.                 jr      z, loc_9704
  5168.  
  5169.                 xor     #77 ;swap board
  5170.                 jr      loc_9704
  5171.  
  5172. ; End of function sub_96F7
  5173.  
  5174.  
  5175. ; =============== S U B R O U T I N E =======================================
  5176. ;count scr_XY, scr_pix_addr, scr_attr_addr
  5177.  
  5178. sub_9703:                               ; CODE XREF: SHOW_FIG_POS+25
  5179.                                         ; sub_95AE:loc_95B9
  5180. ;a=0b0YYY0XXX
  5181.                 push    hl
  5182.  
  5183.  
  5184. loc_9704:                               ; CODE XREF: sub_96F7+6 sub_96F7+A
  5185. ;a=0b0YYY0XXX
  5186.                 push    de
  5187.                 push    bc
  5188.                 ld      c, a
  5189.                 and     #F0 ; 'р'
  5190.                 rlca
  5191.                 rlca
  5192.                 rlca
  5193.                 rlca
  5194.                 ld      b, a
  5195.                 add     a, a
  5196.                 add     a, b
  5197.                 ld      h, a
  5198.                 ld      a, c
  5199.                 and     #F
  5200.                 ld      b, a
  5201.                 add     a, a
  5202.                 add     a, b
  5203.                 add     a, 8
  5204.                 ld      l, a
  5205.                 ld      (scr_XY), hl
  5206.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  5207.  
  5208.                 ld      a, (SEL_SCRorBUF)
  5209.                 or      a
  5210.                 jr      z, loc_9737
  5211.  
  5212.                 ld      de, #2400
  5213.                 ld      hl, (scr_pix_addr)
  5214.                 add     hl, de
  5215.                 ld      (scr_pix_addr), hl
  5216.                 ld      hl, (scr_attr_addr)
  5217.                 add     hl, de
  5218.                 ld      (scr_attr_addr), hl
  5219.  
  5220. loc_9737:                               ; CODE XREF: sub_9703+21
  5221.                 pop     bc
  5222.                 pop     de
  5223.                 pop     hl
  5224.                 ret
  5225.  
  5226. ; End of function sub_9703
  5227.  
  5228. ; ---------------------------------------------------------------------------
  5229.  
  5230.  
  5231.         ;following table could be placed anywhere without alignment
  5232.  
  5233.                 ;--empty--
  5234. FIG_sprites:    db  #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00 ; 72 bytes (24x24 pix) each,
  5235.                 db  #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00 ; empty, pawn, knight, bishop,
  5236.                 db  #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00 ; rook, queen, king.
  5237.                 ;pawn
  5238.                 db  #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #00, #3C, #7E, #FF, #FF, #FF, #00, #00, #00, #00, #00, #00, #00, #00
  5239.                 db  #00, #00, #01, #00, #00, #00, #00, #00, #FF, #7E, #FF, #7E, #3C, #3C, #3C, #7E, #00, #00, #80, #00, #00, #00, #00, #00
  5240.                 db  #00, #00, #00, #03, #07, #07, #03, #00, #7E, #7E, #FF, #81, #FF, #FF, #FF, #00, #00, #00, #00, #C0, #E0, #E0, #C0, #00
  5241.                 ;knight
  5242.                 db  #00, #00, #00, #00, #01, #07, #1F, #1F, #00, #03, #1F, #7F, #BF, #FF, #FF, #FF, #00, #80, #80, #00, #00, #80, #80, #80
  5243.                 db  #07, #0F, #00, #00, #01, #03, #07, #07, #FF, #BF, #7F, #FF, #FF, #FF, #FF, #FF, #C0, #C0, #C0, #E0, #E0, #E0, #E0, #E0
  5244.                 db  #03, #00, #01, #03, #0F, #0F, #07, #00, #FF, #FF, #FF, #00, #FF, #FF, #FF, #00, #C0, #00, #80, #C0, #F0, #F0, #E0, #00
  5245.                 ;bishop
  5246.                 db  #00, #00, #00, #00, #00, #00, #01, #03, #00, #18, #3C, #3C, #26, #9F, #CF, #E7, #00, #00, #00, #00, #00, #00, #80, #C0
  5247.                 db  #03, #07, #07, #07, #07, #03, #01, #00, #F7, #FF, #FF, #FF, #FF, #FF, #FF, #FF, #C0, #E0, #E0, #E0, #E0, #C0, #80, #00
  5248.                 db  #00, #01, #03, #07, #0F, #0F, #07, #00, #FF, #FF, #FF, #00, #FF, #FF, #FF, #00, #00, #80, #C0, #E0, #F0, #F0, #E0, #00
  5249.                 ;rook
  5250.                 db  #00, #00, #00, #0F, #0F, #0F, #0F, #0F, #00, #00, #00, #3C, #3C, #3C, #FF, #FF, #00, #00, #00, #F0, #F0, #F0, #F0, #F0
  5251.                 db  #07, #02, #03, #03, #03, #03, #03, #03, #FF, #00, #FF, #FF, #FF, #FF, #FF, #FF, #E0, #40, #C0, #C0, #C0, #C0, #C0, #C0
  5252.                 db  #03, #03, #07, #0E, #1F, #1F, #0F, #00, #FF, #FF, #FF, #00, #FF, #FF, #FF, #00, #C0, #C0, #E0, #70, #F8, #F8, #F0, #00
  5253.                 ;queen
  5254.                 db  #00, #00, #00, #00, #00, #01, #47, #5E, #00, #18, #3C, #3C, #66, #FF, #7E, #3C, #00, #00, #00, #00, #00, #80, #E2, #7A
  5255.                 db  #4C, #61, #3F, #1F, #0F, #07, #03, #02, #99, #C3, #FF, #FF, #FF, #FF, #FF, #FF, #32, #86, #FC, #F8, #F0, #E0, #C0, #40
  5256.                 db  #0F, #0B, #1F, #18, #3F, #3F, #1F, #00, #FF, #66, #FF, #00, #FF, #FF, #FF, #00, #F0, #D0, #F8, #18, #FC, #FC, #F8, #00
  5257.                 ;king
  5258.                 db  #00, #00, #00, #00, #1E, #33, #61, #4C, #00, #7E, #66, #5A, #5A, #66, #FF, #66, #00, #00, #00, #00, #78, #CC, #86, #32
  5259.                 db  #5F, #5F, #4F, #67, #37, #13, #1B, #08, #66, #3C, #99, #DB, #DB, #DB, #DB, #00, #FA, #FA, #F2, #E6, #EC, #C8, #D8, #10
  5260.                 db  #0F, #0B, #1F, #18, #3F, #3F, #1F, #00, #FF, #66, #FF, #00, #FF, #FF, #FF, #00, #F0, #D0, #F8, #18, #FC, #FC, #F8, #00
  5261.  
  5262. ; =============== S U B R O U T I N E =======================================
  5263.  
  5264.  
  5265. sub_9933:                               ; CODE XREF: sub_92D7+4
  5266.                 call    BEEP_move
  5267.  
  5268.                 jp      BEEP_start
  5269.  
  5270. ; End of function sub_9933
  5271.  
  5272.  
  5273. ; =============== S U B R O U T I N E =======================================
  5274.  
  5275.  
  5276. sub_9939:                               ; CODE XREF: sub_8C20-5F
  5277.                 call    BEEP_start
  5278.  
  5279.                 call    BEEP_move
  5280.  
  5281. ; End of function sub_9939
  5282.  
  5283.  
  5284. ; =============== S U B R O U T I N E =======================================
  5285.  
  5286.  
  5287. BEEP_start:                             ; CODE XREF: sub_8C20-B76
  5288.                                         ; sub_8C20:loc_83E8 ...
  5289.                 push    hl
  5290.                 push    de
  5291.                 ld      hl, #511
  5292.                 ld      de, #A5 ; '?'
  5293.                 jr      BEEP_common
  5294.  
  5295. ; End of function BEEP_start
  5296.  
  5297.  
  5298. ; =============== S U B R O U T I N E =======================================
  5299.  
  5300.  
  5301. BEEP_move:                              ; CODE XREF: sub_8C20-A51
  5302.                                         ; sub_8C20-79C ...
  5303.                 push    hl
  5304.                 push    de
  5305.                 ld      hl, #43E
  5306.                 ld      de, #C4
  5307.                 jr      BEEP_common
  5308.  
  5309. ; End of function BEEP_move
  5310.  
  5311.  
  5312. ; =============== S U B R O U T I N E =======================================
  5313.  
  5314.  
  5315. BEEP_3:                                 ; CODE XREF: sub_8C20:loc_8419
  5316.                                         ; sub_8C20:loc_85DD ...
  5317.                 push    hl
  5318.                 push    de
  5319.                 ld      hl, #66A
  5320.                 ld      de, #83
  5321.                 jr      BEEP_common
  5322.  
  5323. ; End of function BEEP_3
  5324.  
  5325.  
  5326. ; =============== S U B R O U T I N E =======================================
  5327.  
  5328.  
  5329. BEEP_4:                                 ; CODE XREF: sub_907E+23
  5330.                 push    hl
  5331.                 push    de
  5332.                 ld      hl, #326
  5333.                 ld      de, #34
  5334.                 jr      BEEP_common
  5335.  
  5336. ; ---------------------------------------------------------------------------
  5337.                 push    hl
  5338.                 push    de
  5339.                 ld      hl, #326
  5340.                 ld      de, #105
  5341.  
  5342. BEEP_common:                            ; CODE XREF: BEEP_start+8
  5343.                                         ; BEEP_move+8   ...
  5344.                 di
  5345.                 call    BEEP_routine
  5346.                 ei
  5347.                 pop     de
  5348.                 pop     hl
  5349.                 ret
  5350.  
  5351. ; End of function BEEP_4
  5352.  
  5353.  
  5354. ; =============== S U B R O U T I N E =======================================
  5355.  
  5356.  
  5357. BEEP_routine:                           ; CODE XREF: BEEP_4+13
  5358.                 di
  5359.                 push    ix
  5360.                 push    bc
  5361.                 ld      a, l
  5362.                 srl     l
  5363.                 srl     l
  5364.                 cpl
  5365.                 and     3
  5366.                 ld      c, a
  5367.                 ld      b, 0
  5368.                 ld      ix, BEEP_loop
  5369.                 add     ix, bc
  5370.                 ld      a, (BRD_COLOR)
  5371.                 or      8
  5372. BEEP_loop:                              ; DATA XREF: BEEP_routine+F
  5373.                 nop
  5374.                 nop
  5375.                 nop
  5376.                 inc     b
  5377.                 inc     c
  5378. BEEP_wait:                              ; CODE XREF: BEEP_routine+20
  5379.                                         ; BEEP_routine+25
  5380.                 dec     c
  5381.                 jr      nz, BEEP_wait
  5382.                 ld      c, #3F
  5383.                 dec     b
  5384.                 jp      nz, BEEP_wait
  5385.                 xor     #10
  5386.                 out     (#FE),  a
  5387.                 ld      b, h
  5388.                 ld      c, a
  5389.                 bit     4, a
  5390.                 jr      nz, BEEP_smth
  5391.  
  5392.                 ld      a, d
  5393.                 or      e
  5394.                 jr      z, BEEP_exit
  5395.  
  5396.                 ld      a, c
  5397.                 ld      c, l
  5398.                 dec     de
  5399.                 jp      (ix)
  5400.  
  5401. ; ---------------------------------------------------------------------------
  5402.  
  5403. BEEP_smth:                              ; CODE XREF: BEEP_routine+30
  5404.                 ld      c, l
  5405.                 inc     c
  5406.                 jp      (ix)
  5407. ; ---------------------------------------------------------------------------
  5408. BEEP_exit:                              ; CODE XREF: BEEP_routine+34
  5409.                 pop     bc
  5410.                 pop     ix
  5411.                 ei
  5412.                 ret
  5413.  
  5414. ; End of function BEEP_routine
  5415.  
  5416. ; ---------------------------------------------------------------------------
  5417. aCyrusIi:       db 'CYRUS II     ',#7F
  5418.                 db ' 1986',#0D
  5419.                 db ' INTELLIGENT CHESS SOFTWARE LTD'
  5420.                 EOS
  5421.  
  5422.                 db '  LEVEL' ;печатается вместе с предыдущим
  5423.                 EOS
  5424.  
  5425.                 db      'Press <SPACE> to see board' ;печатается вместе с предыдущим
  5426.                 EOS
  5427.  
  5428. aPress:         db ' PRESS',#0D
  5429.                 db '<SPACE>',#0D
  5430.                 db '  for',#0D
  5431.                 db ' MENU'
  5432.                 EOS
  5433.  
  5434.  
  5435. aOOO:           db 'O-O-O'          ; DATA XREF: sub_8977+14
  5436.  
  5437.  
  5438. aNewGameYN:     db 'NEW GAME (Y/N)? ' ; DATA XREF: sub_92D7+1A
  5439.                 EOS
  5440.  
  5441. aNew:           db ' NEW ?'          ; DATA XREF: sub_92D7+D
  5442.                 EOS
  5443.  
  5444. aCyrus:         db 'CYRUS '          ; DATA XREF: sub_9F73 sub_A177+86 ...
  5445.                 EOS
  5446.  
  5447. a_PLAYER:       db 'PLAYER'          ; DATA XREF: sub_9F73+5 sub_A177+8D ...
  5448.                 EOS
  5449.  
  5450. a_ADAP:         db 'ADAP'            ; DATA XREF: PrintCurLevel:loc_8D56
  5451.                 EOS
  5452.  
  5453. a_INF:          db 'INF '            ; DATA XREF: PrintCurLevel+2F
  5454.                 EOS
  5455.  
  5456. aProb:          db 'PROB'            ; DATA XREF: PrintCurLevel+36
  5457.                 EOS
  5458.  
  5459. aAnalysis:      db 'ANALYSIS'        ; DATA XREF: sub_842C+10
  5460.                 EOS
  5461.  
  5462. aPrinter:       db 'PRINTER'
  5463.                 EOS
  5464.  
  5465. aNoMateIn:      db 'NO MATE IN '     ; DATA XREF: sub_A6F7:loc_A725
  5466.                 EOS
  5467.  
  5468. aIllegalSetup:  db 'ILLEGAL SETUP'   ; DATA XREF: sub_8C20+1
  5469.                 EOS
  5470.  
  5471. aStalemate:     db 'STALEMATE'       ; DATA XREF: sub_8C20-8A
  5472.                 EOS
  5473.  
  5474. aCheckmate:     db 'CHECKMATE'       ; DATA XREF: sub_8C20:loc_8B8D
  5475.                 EOS
  5476.                
  5477. aDraw:          db 'DRAW'            ; DATA XREF: sub_8C20:loc_8B9B
  5478.                 EOS
  5479.  
  5480. aBlack:         db 'BLACK'           ; DATA XREF: sub_8C20-62E
  5481.                                         ; sub_9F0D+61
  5482.                 EOS
  5483.  
  5484. aWhite:         db 'WHITE'           ; DATA XREF: sub_8C20-637
  5485.                                         ; sub_9F0D+58
  5486.                 EOS
  5487.  
  5488. aInitClk:       db '00:00:00'        ; DATA XREF: INIT_PRINT_CLOCKS
  5489.                                         ; INIT_PRINT_CLOCKS+B   ...
  5490.                 EOS
  5491.  
  5492.  
  5493. a_32spaces:     db '                        '
  5494. a_8spaces:      db '        '
  5495.                 EOS
  5496.  
  5497. aSetUpPosition: db 'SET UP POSITION',#0D ; DATA XREF: sub_9F0D+6
  5498.                 db 'C - Clear board M - Multi-move  E - Empty squ.  S - exit Setup  '
  5499.                 db 'G - new Game    X - swap colour L - Level       Z - Zero clocks '
  5500.                 db  #0D
  5501.                 db '   P,N,B,R,Q,K - piece to add'
  5502.                 EOS
  5503.  
  5504. aThinking:      db 'THINKING',#0D       ; DATA XREF: sub_9F0D+32
  5505.                 db  #0D
  5506.                 db 'M - Move now      H - Hint',#0D
  5507.                 db 'G - new Game'
  5508.                 EOS
  5509.  
  5510. aYourMove:      db 'YOUR MOVE',#0D
  5511.                 db 'A - Analysis      B - Back',#0D
  5512.                 db 'C - Cassette      D - Demo',#0D
  5513.                 db 'F - Forward       G - new Game',#0D
  5514.                 db 'H - Hint          I - Invert',#0D
  5515.                 db 'L - Level         M - Move',#0D
  5516.                 db      'P - Printer       S - Set posn.'
  5517.                 EOS
  5518.  
  5519. aBBackSSetPosn_:db 'B - Back          S - Set posn. G - new Game'
  5520.                 EOS
  5521.  
  5522. aSSaveRecordLLo:db 'S- Save record   L- Load record',#0D
  5523.                 db  #0D
  5524.                 db '  PRESS ANY OTHER KEY TO ABORT'
  5525.                 EOS
  5526.  
  5527. aNotAGameRecord:db 'NOT A '
  5528. aGameRecord:    db 'GAME RECORD : ' ; DATA XREF: sub_8C20+1A03
  5529.                 EOS
  5530.  
  5531. aLoadAGameRecor:db '      LOAD A GAME RECORD',#0D
  5532.                 db 'ENTER FILENAME; <BREAK> TO ABORT'
  5533.                 EOS
  5534.  
  5535. aSaveTheGameRec:db '      SAVE THE GAME RECORD',#0D
  5536.                 db 'ENTER FILENAME; <BREAK> TO ABORT'
  5537.                 EOS
  5538.  
  5539. aStartTapeAndPr:db '  START TAPE AND PRESS ANY KEY'
  5540.                 EOS
  5541.  
  5542. aZZxPrinterPSer:db ' Z-ZX PRINTER    P-SERIAL',#0D
  5543.                 db ' G-GAME RECORD   B-BOARD',#0D
  5544.                 db ' C-CONTINUOUS    O-OPTIONS',#0D
  5545.                 db  #0D
  5546.                 db '  PRESS ANY OTHER KEY TO ABORT'
  5547.                 EOS
  5548.  
  5549. aSelectBaudRate:db 'SELECT BAUD RATE:-',#0D
  5550.                 db '1=50  2=110  3=300  4=600 5=12006=2400  7=4800  8=9600  9=19200 ',#0D
  5551.                 db '            C=CR+LF',#0D
  5552.                 db  #0D
  5553.                 db '  PRESS ANY OTHER KEY TO ABORT'
  5554.                 EOS
  5555. ; ---------------------------------------------------------------------------
  5556.  
  5557. PRINT_STR_scr0:                         ; CODE XREF: sub_8C20-666
  5558.                                         ; sub_8C20:loc_85F5 ...
  5559.                 xor     a
  5560.                 jr      PRINT_STR_A
  5561.  
  5562.  
  5563. ; =============== S U B R O U T I N E =======================================
  5564.  
  5565.  
  5566. PrintStrF00:                            ; CODE XREF: sub_8C20-6B sub_8C20+4     ...
  5567.                 ld      de, #F00
  5568.                 ld      (scr_XY), de
  5569.                 call    PRINT_STR_FF
  5570.  
  5571.                 ret
  5572.  
  5573. ; End of function PrintStrF00
  5574.  
  5575.  
  5576. ; =============== S U B R O U T I N E =======================================
  5577.  
  5578.  
  5579. PRINT_STR_FF:                           ; CODE XREF: sub_842C:loc_843F
  5580.                                         ; PrintMoveText+9 ...
  5581.                 ld      a, #FF
  5582.  
  5583. PRINT_STR_A:                            ; CODE XREF: RAM:9E66
  5584.                 ld      (NEED_SCR2BUF), a
  5585.  
  5586. loc_9E78:                               ; CODE XREF: PRINT_STR_FF+14
  5587.                                         ; PRINT_STR_FF+1F
  5588.                 ld      a, (hl)
  5589.                 inc     hl
  5590.                 cp      #D
  5591.                 jr      nz, loc_9E89
  5592.  
  5593.                 push    hl
  5594.                 ld      hl, scr_XY
  5595.                 ld      (hl), 0
  5596.                 inc     hl
  5597.                 inc     (hl)
  5598.                 pop     hl
  5599.                 jr      loc_9E78
  5600.  
  5601. ; ---------------------------------------------------------------------------
  5602.  
  5603. loc_9E89:                               ; CODE XREF: PRINT_STR_FF+9
  5604.                 push    af
  5605.                 and     #7F
  5606.                 call    PRINT_LETTER
  5607.  
  5608.                 pop     af
  5609.                 bit     7, a
  5610.                 jr      z, loc_9E78
  5611.  
  5612.                 ret
  5613.  
  5614. ; End of function PRINT_STR_FF
  5615.  
  5616.  
  5617. ; =============== S U B R O U T I N E =======================================
  5618.  
  5619.  
  5620. PRINT_LETTER:                           ; CODE XREF: PrintCurLevel+1C PrintCurLevel+22 ...
  5621.                 push    hl
  5622.                 push    de
  5623.                 push    bc
  5624.                 push    af
  5625.                 call    CALC_SCR_ADDRS
  5626.  
  5627.                 ld      hl, (scr_pix_addr)
  5628.                 call    ADDR_SCR2BUF
  5629.  
  5630.                 add     hl, de
  5631.                 pop     af
  5632.                 cp      '0'
  5633.                 jr      nz, loc_9EAA
  5634.                 ld      a,'O'
  5635. loc_9EAA:                               ; CODE XREF: PRINT_LETTER+11
  5636.                 push    hl
  5637.                 ld      de,font-256 ;#3C00      ; ROM FONT
  5638.                 ld      l, a
  5639.                 ld      h, 0
  5640.                 add     hl, hl
  5641.                 add     hl, hl
  5642.                 add     hl, hl
  5643.                 add     hl, de
  5644.                 ex      de, hl
  5645.                 pop     hl
  5646.                 ld      b, 8
  5647. loc_9EB9:                               ; CODE XREF: PRINT_LETTER+28
  5648.                 ld      a, (de)
  5649.                 ld      (hl), a
  5650.                 inc     de
  5651.                 inc     h
  5652.                 djnz    loc_9EB9
  5653.  
  5654.                 ld      hl, (scr_XY)
  5655.                 ld      a, l
  5656.                 inc     a
  5657.                 cp      #20
  5658.                 jr      nz, loc_9ECA
  5659.                 xor     a
  5660.                 inc     h
  5661. loc_9ECA:                               ; CODE XREF: PRINT_LETTER+31
  5662.                 ld      l, a
  5663.                 ld      (scr_XY), hl
  5664.                 pop     bc
  5665.                 pop     de
  5666.                 pop     hl
  5667.                 ret
  5668.  
  5669. ; End of function PRINT_LETTER
  5670.  
  5671.  
  5672. ; =============== S U B R O U T I N E =======================================
  5673.  
  5674.  
  5675. ADDR_SCR2BUF:                           ; CODE XREF: PRINT_LETTER+A
  5676.                 push    af
  5677.                 push    hl
  5678.                 ld      a, (SEL_SCRorBUF)
  5679.                 ld      hl, NEED_SCR2BUF
  5680.                 cp      (hl)
  5681.                 ld      de, SCR_BUF_6400-#4000  ; addition to move to SCR_BUF=#6400
  5682.                 jr      nz, loc_9EE3
  5683.                 ld      de, 0
  5684. loc_9EE3:                               ; CODE XREF: ADDR_SCR2BUF+C
  5685.                 pop     hl
  5686.                 pop     af
  5687.                 ret
  5688.  
  5689. ; End of function ADDR_SCR2BUF
  5690.  
  5691.  
  5692. ; =============== S U B R O U T I N E =======================================
  5693.  
  5694.  
  5695. sub_9EE6:                               ; CODE XREF: sub_92D7-1239
  5696.                                         ; sub_8C20+1A5B
  5697.                 call    FillAttrsAndBorder
  5698.  
  5699.                 ld      hl, #C
  5700.                 ld      (scr_XY), hl
  5701.                 ld      hl, aCyrusIi    ; "CYRUS II     "
  5702.                 call    PRINT_STR_FF
  5703.  
  5704.                 ld      de, #318
  5705.                 ld      (scr_XY), de
  5706.                 call    PRINT_STR_FF
  5707.  
  5708.                 ld      de, #1703
  5709.                 ld      (scr_XY), de
  5710.                 call    PRINT_STR_FF
  5711.  
  5712.                 call    PrintCurLevel
  5713.  
  5714.                 ret
  5715.  
  5716. ; End of function sub_9EE6
  5717.  
  5718.  
  5719. ; =============== S U B R O U T I N E =======================================
  5720.  
  5721.  
  5722. sub_9F0D:                               ; CODE XREF: sub_8C20:loc_818F
  5723.                                         ; sub_8C20:loc_8378 ...
  5724. ;show state and help
  5725. ; FUNCTION CHUNK AT 9F5B SIZE 00000018 BYTES
  5726.  
  5727.                 call    sub_842C
  5728.  
  5729.                 ld      de, #1000
  5730.                 ld      hl, aSetUpPosition ; "SET UP POSITION"
  5731.                 ld      a, (byte_D04D)
  5732.                 rra
  5733.                 jr      c, loc_9F5B
  5734.  
  5735.                 push    de
  5736.                 ld      de, #306
  5737.                 call    sub_9F8B
  5738.  
  5739.                 bit     1, b
  5740.                 call    sub_9F73
  5741.  
  5742.                 bit     0, b
  5743.                 call    sub_9F73
  5744.  
  5745.                 call    sub_A177
  5746.  
  5747.                 pop     de
  5748.                 ld      hl, aYourMove   ; "YOUR MOVE"
  5749.                 ld      a, (byte_D0B4)
  5750.                 bit     5, a
  5751.                 jr      nz, PrintGameState ;invisible board?
  5752.  
  5753.                 bit     6, a
  5754.                 jr      z, PrintGameState
  5755.  
  5756.                 ld      hl, aThinking   ; "THINKING"
  5757.  
  5758. ; End of function sub_9F0D
  5759.  
  5760.  
  5761. ; =============== S U B R O U T I N E =======================================
  5762.  
  5763.  
  5764. PrintGameState:                         ; CODE XREF: sub_8C20-62 sub_9F0D+2C ...
  5765.                 ld      bc, (gamestatemsgaddr)
  5766.                 ld      (gamestatemsgaddr), hl
  5767.                 or      a
  5768.                 sbc     hl, bc
  5769.                 ret     z ;не перепечатываем
  5770.                 call    PrintClear1000
  5771.                 ld      hl, (gamestatemsgaddr)
  5772. loc_9F53:                               ; CODE XREF: sub_9F0D+5F sub_9F0D+64
  5773.                 ld      (scr_XY), de
  5774.                 call    PRINT_STR_FF
  5775.  
  5776.                 ret
  5777.  
  5778. ; End of function PrintGameState
  5779.  
  5780. ; ---------------------------------------------------------------------------
  5781. ; START OF FUNCTION CHUNK FOR sub_9F0D
  5782.  
  5783. loc_9F5B:                               ; CODE XREF: sub_9F0D+D
  5784.                 ld      (scr_XY), de
  5785.                 call    PrintGameState
  5786.  
  5787.                 ld      de, #1019
  5788.                 ld      hl, aWhite      ; "WHIT"
  5789.                 ld      a, (byte_D08D)
  5790.                 rla
  5791.                 jr      c, loc_9F53
  5792.  
  5793.                 ld      hl, aBlack      ; "BLAC"
  5794.                 jr      loc_9F53
  5795.  
  5796. ; END OF FUNCTION CHUNK FOR sub_9F0D
  5797.  
  5798. ; =============== S U B R O U T I N E =======================================
  5799.  
  5800.  
  5801. sub_9F73:                               ; CODE XREF: sub_9F0D+18 sub_9F0D+1D
  5802.                 ld      hl, aCyrus      ; "CYRUS"
  5803.                 jr      nz, loc_9F7B
  5804.  
  5805.                 ld      hl, a_PLAYER    ; "PLAYE"
  5806.  
  5807.  
  5808. loc_9F7B:                               ; CODE XREF: sub_9F73+3
  5809.                 ld      (scr_XY), de
  5810.                 call    PRINT_STR_FF
  5811.  
  5812.                 ld      de, (scr_XY)
  5813.                 inc     de
  5814.                 inc     de
  5815.                 inc     de
  5816.                 inc     de
  5817.                 ret
  5818.  
  5819. ; End of function sub_9F73
  5820.  
  5821.  
  5822. ; =============== S U B R O U T I N E =======================================
  5823.  
  5824.  
  5825. sub_9F8B:                               ; CODE XREF: sub_9F0D+13 sub_A177+83
  5826.                 ld      a, (byte_D0B4)
  5827.                 ld      b, 0
  5828.                 rra
  5829.                 ret     c
  5830.                 ld      b, 3
  5831.                 rra
  5832.                 ret     c
  5833.                 dec     b
  5834.                 ld      a, (byte_D0B2)
  5835.                 or      a
  5836.                 ret     z
  5837.                 dec     b
  5838.                 ret
  5839.  
  5840. ; End of function sub_9F8B
  5841.  
  5842.  
  5843. ; =============== S U B R O U T I N E =======================================
  5844.  
  5845.  
  5846. PrintClear1000:                         ; CODE XREF: PrintGameState+B
  5847. ;clear game state on screen
  5848.                 ld      hl, #1000
  5849.                 ld      (scr_XY), hl
  5850. loc_9FA4:                               ; CODE XREF: PrintClear1000+12
  5851.                 ld      hl, a_32spaces  ; "                        "
  5852.                 call    PRINT_STR_FF
  5853.                 ld      a, (scr_XY+1)
  5854.                 cp      #17
  5855.                 ret     z
  5856.                 jr      loc_9FA4
  5857.  
  5858. ; End of function PrintClear1000
  5859. ; =============== S U B R O U T I N E =======================================
  5860.  
  5861.  
  5862. sub_9FB2:                               ; CODE XREF: sub_8C20-94C
  5863. ;добавление хода на экране со скроллом? ; sub_8DE9+4D
  5864.                 ld      a, #FF
  5865.                 ld      (NEED_SCR2BUF), a
  5866.                 call    PrintMoveNumber
  5867.  
  5868.                 ld      l, 6
  5869.                 call    sub_A164
  5870.  
  5871.                 ld      a, (byte_D0C0)
  5872.                 jr      c, loc_9FCB
  5873.  
  5874.                 ld      l, #10
  5875.                 inc     a
  5876.                 ld      (byte_D0C0), a
  5877.                 dec     a
  5878.  
  5879. loc_9FCB:                               ; CODE XREF: sub_9FB2+10
  5880.                 add     a, 6
  5881.                 ld      h, a
  5882.                 push    hl
  5883.                 ld      (scr_XY), hl
  5884.                 ld      hl, buf_10bytes
  5885.                 call    PRINT_STR_FF
  5886.  
  5887.                 pop     hl
  5888.                 ld      de, #B10
  5889.                 or      a
  5890.                 sbc     hl, de
  5891.                 call    z, SCROLL_UP
  5892.  
  5893.                 ld      hl, buf_10bytes
  5894.                 ld      de, txt_buf_6
  5895.                 ld      bc, 6
  5896.                 ldir
  5897.                 ex      de, hl
  5898.                 dec     hl
  5899.                 set     7, (hl)
  5900.                 call    sub_A3D0
  5901.  
  5902.                 ret
  5903.  
  5904. ; End of function sub_9FB2
  5905.  
  5906.  
  5907. ; =============== S U B R O U T I N E =======================================
  5908.  
  5909.  
  5910. sub_9FF5:                               ; CODE XREF: sub_8C20-A12
  5911.                                         ; sub_8C20-A06 ...
  5912.                 push    hl
  5913.                 push    bc
  5914.                 ld      b, #20 ; ' '
  5915.                 ld      l, a
  5916.                 ld      h, BRD_88_0/256
  5917.                 ld      a, (hl)
  5918.                 or      a
  5919.                 jr      z, loc_A01D
  5920.  
  5921.                 ld      l, a
  5922.                 res     2, l
  5923.                 inc     l
  5924.                 inc     h               ; word_D100
  5925.                 ld      a, (hl)
  5926.                 and     #F
  5927.                 ld      b, #4B ; 'K'
  5928.                 jr      z, loc_A01D
  5929.  
  5930.                 ld      b, #20 ; ' '
  5931.                 cp      1
  5932.                 jr      z, loc_A01D
  5933.  
  5934.                 ld      a, (hl)
  5935.                 and     #8F
  5936.                 ld      hl, KING-1
  5937.                 call    sub_8CF7 ;поиск класса фигуры по цене
  5938.  
  5939.                 inc     hl
  5940.                 ld      b, (hl)
  5941.  
  5942.  
  5943. loc_A01D:                               ; CODE XREF: sub_9FF5+9 sub_9FF5+15     ...
  5944.                 ld      a, b
  5945.                 pop     bc
  5946.                 pop     hl
  5947.                 ret
  5948.  
  5949. ; End of function sub_9FF5
  5950.  
  5951.  
  5952. ; =============== S U B R O U T I N E =======================================
  5953.  
  5954.  
  5955. sub_A021:                               ; CODE XREF: sub_A684+36 sub_A684+42
  5956.                 ld      b, a
  5957.                 and     7
  5958.                 add     a, #61 ; 'a'
  5959.                 call    PRINT_LETTER
  5960.  
  5961.                 ld      a, #70 ; 'p'
  5962.                 and     b
  5963.                 rra
  5964.                 rra
  5965.                 rra
  5966.                 rra
  5967.                 neg
  5968.                 add     a, #38 ; '8'
  5969.                 call    PRINT_LETTER
  5970.  
  5971.                 ret
  5972.  
  5973. ; End of function sub_A021
  5974.  
  5975.  
  5976. ; =============== S U B R O U T I N E =======================================
  5977.  
  5978.  
  5979. INIT_PRINT_CLOCKS:                      ; CODE XREF: sub_8C20-B79
  5980.                                         ; sub_8C20-60B ...
  5981.                 ld      hl, aInitClk    ; "00:00:0"
  5982.                 ld      de, CLK_1
  5983.                 ld      bc, 8
  5984.                 ldir
  5985.                 ld      hl, aInitClk    ; "00:00:0"
  5986.                 ld      de, CLK_2
  5987.                 ld      bc, 8
  5988.                 ldir
  5989.                 ld      hl, #405
  5990.                 ld      (scr_XY), hl
  5991.                 ld      hl, aInitClk    ; "00:00:0"
  5992.                 call    PRINT_STR_FF
  5993.  
  5994.                 ld      hl, #40F
  5995.                 ld      (scr_XY), hl
  5996.                 ld      hl, aInitClk    ; "00:00:0"
  5997.                 call    PRINT_STR_FF
  5998.  
  5999.                 call    sub_A228
  6000.  
  6001.                 ret
  6002.  
  6003. ; End of function INIT_PRINT_CLOCKS
  6004.  
  6005.  
  6006. ; =============== S U B R O U T I N E =======================================
  6007.  
  6008.  
  6009. PRINT_CLOCKS_SWAP:                      ; CODE XREF: sub_8C20+1A5E
  6010.                 ld      hl, #405
  6011.                 ld      (scr_XY), hl
  6012.                 ld      hl, CLK_2
  6013.                 ld      de, CLK_1
  6014.                 ld      a, (byte_D0B3) ;d3=swap board
  6015.                 and     8
  6016.                 jr      z, loc_A07E
  6017.  
  6018.                 ex      de, hl
  6019.  
  6020.  
  6021. loc_A07E:                               ; CODE XREF: PRINT_CLOCKS_SWAP+11
  6022.                 push    de
  6023.                 call    PRINT_STR_FF
  6024.  
  6025.                 ld      hl,#40F
  6026.                 ld      (scr_XY), hl
  6027.                 pop     hl
  6028.                 call    PRINT_STR_FF
  6029.  
  6030.                 ret
  6031.  
  6032. ; End of function PRINT_CLOCKS_SWAP
  6033.  
  6034.  
  6035. ; =============== S U B R O U T I N E =======================================
  6036.  
  6037. PrintMoveNumber:                                ; CODE XREF: sub_8C20-AF7 sub_9FB2+5
  6038.                 ld      a, #FF          ; print move # in decimal???
  6039.                 ld      (NEED_SCR2BUF), a
  6040.                 ld      a, (byte_D0C0)
  6041.                 add     a, 6
  6042.                 ld      h, a
  6043.                 ld      l, 0
  6044.                 ld      (scr_XY), hl
  6045.                 ld      a, (byte_D049) ;move #
  6046.                 ld      b, a
  6047.                 ld      a, (byte_D0B4)
  6048.                 bit     5, a
  6049.                 jr      z, loc_A0AF ;visible board?
  6050.  
  6051.                 ld      a, (byte_D0BF)
  6052.                 rra
  6053.                 jr      nc, loc_A0AF
  6054.                 dec     b
  6055. loc_A0AF:                               ; CODE XREF: PrintMoveNumber+19 PrintMoveNumber+1F
  6056.                 ld      a, (byte_D0B7)
  6057.                 cp      b
  6058.                 ret     z
  6059.                 ld      a, b
  6060.                 ld      (byte_D0B7), a
  6061.                 ld      bc, #3000
  6062. loc_A0BB:                               ; CODE XREF: PrintMoveNumber+36
  6063.                 cp      100
  6064.                 jr      c, loc_A0C5
  6065.                 inc     b
  6066.                 inc     c
  6067.                 sub     100
  6068.                 jr      loc_A0BB
  6069. ; ---------------------------------------------------------------------------
  6070. loc_A0C5:                               ; CODE XREF: PrintMoveNumber+30
  6071.                 ex      af, af' ;'
  6072.                 ld      a, b
  6073.                 cp      '0'
  6074.                 jr      nz, loc_A0D3
  6075.  
  6076.                 ld      a, c
  6077.                 or      a
  6078.                 ld      a, '0'
  6079.                 jr      nz, loc_A0D3
  6080.                 ld      a, ' '
  6081. loc_A0D3:                               ; CODE XREF: PrintMoveNumber+3C PrintMoveNumber+42
  6082.                 call    sub_A0F7
  6083.                 ex      af, af' ;'
  6084.                 ld      b, '0'
  6085. loc_A0D9:                               ; CODE XREF: PrintMoveNumber+54
  6086.                 cp      10
  6087.                 jr      c, loc_A0E3
  6088.                 inc     b
  6089.                 inc     c
  6090.                 sub     10
  6091.                 jr      loc_A0D9
  6092. ; ---------------------------------------------------------------------------
  6093. loc_A0E3:                               ; CODE XREF: PrintMoveNumber+4E
  6094.                 ex      af, af' ;'
  6095.                 ld      a, b
  6096.                 cp      '0'
  6097.                 jr      nz, loc_A0F1
  6098.                 ld      a, c
  6099.                 or      a
  6100.                 ld      a, '0'
  6101.                 jr      nz, loc_A0F1
  6102.                 ld      a, ' '
  6103. loc_A0F1:                               ; CODE XREF: PrintMoveNumber+5A PrintMoveNumber+60
  6104.                 call    sub_A0F7
  6105.                 ex      af, af' ;'
  6106.                 add     a, '0'
  6107. ; End of function PrintMoveNumber
  6108. ; =============== S U B R O U T I N E =======================================
  6109. sub_A0F7:                               ; CODE XREF: PrintMoveNumber:loc_A0D3
  6110.                                         ; PrintMoveNumber:loc_A0F1
  6111.                 push    af
  6112.                 call    PRINT_LETTER
  6113.  
  6114.                 ld      a, (byte_D0E1)
  6115.                 cp      3
  6116.                 jr      nc, loc_A102 ;???
  6117. loc_A102:                               ; CODE XREF: sub_A0F7+9
  6118.                 pop     af
  6119.                 ret
  6120. ; End of function sub_A0F7
  6121. ; =============== S U B R O U T I N E =======================================
  6122.  
  6123.  
  6124. SCROLL_UP:                              ; CODE XREF: sub_9FB2+2D
  6125.                 di
  6126.                 ld      hl,  SCR_BUF_6400+#C0
  6127.                 ld      a, (SEL_SCRorBUF)
  6128.                 or      a
  6129.                 jr      z, loc_A111
  6130.                 ld      hl,  SCREEN+#C0
  6131. loc_A111:                               ; CODE XREF: SCROLL_UP+8
  6132.                 ld      a, 5
  6133.                 ex      af, af' ;'
  6134.  
  6135. loc_A114:                               ; CODE XREF: SCROLL_UP+34
  6136.                 ld      a, #20 ; ' '
  6137.                 add     a, l
  6138.                 ld      e, a
  6139.                 ld      a, h
  6140.                 jr      nc, loc_A11D
  6141.                 add     a, 8
  6142. loc_A11D:                               ; CODE XREF: SCROLL_UP+15
  6143.                 ld      d, a            ; DE is 1 char lower than HL
  6144.                 push    de
  6145.                 ld      c, 8
  6146. loc_A121:                               ; CODE XREF: SCROLL_UP+2C
  6147.                 push    hl
  6148.                 push    de
  6149.                 ld      b, #20
  6150. loc_A125:                               ; CODE XREF: SCROLL_UP+25
  6151.                 ld      a, (de)
  6152.                 ld      (hl), a
  6153.                 inc     hl
  6154.                 inc     de
  6155.                 djnz    loc_A125
  6156.  
  6157.                 pop     de
  6158.                 pop     hl
  6159.                 inc     h
  6160.                 inc     d
  6161.                 dec     c
  6162.                 jr      nz, loc_A121
  6163.  
  6164.                 pop     hl
  6165.                 ex      af, af' ;'
  6166.                 dec     a
  6167.                 jr      z, loc_A13A
  6168.  
  6169.                 ex      af, af' ;'
  6170.                 jr      loc_A114
  6171.  
  6172. ; ---------------------------------------------------------------------------
  6173.  
  6174. loc_A13A:                               ; CODE XREF: SCROLL_UP+31
  6175.                 ld      c, 8
  6176. loc_A13C:                               ; CODE XREF: SCROLL_UP+43
  6177.                 push    hl
  6178.                 ld      b, #20
  6179.                 xor     a
  6180. loc_A140:                               ; CODE XREF: SCROLL_UP+3E
  6181.                 ld      (hl), a
  6182.                 inc     hl
  6183.                 djnz    loc_A140
  6184.  
  6185.                 pop     hl
  6186.                 inc     h
  6187.                 dec     c
  6188.                 jr      nz, loc_A13C
  6189.  
  6190.                 ld      a, 5
  6191.                 ld      (byte_D0C0), a
  6192.                 ei
  6193.                 ret
  6194.  
  6195. ; End of function SCROLL_UP
  6196.  
  6197.  
  6198. ; =============== S U B R O U T I N E =======================================
  6199.  
  6200.  
  6201. sub_A150:                               ; CODE XREF: sub_8C20-676
  6202.                                         ; sub_9018+4B
  6203.                 call    sub_A164
  6204.  
  6205.                 ld      a, (byte_D0B3) ;d3=swap board
  6206.                 jr      c, loc_A15E
  6207.  
  6208.                 and     8
  6209.                 jr      nz, loc_A162
  6210.  
  6211.  
  6212. loc_A15C:                               ; CODE XREF: sub_A150+10
  6213.                 or      a
  6214.                 ret
  6215.  
  6216. ; ---------------------------------------------------------------------------
  6217.  
  6218. loc_A15E:                               ; CODE XREF: sub_A150+6
  6219.                 and     8
  6220.                 jr      nz, loc_A15C
  6221.  
  6222.  
  6223. loc_A162:                               ; CODE XREF: sub_A150+A
  6224.                 scf
  6225.                 ret
  6226.  
  6227. ; End of function sub_A150
  6228.  
  6229.  
  6230. ; =============== S U B R O U T I N E =======================================
  6231.  
  6232.  
  6233. sub_A164:                               ; CODE XREF: sub_9018+12 sub_954C ...
  6234.                 ld      a, (byte_D0BF)
  6235.                 rra
  6236.                 ld      a, (byte_D0B4)
  6237.                 bit     5, a
  6238.                 jr      c, loc_A173
  6239.  
  6240.                 jr      nz, loc_A175 ;invisible board?
  6241.  
  6242. loc_A171:                               ; CODE XREF: sub_A164:loc_A173
  6243.                 or      a
  6244.                 ret
  6245.  
  6246. ; ---------------------------------------------------------------------------
  6247.  
  6248. loc_A173:                               ; CODE XREF: sub_A164+9
  6249.                 jr      nz, loc_A171
  6250.  
  6251.  
  6252. loc_A175:                               ; CODE XREF: sub_A164+B
  6253.                 scf
  6254.                 ret
  6255.  
  6256. ; End of function sub_A164
  6257.  
  6258.  
  6259. ; =============== S U B R O U T I N E =======================================
  6260.  
  6261.  
  6262. sub_A177:                               ; CODE XREF: HotKeys+254
  6263.                                         ; sub_9F0D+20
  6264.  
  6265. ; FUNCTION CHUNK AT A1F1 SIZE 00000037 BYTES
  6266.  
  6267.                 call    SHOW_LOGO
  6268.  
  6269.                 ld      hl, #B00
  6270.                 ld      (scr_XY), hl
  6271.                 ld      hl, aPress      ; " PRESS"
  6272.                 call    PRINT_STR_scr0
  6273.  
  6274.                 ld      hl, SCR_ATTRS
  6275.                 ld      a, (SEL_SCRorBUF)
  6276.                 or      a
  6277.                 jr      z, loc_A193
  6278.  
  6279.                 ld      de, #2400
  6280.                 add     hl, de
  6281.  
  6282.  
  6283. loc_A193:                               ; CODE XREF: sub_A177+16
  6284.                 ld      e, 1
  6285.                 call    sub_A24B
  6286.  
  6287.                 ld      hl,  SCR_ATTRS+#100
  6288.                 ld      a, (SEL_SCRorBUF)
  6289.                 or      a
  6290.                 jr      z, loc_A1A5
  6291.  
  6292.                 ld      de, #2400
  6293.                 add     hl, de
  6294.  
  6295.  
  6296. loc_A1A5:                               ; CODE XREF: sub_A177+28
  6297.                 ld      a, (byte_D0B3) ;d3=swap board
  6298.                 ld      e, 0
  6299.                 and     8
  6300.                 jr      z, loc_A1B0
  6301.  
  6302.                 ld      e, 7
  6303.  
  6304.  
  6305. loc_A1B0:                               ; CODE XREF: sub_A177+35
  6306.                 call    sub_A24B
  6307.  
  6308.                 ld      hl,  SCR_ATTRS+#200
  6309.                 ld      a, (SEL_SCRorBUF)
  6310.                 or      a
  6311.                 jr      z, loc_A1C0
  6312.  
  6313.                 ld      de, #2400
  6314.                 add     hl, de
  6315.  
  6316.  
  6317. loc_A1C0:                               ; CODE XREF: sub_A177+43
  6318.                 ld      a, (byte_D0B3) ;d3=swap board
  6319.                 ld      e, 7
  6320.                 and     8
  6321.                 jr      z, loc_A1CB
  6322.  
  6323.                 ld      e, 0
  6324.  
  6325.  
  6326. loc_A1CB:                               ; CODE XREF: sub_A177+50
  6327.                 call    sub_A24B
  6328.  
  6329.                 ld      hl, #800
  6330.                 ld      b, 3
  6331.                 call    sub_A1E0
  6332.  
  6333.                 ld      hl, #1000
  6334.                 ld      b, 3
  6335.                 call    sub_A1E0
  6336.  
  6337.                 jr      loc_A1F1
  6338.  
  6339. ; End of function sub_A177
  6340.  
  6341.  
  6342. ; =============== S U B R O U T I N E =======================================
  6343.  
  6344.  
  6345. sub_A1E0:                               ; CODE XREF: sub_A177+5C sub_A177+64 ...
  6346.                 push    bc
  6347.                 push    hl
  6348.                 ld      (scr_XY), hl
  6349.                 ld      hl, a_8spaces   ; "       "
  6350.                 call    PRINT_STR_scr0
  6351.  
  6352.                 pop     hl
  6353.                 inc     h
  6354.                 pop     bc
  6355.                 djnz    sub_A1E0
  6356.  
  6357.                 ret
  6358.  
  6359. ; End of function sub_A1E0
  6360.  
  6361. ; ---------------------------------------------------------------------------
  6362. ; START OF FUNCTION CHUNK FOR sub_A177
  6363.  
  6364. loc_A1F1:                               ; CODE XREF: sub_A177+67
  6365.                 call    sub_A228
  6366.  
  6367.                 ld      hl, #801
  6368.                 ld      (scr_XY), hl
  6369.                 call    sub_9F8B
  6370.  
  6371.                 ld      hl, aCyrus      ; "CYRUS"
  6372.                 bit     1, b
  6373.                 jr      nz, loc_A207
  6374.  
  6375.                 ld      hl, a_PLAYER    ; "PLAYE"
  6376.  
  6377.  
  6378. loc_A207:                               ; CODE XREF: sub_A177+8B
  6379.                 ld      de, aCyrus      ; "CYRUS"
  6380.                 bit     0, b
  6381.                 jr      nz, loc_A211
  6382.  
  6383.                 ld      de, a_PLAYER    ; "PLAYE"
  6384.  
  6385.  
  6386. loc_A211:                               ; CODE XREF: sub_A177+95
  6387.                 ld      a, (byte_D0B3) ;d3=swap board
  6388.                 and     8
  6389.                 jr      nz, loc_A219
  6390.  
  6391.                 ex      de, hl
  6392.  
  6393.  
  6394. loc_A219:                               ; CODE XREF: sub_A177+9F
  6395.                 push    de
  6396.                 call    PRINT_STR_scr0
  6397.  
  6398.                 ld      hl, #1001
  6399.                 ld      (scr_XY), hl
  6400.                 pop     hl
  6401.                 call    PRINT_STR_scr0
  6402.  
  6403.                 ret
  6404.  
  6405. ; END OF FUNCTION CHUNK FOR sub_A177
  6406.  
  6407. ; =============== S U B R O U T I N E =======================================
  6408.  
  6409.  
  6410. sub_A228:                               ; CODE XREF: INIT_PRINT_CLOCKS+2E
  6411.                                         ; sub_A177:loc_A1F1
  6412.                 ld      hl, #900
  6413.                 ld      (scr_XY), hl
  6414.                 ld      hl,  CLK_2+1
  6415.                 ld      de,  CLK_1+1
  6416.                 ld      a, (byte_D0B3) ;d3=swap board
  6417.                 and     8
  6418.                 jr      z, loc_A23C
  6419.  
  6420.                 ex      de, hl
  6421.  
  6422.  
  6423. loc_A23C:                               ; CODE XREF: sub_A228+11
  6424.                 push    de
  6425.                 call    PRINT_STR_scr0
  6426.  
  6427.                 ld      hl, #1100
  6428.                 ld      (scr_XY), hl
  6429.                 pop     hl
  6430.                 call    PRINT_STR_scr0
  6431.  
  6432.                 ret
  6433.  
  6434. ; End of function sub_A228
  6435.  
  6436.  
  6437. ; =============== S U B R O U T I N E =======================================
  6438.  
  6439.  
  6440. sub_A24B:                               ; CODE XREF: sub_A177+1E
  6441.                                         ; sub_A177:loc_A1B0 ...
  6442.                 ld      b, 3
  6443.  
  6444.  
  6445. loc_A24D:                               ; CODE XREF: sub_A24B:loc_A25F
  6446.                 ld      c, 8
  6447.  
  6448.  
  6449. loc_A24F:                               ; CODE XREF: sub_A24B+B
  6450.                 ld      a, (hl)
  6451.                 and     #F8 ; 'ш'
  6452.                 or      e
  6453.                 ld      (hl), a
  6454.                 inc     hl
  6455.                 dec     c
  6456.                 jr      nz, loc_A24F
  6457.  
  6458.                 ld      a, #18
  6459.                 add     a, l
  6460.                 ld      l, a
  6461.                 jr      nc, loc_A25F
  6462.  
  6463.                 inc     h
  6464.  
  6465.  
  6466. loc_A25F:                               ; CODE XREF: sub_A24B+11
  6467.                 djnz    loc_A24D
  6468.  
  6469.                 ret
  6470.  
  6471. ; End of function sub_A24B
  6472.  
  6473.  
  6474. ; =============== S U B R O U T I N E =======================================
  6475.  
  6476.  
  6477. sub_A262:                               ; CODE XREF: sub_8C20:loc_80CE
  6478.                                         ; sub_87CD
  6479.                 ld      a, #20 ; ' '
  6480.                 ld      b, 8
  6481.                 ld      hl, unk_637C
  6482.  
  6483.  
  6484. loc_A269:                               ; CODE XREF: sub_A262+9
  6485.                 inc     hl
  6486.                 ld      (hl), a
  6487.                 djnz    loc_A269
  6488.  
  6489.                 set     7, (hl)
  6490.                 ret
  6491.  
  6492. ; End of function sub_A262
  6493.  
  6494.  
  6495. ; =============== S U B R O U T I N E =======================================
  6496.  
  6497.  
  6498. PRT_DETECT:                             ; CODE XREF: START_POINT+8A
  6499.                 xor     a
  6500.                 ld      (byte_D0E1), a
  6501.                 ld      hl, PRTD_no_serial
  6502.                 push    hl
  6503.                 ld      (bas_ERRSP), sp
  6504.  
  6505.                 ;rst    8               ; somehow jumps to pushed address (loc_A28E)
  6506.                 ;db     #31
  6507.                  call PRTD_no_serial
  6508.  
  6509.                 ld      hl, #C
  6510.                 ld      (word_5CC3), hl
  6511.                 ld      a, #39 ; '9'
  6512.                 ld      (baudrate_NUM), a
  6513.                 pop     af
  6514.                 ld      a, 4            ; serial printer bit
  6515.                  ret ;jr        loc_A28F
  6516.  
  6517. ; ---------------------------------------------------------------------------
  6518.  
  6519. PRTD_no_serial:                         ; DATA XREF: PRT_DETECT+4
  6520.                 xor     a
  6521.  
  6522. loc_A28F:                               ; CODE XREF: PRT_DETECT+1C
  6523.                 ld      hl, CFG_BITS
  6524.                 ld      (hl), a
  6525.                 ld      b, 0
  6526.  
  6527. PRTD_detect_zxprt:                      ; CODE XREF: PRT_DETECT+2A
  6528.                 ld a,0xff;in    a, (#FB)
  6529.                 and     #40 ; '@'       ; D6=0 -- zx printer is present
  6530.                 ret     nz
  6531.                 djnz    PRTD_detect_zxprt
  6532.  
  6533.                 set     3, (hl)         ; zx printer bit
  6534.                 ret
  6535.  
  6536. ; End of function PRT_DETECT
  6537.  
  6538. ; ---------------------------------------------------------------------------
  6539. ; START OF FUNCTION CHUNK FOR sub_8C20
  6540.  
  6541. loc_A29F:                               ; CODE XREF: sub_8C20-863
  6542.                                         ; sub_8C20+16FA ...
  6543.                 call    UnDrawMoveAndCursors
  6544.  
  6545.                 ld      a, #FF
  6546.                 ld      (NEED_SCR2BUF), a
  6547.                 ld      a, (SEL_SCRorBUF)
  6548.                 or      a
  6549.                 call    z, sub_95C5
  6550.  
  6551.                 ld      a, (CFG_BITS)
  6552.                 and     #C
  6553.                 jp      z, loc_82EB
  6554.  
  6555.                 ld      de, #1000
  6556.                 ld      hl, aZZxPrinterPSer ; " Z-ZX PRINTER    P-SERIAL"
  6557.                 call    PrintGameState
  6558.  
  6559.                 ld      a, (CFG_BITS)
  6560.                 ld      c, a
  6561.                 ld      hl, #1000
  6562.                 bit     0, c
  6563.                 call    sub_A3C3
  6564.  
  6565.                 ld      l, #10
  6566.                 bit     1, c
  6567.                 call    sub_A3C3
  6568.  
  6569.                 ld      hl, #1200
  6570.                 bit     4, c
  6571.                 call    sub_A3C3
  6572.  
  6573.  
  6574. loc_A2DA:                               ; CODE XREF: sub_8C20+16E9
  6575.                                         ; sub_8C20+16F5 ...
  6576.                 call    sub_907E
  6577.  
  6578.                 jp      c, loc_82EB
  6579.  
  6580.                 res     5, a
  6581.                 ld      hl, CFG_BITS
  6582.                 cp      #5A ; 'Z'
  6583.                 jp      z, loc_A318
  6584.  
  6585.                 cp      #50 ; 'P'
  6586.                 jp      z, loc_A325
  6587.  
  6588.                 cp      #4F ; 'O'
  6589.                 jp      z, loc_A35A
  6590.  
  6591.                 cp      #47 ; 'G'
  6592.                 jp      z, loc_A33C
  6593.  
  6594.                 cp      #42 ; 'B'
  6595.                 jp      z, loc_A306
  6596.  
  6597.                 cp      #43 ; 'C'
  6598.                 jp      z, loc_A34D
  6599.  
  6600.                 jp      loc_82EB
  6601.  
  6602. ; ---------------------------------------------------------------------------
  6603.  
  6604. loc_A306:                               ; CODE XREF: sub_8C20+16DB
  6605.                 ld      a, (hl)
  6606.                 and     3
  6607.                 jr      z, loc_A2DA
  6608.  
  6609.                 set     5, (hl)
  6610.                 call    sub_94C9
  6611.  
  6612.                 ld      hl, CFG_BITS
  6613.                 res     5, (hl)
  6614.                 jp      loc_A2DA
  6615.  
  6616. ; ---------------------------------------------------------------------------
  6617.  
  6618. loc_A318:                               ; CODE XREF: sub_8C20+16C7
  6619.                 bit     3, (hl)
  6620.                 jp      z, loc_A29F
  6621.  
  6622.                 ld      a, (hl)
  6623.                 and     #FD ; 'э'
  6624.                 xor     1
  6625.                 ld      (hl), a
  6626.                 jr      loc_A330
  6627.  
  6628. ; ---------------------------------------------------------------------------
  6629.  
  6630. loc_A325:                               ; CODE XREF: sub_8C20+16CC
  6631.                 bit     2, (hl)
  6632.                 jp      z, loc_A29F
  6633.  
  6634.                 ld      a, (hl)
  6635.                 and     #FE ; 'ю'
  6636.                 xor     2
  6637.                 ld      (hl), a
  6638.  
  6639.  
  6640. loc_A330:                               ; CODE XREF: sub_8C20+1703
  6641.                 and     3
  6642.                 jp      nz, loc_A29F
  6643.  
  6644.                 ld      a, (hl)
  6645.                 and     #CF ; 'П'
  6646.                 ld      (hl), a
  6647.                 jp      loc_A29F
  6648.  
  6649. ; ---------------------------------------------------------------------------
  6650.  
  6651. loc_A33C:                               ; CODE XREF: sub_8C20+16D6
  6652.                 ld      a, (hl)
  6653.                 and     3
  6654.                 jr      z, loc_A2DA
  6655.  
  6656.                 set     5, (hl)
  6657.                 ld      hl, (word_D0F7)
  6658.                 inc     hl
  6659.                 ld      (word_D0F7), hl
  6660.                 jp      loc_8A32
  6661.  
  6662. ; ---------------------------------------------------------------------------
  6663.  
  6664. loc_A34D:                               ; CODE XREF: sub_8C20+16E0
  6665.                 ld      a, (hl)
  6666.                 and     3
  6667.                 jp      z, loc_A29F
  6668.  
  6669.                 ld      a, (hl)
  6670.                 xor     #10
  6671.                 ld      (hl), a
  6672.                 jp      loc_A29F
  6673.  
  6674. ; ---------------------------------------------------------------------------
  6675.  
  6676. loc_A35A:                               ; CODE XREF: sub_8C20+16D1
  6677.                                         ; sub_8C20+1777 ...
  6678.                 ld      hl, aSelectBaudRate ; "SELECT BAUD RATE:-"
  6679.                 ld      de, #1000
  6680.                 call    PrintGameState
  6681.  
  6682.                 ld      a, (CFG_BITS)
  6683.                 ld      hl,#140B
  6684.                 and     #40 ; '@'
  6685.                 call    sub_A3C3
  6686.  
  6687.                 ld      hl, #1014
  6688.                 ld      (scr_XY), hl
  6689.                 ld      a, (baudrate_NUM)
  6690.                 call    PRINT_LETTER
  6691.  
  6692.                 call    sub_907E
  6693.  
  6694.                 jp      c, loc_A29F
  6695.  
  6696.                 cp      #31 ; '1'
  6697.                 jp      c, loc_A29F
  6698.  
  6699.                 cp      #3A ; ':'
  6700.                 jr      c, loc_A399
  6701.  
  6702.                 res     5, a
  6703.                 cp      #43 ; 'C'
  6704.                 jp      nz, loc_A29F
  6705.  
  6706.                 ld      hl, CFG_BITS
  6707.                 ld      a, (hl)
  6708.                 xor     #40 ; '@'
  6709.                 ld      (hl), a
  6710.                 jr      loc_A35A
  6711.  
  6712. ; ---------------------------------------------------------------------------
  6713.  
  6714. loc_A399:                               ; CODE XREF: sub_8C20+1767
  6715.                 ld      (baudrate_NUM), a
  6716.                 sub     #31 ; '1'
  6717.                 add     a, a
  6718.                 ld      hl, baud_rates
  6719.                 add     a, l
  6720.                 ld      l, a
  6721.                 jr      nc, loc_A3A7
  6722.  
  6723.                 inc     h
  6724.  
  6725.  
  6726. loc_A3A7:                               ; CODE XREF: sub_8C20+1784
  6727.                 ld      e, (hl)
  6728.                 inc     hl
  6729.                 ld      d, (hl)
  6730.                 ld      (word_5CC3), de
  6731.                 jp      loc_A35A
  6732.  
  6733. ; END OF FUNCTION CHUNK FOR sub_8C20
  6734. ; ---------------------------------------------------------------------------
  6735. baud_rates:     dw #A82         ; DATA XREF: sub_8C20+177F
  6736.                 dw #4C5
  6737.                 dw #1BE
  6738.                 dw #DE
  6739.                 dw #6E
  6740.                 dw #36
  6741.                 dw #1A
  6742.                 dw #C
  6743.                 dw 5
  6744.  
  6745. ; =============== S U B R O U T I N E =======================================
  6746.  
  6747.  
  6748. sub_A3C3:                               ; CODE XREF: sub_8C20+16A8
  6749.                                         ; sub_8C20+16AF ...
  6750.                 ld      (scr_XY), hl
  6751.                 ld      a, #20 ; ' '
  6752.                 jr      z, loc_A3CC
  6753.  
  6754.                 ld      a, #2A ; '*'
  6755.  
  6756.  
  6757. loc_A3CC:                               ; CODE XREF: sub_A3C3+5
  6758.                 call    PRINT_LETTER
  6759.  
  6760.                 ret
  6761.  
  6762. ; End of function sub_A3C3
  6763.  
  6764.  
  6765. ; =============== S U B R O U T I N E =======================================
  6766.  
  6767.  
  6768. sub_A3D0:                               ; CODE XREF: sub_9FB2+3F
  6769.                 call    sub_A4C2
  6770.  
  6771.                 ret     nc
  6772.                 ld      c, 6
  6773.                 call    sub_A164
  6774.  
  6775.                 jr      c, loc_A3E0
  6776.  
  6777.                 ld      c, #10
  6778.                 jp      loc_A437
  6779.  
  6780. ; ---------------------------------------------------------------------------
  6781.  
  6782. loc_A3E0:                               ; CODE XREF: sub_A3D0+9
  6783.                 ld      a, (byte_D049) ;move #
  6784.                 ld      b, a
  6785.                 ld      a, (byte_D0B4)
  6786.                 bit     5, a
  6787.                 jr      z, loc_A3F2 ;visible board?
  6788.  
  6789.                 ld      a, (byte_D0BF)
  6790.                 rra
  6791.                 jr      nc, loc_A3F2
  6792.  
  6793.                 dec     b
  6794.  
  6795. loc_A3F2:                               ; CODE XREF: sub_A3D0+19 sub_A3D0+1F
  6796.                 push    bc
  6797.                 ld      a, b
  6798.                 ld      bc, #3000
  6799.  
  6800.  
  6801. loc_A3F7:                               ; CODE XREF: sub_A3D0+2F
  6802.                 cp      #64 ; 'd'
  6803.                 jr      c, loc_A401
  6804.  
  6805.                 inc     b
  6806.                 inc     c
  6807.                 sub     #64 ; 'd'
  6808.                 jr      loc_A3F7
  6809.  
  6810. ; ---------------------------------------------------------------------------
  6811.  
  6812. loc_A401:                               ; CODE XREF: sub_A3D0+29
  6813.                 ex      af, af' ;'
  6814.                 ld      a, b
  6815.                 cp      #30 ; '0'
  6816.                 jr      nz, loc_A40F
  6817.  
  6818.                 ld      a, c
  6819.                 or      a
  6820.                 ld      a, #30 ; '0'
  6821.                 jr      nz, loc_A40F
  6822.  
  6823.                 ld      a, #20 ; ' '
  6824.  
  6825.  
  6826. loc_A40F:                               ; CODE XREF: sub_A3D0+35 sub_A3D0+3B
  6827.                 call    loc_A476
  6828.  
  6829.                 ex      af, af' ;'
  6830.                 ld      b, #30 ; '0'
  6831.  
  6832.  
  6833. loc_A415:                               ; CODE XREF: sub_A3D0+4D
  6834.                 cp      #A
  6835.                 jr      c, loc_A41F
  6836.  
  6837.                 inc     b
  6838.                 inc     c
  6839.                 sub     #A
  6840.                 jr      loc_A415
  6841.  
  6842. ; ---------------------------------------------------------------------------
  6843.  
  6844. loc_A41F:                               ; CODE XREF: sub_A3D0+47
  6845.                 ex      af, af' ;'
  6846.                 ld      a, b
  6847.                 cp      #30 ; '0'
  6848.                 jr      nz, loc_A42D
  6849.  
  6850.                 ld      a, c
  6851.                 or      a
  6852.                 ld      a, #30 ; '0'
  6853.                 jr      nz, loc_A42D
  6854.  
  6855.                 ld      a, #20 ; ' '
  6856.  
  6857.  
  6858. loc_A42D:                               ; CODE XREF: sub_A3D0+53 sub_A3D0+59
  6859.                 call    loc_A476
  6860.  
  6861.                 ex      af, af' ;'
  6862.                 add     a, #30 ; '0'
  6863.                 call    loc_A476
  6864.  
  6865.                 pop     bc
  6866.  
  6867.  
  6868. loc_A437:                               ; CODE XREF: sub_A3D0+D
  6869.                 call    sub_A454
  6870.  
  6871.                 jr      sub_A43C
  6872.  
  6873. ; End of function sub_A3D0
  6874.  
  6875.  
  6876. ; =============== S U B R O U T I N E =======================================
  6877.  
  6878.  
  6879. sub_A43C:                               ; CODE XREF: sub_8C20-B48
  6880.                                         ; sub_8C20-B3A ...
  6881.                 ld      a, #D
  6882.                 call    loc_A476
  6883.  
  6884.                 xor     a
  6885.                 ld      (byte_D0E1), a
  6886.                 ld      a, (CFG_BITS)
  6887.                 bit     6, a
  6888.                 ret     z
  6889.                 bit     0, a
  6890.                 ld      a, #A
  6891.                 ret     nz
  6892.                 call    loc_A476
  6893.  
  6894.                 ret
  6895.  
  6896. ; End of function sub_A43C
  6897.  
  6898.  
  6899. ; =============== S U B R O U T I N E =======================================
  6900.  
  6901.  
  6902. sub_A454:                               ; CODE XREF: sub_A3D0:loc_A437
  6903.                 call    sub_A466
  6904.  
  6905.                 ld      hl, buf_10bytes
  6906.  
  6907. ; End of function sub_A454
  6908.  
  6909.  
  6910. ; =============== S U B R O U T I N E =======================================
  6911.  
  6912.  
  6913. sub_A45A:                               ; CODE XREF: sub_8C20-72 sub_A45A+9
  6914.                 ld      a, (hl)
  6915.                 and     #7F ; ''
  6916.                 call    loc_A476
  6917.  
  6918.                 bit     7, (hl)
  6919.                 inc     hl
  6920.                 jr      z, sub_A45A
  6921.  
  6922.                 ret
  6923.  
  6924. ; End of function sub_A45A
  6925.  
  6926.  
  6927. ; =============== S U B R O U T I N E =======================================
  6928.  
  6929.  
  6930. sub_A466:                               ; CODE XREF: sub_A454
  6931.                 call    sub_A4C2
  6932.  
  6933.                 ret     nc
  6934.  
  6935.  
  6936. loc_A46A:                               ; CODE XREF: sub_A466+E
  6937.                 ld      a, (byte_D0E1)
  6938.                 cp      c
  6939.                 ret     z
  6940.                 ld      a, #20 ; ' '
  6941.                 call    loc_A476
  6942.  
  6943.                 jr      loc_A46A
  6944.  
  6945. ; End of function sub_A466
  6946.  
  6947. ; ---------------------------------------------------------------------------
  6948.  
  6949. loc_A476:                               ; CODE XREF: sub_8C20-B40
  6950.                                         ; sub_94C9+21   ...
  6951.                 call    sub_A4C2
  6952.  
  6953.                 ret     nc
  6954.                 push    bc
  6955.                 push    de
  6956.                 push    hl
  6957.                 ld      hl, byte_D0E1
  6958.                 inc     (hl)
  6959.                 exx
  6960.                 push    bc
  6961.                 push    de
  6962.                 push    hl
  6963.                 push    ix
  6964.                 push    iy
  6965.                 ex      af, af' ;'
  6966.                 push    af
  6967.                 ex      af, af' ;'
  6968.                 ld      hl, loc_A4A7
  6969.                 push    hl
  6970.                 ld      (bas_ERRSP), sp
  6971.                 ld      iy, #5C3A
  6972.                 ld      hl, CFG_BITS
  6973.                 bit     0, (hl)
  6974.                 ;jr     nz, loc_A4A3
  6975.  
  6976.                 ;rst    8 ;to printer?
  6977.                 ;db     #1E,#18,#01
  6978.                 ds 4
  6979.  
  6980. loc_A4A3:                               ; CODE XREF: RAM:A49D
  6981.                 call rst10 ;rst #10 ;to screen
  6982.  
  6983.                 pop     hl
  6984.                 jr      loc_A4B1
  6985.  
  6986. ; ---------------------------------------------------------------------------
  6987.  
  6988. loc_A4A7:                               ; DATA XREF: RAM:A48C
  6989.                 ld      a, (CFG_BITS)
  6990.                 res     4, a
  6991.                 res     5, a
  6992.                 ld      (CFG_BITS), a
  6993.  
  6994.  
  6995. loc_A4B1:                               ; CODE XREF: RAM:A4A5
  6996.                 call    SET_BRD_COLOR
  6997.  
  6998.                 pop     af
  6999.                 ex      af, af' ;'
  7000.                 pop     iy
  7001.                 pop     ix
  7002.                 pop     hl
  7003.                 pop     de
  7004.                 pop     bc
  7005.                 exx
  7006.                 pop     hl
  7007.                 pop     de
  7008.                 pop     bc
  7009.                 ret
  7010.  
  7011.  
  7012. ; =============== S U B R O U T I N E =======================================
  7013.  
  7014.  
  7015. sub_A4C2:                               ; CODE XREF: sub_A3D0   sub_A466 ...
  7016.                 push    af
  7017.                 push    de
  7018.                 push    hl
  7019.                 ld      a, (CFG_BITS)
  7020.                 and     #30 ; '0'
  7021.                 jr      z, loc_A4EA
  7022.  
  7023.                 ld      a, (byte_D0B4)
  7024.                 bit     5, a
  7025.                 jr      nz, loc_A4EF ;invisible board?
  7026.  
  7027.                 ld      hl, (word_D09F)
  7028.                 ld      a, h
  7029.                 or      l
  7030.                 jr      z, loc_A4EF
  7031.  
  7032.                 ld      de, (word_D0F7)
  7033.                 or      a
  7034.                 sbc     hl, de
  7035.                 jr      z, loc_A4EF
  7036.  
  7037.                 ld      a, (CFG_BITS)
  7038.                 bit     5, a
  7039.                 jr      nz, loc_A4EF
  7040.  
  7041.  
  7042. loc_A4EA:                               ; CODE XREF: sub_A4C2+8
  7043.                 pop     hl
  7044.                 pop     de
  7045.                 pop     af
  7046.                 or      a
  7047.                 ret
  7048.  
  7049. ; ---------------------------------------------------------------------------
  7050.  
  7051. loc_A4EF:                               ; CODE XREF: sub_A4C2+F sub_A4C2+16     ...
  7052.                 pop     hl
  7053.                 pop     de
  7054.                 pop     af
  7055.                 scf
  7056.                 ret
  7057.  
  7058. ; End of function sub_A4C2
  7059.  
  7060. ; ---------------------------------------------------------------------------
  7061. ; START OF FUNCTION CHUNK FOR sub_8C20
  7062.  
  7063. loc_A4F4:                               ; CODE XREF: sub_8C20-868
  7064.                 call    UnDrawMoveAndCursors
  7065.  
  7066.                 ld      a, #FF
  7067.                 ld      (NEED_SCR2BUF), a
  7068.                 ld      a, (SEL_SCRorBUF)
  7069.                 or      a
  7070.                 call    z, sub_95C5
  7071.  
  7072.                 ld      de, #1000
  7073.                 ld      hl, aSSaveRecordLLo ; "S- Save record   L- Load record"
  7074.                 call    PrintGameState
  7075.  
  7076.                 ld      hl, loc_A671
  7077.                 push    hl
  7078.                 ld      (bas_ERRSP), sp
  7079.                 call    sub_907E
  7080.  
  7081.                 jr      c, loc_A525
  7082.  
  7083.                 and     #5F
  7084.                 cp      'L'
  7085.                 jp      z, loc_A5D9 ;Load
  7086.  
  7087.                 cp      'S'
  7088.                 jp      z, loc_A596 ;Save
  7089.  
  7090. loc_A525:                               ; CODE XREF: sub_8C20+18F7
  7091.                 pop     hl
  7092.                 jp      loc_82EB
  7093.  
  7094. ; END OF FUNCTION CHUNK FOR sub_8C20
  7095.  
  7096. ; =============== S U B R O U T I N E =======================================
  7097.  
  7098.  
  7099. SAVE_RECORD:                            ; CODE XREF: sub_8C20+197F
  7100.                                         ; sub_8C20:fool_name
  7101.                 ld      a, #FF
  7102.                 ld      (SEL_SCRorBUF), a
  7103.                 ld      hl, #1305
  7104.                 ld      (scr_XY), hl
  7105.                 ld      hl,  TAPE_header+#10
  7106.                 ld      b, #10
  7107.  
  7108.  
  7109. loc_A539:                               ; CODE XREF: SAVE_RECORD+13
  7110.                 ld      (hl), #20 ; ' '
  7111.                 dec     hl
  7112.                 djnz    loc_A539
  7113.  
  7114.                 ld      (hl), 9
  7115.  
  7116.  
  7117. loc_A540:                               ; CODE XREF: SAVE_RECORD+28
  7118.                                         ; SAVE_RECORD+42 ...
  7119.                 call    sub_907E
  7120.  
  7121.                 ret     c
  7122.                 cp      #D
  7123.                 jr      z, loc_A56E
  7124.  
  7125.                 cp      #C
  7126.                 jr      nz, loc_A57B
  7127.  
  7128.                 ld      a, (scr_XY)
  7129.                 sub     5
  7130.                 jr      z, loc_A540
  7131.  
  7132.                 ld      hl,  TAPE_header+1
  7133.                 add     a, l
  7134.                 ld      l, a
  7135.                 jr      nc, loc_A55B
  7136.  
  7137.                 inc     h
  7138.  
  7139.  
  7140. loc_A55B:                               ; CODE XREF: SAVE_RECORD+2F
  7141.                 dec     hl
  7142.                 ld      (hl), #20 ; ' '
  7143.                 ld      hl, scr_XY
  7144.                 dec     (hl)
  7145.                 ld      a, #20 ; ' '
  7146.                 call    PRINT_LETTER
  7147.  
  7148.                 ld      hl, scr_XY
  7149.                 dec     (hl)
  7150.                 jp      loc_A540
  7151.  
  7152. ; ---------------------------------------------------------------------------
  7153.  
  7154. loc_A56E:                               ; CODE XREF: SAVE_RECORD+1D
  7155.                 ld      a, (scr_XY)
  7156.                 cp      5
  7157.                 ret     nz
  7158.                 ld      hl,  TAPE_header+1
  7159.                 ld      (hl), #FF
  7160.                 or      a
  7161.                 ret
  7162.  
  7163. ; ---------------------------------------------------------------------------
  7164.  
  7165. loc_A57B:                               ; CODE XREF: SAVE_RECORD+21
  7166.                 ld      e, a
  7167.                 ld      a, (scr_XY)
  7168.                 cp      #F
  7169.                 jp      nc, loc_A540
  7170.  
  7171.                 ld      hl,  TAPE_header+1
  7172.                 sub     5
  7173.                 add     a, l
  7174.                 ld      l, a
  7175.                 jr      nc, loc_A58E
  7176.  
  7177.                 inc     h
  7178.  
  7179.  
  7180. loc_A58E:                               ; CODE XREF: SAVE_RECORD+62
  7181.                 ld      (hl), e
  7182.                 ld      a, e
  7183.                 call    PRINT_LETTER
  7184.  
  7185.                 jp      loc_A540
  7186.  
  7187. ; End of function SAVE_RECORD
  7188.  
  7189. ; ---------------------------------------------------------------------------
  7190. ; START OF FUNCTION CHUNK FOR sub_8C20
  7191.  
  7192. loc_A596:                               ; CODE XREF: sub_8C20+1902
  7193. ;Save
  7194.                 ld      de, #1000
  7195.                 ld      hl, aSaveTheGameRec ; "      SAVE THE GAME RECORD"
  7196.                 call    PrintGameState
  7197.  
  7198.                 call    SAVE_RECORD
  7199.  
  7200.                 jr      c, loc_A5D2
  7201.  
  7202.                 ld      hl, #1500
  7203.                 ld      (scr_XY), hl
  7204.                 ld      hl, aStartTapeAndPr ; "  START TAPE AND PRESS ANY KE"
  7205.                 call    PRINT_STR_FF
  7206.  
  7207.                 call    sub_907E
  7208.  
  7209.                 jr      c, loc_A5D2
  7210.  
  7211.                 ld      ix, TAPE_header
  7212.                 ld      de, #11
  7213.                 xor     a
  7214.                 call    ROM_START+#4C2
  7215.  
  7216.                 ld      a, #32 ; '2'
  7217.  
  7218.  
  7219. loc_A5C2:                               ; CODE XREF: sub_8C20+19A4
  7220.                 halt
  7221.                 dec     a
  7222.                 jr      nz, loc_A5C2
  7223.  
  7224.                 ld      ix, BRD_88_0
  7225.                 ld      de, #3FF
  7226.                 ld      a, #FF
  7227.                 call    ROM_START+#4C2
  7228.  
  7229.  
  7230. loc_A5D2:                               ; CODE XREF: sub_8C20+1982
  7231.                                         ; sub_8C20+1993 ...
  7232.                 pop     hl
  7233.                 call    SET_BRD_COLOR
  7234.  
  7235.                 jp      loc_82EB
  7236.  
  7237. ; ---------------------------------------------------------------------------
  7238.  
  7239. loc_A5D9:                               ; CODE XREF: sub_8C20+18FD
  7240. ;Load
  7241.                 ld      de, #1000
  7242.                 ld      hl, aLoadAGameRecor ; "      LOAD A GAME RECORD"
  7243.                 call    PrintGameState
  7244.  
  7245.  
  7246. fool_name:
  7247.                 call    SAVE_RECORD
  7248.  
  7249.                 jr      c, loc_A5D2
  7250.  
  7251.                 ld      hl, #1500
  7252.                 ld      (scr_XY), hl
  7253.                 ld      hl, #9D53
  7254.                 call    PRINT_STR_FF
  7255.  
  7256.                 call    sub_907E
  7257.  
  7258.                 jr      c, loc_A5D2
  7259.  
  7260.  
  7261. loc_A5F8:                               ; CODE XREF: sub_8C20+19E4
  7262.                                         ; sub_8C20+1A2C
  7263.                 ld      ix, #63B5
  7264.                 ld      de, #11
  7265.                 xor     a
  7266.                 scf
  7267.                 call    ROM_START+#556
  7268.  
  7269.                 jp      nc, loc_A5F8
  7270.  
  7271.                 ld      hl, #1300
  7272.                 ld      (scr_XY), hl
  7273.                 ld      hl, a_32spaces  ; "                        "
  7274.                 call    PRINT_STR_FF
  7275.  
  7276.                 ld      hl, #1300
  7277.                 ld      (scr_XY), hl
  7278.                 ld      a, (byte_63B5)
  7279.                 ld      hl,  aGameRecord
  7280.                 cp      9
  7281.                 jr      z, loc_A626
  7282.  
  7283.                 ld      hl, aNotAGameRecord ; "NOT A GAME RECORD :"
  7284.  
  7285.  
  7286. loc_A626:                               ; CODE XREF: sub_8C20+1A01
  7287.                 call    PRINT_STR_FF
  7288.  
  7289.                 ld      a, (byte_63B6)
  7290.                 inc     a
  7291.                 jr      z, loc_A640
  7292.  
  7293.                 ld      hl, unk_63BF
  7294.                 set     7, (hl)
  7295.                 ld      hl, byte_63B6
  7296.                 call    PRINT_STR_FF
  7297.  
  7298.                 ld      a, (TAPE_header+1)
  7299.                 inc     a
  7300.                 jr      z, loc_A652
  7301.  
  7302.  
  7303. loc_A640:                               ; CODE XREF: sub_8C20+1A0D
  7304.                 ld      de,  TAPE_header+1
  7305.                 ld      hl, byte_63B6
  7306.                 ld      b, #A
  7307.  
  7308.  
  7309. loc_A648:                               ; CODE XREF: sub_8C20+1A30
  7310.                 ld      a, (de)
  7311.                 res     7, (hl)
  7312.                 cp      (hl)
  7313.                 jr      nz, loc_A5F8
  7314.  
  7315.                 inc     hl
  7316.                 inc     de
  7317.                 djnz    loc_A648
  7318.  
  7319.  
  7320. loc_A652:                               ; CODE XREF: sub_8C20+1A1E
  7321.                 ld      ix, RAM_END_D800
  7322.                 ld      de, #3FF
  7323.                 ld      a, #FF
  7324.                 scf
  7325.                 call    ROM_START+#556
  7326.  
  7327.                 jp      nc, loc_A670
  7328.  
  7329.                 ld      hl, RAM_END_D800
  7330.                 ld      de, BRD_88_0
  7331.                 ld      bc, #3FF
  7332.                 ldir
  7333.                 call    INIT_PRINT_CLOCKS
  7334.  
  7335.  
  7336. loc_A670:                               ; CODE XREF: sub_8C20+1A3F
  7337.                 pop     hl
  7338.  
  7339.  
  7340. loc_A671:                               ; DATA XREF: sub_8C20+18EC
  7341.                 ld      hl, (word_D0F7)
  7342.                 inc     hl
  7343.                 ld      (word_D0F7), hl
  7344.                 call    SET_BRD_COLOR
  7345.  
  7346.                 call    sub_9EE6 ;print Cyrus II, level, space to see board
  7347.  
  7348.                 call    PRINT_CLOCKS_SWAP
  7349.  
  7350.                 jp      loc_8A32
  7351.  
  7352. ; END OF FUNCTION CHUNK FOR sub_8C20
  7353.  
  7354. ; =============== S U B R O U T I N E =======================================
  7355.  
  7356.  
  7357. sub_A684:                               ; CODE XREF: sub_8C20-A43
  7358.                                         ; sub_8DE9+55   ...
  7359.                 ld      a, (byte_D0B4)
  7360.                 bit     5, a
  7361.                 ret     nz ;invisible board?
  7362.                 ld      a, (byte_D0DF)
  7363.                 rra
  7364.                 ret     c
  7365.                 push    bc
  7366.                 push    de
  7367.                 push    hl
  7368.                 push    ix
  7369.                 push    iy
  7370.                 exx
  7371.                 push    bc
  7372.                 push    de
  7373.                 push    hl
  7374.                 ld      a, #FF
  7375.                 ld      (NEED_SCR2BUF), a
  7376.                 ld      hl, #D08
  7377.                 ld      (scr_XY), hl
  7378.                 ld      b, 7
  7379.                 ld      hl, byte_D258
  7380.  
  7381. loc_A6AA:                               ; CODE XREF: sub_A684+48
  7382.                 ld      a, (hl)
  7383.                 cp      #FF
  7384.                 jr      z, loc_A6D0
  7385.  
  7386.                 push    bc
  7387.                 push    hl
  7388.                 ld      hl,  a_8spaces+5
  7389.                 call    PRINT_STR_FF
  7390.  
  7391.                 pop     hl
  7392.                 push    hl
  7393.                 ld      a, (hl)
  7394.                 call    sub_A021
  7395.  
  7396.                 ld      a, '-'
  7397.                 call    PRINT_LETTER
  7398.  
  7399.                 pop     hl
  7400.                 inc     hl
  7401.                 push    hl
  7402.                 ld      a, (hl)
  7403.                 call    sub_A021
  7404.  
  7405.                 pop     hl
  7406.                 inc     hl
  7407.                 pop     bc
  7408.                 djnz    loc_A6AA
  7409.  
  7410.                 jr      loc_A6D8
  7411.  
  7412. ; ---------------------------------------------------------------------------
  7413.  
  7414. loc_A6D0:                               ; CODE XREF: sub_A684+29 sub_A684+52
  7415.                 ld      hl, a_8spaces   ; "       "
  7416.                 call    PRINT_STR_FF
  7417.  
  7418.                 djnz    loc_A6D0
  7419.  
  7420. loc_A6D8:                               ; CODE XREF: sub_A684+4A sub_A6F7+3E
  7421.                 pop     hl
  7422.                 pop     de
  7423.                 pop     bc
  7424.                 exx
  7425.                 pop     iy
  7426.                 pop     ix
  7427.                 pop     hl
  7428.                 pop     de
  7429.                 pop     bc
  7430.                 ret
  7431.  
  7432. ; End of function sub_A684
  7433.  
  7434.  
  7435. ; =============== S U B R O U T I N E =======================================
  7436.  
  7437.  
  7438. sub_A6E4:                               ; CODE XREF: sub_8C20-92D
  7439.                                         ; sub_8C20-829 ...
  7440.                 ld      hl, #D08
  7441.                 ld      (scr_XY), hl
  7442.                 ld      hl,  a_32spaces+8
  7443.                 call    PRINT_STR_FF
  7444.  
  7445.                 ld      hl, a_32spaces  ; "                        "
  7446.                 call    PRINT_STR_FF
  7447.  
  7448.                 ret
  7449.  
  7450. ; End of function sub_A6E4
  7451.  
  7452.  
  7453. ; =============== S U B R O U T I N E =======================================
  7454.  
  7455.  
  7456. sub_A6F7:                               ; CODE XREF: sub_AFC5+C7
  7457.                 ld      a, (byte_D0B4)
  7458.                 bit     5, a
  7459.                 ret     nz ;invisible board?
  7460.                 push    bc
  7461.                 push    de
  7462.                 push    hl
  7463.                 push    ix
  7464.                 push    iy
  7465.                 exx
  7466.                 push    bc
  7467.                 push    de
  7468.                 push    hl
  7469.                 exx
  7470.                 ld      de, #F00
  7471.                 ld      (scr_XY), de
  7472.                 ld      a, #FF
  7473.                 ld      (NEED_SCR2BUF), a
  7474.                 ld      a, (hl)
  7475.                 cp      #FE
  7476.                 jr      c, loc_A725
  7477.  
  7478.                 ld      hl,  a_8spaces+5
  7479.                 call    PRINT_STR_FF
  7480.  
  7481.                 ld      hl,  aNoMateIn+3
  7482.                 jr      loc_A728
  7483.  
  7484. ; ---------------------------------------------------------------------------
  7485.  
  7486. loc_A725:                               ; CODE XREF: sub_A6F7+21
  7487.                 ld      hl, aNoMateIn   ; "NO MATE IN"
  7488.  
  7489.  
  7490. loc_A728:                               ; CODE XREF: sub_A6F7+2C
  7491.                 call    PRINT_STR_FF
  7492.  
  7493.                 ld      a, (byte_D098)
  7494.                 srl     a
  7495.                 add     a, '1'
  7496.                 call    PRINT_LETTER
  7497.  
  7498.                 jp      loc_A6D8
  7499.  
  7500. ; End of function sub_A6F7
  7501.  
  7502. ; ---------------------------------------------------------------------------
  7503.  
  7504.  
  7505.         ;cyrus logo, 128 bytes.
  7506.         ;no alignment
  7507.  
  7508. CYRUS_LOGO_spr: db  #00,#00,#00,#00,#00,#00,#00,#00
  7509.                 db  #00,#00,#00,#00,#00,#00,#00,#00
  7510.                 db  #3E,#7D,#F7,#E3,#DE,#3C,#1F,#FC
  7511.                 db  #7F,#7D,#F7,#F3,#DE,#7E,#1F,#FC
  7512.                 db  #F7,#B8,#E3,#39,#8C,#E7,#06,#30
  7513.                 db  #E3,#9D,#C3,#39,#8C,#E7,#06,#30
  7514.                 db  #C0,#0D,#83,#39,#8C,#E0,#06,#30
  7515.                 db  #C0,#0F,#83,#F1,#8C,#FE,#06,#30
  7516.                 db  #C0,#07,#03,#E1,#8C,#7F,#06,#30
  7517.                 db  #C0,#07,#03,#71,#8C,#07,#06,#30
  7518.                 db  #E3,#87,#03,#39,#8C,#E7,#06,#30
  7519.                 db  #F7,#87,#03,#19,#DC,#E7,#06,#30
  7520.                 db  #7F,#0F,#87,#BC,#F8,#7E,#1F,#FC
  7521.                 db  #3E,#0F,#87,#BC,#70,#3C,#1F,#FC
  7522.                 db  #00,#00,#00,#00,#00,#00,#00,#00
  7523.                 db  #00,#00,#00,#00,#00,#00,#00,#00
  7524.  
  7525.  
  7526.  
  7527. ; =============== S U B R O U T I N E =======================================
  7528.  
  7529. ; show CYRUS II logo in upper left part of screen or scrbuf
  7530.  
  7531. SHOW_LOGO:                              ; CODE XREF: sub_A177
  7532.                 push    hl
  7533.                 push    de
  7534.                 push    bc
  7535.                 ld      hl, SCREEN
  7536.                 ld      a, (SEL_SCRorBUF)
  7537.                 or      a
  7538.                 jr      z, loc_A7C8
  7539.  
  7540.                 ld      de, #2400
  7541.                 add     hl, de          ; step to SCR_BUF_6400
  7542.  
  7543.  
  7544. loc_A7C8:                               ; CODE XREF: SHOW_LOGO+A
  7545.                 push    hl
  7546.                 ld      de, CYRUS_LOGO_spr
  7547.                 ld      b, 8
  7548.  
  7549.  
  7550. loc_A7CE:                               ; CODE XREF: SHOW_LOGO+22
  7551.                 ld      c, 8
  7552.                 push    hl
  7553.  
  7554.  
  7555. loc_A7D1:                               ; CODE XREF: SHOW_LOGO+1E
  7556.                 ld      a, (de)
  7557.                 ld      (hl), a
  7558.                 inc     hl
  7559.                 inc     de
  7560.                 dec     c
  7561.                 jr      nz, loc_A7D1
  7562.  
  7563.                 pop     hl
  7564.                 inc     h
  7565.                 djnz    loc_A7CE
  7566.  
  7567.                 pop     hl
  7568.                 ld      a, #20 ; ' '
  7569.                 add     a, l
  7570.                 ld      l, a
  7571.                 ld      b, 8
  7572.  
  7573.  
  7574. loc_A7E3:                               ; CODE XREF: SHOW_LOGO+37
  7575.                 ld      c, 8
  7576.                 push    hl
  7577.  
  7578.  
  7579. loc_A7E6:                               ; CODE XREF: SHOW_LOGO+33
  7580.                 ld      a, (de)
  7581.                 ld      (hl), a
  7582.                 inc     hl
  7583.                 inc     de
  7584.                 dec     c
  7585.                 jr      nz, loc_A7E6
  7586.  
  7587.                 pop     hl
  7588.                 inc     h
  7589.                 djnz    loc_A7E3
  7590.  
  7591.                 pop     bc
  7592.                 pop     de
  7593.                 pop     hl
  7594.                 ret
  7595.  
  7596. ; End of function SHOW_LOGO
  7597.  
  7598. ; ---------------------------------------------------------------------------
  7599.  
  7600.        if !FIX
  7601.         ;unneeded space???
  7602.                 ds      267
  7603.        endif
  7604.  
  7605.  
  7606.  
  7607.  
  7608.  
  7609.  
  7610.  
  7611.  
  7612.  
  7613.         ;following jump table is unneeded???
  7614.  
  7615. sub_A900:
  7616.                 jp      sub_AFC5
  7617. sub_A903:
  7618.                 jp      loc_A961
  7619. sub_A906:
  7620.                 jp      sub_AD40
  7621. sub_A909:
  7622.                 jp      sub_AF81
  7623. _FindMove_D_E:
  7624.                 jp      FindMove_D_E
  7625. sub_A90F:
  7626.                 jp      sub_AB4C
  7627. loc_A912:
  7628.                 jp      loc_AF68
  7629. sub_A915:
  7630.                 jp      sub_B8B2
  7631.  
  7632.  
  7633.  
  7634.  
  7635.  
  7636. ; ---------------------------------------------------------------------------
  7637.        if FIX
  7638.                 align 8
  7639.        endif
  7640.  
  7641.                 ;must be inside 256b page
  7642. byte_A918:      db #0E,#12,#1F,#21,#F2,#EE,#E1,#DF ;8 bytes ;knight moves?
  7643.  
  7644. byte_A920:      db #0F                  ; DATA XREF: sub_A94F+42 ;sub_AAF8:loc_AAFA ... ;8 bytes ;bishop moves (then rook moves)
  7645.                 db #11
  7646.                 db #EF
  7647.                 db #F1
  7648. byte_A924:      db #01                  ; DATA XREF: sub_AAC9:loc_AACB ;4 bytes ;rook moves?
  7649.                 db #FF
  7650.                 db #10
  7651.                 db #F0                 
  7652.  
  7653. byte_A928: ; DATA XREF: sub_AFC5:loc_B00D
  7654. ;any place?
  7655.                 db #80
  7656.                 db #00
  7657.                 db #34
  7658.                 db #02
  7659.                 db #28
  7660.                 db #06
  7661.                 db #19
  7662.                 db #0E
  7663.                 db #00
  7664.                 db #1E
  7665.  
  7666. ; =============== S U B R O U T I N E =======================================
  7667.  
  7668.  
  7669. sub_A932:                               ; CODE XREF: sub_AFC5+30 sub_AFC5+36
  7670.                 ld      c, 0
  7671.                 ld      b, #F
  7672. loc_A936:                               ; CODE XREF: sub_A932+1A
  7673.                 bit     7, (hl)
  7674.                 jr      nz, loc_A948
  7675.  
  7676.                 inc     l
  7677.                 ld      a, (hl)
  7678.                 and     #F
  7679.                 cp      1
  7680.                 jr      nz, loc_A945
  7681.                 ld      (byte_D04C), a
  7682. loc_A945:                               ; CODE XREF: sub_A932+E
  7683.                 add     a, c
  7684.                 ld      c, a
  7685.                 dec     l
  7686.  
  7687. loc_A948:                               ; CODE XREF: sub_A932+6
  7688.                 ld      a, 8
  7689.                 add     a, l
  7690.                 ld      l, a
  7691.                 djnz    loc_A936
  7692.  
  7693.                 ret
  7694.  
  7695. ; End of function sub_A932
  7696.  
  7697.  
  7698. ; =============== S U B R O U T I N E =======================================
  7699.  
  7700.  
  7701. sub_A94F:                               ; CODE XREF: sub_AFC5+4 sub_B47F-77
  7702.                 call    sub_8F4D
  7703.  
  7704.                 ld      a, (ix+2)
  7705.                 and     #C9
  7706.                 jr      z, loc_A961
  7707.  
  7708.                 ld      hl,  word_D00D+1
  7709.                 jp      p, loc_A960
  7710.                 inc     (hl)
  7711. loc_A960:                               ; CODE XREF: sub_A94F+D
  7712.                 inc     (hl)
  7713. loc_A961:                               ; CODE XREF: sub_A903   sub_A94F+8
  7714.                 ld      hl, byte_D097
  7715.                 ld      a, (hl)
  7716.                 add     a, a
  7717.                 add     a, l
  7718.                 ld      l, a
  7719.                 ld      e, (hl)
  7720.                 inc     l
  7721.                 ld      d, (hl)
  7722.                 inc     l
  7723.                 inc     de
  7724.                 push    de
  7725.                 inc     de
  7726.                 inc     de
  7727.                 push    hl
  7728.                 ld      h, BRD_88_0/256
  7729.                 ld      iy, word_D100
  7730.                 ld      a, (byte_D02D)
  7731.                 exx
  7732.                 rrca
  7733.                 ld      c, a
  7734.                 exx
  7735.                 jr      nc, loc_A984
  7736.                 ld      iy, word_D180
  7737. loc_A984:                               ; CODE XREF: sub_A94F+2F
  7738.                 ld      b, (iy+0)
  7739.                 bit     4, (iy+1)
  7740.                 call    z, sub_AB0A ;проверяем и пишем рокировки в список ходов?
  7741.  
  7742.                 ld      c, #88
  7743.                 exx
  7744.                 ld      de, byte_A920 ;bishop moves (then rook moves)
  7745.                 call    sub_AAA7 ;8 moves (queen?)
  7746.  
  7747.                 ld      a, (iy+8)
  7748.                 or      a
  7749.                 call    p, sub_AB00 ;составляем список ходов от поля A для ферзя?
  7750.  
  7751.                 ld      a, (iy+#10)
  7752.                 or      a
  7753.                 call    p, sub_AAC9 ;составляем список ходов от поля A для ладьи
  7754.  
  7755.                 ld      a, (iy+#18)
  7756.                 or      a
  7757.                 call    p, sub_AAC9 ;составляем список ходов от поля A для ладьи
  7758.  
  7759.                 ld      a, (iy+#20)
  7760.                 or      a
  7761.                 call    p, sub_AAF8 ;составляем список ходов от поля A для слона?
  7762.  
  7763.                 ld      a, (iy+#28)
  7764.                 or      a
  7765.                 call    p, sub_AAF8 ;составляем список ходов от поля A для слона?
  7766.  
  7767.                 ld      a, (iy+#30)
  7768.                 ld      c, #88
  7769.                 or      a
  7770.                 call    p, sub_AAA2 ;составляем список ходов от поля A для коня?
  7771.  
  7772.                 ld      a, (iy+#38)
  7773.                 or      a
  7774.                 call    p, sub_AAA2 ;составляем список ходов от поля A для коня?
  7775.  
  7776.                 ld      c, #11
  7777.                 exx
  7778.                 ld      hl, unk_D140
  7779.                 bit     7, c
  7780.                 jr      z, loc_A9DA
  7781.  
  7782.                 ld      l, #C0  ; word_D1C0&255
  7783.                 exx
  7784.                 ld      c, #F1
  7785.                 exx
  7786.  
  7787. loc_A9DA:                               ; CODE XREF: sub_A94F+83 sub_A94F+F2
  7788.                 ld      a, (hl)
  7789.                 rla
  7790.                 jr      c, loc_AA3B
  7791.  
  7792.                 inc     l
  7793.                 ld      a, (hl)
  7794.                 dec     l
  7795.                 and     #E
  7796.                 ld      a, (hl)
  7797.                 exx
  7798.                 ld      b, a
  7799.                 jr      nz, loc_AA54
  7800.  
  7801.                 add     a, c
  7802.                 ld      l, a
  7803.                 xor     a
  7804.                 or      (hl) ;впереди справа?
  7805.                 jp      z, loc_A9F6
  7806.  
  7807.                 exx
  7808.                 xor     c
  7809.                 exx
  7810.                 call    m, sub_AB41 ;пишем ход B-L, флаги A=8=съедение
  7811.                 xor     a
  7812.  
  7813. loc_A9F6:                               ; CODE XREF: sub_A94F+9D
  7814.                 dec     l
  7815.                 dec     l
  7816.                 or      (hl) ;впереди слева?
  7817.                 jp      z, loc_AA03
  7818.  
  7819.                 exx
  7820.                 xor     c
  7821.                 exx
  7822.                 call    m, sub_AB41 ;пишем ход B-L, флаги A=8=съедение
  7823.                 xor     a
  7824.  
  7825. loc_AA03:                               ; CODE XREF: sub_A94F+AA
  7826.                 inc     l
  7827.                 or      (hl)
  7828.                 jr      nz, loc_AA33
  7829.  
  7830.                 ex      de, hl
  7831.                 ld      (hl), b ;откуда
  7832.                 inc     hl
  7833.                 ld      (hl), e ;куда
  7834.                 inc     hl
  7835.                 ld      (hl), a ;флаги=0
  7836.                 inc     hl
  7837.                 ex      de, hl
  7838.                 ld      a, b
  7839.                 add     a, #20 ; ' '
  7840.                 bit     6, a
  7841.                 jr      nz, loc_AA33
  7842.  
  7843.                 ld      a, c
  7844.                 dec     a
  7845.                 add     a, l
  7846.                 jp      m, loc_AA3A
  7847.  
  7848.                 ld      l, a
  7849.                 xor     a
  7850.                 or      (hl)
  7851.                 jr      nz, loc_AA3A
  7852.  
  7853.                 call    sub_AB43 ;пишем ход B-L, флаги A=0
  7854.  
  7855.                 dec     l
  7856.                 or      (hl)
  7857.                 call    nz, sub_AA8B
  7858.  
  7859.                 inc     l
  7860.                 inc     l
  7861.                 ld      a, (hl)
  7862.                 or      a
  7863.                 call    nz, sub_AA8B
  7864.  
  7865.                 jp      loc_AA3A
  7866.  
  7867. ; ---------------------------------------------------------------------------
  7868.  
  7869. loc_AA33:                               ; CODE XREF: sub_A94F+B6 sub_A94F+C5
  7870.                 bit     5, (ix+2)
  7871.                 call    nz, sub_AA71
  7872.  
  7873. loc_AA3A:                               ; CODE XREF: sub_A94F+CA sub_A94F+D0 ...
  7874.                 exx
  7875.  
  7876. loc_AA3B:                               ; CODE XREF: sub_A94F+8D
  7877.                 ld      a, 8
  7878.                 add     a, l
  7879.                 ld      l, a
  7880.                 bit     6, a
  7881.                 jp      nz, loc_A9DA
  7882.  
  7883.                 exx
  7884.                 ld      a, #FF
  7885.                 ld      (de), a
  7886.                 pop     hl
  7887.                 ld      (hl), e
  7888.                 inc     l
  7889.                 ld      (hl), d
  7890.                 pop     hl
  7891.                 ld      (hl), a
  7892.                 inc     hl
  7893.                 ld      a, (ix+2)
  7894.                 ld      (hl), a
  7895.                 ret
  7896.  
  7897. ; ---------------------------------------------------------------------------
  7898.  
  7899. loc_AA54:                               ; CODE XREF: sub_A94F+97
  7900.                 push    bc
  7901.                 ld      c, #88
  7902.                 exx
  7903.                 inc     l
  7904.                 ld      a, (hl)
  7905.                 dec     l
  7906.                 ld      de, byte_AA6D
  7907.                 push    de
  7908.                 or      a
  7909.                 jp      m, loc_AAFA
  7910.  
  7911.                 rra
  7912.                 rra
  7913.                 jr      c, loc_AAA4
  7914.  
  7915.                 rra
  7916.                 jr      c, loc_AACB
  7917.  
  7918.                 jp      loc_AB02
  7919.  
  7920. ; End of function sub_A94F
  7921.  
  7922. ; ---------------------------------------------------------------------------
  7923. byte_AA6D:      db  #C1,#D9,#18,#CA ; DATA      XREF: sub_A94F+10C
  7924.  
  7925. ; =============== S U B R O U T I N E =======================================
  7926.  
  7927.  
  7928. sub_AA71:                               ; CODE XREF: sub_A94F+E8
  7929.                 bit     3, (ix+2)
  7930.                 ret     nz
  7931.                 ld      a, (ix+1)
  7932.                 and     #7F
  7933.                 inc     a
  7934.                 cp      b
  7935.                 jr      z, loc_AA85
  7936.  
  7937.                 dec     a
  7938.                 dec     a
  7939.                 cp      b
  7940.                 ret     nz
  7941.                 inc     l
  7942.                 inc     l
  7943.  
  7944.  
  7945. loc_AA85:                               ; CODE XREF: sub_AA71+C
  7946.                 dec     l
  7947.                 ld      a, #28
  7948.                 jp      sub_AB43 ;пишем ход B-L, флаги A
  7949.  
  7950. ; End of function sub_AA71
  7951.  
  7952.  
  7953. ; =============== S U B R O U T I N E =======================================
  7954.  
  7955.  
  7956. sub_AA8B:                               ; CODE XREF: sub_A94F+D7 sub_A94F+DE
  7957.                 exx
  7958.                 xor     c
  7959.                 exx
  7960.                 ret     p
  7961.                 ld      a, (hl)
  7962.                 exx
  7963.                 ld      b, l
  7964.                 sub     3
  7965.                 ld      l, a
  7966.                 ld      a, (hl)
  7967.                 ld      l, b
  7968.                 exx
  7969.                 and     #F
  7970.                 dec     a
  7971.                 ret     nz
  7972.                 ld      a, #20 ; ' '
  7973.                 dec     de
  7974.                 ld      (de), a
  7975.                 inc     de
  7976.                 ret
  7977.  
  7978. ; End of function sub_AA8B
  7979.  
  7980.  
  7981. ; =============== S U B R O U T I N E =======================================
  7982.  
  7983.  
  7984. sub_AAA2:                               ; CODE XREF: sub_A94F+71 sub_A94F+78
  7985.                 ld      b, a
  7986.                 exx
  7987.  
  7988.  
  7989. loc_AAA4:                               ; CODE XREF: sub_A94F+116
  7990.                 ld      de, byte_A918 ;knight moves?
  7991.  
  7992. ; End of function sub_AAA2
  7993.  
  7994.  
  7995. ; =============== S U B R O U T I N E =======================================
  7996.  
  7997.  
  7998. sub_AAA7:                               ; CODE XREF: sub_A94F+45
  7999.                 ld      b, 8
  8000.  
  8001. loc_AAA9:                               ; CODE XREF: sub_AAA7:loc_AAC5
  8002.                 ld      a, (de) ;сдвиг фигуры
  8003.                 inc     e
  8004.                 exx
  8005.                 add     a, b ;+откуда
  8006.                 ld      l, a ;куда
  8007.                 and     c
  8008.                 jr      nz, loc_AAC4
  8009.  
  8010.                 or      (hl)
  8011.                 jr      z, loc_AABC
  8012.  
  8013.                 exx
  8014.                 xor     c
  8015.                 jp      p, loc_AAC5 ;не можем съесть свою фигуру
  8016.                 exx
  8017.                 ld      a, 8 ;съедение?
  8018.  
  8019. loc_AABC:                               ; CODE XREF: sub_AAA7+B
  8020.                 ex      de, hl
  8021.                 ld      (hl), b ;откуда
  8022.                 inc     hl
  8023.                 ld      (hl), e ;куда
  8024.                 inc     hl
  8025.                 ld      (hl), a ;флаги=0/8
  8026.                 inc     hl
  8027.                 ex      de, hl
  8028.  
  8029. loc_AAC4:                               ; CODE XREF: sub_AAA7+8
  8030.                 exx
  8031.  
  8032. loc_AAC5:                               ; CODE XREF: sub_AAA7+F
  8033.                 djnz    loc_AAA9
  8034.  
  8035.                 exx
  8036.                 ret
  8037.  
  8038. ; End of function sub_AAA7
  8039.  
  8040.  
  8041. ; =============== S U B R O U T I N E =======================================
  8042.  
  8043.  
  8044. sub_AAC9:                               ; CODE XREF: sub_A94F+53 sub_A94F+5A
  8045. ;составляем список ходов от поля A для ладьи
  8046.                 ld      b, a
  8047.                 exx
  8048.  
  8049. loc_AACB:                               ; CODE XREF: sub_A94F+119
  8050.                 ld      de, byte_A924 ;rook moves?
  8051.  
  8052. loc_AACE:                               ; CODE XREF: sub_AAF8+5
  8053.                 ld      b, 4
  8054.  
  8055. loc_AAD0:                               ; CODE XREF: sub_AAC9:loc_AAF4
  8056.                                         ; sub_AB00+7
  8057.                 ld      a, (de)
  8058.                 inc     e
  8059.                 exx
  8060.                 ld      c, a
  8061.                 ld      l, b ;откуда
  8062.  
  8063. loc_AAD5:                               ; CODE XREF: sub_AAC9+1E
  8064.                 ld      a, l
  8065.                 add     a, c
  8066.                 ld      l, a ;куда
  8067.                 and     #88
  8068.                 jr      nz, loc_AAF3 ;вышли за пределы доски
  8069.  
  8070.                 or      (hl)
  8071.                 jr      nz, loc_AAEA ;на занятое поле
  8072.  
  8073.                 ex      de, hl
  8074.                 ld      (hl), b ;откуда
  8075.                 inc     hl
  8076.                 ld      (hl), e ;куда
  8077.                 inc     hl
  8078.                 ld      (hl), a ;флаги=0
  8079.                 inc     hl
  8080.                 ex      de, hl
  8081.                 jp      loc_AAD5
  8082.  
  8083. ; ---------------------------------------------------------------------------
  8084.  
  8085. loc_AAEA:                               ; CODE XREF: sub_AAC9+14
  8086.                 exx
  8087.                 xor     c
  8088.                 jp      p, loc_AAF4 ;не можем съесть свою фигуру
  8089.                 exx
  8090.  
  8091.                 call    sub_AB41 ;пишем ход B-L, флаги A=8=съедение
  8092. loc_AAF3:                               ; CODE XREF: sub_AAC9+11
  8093.  
  8094.                 exx
  8095. loc_AAF4:                               ; CODE XREF: sub_AAC9+23
  8096.                 djnz    loc_AAD0
  8097.                 exx
  8098.                 ret
  8099.  
  8100. ; End of function sub_AAC9
  8101.  
  8102.  
  8103. ; =============== S U B R O U T I N E =======================================
  8104.  
  8105.  
  8106. sub_AAF8:                               ; CODE XREF: sub_A94F+61 sub_A94F+68
  8107.                 ld      b, a
  8108.                 exx
  8109. loc_AAFA:                               ; CODE XREF: sub_A94F+111
  8110.                 ld      de, byte_A920 ;bishop moves (then rook moves)
  8111.                 jp      loc_AACE ;4 moves (bishop)
  8112.  
  8113. ; End of function sub_AAF8
  8114.  
  8115.  
  8116. ; =============== S U B R O U T I N E =======================================
  8117.  
  8118.  
  8119. sub_AB00:                               ; CODE XREF: sub_A94F+4C
  8120.                 ld      b, a
  8121.                 exx
  8122.  
  8123. loc_AB02:                               ; CODE XREF: sub_A94F+11B
  8124.                 ld      de, byte_A920 ;bishop moves (then rook moves)
  8125.                 ld      b, 8
  8126.                 jp      loc_AAD0
  8127.  
  8128. ; End of function sub_AB00
  8129.  
  8130.  
  8131. ; =============== S U B R O U T I N E =======================================
  8132.  
  8133.  
  8134. sub_AB0A:                               ; CODE XREF: sub_A94F+3C
  8135. ;проверяем и пишем рокировки в список ходов?
  8136.                 bit     7, (ix+2)
  8137.                 ret     nz ;король уже ходил? или это шах?
  8138.                 bit     4, (iy+#19)
  8139.                 jr      nz, gencastlingRfail;loc_AB26 ;ладья уже ходила?
  8140.                 bit     7, (iy+#18)
  8141.                 jr      nz, gencastlingRfail;loc_AB26 ;ладья мертва?
  8142.  
  8143.        if FIX
  8144. ;в Chess960 проверять сколько надо полей вправо (от короля или F (смотря что левее) вплоть до G, кроме короля и самой ладьи - именно этой! левая может мешать)
  8145.         ld a,b ;положение короля
  8146.         and 7
  8147.         cp 5 ;F
  8148.         jr c,$+4 ;король левее F
  8149.          ld a,5 ;F
  8150.         xor b
  8151.         and 7
  8152.         xor b
  8153.         ld l,a ;от короля или F (смотря что левее)
  8154. gencastlingR0
  8155.         ld a,(hl)
  8156.         or a
  8157.         jr z,gencastlingR0ok
  8158.         and 0x3c
  8159.         cp (_K|4)&0x3c
  8160.         jr z,gencastlingR0ok
  8161.         ld a,(hl)
  8162.         and 0x3c;0x30
  8163.         cp ((_R|4)&0x3c)+8;0x1c;_R&0x30 ;код правой ладьи
  8164.         jr nz,gencastlingRfail
  8165. gencastlingR0ok
  8166.         inc l
  8167.         ld a,l
  8168.         and 7
  8169.         cp 7 ;H?
  8170.         jr nz,gencastlingR0
  8171.         ;ld a,b
  8172.         ;and 0xf8
  8173.         ;or 6
  8174.         dec l;ld l,a ;G
  8175.         call sub_AB3C ;пишем ход B-L, флаги A=#10=рокировка
  8176.  
  8177.        else
  8178.                 xor     a
  8179.                 ld      l, b ;положение короля
  8180.                 inc     l
  8181.                 or      (hl) ;справа пусто?
  8182.                 jr      nz, gencastlingRfail;loc_AB26
  8183.  
  8184.                 inc     l
  8185.                 or      (hl) ;ещё правее пусто?
  8186.                 call    z, sub_AB3C ;пишем ход B-L, флаги A=#10=рокировка
  8187.        endif
  8188.  
  8189. gencastlingRfail;loc_AB26:                              ; CODE XREF: sub_AB0A+9 sub_AB0A+F ...
  8190. ;рокировка влево
  8191.                 bit     4, (iy+#11)
  8192.                 ret     nz ;ладья уже ходила?
  8193.                 bit     7, (iy+#10)
  8194.                 ret     nz ;ладья мертва?
  8195.        if FIX
  8196. ;в Chess960 проверять сколько надо полей влево (от короля или D (смотря что правее) вплоть до C или ладьи (смотря что левее), кроме короля и самой ладьи - именно этой! правая может мешать)
  8197.         ld a,b ;положение короля
  8198.         and 7
  8199.         cp 3 ;D
  8200.         jr nc,$+4 ;король D или правее D
  8201.          ld a,4 ;D
  8202.         xor b
  8203.         and 7
  8204.         xor b
  8205.         ld l,a ;от короля или D (смотря что правее)
  8206. gencastlingL0
  8207.         ld a,(hl)
  8208.         or a
  8209.         jr z,gencastlingL0ok
  8210.         and 0x3c
  8211.         cp (_K|4)&0x3c
  8212.         jr z,gencastlingL0ok
  8213.         ld a,(hl)
  8214.         and 0x3c;0x30
  8215.         cp (_R|4)&0x3c;0x14;_R&0x30 ;код левой ладьи
  8216.         ret nz
  8217.         ld a,l
  8218.         and 7
  8219.         cp 2      
  8220.         jr c,gencastlingL0allok ;ладья найдена левее C - дальше не проверяем
  8221. gencastlingL0ok
  8222.         ld a,l
  8223.         dec l
  8224.         and 7
  8225.         jr nz,gencastlingL0
  8226. gencastlingL0allok
  8227.         ld a,b
  8228.         and 0xf8
  8229.         or 2
  8230.         ld l,a ;C
  8231.  
  8232.        else
  8233.                 ld      l, b ;положение короля
  8234.                 xor     a
  8235.                 dec     l
  8236.                 or      (hl) ;слева пусто?
  8237.                 ret     nz
  8238.                 dec     l
  8239.                 or      (hl) ;ещё левее пусто?
  8240.                 ret     nz
  8241.                 dec     l
  8242.                 or      (hl) ;ещё левее пусто?
  8243.                 ret     nz
  8244.                 inc     l
  8245.        endif
  8246. ;пишем ход B-L, флаги A=#10=рокировка?
  8247. ; =============== S U B R O U T I N E =======================================
  8248. sub_AB3C:                               ; CODE XREF: sub_AB0A+19
  8249.                 ld      a, #10 ;рокировка?
  8250.                 jp      sub_AB43 ;пишем ход B-L, флаги A
  8251. ; =============== S U B R O U T I N E =======================================
  8252. sub_AB41:                               ; CODE XREF: sub_A94F+A3 sub_A94F+B0 ...
  8253.                 ld      a, 8 ;съедение
  8254. ; =============== S U B R O U T I N E =======================================
  8255. sub_AB43:                               ; CODE XREF: sub_A94F+D2 sub_AA71+17 ...
  8256.                 ex      de, hl
  8257.                 ld      (hl), b ;откуда
  8258.                 inc     hl
  8259.                 ld      (hl), e ;куда
  8260.                 inc     hl
  8261.                 ld      (hl), a ;флаги
  8262.                 inc     hl
  8263.                 ex      de, hl
  8264.                 ret
  8265.  
  8266. ; End of function sub_AB43
  8267.  
  8268.  
  8269. ; =============== S U B R O U T I N E =======================================
  8270.  
  8271.  
  8272. sub_AB4C:                               ; CODE XREF: sub_A90F   sub_AFC5+66
  8273.                 ld      de, XOR_A
  8274. ; End of function sub_AB4C
  8275.  
  8276.                 ld      (JP_ADDR), de
  8277.  
  8278.  
  8279. ; =============== S U B R O U T I N E =======================================
  8280.  
  8281.  
  8282. sub_AB53:                               ; CODE XREF: sub_B47F-4C
  8283.                 ld      a, (hl)
  8284.                 ld      (byte_D01D), a
  8285.                 inc     hl
  8286.                 push    hl
  8287.                 pop     ix
  8288.                 ld      (word_D04A), hl
  8289.                 ld      (word_D069), hl
  8290.                 xor     a
  8291.                 ld      hl, unk_D0E6
  8292.                 ld      b, #A
  8293.  
  8294.  
  8295. loc_AB67:                               ; CODE XREF: sub_AB53+16
  8296.                 ld      (hl), a
  8297.                 inc     hl
  8298.                 djnz    loc_AB67
  8299.  
  8300.                 ld      (byte_D04E), a
  8301.                 jp      loc_ABC6
  8302.  
  8303. ; ---------------------------------------------------------------------------
  8304.  
  8305. loc_AB71:                               ; CODE XREF: sub_AB53+77
  8306.                 inc     a
  8307.                 jr      z, loc_AB81
  8308.  
  8309.                 ld      a, (ix+1)
  8310.                 inc     a
  8311.                 jr      z, loc_ABC1
  8312.  
  8313.                 ld      a, 1
  8314.                 ld      (byte_D04E), a
  8315.                 jr      loc_ABC1
  8316.  
  8317. ; ---------------------------------------------------------------------------
  8318.  
  8319. loc_AB81:                               ; CODE XREF: sub_AB53+1F
  8320.                 xor     a
  8321.                 ld      (word_D04A+1), a
  8322.                 ld      a, (byte_D0EF)
  8323.                 ld      hl, (word_D069)
  8324.                 or      a
  8325.                 jr      nz, loc_ABA6
  8326.  
  8327.                 ld      a, (byte_D04E)
  8328.                 or      a
  8329.                 jr      z, loc_ABA6
  8330.  
  8331.                 cp      1
  8332.                 jr      z, loc_ABA6
  8333.  
  8334.                 ld      de, (word_D086)
  8335.                 ld      b, 3
  8336.  
  8337.  
  8338. loc_AB9E:                               ; CODE XREF: sub_AB53+4F
  8339.                 ld      a, (de)
  8340.                 ld      (hl), a
  8341.                 inc     de
  8342.                 inc     hl
  8343.                 djnz    loc_AB9E
  8344.  
  8345.                 ld      a, 6
  8346.  
  8347.  
  8348. loc_ABA6:                               ; CODE XREF: sub_AB53+39 sub_AB53+3F ...
  8349.                 ld      (hl), #FF
  8350.                 or      a
  8351.                 ret
  8352.  
  8353. ; ---------------------------------------------------------------------------
  8354.  
  8355. loc_ABAA:                               ; CODE XREF: sub_AB53+89
  8356.                 ld      a, 0
  8357.                 ld      (word_D04A+1), a
  8358.                 ret
  8359.  
  8360. ; ---------------------------------------------------------------------------
  8361.  
  8362. loc_ABB0:                               ; CODE XREF: sub_AB53+8B
  8363.                 ld      a, (byte_D04E)
  8364.                 cp      c
  8365.                 jr      nc, loc_ABC1
  8366.  
  8367.                 dec     a
  8368.                 jr      z, loc_ABC1
  8369.  
  8370.                 ld      a, c
  8371.                 ld      (byte_D04E), a
  8372.                 ld      (word_D086), ix
  8373.  
  8374.  
  8375. loc_ABC1:                               ; CODE XREF: sub_AB53+25 sub_AB53+2C ...
  8376.                 ld      de, 3
  8377.                 add     ix, de
  8378.  
  8379.  
  8380. loc_ABC6:                               ; CODE XREF: sub_AB53+1B
  8381.                 ld      a, (ix+0)
  8382.                 rlca
  8383.                 jr      c, loc_AB71
  8384.  
  8385.                 call    sub_AD40
  8386.  
  8387.                 call    sub_BC00
  8388.  
  8389.                 call    sub_AF81
  8390.  
  8391.                 ld      a, c
  8392.                 or      a
  8393.                 jr      z, loc_ABC1
  8394.  
  8395.                 call    sub_B79D
  8396.  
  8397.                 jr      c, loc_ABAA
  8398.  
  8399.                 jr      nz, loc_ABB0
  8400.  
  8401.                 ld      a, (ix+2)
  8402.                 and     #88 ; '?'
  8403.                 ld      a, c
  8404.                 jr      z, loc_ABEF
  8405.  
  8406.                 add     a, 4
  8407.                 jr      nc, loc_ABEE
  8408.  
  8409.                 ld      a, #FF
  8410.  
  8411.  
  8412. loc_ABEE:                               ; CODE XREF: sub_AB53+97
  8413.                 ld      c, a
  8414.  
  8415.  
  8416. loc_ABEF:                               ; CODE XREF: sub_AB53+93
  8417.                 ld      hl, unk_D0E6
  8418.                 cp      (hl)
  8419.                 jr      nc, loc_AC0F
  8420.  
  8421.                 ld      hl, (word_D069)
  8422.                 ld      a, (ix+0)
  8423.                 ld      (hl), a
  8424.                 inc     hl
  8425.                 ld      a, (ix+1)
  8426.                 ld      (hl), a
  8427.                 inc     hl
  8428.                 ld      a, (ix+2)
  8429.                 res     6, a
  8430.                 ld      (hl), a
  8431.                 inc     hl
  8432.                 ld      (word_D069), hl
  8433.                 jp      loc_ABC1
  8434.  
  8435. ; ---------------------------------------------------------------------------
  8436.  
  8437. loc_AC0F:                               ; CODE XREF: sub_AB53+A0
  8438.                 ld      b, 9
  8439.                 ld      d, h
  8440.                 ld      e, l
  8441.                 jp      loc_AC19
  8442.  
  8443. ; ---------------------------------------------------------------------------
  8444.  
  8445. loc_AC16:                               ; CODE XREF: sub_AB53+C9
  8446.                 ld      (de), a
  8447.                 inc     e
  8448.                 dec     b
  8449.  
  8450.  
  8451. loc_AC19:                               ; CODE XREF: sub_AB53+C0
  8452.                 inc     l
  8453.                 ld      a, (hl)
  8454.                 cp      c
  8455.                 jr      c, loc_AC16
  8456.  
  8457.                 ld      a, c
  8458.                 ld      (de), a
  8459.                 ld      de, (word_D04A)
  8460.                 ld      hl, (word_D069)
  8461.                 ld      a, b
  8462.                 add     a, a
  8463.                 add     a, b
  8464.                 sbc     hl, de
  8465.                 ld      c, a
  8466.                 ld      b, 0
  8467.                 sbc     hl, bc
  8468.                 ld      b, h
  8469.                 ld      c, l
  8470.                 ld      a, (ix+0)
  8471.                 ld      d, (ix+1)
  8472.                 ld      e, (ix+2)
  8473.                 push    de
  8474.                 ld      hl, (word_D069)
  8475.                 ld      d, h
  8476.                 ld      e, l
  8477.                 dec     hl
  8478.                 inc     de
  8479.                 inc     de
  8480.                 inc     de
  8481.                 ld      (word_D069), de
  8482.                 dec     de
  8483.                 jr      z, loc_AC4F
  8484.  
  8485.                 lddr
  8486.  
  8487.  
  8488. loc_AC4F:                               ; CODE XREF: sub_AB53+F8
  8489.                 inc     hl
  8490.                 ld      (hl), a
  8491.                 pop     de
  8492.                 inc     hl
  8493.                 ld      (hl), d
  8494.                 inc     hl
  8495.                 ld      (hl), e
  8496.                 jp      loc_ABC1
  8497.  
  8498. ; End of function sub_AB53
  8499.  
  8500.  
  8501. ; =============== S U B R O U T I N E =======================================
  8502. FindMove_D_E:                           ; CODE XREF: _FindMove_D_E
  8503.                 ld      bc, 3
  8504. loc_AC5C:                               ; CODE XREF: FindMove_D_E_continue+5 FindMove_D_E_continue+F
  8505.                 add     hl, bc
  8506. ; End of function FindMove_D_E
  8507. ; =============== S U B R O U T I N E =======================================
  8508. FindMove_D_E_continue:                          ; CODE XREF: FindMoveAndSwap+48 FindMoveAndSwap+52
  8509.                 ld      a, (hl)
  8510.                 cp      d
  8511.                 jr      z, loc_AC67 ;from совпало
  8512.                 inc     a
  8513.                 jp      nz, loc_AC5C
  8514.                 scf ;не совпало
  8515.                 ret
  8516. ; ---------------------------------------------------------------------------
  8517. loc_AC67:                               ; CODE XREF: FindMove_D_E_continue+2
  8518.                 inc     hl
  8519.                 ld      a, (hl)
  8520.                 dec     hl
  8521.                 cp      e
  8522.                 ret     z ;to совпало
  8523.                 jp      loc_AC5C
  8524. ; End of function FindMove_D_E_continue
  8525. ; ---------------------------------------------------------------------------
  8526. ; START OF FUNCTION CHUNK FOR sub_AC74
  8527.  
  8528. loc_AC6F:                               ; CODE XREF: sub_AC74+37
  8529.                 ld      a, #FF ;end of opening?
  8530.                 ld      (byte_D09E), a
  8531. ; END OF FUNCTION CHUNK FOR sub_AC74
  8532. ; =============== S U B R O U T I N E =======================================
  8533. sub_AC74:                               ; CODE XREF: sub_AFC5+B
  8534. ; FUNCTION CHUNK AT AC6F SIZE 00000005 BYTES
  8535.                 ld      a, (byte_D09E)
  8536.                 or      a
  8537.                 ret     nz ;end of opening?
  8538.                 ld      a, (byte_D20C) ;oldmove #?
  8539.                 dec     a
  8540.                 ret     nz
  8541.                 call    GEN_RANDBYTE ;b=rnd
  8542.  
  8543.                 ld      hl, #FFFF
  8544. loc_AC84:                               ; CODE XREF: sub_AC74+33
  8545.                 inc     hl ;hl=opening chunk
  8546.                 ld      a, (word_D0F7)
  8547.                 ld      c, a
  8548.                 ld      a, (byte_D09E)
  8549.                 inc     a
  8550.                 ld      (byte_D09E), a
  8551.                 dec     a
  8552.                 cp      c
  8553.                 jr      z, loc_ACB2
  8554.  
  8555.                 ld      bc, stk_1bvalue
  8556.                 add     a, c
  8557.                 ld      c, a
  8558.                 jr      nc, loc_AC9C
  8559.                 inc     b
  8560. loc_AC9C:                               ; CODE XREF: sub_AC74+25
  8561.                 ld      a, (bc)
  8562.                 and     #7F
  8563.                 ld      c, a
  8564.                 call    sub_AD01
  8565.  
  8566. loc_ACA3:                               ; CODE XREF: sub_AC74+3C
  8567.                 ld      b, a
  8568.                 res     6, a
  8569.                 cp      c
  8570.                 jr      z, loc_AC84
  8571.                 bit     6, b
  8572.                 jr      z, loc_AC6F ;end of opening?
  8573.                 call    sub_ACF6 ;find opening in loop
  8574.                 jr      loc_ACA3
  8575. ; ---------------------------------------------------------------------------
  8576.  
  8577. loc_ACB2:                               ; CODE XREF: sub_AC74+1E
  8578.                 call    GEN_RANDBYTE ;b=rnd
  8579.  
  8580.                 call    sub_AD01
  8581.  
  8582.                 ld      c, a
  8583.                 bit     6, a
  8584.                 jr      z, loc_ACDD
  8585.  
  8586.                 ld      a, 1
  8587.                 rla
  8588.                 and     b
  8589.                 jr      nz, loc_ACDD
  8590.  
  8591.  
  8592. loc_ACC3:                               ; CODE XREF: sub_AC74+60
  8593.                 push    hl
  8594.                 call    GEN_RANDBYTE ;b=rnd
  8595.  
  8596.                 call    sub_ACF6 ;find opening in loop
  8597.  
  8598.                 jr      c, loc_ACD8
  8599.  
  8600.                 pop     de
  8601.                 ld      c, a
  8602.                 bit     6, a
  8603.                 jr      z, loc_ACDD
  8604.  
  8605.                 rr      b
  8606.                 jr      c, loc_ACC3
  8607.  
  8608.                 jr      loc_ACDD
  8609.  
  8610. ; ---------------------------------------------------------------------------
  8611.  
  8612. loc_ACD8:                               ; CODE XREF: sub_AC74+56
  8613.                 pop     hl
  8614.                 call    sub_AD01
  8615.                 ld      c, a
  8616. loc_ACDD:                               ; CODE XREF: sub_AC74+47 sub_AC74+4D ...
  8617.                 ld      a, c
  8618.                 and     #3F
  8619.                 ld      d, a
  8620.                 rla
  8621.                 add     a, d
  8622.                 ld      e, a
  8623.                 ld      d, 0
  8624.                 ld      ix, tbl_D803
  8625.                 add     ix, de
  8626.                 xor     a
  8627.                 bit     7, c
  8628.                 jr      nz, loc_ACF4
  8629.                 ld      (byte_D09E), a
  8630. loc_ACF4:                               ; CODE XREF: sub_AC74+7B
  8631.                 xor     a
  8632.                 ret
  8633.  
  8634. ; End of function sub_AC74
  8635. ; =============== S U B R O U T I N E =======================================
  8636.  
  8637. sub_ACF6:                               ; CODE XREF: sub_AC74+39 sub_AC74+53
  8638. ;hl=opening chunk
  8639.                 ld      de, #FFFF
  8640. loc_ACF9:                               ; CODE XREF: sub_ACF6+9
  8641. ;hl=opening chunk
  8642.                 call    sub_AD01
  8643.                 inc     hl
  8644.                 bit     7, d
  8645.                 jr      z, loc_ACF9
  8646. ; End of function sub_ACF6
  8647. ; =============== S U B R O U T I N E =======================================
  8648.  
  8649. sub_AD01:                               ; CODE XREF: sub_AC74+2C sub_AC74+41 ...
  8650. ;hl=opening chunk
  8651.                 call    OPENING_SEARCH
  8652.                 bit     7, a
  8653.                 jr      z, loc_AD09
  8654.                 dec     de
  8655. loc_AD09:                               ; CODE XREF: sub_AD01+5
  8656.                 bit     6, a
  8657.                 ret     z
  8658.                 inc     de
  8659.                 ret
  8660.  
  8661. ; End of function sub_AD01
  8662. ; =============== S U B R O U T I N E =======================================
  8663.  
  8664. OPENING_SEARCH:
  8665.                 push    bc              ; get any 8 bits from 9-byte chunks? HL=index into them, 0..63 into first chunk, 64..127 into next, etc.
  8666.                 push    hl
  8667.                 ld      a, l
  8668.                 srl     h
  8669.                 rra
  8670.                 srl     h
  8671.                 rra
  8672.                 srl     h
  8673.                 rra
  8674.                 ld      b, h
  8675.                 ld      c, a            ; BC=HL/8
  8676.                 pop     hl
  8677.                 push    hl
  8678.                 ld      a, 7
  8679.                 and     l
  8680.                 add     hl, bc          ; HL=HL*1.125
  8681.                 ld      bc, Openings
  8682.                 add     hl, bc
  8683.                 ld      b, a
  8684.                 inc     b
  8685.                 ld      a, (hl)
  8686.                 inc     hl
  8687.                 ld      c, (hl)
  8688. loc_AD2B:
  8689.                 rl      c
  8690.                 rla
  8691.                 djnz    loc_AD2B
  8692.                 pop     hl
  8693.                 pop     bc              ; output is A (8 bits from a word) + CY (9th bit)
  8694.                 ret
  8695. ; End of function OPENING_SEARCH
  8696. ; =============== S U B R O U T I N E =======================================
  8697.  
  8698. GEN_RANDBYTE:                           ; CODE XREF: sub_AC74+A
  8699.                                         ; sub_AC74:loc_ACB2 ...
  8700.                 ld      a, r
  8701.                 ld      b, a
  8702.                 ld      a, (RAND_SEED)
  8703.                 xor     b
  8704.                 rra
  8705.                 ld      (RAND_SEED), a
  8706.                 ld      b, a
  8707.                 ret ;b=rnd
  8708. ; End of function GEN_RANDBYTE
  8709. ; =============== S U B R O U T I N E =======================================
  8710.  
  8711. sub_AD40:                               ; CODE XREF: sub_A906   sub_AB53+79 ...
  8712.                 pop     hl
  8713.                 exx ;hl'=return addr
  8714.                 ld      hl, (word_D00D)
  8715.                 push    hl
  8716.                 ld      hl, byte_D03B
  8717.                 res     7, (hl)
  8718.                 ld      hl,  word_D240+1
  8719.                 ld      a, (byte_D097)
  8720.                 add     a, a
  8721.                 add     a, l
  8722.                 ld      l, a
  8723.                 ld      c, (ix+1)
  8724.                 res     7, c
  8725.                 ld      (hl), c
  8726.                 ld      (word_D03D), hl
  8727.                 dec     l
  8728.                 ld      b, (ix+0)
  8729.                 res     7, b
  8730.                 ld      (hl), b
  8731.                 dec     l
  8732.                 bit     7, (hl)
  8733.                 jr      nz, loc_ADA9
  8734.  
  8735.                 dec     l
  8736.                 dec     l
  8737.                 ld      a, (hl)
  8738.                 and     #F7
  8739.                 cp      b
  8740.                 jr      nz, loc_ADA9
  8741.  
  8742.                 dec     l
  8743.                 ld      a, (hl)
  8744.                 and     #77
  8745.                 cp      c
  8746.                 jr      nz, loc_ADA9
  8747.  
  8748.                 dec     l
  8749.                 ld      a, (hl)
  8750.                 and     #F7
  8751.                 jp      m, loc_ADA2
  8752.  
  8753.                 push    bc
  8754.                 ld      b, a
  8755.                 dec     l
  8756.                 ld      a, (hl)
  8757.                 and     #77
  8758.                 ld      c, a
  8759.                 inc     l
  8760.                 inc     l
  8761.                 inc     l
  8762.                 inc     l
  8763.                 ld      a, (hl)
  8764.                 and     #77
  8765.                 cp      b
  8766.                 jr      nz, loc_ADA1
  8767.  
  8768.                 inc     l
  8769.                 ld      a, (hl)
  8770.                 and     #77
  8771.                 cp      c
  8772.                 jr      nz, loc_ADA1
  8773.  
  8774.                 ld      hl, byte_D03B
  8775.                 set     7, (hl)
  8776.                 set     6, (hl)
  8777.                 pop     bc
  8778.                 jr      loc_ADA9
  8779.  
  8780. ; ---------------------------------------------------------------------------
  8781.  
  8782. loc_ADA1:                               ; CODE XREF: sub_AD40+4E sub_AD40+55
  8783.                 pop     bc
  8784.  
  8785.  
  8786. loc_ADA2:                               ; CODE XREF: sub_AD40+3C
  8787.                 ld      hl, byte_D03B
  8788.                 set     7, (hl)
  8789.                 res     6, (hl)
  8790.  
  8791.  
  8792. loc_ADA9:                               ; CODE XREF: sub_AD40+27 sub_AD40+2F ...
  8793.                 ld      h, BRD_88_0/256
  8794.                 ld      l, b
  8795.                 ld      e, (hl)
  8796.                 ld      d, l
  8797.                 push    de
  8798.                 ld      (hl), 0 ;затёрли старое положение короля при рокировке?
  8799.                 ld      l, c
  8800.                 ld      c, (hl)
  8801.                 ld      (hl), e ;переместили короля при рокировке?
  8802.                 ld      b, l ;положение короля?
  8803.                 inc     h               ; word_D100
  8804.                 res     2, e ;код короля?
  8805.                 ld      l, e
  8806.                 ld      (hl), b ;положение короля?
  8807.                 inc     l
  8808.                 ld      e, d
  8809.                 ld      d, (hl)
  8810.                 ld      a, #F
  8811.                 and     d
  8812.                 jp      z, loc_AF1F
  8813.  
  8814.                 dec     a
  8815.                 jr      z, loc_ADF5
  8816.  
  8817.                 set     4, (hl)
  8818.                 dec     c
  8819.                 inc     c
  8820.                 jr      nz, loc_ADD1
  8821.  
  8822.  
  8823. loc_ADCC:                               ; CODE XREF: sub_AD40+1E7
  8824. ;hl'=return addr
  8825.                 ld      e, #80
  8826.                 push    de
  8827.                 exx
  8828.                 jp      (hl)
  8829.  
  8830. ; ---------------------------------------------------------------------------
  8831.  
  8832. loc_ADD1:                               ; CODE XREF: sub_AD40+8A
  8833.                                         ; sub_AD40+1BD ...
  8834.                 ld      e, 0
  8835. loc_ADD3:                               ; CODE XREF: sub_AD40+1AE
  8836.                                         ; sub_AD40+1D2
  8837.                 push    bc
  8838.                 res     2, c
  8839.                 ld      l, c
  8840.                 set     7, (hl)
  8841.                 inc     l
  8842.                 ld      a, #F
  8843.                 and     (hl)
  8844.                 bit     7, l
  8845.                 jr      z, loc_ADE3
  8846.                 neg
  8847. loc_ADE3:                               ; CODE XREF: sub_AD40+9F
  8848. ;hl'=return addr
  8849.                 ld      hl, word_D00D
  8850.                 add     a, (hl)
  8851.                 ld      (hl), a
  8852.                 ld      hl, byte_D03B
  8853.                 res     7, (hl)
  8854.                 ld      hl, (word_D03D)
  8855.                 set     7, (hl)
  8856.                 push    de
  8857.                 exx
  8858.                 jp      (hl)
  8859.  
  8860. ; ---------------------------------------------------------------------------
  8861.  
  8862. loc_ADF5:                               ; CODE XREF: sub_AD40+84
  8863.                 ld      a, b
  8864.                 cp      e
  8865.                 jr      c, loc_AE66
  8866.  
  8867.                 rla
  8868.                 rla
  8869.                 jr      nc, loc_AE45
  8870.  
  8871.                 rl      a
  8872.                 jr      c, loc_AE4D
  8873.  
  8874.                 jp      m, loc_AE2D
  8875.  
  8876.                 ld      (hl), #21 ; '!'
  8877.                 ld      e, l
  8878.                 dec     h
  8879.                 ld      a, b
  8880.                 add     a, #10
  8881.                 ld      l, a
  8882.                 ld      a, (hl) ;впереди
  8883.                 cp      #C0
  8884.                 jr      nc, loc_AE59
  8885.  
  8886.                 ld      a, l
  8887.                 add     a, #F
  8888.                 ld      l, a
  8889.                 ld      a, (hl) ;ещё впереди слева
  8890.                 cp      #C0
  8891.                 jr      nc, loc_AE59
  8892.  
  8893.                 inc     l
  8894.                 ld      a, (hl) ;ещё впереди
  8895.                 cp      #C0
  8896.                 jr      nc, loc_AE59
  8897.  
  8898.                 inc     l
  8899.                 ld      a, (hl) ;ещё впереди справа
  8900.                 cp      #C0
  8901.                 jr      nc, loc_AE59
  8902.  
  8903.                 ld      l, e
  8904.                 inc     h
  8905.                 ld      (hl), #51 ; 'Q'
  8906.                 jp      loc_AEF3
  8907.  
  8908. ; ---------------------------------------------------------------------------
  8909.  
  8910. loc_AE2D:                               ; CODE XREF: sub_AD40+C1
  8911.                 ld      (hl), #41 ; 'A'
  8912.                 ld      e, l
  8913.                 dec     h
  8914.                 ld      a, b
  8915.                 add     a, #10
  8916.                 ld      l, a
  8917.                 ld      a, (hl) ;впереди
  8918.                 cp      #C0
  8919.                 jr      nc, loc_AE59
  8920.  
  8921.                 ld      l, e
  8922.                 inc     h
  8923.                 ld      (hl), #71 ; 'q'
  8924.                 set     0, (ix+2)
  8925.                 jp      loc_AEF3
  8926.  
  8927. ; ---------------------------------------------------------------------------
  8928.  
  8929. loc_AE45:                               ; CODE XREF: sub_AD40+BB
  8930.                 cp      #C0
  8931.                 jp      nc, loc_AEF1
  8932.  
  8933.                 jp      loc_AEF3
  8934.  
  8935. ; ---------------------------------------------------------------------------
  8936.  
  8937. loc_AE4D:                               ; CODE XREF: sub_AD40+BF
  8938.                 jp      m, loc_AECF
  8939.  
  8940.                 ld      (hl), #A1
  8941.                 set     0, (ix+2)
  8942.                 jp      loc_AEF3
  8943.  
  8944. ; ---------------------------------------------------------------------------
  8945.  
  8946. loc_AE59:                               ; CODE XREF: sub_AD40+CF sub_AD40+D8 ...
  8947.                 ld      a, (ix+2)
  8948.                 bit     3, a
  8949.                 jp      z, loc_AF15
  8950.  
  8951.                 ld      l, e
  8952.                 inc     h
  8953.                 jp      loc_AEFB
  8954.  
  8955. ; ---------------------------------------------------------------------------
  8956.  
  8957. loc_AE66:                               ; CODE XREF: sub_AD40+B7
  8958.                 rla
  8959.                 rla
  8960.                 jr      c, loc_AEBC
  8961.  
  8962.                 rl      a
  8963.                 jr      nc, loc_AEC3
  8964.  
  8965.                 jp      p, loc_AEA2
  8966.  
  8967.                 ld      (hl), #21 ; '!'
  8968.                 ld      e, l
  8969.                 dec     h
  8970.                 ld      a, b
  8971.                 sub     #10
  8972.                 ld      l, a
  8973.                 ld      a, (hl) ;выше
  8974.                 and     #C0
  8975.                 cp      #40
  8976.                 jr      nc, loc_AE59
  8977.  
  8978.                 ld      a, l
  8979.                 sub     #11
  8980.                 ld      l, a
  8981.                 ld      a, (hl) ;ещё выше левее
  8982.                 and     #C0
  8983.                 cp      #40
  8984.                 jr      z, loc_AE59
  8985.  
  8986.                 inc     l
  8987.                 ld      a, (hl) ;ещё выше
  8988.                 and     #C0
  8989.                 cp      #40
  8990.                 jr      z, loc_AE59
  8991.  
  8992.                 inc     l
  8993.                 ld      a, (hl) ;ещё выше правее
  8994.                 and     #C0
  8995.                 cp      #40
  8996.                 jr      z, loc_AE59
  8997.  
  8998.                 ld      l, e
  8999.                 inc     h
  9000.                 ld      (hl), #51 ; 'Q'
  9001.                 jp      loc_AEF3
  9002.  
  9003. ; ---------------------------------------------------------------------------
  9004.  
  9005. loc_AEA2:                               ; CODE XREF: sub_AD40+12E
  9006.                 ld      (hl), #41 ; 'A'
  9007.                 ld      e, l
  9008.                 dec     h
  9009.                 ld      a, b
  9010.                 sub     #10
  9011.                 ld      l, a
  9012.                 ld      a, (hl) ;выше
  9013.                 and     #C0
  9014.                 cp      #40
  9015.                 jr      z, loc_AE59
  9016.  
  9017.                 ld      l, e
  9018.                 inc     h
  9019.                 ld      (hl), #71 ; 'q'
  9020.                 set     0, (ix+2)
  9021.                 jp      loc_AEF3
  9022.  
  9023. ; ---------------------------------------------------------------------------
  9024.  
  9025. loc_AEBC:                               ; CODE XREF: sub_AD40+128
  9026.                 and     #C0
  9027.                 jr      z, loc_AEF1
  9028.  
  9029.                 jp      loc_AEF3
  9030.  
  9031. ; ---------------------------------------------------------------------------
  9032.  
  9033. loc_AEC3:                               ; CODE XREF: sub_AD40+12C
  9034.                 jp      p, loc_AECF
  9035.  
  9036.                 ld      (hl), #A1
  9037.                 set     0, (ix+2)
  9038.                 jp      loc_AEF3
  9039.  
  9040. ; ---------------------------------------------------------------------------
  9041.  
  9042. loc_AECF:                               ; CODE XREF: sub_AD40:loc_AE4D
  9043.                                         ; sub_AD40:loc_AEC3
  9044.                 set     6, (ix+2)
  9045.                 ld      (hl), #19
  9046.                 ld      a, (word_D00D)
  9047.                 bit     7, l
  9048.                 jr      z, loc_AEDE
  9049.                 add     a, #10
  9050. loc_AEDE:                               ; CODE XREF: sub_AD40+19A
  9051.                 sub     8
  9052.                 ld      (word_D00D), a
  9053.                 ld      e, #84
  9054.                 bit     3, (ix+2)
  9055.                 jp      z, loc_AF17
  9056.  
  9057.                 ld      e, 4
  9058.                 jp      loc_ADD3
  9059.  
  9060. ; ---------------------------------------------------------------------------
  9061.  
  9062. loc_AEF1:                               ; CODE XREF: sub_AD40+107
  9063.                                         ; sub_AD40+17E
  9064.                 ld      (hl), #11
  9065.  
  9066. loc_AEF3:                               ; CODE XREF: sub_AD40+EA
  9067.                                         ; sub_AD40+102 ...
  9068.                 ld      a, (ix+2)
  9069.                 bit     3, a
  9070.                 jp      z, loc_AF15
  9071.  
  9072. loc_AEFB:                               ; CODE XREF: sub_AD40+123
  9073.                 bit     5, a
  9074.                 jp      z, loc_ADD1
  9075.  
  9076.                 ld      a, b
  9077.                 bit     7, l
  9078.                 jr      z, loc_AF07
  9079.                 add     a, #20 ; ' '
  9080. loc_AF07:                               ; CODE XREF: sub_AD40+1C3
  9081.                 sub     #10
  9082.                 dec     h
  9083.                 ld      l, a ;выше?
  9084.                 ld      c, (hl)
  9085.                 ld      (hl), 0
  9086.                 inc     h
  9087.                 ld      b, l
  9088.                 ld      e, 1
  9089.                 jp      loc_ADD3
  9090.  
  9091. ; ---------------------------------------------------------------------------
  9092.  
  9093. loc_AF15:                               ; CODE XREF: sub_AD40+11E
  9094.                                         ; sub_AD40+1B8
  9095.                 ld      e, #80
  9096.  
  9097. loc_AF17:                               ; CODE XREF: sub_AD40+1A9
  9098.                 push    de
  9099.                 ld      hl, (word_D03D)
  9100.                 set     7, (hl)
  9101.                 exx
  9102.                 jp      (hl)
  9103.  
  9104. ; ---------------------------------------------------------------------------
  9105.  
  9106. loc_AF1F:                               ; CODE XREF: sub_AD40+80
  9107.                 call    sub_AF65
  9108.  
  9109.                 ld      a, (ix+2)
  9110.                 and     #18
  9111.                 jp      z, loc_ADCC
  9112.  
  9113.                 and     8
  9114.                 jp      nz, loc_ADD1
  9115.  
  9116.                 set     5, (hl)
  9117.                 dec     h
  9118.                 bit     2, b ;b=позиция короля после рокировки
  9119.                 jr      z, loc_AF40
  9120. ;ладья при рокировке вправо?
  9121.                if FIX ;Chess960 найти позицию ладьи до рокировки (записать при генерации! не обязательно самая правая фигура, не считая короля, король мог её затереть!!!)
  9122.                 ld a,b
  9123.                 and 0xf8
  9124. rightrookinitpos=$+1
  9125.                 or 6 ;0..7
  9126.                 ld l,a
  9127.                 and 0x40
  9128.                 add a,a
  9129.                 or 0x1c ;код правой ладьи
  9130.                 ld c,a
  9131.                 ld a,b ;b=позиция короля после рокировки
  9132.                 ld b,l ;b=старая позиция ладьи
  9133.                 cp l
  9134.                 jr z,$+4 ;король затёр ладью
  9135.                 ld (hl),0 ;снимаем ладью
  9136.                else
  9137.                 inc     b ;старая позиция ладьи (H)
  9138.                 ld      l, b ;b=старая позиция ладьи
  9139.                 ld      c,(hl)
  9140.                 ld      (hl), 0 ;снимаем ладью
  9141.                endif
  9142.                if FIX
  9143.                ld l,a ;позиция короля после рокировки
  9144.                dec l ;b=старая позиция ладьи, l=новая позиция ладьи
  9145.                else
  9146.                 dec     l
  9147.                 dec     l ;b=старая позиция ладьи, l=новая позиция ладьи
  9148.                endif
  9149.                 jp      loc_AF49
  9150.  
  9151. ; ---------------------------------------------------------------------------
  9152.  
  9153. loc_AF40:                               ; CODE XREF: sub_AD40+1F4
  9154. ;ладья при рокировке влево?
  9155.                if FIX ;Chess960 найти позицию ладьи до рокировки (записать при генерации! не обязательно самая левая фигура, не считая короля, король мог её затереть!!!)
  9156.                 ld a,b
  9157.                 and 0xf8
  9158. leftrookinitpos=$+1
  9159.                 or 0 ;0..7
  9160.                 ld l,a
  9161.                 and 0x40
  9162.                 add a,a
  9163.                 or 0x14 ;код левой ладьи
  9164.                 ld c,a
  9165.                 ld a,b ;b=позиция короля после рокировки
  9166.                 ld b,l ;b=старая позиция ладьи
  9167.                 cp l
  9168.                 jr z,$+4 ;король затёр ладью
  9169.                 ld (hl),0 ;снимаем ладью
  9170.                else
  9171.                 dec     b
  9172.                 dec     b
  9173.                 ld      l, b
  9174.                 ld      c, (hl)
  9175.                 ld      (hl), 0 ;снимаем ладью
  9176.                endif
  9177.                if FIX
  9178.                ld l,a ;позиция короля после рокировки
  9179.                inc l ;b=старая позиция ладьи, l=новая позиция ладьи
  9180.                else
  9181.                 inc     l
  9182.                 inc     l
  9183.                 inc     l
  9184.                endif
  9185.  
  9186. loc_AF49:                               ; CODE XREF: sub_AD40+1FD
  9187. ;b=старая позиция ладьи, l=новая позиция ладьи
  9188.                 ld      (hl), c ;ставим ладью на новое место при рокировке (король уже стоит)?
  9189.                 ld      a, (word_D04A+1)
  9190.                 or      a
  9191.                 jr      z, loc_AF54
  9192.  
  9193.                 ld      a, #84
  9194.                 and     c
  9195.                 ld      (hl), a
  9196.  
  9197. loc_AF54:                               ; CODE XREF: sub_AD40+20E
  9198.                 push    bc
  9199.                 res     2, c
  9200.                 ld      b, word_D100/256
  9201.                 ld      a, l
  9202.                 ld      (bc), a
  9203.                 ld      e, #40
  9204.                 ld      hl, (word_D03D)
  9205.                 set     7, (hl)
  9206.                 push    de
  9207.                 exx
  9208.                 jp      (hl)
  9209.  
  9210. ; End of function sub_AD40
  9211.  
  9212.  
  9213. ; =============== S U B R O U T I N E =======================================
  9214.  
  9215.  
  9216. sub_AF65:                               ; CODE XREF: sub_AD40:loc_AF1F
  9217.                 ld      a, d
  9218.                 or      #10
  9219.  
  9220.  
  9221. loc_AF68:                               ; CODE XREF: sub_884D:loc_A912
  9222.                 and     #3F
  9223.                 ld      e, #11
  9224.  
  9225. loc_AF6C:                               ; CODE XREF: sub_AF65+19
  9226.                 ld      (hl), a
  9227.                 ld      a, b
  9228.                 add     a, e
  9229.                 and     #88
  9230.                 ret     nz
  9231.                 ld      a, b
  9232.                 sub     e
  9233.                 and     #88
  9234.                 ret     nz
  9235.                 ld      a, #11
  9236.                 add     a, e
  9237.                 ld      e, a
  9238.                 ld      a, #40
  9239.                 add     a, (hl)
  9240.                 jp      loc_AF6C
  9241.  
  9242. ; End of function sub_AF65
  9243.  
  9244.  
  9245. ; =============== S U B R O U T I N E =======================================
  9246.  
  9247.  
  9248. sub_AF81:                               ; CODE XREF: sub_A909   sub_AB53+7F ...
  9249.                 pop     hl
  9250.                 exx
  9251.                 pop     af
  9252.                 pop     hl ;h=старое положение фигуры??? ;l=код фигуры???
  9253.                 ld      c, a
  9254.                 ld      a, 0
  9255.                 ld      d, BRD_88_0/256
  9256.                 jp      m, loc_AF9A
  9257.  
  9258.                 jr      z, loc_AFB6 ;отмена хода ладьёй при отмене рокировки? выход в loc_AF99
  9259.  
  9260.                 jr      c, loc_AFAF ;отмена хода без съедения? выход в loc_AF92
  9261. ;отмена хода со съедением?
  9262.                 ld      b, l ;код фигуры??? съеденной???
  9263.  
  9264. loc_AF92:                               ; CODE XREF: sub_AF81+32
  9265.                 res     2, l
  9266.                 ld      h, word_D100/256
  9267.                 res     7, (hl)
  9268.                 ld      a, b ;код фигуры??? или 0 (после loc_AFAF)
  9269.  
  9270. loc_AF99:                               ; CODE XREF: sub_AF81+41
  9271.                 pop     hl
  9272.  
  9273. loc_AF9A:                               ; CODE XREF: sub_AF81+9
  9274.                 ld      e, h ;ещё одно старое положение фигуры???
  9275.                 ex      de, hl
  9276.                 ld      (hl), e ;код фигуры на старое место???
  9277.                 ex      de, hl
  9278.                 res     2, l
  9279.                 ld      h, word_D100/256
  9280.                 ld      b, (hl) ;положение фигуры???
  9281.                 ld      (hl), e ;старое положение фигуры???
  9282.                 inc     l
  9283.                 ld      (hl), c ;???
  9284.                 ld      l, b ;положение фигуры???
  9285.                 dec     h               ; BRD_88_0/256
  9286.                if FIX ;затираем, только если фигура сдвинулась!
  9287.                 ld b,a ;код фигуры??? или 0 (после loc_AFAF)
  9288.                 ld a,l
  9289.                 cp e
  9290.                 jr z,$+3 ;фигура не сдвинулась?
  9291.                 ld (hl),b ;вернули ход назад? ;код фигуры??? или 0 (после loc_AFAF)
  9292.                else
  9293.                 ld      (hl), a ;вернули ход назад? ;код фигуры??? или 0 (после loc_AFAF)
  9294.                endif
  9295.                 pop     hl
  9296.                 ld      (word_D00D), hl
  9297.                 exx
  9298.                 jp      (hl)
  9299.  
  9300. ; ---------------------------------------------------------------------------
  9301.  
  9302. loc_AFAF:                               ; CODE XREF: sub_AF81+E
  9303.                 ld      e, h ;старое положение фигуры???
  9304.                 ld      b, a ;0
  9305.                 ld      a, l ;код фигуры???
  9306.                 ld      (de), a ;[BRD_88_0 + h]
  9307.                 jp      loc_AF92
  9308.  
  9309. ; ---------------------------------------------------------------------------
  9310.  
  9311. loc_AFB6:                               ; CODE XREF: sub_AF81+C ;отмена рокировки
  9312.                 ld      e, h ;старое положение ладьи???
  9313.                if FIX ;если ладья обменивалась прямо на месте с королём, то надо вернуть a=l, иначе 0
  9314.                ;чтобы после перемещения короля обратно он оставил ладью где надо
  9315.                ;как определить? достаточно читать клетку изначального (de) (старое положение ладьи) и увидеть там не 0
  9316.                 ld a,(de) ;старое положение ладьи???
  9317.                 and 0x3c
  9318.                 cp (_K|4)&0x3c ;занято королём?
  9319.                 ld      a, l ;код ладьи???
  9320.                 ;ld     (de), a ;[BRD_88_0 + h]
  9321.                push de
  9322.                 res     2, l
  9323.                 ld      h, word_D100/256
  9324.                 ld      b, (hl) ;положение ладьи???
  9325.                 ld      (hl), e ;старое положение ладьи???
  9326.                 ld      e, b ;положение ладьи???              
  9327.                 ex de,hl
  9328.                 ld (hl),0 ;стираем ладью? (TODO только если она сдвинулась!)
  9329.                 ex de,hl
  9330.                pop de
  9331.                ld (de),a ;ставим ладью              
  9332.                 jr z,$+3 ;старое положение ладьи занято королём ;a=код ладьи
  9333.                 xor a ;не было занято, можно затирать нулём после движения короля
  9334.                else
  9335.                 ld      a, l ;код ладьи???
  9336.                 ld      (de), a ;[BRD_88_0 + h]
  9337.                 res     2, l
  9338.                 ld      h, word_D100/256
  9339.                 ld      b, (hl) ;положение ладьи???
  9340.                 ld      (hl), e ;старое положение ладьи???
  9341.                 xor     a
  9342.                 ld      e, b ;положение ладьи???
  9343.                 ld      (de), a ;стираем ладью?
  9344.                endif
  9345.                 jp      loc_AF99 ;продолжаем отмену хода???
  9346.  
  9347. ; End of function sub_AF81
  9348.  
  9349.  
  9350. ; =============== S U B R O U T I N E =======================================
  9351.  
  9352.  
  9353. sub_AFC5:                               ; CODE XREF: sub_A900
  9354.                 ld      ix, word_D059
  9355.                 call    sub_A94F
  9356.  
  9357.                 dec     hl
  9358.                 dec     hl
  9359.                 ld      (hl), #FF
  9360.                 call    sub_AC74
  9361.  
  9362.                 jp      z, loc_B0B7
  9363.  
  9364.                 ld      a, (byte_D0B4)
  9365.                 bit     5, a
  9366.                 jr      z, loc_AFE0 ;visible board?
  9367.  
  9368.                 call    nz, sub_B2E2
  9369.  
  9370.  
  9371. loc_AFE0:                               ; CODE XREF: sub_AFC5+16
  9372.                 call    sub_B2D1 ;копирует 14 координат полей с маской 0yyy0xxx из byte_D258 в byte_D20D
  9373.  
  9374.                 call    sub_B2F1
  9375.  
  9376.                 call    sub_B1EB
  9377.  
  9378.                 ld      hl, byte_D0B3 ;d3=swap board
  9379.                 res     5, (hl)
  9380.                 ld      hl, byte_D108
  9381.                 xor     a
  9382.                 ld      (byte_D04C), a
  9383.                 call    sub_A932
  9384.  
  9385.                 ld      e, c
  9386.                 ld      l, #88
  9387.                 call    sub_A932
  9388.  
  9389.                 ld      a, c
  9390.                 sub     e
  9391.                 ld      (byte_D02E), a
  9392.                 ld      a, (byte_D049) ;move #
  9393.                 cp      8
  9394.                 cpl
  9395.                 jr      c, loc_B00D
  9396.                 ld      a, c
  9397.                 add     a, e
  9398. loc_B00D:                               ; CODE XREF: sub_AFC5+44
  9399.                 ld      hl, byte_A928-1
  9400.  
  9401. loc_B010:                               ; CODE XREF: sub_AFC5+4E
  9402.                 inc     hl
  9403.                 cp      (hl)
  9404.                 inc     hl
  9405.                 jr      c, loc_B010
  9406.  
  9407.                 ld      b, (hl)
  9408.                 ld      hl, byte_D02D
  9409.                 ld      a, (hl)
  9410.                 and     1
  9411.                 or      b
  9412.                 ld      (hl), a
  9413.                 xor     a
  9414.                 ld      (word_D00D), a
  9415.                 ld      a, #FE
  9416.                 ld      (byte_D098), a
  9417.                 call    sub_B2B9
  9418.  
  9419.                 push    hl
  9420.                 call    sub_AB4C
  9421.  
  9422.                 pop     ix
  9423.                 scf
  9424.                 ret     z
  9425.                 ld      a, (byte_D0EF)
  9426.                 ld      (byte_D08B), a
  9427.                 inc     ix
  9428.                 xor     a
  9429.                 ld      (word_D00D+1), a
  9430.                 inc     a
  9431.                 ld      (byte_D03B), a
  9432.                 ld      a, (curlevel)
  9433.                 cp      #B
  9434.                 call    nc, sub_B8B2
  9435.  
  9436.                 ld      a, (timenorm)
  9437.                 ld      (byte_D0F2), a
  9438.  
  9439.  
  9440. loc_B050:                               ; CODE XREF: sub_AFC5+EF
  9441.                 call    sub_8F4D
  9442.  
  9443.                 call    loc_B819
  9444.  
  9445.                 jr      c, loc_B0B7
  9446.  
  9447.                 push    ix
  9448.                 call    sub_B19C
  9449.  
  9450. loc_B05D:                               ; CODE XREF: sub_AFC5:loc_B182
  9451.                 ld      a, (curlevel)
  9452.                 cp      #C
  9453.                 jr      nz, loc_B07A
  9454.  
  9455.                 xor     a
  9456.                 ld      (byte_D08A), a
  9457.                 ld      (byte_D08C), a
  9458.                 ld      (byte_D00B), a
  9459.                 ld      (byte_D01C), a
  9460.                 inc     a
  9461.                 ld      (byte_D08B), a
  9462.                 ld      a, #80
  9463.                 ld      (byte_D019), a
  9464.  
  9465. loc_B07A:                               ; CODE XREF: sub_AFC5+9D
  9466.                 call    sub_B47F
  9467.  
  9468.                 call    sub_B2D1 ;копирует 14 координат полей с маской 0yyy0xxx из byte_D258 в byte_D20D
  9469.  
  9470.                 ld      hl, byte_D08B
  9471.                 pop     ix
  9472.                 ld      a, (curlevel)
  9473.                 cp      #C
  9474.                 jr      nz, loc_B091
  9475.  
  9476.                 call    sub_A6F7
  9477.  
  9478.                 jr      loc_B097
  9479.  
  9480. ; ---------------------------------------------------------------------------
  9481.  
  9482. loc_B091:                               ; CODE XREF: sub_AFC5+C5
  9483.                 ld      a, (ix+3)
  9484.                 inc     a
  9485.                 jr      z, loc_B09C
  9486.  
  9487. loc_B097:                               ; CODE XREF: sub_AFC5+CA
  9488.                 ld      a, (hl)
  9489.                 cp      #FE
  9490.                 jr      c, loc_B0A3
  9491.  
  9492. loc_B09C:                               ; CODE XREF: sub_AFC5+D0
  9493.                 ld      a, (byte_D0B4)
  9494.                 bit     5, a
  9495.                 jr      z, loc_B0B7 ;visible board?
  9496.  
  9497. loc_B0A3:                               ; CODE XREF: sub_AFC5+D5
  9498.                 ld      a, (byte_D0B4)
  9499.                 rla
  9500.                 jr      c, loc_B0B7
  9501.  
  9502.                 push    ix
  9503.                 ld      a, (byte_D00B)
  9504.                 cp      (hl)
  9505.                 jp      z, loc_B175
  9506.  
  9507.                 pop     ix
  9508.                 jp      loc_B050
  9509.  
  9510. ; ---------------------------------------------------------------------------
  9511.  
  9512. loc_B0B7:                               ; CODE XREF: sub_AFC5+E sub_AFC5+91     ...
  9513.                 ld      a, (byte_D0B4)
  9514.                 bit     5, a
  9515.                 jp      nz, loc_B164 ;invisible board?
  9516.  
  9517.                 ld      bc, (INC_SECONDS)
  9518.                 ld      hl, (word_D088)
  9519.                 add     hl, bc
  9520.                 ld      (word_D088), hl
  9521.                 ld      a, (byte_D049) ;move #
  9522.                 cp      9
  9523.                 jp      c, loc_B164
  9524.  
  9525.                 ld      h, b
  9526.                 ld      l, c
  9527.                 ld      a, (byte_D03C)
  9528.                 cp      4
  9529.                 jr      nc, loc_B0E9
  9530.  
  9531.                 push    af
  9532.                 ld      a, (byte_D0B3) ;d3=swap board
  9533.                 bit     5, a
  9534.                 jr      nz, loc_B0E8
  9535.  
  9536.                 ld      bc, (word_D02B)
  9537.                 add     hl, bc
  9538.  
  9539. loc_B0E8:                               ; CODE XREF: sub_AFC5+11C
  9540.                 pop     af
  9541.  
  9542. loc_B0E9:                               ; CODE XREF: sub_AFC5+114
  9543.                 cp      6
  9544.                 ld      a, (byte_D02A)
  9545.                 ld      c, a
  9546.                 ld      b, 0
  9547.                 jr      c, loc_B0FE
  9548.  
  9549.                 ld      a, c
  9550.                 rra
  9551.                 rra
  9552.                 and     #3F
  9553.                 add     a, c
  9554.                 ld      c, a
  9555.                 ld      a, 0
  9556.                 adc     a, b
  9557.                 ld      b, a
  9558.  
  9559. loc_B0FE:                               ; CODE XREF: sub_AFC5+12C
  9560.                 ld      a, 4
  9561.  
  9562. loc_B100:                               ; CODE XREF: sub_AFC5+140
  9563.                 dec     a
  9564.                 jr      z, loc_B107
  9565.  
  9566.                 sbc     hl, bc
  9567.                 jr      nc, loc_B100
  9568.  
  9569. loc_B107:                               ; CODE XREF: sub_AFC5+13C
  9570.                 sub     2
  9571.                 jr      z, loc_B120
  9572.  
  9573.                 jr      c, loc_B11D
  9574.  
  9575.                 ld      a, (byte_D03C)
  9576.                 cp      3
  9577.                 jr      nc, loc_B11B
  9578.  
  9579.                 ld      a, (byte_D0B3) ;d3=swap board
  9580.                 bit     5, a
  9581.                 jr      nz, loc_B120
  9582.  
  9583. loc_B11B:                               ; CODE XREF: sub_AFC5+14D
  9584.                 ld      a, 1
  9585.  
  9586. loc_B11D:                               ; CODE XREF: sub_AFC5+146
  9587.                 call    IncreaseTimeNorm_A
  9588.  
  9589. loc_B120:                               ; CODE XREF: sub_AFC5+144
  9590.                                         ; sub_AFC5+154
  9591.                 ld      a, (curlevel)
  9592.                 cp      #A
  9593.                 jr      z, loc_B14F
  9594.  
  9595.                 ld      a, (byte_D02D)
  9596.                 bit     2, a
  9597.                 jr      nz, loc_B14F
  9598.  
  9599.                 ld      a, (timeformove)
  9600.                 cp      #9B
  9601.                 jr      c, loc_B164
  9602.  
  9603.                 ld      a, (curlevel)
  9604.                 add     a, a
  9605.                 ld      hl, tbl_B8DD-2
  9606.                 add     a, l
  9607.                 ld      l, a
  9608.                 ld      a, 0
  9609.                 adc     a, h
  9610.                 ld      h, a
  9611.                 ld      a, (timenorm)
  9612.                 sub     3
  9613.                 sub     (hl)
  9614.                 neg
  9615.                 call    m, IncreaseTimeNorm_A
  9616.  
  9617.                 jr      loc_B164
  9618.  
  9619. ; ---------------------------------------------------------------------------
  9620.  
  9621. loc_B14F:                               ; CODE XREF: sub_AFC5+160
  9622.                                         ; sub_AFC5+167
  9623.                 ld      a, (timenorm)
  9624.                 add     a, 4
  9625.                 ld      hl, byte_D0F2
  9626.                 cp      (hl)
  9627.                 ld      a, 2
  9628.                 jr      nc, loc_B164
  9629.  
  9630.                 ld      hl, byte_D0B3 ;d3=swap board
  9631.                 bit     5, (hl)
  9632.                 call    z, IncreaseTimeNorm_A
  9633.  
  9634.  
  9635. loc_B164:                               ; CODE XREF: sub_AFC5+F7
  9636.                                         ; sub_AFC5+10A ...
  9637.                 xor     a
  9638.                 ret
  9639.  
  9640. ; ---------------------------------------------------------------------------
  9641.  
  9642. loc_B166:                               ; CODE XREF: sub_B47F+CA
  9643.                 xor     a
  9644.                 ld      (byte_D08A), a
  9645.                 ld      (byte_D08C), a
  9646.                 ld      a, (byte_D00B)
  9647.                 ld      (byte_D08B), a
  9648.                 jr      loc_B182
  9649.  
  9650. ; ---------------------------------------------------------------------------
  9651.  
  9652. loc_B175:                               ; CODE XREF: sub_AFC5+EA
  9653.                 ld      a, (byte_D08A)
  9654.                 ld      (byte_D08C), a
  9655.                 xor     a
  9656.                 ld      (byte_D00B), a
  9657.                 ld      (byte_D08B), a
  9658.  
  9659.  
  9660. loc_B182:                               ; CODE XREF: sub_AFC5+1AE
  9661.                 jp      loc_B05D
  9662.  
  9663. ; End of function sub_AFC5
  9664.  
  9665.  
  9666. ; =============== S U B R O U T I N E =======================================
  9667.  
  9668.  
  9669. IncreaseTimeNorm_A:                             ; CODE XREF: sub_AFC5:loc_B11D
  9670.                                         ; sub_AFC5+185 ...
  9671.                 ld      d, a
  9672.                 ld      a, (timenorm) ;в начале партии #0C, после 1 хода за белых #10, потом с 9 хода за белых увеличивается на 1 с каждым ходом. Take Back не влияет, даже если уйти с линии
  9673.                 add     a, d
  9674.                 ld      d, a
  9675.                 and     #F0
  9676.                 jr      nz, loc_B191 ;>=#10
  9677.                 ld      d, #10 ;=#10
  9678. loc_B191:                               ; CODE XREF: IncreaseTimeNorm_A+8
  9679.                 cp      #50
  9680.                 jr      c, loc_B197 ;<#50
  9681.                 ld      d, #4F ;=#4F
  9682. loc_B197:                               ; CODE XREF: IncreaseTimeNorm_A+E
  9683.                 ld      a, d
  9684.                 ld      (timenorm), a
  9685.                 ret
  9686.  
  9687. ; End of function IncreaseTimeNorm_A
  9688.  
  9689.  
  9690. ; =============== S U B R O U T I N E =======================================
  9691.  
  9692.  
  9693. sub_B19C:                               ; CODE XREF: sub_AFC5+95
  9694.                 ld      a, (byte_D08B)
  9695.                 ld      c, a
  9696.                 add     a, #84
  9697.                 sra     a
  9698.                 sra     a
  9699.                 sra     a
  9700.                 ld      b, a
  9701.                 ld      a, (byte_D0B2)
  9702.                 or      a
  9703.                 ld      a, b
  9704.                 jr      nz, loc_B1B2
  9705.                 neg
  9706. loc_B1B2:                               ; CODE XREF: sub_B19C+12
  9707.                 ld      hl, word_D00D
  9708.                 add     a, (hl)
  9709.                 ld      (hl), a
  9710.                 neg
  9711.                 ld      hl, byte_D02E
  9712.                 add     a, (hl)
  9713.                 cp      #F
  9714.                 jr      c, loc_B1CC
  9715.  
  9716.                 cp      #F2
  9717.                 jr      nc, loc_B1CC
  9718.  
  9719.                 rla
  9720.                 ld      a, #E
  9721.                 jr      nc, loc_B1CC
  9722.                 ld      a, #F2
  9723. loc_B1CC:                               ; CODE XREF: sub_B19C+23 sub_B19C+27 ...
  9724.                 add     a, a
  9725.                 add     a, a
  9726.                 add     a, a
  9727.                 ld      (byte_D01E), a
  9728.                 ld      a, b
  9729.                 add     a, a
  9730.                 add     a, a
  9731.                 add     a, a
  9732.                 neg
  9733.                 add     a, c
  9734.                 sub     8
  9735.                 ld      (byte_D00B), a
  9736.                 ld      (byte_D08B), a
  9737.                 ld      (byte_D08A), a
  9738.                 ld      (byte_D08C), a
  9739.                 ret
  9740.  
  9741. ; End of function sub_B19C
  9742.  
  9743. ; ---------------------------------------------------------------------------
  9744. ; START OF FUNCTION CHUNK FOR sub_B1EB
  9745.  
  9746. loc_B1E8:                               ; CODE XREF: sub_B1EB+46
  9747.                 call    sub_B8B2
  9748.  
  9749. ; END OF FUNCTION CHUNK FOR sub_B1EB
  9750.  
  9751. ; =============== S U B R O U T I N E =======================================
  9752.  
  9753.  
  9754. sub_B1EB:                               ; CODE XREF: sub_AFC5+21
  9755.  
  9756. ; FUNCTION CHUNK AT B1E8 SIZE 00000003 BYTES
  9757.  
  9758.                 ld      a, (curlevel)
  9759.                 cp      #A
  9760.                 ld      a, (timeformove)
  9761.                 jr      nz, loc_B205
  9762.  
  9763.                 or      a
  9764.                 ld      (byte_D0F3), a
  9765.                 rr      a
  9766.                 inc     a
  9767.                 ld      (byte_D02A), a
  9768.                 ld      a, #A
  9769.                 ld      (byte_D03C), a
  9770.                 ret
  9771. ; ---------------------------------------------------------------------------
  9772. loc_B205:                               ; CODE XREF: sub_B1EB+8
  9773.                 ld      e, a
  9774.                 xor     a
  9775.                 ld      d, a
  9776.                 ld      b, #A
  9777.                 ld      hl, 0
  9778. loc_B20D:                               ; CODE XREF: sub_B1EB+24
  9779.                 adc     hl, de          ; mul E by 10, why ADC???
  9780.                 djnz    loc_B20D
  9781.  
  9782.                 ld      a, (byte_D049) ;move #
  9783.                 dec     a
  9784.                 ld      b, 0
  9785.                 ld      c, #A
  9786. loc_B219:                               ; CODE XREF: sub_B1EB+30
  9787.                 inc     b
  9788.                 sub     c
  9789.                 jr      nc, loc_B219
  9790.  
  9791.                 neg
  9792.                 ld      d, h
  9793.                 ld      e, l
  9794.                 or      a
  9795.                 jr      loc_B226
  9796. ; ---------------------------------------------------------------------------
  9797. loc_B224:                               ; CODE XREF: sub_B1EB:loc_B226
  9798.                 adc     hl, de          ; E*10*floor(byte_D049/10)
  9799. loc_B226:                               ; CODE XREF: sub_B1EB+37
  9800.                 djnz    loc_B224
  9801.  
  9802.                 ld      de, (word_D088)
  9803.                 or      a
  9804.                 sbc     hl, de
  9805.                 bit     7, h
  9806.                 jr      nz, loc_B1E8
  9807.  
  9808.                 ld      c, a
  9809.                 push    hl
  9810.                 ld      a, (timeformove)
  9811.                 ld      d, 0
  9812.                 ld      e, a
  9813.                 xor     a
  9814.                 ld      (byte_D03C), a
  9815.                 dec     a
  9816. loc_B240:                               ; CODE XREF: sub_B1EB+58
  9817.                 inc     a
  9818.                 sbc     hl, de
  9819.                 jr      nc, loc_B240
  9820.  
  9821.                 sub     c
  9822.                 jr      c, loc_B24B
  9823.                 ld      (byte_D03C), a
  9824. loc_B24B:                               ; CODE XREF: sub_B1EB+5B
  9825.                 pop     hl
  9826.                 ld      a, #FE
  9827.                 ld      (byte_D0F3), a
  9828.                 ld      (byte_D02A), a
  9829.                 ld      a, h
  9830.                 srl     a
  9831.                 jr      nz, loc_B26A
  9832.  
  9833.                 ld      a, l
  9834.                 rra
  9835.                 dec     c
  9836.                 jr      z, loc_B260
  9837.                 srl     a
  9838. loc_B260:                               ; CODE XREF: sub_B1EB+71
  9839.                 inc     c
  9840.                 sub     2
  9841.                 jr      nc, loc_B266
  9842.                 xor     a
  9843. loc_B266:                               ; CODE XREF: sub_B1EB+78
  9844.                 inc     a
  9845.                 ld      (byte_D0F3), a
  9846. loc_B26A:                               ; CODE XREF: sub_B1EB+6C
  9847.                 xor     a               ; HL=HL/C ?
  9848.                 ld      b, #11
  9849. loc_B26D:                               ; CODE XREF: sub_B1EB+8C
  9850.                 rl      l               ; ADC HL,HL?
  9851.                 rl      h
  9852.                 rla
  9853.                 cp      c
  9854.                 jr      c, loc_B276
  9855.                 sub     c
  9856. loc_B276:                               ; CODE XREF: sub_B1EB+88
  9857.                 ccf
  9858.                 djnz    loc_B26D
  9859.  
  9860.                 ld      a, h
  9861.                 srl     a
  9862.                 jr      nz, loc_B29C
  9863.  
  9864.                 ld      a, l
  9865.                 rra
  9866.                 or      a
  9867.                 jr      nz, loc_B284
  9868.                 inc     a
  9869. loc_B284:                               ; CODE XREF: sub_B1EB+96
  9870.                 ld      (byte_D02A), a
  9871.                 rla
  9872.                 jr      c, loc_B29C
  9873.  
  9874.                 ld      a, (timeformove)
  9875.                 cp      l
  9876.                 jr      c, loc_B29F
  9877.  
  9878.                 ld      a, (byte_D0B4)
  9879.                 bit     5, a
  9880.                 jr      nz, loc_B29C ;invisible board?
  9881.  
  9882.                 ld      a, #FF
  9883.                 call    IncreaseTimeNorm_A
  9884.  
  9885. loc_B29C:                               ; CODE XREF: sub_B1EB+91 sub_B1EB+9D ...
  9886.                 ld      a, (timeformove)
  9887. loc_B29F:                               ; CODE XREF: sub_B1EB+A3
  9888.                 ld      hl, byte_D02A
  9889.                 cp      (hl)
  9890.                 jr      nc, loc_B2A6
  9891.                 ld      (hl), a
  9892. loc_B2A6:                               ; CODE XREF: sub_B1EB+B8
  9893.                 ld      a, (byte_D02A)
  9894.                 ld      b, a
  9895.                 add     a, a
  9896.                 ret     c
  9897.                 add     a, b
  9898.                 ret     c
  9899.                 ld      b, a
  9900.                 ld      a, (byte_D0F3)
  9901.                 cp      b
  9902.                 ret     c
  9903.                 ld      a, b
  9904.                 ld      (byte_D0F3), a
  9905.                 ret
  9906.  
  9907. ; End of function sub_B1EB
  9908.  
  9909.  
  9910. ; =============== S U B R O U T I N E =======================================
  9911.  
  9912.  
  9913. sub_B2B9:                               ; CODE XREF: sub_AFC5+62 sub_B47F-50 ...
  9914.                 ld      hl, byte_D097
  9915.                 ld      a, (hl)
  9916.                 add     a, a
  9917.                 add     a, l
  9918.                 ld      l, a
  9919.                 ld      e, (hl)
  9920.                 inc     l
  9921.                 ld      d, (hl)
  9922.                 ex      de, hl
  9923.                 inc     hl
  9924.                 inc     hl
  9925.                 ret
  9926.  
  9927. ; End of function sub_B2B9
  9928.  
  9929. ; ---------------------------------------------------------------------------
  9930.  
  9931.                 ; no alignment
  9932.  
  9933.                 ; low parts of addresses in D2xx region
  9934. tbl_B2C7:       db #58
  9935.                 db #66
  9936.                 db #72
  9937.                 db #7C
  9938.                 db #84
  9939.                 db #8A
  9940.                 db #8E
  9941.                 db #90
  9942.                 db #90
  9943.                 db #8E
  9944.  
  9945. ; =============== S U B R O U T I N E =======================================
  9946.  
  9947.  
  9948. sub_B2D1:                               ; CODE XREF: sub_AFC5:loc_AFE0
  9949.                                         ; sub_AFC5+B8
  9950.                 ld      hl, byte_D258
  9951.                 ld      de, byte_D20D
  9952.                 ld      b, #E
  9953. loc_B2D9:                               ; CODE XREF: sub_B2D1+E
  9954.                 ld      a, (hl)
  9955.                 and     #77 ;маска поля 0yyy0xxx
  9956.                 ld      (de), a
  9957.                 inc     e
  9958.                 inc     l
  9959.                 djnz    loc_B2D9
  9960.                 ret
  9961.  
  9962. ; End of function sub_B2D1
  9963.  
  9964.  
  9965. ; =============== S U B R O U T I N E =======================================
  9966.  
  9967.  
  9968. sub_B2E2:                               ; CODE XREF: sub_AFC5+18
  9969.                 ld      hl, byte_D25C
  9970.                 ld      de, byte_D258
  9971.                 ld      b, #A
  9972.  
  9973.  
  9974. loc_B2EA:                               ; CODE XREF: sub_B2E2+C
  9975.                 ld      a, (hl)
  9976.                 ld      (de), a
  9977.                 inc     e
  9978.                 inc     l
  9979.                 djnz    loc_B2EA
  9980.  
  9981.                 ret
  9982.  
  9983. ; End of function sub_B2E2
  9984.  
  9985.  
  9986. ; =============== S U B R O U T I N E =======================================
  9987.  
  9988.  
  9989. sub_B2F1:                               ; CODE XREF: sub_AFC5+1E
  9990.                                         ; sub_B47F:loc_B405 ...
  9991.                 ld      a, (byte_D097)
  9992.                 cp      7
  9993.                 ret     nc              ; only 0..6
  9994.                 ld      e, a
  9995.                 ld      hl, tbl_B2C7
  9996.                 ld      d, 0
  9997.                 add     hl, de
  9998.                 ld      e, (hl)
  9999.                 inc     hl
  10000.                 ld      l, (hl)
  10001.                 ld      h, array_D200/256
  10002.                 ld      d, h
  10003.                 ld      a, #FF
  10004.                 ld      (hl), a
  10005.                 ld      (de), a
  10006.                 ret
  10007.  
  10008. ; End of function sub_B2F1
  10009.  
  10010.  
  10011. ; =============== S U B R O U T I N E =======================================
  10012.  
  10013.  
  10014. sub_B309:                               ; CODE XREF: sub_B47F+9D
  10015.                                         ; sub_B47F+228 ...
  10016.                 ld      a, (byte_D097)
  10017.                 ld      e, a
  10018.                 sub     8
  10019.                 jr      nc, sub_B34B
  10020.  
  10021.                 cpl
  10022.                 ld      b, a
  10023.                 ld      hl, tbl_B2C7-1
  10024.                 ld      d, 0
  10025.                 add     hl, de
  10026.                 ld      e, (hl)
  10027.                 inc     hl
  10028.                 ld      l, (hl)
  10029.                 ld      h, array_D200/256
  10030.                 ld      d, h
  10031.                 ld      a, (ix+0)
  10032.                 ld      (de), a
  10033.                 inc     e
  10034.                 ld      a, (ix+1)
  10035.                 ld      (de), a
  10036.                 dec     b
  10037.                 jp      m, loc_B337
  10038.  
  10039.                 inc     b
  10040.  
  10041.  
  10042. loc_B32D:                               ; CODE XREF: sub_B309+2C
  10043.                 inc     e
  10044.                 ld      a, (hl)
  10045.                 ld      (de), a
  10046.                 inc     l
  10047.                 inc     e
  10048.                 ld      a, (hl)
  10049.                 ld      (de), a
  10050.                 inc     l
  10051.                 djnz    loc_B32D
  10052.  
  10053.  
  10054. loc_B337:                               ; CODE XREF: sub_B309+20
  10055.                 ld      hl, byte_D0B6
  10056.                 bit     0, (hl)
  10057.                 jr      z, sub_B34B
  10058.  
  10059.                 ld      a, (byte_D097)
  10060.                 dec     a
  10061.                 jr      nz, loc_B346
  10062.  
  10063.                 set     2, (hl)
  10064.  
  10065.  
  10066. loc_B346:                               ; CODE XREF: sub_B309+39
  10067.                 bit     2, (hl)
  10068.                 call    nz, sub_A684
  10069.  
  10070. ; End of function sub_B309
  10071.  
  10072.  
  10073. ; =============== S U B R O U T I N E =======================================
  10074.  
  10075.  
  10076. sub_B34B:                               ; CODE XREF: sub_B309+6 sub_B309+33     ...
  10077.                 ld      c, (ix+1)
  10078.                 bit     7, c
  10079.                 ret     nz
  10080.                 ld      hl, unk_D20B    ; D20D-2 ?
  10081.                 ld      a, (byte_D097)
  10082.                 add     a, a
  10083.                 add     a, l
  10084.                 ld      l, a
  10085.                 ld      a, (ix+0)
  10086.                 and     #77 ; 'w'
  10087.                 ld      (hl), a
  10088.                 inc     l
  10089.                 ld      (hl), c
  10090.                 bit     3, (ix+2)
  10091.                 ret     z
  10092.                 dec     l
  10093.                 set     7, (hl)
  10094.                 ret
  10095.  
  10096. ; End of function sub_B34B
  10097.  
  10098.  
  10099. ; =============== S U B R O U T I N E =======================================
  10100.  
  10101.  
  10102. FindMoveAndSwap:                                ; CODE XREF: sub_B47F-71
  10103.                 inc     hl
  10104.                 inc     hl
  10105.                 inc     hl
  10106.                 push    hl
  10107.                 ld      a, (ix+2)
  10108.                 and     6
  10109.                 jp      z, loc_B39E
  10110.                 ld      b, (ix+1)
  10111.                 and     4
  10112.                 jr      nz, loc_B385
  10113.  
  10114.                 ld      a, (byte_D07A)
  10115.                 ld      b, a
  10116.                 rla
  10117.                 jr      c, loc_B39E
  10118. loc_B385:                               ; CODE XREF: FindMoveAndSwap+11
  10119.                 ex      de, hl
  10120.                 inc     hl
  10121.                 ld      de, #FFFD       ; -3
  10122.                 res     7, b
  10123. loc_B38C:                               ; CODE XREF: FindMoveAndSwap+27
  10124.                 add     hl, de
  10125.                 ld      a, (hl)
  10126.                 cp      b
  10127.                 jr      z, loc_B397
  10128.                 inc     a
  10129.                 jp      nz, loc_B38C
  10130.                 jr      loc_B39E
  10131. ; ---------------------------------------------------------------------------
  10132. loc_B397:                               ; CODE XREF: FindMoveAndSwap+24
  10133.                 pop     de
  10134.                 dec     hl
  10135.                 call    SwapMove_HL_DE
  10136.                 inc     de
  10137.                 push    de
  10138. loc_B39E:                               ; CODE XREF: FindMoveAndSwap+9 FindMoveAndSwap+18       ...
  10139.                 ld      hl, unk_D20B    ; D20D-2 ?
  10140.                 ld      a, (byte_D097)
  10141.                 add     a, a
  10142.                 add     a, l
  10143.                 ld      l, a
  10144.                 ld      d, (hl)
  10145.                 inc     l
  10146.                 ld      e, (hl)
  10147.                 ld      bc, 3
  10148.                 pop     hl
  10149.                 push    hl
  10150.                 bit     7, d
  10151.                 jr      nz, loc_B3BB
  10152.                 call    FindMove_D_E_continue
  10153. loc_B3B6:                               ; CODE XREF: FindMoveAndSwap+5B
  10154.                 pop     de
  10155.                 call    nc, SwapMove_HL_DE
  10156.                 ret
  10157. ; ---------------------------------------------------------------------------
  10158. loc_B3BB:                               ; CODE XREF: FindMoveAndSwap+46
  10159.                 res     7, d
  10160.                 call    FindMove_D_E_continue
  10161.                 inc     hl
  10162.                 inc     hl
  10163.                 bit     3, (hl)
  10164.                 dec     hl
  10165.                 dec     hl
  10166.                 jr      nz, loc_B3B6
  10167.                 pop     de
  10168.                 ret
  10169. ; End of function FindMoveAndSwap
  10170. ; =============== S U B R O U T I N E =======================================
  10171. SwapMove_HL_DE:                         ; CODE XREF: FindMoveAndSwap+2E FindMoveAndSwap+4C
  10172.                 ld      c, (hl)
  10173.                 ld      a, (de)
  10174.                 ld      (hl), a
  10175.                 ld      a, c
  10176.                 or      #80 ;???
  10177.                 ld      (de), a
  10178.                 inc     de
  10179.                 inc     hl
  10180.                 ld      c, (hl)
  10181.                 ld      a, (de)
  10182.                 ld      (hl), a
  10183.                 ld      a, c
  10184.                 or      #80 ;???
  10185.                 ld      (de), a
  10186.                 inc     de
  10187.                 inc     hl
  10188.                 ld      c, (hl)
  10189.                 ld      a, (de)
  10190.                 ld      (hl), a
  10191.                 ld      a, c
  10192.                 ld      (de), a
  10193.                 ret
  10194. ; End of function SwapMove_HL_DE
  10195. ; =============== S U B R O U T I N E =======================================
  10196.  
  10197. InsertMove_EndIX_NMovesAX:                              ; CODE XREF: sub_B47F+A7 sub_B47F+C2
  10198.                 push    ix
  10199.                 pop     hl
  10200.                 ld      a, (hl)
  10201.                 ld      d, h
  10202.                 ld      e, l
  10203.                 inc     hl
  10204.                 ld      b, (hl)
  10205.                 inc     hl
  10206.                 ld      c, (hl)
  10207.                 ex      af, af' ;'
  10208. loc_B3ED:                               ; CODE XREF: InsertMove_EndIX_NMovesAX+18
  10209.                 dec     de
  10210.                 ld      a, (de)
  10211.                 ld      (hl), a
  10212.                 dec     de
  10213.                 dec     hl
  10214.                 ld      a, (de)
  10215.                 ld      (hl), a
  10216.                 dec     de
  10217.                 dec     hl
  10218.                 ld      a, (de)
  10219.                 ld      (hl), a
  10220.                 dec     hl
  10221.                 inc     a
  10222.                 jp      nz, loc_B3ED
  10223.                 inc     hl
  10224.                 ex      af, af' ;'
  10225.                 ld      (hl), a
  10226.                 inc     hl
  10227.                 ld      (hl), b
  10228.                 inc     hl
  10229.                 ld      (hl), c
  10230.                 ret
  10231.  
  10232. ; End of function InsertMove_EndIX_NMovesAX
  10233.  
  10234. ; ---------------------------------------------------------------------------
  10235. ; START OF FUNCTION CHUNK FOR sub_B47F
  10236.  
  10237. loc_B405:                               ; CODE XREF: sub_B47F+3D
  10238.                 call    sub_B2F1
  10239.  
  10240.                 call    sub_A94F
  10241.  
  10242.                 dec     hl
  10243.                 dec     hl
  10244.                 push    hl
  10245.                 call    FindMoveAndSwap
  10246.  
  10247.                 pop     ix
  10248.  
  10249.  
  10250. loc_B413:                               ; CODE XREF: sub_B47F+96 sub_B47F+99 ...
  10251.                 ld      a, (byte_D098)
  10252.                 inc     a
  10253.                 ld      d, a
  10254.                 ld      a, (byte_D097)
  10255.                 cp      d
  10256.                 jp      nc, loc_B5A3
  10257.  
  10258.                 bit     7, (ix+0)
  10259.                 jp      z, loc_B47A
  10260.  
  10261.                 call    sub_B75A
  10262.  
  10263.  
  10264. loc_B429:                               ; CODE XREF: sub_B47F-12 sub_B47F-7
  10265.                 bit     7, (ix+3)
  10266.                 jr      nz, loc_B442
  10267.  
  10268.                 call    sub_B2B9
  10269.  
  10270.                 push    hl
  10271.                 call    sub_AB53
  10272.  
  10273.                 jp      c, loc_B531
  10274.  
  10275.                 pop     ix
  10276.                 jp      z, loc_B571
  10277.  
  10278.                 inc     ix
  10279.                 jr      sub_B47F
  10280.  
  10281. ; ---------------------------------------------------------------------------
  10282.  
  10283. loc_B442:                               ; CODE XREF: sub_B47F-52
  10284.                 ld      de, 3
  10285.                 add     ix, de
  10286.                 ld      a, (ix+0)
  10287.                 inc     a
  10288.                 jp      z, loc_B4E7
  10289.  
  10290.                 call    sub_B2B9
  10291.  
  10292.                 ld      a, (hl)
  10293.                 ld      (byte_D01D), a
  10294.                 push    ix
  10295.                 call    sub_AD40
  10296.  
  10297.                 call    sub_BC00
  10298.  
  10299.                 or      a
  10300.                 jr      z, loc_B46F
  10301.  
  10302.                 call    sub_B79D
  10303.  
  10304.                 jp      c, loc_B535
  10305.  
  10306.                 jr      z, loc_B4A6
  10307.  
  10308.                 call    sub_AF81
  10309.  
  10310.                 pop     ix
  10311.                 jr      loc_B429
  10312.  
  10313. ; ---------------------------------------------------------------------------
  10314.  
  10315. loc_B46F:                               ; CODE XREF: sub_B47F-21
  10316.                 ld      (ix+1), #FF
  10317.                 call    sub_AF81
  10318.  
  10319.                 pop     ix
  10320.                 jr      loc_B429
  10321.  
  10322. ; ---------------------------------------------------------------------------
  10323.  
  10324. loc_B47A:                               ; CODE XREF: sub_B47F-5C
  10325.                 ld      de, 3
  10326.                 add     ix, de
  10327.  
  10328. ; END OF FUNCTION CHUNK FOR sub_B47F
  10329.  
  10330. ; =============== S U B R O U T I N E =======================================
  10331.  
  10332.  
  10333. sub_B47F:                               ; CODE XREF: sub_AFC5:loc_B07A
  10334.                                         ; sub_B47F-3F
  10335.  
  10336. ; FUNCTION CHUNK AT B405 SIZE 0000007A BYTES
  10337. ; FUNCTION CHUNK AT B5D1 SIZE 00000189 BYTES
  10338.  
  10339.                 ld      a, #FF
  10340.                 ld      (byte_D07A), a
  10341.                 ld      a, (ix+0)
  10342.                 inc     a
  10343.                 jr      z, loc_B4E7
  10344.  
  10345.                 push    ix
  10346.                 call    sub_AD40
  10347.  
  10348.                 call    sub_B96D
  10349.  
  10350.                 jp      c, loc_B4A6
  10351.  
  10352.                 ld      b, 0
  10353.                 ld      hl, byte_D097
  10354.                 inc     (hl)
  10355.                 ld      a, (byte_D02D)
  10356.                 xor     1
  10357.                 ld      (byte_D02D), a
  10358.                 jp      loc_B576
  10359.  
  10360. ; ---------------------------------------------------------------------------
  10361.  
  10362. loc_B4A6:                               ; CODE XREF: sub_B47F-19 sub_B47F+13 ...
  10363.                 ld      a, (byte_D02D)
  10364.                 xor     1
  10365.                 ld      (byte_D02D), a
  10366.                 ld      hl, byte_D097
  10367.                 ld      a, (hl)
  10368.                 inc     (hl)
  10369.                 ld      hl,  word_D088+1
  10370.                 add     a, l
  10371.                 ld      l, a
  10372.                 ld      a, (hl)
  10373.                 inc     l
  10374.                 inc     l
  10375.                 ld      (hl), a
  10376.                 jp      loc_B405
  10377.  
  10378. ; ---------------------------------------------------------------------------
  10379.  
  10380. loc_B4BF:                               ; CODE XREF: sub_B47F+54
  10381.                 ld      hl, byte_D097
  10382.                 dec     (hl)
  10383.                 ld      a, (byte_D02D)
  10384.                 xor     1
  10385.                 ld      (byte_D02D), a
  10386.                 jp      loc_B535
  10387.  
  10388. ; ---------------------------------------------------------------------------
  10389.  
  10390. loc_B4CE:                               ; CODE XREF: sub_B47F+261
  10391.                 rra
  10392.                 jp      c, loc_B4D5
  10393.  
  10394.                 rra
  10395.                 jr      nc, loc_B4BF
  10396.  
  10397.  
  10398. loc_B4D5:                               ; CODE XREF: sub_B47F+50
  10399.                                         ; sub_B47F+15B ...
  10400.                 ld      de, #FFFD       ; -3
  10401.  
  10402.  
  10403. loc_B4D8:                               ; CODE XREF: sub_B47F+66
  10404.                 add     ix, de
  10405.                 ld      a, (ix+0)
  10406.                 inc     a
  10407.                 jp      z, loc_B563
  10408.  
  10409.                 ld      a, (ix+1)
  10410.                 inc     a
  10411.                 jr      z, loc_B4D8
  10412.  
  10413.  
  10414. loc_B4E7:                               ; CODE XREF: sub_B47F-34 sub_B47F+9     ...
  10415.                 ld      a, (byte_D097)
  10416.                 dec     a
  10417.                 ret     z
  10418.                 ld      (byte_D097), a
  10419.                 call    sub_AF81
  10420.  
  10421.                 pop     ix
  10422.  
  10423.  
  10424. loc_B4F4:                               ; CODE XREF: sub_B47F+111
  10425.                 ld      a, (byte_D02D)
  10426.                 xor     1
  10427.                 ld      (byte_D02D), a
  10428.                 ld      a, (byte_D0B4)
  10429.                 and     #90
  10430.                 jr      nz, loc_B4E7
  10431.  
  10432.                 ld      a, (byte_D097)
  10433.                 ld      hl, byte_D08B
  10434.                 add     a, l
  10435.                 ld      l, a
  10436.                 ld      a, (hl)
  10437.                 dec     a
  10438.                 dec     l
  10439.                 dec     l
  10440.                 cp      (hl)
  10441.                 jr      c, loc_B53A
  10442.  
  10443.                 cpl
  10444.                 inc     l
  10445.                 cp      (hl)
  10446.                 jp      c, loc_B413
  10447.  
  10448.                 jp      z, loc_B413
  10449.  
  10450.                 ld      (hl), a
  10451.                 call    sub_B309
  10452.  
  10453.                 ld      a, (byte_D097)
  10454.                 dec     a
  10455.                 jp      nz, loc_B413
  10456.  
  10457.                 call    InsertMove_EndIX_NMovesAX
  10458.  
  10459.                 ld      a, (byte_D08B)
  10460.                 inc     a
  10461.                 ret     z
  10462.                 jp      loc_B413
  10463.  
  10464. ; ---------------------------------------------------------------------------
  10465.  
  10466. loc_B531:                               ; CODE XREF: sub_B47F-49
  10467.                 pop     hl
  10468.                 jp      loc_B53A
  10469.  
  10470. ; ---------------------------------------------------------------------------
  10471.  
  10472. loc_B535:                               ; CODE XREF: sub_B47F-1C sub_B47F+4C ...
  10473.                 call    sub_AF81
  10474.  
  10475.                 pop     ix
  10476.  
  10477.  
  10478. loc_B53A:                               ; CODE XREF: sub_B47F+91 sub_B47F+B3
  10479.                 ld      a, (byte_D097)
  10480.                 dec     a
  10481.                 jp      nz, loc_B54C
  10482.  
  10483.                 call    InsertMove_EndIX_NMovesAX
  10484.  
  10485.                 pop     hl
  10486.                 pop     ix
  10487.                 push    ix
  10488.                 jp      loc_B166
  10489.  
  10490. ; ---------------------------------------------------------------------------
  10491.  
  10492. loc_B54C:                               ; CODE XREF: sub_B47F+BF
  10493.                 call    sub_B34B
  10494.  
  10495.                 call    sub_AF81
  10496.  
  10497.                 pop     ix
  10498.                 ld      hl, byte_D097
  10499.                 dec     (hl)
  10500.                 ld      a, (byte_D02D)
  10501.                 xor     1
  10502.                 ld      (byte_D02D), a
  10503.                 jp      loc_B413
  10504.  
  10505. ; ---------------------------------------------------------------------------
  10506.  
  10507. loc_B563:                               ; CODE XREF: sub_B47F+5F
  10508.                 ld      b, (ix+2)
  10509.                 ld      a, (curlevel)
  10510.                 cp      #C
  10511.                 jr      z, loc_B574
  10512.  
  10513.                 ld      c, 2
  10514.                 jr      loc_B576
  10515.  
  10516. ; ---------------------------------------------------------------------------
  10517.  
  10518. loc_B571:                               ; CODE XREF: sub_B47F-44
  10519.                 ld      b, (ix+0)
  10520.  
  10521.  
  10522. loc_B574:                               ; CODE XREF: sub_B47F+EC
  10523.                 ld      c, 1
  10524.  
  10525.  
  10526. loc_B576:                               ; CODE XREF: sub_B47F+24 sub_B47F+F0
  10527.                 ld      hl, byte_D08A
  10528.                 ld      a, (byte_D097)
  10529.                 add     a, l
  10530.                 ld      l, a
  10531.                 bit     7, b
  10532.                 jr      z, loc_B593
  10533.  
  10534.                 ld      (hl), c
  10535.                 ld      hl, byte_D097
  10536.                 dec     (hl)
  10537.                 call    sub_AF81
  10538.  
  10539.                 pop     ix
  10540.                 ld      (ix+3), #FF
  10541.                 jp      loc_B4F4
  10542.  
  10543. ; ---------------------------------------------------------------------------
  10544.  
  10545. loc_B593:                               ; CODE XREF: sub_B47F+101
  10546.                 ld      a, (byte_D02D)
  10547.                 rra
  10548.                 ld      a, (byte_D01E)
  10549.                 jr      nc, loc_B59D
  10550.  
  10551.                 cpl
  10552.  
  10553.  
  10554. loc_B59D:                               ; CODE XREF: sub_B47F+11B
  10555.                 add     a, #84 ; '"'
  10556.                 ld      (hl), a
  10557.                 jp      loc_B4E7
  10558.  
  10559. ; ---------------------------------------------------------------------------
  10560.  
  10561. loc_B5A3:                               ; CODE XREF: sub_B47F-63
  10562.                 call    sub_B2B9
  10563.  
  10564.                 ld      a, (hl)
  10565.                 ld      (byte_D01D), a
  10566.                 ld      a, (byte_D097)
  10567.                 ld      e, a
  10568.                 ld      hl,  word_D088+1
  10569.                 add     a, l
  10570.                 ld      l, a
  10571.                 ld      (word_D06D), hl
  10572.                 ld      a, (byte_D098)
  10573.                 add     a, 2
  10574.                 sub     e
  10575.                 jp      m, loc_B72D
  10576.  
  10577.                 jp      z, loc_B6D4
  10578.  
  10579.                 ld      (byte_D03B), a
  10580.                 jp      loc_B5D1
  10581.  
  10582. ; ---------------------------------------------------------------------------
  10583.  
  10584. loc_B5C8:                               ; CODE XREF: sub_B47F+167
  10585.                 ld      (ix+1), #FF
  10586.  
  10587.  
  10588. loc_B5CC:                               ; CODE XREF: sub_B47F+1DF
  10589.                                         ; sub_B47F+1F2 ...
  10590.                 call    sub_AF81
  10591.  
  10592.                 pop     ix
  10593.  
  10594. ; End of function sub_B47F
  10595.  
  10596. ; START OF FUNCTION CHUNK FOR sub_B47F
  10597.  
  10598. loc_B5D1:                               ; CODE XREF: sub_B47F+146
  10599.                 ld      de, 3
  10600.                 add     ix, de
  10601.                 ld      a, (ix+0)
  10602.                 inc     a
  10603.                 jp      z, loc_B4D5
  10604.  
  10605.                 push    ix
  10606.                 call    sub_AD40
  10607.  
  10608.                 call    sub_BC00
  10609.  
  10610.                 or      a
  10611.                 jr      z, loc_B5C8
  10612.  
  10613.                 cpl
  10614.                 ld      hl, (word_D06D)
  10615.                 cp      (hl)
  10616.                 jp      nc, loc_B645
  10617.  
  10618.                 ld      a, (byte_D01D)
  10619.                 and     #CD
  10620.                 jp      z, loc_B535
  10621.  
  10622.                 cp      8
  10623.                 jr      z, loc_B620
  10624.  
  10625.                 ld      a, (byte_D097)
  10626.                 ld      d, a
  10627.                 ld      a, (word_D00D+1)
  10628.                 add     a, a
  10629.                 cp      d
  10630.                 jr      c, loc_B620
  10631.  
  10632.                 ld      a, (byte_D019)
  10633.                 and     #7F
  10634.                 jp      z, loc_B535
  10635.  
  10636.                 bit     3, a
  10637.                 jp      nz, loc_B4A6
  10638.  
  10639.                 bit     2, a
  10640.                 jr      z, loc_B623
  10641.  
  10642.                 ld      hl, byte_D03B
  10643.                 ld      (hl), 0
  10644.                 jp      loc_B4A6
  10645.  
  10646. ; ---------------------------------------------------------------------------
  10647.  
  10648. loc_B620:                               ; CODE XREF: sub_B47F+17B
  10649.                                         ; sub_B47F+186
  10650.                 ld      a, (byte_D019)
  10651. loc_B623:                               ; CODE XREF: sub_B47F+197
  10652.                 and     3
  10653.                 jp      z, loc_B535
  10654.  
  10655.                 ld      d, 6
  10656.                 rra
  10657.                 jp      c, loc_B630
  10658.                 ld      d, #C
  10659. loc_B630:                               ; CODE XREF: sub_B47F+1AC
  10660.                 ld      a, (byte_D01D)
  10661.                 and     #8D
  10662.                 jp      z, loc_B535
  10663.  
  10664.                 rla
  10665.                 jr      c, loc_B63D
  10666.                 sra     d
  10667. loc_B63D:                               ; CODE XREF: sub_B47F+1BA
  10668.                 ld      a, d
  10669.                 sub     c
  10670.                 jr      nc, loc_B645
  10671.                 cp      (hl)
  10672.                 jp      c, loc_B535
  10673. loc_B645:                               ; CODE XREF: sub_B47F+16E
  10674.                                         ; sub_B47F+1C0
  10675.                 inc     l
  10676.                 ld      a, (ix+2)
  10677.                 ld      d, a
  10678.                 rla
  10679.                 jp      nc, loc_B65B
  10680.  
  10681.                 bit     2, d
  10682.                 jp      z, loc_B4A6
  10683.  
  10684.                 ld      a, (curlevel)
  10685.                 cp      #C
  10686.                 jp      z, loc_B4A6
  10687.  
  10688.  
  10689. loc_B65B:                               ; CODE XREF: sub_B47F+1CC
  10690.                 ld      a, b
  10691.                 dec     b
  10692.                 cp      (hl)
  10693.                 jp      c, loc_B5CC
  10694.  
  10695.                 ld      a, (byte_D01C)
  10696.                 or      a
  10697.                 jr      z, loc_B69B
  10698.  
  10699.                 jp      m, loc_B4A6
  10700.  
  10701.                 bit     2, a
  10702.                 jr      nz, loc_B6AD
  10703.  
  10704.                 ld      e, a
  10705.                 ld      a, c
  10706.                 cp      (hl)
  10707.                 jp      c, loc_B5CC
  10708.  
  10709.                 jp      z, loc_B5CC
  10710.  
  10711.                 bit     6, e
  10712.                 jp      nz, loc_B4A6
  10713.  
  10714.                 ld      a, d
  10715.                 and     #CB
  10716.                 jr      nz, loc_B688
  10717.  
  10718.                 ld      a, (byte_D01D)
  10719.                 and     #C9
  10720.                 jr      z, loc_B6A3
  10721.  
  10722. loc_B688:                               ; CODE XREF: sub_B47F+200
  10723.                 bit     1, e
  10724.                 jp      nz, loc_B4A6
  10725.  
  10726.                 ld      a, (byte_D097)
  10727.                 ld      d, a
  10728.                 ld      a, (word_D00D+1)
  10729.                 add     a, a
  10730.                 cp      d
  10731.                 jr      c, loc_B6A3
  10732.  
  10733.                 jp      loc_B4A6
  10734.  
  10735. ; ---------------------------------------------------------------------------
  10736.  
  10737. loc_B69B:                               ; CODE XREF: sub_B47F+1E6
  10738.                 ld      a, c
  10739.                 cp      (hl)
  10740.                 jp      c, loc_B5CC
  10741.  
  10742.                 jp      z, loc_B5CC
  10743.  
  10744.  
  10745. loc_B6A3:                               ; CODE XREF: sub_B47F+207
  10746.                                         ; sub_B47F+217
  10747.                 ld      (hl), c
  10748.                 call    sub_B2F1
  10749.  
  10750.                 call    sub_B309
  10751.  
  10752.                 jp      loc_B5CC
  10753.  
  10754. ; ---------------------------------------------------------------------------
  10755.  
  10756. loc_B6AD:                               ; CODE XREF: sub_B47F+1ED
  10757.                 ld      a, c
  10758.                 cp      (hl)
  10759.                 jr      c, loc_B6B4
  10760.  
  10761.                 jp      nz, loc_B4A6
  10762.  
  10763.  
  10764. loc_B6B4:                               ; CODE XREF: sub_B47F+230
  10765.                 ld      a, (byte_D097)
  10766.                 ld      d, a
  10767.                 ld      a, (word_D00D+1)
  10768.                 add     a, a
  10769.                 cp      d
  10770.                 jp      nc, loc_B4A6
  10771.  
  10772.                 jp      loc_B5CC
  10773.  
  10774. ; ---------------------------------------------------------------------------
  10775.  
  10776. loc_B6C3:                               ; CODE XREF: sub_B47F+265
  10777.                 bit     3, (ix+2)
  10778.                 jr      z, loc_B6D4
  10779.  
  10780.                 jr      loc_B6E6
  10781.  
  10782. ; ---------------------------------------------------------------------------
  10783.  
  10784. loc_B6CB:                               ; CODE XREF: sub_B47F+270
  10785.                 ld      (ix+1), #FF
  10786.  
  10787.  
  10788. loc_B6CF:                               ; CODE XREF: sub_B47F+29B
  10789.                 call    sub_AF81
  10790.  
  10791.                 pop     ix
  10792.  
  10793.  
  10794. loc_B6D4:                               ; CODE XREF: sub_B47F+140
  10795.                                         ; sub_B47F+248
  10796.                 ld      de, 3
  10797.                 add     ix, de
  10798.                 ld      a, (ix+0)
  10799.                 inc     a
  10800.                 ld      a, (byte_D03B)
  10801.                 jp      z, loc_B4CE
  10802.  
  10803.                 rra
  10804.                 jr      nc, loc_B6C3
  10805.  
  10806.  
  10807. loc_B6E6:                               ; CODE XREF: sub_B47F+24A
  10808.                 push    ix
  10809.                 call    sub_AD40
  10810.  
  10811.                 call    sub_BC00
  10812.  
  10813.                 or      a
  10814.                 jr      z, loc_B6CB
  10815.  
  10816.                 ld      a, (byte_D019)
  10817.                 and     #83
  10818.                 jp      m, loc_B535
  10819.  
  10820.                 sub     c
  10821.                 ld      hl, (word_D06D)
  10822.                 cp      (hl)
  10823.                 jp      c, loc_B535
  10824.  
  10825.                 ld      a, (ix+2)
  10826.                 ld      d, a
  10827.                 and     #C0
  10828.                 jr      z, loc_B711
  10829.  
  10830.                 bit     3, d
  10831.                 jr      nz, loc_B71C
  10832.  
  10833.                 bit     2, d
  10834.                 jr      z, loc_B71C
  10835.  
  10836.  
  10837. loc_B711:                               ; CODE XREF: sub_B47F+288
  10838.                 inc     l
  10839.                 ld      a, (byte_D01A)
  10840.                 add     a, a
  10841.                 add     a, b
  10842.                 jr      c, loc_B71C
  10843.  
  10844.                 cp      (hl)
  10845.                 jr      c, loc_B6CF
  10846.  
  10847.  
  10848. loc_B71C:                               ; CODE XREF: sub_B47F+28C
  10849.                                         ; sub_B47F+290 ...
  10850.                 ld      hl, byte_D03B
  10851.                 set     1, (hl)
  10852.                 jp      loc_B4A6
  10853.  
  10854. ; ---------------------------------------------------------------------------
  10855.  
  10856. loc_B724:                               ; CODE XREF: sub_B47F+2C3
  10857.                 ld      (ix+1), #FF
  10858.  
  10859.  
  10860. loc_B728:                               ; CODE XREF: sub_B47F+2D0
  10861.                                         ; sub_B47F+2D2 ...
  10862.                 call    sub_AF81
  10863.  
  10864.                 pop     ix
  10865.  
  10866.  
  10867. loc_B72D:                               ; CODE XREF: sub_B47F+13D
  10868.                 ld      de, 3
  10869.                 add     ix, de
  10870.                 ld      a, (ix+0)
  10871.                 inc     a
  10872.                 jp      z, loc_B4D5
  10873.  
  10874.                 push    ix
  10875.                 call    sub_AD40
  10876.  
  10877.                 call    sub_BC00
  10878.  
  10879.                 or      a
  10880.                 jr      z, loc_B724
  10881.  
  10882.                 cpl
  10883.                 ld      hl, (word_D06D)
  10884.                 cp      (hl)
  10885.                 jp      c, loc_B535
  10886.  
  10887.                 inc     l
  10888.                 ld      a, c
  10889.                 cp      (hl)
  10890.                 jr      c, loc_B728
  10891.  
  10892.                 jr      z, loc_B728
  10893.  
  10894.                 ld      (hl), a
  10895.                 call    sub_B309
  10896.  
  10897.                 jp      loc_B728
  10898.  
  10899. ; END OF FUNCTION CHUNK FOR sub_B47F
  10900.  
  10901. ; =============== S U B R O U T I N E =======================================
  10902.  
  10903.  
  10904. sub_B75A:                               ; CODE XREF: sub_B47F-59
  10905.                 ld      a, (byte_D097)
  10906.                 ld      e, a
  10907.                 ld      hl,  word_D088+1
  10908.                 add     a, l
  10909.                 ld      l, a
  10910.                 ld      (word_D06D), hl
  10911.                 ld      a, (curlevel)
  10912.                 cp      #C
  10913.                 jr      z, loc_B796
  10914.  
  10915.                 ld      a, e
  10916.                 inc     a
  10917.                 ld      hl, byte_D098
  10918.                 sub     (hl)
  10919.                 jr      c, loc_B78B
  10920.  
  10921.                 ld      hl, byte_D01A
  10922.                 ld      a, (word_D00D+1)
  10923.                 add     a, (hl)
  10924.                 bit     0, e
  10925.                 jr      nz, loc_B781
  10926.  
  10927.                 add     a, (hl)
  10928.  
  10929.  
  10930. loc_B781:                               ; CODE XREF: sub_B75A+24
  10931.                 ld      (byte_D009), a
  10932.                 ld      hl, loc_B7A1
  10933.                 ld      (JP_ADDR), hl
  10934.                 ret
  10935.  
  10936. ; ---------------------------------------------------------------------------
  10937.  
  10938. loc_B78B:                               ; CODE XREF: sub_B75A+19
  10939.                 ld      hl, loc_B7CA
  10940.                 add     a, 2
  10941.                 jr      nc, loc_B796
  10942.  
  10943.                 ld      (JP_ADDR), hl
  10944.                 ret
  10945.  
  10946. ; ---------------------------------------------------------------------------
  10947.  
  10948. loc_B796:                               ; CODE XREF: sub_B75A+11 sub_B75A+36
  10949.                 ld      hl, XOR_A
  10950.                 ld      (JP_ADDR), hl
  10951.                 ret
  10952.  
  10953. ; End of function sub_B75A
  10954.  
  10955.  
  10956. ; =============== S U B R O U T I N E =======================================
  10957.  
  10958.  
  10959. sub_B79D:                               ; CODE XREF: sub_AB53+86 sub_B47F-1F
  10960.                 ld      hl, (JP_ADDR)
  10961.                 jp      (hl)
  10962.  
  10963. ; End of function sub_B79D
  10964.  
  10965. ; ---------------------------------------------------------------------------
  10966.  
  10967. loc_B7A1:                               ; DATA XREF: sub_B75A+2A
  10968.                 ld      a, (byte_D097)
  10969.                 rra
  10970.                 ld      hl, (word_D06D)
  10971.                 jr      c, loc_B7F1
  10972.  
  10973.                 ld      a, (byte_D009)
  10974.                 sub     c
  10975.                 jr      nc, loc_B7F1
  10976.  
  10977.                 cp      (hl)
  10978.                 jr      nc, loc_B7F1
  10979.  
  10980.                 ld      a, (byte_D01D)
  10981.                 ld      d, a
  10982.                 ld      a, (byte_D01B)
  10983.                 and     d
  10984.                 scf
  10985.                 ret     z
  10986.                 and     #C
  10987.                 cp      #C
  10988.                 jr      z, loc_B7F1
  10989.  
  10990.                 bit     2, a
  10991.                 scf
  10992.                 ret     nz
  10993.                 jp      loc_B7F1
  10994.  
  10995. ; ---------------------------------------------------------------------------
  10996.  
  10997. loc_B7CA:                               ; DATA XREF: sub_B75A:loc_B78B
  10998.                 ld      hl, (word_D06D)
  10999.                 ld      a, (byte_D03B)
  11000.                 rla
  11001.                 call    c, sub_B80F ;может выходить отсюда
  11002.  
  11003.                 bit     2, (ix+2)
  11004.                 jr      z, loc_B7E5
  11005.  
  11006.                 ld      a, #17
  11007.  
  11008. loc_B7DC:                               ; CODE XREF: RAM:B805
  11009.                 add     a, c
  11010.  
  11011. loc_B7DD:                               ; CODE XREF: RAM:B80C
  11012.                 jr      c, loc_B7E5
  11013.  
  11014.                 inc     l
  11015.                 cp      (hl)
  11016.                 jr      c, loc_B7E7
  11017.  
  11018.                 jr      z, loc_B7E7
  11019.  
  11020. loc_B7E5:                               ; CODE XREF: RAM:B7D8   RAM:loc_B7DD ...
  11021.                 xor     a
  11022.                 ret
  11023.  
  11024. ; ---------------------------------------------------------------------------
  11025.  
  11026. loc_B7E7:                               ; CODE XREF: RAM:B7E1   RAM:B7E3
  11027.                 ld      a, (ix+2)
  11028.                 and     #C9
  11029.                 jr      nz, loc_B7E5
  11030.  
  11031.                 ld      a, c
  11032.                 or      a
  11033.                 ret
  11034.  
  11035. ; ---------------------------------------------------------------------------
  11036.  
  11037. loc_B7F1:                               ; CODE XREF: RAM:B7A8   RAM:B7AE ...
  11038.                 ld      a, (byte_D03B)
  11039.                 rla
  11040.                 call    c, sub_B80F ;может выходить отсюда
  11041.  
  11042.                 ld      a, (byte_D009)
  11043.                 bit     2, (ix+2)
  11044.                 jr      z, loc_B809
  11045.  
  11046.                 bit     3, (ix+2)
  11047.                 jr      z, loc_B7DC
  11048.  
  11049.                 xor     a
  11050.                 ret
  11051.  
  11052. ; ---------------------------------------------------------------------------
  11053.  
  11054. loc_B809:                               ; CODE XREF: RAM:B7FF
  11055.                 add     a, #F
  11056.                 add     a, c
  11057.                 jp      loc_B7DD
  11058.  
  11059.  
  11060. ; =============== S U B R O U T I N E =======================================
  11061.  
  11062.  
  11063. sub_B80F:                               ; CODE XREF: RAM:B7D1   RAM:B7F5
  11064.                 inc     l
  11065.                 ld      a, c
  11066.                 cp      (hl)
  11067.                 dec     l
  11068.                 ret     nc
  11069.                 pop     hl
  11070.                 or      a
  11071.                 ret
  11072.  
  11073. ; End of function sub_B80F
  11074.  
  11075. ; ---------------------------------------------------------------------------
  11076.  
  11077. XOR_A:                                  ; DATA XREF: sub_AB4C
  11078.                                         ; sub_B75A:loc_B796
  11079.                 xor     a
  11080.                 ret
  11081.  
  11082. ; ---------------------------------------------------------------------------
  11083.  
  11084. loc_B819:                               ; CODE XREF: sub_AFC5+8E
  11085.                 ld      a, (byte_D098)
  11086.                 ld      c, a
  11087.                 or      a
  11088.                 jp      p, loc_B841
  11089.  
  11090.                 ld      b, 2
  11091.                 ld      a, (curlevel)
  11092.                 cp      #C
  11093.                 jp      z, loc_B8A0
  11094.  
  11095.                 ld      b, #C
  11096.                 dec     a
  11097.                 jr      z, loc_B8A0
  11098.  
  11099.                 ld      a, (byte_D0F2)
  11100.                 and     #F
  11101.                 cp      9
  11102.                 ld      b, a
  11103.                 jr      nc, loc_B8A0
  11104.  
  11105.                 ld      hl, byte_D098
  11106.                 inc     (hl)
  11107.                 inc     (hl)
  11108.                 jr      loc_B8A0
  11109.  
  11110. ; ---------------------------------------------------------------------------
  11111.  
  11112. loc_B841:                               ; CODE XREF: RAM:B81E
  11113.                 ld      a, (curlevel)
  11114.                 dec     a
  11115.                 jr      z, loc_B877
  11116.  
  11117.                 ld      a, (timenorm)
  11118.                 rra
  11119.                 rra
  11120.                 rra
  11121.                 and     #1E
  11122.                 jr      z, loc_B877 ;так не бывает? начинается с #0C
  11123.  
  11124.                 inc     c
  11125.                 cp      c
  11126.                 ld      a, (byte_D0F2)
  11127.                 ld      b, a
  11128.                 jr      nc, loc_B8A0
  11129.  
  11130.                 ld      hl, (INC_SECONDS)
  11131.                 ld      de, (word_D02B)
  11132.                 add     hl, de
  11133.                 ld      a, h
  11134.                 or      a
  11135.                 jr      nz, loc_B877
  11136.  
  11137.                 ld      a, (byte_D02A)
  11138.                 srl     a
  11139.                 srl     a
  11140.                 cp      l
  11141.                 jr      c, loc_B877
  11142.  
  11143.                 ld      a, (byte_D02A)
  11144.                 ld      (byte_D0F3), a
  11145.                 jr      loc_B88A
  11146.  
  11147. ; ---------------------------------------------------------------------------
  11148.  
  11149. loc_B877:                               ; CODE XREF: RAM:B845   RAM:B84F ...
  11150.                 ld      a, (curlevel)
  11151.                 cp      #B
  11152.                 jr      z, loc_B88A
  11153.  
  11154.                 ld      a, (byte_D0B4)
  11155.                 bit     5, a
  11156.                 scf
  11157.                 ret     z ;visible board?
  11158.                 ld      hl, byte_D0B3 ;d3=swap board
  11159.                 set     5, (hl)
  11160.  
  11161. loc_B88A:                               ; CODE XREF: RAM:B875   RAM:B87C
  11162.                 ld      a, (byte_D0F2)
  11163.                 push    af
  11164.                 and     #F0
  11165.                 ld      b, a
  11166.                 pop     af
  11167.                 add     a, 7
  11168.                 ld      (byte_D0F2), a
  11169.                 and     #F0
  11170.                 cp      b
  11171.                 jr      z, loc_B8AD
  11172.  
  11173.                 ld      (byte_D0F2), a
  11174.                 ld      b, a
  11175.  
  11176.  
  11177. loc_B8A0:                               ; CODE XREF: RAM:B828   RAM:B82E ...
  11178.                 ld      hl, byte_D098
  11179.                 ld      a, (hl)
  11180.                 cp      8
  11181.                 ld      a, #F
  11182.                 jr      z, loc_B8AD
  11183.  
  11184.                 inc     (hl)
  11185.                 inc     (hl)
  11186.                 ld      a, b
  11187.  
  11188. loc_B8AD:                               ; CODE XREF: RAM:B89A   RAM:B8A8
  11189.                 call    sub_B943 ;берёт [a] из таблицы по 3 байта и раскладывает в byte_D019..C
  11190.  
  11191.                 or      a
  11192.                 ret
  11193.  
  11194.  
  11195. ; =============== S U B R O U T I N E =======================================
  11196.  
  11197.  
  11198. sub_B8B2:                               ; CODE XREF: sub_A915   sub_AFC5+82 ...
  11199.                 ld      a, (curlevel)
  11200.                 add     a, a
  11201.                 ld      hl, tbl_B8DD-2
  11202.                 add     a, l
  11203.                 ld      l, a
  11204.                 jr      nc, loc_B8BE
  11205.  
  11206.                 inc     h
  11207.  
  11208.  
  11209. loc_B8BE:                               ; CODE XREF: sub_B8B2+9
  11210.                 ld      a, (hl)
  11211.                 ld      (timenorm), a
  11212.                 inc     hl
  11213.                 ld      a, (hl)
  11214.                 ld      (timeformove), a
  11215.                 ld      e, a
  11216.                 ld      d, 0
  11217.                 ld      hl, 0
  11218.                 ld      a, (byte_D049) ;move #
  11219.                 dec     a
  11220.                 jr      z, loc_B8D9
  11221.  
  11222.                 ld      b, a
  11223.                 sbc     hl, de
  11224.  
  11225.  
  11226. loc_B8D6:                               ; CODE XREF: sub_B8B2+25
  11227.                 add     hl, de
  11228.                 djnz    loc_B8D6
  11229.  
  11230. ; End of function sub_B8B2
  11231.  
  11232.  
  11233. loc_B8D9:                               ; CODE XREF: sub_B8B2+1F
  11234.                 ld      (word_D088), hl
  11235.                 ret
  11236.  
  11237. ; ---------------------------------------------------------------------------
  11238.  
  11239.                 ; no alignment
  11240. tbl_B8DD:       db  #0C, #02
  11241.                 db  #11, #06
  11242.                 db  #16, #0F
  11243.                 db  #1A, #1E
  11244.                 db  #1F, #2D
  11245.                 db  #20, #3C
  11246.                 db  #24, #6E
  11247.                 db  #28, #AA
  11248.                 db  #2C, #D2
  11249.                 db  #16, #0F
  11250.                 db  #4F, #FF
  11251.                 db  #42, #FF
  11252.                 db  #34, #F6
  11253.                 db  #07, #97
  11254.                 db  #27, #96
  11255.                 db  #76, #86
  11256.                 db  #47, #94
  11257.                 db  #E6, #47
  11258.                 db  #56, #C6
  11259.                 db  #C6, #96
  11260.                 db  #76, #56
  11261.                 db  #E6, #47
  11262.                 db  #35, #F6
  11263.                 db  #66, #47
  11264.                 db  #77, #16
  11265.                 db  #27, #56
  11266.                 db  #83, #33
  11267.  
  11268.  
  11269.                 ; no alignment
  11270. tbl_B913:       db  #00, #85, #00
  11271.                 db  #02, #85, #00
  11272.                 db  #41, #85, #03
  11273.                 db  #42, #85, #03
  11274.                 db  #42, #8D, #03
  11275.                 db  #42, #85, #01
  11276.                 db  #43, #8D, #01
  11277.                 db  #84, #89, #01
  11278.                 db  #83, #8D, #40
  11279.                 db  #83, #89, #40
  11280.                 db  #94, #89, #40
  11281.                 db  #93, #89, #07
  11282.                 db  #94, #C9, #07
  11283.                 db  #A5, #C9, #07
  11284.                 db  #A5, #C9, #80
  11285.                 db  #A6, #C9, #80
  11286.  
  11287. ; =============== S U B R O U T I N E =======================================
  11288.  
  11289.  
  11290. sub_B943:                               ; CODE XREF: RAM:loc_B8AD
  11291. ;a=?
  11292.                 and     #F
  11293.                 ld      hl, tbl_B913
  11294.                 ld      c, a
  11295.                 add     a, a ;*2
  11296.                 add     a, c ;*3
  11297.                 add     a, l
  11298.                 ld      l, a
  11299.                 jr      nc, loc_B950
  11300.                 inc     h
  11301. loc_B950:                               ; CODE XREF: sub_B943+A
  11302.                 ld      a, (hl)
  11303.                 ld      c, a
  11304.                 and     #F
  11305.                 ld      (byte_D01A), a
  11306.                 ld      a, c
  11307.                 rra
  11308.                 rra
  11309.                 rra
  11310.                 rra
  11311.                 and     #F
  11312.                 ld      (byte_D019), a
  11313.                 inc     hl
  11314.                 ld      a, (hl)
  11315.                 ld      (byte_D01B), a
  11316.                 inc     hl
  11317.                 ld      a, (hl)
  11318.                 ld      (byte_D01C), a
  11319.                 or      a
  11320.                 ret
  11321.  
  11322. ; End of function sub_B943
  11323.  
  11324.  
  11325. ; =============== S U B R O U T I N E =======================================
  11326.  
  11327.  
  11328. sub_B96D:                               ; CODE XREF: sub_B47F+10
  11329.                 ld      a, (byte_D097)
  11330.                 add     a, a
  11331.                 ld      hl,  word_D240+1
  11332.                 add     a, l
  11333.                 ld      l, a
  11334.  
  11335. ; End of function sub_B96D
  11336.  
  11337.  
  11338. ; =============== S U B R O U T I N E =======================================
  11339.  
  11340.  
  11341. sub_B976:                               ; CODE XREF: sub_8C20-B13
  11342.                 ld      e, l
  11343.                 ld      b, #B
  11344.  
  11345. loc_B979:                               ; CODE XREF: sub_B976+1B
  11346.                 bit     7, (hl)
  11347.                 jr      nz, loc_B994
  11348.  
  11349.                 dec     l
  11350.                 ld      a, (hl)
  11351.                 and     #77
  11352.                 or      #80
  11353.                 ld      (hl), a
  11354.                 dec     l
  11355.                 dec     b
  11356.                 bit     7, (hl)
  11357.                 jr      nz, loc_B994
  11358.  
  11359.                 dec     l
  11360.                 ld      a, (hl)
  11361.                 and     #77
  11362.                 ld      (hl), a
  11363.                 dec     l
  11364.                 dec     b
  11365.                 jp      p, loc_B979
  11366.  
  11367. loc_B994:                               ; CODE XREF: sub_B976+5 sub_B976+12
  11368.                 ld      a, #C
  11369.                 sub     b
  11370.                 cp      5
  11371.                 ret     c
  11372.                 ld      d, a
  11373.  
  11374. loc_B99B:                               ; CODE XREF: sub_B976+58 sub_B976+74 ...
  11375.                 ld      l, e
  11376.                 scf
  11377.  
  11378. loc_B99D:                               ; CODE XREF: sub_B976+33
  11379.                 ld      b, d
  11380.                 dec     d
  11381.                 ret     z
  11382.                 ld      c, (hl)
  11383.                 dec     l
  11384.                 ld      a, (hl)
  11385.                 dec     l
  11386.                 bit     3, a
  11387.                 jr      z, loc_B9AD
  11388.  
  11389.                 rla
  11390.                 jp      c, loc_B99D
  11391.  
  11392.                 ret
  11393.  
  11394. ; ---------------------------------------------------------------------------
  11395.  
  11396. loc_B9AD:                               ; CODE XREF: sub_B976+30
  11397.                 ld      e, l
  11398.                 sra     b
  11399.                 push    de
  11400.                 and     #77
  11401.                 ld      e, a
  11402.                 ld      a, c
  11403.                 and     #77
  11404.                 ld      c, a
  11405.                 ld      d, 0
  11406.  
  11407.  
  11408. loc_B9BA:                               ; CODE XREF: sub_B976+52 sub_B976+71
  11409.                 dec     l
  11410.                 set     7, (hl)
  11411.                 dec     l
  11412.                 ld      a, (hl)
  11413.                 dec     l
  11414.                 and     #77
  11415.                 cp      e
  11416.                 jr      z, loc_B9D1
  11417.  
  11418.                 set     7, (hl)
  11419.  
  11420. loc_B9C7:                               ; CODE XREF: sub_B976+66
  11421.                 dec     l
  11422.                 djnz    loc_B9BA
  11423.  
  11424.                 scf
  11425.                 dec     d
  11426.                 pop     de
  11427.                 ret     m
  11428.                 jp      loc_B99B
  11429.  
  11430. ; ---------------------------------------------------------------------------
  11431.  
  11432. loc_B9D1:                               ; CODE XREF: sub_B976+4D
  11433.                 set     3, (hl)
  11434.                 ld      a, (hl)
  11435.                 and     #77
  11436.                 cp      c
  11437.                 jr      z, loc_B9F7
  11438.  
  11439.                 set     7, (hl)
  11440.                 ld      e, a
  11441.                 jp      loc_B9C7
  11442.  
  11443. ; ---------------------------------------------------------------------------
  11444.  
  11445. loc_B9DF:                               ; CODE XREF: sub_B976+7F
  11446.                 ld      a, (hl)
  11447.                 or      #88
  11448.                 ld      (hl), a
  11449.                 and     #77
  11450.                 ld      e, a
  11451.                 dec     l
  11452.                 djnz    loc_B9BA
  11453.  
  11454.                 pop     de
  11455.                 jp      loc_B99B
  11456.  
  11457. ; ---------------------------------------------------------------------------
  11458.  
  11459. loc_B9ED:                               ; CODE XREF: sub_B976+82
  11460.                 inc     d
  11461.                 dec     l
  11462.                 dec     l
  11463.                 ld      a, (hl)
  11464.                 and     #77
  11465.                 dec     l
  11466.                 cp      c
  11467.                 jr      z, loc_B9DF
  11468.  
  11469. loc_B9F7:                               ; CODE XREF: sub_B976+61
  11470.                 dec     l
  11471.                 djnz    loc_B9ED
  11472.  
  11473.                 pop     de
  11474.                 jp      loc_B99B
  11475.  
  11476. ; End of function sub_B976
  11477.  
  11478. ; ---------------------------------------------------------------------------
  11479.                 db    0 ;unused?
  11480.                 db    0 ;unused?
  11481.  
  11482.  
  11483.         align 256
  11484.                 ;must be 256-aligned ;какие-то константы для оценки позиции?
  11485. tbl_BA00:       db    0,   1,   1,  #D,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11486.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11487.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11488.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11489.                 db    9,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11490.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11491.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11492.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11493.                 db    9,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11494.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11495.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11496.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11497.                 db    9,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11498.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11499.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11500.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11501.                 ;must be after tbl_BA00
  11502. tbl_BB00:       db    0,   0,   1,   0,   0,   4,   5,   6,   4,   8,   9,  #A,   8,  #C,  #D,  #E
  11503.                 db    0, #10, #11, #12, #10, #14, #15, #16, #14, #18, #19, #1A, #18, #1C, #1D, #1E
  11504.                 db  #10, #20, #21, #22, #20, #24, #25, #26, #24, #28, #29, #2A, #28, #2C, #2D, #2E
  11505.                 db  #20, #30, #31, #32, #30, #34, #35, #36, #34, #38, #39, #3A, #38, #3C, #3D, #3E
  11506.                 db    0, #40, #41, #42, #40, #44, #45, #46, #44, #48, #49, #4A, #48, #4C, #4D, #4E
  11507.                 db  #40, #50, #51, #52, #50, #54, #55, #56, #54, #58, #59, #5A, #58, #5C, #5D, #5E
  11508.                 db  #50, #60, #61, #62, #60, #64, #65, #66, #64, #68, #69, #6A, #68, #6C, #6D, #6E
  11509.                 db  #60, #70, #71, #72, #70, #74, #75, #76, #74, #78, #79, #7A, #78, #7C, #7D, #7E
  11510.                 db  #40, #80, #81, #82, #80, #84, #85, #86, #84, #88, #89, #8A, #88, #8C, #8D, #8E
  11511.                 db  #80, #90, #91, #92, #90, #94, #95, #96, #94, #98, #99, #9A, #98, #9C, #9D, #9E
  11512.                 db  #90, #A0, #A1, #A2, #A0, #A4, #A5, #A6, #A4, #A8, #A9, #AA, #A8, #AC, #AD, #AE
  11513.                 db  #A0, #B0, #B1, #B2, #B0, #B4, #B5, #B6, #B4, #B8, #B9, #BA, #B8, #BC, #BD, #BE
  11514.                 db  #80, #C0, #C1, #C2, #C0, #C4, #C5, #C6, #C4, #C8, #C9, #CA, #C8, #CC, #CD, #CE
  11515.                 db  #C0, #D0, #D1, #D2, #D0, #D4, #D5, #D6, #D4, #D8, #D9, #DA, #D8, #DC, #DD, #DE
  11516.                 db  #D0, #E0, #E1, #E2, #E0, #E4, #E5, #E6, #E4, #E8, #E9, #EA, #E8, #EC, #ED, #EE
  11517.                 db  #E0, #F0, #F1, #F2, #F0, #F4, #F5, #F6, #F4, #F8, #F9, #FA, #F8, #FC, #FD, #FE
  11518.  
  11519. ; =============== S U B R O U T I N E =======================================
  11520.  
  11521.  
  11522. sub_BC00:                               ; CODE XREF: sub_8C20-9FD
  11523.                                         ; sub_8C20-77C ...
  11524.  
  11525. ; FUNCTION CHUNK AT C0A0 SIZE 000000AA BYTES
  11526.  
  11527.                 call    sub_8F4D
  11528.  
  11529.                 ld      (word_D03D), sp
  11530.                 xor     a
  11531.                 ld      e, a
  11532.                 ex      af, af' ;'
  11533.                 ld      h, BRD_88_0/256
  11534.                 exx
  11535.                 ld      h, word_D100/256
  11536.                 ld      a, (byte_D02D)
  11537.                 rrca
  11538.                 ld      iy, loc_C313
  11539.                 bit     1, a
  11540.                 jr      z, loc_BC27
  11541.  
  11542.                 ld      iy, loc_C303
  11543.                 bit     2, a
  11544.                 jr      z, loc_BC27
  11545.  
  11546.                 ld      iy, loc_C2A6
  11547.  
  11548.  
  11549. loc_BC27:                               ; CODE XREF: sub_BC00+19 sub_BC00+21
  11550.                 add     a, #80
  11551.                 ld      b, a
  11552.                 exx
  11553.                 jp      c, loc_C0AE
  11554.  
  11555.  
  11556. loc_BC2E:                               ; CODE XREF: sub_BC00+547
  11557.                 ld      d, #88
  11558.                 ld      a, (byte_D188)
  11559.                 or      a
  11560.                 call    p, sub_C48D ;проверяем поля по ходу ферзя?
  11561.  
  11562.                 ld      a, (byte_D190)
  11563.                 or      a
  11564.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  11565.  
  11566.                 ld      a, (byte_D198)
  11567.                 or      a
  11568.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  11569.  
  11570.                 ld      a, (byte_D1A0)
  11571.                 or      a
  11572.                 call    p, sub_C5CF ;что-то делаем и проверяем поля по ходу слона
  11573.  
  11574.                 ld      a, (byte_D1A8)
  11575.                 or      a
  11576.                 call    p, sub_C5CF ;что-то делаем и проверяем поля по ходу слона
  11577.  
  11578.                 ld      a, (byte_D1B0)
  11579.                 or      a
  11580.                 call    p, sub_C505 ;что-то делаем и проверяем поля по ходу коня
  11581.  
  11582.                 ld      a, (byte_D1B8)
  11583.                 or      a
  11584.                 call    p, sub_C505 ;что-то делаем и проверяем поля по ходу коня
  11585.  
  11586.                 ld      d, #F1
  11587.                 ld      b, array_D200/256
  11588.                 ld      hl, (word_D1C0)
  11589.                 bit     7, l
  11590.                 call    z, sub_C2F2
  11591.  
  11592.                 ld      hl, (word_D1C8)
  11593.                 bit     7, l
  11594.                 call    z, sub_C2F2
  11595.  
  11596.                 ld      hl, (word_D1D0)
  11597.                 bit     7, l
  11598.                 call    z, sub_C2F2
  11599.  
  11600.                 ld      hl, (word_D1D8)
  11601.                 bit     7, l
  11602.                 call    z, sub_C2EA
  11603.  
  11604.                 ld      hl, (word_D1E0)
  11605.                 bit     7, l
  11606.                 call    z, sub_C2EA
  11607.  
  11608.                 ld      hl, (word_D1E8)
  11609.                 bit     7, l
  11610.                 call    z, sub_C2F2
  11611.  
  11612.                 ld      hl, (word_D1F0)
  11613.                 bit     7, l
  11614.                 call    z, sub_C2F2
  11615.  
  11616.                 ld      hl, (word_D1F8)
  11617.                 bit     7, l
  11618.                 call    z, sub_C2F2
  11619.  
  11620.                 call    sub_C06D
  11621.  
  11622.                 exx
  11623.                 bit     4, b
  11624.                 jp      z, loc_C0A0
  11625.  
  11626.  
  11627. loc_BCAE:                               ; CODE XREF: sub_BC00+541
  11628.                 bit     6, b
  11629.                 jr      nz, loc_BCC1
  11630.  
  11631.                 ld      l, (ix+1)
  11632.                 res     7, l
  11633.                 dec     h
  11634.                 ld      l, (hl)
  11635.                 inc     h
  11636.                 bit     2, l
  11637.                 jr      z, loc_BCC1
  11638.  
  11639.                 inc     l
  11640.                 set     1, (hl)
  11641.  
  11642.  
  11643. loc_BCC1:                               ; CODE XREF: sub_BC00+B0 sub_BC00+BC
  11644.                 bit     3, b
  11645.                 jp      z, loc_BCD2
  11646.  
  11647.                 exx
  11648.                 ld      a, (byte_D04C)
  11649.                 or      a
  11650.                 jr      nz, loc_BCCF
  11651.  
  11652.                 sra     e
  11653.  
  11654.  
  11655. loc_BCCF:                               ; CODE XREF: sub_BC00+CB
  11656.                 sra     e
  11657.                 exx
  11658.  
  11659.  
  11660. loc_BCD2:                               ; CODE XREF: sub_BC00+C3
  11661.                 bit     5, b
  11662.                 exx
  11663.                 call    nz, sub_C6C4
  11664.  
  11665.                 ex      af, af' ;'
  11666.                 sra     a
  11667.                 sra     a
  11668.                 add     a, e
  11669.                 ld      e, a
  11670.                 ld      hl, 0
  11671.                 ld      (word_D039), hl
  11672.                 ld      hl, (word_D18A)
  11673.                 ld      a, h
  11674.                 or      l
  11675.                 jr      z, loc_BCF8
  11676.  
  11677.                 ld      bc, (word_D18C)
  11678.                 ld      a, 9
  11679.                 call    sub_C3A3
  11680.  
  11681.                 ld      (word_D18A), hl
  11682.  
  11683.  
  11684. loc_BCF8:                               ; CODE XREF: sub_BC00+EA
  11685.                 ld      (word_D18C), hl
  11686.                 ld      hl, (word_D192)
  11687.                 ld      a, h
  11688.                 or      l
  11689.                 jr      z, loc_BD0E
  11690.  
  11691.                 ld      bc, (word_D194)
  11692.                 ld      a, 5
  11693.                 call    sub_C3A3
  11694.  
  11695.                 ld      (word_D192), hl
  11696.  
  11697.  
  11698. loc_BD0E:                               ; CODE XREF: sub_BC00+100
  11699.                 ld      (word_D194), hl
  11700.                 ld      hl, (word_D19A)
  11701.                 ld      a, h
  11702.                 or      l
  11703.                 jr      z, loc_BD24
  11704.  
  11705.                 ld      bc, (word_D19C)
  11706.                 ld      a, 5
  11707.                 call    sub_C3A3
  11708.  
  11709.                 ld      (word_D19A), hl
  11710.  
  11711.  
  11712. loc_BD24:                               ; CODE XREF: sub_BC00+116
  11713.                 ld      (word_D19C), hl
  11714.                 ld      hl, (word_D1A2)
  11715.                 ld      a, h
  11716.                 or      l
  11717.                 jr      z, loc_BD3A
  11718.  
  11719.                 ld      bc, (word_D1A4)
  11720.                 ld      a, 3
  11721.                 call    sub_C3A3
  11722.  
  11723.                 ld      (word_D1A2), hl
  11724.  
  11725.  
  11726. loc_BD3A:                               ; CODE XREF: sub_BC00+12C
  11727.                 ld      (word_D1A4), hl
  11728.                 ld      hl, (word_D1AA)
  11729.                 ld      a, h
  11730.                 or      l
  11731.                 jr      z, loc_BD50
  11732.  
  11733.                 ld      bc, (word_D1AC)
  11734.                 ld      a, 3
  11735.                 call    sub_C3A3
  11736.  
  11737.                 ld      (word_D1AA), hl
  11738.  
  11739.  
  11740. loc_BD50:                               ; CODE XREF: sub_BC00+142
  11741.                 ld      (word_D1AC), hl
  11742.                 ld      hl, (word_D1B2)
  11743.                 ld      a, h
  11744.                 or      l
  11745.                 jr      z, loc_BD66
  11746.  
  11747.                 ld      bc, (word_D1B4)
  11748.                 ld      a, 3
  11749.                 call    sub_C3A3
  11750.  
  11751.                 ld      (word_D1B2), hl
  11752.  
  11753.  
  11754. loc_BD66:                               ; CODE XREF: sub_BC00+158
  11755.                 ld      (word_D1B4), hl
  11756.                 ld      hl, (word_D1BA)
  11757.                 ld      a, h
  11758.                 or      l
  11759.                 jr      z, loc_BD7C
  11760.  
  11761.                 ld      bc, (word_D1BC)
  11762.                 ld      a, 3
  11763.                 call    sub_C3A3
  11764.  
  11765.                 ld      (word_D1BA), hl
  11766.  
  11767.  
  11768. loc_BD7C:                               ; CODE XREF: sub_BC00+16E
  11769.                 ld      (word_D1BC), hl
  11770.                 ld      hl, (word_D1C2)
  11771.                 ld      a, h
  11772.                 or      l
  11773.                 jr      z, loc_BD93
  11774.  
  11775.                 ld      bc, (word_D1C4)
  11776.                 ld      a, (word_D1C0+1)
  11777.                 call    sub_C3A1
  11778.  
  11779.                 ld      (word_D1C2), hl
  11780.  
  11781.  
  11782. loc_BD93:                               ; CODE XREF: sub_BC00+184
  11783.                 ld      (word_D1C4), hl
  11784.                 ld      hl, (word_D1CA)
  11785.                 ld      a, h
  11786.                 or      l
  11787.                 jr      z, loc_BDAA
  11788.  
  11789.                 ld      bc, (word_D1CC)
  11790.                 ld      a, (word_D1C8+1)
  11791.                 call    sub_C3A1
  11792.  
  11793.                 ld      (word_D1CA), hl
  11794.  
  11795.  
  11796. loc_BDAA:                               ; CODE XREF: sub_BC00+19B
  11797.                 ld      (word_D1CC), hl
  11798.                 ld      hl, (word_D1D2)
  11799.                 ld      a, h
  11800.                 or      l
  11801.                 jr      z, loc_BDC1
  11802.  
  11803.                 ld      bc, (word_D1D4)
  11804.                 ld      a, (word_D1D0+1)
  11805.                 call    sub_C3A1
  11806.  
  11807.                 ld      (word_D1D2), hl
  11808.  
  11809.  
  11810. loc_BDC1:                               ; CODE XREF: sub_BC00+1B2
  11811.                 ld      (word_D1D4), hl
  11812.                 ld      hl, (word_D1DA)
  11813.                 ld      a, h
  11814.                 or      l
  11815.                 jr      z, loc_BDD8
  11816.  
  11817.                 ld      bc, (word_D1DC)
  11818.                 ld      a, (word_D1D8+1)
  11819.                 call    sub_C3A1
  11820.  
  11821.                 ld      (word_D1DA), hl
  11822.  
  11823.  
  11824. loc_BDD8:                               ; CODE XREF: sub_BC00+1C9
  11825.                 ld      (word_D1DC), hl
  11826.                 ld      hl, (word_D1E2)
  11827.                 ld      a, h
  11828.                 or      l
  11829.                 jr      z, loc_BDEF
  11830.  
  11831.                 ld      bc, (word_D1E4)
  11832.                 ld      a, (word_D1E0+1)
  11833.                 call    sub_C3A1
  11834.  
  11835.                 ld      (word_D1E2), hl
  11836.  
  11837.  
  11838. loc_BDEF:                               ; CODE XREF: sub_BC00+1E0
  11839.                 ld      (word_D1E4), hl
  11840.                 ld      hl, (word_D1EA)
  11841.                 ld      a, h
  11842.                 or      l
  11843.                 jr      z, loc_BE06
  11844.  
  11845.                 ld      bc, (word_D1EC)
  11846.                 ld      a, (word_D1E8+1)
  11847.                 call    sub_C3A1
  11848.  
  11849.                 ld      (word_D1EA), hl
  11850.  
  11851.  
  11852. loc_BE06:                               ; CODE XREF: sub_BC00+1F7
  11853.                 ld      (word_D1EC), hl
  11854.                 ld      hl, (word_D1F2)
  11855.                 ld      a, h
  11856.                 or      l
  11857.                 jr      z, loc_BE1D
  11858.  
  11859.                 ld      bc, (word_D1F4)
  11860.                 ld      a, (word_D1F0+1)
  11861.                 call    sub_C3A1
  11862.  
  11863.                 ld      (word_D1F2), hl
  11864.  
  11865.  
  11866. loc_BE1D:                               ; CODE XREF: sub_BC00+20E
  11867.                 ld      (word_D1F4), hl
  11868.                 ld      hl, (word_D1FA)
  11869.                 ld      a, h
  11870.                 or      l
  11871.                 jr      z, loc_BE34
  11872.  
  11873.                 ld      bc, (word_D1FC)
  11874.                 ld      a, (word_D1F8+1)
  11875.                 call    sub_C3A1
  11876.  
  11877.                 ld      (word_D1FA), hl
  11878.  
  11879.  
  11880. loc_BE34:                               ; CODE XREF: sub_BC00+225
  11881.                 ld      (word_D1FC), hl
  11882.                 xor     a
  11883.                 sub     e
  11884.                 ld      e, a
  11885.                 ld      hl, (word_D039)
  11886.                 push    hl
  11887.                 ld      hl, 0
  11888.                 ld      (word_D039), hl
  11889.                 ld      hl, (word_D10A)
  11890.                 ld      a, h
  11891.                 or      l
  11892.                 jr      z, loc_BE57
  11893.  
  11894.                 ld      bc, (word_D10C)
  11895.                 ld      a, 9
  11896.                 call    sub_C3A3
  11897.  
  11898.                 ld      (word_D10A), hl
  11899.  
  11900.  
  11901. loc_BE57:                               ; CODE XREF: sub_BC00+249
  11902.                 ld      (word_D10C), hl
  11903.                 ld      hl, (word_D112)
  11904.                 ld      a, h
  11905.                 or      l
  11906.                 jr      z, loc_BE6D
  11907.  
  11908.                 ld      bc, (word_D114)
  11909.                 ld      a, 5
  11910.                 call    sub_C3A3
  11911.  
  11912.                 ld      (word_D112), hl
  11913.  
  11914.  
  11915. loc_BE6D:                               ; CODE XREF: sub_BC00+25F
  11916.                 ld      (word_D114), hl
  11917.                 ld      hl, (word_D11A)
  11918.                 ld      a, h
  11919.                 or      l
  11920.                 jr      z, loc_BE83
  11921.  
  11922.                 ld      bc, (word_D11C)
  11923.                 ld      a, 5
  11924.                 call    sub_C3A3
  11925.  
  11926.                 ld      (word_D11A), hl
  11927.  
  11928.  
  11929. loc_BE83:                               ; CODE XREF: sub_BC00+275
  11930.                 ld      (word_D11C), hl
  11931.                 ld      hl, (word_D122)
  11932.                 ld      a, h
  11933.                 or      l
  11934.                 jr      z, loc_BE99
  11935.  
  11936.                 ld      bc, (word_D124)
  11937.                 ld      a, 3
  11938.                 call    sub_C3A3
  11939.  
  11940.                 ld      (word_D122), hl
  11941.  
  11942.  
  11943. loc_BE99:                               ; CODE XREF: sub_BC00+28B
  11944.                 ld      (word_D124), hl
  11945.                 ld      hl, (word_D12A)
  11946.                 ld      a, h
  11947.                 or      l
  11948.                 jr      z, loc_BEAF
  11949.  
  11950.                 ld      bc, (word_D12C)
  11951.                 ld      a, 3
  11952.                 call    sub_C3A3
  11953.  
  11954.                 ld      (word_D12A), hl
  11955.  
  11956.  
  11957. loc_BEAF:                               ; CODE XREF: sub_BC00+2A1
  11958.                 ld      (word_D12C), hl
  11959.                 ld      hl, (word_D132)
  11960.                 ld      a, h
  11961.                 or      l
  11962.                 jr      z, loc_BEC5
  11963.  
  11964.                 ld      bc, (word_D134)
  11965.                 ld      a, 3
  11966.                 call    sub_C3A3
  11967.  
  11968.                 ld      (word_D132), hl
  11969.  
  11970.  
  11971. loc_BEC5:                               ; CODE XREF: sub_BC00+2B7
  11972.                 ld      (word_D134), hl
  11973.                 ld      hl, (word_D13A)
  11974.                 ld      a, h
  11975.                 or      l
  11976.                 jr      z, loc_BEDB
  11977.  
  11978.                 ld      bc, (word_D13C)
  11979.                 ld      a, 3
  11980.                 call    sub_C3A3
  11981.  
  11982.                 ld      (word_D13A), hl
  11983.  
  11984.  
  11985. loc_BEDB:                               ; CODE XREF: sub_BC00+2CD
  11986.                 ld      (word_D13C), hl
  11987.                 ld      hl, (word_D142)
  11988.                 ld      a, h
  11989.                 or      l
  11990.                 jr      z, loc_BEF2
  11991.  
  11992.                 ld      bc, (word_D144)
  11993.                 ld      a, (byte_D141)
  11994.                 call    sub_C3A1
  11995.  
  11996.                 ld      (word_D142), hl
  11997.  
  11998.  
  11999. loc_BEF2:                               ; CODE XREF: sub_BC00+2E3
  12000.                 ld      (word_D144), hl
  12001.                 ld      hl, (word_D14A)
  12002.                 ld      a, h
  12003.                 or      l
  12004.                 jr      z, loc_BF09
  12005.  
  12006.                 ld      bc, (word_D14C)
  12007.                 ld      a, (byte_D149)
  12008.                 call    sub_C3A1
  12009.  
  12010.                 ld      (word_D14A), hl
  12011.  
  12012.  
  12013. loc_BF09:                               ; CODE XREF: sub_BC00+2FA
  12014.                 ld      (word_D14C), hl
  12015.                 ld      hl, (word_D152)
  12016.                 ld      a, h
  12017.                 or      l
  12018.                 jr      z, loc_BF20
  12019.  
  12020.                 ld      bc, (word_D154)
  12021.                 ld      a, (byte_D151)
  12022.                 call    sub_C3A1
  12023.  
  12024.                 ld      (word_D152), hl
  12025.  
  12026.  
  12027. loc_BF20:                               ; CODE XREF: sub_BC00+311
  12028.                 ld      (word_D154), hl
  12029.                 ld      hl, (word_D15A)
  12030.                 ld      a, h
  12031.                 or      l
  12032.                 jr      z, loc_BF37
  12033.  
  12034.                 ld      bc, (word_D15C)
  12035.                 ld      a, (byte_D159)
  12036.                 call    sub_C3A1
  12037.  
  12038.                 ld      (word_D15A), hl
  12039.  
  12040.  
  12041. loc_BF37:                               ; CODE XREF: sub_BC00+328
  12042.                 ld      (word_D15C), hl
  12043.                 ld      hl, (word_D162)
  12044.                 ld      a, h
  12045.                 or      l
  12046.                 jr      z, loc_BF4E
  12047.  
  12048.                 ld      bc, (word_D164)
  12049.                 ld      a, (byte_D161)
  12050.                 call    sub_C3A1
  12051.  
  12052.                 ld      (word_D162), hl
  12053.  
  12054.  
  12055. loc_BF4E:                               ; CODE XREF: sub_BC00+33F
  12056.                 ld      (word_D164), hl
  12057.                 ld      hl, (word_D16A)
  12058.                 ld      a, h
  12059.                 or      l
  12060.                 jr      z, loc_BF65
  12061.  
  12062.                 ld      bc, (word_D16C)
  12063.                 ld      a, (byte_D169)
  12064.                 call    sub_C3A1
  12065.  
  12066.                 ld      (word_D16A), hl
  12067.  
  12068.  
  12069. loc_BF65:                               ; CODE XREF: sub_BC00+356
  12070.                 ld      (word_D16C), hl
  12071.                 ld      hl, (word_D172)
  12072.                 ld      a, h
  12073.                 or      l
  12074.                 jr      z, loc_BF7C
  12075.  
  12076.                 ld      bc, (word_D174)
  12077.                 ld      a, (byte_D171)
  12078.                 call    sub_C3A1
  12079.  
  12080.                 ld      (word_D172), hl
  12081.  
  12082.  
  12083. loc_BF7C:                               ; CODE XREF: sub_BC00+36D
  12084.                 ld      (word_D174), hl
  12085.                 ld      hl, (word_D17A)
  12086.                 ld      a, h
  12087.                 or      l
  12088.                 jr      z, loc_BF93
  12089.  
  12090.                 ld      bc, (word_D17C)
  12091.                 ld      a, (byte_D179)
  12092.                 call    sub_C3A1
  12093.  
  12094.                 ld      (word_D17A), hl
  12095.  
  12096.  
  12097. loc_BF93:                               ; CODE XREF: sub_BC00+384
  12098.                 ld      (word_D17C), hl
  12099.                 ld      b, e
  12100.                 pop     de
  12101.                 ld      hl, (word_D039)
  12102.                 ld      a, (byte_D02D)
  12103.                 rra
  12104.                 jr      nc, loc_BFAB
  12105.  
  12106.                 xor     a
  12107.                 sub     b
  12108.                 ld      b, a
  12109.                 ex      de, hl
  12110.                 ld      a, (word_D00D)
  12111.                 jp      loc_BFB0
  12112.  
  12113. ; ---------------------------------------------------------------------------
  12114.  
  12115. loc_BFAB:                               ; CODE XREF: sub_BC00+39F
  12116.                 ld      a, (word_D00D)
  12117.                 neg
  12118.  
  12119.  
  12120. loc_BFB0:                               ; CODE XREF: sub_BC00+3A8
  12121.                 sub     l
  12122.                 add     a, a
  12123.                 dec     l
  12124.                 jp      m, loc_BFD4
  12125.  
  12126.                 set     1, (ix+2)
  12127.                 ex      af, af' ;'
  12128.                 ld      a, l
  12129.                 inc     a
  12130.                 sub     e
  12131.                 jp      m, loc_BFCC
  12132.  
  12133.                 ld      a, (byte_D07A)
  12134.                 sub     2
  12135.                 push    hl
  12136.                 ld      l, a
  12137.                 ld      h, word_D100/256
  12138.                 ld      a, (hl)
  12139.                 pop     hl
  12140.  
  12141.  
  12142. loc_BFCC:                               ; CODE XREF: sub_BC00+3BE
  12143.                 ld      (byte_D07A), a
  12144.                 ex      af, af' ;'
  12145.                 jr      z, loc_BFD3
  12146.  
  12147.                 dec     a
  12148.  
  12149.  
  12150. loc_BFD3:                               ; CODE XREF: sub_BC00+3D0
  12151.                 sub     h
  12152.  
  12153.  
  12154. loc_BFD4:                               ; CODE XREF: sub_BC00+3B3
  12155.                 inc     l
  12156.                 dec     e
  12157.                 jp      m, loc_C002
  12158.  
  12159.                 ex      af, af' ;'
  12160.                 ld      a, (byte_D01D)
  12161.                 bit     1, a
  12162.                 jr      nz, loc_BFE5
  12163.  
  12164.                 set     6, (ix+2)
  12165.  
  12166.  
  12167. loc_BFE5:                               ; CODE XREF: sub_BC00+3DF
  12168.                 bit     2, (ix+2)
  12169.                 jr      nz, loc_C001
  12170.  
  12171.                 inc     b
  12172.                 inc     b
  12173.                 dec     d
  12174.                 jp      m, loc_C001
  12175.  
  12176.                 and     #C9 ; 'Й'
  12177.                 jr      z, loc_BFF9
  12178.  
  12179.                 set     6, (ix+2)
  12180.  
  12181.  
  12182. loc_BFF9:                               ; CODE XREF: sub_BC00+3F3
  12183.                 inc     b
  12184.                 inc     b
  12185.                 dec     d
  12186.                 jp      m, loc_C001
  12187.  
  12188.                 inc     b
  12189.                 inc     b
  12190.  
  12191.  
  12192. loc_C001:                               ; CODE XREF: sub_BC00+3E9
  12193.                                         ; sub_BC00+3EE ...
  12194.                 ex      af, af' ;'
  12195.  
  12196.  
  12197. loc_C002:                               ; CODE XREF: sub_BC00+3D6
  12198.                 cp      #18
  12199.                 jr      c, loc_C016
  12200.  
  12201.                 cp      #E9 ; 'й'
  12202.                 jp      nc, loc_C016
  12203.  
  12204.                 rla
  12205.                 ld      a, 3
  12206.                 ld      b, a
  12207.                 ld      c, a
  12208.                 ret     c
  12209.                 ld      a, #FC  ; 'ь'
  12210.                 ld      b, a
  12211.                 ld      c, a
  12212.                 ret
  12213.  
  12214. ; ---------------------------------------------------------------------------
  12215.  
  12216. loc_C016:                               ; CODE XREF: sub_BC00+404
  12217.                                         ; sub_BC00+408
  12218.                 add     a, a
  12219.                 add     a, a
  12220.                 ld      c, a
  12221.                 ld      a, b
  12222.                 sra     a
  12223.                 cp      #22 ; '"'
  12224.                 jr      c, loc_C02B
  12225.  
  12226.                 cp      #DF ; 'Я'
  12227.                 jr      nc, loc_C02B
  12228.  
  12229.                 rla
  12230.                 ld      a, #21 ; '!'
  12231.                 jr      nc, loc_C02B
  12232.  
  12233.                 ld      a, #DF  ; 'Я'
  12234.  
  12235.  
  12236. loc_C02B:                               ; CODE XREF: sub_BC00+41E
  12237.                                         ; sub_BC00+422 ...
  12238.                 add     a, c
  12239.                 add     a, #80 ; '?'
  12240.                 ld      c, a
  12241.                 ld      b, a
  12242.                 ld      a, (byte_D03B)
  12243.                 rla
  12244.                 jr      c, loc_C049
  12245.  
  12246.  
  12247. loc_C036:                               ; CODE XREF: sub_BC00+459
  12248.                 ld      a, c
  12249.                 bit     6, (ix+2)
  12250.                 ret     z
  12251.                 inc     e
  12252.                 ret     z
  12253.                 rlc     e
  12254.                 rl      e
  12255.                 add     a, e
  12256.                 ld      b, a
  12257.                 ld      a, c
  12258.                 ret     nc
  12259.                 ld      b, #FE  ; 'ю'
  12260.                 ret
  12261.  
  12262. ; ---------------------------------------------------------------------------
  12263.  
  12264. loc_C049:                               ; CODE XREF: sub_BC00+434
  12265.                 rla
  12266.                 ld      a, (byte_D02D)
  12267.                 jr      c, loc_C062
  12268.  
  12269.                 rra
  12270.                 ld      a, (byte_D01E)
  12271.                 jr      nc, loc_C056
  12272.  
  12273.                 cpl
  12274.  
  12275.  
  12276. loc_C056:                               ; CODE XREF: sub_BC00+453
  12277.                 adc     a, #80 ; '?'
  12278.                 cp      c
  12279.                 jr      nc, loc_C036
  12280.  
  12281.  
  12282. loc_C05B:                               ; CODE XREF: sub_BC00+46B
  12283.                 ld      c, a
  12284.                 ld      b, a
  12285.                 res     6, (ix+2)
  12286.                 ret
  12287.  
  12288. ; ---------------------------------------------------------------------------
  12289.  
  12290. loc_C062:                               ; CODE XREF: sub_BC00+44D
  12291.                 rra
  12292.                 ld      a, (byte_D01E)
  12293.                 jr      nc, loc_C069
  12294.  
  12295.                 cpl
  12296.  
  12297.  
  12298. loc_C069:                               ; CODE XREF: sub_BC00+466
  12299.                 adc     a, #80 ; '?'
  12300.                 jr      loc_C05B
  12301.  
  12302. ; End of function sub_BC00
  12303.  
  12304.  
  12305. ; =============== S U B R O U T I N E =======================================
  12306.  
  12307.  
  12308. sub_C06D:                               ; CODE XREF: sub_BC00+A5
  12309.                                         ; sub_BC00+525
  12310.                 ld      hl, array_D200
  12311.                 xor     a
  12312.                 ld      c, a
  12313.  
  12314.  
  12315. loc_C072:                               ; CODE XREF: sub_C06D+7 sub_C06D+27     ...
  12316.                 inc     l
  12317.                 or      (hl)
  12318.                 jr      z, loc_C072
  12319.  
  12320.                 ret     m
  12321.                 ld      (hl), c
  12322.  
  12323.  
  12324. loc_C078:                               ; CODE XREF: sub_C06D+12
  12325.                 dec     a
  12326.                 jp      z, loc_C082
  12327.  
  12328.                 dec     e
  12329.                 dec     e
  12330.                 dec     e
  12331.                 jp      loc_C078
  12332.  
  12333. ; ---------------------------------------------------------------------------
  12334.  
  12335. loc_C082:                               ; CODE XREF: sub_C06D+C
  12336.                 inc     l
  12337.                 or      (hl)
  12338.                 jr      z, loc_C09A
  12339.  
  12340.                 ret     m
  12341.  
  12342.  
  12343. loc_C087:                               ; CODE XREF: sub_C06D+29
  12344.                 ld      (hl), c
  12345.  
  12346.  
  12347. loc_C088:                               ; CODE XREF: sub_C06D+22
  12348.                 dec     a
  12349.                 jp      z, loc_C092
  12350.  
  12351.                 dec     e
  12352.                 dec     e
  12353.                 dec     e
  12354.                 jp      loc_C088
  12355.  
  12356. ; ---------------------------------------------------------------------------
  12357.  
  12358. loc_C092:                               ; CODE XREF: sub_C06D+1C
  12359.                 inc     l
  12360.                 or      (hl)
  12361.                 jr      z, loc_C072
  12362.  
  12363.                 jp      p, loc_C087
  12364.  
  12365.                 ret
  12366.  
  12367. ; ---------------------------------------------------------------------------
  12368.  
  12369. loc_C09A:                               ; CODE XREF: sub_C06D+17
  12370.                 dec     e
  12371.                 dec     e
  12372.                 dec     e
  12373.                 jp      loc_C072
  12374.  
  12375. ; End of function sub_C06D
  12376.  
  12377. ; ---------------------------------------------------------------------------
  12378. ; START OF FUNCTION CHUNK FOR sub_BC00
  12379.  
  12380. loc_C0A0:                               ; CODE XREF: sub_BC00+AB
  12381.                 ld      a, #90 ; '?'
  12382.                 add     a, b
  12383.                 ld      b, a
  12384.                 exx
  12385.                 xor     a
  12386.                 sub     e
  12387.                 ld      e, a
  12388.                 ld      h, BRD_88_0/256
  12389.                 ex      af, af' ;'
  12390.                 neg
  12391.                 ex      af, af' ;'
  12392.  
  12393.  
  12394. loc_C0AE:                               ; CODE XREF: sub_BC00+2B
  12395.                 ld      a, (byte_D108)
  12396.                 ld      d, #88
  12397.                 or      a
  12398.                 call    p, sub_C48D ;проверяем поля по ходу ферзя?
  12399.  
  12400.                 ld      a, (byte_D110)
  12401.                 or      a
  12402.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  12403.  
  12404.                 ld      a, (byte_D118)
  12405.                 or      a
  12406.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  12407.  
  12408.                 ld      a, (byte_D120)
  12409.                 or      a
  12410.                 call    p, sub_C5C4 ;что-то делаем и проверяем поля по ходу слона?
  12411.  
  12412.                 ld      a, (byte_D128)
  12413.                 or      a
  12414.                 call    p, sub_C5C4 ;что-то делаем и проверяем поля по ходу слона?
  12415.  
  12416.                 ld      a, (byte_D130)
  12417.                 or      a
  12418.                 call    p, sub_C512 ;что-то делаем и проверяем поля по ходу коня
  12419.  
  12420.                 ld      a, (byte_D138)
  12421.                 or      a
  12422.                 call    p, sub_C512 ;что-то делаем и проверяем поля по ходу коня
  12423.  
  12424.                 ld      d, #11
  12425.                 ld      b, array_D200/256
  12426.                 ld      hl, (unk_D140)
  12427.                 bit     7, l
  12428.                 call    z, sub_C2F2
  12429.  
  12430.                 ld      hl, (unk_D148)
  12431.                 bit     7, l
  12432.                 call    z, sub_C2F2
  12433.  
  12434.                 ld      hl, (unk_D150)
  12435.                 bit     7, l
  12436.                 call    z, sub_C2F2
  12437.  
  12438.                 ld      hl, (unk_D158)
  12439.                 bit     7, l
  12440.                 call    z, sub_C2EA
  12441.  
  12442.                 ld      hl, (unk_D160)
  12443.                 bit     7, l
  12444.                 call    z, sub_C2EA
  12445.  
  12446.                 ld      hl, (unk_D168)
  12447.                 bit     7, l
  12448.                 call    z, sub_C2F2
  12449.  
  12450.                 ld      hl, (unk_D170)
  12451.                 bit     7, l
  12452.                 call    z, sub_C2F2
  12453.  
  12454.                 ld      hl, (unk_D178)
  12455.                 bit     7, l
  12456.                 call    z, sub_C2F2
  12457.  
  12458.                 call    sub_C06D
  12459.  
  12460.                 ld      hl, (word_D100)
  12461.                 call    sub_C1EF ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12462.  
  12463.                 ex      af, af' ;'
  12464.                 neg
  12465.                 ex      af, af' ;'
  12466.                 xor     a
  12467.                 sub     e
  12468.                 ld      e, a
  12469.                 ld      hl, (word_D180)
  12470.                 exx
  12471.                 set     7, b
  12472.                 call    sub_C1F4 ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12473.  
  12474.                 exx
  12475.                 bit     4, b
  12476.                 jp      nz, loc_BCAE
  12477.  
  12478.                 set     4, b
  12479.                 exx
  12480.                 jp      loc_BC2E
  12481.  
  12482. ; END OF FUNCTION CHUNK FOR sub_BC00
  12483. ; ---------------------------------------------------------------------------
  12484. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12485.  
  12486. loc_C14A:                               ; CODE XREF: sub_C1F4-1B
  12487.                 or      a
  12488.                 jp      nz, loc_C1E6
  12489.  
  12490.                 ld      a, d
  12491.                 or      a
  12492.                 jr      nz, loc_C155
  12493.  
  12494.                 sub     #A
  12495.                 ld      d, a
  12496.  
  12497.  
  12498. loc_C155:                               ; CODE XREF: sub_C1F4-A4
  12499.                 ld      a, 7
  12500.                 and     l
  12501.                 inc     a
  12502.                 rra
  12503.                 cp      2
  12504.                 jr      z, loc_C169
  12505.  
  12506.                 ld      a, #70 ; 'p'
  12507.                 and     l
  12508.                 cp      #30 ; '0'
  12509.                 jr      z, loc_C169
  12510.  
  12511.                 cp      #40 ; '@'
  12512.                 jr      nz, loc_C16F
  12513.  
  12514.  
  12515. loc_C169:                               ; CODE XREF: sub_C1F4-98 sub_C1F4-91
  12516.                 ex      af, af' ;'
  12517.                 add     a, #10
  12518.                 jp      loc_C1E7
  12519.  
  12520. ; ---------------------------------------------------------------------------
  12521.  
  12522. loc_C16F:                               ; CODE XREF: sub_C1F4-8D
  12523.                 ld      a, 7
  12524.                 and     l
  12525.                 cp      2
  12526.                 jr      z, loc_C185
  12527.  
  12528.                 cp      5
  12529.                 jr      z, loc_C185
  12530.  
  12531.                 ld      a, #70 ; 'p'
  12532.                 and     l
  12533.                 cp      #20 ; ' '
  12534.                 jr      z, loc_C185
  12535.  
  12536.                 cp      #50 ; 'P'
  12537.                 jr      nz, loc_C1E6
  12538.  
  12539.  
  12540. loc_C185:                               ; CODE XREF: sub_C1F4-80 sub_C1F4-7C ...
  12541.                 ex      af, af' ;'
  12542.                 add     a, 8
  12543.                 jp      loc_C1E7
  12544.  
  12545. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12546. ; ---------------------------------------------------------------------------
  12547. ; START OF FUNCTION CHUNK FOR sub_C1EF
  12548.  
  12549. loc_C18B:                               ; CODE XREF: sub_C1EF+3
  12550. ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12551.                 ld      a, (byte_D049) ;move #
  12552.                 cpl
  12553.                 add     a, #B
  12554.                 exx
  12555.                 ld      c, a
  12556.                 ld      a, (byte_D189)
  12557.                 bit     4, a
  12558.                 jr      z, loc_C1A4
  12559.  
  12560.                 ld      a, (byte_D188)
  12561.                 or      a
  12562.                 jp      m, loc_C1A4
  12563.  
  12564.                 ld      a, e
  12565.                 add     a, c
  12566.                 ld      e, a
  12567.  
  12568.  
  12569. loc_C1A4:                               ; CODE XREF: sub_C1EF-57 sub_C1EF-51
  12570.                 ld      a, (byte_D109)
  12571.                 bit     4, a
  12572.                 jr      z, loc_C1B5
  12573.  
  12574.                 ld      a, (byte_D108)
  12575.                 or      a
  12576.                 jp      m, loc_C1B5
  12577.  
  12578.                 ld      a, e
  12579.                 sub     c
  12580.                 ld      e, a
  12581.  
  12582.  
  12583. loc_C1B5:                               ; CODE XREF: sub_C1EF-46 sub_C1EF-40
  12584.                 exx
  12585.                 jp      sub_C1F4 ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12586.  
  12587. ; END OF FUNCTION CHUNK FOR sub_C1EF
  12588. ; ---------------------------------------------------------------------------
  12589. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12590.  
  12591. loc_C1B9:                               ; CODE XREF: sub_C1F4+4
  12592.                 bit     3, a
  12593.                 jr      nz, loc_C1C5
  12594.  
  12595.                 ld      h, BRD_88_0/256
  12596.                 ld      b, l
  12597.                 ld      c, 8
  12598.                 jp      loc_C21E ;проверяем поля вокруг
  12599.  
  12600. ; ---------------------------------------------------------------------------
  12601.  
  12602. loc_C1C5:                               ; CODE XREF: sub_C1F4-39
  12603.                 ld      b, a
  12604.                 ld      c, 4
  12605.                 ld      a, #C0  ; 'А'
  12606.                 and     h
  12607.                 rra
  12608.                 rra
  12609.                 rra
  12610.                 ld      d, a
  12611.                 ld      a, (byte_D01E)
  12612.                 or      a
  12613.                 jr      z, loc_C1DC
  12614.  
  12615.                 xor     b
  12616.                 ld      a, (byte_D04C)
  12617.                 jp      p, loc_C14A
  12618.  
  12619.  
  12620. loc_C1DC:                               ; CODE XREF: sub_C1F4-21
  12621.                 rr      d
  12622.                 or      a
  12623.                 jr      nz, loc_C1E6
  12624.  
  12625.                 ld      a, #C0  ; 'А'
  12626.                 and     h
  12627.                 jr      nz, loc_C185
  12628.  
  12629.  
  12630. loc_C1E6:                               ; CODE XREF: sub_C1F4-A9 sub_C1F4-71 ...
  12631.                 ex      af, af' ;'
  12632.  
  12633.  
  12634. loc_C1E7:                               ; CODE XREF: sub_C1F4-88 sub_C1F4-6C
  12635.                 add     a, d
  12636.                 ex      af, af' ;'
  12637.                 ld      h, BRD_88_0/256
  12638.                 ld      b, l
  12639.                 jp      loc_C21E ;проверяем поля вокруг
  12640.  
  12641. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12642.  
  12643. ; =============== S U B R O U T I N E =======================================
  12644.  
  12645.  
  12646. sub_C1EF:                               ; CODE XREF: sub_BC00+52B
  12647.  
  12648. ; FUNCTION CHUNK AT C18B SIZE 0000002E BYTES
  12649.  
  12650.                 exx
  12651.                 bit     0, b
  12652.                 jr      z, loc_C18B ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12653.  
  12654. ; End of function sub_C1EF
  12655.  
  12656.  
  12657. ; =============== S U B R O U T I N E =======================================
  12658.  
  12659.  
  12660. sub_C1F4:                               ; CODE XREF: sub_BC00+53B
  12661.                                         ; sub_C1EF-39
  12662. ;L' = поле
  12663. ;B = ?
  12664. ; FUNCTION CHUNK AT C14A SIZE 00000041 BYTES
  12665. ; FUNCTION CHUNK AT C1B9 SIZE 00000036 BYTES
  12666. ; FUNCTION CHUNK AT C26D SIZE 0000001F BYTES
  12667. ; FUNCTION CHUNK AT C28F SIZE 00000006 BYTES
  12668. ; FUNCTION CHUNK AT C298 SIZE 0000000E BYTES
  12669.  
  12670.                 ld      a, b
  12671.                 exx
  12672.                 bit     2, a
  12673.                 jr      nz, loc_C1B9
  12674.  
  12675.                 bit     5, h
  12676.                 jp      z, loc_C27F
  12677.  
  12678.                 ld      a, #C0  ; 'А'
  12679.                 and     h
  12680.                 jr      nz, loc_C26D
  12681.  
  12682.                 ld      c, #C
  12683.                 ld      b, l
  12684.                 ld      h, BRD_88_0/256
  12685.                 ld      a, #1F
  12686.                 add     a, b
  12687.                 jp      p, loc_C211
  12688.  
  12689.                 sub     #40 ; '@'
  12690.  
  12691.  
  12692. loc_C211:                               ; CODE XREF: sub_C1F4+18
  12693.                 ld      l, a
  12694.                 ld      a, (hl)
  12695.                 inc     l
  12696.                 or      (hl)
  12697.                 inc     l
  12698.                 or      (hl)
  12699.                 bit     6, a
  12700.                 jr      nz, loc_C21D
  12701.  
  12702.                 dec     e
  12703.                 dec     e
  12704.  
  12705.  
  12706. loc_C21D:                               ; CODE XREF: sub_C1F4+25
  12707.                 ld      l, b
  12708.  
  12709.  
  12710. loc_C21E:                               ; CODE XREF: sub_C1F4-32 sub_C1F4-8     ...
  12711. ;проверяем поля вокруг ;out: Z=пусто, A' прибавляет C на каждом занятом
  12712.                 dec     l
  12713.                 xor     a
  12714.                 or      (hl) ;левее
  12715.                 call    nz, sub_C254
  12716.  
  12717.                 inc     l
  12718.                 inc     l
  12719.                 or      (hl) ;правее
  12720.                 call    nz, sub_C254
  12721.  
  12722.                 ld      a, #10
  12723.                 add     a, b
  12724.                 jp      m, loc_C241 ;не смотрим ниже
  12725.  
  12726.                 ld      l, a
  12727.                 xor     a
  12728.                 or      (hl) ;ниже?
  12729.                 call    nz, sub_C254
  12730.  
  12731.                 inc     l
  12732.                 or      (hl) ;ниже правее?
  12733.                 call    nz, sub_C254
  12734.  
  12735.                 dec     l
  12736.                 dec     l
  12737.                 or      (hl) ;ниже левее?
  12738.                 call    nz, sub_C254
  12739.  
  12740.  
  12741. loc_C241:                               ; CODE XREF: sub_C1F4+39
  12742.                 ld      a, #F0  ; 'р'
  12743.                 add     a, b
  12744.                 ret     m ;не смотрим выше
  12745.                 ld      l, a
  12746.                 xor     a
  12747.                 or      (hl) ;выше?
  12748.                 call    nz, sub_C254
  12749.  
  12750.                 inc     l
  12751.                 or      (hl) ;выше левее?
  12752.                 call    nz, sub_C254
  12753.  
  12754.                 dec     l
  12755.                 dec     l
  12756.                 or      (hl) ;выше правее?
  12757.                 ret     z
  12758.  
  12759. ; End of function sub_C1F4
  12760.  
  12761.  
  12762. ; =============== S U B R O U T I N E =======================================
  12763.  
  12764.  
  12765. sub_C254:                               ; CODE XREF: sub_C1F4+2D sub_C1F4+33 ...
  12766.  
  12767. ; FUNCTION CHUNK AT C471 SIZE 0000001C BYTES
  12768.  
  12769.                 exx
  12770.                 ld      l, a ;код найденной фигуры?
  12771.                 inc     l
  12772.                 xor     b ;цвет фигур?
  12773.                 jp      p, loc_C263
  12774.  
  12775.                 ld      a, #78 ; 'x'
  12776.                 and     l
  12777.                 jp      z, loc_C471
  12778.  
  12779.                 dec     l
  12780.                 dec     l
  12781.  
  12782.  
  12783. loc_C263:                               ; CODE XREF: sub_C254+4
  12784.                 inc     (hl)
  12785.                 xor     a
  12786.                 bit     6, l
  12787.                 exx
  12788.                 ret     z
  12789.                 ex      af, af' ;'
  12790.                 add     a, c  ;0/4/8/12
  12791.                 ex      af, af' ;'
  12792.                 ret
  12793.  
  12794. ; End of function sub_C254
  12795.  
  12796. ; ---------------------------------------------------------------------------
  12797. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12798.  
  12799. loc_C26D:                               ; CODE XREF: sub_C1F4+E sub_C1F4+AA
  12800.                 ld      c, 4
  12801.                 bit     7, h
  12802.                 jp      z, loc_C276
  12803.  
  12804.                 dec     e
  12805.                 dec     e
  12806.  
  12807.  
  12808. loc_C276:                               ; CODE XREF: sub_C1F4+7D
  12809.                 dec     e
  12810.                 dec     e
  12811.                 dec     e
  12812.                 ld      b, l
  12813.                 ld      h, BRD_88_0/256
  12814.                 jp      loc_C21E ;проверяем поля вокруг
  12815.  
  12816. ; ---------------------------------------------------------------------------
  12817.  
  12818. loc_C27F:                               ; CODE XREF: sub_C1F4+8
  12819.                 bit     4, h
  12820.                 jr      nz, loc_C28F
  12821.  
  12822.                 ld      h, BRD_88_0/256
  12823.                 ld      b, l
  12824.                 ld      c, 0
  12825.                 inc     e
  12826.                 jp      loc_C21E ;проверяем поля вокруг
  12827.                
  12828.  
  12829. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12830. ; ---------------------------------------------------------------------------
  12831.                 rra                     ; dead code???
  12832.                 jr      nc, loc_C295
  12833.  
  12834. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12835.  
  12836. loc_C28F:                               ; CODE XREF: sub_C1F4+8D
  12837.                 ld      a, e
  12838.                 sub     #C
  12839.                 jp      loc_C298        ;  jr???
  12840.  
  12841. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12842. ; ---------------------------------------------------------------------------
  12843.  
  12844. loc_C295:                               ; CODE XREF: RAM:C28D
  12845.                 ld      a, e
  12846.                 sub     8
  12847.  
  12848. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12849.  
  12850. loc_C298:                               ; CODE XREF: sub_C1F4+9E
  12851.                 ld      e, a
  12852.                 ld      c, 8
  12853.                 ld      a, #C0  ; 'А'
  12854.                 and     h
  12855.                 jr      nz, loc_C26D
  12856.  
  12857.                 ld      h, BRD_88_0/256
  12858.                 ld      b, l
  12859.                 jp      loc_C21E ;проверяем поля вокруг
  12860.  
  12861. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12862. ; ---------------------------------------------------------------------------
  12863.  
  12864. loc_C2A6:                               ; DATA XREF: sub_BC00+23
  12865.                 srl     h
  12866.                 srl     h
  12867.                 ex      af, af' ;'
  12868.                 add     a, h
  12869.                 ex      af, af' ;'
  12870.                 bit     5, h
  12871.                 jp      z, loc_C313
  12872.  
  12873. ; START OF FUNCTION CHUNK FOR sub_C2F2
  12874.  
  12875. loc_C2B2:                               ; CODE XREF: sub_C2F2+1E
  12876.                 ld      h, BRD_88_0/256
  12877.                 dec     l
  12878.                 ld      a, (hl)
  12879.                 inc     l
  12880.                 or      a
  12881.                 jp      nz, loc_C315
  12882.  
  12883.                 set     6, (ix+2)
  12884.                 set     0, (ix+2)
  12885.                 ex      af, af' ;'
  12886.                 exx
  12887.                 bit     4, b
  12888.                 exx
  12889.                 jr      nz, loc_C2CC
  12890.  
  12891.                 add     a, #16
  12892.  
  12893.  
  12894. loc_C2CC:                               ; CODE XREF: sub_C2F2-2A
  12895.                 add     a, #E
  12896.                 ex      af, af' ;'
  12897.                 jp      loc_C315
  12898.  
  12899. ; END OF FUNCTION CHUNK FOR sub_C2F2
  12900. ; ---------------------------------------------------------------------------
  12901. ; START OF FUNCTION CHUNK FOR sub_C2EA
  12902.  
  12903. loc_C2D2:                               ; CODE XREF: sub_C2EA+5
  12904.                 ld      a, #E
  12905.                 and     h
  12906.                 jr      nz, loc_C33E
  12907.  
  12908.                 dec     e
  12909.                 ld      a, d
  12910.                 add     a, l
  12911.                 ld      l, a
  12912.                 dec     l
  12913.                 push    hl
  12914.                 ld      h, BRD_88_0/256
  12915.                 ld      a, (hl)
  12916.                 pop     hl
  12917.                 inc     l
  12918.                 or      a
  12919.                 ld      a, l
  12920.                 jr      z, loc_C2FB
  12921.  
  12922.                 dec     e
  12923.                 dec     e
  12924.                 jr      loc_C2FB
  12925.  
  12926. ; END OF FUNCTION CHUNK FOR sub_C2EA
  12927.  
  12928. ; =============== S U B R O U T I N E =======================================
  12929.  
  12930.  
  12931. sub_C2EA:                               ; CODE XREF: sub_BC00+82 sub_BC00+8A ...
  12932.  
  12933. ; FUNCTION CHUNK AT C2D2 SIZE 00000018 BYTES
  12934.  
  12935.                 ld      a, l
  12936.                 add     a, #20 ; ' '
  12937.                 bit     6, a
  12938.                 jr      z, loc_C2D2
  12939.  
  12940.                 inc     e
  12941.  
  12942. ; End of function sub_C2EA
  12943.  
  12944.  
  12945. ; =============== S U B R O U T I N E =======================================
  12946.  
  12947.  
  12948. sub_C2F2:                               ; CODE XREF: sub_BC00+6A sub_BC00+72 ...
  12949.  
  12950. ; FUNCTION CHUNK AT C2B2 SIZE 00000020 BYTES
  12951. ; FUNCTION CHUNK AT C362 SIZE 0000000C BYTES
  12952. ; FUNCTION CHUNK AT C467 SIZE 0000000A BYTES
  12953.  
  12954.                 inc     e
  12955.                 ld      a, #E
  12956.                 and     h
  12957.                 jr      nz, loc_C33E
  12958.  
  12959.                 ld      a, d
  12960.                 add     a, l
  12961.                 ld      l, a
  12962.  
  12963.  
  12964. loc_C2FB:                               ; CODE XREF: sub_C2EA-6 sub_C2EA-2
  12965.                 and     #F
  12966.                 ld      c, a
  12967.                 ld      a, (bc)
  12968.                 inc     a
  12969.                 ld      (bc), a
  12970.                 jp      (iy)
  12971.  
  12972. ; ---------------------------------------------------------------------------
  12973.  
  12974. loc_C303:                               ; DATA XREF: sub_BC00+1B
  12975.                 srl     h
  12976.                 jr      z, loc_C313
  12977.  
  12978.                 srl     h
  12979.                 srl     h
  12980.                 ex      af, af' ;'
  12981.                 add     a, h
  12982.                 ex      af, af' ;'
  12983.                 bit     4, h
  12984.                 jp      nz, loc_C2B2
  12985.  
  12986.  
  12987. loc_C313:                               ; CODE XREF: RAM:C2AF   sub_C2F2+13
  12988.                                         ; DATA XREF: ...
  12989.                 ld      h, BRD_88_0/256
  12990.  
  12991.  
  12992. loc_C315:                               ; CODE XREF: sub_C2F2-3A sub_C2F2-23
  12993.                 ld      a, (hl)
  12994.                 or      a
  12995.                 jp      z, loc_C32A
  12996.  
  12997.                 exx
  12998.                 ld      l, a
  12999.                 xor     b
  13000.                 jp      p, loc_C327
  13001.  
  13002.                 ld      a, #78 ; 'x'
  13003.                 and     l
  13004.                 jr      z, loc_C362
  13005.  
  13006.                 dec     l
  13007.                 dec     l
  13008.  
  13009.  
  13010. loc_C327:                               ; CODE XREF: sub_C2F2+2B
  13011.                 inc     (hl)
  13012.                 exx
  13013.                 xor     a
  13014.  
  13015.  
  13016. loc_C32A:                               ; CODE XREF: sub_C2F2+25
  13017.                 dec     l
  13018.                 dec     l
  13019.                 or      (hl)
  13020.                 ret     z
  13021.                 exx
  13022.                 ld      l, a
  13023.                 xor     b
  13024.                 jp      p, loc_C33B
  13025.  
  13026.                 ld      a, #78 ; 'x'
  13027.                 and     l
  13028.                 jr      z, loc_C362
  13029.  
  13030.                 dec     l
  13031.                 dec     l
  13032.  
  13033.  
  13034. loc_C33B:                               ; CODE XREF: sub_C2F2+3F
  13035.                 inc     (hl)
  13036.                 exx
  13037.                 ret
  13038.  
  13039. ; ---------------------------------------------------------------------------
  13040.  
  13041. loc_C33E:                               ; CODE XREF: sub_C2EA-15 sub_C2F2+4
  13042.                 push    bc
  13043.                 push    de
  13044.                 ld      bc, ret_C35D
  13045.                 push    bc
  13046.                 ld      c, h
  13047.                 ld      h, BRD_88_0/256
  13048.                 ld      d, #88
  13049.                 ld      a, l
  13050.                 bit     3, c
  13051.                 jp      nz, sub_C48D ;проверяем поля по ходу ферзя?
  13052.  
  13053.                 bit     2, c
  13054.                 jp      nz, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  13055.  
  13056.                 bit     7, c
  13057.                 ld      b, a
  13058.                 jp      nz, loc_C5D5
  13059.  
  13060.                 jp      loc_C517
  13061.  
  13062. ; End of function sub_C2F2
  13063.  
  13064. ; ---------------------------------------------------------------------------
  13065.  
  13066. ret_C35D:                               ; DATA XREF: sub_C2F2+4E
  13067.                 ld      l, e
  13068.                 pop     de
  13069.                 ld      e, l
  13070.                 pop     bc
  13071.                 ret
  13072.  
  13073. ; ---------------------------------------------------------------------------
  13074. ; START OF FUNCTION CHUNK FOR sub_C2F2
  13075.  
  13076. loc_C362:                               ; CODE XREF: sub_C2F2+31 sub_C2F2+45
  13077.                 bit     4, b
  13078.                 jp      z, loc_C467
  13079.  
  13080.                 set     7, (ix+2)
  13081.                 exx
  13082.                 inc     e
  13083.                 ret
  13084.  
  13085. ; END OF FUNCTION CHUNK FOR sub_C2F2
  13086. ; ---------------------------------------------------------------------------
  13087. ; START OF FUNCTION CHUNK FOR sub_C3A3
  13088.  
  13089. loc_C36E:                               ; CODE XREF: sub_C3A3+A
  13090.                 ld      a, b
  13091.                 and     #FD ; 'э'
  13092.                 jr      nz, loc_C377
  13093.  
  13094.                 ex      af, af' ;'
  13095.                 jp      loc_C432
  13096.  
  13097. ; ---------------------------------------------------------------------------
  13098.  
  13099. loc_C377:                               ; CODE XREF: sub_C3A3-32
  13100.                 ld      a, b
  13101.                 ld      d, a
  13102.                 and     3
  13103.                 ld      b, a
  13104.                 ld      a, d
  13105.                 and     #FC ; 'ь'
  13106.                 jr      nz, loc_C3AF
  13107.  
  13108.                 dec     e
  13109.                 res     0, b
  13110.                 ld      a, 3
  13111.                 jp      loc_C3AF
  13112.  
  13113. ; ---------------------------------------------------------------------------
  13114.  
  13115. loc_C389:                               ; CODE XREF: sub_C3A3+3
  13116.                 bit     0, h
  13117.                 jr      nz, loc_C390
  13118.  
  13119.                 ld      h, 0
  13120.                 ret
  13121.  
  13122. ; ---------------------------------------------------------------------------
  13123.  
  13124. loc_C390:                               ; CODE XREF: sub_C3A3-18
  13125.                 ld      a, h
  13126.                 ld      d, h
  13127.                 and     3
  13128.                 ld      h, a
  13129.                 ld      a, d
  13130.                 and     #FC ; 'ь'
  13131.                 jr      nz, loc_C3A8
  13132.  
  13133.                 ld      a, 3
  13134.                 res     0, h
  13135.                 jp      loc_C3A8
  13136.  
  13137. ; END OF FUNCTION CHUNK FOR sub_C3A3
  13138.  
  13139. ; =============== S U B R O U T I N E =======================================
  13140.  
  13141.  
  13142. sub_C3A1:                               ; CODE XREF: sub_BC00+18D
  13143.                                         ; sub_BC00+1A4 ...
  13144.                 and     #F
  13145.  
  13146. ; End of function sub_C3A1
  13147.  
  13148.  
  13149. ; =============== S U B R O U T I N E =======================================
  13150. ;a=0..15 (реально 9,5,3)? попадёт в max?
  13151. ;l=? попадёт в индекс таблицы для вычитания
  13152. ;c=? попадёт в индекс таблицы для сложения
  13153. ;b=?
  13154. ;h=?
  13155. ;out: hl в том же формате, что bc
  13156.  
  13157. sub_C3A3:                               ; CODE XREF: sub_BC00+F2
  13158.                                         ; sub_BC00+108 ...
  13159.  
  13160. ; FUNCTION CHUNK AT C36E SIZE 00000033 BYTES
  13161.  
  13162.                 ex      af, af' ;'
  13163.                 ld      a, l
  13164.                 or      a
  13165.                 jr      z, loc_C389
  13166.  
  13167. loc_C3A8:                               ; CODE XREF: sub_C3A3-B sub_C3A3-5
  13168.                 exx
  13169.                 ld      b, a
  13170.                 exx
  13171.                 ld      a, c
  13172.                 or      a
  13173.                 jr      z, loc_C36E
  13174.  
  13175. loc_C3AF:                               ; CODE XREF: sub_C3A3-24 sub_C3A3-1D
  13176.                 exx
  13177.                 ld      c, a
  13178.                 ex      af, af' ;'
  13179.                 ld      d, a ;max?
  13180.                 ld      e, #FF ;min?
  13181.                 ld      h, tbl_BA00/256 ;какие-то константы для оценки позиции?
  13182.  
  13183. loc_C3B7:                               ; CODE XREF: sub_C3A3+36 sub_C3A3+49 ...
  13184.                 ld      l, b
  13185.                 sub     (hl)
  13186.                 cp      e
  13187.                 jp      m, loc_C3C2 ;value<max?
  13188.                 cp      d
  13189.                 jp      p, loc_C420 ;value>min?
  13190. ;max<=value<=min???
  13191.                 ld      e, a ;new max?
  13192. loc_C3C2:                               ; CODE XREF: sub_C3A3+17
  13193.                 inc     h               ; tbl_BB00
  13194.                 ld      b, (hl)
  13195.                 inc     b
  13196.                 dec     b
  13197.                 jr      z, loc_C3FD
  13198.  
  13199. loc_C3C8:                               ; CODE XREF: sub_C3A3+6A sub_C3A3+79
  13200.                 dec     h
  13201.                 ld      l, c
  13202.                 add     a, (hl)
  13203.                 cp      d
  13204.                 jp      p, loc_C3D4 ;value>min?
  13205.                 cp      e
  13206.                 jp      m, loc_C42A ;value<max?
  13207. ;max<=value<=min???
  13208.                 ld      d, a ;new min?
  13209. loc_C3D4:                               ; CODE XREF: sub_C3A3+29
  13210.                 inc     h
  13211.                 ld      c, (hl)
  13212.                 dec     h
  13213.                 inc     c
  13214.                 dec     c
  13215.                 jp      nz, loc_C3B7
  13216.  
  13217.                 exx
  13218.                 ex      af, af' ;'
  13219.                 ld      a, b ;изначально передано в процедуру в b
  13220.                 and     #FC ; 'ь'
  13221.                 jr      z, loc_C3EF
  13222.  
  13223.                 ld      d, a
  13224.                 ld      a, b
  13225.                 and     3
  13226.                 ld      b, a
  13227.                 ld      a, d
  13228.                 exx
  13229.                 ld      c, a
  13230.                 ex      af, af' ;'
  13231.                 jp      loc_C3B7
  13232.  
  13233. ; ---------------------------------------------------------------------------
  13234.  
  13235. loc_C3EF:                               ; CODE XREF: sub_C3A3+3E
  13236.                 bit     0, b
  13237.                 jr      z, loc_C41F
  13238.  
  13239.                 res     0, b
  13240.                 ld      a, 3
  13241.                 exx
  13242.                 ld      c, a
  13243.                 ex      af, af' ;'
  13244.                 jp      loc_C3B7
  13245.  
  13246. ; ---------------------------------------------------------------------------
  13247.  
  13248. loc_C3FD:                               ; CODE XREF: sub_C3A3+23
  13249.                 exx
  13250.                 ex      af, af' ;'
  13251.                 ld      a, h
  13252.                 and     #FC ; 'ь'
  13253.                 jr      z, loc_C410
  13254.  
  13255.                 ld      d, a
  13256.                 ld      a, h
  13257.                 and     3
  13258.                 ld      h, a
  13259.                 ld      a, d
  13260.                 exx
  13261.                 ld      b, a
  13262.                 ex      af, af' ;'
  13263.                 jp      loc_C3C8
  13264.  
  13265. ; ---------------------------------------------------------------------------
  13266.  
  13267. loc_C410:                               ; CODE XREF: sub_C3A3+5F
  13268.                 bit     0, h
  13269.                 jr      z, loc_C429
  13270.  
  13271.                 res     0, h
  13272.                 ld      a, 3
  13273.                 dec     e
  13274.                 exx
  13275.                 ld      b, a
  13276.                 ex      af, af' ;'
  13277.                 jp      loc_C3C8
  13278.  
  13279. ; ---------------------------------------------------------------------------
  13280.  
  13281. loc_C41F:                               ; CODE XREF: sub_C3A3+4E
  13282.                 exx
  13283.  
  13284.  
  13285. loc_C420:                               ; CODE XREF: sub_C3A3+1B
  13286.                 ld      a, d
  13287.                 or      a
  13288.                 exx
  13289.                 jp      p, loc_C430
  13290.  
  13291.                 jp      loc_C459
  13292.  
  13293. ; ---------------------------------------------------------------------------
  13294.  
  13295. loc_C429:                               ; CODE XREF: sub_C3A3+6F
  13296.                 exx
  13297.  
  13298.  
  13299. loc_C42A:                               ; CODE XREF: sub_C3A3+2D
  13300.                 ld      a, e
  13301.                 or      a
  13302.                 exx
  13303.                 jp      m, loc_C459
  13304.  
  13305.  
  13306. loc_C430:                               ; CODE XREF: sub_C3A3+80
  13307.                 jr      z, loc_C454
  13308.  
  13309.  
  13310. loc_C432:                               ; CODE XREF: sub_C3A3-2F
  13311.                 ld      hl, word_D039
  13312.                 cp      (hl)
  13313.                 jr      c, loc_C44F
  13314.  
  13315.                 ld      c, a
  13316.                 ld      d, (hl)
  13317.                 ld      (hl), c
  13318.                 pop     iy
  13319.                 push    iy
  13320.                 ld      a, (byte_D02D)
  13321.                 rrca
  13322.                 ld      c, (iy+1)
  13323.                 xor     c
  13324.                 jp      m, loc_C44E
  13325.  
  13326.                 ld      a, c
  13327.                 ld      (byte_D07A), a
  13328.  
  13329.  
  13330. loc_C44E:                               ; CODE XREF: sub_C3A3+A4
  13331.                 ld      a, d
  13332.  
  13333.  
  13334. loc_C44F:                               ; CODE XREF: sub_C3A3+93
  13335.                 inc     l
  13336.                 cp      (hl)
  13337.                 jr      c, loc_C454
  13338.  
  13339.                 ld      (hl), a
  13340.  
  13341.  
  13342. loc_C454:                               ; CODE XREF: sub_C3A3:loc_C430
  13343.                                         ; sub_C3A3+AE
  13344.                 dec     e
  13345.                 bit     1, b
  13346.                 jr      nz, loc_C45D
  13347.  
  13348.  
  13349. loc_C459:                               ; CODE XREF: sub_C3A3+83 sub_C3A3+8A
  13350.                 ld      hl, 0
  13351.                 ret
  13352.  
  13353. ; ---------------------------------------------------------------------------
  13354.  
  13355. loc_C45D:                               ; CODE XREF: sub_C3A3+B4
  13356.                 set     2, (ix+2)
  13357.                 ld      hl, 0
  13358.                 dec     e
  13359.                 dec     e
  13360.                 ret
  13361.  
  13362. ; End of function sub_C3A3
  13363.  
  13364. ; ---------------------------------------------------------------------------
  13365. ; START OF FUNCTION CHUNK FOR sub_C2F2
  13366.  
  13367. loc_C467:                               ; CODE XREF: sub_C2F2+72
  13368.                 xor     a
  13369.                 ld      b, 8
  13370.                 ld      hl,  array_D200+1
  13371.  
  13372.  
  13373. loc_C46D:                               ; CODE XREF: sub_C2F2+17D
  13374.                 ld      (hl), a
  13375.                 inc     l
  13376.                 djnz    loc_C46D
  13377.  
  13378. ; END OF FUNCTION CHUNK FOR sub_C2F2
  13379. ; START OF FUNCTION CHUNK FOR sub_C254
  13380.  
  13381. loc_C471:                               ; CODE XREF: sub_C254+A sub_C563+17     ...
  13382.                 xor     a
  13383.                 ld      (byte_D079), a
  13384.                 ld      b, #1F
  13385.                 ld      de, 5
  13386.                 ld      hl, word_D10A
  13387.  
  13388.  
  13389. loc_C47D:                               ; CODE XREF: sub_C254+231
  13390.                 ld      (hl), a
  13391.                 inc     l
  13392.                 ld      (hl), a
  13393.                 inc     l
  13394.                 ld      (hl), a
  13395.                 inc     l
  13396.                 ld      (hl), a
  13397.                 add     hl, de
  13398.                 djnz    loc_C47D
  13399.  
  13400.                 ld      c, a
  13401.                 ld      sp, (word_D03D)
  13402.                 ret
  13403.  
  13404. ; END OF FUNCTION CHUNK FOR sub_C254
  13405.  
  13406. ; =============== S U B R O U T I N E =======================================
  13407.  
  13408.  
  13409. sub_C48D:                               ; CODE XREF: sub_BC00+34
  13410.                                         ; sub_BC00+4B4 ...
  13411. ;проверяем поля по ходу ферзя?
  13412.                 ld      b, a
  13413.                 exx
  13414.                 ld      c, #40
  13415.                 call    sub_C49C ;проверяем поля по ходу ладьи?
  13416.  
  13417.                 exx
  13418.                 jp      loc_C5D9 ;проверяем поля по ходу слона
  13419.  
  13420. ; End of function sub_C48D
  13421.  
  13422.  
  13423. ; =============== S U B R O U T I N E =======================================
  13424.  
  13425.  
  13426. sub_C498:                               ; CODE XREF: sub_BC00+3B sub_BC00+42 ...
  13427.                 ld      b, a
  13428.                 exx
  13429.                 ld      c, #10
  13430.  
  13431. ; End of function sub_C498
  13432.  
  13433.  
  13434. ; =============== S U B R O U T I N E =======================================
  13435.  
  13436.  
  13437. sub_C49C:                               ; CODE XREF: sub_C48D+4
  13438. ;проверяем поля по ходу ладьи?
  13439.                 ld      e, 8
  13440.                 exx
  13441.                 ld      l, b
  13442.                 xor     a
  13443. loc_C4A1:                               ; CODE XREF: sub_C49C+B
  13444.                 inc     l
  13445.                 bit     3, l
  13446.                 jr      nz, loc_C4AF
  13447.                 or      (hl)
  13448.                 jr      z, loc_C4A1
  13449.  
  13450.                 ld      c, 1
  13451.                 call    sub_C4E2 ;проверяем поля справа?
  13452.                 xor     a
  13453.  
  13454. loc_C4AF:                               ; CODE XREF: sub_C49C+8
  13455.                 ld      l, b
  13456.  
  13457.  
  13458. loc_C4B0:                               ; CODE XREF: sub_C49C+1A
  13459.                 dec     l
  13460.                 bit     3, l
  13461.                 jr      nz, loc_C4BD
  13462.  
  13463.                 or      (hl)
  13464.                 jr      z, loc_C4B0
  13465.  
  13466.                 ld      c, #FF
  13467.                 call    sub_C4E2 ;проверяем поля слева?
  13468.  
  13469.  
  13470. loc_C4BD:                               ; CODE XREF: sub_C49C+17
  13471.                 ld      c, #10
  13472.                 ld      a, b
  13473.                 add     a, c
  13474.                 call    p, sub_C4CA ;проверяем поля снизу?
  13475.  
  13476.                 ld      c, #F0  ; 'р'
  13477.                 ld      l, b
  13478.                                     ;проверяем поля сверху?
  13479.  
  13480. loc_C4C7:                               ; CODE XREF: sub_C4CA+4
  13481.                 ld      a, l
  13482.                 add     a, c
  13483.                 ret     m
  13484.  
  13485. ; End of function sub_C49C
  13486.  
  13487.  
  13488. ; =============== S U B R O U T I N E =======================================
  13489.  
  13490.  
  13491. sub_C4CA:                               ; CODE XREF: sub_C49C+25
  13492.                 ld      l, a
  13493.                 inc     e
  13494.                 xor     a
  13495.                 or      (hl)
  13496.                 jr      z, loc_C4C7
  13497.  
  13498.                 exx
  13499.                 ld      l, a
  13500.                 xor     b
  13501.                 jp      m, loc_C609
  13502.  
  13503.                 ld      a, c
  13504.                 add     a, (hl)
  13505.                 ld      (hl), a
  13506.                 set     1, l
  13507.                 ld      a, (hl)
  13508.                 and     e
  13509.                 exx
  13510.                 ret     z
  13511.                 jp      loc_C648
  13512.  
  13513. ; End of function sub_C4CA
  13514.  
  13515.  
  13516. ; =============== S U B R O U T I N E =======================================
  13517.  
  13518.  
  13519. sub_C4E2:                               ; CODE XREF: sub_C49C+F sub_C49C+1E
  13520.                 exx
  13521.                 ld      l, a
  13522.                 xor     b
  13523.                 jp      m, loc_C609
  13524.  
  13525.                 ld      a, c
  13526.                 add     a, (hl)
  13527.                 ld      (hl), a
  13528.                 set     1, l
  13529.                 ld      a, (hl)
  13530.                 and     e
  13531.                 exx
  13532.                 ret     z
  13533.  
  13534.  
  13535. loc_C4F1:                               ; CODE XREF: sub_C4E2+15
  13536.                 ld      a, l
  13537.                 add     a, c
  13538.                 ld      l, a
  13539.                 and     d
  13540.                 ret     nz
  13541.                 or      (hl)
  13542.                 jr      z, loc_C4F1
  13543.  
  13544.                 exx
  13545.                 ld      l, a
  13546.                 xor     b
  13547.                 jp      m, loc_C657
  13548.  
  13549.                 inc     l
  13550.                 ld      a, c
  13551.                 add     a, (hl)
  13552.                 ld      (hl), a
  13553.                 exx
  13554.                 ret
  13555.  
  13556. ; End of function sub_C4E2
  13557.  
  13558.  
  13559. ; =============== S U B R O U T I N E =======================================
  13560.  
  13561.  
  13562. sub_C505:                               ; CODE XREF: sub_BC00+57 sub_BC00+5E
  13563.                 ld      b, a
  13564.                 or      #70 ; 'p'
  13565.                 cp      b
  13566.                 jp      nz, loc_C517
  13567.  
  13568.  
  13569. loc_C50C:                               ; CODE XREF: sub_C512+3
  13570.                 ld      a, e
  13571.                 sub     6
  13572.                 jp      loc_C51A
  13573.  
  13574. ; End of function sub_C505
  13575.  
  13576.  
  13577. ; =============== S U B R O U T I N E =======================================
  13578.  
  13579.  
  13580. sub_C512:                               ; CODE XREF: sub_BC00+4D7
  13581.                                         ; sub_BC00+4DE
  13582.                 ld      b, a
  13583.                 and     #70 ; 'p'
  13584.                 jr      z, loc_C50C
  13585.  
  13586.  
  13587. loc_C517:                               ; CODE XREF: sub_C2F2+68 sub_C505+4
  13588.                 ld      a, e
  13589.                 sub     5
  13590.  
  13591.  
  13592. loc_C51A:                               ; CODE XREF: sub_C505+A
  13593.                 ld      e, a
  13594.                 exx
  13595.                 ld      c, 4
  13596.                 exx
  13597.  
  13598.  
  13599. loc_C51F:                               ; CODE XREF: sub_C6C4+5E
  13600. ;проверяем поля по ходу коня
  13601.                 ld      a, #E
  13602.                 add     a, b
  13603.                 jp      m, loc_C542
  13604.  
  13605.                 ld      l, a
  13606.                 and     d
  13607.                 call    z, sub_C563
  13608.  
  13609.                 ld      a, #12
  13610.                 add     a, b
  13611.                 ld      l, a
  13612.                 and     d
  13613.                 call    z, sub_C563
  13614.  
  13615.                 ld      a, #1F
  13616.                 add     a, b
  13617.                 ld      l, a
  13618.                 and     d
  13619.                 call    z, sub_C562
  13620.  
  13621.                 ld      a, #21 ; '!'
  13622.                 add     a, b
  13623.                 ld      l, a
  13624.                 and     d
  13625.                 call    z, sub_C562
  13626.  
  13627.  
  13628. loc_C542:                               ; CODE XREF: sub_C512+10
  13629.                 ld      a, #F2  ; 'т'
  13630.                 add     a, b
  13631.                 ret     m
  13632.                 ld      l, a
  13633.                 and     d
  13634.                 call    z, sub_C563
  13635.  
  13636.                 ld      a, #EE  ; 'о'
  13637.                 add     a, b
  13638.                 ld      l, a
  13639.                 and     d
  13640.                 call    z, sub_C563
  13641.  
  13642.                 ld      a, #E1  ; 'б'
  13643.                 add     a, b
  13644.                 ret     m
  13645.                 ld      l, a
  13646.                 and     d
  13647.                 call    z, sub_C562
  13648.  
  13649.                 ld      a, #DF  ; 'Я'
  13650.                 add     a, b
  13651.                 ld      l, a
  13652.                 and     d
  13653.                 ret     nz
  13654.  
  13655. ; End of function sub_C512
  13656.  
  13657.  
  13658. ; =============== S U B R O U T I N E =======================================
  13659.  
  13660.  
  13661. sub_C562:                               ; CODE XREF: sub_C512+25 sub_C512+2D ...
  13662.                 inc     e
  13663.  
  13664. ; End of function sub_C562
  13665.  
  13666.  
  13667. ; =============== S U B R O U T I N E =======================================
  13668.  
  13669.  
  13670. sub_C563:                               ; CODE XREF: sub_C512+15 sub_C512+1D ...
  13671.                 inc     e
  13672.                 or      (hl)
  13673.                 ret     z
  13674.                 exx
  13675.                 ld      l, a
  13676.                 xor     b
  13677.                 jp      p, loc_C573
  13678.  
  13679.                 ld      a, #78 ; 'x'
  13680.                 and     l
  13681.                 jr      z, loc_C578
  13682.  
  13683.                 dec     l
  13684.                 dec     l
  13685.  
  13686.  
  13687. loc_C573:                               ; CODE XREF: sub_C563+6
  13688.                 ld      a, c
  13689.                 add     a, (hl)
  13690.                 ld      (hl), a
  13691.                 exx
  13692.                 ret
  13693.  
  13694. ; ---------------------------------------------------------------------------
  13695.  
  13696. loc_C578:                               ; CODE XREF: sub_C563+C
  13697.                 bit     4, b
  13698.                 jp      z, loc_C471
  13699.  
  13700.                 set     7, (ix+2)
  13701.                 bit     6, b
  13702.                 set     6, b
  13703.                 exx
  13704.                 jr      nz, loc_C592
  13705.  
  13706.                 ld      l, b
  13707.                 ld      l, (hl)
  13708.                 inc     l
  13709.                 inc     h
  13710.                 set     1, (hl)
  13711.                 dec     h
  13712.                 inc     e
  13713.                 inc     e
  13714.                 ret
  13715.  
  13716. ; ---------------------------------------------------------------------------
  13717.  
  13718. loc_C592:                               ; CODE XREF: sub_C563+23
  13719.                 set     6, (ix+2)
  13720.                 ex      af, af' ;'
  13721.                 add     a, #14
  13722.                 ex      af, af' ;'
  13723.                 ret
  13724.  
  13725. ; End of function sub_C563
  13726.  
  13727. ; ---------------------------------------------------------------------------
  13728. ; START OF FUNCTION CHUNK FOR sub_C5FF
  13729.  
  13730. loc_C59B:                               ; CODE XREF: sub_C5FF+D
  13731.                 bit     4, b
  13732.                 jp      z, loc_C471
  13733.  
  13734.                 set     7, (ix+2)
  13735.                 bit     6, b
  13736.                 set     6, b
  13737.                 exx
  13738.                 jr      nz, loc_C5B9
  13739.  
  13740.                 ld      a, l
  13741.                 ld      l, b
  13742.                 ld      l, (hl)
  13743.                 inc     l
  13744.                 inc     h
  13745.                 set     1, (hl)
  13746.                 dec     h
  13747.                 ld      l, a
  13748.                 inc     e
  13749.                 inc     e
  13750.                 jp      loc_C5FA ;проверяем поля по какому-то направлению C
  13751.  
  13752. ; ---------------------------------------------------------------------------
  13753.  
  13754. loc_C5B9:                               ; CODE XREF: sub_C5FF-56
  13755.                 set     6, (ix+2)
  13756.                 ex      af, af' ;'
  13757.                 add     a, #14
  13758.                 ex      af, af' ;'
  13759.                 jp      loc_C5FA ;проверяем поля по какому-то направлению C
  13760.  
  13761. ; END OF FUNCTION CHUNK FOR sub_C5FF
  13762.  
  13763. ; =============== S U B R O U T I N E =======================================
  13764.  
  13765.  
  13766. sub_C5C4:                               ; CODE XREF: sub_BC00+4C9
  13767.                                         ; sub_BC00+4D0
  13768.                 ld      b, a
  13769.                 and     #70 ; 'p'
  13770.                 jp      nz, loc_C5D5
  13771.  
  13772.  
  13773. loc_C5CA:                               ; CODE XREF: sub_C5CF+4
  13774.                 dec     e
  13775.                 dec     e
  13776.                 jp      loc_C5D6
  13777.  
  13778. ; End of function sub_C5C4
  13779.  
  13780.  
  13781. ; =============== S U B R O U T I N E =======================================
  13782.  
  13783.  
  13784. sub_C5CF:                               ; CODE XREF: sub_BC00+49 sub_BC00+50
  13785.                 ld      b, a
  13786.                 or      #70 ; 'p'
  13787.                 cp      b
  13788.                 jr      z, loc_C5CA
  13789.  
  13790.  
  13791. loc_C5D5:                               ; CODE XREF: sub_C2F2+65 sub_C5C4+3
  13792.                 inc     e
  13793.  
  13794.  
  13795. loc_C5D6:                               ; CODE XREF: sub_C5C4+8
  13796.                 exx
  13797.                 ld      c, 4
  13798.  
  13799.  
  13800. loc_C5D9:                               ; CODE XREF: sub_C48D+8
  13801. ;проверяем поля по ходу слона
  13802.                 ld      e, #C4  ; 'Д'
  13803.                 exx
  13804.                 ld      c, #F
  13805.                 ld      a, b
  13806.                 add     a, c
  13807.                 ld      l, a ;ниже левее? (и далее по этому направлению)
  13808.                 and     d
  13809.                 call    z, sub_C5FF
  13810.  
  13811.                 ld      c, #11
  13812.                 ld      a, b
  13813.                 add     a, c
  13814.                 ld      l, a ;ниже правее? (и далее по этому направлению)
  13815.                 and     d
  13816.                 call    z, sub_C5FF
  13817.  
  13818.                 ld      c, #EF  ; 'п'
  13819.                 ld      a, b
  13820.                 add     a, c
  13821.                 ld      l, a ;выше левее? (и далее по этому направлению)
  13822.                 and     d
  13823.                 call    z, sub_C5FF
  13824.  
  13825.                 ld      c, #F1  ; 'с'
  13826.                 ld      l, b
  13827.                              ;выше правее? (и далее по этому направлению)
  13828.  
  13829. loc_C5FA:                               ; CODE XREF: sub_C5FF-49 sub_C5FF-3E ...
  13830. ;проверяем поля по какому-то направлению C
  13831.                 ld      a, l
  13832.                 add     a, c
  13833.                 ld      l, a
  13834.                 and     d
  13835.                 ret     nz
  13836.  
  13837. ; End of function sub_C5CF
  13838.  
  13839.  
  13840. ; =============== S U B R O U T I N E =======================================
  13841.  
  13842.  
  13843. sub_C5FF:                               ; CODE XREF: sub_C5CF+13 sub_C5CF+1C ...
  13844.  
  13845. ; FUNCTION CHUNK AT C59B SIZE 00000029 BYTES
  13846.  
  13847.                 inc     e
  13848.                 or      (hl)
  13849.                 jr      z, loc_C5FA ;проверяем поля по какому-то направлению C
  13850.  
  13851.                 exx
  13852.                 ld      l, a
  13853.                 xor     b
  13854.                 jp      p, loc_C63C
  13855.  
  13856.  
  13857. loc_C609:                               ; CODE XREF: sub_C4CA+9 sub_C4E2+3
  13858.                 ld      a, #78 ; 'x'
  13859.                 and     l
  13860.                 jr      z, loc_C59B
  13861.  
  13862.                 dec     l
  13863.                 dec     l
  13864.                 ld      a, c
  13865.                 add     a, (hl)
  13866.                 ld      (hl), a
  13867.                 set     2, l
  13868.                 ld      a, (hl)
  13869.                 and     e
  13870.                 jr      z, loc_C669
  13871.  
  13872.                 jp      m, loc_C669
  13873.  
  13874.                 exx
  13875.  
  13876.  
  13877. loc_C61D:                               ; CODE XREF: sub_C5FF+24
  13878.                 ld      a, l
  13879.                 add     a, c
  13880.                 ld      l, a
  13881.                 and     d
  13882.                 ret     nz
  13883.                 or      (hl)
  13884.                 jr      z, loc_C61D
  13885.  
  13886.                 exx
  13887.                 ld      d, l
  13888.                 ld      l, a
  13889.                 xor     b
  13890.                 jp      p, loc_C665
  13891.  
  13892.                 dec     l
  13893.                 ld      a, c
  13894.                 add     a, (hl)
  13895.                 ld      (hl), a
  13896.                 inc     l
  13897.  
  13898.  
  13899. loc_C631:                               ; CODE XREF: sub_C5FF+77
  13900.                 inc     l
  13901.                 inc     l
  13902.                 ld      a, (hl)
  13903.                 rra
  13904.                 jr      c, loc_C67F
  13905.  
  13906.                 rra
  13907.                 jr      c, loc_C67B
  13908.  
  13909.                 exx
  13910.                 ret
  13911.  
  13912. ; ---------------------------------------------------------------------------
  13913.  
  13914. loc_C63C:                               ; CODE XREF: sub_C5FF+7
  13915.                 ld      a, c
  13916.                 add     a, (hl)
  13917.                 ld      (hl), a
  13918.  
  13919.  
  13920. loc_C63F:                               ; CODE XREF: sub_C5FF+63
  13921.                 set     1, l
  13922.                 ld      a, (hl)
  13923.                 and     e
  13924.                 exx
  13925.                 ret     z
  13926.                 jp      m, loc_C6AC
  13927.  
  13928.  
  13929. loc_C648:                               ; CODE XREF: sub_C4CA+15 sub_C5FF+50
  13930.                 ld      a, l
  13931.                 add     a, c
  13932.                 ld      l, a
  13933.                 and     d
  13934.                 ret     nz
  13935.                 inc     e
  13936.                 or      (hl)
  13937.                 jr      z, loc_C648
  13938.  
  13939.                 exx
  13940.                 ld      l, a
  13941.                 xor     b
  13942.                 jp      p, loc_C65D
  13943.  
  13944.  
  13945. loc_C657:                               ; CODE XREF: sub_C4E2+1A
  13946.                 dec     l
  13947.  
  13948.  
  13949. loc_C658:                               ; CODE XREF: sub_C5FF+67
  13950.                 ld      a, c
  13951.                 add     a, (hl)
  13952.                 ld      (hl), a
  13953.                 exx
  13954.                 ret
  13955.  
  13956. ; ---------------------------------------------------------------------------
  13957.  
  13958. loc_C65D:                               ; CODE XREF: sub_C5FF+55
  13959.                 inc     l
  13960.                 ld      a, c
  13961.                 add     a, (hl)
  13962.                 ld      (hl), a
  13963.                 dec     l
  13964.                 jp      loc_C63F
  13965.  
  13966. ; ---------------------------------------------------------------------------
  13967.  
  13968. loc_C665:                               ; CODE XREF: sub_C5FF+2A
  13969.                 inc     l
  13970.                 jp      loc_C658
  13971.  
  13972. ; ---------------------------------------------------------------------------
  13973.  
  13974. loc_C669:                               ; CODE XREF: sub_C5FF+18 sub_C5FF+1A
  13975.                 exx
  13976.  
  13977.  
  13978. loc_C66A:                               ; CODE XREF: sub_C5FF+71
  13979.                 ld      a, l
  13980.                 add     a, c
  13981.                 ld      l, a
  13982.                 and     d
  13983.                 ret     nz
  13984.                 or      (hl)
  13985.                 jr      z, loc_C66A
  13986.  
  13987.                 exx
  13988.                 ld      d, l
  13989.                 ld      l, a
  13990.                 xor     b
  13991.                 jp      m, loc_C631
  13992.  
  13993.                 exx
  13994.                 ret
  13995.  
  13996. ; ---------------------------------------------------------------------------
  13997.  
  13998. loc_C67B:                               ; CODE XREF: sub_C5FF+39
  13999.                 bit     6, c
  14000.                 jr      nz, loc_C6A8
  14001.  
  14002.  
  14003. loc_C67F:                               ; CODE XREF: sub_C5FF+36
  14004.                 res     1, d
  14005.                 res     2, d
  14006.                 ld      hl, byte_D079
  14007.  
  14008.  
  14009. loc_C686:                               ; CODE XREF: sub_C5FF+8E
  14010.                 ld      a, (hl)
  14011.                 or      a
  14012.                 jr      z, loc_C697
  14013.  
  14014.                 inc     l
  14015.                 inc     l
  14016.                 cp      d
  14017.                 jp      nz, loc_C686
  14018.  
  14019.                 dec     l
  14020.                 ld      (hl), 0
  14021.                 inc     h
  14022.                 exx
  14023.                 inc     e
  14024.                 ret
  14025.  
  14026. ; ---------------------------------------------------------------------------
  14027.  
  14028. loc_C697:                               ; CODE XREF: sub_C5FF+89
  14029.                 ld      a, l
  14030.                 cp      #84 ; '"'
  14031.                 jr      nc, loc_C6A7
  14032.  
  14033.                 ld      (hl), d
  14034.                 inc     l
  14035.                 exx
  14036.                 ld      a, c
  14037.                 exx
  14038.                 ld      (hl), a
  14039.                 inc     l
  14040.                 ld      (hl), 0
  14041.                 set     5, b
  14042.  
  14043.  
  14044. loc_C6A7:                               ; CODE XREF: sub_C5FF+9B
  14045.                 inc     h
  14046.  
  14047.  
  14048. loc_C6A8:                               ; CODE XREF: sub_C5FF+7E
  14049.                 exx
  14050.                 inc     e
  14051.                 inc     e
  14052.                 ret
  14053.  
  14054. ; ---------------------------------------------------------------------------
  14055.  
  14056. loc_C6AC:                               ; CODE XREF: sub_C5FF+46
  14057.                 rla
  14058.                 xor     c
  14059.                 ret     p
  14060.                 ld      a, l
  14061.                 add     a, c
  14062.                 ld      l, a
  14063.                 and     d
  14064.                 ret     nz
  14065.                 or      (hl)
  14066.                 ret     z
  14067.                 exx
  14068.                 ld      l, a
  14069.                 inc     l
  14070.                 xor     b
  14071.                 jp      p, loc_C6BF
  14072.  
  14073.                 dec     l
  14074.                 dec     l
  14075.  
  14076.  
  14077. loc_C6BF:                               ; CODE XREF: sub_C5FF+BB
  14078.                 ld      a, c
  14079.                 add     a, (hl)
  14080.                 ld      (hl), a
  14081.                 exx
  14082.                 ret
  14083.  
  14084. ; End of function sub_C5FF
  14085.  
  14086.  
  14087. ; =============== S U B R O U T I N E =======================================
  14088.  
  14089.  
  14090. sub_C6C4:                               ; CODE XREF: sub_BC00+D5
  14091.  
  14092. ; FUNCTION CHUNK AT C719 SIZE 0000000E BYTES
  14093. ; FUNCTION CHUNK AT C734 SIZE 00000010 BYTES
  14094.  
  14095.                 ld      iy, byte_D079
  14096.                 push    de
  14097.                 ld      h, BRD_88_0/256
  14098.                 exx
  14099.                 ld      l, (iy+0)
  14100.  
  14101.  
  14102. loc_C6CF:                               ; CODE XREF: RAM:C777
  14103.                 ld      bc, loc_C76B
  14104.                 push    bc
  14105.                 ld      a, l
  14106.                 and     #80 ; '?'
  14107.                 ld      b, a
  14108.                 ld      e, (hl)
  14109.                 inc     l
  14110.                 ld      a, (hl)
  14111.                 and     #8E ; '?'
  14112.                 jr      z, loc_C6EF
  14113.  
  14114.                 jp      m, loc_C734
  14115.  
  14116.                 cp      4
  14117.                 jr      c, loc_C719
  14118.  
  14119.                 jr      z, loc_C725
  14120.  
  14121.                 ld      c, #C0  ; 'А'
  14122.                 call    sub_C727
  14123.  
  14124.                 jp      loc_C73D
  14125.  
  14126. ; ---------------------------------------------------------------------------
  14127.  
  14128. loc_C6EF:                               ; CODE XREF: sub_C6C4+18 sub_C6C4+72
  14129.                 bit     7, b
  14130.                 ld      a, e
  14131.                 exx
  14132.                 ld      b, a
  14133.                 ld      c, #F
  14134.                 jr      z, loc_C6FA
  14135.  
  14136.                 ld      c, #EF  ; 'п'
  14137.  
  14138.  
  14139. loc_C6FA:                               ; CODE XREF: sub_C6C4+32
  14140.                 call    sub_C6FF
  14141.  
  14142.                 inc     c
  14143.                 inc     c
  14144.  
  14145. ; End of function sub_C6C4
  14146.  
  14147.  
  14148. ; =============== S U B R O U T I N E =======================================
  14149.  
  14150.  
  14151. sub_C6FF:                               ; CODE XREF: sub_C6C4:loc_C6FA
  14152.                 ld      a, (iy+1)
  14153.                 cp      c
  14154.                 ret     z
  14155.                 neg
  14156.                 cp      c
  14157.                 ret     z
  14158.                 ld      a, c
  14159.                 add     a, b
  14160.                 ld      l, a
  14161.                 xor     a
  14162.                 or      (hl)
  14163.                 ret     z
  14164.                 exx
  14165.                 ld      l, a
  14166.                 xor     b
  14167.                 jp      p, loc_C716
  14168.  
  14169.                 dec     l
  14170.                 dec     l
  14171.  
  14172.  
  14173. loc_C716:                               ; CODE XREF: sub_C6FF+12
  14174.                 dec     (hl)
  14175.                 exx
  14176.                 ret
  14177.  
  14178. ; End of function sub_C6FF
  14179.  
  14180. ; ---------------------------------------------------------------------------
  14181. ; START OF FUNCTION CHUNK FOR sub_C6C4
  14182.  
  14183. loc_C719:                               ; CODE XREF: sub_C6C4+1F
  14184.                 ld      c, #FC
  14185.                 set     4, b
  14186.                 ld      a, e
  14187.                 exx
  14188.                 ld      d, #88
  14189.                 ld      b, a
  14190.                 jp      loc_C51F ;проверяем поля по ходу коня
  14191.  
  14192. ; ---------------------------------------------------------------------------
  14193.  
  14194. loc_C725:                               ; CODE XREF: sub_C6C4+21
  14195.                 ld      c, #F0
  14196.  
  14197. ; END OF FUNCTION CHUNK FOR sub_C6C4
  14198.  
  14199. ; =============== S U B R O U T I N E =======================================
  14200.  
  14201.  
  14202. sub_C727:                               ; CODE XREF: sub_C6C4+25
  14203.                 ld      a, e
  14204.                 exx
  14205.                 ld      c, 1
  14206.                 ld      b, a
  14207.                 call    sub_C744
  14208.  
  14209.                 ld      c, #10
  14210.                 jp      sub_C744
  14211.  
  14212. ; End of function sub_C727
  14213.  
  14214. ; ---------------------------------------------------------------------------
  14215. ; START OF FUNCTION CHUNK FOR sub_C6C4
  14216.  
  14217. loc_C734:                               ; CODE XREF: sub_C6C4+1A
  14218.                 and     2
  14219.                 jr      z, loc_C6EF
  14220.  
  14221.                 ld      c, #FC  ; 'ь'
  14222.                 ld      a, e
  14223.                 exx
  14224.                 ld      b, a
  14225.  
  14226.  
  14227. loc_C73D:                               ; CODE XREF: sub_C6C4+28
  14228.                 ld      c, #F
  14229.                 call    sub_C744
  14230.  
  14231.                 ld      c, #11
  14232.  
  14233. ; END OF FUNCTION CHUNK FOR sub_C6C4
  14234.  
  14235. ; =============== S U B R O U T I N E =======================================
  14236.  
  14237.  
  14238. sub_C744:                               ; CODE XREF: sub_C727+5 sub_C727+A ...
  14239.                 ld      a, (iy+1)
  14240.                 cp      c
  14241.                 ret     z
  14242.                 neg
  14243.                 cp      c
  14244.                 ret     z
  14245.                 ld      d, #88 ; '?'
  14246.                 call    sub_C755
  14247.  
  14248.                 xor     a
  14249.                 sub     c
  14250.                 ld      c, a
  14251.  
  14252. ; End of function sub_C744
  14253.  
  14254.  
  14255. ; =============== S U B R O U T I N E =======================================
  14256.  
  14257.  
  14258. sub_C755:                               ; CODE XREF: sub_C744+B
  14259.                 ld      l, b
  14260.  
  14261.  
  14262. loc_C756:                               ; CODE XREF: sub_C755+7
  14263.                 ld      a, l
  14264.                 add     a, c
  14265.                 ld      l, a
  14266.                 and     d
  14267.                 ret     nz
  14268.                 or      (hl)
  14269.                 jr      z, loc_C756
  14270.  
  14271.                 exx
  14272.                 ld      l, a
  14273.                 xor     b
  14274.                 jp      p, loc_C766
  14275.  
  14276.                 dec     l
  14277.                 dec     l
  14278.  
  14279.  
  14280. loc_C766:                               ; CODE XREF: sub_C755+C
  14281.                 ld      a, c
  14282.                 add     a, (hl)
  14283.                 ld      (hl), a
  14284.                 exx
  14285.                 ret
  14286.  
  14287. ; End of function sub_C755
  14288.  
  14289. ; ---------------------------------------------------------------------------
  14290.  
  14291. loc_C76B:                               ; DATA XREF: sub_C6C4:loc_C6CF
  14292.                 ld      a, (iy+2)
  14293.                 or      a
  14294.                 jr      z, loc_C77A
  14295.  
  14296.                 inc     iy
  14297.                 inc     iy
  14298.                 exx
  14299.                 ld      l, a
  14300.                 jp      loc_C6CF
  14301.  
  14302. ; ---------------------------------------------------------------------------
  14303.  
  14304. loc_C77A:                               ; CODE XREF: RAM:C76F
  14305.                 pop     de
  14306.                 ld      (byte_D079), a
  14307.                 ret
  14308.  
  14309. ; ---------------------------------------------------------------------------
  14310.        if !FIX
  14311.                 db    0 ;unneeded???
  14312.        endif
  14313.  
  14314.  
  14315.                 ;might be at any address
  14316. Openings:      
  14317.                 db #26,#92,#69,#C4,#CA,#B0,#4C,#2E,#0D
  14318.                 db #0A,#16,#49,#E8,#91,#32,#30,#B6,#4B
  14319.                 db #05,#94,#90,#02,#84,#01,#3D,#17,#26
  14320.                 db #05,#88,#82,#81,#00,#40,#A0,#34,#21
  14321.                 db #08,#08,#C0,#C1,#C4,#00,#50,#9A,#18
  14322.                 db #15,#A2,#89,#E9,#92,#5A,#64,#CC,#99
  14323.                 db #08,#86,#02,#41,#50,#02,#2C,#0C,#4A
  14324.                 db #40,#13,#13,#00,#50,#68,#15,#00,#44
  14325.                 db #AB,#03,#C2,#E4,#90,#A1,#4C,#9A,#1C
  14326.                 db #04,#15,#D0,#00,#A4,#01,#44,#39,#4E
  14327.                 db #45,#14,#91,#40,#04,#50,#3C,#3A,#5A
  14328.                 db #50,#86,#51,#C5,#52,#E9,#28,#3E,#8B
  14329.                 db #2D,#03,#D3,#70,#90,#E2,#04,#BE,#93
  14330.                 db #A7,#A2,#A4,#E1,#B4,#A0,#58,#BA,#59
  14331.                 db #28,#26,#83,#09,#48,#E8,#71,#13,#59
  14332.                 db #45,#56,#91,#55,#B4,#55,#71,#37,#1F
  14333.                 db #49,#94,#4B,#41,#A5,#14,#50,#2E,#5F
  14334.                 db #49,#92,#D2,#E4,#C4,#E0,#3D,#2C,#55
  14335.                 db #31,#11,#01,#A8,#F0,#58,#51,#2A,#14
  14336.                 db #02,#02,#C1,#E5,#44,#21,#88,#22,#28
  14337.                 db #08,#1A,#D2,#61,#34,#79,#A0,#00,#06
  14338.                 db #4C,#1A,#53,#05,#C4,#00,#48,#00,#68
  14339.                 db #4B,#91,#53,#00,#04,#C0,#48,#B4,#56
  14340.                 db #0D,#82,#C1,#44,#64,#94,#15,#27,#19
  14341.                 db #11,#24,#2B,#81,#30,#A2,#2A,#B2,#1B
  14342.                 db #04,#A2,#EB,#01,#40,#92,#26,#AC,#94
  14343.                 db #8B,#A2,#C0,#C4,#92,#68,#20,#3A,#0A
  14344.                 db #0B,#A1,#CB,#84,#A0,#6A,#42,#1A,#0C
  14345.                 db #08,#A0,#20,#69,#52,#89,#00,#22,#15
  14346.                 db #07,#01,#D2,#A4,#C0,#80,#00,#1A,#11
  14347.                 db #43,#83,#4A,#20,#00,#70,#28,#0C,#94
  14348.                 db #27,#00,#02,#41,#24,#69,#48,#00,#07
  14349.                 db #05,#24,#40,#20,#D0,#58,#59,#29,#55
  14350.                 db #0C,#12,#D0,#C4,#44,#E1,#04,#20,#07
  14351.                 db #40,#13,#41,#E0,#E4,#A0,#48,#0A,#19
  14352.                 db #0B,#25,#A8,#09,#8A,#08,#54,#28,#00
  14353.                 db #09,#06,#52,#54,#70,#90,#24,#2E,#06
  14354.                 db #47,#C2,#C1,#84,#84,#88,#31,#30,#4E
  14355.                 db #0B,#04,#C2,#E5,#00,#A5,#24,#3A,#14
  14356.                 db #02,#05,#44,#C1,#20,#D8,#38,#32,#05
  14357.                 db #52,#85,#89,#E9,#33,#32,#4E,#50,#8C
  14358.                 db #27,#06,#83,#40,#E2,#D2,#34,#1C,#89
  14359.                 db #09,#15,#00,#28,#F2,#7A,#3A,#44,#10
  14360.                 db #0A,#22,#A0,#E1,#30,#2A,#60,#94,#04
  14361.                 db #2E,#05,#81,#60,#40,#B2,#5C,#36,#12
  14362.                 db #09,#86,#81,#01,#50,#F2,#5C,#A6,#45
  14363.                 db #0C,#01,#82,#E1,#14,#F8,#34,#30,#06
  14364.                 db #0B,#88,#83,#29,#82,#C8,#38,#1E,#95
  14365.                 db #8B,#02,#C3,#A0,#B0,#D0,#10,#42,#91
  14366.                 db #26,#D3,#89,#64,#62,#9D,#18,#A6,#40
  14367.                 db #22,#80,#C2,#E0,#62,#C0,#4C,#00,#59
  14368.                 db #26,#22,#0A,#A9,#82,#42,#5E,#20,#98
  14369.                 db #0B,#02,#8B,#C9,#01,#02,#26,#8C,#13
  14370.                 db #4E,#40,#0A,#C9,#82,#90,#14,#AE,#8D
  14371.                 db #86,#A3,#C2,#61,#70,#A9,#5D,#22,#1F
  14372.                 db #0A,#A7,#0A,#41,#42,#E8,#2C,#3E,#1A
  14373.                 db #06,#90,#52,#61,#A4,#99,#81,#0D,#08
  14374.                 db #40,#86,#08,#C9,#48,#8A,#1C,#90,#13
  14375.                 db #09,#A4,#4A,#C5,#A0,#00,#14,#3A,#12
  14376.                 db #2A,#A4,#40,#C9,#88,#90,#11,#45,#49
  14377.                 db #02,#92,#52,#80,#00,#B8,#15,#31,#03
  14378.                 db #0B,#82,#D1,#05,#82,#99,#24,#2E,#97
  14379.                 db #8E,#86,#11,#85,#60,#D0,#39,#24,#48
  14380.                 db #09,#85,#12,#E5,#40,#60,#69,#19,#00
  14381.                 db #06,#05,#92,#44,#92,#00,#64,#22,#8E
  14382.                 db #09,#87,#41,#08,#2A,#D8,#58,#36,#21
  14383.                 db #45,#45,#C0,#C0,#D0,#BA,#64,#18,#53
  14384.                 db #20,#11,#C2,#49,#E2,#F8,#49,#1B,#11
  14385.                 db #0A,#0A,#42,#60,#34,#39,#4D,#28,#54
  14386.                 db #0E,#81,#D1,#20,#60,#F8,#59,#35,#10
  14387.                 db #0A,#05,#10,#E5,#60,#D8,#20,#AC,#1B
  14388.                 db #0F,#25,#A4,#69,#B2,#68,#48,#2A,#00
  14389.                 db #08,#82,#01,#E4,#14,#B0,#19,#2C,#48
  14390.                 db #2C,#05,#80,#00,#00,#CA,#22,#26,#13
  14391.                 db #05,#21,#2A,#20,#00,#80,#60,#0E,#01
  14392.                 db #4C,#46,#43,#41,#91,#00,#48,#00,#97
  14393.                 db #22,#92,#0B,#44,#20,#E8,#34,#00,#95
  14394.                 db #2B,#07,#43,#C2,#74,#3C,#70,#3A,#1F
  14395.                 db #13,#A3,#8B,#61,#60,#A0,#78,#18,#A5
  14396.                 db #A0,#05,#83,#20,#90,#D2,#26,#32,#07
  14397.                 db #0D,#02,#43,#A9,#40,#89,#50,#B0,#1E
  14398.                 db #09,#03,#43,#A2,#01,#09,#31,#4C,#44
  14399.                 db #45,#C2,#54,#D0,#60,#88,#08,#14,#8A
  14400.                 db #2E,#06,#48,#05,#00,#32,#78,#0C,#22
  14401.                 db #4E,#19,#83,#01,#34,#BD,#7C,#30,#24
  14402.                 db #41,#47,#82,#24,#74,#08,#65,#01,#0F
  14403.                 db #43,#15,#83,#25,#72,#10,#69,#2A,#52
  14404.                 db #0A,#01,#C3,#E9,#52,#40,#28,#06,#22
  14405.                 db #50,#01,#02,#E0,#A4,#79,#38,#10,#1F
  14406.                 db #09,#88,#13,#11,#E2,#C8,#60,#30,#14
  14407.                 db #44,#96,#04,#40,#81,#02,#74,#34,#0F
  14408.                 db #4C,#12,#02,#25,#84,#38,#1D,#16,#13
  14409.                 db #2C,#00,#C3,#21,#94,#68,#44,#2E,#19
  14410.                 db #11,#03,#83,#E9,#D2,#69,#58,#AE,#20
  14411.                 db #06,#01,#43,#82,#90,#D1,#79,#20,#63
  14412.                 db #48,#46,#D1,#F0,#C0,#60,#70,#34,#0F
  14413.                 db #40,#13,#8A,#A1,#00,#81,#58,#3C,#0C
  14414.                 db #47,#00,#40,#41,#64,#C4,#30,#02,#01
  14415.                 db #05,#05,#05,#49,#A8,#28,#30,#1E,#13
  14416.                 db #0D,#25,#8A,#A1,#62,#68,#35,#24,#51
  14417.                 db #08,#82,#C1,#C0,#40,#02,#02,#38,#0D
  14418.                 db #0C,#87,#CB,#40,#74,#00,#6C,#0E,#A1
  14419.                 db #AC,#03,#80,#61,#C0,#F8,#58,#3A,#8E
  14420.                 db #8B,#05,#C3,#E0,#12,#10,#34,#18,#11
  14421.                 db #50,#88,#82,#C1,#50,#DA,#78,#94,#4D
  14422.                 db #0D,#05,#83,#61,#42,#A0,#38,#32,#80
  14423.                 db #A1,#85,#42,#A9,#A8,#C8,#58,#28,#9C
  14424.                 db #05,#92,#02,#21,#C0,#38,#30,#3C,#11
  14425.                 db #45,#46,#81,#01,#A0,#F0,#68,#10,#13
  14426.                 db #4C,#11,#C1,#A1,#A0,#B8,#74,#AC,#24
  14427.                 db #07,#88,#10,#90,#C0,#38,#4C,#36,#83
  14428.                 db #2B,#05,#C9,#00,#B0,#21,#48,#A6,#98
  14429.                 db #2D,#01,#C2,#28,#09,#28,#48,#26,#9D
  14430.                 db #C4,#C7,#50,#31,#80,#38,#3C,#22,#54
  14431.                 db #4F,#06,#03,#C1,#74,#41,#30,#AC,#16
  14432.                 db #29,#16,#43,#21,#B2,#48,#50,#2C,#92
  14433.                 db #09,#07,#40,#89,#72,#90,#64,#24,#07
  14434.                 db #0B,#07,#51,#85,#02,#88,#58,#2E,#16
  14435.                 db #05,#21,#C2,#C1,#D0,#D8,#20,#2A,#A8
  14436.                 db #0D,#03,#82,#81,#80,#CA,#28,#A6,#4C
  14437.                 db #2F,#87,#03,#84,#E0,#C1,#41,#2E,#03
  14438.                 db #0B,#A4,#09,#E2,#02,#C0,#11,#24,#19
  14439.                 db #0D,#A5,#83,#41,#F4,#B9,#3C,#38,#1F
  14440.                 db #06,#02,#52,#A5,#B0,#58,#60,#2C,#04
  14441.                 db #48,#52,#43,#A0,#30,#50,#01,#53,#5E
  14442.                 db #0F,#00,#D0,#74,#40,#A8,#3C,#0E,#04
  14443.                 db #44,#C6,#03,#A1,#20,#88,#35,#24,#52
  14444.                 db #26,#11,#C4,#A1,#32,#92,#0E,#56,#92
  14445.                 db #25,#09,#04,#00,#E4,#60,#68,#34,#09
  14446.                 db #08,#A3,#A4,#01,#21,#08,#58,#3C,#8D
  14447.                 db #8D,#05,#42,#81,#80,#CA,#28,#BE,#19
  14448.                 db #2E,#04,#03,#20,#32,#72,#5A,#1E,#9B
  14449.                 db #2B,#86,#00,#A1,#30,#4A,#84,#88,#10
  14450.                 db #10,#05,#44,#88,#F0,#F0,#44,#32,#0F
  14451.                 db #07,#29,#A3,#C1,#B0,#70,#50,#B2,#8F
  14452.                 db #0D,#A3,#22,#A1,#60,#68,#48,#32,#1A
  14453.                 db #0B,#A7,#C9,#05,#60,#61,#4C,#28,#15
  14454.                 db #25,#05,#02,#26,#44,#D8,#41,#2E,#4D
  14455.                 db #2E,#02,#42,#49,#30,#80,#24,#36,#93
  14456.                 db #07,#96,#0A,#A1,#04,#80,#60,#26,#8C
  14457.                 db #0A,#03,#93,#25,#E0,#A1,#74,#1C,#13
  14458.                 db #47,#03,#91,#A5,#F0,#41,#38,#10,#88
  14459.                 db #0A,#86,#51,#B1,#24,#A1,#28,#18,#12
  14460.                 db #04,#A7,#2A,#80,#C0,#B8,#50,#26,#91
  14461.                 db #87,#23,#08,#45,#70,#19,#58,#1E,#57
  14462.                 db #03,#02,#C1,#A0,#04,#F4,#3C,#20,#0E
  14463.                 db #4A,#15,#01,#05,#50,#51,#84,#26,#1D
  14464.                 db #4A,#87,#82,#A8,#C0,#98,#0C,#1A,#0F
  14465.                 db #09,#24,#41,#40,#52,#9A,#2C,#20,#8B
  14466.                 db #85,#03,#C3,#48,#F2,#58,#5C,#98,#56
  14467.                 db #06,#87,#4A,#2A,#20,#80,#5C,#12,#8E
  14468.                 db #04,#01,#40,#E0,#70,#C0,#21,#14,#83
  14469.                 db #20,#85,#89,#A1,#30,#A2,#80,#1E,#1E
  14470.                 db #06,#03,#83,#49,#9A,#80,#58,#00,#13
  14471.                 db #08,#18,#82,#E9,#D2,#D0,#19,#18,#10
  14472.                 db #08,#20,#E1,#41,#60,#50,#4C,#34,#5A
  14473.                 db #04,#23,#09,#40,#81,#20,#01,#0C,#62
  14474.                 db #04,#06,#08,#09,#E0,#DA,#78,#98,#08
  14475.                 db #44,#04,#01,#01,#F0,#00,#11,#0E,#4B
  14476.                 db #25,#D4,#8A,#25,#40,#A0,#3C,#1C,#0D
  14477.                 db #07,#02,#93,#64,#C0,#68,#48,#30,#5D
  14478.                 db #0C,#88,#52,#41,#80,#58,#71,#42,#0F
  14479.                 db #06,#83,#4B,#21,#D4,#78,#60,#30,#0B
  14480.                 db #0E,#28,#49,#44,#C2,#70,#28,#20,#1D
  14481.                 db #48,#05,#02,#E0,#A0,#18,#44,#32,#91
  14482.                 db #27,#81,#C8,#60,#70,#D0,#4C,#2C,#8F
  14483.                 db #2C,#02,#02,#60,#D0,#6A,#58,#34,#9A
  14484.                 db #CA,#14,#E9,#E4,#D0,#C8,#6C,#18,#1C
  14485.                 db #00,#25,#C9,#E1,#A0,#48,#40,#2E,#00
  14486.                 db #4A,#C4,#82,#A1,#50,#D0,#08,#2C,#97
  14487.                 db #26,#05,#83,#01,#90,#A2,#4A,#AC,#17
  14488.                 db #0C,#08,#52,#31,#50,#B8,#38,#40,#21
  14489.                 db #49,#05,#29,#85,#20,#51,#1C,#3C,#00
  14490.                 db #0E,#A2,#81,#81,#E0,#A8,#89,#36,#19
  14491.                 db #0B,#86,#C2,#41,#40,#F0,#69,#1A,#14
  14492.                 db #0D,#83,#02,#C8,#92,#60,#2C,#2E,#17
  14493.                 db #04,#06,#43,#C0,#E4,#B0,#24,#16,#07
  14494.                 db #24,#95,#02,#60,#C0,#90,#65,#38,#44
  14495.                 db #07,#8A,#02,#00,#E4,#98,#6C,#1C,#1A
  14496.                 db #09,#08,#D2,#84,#60,#62,#5C,#AA,#0C
  14497.                 db #49,#96,#91,#81,#60,#62,#60,#84,#52
  14498.                 db #28,#53,#08,#C5,#82,#B1,#39,#0C,#15
  14499.                 db #23,#A3,#C0,#C9,#12,#00,#38,#30,#1D
  14500.                 db #0D,#00,#0B,#48,#D0,#78,#71,#18,#59
  14501.                 db #2A,#86,#42,#28,#E0,#70,#34,#3A,#8B
  14502.                 db #27,#05,#43,#A1,#14,#80,#6D,#30,#53
  14503.                 db #03,#84,#08,#01,#54,#91,#48,#2A,#96
  14504.                 db #07,#85,#51,#24,#A0,#F0,#38,#36,#98
  14505.                 db #20,#86,#43,#A8,#02,#92,#64,#84,#19
  14506.                 db #0B,#A3,#83,#41,#B0,#9A,#3E,#28,#18
  14507.                 db #0A,#14,#41,#48,#70,#C8,#50,#30,#1C
  14508.                 db #2E,#A3,#8C,#88,#E0,#9A,#38,#1F,#51
  14509.                 db #24,#80,#C3,#E8,#A0,#E0,#0C,#18,#0A
  14510.                 db #00,#20,#00,#C0,#70,#18,#64,#00,#0C
  14511.                 db #44,#94,#89,#84,#12,#D0,#4C,#B4,#00
  14512.                 db #07,#87,#28,#04,#E0,#F0,#40,#A6,#9A
  14513.                 db #2E,#24,#02,#89,#30,#60,#79,#10,#61
  14514.                 db #4B,#48,#13,#65,#10,#00,#2C,#B2,#22
  14515.                 db #4E,#87,#41,#89,#D3,#10,#00,#16,#5C
  14516.                 db #2D,#26,#44,#49,#92,#68,#69,#2E,#18
  14517.                 db #4A,#08,#C0,#01,#80,#C9,#35,#36,#1E
  14518.                 db #4D,#C4,#82,#61,#F0,#00,#35,#16,#11
  14519.                 db #2B,#83,#C3,#01,#00,#D8,#2C,#2A,#00
  14520.                 db #0E,#96,#50,#05,#34,#00,#09,#00,#52
  14521.                 db #04,#90,#83,#80,#54,#01,#75,#00,#0A
  14522.                 db #40,#12,#41,#22,#04,#00,#28,#1E,#0E
  14523.                 db #07,#04,#91,#34,#F4,#0C,#69,#02,#4D
  14524.                 db #0A,#94,#01,#A1,#40,#C8,#50,#B0,#1C
  14525.                 db #2E,#A3,#8C,#88,#E0,#9A,#38,#36,#1C
  14526.                 db #06,#A3,#81,#C1,#20,#78,#38,#1E,#18
  14527.                 db #43,#C4,#42,#A4,#D4,#98,#30,#26,#0C
  14528.                 db #48,#52,#41,#E0,#70,#49,#50,#26,#0C
  14529.                 db #09,#06,#53,#85,#B0,#70,#68,#24,#23
  14530.                 db #4A,#01,#01,#E2,#80,#80,#39,#27,#4C
  14531.                 db #28,#21,#89,#E8,#60,#6A,#66,#0C,#05
  14532.                 db #04,#06,#02,#61,#80,#88,#28,#24,#81
  14533.                 db #A4,#85,#09,#80,#A0,#C2,#54,#1C,#17
  14534.                 db #0A,#27,#A1,#E5,#20,#18,#68,#22,#0B
  14535.                 db #02,#05,#C0,#00,#04,#B0,#24,#06,#87
  14536.                 db #24,#93,#40,#64,#D2,#51,#24,#B0,#07
  14537.                 db #05,#07,#42,#00,#B0,#2A,#78,#2C,#07
  14538.                 db #00,#80,#02,#88,#48,#B8,#34,#22,#16
  14539.                 db #0C,#26,#82,#C5,#60,#88,#50,#08,#9B
  14540.                 db #23,#01,#00,#01,#20,#18,#01,#36,#13
  14541.                 db #46,#05,#49,#49,#C0,#B0,#45,#08,#49
  14542.                 db #23,#01,#40,#80,#50,#A0,#4C,#2C,#95
  14543.                 db #01,#81,#02,#A1,#50,#20,#10,#24,#12
  14544.                 db #02,#21,#00,#40,#30,#80,#4C,#A8,#19
  14545.                 db #07,#06,#42,#60,#B4,#70,#58,#38,#1B
  14546.                 db #0D,#05,#C2,#08,#32,#19,#2C,#1A,#54
  14547.                 db #08,#82,#C2,#A0,#E0,#60,#10,#16,#A3
  14548.                 db #28,#83,#41,#A0,#24,#4C,#4D,#0A,#42
  14549.                 db #09,#04,#80,#20,#10,#00,#00,#22,#12
  14550.                 db #04,#27,#21,#25,#24,#68,#29,#1B,#46
  14551.                 db #26,#80,#11,#60,#B0,#02,#2E,#1E,#0B
  14552.                 db #22,#02,#C2,#28,#70,#68,#2C,#1E,#87
  14553.                 db #22,#16,#0C,#26,#82,#C5,#60,#88,#50
  14554.                 db #08,#9B,#23,#01,#00,#01,#20,#18,#01
  14555.                 db #36,#13,#46,#05,#49,#49,#C0,#B0,#45
  14556.                 db #08,#49,#23,#01,#40,#80,#50,#A0,#4C
  14557.                 db #2C,#95,#01,#81,#02,#A1,#50,#20,#10
  14558.                 db #24,#12,#02,#21,#00,#40,#30
  14559.  
  14560.                 ;^^^ that table ends exactly at #CFFF !!!!
  14561. end
  14562.  
  14563.  
  14564.                 ; below is only data memory (tables and variables), zeroed at start
  14565.  
  14566.                 ds 0xD000-$
  14567.  
  14568. BRD_88_0:       ds 8            ; DATA XREF: START_POINT+6B
  14569.                                         ; sub_8C20-71D ...
  14570.                 db    0
  14571. byte_D009:      db 0                    ; DATA XREF: sub_B75A:loc_B781
  14572.                                         ; RAM:B7AA ...
  14573. byte_D00A:      db 0                    ; DATA XREF: sub_8C20:loc_8142
  14574.                                         ; sub_8C20:loc_8253 ...
  14575. byte_D00B:      db 0                    ; DATA XREF: sub_AFC5+A6 sub_AFC5+E6 ...
  14576.                 db    0
  14577. word_D00D:      dw 0                    ; DATA XREF: sub_8C20-574 sub_AD40+2 ...
  14578.                 db    0
  14579. BRD_88_1:       ds 8
  14580.                 db    0
  14581. byte_D019:      db 0                    ; DATA XREF: sub_AFC5+B2
  14582.                                         ; sub_B47F+188 ...
  14583. byte_D01A:      db 0                    ; DATA XREF: sub_B47F+293
  14584.                                         ; sub_B75A+1B   ...
  14585. byte_D01B:      db 0                    ; DATA XREF: RAM:B7B7   sub_B943+20
  14586. byte_D01C:      db 0                    ; DATA XREF: sub_AFC5+A9
  14587.                                         ; sub_B47F+1E2 ...
  14588. byte_D01D:      db 0                    ; DATA XREF: sub_AB53+1 sub_B47F-2D     ...
  14589. byte_D01E:      db 0                    ; DATA XREF: sub_B19C+33
  14590.                                         ; sub_B47F+118 ...
  14591.                 db    0
  14592. BRD_88_2:       ds 8
  14593.                 db    0
  14594. byte_D029:      db 0                    ; DATA XREF: sub_8C20-9C9
  14595.                                         ; sub_8C20-6C8
  14596. byte_D02A:      db 0                    ; DATA XREF: sub_AFC5+126
  14597.                                         ; sub_B1EB+11   ...
  14598. word_D02B:      dw 0                    ; DATA XREF: sub_8C20-AB0
  14599.                                         ; sub_8DE9+6E   ...
  14600. byte_D02D:      db 0                    ; DATA XREF: sub_8C20-AD6
  14601.                                         ; sub_8C20:loc_82D7 ...
  14602. byte_D02E:      db 0                    ; DATA XREF: sub_AFC5+3B sub_B19C+1D
  14603.                 db    0
  14604. BRD_88_3:       ds 8
  14605.                 db    0
  14606. word_D039:      dw 0                    ; DATA XREF: sub_BC00+E2
  14607.                                         ; sub_BC00+23A ...
  14608. byte_D03B:      db 0                    ; DATA XREF: sub_AD40+6 sub_AD40+57     ...
  14609. byte_D03C:      db 0                    ; DATA XREF: sub_AFC5+10F
  14610.                                         ; sub_AFC5+148 ...
  14611. word_D03D:      dw 0                    ; DATA XREF: sub_AD40+1A sub_AD40+AD ...
  14612.                 db    0
  14613. BRD_88_4:       ds 8
  14614.                 db    0
  14615. byte_D049:      db 0                    ; DATA XREF: sub_8C20-B62 ;move # (1..N)
  14616.                                         ; sub_8C20-B37 ...
  14617. word_D04A:      dw 0                    ; DATA XREF: sub_AB53+8 sub_AB53+CD     ...
  14618. byte_D04C:      db 0                    ; DATA XREF: sub_A932+10 sub_AFC5+2D ...
  14619. byte_D04D:      db 0                    ; DATA XREF: sub_8C20-B24
  14620.                                         ; sub_8C20-654 ...
  14621. byte_D04E:      db 0                    ; DATA XREF: sub_AB53+18 sub_AB53+29 ...
  14622.                 db    0
  14623. BRD_88_5:       ds 8
  14624.                 db    0
  14625. word_D059:      dw 0                    ; DATA XREF: sub_8C20-A8E
  14626.                                         ; sub_8C20-A35 ...
  14627. byte_D05B:      db 0                    ; DATA XREF: sub_8C20-6CB
  14628.                                         ; sub_8C20-1C8 ...
  14629. word_D05C:      dw 0                    ; DATA XREF: sub_8C20-8B2
  14630.                                         ; sub_8C20-6D4 ...
  14631. byte_D05E:      db 0                    ; DATA XREF: sub_8C20-6D1 sub_8B66+9
  14632.                 db    0
  14633. BRD_88_6:       ds 8
  14634.                 db    0
  14635. word_D069:      dw 0                    ; DATA XREF: sub_AB53+B sub_AB53+35     ...
  14636. JP_ADDR:        dw 0                    ; DATA XREF: RAM:AB4F   sub_B75A+2D ...
  14637. word_D06D:      dw 0                    ; DATA XREF: sub_B47F+134
  14638.                                         ; sub_B47F+16A ...
  14639.                 db    0
  14640. BRD_88_7:       ds 8
  14641.                 db    0
  14642. byte_D079:      db 0                    ; DATA XREF: sub_C254+21E
  14643.                                         ; sub_C5FF+84   ...
  14644. byte_D07A:      db 0                    ; DATA XREF: FindMoveAndSwap+13 sub_B47F+2      ...
  14645.                 db    0
  14646.                 db    0
  14647.                 db    0
  14648.                 db    0
  14649.                 db    0
  14650. unk_D080:       db    0                 ; DATA XREF: InitBoard_ClearMoves+18
  14651.                 db    0
  14652.                 db    0
  14653.                 db    0
  14654.                 db    0
  14655.                 db    0
  14656. word_D086:      dw 0                    ; DATA XREF: sub_AB53+45 sub_AB53+6A
  14657. word_D088:      dw 0                    ; DATA XREF: sub_8C20-1FB
  14658.                                         ; sub_8C20:loc_8A2F ...
  14659. byte_D08A:      db 0                    ; DATA XREF: sub_AFC5+A0
  14660.                                         ; sub_AFC5+1A2 ...
  14661. byte_D08B:      db 0                    ; DATA XREF: sub_AFC5+70 sub_AFC5+AD ...
  14662. byte_D08C:      db 0                    ; DATA XREF: sub_AFC5+A3
  14663.                                         ; sub_AFC5+1A5 ...
  14664. byte_D08D:      db 0                    ; DATA XREF: sub_8C20-657
  14665.                                         ; sub_8C20-634 ...
  14666. byte_D08E:      db 0                    ; DATA XREF: sub_8C20-661
  14667.                 db    0
  14668.                 db    0
  14669.                 db    0
  14670.                 db    0
  14671. RAND_SEED:      db 0                    ; DATA XREF: GEN_RANDBYTE+3
  14672.                                         ; GEN_RANDBYTE+8
  14673.                 db    0
  14674.                 db    0
  14675.                 db    0
  14676. byte_D097:      db 0                    ; DATA XREF: InitBoard_ClearMoves+49
  14677.                                         ; sub_A94F:loc_A961 ...
  14678. byte_D098:      db 0                    ; DATA XREF: sub_A6F7+34 sub_AFC5+5F ...
  14679. word_D099:      dw 0                    ; DATA XREF: InitBoard_ClearMoves+58
  14680.                 db    0
  14681.                 db    0
  14682.                 db    0
  14683. byte_D09E:      db 0                    ; DATA XREF: sub_8C20-A4E ;end of opening?
  14684.                                         ; sub_8C20-90D ...
  14685. word_D09F:      dw 0                    ; DATA XREF: sub_8C20-B58
  14686.                                         ; sub_8C20:loc_811C ...
  14687.                 db    0
  14688.                 db    0
  14689.                 db    0
  14690.                 db    0
  14691.                 db    0
  14692.                 db    0
  14693.                 db    0
  14694.                 db    0
  14695.                 db    0
  14696.                 db    0
  14697.                 db    0
  14698.                 db    0
  14699.                 db    0
  14700.                 db    0
  14701.                 db    0
  14702.                 db    0
  14703. curlevel:       db 0                    ; DATA XREF: START_POINT+8F
  14704.                                         ; sub_8C20:loc_8515 ...
  14705. byte_D0B2:      db 0                    ; DATA XREF: sub_8C20-ACD
  14706.                                         ; sub_8C20-5A5 ...
  14707. byte_D0B3:      db 0                    ; DATA XREF: sub_8C20-B66
  14708.                                         ; sub_8C20-8DF ...
  14709.                                         ; bit 3 -- swap clocks ;d3=swap board
  14710. byte_D0B4:      db 0                    ; DATA XREF: sub_92D7-123C ;d5=invisible board?
  14711.                                         ; sub_8C20-AEE ...
  14712.                 db    0
  14713. byte_D0B6:      db 0                    ; DATA XREF: sub_8C20:loc_81A1
  14714.                                         ; sub_8C20-A48 ...
  14715. byte_D0B7:      db 0                    ; DATA XREF: sub_8C20-68A
  14716.                                         ; PrintMoveNumber:loc_A0AF ...
  14717. keycodeformenu: db 0                    ; DATA XREF: sub_8C20-885
  14718.                                         ; sub_8C20-873 ...
  14719.                 db    0
  14720.                 db    0
  14721. needdrawcursorfrom: db 0                        ; DATA XREF: sub_8C20-895
  14722. needdrawcursor1: db 0
  14723.                                         ; sub_8C20-7C0 ...
  14724. keycode:        db 0                    ; DATA XREF: KEY_SCAN+9
  14725.                                         ; KEY_SCAN:loc_90D1 ...
  14726. SEL_SCRorBUF:   db 0                    ; DATA XREF: START_POINT+81
  14727.                                         ; sub_8D9E:loc_8DB0 ...
  14728. byte_D0BF:      db 0                    ; DATA XREF: sub_8C20-AD1
  14729.                                         ; sub_8C20-942 ...
  14730. byte_D0C0:      db 0                    ; DATA XREF: sub_96A6+14 sub_9FB2+D     ...
  14731.                 db    0
  14732. byte_D0C2:      db 0                    ; DATA XREF: sub_8C20-A0F
  14733.                                         ; sub_8C20-78E ...
  14734. byte_D0C3:      db 0                    ; DATA XREF: sub_8C20-A03
  14735.                                         ; sub_8C20-782 ...
  14736. byte_D0C4:      db 0                    ; DATA XREF: sub_8C20-A15
  14737.                                         ; sub_8C20-794 ...
  14738. byte_D0C5:      db 0                    ; DATA XREF: sub_8C20-A09
  14739.                                         ; sub_8C20-788 ...
  14740. word_D0C6:      dw 0                    ; DATA XREF: sub_8D9E+27 sub_8D9E+36 ...
  14741. word_D0C8:      dw 0                    ; DATA XREF: sub_8D9E+33 sub_8DE9+10
  14742. BRD_COLOR:      db 0                    ; DATA XREF: SET_BRD_COLOR:loc_9655
  14743.                                         ; BEEP_routine+15
  14744. byte_D0CB:      db 0                    ; DATA XREF: sub_8E81+1E
  14745.                                         ; sub_8EA7:loc_8EE5
  14746. byte_D0CC:      db 0                    ; DATA XREF: sub_8EA7:loc_8EA8
  14747.                                         ; sub_8EA7+26
  14748. byte_D0CD:      db 0                    ; DATA XREF: sub_8C20-892
  14749. scr_XY:         dw 0                    ; DATA XREF: sub_842C+8
  14750.                                         ; sub_8C20:loc_85B4 ...
  14751. scr_pix_addr:   dw 0                    ; DATA XREF: sub_8EFB+B sub_8EFB+25     ...
  14752. scr_attr_addr:  dw 0                    ; DATA XREF: sub_8EFB+14 sub_8EFB+2E ...
  14753. NEED_SCR2BUF:   db 0                    ; DATA XREF: PrintCurLevel+A
  14754.                                         ; PRINT_STR_FF:PRINT_STR_A ...
  14755. gamestatemsgaddr:       dw 0                    ; DATA XREF: FillAttrsAndBorder+4 PrintGameState ...
  14756. TMP_BOARD_PTR:  dw 0                    ; DATA XREF: sub_93A4:loc_93A7
  14757.                                         ; sub_93A4:loc_93FC ...
  14758. curkey_D0D9:    db 0                    ; DATA XREF: sub_8C20-697
  14759.                                         ; HotKeys:HotKeys_keepkey_pop_ret
  14760. word_D0DA:      dw 0                    ; DATA XREF: sub_8C20-8CF
  14761.                                         ; sub_9128+EE
  14762. byte_D0DC:      db 0                    ; DATA XREF: sub_8C20:loc_835C
  14763.                                         ; sub_8C20-76D ...
  14764. DECREMENT_50HZ: db 0                    ; DATA XREF: INT_PROC+4 sub_8D9E+46     ...
  14765.                 db    0
  14766. byte_D0DF:      db 0                    ; DATA XREF: sub_8C20-AA9
  14767.                                         ; sub_8C20:loc_81AA ...
  14768. CFG_BITS:       db 0                    ; DATA XREF: sub_8C20-B4F
  14769.                                         ; sub_8C20-AFC ...
  14770.                                         ; bit2=1 -- there is serial printer
  14771.                                         ; bit3=1 -- there is zx printer
  14772. byte_D0E1:      db 0                    ; DATA XREF: sub_A0F7+4 PRT_DETECT+1 ...
  14773. baudrate_NUM:   db 0                    ; DATA XREF: PRT_DETECT+16
  14774.                                         ; sub_8C20+1754 ...
  14775. byte_D0E3:      db 0                    ; DATA XREF: sub_8C20-ABC
  14776. INC_SECONDS:    dw 0                    ; DATA XREF: sub_8C20-AB3
  14777.                                         ; sub_8C20-910 ...
  14778. unk_D0E6:       db    0                 ; DATA XREF: sub_AB53+F
  14779.                                         ; sub_AB53:loc_ABEF
  14780.                 db    0
  14781.                 db    0
  14782.                 db    0
  14783.                 db    0
  14784.                 db    0
  14785.                 db    0
  14786.                 db    0
  14787.                 db    0
  14788. byte_D0EF:      db 0                    ; DATA XREF: sub_AB53+32 sub_AFC5+6D
  14789. byte_D0F0:      db 0                    ; DATA XREF: START_POINT+97
  14790. timenorm:       db 0                    ; DATA XREF: sub_8F4D+3C sub_AFC5+85 ... ;норма времени на ход? в начале партии #0C, после 1 хода за белых #10, потом с 9 хода за белых увеличивается на 1 с каждым ходом. Take Back не влияет, даже если уйти с линии
  14791. byte_D0F2:      db 0                    ; DATA XREF: sub_AFC5+88
  14792.                                         ; sub_AFC5+18F ...
  14793. byte_D0F3:      db 0                    ; DATA XREF: sub_8C20-AB9
  14794.                                         ; sub_8F4D+28   ...
  14795. timeformove:    db 0                    ; DATA XREF: sub_8C20-201
  14796.                                         ; sub_8C20-179 ...
  14797. ptr_stk_1bvalue:dw 0                    ; DATA XREF: sub_8C20-9D7
  14798.                                         ; sub_8C20-9D2 ...
  14799. word_D0F7:      dw 0                    ; DATA XREF: sub_8C20-B1F
  14800.                                         ; sub_8C20-9E4 ...
  14801.                 db    0
  14802.                 db    0
  14803.                 db    0
  14804.                 db    0
  14805.                 db    0
  14806.                 db    0
  14807. byte_D0FF:      db 0                    ; DATA XREF: InitBoard_ClearMoves+1
  14808. word_D100:      dw 0                    ; DATA XREF: sub_8C20-532
  14809.                                         ; InitBoard_ClearMoves+24       ...
  14810.                 db    0
  14811.                 db    0
  14812.                 db    0
  14813.                 db    0
  14814.                 db    0
  14815.                 db    0
  14816. byte_D108:      db 0                    ; DATA XREF: sub_AFC5+29
  14817.                                         ; sub_BC00:loc_C0AE ...
  14818. byte_D109:      db 0                    ; DATA XREF: sub_C1EF:loc_C1A4
  14819. word_D10A:      dw 0                    ; DATA XREF: sub_BC00+244
  14820.                                         ; sub_BC00+254 ...
  14821. word_D10C:      dw 0                    ; DATA XREF: sub_BC00+24B
  14822.                                         ; sub_BC00:loc_BE57
  14823.                 db    0
  14824.                 db    0
  14825. byte_D110:      db 0                    ; DATA XREF: sub_BC00+4B7
  14826.                 db    0
  14827. word_D112:      dw 0                    ; DATA XREF: sub_BC00+25A
  14828.                                         ; sub_BC00+26A
  14829. word_D114:      dw 0                    ; DATA XREF: sub_BC00+261
  14830.                                         ; sub_BC00:loc_BE6D
  14831.                 db    0
  14832.                 db    0
  14833. byte_D118:      db 0                    ; DATA XREF: sub_BC00+4BE
  14834.                 db    0
  14835. word_D11A:      dw 0                    ; DATA XREF: sub_BC00+270
  14836.                                         ; sub_BC00+280
  14837. word_D11C:      dw 0                    ; DATA XREF: sub_BC00+277
  14838.                                         ; sub_BC00:loc_BE83
  14839.                 db    0
  14840.                 db    0
  14841. byte_D120:      db 0                    ; DATA XREF: sub_BC00+4C5
  14842.                 db    0
  14843. word_D122:      dw 0                    ; DATA XREF: sub_BC00+286
  14844.                                         ; sub_BC00+296
  14845. word_D124:      dw 0                    ; DATA XREF: sub_BC00+28D
  14846.                                         ; sub_BC00:loc_BE99
  14847.                 db    0
  14848.                 db    0
  14849. byte_D128:      db 0                    ; DATA XREF: sub_BC00+4CC
  14850.                 db    0
  14851. word_D12A:      dw 0                    ; DATA XREF: sub_BC00+29C
  14852.                                         ; sub_BC00+2AC
  14853. word_D12C:      dw 0                    ; DATA XREF: sub_BC00+2A3
  14854.                                         ; sub_BC00:loc_BEAF
  14855.                 db    0
  14856.                 db    0
  14857. byte_D130:      db 0                    ; DATA XREF: sub_BC00+4D3
  14858.                 db    0
  14859. word_D132:      dw 0                    ; DATA XREF: sub_BC00+2B2
  14860.                                         ; sub_BC00+2C2
  14861. word_D134:      dw 0                    ; DATA XREF: sub_BC00+2B9
  14862.                                         ; sub_BC00:loc_BEC5
  14863.                 db    0
  14864.                 db    0
  14865. byte_D138:      db 0                    ; DATA XREF: sub_BC00+4DA
  14866.                 db    0
  14867. word_D13A:      dw 0                    ; DATA XREF: sub_BC00+2C8
  14868.                                         ; sub_BC00+2D8
  14869. word_D13C:      dw 0                    ; DATA XREF: sub_BC00+2CF
  14870.                                         ; sub_BC00:loc_BEDB
  14871.                 db    0
  14872.                 db    0
  14873. unk_D140:       db    0                 ; DATA XREF: sub_881D   sub_A94F+7E ...
  14874. byte_D141:      db 0                    ; DATA XREF: sub_BC00+2E9
  14875. word_D142:      dw 0                    ; DATA XREF: sub_BC00+2DE
  14876.                                         ; sub_BC00+2EF
  14877. word_D144:      dw 0                    ; DATA XREF: sub_BC00+2E5
  14878.                                         ; sub_BC00:loc_BEF2
  14879.                 db    0
  14880.                 db    0
  14881. unk_D148:       db    0                 ; DATA XREF: sub_BC00+4ED
  14882. byte_D149:      db 0                    ; DATA XREF: sub_BC00+300
  14883. word_D14A:      dw 0                    ; DATA XREF: sub_BC00+2F5
  14884.                                         ; sub_BC00+306
  14885. word_D14C:      dw 0                    ; DATA XREF: sub_BC00+2FC
  14886.                                         ; sub_BC00:loc_BF09
  14887.                 db    0
  14888.                 db    0
  14889. unk_D150:       db    0                 ; DATA XREF: sub_BC00+4F5
  14890. byte_D151:      db 0                    ; DATA XREF: sub_BC00+317
  14891. word_D152:      dw 0                    ; DATA XREF: sub_BC00+30C
  14892.                                         ; sub_BC00+31D
  14893. word_D154:      dw 0                    ; DATA XREF: sub_BC00+313
  14894.                                         ; sub_BC00:loc_BF20
  14895.                 db    0
  14896.                 db    0
  14897. unk_D158:       db    0                 ; DATA XREF: sub_BC00+4FD
  14898. byte_D159:      db 0                    ; DATA XREF: sub_BC00+32E
  14899. word_D15A:      dw 0                    ; DATA XREF: sub_BC00+323
  14900.                                         ; sub_BC00+334
  14901. word_D15C:      dw 0                    ; DATA XREF: sub_BC00+32A
  14902.                                         ; sub_BC00:loc_BF37
  14903.                 db    0
  14904.                 db    0
  14905. unk_D160:       db    0                 ; DATA XREF: sub_BC00+505
  14906. byte_D161:      db 0                    ; DATA XREF: sub_BC00+345
  14907. word_D162:      dw 0                    ; DATA XREF: sub_BC00+33A
  14908.                                         ; sub_BC00+34B
  14909. word_D164:      dw 0                    ; DATA XREF: sub_BC00+341
  14910.                                         ; sub_BC00:loc_BF4E
  14911.                 db    0
  14912.                 db    0
  14913. unk_D168:       db    0                 ; DATA XREF: sub_BC00+50D
  14914. byte_D169:      db 0                    ; DATA XREF: sub_BC00+35C
  14915. word_D16A:      dw 0                    ; DATA XREF: sub_BC00+351
  14916.                                         ; sub_BC00+362
  14917. word_D16C:      dw 0                    ; DATA XREF: sub_BC00+358
  14918.                                         ; sub_BC00:loc_BF65
  14919.                 db    0
  14920.                 db    0
  14921. unk_D170:       db    0                 ; DATA XREF: sub_BC00+515
  14922. byte_D171:      db 0                    ; DATA XREF: sub_BC00+373
  14923. word_D172:      dw 0                    ; DATA XREF: sub_BC00+368
  14924.                                         ; sub_BC00+379
  14925. word_D174:      dw 0                    ; DATA XREF: sub_BC00+36F
  14926.                                         ; sub_BC00:loc_BF7C
  14927.                 db    0
  14928.                 db    0
  14929. unk_D178:       db    0                 ; DATA XREF: sub_BC00+51D
  14930. byte_D179:      db 0                    ; DATA XREF: sub_BC00+38A
  14931. word_D17A:      dw 0                    ; DATA XREF: sub_BC00+37F
  14932.                                         ; sub_BC00+390
  14933. word_D17C:      dw 0                    ; DATA XREF: sub_BC00+386
  14934.                                         ; sub_BC00:loc_BF93
  14935.                 db    0
  14936.                 db    0
  14937. word_D180:      dw 0                    ; DATA XREF: sub_A94F+31
  14938.                                         ; sub_BC00+535
  14939.                 db    0
  14940.                 db    0
  14941.                 db    0
  14942.                 db    0
  14943.                 db    0
  14944.                 db    0
  14945. byte_D188:      db 0                    ; DATA XREF: sub_BC00+30 sub_C1EF-55
  14946. byte_D189:      db 0                    ; DATA XREF: sub_C1EF-5C
  14947. word_D18A:      dw 0                    ; DATA XREF: sub_BC00+E5 sub_BC00+F5
  14948. word_D18C:      dw 0                    ; DATA XREF: sub_BC00+EC
  14949.                                         ; sub_BC00:loc_BCF8
  14950.                 db    0
  14951.                 db    0
  14952. byte_D190:      db 0                    ; DATA XREF: sub_BC00+37
  14953.                 db    0
  14954. word_D192:      dw 0                    ; DATA XREF: sub_BC00+FB
  14955.                                         ; sub_BC00+10B
  14956. word_D194:      dw 0                    ; DATA XREF: sub_BC00+102
  14957.                                         ; sub_BC00:loc_BD0E
  14958.                 db    0
  14959.                 db    0
  14960. byte_D198:      db 0                    ; DATA XREF: sub_BC00+3E
  14961.                 db    0
  14962. word_D19A:      dw 0                    ; DATA XREF: sub_BC00+111
  14963.                                         ; sub_BC00+121
  14964. word_D19C:      dw 0                    ; DATA XREF: sub_BC00+118
  14965.                                         ; sub_BC00:loc_BD24
  14966.                 db    0
  14967.                 db    0
  14968. byte_D1A0:      db 0                    ; DATA XREF: sub_BC00+45
  14969.                 db    0
  14970. word_D1A2:      dw 0                    ; DATA XREF: sub_BC00+127
  14971.                                         ; sub_BC00+137
  14972. word_D1A4:      dw 0                    ; DATA XREF: sub_BC00+12E
  14973.                                         ; sub_BC00:loc_BD3A
  14974.                 db    0
  14975.                 db    0
  14976. byte_D1A8:      db 0                    ; DATA XREF: sub_BC00+4C
  14977.                 db    0
  14978. word_D1AA:      dw 0                    ; DATA XREF: sub_BC00+13D
  14979.                                         ; sub_BC00+14D
  14980. word_D1AC:      dw 0                    ; DATA XREF: sub_BC00+144
  14981.                                         ; sub_BC00:loc_BD50
  14982.                 db    0
  14983.                 db    0
  14984. byte_D1B0:      db 0                    ; DATA XREF: sub_BC00+53
  14985.                 db    0
  14986. word_D1B2:      dw 0                    ; DATA XREF: sub_BC00+153
  14987.                                         ; sub_BC00+163
  14988. word_D1B4:      dw 0                    ; DATA XREF: sub_BC00+15A
  14989.                                         ; sub_BC00:loc_BD66
  14990.                 db    0
  14991.                 db    0
  14992. byte_D1B8:      db 0                    ; DATA XREF: sub_BC00+5A
  14993.                 db    0
  14994. word_D1BA:      dw 0                    ; DATA XREF: sub_BC00+169
  14995.                                         ; sub_BC00+179
  14996. word_D1BC:      dw 0                    ; DATA XREF: sub_BC00+170
  14997.                                         ; sub_BC00:loc_BD7C
  14998.                 db    0
  14999.                 db    0
  15000. ;block 0
  15001. word_D1C0:      dw 0                    ; DATA XREF: sub_BC00+65
  15002.                                         ; sub_BC00+18A
  15003. word_D1C2:      dw 0                    ; DATA XREF: sub_BC00+17F
  15004.                                         ; sub_BC00+190
  15005. word_D1C4:      dw 0                    ; DATA XREF: sub_BC00+186
  15006.                                         ; sub_BC00:loc_BD93
  15007.                 db    0
  15008.                 db    0
  15009. ;block 1
  15010. word_D1C8:      dw 0                    ; DATA XREF: sub_BC00+6D
  15011.                                         ; sub_BC00+1A1
  15012. word_D1CA:      dw 0                    ; DATA XREF: sub_BC00+196
  15013.                                         ; sub_BC00+1A7
  15014. word_D1CC:      dw 0                    ; DATA XREF: sub_BC00+19D
  15015.                                         ; sub_BC00:loc_BDAA
  15016.                 db    0
  15017.                 db    0
  15018. ;block 2
  15019. word_D1D0:      dw 0                    ; DATA XREF: sub_BC00+75
  15020.                                         ; sub_BC00+1B8
  15021. word_D1D2:      dw 0                    ; DATA XREF: sub_BC00+1AD
  15022.                                         ; sub_BC00+1BE
  15023. word_D1D4:      dw 0                    ; DATA XREF: sub_BC00+1B4
  15024.                                         ; sub_BC00:loc_BDC1
  15025.                 db    0
  15026.                 db    0
  15027. ;block 3
  15028. word_D1D8:      dw 0                    ; DATA XREF: sub_BC00+7D
  15029.                                         ; sub_BC00+1CF
  15030. word_D1DA:      dw 0                    ; DATA XREF: sub_BC00+1C4
  15031.                                         ; sub_BC00+1D5
  15032. word_D1DC:      dw 0                    ; DATA XREF: sub_BC00+1CB
  15033.                                         ; sub_BC00:loc_BDD8
  15034.                 db    0
  15035.                 db    0
  15036. ;block 4
  15037. word_D1E0:      dw 0                    ; DATA XREF: sub_BC00+85
  15038.                                         ; sub_BC00+1E6
  15039. word_D1E2:      dw 0                    ; DATA XREF: sub_BC00+1DB
  15040.                                         ; sub_BC00+1EC
  15041. word_D1E4:      dw 0                    ; DATA XREF: sub_BC00+1E2
  15042.                                         ; sub_BC00:loc_BDEF
  15043.                 db    0
  15044.                 db    0
  15045. ;block 5
  15046. word_D1E8:      dw 0                    ; DATA XREF: sub_BC00+8D
  15047.                                         ; sub_BC00+1FD
  15048. word_D1EA:      dw 0                    ; DATA XREF: sub_BC00+1F2
  15049.                                         ; sub_BC00+203
  15050. word_D1EC:      dw 0                    ; DATA XREF: sub_BC00+1F9
  15051.                                         ; sub_BC00:loc_BE06
  15052.                 db    0
  15053.                 db    0
  15054. ;block 6
  15055. word_D1F0:      dw 0                    ; DATA XREF: sub_BC00+95
  15056.                                         ; sub_BC00+214
  15057. word_D1F2:      dw 0                    ; DATA XREF: sub_BC00+209
  15058.                                         ; sub_BC00+21A
  15059. word_D1F4:      dw 0                    ; DATA XREF: sub_BC00+210
  15060.                                         ; sub_BC00:loc_BE1D
  15061.                 db    0
  15062.                 db    0
  15063. ;block 7
  15064. word_D1F8:      dw 0                    ; DATA XREF: sub_BC00+9D
  15065.                                         ; sub_BC00+22B
  15066. word_D1FA:      dw 0                    ; DATA XREF: sub_BC00+220
  15067.                                         ; sub_BC00+231
  15068. word_D1FC:      dw 0                    ; DATA XREF: sub_BC00+227
  15069.                                         ; sub_BC00:loc_BE34
  15070.                 db    0
  15071.                 db    0
  15072.  
  15073. array_D200:     db    0,   0,   0,   0,   0,   0,   0,   0 ; DATA XREF: InitBoard_ClearMoves+4
  15074.                                         ; InitBoard_ClearMoves+11       ...
  15075.                 ds 1                    ; still
  15076.                 ds 1                    ; array
  15077.                 ds 1                    ; D200
  15078. unk_D20B:       ds 1                    ; DATA XREF: sub_B34B+6
  15079.                                         ; FindMoveAndSwap:loc_B39E
  15080. byte_D20C:      ds 1                    ; DATA XREF: sub_8C20-B72 ;oldmove #?
  15081.                                         ; sub_8C20-535 ...
  15082. byte_D20D:      ds #E                   ; DATA XREF: sub_B2D1+3 ;sub_B2D1 копирует 14 координат полей с маской 0yyy0xxx из byte_D258 в byte_D20D
  15083.                                         ; array of 14 bytes
  15084.                 ds 1
  15085.                 ds 1
  15086.                 ds 1
  15087.                 ds 1
  15088.                 ds 1
  15089.                 ds 1
  15090.                 ds 1
  15091.                 ds 1
  15092.                 ds 1
  15093.                 ds 1
  15094.                 ds 1
  15095.                 ds 1
  15096.                 ds 1
  15097.                 ds 1
  15098. unk_D229:       ds 1                    ; DATA XREF: sub_8B66+1E
  15099.                 ds 1
  15100. unk_D22B:       ds 1                    ; DATA XREF: sub_8B66+1B
  15101.                 ds 1
  15102.                 ds 1
  15103.                 ds 1
  15104.                 ds 1
  15105.                 ds 1
  15106.                 ds 1
  15107.                 ds 1
  15108.                 ds 1
  15109.                 ds 1
  15110.                 ds 1
  15111.                 ds 1
  15112.                 ds 1
  15113.                 ds 1
  15114.                 ds 1
  15115.                 ds 1
  15116.                 ds 1
  15117.                 ds 1
  15118.                 ds 1
  15119.                 ds 1
  15120.                 ds 1
  15121. word_D240:      ds 2                    ; DATA XREF: sub_8C20-B28
  15122.                                         ; sub_8C20-6C2 ...
  15123.                 ds 1
  15124.                 ds 1
  15125.                 ds 1
  15126.                 ds 1
  15127.                 ds 1
  15128.                 ds 1
  15129.                 ds 1
  15130.                 ds 1
  15131.                 ds 1
  15132.                 ds 1
  15133.                 ds 1
  15134.                 ds 1
  15135.                 ds 1
  15136.                 ds 1
  15137.                 ds 1
  15138.                 ds 1
  15139.                 ds 1
  15140.                 ds 1
  15141.                 ds 1
  15142.                 ds 1
  15143.                 ds 1
  15144.                 ds 1
  15145. byte_D258:      ds 1                    ; DATA XREF: sub_A684+23 sub_B2D1 ...
  15146.                                         ; array of 14 bytes
  15147.                 ds 1
  15148. word_D25A:      ds 2                    ; DATA XREF: sub_8C20-B19
  15149.                                         ; sub_8C20-901 ...
  15150. byte_D25C:      ds #A                   ; DATA XREF: sub_B2E2
  15151.  
  15152.  
  15153.  
  15154.  
  15155.                 ds 0xD300-$
  15156.  
  15157. byte_D300:      ds 1                    ; DATA XREF: sub_8C20-541
  15158.                                         ; sub_8C20-1D1
  15159. byte_D301:      ds 1                    ; DATA XREF: sub_8C20-547
  15160.                                         ; sub_8C20-1CB
  15161. byte_D302:      ds 1                    ; DATA XREF: sub_8C20-53B
  15162.                                         ; sub_8C20-1BA
  15163. array_64bytes:  ds #40                  ; DATA XREF: sub_8C20-52F
  15164.                                         ; sub_8C20-1D4
  15165. stk_1bvalue:    ds 1                    ; DATA XREF: START_POINT+94
  15166.                                         ; sub_8C20-B6A ...
  15167.  
  15168.  
  15169.  
  15170.  
  15171.  
  15172.                 ds 0xD800-$
  15173.                 ;stack is upwards
  15174. RAM_END_D800:                           ; DATA XREF: START_POINT:loc_8067
  15175.                                         ; START_POINT+70 ...
  15176.                    
  15177.                 ds 0xD803-$
  15178. tbl_D803:                               ; DATA XREF: sub_8C20:loc_8365
  15179.                                         ; sub_8446 ...
  15180.                                         ; some 3byte structs, #FF -- end mark
  15181.                                         ; sized kilobyte or more
  15182.  
  15183.  
  15184.  
  15185.  
  15186.                 ds 0xF000-$
  15187. unk_F000:                               ; DATA XREF: sub_8446+3 sub_92A0 ...
  15188.                        
  15189.  
  15190.  
  15191.                 ds 0xF300-$
  15192.  
  15193.                 ds 1
  15194.  
  15195. BOARD:          ds #40                  ; DATA XREF: sub_8C20-976 ShowHintMove+E ...
  15196.                
  15197.                 ds 6
  15198.  
  15199. BOARD2:         ds #40                  ; DATA XREF: sub_8C20-979
  15200.                                         ; sub_8DE9+58   ...
  15201.                 ds 6
  15202.  
  15203. save_SP:        ds 2                    ; DATA XREF: START_POINT+33
  15204. save_HLtick:    ds 2                    ; DATA XREF: START_POINT+38
  15205. save_ERRSP:     ds 2                    ; DATA XREF: RAM:803E
  15206.  
  15207.  
  15208.  
  15209.  
  15210.                 ds 0xFEFF-$
  15211. INT_VEC:        ds 2
  15212.  
  15213.  
  15214.  
  15215.  
  15216.                 ;savebin "cyrus2_compilable.bin",#8000,#5000
  15217.                 ;labelslist "cyrus2_compilable.lab"
  15218.                 ;end
  15219.        if FIX
  15220.         savebin "cyrus960.com",begin,end-begin
  15221.        else
  15222.         savebin "cyrus2.com",begin,end-begin
  15223.        endif
  15224.         LABELSLIST "../../../us/user.l",1
  15225.