Subversion Repositories NedoOS

Rev

Rev 1597 | Blame | Compare with Previous | Last modification | View Log | Download

  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.         ld hl,0x5c00
  71.         ld de,0x5c01
  72.         ld bc,0xb6-1
  73.         ld (hl),0xff;l
  74.         ldir
  75.         ;ld a,0xff
  76.         ;ld (0x5c00),a
  77.         ;ld (0x5c04),a
  78.        
  79.         YIELDGETKEYLOOP
  80.        
  81.         ld de,pal
  82.         OS_SETPAL
  83.  
  84.         YIELD
  85.  
  86.  
  87.         ld hl,font
  88.         ld bc,0x300
  89. boldfont0
  90.         ld a,(hl)
  91.         rrca
  92.         or (hl)
  93.         ld (hl),a
  94.         cpi
  95.         jp pe,boldfont0
  96.  
  97.         call swapimer
  98.        
  99.         ld sp,0x8000
  100.         ld iy,23610
  101.         jp START_POINT
  102.  
  103. pal
  104. ;DDp palette: %grbG11RB(low),%grbG11RB(high), inverted
  105.         ;dw 0xffff,0xfefe,0xfdfd,0xfcfc,0xefef,0xeeee,0xeded,0xecec
  106.         ;dw 0xffff,0xdede,0xbdbd,0x9c9c,0x6f6f,0x4e4e,0x2d2d,0x0c0c
  107.         dw 0xffff,0xfefe,0xfdfd,0xfcfc,0x7d7d,0xeeee,0x8d8d,0x0c0c
  108.         dw 0xffff,0xdede,0xbdbd,0x9c9c,0x6f6f,0x4e4e,0x2d2d,0x0c0c
  109.  
  110. keymatrix
  111.         ds 8,0xff
  112.  
  113.         include "int.asm"
  114.         include "rst38.asm"
  115. rst10
  116.         push af
  117.         push bc
  118.         push de
  119.         push hl
  120.  
  121. rst10_phase=$+1
  122.         ld b,0 ;0=code, 1=X, 2=Y
  123.         djnz rst10_noATY
  124.         ld (rst10_y),a
  125.         ld a,2
  126.         ld (rst10_phase),a
  127.         jr rst10_q
  128. rst10_noATY
  129.         djnz rst10_noATX
  130.         ld (rst10_x),a
  131.         xor a
  132.         ld (rst10_phase),a
  133.         call rst10_countscr
  134.         jr rst10_q
  135. rst10_noATX
  136.  
  137.         cp 22 ;AT
  138.         jr z,rst10_AT
  139.              
  140. rst10_scr=$+1
  141.         ld de,0x4000
  142.              
  143.         ld l,a
  144.         ld h,0
  145.         add hl,hl
  146.         add hl,hl
  147.         add hl,hl
  148.         ld bc,font-256
  149.         add hl,bc
  150.         ld b,0
  151. prchar0
  152.         ld a,(hl)
  153.         ld (de),a
  154.         inc hl
  155.         inc d
  156.         djnz prchar0
  157.  
  158.         ld hl,rst10_scr
  159.         inc (hl)
  160.         ld hl,rst10_x
  161.         inc (hl)
  162.         ld a,(hl)
  163.         cp 32
  164.         jr nz,rst10_q
  165.         ld (hl),0
  166.         ld hl,rst10_y
  167.         inc (hl)
  168.         ld a,(hl)
  169.         cp 24
  170.         jr nz,$+4
  171.         ld (hl),0
  172.         call rst10_countscr
  173. rst10_q
  174.         pop hl
  175.         pop de
  176.         pop bc
  177.         pop af
  178.         ret
  179.        
  180. rst10_AT
  181.         ld a,1
  182.         ld (rst10_phase),a
  183.         jr rst10_q
  184.        
  185. rst10_countscr
  186. rst10_x=$+1
  187. rst10_y=$+2
  188.         ld bc,0
  189.         ld a,b ;a = Y = 0b000TTYYY
  190.         LD L,A
  191.         and 0b00011000
  192.         add a,0x40;screen/256
  193.         LD H,A
  194.         ld a,l
  195.         rrca
  196.         rrca
  197.         rrca
  198.         and 0b11100000
  199.         add a,c ;x
  200.         LD L,A
  201.         ld (rst10_scr),hl
  202.         ret
  203.  
  204.        if FIX
  205. RandomizeSetup
  206.         ld hl,starting_setup
  207.         ld de,starting_setup+1
  208.         ld bc,8-1
  209.         ld (hl),0
  210.         ldir
  211.  
  212.         call goodrnd
  213.         and 6
  214.         call RandomizeSetup_HLplaceA
  215.         ld (hl),_B
  216.         call goodrnd
  217.         and 6
  218.         inc a
  219.         call RandomizeSetup_HLplaceA
  220.         ld (hl),_B
  221.  
  222.         call goodrnd
  223.         add a,6
  224.         jr nc,$-2
  225. ;a=0..9
  226.         call RandomizeSetup_HLemptyplaceA
  227.         ld (hl),_Q
  228.  
  229.        if 1
  230. ;должны равновероятно выбираться 10 вариантов расстановки коней в 5 свободных клетках
  231.         call goodrnd
  232.         add a,10
  233.         jr nc,$-2
  234. ;a=0..9
  235.         add a,a
  236.         ld c,a
  237.         ld b,0
  238.         ld hl,knightsetups
  239.         add hl,bc
  240.         ex de,hl
  241.         ld a,(de)
  242.         inc de
  243.         call RandomizeSetup_HLemptyplaceA
  244.         ld (hl),_N
  245.         ld a,(de)
  246.         call RandomizeSetup_HLemptyplaceA
  247.         ld (hl),_N
  248.        else
  249. ;так распределение коней неравномерно
  250.         call goodrnd
  251.         and 3
  252.         call RandomizeSetup_HLemptyplaceA
  253.         ld (hl),_N
  254.         call goodrnd
  255.         and 3
  256.         call RandomizeSetup_HLemptyplaceA
  257.         ld (hl),_N
  258.        endif
  259.  
  260.         ld hl,starting_setup-1
  261.         call RandomizeSetup_findempty
  262.         ld (hl),_R
  263.        ld a,l
  264.        sub starting_setup&0xff
  265.        ld (leftrookinitpos),a
  266.         call RandomizeSetup_findempty
  267.         ld (hl),_K
  268.         call RandomizeSetup_findempty
  269.         ld (hl),_R
  270.        ld a,l
  271.        sub starting_setup&0xff
  272.        ld (rightrookinitpos),a
  273.         ret
  274.        
  275. RandomizeSetup_HLplaceA
  276.         ld c,a
  277.         ld b,0
  278.         ld hl,starting_setup
  279.         add hl,bc
  280.         ret
  281.  
  282. RandomizeSetup_findempty
  283. RandomizeSetup_findempty0
  284.         inc hl
  285.         ld a,(hl)
  286.         or a
  287.         jr nz,RandomizeSetup_findempty0
  288.         ret
  289.  
  290. RandomizeSetup_HLemptyplaceA
  291.         inc a
  292.         ld b,a
  293.         ld hl,starting_setup-1
  294. RandomizeSetup_HLemptyplaceA0
  295.         call RandomizeSetup_findempty
  296.         djnz RandomizeSetup_HLemptyplaceA0
  297.         ret
  298.        
  299. knightsetups
  300.         db 0,0
  301.         db 0,1
  302.         db 0,2
  303.         db 0,3
  304.         db 1,1
  305.         db 1,2
  306.         db 1,3
  307.         db 2,2
  308.         db 2,3
  309.         db 3,3
  310.  
  311. memorizernd
  312.         ld hl,(rndseed1)
  313.         ld (oldrndseed1),hl
  314.         ld hl,(rndseed2)
  315.         ld (oldrndseed2),hl
  316.         ret
  317.        
  318. setoldrnd
  319. oldrndseed1=$+1
  320.         ld hl,0
  321.         ld (rndseed1),hl
  322. oldrndseed2=$+1
  323.         ld hl,0
  324.         ld (rndseed2),hl
  325.         ret
  326.  
  327. goodrnd:
  328.         PUSH de
  329.         PUSH HL
  330. ;Patrik Rak
  331. rndseed1=$+1
  332.         ld  hl,0xA280   ; xz -> yw
  333. rndseed2=$+1
  334.         ld  de,0xC0DE   ; yw -> zt
  335.         ld  (rndseed1),de  ; x = y, z = w
  336.         ld  a,e         ; w = w ^ ( w << 3 )
  337.         add a,a
  338.         add a,a
  339.         add a,a
  340.         xor e
  341.         ld  e,a
  342.         ld  a,h         ; t = x ^ (x << 1)
  343.         add a,a
  344.         xor h
  345.         ld  d,a
  346.         rra             ; t = t ^ (t >> 1) ^ w
  347.         xor d
  348.         xor e
  349.         ld  h,l         ; y = z
  350.         ld  l,a         ; w = t
  351.         ld  (rndseed2),hl
  352.         ld b,a
  353.         POP HL
  354.         POP de
  355.         ret ;b=rnd
  356.  
  357.        endif
  358.  
  359. font
  360.         incbin "font.bin"
  361.  
  362. scr
  363.         incbin "CyrusII.scr"
  364.  
  365.                 ds 0x637c-$
  366.                
  367. unk_637C:       ds 1                    ; DATA XREF: sub_A262+4
  368. txt_buf_6:      ds 6                    ; DATA XREF: sub_9FB2+33
  369.                 ds 3
  370. buf_10bytes:    ds 10                   ; DATA XREF: sub_8977   sub_8977+17 ... ;сюда пишется название хода
  371.                 ds 1
  372. CLK_1:          ds 8                    ; DATA XREF: sub_9018+15
  373.                                         ; INIT_PRINT_CLOCKS+3   ...
  374. CLK_2:          ds 8                    ; DATA XREF: sub_9018+1D
  375.                                         ; INIT_PRINT_CLOCKS+E   ...
  376. TAPE_header:    ds 17                   ; DATA XREF: sub_8EA7+7 sub_8EFB ...
  377.                 ds 3
  378. byte_63B5:      ds 1                    ; DATA XREF: sub_8C20+19F9
  379. byte_63B6:      ds 9                    ; DATA XREF: sub_8C20+1A09
  380.                                         ; sub_8C20+1A14 ...
  381. unk_63BF:       ds 65                   ; DATA XREF: sub_8C20+1A0F
  382.  
  383.  
  384.  
  385.                 ds 0x6400-$
  386. SCR_BUF_6400:   ds      #1b00           ; up to 7EFF
  387.  
  388.                 ; 7F00..7FFF free
  389.  
  390.  
  391.  
  392.  
  393.  
  394.                 ds 0x8000-$
  395. START_POINT:
  396.  
  397. ; FUNCTION CHUNK AT 8067 SIZE 00000033 BYTES
  398.  
  399.                 jr      loc_8032
  400.  
  401. ; ---------------------------------------------------------------------------
  402. aCopyright1986I:db      'COPYRIGHT (1986) INTELLIGENT CHESS SOFTWARE LTD.'
  403. ; ---------------------------------------------------------------------------
  404.  
  405. loc_8032:
  406.                 di
  407.                 ld      (save_SP), sp
  408.                 exx
  409.                 ld      (save_HLtick), hl
  410.  
  411.                 ld      hl, (bas_ERRSP)
  412.                 ld      (save_ERRSP), hl
  413.                if !FIX
  414.                 ld      hl, INT_VEC
  415.                 ld      (hl), INT_PROC&255
  416.                 inc     hl
  417.                 ld      (hl), INT_PROC/256
  418.                 ld      a, INT_VEC/256
  419.                 ds 2 ;ld        i, a
  420.                 ds 2 ;im        2
  421.                endif
  422.                 jp      loc_8067
  423.  
  424.  
  425. ; =============== S U B R O U T I N E =======================================
  426.  
  427.  
  428. INT_PROC:                               ; DATA XREF: RAM:8044   RAM:8047
  429.                 push    af
  430.                 push    hl
  431.                 push    iy
  432.                 ld      hl, DECREMENT_50HZ
  433.                 dec     (hl)
  434.                 ld      iy, bas_5C3A
  435.                 call    L0038;ROM_START+#38
  436.  
  437.                 pop     iy
  438.                 pop     hl
  439.                 pop     af
  440.                 ei
  441.                 ret
  442.  
  443. ; End of function INT_PROC
  444.  
  445. ; ---------------------------------------------------------------------------
  446. ; START OF FUNCTION CHUNK FOR START_POINT
  447.  
  448. loc_8067:                               ; CODE XREF: RAM:804F
  449.                 ld      sp, RAM_END_D800
  450.                 di
  451.                 ld      hl, BRD_88_0
  452.                 ld      b, 0
  453.                 ld      a, RAM_END_D800/256
  454.  
  455.  
  456. loc_8072:                               ; CODE XREF: START_POINT+75
  457.                 ld      (hl), b
  458.                 inc     hl
  459.                 cp      h
  460.                 jp      nz, loc_8072
  461.  
  462.                 res     bit_NEW_KEY, (iy+off_FLAGS)     ; clear keypressed bit
  463.                 res     bit_CAPS_LOCK, (iy+#30) ; CAPS LOCK off
  464.                 xor     a
  465.                 ld      (SEL_SCRorBUF), a
  466.                 call    CLR_SCR_OR_BUF
  467.  
  468.                 call    CLR_BOARD ;??? потом ещё раз
  469.  
  470.                 call    PRT_DETECT
  471.  
  472.                 ld      a, 1
  473.                 ld      (curlevel), a
  474.                 ld      a, #FF
  475.                 ld      (stk_1bvalue), a
  476.                 ld      (byte_D0F0), a
  477.  
  478. ; END OF FUNCTION CHUNK FOR START_POINT
  479. ; START OF FUNCTION CHUNK FOR sub_92D7
  480.  
  481. loc_809A:                               ; CODE XREF: sub_92D7+35
  482.                 xor     a
  483.                 ld      (byte_D0B4), a ;visible board?
  484.                 call    sub_9EE6 ;print Cyrus II, level, space to see board
  485.  
  486. ; END OF FUNCTION CHUNK FOR sub_92D7
  487. ; START OF FUNCTION CHUNK FOR sub_8C20
  488.  
  489. NEW_GAME:                               ; CODE XREF: sub_8C20-3
  490.         if FIX
  491.          call memorizernd
  492.         endif
  493.                 call    sub_96A6
  494.  
  495.                 call    CLR_BOARD
  496.  
  497.                 call    INIT_PRINT_CLOCKS
  498.  
  499.                 call    BEEP_start
  500.  
  501.                 ei
  502.                 ld      a, (byte_D20C) ;oldmove #?
  503.                 dec     a
  504.                 jr      z, loc_80B9
  505.  
  506.                 ld      a, #FF
  507.                 ld      (stk_1bvalue), a
  508.  
  509.  
  510. loc_80B9:                               ; CODE XREF: sub_8C20-B6E
  511.                 xor     a
  512.                 ld      (byte_D0B3), a ;d3=swap board
  513.                 inc     a
  514.                 ld      (byte_D049), a ;move # ;бесполезно - 875B тоже туда пишет
  515.                 scf
  516.                 call    sub_A915
  517.  
  518.                 ld      hl, 0
  519.                 ld      (word_D09F), hl
  520.  
  521.  
  522. loc_80CB:                               ; CODE XREF: sub_8C20-1DA
  523.                 call    InitBoard_ClearMoves
  524.  
  525.  
  526. loc_80CE:                               ; CODE XREF: sub_8C20-511
  527.                                         ; sub_8C20-186
  528.                 call    sub_A262
  529.  
  530.                 ld      a, (CFG_BITS)
  531.                 and     #30
  532.                 jr      z, loc_80F5
  533.  
  534.                 call    sub_A43C
  535.  
  536.                 ld      b,#1E
  537.  
  538.  
  539. loc_80DD:                               ; CODE XREF: sub_8C20-B3C
  540.                 push    bc
  541.                 ld      a,#3D
  542.                 call    loc_A476
  543.  
  544.                 pop     bc
  545.                 djnz    loc_80DD
  546.  
  547.                 call    sub_A43C
  548.  
  549.                 ld      a, (byte_D049) ;move #
  550.                 dec     a
  551.                 jr      z, loc_80F5 ;first move
  552.  
  553.                 call    sub_939F
  554.  
  555.                 call    sub_94C4
  556.  
  557.  
  558. loc_80F5:                               ; CODE XREF: sub_8C20-B4A
  559.                                         ; sub_8C20-B33
  560.                 ld      hl, #F7F7
  561.                 ld      (word_D240), hl
  562.                 xor     a
  563.                 ld      (byte_D04D), a
  564.                 ld      l, a
  565.                 ld      h, a
  566.                 ld      (word_D0F7), hl
  567.  
  568.  
  569. loc_8104:                               ; CODE XREF: sub_8C20-507
  570.                                         ; sub_8C20-BD
  571.                 ld      hl, 0
  572.                 ld      (word_D25A), hl
  573.  
  574.  
  575. loc_810A:                               ; CODE XREF: sub_8C20:loc_82E8
  576.                                         ; sub_8C20-852 ...
  577.                 ld      hl,  word_D240+1
  578.                 call    sub_B976
  579.  
  580.                 jr      c, loc_811C
  581.  
  582.                 bit     3, (hl)
  583.                 jp      nz, loc_8B9B
  584.  
  585.                 ld      hl,  word_D240+1
  586.                 set     3, (hl)
  587.  
  588.  
  589. loc_811C:                               ; CODE XREF: sub_8C20-B10
  590.                 ld      hl, (word_D09F)
  591.                 ld      a, l
  592.                 or      h
  593.                 jp      nz, loc_8AE8
  594.  
  595.                 ld      hl, CFG_BITS
  596.                 res     5, (hl)
  597.                 call    PrintMoveNumber
  598.  
  599.                 call    UnDrawMoveAndCursors
  600.  
  601.                 call    sub_954C
  602.  
  603.                 ld      hl, byte_D0B4
  604.                 bit     5, (hl)
  605.                 jr      nz, loc_8142 ;invisible board?
  606.  
  607.                 ld      sp, RAM_END_D800
  608.                 call    sub_8C2D
  609.  
  610.                 call    sub_93A4
  611.  
  612.  
  613. loc_8142:                               ; CODE XREF: sub_8C20-AE9
  614.                 ld      a, (byte_D00A)
  615.                 cp      100
  616.                 jp      nc, loc_8B9B
  617.  
  618.                 ld      a, (byte_D02D)
  619.                 or      #80
  620.                 ld      (byte_D0BF), a
  621.                 rra
  622.                 ld      a, (byte_D0B2)
  623.                 jr      nc, loc_815E
  624.  
  625.                 or      a
  626.                 jr      z, loc_8162
  627.  
  628.                 jp      loc_82EB
  629.  
  630. ; ---------------------------------------------------------------------------
  631.  
  632. loc_815E:                               ; CODE XREF: sub_8C20-ACA
  633.                 or      a
  634.                 jp      z, loc_82EB
  635.  
  636.  
  637. loc_8162:                               ; CODE XREF: sub_8C20-AC7
  638.                 ld      a, #BE
  639.                 ld      (byte_D0E3), a
  640.                 ld      (byte_D0F3), a
  641.                 ld      hl, 0
  642.                 ld      (INC_SECONDS), hl
  643.                 ld      (word_D02B), hl
  644.                 xor     a
  645.                 ld      (bas_5C78), a
  646.                 ld      (byte_D0DF), a
  647.                 ld      hl, byte_D0B4
  648.                 bit     0, (hl)
  649.                 jp      nz, loc_8CE9 ;move?
  650.  
  651.                 ld      a, (hl)
  652.                 or      #40
  653.                 and     #6F
  654.                 ld      (hl), a
  655.                 bit     5, a
  656.                 jr      z, loc_818F
  657.                 call    DrawMoveAndCursors
  658. loc_818F:                               ; CODE XREF: sub_8C20-A96
  659.                 call    sub_9F0D ;show state and help
  660.  
  661.                 ld      ix, word_D059
  662.                 call    sub_A903
  663.  
  664.                 call    sub_A90F
  665.  
  666.                 jr      nz, loc_81A1
  667.  
  668.                 scf
  669.                 jr      loc_81B7
  670.  
  671. ; ---------------------------------------------------------------------------
  672.  
  673. loc_81A1:                               ; CODE XREF: sub_8C20-A84
  674.                 ld      hl, byte_D0B6
  675.                 res     2, (hl)
  676.                 call    sub_A900
  677.  
  678.                 push    af
  679.  
  680.  
  681. loc_81AA:                               ; CODE XREF: sub_8C20-A6C
  682.                 ld      hl, byte_D0DF
  683.                 bit     0, (hl)
  684.                 jr      z, loc_81B6
  685.  
  686.                 call    sub_8F4D
  687.  
  688.                 jr      loc_81AA
  689.  
  690. ; ---------------------------------------------------------------------------
  691.  
  692. loc_81B6:                               ; CODE XREF: sub_8C20-A71
  693.                 pop     af
  694.  
  695.  
  696. loc_81B7:                               ; CODE XREF: sub_8C20-A81
  697.                 ex      af, af' ;'
  698.                 ld      hl, 0
  699.                 ld      (word_D09F), hl
  700.                 ld      hl, byte_D0B4
  701.                 ld      a, (hl)
  702.                 ld      b, a
  703.                 and     #9F
  704.                 ld      (hl), a
  705.                 bit     5, b
  706.                 jp      nz, loc_8520 ;invisible board?
  707.  
  708.                 ex      af, af' ;'
  709.                 jp      c, loc_8B8D
  710.  
  711.                 call    BEEP_move
  712.  
  713.                 ld      a, (byte_D09E)
  714.                 or      a
  715.                 jr      z, loc_81E0
  716. ;end of opening?
  717.                 ld      a, (byte_D0B6)
  718.                 bit     2, a
  719.                 call    nz, sub_A684
  720.  
  721.  
  722. loc_81E0:                               ; CODE XREF: sub_8C20-A4A
  723.                                         ; sub_8C20-8BE
  724.                 ld      h, (ix+0)
  725.                 res     7, h
  726.                 ld      l, (ix+1)
  727.                 res     7, l
  728.                 push    hl
  729.                 ld      ix, word_D059
  730.                 call    sub_A903
  731.  
  732.                 ld      ix, RAM_END_D800
  733.                 ld      bc, 3
  734.                 pop     hl
  735.  
  736.  
  737. loc_81FA:                               ; CODE XREF: sub_8C20-A20
  738.                                         ; sub_8C20-A1A
  739.                 add     ix, bc
  740.                 ld      a, (ix+0)
  741.                 cp      h
  742.                 jr      nz, loc_81FA
  743.  
  744.                 ld      a, (ix+1)
  745.                 cp      l
  746.                 jr      nz, loc_81FA
  747.  
  748.                 ld      a, (ix+0)
  749.                 ld      (byte_D0C4), a
  750.                 call    sub_9FF5
  751.  
  752.                 ld      (byte_D0C2), a
  753.                 ld      a, (ix+1)
  754.                 ld      (byte_D0C5), a
  755.                 call    sub_9FF5
  756.  
  757.                 ld      (byte_D0C3), a
  758.                 call    sub_A906
  759.  
  760.                 call    sub_BC00
  761.  
  762.  
  763. loc_8226:                               ; CODE XREF: sub_8C20-703
  764.                 call    sub_939F
  765.  
  766.                 push    ix
  767.                 pop     hl
  768.                 ld      bc, RAM_END_D800
  769.                 xor     a
  770.                 ld      e, a
  771.                 sbc     hl, bc
  772.                 ld      bc, 3
  773.  
  774.  
  775. loc_8236:                               ; CODE XREF: sub_8C20-9E7
  776.                 inc     e
  777.                 sbc     hl, bc
  778.                 jr      nz, loc_8236
  779.  
  780.                 dec     e
  781.                 ld      hl, (word_D0F7)
  782.                 inc     hl
  783.                 ld      (word_D0F7), hl
  784.                 ld      a, (ix+2)
  785.                 and     #80 ; '?'
  786.                 or      e
  787.                 ld      hl, (ptr_stk_1bvalue)
  788.                 ld      (hl), a
  789.                 inc     hl
  790.                 ld      (ptr_stk_1bvalue), hl
  791.                 ld      (hl), #FF
  792.  
  793.  
  794. loc_8253:                               ; CODE XREF: sub_8C20-E5
  795.                 ld      hl, byte_D00A
  796.                 ld      a, (hl)
  797.                 ld      (byte_D029), a
  798.                 inc     (hl)
  799.                 pop     af
  800.                 push    af
  801.                 jp      po, loc_8279
  802.  
  803.                 push    hl
  804.                 ld      l, (ix+1)
  805.                 ld      h, #D0  ; 'Р'
  806.                 ld      l, (hl)
  807.                 res     2, l
  808.                 inc     l
  809.                 inc     h
  810.                 ld      e, (hl)
  811.                 ld      hl, (ptr_stk_1bvalue)
  812.                 ld      (hl), e
  813.                 inc     hl
  814.                 ld      (ptr_stk_1bvalue), hl
  815.                 ld      (hl), #FF
  816.                 pop     hl
  817.                 jr      loc_8281
  818.  
  819. ; ---------------------------------------------------------------------------
  820.  
  821. loc_8279:                               ; CODE XREF: sub_8C20-9C3
  822.                 jp      p, loc_8281
  823.  
  824.                 and     #F
  825.                 dec     a
  826.                 jr      nz, loc_8283
  827.  
  828.  
  829. loc_8281:                               ; CODE XREF: sub_8C20-9A9
  830.                                         ; sub_8C20:loc_8279
  831.                 xor     a
  832.                 ld      (hl), a
  833.  
  834.  
  835. loc_8283:                               ; CODE XREF: sub_8C20-9A1
  836.                                         ; sub_8C20-CB
  837.                 call    sub_8977 ;вывод хода в buf_10bytes
  838.  
  839.                 call    sub_8B66
  840.  
  841.                 ld      hl, (word_D09F)
  842.                 ld      a, h
  843.                 or      l
  844.                 jr      nz, loc_82B2
  845.  
  846.                 ld      hl, byte_D0B4
  847.                 bit     5, (hl)
  848.                 jr      nz, loc_82B2 ;invisible board?
  849.  
  850.                 call    sub_8D9E
  851.  
  852. loc_829A:                               ; CODE XREF: sub_8C20-97E
  853.                 call    sub_8F4D
  854.  
  855.                 ld      hl, byte_D0DF
  856.                 bit     0, (hl)
  857.                 jr      nz, loc_829A
  858.  
  859.                 call    ShowBOARD2
  860.  
  861.                 ld      hl, BOARD2
  862.                 ld      de, BOARD
  863.                 ld      bc,#40  ; '@'
  864.                 ldir
  865.  
  866.  
  867. loc_82B2:                               ; CODE XREF: sub_8C20-992
  868.                                         ; sub_8C20-98B
  869.                 ld      hl, (word_D09F)
  870.                 ld      de, (word_D0F7)
  871.                 sbc     hl, de
  872.                 jr      c, loc_82CD
  873.  
  874.                 ld      a, (CFG_BITS)
  875.                 bit     5, a
  876.                 jr      nz, loc_82CD
  877.  
  878.                 ld      a, h
  879.                 or      a
  880.                 jr      nz, loc_82D7
  881.  
  882.                 ld      a, l
  883.                 cp      9
  884.                 jr      nc, loc_82D7
  885.  
  886.  
  887. loc_82CD:                               ; CODE XREF: sub_8C20-965
  888.                                         ; sub_8C20-95E
  889.                 ld      hl, byte_D0B4
  890.                 bit     5, (hl)
  891.                 jr      nz, loc_82D7 ;invisible board?
  892.                 call    sub_9FB2 ;добавление хода на экране со скроллом?
  893. loc_82D7:                               ; CODE XREF: sub_8C20-95A
  894.                                         ; sub_8C20-955 ...
  895.                 ld      hl, byte_D02D
  896.                 ld      a, (hl)
  897.                 xor     1
  898.                 ld      (hl), a
  899.                 ld      (byte_D0BF), a
  900.                 rra
  901.                 jr      nc, loc_82E8
  902.  
  903.                 ld      hl, byte_D049 ;move #
  904.                 inc     (hl)
  905.  
  906. loc_82E8:                               ; CODE XREF: sub_8C20-93E
  907.                 jp      loc_810A
  908.  
  909. ; ---------------------------------------------------------------------------
  910.  
  911. loc_82EB:                               ; CODE XREF: sub_8C20-AC5
  912.                                         ; sub_8C20-AC1 ...
  913.                 ld      hl, byte_D0B4
  914.                 ld      a, (hl)
  915.                 bit     1, a
  916.                 jr      z, loc_82F9
  917.  
  918.                 call    sub_A6E4
  919.  
  920.                 jp      loc_8CE9 ;move?
  921.  
  922. ; ---------------------------------------------------------------------------
  923.  
  924. loc_82F9:                               ; CODE XREF: sub_8C20-92F
  925.                 and     #9F ; '?'
  926.                 ld      (hl), a
  927.                 ld      ix, word_D059
  928.                 call    sub_A903
  929.  
  930.                 call    sub_A90F
  931.  
  932.                 jp      z, loc_8B8D
  933.  
  934.                 call    sub_8446
  935.  
  936.                 xor     a
  937.                 ld      hl, 0
  938.                 ld      (INC_SECONDS), hl
  939.                 ld      a, (byte_D09E)
  940.                 or      a
  941.                 jr      z, loc_8365
  942. ;end of opening?
  943.                 ld      a, (byte_D0B4)
  944.                 rra
  945.                 jr      c, loc_8365
  946.  
  947.                 ld      hl, (word_D25A)
  948.                 res     7, l
  949.                 ld      d, l
  950.                 res     7, h
  951.                 ld      e, h
  952.                 ld      hl, RAM_END_D800
  953.                 call    _FindMove_D_E
  954.  
  955.                 jr      c, loc_8365
  956.  
  957.                 push    hl
  958.                 pop     ix
  959.                 call    sub_A906
  960.  
  961.                 call    sub_939F
  962.  
  963.                 ld      hl, byte_D0B4
  964.                 set     5, (hl) ;invisible board?
  965.                 ld      a, (byte_D02D)
  966.                 ld      hl, byte_D0B3 ;d3=swap board
  967.                 res     1, (hl)
  968.                 rra ;???
  969.                 jr      z, loc_834B ;???
  970.                 set     1, (hl)
  971. loc_834B:                               ; CODE XREF: sub_8C20-8D9
  972.                 ld      h, (ix+0)
  973.                 ld      l, (ix+1)
  974.                 ld      (word_D0DA), hl
  975.                 pop     af
  976.                 push    af
  977.                 ld      a, 1
  978.                 jp      po, loc_835C ;???
  979.                 dec     a
  980. loc_835C:                               ; CODE XREF: sub_8C20-8C8
  981.                 ld      (byte_D0DC), a
  982.                 call    sub_A909
  983.  
  984.                 jp      loc_81E0
  985.  
  986. ; ---------------------------------------------------------------------------
  987.  
  988. loc_8365:                               ; CODE XREF: sub_8C20-909
  989.                                         ; sub_8C20-903 ...
  990.                 ld      hl, (tbl_D803)
  991.                 ld      (word_D25A), hl
  992.                 ld      hl, (word_D059)
  993.                 ld      (word_D05C), hl
  994.                 ld      ix, word_D059
  995.                 call    sub_A903
  996.  
  997. loc_8378:                               ; CODE XREF: sub_8C20-216
  998.                 call    sub_9F0D ;show state and help
  999.  
  1000.                 ld      b, 0
  1001.                 ld      a, (byte_D02D)
  1002.                 rra
  1003.                 jr      nc, loc_8385
  1004.                 ld      b,#70
  1005. loc_8385:                               ; CODE XREF: sub_8C20-89F
  1006.                 ld      a, b
  1007.                 ld      (needdrawcursor1), a
  1008.                 ld      a, #FF
  1009.                 ld      (needdrawcursorfrom), a
  1010.                 ld      (byte_D0CD), a
  1011.                 call    DrawMoveAndCursors
  1012.  
  1013. loc_8394:                               ; CODE XREF: sub_8C20-83A
  1014.                                         ; sub_8C20-82D ...
  1015.                 ld      hl, byte_D0DF
  1016.                 ld      a, 2
  1017.                 ld      (hl), a
  1018.                 xor     a
  1019.                 ld      (keycodeformenu), a
  1020. loc_839E:                               ; CODE XREF: sub_8C20-87A
  1021.                                         ; sub_8C20-86E
  1022.                 call    sub_8F4D
  1023. loc_83A1:                               ; CODE XREF: sub_8C20-68E
  1024.                 ld      hl, byte_D0DF
  1025.                 bit     0, (hl)
  1026.                 jr      nz, loc_839E
  1027.  
  1028.                 bit     4, (hl)
  1029.                 jp      nz, loc_845D
  1030.  
  1031.                 ld      hl, keycodeformenu
  1032.                 ld      a, (hl)
  1033.                 or      a
  1034.                 jr      z, loc_839E
  1035.  
  1036.                 ld      (hl), 0
  1037.                 cp      'C'
  1038.                 jp      z, loc_A4F4
  1039.  
  1040.                 cp      'P'
  1041.                 jp      z, loc_A29F
  1042.  
  1043.                 cp      'I'
  1044.                 jr      nz, loc_83D1
  1045.  
  1046.                 call    UnDrawMoveAndCursors
  1047.  
  1048.                 ld      hl, byte_D0B3
  1049.                 ld      a, (hl)
  1050.                 xor     8
  1051.                 ld      (hl), a ;d3=swap board
  1052.                 jp      loc_810A
  1053.  
  1054. ; ---------------------------------------------------------------------------
  1055.  
  1056. loc_83D1:                               ; CODE XREF: sub_8C20-85E
  1057.                 call    ChangeLevel_ifL
  1058.  
  1059.                 jr      nc, loc_83E8
  1060.  
  1061.                 cp      #48 ; 'H'
  1062.                 jr      nz, loc_83F6
  1063.  
  1064.                 call    UnDrawMoveAndCursors
  1065.  
  1066.                 ld      hl, (word_D25A)
  1067.                 call    ShowHintMove
  1068.  
  1069.                 call    DrawMoveAndCursors
  1070.  
  1071.                 jr      loc_8394
  1072.  
  1073. ; ---------------------------------------------------------------------------
  1074.  
  1075. loc_83E8:                               ; CODE XREF: sub_8C20-84C
  1076.                 call    BEEP_start
  1077.  
  1078.                 ld      a, (byte_D02D)
  1079.                 or      #80
  1080.                 ld      (byte_D0BF), a
  1081.                 jp      loc_8394
  1082.  
  1083. ; ---------------------------------------------------------------------------
  1084.  
  1085. loc_83F6:                               ; CODE XREF: sub_8C20-848
  1086.                 push    af
  1087.                 call    sub_A6E4
  1088.  
  1089.                 pop     af
  1090.                 cp      #41 ; 'A' - analysis
  1091.                 jp      z, loc_841F
  1092.  
  1093.                 cp      #4D ; 'M' - move
  1094.                 jp      z, loc_8CDA
  1095.  
  1096.                 cp      #44 ; 'D' - demo
  1097.                 jp      z, loc_8CD5
  1098.  
  1099.                 cp      #42 ; 'B' - back
  1100.                 jp      z, loc_8443
  1101.  
  1102.                 cp      #46 ; 'F' - forward
  1103.                 jp      z, loc_8A9D
  1104.  
  1105.                 cp      #53 ; 'S' - set position
  1106.                 jp      z, loc_8595
  1107.  
  1108.  
  1109. loc_8419:                               ; CODE XREF: sub_8C20-7AF
  1110.                 call    BEEP_3
  1111.  
  1112.                 jp      loc_8394
  1113.  
  1114. ; ---------------------------------------------------------------------------
  1115.  
  1116. loc_841F:                               ; CODE XREF: sub_8C20-823
  1117. ;'A' - analysis
  1118.                 ld      hl, loc_8394
  1119.                 push    hl
  1120.                 ld      hl, byte_D0B6
  1121.                 ld      a, (hl)
  1122.                 xor     1
  1123.                 and     1
  1124.                 ld      (hl), a
  1125.  
  1126. ; END OF FUNCTION CHUNK FOR sub_8C20
  1127.  
  1128. ; =============== S U B R O U T I N E =======================================
  1129.  
  1130.  
  1131. sub_842C:                               ; CODE XREF: sub_9F0D
  1132.                 ld      hl, byte_D0B6
  1133.                 ld      a, (hl)
  1134.                 or      a
  1135.                 ld      hl, #D00
  1136.                 ld      (scr_XY), hl
  1137.                 ld      hl, a_8spaces   ; "       "
  1138.                 jr      z, loc_843F
  1139.  
  1140.                 ld      hl, aAnalysis   ; "ANALYSI"
  1141.  
  1142.  
  1143. loc_843F:                               ; CODE XREF: sub_842C+E
  1144.                 call    PRINT_STR_FF
  1145.  
  1146.                 ret
  1147.  
  1148. ; End of function sub_842C
  1149.  
  1150. ; ---------------------------------------------------------------------------
  1151. ; START OF FUNCTION CHUNK FOR sub_8C20
  1152.  
  1153. loc_8443:                               ; CODE XREF: sub_8C20-814
  1154. ;'B' - back
  1155.                 jp      loc_8A0D
  1156.  
  1157. ; END OF FUNCTION CHUNK FOR sub_8C20
  1158.  
  1159. ; =============== S U B R O U T I N E =======================================
  1160.  
  1161.  
  1162. sub_8446:                               ; CODE XREF: sub_8C20-917
  1163.                 ld      hl, tbl_D803
  1164.                 ld      de, unk_F000
  1165.  
  1166.  
  1167. loc_844C:                               ; CODE XREF: sub_8446+13
  1168.                 ld      a, (hl)
  1169.                 cp      #FF
  1170.                 jr      z, loc_845B
  1171.  
  1172.                 ld      b, 3
  1173.  
  1174.  
  1175. loc_8453:                               ; CODE XREF: sub_8446+11
  1176.                 ld      a, (hl)
  1177.                 ld      (de), a
  1178.                 inc     hl
  1179.                 inc     de
  1180.                 djnz    loc_8453
  1181.  
  1182.                 jr      loc_844C
  1183.  
  1184. ; ---------------------------------------------------------------------------
  1185.  
  1186. loc_845B:                               ; CODE XREF: sub_8446+9
  1187.                 ld      (de), a
  1188.                 ret
  1189.  
  1190. ; End of function sub_8446
  1191.  
  1192. ; ---------------------------------------------------------------------------
  1193. ; START OF FUNCTION CHUNK FOR sub_8C20
  1194.  
  1195. loc_845D:                               ; CODE XREF: sub_8C20-876
  1196.                 call    sub_8C2D
  1197.  
  1198.                 ld      a, (needdrawcursorfrom)
  1199.                 ld      b, a
  1200.                 ld      a, (needdrawcursor1)
  1201.                 ld      c, a
  1202.                 ld      hl, RAM_END_D800
  1203.  
  1204.  
  1205. loc_846B:                               ; CODE XREF: sub_8C20-7AB
  1206.                                         ; sub_8C20-7A5
  1207.                 inc     hl
  1208.                 inc     hl
  1209.                 inc     hl
  1210.                 ld      a, (hl)
  1211.                 cp      #FF
  1212.                 jp      z, loc_8419
  1213.  
  1214.                 cp      b
  1215.                 jr      nz, loc_846B
  1216.  
  1217.                 inc     hl
  1218.                 ld      a, (hl)
  1219.                 dec     hl
  1220.                 cp      c
  1221.                 jr      nz, loc_846B
  1222.  
  1223.                 push    hl
  1224.                 call    sub_A6E4
  1225.  
  1226.                 call    UnDrawMoveAndCursors
  1227.  
  1228.                 call    BEEP_move
  1229.  
  1230.                 pop     ix
  1231.                 ld      a, (ix+0)
  1232.                 ld      (byte_D0C4), a
  1233.                 call    sub_9FF5
  1234.  
  1235.                 ld      (byte_D0C2), a
  1236.                 ld      a, (ix+1)
  1237.                 ld      (byte_D0C5), a
  1238.                 call    sub_9FF5
  1239.  
  1240.                 ld      (byte_D0C3), a
  1241.                 call    sub_A906
  1242.  
  1243.                 call    sub_BC00
  1244.  
  1245.                 pop     af
  1246.                 push    af
  1247.                 jp      po, loc_8515
  1248.  
  1249.                 ld      hl, byte_D0DF
  1250.                 bit     7, (hl)
  1251.                 res     7, (hl)
  1252.                 ld      a, (byte_D0DC)
  1253.                 jp      nz, loc_84DF
  1254.  
  1255.                 ld      (hl), 8
  1256.                 xor     a
  1257.                 ld      (keycodeformenu), a
  1258.  
  1259.  
  1260. loc_84BF:                               ; CODE XREF: sub_8C20-743
  1261.                 call    sub_93A4
  1262.  
  1263.                 ld      a,#14
  1264.                 call    halt_A_frames
  1265.  
  1266.                 call    sub_8F4D
  1267.  
  1268.                 jr      nz, loc_84DF
  1269.  
  1270.                 call    sub_A909
  1271.  
  1272.                 call    sub_93A4
  1273.  
  1274.                 call    sub_A906
  1275.  
  1276.                 ld      a,#14
  1277.                 call    halt_A_frames
  1278.  
  1279.                 call    sub_8F4D
  1280.  
  1281.                 jr      z, loc_84BF
  1282.  
  1283.  
  1284. loc_84DF:                               ; CODE XREF: sub_8C20-76A
  1285.                                         ; sub_8C20-756
  1286.                 ld      (byte_D0DC), a
  1287.                 call    sub_A909
  1288.  
  1289.                 call    sub_93A4
  1290.  
  1291.                 call    sub_A906
  1292.  
  1293.                 ld      a, (byte_D0DC)
  1294.                 ld      b, 5
  1295.                 cp      #52 ; 'R'
  1296.                 jr      z, loc_8500
  1297.  
  1298.                 ld      b, 3
  1299.                 cp      #4E ; 'N'
  1300.                 jr      z, loc_8500
  1301.  
  1302.                 ld      b,#83 ; '?'
  1303.                 cp      #42 ; 'B'
  1304.                 jr      nz, loc_8512
  1305.  
  1306.  
  1307. loc_8500:                               ; CODE XREF: sub_8C20-72E
  1308.                                         ; sub_8C20-728
  1309.                 ld      l, (ix+1)
  1310.                 ld      h, BRD_88_0/256
  1311.                 ld      l, (hl)
  1312.                 res     2, l
  1313.                 inc     l
  1314.                 inc     h               ; h=word_D100/256
  1315.                 ld      (hl), b
  1316.                 res     7, (ix+2)
  1317.                 call    sub_BC00
  1318.  
  1319.  
  1320. loc_8512:                               ; CODE XREF: sub_8C20-722
  1321.                 call    BEEP_move
  1322.  
  1323.  
  1324. loc_8515:                               ; CODE XREF: sub_8C20-777
  1325.                 ld      a, (curlevel)
  1326.                 cp      #A
  1327.                 call    z, sub_8D6A
  1328.  
  1329.                 jp      loc_8226
  1330.  
  1331. ; ---------------------------------------------------------------------------
  1332.  
  1333. loc_8520:                               ; CODE XREF: sub_8C20-A58
  1334.                                         ; sub_8C20-7D
  1335.                 ld      hl, byte_D0DF
  1336.                 res     5, (hl)
  1337.                 pop     af
  1338.                 push    af
  1339.                 jp      po, loc_8533
  1340.  
  1341.                 ld      hl, (ptr_stk_1bvalue)
  1342.                 dec     hl
  1343.                 ld      (ptr_stk_1bvalue), hl
  1344.                 ld      (hl), #FF
  1345.  
  1346.  
  1347. loc_8533:                               ; CODE XREF: sub_8C20-6F9
  1348.                 ld      hl, (word_D0F7)
  1349.                 dec     hl
  1350.                 ld      (word_D0F7), hl
  1351.                 ld      hl, (ptr_stk_1bvalue)
  1352.                 dec     hl
  1353.                 ld      (ptr_stk_1bvalue), hl
  1354.                 ld      (hl), #FF
  1355.                 call    sub_A909
  1356.  
  1357.                 ld      hl, (word_D059)
  1358.                 ld      (word_D25A), hl
  1359.                 ld      hl, (word_D05C)
  1360.                 ld      a, (byte_D05E)
  1361.                 ld      (word_D059), hl
  1362.                 ld      (byte_D05B), a
  1363.                 ld      a, (byte_D029)
  1364.                 ld      (byte_D00A), a
  1365.                 ld      hl,word_D240-1
  1366.                 ld      de,word_D240+1
  1367.                 ld      bc,#17
  1368.                 lddr
  1369.                 ld      hl, byte_D02D
  1370.                 ld      a, (hl)
  1371.                 xor     1
  1372.                 ld      (hl), a
  1373.                 or      #80
  1374.                 ld      (byte_D0BF), a
  1375.                 rra
  1376.                 jr      c, loc_857C
  1377.  
  1378.                 ld      hl, byte_D049 ;move #
  1379.                 dec     (hl)
  1380.  
  1381. loc_857C:                               ; CODE XREF: sub_8C20-6AA
  1382.                 ld      hl, (word_D059)
  1383.                 ld      (word_D05C), hl
  1384.                 ld      ix, word_D059
  1385.                 call    sub_A903
  1386.  
  1387.                 ld      hl, curkey_D0D9
  1388.                 ld      a, (hl)
  1389.                 ld      (hl), 0
  1390.                 ld      (keycodeformenu), a
  1391.                 jp      loc_83A1
  1392.  
  1393. ; ---------------------------------------------------------------------------
  1394.  
  1395. loc_8595:                               ; CODE XREF: sub_8C20-80A
  1396.                                         ; sub_8C20-24
  1397. ;'S' - set position
  1398.                 xor     a
  1399.                 ld      (byte_D0B7), a
  1400.                 call    UnDrawMoveAndCursors
  1401.  
  1402.                 ld      a, #FF
  1403.                 ld      (needdrawcursorfrom), a
  1404.                 call    DrawMoveAndCursors
  1405.  
  1406.                 call    restore_6_spaces
  1407.  
  1408.                 call    PrintMoveText
  1409.  
  1410.                 call    sub_A150
  1411.  
  1412.                 ld      hl,#1200
  1413.                 jr      nc, loc_85B4
  1414.  
  1415.                 ld      h, #A
  1416.  
  1417.  
  1418. loc_85B4:                               ; CODE XREF: sub_8C20-670
  1419.                 ld      (scr_XY), hl
  1420.                 ld      hl, aSIXbuf     ; "     "
  1421.                 call    PRINT_STR_scr0
  1422.  
  1423.                 ld      a,#40
  1424.                 ld      (byte_D08E), a
  1425.                 ld      a, (byte_D02D)
  1426.                 rra
  1427.                 ld      a, 6
  1428.                 rra
  1429.                 ld      (byte_D08D), a
  1430.                 ld      hl, byte_D04D
  1431.                 set     0, (hl)
  1432.                 ld      hl, byte_D0B4
  1433.                 set     0, (hl)
  1434.                 set     3, (hl)
  1435.  
  1436.  
  1437. loc_85D8:                               ; CODE XREF: sub_8C20-608
  1438.                                         ; sub_8C20-5E4 ...
  1439.                 call    BEEP_move
  1440.  
  1441.                 jr      loc_85E0
  1442.  
  1443. ; ---------------------------------------------------------------------------
  1444.  
  1445. loc_85DD:                               ; CODE XREF: sub_8C20-4D5
  1446.                 call    BEEP_3
  1447.  
  1448.  
  1449. loc_85E0:                               ; CODE XREF: sub_8C20-645
  1450.                 call    sub_9F0D ;show state and help
  1451.  
  1452.                 ld      hl, #1601
  1453.                 ld      (scr_XY), hl
  1454.                 ld      hl, aWhite      ; "WHIT"
  1455.                 ld      a, (byte_D08D)
  1456.                 rlca
  1457.                 jr      c, loc_85F5
  1458.  
  1459.                 ld      hl, aBlack      ; "BLAC"
  1460.  
  1461.  
  1462. loc_85F5:                               ; CODE XREF: sub_8C20-630
  1463.                 call    PRINT_STR_scr0
  1464.  
  1465.                 ld      hl, byte_D0DF
  1466.                 ld      (hl), 4
  1467.  
  1468. loc_85FD:                               ; CODE XREF: sub_8C20+A
  1469.                 call    DrawMoveAndCursors
  1470.  
  1471. loc_8600:                               ; CODE XREF: sub_8C20-618
  1472.                 call    sub_8F4D
  1473.  
  1474.                 ld      hl, keycodeformenu
  1475.                 ld      a, (hl)
  1476.                 or      a
  1477.                 jr      z, loc_8600
  1478.  
  1479.                 ld      (hl), 0
  1480.                 push    af
  1481.                 call    sub_8C2D
  1482.  
  1483.                 pop     af
  1484.                 cp      'Z'
  1485.                 jr      nz, loc_863F
  1486.  
  1487.                 call    INIT_PRINT_CLOCKS
  1488.  
  1489.                 jr      loc_85D8
  1490.  
  1491. ; ---------------------------------------------------------------------------
  1492.  
  1493. loc_861A:                               ; CODE XREF: sub_8C20-4C8
  1494.                 ld      a, (byte_D08D)
  1495.                 add     a, b
  1496.  
  1497. loc_861E:                               ; CODE XREF: sub_8C20-4DE
  1498.                 ld      c, (hl)
  1499.                 ld      (hl), a
  1500.                 bit     0, c
  1501.                 jr      nz, loc_862E
  1502.                 bit     2, c
  1503.                 jr      z, loc_862E
  1504.                 res     2, c
  1505.                 ld      l, c
  1506.                 inc     h
  1507.                 set     7, (hl)
  1508. loc_862E:                               ; CODE XREF: sub_8C20-5FE
  1509.                                         ; sub_8C20-5FA ...
  1510.                 ld      sp, RAM_END_D800
  1511.                 ld      a, 3
  1512.                 ld      (byte_D04D), a
  1513.                 call    sub_93A4
  1514.  
  1515.                 call    sub_96A6
  1516.  
  1517.                 jp      loc_85D8
  1518.  
  1519. ; ---------------------------------------------------------------------------
  1520.  
  1521. loc_863F:                               ; CODE XREF: sub_8C20-60D
  1522.                 call    ChangeLevel_ifL
  1523.  
  1524.                 jp      nc, loc_85D8
  1525.  
  1526.                 cp      'C'
  1527.                 jr      nz, loc_864E
  1528.  
  1529.                 call    sub_87CD
  1530.  
  1531.                 jr      loc_862E
  1532.  
  1533. ; ---------------------------------------------------------------------------
  1534.  
  1535. loc_864E:                               ; CODE XREF: sub_8C20-5D9
  1536.                 cp      'M'
  1537.                 jr      z, loc_865C
  1538.  
  1539.                 cp      'S'
  1540.                 jp      nz, loc_871C
  1541.  
  1542.                 ld      hl, byte_D0B4
  1543.                 res     0, (hl)
  1544.  
  1545. loc_865C:                               ; CODE XREF: sub_8C20-5D0
  1546. ;"Move"
  1547.                 ld      hl, #1600
  1548.                 ld      (scr_XY), hl
  1549.                 ld      hl, a_8spaces   ; "       "
  1550.                 call    PRINT_STR_scr0
  1551.  
  1552.                 call    restore_6_spaces
  1553.  
  1554.                 ld      hl, byte_D0DF
  1555.                 res     2, (hl)
  1556.                 ld      a, (byte_D08D)
  1557.                 ld      hl, byte_D02D
  1558.                 ld      b, (hl)
  1559.                 res     0, b
  1560.                 sub     3
  1561.                 ld      (byte_D0B2), a
  1562.                 jr      z, loc_8682
  1563.                 set     0, b
  1564. loc_8682:                               ; CODE XREF: sub_8C20-5A2
  1565.                 ld      a, b
  1566.                 cp      (hl)
  1567.                 jr      z, loc_868C
  1568.                 ld      (hl), b
  1569.                 ld      a, 3
  1570.                 ld      (byte_D04D), a
  1571. loc_868C:                               ; CODE XREF: sub_8C20-59C
  1572.                 ld      a, (byte_D04D)
  1573.                 and     2
  1574.                 jr      z, loc_8712
  1575.  
  1576.                 call    sub_881D
  1577.                 ld      a, #A ;??? сюда никогда не попадаем?
  1578.                 ld      (byte_D049), a ;move #
  1579.                 call    sub_A915
  1580.  
  1581.                 xor     a
  1582.                 ld      (byte_D00A), a
  1583.                 ld      hl, word_D059
  1584.                 ld      b, 6
  1585.  
  1586.  
  1587. loc_86A7:                               ; CODE XREF: sub_8C20-577
  1588.                 ld      (hl), a
  1589.                 inc     l
  1590.                 djnz    loc_86A7
  1591.  
  1592.                 xor     a
  1593.                 ld      (word_D00D), a
  1594.                 ld      ix, word_D059
  1595.                 ld      hl, byte_D02D
  1596.                 inc     (hl)
  1597.                 push    hl
  1598.                 call    sub_BC00
  1599.  
  1600.                 pop     hl
  1601.                 dec     (hl)
  1602.                 or      a
  1603.                 call    z, sub_8C20
  1604.  
  1605.                 ld      a, #FF
  1606.                 ld      (stk_1bvalue), a
  1607.                 ld      hl, #F7F7
  1608.                 ld      (word_D240), hl
  1609.                 ld      hl, byte_D02D
  1610.                 ld      a, (hl)
  1611.                 and     1
  1612.                 ld      b, a
  1613.                 ld      a, (ix+2)
  1614.                 and     #FE
  1615.                 or      b
  1616.                 ld      (byte_D301), a
  1617.                 ld      a, (ix+1)
  1618.                 ld      (byte_D300), a
  1619.                 ld      a, (byte_D00A)
  1620.                 ld      (byte_D302), a
  1621.                 ld      a, (byte_D049) ;move #
  1622.                 ld      (byte_D20C), a ;oldmove #?
  1623.                 ld      hl, word_D100
  1624.                 ld      de, array_64bytes
  1625.                 ld      b, #20 ; ' '
  1626. loc_86F6:                               ; CODE XREF: sub_8C20-51F
  1627.                 ld      a, (hl)
  1628.                 ld      (de), a
  1629.                 inc     hl
  1630.                 inc     de
  1631.                 ld      a, (hl)
  1632.                 ld      (de), a
  1633.                 inc     de
  1634.                 ld      a, l
  1635.                 add     a, 7
  1636.                 ld      l, a
  1637.                 djnz    loc_86F6
  1638.  
  1639.                 ld      hl, stk_1bvalue
  1640.                 ld      (ptr_stk_1bvalue), hl
  1641.                 call    BEEP_move
  1642.  
  1643.                 call    sub_96A6
  1644.  
  1645.                 jp      loc_80CE
  1646.  
  1647. ; ---------------------------------------------------------------------------
  1648.  
  1649. loc_8712:                               ; CODE XREF: sub_8C20-58F
  1650.                 xor     a
  1651.                 ld      (byte_D04D), a
  1652.                 call    BEEP_move
  1653.  
  1654.                 jp      loc_8104
  1655.  
  1656. ; ---------------------------------------------------------------------------
  1657.  
  1658. loc_871C:                               ; CODE XREF: sub_8C20-5CC
  1659.                 cp      #58 ; 'X'
  1660.                 jr      nz, loc_8737
  1661.  
  1662.                 call    restore_6_spaces
  1663.  
  1664.                 ld      hl, byte_D08D
  1665.                 ld      a, (hl)
  1666.                 xor     #80
  1667.                 ld      (hl), a
  1668.                 ld      hl, byte_D0BF
  1669.                 ld      a, (hl)
  1670.                 xor     1
  1671.                 ld      (hl), a
  1672.                 call    PrepareAndPrintMoveText
  1673.  
  1674.                 jp      loc_85D8
  1675.  
  1676. ; ---------------------------------------------------------------------------
  1677.  
  1678. loc_8737:                               ; CODE XREF: sub_8C20-502
  1679.                 cp      #45 ; 'E'
  1680.                 jr      nz, loc_8745
  1681.  
  1682.                 ld      h, #D0
  1683.                 ld      a, (needdrawcursor1)
  1684.                 ld      l, a
  1685.                 xor     a
  1686.                 jp      loc_861E
  1687.  
  1688. ; ---------------------------------------------------------------------------
  1689.  
  1690. loc_8745:                               ; CODE XREF: sub_8C20-4E7
  1691.                 ld      hl, KING
  1692.                 call    sub_8CF7 ;поиск класса фигуры по имени
  1693.  
  1694.                 jp      c, loc_85DD
  1695.  
  1696.                 inc     hl
  1697.                 inc     hl
  1698.                 ld      a, (hl)
  1699.                 ld      b, a
  1700.                 ld      a, (needdrawcursor1)
  1701.                 ld      l, a
  1702.                 ld      h, BRD_88_0/256
  1703.                 jp      loc_861A
  1704.  
  1705. ; END OF FUNCTION CHUNK FOR sub_8C20
  1706.  
  1707. ; =============== S U B R O U T I N E =======================================
  1708.  
  1709.  
  1710. InitBoard_ClearMoves:                           ; CODE XREF: sub_8C20:loc_80CB
  1711.        if FIX
  1712.         call RandomizeSetup
  1713.        endif
  1714.                 xor     a
  1715.                 ld      (byte_D0FF), a
  1716.                 ld      hl, array_D200
  1717.                 ld      b, #A
  1718. loc_8764:                               ; CODE XREF: InitBoard_ClearMoves+B
  1719.                 ld      (hl), a
  1720.                 inc     l
  1721.                 djnz    loc_8764
  1722.  
  1723.                 ld      (hl), #FF
  1724.                 ld      c, a
  1725.                 ld      b, a
  1726.                 ld      hl, array_D200
  1727. loc_876F:                               ; CODE XREF: InitBoard_ClearMoves+16
  1728.                 dec     hl
  1729.                 ld      (hl), a
  1730.                 djnz    loc_876F
  1731.  
  1732.                 ld      hl, unk_D080
  1733.                 ld      b, #80
  1734. loc_8778:                               ; CODE XREF: InitBoard_ClearMoves+1F
  1735.                 dec     hl
  1736.                 ld      (hl), a
  1737.                 djnz    loc_8778
  1738.  
  1739.                 call    Copy_starting_setup
  1740.  
  1741.                 ld      de, word_D100 ;пустышка (а потом там будет положение короля?)
  1742.                 ld      c, #41
  1743.                 call    sub_87BF ;копирует ряд de по |c в hl
  1744.  
  1745.                 ld      l, #60
  1746.                 ld      c, #C1
  1747.                 call    sub_87BF ;копирует ряд de по |c в hl
  1748.  
  1749.                 ld      c, #81
  1750.                 call    Copy_starting_setup
  1751.  
  1752.        if !FIX
  1753.                 xor     a
  1754.                 ld      (byte_D09E), a
  1755.                 inc     a
  1756.        else
  1757.         ld a,1
  1758.         ld (byte_D09E), a ;end of opening?
  1759.        endif
  1760.                 ld      (byte_D0B2), a
  1761.                 ld      (byte_D02D), a
  1762.                 ld      (byte_D0BF), a
  1763.                 ld      (byte_D049), a ;move #
  1764.                 ld      (byte_D097), a
  1765.                 ld      (byte_D20C), a ;oldmove #?
  1766.                 ld      hl, stk_1bvalue
  1767.                 ld      (ptr_stk_1bvalue), hl
  1768.                 ld      hl, RAM_END_D800
  1769.                 ld      (word_D099), hl
  1770.                 call    sub_87DE
  1771.  
  1772.                 jp      loc_8828
  1773.  
  1774. ; End of function InitBoard_ClearMoves
  1775.  
  1776.  
  1777. ; =============== S U B R O U T I N E =======================================
  1778.  
  1779. Copy_starting_setup:                            ; CODE XREF: InitBoard_ClearMoves+21 InitBoard_ClearMoves+35
  1780.                 ld      de, starting_setup
  1781. ; End of function Copy_starting_setup
  1782. ; =============== S U B R O U T I N E =======================================
  1783. sub_87BF:                               ; CODE XREF: InitBoard_ClearMoves+29 InitBoard_ClearMoves+30
  1784.                 ld      b, 8
  1785. loc_87C1:                               ; CODE XREF: sub_87BF+7
  1786.                 ld      a, (de)
  1787.                 or      c
  1788.                 ld      (hl), a
  1789.                 inc     l
  1790.                 inc     de
  1791.                 djnz    loc_87C1
  1792.  
  1793.                 ld      a, 8
  1794.                 add     a, l
  1795.                 ld      l, a
  1796.                 ret
  1797.  
  1798. ; End of function sub_87BF
  1799.  
  1800.  
  1801. ; =============== S U B R O U T I N E =======================================
  1802.  
  1803.  
  1804. sub_87CD:                               ; CODE XREF: sub_8C20-5D7
  1805.                                         ; sub_8C20-1D7
  1806.                 call    sub_A262
  1807.  
  1808.                 xor     a
  1809.                 ld      hl, BRD_88_0
  1810. loc_87D4:                               ; CODE XREF: sub_87CD+B
  1811.                 ld      (hl), a
  1812. loc_87D5:                               ; CODE XREF: sub_87CD+F
  1813.                 inc     l
  1814.                 bit     3, l
  1815.                 jr      z, loc_87D4
  1816.                 bit     7, l
  1817.                 jr      z, loc_87D5
  1818.  
  1819. ; End of function sub_87CD
  1820.  
  1821.  
  1822. ; =============== S U B R O U T I N E =======================================
  1823.  
  1824. sub_87DE:                               ; CODE XREF: InitBoard_ClearMoves+5B
  1825.                 ld      hl, word_D100
  1826.                 xor     a
  1827. loc_87E2:                               ; CODE XREF: sub_87DE+9
  1828.                 set     7, (hl)
  1829.                 add     a, 8
  1830.                 ld      l, a
  1831.                 jr      nc, loc_87E2
  1832.                 ret
  1833.  
  1834. ; End of function sub_87DE
  1835.  
  1836.  
  1837. ; =============== S U B R O U T I N E =======================================
  1838.  
  1839.  
  1840. sub_87EA:                               ; CODE XREF: sub_87EA+30 sub_881D+3     ...
  1841.                 ld      d, (hl)
  1842.                 bit     7, d
  1843.                 jr      nz, loc_8814
  1844.  
  1845.                 inc     l
  1846.                 ld      b, (hl)
  1847.                 dec     l
  1848.                 ld      a, b
  1849.                 and     #F
  1850.                 dec     a
  1851.                 jr      z, loc_8814
  1852.  
  1853.                 set     7, (hl)
  1854.                 ld      a, l
  1855.                 and     #80
  1856.                 or      3
  1857.                 ld      e, a
  1858.                 ld      a, b
  1859.                 and     #8F
  1860.                 push    hl
  1861.                 ld      hl, KING-1
  1862.                 call    sub_8CF7 ;поиск класса фигуры по цене
  1863.  
  1864.                 inc     hl
  1865.                 inc     hl
  1866.                 inc     hl
  1867.                 ld      a, (hl)
  1868.                 or      e
  1869.                 ld      h, #D0  ; 'Р'
  1870.                 ld      l, d
  1871.                 ld      (hl), a
  1872.                 pop     hl
  1873.  
  1874.  
  1875. loc_8814:                               ; CODE XREF: sub_87EA+3 sub_87EA+C
  1876.                 ld      a, l
  1877.                 add     a, 8
  1878.                 ld      l, a
  1879.                 bit     6, a
  1880.                 jr      nz, sub_87EA
  1881.  
  1882.                 ret
  1883.  
  1884. ; End of function sub_87EA
  1885.  
  1886.  
  1887. ; =============== S U B R O U T I N E =======================================
  1888.  
  1889.  
  1890. sub_881D:                               ; CODE XREF: sub_8C20-58D
  1891.                 ld      hl, unk_D140
  1892.                 call    sub_87EA
  1893.  
  1894.                 ld      l, #C0          ; word_D1C0&255
  1895.                 call    sub_87EA
  1896.  
  1897.  
  1898. loc_8828:                               ; CODE XREF: InitBoard_ClearMoves+5E
  1899.                 ld      de, BRD_88_0
  1900.                 ld      h, word_D100/256
  1901.  
  1902.  
  1903. loc_882D:                               ; CODE XREF: sub_881D+1A sub_881D+22
  1904.                 ld      a, (de)         ; bytes from D000 are pointers into D100 table
  1905.                 bit     0, a
  1906.                 call    nz, sub_8853
  1907.  
  1908.                 ld      a, #10
  1909.                 add     a, e
  1910.                 ld      e, a
  1911.                 jp      p, loc_882D
  1912.  
  1913.                 res     7, e
  1914.                 inc     e
  1915.                 bit     3, a
  1916.                 jr      z, loc_882D
  1917.  
  1918.                 ld      l, 0            ; word_D100&255
  1919.                 call    sub_884D
  1920.  
  1921.                 ld      l, #80          ; word_D180&255
  1922.                 ld      a, b
  1923.                 or      (hl)
  1924.                 jp      m, sub_8C20     ; illegal setup
  1925.  
  1926. ; End of function sub_881D
  1927.  
  1928.  
  1929. ; =============== S U B R O U T I N E =======================================
  1930.  
  1931.  
  1932. sub_884D:                               ; CODE XREF: sub_881D+26
  1933.  
  1934. ; FUNCTION CHUNK AT A912 SIZE 00000003 BYTES
  1935.  
  1936.                 ld      b, (hl)
  1937.                 inc     l
  1938.                 ld      a, (hl)
  1939.                 jp      loc_A912
  1940.  
  1941. ; End of function sub_884D
  1942.  
  1943.  
  1944. ; =============== S U B R O U T I N E =======================================
  1945.  
  1946.  
  1947. sub_8853:                               ; CODE XREF: sub_881D+13
  1948.                 ld      l, a
  1949.                 dec     l
  1950.                 bit     6, l
  1951.                 jr      z, loc_8879
  1952.  
  1953.                 ld      a, #70 ; 'p'
  1954.                 and     e
  1955.                 jr      z, loc_88D7
  1956.  
  1957.                 cp      #70 ; 'p'
  1958.                 jr      z, loc_88D7
  1959.  
  1960.                 ld      b, 1
  1961.                 ld      a, #80
  1962.                 and     l
  1963.                 xor     #80
  1964.                 scf
  1965.                 rra
  1966.                 ld      c, a
  1967.                 ld      a, e
  1968.                 and     7
  1969.                 cp      3
  1970.                 jr      z, loc_88DB
  1971.  
  1972.                 cp      4
  1973.                 jr      z, loc_88DB
  1974.  
  1975.                 jr      loc_88BB
  1976.  
  1977. ; ---------------------------------------------------------------------------
  1978.  
  1979. loc_8879:                               ; CODE XREF: sub_8853+4
  1980.                 ld      a, #78 ; 'x'
  1981.                 and     l
  1982.                 jr      nz, loc_888D
  1983.  
  1984.                 ld      c, 1
  1985.                 ld      b, 0
  1986.                 bit     1, l
  1987.                 jr      z, loc_8888
  1988.  
  1989.                 ld      b, #30 ; '0'
  1990.  
  1991.  
  1992. loc_8888:                               ; CODE XREF: sub_8853+31
  1993.                 call    sub_88E9
  1994.  
  1995.                 jr      loc_88D7
  1996.  
  1997. ; ---------------------------------------------------------------------------
  1998.  
  1999. loc_888D:                               ; CODE XREF: sub_8853+29
  2000.                 cp      #10
  2001.                 ld      c, #E
  2002.                 ld      b, 9
  2003.                 jr      c, loc_88B2
  2004.  
  2005.                 jr      nz, loc_88A3
  2006.  
  2007.                 ld      c, 8
  2008.                 ld      b, 5
  2009.                 bit     1, l
  2010.                 jr      z, loc_88AF
  2011.  
  2012.                 ld      b, #15
  2013.                 jr      loc_88AF
  2014.  
  2015. ; ---------------------------------------------------------------------------
  2016.  
  2017. loc_88A3:                               ; CODE XREF: sub_8853+42
  2018.                 ld      b, 3
  2019.                 ld      c, 0
  2020.                 cp      #20 ; ' '
  2021.                 jr      nz, loc_88AF
  2022.  
  2023.                 ld      b, #83 ; '?'
  2024.                 ld      c, 4
  2025.  
  2026.  
  2027. loc_88AF:                               ; CODE XREF: sub_8853+4A sub_8853+4E ...
  2028.                 call    sub_88E9
  2029.  
  2030.  
  2031. loc_88B2:                               ; CODE XREF: sub_8853+40
  2032.                 call    sub_88E9
  2033.  
  2034.  
  2035. loc_88B5:                               ; CODE XREF: sub_8853+94
  2036.                 ld      a, #82 ; '''
  2037.                 and     l
  2038.                 set     6, a
  2039.                 ld      l, a
  2040.  
  2041.  
  2042. loc_88BB:                               ; CODE XREF: sub_8853+24 sub_8853+77
  2043.                 call    sub_88E9
  2044.  
  2045.                 call    sub_88E9
  2046.  
  2047.                 call    sub_88E9
  2048.  
  2049.                 ld      a, l
  2050.                 add     a, #10
  2051.                 ld      l, a
  2052.                 bit     6, a
  2053.                 jr      nz, loc_88BB
  2054.  
  2055.                 xor     #80
  2056.                 or      #58
  2057.                 ld      l, a
  2058.                 call    sub_88E9
  2059.  
  2060.                 call    sub_88E9
  2061.  
  2062.  
  2063. loc_88D7:                               ; CODE XREF: sub_8853+9 sub_8853+D ...
  2064.                 pop     hl
  2065.                 jp      sub_8C20
  2066.  
  2067. ; ---------------------------------------------------------------------------
  2068.  
  2069. loc_88DB:                               ; CODE XREF: sub_8853+1E sub_8853+22
  2070.                 ld      a, l
  2071.                 and     #82
  2072.                 or      #58
  2073.                 ld      l, a
  2074.                 call    sub_88E9
  2075.  
  2076.                 call    sub_88E9
  2077.  
  2078.                 jr      loc_88B5
  2079.  
  2080. ; End of function sub_8853
  2081.  
  2082.  
  2083. ; =============== S U B R O U T I N E =======================================
  2084.  
  2085.  
  2086. sub_88E9:                               ; CODE XREF: sub_8853:loc_8888
  2087.                                         ; sub_8853:loc_88AF ...
  2088.                 res     1, l
  2089.                 ld      a, (hl)
  2090.                 rla
  2091.                 jr      c, loc_88F4
  2092.  
  2093.                 ld      a, 8
  2094.                 add     a, l
  2095.                 ld      l, a
  2096.                 ret
  2097.  
  2098. ; ---------------------------------------------------------------------------
  2099.  
  2100. loc_88F4:                               ; CODE XREF: sub_88E9+4
  2101.                 ld      (hl), e         ; D000 (hl) and D100 (de) point to each other here
  2102.                 ld      a, l
  2103.                 set     2, a
  2104.                 ld      (de), a
  2105.                 inc     l
  2106.                 ld      (hl), b
  2107.                 set     2, l
  2108.                 inc     l
  2109.                 ld      (hl), c
  2110.                 pop     bc
  2111.                 ret
  2112.  
  2113. ; End of function sub_88E9
  2114.  
  2115. ; ---------------------------------------------------------------------------
  2116. starting_setup:
  2117.         ;db     #11,#31,#21,#09,#01,#21,#31,#11
  2118.         db      _R,_N,_B,_Q,_K,_B,_N,_R
  2119.  
  2120. aSIXbuf:        db      '      '
  2121.                 EOS
  2122.  
  2123. ; =============== S U B R O U T I N E =======================================
  2124.  
  2125. PrintMoveText:                          ; CODE XREF: sub_8C20-679
  2126.                                         ; restore_6_spaces+D ...
  2127.                 ld      hl, #61A
  2128.                 ld      (scr_XY), hl
  2129.                 ld      hl, aSIXbuf     ; "     "
  2130.                 call    PRINT_STR_FF
  2131.  
  2132.                 ld      hl, #1700
  2133.                 ld      (scr_XY), hl
  2134.                 ld      hl, aSIXbuf     ; "     "
  2135.                 call    PRINT_STR_scr0
  2136.                 ret
  2137. ; End of function PrintMoveText
  2138. ; =============== S U B R O U T I N E =======================================
  2139. restore_6_spaces:                       ; CODE XREF: sub_8C20-67C
  2140.                                         ; sub_8C20-5B8 ...
  2141.                 ld      hl, aSIXbuf     ; "     "
  2142.                 ld      b, 5
  2143.                 ld      a, #20 ; ' '
  2144. loc_892F:                               ; CODE XREF: restore_6_spaces+9
  2145.                 ld      (hl), a
  2146.                 inc     hl
  2147.                 djnz    loc_892F
  2148.                 ld      (hl),' '|#80
  2149.                 call    PrintMoveText
  2150.                 ret
  2151. ; End of function restore_6_spaces
  2152. ; =============== S U B R O U T I N E =======================================
  2153.  
  2154. PrepareAndPrintMoveText:                                ; CODE XREF: sub_8C20-4EF
  2155.                                         ; sub_9128+37   ...
  2156.                 call    restore_6_spaces
  2157.                 ld      hl, aSIXbuf     ; "     "
  2158.                 ld      a, (needdrawcursorfrom)
  2159.                 cp      #FF
  2160.                 jr      nz, loc_8949
  2161.                 ld      a, (needdrawcursor1)
  2162. loc_8949:                               ; CODE XREF: PrepareAndPrintMoveText+B
  2163.                 call    sub_8960 ;вывод имени поля A в hl
  2164.  
  2165.                 ld      a, (needdrawcursorfrom)
  2166.                 cp      #FF
  2167.                 jr      z, loc_895C
  2168.  
  2169.                 ld      (hl),'-'
  2170.                 inc     hl
  2171.                 ld      a, (needdrawcursor1)
  2172.                 call    sub_8960 ;вывод имени поля A в hl
  2173. loc_895C:                               ; CODE XREF: PrepareAndPrintMoveText+18
  2174.                 call    PrintMoveText
  2175.                 ret
  2176. ; End of function PrepareAndPrintMoveText
  2177. ; =============== S U B R O U T I N E =======================================
  2178. sub_8960:                               ; CODE XREF: PrepareAndPrintMoveText:loc_8949
  2179. ;вывод имени поля A в hl                                        ; PrepareAndPrintMoveText+20    ...
  2180.                 ld      b, a
  2181.                 and     #F
  2182.                 add     a,'a'
  2183.                 ld      (hl), a
  2184.                 inc     hl
  2185.                 ld      a, b
  2186.                 and     #F0
  2187.                 rlca
  2188.                 rlca
  2189.                 rlca
  2190.                 rlca
  2191.                 neg
  2192.                 add     a, 7
  2193.                 add     a,'1'
  2194.                 ld      (hl), a
  2195.                 inc     hl
  2196.                 ret
  2197. ; End of function sub_8960
  2198. ; =============== S U B R O U T I N E =======================================
  2199.  
  2200. sub_8977:                               ; CODE XREF: sub_8C20:loc_8283
  2201. ;вывод хода в buf_10bytes
  2202. ;(ix+0)=откуда ходим
  2203. ;(ix+1)=куда ходим (при рокировке записан ход короля)
  2204. ;(ix+2)D3=съедение
  2205. ;(ix+2)D4=рокировка, (ix+1)D2=короткая (годится и для Chess960)
  2206. ;(ix+2)D7=шах
  2207.                 ld      hl, buf_10bytes
  2208.                 ld      b, #A
  2209. loc_897C:                               ; CODE XREF: sub_8977+8
  2210.                 ld      (hl), #20 ; ' '
  2211.                 inc     hl
  2212.                 djnz    loc_897C
  2213.  
  2214.                 xor     a
  2215.                 ld      (byte_D0DC), a
  2216.  
  2217.                 bit     4, (ix+2)
  2218.                 jr      z, loc_89A4 ;не рокировка
  2219.                 ld      hl, aOOO        ; "O-O-O"
  2220.                 ld      de, buf_10bytes+1
  2221.                 ld      c, 5
  2222.                 bit     2, (ix+1)
  2223.                 jr      z, loc_899E ;рокируем в левую половину доски
  2224.                 inc     hl
  2225.                 inc     hl ;"O-O"
  2226.                 inc     de
  2227.                 ld      c, 3
  2228. loc_899E:                               ; CODE XREF: sub_8977+20
  2229.                 ldir
  2230.                 ex      de, hl
  2231.                 dec     hl
  2232.                 jr      loc_89FB
  2233.  
  2234. ; ---------------------------------------------------------------------------
  2235.  
  2236. loc_89A4:                               ; CODE XREF: sub_8977+12
  2237.                 ld      hl, buf_10bytes
  2238.                 ld      a, (byte_D0C2)
  2239.                 ld      (hl), a
  2240.                 inc     hl
  2241.                 ld      a, (ix+0)
  2242.                 call    sub_8960 ;вывод имени поля A в hl
  2243.  
  2244.                 ld      (hl),'-'
  2245.                 bit     3, (ix+2)
  2246.                 jr      z, loc_89BC ;просто ход
  2247.                 ld      (hl),'x' ;съедение
  2248. loc_89BC:                               ; CODE XREF: sub_8977+41
  2249.                 inc     hl
  2250.                 ld      a, (ix+1)
  2251.                 call    sub_8960 ;вывод имени поля A в hl
  2252.  
  2253.                 dec     hl
  2254.                 pop     de
  2255.                 pop     af
  2256.                 push    af
  2257.                 push    de
  2258.                 jp      po, loc_89F3 ;not promotion
  2259.  
  2260.                 inc     hl
  2261.                 ld      (hl), '/'
  2262.                 inc     hl
  2263.                 push    hl
  2264.                 ld      hl, (ptr_stk_1bvalue)
  2265.                 dec     hl
  2266.                 ld      a, (hl)
  2267.                 and     #8F
  2268.                 pop     hl
  2269.                 ld      b, 'Q'
  2270.                 cp      9
  2271.                 jr      z, loc_89EC
  2272.                 ld      b, 'R'
  2273.                 cp      5
  2274.                 jr      z, loc_89EC
  2275.                 ld      b, 'B'
  2276.                 cp      #83
  2277.                 jr      z, loc_89EC
  2278.                 ld      b, 'N'
  2279. loc_89EC:                               ; CODE XREF: sub_8977+65 sub_8977+6B ...
  2280.                 ld      a, b
  2281.                 ld      (hl), a
  2282.                 ld      (byte_D0DC), a
  2283.                 jr      loc_89FB
  2284.  
  2285. ; ---------------------------------------------------------------------------
  2286.  
  2287. loc_89F3:                               ; CODE XREF: sub_8977+51
  2288.                 jr      nc, loc_89FB
  2289.  
  2290.                 inc     hl
  2291.                 ld      (hl), #65 ; 'e'
  2292.                 inc     hl
  2293.                 ld      (hl), #70 ; 'p'
  2294.  
  2295.  
  2296. loc_89FB:                               ; CODE XREF: sub_8977+2B sub_8977+7A ...
  2297.                 bit     7, (ix+2)
  2298.                 jr      z, loc_8A04
  2299.  
  2300.                 inc     hl
  2301.                 ld      (hl), '+'
  2302.  
  2303.  
  2304. loc_8A04:                               ; CODE XREF: sub_8977+88
  2305.                 set     7, (hl)
  2306.                 ret
  2307.  
  2308. ; End of function sub_8977
  2309.  
  2310. ; ---------------------------------------------------------------------------
  2311. ; START OF FUNCTION CHUNK FOR sub_8C20
  2312.  
  2313. loc_8A07:                               ; CODE XREF: sub_8C20-204
  2314.                                         ; sub_8C20-167
  2315.                 call    BEEP_3
  2316.  
  2317.                 jp      loc_8378
  2318.  
  2319. ; ---------------------------------------------------------------------------
  2320.  
  2321. loc_8A0D:                               ; CODE XREF: sub_8C20:loc_8443
  2322. ;'B' - back
  2323.         if FIX
  2324.          call setoldrnd
  2325.         endif
  2326.                 call    UnDrawMoveAndCursors
  2327.  
  2328.                 ld      a, (needdrawcursorfrom)
  2329.                 or      a
  2330.                 call    p, UnDrawCursor
  2331.  
  2332.                 ld      hl, (word_D0F7)
  2333.                 ld      a, l
  2334.                 or      h
  2335.                 jp      z, loc_8A07
  2336.  
  2337.                 ld      a, (timeformove)
  2338.                 ld      c, a
  2339.                 ld      b, 0
  2340.                 ld      hl, (word_D088)
  2341.                 sbc     hl, bc
  2342.                 jr      nc, loc_8A2F
  2343.  
  2344.                 ld      hl, 0
  2345.  
  2346.  
  2347. loc_8A2F:                               ; CODE XREF: sub_8C20-1F6
  2348.                 ld      (word_D088), hl
  2349.  
  2350.  
  2351. loc_8A32:                               ; CODE XREF: sub_8C20-11
  2352.                                         ; sub_8C20+172A ...
  2353.                 call    BEEP_move
  2354.  
  2355.                 call    sub_96A6
  2356.  
  2357.                 ld      hl, (word_D0F7)
  2358.                 dec     hl
  2359.                 ld      (word_D09F), hl
  2360.                 ld      a, (byte_D20C) ;oldmove #
  2361.                 ld      (byte_D049), a ;move #
  2362.                 dec     a
  2363.                 jp      z, loc_80CB
  2364.  
  2365.                 call    sub_87CD
  2366.  
  2367.                 ld      de, array_64bytes
  2368.                 ld      a, (byte_D300)
  2369.                 ld      (word_D059+1), a
  2370.                 ld      a, (byte_D301)
  2371.                 ld      (byte_D05B), a
  2372.                 ld      (byte_D02D), a
  2373.                 and     1
  2374.                 ld      (byte_D0B2), a
  2375.                 ld      (byte_D0BF), a
  2376.                 ld      a, (byte_D302)
  2377.                 ld      (byte_D00A), a
  2378.                 ld      hl, word_D100
  2379.                 ld      b, #20 ; ' '
  2380.  
  2381.  
  2382. loc_8A71:                               ; CODE XREF: sub_8C20-1A4
  2383.                 ld      a, (de)
  2384.                 ld      (hl), a
  2385.                 inc     hl
  2386.                 inc     de
  2387.                 ld      a, (de)
  2388.                 ld      (hl), a
  2389.                 inc     de
  2390.                 ld      a, l
  2391.                 add     a, 7
  2392.                 ld      l, a
  2393.                 djnz    loc_8A71
  2394.  
  2395.                 ld      hl, word_D100
  2396.                 ld      de, BRD_88_0
  2397.  
  2398.  
  2399. loc_8A84:                               ; CODE XREF: sub_8C20-18E
  2400.                 ld      a, (hl)
  2401.                 or      a
  2402.                 jp      m, loc_8A8E
  2403.  
  2404.                 ld      e, a
  2405.                 ld      a, l
  2406.                 or      4
  2407.                 ld      (de), a
  2408.  
  2409.  
  2410. loc_8A8E:                               ; CODE XREF: sub_8C20-19A
  2411.                 ld      a, l
  2412.                 add     a, 8
  2413.                 ld      l, a
  2414.                 jr      nc, loc_8A84
  2415.  
  2416.                 ld      hl, stk_1bvalue
  2417.                 ld      (ptr_stk_1bvalue), hl
  2418.                 jp      loc_80CE
  2419.  
  2420. ; ---------------------------------------------------------------------------
  2421.  
  2422. loc_8A9D:                               ; CODE XREF: sub_8C20-80F
  2423. ;'F' - forward
  2424.                 call    UnDrawMoveAndCursors
  2425.  
  2426.                 ld      a, (needdrawcursorfrom)
  2427.                 or      a
  2428.                 call    p, UnDrawCursor
  2429.  
  2430.                 ld      a, (timeformove)
  2431.                 ld      c, a
  2432.                 ld      b, 0
  2433.                 ld      hl, (word_D088)
  2434.                 add     hl, bc
  2435.                 ld      (word_D088), hl ; add byte D0F4 to word D088
  2436.                 ld      hl, (ptr_stk_1bvalue)
  2437.                 ld      a, (hl)
  2438.                 inc     a
  2439.                 jp      z, loc_8A07     ; check gor end mark on stack
  2440.  
  2441.                 ld      hl, (word_D0F7)
  2442.                 inc     hl
  2443.                 ld      (word_D09F), hl
  2444.                 call    BEEP_move
  2445.  
  2446.                 jp      loc_810A
  2447.  
  2448. ; ---------------------------------------------------------------------------
  2449.  
  2450. loc_8AC9:                               ; CODE XREF: sub_8C20-119
  2451.                 ld      hl, 0
  2452.                 ld      (word_D09F), hl
  2453.                 ld      a, (byte_D02D)
  2454.                 and     1
  2455.                 ld      (byte_D0B2), a
  2456.                 ld      hl, (ptr_stk_1bvalue)
  2457.                 dec     hl
  2458.                 ld      (ptr_stk_1bvalue), hl
  2459.                 ld      hl, (word_D0F7)
  2460.                 dec     hl
  2461.                 ld      (word_D0F7), hl
  2462.                 jp      loc_82EB
  2463.  
  2464. ; ---------------------------------------------------------------------------
  2465.  
  2466. loc_8AE8:                               ; CODE XREF: sub_8C20-AFF
  2467.                 ld      sp, RAM_END_D800
  2468.                 ld      de, (word_D0F7)
  2469.                 or      a
  2470.                 sbc     hl, de
  2471.                 jp      z, loc_8B58
  2472.  
  2473.                 inc     de
  2474.                 ld      (word_D0F7), de
  2475.                 ld      hl, (ptr_stk_1bvalue)
  2476.                 ld      c, (hl)
  2477.                 ld      b, 0
  2478.                 inc     hl
  2479.                 ld      (ptr_stk_1bvalue), hl
  2480.                 ld      a, c
  2481.                 cp      #FF
  2482.                 jr      z, loc_8AC9     ; if end mark
  2483.  
  2484.                 res     7, c
  2485.                 ld      hl, tbl_D803    ; index into 3byte structs array
  2486.                 add     hl, bc
  2487.                 add     hl, bc
  2488.                 add     hl, bc
  2489.                 push    af
  2490.                 push    hl
  2491.                 ld      ix, word_D059
  2492.                 call    sub_A903
  2493.  
  2494.                 pop     ix
  2495.                 pop     af
  2496.                 rla
  2497.                 jr      nc, loc_8B24
  2498.  
  2499.                 set     7, (ix+2)
  2500.  
  2501.  
  2502. loc_8B24:                               ; CODE XREF: sub_8C20-102
  2503.                 ld      a, (ix+0)
  2504.                 call    sub_9FF5
  2505.  
  2506.                 ld      (byte_D0C2), a
  2507.                 ld      a, (ix+1)
  2508.                 call    sub_9FF5
  2509.  
  2510.                 ld      (byte_D0C3), a
  2511.                 call    sub_A906
  2512.  
  2513.                 pop     af
  2514.                 push    af
  2515.                 jp      po, loc_8253
  2516.  
  2517.                 ld      hl, (ptr_stk_1bvalue)
  2518.                 ld      b, (hl)
  2519.                 inc     hl
  2520.                 ld      (ptr_stk_1bvalue), hl
  2521.                 ld      l, (ix+1)
  2522.                 ld      h, BRD_88_0/256
  2523.                 ld      l, (hl)
  2524.                 res     2, l
  2525.                 inc     l
  2526.                 inc     h               ; word_D100/256
  2527.                 ld      (hl), b
  2528.                 xor     a
  2529.                 ld      (byte_D00A), a
  2530.                 jp      loc_8283
  2531.  
  2532. ; ---------------------------------------------------------------------------
  2533.  
  2534. loc_8B58:                               ; CODE XREF: sub_8C20-12E
  2535.                 ld      (word_D09F), hl
  2536.                 ld      a, (byte_D02D)
  2537.                 and     1
  2538.                 ld      (byte_D0B2), a
  2539.                 jp      loc_8104
  2540.  
  2541. ; END OF FUNCTION CHUNK FOR sub_8C20
  2542.  
  2543. ; =============== S U B R O U T I N E =======================================
  2544.  
  2545.  
  2546. sub_8B66:                               ; CODE XREF: sub_8C20-99A
  2547.                 ld      hl, (word_D059)
  2548.                 ld      (word_D05C), hl
  2549.                 ld      a, (byte_D05B)
  2550.                 ld      (byte_D05E), a
  2551.                 ld      l, (ix+0)
  2552.                 ld      h, (ix+1)
  2553.                 ld      a, (ix+2)
  2554.                 ld      (word_D059), hl
  2555.                 ld      (byte_D05B), a
  2556.                 ld      hl, unk_D22B
  2557.                 ld      de, unk_D229
  2558.                 ld      bc, #19         ; 25
  2559.                 ldir
  2560.                 ret
  2561.  
  2562. ; End of function sub_8B66
  2563.  
  2564. ; ---------------------------------------------------------------------------
  2565. ; START OF FUNCTION CHUNK FOR sub_8C20
  2566.  
  2567. loc_8B8D:                               ; CODE XREF: sub_8C20-A54
  2568.                                         ; sub_8C20-91A
  2569.                 ld      hl, aCheckmate  ; "CHECKMAT"
  2570.                 ld      a, (byte_D05B)
  2571.                 rla
  2572.                 jr      c, loc_8B9E ;конец игры
  2573.  
  2574.                 ld      hl, aStalemate  ; "STALEMAT"
  2575.                 jr      loc_8B9E ;конец игры
  2576.  
  2577. ; ---------------------------------------------------------------------------
  2578.  
  2579. loc_8B9B:                               ; CODE XREF: sub_8C20-B0C
  2580.                                         ; sub_8C20-AD9
  2581.                 ld      hl, aDraw       ; "DRA"
  2582.  
  2583. loc_8B9E:                               ; CODE XREF: sub_8C20-8C sub_8C20-87
  2584. ;конец игры
  2585. ;hl=msg
  2586.                 ld      a, (byte_D0B4)
  2587.                 bit     5, a
  2588.                 jp      nz, loc_8520 ;invisible board?
  2589.  
  2590.                 xor     a
  2591.                 ld      (byte_D0BF), a
  2592.         push hl
  2593.                 call    sub_A43C
  2594.  
  2595.                 call    sub_A45A
  2596.  
  2597.                 call    sub_A43C
  2598.  
  2599.         pop hl ;msg
  2600.                 call    PrintStrF00
  2601.  
  2602.                 ld      hl, aBBackSSetPosn_ ; "B - Back          S - Set posn. G - new"...
  2603.                 ld      de, #1000
  2604.                 call    PrintGameState
  2605.  
  2606.                 call    sub_9939
  2607.  
  2608.                 ld      a, (byte_D02D)
  2609.                 ld      hl, word_D100
  2610.                 rra
  2611.                 jr      nc, loc_8BCF
  2612.                 ld      l, #80
  2613. loc_8BCF:                               ; CODE XREF: sub_8C20-55
  2614.                 ld      b, #30
  2615.                 ld      d, 0
  2616.                 ld      l, (hl)
  2617.                 dec     h               ; BRD_88_0/256
  2618.                 ld      e, (hl)
  2619.                 ld      c, e
  2620.                 or      a
  2621. loc_8BD8:                               ; CODE XREF: sub_8C20-8 sub_8C20-5
  2622.                 ld      a, e
  2623.                 ld      e, d
  2624.                 ld      d, a
  2625.                 ld      (hl), e
  2626.                 push    bc
  2627.                 push    hl
  2628.                 push    de
  2629.                 call    c, BEEP_move
  2630.  
  2631.                 call    sub_93A4
  2632.  
  2633.                 ld      hl, byte_D0DF
  2634.                 ld      (hl), 8
  2635.                 ld      a, #A
  2636.                 call    sub_8C34
  2637.  
  2638.                 pop     de
  2639.                 pop     hl
  2640.                 pop     bc
  2641.                 ld      (hl), c
  2642.                 jr      z, loc_8C13
  2643.  
  2644.                 cp      #53 ; 'S'
  2645.                 jr      nz, loc_8BFF
  2646.  
  2647.                 call    sub_93A4
  2648.  
  2649.                 jp      loc_8595
  2650.  
  2651. ; ---------------------------------------------------------------------------
  2652.  
  2653. loc_8BFF:                               ; CODE XREF: sub_8C20-29
  2654.                 cp      #42 ; 'B'
  2655.                 jr      nz, loc_8C12
  2656.  
  2657.                 push    hl
  2658.                 ld      hl, byte_D0B4
  2659.                 res     1, (hl)
  2660.                 ld      hl, (word_D0F7)
  2661.                 ld      a, l
  2662.                 or      h
  2663.                 pop     hl
  2664.                 jp      nz, loc_8A32
  2665.  
  2666. loc_8C12:                               ; CODE XREF: sub_8C20-1F
  2667.                 scf
  2668.  
  2669. loc_8C13:                               ; CODE XREF: sub_8C20-2D
  2670.                 ld      a, (byte_D0B4)
  2671.                 bit     1, a
  2672.                 jp      z, loc_8BD8
  2673.  
  2674.                 djnz    loc_8BD8
  2675.  
  2676.                 jp      NEW_GAME
  2677.  
  2678. ; END OF FUNCTION CHUNK FOR sub_8C20
  2679.  
  2680. ; =============== S U B R O U T I N E =======================================
  2681.  
  2682.  
  2683. sub_8C20:                               ; CODE XREF: sub_8C20-562
  2684.                                         ; sub_881D+2D   ...
  2685.  
  2686. ; FUNCTION CHUNK AT 80A1 SIZE 0000038B BYTES
  2687. ; FUNCTION CHUNK AT 8443 SIZE 00000003 BYTES
  2688. ; FUNCTION CHUNK AT 845D SIZE 000002FE BYTES
  2689. ; FUNCTION CHUNK AT 8A07 SIZE 0000015F BYTES
  2690. ; FUNCTION CHUNK AT 8B8D SIZE 00000093 BYTES
  2691. ; FUNCTION CHUNK AT 8CD5 SIZE 00000022 BYTES
  2692. ; FUNCTION CHUNK AT A29F SIZE 00000112 BYTES
  2693. ; FUNCTION CHUNK AT A4F4 SIZE 00000035 BYTES
  2694. ; FUNCTION CHUNK AT A596 SIZE 000000EE BYTES
  2695.  
  2696.                 pop     hl
  2697.                 ld      hl, aIllegalSetup ; "ILLEGAL SETU"
  2698.                 call    PrintStrF00
  2699.  
  2700.                 call    BEEP_3
  2701.  
  2702.                 jp      loc_85FD
  2703.  
  2704. ; End of function sub_8C20
  2705.  
  2706.  
  2707. ; =============== S U B R O U T I N E =======================================
  2708.  
  2709.  
  2710. sub_8C2D:                               ; CODE XREF: sub_8C20-AE4
  2711.                                         ; sub_8C20:loc_845D ...
  2712.                 ld      hl, a_32spaces  ; "                        "
  2713.                 call    PrintStrF00
  2714.  
  2715.                 ret
  2716.  
  2717. ; End of function sub_8C2D
  2718.  
  2719.  
  2720. ; =============== S U B R O U T I N E =======================================
  2721.  
  2722.  
  2723. sub_8C34:                               ; CODE XREF: sub_8C20-34 ShowHintMove+3D ...
  2724.                 xor     a
  2725.                 ld      (keycodeformenu), a
  2726.  
  2727. loc_8C38:
  2728.                 ld      a, #A
  2729.  
  2730.  
  2731. loc_8C3A:                               ; CODE XREF: sub_8C34+8
  2732.                 halt
  2733.                 dec     a
  2734.                 jr      nz, loc_8C3A
  2735.  
  2736.                 call    sub_8F4D
  2737.  
  2738.                 ld      a, (keycodeformenu)
  2739.                 push    af
  2740.                 xor     a
  2741.                 ld      (keycodeformenu), a
  2742.                 pop     af
  2743.                 or      a
  2744.                 ret
  2745.  
  2746. ; End of function sub_8C34
  2747.  
  2748. ; ---------------------------------------------------------------------------
  2749.         if !FIX
  2750.                 ld      c, #A
  2751. loc_8C4E:                               ; CODE XREF: RAM:8C56
  2752.                 ld      a, #25 ; '%'
  2753. loc_8C50:                               ; CODE XREF: RAM:loc_8C50 RAM:8C53
  2754.                 djnz    $
  2755.                 dec     a
  2756.                 jr      nz, loc_8C50
  2757.                 dec     c
  2758.                 jr      nz, loc_8C4E
  2759.                 ret
  2760.  
  2761. ; ---------------------------------------------------------------------------
  2762.                 ld      a, (byte_D0B3) ;d3=swap board
  2763.                 bit     4, a
  2764.                 ret     z
  2765.                 bit     6, a
  2766.                 ret     nz
  2767.                 ld      hl, byte_D0B4
  2768.                 bit     5, (hl)
  2769.                 ret     nz
  2770.                 ld      hl, (tbl_D803)
  2771.         endif
  2772.  
  2773. ; =============== S U B R O U T I N E =======================================
  2774.  
  2775.  
  2776. ShowHintMove:                           ; CODE XREF: sub_8C20-840
  2777. ;l=from, h=to?                                  ; sub_8FC1+37
  2778.                 ld      a, l
  2779.                 or      h
  2780.                 ret     z
  2781.                 ld      a, l
  2782.                 call    sub_8CC1 ;a = 0yyy0xxx -> 00yyyxxx с учётом swap board
  2783.                 ld      c, a
  2784.                 ld      a, h
  2785.                 call    sub_8CC1 ;a = 0yyy0xxx -> 00yyyxxx с учётом swap board
  2786.                 ld      b, 0
  2787.                 ld      hl, BOARD
  2788.                 add     hl, bc
  2789.                 ld      e, (hl)
  2790.                 ld      b, a ;00yyyxxx
  2791.                 ld      hl, BOARD
  2792.                 add     a, l
  2793.                 ld      l, a
  2794.                 ld      a, 0
  2795.                 adc     a, h
  2796.                 ld      h, a
  2797.                 ld      d, (hl)
  2798.                 ld      hl, byte_D0B3 ;d3=swap board
  2799.                 bit     3, (hl)
  2800.                 jr      z, loc_8C98
  2801.                 ld      a, b
  2802.                 xor     #3F
  2803.                 ld      b, a
  2804.                 ld      a, c
  2805.                 xor     #3F
  2806.                 ld      c, a
  2807. loc_8C98:                               ; CODE XREF: ShowHintMove+23
  2808.                 push    de ;e=from fig, d=to fig?
  2809.                  push   bc ;c=from pos, b=to pos?
  2810.                 ld      c, e
  2811.                 ld      a, b
  2812.                 call    SHOW_FIG_POS ;show to
  2813.                  pop    bc
  2814.                  push   bc
  2815.                 ld      a, c
  2816.                 call    SH_EMPT_POS ;show from
  2817.  
  2818.                 call    BEEP_move
  2819.  
  2820.                 call    sub_8C34
  2821.                 call    sub_8C34
  2822.  
  2823.                  pop    bc
  2824.                 pop     de
  2825.                 push    de ;e=from fig, d=to fig?
  2826.                  push   bc ;c=from pos, b=to pos?
  2827.                 ld      a, c
  2828.                 ld      c, e
  2829.                 call    SHOW_FIG_POS ;show old from
  2830.                  pop    bc
  2831.                 pop     de
  2832.                 ld      a, b
  2833.                 ld      c, d
  2834.                 call    SHOW_FIG_POS ;show old to
  2835.  
  2836.                 or      1
  2837.                 ret
  2838.  
  2839. ; End of function ShowHintMove
  2840.  
  2841.  
  2842. ; =============== S U B R O U T I N E =======================================
  2843.  
  2844.  
  2845. sub_8CC1:                               ; CODE XREF: ShowHintMove+4 ShowHintMove+9
  2846. ;a = 0yyy0xxx -> 00yyyxxx с учётом swap board
  2847.                 push    af
  2848.                 and     7
  2849.                 ld      b, a
  2850.                 pop     af
  2851.                 rra
  2852.                 and     #38
  2853.                 add     a, b
  2854.                 push    hl
  2855.                 ld      hl, byte_D0B3 ;d3=swap board
  2856.                 bit     3, (hl)
  2857.                 pop     hl
  2858.                 ret     z
  2859.                 xor     #3F
  2860.                 ret
  2861.  
  2862. ; End of function sub_8CC1
  2863.  
  2864. ; ---------------------------------------------------------------------------
  2865. ; START OF FUNCTION CHUNK FOR sub_8C20
  2866.  
  2867. loc_8CD5:                               ; CODE XREF: sub_8C20-819
  2868. ;'D' - demo
  2869.                 ld      hl, byte_D0B4
  2870.                 set     1, (hl)
  2871.  
  2872. loc_8CDA:                               ; CODE XREF: sub_8C20-81E
  2873. ;'M' - move
  2874.                 call    BEEP_move
  2875.  
  2876.                 ld      a, (needdrawcursorfrom)
  2877.                 or      a
  2878.                 call    p, UnDrawCursor
  2879.  
  2880.                 ld      hl, byte_D0B4
  2881.                 res     0, (hl)
  2882.  
  2883.  
  2884. loc_8CE9:                               ; CODE XREF: sub_8C20-AA1
  2885.                                         ; sub_8C20-92A
  2886.                 ld      hl, byte_D0B2
  2887.                 ld      a, (hl)
  2888.                 or      a
  2889.                 ld      a, #16
  2890.                 jr      z, loc_8CF3
  2891.  
  2892.                 xor     a
  2893.  
  2894.  
  2895. loc_8CF3:                               ; CODE XREF: sub_8C20+D0
  2896.                 ld      (hl), a
  2897.                 jp      loc_810A
  2898.  
  2899. ; END OF FUNCTION CHUNK FOR sub_8C20
  2900.  
  2901. ; =============== S U B R O U T I N E =======================================
  2902.  
  2903.  
  2904. sub_8CF7:                               ; CODE XREF: sub_8C20-4D8
  2905. ;поиск класса фигуры по номеру, коду, имени                                     ; sub_87EA+1D   ...
  2906.                 ld      b, 6
  2907.  
  2908.  
  2909. loc_8CF9:                               ; CODE XREF: sub_8CF7+8
  2910.                 cp      (hl)
  2911.                 ret     z
  2912.                 inc     hl
  2913.                 inc     hl
  2914.                 inc     hl
  2915.                 inc     hl
  2916.                 djnz    loc_8CF9
  2917.  
  2918.                 scf
  2919.                 ret
  2920.  
  2921. ; End of function sub_8CF7
  2922.  
  2923. ; ---------------------------------------------------------------------------
  2924.                 db    0    ;цена K              ; DATA XREF: sub_87EA+1A sub_9FF5+20
  2925. KING:           db  'K'    ;имя K                         ; DATA XREF: sub_8C20:loc_8745
  2926.                 db    6    ;номер K             ; DATA XREF: sub_94C9:loc_94FF
  2927.                 db    0    ;код K
  2928.                 db    9    ;цена Q
  2929.                 db  'Q'    ;имя Q
  2930.                 db    5    ;номер Q
  2931.                 db    8    ;код Q
  2932.                 db    5    ;цена R
  2933.                 db  'R'    ;имя R
  2934.                 db    4    ;номер R
  2935.                 db  #10    ;код R
  2936.                 db  #83    ;цена B
  2937.                 db  'B'    ;имя B
  2938.                 db    3    ;номер B
  2939.                 db  #20    ;код B
  2940.                 db    3    ;цена N
  2941.                 db  'N'    ;имя N
  2942.                 db    2    ;номер N
  2943.                 db  #30    ;код N
  2944.                 db    1    ;цена P
  2945.                 db  'P'    ;имя P
  2946.                 db    1    ;номер P
  2947.                 db  #40    ;код P
  2948.  
  2949. ; =============== S U B R O U T I N E =======================================
  2950.  
  2951. ChangeLevel_ifL:                                ; CODE XREF: sub_8C20:loc_83D1
  2952.                                         ; sub_8C20:loc_863F
  2953.                 cp      'L'
  2954.                 scf
  2955.                 ret     nz
  2956.                 ld      a, (curlevel)
  2957. loc_8D22:                               ; CODE XREF: ChangeLevel_ifL+8 ChangeLevel_ifL+C
  2958.                 inc     a
  2959.                 jr      z, loc_8D22
  2960.                 cp      #D
  2961.                 jr      nc, loc_8D22
  2962.                 ld      (curlevel), a
  2963. ; End of function ChangeLevel_ifL
  2964. ; =============== S U B R O U T I N E =======================================
  2965. PrintCurLevel:                          ; CODE XREF: sub_9EE6+23
  2966.                 ld      a, (curlevel)
  2967.                 push    af
  2968.                 or      a
  2969.                 call    sub_A915
  2970.  
  2971.                 ld      a, #FF
  2972.                 ld      (NEED_SCR2BUF), a
  2973.                 pop     af
  2974.                 ld      de, #41B
  2975.                 ld      (scr_XY), de
  2976.                 cp      #A
  2977.                 jr      nc, loc_8D56
  2978.  
  2979.                 push    af
  2980.                 ld      a, ' '
  2981.                 call    PRINT_LETTER
  2982.                 pop     af
  2983.                 add     a, '0'
  2984.                 call    PRINT_LETTER
  2985.  
  2986.                 ld      hl,  a_8spaces+5
  2987.                 jr      loc_8D65
  2988. ; ---------------------------------------------------------------------------
  2989. loc_8D56:                               ; CODE XREF: PrintCurLevel+17
  2990.                 ld      hl, a_ADAP      ; "ADA"
  2991.                 jr      z, loc_8D65
  2992.                 ld      hl, a_INF       ; "INF"
  2993.                 cp      #B
  2994.                 jr      z, loc_8D65
  2995.                 ld      hl, aProb       ; "PRO"
  2996. loc_8D65:                               ; CODE XREF: PrintCurLevel+28 PrintCurLevel+2D ...
  2997.                 call    PRINT_STR_FF
  2998.                 xor     a
  2999.                 ret
  3000.  
  3001. ; End of function PrintCurLevel
  3002.  
  3003.  
  3004. ; =============== S U B R O U T I N E =======================================
  3005.  
  3006.  
  3007. sub_8D6A:                               ; CODE XREF: sub_8C20-706
  3008.                                         ; sub_8DE9+68
  3009.                 ld      a, (timeformove)
  3010.                 ld      c, a
  3011.                 ld      b, 0
  3012.                 ld      h, b
  3013.                 ld      l, c
  3014.                 add     hl, hl
  3015.                 add     hl, hl ;*4
  3016.                 add     hl, bc
  3017.                 add     hl, bc
  3018.                 add     hl, bc ;*7
  3019.                 ld      bc, (INC_SECONDS)
  3020.                 dec     bc
  3021.                 dec     bc
  3022.                 bit     7, b
  3023.                 jr      z, loc_8D84
  3024.                 ld      bc, 0
  3025. loc_8D84:                               ; CODE XREF: sub_8D6A+15
  3026.                 add     hl, bc
  3027.                 ld      b, 3
  3028. loc_8D87:                               ; CODE XREF: sub_8D6A+21
  3029.                 srl     h
  3030.                 rr      l
  3031.                 djnz    loc_8D87 ;*7/8
  3032.  
  3033.                 ld      a, h
  3034.                 or      a
  3035.                 jr      z, loc_8D93
  3036.                 ld      l, #FE
  3037. loc_8D93:                               ; CODE XREF: sub_8D6A+25
  3038.                 ld      a, l
  3039.                 cp      2
  3040.                 jr      nc, loc_8D9A
  3041.                 ld      a, 2
  3042. loc_8D9A:                               ; CODE XREF: sub_8D6A+2C
  3043.                 ld      (timeformove), a
  3044.                 ret
  3045.  
  3046. ; End of function sub_8D6A
  3047.  
  3048.  
  3049. ; =============== S U B R O U T I N E =======================================
  3050.  
  3051.  
  3052. sub_8D9E:                               ; CODE XREF: sub_8C20-989
  3053.                                         ; sub_9128+10E ...
  3054.                 push    ix
  3055.                 push    hl
  3056.                 push    de
  3057.                 push    bc
  3058.                 ld      hl, byte_D0B4
  3059.                 bit     5, (hl)
  3060.                 jr      z, loc_8DB0 ;visible board?
  3061.  
  3062.                 call    BEEP_move
  3063.  
  3064.                 call    sub_8C2D
  3065.  
  3066. loc_8DB0:                               ; CODE XREF: sub_8D9E+A
  3067.                 ld      a, (SEL_SCRorBUF)
  3068.                 or      a
  3069.                 jr      z, loc_8DBC
  3070.  
  3071.                 call    ShowBOARD2
  3072.  
  3073.                 jp      loc_8E2C
  3074.  
  3075. ; ---------------------------------------------------------------------------
  3076.  
  3077. loc_8DBC:                               ; CODE XREF: sub_8D9E+16
  3078.                 ld      a, (byte_D0C4) ;a=0b0YYY0XXX
  3079.                 call    sub_96F7 ;count scr_XY, scr_pix_addr, scr_attr_addr with swap board
  3080.  
  3081.                 ld      hl, (scr_XY)
  3082.                 ld      (word_D0C6), hl
  3083.                 ld      a, (byte_D0C5) ;a=0b0YYY0XXX
  3084.                 call    sub_96F7 ;count scr_XY, scr_pix_addr, scr_attr_addr with swap board
  3085.  
  3086.                 ld      hl, (scr_XY)
  3087.                 ld      (word_D0C8), hl
  3088.                 ld      bc, (word_D0C6)
  3089.                 call    sub_8EFB ;write bc=scr_XY, scr_pix_addr, scr_attr_addr to TAPE_header+...
  3090.  
  3091.                 call    sub_8E81
  3092.  
  3093.                 ld      hl, byte_D0DF
  3094.                 set     0, (hl)
  3095.                 xor     a
  3096.                 ld      (DECREMENT_50HZ), a
  3097.                 jr      loc_8DF3
  3098.  
  3099. ; End of function sub_8D9E
  3100.  
  3101.  
  3102. ; =============== S U B R O U T I N E =======================================
  3103.  
  3104.  
  3105. sub_8DE9:                               ; CODE XREF: sub_8F4D:loc_8FBC
  3106.                 ld      a, (DECREMENT_50HZ)
  3107.                 or      a
  3108.                 ret     p
  3109.                 push    ix
  3110.                 push    hl
  3111.                 push    de
  3112.                 push    bc
  3113.  
  3114.  
  3115. loc_8DF3:                               ; CODE XREF: sub_8D9E+49
  3116.                 call    sub_8EA7
  3117.  
  3118.                 ld      hl, (word_D0C6)
  3119.                 ld      de, (word_D0C8)
  3120.                 ld      a, h
  3121.                 cp      d
  3122.                 jr      z, loc_8E06
  3123.  
  3124.                 inc     h
  3125.                 jr      c, loc_8E06
  3126.  
  3127.                 dec     h
  3128.                 dec     h
  3129.  
  3130.  
  3131. loc_8E06:                               ; CODE XREF: sub_8DE9+16 sub_8DE9+19
  3132.                 ld      a, l
  3133.                 cp      e
  3134.                 jr      z, loc_8E0F
  3135.  
  3136.                 inc     l
  3137.                 jr      c, loc_8E0F
  3138.  
  3139.                 dec     l
  3140.                 dec     l
  3141.  
  3142.  
  3143. loc_8E0F:                               ; CODE XREF: sub_8DE9+1F sub_8DE9+22
  3144.                 ld      (word_D0C6), hl
  3145.                 or      a
  3146.                 sbc     hl, de
  3147.                 push    af
  3148.                 ld      bc, (word_D0C6)
  3149.                 call    sub_8EFB ;write bc=scr_XY, scr_pix_addr, scr_attr_addr to TAPE_header+...
  3150.  
  3151.                 call    sub_8EA3
  3152.  
  3153.                 pop     af
  3154.                 jr      z, loc_8E2C
  3155.  
  3156.                 ld      hl, DECREMENT_50HZ
  3157.                 ld      a, (hl)
  3158.                 add     a, 8            ; figure move speed
  3159.                 ld      (hl), a
  3160.                 jr      loc_8E7B
  3161.  
  3162. ; ---------------------------------------------------------------------------
  3163.  
  3164. loc_8E2C:                               ; CODE XREF: sub_8D9E+1B sub_8DE9+38
  3165.                 ld      hl, byte_D0B4
  3166.                 bit     5, (hl)
  3167.                 jr      z, loc_8E73 ;visible board?
  3168.  
  3169.                 call    sub_A6E4
  3170.  
  3171.                 call    sub_9FB2 ;добавление хода на экране со скроллом?
  3172.  
  3173.                 ld      a, (byte_D0B6)
  3174.                 bit     2, a
  3175.                 call    nz, sub_A684
  3176.  
  3177.                 ld      hl, BOARD2
  3178.                 ld      de, BOARD
  3179.                 ld      bc, #40
  3180.                 ldir
  3181.                 ld      a, (curlevel)
  3182.                 cp      #A
  3183.                 call    z, sub_8D6A
  3184.  
  3185.                 ld      hl, (INC_SECONDS)
  3186.                 ld      (word_D02B), hl
  3187.                 ld      hl, 0
  3188.                 ld      (INC_SECONDS), hl
  3189.                 call    ShowBOARD
  3190.  
  3191.                 ld      hl, byte_D0B3 ;d3=swap board
  3192.                 bit     5, (hl)
  3193.                 ld      hl, byte_D0B4
  3194.                 jr      z, loc_8E71
  3195.                 set     7, (hl)
  3196.                 res     1, (hl)
  3197.  
  3198. loc_8E71:                               ; CODE XREF: sub_8DE9+82
  3199.                 res     5, (hl) ;visible board?
  3200.  
  3201. loc_8E73:                               ; CODE XREF: sub_8DE9+48
  3202.                 ld      hl, byte_D0DF
  3203.                 res     0, (hl)
  3204.                 call    sub_9F0D ;show state and help
  3205.  
  3206. loc_8E7B:                               ; CODE XREF: sub_8DE9+41
  3207.                 pop     bc
  3208.                 pop     de
  3209.                 pop     hl
  3210.                 pop     ix
  3211.                 ret
  3212.  
  3213. ; End of function sub_8DE9
  3214.  
  3215.  
  3216. ; =============== S U B R O U T I N E =======================================
  3217.  
  3218.  
  3219. sub_8E81:                               ; CODE XREF: sub_8D9E+3D
  3220.                 ld      c, 3
  3221.                 ld      hl,  TAPE_header+2
  3222.  
  3223.  
  3224. loc_8E86:                               ; CODE XREF: sub_8E81+1A
  3225.                 ld      b, #18
  3226.                 xor     a
  3227.  
  3228.  
  3229. loc_8E89:                               ; CODE XREF: sub_8E81+A
  3230.                 ld      (hl), a
  3231.                 inc     hl
  3232.                 djnz    loc_8E89
  3233.  
  3234.                 ld      e, (hl)
  3235.                 inc     hl
  3236.                 ld      d, (hl)
  3237.                 inc     hl
  3238.                 ld      b, 3
  3239.                 ld      a, (de)
  3240.  
  3241.  
  3242. loc_8E94:                               ; CODE XREF: sub_8E81+15
  3243.                 ld      (hl), a
  3244.                 inc     hl
  3245.                 djnz    loc_8E94
  3246.  
  3247.                 inc     hl
  3248.                 inc     hl
  3249.                 dec     c
  3250.                 jr      nz, loc_8E86
  3251.  
  3252.                 and     7
  3253.                 ld      (byte_D0CB), a
  3254.                 ret
  3255.  
  3256. ; End of function sub_8E81
  3257.  
  3258.  
  3259. ; =============== S U B R O U T I N E =======================================
  3260.  
  3261.  
  3262. sub_8EA3:                               ; CODE XREF: sub_8DE9+34
  3263.                 ld      a, 1
  3264.                 jr      loc_8EA8
  3265.  
  3266. ; End of function sub_8EA3
  3267.  
  3268.  
  3269. ; =============== S U B R O U T I N E =======================================
  3270.  
  3271.  
  3272. sub_8EA7:                               ; CODE XREF: sub_8DE9:loc_8DF3
  3273.                 xor     a
  3274.  
  3275.  
  3276. loc_8EA8:                               ; CODE XREF: sub_8EA3+2
  3277.                 ld      (byte_D0CC), a
  3278.                 ld      b, 3
  3279.                 exx
  3280.                 ld      hl, TAPE_header
  3281.  
  3282.  
  3283. loc_8EB1:                               ; CODE XREF: sub_8EA7+3B sub_8EA7+51
  3284.                 ld      e, (hl)
  3285.                 inc     hl
  3286.                 ld      d, (hl)
  3287.                 inc     hl
  3288.                 ld      c, 8
  3289.  
  3290.  
  3291. loc_8EB7:                               ; CODE XREF: sub_8EA7+20
  3292.                 push    de
  3293.                 ld      b, 3
  3294.  
  3295.  
  3296. loc_8EBA:                               ; CODE XREF: sub_8EA7+1B
  3297.                 ld      a, (de)
  3298.                 ex      af, af' ;'
  3299.                 ld      a, (hl)
  3300.                 ld      (de), a
  3301.                 ex      af, af' ;'
  3302.                 ld      (hl), a
  3303.                 inc     de
  3304.                 inc     hl
  3305.                 djnz    loc_8EBA
  3306.  
  3307.                 pop     de
  3308.                 inc     d
  3309.                 dec     c
  3310.                 jr      nz, loc_8EB7
  3311.  
  3312.                 ld      e, (hl)
  3313.                 inc     hl
  3314.                 ld      d, (hl)
  3315.                 inc     hl
  3316.                 ld      a, (byte_D0CC)
  3317.                 or      a
  3318.                 jr      nz, loc_8EE5
  3319.  
  3320.                 ld      b, 3
  3321.  
  3322.  
  3323. loc_8ED5:                               ; CODE XREF: sub_8EA7+36
  3324.                 ld      a, (de)
  3325.                 ex      af, af' ;'
  3326.                 ld      a, (hl)
  3327.                 ld      (de), a
  3328.                 ex      af, af' ;'
  3329.                 ld      (hl), a
  3330.                 inc     hl
  3331.                 inc     de
  3332.                 djnz    loc_8ED5
  3333.  
  3334.                 exx
  3335.                 dec     b
  3336.                 exx
  3337.                 jr      nz, loc_8EB1
  3338.  
  3339.                 ret
  3340.  
  3341. ; ---------------------------------------------------------------------------
  3342.  
  3343. loc_8EE5:                               ; CODE XREF: sub_8EA7+2A
  3344.                 ld      a, (byte_D0CB)
  3345.                 ld      c, a
  3346.                 ld      b, 3
  3347.  
  3348.  
  3349. loc_8EEB:                               ; CODE XREF: sub_8EA7+4C
  3350.                 ld      a, (de)
  3351.                 ld      (hl), a
  3352.                 and     #F8 ; 'ш'
  3353.                 or      c
  3354.                 ld      (de), a
  3355.                 inc     hl
  3356.                 inc     de
  3357.                 djnz    loc_8EEB
  3358.  
  3359.                 exx
  3360.                 dec     b
  3361.                 exx
  3362.                 jr      nz, loc_8EB1
  3363.  
  3364.                 ret
  3365.  
  3366. ; End of function sub_8EA7
  3367.  
  3368.  
  3369. ; =============== S U B R O U T I N E =======================================
  3370. ;write bc=scr_XY, scr_pix_addr, scr_attr_addr to TAPE_header+...
  3371.  
  3372. sub_8EFB:                               ; CODE XREF: sub_8D9E+3A sub_8DE9+31
  3373.                 ld      ix, TAPE_header
  3374.                 ld      (scr_XY), bc
  3375.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  3376.  
  3377.                 ld      hl, (scr_pix_addr)
  3378.                 ld      (ix+0), l
  3379.                 ld      (ix+1), h
  3380.                 ld      hl, (scr_attr_addr)
  3381.                 ld      (ix+#1A), l
  3382.                 ld      (ix+#1B), h
  3383.                 inc     b
  3384.                 ld      (scr_XY), bc
  3385.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  3386.  
  3387.                 ld      hl, (scr_pix_addr)
  3388.                 ld      (ix+#1F), l
  3389.                 ld      (ix+#20), h
  3390.                 ld      hl, (scr_attr_addr)
  3391.                 ld      (ix+#39), l
  3392.                 ld      (ix+#3A), h
  3393.                 inc     b
  3394.                 ld      (scr_XY), bc
  3395.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  3396.  
  3397.                 ld      hl, (scr_pix_addr)
  3398.                 ld      (ix+#3E), l
  3399.                 ld      (ix+#3F), h
  3400.                 ld      hl, (scr_attr_addr)
  3401.                 ld      (ix+#58), l
  3402.                 ld      (ix+#59), h
  3403.                 ret
  3404.  
  3405. ; End of function sub_8EFB
  3406.  
  3407.  
  3408. ; =============== S U B R O U T I N E =======================================
  3409.  
  3410.  
  3411. sub_8F4D:                               ; CODE XREF: sub_8C20-A6F
  3412.                                         ; sub_8C20:loc_829A ...
  3413.                 push    ix
  3414.                 push    iy
  3415.                 ld      hl, bas_5C78
  3416.                 ld      a, (hl)
  3417.                 cp      50
  3418.                 jr      c, loc_8F9B
  3419.                 sub     50
  3420.                 ld      (hl), a
  3421.  
  3422.                 ;1 second passed
  3423.                 ld      hl, (INC_SECONDS)
  3424.                 inc     hl
  3425.                 ld      (INC_SECONDS), hl
  3426.  
  3427.                 ld      a, (byte_D0B4)
  3428.                 bit     5, a
  3429.                 jr      nz, loc_8F94 ;invisible board?
  3430.  
  3431.                 bit     6, a
  3432.                 jr      z, loc_8F94
  3433.  
  3434.                 ld      a, (timeformove)
  3435.                 inc     a
  3436.                 jr      z, loc_8F94
  3437.  
  3438.                 push    bc
  3439.                 ld      a, (byte_D0F3)
  3440.                 ld      b, 0
  3441.                 add     a, a
  3442.                 rl      b
  3443.                 cp      l
  3444.                 jr      nz, loc_8F93
  3445.  
  3446.                 ld      a, b
  3447.                 cp      h
  3448.                 jr      nz, loc_8F93
  3449.  
  3450.                 ld      hl, byte_D0B4
  3451.                 set     7, (hl)
  3452.                 ld      hl, timenorm
  3453.                 dec     (hl)
  3454.                 ld      a, (hl)
  3455.                 and     #F0
  3456.                 jr      nz, loc_8F93
  3457.                 inc     (hl)
  3458. loc_8F93:                               ; CODE XREF: sub_8F4D+31 sub_8F4D+35 ...
  3459.                 pop     bc
  3460.  
  3461.  
  3462. loc_8F94:                               ; CODE XREF: sub_8F4D+1B sub_8F4D+1F ...
  3463.                 ld      a, (byte_D0DF)
  3464.                 rra
  3465.                 call    nc, sub_9018
  3466.  
  3467.  
  3468. loc_8F9B:                               ; CODE XREF: sub_8F4D+A
  3469.                 ld      a, (byte_D0DF)
  3470.                 rra
  3471.                 jr      c, loc_8FBC
  3472.  
  3473.                 call    KEY_SCAN
  3474.                 push    af
  3475.                 ld      hl, byte_D0DF
  3476.                 bit     5, (hl)
  3477.                 jr      z, loc_8FB2
  3478.  
  3479.                 pop     af
  3480.                 call    sub_924C
  3481.  
  3482.                 jr      loc_8FB6
  3483.  
  3484. ; ---------------------------------------------------------------------------
  3485.  
  3486. loc_8FB2:                               ; CODE XREF: sub_8F4D+5D
  3487.                 pop     af
  3488.                 call    c, sub_8FC1
  3489.  
  3490.  
  3491. loc_8FB6:                               ; CODE XREF: sub_8F4D+63 sub_8F4D+72
  3492.                 pop     iy
  3493.                 pop     ix
  3494.                 or      a
  3495.                 ret
  3496.  
  3497. ; ---------------------------------------------------------------------------
  3498.  
  3499. loc_8FBC:                               ; CODE XREF: sub_8F4D+52
  3500.                 call    sub_8DE9
  3501.  
  3502.                 jr      loc_8FB6
  3503.  
  3504. ; End of function sub_8F4D
  3505.  
  3506.  
  3507. ; =============== S U B R O U T I N E =======================================
  3508.  
  3509.  
  3510. sub_8FC1:                               ; CODE XREF: sub_8F4D+66
  3511.  
  3512. ; FUNCTION CHUNK AT 90E1 SIZE 00000007 BYTES
  3513.  
  3514.                 ld      hl, keycodeformenu
  3515.                 ld      a, (hl)
  3516.                 ld      (hl), 0
  3517.                 cp      ' '
  3518.                 jp      z, sub_95C5
  3519.  
  3520.                 cp      'G'
  3521.                 call    z, sub_92D7
  3522.  
  3523.                 ld      (hl), a
  3524.                 ld      hl, byte_D0B4
  3525.                 bit     6, (hl)
  3526.                 jr      z, loc_8FFC
  3527.  
  3528.                 ld      a, (keycodeformenu)
  3529.                 cp      'M'
  3530.                 ld      hl, byte_D0B4
  3531.                 jr      nz, loc_8FE7
  3532.  
  3533.                 set     7, (hl)
  3534.                 res     1, (hl)
  3535.  
  3536. loc_8FE7:                               ; CODE XREF: sub_8FC1+20
  3537.                 bit     5, (hl)
  3538.                 jp      nz, loc_90E1 ;invisible board?
  3539.  
  3540.                 ld      hl, keycodeformenu
  3541.                 ld      a, (hl)
  3542.                 ld      (hl), 0
  3543.                 cp      'H'
  3544.                 ret     nz
  3545.                 ld      hl, (tbl_D803)
  3546.                 call    ShowHintMove
  3547.                 ret
  3548.  
  3549. ; ---------------------------------------------------------------------------
  3550.  
  3551. loc_8FFC:                               ; CODE XREF: sub_8FC1+16
  3552.                 ld      hl, keycodeformenu
  3553.                 ld      a, (hl)
  3554.                 ld      hl, byte_D0DF
  3555.                 bit     3, (hl)
  3556.                 jr      z, loc_9008
  3557.                 ret
  3558. ; ---------------------------------------------------------------------------
  3559. loc_9008:                               ; CODE XREF: sub_8FC1+44
  3560.                 or      a
  3561.                 ret     nz
  3562.                 call    sub_9128 ;ввод имени поля?
  3563.                 ret
  3564.  
  3565. ; End of function sub_8FC1
  3566.  
  3567. ; ---------------------------------------------------------------------------
  3568. ; START OF FUNCTION CHUNK FOR HotKeys
  3569.  
  3570. HotKeys_keepkey_pop_ret:                                ; CODE XREF: HotKeys+A HotKeys+F ...
  3571.                 ld      (curkey_D0D9), a
  3572.                 ld      hl, byte_D0B4
  3573.                 set     7, (hl)
  3574.                 pop     af
  3575.                 ret
  3576.  
  3577. ; END OF FUNCTION CHUNK FOR HotKeys
  3578.  
  3579. ; =============== S U B R O U T I N E =======================================
  3580.  
  3581.  
  3582. sub_9018:                               ; CODE XREF: sub_8F4D+4B
  3583.                 ld      a, (byte_D04D)
  3584.                 rra
  3585.                 ret     c
  3586.                 ld      a, (byte_D0BF)
  3587.                 or      a
  3588.                 ret     p
  3589.                 push    iy
  3590.                 push    bc
  3591.                 push    de
  3592.                 ld      hl, (scr_XY)
  3593.                 push    hl
  3594.                 call    sub_A164
  3595.  
  3596.                 ld      de, CLK_1
  3597.                 ld      hl, #405
  3598.                 jr      c, loc_903A
  3599.  
  3600.                 ld      de, CLK_2
  3601.                 ld      l, #F
  3602.  
  3603.  
  3604. loc_903A:                               ; CODE XREF: sub_9018+1B
  3605.                 ld      (scr_XY), hl
  3606.                 push    de
  3607.                 ex      de, hl
  3608.                 ld      de, 7
  3609.                 add     hl, de
  3610.                 push    hl
  3611.                 res     7, (hl)
  3612.  
  3613.  
  3614. loc_9046:                               ; CODE XREF: sub_9018+41
  3615.                 inc     (hl)
  3616.                 ld      a, (hl)
  3617.                 cp      #3A ; ':'
  3618.                 jr      c, loc_905B
  3619.  
  3620.                 ld      (hl), #30 ; '0'
  3621.                 dec     hl
  3622.                 inc     (hl)
  3623.                 ld      a, (hl)
  3624.                 cp      #36 ; '6'
  3625.                 jr      c, loc_905B
  3626.  
  3627.                 ld      (hl), #30 ; '0'
  3628.                 dec     hl
  3629.                 dec     hl
  3630.                 jr      loc_9046
  3631.  
  3632. ; ---------------------------------------------------------------------------
  3633.  
  3634. loc_905B:                               ; CODE XREF: sub_9018+32 sub_9018+3B
  3635.                 pop     hl
  3636.                 set     7, (hl)
  3637.                 pop     hl
  3638.                 push    hl
  3639.                 call    PRINT_STR_FF
  3640.  
  3641.                 call    sub_A150
  3642.  
  3643.                 ld      hl, #1100
  3644.                 jr      c, loc_906D
  3645.  
  3646.                 ld      h, 9
  3647.  
  3648.  
  3649. loc_906D:                               ; CODE XREF: sub_9018+51
  3650.                 ld      (scr_XY), hl
  3651.                 pop     hl
  3652.                 inc     hl
  3653.                 call    PRINT_STR_scr0
  3654.  
  3655.                 pop     hl
  3656.                 ld      (scr_XY), hl
  3657.                 pop     de
  3658.                 pop     bc
  3659.                 pop     iy
  3660.                 ret
  3661.  
  3662. ; End of function sub_9018
  3663.  
  3664.  
  3665. ; =============== S U B R O U T I N E =======================================
  3666.  
  3667.  
  3668. sub_907E:                               ; CODE XREF: sub_8C20:loc_A2DA
  3669.                                         ; sub_8C20+175A ...
  3670.                 push    hl
  3671.                 ld      hl, bas_FLAGS
  3672.  
  3673.  
  3674. loc_9082:                               ; CODE XREF: sub_907E+E sub_907E+1F
  3675.                 ld      a, #7F
  3676.                 in      a, (#FE) ;TODO fix
  3677.                 rra
  3678.                 ccf
  3679.                 jr      c, space_pressed
  3680.  
  3681.                 bit     bit_NEW_KEY, (hl)               ; keypressed bit
  3682.                 jr      z, loc_9082
  3683.  
  3684.                 res     bit_NEW_KEY, (hl)
  3685.                 ld      a, (bas_LAST_K)
  3686.                 cp      #C
  3687.                 jr      z, space_pressed
  3688.  
  3689.                 cp      #D
  3690.                 jr      z, space_pressed
  3691.  
  3692.                 cp      #21 ; '!'
  3693.                 jr      c, loc_9082
  3694.  
  3695.                 or      a
  3696.  
  3697.  
  3698. space_pressed:                          ; CODE XREF: sub_907E+A sub_907E+17     ...
  3699.                 push    af
  3700.                 call    BEEP_4
  3701.  
  3702.                 pop     af
  3703.                 pop     hl
  3704.                 ret
  3705.  
  3706. ; End of function sub_907E
  3707.  
  3708.  
  3709.  
  3710.  
  3711. KEY_SCAN:
  3712.                 xor     a                       ;CY=0
  3713.                 ld      hl, bas_FLAGS
  3714.                 bit     bit_NEW_KEY, (hl)
  3715.                 ret     z                       ;return with CY=0 if nothing pressed
  3716.                 res     bit_NEW_KEY, (hl)
  3717.                 ld      (keycode), a
  3718.                 ld      (keycodeformenu), a
  3719.                 ld      a, (bas_LAST_K)
  3720.                 cp      'I'
  3721.                 jr      nc, loc_90D6    ; >='I'
  3722.                 cp      'A'
  3723.                 jr      nc, loc_90D1    ; >='A'
  3724.                 cp      '9'
  3725.                 jr      nc, loc_90D6    ; >='9'
  3726.                 cp      '1'
  3727.                 jr      nc, loc_90D1    ; >='1'
  3728.                 cp      8
  3729.                 ccf
  3730.                 ret     nc      ;report scancodes 0..7 as non-keypresses
  3731.                 cp      #E
  3732.                 jr      nc, loc_90D6    ; >=#0E
  3733. loc_90D1:
  3734.                 ; when scancode copied here:
  3735.                 ;  'A'<=SCANCODE<='H'
  3736.                 ;  '1'<=SCANCODE<='8'
  3737.                 ;  8<=SCANCODE<#0E
  3738.                 ; 8-LEFT,9-RIGHT,10-DOWN,11-UP
  3739.                 ld      (keycode), a
  3740.                 scf                     ;CY=1 was keypress
  3741.                 ret
  3742. loc_90D6:
  3743.                 cp      'A'
  3744.                 jr      c, loc_90DC     ; <'A'
  3745.                 and     #5F             ;uppercase letters
  3746. loc_90DC:
  3747.                 ; when scancode copied here:
  3748.                 ;  SCANCODE>='I', 'a'..'z' are uppercased
  3749.                 ;  '9'<=SCANCODE<'A'
  3750.                 ;  #0E<=SCANCODE<'1'
  3751.                 ld      (keycodeformenu), a
  3752.                 scf                     ;CY=1 was keypress
  3753.                 ret
  3754.  
  3755. ; End of function KEY_SCAN
  3756.  
  3757. ; ---------------------------------------------------------------------------
  3758. ; START OF FUNCTION CHUNK FOR sub_8FC1
  3759.  
  3760. loc_90E1:                               ; CODE XREF: sub_8FC1+28
  3761.                 call    HotKeys
  3762.  
  3763.                 call    sub_9128 ;ввод имени поля?
  3764.  
  3765.                 ret
  3766.  
  3767. ; END OF FUNCTION CHUNK FOR sub_8FC1
  3768.  
  3769. ; =============== S U B R O U T I N E =======================================
  3770.  
  3771.  
  3772. HotKeys:                                ; CODE XREF: sub_8FC1:loc_90E1
  3773.  
  3774. ; FUNCTION CHUNK AT 900E SIZE 0000000A BYTES
  3775. ; FUNCTION CHUNK AT 92CB SIZE 0000000C BYTES
  3776. ; FUNCTION CHUNK AT 9326 SIZE 00000032 BYTES
  3777. ; FUNCTION CHUNK AT 935D SIZE 00000003 BYTES
  3778.  
  3779.                 ld      hl, keycodeformenu
  3780.                 ld      a, (hl)
  3781.                 or      a
  3782.                 ret     z
  3783.                 ld      (hl), 0
  3784.                 cp      #4D ; 'M'
  3785.                 jp      z, HotKeys_keepkey_pop_ret
  3786.  
  3787.                 cp      #42 ; 'B'
  3788.                 jp      z, HotKeys_keepkey_pop_ret
  3789.  
  3790.                 cp      #46 ; 'F'
  3791.                 jp      z, loc_92CB ;F=Forward
  3792.  
  3793.                 cp      #48 ; 'H'
  3794.                 jp      z, loc_9340
  3795.  
  3796.                 cp      #49 ; 'I'
  3797.                 jp      z, loc_9326
  3798.  
  3799.                 cp      #44 ; 'D'
  3800.                 jp      z, HotKeys_keepkey_pop_ret
  3801.  
  3802.                 cp      #41 ; 'A'
  3803.                 jp      z, HotKeys_keepkey_pop_ret
  3804.  
  3805.                 cp      #53 ; 'S'
  3806.                 jp      z, HotKeys_keepkey_pop_ret
  3807.  
  3808.                 cp      #4C ; 'L'
  3809.                 jp      z, loc_935D ;L=Level
  3810.  
  3811.                 cp      #43 ; 'C'
  3812.                 jp      z, HotKeys_keepkey_pop_ret
  3813.  
  3814.                 cp      #50 ; 'P'
  3815.                 jp      z, HotKeys_keepkey_pop_ret
  3816.  
  3817.                 ret
  3818.  
  3819. ; End of function HotKeys
  3820.  
  3821.  
  3822. ; =============== S U B R O U T I N E =======================================
  3823.  
  3824.  
  3825. sub_9128:                               ; CODE XREF: sub_8FC1+49
  3826. ;ввод имени поля?                                       ; sub_8FC1+123
  3827.  
  3828. ; FUNCTION CHUNK AT 9290 SIZE 00000010 BYTES
  3829.  
  3830.                 ld      hl, keycode
  3831.                 ld      a, (hl)
  3832.                 or      a
  3833.                 ret     z
  3834.                 ld      (hl), 0
  3835.                 ld      bc, (needdrawcursorfrom)
  3836.                 cp      #D
  3837.                 jp      z, loc_91CE ;Enter
  3838.  
  3839.                 cp      #C
  3840.                 jp      z, loc_9290
  3841.  
  3842.                 jp      loc_9163 ;ввод символьного имени поля
  3843.  
  3844. ; ---------------------------------------------------------------------------
  3845.  
  3846. ReDrawMoveAndCursors:                           ; CODE XREF: sub_9128+50 sub_9128+70 ...
  3847.                 push    bc
  3848.                 ld      a, b
  3849.                 cp      #FF
  3850.                 call    nz, UnDrawCursor
  3851.  
  3852.                 pop     bc
  3853.                 ld      a, c
  3854.                 cp      #FF
  3855.                 call    nz, UnDrawCursor
  3856.  
  3857.                 ld      a, (needdrawcursor1)
  3858.                 cp      #FF
  3859.                 call    nz, DrawCursor
  3860.  
  3861.                 ld      a, (needdrawcursorfrom)
  3862.                 cp      #FF
  3863.                 call    nz, DrawCursorFrom
  3864.  
  3865.                 call    PrepareAndPrintMoveText
  3866.                 ret
  3867.  
  3868. ; ---------------------------------------------------------------------------
  3869.  
  3870. loc_9163:                               ; CODE XREF: sub_9128+16
  3871.                 cp      #41 ; 'A'
  3872.                 jr      c, loc_917B
  3873.  
  3874.                 cp      #49 ; 'H'+1
  3875.                 jr      nc, loc_917B
  3876.  
  3877.                 push    bc
  3878.                 sub     #41 ; 'A'
  3879.                 ld      b, a
  3880.                 ld      hl,  needdrawcursor1
  3881.                 ld      a, (hl)
  3882.                 and     #F0
  3883.                 or      b
  3884.                 ld      (hl), a
  3885.                 pop     bc
  3886.                 jp      ReDrawMoveAndCursors
  3887.  
  3888. ; ---------------------------------------------------------------------------
  3889.  
  3890. loc_917B:                               ; CODE XREF: sub_9128+3D sub_9128+41
  3891.                 cp      #31 ; '1'
  3892.                 jr      c, loc_919B
  3893.  
  3894.                 cp      #39 ; '9'
  3895.                 jr      nc, loc_919B
  3896.  
  3897.                 push    bc
  3898.                 sub     #31
  3899.                 neg
  3900.                 add     a, 7
  3901.                 rlca
  3902.                 rlca
  3903.                 rlca
  3904.                 rlca
  3905.                 ld      b, a
  3906.                 ld      hl,  needdrawcursor1
  3907.                 ld      a, (hl)
  3908.                 and     #F
  3909.                 or      b
  3910.                 ld      (hl), a
  3911.                 pop     bc
  3912.                 jp      ReDrawMoveAndCursors
  3913.  
  3914. ; ---------------------------------------------------------------------------
  3915.  
  3916. loc_919B:                               ; CODE XREF: sub_9128+55 sub_9128+59
  3917.                 push    bc
  3918.                 ld      hl, byte_D0B3 ;d3=swap board
  3919.                 bit     3, (hl)
  3920.                 jr      z, loc_91A5
  3921.                 xor     1
  3922. loc_91A5:                               ; CODE XREF: sub_9128+79
  3923.                 ld      b, a
  3924.                 xor     a
  3925.                 bit     1, b
  3926.                 jr      nz, loc_91B5
  3927.  
  3928.                 bit     0, b
  3929.                 jr      z, loc_91B2
  3930.  
  3931.                 inc     a
  3932.                 jr      loc_91BF
  3933.  
  3934. ; ---------------------------------------------------------------------------
  3935.  
  3936. loc_91B2:                               ; CODE XREF: sub_9128+85
  3937.                 dec     a
  3938.                 jr      loc_91BF
  3939.  
  3940. ; ---------------------------------------------------------------------------
  3941.  
  3942. loc_91B5:                               ; CODE XREF: sub_9128+81
  3943.                 bit     0, b
  3944.                 jr      nz, loc_91BD
  3945.  
  3946.                 add     a, #10
  3947.                 jr      loc_91BF
  3948.  
  3949. ; ---------------------------------------------------------------------------
  3950.  
  3951. loc_91BD:                               ; CODE XREF: sub_9128+8F
  3952.                 sub     #10
  3953. loc_91BF:                               ; CODE XREF: sub_9128+88 sub_9128+8B ...
  3954.                 ld      hl,  needdrawcursor1
  3955.                 add     a, (hl)
  3956.                 ld      b, a
  3957.                 and     #77
  3958.                 cp      b
  3959.                 jr      nz, loc_91CA
  3960.                 ld      (hl), a
  3961. loc_91CA:                               ; CODE XREF: sub_9128+9F
  3962.                 pop     bc
  3963.                 jp      ReDrawMoveAndCursors
  3964.  
  3965. ; ---------------------------------------------------------------------------
  3966.  
  3967. loc_91CE: ;Enter pressed                                ; CODE XREF: sub_9128+E
  3968.                 ld      a, (byte_D0DF)
  3969.                 bit     2, a
  3970.                 ret     nz
  3971.                 ld      a, c ;needdrawcursorfrom
  3972.                 cp      b
  3973.                 jr      nz, loc_91E0
  3974.  
  3975.                 ld      a, #FF
  3976.                 ld      (needdrawcursorfrom), a
  3977.                 jp      ReDrawMoveAndCursors
  3978. ; ---------------------------------------------------------------------------
  3979. loc_91E0:                               ; CODE XREF: sub_9128+AE
  3980.                 inc     a
  3981.                 jr      nz, loc_91F0
  3982.  
  3983.                 call    sub_92A0
  3984.                 jp      nz, ReDrawMoveAndCursors
  3985.                 ld      a, b
  3986.                 ld      (needdrawcursorfrom), a
  3987.                 jp      ReDrawMoveAndCursors
  3988. ; ---------------------------------------------------------------------------
  3989. loc_91F0: ;accept move?                         ; CODE XREF: sub_9128+B9
  3990.                 call    sub_92B6
  3991.  
  3992.                 jp      nz, ReDrawMoveAndCursors
  3993.  
  3994.                 push    bc
  3995.                 push    hl
  3996.                 ld      a, (needdrawcursorfrom)
  3997.                 ld      (byte_D0C4), a
  3998.                 ld      a, (needdrawcursor1)
  3999.                 ld      (byte_D0C5), a
  4000.                 call    UnDrawMoveAndCursors
  4001.  
  4002.                 pop     ix
  4003.                 ld      hl, byte_D0B4
  4004.                 bit     5, (hl)
  4005.                 jr      z, loc_922A ;visible board?
  4006.  
  4007.                 ld      d, (ix+0)
  4008.                 ld      e, (ix+1)
  4009.                 ld      hl, (word_D0DA)
  4010.                 or      a
  4011.                 sbc     hl, de
  4012.                 jr      z, loc_9231
  4013.  
  4014.                 pop     bc
  4015.  
  4016. loc_921F:                               ; CODE XREF: sub_924C+22
  4017.                 ld      hl, byte_D0B4
  4018.                 set     7, (hl)
  4019.                 ld      hl, byte_D0DF
  4020.                 set     4, (hl)
  4021.                 ret
  4022.  
  4023. ; ---------------------------------------------------------------------------
  4024.  
  4025. loc_922A:                               ; CODE XREF: sub_9128+E6
  4026.                 ld      hl, byte_D0DF
  4027.                 set     4, (hl)
  4028.                 pop     bc
  4029.                 ret
  4030.  
  4031. ; ---------------------------------------------------------------------------
  4032.  
  4033. loc_9231:                               ; CODE XREF: sub_9128+F4
  4034.                 pop     bc
  4035.                 ld      a, (byte_D0DC)
  4036.                 or      a
  4037.                 jp      z, sub_8D9E
  4038.  
  4039.                 ld      hl, byte_D0DF
  4040.                 ld      a, (hl)
  4041.                 or      #E0
  4042.                 ld      (hl), a
  4043.                 call    UnDrawMoveAndCursors
  4044.  
  4045.                 call    ShowBOARD2
  4046.  
  4047.                 ld      a, #14
  4048.                 ld      (DECREMENT_50HZ), a
  4049.                 ret
  4050.  
  4051. ; End of function sub_9128
  4052.  
  4053.  
  4054. ; =============== S U B R O U T I N E =======================================
  4055.  
  4056.  
  4057. sub_924C:                               ; CODE XREF: sub_8F4D+60
  4058.                 ld      hl, keycodeformenu
  4059.                 ld      a, (hl)
  4060.                 or      a
  4061.                 jr      z, loc_9279
  4062.  
  4063.                 ld      (hl), 0
  4064.                 cp      #20 ; ' '
  4065.                 jp      z, sub_95C5
  4066.  
  4067.                 ld      (byte_D0DC), a
  4068.                 ld      hl, byte_D0DF
  4069.                 bit     6, (hl)
  4070.                 res     6, (hl)
  4071.                 res     5, (hl)
  4072.                 call    nz, ShowBOARD
  4073.  
  4074.                 ld      a, (byte_D0DC)
  4075.                 cp      #51 ; 'Q'
  4076.                 jp      nz, loc_921F
  4077.  
  4078.                 ld      hl, byte_D0DF
  4079.                 res     7, (hl)
  4080.                 jp      sub_8D9E
  4081.  
  4082. ; ---------------------------------------------------------------------------
  4083.  
  4084. loc_9279:                               ; CODE XREF: sub_924C+5
  4085.                 ld      hl, DECREMENT_50HZ
  4086.                 ld      a, (hl)
  4087.                 or      a
  4088.                 ret     p
  4089.                 ld      (hl), #14
  4090.                 ld      hl, byte_D0DF
  4091.                 ld      a, (hl)
  4092.                 xor     #40
  4093.                 ld      (hl), a
  4094.                 and     #40
  4095.                 jp      nz, ShowBOARD2
  4096.  
  4097.                 jp      ShowBOARD
  4098.  
  4099. ; End of function sub_924C
  4100.  
  4101. ; ---------------------------------------------------------------------------
  4102. ; START OF FUNCTION CHUNK FOR sub_9128
  4103.  
  4104. loc_9290:                               ; CODE XREF: sub_9128+13
  4105.                 ld      a, #FF
  4106.                 cp      c
  4107.                 ret     z
  4108.                 ld      a, #FF
  4109.                 ld      (needdrawcursorfrom), a
  4110.                 ld      a, c
  4111.                 ld      (needdrawcursor1), a
  4112.                 jp      ReDrawMoveAndCursors
  4113.  
  4114. ; END OF FUNCTION CHUNK FOR sub_9128
  4115.  
  4116. ; =============== S U B R O U T I N E =======================================
  4117.  
  4118.  
  4119. sub_92A0:                               ; CODE XREF: sub_9128+BB
  4120.                 ld      hl, unk_F000
  4121.  
  4122.  
  4123. loc_92A3:                               ; CODE XREF: sub_92A0+D
  4124.                 ld      a, (hl)
  4125.                 cp      #FF
  4126.                 jr      z, loc_92AF
  4127.  
  4128.                 cp      b
  4129.                 ret     z
  4130.                 inc     hl
  4131.                 inc     hl
  4132.                 inc     hl
  4133.                 jr      loc_92A3
  4134.  
  4135. ; ---------------------------------------------------------------------------
  4136.  
  4137. loc_92AF:                               ; CODE XREF: sub_92A0+6 sub_92B6+6
  4138.                 push    af
  4139.                 call    BEEP_3
  4140.  
  4141.                 pop     af
  4142.                 or      a
  4143.                 ret
  4144.  
  4145. ; End of function sub_92A0
  4146.  
  4147.  
  4148. ; =============== S U B R O U T I N E =======================================
  4149.  
  4150.  
  4151. sub_92B6:                               ; CODE XREF: sub_9128:loc_91F0
  4152. ;проверка валидности хода b-c? (рокировка = ход королём на указанную клетку, TODO ход королём на свою ладью! иначе некоторые рокировки не ввести)
  4153.                 ld      hl, unk_F000
  4154.  
  4155.  
  4156. loc_92B9:                               ; CODE XREF: sub_92B6+13
  4157.                 ld      a, (hl)
  4158.                 cp      #FF
  4159.                 jr      z, loc_92AF
  4160.  
  4161.                 cp      c
  4162.                 jr      nz, loc_92C6
  4163.  
  4164.                 inc     hl
  4165.                 ld      a, (hl)
  4166.                 dec     hl
  4167.                 cp      b
  4168.                 ret     z
  4169.  
  4170.  
  4171. loc_92C6:                               ; CODE XREF: sub_92B6+9
  4172.                 inc     hl
  4173.                 inc     hl
  4174.                 inc     hl
  4175.                 jr      loc_92B9
  4176.  
  4177. ; End of function sub_92B6
  4178.  
  4179. ; ---------------------------------------------------------------------------
  4180. ; START OF FUNCTION CHUNK FOR HotKeys
  4181.  
  4182. loc_92CB:                               ; CODE XREF: HotKeys+14
  4183. ;F=Forward
  4184.                 ld      hl, (ptr_stk_1bvalue)
  4185.                 ld      l, (hl)
  4186.                 inc     l
  4187.                 jp      nz, HotKeys_keepkey_pop_ret     ; if not #FF
  4188.  
  4189.                 call    BEEP_3
  4190.  
  4191.                 ret
  4192.  
  4193. ; END OF FUNCTION CHUNK FOR HotKeys
  4194.  
  4195. ; =============== S U B R O U T I N E =======================================
  4196.  
  4197.  
  4198. sub_92D7:                               ; CODE XREF: sub_8FC1+D
  4199.  
  4200. ; FUNCTION CHUNK AT 809A SIZE 00000007 BYTES
  4201.  
  4202.                 push    af
  4203.                 push    bc
  4204.                 push    de
  4205.                 push    hl
  4206.                 call    sub_9933
  4207.  
  4208.                 ld      hl, #1500
  4209.                 ld      (scr_XY), hl
  4210.                 ld      hl, aNew        ; " NEW "
  4211.                 call    PRINT_STR_scr0
  4212.  
  4213.                 ld      de, #C00
  4214.                 ld      (scr_XY), de
  4215.                 ld      hl, aNewGameYN  ; "NEW GAME (Y/N)?"
  4216.                 call    PRINT_STR_FF
  4217.  
  4218.  
  4219. loc_92F7:
  4220.                 call    KEY_SCAN
  4221.                 jr      nc, loc_92F7
  4222.  
  4223.                 push    af
  4224.                 ld      hl, #1500
  4225.                 ld      (scr_XY), hl
  4226.                 ld      hl, a_8spaces   ; "       "
  4227.                 call    PRINT_STR_scr0
  4228.  
  4229.                 pop     af
  4230.                 cp      'Y'
  4231.                 jp      z, loc_809A ;9EE6 + NEW_GAME
  4232.  
  4233.                 call    BEEP_move
  4234.  
  4235.                 ld      hl,  a_32spaces+#C
  4236.                 ld      de, #C00
  4237.                 ld      (scr_XY), de
  4238.                 call    PRINT_STR_FF
  4239.  
  4240.                 pop     hl
  4241.                 ld      (hl), 0
  4242.                 pop     de
  4243.                 pop     bc
  4244.                 pop     af
  4245.                 ret
  4246.  
  4247. ; End of function sub_92D7
  4248.  
  4249. ; ---------------------------------------------------------------------------
  4250. ; START OF FUNCTION CHUNK FOR HotKeys
  4251.  
  4252. loc_9326:                               ; CODE XREF: HotKeys+1E
  4253.                 call    UnDrawMoveAndCursors
  4254.  
  4255.                 ld      hl, byte_D0B3
  4256.                 ld      a, (hl)
  4257.                 xor     8
  4258.                 ld      (hl), a ;d3=swap board
  4259.                 call    RotateBOARD
  4260.  
  4261.                 call    ShowBOARD
  4262.  
  4263.                 call    RotateBOARD2
  4264.  
  4265.                 call    DrawMoveAndCursors
  4266.  
  4267.                 call    sub_A177
  4268.  
  4269.                 ret
  4270.  
  4271. ; ---------------------------------------------------------------------------
  4272.  
  4273. loc_9340:                               ; CODE XREF: HotKeys+19
  4274.                 ld      hl, (word_D25A)
  4275.                 call    UnDrawMoveAndCursors
  4276.  
  4277.                 call    ShowBOARD2
  4278.  
  4279.                 call    BEEP_move
  4280.  
  4281.                 ld      a, #14
  4282.                 call    halt_A_frames
  4283.  
  4284.                 call    ShowBOARD
  4285.  
  4286.                 call    DrawMoveAndCursors
  4287.  
  4288.                 ret
  4289.  
  4290. ; END OF FUNCTION CHUNK FOR HotKeys
  4291.  
  4292.  
  4293.  
  4294. halt_A_frames:
  4295.  
  4296.                 halt
  4297.                 dec     a
  4298.                 ret     z
  4299.                 jr      halt_A_frames
  4300.  
  4301.  
  4302. ; ---------------------------------------------------------------------------
  4303. ; START OF FUNCTION CHUNK FOR HotKeys
  4304.  
  4305. loc_935D:                               ; CODE XREF: HotKeys+32
  4306. ;L=Level
  4307.                 jp      HotKeys_keepkey_pop_ret
  4308.  
  4309. ; END OF FUNCTION CHUNK FOR HotKeys
  4310.  
  4311. ; =============== S U B R O U T I N E =======================================
  4312.  
  4313.  
  4314. RotateBOARD:                            ; CODE XREF: HotKeys+248
  4315.                 ld      hl, BOARD
  4316.                 ld      de,  BOARD+#3F
  4317.                 jp      loc_936F
  4318. ; End of function RotateBOARD
  4319. ; =============== S U B R O U T I N E =======================================
  4320. RotateBOARD2:                           ; CODE XREF: HotKeys+24E
  4321.                 ld      hl, BOARD2
  4322.                 ld      de, BOARD2+63
  4323. loc_936F:                               ; CODE XREF: RotateBOARD+6
  4324.                 ld      b, #20 ; ' '
  4325. _loc_9371:                              ; CODE XREF: RotateBOARD2+F
  4326.                 ld      c, (hl)
  4327.                 ld      a, (de)
  4328.                 ld      (hl), a
  4329.                 ld      a, c
  4330.                 ld      (de), a
  4331.                 inc     hl
  4332.                 dec     de
  4333.                 djnz    _loc_9371
  4334.                 ret
  4335.  
  4336. ; End of function RotateBOARD2
  4337.  
  4338.  
  4339. ; =============== S U B R O U T I N E =======================================
  4340.  
  4341.  
  4342. ShowBOARD2:                             ; CODE XREF: sub_8C20-97C
  4343.                                         ; sub_8D9E+18   ...
  4344.                 ld      hl,  BOARD2+#3F
  4345.                 jr      loc_9383
  4346. ; End of function ShowBOARD2
  4347. ; =============== S U B R O U T I N E =======================================
  4348. ShowBOARD:                              ; CODE XREF: sub_8DE9+77 sub_924C+1A ...
  4349.                 ld      hl,  BOARD+#3F
  4350. loc_9383:                               ; CODE XREF: ShowBOARD2+3
  4351.                 ld      b, #40
  4352. _loc_9385:                              ; CODE XREF: ShowBOARD+1C
  4353.                 ld      a, (hl)
  4354.                 push    bc
  4355.                 push    de
  4356.                 push    hl
  4357.                 ld      c, a
  4358.                 ld      a, b
  4359.                 dec     a
  4360.                 ld      hl, byte_D0B3 ;d3=swap board
  4361.                 bit     3, (hl)
  4362.                 jr      z, _loc_9395
  4363.                 xor     #3F
  4364. _loc_9395:                              ; CODE XREF: ShowBOARD+11
  4365.                 call    SHOW_FIG_POS
  4366.  
  4367.                 pop     hl
  4368.                 pop     de
  4369.                 pop     bc
  4370.                 dec     hl
  4371.                 djnz    _loc_9385
  4372.                 ret
  4373. ; End of function ShowBOARD
  4374.  
  4375.  
  4376. ; =============== S U B R O U T I N E =======================================
  4377.  
  4378.  
  4379. sub_939F:                               ; CODE XREF: sub_8C20-B31
  4380.                                         ; sub_8C20:loc_8226 ...
  4381.                 ld      hl, BOARD2
  4382.                 jr      loc_93A7
  4383.  
  4384. ; End of function sub_939F
  4385.  
  4386.  
  4387. ; =============== S U B R O U T I N E =======================================
  4388.  
  4389.  
  4390. sub_93A4:                               ; CODE XREF: sub_8C20-AE1
  4391.                                         ; sub_8C20:loc_84BF ...
  4392.                 ld      hl, BOARD
  4393.  
  4394.  
  4395. loc_93A7:                               ; CODE XREF: sub_939F+3
  4396.                 ld      (TMP_BOARD_PTR), hl
  4397.                 ld      b, 0
  4398.                 ld      hl, BRD_88_0
  4399.  
  4400.  
  4401. loc_93AF:                               ; CODE XREF: sub_93A4+78 sub_93A4+81
  4402.                 push    hl
  4403.                 ld      a, (hl)
  4404.                 and     #43 ; 'C'
  4405.                 cp      #43 ; 'C'
  4406.                 ld      a, (hl)
  4407.                 jr      nz, loc_93C3
  4408.  
  4409.                 ld      c, 1
  4410.                 bit     7, (hl)
  4411.                 jr      nz, loc_93C0
  4412.  
  4413.                 set     3, c
  4414.  
  4415.  
  4416. loc_93C0:                               ; CODE XREF: sub_93A4+18
  4417.                 jp      loc_93F2
  4418.  
  4419. ; ---------------------------------------------------------------------------
  4420.  
  4421. loc_93C3:                               ; CODE XREF: sub_93A4+12
  4422.                 ld      c, 0
  4423.                 or      a
  4424.                 jr      z, loc_93F2
  4425.  
  4426.                 and     #F8 ; 'ш'
  4427.                 inc     a
  4428.                 ld      l, a
  4429.                 inc     h
  4430.                 ld      c, 6
  4431.                 ld      a, #F
  4432.                 and     (hl)
  4433.                 jr      z, loc_93EC
  4434.  
  4435.                 ld      c, 1
  4436.                 cp      1
  4437.                 jr      z, loc_93EC
  4438.  
  4439.                 ld      c, 4
  4440.                 cp      5
  4441.                 jr      z, loc_93EC
  4442.  
  4443.                 ld      c, 5
  4444.                 jr      nc, loc_93EC
  4445.  
  4446.                 ld      c, 2
  4447.                 bit     7, (hl)
  4448.                 jr      z, loc_93EC
  4449.  
  4450.                 ld      c, 3
  4451.  
  4452.  
  4453. loc_93EC:                               ; CODE XREF: sub_93A4+2E sub_93A4+34 ...
  4454.                 bit     7, l
  4455.                 jr      nz, loc_93F2
  4456.  
  4457.                 set     3, c
  4458.  
  4459.  
  4460. loc_93F2:                               ; CODE XREF: sub_93A4:loc_93C0
  4461.                                         ; sub_93A4+22   ...
  4462.                 ld      a, b
  4463.                 ld      hl, byte_D0B3
  4464.                 bit     3, (hl) ;d3=swap board
  4465.                 jr      z, loc_93FC
  4466.  
  4467.                 xor     #3F ; '?'
  4468.  
  4469.  
  4470. loc_93FC:                               ; CODE XREF: sub_93A4+54
  4471.                 ld      hl, (TMP_BOARD_PTR)
  4472.                 ld      e, a
  4473.                 ld      d, 0
  4474.                 add     hl, de
  4475.                 ld      a, c
  4476.                 cp      (hl)
  4477.                 jr      z, loc_9417
  4478.  
  4479.                 ld      (hl), a
  4480.                 push    bc
  4481.                 ld      hl, (TMP_BOARD_PTR)
  4482.                 ld      de, BOARD2
  4483.                 or      a
  4484.                 sbc     hl, de
  4485.                 ld      a, b
  4486.                 call    nz, SHOW_FIG_POS
  4487.  
  4488.                 pop     bc
  4489.  
  4490.  
  4491. loc_9417:                               ; CODE XREF: sub_93A4+61
  4492.                 pop     hl
  4493.                 inc     hl
  4494.                 inc     b
  4495.                 bit     3, l
  4496.                 jp      z, loc_93AF
  4497.  
  4498.                 ld      de, 8
  4499.                 add     hl, de
  4500.                 bit     7, l
  4501.                 jp      z, loc_93AF
  4502.  
  4503.                 ret
  4504.  
  4505. ; End of function sub_93A4
  4506.  
  4507.  
  4508. ; =============== S U B R O U T I N E =======================================
  4509.  
  4510.  
  4511. CLR_BOARD:                              ; CODE XREF: START_POINT+87
  4512.                                         ; sub_8C20-B7C
  4513.                 di
  4514.                 ld      hl, BOARD
  4515.                 ld      b, #40 ; '@'
  4516.                 xor     a
  4517.  
  4518.  
  4519. loc_9430:                               ; CODE XREF: CLR_BOARD+9
  4520.                 ld      (hl), a
  4521.                 inc     hl
  4522.                 djnz    loc_9430
  4523.  
  4524.                 xor     a
  4525.                 ld      c, a
  4526.  
  4527.  
  4528. loc_9436:                               ; CODE XREF: CLR_BOARD+15
  4529.                 push    af
  4530.                 call    SH_EMPT_POS ;show square
  4531.                 pop     af
  4532.                 inc     a
  4533.                 cp      #40 ; '@'
  4534.                 jr      nz, loc_9436
  4535.  
  4536.                 ei
  4537.                 ret
  4538.  
  4539. ; End of function CLR_BOARD
  4540.  
  4541.  
  4542. ; =============== S U B R O U T I N E =======================================
  4543.  
  4544.  
  4545. SH_EMPT_POS:                            ; CODE XREF: ShowHintMove+37 CLR_BOARD+E
  4546.                 ld      c, 0
  4547.  
  4548. ; End of function SH_EMPT_POS
  4549.  
  4550.  
  4551. ; =============== S U B R O U T I N E =======================================
  4552.  
  4553. ; A - position (0..63)
  4554. ; C - figure:
  4555. ; 0..6: empty,pawn,knight,bishop,rook,queen,king ; 0..6 white, 8..E black
  4556.  
  4557. SHOW_FIG_POS:                           ; CODE XREF: ShowHintMove+31 ShowHintMove+49 ...
  4558.                 ld      b, a           
  4559.                 ld      d, #34 ; '4' ;attr: paper=6, ink=4
  4560.                 and     9
  4561.                 jr      z, loc_9451
  4562.                 cp      9
  4563.                 jr      z, loc_9451
  4564.                 ld      d, #26 ; '&' ;attr: paper=4, ink=6
  4565. loc_9451:                               ; CODE XREF: SHOW_FIG_POS+5
  4566.                                         ; SHOW_FIG_POS+9
  4567.                 dec     c
  4568.                 inc     c
  4569.                 jr      z, loc_9463 ;empty figure - use default attr
  4570.  
  4571.                 ld      a, d
  4572.                 and     #F8
  4573.                 ld      d, a ;attr=paper
  4574.                 ld      a, 0
  4575.                 bit     3, c
  4576.                 jr      nz, loc_9461 ;nz=black
  4577.                 ld      a, 7 ;white
  4578. loc_9461:                               ; CODE XREF: SHOW_FIG_POS+19
  4579.                 or      d
  4580.                 ld      d, a ;attr
  4581.  
  4582. loc_9463:                               ; CODE XREF: SHOW_FIG_POS+F
  4583.                 push    bc
  4584.                 push    de
  4585.                 ld      a, b ;position (0..63)
  4586.                 call    sub_95FA ;out: a=0b0YYY0XXX
  4587.  
  4588.                 call    sub_9703 ;calc scr_XY, scr_pix_addr, scr_attr_addr
  4589.  
  4590.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  4591.  
  4592.                 call    sub_9609 ;recount scr_pix_addr, scr_attr_addr to scrbuf if needed
  4593.  
  4594.                 ld      hl, (scr_attr_addr)
  4595.                 pop     de
  4596.                 ld      b, 3
  4597. loc_9478:                               ; CODE XREF: SHOW_FIG_POS:loc_9484
  4598.                 ld      (hl), d ;attr
  4599.                 inc     hl
  4600.                 ld      (hl), d ;attr
  4601.                 inc     hl
  4602.                 ld      (hl), d ;attr
  4603.                 ld      a, #1E
  4604.                 add     a, l
  4605.                 ld      l, a
  4606.                 jr      nc, loc_9484
  4607.                 inc     h
  4608. loc_9484:                               ; CODE XREF: SHOW_FIG_POS+3D
  4609.                 djnz    loc_9478 ;set attr for figure
  4610.  
  4611.                 pop     bc
  4612.                 ld      hl, (scr_pix_addr)
  4613.                 push    hl
  4614.                 ld      a, c
  4615.                 and     7
  4616.                 ld      b, a
  4617.                 add     a, a
  4618.                 add     a, a
  4619.                 add     a, a
  4620.                 add     a, b
  4621.                 ld      l, a
  4622.                 ld      h, 0
  4623.                 add     hl, hl
  4624.                 add     hl, hl
  4625.                 add     hl, hl
  4626.                 ld      de, FIG_sprites
  4627.                 add     hl, de
  4628.                 ex      de, hl
  4629.                 pop     hl
  4630.                 ld      a, 3
  4631.                 ex      af, af' ;'
  4632. loc_94A2:                               ; CODE XREF: SHOW_FIG_POS+78
  4633.                                         ; SHOW_FIG_POS+7E
  4634.                 push    hl
  4635.                 ld      c, 3
  4636. loc_94A5:                               ; CODE XREF: SHOW_FIG_POS+6D
  4637.                 push    hl
  4638.                 ld      b, 8
  4639. loc_94A8:                               ; CODE XREF: SHOW_FIG_POS+68
  4640.                 ld      a, (de)
  4641.                 ld      (hl), a
  4642.                 inc     de
  4643.                 inc     h
  4644.                 djnz    loc_94A8
  4645.  
  4646.                 pop     hl
  4647.                 inc     hl
  4648.                 dec     c
  4649.                 jr      nz, loc_94A5
  4650.  
  4651.                 pop     hl
  4652.                 ex      af, af' ;'
  4653.                 dec     a
  4654.                 ret     z
  4655.                 ex      af, af' ;'
  4656.                 ld      a, #20 ; ' '
  4657.                 add     a, l
  4658.                 ld      l, a
  4659.                 jr      nc, loc_94A2
  4660.  
  4661.                 ld      a, h
  4662.                 add     a, 8
  4663.                 ld      h, a
  4664.                 jr      loc_94A2
  4665.  
  4666. ; End of function SHOW_FIG_POS
  4667.  
  4668.  
  4669. ; =============== S U B R O U T I N E =======================================
  4670.  
  4671.  
  4672. sub_94C4:                               ; CODE XREF: sub_8C20-B2E
  4673.                 ld      hl, BOARD2
  4674.                 jr      loc_94CC
  4675.  
  4676. ; End of function sub_94C4
  4677.  
  4678.  
  4679. ; =============== S U B R O U T I N E =======================================
  4680.  
  4681.  
  4682. sub_94C9:                               ; CODE XREF: sub_8C20+16ED
  4683.                 ld      hl, BOARD
  4684.  
  4685.  
  4686. loc_94CC:                               ; CODE XREF: sub_94C4+3
  4687.                 push    hl
  4688.                 call    sub_A43C
  4689.  
  4690.                 call    sub_A43C
  4691.  
  4692.                 pop     hl
  4693.                 ld      b, 8
  4694.                 ld      d, #FF
  4695.                 ld      e, #39 ; '9'
  4696.                 ld      a, (byte_D0B3) ;d3=swap board
  4697.                 bit     3, a
  4698.                 jr      z, loc_94E5
  4699.  
  4700.                 ld      d, 1
  4701.                 ld      e, #30 ; '0'
  4702.  
  4703.  
  4704. loc_94E5:                               ; CODE XREF: sub_94C9+16 sub_94C9+59
  4705.                 ld      c, 8
  4706.                 ld      a, e
  4707.                 add     a, d
  4708.                 ld      e, a
  4709.                 call    loc_A476
  4710.  
  4711.                 ld      a, #20 ; ' '
  4712.                 call    loc_A476
  4713.  
  4714.  
  4715. loc_94F2:                               ; CODE XREF: sub_94C9+51
  4716.                 ld      a, (hl)
  4717.                 push    hl
  4718.                 push    de
  4719.                 push    bc
  4720.                 ld      c, a
  4721.                 and     7
  4722.                 jr      nz, loc_94FF
  4723.  
  4724.                 ld      a, #2E ; '.'
  4725.                 jr      loc_950D
  4726.  
  4727. ; ---------------------------------------------------------------------------
  4728.  
  4729. loc_94FF:                               ; CODE XREF: sub_94C9+30
  4730.                 ld      hl, KING+1
  4731.                 call    sub_8CF7 ;поиск класса фигуры по номеру
  4732.  
  4733.                 dec     hl
  4734.                 ld      a, (hl)
  4735.                 bit     3, c
  4736.                 jr      z, loc_950D
  4737.  
  4738.                 or      #20 ; ' '
  4739.  
  4740.  
  4741. loc_950D:                               ; CODE XREF: sub_94C9+34 sub_94C9+40
  4742.                 call    loc_A476
  4743.  
  4744.                 ld      a, #20 ; ' '
  4745.                 call    loc_A476
  4746.  
  4747.                 pop     bc
  4748.                 pop     de
  4749.                 pop     hl
  4750.                 inc     hl
  4751.                 dec     c
  4752.                 jr      nz, loc_94F2
  4753.  
  4754.                 call    sub_A43C
  4755.  
  4756.                 call    sub_A43C
  4757.  
  4758.                 djnz    loc_94E5
  4759.  
  4760.                 ld      a, d
  4761.                 neg
  4762.                 ld      d, a
  4763.                 ld      a, e
  4764.                 add     a, #30 ; '0'
  4765.                 ld      e, a
  4766.                 ld      b, 2
  4767.  
  4768.  
  4769. loc_952E:                               ; CODE XREF: sub_94C9+6A
  4770.                 ld      a, #20 ; ' '
  4771.                 call    loc_A476
  4772.  
  4773.                 djnz    loc_952E
  4774.  
  4775.                 ld      b, 8
  4776.  
  4777.  
  4778. loc_9537:                               ; CODE XREF: sub_94C9+7A
  4779.                 ld      a, e
  4780.                 call    loc_A476
  4781.  
  4782.                 ld      a, #20 ; ' '
  4783.                 call    loc_A476
  4784.  
  4785.                 ld      a, e
  4786.                 add     a, d
  4787.                 ld      e, a
  4788.                 djnz    loc_9537
  4789.  
  4790.                 call    sub_A43C
  4791.  
  4792.                 call    sub_A43C
  4793.  
  4794.                 ret
  4795.  
  4796. ; End of function sub_94C9
  4797.  
  4798.  
  4799. ; =============== S U B R O U T I N E =======================================
  4800.  
  4801. sub_954C:                               ; CODE XREF: sub_8C20-AF1
  4802.                 call    sub_A164
  4803.                 ld      a, #70 ; 'p'
  4804.                 jr      c, loc_9554
  4805.                 xor     a
  4806. loc_9554:                               ; CODE XREF: sub_954C+5
  4807.                 ld      (needdrawcursor1), a
  4808.                 ld      a, #FF
  4809.                 ld      (needdrawcursorfrom), a
  4810.                 ret
  4811.  
  4812. ; End of function sub_954C
  4813.  
  4814.  
  4815. ; =============== S U B R O U T I N E =======================================
  4816. DrawMoveAndCursors:                             ; CODE XREF: sub_8C20-A94
  4817.                                         ; sub_8C20-88F ...
  4818.                 ld      a, (needdrawcursor1)
  4819.                 cp      #FF
  4820.                 call    nz, DrawCursor
  4821.                 ld      a, (needdrawcursorfrom)
  4822.                 cp      #FF
  4823.                 call    nz, DrawCursorFrom
  4824.                 call    PrepareAndPrintMoveText
  4825.                 ret
  4826. ; End of function DrawMoveAndCursors
  4827. ; =============== S U B R O U T I N E =======================================
  4828. UnDrawMoveAndCursors:                           ; CODE XREF: sub_8C20-AF4
  4829.                                         ; sub_8C20-85C ...
  4830.                 ld      a, (needdrawcursor1)
  4831.                 cp      #FF
  4832.                 call    nz, UnDrawCursor
  4833.                 ld      a, (needdrawcursorfrom)
  4834.                 cp      #FF
  4835.                 call    nz, UnDrawCursor
  4836.                 call    restore_6_spaces
  4837.                 ret
  4838. ; End of function UnDrawMoveAndCursors
  4839. ; =============== S U B R O U T I N E =======================================
  4840.  
  4841. DrawCursor:                             ; CODE XREF: sub_9128+2C DrawMoveAndCursors+5
  4842. ;A=номер поля?=0b0YYY0XXX
  4843.                 push    af
  4844.                 ld      a, (byte_D04D)
  4845.                 or      a
  4846.                 ld      d, 0   ;and
  4847.                 ld      e, #A9 ;or
  4848.                 jr      z, loc_9592
  4849.                 ld      e, #AA ;or
  4850. loc_9592:                               ; CODE XREF: DrawCursor+9
  4851.                 pop     af
  4852.                 jr      loc_959B
  4853. ; End of function DrawCursor
  4854. ; =============== S U B R O U T I N E =======================================
  4855. UnDrawCursor:                           ; CODE XREF: sub_8C20-20C
  4856.                                         ; sub_8C20-17C ...
  4857. ;A=номер поля?=0b0YYY0XXX
  4858.                 ld      d, #FF ;and
  4859.                 ld      e, 0   ;or
  4860.                 jr      loc_959B ;???
  4861. ; ---------------------------------------------------------------------------
  4862. loc_959B:                               ; CODE XREF: DrawCursor+E UnDrawCursor+4 ...
  4863. ;A=номер поля?=0b0YYY0XXX
  4864.                 push    hl
  4865.                 push    af
  4866.                 push    de
  4867.                 call    sub_95AE
  4868.                 pop     de
  4869.                 and     d
  4870.                 or      e
  4871.                 ld      (hl), a
  4872.                 pop     af
  4873.                 pop     hl
  4874.                 ret
  4875. ; End of function UnDrawCursor
  4876. ; =============== S U B R O U T I N E =======================================
  4877.  
  4878. DrawCursorFrom:                         ; CODE XREF: sub_9128+34 DrawMoveAndCursors+D
  4879.                 ld      d, 0   ;and
  4880.                 ld      e, #29 ;or
  4881.                 jr      loc_959B
  4882. ; End of function DrawCursorFrom
  4883. ; =============== S U B R O U T I N E =======================================
  4884.  
  4885. sub_95AE:                               ; CODE XREF: UnDrawCursor+9
  4886. ;A=номер поля?=0b0YYY0XXX
  4887.                 and     #77
  4888.                 ld      hl, byte_D0B3 ;d3=swap board
  4889.                 bit     3, (hl)
  4890.                 jr      z, loc_95B9
  4891.                 xor     #77
  4892. loc_95B9:                               ; CODE XREF: sub_95AE+7
  4893.                 call    sub_9703 ;calc scr_XY, scr_pix_addr, scr_attr_addr
  4894.  
  4895.                 ld      hl, (scr_attr_addr)
  4896.                 ld      a, (hl) ;нормальный цвет из угла клетки
  4897.                 ld      de, #21
  4898.                 add     hl, de ;позиция курсора на клетке
  4899.                 ret
  4900. ; End of function sub_95AE
  4901. ; =============== S U B R O U T I N E =======================================
  4902.  
  4903. sub_95C5:                               ; CODE XREF: sub_8FC1+8 sub_924C+B ...
  4904.                 ld      hl, SEL_SCRorBUF
  4905.                 ld      a, (hl)
  4906.                 cpl
  4907.                 ld      (hl), a
  4908.                 call    SET_BRD_COLOR
  4909.  
  4910.                 ld      hl, SCREEN
  4911.                 ld      de, SCR_BUF_6400
  4912.                 ld      c, #1B
  4913.                 ld      b, 0
  4914. loc_95D8:                               ; CODE XREF: sub_95C5+1B sub_95C5+1E
  4915.                 ld      a, (hl)
  4916.                 ex      af, af' ;'
  4917.                 ld      a, (de)
  4918.                 ld      (hl), a
  4919.                 ex      af, af' ;'
  4920.                 ld      (de), a
  4921.                 inc     hl
  4922.                 inc     de
  4923.                 djnz    loc_95D8
  4924.                 dec     c
  4925.                 jr      nz, loc_95D8
  4926.                 ret
  4927.  
  4928. ; End of function sub_95C5
  4929.  
  4930.                 ;unused data???
  4931.                 db      #47,#1F,#E6,#38,#4F,#78,#E6,#07,#81
  4932.  
  4933. ; =============== S U B R O U T I N E =======================================
  4934.  
  4935.  
  4936. sub_95EF:                               ; CODE XREF: sub_95FA+1
  4937.                 push    hl
  4938.                 ld      hl, byte_D0B3 ;d3=swap board
  4939.                 bit     3, (hl) ;swap board?
  4940.                 pop     hl
  4941.                 ret     z
  4942.                 xor     #3F
  4943.                 ret
  4944.  
  4945. ; End of function sub_95EF
  4946.  
  4947.  
  4948. ; =============== S U B R O U T I N E =======================================
  4949.  
  4950.  
  4951. sub_95FA:                               ; CODE XREF: SHOW_FIG_POS+22
  4952. ;a=position (0..63)
  4953.                 push    bc
  4954.                 call    sub_95EF ;swap board if needed
  4955.                 ld      b, a
  4956.                 and     #38
  4957.                 rlca
  4958.                 ld      c, a ;c=0b0YYY0000
  4959.                 ld      a, b
  4960.                 and     7
  4961.                 or      c    ;a=0b0YYY0XXX
  4962.                 pop     bc
  4963.                 ret
  4964.  
  4965. ; End of function sub_95FA
  4966.  
  4967.  
  4968. ; =============== S U B R O U T I N E =======================================
  4969. ;recount scr_pix_addr, scr_attr_addr to scrbuf if needed
  4970.  
  4971. sub_9609:                               ; CODE XREF: SHOW_FIG_POS+2B
  4972.                 ld      a, (SEL_SCRorBUF)
  4973.                 or      a
  4974.                 ret     z
  4975.                 jr      loc_9615
  4976.  
  4977. ; ---------------------------------------------------------------------------
  4978.                 ld      a, (SEL_SCRorBUF)
  4979.                 or      a
  4980.                 ret     nz
  4981.  
  4982.  
  4983. loc_9615:                               ; CODE XREF: sub_9609+5
  4984.                 push    de
  4985.                 push    hl
  4986.                 ld      de, #2400
  4987.                 ld      hl, (scr_pix_addr)
  4988.                 add     hl, de
  4989.                 ld      (scr_pix_addr), hl
  4990.                 ld      hl, (scr_attr_addr)
  4991.                 add     hl, de
  4992.                 ld      (scr_attr_addr), hl
  4993.                 pop     hl
  4994.                 pop     de
  4995.                 ret
  4996.  
  4997. ; End of function sub_9609
  4998.  
  4999.  
  5000. ; =============== S U B R O U T I N E =======================================
  5001.  
  5002.  
  5003. CLR_SCR_OR_BUF:                         ; CODE XREF: START_POINT+84
  5004.                 di
  5005.                 ld      hl, SCREEN
  5006.                 ld      a, (SEL_SCRorBUF)
  5007.                 or      a
  5008.                 jr      z, loc_9638
  5009.  
  5010.                 ld      hl, SCR_BUF_6400
  5011. loc_9638:                               ; CODE XREF: CLR_SCR_OR_BUF+8
  5012.                 ld      a, h
  5013.                 add     a, #18
  5014.                 ld      b, 0
  5015. loc_963D:                               ; CODE XREF: CLR_SCR_OR_BUF+15
  5016.                 ld      (hl), b
  5017.                 inc     hl
  5018.                 cp      h
  5019.                 jr      nz, loc_963D
  5020.  
  5021.                 ld      b, #28    ; ink=0, paper=5
  5022.                 add     a, 3
  5023. loc_9646:                               ; CODE XREF: CLR_SCR_OR_BUF+1E
  5024.                 ld      (hl), b
  5025.                 inc     hl
  5026.                 cp      h
  5027.                 jr      nz, loc_9646
  5028.  
  5029. ; End of function CLR_SCR_OR_BUF
  5030.  
  5031.  
  5032. ; =============== S U B R O U T I N E =======================================
  5033.  
  5034.  
  5035. SET_BRD_COLOR:                          ; CODE XREF: sub_95C5+6 FillAttrsAndBorder+30   ...
  5036.                 ld      a, (SEL_SCRorBUF)
  5037.                 or      a
  5038.                 ld      a, 5
  5039.                 jr      nz, loc_9655
  5040.                 ld      a, 5 ;???
  5041. loc_9655:                               ; CODE XREF: SET_BRD_COLOR+6
  5042.                 ld      (BRD_COLOR), a
  5043.                 out     (#FE),  a
  5044.                 ei
  5045.                 ret
  5046.  
  5047. ; End of function SET_BRD_COLOR
  5048.  
  5049.  
  5050. ; =============== S U B R O U T I N E =======================================
  5051.  
  5052.  
  5053. FillAttrsAndBorder:                             ; CODE XREF: sub_9EE6
  5054.                 di
  5055.                 ld      hl, 0
  5056.                 ld      (gamestatemsgaddr), hl
  5057.                 ld      hl, SCR_BUF_6400
  5058.                 ld      a, (SEL_SCRorBUF)
  5059.                 or      a
  5060.                 jr      z, loc_966F
  5061.                 ld      hl, SCREEN
  5062. loc_966F:                               ; CODE XREF: FillAttrsAndBorder+E
  5063.                 ld      a, h
  5064.                 add     a, #18
  5065.                 ld      b, 0
  5066. loc_9674:                               ; CODE XREF: FillAttrsAndBorder+1B
  5067.                 ld      (hl), b
  5068.                 inc     hl
  5069.                 cp      h
  5070.                 jr      nz, loc_9674
  5071.  
  5072.                 ld      c, #18
  5073.                 ld      de, fill_attrs
  5074. loc_967E:                               ; CODE XREF: FillAttrsAndBorder+2D
  5075.                 ld      b, #20 ; ' '
  5076.                 ld      a, (de)
  5077. loc_9681:                               ; CODE XREF: FillAttrsAndBorder+27
  5078.                 ld      (hl), a
  5079.                 inc     hl
  5080.                 djnz    loc_9681
  5081.                 dec     c
  5082.                 jr      z, loc_968B
  5083.                 inc     de
  5084.                 jr      loc_967E
  5085. ; ---------------------------------------------------------------------------
  5086. loc_968B:                               ; CODE XREF: FillAttrsAndBorder+2A
  5087.                 ei
  5088.                 jr      SET_BRD_COLOR
  5089.  
  5090. ; End of function FillAttrsAndBorder
  5091.  
  5092. ; ---------------------------------------------------------------------------
  5093. fill_attrs:     db  #3A,#3A,#29,#29,#29,#29,#29,#29
  5094.                 db  #29,#29,#29,#29,#29,#29,#29,#29
  5095.                 db  #32,#32,#32,#32,#32,#32,#32,#32
  5096.  
  5097. ; =============== S U B R O U T I N E =======================================
  5098.  
  5099.  
  5100. sub_96A6:                               ; CODE XREF: sub_8C20:NEW_GAME
  5101.                                         ; sub_8C20-5E7 ...
  5102.                 ld      hl, #600
  5103.                 ld      (scr_XY), hl
  5104.  
  5105.  
  5106. loc_96AC:                               ; CODE XREF: sub_96A6+11
  5107.                 ld      hl, a_32spaces  ; "                        "
  5108.                 call    PRINT_STR_FF
  5109.  
  5110.                 ld      a, (scr_XY+1)
  5111.                 cp      #D
  5112.                 jr      nz, loc_96AC
  5113.  
  5114.                 xor     a
  5115.                 ld      (byte_D0C0), a
  5116.                 ret
  5117.  
  5118. ; End of function sub_96A6
  5119.  
  5120.  
  5121. ; =============== S U B R O U T I N E =======================================
  5122.  
  5123.  
  5124. CALC_SCR_ADDRS:                         ; CODE XREF: sub_8EFB+8 sub_8EFB+22     ...
  5125.                 push    bc
  5126.                 push    de
  5127.                 push    hl
  5128.                 ld      bc, (scr_XY)
  5129.                 ld      a, b
  5130.                 ld      hl, SCREEN
  5131.                 ld      de, #800
  5132. loc_96CC:                               ; CODE XREF: CALC_SCR_ADDRS+15
  5133.                 cp      8
  5134.                 jr      c, loc_96D5
  5135.                 sub     8
  5136.                 add     hl, de
  5137.                 jr      loc_96CC
  5138. loc_96D5:                               ; CODE XREF: CALC_SCR_ADDRS+10
  5139.                 rrca
  5140.                 rrca
  5141.                 rrca
  5142.                 add     a, c
  5143.                 ld      e, a
  5144.                 ld      d, 0
  5145.                 add     hl, de
  5146.                 ld      (scr_pix_addr), hl
  5147.                 ld      l, b
  5148.                 ld      h, 0
  5149.                 add     hl, hl
  5150.                 add     hl, hl
  5151.                 add     hl, hl
  5152.                 add     hl, hl
  5153.                 add     hl, hl
  5154.                 ld      de, SCR_ATTRS
  5155.                 add     hl, de
  5156.                 ld      e, c
  5157.                 ld      d, 0
  5158.                 add     hl, de
  5159.                 ld      (scr_attr_addr), hl
  5160.                 pop     hl
  5161.                 pop     de
  5162.                 pop     bc
  5163.                 ret
  5164.  
  5165. ; End of function CALC_SCR_ADDRS
  5166.  
  5167.  
  5168. ; =============== S U B R O U T I N E =======================================
  5169.  
  5170.  
  5171. sub_96F7:                               ; CODE XREF: sub_8D9E+21 sub_8D9E+2D
  5172. ;a=0b0YYY0XXX
  5173.                 push    hl
  5174.                 ld      hl, byte_D0B3 ;d3=swap board
  5175.                 bit     3, (hl)
  5176.                 jr      z, loc_9704
  5177.  
  5178.                 xor     #77 ;swap board
  5179.                 jr      loc_9704
  5180.  
  5181. ; End of function sub_96F7
  5182.  
  5183.  
  5184. ; =============== S U B R O U T I N E =======================================
  5185. ;count scr_XY, scr_pix_addr, scr_attr_addr
  5186.  
  5187. sub_9703:                               ; CODE XREF: SHOW_FIG_POS+25
  5188.                                         ; sub_95AE:loc_95B9
  5189. ;a=0b0YYY0XXX
  5190.                 push    hl
  5191.  
  5192.  
  5193. loc_9704:                               ; CODE XREF: sub_96F7+6 sub_96F7+A
  5194. ;a=0b0YYY0XXX
  5195.                 push    de
  5196.                 push    bc
  5197.                 ld      c, a
  5198.                 and     #F0 ; 'р'
  5199.                 rlca
  5200.                 rlca
  5201.                 rlca
  5202.                 rlca
  5203.                 ld      b, a
  5204.                 add     a, a
  5205.                 add     a, b
  5206.                 ld      h, a
  5207.                 ld      a, c
  5208.                 and     #F
  5209.                 ld      b, a
  5210.                 add     a, a
  5211.                 add     a, b
  5212.                 add     a, 8
  5213.                 ld      l, a
  5214.                 ld      (scr_XY), hl
  5215.                 call    CALC_SCR_ADDRS ;scr_XY to scr_pix_addr, scr_attr_addr
  5216.  
  5217.                 ld      a, (SEL_SCRorBUF)
  5218.                 or      a
  5219.                 jr      z, loc_9737
  5220.  
  5221.                 ld      de, #2400
  5222.                 ld      hl, (scr_pix_addr)
  5223.                 add     hl, de
  5224.                 ld      (scr_pix_addr), hl
  5225.                 ld      hl, (scr_attr_addr)
  5226.                 add     hl, de
  5227.                 ld      (scr_attr_addr), hl
  5228.  
  5229. loc_9737:                               ; CODE XREF: sub_9703+21
  5230.                 pop     bc
  5231.                 pop     de
  5232.                 pop     hl
  5233.                 ret
  5234.  
  5235. ; End of function sub_9703
  5236.  
  5237. ; ---------------------------------------------------------------------------
  5238.  
  5239.  
  5240.         ;following table could be placed anywhere without alignment
  5241.  
  5242.                 ;--empty--
  5243. 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,
  5244.                 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,
  5245.                 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.
  5246.                 ;pawn
  5247.                 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
  5248.                 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
  5249.                 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
  5250.                 ;knight
  5251.                 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
  5252.                 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
  5253.                 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
  5254.                 ;bishop
  5255.                 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
  5256.                 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
  5257.                 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
  5258.                 ;rook
  5259.                 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
  5260.                 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
  5261.                 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
  5262.                 ;queen
  5263.                 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
  5264.                 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
  5265.                 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
  5266.                 ;king
  5267.                 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
  5268.                 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
  5269.                 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
  5270.  
  5271. ; =============== S U B R O U T I N E =======================================
  5272.  
  5273.  
  5274. sub_9933:                               ; CODE XREF: sub_92D7+4
  5275.                 call    BEEP_move
  5276.  
  5277.                 jp      BEEP_start
  5278.  
  5279. ; End of function sub_9933
  5280.  
  5281.  
  5282. ; =============== S U B R O U T I N E =======================================
  5283.  
  5284.  
  5285. sub_9939:                               ; CODE XREF: sub_8C20-5F
  5286.                 call    BEEP_start
  5287.  
  5288.                 call    BEEP_move
  5289.  
  5290. ; End of function sub_9939
  5291.  
  5292.  
  5293. ; =============== S U B R O U T I N E =======================================
  5294.  
  5295.  
  5296. BEEP_start:                             ; CODE XREF: sub_8C20-B76
  5297.                                         ; sub_8C20:loc_83E8 ...
  5298.                 push    hl
  5299.                 push    de
  5300.                 ld      hl, #511
  5301.                 ld      de, #A5 ; '?'
  5302.                 jr      BEEP_common
  5303.  
  5304. ; End of function BEEP_start
  5305.  
  5306.  
  5307. ; =============== S U B R O U T I N E =======================================
  5308.  
  5309.  
  5310. BEEP_move:                              ; CODE XREF: sub_8C20-A51
  5311.                                         ; sub_8C20-79C ...
  5312.                 push    hl
  5313.                 push    de
  5314.                 ld      hl, #43E
  5315.                 ld      de, #C4
  5316.                 jr      BEEP_common
  5317.  
  5318. ; End of function BEEP_move
  5319.  
  5320.  
  5321. ; =============== S U B R O U T I N E =======================================
  5322.  
  5323.  
  5324. BEEP_3:                                 ; CODE XREF: sub_8C20:loc_8419
  5325.                                         ; sub_8C20:loc_85DD ...
  5326.                 push    hl
  5327.                 push    de
  5328.                 ld      hl, #66A
  5329.                 ld      de, #83
  5330.                 jr      BEEP_common
  5331.  
  5332. ; End of function BEEP_3
  5333.  
  5334.  
  5335. ; =============== S U B R O U T I N E =======================================
  5336.  
  5337.  
  5338. BEEP_4:                                 ; CODE XREF: sub_907E+23
  5339.                 push    hl
  5340.                 push    de
  5341.                 ld      hl, #326
  5342.                 ld      de, #34
  5343.                 jr      BEEP_common
  5344.  
  5345. ; ---------------------------------------------------------------------------
  5346.                 push    hl
  5347.                 push    de
  5348.                 ld      hl, #326
  5349.                 ld      de, #105
  5350.  
  5351. BEEP_common:                            ; CODE XREF: BEEP_start+8
  5352.                                         ; BEEP_move+8   ...
  5353.                 di
  5354.                 call    BEEP_routine
  5355.                 ei
  5356.                 pop     de
  5357.                 pop     hl
  5358.                 ret
  5359.  
  5360. ; End of function BEEP_4
  5361.  
  5362.  
  5363. ; =============== S U B R O U T I N E =======================================
  5364.  
  5365.  
  5366. BEEP_routine:                           ; CODE XREF: BEEP_4+13
  5367.                 di
  5368.                 push    ix
  5369.                 push    bc
  5370.                 ld      a, l
  5371.                 srl     l
  5372.                 srl     l
  5373.                 cpl
  5374.                 and     3
  5375.                 ld      c, a
  5376.                 ld      b, 0
  5377.                 ld      ix, BEEP_loop
  5378.                 add     ix, bc
  5379.                 ld      a, (BRD_COLOR)
  5380.                 or      8
  5381. BEEP_loop:                              ; DATA XREF: BEEP_routine+F
  5382.                 nop
  5383.                 nop
  5384.                 nop
  5385.                 inc     b
  5386.                 inc     c
  5387. BEEP_wait:                              ; CODE XREF: BEEP_routine+20
  5388.                                         ; BEEP_routine+25
  5389.                 dec     c
  5390.                 jr      nz, BEEP_wait
  5391.                 ld      c, #3F
  5392.                 dec     b
  5393.                 jp      nz, BEEP_wait
  5394.                 xor     #10
  5395.                 out     (#FE),  a
  5396.                 ld      b, h
  5397.                 ld      c, a
  5398.                 bit     4, a
  5399.                 jr      nz, BEEP_smth
  5400.  
  5401.                 ld      a, d
  5402.                 or      e
  5403.                 jr      z, BEEP_exit
  5404.  
  5405.                 ld      a, c
  5406.                 ld      c, l
  5407.                 dec     de
  5408.                 jp      (ix)
  5409.  
  5410. ; ---------------------------------------------------------------------------
  5411.  
  5412. BEEP_smth:                              ; CODE XREF: BEEP_routine+30
  5413.                 ld      c, l
  5414.                 inc     c
  5415.                 jp      (ix)
  5416. ; ---------------------------------------------------------------------------
  5417. BEEP_exit:                              ; CODE XREF: BEEP_routine+34
  5418.                 pop     bc
  5419.                 pop     ix
  5420.                 ei
  5421.                 ret
  5422.  
  5423. ; End of function BEEP_routine
  5424.  
  5425. ; ---------------------------------------------------------------------------
  5426. aCyrusIi:       db 'CYRUS II     ',#7F
  5427.                 db ' 1986',#0D
  5428.                 db ' INTELLIGENT CHESS SOFTWARE LTD'
  5429.                 EOS
  5430.  
  5431.                 db '  LEVEL' ;печатается вместе с предыдущим
  5432.                 EOS
  5433.  
  5434.                 db      'Press <SPACE> to see board' ;печатается вместе с предыдущим
  5435.                 EOS
  5436.  
  5437. aPress:         db ' PRESS',#0D
  5438.                 db '<SPACE>',#0D
  5439.                 db '  for',#0D
  5440.                 db ' MENU'
  5441.                 EOS
  5442.  
  5443.  
  5444. aOOO:           db 'O-O-O'          ; DATA XREF: sub_8977+14
  5445.  
  5446.  
  5447. aNewGameYN:     db 'NEW GAME (Y/N)? ' ; DATA XREF: sub_92D7+1A
  5448.                 EOS
  5449.  
  5450. aNew:           db ' NEW ?'          ; DATA XREF: sub_92D7+D
  5451.                 EOS
  5452.  
  5453. aCyrus:         db 'CYRUS '          ; DATA XREF: sub_9F73 sub_A177+86 ...
  5454.                 EOS
  5455.  
  5456. a_PLAYER:       db 'PLAYER'          ; DATA XREF: sub_9F73+5 sub_A177+8D ...
  5457.                 EOS
  5458.  
  5459. a_ADAP:         db 'ADAP'            ; DATA XREF: PrintCurLevel:loc_8D56
  5460.                 EOS
  5461.  
  5462. a_INF:          db 'INF '            ; DATA XREF: PrintCurLevel+2F
  5463.                 EOS
  5464.  
  5465. aProb:          db 'PROB'            ; DATA XREF: PrintCurLevel+36
  5466.                 EOS
  5467.  
  5468. aAnalysis:      db 'ANALYSIS'        ; DATA XREF: sub_842C+10
  5469.                 EOS
  5470.  
  5471. aPrinter:       db 'PRINTER'
  5472.                 EOS
  5473.  
  5474. aNoMateIn:      db 'NO MATE IN '     ; DATA XREF: sub_A6F7:loc_A725
  5475.                 EOS
  5476.  
  5477. aIllegalSetup:  db 'ILLEGAL SETUP'   ; DATA XREF: sub_8C20+1
  5478.                 EOS
  5479.  
  5480. aStalemate:     db 'STALEMATE'       ; DATA XREF: sub_8C20-8A
  5481.                 EOS
  5482.  
  5483. aCheckmate:     db 'CHECKMATE'       ; DATA XREF: sub_8C20:loc_8B8D
  5484.                 EOS
  5485.                
  5486. aDraw:          db 'DRAW'            ; DATA XREF: sub_8C20:loc_8B9B
  5487.                 EOS
  5488.  
  5489. aBlack:         db 'BLACK'           ; DATA XREF: sub_8C20-62E
  5490.                                         ; sub_9F0D+61
  5491.                 EOS
  5492.  
  5493. aWhite:         db 'WHITE'           ; DATA XREF: sub_8C20-637
  5494.                                         ; sub_9F0D+58
  5495.                 EOS
  5496.  
  5497. aInitClk:       db '00:00:00'        ; DATA XREF: INIT_PRINT_CLOCKS
  5498.                                         ; INIT_PRINT_CLOCKS+B   ...
  5499.                 EOS
  5500.  
  5501.  
  5502. a_32spaces:     db '                        '
  5503. a_8spaces:      db '        '
  5504.                 EOS
  5505.  
  5506. aSetUpPosition: db 'SET UP POSITION',#0D ; DATA XREF: sub_9F0D+6
  5507.                 db 'C - Clear board M - Multi-move  E - Empty squ.  S - exit Setup  '
  5508.                 db 'G - new Game    X - swap colour L - Level       Z - Zero clocks '
  5509.                 db  #0D
  5510.                 db '   P,N,B,R,Q,K - piece to add'
  5511.                 EOS
  5512.  
  5513. aThinking:      db 'THINKING',#0D       ; DATA XREF: sub_9F0D+32
  5514.                 db  #0D
  5515.                 db 'M - Move now      H - Hint',#0D
  5516.                 db 'G - new Game'
  5517.                 EOS
  5518.  
  5519. aYourMove:      db 'YOUR MOVE',#0D
  5520.                 db 'A - Analysis      B - Back',#0D
  5521.                 db 'C - Cassette      D - Demo',#0D
  5522.                 db 'F - Forward       G - new Game',#0D
  5523.                 db 'H - Hint          I - Invert',#0D
  5524.                 db 'L - Level         M - Move',#0D
  5525.                 db      'P - Printer       S - Set posn.'
  5526.                 EOS
  5527.  
  5528. aBBackSSetPosn_:db 'B - Back          S - Set posn. G - new Game'
  5529.                 EOS
  5530.  
  5531. aSSaveRecordLLo:db 'S- Save record   L- Load record',#0D
  5532.                 db  #0D
  5533.                 db '  PRESS ANY OTHER KEY TO ABORT'
  5534.                 EOS
  5535.  
  5536. aNotAGameRecord:db 'NOT A '
  5537. aGameRecord:    db 'GAME RECORD : ' ; DATA XREF: sub_8C20+1A03
  5538.                 EOS
  5539.  
  5540. aLoadAGameRecor:db '      LOAD A GAME RECORD',#0D
  5541.                 db 'ENTER FILENAME; <BREAK> TO ABORT'
  5542.                 EOS
  5543.  
  5544. aSaveTheGameRec:db '      SAVE THE GAME RECORD',#0D
  5545.                 db 'ENTER FILENAME; <BREAK> TO ABORT'
  5546.                 EOS
  5547.  
  5548. aStartTapeAndPr:db '  START TAPE AND PRESS ANY KEY'
  5549.                 EOS
  5550.  
  5551. aZZxPrinterPSer:db ' Z-ZX PRINTER    P-SERIAL',#0D
  5552.                 db ' G-GAME RECORD   B-BOARD',#0D
  5553.                 db ' C-CONTINUOUS    O-OPTIONS',#0D
  5554.                 db  #0D
  5555.                 db '  PRESS ANY OTHER KEY TO ABORT'
  5556.                 EOS
  5557.  
  5558. aSelectBaudRate:db 'SELECT BAUD RATE:-',#0D
  5559.                 db '1=50  2=110  3=300  4=600 5=12006=2400  7=4800  8=9600  9=19200 ',#0D
  5560.                 db '            C=CR+LF',#0D
  5561.                 db  #0D
  5562.                 db '  PRESS ANY OTHER KEY TO ABORT'
  5563.                 EOS
  5564. ; ---------------------------------------------------------------------------
  5565.  
  5566. PRINT_STR_scr0:                         ; CODE XREF: sub_8C20-666
  5567.                                         ; sub_8C20:loc_85F5 ...
  5568.                 xor     a
  5569.                 jr      PRINT_STR_A
  5570.  
  5571.  
  5572. ; =============== S U B R O U T I N E =======================================
  5573.  
  5574.  
  5575. PrintStrF00:                            ; CODE XREF: sub_8C20-6B sub_8C20+4     ...
  5576.                 ld      de, #F00
  5577.                 ld      (scr_XY), de
  5578.                 call    PRINT_STR_FF
  5579.  
  5580.                 ret
  5581.  
  5582. ; End of function PrintStrF00
  5583.  
  5584.  
  5585. ; =============== S U B R O U T I N E =======================================
  5586.  
  5587.  
  5588. PRINT_STR_FF:                           ; CODE XREF: sub_842C:loc_843F
  5589.                                         ; PrintMoveText+9 ...
  5590.                 ld      a, #FF
  5591.  
  5592. PRINT_STR_A:                            ; CODE XREF: RAM:9E66
  5593.                 ld      (NEED_SCR2BUF), a
  5594.  
  5595. loc_9E78:                               ; CODE XREF: PRINT_STR_FF+14
  5596.                                         ; PRINT_STR_FF+1F
  5597.                 ld      a, (hl)
  5598.                 inc     hl
  5599.                 cp      #D
  5600.                 jr      nz, loc_9E89
  5601.  
  5602.                 push    hl
  5603.                 ld      hl, scr_XY
  5604.                 ld      (hl), 0
  5605.                 inc     hl
  5606.                 inc     (hl)
  5607.                 pop     hl
  5608.                 jr      loc_9E78
  5609.  
  5610. ; ---------------------------------------------------------------------------
  5611.  
  5612. loc_9E89:                               ; CODE XREF: PRINT_STR_FF+9
  5613.                 push    af
  5614.                 and     #7F
  5615.                 call    PRINT_LETTER
  5616.  
  5617.                 pop     af
  5618.                 bit     7, a
  5619.                 jr      z, loc_9E78
  5620.  
  5621.                 ret
  5622.  
  5623. ; End of function PRINT_STR_FF
  5624.  
  5625.  
  5626. ; =============== S U B R O U T I N E =======================================
  5627.  
  5628.  
  5629. PRINT_LETTER:                           ; CODE XREF: PrintCurLevel+1C PrintCurLevel+22 ...
  5630.                 push    hl
  5631.                 push    de
  5632.                 push    bc
  5633.                 push    af
  5634.                 call    CALC_SCR_ADDRS
  5635.  
  5636.                 ld      hl, (scr_pix_addr)
  5637.                 call    ADDR_SCR2BUF
  5638.  
  5639.                 add     hl, de
  5640.                 pop     af
  5641.                 cp      '0'
  5642.                 jr      nz, loc_9EAA
  5643.                 ld      a,'O'
  5644. loc_9EAA:                               ; CODE XREF: PRINT_LETTER+11
  5645.                 push    hl
  5646.                 ld      de,font-256 ;#3C00      ; ROM FONT
  5647.                 ld      l, a
  5648.                 ld      h, 0
  5649.                 add     hl, hl
  5650.                 add     hl, hl
  5651.                 add     hl, hl
  5652.                 add     hl, de
  5653.                 ex      de, hl
  5654.                 pop     hl
  5655.                 ld      b, 8
  5656. loc_9EB9:                               ; CODE XREF: PRINT_LETTER+28
  5657.                 ld      a, (de)
  5658.                 ld      (hl), a
  5659.                 inc     de
  5660.                 inc     h
  5661.                 djnz    loc_9EB9
  5662.  
  5663.                 ld      hl, (scr_XY)
  5664.                 ld      a, l
  5665.                 inc     a
  5666.                 cp      #20
  5667.                 jr      nz, loc_9ECA
  5668.                 xor     a
  5669.                 inc     h
  5670. loc_9ECA:                               ; CODE XREF: PRINT_LETTER+31
  5671.                 ld      l, a
  5672.                 ld      (scr_XY), hl
  5673.                 pop     bc
  5674.                 pop     de
  5675.                 pop     hl
  5676.                 ret
  5677.  
  5678. ; End of function PRINT_LETTER
  5679.  
  5680.  
  5681. ; =============== S U B R O U T I N E =======================================
  5682.  
  5683.  
  5684. ADDR_SCR2BUF:                           ; CODE XREF: PRINT_LETTER+A
  5685.                 push    af
  5686.                 push    hl
  5687.                 ld      a, (SEL_SCRorBUF)
  5688.                 ld      hl, NEED_SCR2BUF
  5689.                 cp      (hl)
  5690.                 ld      de, SCR_BUF_6400-#4000  ; addition to move to SCR_BUF=#6400
  5691.                 jr      nz, loc_9EE3
  5692.                 ld      de, 0
  5693. loc_9EE3:                               ; CODE XREF: ADDR_SCR2BUF+C
  5694.                 pop     hl
  5695.                 pop     af
  5696.                 ret
  5697.  
  5698. ; End of function ADDR_SCR2BUF
  5699.  
  5700.  
  5701. ; =============== S U B R O U T I N E =======================================
  5702.  
  5703.  
  5704. sub_9EE6:                               ; CODE XREF: sub_92D7-1239
  5705.                                         ; sub_8C20+1A5B
  5706.                 call    FillAttrsAndBorder
  5707.  
  5708.                 ld      hl, #C
  5709.                 ld      (scr_XY), hl
  5710.                 ld      hl, aCyrusIi    ; "CYRUS II     "
  5711.                 call    PRINT_STR_FF
  5712.  
  5713.                 ld      de, #318
  5714.                 ld      (scr_XY), de
  5715.                 call    PRINT_STR_FF
  5716.  
  5717.                 ld      de, #1703
  5718.                 ld      (scr_XY), de
  5719.                 call    PRINT_STR_FF
  5720.  
  5721.                 call    PrintCurLevel
  5722.  
  5723.                 ret
  5724.  
  5725. ; End of function sub_9EE6
  5726.  
  5727.  
  5728. ; =============== S U B R O U T I N E =======================================
  5729.  
  5730.  
  5731. sub_9F0D:                               ; CODE XREF: sub_8C20:loc_818F
  5732.                                         ; sub_8C20:loc_8378 ...
  5733. ;show state and help
  5734. ; FUNCTION CHUNK AT 9F5B SIZE 00000018 BYTES
  5735.  
  5736.                 call    sub_842C
  5737.  
  5738.                 ld      de, #1000
  5739.                 ld      hl, aSetUpPosition ; "SET UP POSITION"
  5740.                 ld      a, (byte_D04D)
  5741.                 rra
  5742.                 jr      c, loc_9F5B
  5743.  
  5744.                 push    de
  5745.                 ld      de, #306
  5746.                 call    sub_9F8B
  5747.  
  5748.                 bit     1, b
  5749.                 call    sub_9F73
  5750.  
  5751.                 bit     0, b
  5752.                 call    sub_9F73
  5753.  
  5754.                 call    sub_A177
  5755.  
  5756.                 pop     de
  5757.                 ld      hl, aYourMove   ; "YOUR MOVE"
  5758.                 ld      a, (byte_D0B4)
  5759.                 bit     5, a
  5760.                 jr      nz, PrintGameState ;invisible board?
  5761.  
  5762.                 bit     6, a
  5763.                 jr      z, PrintGameState
  5764.  
  5765.                 ld      hl, aThinking   ; "THINKING"
  5766.  
  5767. ; End of function sub_9F0D
  5768.  
  5769.  
  5770. ; =============== S U B R O U T I N E =======================================
  5771.  
  5772.  
  5773. PrintGameState:                         ; CODE XREF: sub_8C20-62 sub_9F0D+2C ...
  5774.                 ld      bc, (gamestatemsgaddr)
  5775.                 ld      (gamestatemsgaddr), hl
  5776.                 or      a
  5777.                 sbc     hl, bc
  5778.                 ret     z ;не перепечатываем
  5779.                 call    PrintClear1000
  5780.                 ld      hl, (gamestatemsgaddr)
  5781. loc_9F53:                               ; CODE XREF: sub_9F0D+5F sub_9F0D+64
  5782.                 ld      (scr_XY), de
  5783.                 call    PRINT_STR_FF
  5784.  
  5785.                 ret
  5786.  
  5787. ; End of function PrintGameState
  5788.  
  5789. ; ---------------------------------------------------------------------------
  5790. ; START OF FUNCTION CHUNK FOR sub_9F0D
  5791.  
  5792. loc_9F5B:                               ; CODE XREF: sub_9F0D+D
  5793.                 ld      (scr_XY), de
  5794.                 call    PrintGameState
  5795.  
  5796.                 ld      de, #1019
  5797.                 ld      hl, aWhite      ; "WHIT"
  5798.                 ld      a, (byte_D08D)
  5799.                 rla
  5800.                 jr      c, loc_9F53
  5801.  
  5802.                 ld      hl, aBlack      ; "BLAC"
  5803.                 jr      loc_9F53
  5804.  
  5805. ; END OF FUNCTION CHUNK FOR sub_9F0D
  5806.  
  5807. ; =============== S U B R O U T I N E =======================================
  5808.  
  5809.  
  5810. sub_9F73:                               ; CODE XREF: sub_9F0D+18 sub_9F0D+1D
  5811.                 ld      hl, aCyrus      ; "CYRUS"
  5812.                 jr      nz, loc_9F7B
  5813.  
  5814.                 ld      hl, a_PLAYER    ; "PLAYE"
  5815.  
  5816.  
  5817. loc_9F7B:                               ; CODE XREF: sub_9F73+3
  5818.                 ld      (scr_XY), de
  5819.                 call    PRINT_STR_FF
  5820.  
  5821.                 ld      de, (scr_XY)
  5822.                 inc     de
  5823.                 inc     de
  5824.                 inc     de
  5825.                 inc     de
  5826.                 ret
  5827.  
  5828. ; End of function sub_9F73
  5829.  
  5830.  
  5831. ; =============== S U B R O U T I N E =======================================
  5832.  
  5833.  
  5834. sub_9F8B:                               ; CODE XREF: sub_9F0D+13 sub_A177+83
  5835.                 ld      a, (byte_D0B4)
  5836.                 ld      b, 0
  5837.                 rra
  5838.                 ret     c
  5839.                 ld      b, 3
  5840.                 rra
  5841.                 ret     c
  5842.                 dec     b
  5843.                 ld      a, (byte_D0B2)
  5844.                 or      a
  5845.                 ret     z
  5846.                 dec     b
  5847.                 ret
  5848.  
  5849. ; End of function sub_9F8B
  5850.  
  5851.  
  5852. ; =============== S U B R O U T I N E =======================================
  5853.  
  5854.  
  5855. PrintClear1000:                         ; CODE XREF: PrintGameState+B
  5856. ;clear game state on screen
  5857.                 ld      hl, #1000
  5858.                 ld      (scr_XY), hl
  5859. loc_9FA4:                               ; CODE XREF: PrintClear1000+12
  5860.                 ld      hl, a_32spaces  ; "                        "
  5861.                 call    PRINT_STR_FF
  5862.                 ld      a, (scr_XY+1)
  5863.                 cp      #17
  5864.                 ret     z
  5865.                 jr      loc_9FA4
  5866.  
  5867. ; End of function PrintClear1000
  5868. ; =============== S U B R O U T I N E =======================================
  5869.  
  5870.  
  5871. sub_9FB2:                               ; CODE XREF: sub_8C20-94C
  5872. ;добавление хода на экране со скроллом? ; sub_8DE9+4D
  5873.                 ld      a, #FF
  5874.                 ld      (NEED_SCR2BUF), a
  5875.                 call    PrintMoveNumber
  5876.  
  5877.                 ld      l, 6
  5878.                 call    sub_A164
  5879.  
  5880.                 ld      a, (byte_D0C0)
  5881.                 jr      c, loc_9FCB
  5882.  
  5883.                 ld      l, #10
  5884.                 inc     a
  5885.                 ld      (byte_D0C0), a
  5886.                 dec     a
  5887.  
  5888. loc_9FCB:                               ; CODE XREF: sub_9FB2+10
  5889.                 add     a, 6
  5890.                 ld      h, a
  5891.                 push    hl
  5892.                 ld      (scr_XY), hl
  5893.                 ld      hl, buf_10bytes
  5894.                 call    PRINT_STR_FF
  5895.  
  5896.                 pop     hl
  5897.                 ld      de, #B10
  5898.                 or      a
  5899.                 sbc     hl, de
  5900.                 call    z, SCROLL_UP
  5901.  
  5902.                 ld      hl, buf_10bytes
  5903.                 ld      de, txt_buf_6
  5904.                 ld      bc, 6
  5905.                 ldir
  5906.                 ex      de, hl
  5907.                 dec     hl
  5908.                 set     7, (hl)
  5909.                 call    sub_A3D0
  5910.  
  5911.                 ret
  5912.  
  5913. ; End of function sub_9FB2
  5914.  
  5915.  
  5916. ; =============== S U B R O U T I N E =======================================
  5917.  
  5918.  
  5919. sub_9FF5:                               ; CODE XREF: sub_8C20-A12
  5920.                                         ; sub_8C20-A06 ...
  5921.                 push    hl
  5922.                 push    bc
  5923.                 ld      b, #20 ; ' '
  5924.                 ld      l, a
  5925.                 ld      h, BRD_88_0/256
  5926.                 ld      a, (hl)
  5927.                 or      a
  5928.                 jr      z, loc_A01D
  5929.  
  5930.                 ld      l, a
  5931.                 res     2, l
  5932.                 inc     l
  5933.                 inc     h               ; word_D100
  5934.                 ld      a, (hl)
  5935.                 and     #F
  5936.                 ld      b, #4B ; 'K'
  5937.                 jr      z, loc_A01D
  5938.  
  5939.                 ld      b, #20 ; ' '
  5940.                 cp      1
  5941.                 jr      z, loc_A01D
  5942.  
  5943.                 ld      a, (hl)
  5944.                 and     #8F
  5945.                 ld      hl, KING-1
  5946.                 call    sub_8CF7 ;поиск класса фигуры по цене
  5947.  
  5948.                 inc     hl
  5949.                 ld      b, (hl)
  5950.  
  5951.  
  5952. loc_A01D:                               ; CODE XREF: sub_9FF5+9 sub_9FF5+15     ...
  5953.                 ld      a, b
  5954.                 pop     bc
  5955.                 pop     hl
  5956.                 ret
  5957.  
  5958. ; End of function sub_9FF5
  5959.  
  5960.  
  5961. ; =============== S U B R O U T I N E =======================================
  5962.  
  5963.  
  5964. sub_A021:                               ; CODE XREF: sub_A684+36 sub_A684+42
  5965.                 ld      b, a
  5966.                 and     7
  5967.                 add     a, #61 ; 'a'
  5968.                 call    PRINT_LETTER
  5969.  
  5970.                 ld      a, #70 ; 'p'
  5971.                 and     b
  5972.                 rra
  5973.                 rra
  5974.                 rra
  5975.                 rra
  5976.                 neg
  5977.                 add     a, #38 ; '8'
  5978.                 call    PRINT_LETTER
  5979.  
  5980.                 ret
  5981.  
  5982. ; End of function sub_A021
  5983.  
  5984.  
  5985. ; =============== S U B R O U T I N E =======================================
  5986.  
  5987.  
  5988. INIT_PRINT_CLOCKS:                      ; CODE XREF: sub_8C20-B79
  5989.                                         ; sub_8C20-60B ...
  5990.                 ld      hl, aInitClk    ; "00:00:0"
  5991.                 ld      de, CLK_1
  5992.                 ld      bc, 8
  5993.                 ldir
  5994.                 ld      hl, aInitClk    ; "00:00:0"
  5995.                 ld      de, CLK_2
  5996.                 ld      bc, 8
  5997.                 ldir
  5998.                 ld      hl, #405
  5999.                 ld      (scr_XY), hl
  6000.                 ld      hl, aInitClk    ; "00:00:0"
  6001.                 call    PRINT_STR_FF
  6002.  
  6003.                 ld      hl, #40F
  6004.                 ld      (scr_XY), hl
  6005.                 ld      hl, aInitClk    ; "00:00:0"
  6006.                 call    PRINT_STR_FF
  6007.  
  6008.                 call    sub_A228
  6009.  
  6010.                 ret
  6011.  
  6012. ; End of function INIT_PRINT_CLOCKS
  6013.  
  6014.  
  6015. ; =============== S U B R O U T I N E =======================================
  6016.  
  6017.  
  6018. PRINT_CLOCKS_SWAP:                      ; CODE XREF: sub_8C20+1A5E
  6019.                 ld      hl, #405
  6020.                 ld      (scr_XY), hl
  6021.                 ld      hl, CLK_2
  6022.                 ld      de, CLK_1
  6023.                 ld      a, (byte_D0B3) ;d3=swap board
  6024.                 and     8
  6025.                 jr      z, loc_A07E
  6026.  
  6027.                 ex      de, hl
  6028.  
  6029.  
  6030. loc_A07E:                               ; CODE XREF: PRINT_CLOCKS_SWAP+11
  6031.                 push    de
  6032.                 call    PRINT_STR_FF
  6033.  
  6034.                 ld      hl,#40F
  6035.                 ld      (scr_XY), hl
  6036.                 pop     hl
  6037.                 call    PRINT_STR_FF
  6038.  
  6039.                 ret
  6040.  
  6041. ; End of function PRINT_CLOCKS_SWAP
  6042.  
  6043.  
  6044. ; =============== S U B R O U T I N E =======================================
  6045.  
  6046. PrintMoveNumber:                                ; CODE XREF: sub_8C20-AF7 sub_9FB2+5
  6047.                 ld      a, #FF          ; print move # in decimal???
  6048.                 ld      (NEED_SCR2BUF), a
  6049.                 ld      a, (byte_D0C0)
  6050.                 add     a, 6
  6051.                 ld      h, a
  6052.                 ld      l, 0
  6053.                 ld      (scr_XY), hl
  6054.                 ld      a, (byte_D049) ;move #
  6055.                 ld      b, a
  6056.                 ld      a, (byte_D0B4)
  6057.                 bit     5, a
  6058.                 jr      z, loc_A0AF ;visible board?
  6059.  
  6060.                 ld      a, (byte_D0BF)
  6061.                 rra
  6062.                 jr      nc, loc_A0AF
  6063.                 dec     b
  6064. loc_A0AF:                               ; CODE XREF: PrintMoveNumber+19 PrintMoveNumber+1F
  6065.                 ld      a, (byte_D0B7)
  6066.                 cp      b
  6067.                 ret     z
  6068.                 ld      a, b
  6069.                 ld      (byte_D0B7), a
  6070.                 ld      bc, #3000
  6071. loc_A0BB:                               ; CODE XREF: PrintMoveNumber+36
  6072.                 cp      100
  6073.                 jr      c, loc_A0C5
  6074.                 inc     b
  6075.                 inc     c
  6076.                 sub     100
  6077.                 jr      loc_A0BB
  6078. ; ---------------------------------------------------------------------------
  6079. loc_A0C5:                               ; CODE XREF: PrintMoveNumber+30
  6080.                 ex      af, af' ;'
  6081.                 ld      a, b
  6082.                 cp      '0'
  6083.                 jr      nz, loc_A0D3
  6084.  
  6085.                 ld      a, c
  6086.                 or      a
  6087.                 ld      a, '0'
  6088.                 jr      nz, loc_A0D3
  6089.                 ld      a, ' '
  6090. loc_A0D3:                               ; CODE XREF: PrintMoveNumber+3C PrintMoveNumber+42
  6091.                 call    sub_A0F7
  6092.                 ex      af, af' ;'
  6093.                 ld      b, '0'
  6094. loc_A0D9:                               ; CODE XREF: PrintMoveNumber+54
  6095.                 cp      10
  6096.                 jr      c, loc_A0E3
  6097.                 inc     b
  6098.                 inc     c
  6099.                 sub     10
  6100.                 jr      loc_A0D9
  6101. ; ---------------------------------------------------------------------------
  6102. loc_A0E3:                               ; CODE XREF: PrintMoveNumber+4E
  6103.                 ex      af, af' ;'
  6104.                 ld      a, b
  6105.                 cp      '0'
  6106.                 jr      nz, loc_A0F1
  6107.                 ld      a, c
  6108.                 or      a
  6109.                 ld      a, '0'
  6110.                 jr      nz, loc_A0F1
  6111.                 ld      a, ' '
  6112. loc_A0F1:                               ; CODE XREF: PrintMoveNumber+5A PrintMoveNumber+60
  6113.                 call    sub_A0F7
  6114.                 ex      af, af' ;'
  6115.                 add     a, '0'
  6116. ; End of function PrintMoveNumber
  6117. ; =============== S U B R O U T I N E =======================================
  6118. sub_A0F7:                               ; CODE XREF: PrintMoveNumber:loc_A0D3
  6119.                                         ; PrintMoveNumber:loc_A0F1
  6120.                 push    af
  6121.                 call    PRINT_LETTER
  6122.  
  6123.                 ld      a, (byte_D0E1)
  6124.                 cp      3
  6125.                 jr      nc, loc_A102 ;???
  6126. loc_A102:                               ; CODE XREF: sub_A0F7+9
  6127.                 pop     af
  6128.                 ret
  6129. ; End of function sub_A0F7
  6130. ; =============== S U B R O U T I N E =======================================
  6131.  
  6132.  
  6133. SCROLL_UP:                              ; CODE XREF: sub_9FB2+2D
  6134.                 di
  6135.                 ld      hl,  SCR_BUF_6400+#C0
  6136.                 ld      a, (SEL_SCRorBUF)
  6137.                 or      a
  6138.                 jr      z, loc_A111
  6139.                 ld      hl,  SCREEN+#C0
  6140. loc_A111:                               ; CODE XREF: SCROLL_UP+8
  6141.                 ld      a, 5
  6142.                 ex      af, af' ;'
  6143.  
  6144. loc_A114:                               ; CODE XREF: SCROLL_UP+34
  6145.                 ld      a, #20 ; ' '
  6146.                 add     a, l
  6147.                 ld      e, a
  6148.                 ld      a, h
  6149.                 jr      nc, loc_A11D
  6150.                 add     a, 8
  6151. loc_A11D:                               ; CODE XREF: SCROLL_UP+15
  6152.                 ld      d, a            ; DE is 1 char lower than HL
  6153.                 push    de
  6154.                 ld      c, 8
  6155. loc_A121:                               ; CODE XREF: SCROLL_UP+2C
  6156.                 push    hl
  6157.                 push    de
  6158.                 ld      b, #20
  6159. loc_A125:                               ; CODE XREF: SCROLL_UP+25
  6160.                 ld      a, (de)
  6161.                 ld      (hl), a
  6162.                 inc     hl
  6163.                 inc     de
  6164.                 djnz    loc_A125
  6165.  
  6166.                 pop     de
  6167.                 pop     hl
  6168.                 inc     h
  6169.                 inc     d
  6170.                 dec     c
  6171.                 jr      nz, loc_A121
  6172.  
  6173.                 pop     hl
  6174.                 ex      af, af' ;'
  6175.                 dec     a
  6176.                 jr      z, loc_A13A
  6177.  
  6178.                 ex      af, af' ;'
  6179.                 jr      loc_A114
  6180.  
  6181. ; ---------------------------------------------------------------------------
  6182.  
  6183. loc_A13A:                               ; CODE XREF: SCROLL_UP+31
  6184.                 ld      c, 8
  6185. loc_A13C:                               ; CODE XREF: SCROLL_UP+43
  6186.                 push    hl
  6187.                 ld      b, #20
  6188.                 xor     a
  6189. loc_A140:                               ; CODE XREF: SCROLL_UP+3E
  6190.                 ld      (hl), a
  6191.                 inc     hl
  6192.                 djnz    loc_A140
  6193.  
  6194.                 pop     hl
  6195.                 inc     h
  6196.                 dec     c
  6197.                 jr      nz, loc_A13C
  6198.  
  6199.                 ld      a, 5
  6200.                 ld      (byte_D0C0), a
  6201.                 ei
  6202.                 ret
  6203.  
  6204. ; End of function SCROLL_UP
  6205.  
  6206.  
  6207. ; =============== S U B R O U T I N E =======================================
  6208.  
  6209.  
  6210. sub_A150:                               ; CODE XREF: sub_8C20-676
  6211.                                         ; sub_9018+4B
  6212.                 call    sub_A164
  6213.  
  6214.                 ld      a, (byte_D0B3) ;d3=swap board
  6215.                 jr      c, loc_A15E
  6216.  
  6217.                 and     8
  6218.                 jr      nz, loc_A162
  6219.  
  6220.  
  6221. loc_A15C:                               ; CODE XREF: sub_A150+10
  6222.                 or      a
  6223.                 ret
  6224.  
  6225. ; ---------------------------------------------------------------------------
  6226.  
  6227. loc_A15E:                               ; CODE XREF: sub_A150+6
  6228.                 and     8
  6229.                 jr      nz, loc_A15C
  6230.  
  6231.  
  6232. loc_A162:                               ; CODE XREF: sub_A150+A
  6233.                 scf
  6234.                 ret
  6235.  
  6236. ; End of function sub_A150
  6237.  
  6238.  
  6239. ; =============== S U B R O U T I N E =======================================
  6240.  
  6241.  
  6242. sub_A164:                               ; CODE XREF: sub_9018+12 sub_954C ...
  6243.                 ld      a, (byte_D0BF)
  6244.                 rra
  6245.                 ld      a, (byte_D0B4)
  6246.                 bit     5, a
  6247.                 jr      c, loc_A173
  6248.  
  6249.                 jr      nz, loc_A175 ;invisible board?
  6250.  
  6251. loc_A171:                               ; CODE XREF: sub_A164:loc_A173
  6252.                 or      a
  6253.                 ret
  6254.  
  6255. ; ---------------------------------------------------------------------------
  6256.  
  6257. loc_A173:                               ; CODE XREF: sub_A164+9
  6258.                 jr      nz, loc_A171
  6259.  
  6260.  
  6261. loc_A175:                               ; CODE XREF: sub_A164+B
  6262.                 scf
  6263.                 ret
  6264.  
  6265. ; End of function sub_A164
  6266.  
  6267.  
  6268. ; =============== S U B R O U T I N E =======================================
  6269.  
  6270.  
  6271. sub_A177:                               ; CODE XREF: HotKeys+254
  6272.                                         ; sub_9F0D+20
  6273.  
  6274. ; FUNCTION CHUNK AT A1F1 SIZE 00000037 BYTES
  6275.  
  6276.                 call    SHOW_LOGO
  6277.  
  6278.                 ld      hl, #B00
  6279.                 ld      (scr_XY), hl
  6280.                 ld      hl, aPress      ; " PRESS"
  6281.                 call    PRINT_STR_scr0
  6282.  
  6283.                 ld      hl, SCR_ATTRS
  6284.                 ld      a, (SEL_SCRorBUF)
  6285.                 or      a
  6286.                 jr      z, loc_A193
  6287.  
  6288.                 ld      de, #2400
  6289.                 add     hl, de
  6290.  
  6291.  
  6292. loc_A193:                               ; CODE XREF: sub_A177+16
  6293.                 ld      e, 1
  6294.                 call    sub_A24B
  6295.  
  6296.                 ld      hl,  SCR_ATTRS+#100
  6297.                 ld      a, (SEL_SCRorBUF)
  6298.                 or      a
  6299.                 jr      z, loc_A1A5
  6300.  
  6301.                 ld      de, #2400
  6302.                 add     hl, de
  6303.  
  6304.  
  6305. loc_A1A5:                               ; CODE XREF: sub_A177+28
  6306.                 ld      a, (byte_D0B3) ;d3=swap board
  6307.                 ld      e, 0
  6308.                 and     8
  6309.                 jr      z, loc_A1B0
  6310.  
  6311.                 ld      e, 7
  6312.  
  6313.  
  6314. loc_A1B0:                               ; CODE XREF: sub_A177+35
  6315.                 call    sub_A24B
  6316.  
  6317.                 ld      hl,  SCR_ATTRS+#200
  6318.                 ld      a, (SEL_SCRorBUF)
  6319.                 or      a
  6320.                 jr      z, loc_A1C0
  6321.  
  6322.                 ld      de, #2400
  6323.                 add     hl, de
  6324.  
  6325.  
  6326. loc_A1C0:                               ; CODE XREF: sub_A177+43
  6327.                 ld      a, (byte_D0B3) ;d3=swap board
  6328.                 ld      e, 7
  6329.                 and     8
  6330.                 jr      z, loc_A1CB
  6331.  
  6332.                 ld      e, 0
  6333.  
  6334.  
  6335. loc_A1CB:                               ; CODE XREF: sub_A177+50
  6336.                 call    sub_A24B
  6337.  
  6338.                 ld      hl, #800
  6339.                 ld      b, 3
  6340.                 call    sub_A1E0
  6341.  
  6342.                 ld      hl, #1000
  6343.                 ld      b, 3
  6344.                 call    sub_A1E0
  6345.  
  6346.                 jr      loc_A1F1
  6347.  
  6348. ; End of function sub_A177
  6349.  
  6350.  
  6351. ; =============== S U B R O U T I N E =======================================
  6352.  
  6353.  
  6354. sub_A1E0:                               ; CODE XREF: sub_A177+5C sub_A177+64 ...
  6355.                 push    bc
  6356.                 push    hl
  6357.                 ld      (scr_XY), hl
  6358.                 ld      hl, a_8spaces   ; "       "
  6359.                 call    PRINT_STR_scr0
  6360.  
  6361.                 pop     hl
  6362.                 inc     h
  6363.                 pop     bc
  6364.                 djnz    sub_A1E0
  6365.  
  6366.                 ret
  6367.  
  6368. ; End of function sub_A1E0
  6369.  
  6370. ; ---------------------------------------------------------------------------
  6371. ; START OF FUNCTION CHUNK FOR sub_A177
  6372.  
  6373. loc_A1F1:                               ; CODE XREF: sub_A177+67
  6374.                 call    sub_A228
  6375.  
  6376.                 ld      hl, #801
  6377.                 ld      (scr_XY), hl
  6378.                 call    sub_9F8B
  6379.  
  6380.                 ld      hl, aCyrus      ; "CYRUS"
  6381.                 bit     1, b
  6382.                 jr      nz, loc_A207
  6383.  
  6384.                 ld      hl, a_PLAYER    ; "PLAYE"
  6385.  
  6386.  
  6387. loc_A207:                               ; CODE XREF: sub_A177+8B
  6388.                 ld      de, aCyrus      ; "CYRUS"
  6389.                 bit     0, b
  6390.                 jr      nz, loc_A211
  6391.  
  6392.                 ld      de, a_PLAYER    ; "PLAYE"
  6393.  
  6394.  
  6395. loc_A211:                               ; CODE XREF: sub_A177+95
  6396.                 ld      a, (byte_D0B3) ;d3=swap board
  6397.                 and     8
  6398.                 jr      nz, loc_A219
  6399.  
  6400.                 ex      de, hl
  6401.  
  6402.  
  6403. loc_A219:                               ; CODE XREF: sub_A177+9F
  6404.                 push    de
  6405.                 call    PRINT_STR_scr0
  6406.  
  6407.                 ld      hl, #1001
  6408.                 ld      (scr_XY), hl
  6409.                 pop     hl
  6410.                 call    PRINT_STR_scr0
  6411.  
  6412.                 ret
  6413.  
  6414. ; END OF FUNCTION CHUNK FOR sub_A177
  6415.  
  6416. ; =============== S U B R O U T I N E =======================================
  6417.  
  6418.  
  6419. sub_A228:                               ; CODE XREF: INIT_PRINT_CLOCKS+2E
  6420.                                         ; sub_A177:loc_A1F1
  6421.                 ld      hl, #900
  6422.                 ld      (scr_XY), hl
  6423.                 ld      hl,  CLK_2+1
  6424.                 ld      de,  CLK_1+1
  6425.                 ld      a, (byte_D0B3) ;d3=swap board
  6426.                 and     8
  6427.                 jr      z, loc_A23C
  6428.  
  6429.                 ex      de, hl
  6430.  
  6431.  
  6432. loc_A23C:                               ; CODE XREF: sub_A228+11
  6433.                 push    de
  6434.                 call    PRINT_STR_scr0
  6435.  
  6436.                 ld      hl, #1100
  6437.                 ld      (scr_XY), hl
  6438.                 pop     hl
  6439.                 call    PRINT_STR_scr0
  6440.  
  6441.                 ret
  6442.  
  6443. ; End of function sub_A228
  6444.  
  6445.  
  6446. ; =============== S U B R O U T I N E =======================================
  6447.  
  6448.  
  6449. sub_A24B:                               ; CODE XREF: sub_A177+1E
  6450.                                         ; sub_A177:loc_A1B0 ...
  6451.                 ld      b, 3
  6452.  
  6453.  
  6454. loc_A24D:                               ; CODE XREF: sub_A24B:loc_A25F
  6455.                 ld      c, 8
  6456.  
  6457.  
  6458. loc_A24F:                               ; CODE XREF: sub_A24B+B
  6459.                 ld      a, (hl)
  6460.                 and     #F8 ; 'ш'
  6461.                 or      e
  6462.                 ld      (hl), a
  6463.                 inc     hl
  6464.                 dec     c
  6465.                 jr      nz, loc_A24F
  6466.  
  6467.                 ld      a, #18
  6468.                 add     a, l
  6469.                 ld      l, a
  6470.                 jr      nc, loc_A25F
  6471.  
  6472.                 inc     h
  6473.  
  6474.  
  6475. loc_A25F:                               ; CODE XREF: sub_A24B+11
  6476.                 djnz    loc_A24D
  6477.  
  6478.                 ret
  6479.  
  6480. ; End of function sub_A24B
  6481.  
  6482.  
  6483. ; =============== S U B R O U T I N E =======================================
  6484.  
  6485.  
  6486. sub_A262:                               ; CODE XREF: sub_8C20:loc_80CE
  6487.                                         ; sub_87CD
  6488.                 ld      a, #20 ; ' '
  6489.                 ld      b, 8
  6490.                 ld      hl, unk_637C
  6491.  
  6492.  
  6493. loc_A269:                               ; CODE XREF: sub_A262+9
  6494.                 inc     hl
  6495.                 ld      (hl), a
  6496.                 djnz    loc_A269
  6497.  
  6498.                 set     7, (hl)
  6499.                 ret
  6500.  
  6501. ; End of function sub_A262
  6502.  
  6503.  
  6504. ; =============== S U B R O U T I N E =======================================
  6505.  
  6506.  
  6507. PRT_DETECT:                             ; CODE XREF: START_POINT+8A
  6508.                 xor     a
  6509.                 ld      (byte_D0E1), a
  6510.                 ld      hl, PRTD_no_serial
  6511.                 push    hl
  6512.                 ld      (bas_ERRSP), sp
  6513.  
  6514.                 ;rst    8               ; somehow jumps to pushed address (loc_A28E)
  6515.                 ;db     #31
  6516.                  call PRTD_no_serial
  6517.  
  6518.                 ld      hl, #C
  6519.                 ld      (word_5CC3), hl
  6520.                 ld      a, #39 ; '9'
  6521.                 ld      (baudrate_NUM), a
  6522.                 pop     af
  6523.                 ld      a, 4            ; serial printer bit
  6524.                  ret ;jr        loc_A28F
  6525.  
  6526. ; ---------------------------------------------------------------------------
  6527.  
  6528. PRTD_no_serial:                         ; DATA XREF: PRT_DETECT+4
  6529.                 xor     a
  6530.  
  6531. loc_A28F:                               ; CODE XREF: PRT_DETECT+1C
  6532.                 ld      hl, CFG_BITS
  6533.                 ld      (hl), a
  6534.                 ld      b, 0
  6535.  
  6536. PRTD_detect_zxprt:                      ; CODE XREF: PRT_DETECT+2A
  6537.                 ld a,0xff;in    a, (#FB)
  6538.                 and     #40 ; '@'       ; D6=0 -- zx printer is present
  6539.                 ret     nz
  6540.                 djnz    PRTD_detect_zxprt
  6541.  
  6542.                 set     3, (hl)         ; zx printer bit
  6543.                 ret
  6544.  
  6545. ; End of function PRT_DETECT
  6546.  
  6547. ; ---------------------------------------------------------------------------
  6548. ; START OF FUNCTION CHUNK FOR sub_8C20
  6549.  
  6550. loc_A29F:                               ; CODE XREF: sub_8C20-863
  6551.                                         ; sub_8C20+16FA ...
  6552.                 call    UnDrawMoveAndCursors
  6553.  
  6554.                 ld      a, #FF
  6555.                 ld      (NEED_SCR2BUF), a
  6556.                 ld      a, (SEL_SCRorBUF)
  6557.                 or      a
  6558.                 call    z, sub_95C5
  6559.  
  6560.                 ld      a, (CFG_BITS)
  6561.                 and     #C
  6562.                 jp      z, loc_82EB
  6563.  
  6564.                 ld      de, #1000
  6565.                 ld      hl, aZZxPrinterPSer ; " Z-ZX PRINTER    P-SERIAL"
  6566.                 call    PrintGameState
  6567.  
  6568.                 ld      a, (CFG_BITS)
  6569.                 ld      c, a
  6570.                 ld      hl, #1000
  6571.                 bit     0, c
  6572.                 call    sub_A3C3
  6573.  
  6574.                 ld      l, #10
  6575.                 bit     1, c
  6576.                 call    sub_A3C3
  6577.  
  6578.                 ld      hl, #1200
  6579.                 bit     4, c
  6580.                 call    sub_A3C3
  6581.  
  6582.  
  6583. loc_A2DA:                               ; CODE XREF: sub_8C20+16E9
  6584.                                         ; sub_8C20+16F5 ...
  6585.                 call    sub_907E
  6586.  
  6587.                 jp      c, loc_82EB
  6588.  
  6589.                 res     5, a
  6590.                 ld      hl, CFG_BITS
  6591.                 cp      #5A ; 'Z'
  6592.                 jp      z, loc_A318
  6593.  
  6594.                 cp      #50 ; 'P'
  6595.                 jp      z, loc_A325
  6596.  
  6597.                 cp      #4F ; 'O'
  6598.                 jp      z, loc_A35A
  6599.  
  6600.                 cp      #47 ; 'G'
  6601.                 jp      z, loc_A33C
  6602.  
  6603.                 cp      #42 ; 'B'
  6604.                 jp      z, loc_A306
  6605.  
  6606.                 cp      #43 ; 'C'
  6607.                 jp      z, loc_A34D
  6608.  
  6609.                 jp      loc_82EB
  6610.  
  6611. ; ---------------------------------------------------------------------------
  6612.  
  6613. loc_A306:                               ; CODE XREF: sub_8C20+16DB
  6614.                 ld      a, (hl)
  6615.                 and     3
  6616.                 jr      z, loc_A2DA
  6617.  
  6618.                 set     5, (hl)
  6619.                 call    sub_94C9
  6620.  
  6621.                 ld      hl, CFG_BITS
  6622.                 res     5, (hl)
  6623.                 jp      loc_A2DA
  6624.  
  6625. ; ---------------------------------------------------------------------------
  6626.  
  6627. loc_A318:                               ; CODE XREF: sub_8C20+16C7
  6628.                 bit     3, (hl)
  6629.                 jp      z, loc_A29F
  6630.  
  6631.                 ld      a, (hl)
  6632.                 and     #FD ; 'э'
  6633.                 xor     1
  6634.                 ld      (hl), a
  6635.                 jr      loc_A330
  6636.  
  6637. ; ---------------------------------------------------------------------------
  6638.  
  6639. loc_A325:                               ; CODE XREF: sub_8C20+16CC
  6640.                 bit     2, (hl)
  6641.                 jp      z, loc_A29F
  6642.  
  6643.                 ld      a, (hl)
  6644.                 and     #FE ; 'ю'
  6645.                 xor     2
  6646.                 ld      (hl), a
  6647.  
  6648.  
  6649. loc_A330:                               ; CODE XREF: sub_8C20+1703
  6650.                 and     3
  6651.                 jp      nz, loc_A29F
  6652.  
  6653.                 ld      a, (hl)
  6654.                 and     #CF ; 'П'
  6655.                 ld      (hl), a
  6656.                 jp      loc_A29F
  6657.  
  6658. ; ---------------------------------------------------------------------------
  6659.  
  6660. loc_A33C:                               ; CODE XREF: sub_8C20+16D6
  6661.                 ld      a, (hl)
  6662.                 and     3
  6663.                 jr      z, loc_A2DA
  6664.  
  6665.                 set     5, (hl)
  6666.                 ld      hl, (word_D0F7)
  6667.                 inc     hl
  6668.                 ld      (word_D0F7), hl
  6669.                 jp      loc_8A32
  6670.  
  6671. ; ---------------------------------------------------------------------------
  6672.  
  6673. loc_A34D:                               ; CODE XREF: sub_8C20+16E0
  6674.                 ld      a, (hl)
  6675.                 and     3
  6676.                 jp      z, loc_A29F
  6677.  
  6678.                 ld      a, (hl)
  6679.                 xor     #10
  6680.                 ld      (hl), a
  6681.                 jp      loc_A29F
  6682.  
  6683. ; ---------------------------------------------------------------------------
  6684.  
  6685. loc_A35A:                               ; CODE XREF: sub_8C20+16D1
  6686.                                         ; sub_8C20+1777 ...
  6687.                 ld      hl, aSelectBaudRate ; "SELECT BAUD RATE:-"
  6688.                 ld      de, #1000
  6689.                 call    PrintGameState
  6690.  
  6691.                 ld      a, (CFG_BITS)
  6692.                 ld      hl,#140B
  6693.                 and     #40 ; '@'
  6694.                 call    sub_A3C3
  6695.  
  6696.                 ld      hl, #1014
  6697.                 ld      (scr_XY), hl
  6698.                 ld      a, (baudrate_NUM)
  6699.                 call    PRINT_LETTER
  6700.  
  6701.                 call    sub_907E
  6702.  
  6703.                 jp      c, loc_A29F
  6704.  
  6705.                 cp      #31 ; '1'
  6706.                 jp      c, loc_A29F
  6707.  
  6708.                 cp      #3A ; ':'
  6709.                 jr      c, loc_A399
  6710.  
  6711.                 res     5, a
  6712.                 cp      #43 ; 'C'
  6713.                 jp      nz, loc_A29F
  6714.  
  6715.                 ld      hl, CFG_BITS
  6716.                 ld      a, (hl)
  6717.                 xor     #40 ; '@'
  6718.                 ld      (hl), a
  6719.                 jr      loc_A35A
  6720.  
  6721. ; ---------------------------------------------------------------------------
  6722.  
  6723. loc_A399:                               ; CODE XREF: sub_8C20+1767
  6724.                 ld      (baudrate_NUM), a
  6725.                 sub     #31 ; '1'
  6726.                 add     a, a
  6727.                 ld      hl, baud_rates
  6728.                 add     a, l
  6729.                 ld      l, a
  6730.                 jr      nc, loc_A3A7
  6731.  
  6732.                 inc     h
  6733.  
  6734.  
  6735. loc_A3A7:                               ; CODE XREF: sub_8C20+1784
  6736.                 ld      e, (hl)
  6737.                 inc     hl
  6738.                 ld      d, (hl)
  6739.                 ld      (word_5CC3), de
  6740.                 jp      loc_A35A
  6741.  
  6742. ; END OF FUNCTION CHUNK FOR sub_8C20
  6743. ; ---------------------------------------------------------------------------
  6744. baud_rates:     dw #A82         ; DATA XREF: sub_8C20+177F
  6745.                 dw #4C5
  6746.                 dw #1BE
  6747.                 dw #DE
  6748.                 dw #6E
  6749.                 dw #36
  6750.                 dw #1A
  6751.                 dw #C
  6752.                 dw 5
  6753.  
  6754. ; =============== S U B R O U T I N E =======================================
  6755.  
  6756.  
  6757. sub_A3C3:                               ; CODE XREF: sub_8C20+16A8
  6758.                                         ; sub_8C20+16AF ...
  6759.                 ld      (scr_XY), hl
  6760.                 ld      a, #20 ; ' '
  6761.                 jr      z, loc_A3CC
  6762.  
  6763.                 ld      a, #2A ; '*'
  6764.  
  6765.  
  6766. loc_A3CC:                               ; CODE XREF: sub_A3C3+5
  6767.                 call    PRINT_LETTER
  6768.  
  6769.                 ret
  6770.  
  6771. ; End of function sub_A3C3
  6772.  
  6773.  
  6774. ; =============== S U B R O U T I N E =======================================
  6775.  
  6776.  
  6777. sub_A3D0:                               ; CODE XREF: sub_9FB2+3F
  6778.                 call    sub_A4C2
  6779.  
  6780.                 ret     nc
  6781.                 ld      c, 6
  6782.                 call    sub_A164
  6783.  
  6784.                 jr      c, loc_A3E0
  6785.  
  6786.                 ld      c, #10
  6787.                 jp      loc_A437
  6788.  
  6789. ; ---------------------------------------------------------------------------
  6790.  
  6791. loc_A3E0:                               ; CODE XREF: sub_A3D0+9
  6792.                 ld      a, (byte_D049) ;move #
  6793.                 ld      b, a
  6794.                 ld      a, (byte_D0B4)
  6795.                 bit     5, a
  6796.                 jr      z, loc_A3F2 ;visible board?
  6797.  
  6798.                 ld      a, (byte_D0BF)
  6799.                 rra
  6800.                 jr      nc, loc_A3F2
  6801.  
  6802.                 dec     b
  6803.  
  6804. loc_A3F2:                               ; CODE XREF: sub_A3D0+19 sub_A3D0+1F
  6805.                 push    bc
  6806.                 ld      a, b
  6807.                 ld      bc, #3000
  6808.  
  6809.  
  6810. loc_A3F7:                               ; CODE XREF: sub_A3D0+2F
  6811.                 cp      #64 ; 'd'
  6812.                 jr      c, loc_A401
  6813.  
  6814.                 inc     b
  6815.                 inc     c
  6816.                 sub     #64 ; 'd'
  6817.                 jr      loc_A3F7
  6818.  
  6819. ; ---------------------------------------------------------------------------
  6820.  
  6821. loc_A401:                               ; CODE XREF: sub_A3D0+29
  6822.                 ex      af, af' ;'
  6823.                 ld      a, b
  6824.                 cp      #30 ; '0'
  6825.                 jr      nz, loc_A40F
  6826.  
  6827.                 ld      a, c
  6828.                 or      a
  6829.                 ld      a, #30 ; '0'
  6830.                 jr      nz, loc_A40F
  6831.  
  6832.                 ld      a, #20 ; ' '
  6833.  
  6834.  
  6835. loc_A40F:                               ; CODE XREF: sub_A3D0+35 sub_A3D0+3B
  6836.                 call    loc_A476
  6837.  
  6838.                 ex      af, af' ;'
  6839.                 ld      b, #30 ; '0'
  6840.  
  6841.  
  6842. loc_A415:                               ; CODE XREF: sub_A3D0+4D
  6843.                 cp      #A
  6844.                 jr      c, loc_A41F
  6845.  
  6846.                 inc     b
  6847.                 inc     c
  6848.                 sub     #A
  6849.                 jr      loc_A415
  6850.  
  6851. ; ---------------------------------------------------------------------------
  6852.  
  6853. loc_A41F:                               ; CODE XREF: sub_A3D0+47
  6854.                 ex      af, af' ;'
  6855.                 ld      a, b
  6856.                 cp      #30 ; '0'
  6857.                 jr      nz, loc_A42D
  6858.  
  6859.                 ld      a, c
  6860.                 or      a
  6861.                 ld      a, #30 ; '0'
  6862.                 jr      nz, loc_A42D
  6863.  
  6864.                 ld      a, #20 ; ' '
  6865.  
  6866.  
  6867. loc_A42D:                               ; CODE XREF: sub_A3D0+53 sub_A3D0+59
  6868.                 call    loc_A476
  6869.  
  6870.                 ex      af, af' ;'
  6871.                 add     a, #30 ; '0'
  6872.                 call    loc_A476
  6873.  
  6874.                 pop     bc
  6875.  
  6876.  
  6877. loc_A437:                               ; CODE XREF: sub_A3D0+D
  6878.                 call    sub_A454
  6879.  
  6880.                 jr      sub_A43C
  6881.  
  6882. ; End of function sub_A3D0
  6883.  
  6884.  
  6885. ; =============== S U B R O U T I N E =======================================
  6886.  
  6887.  
  6888. sub_A43C:                               ; CODE XREF: sub_8C20-B48
  6889.                                         ; sub_8C20-B3A ...
  6890.                 ld      a, #D
  6891.                 call    loc_A476
  6892.  
  6893.                 xor     a
  6894.                 ld      (byte_D0E1), a
  6895.                 ld      a, (CFG_BITS)
  6896.                 bit     6, a
  6897.                 ret     z
  6898.                 bit     0, a
  6899.                 ld      a, #A
  6900.                 ret     nz
  6901.                 call    loc_A476
  6902.  
  6903.                 ret
  6904.  
  6905. ; End of function sub_A43C
  6906.  
  6907.  
  6908. ; =============== S U B R O U T I N E =======================================
  6909.  
  6910.  
  6911. sub_A454:                               ; CODE XREF: sub_A3D0:loc_A437
  6912.                 call    sub_A466
  6913.  
  6914.                 ld      hl, buf_10bytes
  6915.  
  6916. ; End of function sub_A454
  6917.  
  6918.  
  6919. ; =============== S U B R O U T I N E =======================================
  6920.  
  6921.  
  6922. sub_A45A:                               ; CODE XREF: sub_8C20-72 sub_A45A+9
  6923.                 ld      a, (hl)
  6924.                 and     #7F ; ''
  6925.                 call    loc_A476
  6926.  
  6927.                 bit     7, (hl)
  6928.                 inc     hl
  6929.                 jr      z, sub_A45A
  6930.  
  6931.                 ret
  6932.  
  6933. ; End of function sub_A45A
  6934.  
  6935.  
  6936. ; =============== S U B R O U T I N E =======================================
  6937.  
  6938.  
  6939. sub_A466:                               ; CODE XREF: sub_A454
  6940.                 call    sub_A4C2
  6941.  
  6942.                 ret     nc
  6943.  
  6944.  
  6945. loc_A46A:                               ; CODE XREF: sub_A466+E
  6946.                 ld      a, (byte_D0E1)
  6947.                 cp      c
  6948.                 ret     z
  6949.                 ld      a, #20 ; ' '
  6950.                 call    loc_A476
  6951.  
  6952.                 jr      loc_A46A
  6953.  
  6954. ; End of function sub_A466
  6955.  
  6956. ; ---------------------------------------------------------------------------
  6957.  
  6958. loc_A476:                               ; CODE XREF: sub_8C20-B40
  6959.                                         ; sub_94C9+21   ...
  6960.                 call    sub_A4C2
  6961.  
  6962.                 ret     nc
  6963.                 push    bc
  6964.                 push    de
  6965.                 push    hl
  6966.                 ld      hl, byte_D0E1
  6967.                 inc     (hl)
  6968.                 exx
  6969.                 push    bc
  6970.                 push    de
  6971.                 push    hl
  6972.                 push    ix
  6973.                 push    iy
  6974.                 ex      af, af' ;'
  6975.                 push    af
  6976.                 ex      af, af' ;'
  6977.                 ld      hl, loc_A4A7
  6978.                 push    hl
  6979.                 ld      (bas_ERRSP), sp
  6980.                 ld      iy, #5C3A
  6981.                 ld      hl, CFG_BITS
  6982.                 bit     0, (hl)
  6983.                 ;jr     nz, loc_A4A3
  6984.  
  6985.                 ;rst    8 ;to printer?
  6986.                 ;db     #1E,#18,#01
  6987.                 ds 4
  6988.  
  6989. loc_A4A3:                               ; CODE XREF: RAM:A49D
  6990.                 call rst10 ;rst #10 ;to screen
  6991.  
  6992.                 pop     hl
  6993.                 jr      loc_A4B1
  6994.  
  6995. ; ---------------------------------------------------------------------------
  6996.  
  6997. loc_A4A7:                               ; DATA XREF: RAM:A48C
  6998.                 ld      a, (CFG_BITS)
  6999.                 res     4, a
  7000.                 res     5, a
  7001.                 ld      (CFG_BITS), a
  7002.  
  7003.  
  7004. loc_A4B1:                               ; CODE XREF: RAM:A4A5
  7005.                 call    SET_BRD_COLOR
  7006.  
  7007.                 pop     af
  7008.                 ex      af, af' ;'
  7009.                 pop     iy
  7010.                 pop     ix
  7011.                 pop     hl
  7012.                 pop     de
  7013.                 pop     bc
  7014.                 exx
  7015.                 pop     hl
  7016.                 pop     de
  7017.                 pop     bc
  7018.                 ret
  7019.  
  7020.  
  7021. ; =============== S U B R O U T I N E =======================================
  7022.  
  7023.  
  7024. sub_A4C2:                               ; CODE XREF: sub_A3D0   sub_A466 ...
  7025.                 push    af
  7026.                 push    de
  7027.                 push    hl
  7028.                 ld      a, (CFG_BITS)
  7029.                 and     #30 ; '0'
  7030.                 jr      z, loc_A4EA
  7031.  
  7032.                 ld      a, (byte_D0B4)
  7033.                 bit     5, a
  7034.                 jr      nz, loc_A4EF ;invisible board?
  7035.  
  7036.                 ld      hl, (word_D09F)
  7037.                 ld      a, h
  7038.                 or      l
  7039.                 jr      z, loc_A4EF
  7040.  
  7041.                 ld      de, (word_D0F7)
  7042.                 or      a
  7043.                 sbc     hl, de
  7044.                 jr      z, loc_A4EF
  7045.  
  7046.                 ld      a, (CFG_BITS)
  7047.                 bit     5, a
  7048.                 jr      nz, loc_A4EF
  7049.  
  7050.  
  7051. loc_A4EA:                               ; CODE XREF: sub_A4C2+8
  7052.                 pop     hl
  7053.                 pop     de
  7054.                 pop     af
  7055.                 or      a
  7056.                 ret
  7057.  
  7058. ; ---------------------------------------------------------------------------
  7059.  
  7060. loc_A4EF:                               ; CODE XREF: sub_A4C2+F sub_A4C2+16     ...
  7061.                 pop     hl
  7062.                 pop     de
  7063.                 pop     af
  7064.                 scf
  7065.                 ret
  7066.  
  7067. ; End of function sub_A4C2
  7068.  
  7069. ; ---------------------------------------------------------------------------
  7070. ; START OF FUNCTION CHUNK FOR sub_8C20
  7071.  
  7072. loc_A4F4:                               ; CODE XREF: sub_8C20-868
  7073.                 call    UnDrawMoveAndCursors
  7074.  
  7075.                 ld      a, #FF
  7076.                 ld      (NEED_SCR2BUF), a
  7077.                 ld      a, (SEL_SCRorBUF)
  7078.                 or      a
  7079.                 call    z, sub_95C5
  7080.  
  7081.                 ld      de, #1000
  7082.                 ld      hl, aSSaveRecordLLo ; "S- Save record   L- Load record"
  7083.                 call    PrintGameState
  7084.  
  7085.                 ld      hl, loc_A671
  7086.                 push    hl
  7087.                 ld      (bas_ERRSP), sp
  7088.                 call    sub_907E
  7089.  
  7090.                 jr      c, loc_A525
  7091.  
  7092.                 and     #5F
  7093.                 cp      'L'
  7094.                 jp      z, loc_A5D9 ;Load
  7095.  
  7096.                 cp      'S'
  7097.                 jp      z, loc_A596 ;Save
  7098.  
  7099. loc_A525:                               ; CODE XREF: sub_8C20+18F7
  7100.                 pop     hl
  7101.                 jp      loc_82EB
  7102.  
  7103. ; END OF FUNCTION CHUNK FOR sub_8C20
  7104.  
  7105. ; =============== S U B R O U T I N E =======================================
  7106.  
  7107.  
  7108. SAVE_RECORD:                            ; CODE XREF: sub_8C20+197F
  7109.                                         ; sub_8C20:fool_name
  7110.                 ld      a, #FF
  7111.                 ld      (SEL_SCRorBUF), a
  7112.                 ld      hl, #1305
  7113.                 ld      (scr_XY), hl
  7114.                 ld      hl,  TAPE_header+#10
  7115.                 ld      b, #10
  7116.  
  7117.  
  7118. loc_A539:                               ; CODE XREF: SAVE_RECORD+13
  7119.                 ld      (hl), #20 ; ' '
  7120.                 dec     hl
  7121.                 djnz    loc_A539
  7122.  
  7123.                 ld      (hl), 9
  7124.  
  7125.  
  7126. loc_A540:                               ; CODE XREF: SAVE_RECORD+28
  7127.                                         ; SAVE_RECORD+42 ...
  7128.                 call    sub_907E
  7129.  
  7130.                 ret     c
  7131.                 cp      #D
  7132.                 jr      z, loc_A56E
  7133.  
  7134.                 cp      #C
  7135.                 jr      nz, loc_A57B
  7136.  
  7137.                 ld      a, (scr_XY)
  7138.                 sub     5
  7139.                 jr      z, loc_A540
  7140.  
  7141.                 ld      hl,  TAPE_header+1
  7142.                 add     a, l
  7143.                 ld      l, a
  7144.                 jr      nc, loc_A55B
  7145.  
  7146.                 inc     h
  7147.  
  7148.  
  7149. loc_A55B:                               ; CODE XREF: SAVE_RECORD+2F
  7150.                 dec     hl
  7151.                 ld      (hl), #20 ; ' '
  7152.                 ld      hl, scr_XY
  7153.                 dec     (hl)
  7154.                 ld      a, #20 ; ' '
  7155.                 call    PRINT_LETTER
  7156.  
  7157.                 ld      hl, scr_XY
  7158.                 dec     (hl)
  7159.                 jp      loc_A540
  7160.  
  7161. ; ---------------------------------------------------------------------------
  7162.  
  7163. loc_A56E:                               ; CODE XREF: SAVE_RECORD+1D
  7164.                 ld      a, (scr_XY)
  7165.                 cp      5
  7166.                 ret     nz
  7167.                 ld      hl,  TAPE_header+1
  7168.                 ld      (hl), #FF
  7169.                 or      a
  7170.                 ret
  7171.  
  7172. ; ---------------------------------------------------------------------------
  7173.  
  7174. loc_A57B:                               ; CODE XREF: SAVE_RECORD+21
  7175.                 ld      e, a
  7176.                 ld      a, (scr_XY)
  7177.                 cp      #F
  7178.                 jp      nc, loc_A540
  7179.  
  7180.                 ld      hl,  TAPE_header+1
  7181.                 sub     5
  7182.                 add     a, l
  7183.                 ld      l, a
  7184.                 jr      nc, loc_A58E
  7185.  
  7186.                 inc     h
  7187.  
  7188.  
  7189. loc_A58E:                               ; CODE XREF: SAVE_RECORD+62
  7190.                 ld      (hl), e
  7191.                 ld      a, e
  7192.                 call    PRINT_LETTER
  7193.  
  7194.                 jp      loc_A540
  7195.  
  7196. ; End of function SAVE_RECORD
  7197.  
  7198. ; ---------------------------------------------------------------------------
  7199. ; START OF FUNCTION CHUNK FOR sub_8C20
  7200.  
  7201. loc_A596:                               ; CODE XREF: sub_8C20+1902
  7202. ;Save
  7203.                 ld      de, #1000
  7204.                 ld      hl, aSaveTheGameRec ; "      SAVE THE GAME RECORD"
  7205.                 call    PrintGameState
  7206.  
  7207.                 call    SAVE_RECORD
  7208.  
  7209.                 jr      c, loc_A5D2
  7210.  
  7211.                 ld      hl, #1500
  7212.                 ld      (scr_XY), hl
  7213.                 ld      hl, aStartTapeAndPr ; "  START TAPE AND PRESS ANY KE"
  7214.                 call    PRINT_STR_FF
  7215.  
  7216.                 call    sub_907E
  7217.  
  7218.                 jr      c, loc_A5D2
  7219.  
  7220.                 ld      ix, TAPE_header
  7221.                 ld      de, #11
  7222.                 xor     a
  7223.                 call    ROM_START+#4C2
  7224.  
  7225.                 ld      a, #32 ; '2'
  7226.  
  7227.  
  7228. loc_A5C2:                               ; CODE XREF: sub_8C20+19A4
  7229.                 halt
  7230.                 dec     a
  7231.                 jr      nz, loc_A5C2
  7232.  
  7233.                 ld      ix, BRD_88_0
  7234.                 ld      de, #3FF
  7235.                 ld      a, #FF
  7236.                 call    ROM_START+#4C2
  7237.  
  7238.  
  7239. loc_A5D2:                               ; CODE XREF: sub_8C20+1982
  7240.                                         ; sub_8C20+1993 ...
  7241.                 pop     hl
  7242.                 call    SET_BRD_COLOR
  7243.  
  7244.                 jp      loc_82EB
  7245.  
  7246. ; ---------------------------------------------------------------------------
  7247.  
  7248. loc_A5D9:                               ; CODE XREF: sub_8C20+18FD
  7249. ;Load
  7250.                 ld      de, #1000
  7251.                 ld      hl, aLoadAGameRecor ; "      LOAD A GAME RECORD"
  7252.                 call    PrintGameState
  7253.  
  7254.  
  7255. fool_name:
  7256.                 call    SAVE_RECORD
  7257.  
  7258.                 jr      c, loc_A5D2
  7259.  
  7260.                 ld      hl, #1500
  7261.                 ld      (scr_XY), hl
  7262.                 ld      hl, #9D53
  7263.                 call    PRINT_STR_FF
  7264.  
  7265.                 call    sub_907E
  7266.  
  7267.                 jr      c, loc_A5D2
  7268.  
  7269.  
  7270. loc_A5F8:                               ; CODE XREF: sub_8C20+19E4
  7271.                                         ; sub_8C20+1A2C
  7272.                 ld      ix, #63B5
  7273.                 ld      de, #11
  7274.                 xor     a
  7275.                 scf
  7276.                 call    ROM_START+#556
  7277.  
  7278.                 jp      nc, loc_A5F8
  7279.  
  7280.                 ld      hl, #1300
  7281.                 ld      (scr_XY), hl
  7282.                 ld      hl, a_32spaces  ; "                        "
  7283.                 call    PRINT_STR_FF
  7284.  
  7285.                 ld      hl, #1300
  7286.                 ld      (scr_XY), hl
  7287.                 ld      a, (byte_63B5)
  7288.                 ld      hl,  aGameRecord
  7289.                 cp      9
  7290.                 jr      z, loc_A626
  7291.  
  7292.                 ld      hl, aNotAGameRecord ; "NOT A GAME RECORD :"
  7293.  
  7294.  
  7295. loc_A626:                               ; CODE XREF: sub_8C20+1A01
  7296.                 call    PRINT_STR_FF
  7297.  
  7298.                 ld      a, (byte_63B6)
  7299.                 inc     a
  7300.                 jr      z, loc_A640
  7301.  
  7302.                 ld      hl, unk_63BF
  7303.                 set     7, (hl)
  7304.                 ld      hl, byte_63B6
  7305.                 call    PRINT_STR_FF
  7306.  
  7307.                 ld      a, (TAPE_header+1)
  7308.                 inc     a
  7309.                 jr      z, loc_A652
  7310.  
  7311.  
  7312. loc_A640:                               ; CODE XREF: sub_8C20+1A0D
  7313.                 ld      de,  TAPE_header+1
  7314.                 ld      hl, byte_63B6
  7315.                 ld      b, #A
  7316.  
  7317.  
  7318. loc_A648:                               ; CODE XREF: sub_8C20+1A30
  7319.                 ld      a, (de)
  7320.                 res     7, (hl)
  7321.                 cp      (hl)
  7322.                 jr      nz, loc_A5F8
  7323.  
  7324.                 inc     hl
  7325.                 inc     de
  7326.                 djnz    loc_A648
  7327.  
  7328.  
  7329. loc_A652:                               ; CODE XREF: sub_8C20+1A1E
  7330.                 ld      ix, RAM_END_D800
  7331.                 ld      de, #3FF
  7332.                 ld      a, #FF
  7333.                 scf
  7334.                 call    ROM_START+#556
  7335.  
  7336.                 jp      nc, loc_A670
  7337.  
  7338.                 ld      hl, RAM_END_D800
  7339.                 ld      de, BRD_88_0
  7340.                 ld      bc, #3FF
  7341.                 ldir
  7342.                 call    INIT_PRINT_CLOCKS
  7343.  
  7344.  
  7345. loc_A670:                               ; CODE XREF: sub_8C20+1A3F
  7346.                 pop     hl
  7347.  
  7348.  
  7349. loc_A671:                               ; DATA XREF: sub_8C20+18EC
  7350.                 ld      hl, (word_D0F7)
  7351.                 inc     hl
  7352.                 ld      (word_D0F7), hl
  7353.                 call    SET_BRD_COLOR
  7354.  
  7355.                 call    sub_9EE6 ;print Cyrus II, level, space to see board
  7356.  
  7357.                 call    PRINT_CLOCKS_SWAP
  7358.  
  7359.                 jp      loc_8A32
  7360.  
  7361. ; END OF FUNCTION CHUNK FOR sub_8C20
  7362.  
  7363. ; =============== S U B R O U T I N E =======================================
  7364.  
  7365.  
  7366. sub_A684:                               ; CODE XREF: sub_8C20-A43
  7367.                                         ; sub_8DE9+55   ...
  7368.                 ld      a, (byte_D0B4)
  7369.                 bit     5, a
  7370.                 ret     nz ;invisible board?
  7371.                 ld      a, (byte_D0DF)
  7372.                 rra
  7373.                 ret     c
  7374.                 push    bc
  7375.                 push    de
  7376.                 push    hl
  7377.                 push    ix
  7378.                 push    iy
  7379.                 exx
  7380.                 push    bc
  7381.                 push    de
  7382.                 push    hl
  7383.                 ld      a, #FF
  7384.                 ld      (NEED_SCR2BUF), a
  7385.                 ld      hl, #D08
  7386.                 ld      (scr_XY), hl
  7387.                 ld      b, 7
  7388.                 ld      hl, byte_D258
  7389.  
  7390. loc_A6AA:                               ; CODE XREF: sub_A684+48
  7391.                 ld      a, (hl)
  7392.                 cp      #FF
  7393.                 jr      z, loc_A6D0
  7394.  
  7395.                 push    bc
  7396.                 push    hl
  7397.                 ld      hl,  a_8spaces+5
  7398.                 call    PRINT_STR_FF
  7399.  
  7400.                 pop     hl
  7401.                 push    hl
  7402.                 ld      a, (hl)
  7403.                 call    sub_A021
  7404.  
  7405.                 ld      a, '-'
  7406.                 call    PRINT_LETTER
  7407.  
  7408.                 pop     hl
  7409.                 inc     hl
  7410.                 push    hl
  7411.                 ld      a, (hl)
  7412.                 call    sub_A021
  7413.  
  7414.                 pop     hl
  7415.                 inc     hl
  7416.                 pop     bc
  7417.                 djnz    loc_A6AA
  7418.  
  7419.                 jr      loc_A6D8
  7420.  
  7421. ; ---------------------------------------------------------------------------
  7422.  
  7423. loc_A6D0:                               ; CODE XREF: sub_A684+29 sub_A684+52
  7424.                 ld      hl, a_8spaces   ; "       "
  7425.                 call    PRINT_STR_FF
  7426.  
  7427.                 djnz    loc_A6D0
  7428.  
  7429. loc_A6D8:                               ; CODE XREF: sub_A684+4A sub_A6F7+3E
  7430.                 pop     hl
  7431.                 pop     de
  7432.                 pop     bc
  7433.                 exx
  7434.                 pop     iy
  7435.                 pop     ix
  7436.                 pop     hl
  7437.                 pop     de
  7438.                 pop     bc
  7439.                 ret
  7440.  
  7441. ; End of function sub_A684
  7442.  
  7443.  
  7444. ; =============== S U B R O U T I N E =======================================
  7445.  
  7446.  
  7447. sub_A6E4:                               ; CODE XREF: sub_8C20-92D
  7448.                                         ; sub_8C20-829 ...
  7449.                 ld      hl, #D08
  7450.                 ld      (scr_XY), hl
  7451.                 ld      hl,  a_32spaces+8
  7452.                 call    PRINT_STR_FF
  7453.  
  7454.                 ld      hl, a_32spaces  ; "                        "
  7455.                 call    PRINT_STR_FF
  7456.  
  7457.                 ret
  7458.  
  7459. ; End of function sub_A6E4
  7460.  
  7461.  
  7462. ; =============== S U B R O U T I N E =======================================
  7463.  
  7464.  
  7465. sub_A6F7:                               ; CODE XREF: sub_AFC5+C7
  7466.                 ld      a, (byte_D0B4)
  7467.                 bit     5, a
  7468.                 ret     nz ;invisible board?
  7469.                 push    bc
  7470.                 push    de
  7471.                 push    hl
  7472.                 push    ix
  7473.                 push    iy
  7474.                 exx
  7475.                 push    bc
  7476.                 push    de
  7477.                 push    hl
  7478.                 exx
  7479.                 ld      de, #F00
  7480.                 ld      (scr_XY), de
  7481.                 ld      a, #FF
  7482.                 ld      (NEED_SCR2BUF), a
  7483.                 ld      a, (hl)
  7484.                 cp      #FE
  7485.                 jr      c, loc_A725
  7486.  
  7487.                 ld      hl,  a_8spaces+5
  7488.                 call    PRINT_STR_FF
  7489.  
  7490.                 ld      hl,  aNoMateIn+3
  7491.                 jr      loc_A728
  7492.  
  7493. ; ---------------------------------------------------------------------------
  7494.  
  7495. loc_A725:                               ; CODE XREF: sub_A6F7+21
  7496.                 ld      hl, aNoMateIn   ; "NO MATE IN"
  7497.  
  7498.  
  7499. loc_A728:                               ; CODE XREF: sub_A6F7+2C
  7500.                 call    PRINT_STR_FF
  7501.  
  7502.                 ld      a, (byte_D098)
  7503.                 srl     a
  7504.                 add     a, '1'
  7505.                 call    PRINT_LETTER
  7506.  
  7507.                 jp      loc_A6D8
  7508.  
  7509. ; End of function sub_A6F7
  7510.  
  7511. ; ---------------------------------------------------------------------------
  7512.  
  7513.  
  7514.         ;cyrus logo, 128 bytes.
  7515.         ;no alignment
  7516.  
  7517. CYRUS_LOGO_spr: db  #00,#00,#00,#00,#00,#00,#00,#00
  7518.                 db  #00,#00,#00,#00,#00,#00,#00,#00
  7519.                 db  #3E,#7D,#F7,#E3,#DE,#3C,#1F,#FC
  7520.                 db  #7F,#7D,#F7,#F3,#DE,#7E,#1F,#FC
  7521.                 db  #F7,#B8,#E3,#39,#8C,#E7,#06,#30
  7522.                 db  #E3,#9D,#C3,#39,#8C,#E7,#06,#30
  7523.                 db  #C0,#0D,#83,#39,#8C,#E0,#06,#30
  7524.                 db  #C0,#0F,#83,#F1,#8C,#FE,#06,#30
  7525.                 db  #C0,#07,#03,#E1,#8C,#7F,#06,#30
  7526.                 db  #C0,#07,#03,#71,#8C,#07,#06,#30
  7527.                 db  #E3,#87,#03,#39,#8C,#E7,#06,#30
  7528.                 db  #F7,#87,#03,#19,#DC,#E7,#06,#30
  7529.                 db  #7F,#0F,#87,#BC,#F8,#7E,#1F,#FC
  7530.                 db  #3E,#0F,#87,#BC,#70,#3C,#1F,#FC
  7531.                 db  #00,#00,#00,#00,#00,#00,#00,#00
  7532.                 db  #00,#00,#00,#00,#00,#00,#00,#00
  7533.  
  7534.  
  7535.  
  7536. ; =============== S U B R O U T I N E =======================================
  7537.  
  7538. ; show CYRUS II logo in upper left part of screen or scrbuf
  7539.  
  7540. SHOW_LOGO:                              ; CODE XREF: sub_A177
  7541.                 push    hl
  7542.                 push    de
  7543.                 push    bc
  7544.                 ld      hl, SCREEN
  7545.                 ld      a, (SEL_SCRorBUF)
  7546.                 or      a
  7547.                 jr      z, loc_A7C8
  7548.  
  7549.                 ld      de, #2400
  7550.                 add     hl, de          ; step to SCR_BUF_6400
  7551.  
  7552.  
  7553. loc_A7C8:                               ; CODE XREF: SHOW_LOGO+A
  7554.                 push    hl
  7555.                 ld      de, CYRUS_LOGO_spr
  7556.                 ld      b, 8
  7557.  
  7558.  
  7559. loc_A7CE:                               ; CODE XREF: SHOW_LOGO+22
  7560.                 ld      c, 8
  7561.                 push    hl
  7562.  
  7563.  
  7564. loc_A7D1:                               ; CODE XREF: SHOW_LOGO+1E
  7565.                 ld      a, (de)
  7566.                 ld      (hl), a
  7567.                 inc     hl
  7568.                 inc     de
  7569.                 dec     c
  7570.                 jr      nz, loc_A7D1
  7571.  
  7572.                 pop     hl
  7573.                 inc     h
  7574.                 djnz    loc_A7CE
  7575.  
  7576.                 pop     hl
  7577.                 ld      a, #20 ; ' '
  7578.                 add     a, l
  7579.                 ld      l, a
  7580.                 ld      b, 8
  7581.  
  7582.  
  7583. loc_A7E3:                               ; CODE XREF: SHOW_LOGO+37
  7584.                 ld      c, 8
  7585.                 push    hl
  7586.  
  7587.  
  7588. loc_A7E6:                               ; CODE XREF: SHOW_LOGO+33
  7589.                 ld      a, (de)
  7590.                 ld      (hl), a
  7591.                 inc     hl
  7592.                 inc     de
  7593.                 dec     c
  7594.                 jr      nz, loc_A7E6
  7595.  
  7596.                 pop     hl
  7597.                 inc     h
  7598.                 djnz    loc_A7E3
  7599.  
  7600.                 pop     bc
  7601.                 pop     de
  7602.                 pop     hl
  7603.                 ret
  7604.  
  7605. ; End of function SHOW_LOGO
  7606.  
  7607. ; ---------------------------------------------------------------------------
  7608.  
  7609.        if !FIX
  7610.         ;unneeded space???
  7611.                 ds      267
  7612.        endif
  7613.  
  7614.  
  7615.  
  7616.  
  7617.  
  7618.  
  7619.  
  7620.  
  7621.  
  7622.         ;following jump table is unneeded???
  7623.  
  7624. sub_A900:
  7625.                 jp      sub_AFC5
  7626. sub_A903:
  7627.                 jp      loc_A961
  7628. sub_A906:
  7629.                 jp      sub_AD40
  7630. sub_A909:
  7631.                 jp      sub_AF81
  7632. _FindMove_D_E:
  7633.                 jp      FindMove_D_E
  7634. sub_A90F:
  7635.                 jp      sub_AB4C
  7636. loc_A912:
  7637.                 jp      loc_AF68
  7638. sub_A915:
  7639.                 jp      sub_B8B2
  7640.  
  7641.  
  7642.  
  7643.  
  7644.  
  7645. ; ---------------------------------------------------------------------------
  7646.        if FIX
  7647.                 align 8
  7648.        endif
  7649.  
  7650.                 ;must be inside 256b page
  7651. byte_A918:      db #0E,#12,#1F,#21,#F2,#EE,#E1,#DF ;8 bytes ;knight moves?
  7652.  
  7653. byte_A920:      db #0F                  ; DATA XREF: sub_A94F+42 ;sub_AAF8:loc_AAFA ... ;8 bytes ;bishop moves (then rook moves)
  7654.                 db #11
  7655.                 db #EF
  7656.                 db #F1
  7657. byte_A924:      db #01                  ; DATA XREF: sub_AAC9:loc_AACB ;4 bytes ;rook moves?
  7658.                 db #FF
  7659.                 db #10
  7660.                 db #F0                 
  7661.  
  7662. byte_A928: ; DATA XREF: sub_AFC5:loc_B00D
  7663. ;any place?
  7664.                 db #80
  7665.                 db #00
  7666.                 db #34
  7667.                 db #02
  7668.                 db #28
  7669.                 db #06
  7670.                 db #19
  7671.                 db #0E
  7672.                 db #00
  7673.                 db #1E
  7674.  
  7675. ; =============== S U B R O U T I N E =======================================
  7676.  
  7677.  
  7678. sub_A932:                               ; CODE XREF: sub_AFC5+30 sub_AFC5+36
  7679.                 ld      c, 0
  7680.                 ld      b, #F
  7681. loc_A936:                               ; CODE XREF: sub_A932+1A
  7682.                 bit     7, (hl)
  7683.                 jr      nz, loc_A948
  7684.  
  7685.                 inc     l
  7686.                 ld      a, (hl)
  7687.                 and     #F
  7688.                 cp      1
  7689.                 jr      nz, loc_A945
  7690.                 ld      (byte_D04C), a
  7691. loc_A945:                               ; CODE XREF: sub_A932+E
  7692.                 add     a, c
  7693.                 ld      c, a
  7694.                 dec     l
  7695.  
  7696. loc_A948:                               ; CODE XREF: sub_A932+6
  7697.                 ld      a, 8
  7698.                 add     a, l
  7699.                 ld      l, a
  7700.                 djnz    loc_A936
  7701.  
  7702.                 ret
  7703.  
  7704. ; End of function sub_A932
  7705.  
  7706.  
  7707. ; =============== S U B R O U T I N E =======================================
  7708.  
  7709.  
  7710. sub_A94F:                               ; CODE XREF: sub_AFC5+4 sub_B47F-77
  7711.                 call    sub_8F4D
  7712.  
  7713.                 ld      a, (ix+2)
  7714.                 and     #C9
  7715.                 jr      z, loc_A961
  7716.  
  7717.                 ld      hl,  word_D00D+1
  7718.                 jp      p, loc_A960
  7719.                 inc     (hl)
  7720. loc_A960:                               ; CODE XREF: sub_A94F+D
  7721.                 inc     (hl)
  7722. loc_A961:                               ; CODE XREF: sub_A903   sub_A94F+8
  7723.                 ld      hl, byte_D097
  7724.                 ld      a, (hl)
  7725.                 add     a, a
  7726.                 add     a, l
  7727.                 ld      l, a
  7728.                 ld      e, (hl)
  7729.                 inc     l
  7730.                 ld      d, (hl)
  7731.                 inc     l
  7732.                 inc     de
  7733.                 push    de
  7734.                 inc     de
  7735.                 inc     de
  7736.                 push    hl
  7737.                 ld      h, BRD_88_0/256
  7738.                 ld      iy, word_D100
  7739.                 ld      a, (byte_D02D)
  7740.                 exx
  7741.                 rrca
  7742.                 ld      c, a
  7743.                 exx
  7744.                 jr      nc, loc_A984
  7745.                 ld      iy, word_D180
  7746. loc_A984:                               ; CODE XREF: sub_A94F+2F
  7747.                 ld      b, (iy+0)
  7748.                 bit     4, (iy+1)
  7749.                 call    z, sub_AB0A ;проверяем и пишем рокировки в список ходов?
  7750.  
  7751.                 ld      c, #88
  7752.                 exx
  7753.                 ld      de, byte_A920 ;bishop moves (then rook moves)
  7754.                 call    sub_AAA7 ;8 moves (queen?)
  7755.  
  7756.                 ld      a, (iy+8)
  7757.                 or      a
  7758.                 call    p, sub_AB00 ;составляем список ходов от поля A для ферзя?
  7759.  
  7760.                 ld      a, (iy+#10)
  7761.                 or      a
  7762.                 call    p, sub_AAC9 ;составляем список ходов от поля A для ладьи
  7763.  
  7764.                 ld      a, (iy+#18)
  7765.                 or      a
  7766.                 call    p, sub_AAC9 ;составляем список ходов от поля A для ладьи
  7767.  
  7768.                 ld      a, (iy+#20)
  7769.                 or      a
  7770.                 call    p, sub_AAF8 ;составляем список ходов от поля A для слона?
  7771.  
  7772.                 ld      a, (iy+#28)
  7773.                 or      a
  7774.                 call    p, sub_AAF8 ;составляем список ходов от поля A для слона?
  7775.  
  7776.                 ld      a, (iy+#30)
  7777.                 ld      c, #88
  7778.                 or      a
  7779.                 call    p, sub_AAA2 ;составляем список ходов от поля A для коня?
  7780.  
  7781.                 ld      a, (iy+#38)
  7782.                 or      a
  7783.                 call    p, sub_AAA2 ;составляем список ходов от поля A для коня?
  7784.  
  7785.                 ld      c, #11
  7786.                 exx
  7787.                 ld      hl, unk_D140
  7788.                 bit     7, c
  7789.                 jr      z, loc_A9DA
  7790.  
  7791.                 ld      l, #C0  ; word_D1C0&255
  7792.                 exx
  7793.                 ld      c, #F1
  7794.                 exx
  7795.  
  7796. loc_A9DA:                               ; CODE XREF: sub_A94F+83 sub_A94F+F2
  7797.                 ld      a, (hl)
  7798.                 rla
  7799.                 jr      c, loc_AA3B
  7800.  
  7801.                 inc     l
  7802.                 ld      a, (hl)
  7803.                 dec     l
  7804.                 and     #E
  7805.                 ld      a, (hl)
  7806.                 exx
  7807.                 ld      b, a
  7808.                 jr      nz, loc_AA54
  7809.  
  7810.                 add     a, c
  7811.                 ld      l, a
  7812.                 xor     a
  7813.                 or      (hl) ;впереди справа?
  7814.                 jp      z, loc_A9F6
  7815.  
  7816.                 exx
  7817.                 xor     c
  7818.                 exx
  7819.                 call    m, sub_AB41 ;пишем ход B-L, флаги A=8=съедение
  7820.                 xor     a
  7821.  
  7822. loc_A9F6:                               ; CODE XREF: sub_A94F+9D
  7823.                 dec     l
  7824.                 dec     l
  7825.                 or      (hl) ;впереди слева?
  7826.                 jp      z, loc_AA03
  7827.  
  7828.                 exx
  7829.                 xor     c
  7830.                 exx
  7831.                 call    m, sub_AB41 ;пишем ход B-L, флаги A=8=съедение
  7832.                 xor     a
  7833.  
  7834. loc_AA03:                               ; CODE XREF: sub_A94F+AA
  7835.                 inc     l
  7836.                 or      (hl)
  7837.                 jr      nz, loc_AA33
  7838.  
  7839.                 ex      de, hl
  7840.                 ld      (hl), b ;откуда
  7841.                 inc     hl
  7842.                 ld      (hl), e ;куда
  7843.                 inc     hl
  7844.                 ld      (hl), a ;флаги=0
  7845.                 inc     hl
  7846.                 ex      de, hl
  7847.                 ld      a, b
  7848.                 add     a, #20 ; ' '
  7849.                 bit     6, a
  7850.                 jr      nz, loc_AA33
  7851.  
  7852.                 ld      a, c
  7853.                 dec     a
  7854.                 add     a, l
  7855.                 jp      m, loc_AA3A
  7856.  
  7857.                 ld      l, a
  7858.                 xor     a
  7859.                 or      (hl)
  7860.                 jr      nz, loc_AA3A
  7861.  
  7862.                 call    sub_AB43 ;пишем ход B-L, флаги A=0
  7863.  
  7864.                 dec     l
  7865.                 or      (hl)
  7866.                 call    nz, sub_AA8B
  7867.  
  7868.                 inc     l
  7869.                 inc     l
  7870.                 ld      a, (hl)
  7871.                 or      a
  7872.                 call    nz, sub_AA8B
  7873.  
  7874.                 jp      loc_AA3A
  7875.  
  7876. ; ---------------------------------------------------------------------------
  7877.  
  7878. loc_AA33:                               ; CODE XREF: sub_A94F+B6 sub_A94F+C5
  7879.                 bit     5, (ix+2)
  7880.                 call    nz, sub_AA71
  7881.  
  7882. loc_AA3A:                               ; CODE XREF: sub_A94F+CA sub_A94F+D0 ...
  7883.                 exx
  7884.  
  7885. loc_AA3B:                               ; CODE XREF: sub_A94F+8D
  7886.                 ld      a, 8
  7887.                 add     a, l
  7888.                 ld      l, a
  7889.                 bit     6, a
  7890.                 jp      nz, loc_A9DA
  7891.  
  7892.                 exx
  7893.                 ld      a, #FF
  7894.                 ld      (de), a
  7895.                 pop     hl
  7896.                 ld      (hl), e
  7897.                 inc     l
  7898.                 ld      (hl), d
  7899.                 pop     hl
  7900.                 ld      (hl), a
  7901.                 inc     hl
  7902.                 ld      a, (ix+2)
  7903.                 ld      (hl), a
  7904.                 ret
  7905.  
  7906. ; ---------------------------------------------------------------------------
  7907.  
  7908. loc_AA54:                               ; CODE XREF: sub_A94F+97
  7909.                 push    bc
  7910.                 ld      c, #88
  7911.                 exx
  7912.                 inc     l
  7913.                 ld      a, (hl)
  7914.                 dec     l
  7915.                 ld      de, byte_AA6D
  7916.                 push    de
  7917.                 or      a
  7918.                 jp      m, loc_AAFA
  7919.  
  7920.                 rra
  7921.                 rra
  7922.                 jr      c, loc_AAA4
  7923.  
  7924.                 rra
  7925.                 jr      c, loc_AACB
  7926.  
  7927.                 jp      loc_AB02
  7928.  
  7929. ; End of function sub_A94F
  7930.  
  7931. ; ---------------------------------------------------------------------------
  7932. byte_AA6D:      db  #C1,#D9,#18,#CA ; DATA      XREF: sub_A94F+10C
  7933.  
  7934. ; =============== S U B R O U T I N E =======================================
  7935.  
  7936.  
  7937. sub_AA71:                               ; CODE XREF: sub_A94F+E8
  7938.                 bit     3, (ix+2)
  7939.                 ret     nz
  7940.                 ld      a, (ix+1)
  7941.                 and     #7F
  7942.                 inc     a
  7943.                 cp      b
  7944.                 jr      z, loc_AA85
  7945.  
  7946.                 dec     a
  7947.                 dec     a
  7948.                 cp      b
  7949.                 ret     nz
  7950.                 inc     l
  7951.                 inc     l
  7952.  
  7953.  
  7954. loc_AA85:                               ; CODE XREF: sub_AA71+C
  7955.                 dec     l
  7956.                 ld      a, #28
  7957.                 jp      sub_AB43 ;пишем ход B-L, флаги A
  7958.  
  7959. ; End of function sub_AA71
  7960.  
  7961.  
  7962. ; =============== S U B R O U T I N E =======================================
  7963.  
  7964.  
  7965. sub_AA8B:                               ; CODE XREF: sub_A94F+D7 sub_A94F+DE
  7966.                 exx
  7967.                 xor     c
  7968.                 exx
  7969.                 ret     p
  7970.                 ld      a, (hl)
  7971.                 exx
  7972.                 ld      b, l
  7973.                 sub     3
  7974.                 ld      l, a
  7975.                 ld      a, (hl)
  7976.                 ld      l, b
  7977.                 exx
  7978.                 and     #F
  7979.                 dec     a
  7980.                 ret     nz
  7981.                 ld      a, #20 ; ' '
  7982.                 dec     de
  7983.                 ld      (de), a
  7984.                 inc     de
  7985.                 ret
  7986.  
  7987. ; End of function sub_AA8B
  7988.  
  7989.  
  7990. ; =============== S U B R O U T I N E =======================================
  7991.  
  7992.  
  7993. sub_AAA2:                               ; CODE XREF: sub_A94F+71 sub_A94F+78
  7994.                 ld      b, a
  7995.                 exx
  7996.  
  7997.  
  7998. loc_AAA4:                               ; CODE XREF: sub_A94F+116
  7999.                 ld      de, byte_A918 ;knight moves?
  8000.  
  8001. ; End of function sub_AAA2
  8002.  
  8003.  
  8004. ; =============== S U B R O U T I N E =======================================
  8005.  
  8006.  
  8007. sub_AAA7:                               ; CODE XREF: sub_A94F+45
  8008.                 ld      b, 8
  8009.  
  8010. loc_AAA9:                               ; CODE XREF: sub_AAA7:loc_AAC5
  8011.                 ld      a, (de) ;сдвиг фигуры
  8012.                 inc     e
  8013.                 exx
  8014.                 add     a, b ;+откуда
  8015.                 ld      l, a ;куда
  8016.                 and     c
  8017.                 jr      nz, loc_AAC4
  8018.  
  8019.                 or      (hl)
  8020.                 jr      z, loc_AABC
  8021.  
  8022.                 exx
  8023.                 xor     c
  8024.                 jp      p, loc_AAC5 ;не можем съесть свою фигуру
  8025.                 exx
  8026.                 ld      a, 8 ;съедение?
  8027.  
  8028. loc_AABC:                               ; CODE XREF: sub_AAA7+B
  8029.                 ex      de, hl
  8030.                 ld      (hl), b ;откуда
  8031.                 inc     hl
  8032.                 ld      (hl), e ;куда
  8033.                 inc     hl
  8034.                 ld      (hl), a ;флаги=0/8
  8035.                 inc     hl
  8036.                 ex      de, hl
  8037.  
  8038. loc_AAC4:                               ; CODE XREF: sub_AAA7+8
  8039.                 exx
  8040.  
  8041. loc_AAC5:                               ; CODE XREF: sub_AAA7+F
  8042.                 djnz    loc_AAA9
  8043.  
  8044.                 exx
  8045.                 ret
  8046.  
  8047. ; End of function sub_AAA7
  8048.  
  8049.  
  8050. ; =============== S U B R O U T I N E =======================================
  8051.  
  8052.  
  8053. sub_AAC9:                               ; CODE XREF: sub_A94F+53 sub_A94F+5A
  8054. ;составляем список ходов от поля A для ладьи
  8055.                 ld      b, a
  8056.                 exx
  8057.  
  8058. loc_AACB:                               ; CODE XREF: sub_A94F+119
  8059.                 ld      de, byte_A924 ;rook moves?
  8060.  
  8061. loc_AACE:                               ; CODE XREF: sub_AAF8+5
  8062.                 ld      b, 4
  8063.  
  8064. loc_AAD0:                               ; CODE XREF: sub_AAC9:loc_AAF4
  8065.                                         ; sub_AB00+7
  8066.                 ld      a, (de)
  8067.                 inc     e
  8068.                 exx
  8069.                 ld      c, a
  8070.                 ld      l, b ;откуда
  8071.  
  8072. loc_AAD5:                               ; CODE XREF: sub_AAC9+1E
  8073.                 ld      a, l
  8074.                 add     a, c
  8075.                 ld      l, a ;куда
  8076.                 and     #88
  8077.                 jr      nz, loc_AAF3 ;вышли за пределы доски
  8078.  
  8079.                 or      (hl)
  8080.                 jr      nz, loc_AAEA ;на занятое поле
  8081.  
  8082.                 ex      de, hl
  8083.                 ld      (hl), b ;откуда
  8084.                 inc     hl
  8085.                 ld      (hl), e ;куда
  8086.                 inc     hl
  8087.                 ld      (hl), a ;флаги=0
  8088.                 inc     hl
  8089.                 ex      de, hl
  8090.                 jp      loc_AAD5
  8091.  
  8092. ; ---------------------------------------------------------------------------
  8093.  
  8094. loc_AAEA:                               ; CODE XREF: sub_AAC9+14
  8095.                 exx
  8096.                 xor     c
  8097.                 jp      p, loc_AAF4 ;не можем съесть свою фигуру
  8098.                 exx
  8099.  
  8100.                 call    sub_AB41 ;пишем ход B-L, флаги A=8=съедение
  8101. loc_AAF3:                               ; CODE XREF: sub_AAC9+11
  8102.  
  8103.                 exx
  8104. loc_AAF4:                               ; CODE XREF: sub_AAC9+23
  8105.                 djnz    loc_AAD0
  8106.                 exx
  8107.                 ret
  8108.  
  8109. ; End of function sub_AAC9
  8110.  
  8111.  
  8112. ; =============== S U B R O U T I N E =======================================
  8113.  
  8114.  
  8115. sub_AAF8:                               ; CODE XREF: sub_A94F+61 sub_A94F+68
  8116.                 ld      b, a
  8117.                 exx
  8118. loc_AAFA:                               ; CODE XREF: sub_A94F+111
  8119.                 ld      de, byte_A920 ;bishop moves (then rook moves)
  8120.                 jp      loc_AACE ;4 moves (bishop)
  8121.  
  8122. ; End of function sub_AAF8
  8123.  
  8124.  
  8125. ; =============== S U B R O U T I N E =======================================
  8126.  
  8127.  
  8128. sub_AB00:                               ; CODE XREF: sub_A94F+4C
  8129.                 ld      b, a
  8130.                 exx
  8131.  
  8132. loc_AB02:                               ; CODE XREF: sub_A94F+11B
  8133.                 ld      de, byte_A920 ;bishop moves (then rook moves)
  8134.                 ld      b, 8
  8135.                 jp      loc_AAD0
  8136.  
  8137. ; End of function sub_AB00
  8138.  
  8139.  
  8140. ; =============== S U B R O U T I N E =======================================
  8141.  
  8142.  
  8143. sub_AB0A:                               ; CODE XREF: sub_A94F+3C
  8144. ;проверяем и пишем рокировки в список ходов?
  8145.                 bit     7, (ix+2)
  8146.                 ret     nz ;король уже ходил? или это шах?
  8147.                 bit     4, (iy+#19)
  8148.                 jr      nz, gencastlingRfail;loc_AB26 ;ладья уже ходила?
  8149.                 bit     7, (iy+#18)
  8150.                 jr      nz, gencastlingRfail;loc_AB26 ;ладья мертва?
  8151.  
  8152.        if FIX
  8153. ;в Chess960 проверять сколько надо полей вправо (от короля или F (смотря что левее) вплоть до G, кроме короля и самой ладьи - именно этой! левая может мешать)
  8154.         ld a,b ;положение короля
  8155.         and 7
  8156.         cp 5 ;F
  8157.         jr c,$+4 ;король левее F
  8158.          ld a,5 ;F
  8159.         xor b
  8160.         and 7
  8161.         xor b
  8162.         ld l,a ;от короля или F (смотря что левее)
  8163. gencastlingR0
  8164.         ld a,(hl)
  8165.         or a
  8166.         jr z,gencastlingR0ok
  8167.         and 0x3c
  8168.         cp (_K|4)&0x3c
  8169.         jr z,gencastlingR0ok
  8170.         ld a,(hl)
  8171.         and 0x3c;0x30
  8172.         cp ((_R|4)&0x3c)+8;0x1c;_R&0x30 ;код правой ладьи
  8173.         jr nz,gencastlingRfail
  8174. gencastlingR0ok
  8175.         inc l
  8176.         ld a,l
  8177.         and 7
  8178.         cp 7 ;H?
  8179.         jr nz,gencastlingR0
  8180.         ;ld a,b
  8181.         ;and 0xf8
  8182.         ;or 6
  8183.         dec l;ld l,a ;G
  8184.         call sub_AB3C ;пишем ход B-L, флаги A=#10=рокировка
  8185.  
  8186.        else
  8187.                 xor     a
  8188.                 ld      l, b ;положение короля
  8189.                 inc     l
  8190.                 or      (hl) ;справа пусто?
  8191.                 jr      nz, gencastlingRfail;loc_AB26
  8192.  
  8193.                 inc     l
  8194.                 or      (hl) ;ещё правее пусто?
  8195.                 call    z, sub_AB3C ;пишем ход B-L, флаги A=#10=рокировка
  8196.        endif
  8197.  
  8198. gencastlingRfail;loc_AB26:                              ; CODE XREF: sub_AB0A+9 sub_AB0A+F ...
  8199. ;рокировка влево
  8200.                 bit     4, (iy+#11)
  8201.                 ret     nz ;ладья уже ходила?
  8202.                 bit     7, (iy+#10)
  8203.                 ret     nz ;ладья мертва?
  8204.        if FIX
  8205. ;в Chess960 проверять сколько надо полей влево (от короля или D (смотря что правее) вплоть до C или ладьи (смотря что левее), кроме короля и самой ладьи - именно этой! правая может мешать)
  8206.         ld a,b ;положение короля
  8207.         and 7
  8208.         cp 3 ;D
  8209.         jr nc,$+4 ;король D или правее D
  8210.          ld a,4 ;D
  8211.         xor b
  8212.         and 7
  8213.         xor b
  8214.         ld l,a ;от короля или D (смотря что правее)
  8215. gencastlingL0
  8216.         ld a,(hl)
  8217.         or a
  8218.         jr z,gencastlingL0ok
  8219.         and 0x3c
  8220.         cp (_K|4)&0x3c
  8221.         jr z,gencastlingL0ok
  8222.         ld a,(hl)
  8223.         and 0x3c;0x30
  8224.         cp (_R|4)&0x3c;0x14;_R&0x30 ;код левой ладьи
  8225.         ret nz
  8226.         ld a,l
  8227.         and 7
  8228.         cp 2      
  8229.         jr c,gencastlingL0allok ;ладья найдена левее C - дальше не проверяем
  8230. gencastlingL0ok
  8231.         ld a,l
  8232.         dec l
  8233.         and 7
  8234.         jr nz,gencastlingL0
  8235. gencastlingL0allok
  8236.         ld a,b
  8237.         and 0xf8
  8238.         or 2
  8239.         ld l,a ;C
  8240.  
  8241.        else
  8242.                 ld      l, b ;положение короля
  8243.                 xor     a
  8244.                 dec     l
  8245.                 or      (hl) ;слева пусто?
  8246.                 ret     nz
  8247.                 dec     l
  8248.                 or      (hl) ;ещё левее пусто?
  8249.                 ret     nz
  8250.                 dec     l
  8251.                 or      (hl) ;ещё левее пусто?
  8252.                 ret     nz
  8253.                 inc     l
  8254.        endif
  8255. ;пишем ход B-L, флаги A=#10=рокировка?
  8256. ; =============== S U B R O U T I N E =======================================
  8257. sub_AB3C:                               ; CODE XREF: sub_AB0A+19
  8258.                 ld      a, #10 ;рокировка?
  8259.                 jp      sub_AB43 ;пишем ход B-L, флаги A
  8260. ; =============== S U B R O U T I N E =======================================
  8261. sub_AB41:                               ; CODE XREF: sub_A94F+A3 sub_A94F+B0 ...
  8262.                 ld      a, 8 ;съедение
  8263. ; =============== S U B R O U T I N E =======================================
  8264. sub_AB43:                               ; CODE XREF: sub_A94F+D2 sub_AA71+17 ...
  8265.                 ex      de, hl
  8266.                 ld      (hl), b ;откуда
  8267.                 inc     hl
  8268.                 ld      (hl), e ;куда
  8269.                 inc     hl
  8270.                 ld      (hl), a ;флаги
  8271.                 inc     hl
  8272.                 ex      de, hl
  8273.                 ret
  8274.  
  8275. ; End of function sub_AB43
  8276.  
  8277.  
  8278. ; =============== S U B R O U T I N E =======================================
  8279.  
  8280.  
  8281. sub_AB4C:                               ; CODE XREF: sub_A90F   sub_AFC5+66
  8282.                 ld      de, XOR_A
  8283. ; End of function sub_AB4C
  8284.  
  8285.                 ld      (JP_ADDR), de
  8286.  
  8287.  
  8288. ; =============== S U B R O U T I N E =======================================
  8289.  
  8290.  
  8291. sub_AB53:                               ; CODE XREF: sub_B47F-4C
  8292.                 ld      a, (hl)
  8293.                 ld      (byte_D01D), a
  8294.                 inc     hl
  8295.                 push    hl
  8296.                 pop     ix
  8297.                 ld      (word_D04A), hl
  8298.                 ld      (word_D069), hl
  8299.                 xor     a
  8300.                 ld      hl, unk_D0E6
  8301.                 ld      b, #A
  8302.  
  8303.  
  8304. loc_AB67:                               ; CODE XREF: sub_AB53+16
  8305.                 ld      (hl), a
  8306.                 inc     hl
  8307.                 djnz    loc_AB67
  8308.  
  8309.                 ld      (byte_D04E), a
  8310.                 jp      loc_ABC6
  8311.  
  8312. ; ---------------------------------------------------------------------------
  8313.  
  8314. loc_AB71:                               ; CODE XREF: sub_AB53+77
  8315.                 inc     a
  8316.                 jr      z, loc_AB81
  8317.  
  8318.                 ld      a, (ix+1)
  8319.                 inc     a
  8320.                 jr      z, loc_ABC1
  8321.  
  8322.                 ld      a, 1
  8323.                 ld      (byte_D04E), a
  8324.                 jr      loc_ABC1
  8325.  
  8326. ; ---------------------------------------------------------------------------
  8327.  
  8328. loc_AB81:                               ; CODE XREF: sub_AB53+1F
  8329.                 xor     a
  8330.                 ld      (word_D04A+1), a
  8331.                 ld      a, (byte_D0EF)
  8332.                 ld      hl, (word_D069)
  8333.                 or      a
  8334.                 jr      nz, loc_ABA6
  8335.  
  8336.                 ld      a, (byte_D04E)
  8337.                 or      a
  8338.                 jr      z, loc_ABA6
  8339.  
  8340.                 cp      1
  8341.                 jr      z, loc_ABA6
  8342.  
  8343.                 ld      de, (word_D086)
  8344.                 ld      b, 3
  8345.  
  8346.  
  8347. loc_AB9E:                               ; CODE XREF: sub_AB53+4F
  8348.                 ld      a, (de)
  8349.                 ld      (hl), a
  8350.                 inc     de
  8351.                 inc     hl
  8352.                 djnz    loc_AB9E
  8353.  
  8354.                 ld      a, 6
  8355.  
  8356.  
  8357. loc_ABA6:                               ; CODE XREF: sub_AB53+39 sub_AB53+3F ...
  8358.                 ld      (hl), #FF
  8359.                 or      a
  8360.                 ret
  8361.  
  8362. ; ---------------------------------------------------------------------------
  8363.  
  8364. loc_ABAA:                               ; CODE XREF: sub_AB53+89
  8365.                 ld      a, 0
  8366.                 ld      (word_D04A+1), a
  8367.                 ret
  8368.  
  8369. ; ---------------------------------------------------------------------------
  8370.  
  8371. loc_ABB0:                               ; CODE XREF: sub_AB53+8B
  8372.                 ld      a, (byte_D04E)
  8373.                 cp      c
  8374.                 jr      nc, loc_ABC1
  8375.  
  8376.                 dec     a
  8377.                 jr      z, loc_ABC1
  8378.  
  8379.                 ld      a, c
  8380.                 ld      (byte_D04E), a
  8381.                 ld      (word_D086), ix
  8382.  
  8383.  
  8384. loc_ABC1:                               ; CODE XREF: sub_AB53+25 sub_AB53+2C ...
  8385.                 ld      de, 3
  8386.                 add     ix, de
  8387.  
  8388.  
  8389. loc_ABC6:                               ; CODE XREF: sub_AB53+1B
  8390.                 ld      a, (ix+0)
  8391.                 rlca
  8392.                 jr      c, loc_AB71
  8393.  
  8394.                 call    sub_AD40
  8395.  
  8396.                 call    sub_BC00
  8397.  
  8398.                 call    sub_AF81
  8399.  
  8400.                 ld      a, c
  8401.                 or      a
  8402.                 jr      z, loc_ABC1
  8403.  
  8404.                 call    sub_B79D
  8405.  
  8406.                 jr      c, loc_ABAA
  8407.  
  8408.                 jr      nz, loc_ABB0
  8409.  
  8410.                 ld      a, (ix+2)
  8411.                 and     #88 ; '?'
  8412.                 ld      a, c
  8413.                 jr      z, loc_ABEF
  8414.  
  8415.                 add     a, 4
  8416.                 jr      nc, loc_ABEE
  8417.  
  8418.                 ld      a, #FF
  8419.  
  8420.  
  8421. loc_ABEE:                               ; CODE XREF: sub_AB53+97
  8422.                 ld      c, a
  8423.  
  8424.  
  8425. loc_ABEF:                               ; CODE XREF: sub_AB53+93
  8426.                 ld      hl, unk_D0E6
  8427.                 cp      (hl)
  8428.                 jr      nc, loc_AC0F
  8429.  
  8430.                 ld      hl, (word_D069)
  8431.                 ld      a, (ix+0)
  8432.                 ld      (hl), a
  8433.                 inc     hl
  8434.                 ld      a, (ix+1)
  8435.                 ld      (hl), a
  8436.                 inc     hl
  8437.                 ld      a, (ix+2)
  8438.                 res     6, a
  8439.                 ld      (hl), a
  8440.                 inc     hl
  8441.                 ld      (word_D069), hl
  8442.                 jp      loc_ABC1
  8443.  
  8444. ; ---------------------------------------------------------------------------
  8445.  
  8446. loc_AC0F:                               ; CODE XREF: sub_AB53+A0
  8447.                 ld      b, 9
  8448.                 ld      d, h
  8449.                 ld      e, l
  8450.                 jp      loc_AC19
  8451.  
  8452. ; ---------------------------------------------------------------------------
  8453.  
  8454. loc_AC16:                               ; CODE XREF: sub_AB53+C9
  8455.                 ld      (de), a
  8456.                 inc     e
  8457.                 dec     b
  8458.  
  8459.  
  8460. loc_AC19:                               ; CODE XREF: sub_AB53+C0
  8461.                 inc     l
  8462.                 ld      a, (hl)
  8463.                 cp      c
  8464.                 jr      c, loc_AC16
  8465.  
  8466.                 ld      a, c
  8467.                 ld      (de), a
  8468.                 ld      de, (word_D04A)
  8469.                 ld      hl, (word_D069)
  8470.                 ld      a, b
  8471.                 add     a, a
  8472.                 add     a, b
  8473.                 sbc     hl, de
  8474.                 ld      c, a
  8475.                 ld      b, 0
  8476.                 sbc     hl, bc
  8477.                 ld      b, h
  8478.                 ld      c, l
  8479.                 ld      a, (ix+0)
  8480.                 ld      d, (ix+1)
  8481.                 ld      e, (ix+2)
  8482.                 push    de
  8483.                 ld      hl, (word_D069)
  8484.                 ld      d, h
  8485.                 ld      e, l
  8486.                 dec     hl
  8487.                 inc     de
  8488.                 inc     de
  8489.                 inc     de
  8490.                 ld      (word_D069), de
  8491.                 dec     de
  8492.                 jr      z, loc_AC4F
  8493.  
  8494.                 lddr
  8495.  
  8496.  
  8497. loc_AC4F:                               ; CODE XREF: sub_AB53+F8
  8498.                 inc     hl
  8499.                 ld      (hl), a
  8500.                 pop     de
  8501.                 inc     hl
  8502.                 ld      (hl), d
  8503.                 inc     hl
  8504.                 ld      (hl), e
  8505.                 jp      loc_ABC1
  8506.  
  8507. ; End of function sub_AB53
  8508.  
  8509.  
  8510. ; =============== S U B R O U T I N E =======================================
  8511. FindMove_D_E:                           ; CODE XREF: _FindMove_D_E
  8512.                 ld      bc, 3
  8513. loc_AC5C:                               ; CODE XREF: FindMove_D_E_continue+5 FindMove_D_E_continue+F
  8514.                 add     hl, bc
  8515. ; End of function FindMove_D_E
  8516. ; =============== S U B R O U T I N E =======================================
  8517. FindMove_D_E_continue:                          ; CODE XREF: FindMoveAndSwap+48 FindMoveAndSwap+52
  8518.                 ld      a, (hl)
  8519.                 cp      d
  8520.                 jr      z, loc_AC67 ;from совпало
  8521.                 inc     a
  8522.                 jp      nz, loc_AC5C
  8523.                 scf ;не совпало
  8524.                 ret
  8525. ; ---------------------------------------------------------------------------
  8526. loc_AC67:                               ; CODE XREF: FindMove_D_E_continue+2
  8527.                 inc     hl
  8528.                 ld      a, (hl)
  8529.                 dec     hl
  8530.                 cp      e
  8531.                 ret     z ;to совпало
  8532.                 jp      loc_AC5C
  8533. ; End of function FindMove_D_E_continue
  8534. ; ---------------------------------------------------------------------------
  8535. ; START OF FUNCTION CHUNK FOR sub_AC74
  8536.  
  8537. loc_AC6F:                               ; CODE XREF: sub_AC74+37
  8538.                 ld      a, #FF ;end of opening?
  8539.                 ld      (byte_D09E), a
  8540. ; END OF FUNCTION CHUNK FOR sub_AC74
  8541. ; =============== S U B R O U T I N E =======================================
  8542. sub_AC74:                               ; CODE XREF: sub_AFC5+B
  8543. ; FUNCTION CHUNK AT AC6F SIZE 00000005 BYTES
  8544.                 ld      a, (byte_D09E)
  8545.                 or      a
  8546.                 ret     nz ;end of opening?
  8547.                 ld      a, (byte_D20C) ;oldmove #?
  8548.                 dec     a
  8549.                 ret     nz
  8550.                 call    GEN_RANDBYTE ;b=rnd
  8551.  
  8552.                 ld      hl, #FFFF
  8553. loc_AC84:                               ; CODE XREF: sub_AC74+33
  8554.                 inc     hl ;hl=opening chunk
  8555.                 ld      a, (word_D0F7)
  8556.                 ld      c, a
  8557.                 ld      a, (byte_D09E)
  8558.                 inc     a
  8559.                 ld      (byte_D09E), a
  8560.                 dec     a
  8561.                 cp      c
  8562.                 jr      z, loc_ACB2
  8563.  
  8564.                 ld      bc, stk_1bvalue
  8565.                 add     a, c
  8566.                 ld      c, a
  8567.                 jr      nc, loc_AC9C
  8568.                 inc     b
  8569. loc_AC9C:                               ; CODE XREF: sub_AC74+25
  8570.                 ld      a, (bc)
  8571.                 and     #7F
  8572.                 ld      c, a
  8573.                 call    sub_AD01
  8574.  
  8575. loc_ACA3:                               ; CODE XREF: sub_AC74+3C
  8576.                 ld      b, a
  8577.                 res     6, a
  8578.                 cp      c
  8579.                 jr      z, loc_AC84
  8580.                 bit     6, b
  8581.                 jr      z, loc_AC6F ;end of opening?
  8582.                 call    sub_ACF6 ;find opening in loop
  8583.                 jr      loc_ACA3
  8584. ; ---------------------------------------------------------------------------
  8585.  
  8586. loc_ACB2:                               ; CODE XREF: sub_AC74+1E
  8587.                 call    GEN_RANDBYTE ;b=rnd
  8588.  
  8589.                 call    sub_AD01
  8590.  
  8591.                 ld      c, a
  8592.                 bit     6, a
  8593.                 jr      z, loc_ACDD
  8594.  
  8595.                 ld      a, 1
  8596.                 rla
  8597.                 and     b
  8598.                 jr      nz, loc_ACDD
  8599.  
  8600.  
  8601. loc_ACC3:                               ; CODE XREF: sub_AC74+60
  8602.                 push    hl
  8603.                 call    GEN_RANDBYTE ;b=rnd
  8604.  
  8605.                 call    sub_ACF6 ;find opening in loop
  8606.  
  8607.                 jr      c, loc_ACD8
  8608.  
  8609.                 pop     de
  8610.                 ld      c, a
  8611.                 bit     6, a
  8612.                 jr      z, loc_ACDD
  8613.  
  8614.                 rr      b
  8615.                 jr      c, loc_ACC3
  8616.  
  8617.                 jr      loc_ACDD
  8618.  
  8619. ; ---------------------------------------------------------------------------
  8620.  
  8621. loc_ACD8:                               ; CODE XREF: sub_AC74+56
  8622.                 pop     hl
  8623.                 call    sub_AD01
  8624.                 ld      c, a
  8625. loc_ACDD:                               ; CODE XREF: sub_AC74+47 sub_AC74+4D ...
  8626.                 ld      a, c
  8627.                 and     #3F
  8628.                 ld      d, a
  8629.                 rla
  8630.                 add     a, d
  8631.                 ld      e, a
  8632.                 ld      d, 0
  8633.                 ld      ix, tbl_D803
  8634.                 add     ix, de
  8635.                 xor     a
  8636.                 bit     7, c
  8637.                 jr      nz, loc_ACF4
  8638.                 ld      (byte_D09E), a
  8639. loc_ACF4:                               ; CODE XREF: sub_AC74+7B
  8640.                 xor     a
  8641.                 ret
  8642.  
  8643. ; End of function sub_AC74
  8644. ; =============== S U B R O U T I N E =======================================
  8645.  
  8646. sub_ACF6:                               ; CODE XREF: sub_AC74+39 sub_AC74+53
  8647. ;hl=opening chunk
  8648.                 ld      de, #FFFF
  8649. loc_ACF9:                               ; CODE XREF: sub_ACF6+9
  8650. ;hl=opening chunk
  8651.                 call    sub_AD01
  8652.                 inc     hl
  8653.                 bit     7, d
  8654.                 jr      z, loc_ACF9
  8655. ; End of function sub_ACF6
  8656. ; =============== S U B R O U T I N E =======================================
  8657.  
  8658. sub_AD01:                               ; CODE XREF: sub_AC74+2C sub_AC74+41 ...
  8659. ;hl=opening chunk
  8660.                 call    OPENING_SEARCH
  8661.                 bit     7, a
  8662.                 jr      z, loc_AD09
  8663.                 dec     de
  8664. loc_AD09:                               ; CODE XREF: sub_AD01+5
  8665.                 bit     6, a
  8666.                 ret     z
  8667.                 inc     de
  8668.                 ret
  8669.  
  8670. ; End of function sub_AD01
  8671. ; =============== S U B R O U T I N E =======================================
  8672.  
  8673. OPENING_SEARCH:
  8674.                 push    bc              ; get any 8 bits from 9-byte chunks? HL=index into them, 0..63 into first chunk, 64..127 into next, etc.
  8675.                 push    hl
  8676.                 ld      a, l
  8677.                 srl     h
  8678.                 rra
  8679.                 srl     h
  8680.                 rra
  8681.                 srl     h
  8682.                 rra
  8683.                 ld      b, h
  8684.                 ld      c, a            ; BC=HL/8
  8685.                 pop     hl
  8686.                 push    hl
  8687.                 ld      a, 7
  8688.                 and     l
  8689.                 add     hl, bc          ; HL=HL*1.125
  8690.                 ld      bc, Openings
  8691.                 add     hl, bc
  8692.                 ld      b, a
  8693.                 inc     b
  8694.                 ld      a, (hl)
  8695.                 inc     hl
  8696.                 ld      c, (hl)
  8697. loc_AD2B:
  8698.                 rl      c
  8699.                 rla
  8700.                 djnz    loc_AD2B
  8701.                 pop     hl
  8702.                 pop     bc              ; output is A (8 bits from a word) + CY (9th bit)
  8703.                 ret
  8704. ; End of function OPENING_SEARCH
  8705. ; =============== S U B R O U T I N E =======================================
  8706.  
  8707. GEN_RANDBYTE:                           ; CODE XREF: sub_AC74+A
  8708.                                         ; sub_AC74:loc_ACB2 ...
  8709.                 ld      a, r
  8710.                 ld      b, a
  8711.                 ld      a, (RAND_SEED)
  8712.                 xor     b
  8713.                 rra
  8714.                 ld      (RAND_SEED), a
  8715.                 ld      b, a
  8716.                 ret ;b=rnd
  8717. ; End of function GEN_RANDBYTE
  8718. ; =============== S U B R O U T I N E =======================================
  8719.  
  8720. sub_AD40:                               ; CODE XREF: sub_A906   sub_AB53+79 ...
  8721.                 pop     hl
  8722.                 exx ;hl'=return addr
  8723.                 ld      hl, (word_D00D)
  8724.                 push    hl
  8725.                 ld      hl, byte_D03B
  8726.                 res     7, (hl)
  8727.                 ld      hl,  word_D240+1
  8728.                 ld      a, (byte_D097)
  8729.                 add     a, a
  8730.                 add     a, l
  8731.                 ld      l, a
  8732.                 ld      c, (ix+1)
  8733.                 res     7, c
  8734.                 ld      (hl), c
  8735.                 ld      (word_D03D), hl
  8736.                 dec     l
  8737.                 ld      b, (ix+0)
  8738.                 res     7, b
  8739.                 ld      (hl), b
  8740.                 dec     l
  8741.                 bit     7, (hl)
  8742.                 jr      nz, loc_ADA9
  8743.  
  8744.                 dec     l
  8745.                 dec     l
  8746.                 ld      a, (hl)
  8747.                 and     #F7
  8748.                 cp      b
  8749.                 jr      nz, loc_ADA9
  8750.  
  8751.                 dec     l
  8752.                 ld      a, (hl)
  8753.                 and     #77
  8754.                 cp      c
  8755.                 jr      nz, loc_ADA9
  8756.  
  8757.                 dec     l
  8758.                 ld      a, (hl)
  8759.                 and     #F7
  8760.                 jp      m, loc_ADA2
  8761.  
  8762.                 push    bc
  8763.                 ld      b, a
  8764.                 dec     l
  8765.                 ld      a, (hl)
  8766.                 and     #77
  8767.                 ld      c, a
  8768.                 inc     l
  8769.                 inc     l
  8770.                 inc     l
  8771.                 inc     l
  8772.                 ld      a, (hl)
  8773.                 and     #77
  8774.                 cp      b
  8775.                 jr      nz, loc_ADA1
  8776.  
  8777.                 inc     l
  8778.                 ld      a, (hl)
  8779.                 and     #77
  8780.                 cp      c
  8781.                 jr      nz, loc_ADA1
  8782.  
  8783.                 ld      hl, byte_D03B
  8784.                 set     7, (hl)
  8785.                 set     6, (hl)
  8786.                 pop     bc
  8787.                 jr      loc_ADA9
  8788.  
  8789. ; ---------------------------------------------------------------------------
  8790.  
  8791. loc_ADA1:                               ; CODE XREF: sub_AD40+4E sub_AD40+55
  8792.                 pop     bc
  8793.  
  8794.  
  8795. loc_ADA2:                               ; CODE XREF: sub_AD40+3C
  8796.                 ld      hl, byte_D03B
  8797.                 set     7, (hl)
  8798.                 res     6, (hl)
  8799.  
  8800.  
  8801. loc_ADA9:                               ; CODE XREF: sub_AD40+27 sub_AD40+2F ...
  8802.                 ld      h, BRD_88_0/256
  8803.                 ld      l, b
  8804.                 ld      e, (hl)
  8805.                 ld      d, l
  8806.                 push    de
  8807.                 ld      (hl), 0 ;затёрли старое положение короля при рокировке?
  8808.                 ld      l, c
  8809.                 ld      c, (hl)
  8810.                 ld      (hl), e ;переместили короля при рокировке?
  8811.                 ld      b, l ;положение короля?
  8812.                 inc     h               ; word_D100
  8813.                 res     2, e ;код короля?
  8814.                 ld      l, e
  8815.                 ld      (hl), b ;положение короля?
  8816.                 inc     l
  8817.                 ld      e, d
  8818.                 ld      d, (hl)
  8819.                 ld      a, #F
  8820.                 and     d
  8821.                 jp      z, loc_AF1F
  8822.  
  8823.                 dec     a
  8824.                 jr      z, loc_ADF5
  8825.  
  8826.                 set     4, (hl)
  8827.                 dec     c
  8828.                 inc     c
  8829.                 jr      nz, loc_ADD1
  8830.  
  8831.  
  8832. loc_ADCC:                               ; CODE XREF: sub_AD40+1E7
  8833. ;hl'=return addr
  8834.                 ld      e, #80
  8835.                 push    de
  8836.                 exx
  8837.                 jp      (hl)
  8838.  
  8839. ; ---------------------------------------------------------------------------
  8840.  
  8841. loc_ADD1:                               ; CODE XREF: sub_AD40+8A
  8842.                                         ; sub_AD40+1BD ...
  8843.                 ld      e, 0
  8844. loc_ADD3:                               ; CODE XREF: sub_AD40+1AE
  8845.                                         ; sub_AD40+1D2
  8846.                 push    bc
  8847.                 res     2, c
  8848.                 ld      l, c
  8849.                 set     7, (hl)
  8850.                 inc     l
  8851.                 ld      a, #F
  8852.                 and     (hl)
  8853.                 bit     7, l
  8854.                 jr      z, loc_ADE3
  8855.                 neg
  8856. loc_ADE3:                               ; CODE XREF: sub_AD40+9F
  8857. ;hl'=return addr
  8858.                 ld      hl, word_D00D
  8859.                 add     a, (hl)
  8860.                 ld      (hl), a
  8861.                 ld      hl, byte_D03B
  8862.                 res     7, (hl)
  8863.                 ld      hl, (word_D03D)
  8864.                 set     7, (hl)
  8865.                 push    de
  8866.                 exx
  8867.                 jp      (hl)
  8868.  
  8869. ; ---------------------------------------------------------------------------
  8870.  
  8871. loc_ADF5:                               ; CODE XREF: sub_AD40+84
  8872.                 ld      a, b
  8873.                 cp      e
  8874.                 jr      c, loc_AE66
  8875.  
  8876.                 rla
  8877.                 rla
  8878.                 jr      nc, loc_AE45
  8879.  
  8880.                 rl      a
  8881.                 jr      c, loc_AE4D
  8882.  
  8883.                 jp      m, loc_AE2D
  8884.  
  8885.                 ld      (hl), #21 ; '!'
  8886.                 ld      e, l
  8887.                 dec     h
  8888.                 ld      a, b
  8889.                 add     a, #10
  8890.                 ld      l, a
  8891.                 ld      a, (hl) ;впереди
  8892.                 cp      #C0
  8893.                 jr      nc, loc_AE59
  8894.  
  8895.                 ld      a, l
  8896.                 add     a, #F
  8897.                 ld      l, a
  8898.                 ld      a, (hl) ;ещё впереди слева
  8899.                 cp      #C0
  8900.                 jr      nc, loc_AE59
  8901.  
  8902.                 inc     l
  8903.                 ld      a, (hl) ;ещё впереди
  8904.                 cp      #C0
  8905.                 jr      nc, loc_AE59
  8906.  
  8907.                 inc     l
  8908.                 ld      a, (hl) ;ещё впереди справа
  8909.                 cp      #C0
  8910.                 jr      nc, loc_AE59
  8911.  
  8912.                 ld      l, e
  8913.                 inc     h
  8914.                 ld      (hl), #51 ; 'Q'
  8915.                 jp      loc_AEF3
  8916.  
  8917. ; ---------------------------------------------------------------------------
  8918.  
  8919. loc_AE2D:                               ; CODE XREF: sub_AD40+C1
  8920.                 ld      (hl), #41 ; 'A'
  8921.                 ld      e, l
  8922.                 dec     h
  8923.                 ld      a, b
  8924.                 add     a, #10
  8925.                 ld      l, a
  8926.                 ld      a, (hl) ;впереди
  8927.                 cp      #C0
  8928.                 jr      nc, loc_AE59
  8929.  
  8930.                 ld      l, e
  8931.                 inc     h
  8932.                 ld      (hl), #71 ; 'q'
  8933.                 set     0, (ix+2)
  8934.                 jp      loc_AEF3
  8935.  
  8936. ; ---------------------------------------------------------------------------
  8937.  
  8938. loc_AE45:                               ; CODE XREF: sub_AD40+BB
  8939.                 cp      #C0
  8940.                 jp      nc, loc_AEF1
  8941.  
  8942.                 jp      loc_AEF3
  8943.  
  8944. ; ---------------------------------------------------------------------------
  8945.  
  8946. loc_AE4D:                               ; CODE XREF: sub_AD40+BF
  8947.                 jp      m, loc_AECF
  8948.  
  8949.                 ld      (hl), #A1
  8950.                 set     0, (ix+2)
  8951.                 jp      loc_AEF3
  8952.  
  8953. ; ---------------------------------------------------------------------------
  8954.  
  8955. loc_AE59:                               ; CODE XREF: sub_AD40+CF sub_AD40+D8 ...
  8956.                 ld      a, (ix+2)
  8957.                 bit     3, a
  8958.                 jp      z, loc_AF15
  8959.  
  8960.                 ld      l, e
  8961.                 inc     h
  8962.                 jp      loc_AEFB
  8963.  
  8964. ; ---------------------------------------------------------------------------
  8965.  
  8966. loc_AE66:                               ; CODE XREF: sub_AD40+B7
  8967.                 rla
  8968.                 rla
  8969.                 jr      c, loc_AEBC
  8970.  
  8971.                 rl      a
  8972.                 jr      nc, loc_AEC3
  8973.  
  8974.                 jp      p, loc_AEA2
  8975.  
  8976.                 ld      (hl), #21 ; '!'
  8977.                 ld      e, l
  8978.                 dec     h
  8979.                 ld      a, b
  8980.                 sub     #10
  8981.                 ld      l, a
  8982.                 ld      a, (hl) ;выше
  8983.                 and     #C0
  8984.                 cp      #40
  8985.                 jr      nc, loc_AE59
  8986.  
  8987.                 ld      a, l
  8988.                 sub     #11
  8989.                 ld      l, a
  8990.                 ld      a, (hl) ;ещё выше левее
  8991.                 and     #C0
  8992.                 cp      #40
  8993.                 jr      z, loc_AE59
  8994.  
  8995.                 inc     l
  8996.                 ld      a, (hl) ;ещё выше
  8997.                 and     #C0
  8998.                 cp      #40
  8999.                 jr      z, loc_AE59
  9000.  
  9001.                 inc     l
  9002.                 ld      a, (hl) ;ещё выше правее
  9003.                 and     #C0
  9004.                 cp      #40
  9005.                 jr      z, loc_AE59
  9006.  
  9007.                 ld      l, e
  9008.                 inc     h
  9009.                 ld      (hl), #51 ; 'Q'
  9010.                 jp      loc_AEF3
  9011.  
  9012. ; ---------------------------------------------------------------------------
  9013.  
  9014. loc_AEA2:                               ; CODE XREF: sub_AD40+12E
  9015.                 ld      (hl), #41 ; 'A'
  9016.                 ld      e, l
  9017.                 dec     h
  9018.                 ld      a, b
  9019.                 sub     #10
  9020.                 ld      l, a
  9021.                 ld      a, (hl) ;выше
  9022.                 and     #C0
  9023.                 cp      #40
  9024.                 jr      z, loc_AE59
  9025.  
  9026.                 ld      l, e
  9027.                 inc     h
  9028.                 ld      (hl), #71 ; 'q'
  9029.                 set     0, (ix+2)
  9030.                 jp      loc_AEF3
  9031.  
  9032. ; ---------------------------------------------------------------------------
  9033.  
  9034. loc_AEBC:                               ; CODE XREF: sub_AD40+128
  9035.                 and     #C0
  9036.                 jr      z, loc_AEF1
  9037.  
  9038.                 jp      loc_AEF3
  9039.  
  9040. ; ---------------------------------------------------------------------------
  9041.  
  9042. loc_AEC3:                               ; CODE XREF: sub_AD40+12C
  9043.                 jp      p, loc_AECF
  9044.  
  9045.                 ld      (hl), #A1
  9046.                 set     0, (ix+2)
  9047.                 jp      loc_AEF3
  9048.  
  9049. ; ---------------------------------------------------------------------------
  9050.  
  9051. loc_AECF:                               ; CODE XREF: sub_AD40:loc_AE4D
  9052.                                         ; sub_AD40:loc_AEC3
  9053.                 set     6, (ix+2)
  9054.                 ld      (hl), #19
  9055.                 ld      a, (word_D00D)
  9056.                 bit     7, l
  9057.                 jr      z, loc_AEDE
  9058.                 add     a, #10
  9059. loc_AEDE:                               ; CODE XREF: sub_AD40+19A
  9060.                 sub     8
  9061.                 ld      (word_D00D), a
  9062.                 ld      e, #84
  9063.                 bit     3, (ix+2)
  9064.                 jp      z, loc_AF17
  9065.  
  9066.                 ld      e, 4
  9067.                 jp      loc_ADD3
  9068.  
  9069. ; ---------------------------------------------------------------------------
  9070.  
  9071. loc_AEF1:                               ; CODE XREF: sub_AD40+107
  9072.                                         ; sub_AD40+17E
  9073.                 ld      (hl), #11
  9074.  
  9075. loc_AEF3:                               ; CODE XREF: sub_AD40+EA
  9076.                                         ; sub_AD40+102 ...
  9077.                 ld      a, (ix+2)
  9078.                 bit     3, a
  9079.                 jp      z, loc_AF15
  9080.  
  9081. loc_AEFB:                               ; CODE XREF: sub_AD40+123
  9082.                 bit     5, a
  9083.                 jp      z, loc_ADD1
  9084.  
  9085.                 ld      a, b
  9086.                 bit     7, l
  9087.                 jr      z, loc_AF07
  9088.                 add     a, #20 ; ' '
  9089. loc_AF07:                               ; CODE XREF: sub_AD40+1C3
  9090.                 sub     #10
  9091.                 dec     h
  9092.                 ld      l, a ;выше?
  9093.                 ld      c, (hl)
  9094.                 ld      (hl), 0
  9095.                 inc     h
  9096.                 ld      b, l
  9097.                 ld      e, 1
  9098.                 jp      loc_ADD3
  9099.  
  9100. ; ---------------------------------------------------------------------------
  9101.  
  9102. loc_AF15:                               ; CODE XREF: sub_AD40+11E
  9103.                                         ; sub_AD40+1B8
  9104.                 ld      e, #80
  9105.  
  9106. loc_AF17:                               ; CODE XREF: sub_AD40+1A9
  9107.                 push    de
  9108.                 ld      hl, (word_D03D)
  9109.                 set     7, (hl)
  9110.                 exx
  9111.                 jp      (hl)
  9112.  
  9113. ; ---------------------------------------------------------------------------
  9114.  
  9115. loc_AF1F:                               ; CODE XREF: sub_AD40+80
  9116.                 call    sub_AF65
  9117.  
  9118.                 ld      a, (ix+2)
  9119.                 and     #18
  9120.                 jp      z, loc_ADCC
  9121.  
  9122.                 and     8
  9123.                 jp      nz, loc_ADD1
  9124.  
  9125.                 set     5, (hl)
  9126.                 dec     h
  9127.                 bit     2, b ;b=позиция короля после рокировки
  9128.                 jr      z, loc_AF40
  9129. ;ладья при рокировке вправо?
  9130.                if FIX ;Chess960 найти позицию ладьи до рокировки (записать при генерации! не обязательно самая правая фигура, не считая короля, король мог её затереть!!!)
  9131.                 ld a,b
  9132.                 and 0xf8
  9133. rightrookinitpos=$+1
  9134.                 or 6 ;0..7
  9135.                 ld l,a
  9136.                 and 0x40
  9137.                 add a,a
  9138.                 or 0x1c ;код правой ладьи
  9139.                 ld c,a
  9140.                 ld a,b ;b=позиция короля после рокировки
  9141.                 ld b,l ;b=старая позиция ладьи
  9142.                 cp l
  9143.                 jr z,$+4 ;король затёр ладью
  9144.                 ld (hl),0 ;снимаем ладью
  9145.                else
  9146.                 inc     b ;старая позиция ладьи (H)
  9147.                 ld      l, b ;b=старая позиция ладьи
  9148.                 ld      c,(hl)
  9149.                 ld      (hl), 0 ;снимаем ладью
  9150.                endif
  9151.                if FIX
  9152.                ld l,a ;позиция короля после рокировки
  9153.                dec l ;b=старая позиция ладьи, l=новая позиция ладьи
  9154.                else
  9155.                 dec     l
  9156.                 dec     l ;b=старая позиция ладьи, l=новая позиция ладьи
  9157.                endif
  9158.                 jp      loc_AF49
  9159.  
  9160. ; ---------------------------------------------------------------------------
  9161.  
  9162. loc_AF40:                               ; CODE XREF: sub_AD40+1F4
  9163. ;ладья при рокировке влево?
  9164.                if FIX ;Chess960 найти позицию ладьи до рокировки (записать при генерации! не обязательно самая левая фигура, не считая короля, король мог её затереть!!!)
  9165.                 ld a,b
  9166.                 and 0xf8
  9167. leftrookinitpos=$+1
  9168.                 or 0 ;0..7
  9169.                 ld l,a
  9170.                 and 0x40
  9171.                 add a,a
  9172.                 or 0x14 ;код левой ладьи
  9173.                 ld c,a
  9174.                 ld a,b ;b=позиция короля после рокировки
  9175.                 ld b,l ;b=старая позиция ладьи
  9176.                 cp l
  9177.                 jr z,$+4 ;король затёр ладью
  9178.                 ld (hl),0 ;снимаем ладью
  9179.                else
  9180.                 dec     b
  9181.                 dec     b
  9182.                 ld      l, b
  9183.                 ld      c, (hl)
  9184.                 ld      (hl), 0 ;снимаем ладью
  9185.                endif
  9186.                if FIX
  9187.                ld l,a ;позиция короля после рокировки
  9188.                inc l ;b=старая позиция ладьи, l=новая позиция ладьи
  9189.                else
  9190.                 inc     l
  9191.                 inc     l
  9192.                 inc     l
  9193.                endif
  9194.  
  9195. loc_AF49:                               ; CODE XREF: sub_AD40+1FD
  9196. ;b=старая позиция ладьи, l=новая позиция ладьи
  9197.                 ld      (hl), c ;ставим ладью на новое место при рокировке (король уже стоит)?
  9198.                 ld      a, (word_D04A+1)
  9199.                 or      a
  9200.                 jr      z, loc_AF54
  9201.  
  9202.                 ld      a, #84
  9203.                 and     c
  9204.                 ld      (hl), a
  9205.  
  9206. loc_AF54:                               ; CODE XREF: sub_AD40+20E
  9207.                 push    bc
  9208.                 res     2, c
  9209.                 ld      b, word_D100/256
  9210.                 ld      a, l
  9211.                 ld      (bc), a
  9212.                 ld      e, #40
  9213.                 ld      hl, (word_D03D)
  9214.                 set     7, (hl)
  9215.                 push    de
  9216.                 exx
  9217.                 jp      (hl)
  9218.  
  9219. ; End of function sub_AD40
  9220.  
  9221.  
  9222. ; =============== S U B R O U T I N E =======================================
  9223.  
  9224.  
  9225. sub_AF65:                               ; CODE XREF: sub_AD40:loc_AF1F
  9226.                 ld      a, d
  9227.                 or      #10
  9228.  
  9229.  
  9230. loc_AF68:                               ; CODE XREF: sub_884D:loc_A912
  9231.                 and     #3F
  9232.                 ld      e, #11
  9233.  
  9234. loc_AF6C:                               ; CODE XREF: sub_AF65+19
  9235.                 ld      (hl), a
  9236.                 ld      a, b
  9237.                 add     a, e
  9238.                 and     #88
  9239.                 ret     nz
  9240.                 ld      a, b
  9241.                 sub     e
  9242.                 and     #88
  9243.                 ret     nz
  9244.                 ld      a, #11
  9245.                 add     a, e
  9246.                 ld      e, a
  9247.                 ld      a, #40
  9248.                 add     a, (hl)
  9249.                 jp      loc_AF6C
  9250.  
  9251. ; End of function sub_AF65
  9252.  
  9253.  
  9254. ; =============== S U B R O U T I N E =======================================
  9255.  
  9256.  
  9257. sub_AF81:                               ; CODE XREF: sub_A909   sub_AB53+7F ...
  9258.                 pop     hl
  9259.                 exx
  9260.                 pop     af
  9261.                 pop     hl ;h=старое положение фигуры??? ;l=код фигуры???
  9262.                 ld      c, a
  9263.                 ld      a, 0
  9264.                 ld      d, BRD_88_0/256
  9265.                 jp      m, loc_AF9A
  9266.  
  9267.                 jr      z, loc_AFB6 ;отмена хода ладьёй при отмене рокировки? выход в loc_AF99
  9268.  
  9269.                 jr      c, loc_AFAF ;отмена хода без съедения? выход в loc_AF92
  9270. ;отмена хода со съедением?
  9271.                 ld      b, l ;код фигуры??? съеденной???
  9272.  
  9273. loc_AF92:                               ; CODE XREF: sub_AF81+32
  9274.                 res     2, l
  9275.                 ld      h, word_D100/256
  9276.                 res     7, (hl)
  9277.                 ld      a, b ;код фигуры??? или 0 (после loc_AFAF)
  9278.  
  9279. loc_AF99:                               ; CODE XREF: sub_AF81+41
  9280.                 pop     hl
  9281.  
  9282. loc_AF9A:                               ; CODE XREF: sub_AF81+9
  9283.                 ld      e, h ;ещё одно старое положение фигуры???
  9284.                 ex      de, hl
  9285.                 ld      (hl), e ;код фигуры на старое место???
  9286.                 ex      de, hl
  9287.                 res     2, l
  9288.                 ld      h, word_D100/256
  9289.                 ld      b, (hl) ;положение фигуры???
  9290.                 ld      (hl), e ;старое положение фигуры???
  9291.                 inc     l
  9292.                 ld      (hl), c ;???
  9293.                 ld      l, b ;положение фигуры???
  9294.                 dec     h               ; BRD_88_0/256
  9295.                if FIX ;затираем, только если фигура сдвинулась!
  9296.                 ld b,a ;код фигуры??? или 0 (после loc_AFAF)
  9297.                 ld a,l
  9298.                 cp e
  9299.                 jr z,$+3 ;фигура не сдвинулась?
  9300.                 ld (hl),b ;вернули ход назад? ;код фигуры??? или 0 (после loc_AFAF)
  9301.                else
  9302.                 ld      (hl), a ;вернули ход назад? ;код фигуры??? или 0 (после loc_AFAF)
  9303.                endif
  9304.                 pop     hl
  9305.                 ld      (word_D00D), hl
  9306.                 exx
  9307.                 jp      (hl)
  9308.  
  9309. ; ---------------------------------------------------------------------------
  9310.  
  9311. loc_AFAF:                               ; CODE XREF: sub_AF81+E
  9312.                 ld      e, h ;старое положение фигуры???
  9313.                 ld      b, a ;0
  9314.                 ld      a, l ;код фигуры???
  9315.                 ld      (de), a ;[BRD_88_0 + h]
  9316.                 jp      loc_AF92
  9317.  
  9318. ; ---------------------------------------------------------------------------
  9319.  
  9320. loc_AFB6:                               ; CODE XREF: sub_AF81+C ;отмена рокировки
  9321.                 ld      e, h ;старое положение ладьи???
  9322.                if FIX ;если ладья обменивалась прямо на месте с королём, то надо вернуть a=l, иначе 0
  9323.                ;чтобы после перемещения короля обратно он оставил ладью где надо
  9324.                ;как определить? достаточно читать клетку изначального (de) (старое положение ладьи) и увидеть там не 0
  9325.                 ld a,(de) ;старое положение ладьи???
  9326.                 and 0x3c
  9327.                 cp (_K|4)&0x3c ;занято королём?
  9328.                 ld      a, l ;код ладьи???
  9329.                 ;ld     (de), a ;[BRD_88_0 + h]
  9330.                push de
  9331.                 res     2, l
  9332.                 ld      h, word_D100/256
  9333.                 ld      b, (hl) ;положение ладьи???
  9334.                 ld      (hl), e ;старое положение ладьи???
  9335.                 ld      e, b ;положение ладьи???              
  9336.                 ex de,hl
  9337.                 ld (hl),0 ;стираем ладью? (TODO только если она сдвинулась!)
  9338.                 ex de,hl
  9339.                pop de
  9340.                ld (de),a ;ставим ладью              
  9341.                 jr z,$+3 ;старое положение ладьи занято королём ;a=код ладьи
  9342.                 xor a ;не было занято, можно затирать нулём после движения короля
  9343.                else
  9344.                 ld      a, l ;код ладьи???
  9345.                 ld      (de), a ;[BRD_88_0 + h]
  9346.                 res     2, l
  9347.                 ld      h, word_D100/256
  9348.                 ld      b, (hl) ;положение ладьи???
  9349.                 ld      (hl), e ;старое положение ладьи???
  9350.                 xor     a
  9351.                 ld      e, b ;положение ладьи???
  9352.                 ld      (de), a ;стираем ладью?
  9353.                endif
  9354.                 jp      loc_AF99 ;продолжаем отмену хода???
  9355.  
  9356. ; End of function sub_AF81
  9357.  
  9358.  
  9359. ; =============== S U B R O U T I N E =======================================
  9360.  
  9361.  
  9362. sub_AFC5:                               ; CODE XREF: sub_A900
  9363.                 ld      ix, word_D059
  9364.                 call    sub_A94F
  9365.  
  9366.                 dec     hl
  9367.                 dec     hl
  9368.                 ld      (hl), #FF
  9369.                 call    sub_AC74
  9370.  
  9371.                 jp      z, loc_B0B7
  9372.  
  9373.                 ld      a, (byte_D0B4)
  9374.                 bit     5, a
  9375.                 jr      z, loc_AFE0 ;visible board?
  9376.  
  9377.                 call    nz, sub_B2E2
  9378.  
  9379.  
  9380. loc_AFE0:                               ; CODE XREF: sub_AFC5+16
  9381.                 call    sub_B2D1 ;копирует 14 координат полей с маской 0yyy0xxx из byte_D258 в byte_D20D
  9382.  
  9383.                 call    sub_B2F1
  9384.  
  9385.                 call    sub_B1EB
  9386.  
  9387.                 ld      hl, byte_D0B3 ;d3=swap board
  9388.                 res     5, (hl)
  9389.                 ld      hl, byte_D108
  9390.                 xor     a
  9391.                 ld      (byte_D04C), a
  9392.                 call    sub_A932
  9393.  
  9394.                 ld      e, c
  9395.                 ld      l, #88
  9396.                 call    sub_A932
  9397.  
  9398.                 ld      a, c
  9399.                 sub     e
  9400.                 ld      (byte_D02E), a
  9401.                 ld      a, (byte_D049) ;move #
  9402.                 cp      8
  9403.                 cpl
  9404.                 jr      c, loc_B00D
  9405.                 ld      a, c
  9406.                 add     a, e
  9407. loc_B00D:                               ; CODE XREF: sub_AFC5+44
  9408.                 ld      hl, byte_A928-1
  9409.  
  9410. loc_B010:                               ; CODE XREF: sub_AFC5+4E
  9411.                 inc     hl
  9412.                 cp      (hl)
  9413.                 inc     hl
  9414.                 jr      c, loc_B010
  9415.  
  9416.                 ld      b, (hl)
  9417.                 ld      hl, byte_D02D
  9418.                 ld      a, (hl)
  9419.                 and     1
  9420.                 or      b
  9421.                 ld      (hl), a
  9422.                 xor     a
  9423.                 ld      (word_D00D), a
  9424.                 ld      a, #FE
  9425.                 ld      (byte_D098), a
  9426.                 call    sub_B2B9
  9427.  
  9428.                 push    hl
  9429.                 call    sub_AB4C
  9430.  
  9431.                 pop     ix
  9432.                 scf
  9433.                 ret     z
  9434.                 ld      a, (byte_D0EF)
  9435.                 ld      (byte_D08B), a
  9436.                 inc     ix
  9437.                 xor     a
  9438.                 ld      (word_D00D+1), a
  9439.                 inc     a
  9440.                 ld      (byte_D03B), a
  9441.                 ld      a, (curlevel)
  9442.                 cp      #B
  9443.                 call    nc, sub_B8B2
  9444.  
  9445.                 ld      a, (timenorm)
  9446.                 ld      (byte_D0F2), a
  9447.  
  9448.  
  9449. loc_B050:                               ; CODE XREF: sub_AFC5+EF
  9450.                 call    sub_8F4D
  9451.  
  9452.                 call    loc_B819
  9453.  
  9454.                 jr      c, loc_B0B7
  9455.  
  9456.                 push    ix
  9457.                 call    sub_B19C
  9458.  
  9459. loc_B05D:                               ; CODE XREF: sub_AFC5:loc_B182
  9460.                 ld      a, (curlevel)
  9461.                 cp      #C
  9462.                 jr      nz, loc_B07A
  9463.  
  9464.                 xor     a
  9465.                 ld      (byte_D08A), a
  9466.                 ld      (byte_D08C), a
  9467.                 ld      (byte_D00B), a
  9468.                 ld      (byte_D01C), a
  9469.                 inc     a
  9470.                 ld      (byte_D08B), a
  9471.                 ld      a, #80
  9472.                 ld      (byte_D019), a
  9473.  
  9474. loc_B07A:                               ; CODE XREF: sub_AFC5+9D
  9475.                 call    sub_B47F
  9476.  
  9477.                 call    sub_B2D1 ;копирует 14 координат полей с маской 0yyy0xxx из byte_D258 в byte_D20D
  9478.  
  9479.                 ld      hl, byte_D08B
  9480.                 pop     ix
  9481.                 ld      a, (curlevel)
  9482.                 cp      #C
  9483.                 jr      nz, loc_B091
  9484.  
  9485.                 call    sub_A6F7
  9486.  
  9487.                 jr      loc_B097
  9488.  
  9489. ; ---------------------------------------------------------------------------
  9490.  
  9491. loc_B091:                               ; CODE XREF: sub_AFC5+C5
  9492.                 ld      a, (ix+3)
  9493.                 inc     a
  9494.                 jr      z, loc_B09C
  9495.  
  9496. loc_B097:                               ; CODE XREF: sub_AFC5+CA
  9497.                 ld      a, (hl)
  9498.                 cp      #FE
  9499.                 jr      c, loc_B0A3
  9500.  
  9501. loc_B09C:                               ; CODE XREF: sub_AFC5+D0
  9502.                 ld      a, (byte_D0B4)
  9503.                 bit     5, a
  9504.                 jr      z, loc_B0B7 ;visible board?
  9505.  
  9506. loc_B0A3:                               ; CODE XREF: sub_AFC5+D5
  9507.                 ld      a, (byte_D0B4)
  9508.                 rla
  9509.                 jr      c, loc_B0B7
  9510.  
  9511.                 push    ix
  9512.                 ld      a, (byte_D00B)
  9513.                 cp      (hl)
  9514.                 jp      z, loc_B175
  9515.  
  9516.                 pop     ix
  9517.                 jp      loc_B050
  9518.  
  9519. ; ---------------------------------------------------------------------------
  9520.  
  9521. loc_B0B7:                               ; CODE XREF: sub_AFC5+E sub_AFC5+91     ...
  9522.                 ld      a, (byte_D0B4)
  9523.                 bit     5, a
  9524.                 jp      nz, loc_B164 ;invisible board?
  9525.  
  9526.                 ld      bc, (INC_SECONDS)
  9527.                 ld      hl, (word_D088)
  9528.                 add     hl, bc
  9529.                 ld      (word_D088), hl
  9530.                 ld      a, (byte_D049) ;move #
  9531.                 cp      9
  9532.                 jp      c, loc_B164
  9533.  
  9534.                 ld      h, b
  9535.                 ld      l, c
  9536.                 ld      a, (byte_D03C)
  9537.                 cp      4
  9538.                 jr      nc, loc_B0E9
  9539.  
  9540.                 push    af
  9541.                 ld      a, (byte_D0B3) ;d3=swap board
  9542.                 bit     5, a
  9543.                 jr      nz, loc_B0E8
  9544.  
  9545.                 ld      bc, (word_D02B)
  9546.                 add     hl, bc
  9547.  
  9548. loc_B0E8:                               ; CODE XREF: sub_AFC5+11C
  9549.                 pop     af
  9550.  
  9551. loc_B0E9:                               ; CODE XREF: sub_AFC5+114
  9552.                 cp      6
  9553.                 ld      a, (byte_D02A)
  9554.                 ld      c, a
  9555.                 ld      b, 0
  9556.                 jr      c, loc_B0FE
  9557.  
  9558.                 ld      a, c
  9559.                 rra
  9560.                 rra
  9561.                 and     #3F
  9562.                 add     a, c
  9563.                 ld      c, a
  9564.                 ld      a, 0
  9565.                 adc     a, b
  9566.                 ld      b, a
  9567.  
  9568. loc_B0FE:                               ; CODE XREF: sub_AFC5+12C
  9569.                 ld      a, 4
  9570.  
  9571. loc_B100:                               ; CODE XREF: sub_AFC5+140
  9572.                 dec     a
  9573.                 jr      z, loc_B107
  9574.  
  9575.                 sbc     hl, bc
  9576.                 jr      nc, loc_B100
  9577.  
  9578. loc_B107:                               ; CODE XREF: sub_AFC5+13C
  9579.                 sub     2
  9580.                 jr      z, loc_B120
  9581.  
  9582.                 jr      c, loc_B11D
  9583.  
  9584.                 ld      a, (byte_D03C)
  9585.                 cp      3
  9586.                 jr      nc, loc_B11B
  9587.  
  9588.                 ld      a, (byte_D0B3) ;d3=swap board
  9589.                 bit     5, a
  9590.                 jr      nz, loc_B120
  9591.  
  9592. loc_B11B:                               ; CODE XREF: sub_AFC5+14D
  9593.                 ld      a, 1
  9594.  
  9595. loc_B11D:                               ; CODE XREF: sub_AFC5+146
  9596.                 call    IncreaseTimeNorm_A
  9597.  
  9598. loc_B120:                               ; CODE XREF: sub_AFC5+144
  9599.                                         ; sub_AFC5+154
  9600.                 ld      a, (curlevel)
  9601.                 cp      #A
  9602.                 jr      z, loc_B14F
  9603.  
  9604.                 ld      a, (byte_D02D)
  9605.                 bit     2, a
  9606.                 jr      nz, loc_B14F
  9607.  
  9608.                 ld      a, (timeformove)
  9609.                 cp      #9B
  9610.                 jr      c, loc_B164
  9611.  
  9612.                 ld      a, (curlevel)
  9613.                 add     a, a
  9614.                 ld      hl, tbl_B8DD-2
  9615.                 add     a, l
  9616.                 ld      l, a
  9617.                 ld      a, 0
  9618.                 adc     a, h
  9619.                 ld      h, a
  9620.                 ld      a, (timenorm)
  9621.                 sub     3
  9622.                 sub     (hl)
  9623.                 neg
  9624.                 call    m, IncreaseTimeNorm_A
  9625.  
  9626.                 jr      loc_B164
  9627.  
  9628. ; ---------------------------------------------------------------------------
  9629.  
  9630. loc_B14F:                               ; CODE XREF: sub_AFC5+160
  9631.                                         ; sub_AFC5+167
  9632.                 ld      a, (timenorm)
  9633.                 add     a, 4
  9634.                 ld      hl, byte_D0F2
  9635.                 cp      (hl)
  9636.                 ld      a, 2
  9637.                 jr      nc, loc_B164
  9638.  
  9639.                 ld      hl, byte_D0B3 ;d3=swap board
  9640.                 bit     5, (hl)
  9641.                 call    z, IncreaseTimeNorm_A
  9642.  
  9643.  
  9644. loc_B164:                               ; CODE XREF: sub_AFC5+F7
  9645.                                         ; sub_AFC5+10A ...
  9646.                 xor     a
  9647.                 ret
  9648.  
  9649. ; ---------------------------------------------------------------------------
  9650.  
  9651. loc_B166:                               ; CODE XREF: sub_B47F+CA
  9652.                 xor     a
  9653.                 ld      (byte_D08A), a
  9654.                 ld      (byte_D08C), a
  9655.                 ld      a, (byte_D00B)
  9656.                 ld      (byte_D08B), a
  9657.                 jr      loc_B182
  9658.  
  9659. ; ---------------------------------------------------------------------------
  9660.  
  9661. loc_B175:                               ; CODE XREF: sub_AFC5+EA
  9662.                 ld      a, (byte_D08A)
  9663.                 ld      (byte_D08C), a
  9664.                 xor     a
  9665.                 ld      (byte_D00B), a
  9666.                 ld      (byte_D08B), a
  9667.  
  9668.  
  9669. loc_B182:                               ; CODE XREF: sub_AFC5+1AE
  9670.                 jp      loc_B05D
  9671.  
  9672. ; End of function sub_AFC5
  9673.  
  9674.  
  9675. ; =============== S U B R O U T I N E =======================================
  9676.  
  9677.  
  9678. IncreaseTimeNorm_A:                             ; CODE XREF: sub_AFC5:loc_B11D
  9679.                                         ; sub_AFC5+185 ...
  9680.                 ld      d, a
  9681.                 ld      a, (timenorm) ;в начале партии #0C, после 1 хода за белых #10, потом с 9 хода за белых увеличивается на 1 с каждым ходом. Take Back не влияет, даже если уйти с линии
  9682.                 add     a, d
  9683.                 ld      d, a
  9684.                 and     #F0
  9685.                 jr      nz, loc_B191 ;>=#10
  9686.                 ld      d, #10 ;=#10
  9687. loc_B191:                               ; CODE XREF: IncreaseTimeNorm_A+8
  9688.                 cp      #50
  9689.                 jr      c, loc_B197 ;<#50
  9690.                 ld      d, #4F ;=#4F
  9691. loc_B197:                               ; CODE XREF: IncreaseTimeNorm_A+E
  9692.                 ld      a, d
  9693.                 ld      (timenorm), a
  9694.                 ret
  9695.  
  9696. ; End of function IncreaseTimeNorm_A
  9697.  
  9698.  
  9699. ; =============== S U B R O U T I N E =======================================
  9700.  
  9701.  
  9702. sub_B19C:                               ; CODE XREF: sub_AFC5+95
  9703.                 ld      a, (byte_D08B)
  9704.                 ld      c, a
  9705.                 add     a, #84
  9706.                 sra     a
  9707.                 sra     a
  9708.                 sra     a
  9709.                 ld      b, a
  9710.                 ld      a, (byte_D0B2)
  9711.                 or      a
  9712.                 ld      a, b
  9713.                 jr      nz, loc_B1B2
  9714.                 neg
  9715. loc_B1B2:                               ; CODE XREF: sub_B19C+12
  9716.                 ld      hl, word_D00D
  9717.                 add     a, (hl)
  9718.                 ld      (hl), a
  9719.                 neg
  9720.                 ld      hl, byte_D02E
  9721.                 add     a, (hl)
  9722.                 cp      #F
  9723.                 jr      c, loc_B1CC
  9724.  
  9725.                 cp      #F2
  9726.                 jr      nc, loc_B1CC
  9727.  
  9728.                 rla
  9729.                 ld      a, #E
  9730.                 jr      nc, loc_B1CC
  9731.                 ld      a, #F2
  9732. loc_B1CC:                               ; CODE XREF: sub_B19C+23 sub_B19C+27 ...
  9733.                 add     a, a
  9734.                 add     a, a
  9735.                 add     a, a
  9736.                 ld      (byte_D01E), a
  9737.                 ld      a, b
  9738.                 add     a, a
  9739.                 add     a, a
  9740.                 add     a, a
  9741.                 neg
  9742.                 add     a, c
  9743.                 sub     8
  9744.                 ld      (byte_D00B), a
  9745.                 ld      (byte_D08B), a
  9746.                 ld      (byte_D08A), a
  9747.                 ld      (byte_D08C), a
  9748.                 ret
  9749.  
  9750. ; End of function sub_B19C
  9751.  
  9752. ; ---------------------------------------------------------------------------
  9753. ; START OF FUNCTION CHUNK FOR sub_B1EB
  9754.  
  9755. loc_B1E8:                               ; CODE XREF: sub_B1EB+46
  9756.                 call    sub_B8B2
  9757.  
  9758. ; END OF FUNCTION CHUNK FOR sub_B1EB
  9759.  
  9760. ; =============== S U B R O U T I N E =======================================
  9761.  
  9762.  
  9763. sub_B1EB:                               ; CODE XREF: sub_AFC5+21
  9764.  
  9765. ; FUNCTION CHUNK AT B1E8 SIZE 00000003 BYTES
  9766.  
  9767.                 ld      a, (curlevel)
  9768.                 cp      #A
  9769.                 ld      a, (timeformove)
  9770.                 jr      nz, loc_B205
  9771.  
  9772.                 or      a
  9773.                 ld      (byte_D0F3), a
  9774.                 rr      a
  9775.                 inc     a
  9776.                 ld      (byte_D02A), a
  9777.                 ld      a, #A
  9778.                 ld      (byte_D03C), a
  9779.                 ret
  9780. ; ---------------------------------------------------------------------------
  9781. loc_B205:                               ; CODE XREF: sub_B1EB+8
  9782.                 ld      e, a
  9783.                 xor     a
  9784.                 ld      d, a
  9785.                 ld      b, #A
  9786.                 ld      hl, 0
  9787. loc_B20D:                               ; CODE XREF: sub_B1EB+24
  9788.                 adc     hl, de          ; mul E by 10, why ADC???
  9789.                 djnz    loc_B20D
  9790.  
  9791.                 ld      a, (byte_D049) ;move #
  9792.                 dec     a
  9793.                 ld      b, 0
  9794.                 ld      c, #A
  9795. loc_B219:                               ; CODE XREF: sub_B1EB+30
  9796.                 inc     b
  9797.                 sub     c
  9798.                 jr      nc, loc_B219
  9799.  
  9800.                 neg
  9801.                 ld      d, h
  9802.                 ld      e, l
  9803.                 or      a
  9804.                 jr      loc_B226
  9805. ; ---------------------------------------------------------------------------
  9806. loc_B224:                               ; CODE XREF: sub_B1EB:loc_B226
  9807.                 adc     hl, de          ; E*10*floor(byte_D049/10)
  9808. loc_B226:                               ; CODE XREF: sub_B1EB+37
  9809.                 djnz    loc_B224
  9810.  
  9811.                 ld      de, (word_D088)
  9812.                 or      a
  9813.                 sbc     hl, de
  9814.                 bit     7, h
  9815.                 jr      nz, loc_B1E8
  9816.  
  9817.                 ld      c, a
  9818.                 push    hl
  9819.                 ld      a, (timeformove)
  9820.                 ld      d, 0
  9821.                 ld      e, a
  9822.                 xor     a
  9823.                 ld      (byte_D03C), a
  9824.                 dec     a
  9825. loc_B240:                               ; CODE XREF: sub_B1EB+58
  9826.                 inc     a
  9827.                 sbc     hl, de
  9828.                 jr      nc, loc_B240
  9829.  
  9830.                 sub     c
  9831.                 jr      c, loc_B24B
  9832.                 ld      (byte_D03C), a
  9833. loc_B24B:                               ; CODE XREF: sub_B1EB+5B
  9834.                 pop     hl
  9835.                 ld      a, #FE
  9836.                 ld      (byte_D0F3), a
  9837.                 ld      (byte_D02A), a
  9838.                 ld      a, h
  9839.                 srl     a
  9840.                 jr      nz, loc_B26A
  9841.  
  9842.                 ld      a, l
  9843.                 rra
  9844.                 dec     c
  9845.                 jr      z, loc_B260
  9846.                 srl     a
  9847. loc_B260:                               ; CODE XREF: sub_B1EB+71
  9848.                 inc     c
  9849.                 sub     2
  9850.                 jr      nc, loc_B266
  9851.                 xor     a
  9852. loc_B266:                               ; CODE XREF: sub_B1EB+78
  9853.                 inc     a
  9854.                 ld      (byte_D0F3), a
  9855. loc_B26A:                               ; CODE XREF: sub_B1EB+6C
  9856.                 xor     a               ; HL=HL/C ?
  9857.                 ld      b, #11
  9858. loc_B26D:                               ; CODE XREF: sub_B1EB+8C
  9859.                 rl      l               ; ADC HL,HL?
  9860.                 rl      h
  9861.                 rla
  9862.                 cp      c
  9863.                 jr      c, loc_B276
  9864.                 sub     c
  9865. loc_B276:                               ; CODE XREF: sub_B1EB+88
  9866.                 ccf
  9867.                 djnz    loc_B26D
  9868.  
  9869.                 ld      a, h
  9870.                 srl     a
  9871.                 jr      nz, loc_B29C
  9872.  
  9873.                 ld      a, l
  9874.                 rra
  9875.                 or      a
  9876.                 jr      nz, loc_B284
  9877.                 inc     a
  9878. loc_B284:                               ; CODE XREF: sub_B1EB+96
  9879.                 ld      (byte_D02A), a
  9880.                 rla
  9881.                 jr      c, loc_B29C
  9882.  
  9883.                 ld      a, (timeformove)
  9884.                 cp      l
  9885.                 jr      c, loc_B29F
  9886.  
  9887.                 ld      a, (byte_D0B4)
  9888.                 bit     5, a
  9889.                 jr      nz, loc_B29C ;invisible board?
  9890.  
  9891.                 ld      a, #FF
  9892.                 call    IncreaseTimeNorm_A
  9893.  
  9894. loc_B29C:                               ; CODE XREF: sub_B1EB+91 sub_B1EB+9D ...
  9895.                 ld      a, (timeformove)
  9896. loc_B29F:                               ; CODE XREF: sub_B1EB+A3
  9897.                 ld      hl, byte_D02A
  9898.                 cp      (hl)
  9899.                 jr      nc, loc_B2A6
  9900.                 ld      (hl), a
  9901. loc_B2A6:                               ; CODE XREF: sub_B1EB+B8
  9902.                 ld      a, (byte_D02A)
  9903.                 ld      b, a
  9904.                 add     a, a
  9905.                 ret     c
  9906.                 add     a, b
  9907.                 ret     c
  9908.                 ld      b, a
  9909.                 ld      a, (byte_D0F3)
  9910.                 cp      b
  9911.                 ret     c
  9912.                 ld      a, b
  9913.                 ld      (byte_D0F3), a
  9914.                 ret
  9915.  
  9916. ; End of function sub_B1EB
  9917.  
  9918.  
  9919. ; =============== S U B R O U T I N E =======================================
  9920.  
  9921.  
  9922. sub_B2B9:                               ; CODE XREF: sub_AFC5+62 sub_B47F-50 ...
  9923.                 ld      hl, byte_D097
  9924.                 ld      a, (hl)
  9925.                 add     a, a
  9926.                 add     a, l
  9927.                 ld      l, a
  9928.                 ld      e, (hl)
  9929.                 inc     l
  9930.                 ld      d, (hl)
  9931.                 ex      de, hl
  9932.                 inc     hl
  9933.                 inc     hl
  9934.                 ret
  9935.  
  9936. ; End of function sub_B2B9
  9937.  
  9938. ; ---------------------------------------------------------------------------
  9939.  
  9940.                 ; no alignment
  9941.  
  9942.                 ; low parts of addresses in D2xx region
  9943. tbl_B2C7:       db #58
  9944.                 db #66
  9945.                 db #72
  9946.                 db #7C
  9947.                 db #84
  9948.                 db #8A
  9949.                 db #8E
  9950.                 db #90
  9951.                 db #90
  9952.                 db #8E
  9953.  
  9954. ; =============== S U B R O U T I N E =======================================
  9955.  
  9956.  
  9957. sub_B2D1:                               ; CODE XREF: sub_AFC5:loc_AFE0
  9958.                                         ; sub_AFC5+B8
  9959.                 ld      hl, byte_D258
  9960.                 ld      de, byte_D20D
  9961.                 ld      b, #E
  9962. loc_B2D9:                               ; CODE XREF: sub_B2D1+E
  9963.                 ld      a, (hl)
  9964.                 and     #77 ;маска поля 0yyy0xxx
  9965.                 ld      (de), a
  9966.                 inc     e
  9967.                 inc     l
  9968.                 djnz    loc_B2D9
  9969.                 ret
  9970.  
  9971. ; End of function sub_B2D1
  9972.  
  9973.  
  9974. ; =============== S U B R O U T I N E =======================================
  9975.  
  9976.  
  9977. sub_B2E2:                               ; CODE XREF: sub_AFC5+18
  9978.                 ld      hl, byte_D25C
  9979.                 ld      de, byte_D258
  9980.                 ld      b, #A
  9981.  
  9982.  
  9983. loc_B2EA:                               ; CODE XREF: sub_B2E2+C
  9984.                 ld      a, (hl)
  9985.                 ld      (de), a
  9986.                 inc     e
  9987.                 inc     l
  9988.                 djnz    loc_B2EA
  9989.  
  9990.                 ret
  9991.  
  9992. ; End of function sub_B2E2
  9993.  
  9994.  
  9995. ; =============== S U B R O U T I N E =======================================
  9996.  
  9997.  
  9998. sub_B2F1:                               ; CODE XREF: sub_AFC5+1E
  9999.                                         ; sub_B47F:loc_B405 ...
  10000.                 ld      a, (byte_D097)
  10001.                 cp      7
  10002.                 ret     nc              ; only 0..6
  10003.                 ld      e, a
  10004.                 ld      hl, tbl_B2C7
  10005.                 ld      d, 0
  10006.                 add     hl, de
  10007.                 ld      e, (hl)
  10008.                 inc     hl
  10009.                 ld      l, (hl)
  10010.                 ld      h, array_D200/256
  10011.                 ld      d, h
  10012.                 ld      a, #FF
  10013.                 ld      (hl), a
  10014.                 ld      (de), a
  10015.                 ret
  10016.  
  10017. ; End of function sub_B2F1
  10018.  
  10019.  
  10020. ; =============== S U B R O U T I N E =======================================
  10021.  
  10022.  
  10023. sub_B309:                               ; CODE XREF: sub_B47F+9D
  10024.                                         ; sub_B47F+228 ...
  10025.                 ld      a, (byte_D097)
  10026.                 ld      e, a
  10027.                 sub     8
  10028.                 jr      nc, sub_B34B
  10029.  
  10030.                 cpl
  10031.                 ld      b, a
  10032.                 ld      hl, tbl_B2C7-1
  10033.                 ld      d, 0
  10034.                 add     hl, de
  10035.                 ld      e, (hl)
  10036.                 inc     hl
  10037.                 ld      l, (hl)
  10038.                 ld      h, array_D200/256
  10039.                 ld      d, h
  10040.                 ld      a, (ix+0)
  10041.                 ld      (de), a
  10042.                 inc     e
  10043.                 ld      a, (ix+1)
  10044.                 ld      (de), a
  10045.                 dec     b
  10046.                 jp      m, loc_B337
  10047.  
  10048.                 inc     b
  10049.  
  10050.  
  10051. loc_B32D:                               ; CODE XREF: sub_B309+2C
  10052.                 inc     e
  10053.                 ld      a, (hl)
  10054.                 ld      (de), a
  10055.                 inc     l
  10056.                 inc     e
  10057.                 ld      a, (hl)
  10058.                 ld      (de), a
  10059.                 inc     l
  10060.                 djnz    loc_B32D
  10061.  
  10062.  
  10063. loc_B337:                               ; CODE XREF: sub_B309+20
  10064.                 ld      hl, byte_D0B6
  10065.                 bit     0, (hl)
  10066.                 jr      z, sub_B34B
  10067.  
  10068.                 ld      a, (byte_D097)
  10069.                 dec     a
  10070.                 jr      nz, loc_B346
  10071.  
  10072.                 set     2, (hl)
  10073.  
  10074.  
  10075. loc_B346:                               ; CODE XREF: sub_B309+39
  10076.                 bit     2, (hl)
  10077.                 call    nz, sub_A684
  10078.  
  10079. ; End of function sub_B309
  10080.  
  10081.  
  10082. ; =============== S U B R O U T I N E =======================================
  10083.  
  10084.  
  10085. sub_B34B:                               ; CODE XREF: sub_B309+6 sub_B309+33     ...
  10086.                 ld      c, (ix+1)
  10087.                 bit     7, c
  10088.                 ret     nz
  10089.                 ld      hl, unk_D20B    ; D20D-2 ?
  10090.                 ld      a, (byte_D097)
  10091.                 add     a, a
  10092.                 add     a, l
  10093.                 ld      l, a
  10094.                 ld      a, (ix+0)
  10095.                 and     #77 ; 'w'
  10096.                 ld      (hl), a
  10097.                 inc     l
  10098.                 ld      (hl), c
  10099.                 bit     3, (ix+2)
  10100.                 ret     z
  10101.                 dec     l
  10102.                 set     7, (hl)
  10103.                 ret
  10104.  
  10105. ; End of function sub_B34B
  10106.  
  10107.  
  10108. ; =============== S U B R O U T I N E =======================================
  10109.  
  10110.  
  10111. FindMoveAndSwap:                                ; CODE XREF: sub_B47F-71
  10112.                 inc     hl
  10113.                 inc     hl
  10114.                 inc     hl
  10115.                 push    hl
  10116.                 ld      a, (ix+2)
  10117.                 and     6
  10118.                 jp      z, loc_B39E
  10119.                 ld      b, (ix+1)
  10120.                 and     4
  10121.                 jr      nz, loc_B385
  10122.  
  10123.                 ld      a, (byte_D07A)
  10124.                 ld      b, a
  10125.                 rla
  10126.                 jr      c, loc_B39E
  10127. loc_B385:                               ; CODE XREF: FindMoveAndSwap+11
  10128.                 ex      de, hl
  10129.                 inc     hl
  10130.                 ld      de, #FFFD       ; -3
  10131.                 res     7, b
  10132. loc_B38C:                               ; CODE XREF: FindMoveAndSwap+27
  10133.                 add     hl, de
  10134.                 ld      a, (hl)
  10135.                 cp      b
  10136.                 jr      z, loc_B397
  10137.                 inc     a
  10138.                 jp      nz, loc_B38C
  10139.                 jr      loc_B39E
  10140. ; ---------------------------------------------------------------------------
  10141. loc_B397:                               ; CODE XREF: FindMoveAndSwap+24
  10142.                 pop     de
  10143.                 dec     hl
  10144.                 call    SwapMove_HL_DE
  10145.                 inc     de
  10146.                 push    de
  10147. loc_B39E:                               ; CODE XREF: FindMoveAndSwap+9 FindMoveAndSwap+18       ...
  10148.                 ld      hl, unk_D20B    ; D20D-2 ?
  10149.                 ld      a, (byte_D097)
  10150.                 add     a, a
  10151.                 add     a, l
  10152.                 ld      l, a
  10153.                 ld      d, (hl)
  10154.                 inc     l
  10155.                 ld      e, (hl)
  10156.                 ld      bc, 3
  10157.                 pop     hl
  10158.                 push    hl
  10159.                 bit     7, d
  10160.                 jr      nz, loc_B3BB
  10161.                 call    FindMove_D_E_continue
  10162. loc_B3B6:                               ; CODE XREF: FindMoveAndSwap+5B
  10163.                 pop     de
  10164.                 call    nc, SwapMove_HL_DE
  10165.                 ret
  10166. ; ---------------------------------------------------------------------------
  10167. loc_B3BB:                               ; CODE XREF: FindMoveAndSwap+46
  10168.                 res     7, d
  10169.                 call    FindMove_D_E_continue
  10170.                 inc     hl
  10171.                 inc     hl
  10172.                 bit     3, (hl)
  10173.                 dec     hl
  10174.                 dec     hl
  10175.                 jr      nz, loc_B3B6
  10176.                 pop     de
  10177.                 ret
  10178. ; End of function FindMoveAndSwap
  10179. ; =============== S U B R O U T I N E =======================================
  10180. SwapMove_HL_DE:                         ; CODE XREF: FindMoveAndSwap+2E FindMoveAndSwap+4C
  10181.                 ld      c, (hl)
  10182.                 ld      a, (de)
  10183.                 ld      (hl), a
  10184.                 ld      a, c
  10185.                 or      #80 ;???
  10186.                 ld      (de), a
  10187.                 inc     de
  10188.                 inc     hl
  10189.                 ld      c, (hl)
  10190.                 ld      a, (de)
  10191.                 ld      (hl), a
  10192.                 ld      a, c
  10193.                 or      #80 ;???
  10194.                 ld      (de), a
  10195.                 inc     de
  10196.                 inc     hl
  10197.                 ld      c, (hl)
  10198.                 ld      a, (de)
  10199.                 ld      (hl), a
  10200.                 ld      a, c
  10201.                 ld      (de), a
  10202.                 ret
  10203. ; End of function SwapMove_HL_DE
  10204. ; =============== S U B R O U T I N E =======================================
  10205.  
  10206. InsertMove_EndIX_NMovesAX:                              ; CODE XREF: sub_B47F+A7 sub_B47F+C2
  10207.                 push    ix
  10208.                 pop     hl
  10209.                 ld      a, (hl)
  10210.                 ld      d, h
  10211.                 ld      e, l
  10212.                 inc     hl
  10213.                 ld      b, (hl)
  10214.                 inc     hl
  10215.                 ld      c, (hl)
  10216.                 ex      af, af' ;'
  10217. loc_B3ED:                               ; CODE XREF: InsertMove_EndIX_NMovesAX+18
  10218.                 dec     de
  10219.                 ld      a, (de)
  10220.                 ld      (hl), a
  10221.                 dec     de
  10222.                 dec     hl
  10223.                 ld      a, (de)
  10224.                 ld      (hl), a
  10225.                 dec     de
  10226.                 dec     hl
  10227.                 ld      a, (de)
  10228.                 ld      (hl), a
  10229.                 dec     hl
  10230.                 inc     a
  10231.                 jp      nz, loc_B3ED
  10232.                 inc     hl
  10233.                 ex      af, af' ;'
  10234.                 ld      (hl), a
  10235.                 inc     hl
  10236.                 ld      (hl), b
  10237.                 inc     hl
  10238.                 ld      (hl), c
  10239.                 ret
  10240.  
  10241. ; End of function InsertMove_EndIX_NMovesAX
  10242.  
  10243. ; ---------------------------------------------------------------------------
  10244. ; START OF FUNCTION CHUNK FOR sub_B47F
  10245.  
  10246. loc_B405:                               ; CODE XREF: sub_B47F+3D
  10247.                 call    sub_B2F1
  10248.  
  10249.                 call    sub_A94F
  10250.  
  10251.                 dec     hl
  10252.                 dec     hl
  10253.                 push    hl
  10254.                 call    FindMoveAndSwap
  10255.  
  10256.                 pop     ix
  10257.  
  10258.  
  10259. loc_B413:                               ; CODE XREF: sub_B47F+96 sub_B47F+99 ...
  10260.                 ld      a, (byte_D098)
  10261.                 inc     a
  10262.                 ld      d, a
  10263.                 ld      a, (byte_D097)
  10264.                 cp      d
  10265.                 jp      nc, loc_B5A3
  10266.  
  10267.                 bit     7, (ix+0)
  10268.                 jp      z, loc_B47A
  10269.  
  10270.                 call    sub_B75A
  10271.  
  10272.  
  10273. loc_B429:                               ; CODE XREF: sub_B47F-12 sub_B47F-7
  10274.                 bit     7, (ix+3)
  10275.                 jr      nz, loc_B442
  10276.  
  10277.                 call    sub_B2B9
  10278.  
  10279.                 push    hl
  10280.                 call    sub_AB53
  10281.  
  10282.                 jp      c, loc_B531
  10283.  
  10284.                 pop     ix
  10285.                 jp      z, loc_B571
  10286.  
  10287.                 inc     ix
  10288.                 jr      sub_B47F
  10289.  
  10290. ; ---------------------------------------------------------------------------
  10291.  
  10292. loc_B442:                               ; CODE XREF: sub_B47F-52
  10293.                 ld      de, 3
  10294.                 add     ix, de
  10295.                 ld      a, (ix+0)
  10296.                 inc     a
  10297.                 jp      z, loc_B4E7
  10298.  
  10299.                 call    sub_B2B9
  10300.  
  10301.                 ld      a, (hl)
  10302.                 ld      (byte_D01D), a
  10303.                 push    ix
  10304.                 call    sub_AD40
  10305.  
  10306.                 call    sub_BC00
  10307.  
  10308.                 or      a
  10309.                 jr      z, loc_B46F
  10310.  
  10311.                 call    sub_B79D
  10312.  
  10313.                 jp      c, loc_B535
  10314.  
  10315.                 jr      z, loc_B4A6
  10316.  
  10317.                 call    sub_AF81
  10318.  
  10319.                 pop     ix
  10320.                 jr      loc_B429
  10321.  
  10322. ; ---------------------------------------------------------------------------
  10323.  
  10324. loc_B46F:                               ; CODE XREF: sub_B47F-21
  10325.                 ld      (ix+1), #FF
  10326.                 call    sub_AF81
  10327.  
  10328.                 pop     ix
  10329.                 jr      loc_B429
  10330.  
  10331. ; ---------------------------------------------------------------------------
  10332.  
  10333. loc_B47A:                               ; CODE XREF: sub_B47F-5C
  10334.                 ld      de, 3
  10335.                 add     ix, de
  10336.  
  10337. ; END OF FUNCTION CHUNK FOR sub_B47F
  10338.  
  10339. ; =============== S U B R O U T I N E =======================================
  10340.  
  10341.  
  10342. sub_B47F:                               ; CODE XREF: sub_AFC5:loc_B07A
  10343.                                         ; sub_B47F-3F
  10344.  
  10345. ; FUNCTION CHUNK AT B405 SIZE 0000007A BYTES
  10346. ; FUNCTION CHUNK AT B5D1 SIZE 00000189 BYTES
  10347.  
  10348.                 ld      a, #FF
  10349.                 ld      (byte_D07A), a
  10350.                 ld      a, (ix+0)
  10351.                 inc     a
  10352.                 jr      z, loc_B4E7
  10353.  
  10354.                 push    ix
  10355.                 call    sub_AD40
  10356.  
  10357.                 call    sub_B96D
  10358.  
  10359.                 jp      c, loc_B4A6
  10360.  
  10361.                 ld      b, 0
  10362.                 ld      hl, byte_D097
  10363.                 inc     (hl)
  10364.                 ld      a, (byte_D02D)
  10365.                 xor     1
  10366.                 ld      (byte_D02D), a
  10367.                 jp      loc_B576
  10368.  
  10369. ; ---------------------------------------------------------------------------
  10370.  
  10371. loc_B4A6:                               ; CODE XREF: sub_B47F-19 sub_B47F+13 ...
  10372.                 ld      a, (byte_D02D)
  10373.                 xor     1
  10374.                 ld      (byte_D02D), a
  10375.                 ld      hl, byte_D097
  10376.                 ld      a, (hl)
  10377.                 inc     (hl)
  10378.                 ld      hl,  word_D088+1
  10379.                 add     a, l
  10380.                 ld      l, a
  10381.                 ld      a, (hl)
  10382.                 inc     l
  10383.                 inc     l
  10384.                 ld      (hl), a
  10385.                 jp      loc_B405
  10386.  
  10387. ; ---------------------------------------------------------------------------
  10388.  
  10389. loc_B4BF:                               ; CODE XREF: sub_B47F+54
  10390.                 ld      hl, byte_D097
  10391.                 dec     (hl)
  10392.                 ld      a, (byte_D02D)
  10393.                 xor     1
  10394.                 ld      (byte_D02D), a
  10395.                 jp      loc_B535
  10396.  
  10397. ; ---------------------------------------------------------------------------
  10398.  
  10399. loc_B4CE:                               ; CODE XREF: sub_B47F+261
  10400.                 rra
  10401.                 jp      c, loc_B4D5
  10402.  
  10403.                 rra
  10404.                 jr      nc, loc_B4BF
  10405.  
  10406.  
  10407. loc_B4D5:                               ; CODE XREF: sub_B47F+50
  10408.                                         ; sub_B47F+15B ...
  10409.                 ld      de, #FFFD       ; -3
  10410.  
  10411.  
  10412. loc_B4D8:                               ; CODE XREF: sub_B47F+66
  10413.                 add     ix, de
  10414.                 ld      a, (ix+0)
  10415.                 inc     a
  10416.                 jp      z, loc_B563
  10417.  
  10418.                 ld      a, (ix+1)
  10419.                 inc     a
  10420.                 jr      z, loc_B4D8
  10421.  
  10422.  
  10423. loc_B4E7:                               ; CODE XREF: sub_B47F-34 sub_B47F+9     ...
  10424.                 ld      a, (byte_D097)
  10425.                 dec     a
  10426.                 ret     z
  10427.                 ld      (byte_D097), a
  10428.                 call    sub_AF81
  10429.  
  10430.                 pop     ix
  10431.  
  10432.  
  10433. loc_B4F4:                               ; CODE XREF: sub_B47F+111
  10434.                 ld      a, (byte_D02D)
  10435.                 xor     1
  10436.                 ld      (byte_D02D), a
  10437.                 ld      a, (byte_D0B4)
  10438.                 and     #90
  10439.                 jr      nz, loc_B4E7
  10440.  
  10441.                 ld      a, (byte_D097)
  10442.                 ld      hl, byte_D08B
  10443.                 add     a, l
  10444.                 ld      l, a
  10445.                 ld      a, (hl)
  10446.                 dec     a
  10447.                 dec     l
  10448.                 dec     l
  10449.                 cp      (hl)
  10450.                 jr      c, loc_B53A
  10451.  
  10452.                 cpl
  10453.                 inc     l
  10454.                 cp      (hl)
  10455.                 jp      c, loc_B413
  10456.  
  10457.                 jp      z, loc_B413
  10458.  
  10459.                 ld      (hl), a
  10460.                 call    sub_B309
  10461.  
  10462.                 ld      a, (byte_D097)
  10463.                 dec     a
  10464.                 jp      nz, loc_B413
  10465.  
  10466.                 call    InsertMove_EndIX_NMovesAX
  10467.  
  10468.                 ld      a, (byte_D08B)
  10469.                 inc     a
  10470.                 ret     z
  10471.                 jp      loc_B413
  10472.  
  10473. ; ---------------------------------------------------------------------------
  10474.  
  10475. loc_B531:                               ; CODE XREF: sub_B47F-49
  10476.                 pop     hl
  10477.                 jp      loc_B53A
  10478.  
  10479. ; ---------------------------------------------------------------------------
  10480.  
  10481. loc_B535:                               ; CODE XREF: sub_B47F-1C sub_B47F+4C ...
  10482.                 call    sub_AF81
  10483.  
  10484.                 pop     ix
  10485.  
  10486.  
  10487. loc_B53A:                               ; CODE XREF: sub_B47F+91 sub_B47F+B3
  10488.                 ld      a, (byte_D097)
  10489.                 dec     a
  10490.                 jp      nz, loc_B54C
  10491.  
  10492.                 call    InsertMove_EndIX_NMovesAX
  10493.  
  10494.                 pop     hl
  10495.                 pop     ix
  10496.                 push    ix
  10497.                 jp      loc_B166
  10498.  
  10499. ; ---------------------------------------------------------------------------
  10500.  
  10501. loc_B54C:                               ; CODE XREF: sub_B47F+BF
  10502.                 call    sub_B34B
  10503.  
  10504.                 call    sub_AF81
  10505.  
  10506.                 pop     ix
  10507.                 ld      hl, byte_D097
  10508.                 dec     (hl)
  10509.                 ld      a, (byte_D02D)
  10510.                 xor     1
  10511.                 ld      (byte_D02D), a
  10512.                 jp      loc_B413
  10513.  
  10514. ; ---------------------------------------------------------------------------
  10515.  
  10516. loc_B563:                               ; CODE XREF: sub_B47F+5F
  10517.                 ld      b, (ix+2)
  10518.                 ld      a, (curlevel)
  10519.                 cp      #C
  10520.                 jr      z, loc_B574
  10521.  
  10522.                 ld      c, 2
  10523.                 jr      loc_B576
  10524.  
  10525. ; ---------------------------------------------------------------------------
  10526.  
  10527. loc_B571:                               ; CODE XREF: sub_B47F-44
  10528.                 ld      b, (ix+0)
  10529.  
  10530.  
  10531. loc_B574:                               ; CODE XREF: sub_B47F+EC
  10532.                 ld      c, 1
  10533.  
  10534.  
  10535. loc_B576:                               ; CODE XREF: sub_B47F+24 sub_B47F+F0
  10536.                 ld      hl, byte_D08A
  10537.                 ld      a, (byte_D097)
  10538.                 add     a, l
  10539.                 ld      l, a
  10540.                 bit     7, b
  10541.                 jr      z, loc_B593
  10542.  
  10543.                 ld      (hl), c
  10544.                 ld      hl, byte_D097
  10545.                 dec     (hl)
  10546.                 call    sub_AF81
  10547.  
  10548.                 pop     ix
  10549.                 ld      (ix+3), #FF
  10550.                 jp      loc_B4F4
  10551.  
  10552. ; ---------------------------------------------------------------------------
  10553.  
  10554. loc_B593:                               ; CODE XREF: sub_B47F+101
  10555.                 ld      a, (byte_D02D)
  10556.                 rra
  10557.                 ld      a, (byte_D01E)
  10558.                 jr      nc, loc_B59D
  10559.  
  10560.                 cpl
  10561.  
  10562.  
  10563. loc_B59D:                               ; CODE XREF: sub_B47F+11B
  10564.                 add     a, #84 ; '"'
  10565.                 ld      (hl), a
  10566.                 jp      loc_B4E7
  10567.  
  10568. ; ---------------------------------------------------------------------------
  10569.  
  10570. loc_B5A3:                               ; CODE XREF: sub_B47F-63
  10571.                 call    sub_B2B9
  10572.  
  10573.                 ld      a, (hl)
  10574.                 ld      (byte_D01D), a
  10575.                 ld      a, (byte_D097)
  10576.                 ld      e, a
  10577.                 ld      hl,  word_D088+1
  10578.                 add     a, l
  10579.                 ld      l, a
  10580.                 ld      (word_D06D), hl
  10581.                 ld      a, (byte_D098)
  10582.                 add     a, 2
  10583.                 sub     e
  10584.                 jp      m, loc_B72D
  10585.  
  10586.                 jp      z, loc_B6D4
  10587.  
  10588.                 ld      (byte_D03B), a
  10589.                 jp      loc_B5D1
  10590.  
  10591. ; ---------------------------------------------------------------------------
  10592.  
  10593. loc_B5C8:                               ; CODE XREF: sub_B47F+167
  10594.                 ld      (ix+1), #FF
  10595.  
  10596.  
  10597. loc_B5CC:                               ; CODE XREF: sub_B47F+1DF
  10598.                                         ; sub_B47F+1F2 ...
  10599.                 call    sub_AF81
  10600.  
  10601.                 pop     ix
  10602.  
  10603. ; End of function sub_B47F
  10604.  
  10605. ; START OF FUNCTION CHUNK FOR sub_B47F
  10606.  
  10607. loc_B5D1:                               ; CODE XREF: sub_B47F+146
  10608.                 ld      de, 3
  10609.                 add     ix, de
  10610.                 ld      a, (ix+0)
  10611.                 inc     a
  10612.                 jp      z, loc_B4D5
  10613.  
  10614.                 push    ix
  10615.                 call    sub_AD40
  10616.  
  10617.                 call    sub_BC00
  10618.  
  10619.                 or      a
  10620.                 jr      z, loc_B5C8
  10621.  
  10622.                 cpl
  10623.                 ld      hl, (word_D06D)
  10624.                 cp      (hl)
  10625.                 jp      nc, loc_B645
  10626.  
  10627.                 ld      a, (byte_D01D)
  10628.                 and     #CD
  10629.                 jp      z, loc_B535
  10630.  
  10631.                 cp      8
  10632.                 jr      z, loc_B620
  10633.  
  10634.                 ld      a, (byte_D097)
  10635.                 ld      d, a
  10636.                 ld      a, (word_D00D+1)
  10637.                 add     a, a
  10638.                 cp      d
  10639.                 jr      c, loc_B620
  10640.  
  10641.                 ld      a, (byte_D019)
  10642.                 and     #7F
  10643.                 jp      z, loc_B535
  10644.  
  10645.                 bit     3, a
  10646.                 jp      nz, loc_B4A6
  10647.  
  10648.                 bit     2, a
  10649.                 jr      z, loc_B623
  10650.  
  10651.                 ld      hl, byte_D03B
  10652.                 ld      (hl), 0
  10653.                 jp      loc_B4A6
  10654.  
  10655. ; ---------------------------------------------------------------------------
  10656.  
  10657. loc_B620:                               ; CODE XREF: sub_B47F+17B
  10658.                                         ; sub_B47F+186
  10659.                 ld      a, (byte_D019)
  10660. loc_B623:                               ; CODE XREF: sub_B47F+197
  10661.                 and     3
  10662.                 jp      z, loc_B535
  10663.  
  10664.                 ld      d, 6
  10665.                 rra
  10666.                 jp      c, loc_B630
  10667.                 ld      d, #C
  10668. loc_B630:                               ; CODE XREF: sub_B47F+1AC
  10669.                 ld      a, (byte_D01D)
  10670.                 and     #8D
  10671.                 jp      z, loc_B535
  10672.  
  10673.                 rla
  10674.                 jr      c, loc_B63D
  10675.                 sra     d
  10676. loc_B63D:                               ; CODE XREF: sub_B47F+1BA
  10677.                 ld      a, d
  10678.                 sub     c
  10679.                 jr      nc, loc_B645
  10680.                 cp      (hl)
  10681.                 jp      c, loc_B535
  10682. loc_B645:                               ; CODE XREF: sub_B47F+16E
  10683.                                         ; sub_B47F+1C0
  10684.                 inc     l
  10685.                 ld      a, (ix+2)
  10686.                 ld      d, a
  10687.                 rla
  10688.                 jp      nc, loc_B65B
  10689.  
  10690.                 bit     2, d
  10691.                 jp      z, loc_B4A6
  10692.  
  10693.                 ld      a, (curlevel)
  10694.                 cp      #C
  10695.                 jp      z, loc_B4A6
  10696.  
  10697.  
  10698. loc_B65B:                               ; CODE XREF: sub_B47F+1CC
  10699.                 ld      a, b
  10700.                 dec     b
  10701.                 cp      (hl)
  10702.                 jp      c, loc_B5CC
  10703.  
  10704.                 ld      a, (byte_D01C)
  10705.                 or      a
  10706.                 jr      z, loc_B69B
  10707.  
  10708.                 jp      m, loc_B4A6
  10709.  
  10710.                 bit     2, a
  10711.                 jr      nz, loc_B6AD
  10712.  
  10713.                 ld      e, a
  10714.                 ld      a, c
  10715.                 cp      (hl)
  10716.                 jp      c, loc_B5CC
  10717.  
  10718.                 jp      z, loc_B5CC
  10719.  
  10720.                 bit     6, e
  10721.                 jp      nz, loc_B4A6
  10722.  
  10723.                 ld      a, d
  10724.                 and     #CB
  10725.                 jr      nz, loc_B688
  10726.  
  10727.                 ld      a, (byte_D01D)
  10728.                 and     #C9
  10729.                 jr      z, loc_B6A3
  10730.  
  10731. loc_B688:                               ; CODE XREF: sub_B47F+200
  10732.                 bit     1, e
  10733.                 jp      nz, loc_B4A6
  10734.  
  10735.                 ld      a, (byte_D097)
  10736.                 ld      d, a
  10737.                 ld      a, (word_D00D+1)
  10738.                 add     a, a
  10739.                 cp      d
  10740.                 jr      c, loc_B6A3
  10741.  
  10742.                 jp      loc_B4A6
  10743.  
  10744. ; ---------------------------------------------------------------------------
  10745.  
  10746. loc_B69B:                               ; CODE XREF: sub_B47F+1E6
  10747.                 ld      a, c
  10748.                 cp      (hl)
  10749.                 jp      c, loc_B5CC
  10750.  
  10751.                 jp      z, loc_B5CC
  10752.  
  10753.  
  10754. loc_B6A3:                               ; CODE XREF: sub_B47F+207
  10755.                                         ; sub_B47F+217
  10756.                 ld      (hl), c
  10757.                 call    sub_B2F1
  10758.  
  10759.                 call    sub_B309
  10760.  
  10761.                 jp      loc_B5CC
  10762.  
  10763. ; ---------------------------------------------------------------------------
  10764.  
  10765. loc_B6AD:                               ; CODE XREF: sub_B47F+1ED
  10766.                 ld      a, c
  10767.                 cp      (hl)
  10768.                 jr      c, loc_B6B4
  10769.  
  10770.                 jp      nz, loc_B4A6
  10771.  
  10772.  
  10773. loc_B6B4:                               ; CODE XREF: sub_B47F+230
  10774.                 ld      a, (byte_D097)
  10775.                 ld      d, a
  10776.                 ld      a, (word_D00D+1)
  10777.                 add     a, a
  10778.                 cp      d
  10779.                 jp      nc, loc_B4A6
  10780.  
  10781.                 jp      loc_B5CC
  10782.  
  10783. ; ---------------------------------------------------------------------------
  10784.  
  10785. loc_B6C3:                               ; CODE XREF: sub_B47F+265
  10786.                 bit     3, (ix+2)
  10787.                 jr      z, loc_B6D4
  10788.  
  10789.                 jr      loc_B6E6
  10790.  
  10791. ; ---------------------------------------------------------------------------
  10792.  
  10793. loc_B6CB:                               ; CODE XREF: sub_B47F+270
  10794.                 ld      (ix+1), #FF
  10795.  
  10796.  
  10797. loc_B6CF:                               ; CODE XREF: sub_B47F+29B
  10798.                 call    sub_AF81
  10799.  
  10800.                 pop     ix
  10801.  
  10802.  
  10803. loc_B6D4:                               ; CODE XREF: sub_B47F+140
  10804.                                         ; sub_B47F+248
  10805.                 ld      de, 3
  10806.                 add     ix, de
  10807.                 ld      a, (ix+0)
  10808.                 inc     a
  10809.                 ld      a, (byte_D03B)
  10810.                 jp      z, loc_B4CE
  10811.  
  10812.                 rra
  10813.                 jr      nc, loc_B6C3
  10814.  
  10815.  
  10816. loc_B6E6:                               ; CODE XREF: sub_B47F+24A
  10817.                 push    ix
  10818.                 call    sub_AD40
  10819.  
  10820.                 call    sub_BC00
  10821.  
  10822.                 or      a
  10823.                 jr      z, loc_B6CB
  10824.  
  10825.                 ld      a, (byte_D019)
  10826.                 and     #83
  10827.                 jp      m, loc_B535
  10828.  
  10829.                 sub     c
  10830.                 ld      hl, (word_D06D)
  10831.                 cp      (hl)
  10832.                 jp      c, loc_B535
  10833.  
  10834.                 ld      a, (ix+2)
  10835.                 ld      d, a
  10836.                 and     #C0
  10837.                 jr      z, loc_B711
  10838.  
  10839.                 bit     3, d
  10840.                 jr      nz, loc_B71C
  10841.  
  10842.                 bit     2, d
  10843.                 jr      z, loc_B71C
  10844.  
  10845.  
  10846. loc_B711:                               ; CODE XREF: sub_B47F+288
  10847.                 inc     l
  10848.                 ld      a, (byte_D01A)
  10849.                 add     a, a
  10850.                 add     a, b
  10851.                 jr      c, loc_B71C
  10852.  
  10853.                 cp      (hl)
  10854.                 jr      c, loc_B6CF
  10855.  
  10856.  
  10857. loc_B71C:                               ; CODE XREF: sub_B47F+28C
  10858.                                         ; sub_B47F+290 ...
  10859.                 ld      hl, byte_D03B
  10860.                 set     1, (hl)
  10861.                 jp      loc_B4A6
  10862.  
  10863. ; ---------------------------------------------------------------------------
  10864.  
  10865. loc_B724:                               ; CODE XREF: sub_B47F+2C3
  10866.                 ld      (ix+1), #FF
  10867.  
  10868.  
  10869. loc_B728:                               ; CODE XREF: sub_B47F+2D0
  10870.                                         ; sub_B47F+2D2 ...
  10871.                 call    sub_AF81
  10872.  
  10873.                 pop     ix
  10874.  
  10875.  
  10876. loc_B72D:                               ; CODE XREF: sub_B47F+13D
  10877.                 ld      de, 3
  10878.                 add     ix, de
  10879.                 ld      a, (ix+0)
  10880.                 inc     a
  10881.                 jp      z, loc_B4D5
  10882.  
  10883.                 push    ix
  10884.                 call    sub_AD40
  10885.  
  10886.                 call    sub_BC00
  10887.  
  10888.                 or      a
  10889.                 jr      z, loc_B724
  10890.  
  10891.                 cpl
  10892.                 ld      hl, (word_D06D)
  10893.                 cp      (hl)
  10894.                 jp      c, loc_B535
  10895.  
  10896.                 inc     l
  10897.                 ld      a, c
  10898.                 cp      (hl)
  10899.                 jr      c, loc_B728
  10900.  
  10901.                 jr      z, loc_B728
  10902.  
  10903.                 ld      (hl), a
  10904.                 call    sub_B309
  10905.  
  10906.                 jp      loc_B728
  10907.  
  10908. ; END OF FUNCTION CHUNK FOR sub_B47F
  10909.  
  10910. ; =============== S U B R O U T I N E =======================================
  10911.  
  10912.  
  10913. sub_B75A:                               ; CODE XREF: sub_B47F-59
  10914.                 ld      a, (byte_D097)
  10915.                 ld      e, a
  10916.                 ld      hl,  word_D088+1
  10917.                 add     a, l
  10918.                 ld      l, a
  10919.                 ld      (word_D06D), hl
  10920.                 ld      a, (curlevel)
  10921.                 cp      #C
  10922.                 jr      z, loc_B796
  10923.  
  10924.                 ld      a, e
  10925.                 inc     a
  10926.                 ld      hl, byte_D098
  10927.                 sub     (hl)
  10928.                 jr      c, loc_B78B
  10929.  
  10930.                 ld      hl, byte_D01A
  10931.                 ld      a, (word_D00D+1)
  10932.                 add     a, (hl)
  10933.                 bit     0, e
  10934.                 jr      nz, loc_B781
  10935.  
  10936.                 add     a, (hl)
  10937.  
  10938.  
  10939. loc_B781:                               ; CODE XREF: sub_B75A+24
  10940.                 ld      (byte_D009), a
  10941.                 ld      hl, loc_B7A1
  10942.                 ld      (JP_ADDR), hl
  10943.                 ret
  10944.  
  10945. ; ---------------------------------------------------------------------------
  10946.  
  10947. loc_B78B:                               ; CODE XREF: sub_B75A+19
  10948.                 ld      hl, loc_B7CA
  10949.                 add     a, 2
  10950.                 jr      nc, loc_B796
  10951.  
  10952.                 ld      (JP_ADDR), hl
  10953.                 ret
  10954.  
  10955. ; ---------------------------------------------------------------------------
  10956.  
  10957. loc_B796:                               ; CODE XREF: sub_B75A+11 sub_B75A+36
  10958.                 ld      hl, XOR_A
  10959.                 ld      (JP_ADDR), hl
  10960.                 ret
  10961.  
  10962. ; End of function sub_B75A
  10963.  
  10964.  
  10965. ; =============== S U B R O U T I N E =======================================
  10966.  
  10967.  
  10968. sub_B79D:                               ; CODE XREF: sub_AB53+86 sub_B47F-1F
  10969.                 ld      hl, (JP_ADDR)
  10970.                 jp      (hl)
  10971.  
  10972. ; End of function sub_B79D
  10973.  
  10974. ; ---------------------------------------------------------------------------
  10975.  
  10976. loc_B7A1:                               ; DATA XREF: sub_B75A+2A
  10977.                 ld      a, (byte_D097)
  10978.                 rra
  10979.                 ld      hl, (word_D06D)
  10980.                 jr      c, loc_B7F1
  10981.  
  10982.                 ld      a, (byte_D009)
  10983.                 sub     c
  10984.                 jr      nc, loc_B7F1
  10985.  
  10986.                 cp      (hl)
  10987.                 jr      nc, loc_B7F1
  10988.  
  10989.                 ld      a, (byte_D01D)
  10990.                 ld      d, a
  10991.                 ld      a, (byte_D01B)
  10992.                 and     d
  10993.                 scf
  10994.                 ret     z
  10995.                 and     #C
  10996.                 cp      #C
  10997.                 jr      z, loc_B7F1
  10998.  
  10999.                 bit     2, a
  11000.                 scf
  11001.                 ret     nz
  11002.                 jp      loc_B7F1
  11003.  
  11004. ; ---------------------------------------------------------------------------
  11005.  
  11006. loc_B7CA:                               ; DATA XREF: sub_B75A:loc_B78B
  11007.                 ld      hl, (word_D06D)
  11008.                 ld      a, (byte_D03B)
  11009.                 rla
  11010.                 call    c, sub_B80F ;может выходить отсюда
  11011.  
  11012.                 bit     2, (ix+2)
  11013.                 jr      z, loc_B7E5
  11014.  
  11015.                 ld      a, #17
  11016.  
  11017. loc_B7DC:                               ; CODE XREF: RAM:B805
  11018.                 add     a, c
  11019.  
  11020. loc_B7DD:                               ; CODE XREF: RAM:B80C
  11021.                 jr      c, loc_B7E5
  11022.  
  11023.                 inc     l
  11024.                 cp      (hl)
  11025.                 jr      c, loc_B7E7
  11026.  
  11027.                 jr      z, loc_B7E7
  11028.  
  11029. loc_B7E5:                               ; CODE XREF: RAM:B7D8   RAM:loc_B7DD ...
  11030.                 xor     a
  11031.                 ret
  11032.  
  11033. ; ---------------------------------------------------------------------------
  11034.  
  11035. loc_B7E7:                               ; CODE XREF: RAM:B7E1   RAM:B7E3
  11036.                 ld      a, (ix+2)
  11037.                 and     #C9
  11038.                 jr      nz, loc_B7E5
  11039.  
  11040.                 ld      a, c
  11041.                 or      a
  11042.                 ret
  11043.  
  11044. ; ---------------------------------------------------------------------------
  11045.  
  11046. loc_B7F1:                               ; CODE XREF: RAM:B7A8   RAM:B7AE ...
  11047.                 ld      a, (byte_D03B)
  11048.                 rla
  11049.                 call    c, sub_B80F ;может выходить отсюда
  11050.  
  11051.                 ld      a, (byte_D009)
  11052.                 bit     2, (ix+2)
  11053.                 jr      z, loc_B809
  11054.  
  11055.                 bit     3, (ix+2)
  11056.                 jr      z, loc_B7DC
  11057.  
  11058.                 xor     a
  11059.                 ret
  11060.  
  11061. ; ---------------------------------------------------------------------------
  11062.  
  11063. loc_B809:                               ; CODE XREF: RAM:B7FF
  11064.                 add     a, #F
  11065.                 add     a, c
  11066.                 jp      loc_B7DD
  11067.  
  11068.  
  11069. ; =============== S U B R O U T I N E =======================================
  11070.  
  11071.  
  11072. sub_B80F:                               ; CODE XREF: RAM:B7D1   RAM:B7F5
  11073.                 inc     l
  11074.                 ld      a, c
  11075.                 cp      (hl)
  11076.                 dec     l
  11077.                 ret     nc
  11078.                 pop     hl
  11079.                 or      a
  11080.                 ret
  11081.  
  11082. ; End of function sub_B80F
  11083.  
  11084. ; ---------------------------------------------------------------------------
  11085.  
  11086. XOR_A:                                  ; DATA XREF: sub_AB4C
  11087.                                         ; sub_B75A:loc_B796
  11088.                 xor     a
  11089.                 ret
  11090.  
  11091. ; ---------------------------------------------------------------------------
  11092.  
  11093. loc_B819:                               ; CODE XREF: sub_AFC5+8E
  11094.                 ld      a, (byte_D098)
  11095.                 ld      c, a
  11096.                 or      a
  11097.                 jp      p, loc_B841
  11098.  
  11099.                 ld      b, 2
  11100.                 ld      a, (curlevel)
  11101.                 cp      #C
  11102.                 jp      z, loc_B8A0
  11103.  
  11104.                 ld      b, #C
  11105.                 dec     a
  11106.                 jr      z, loc_B8A0
  11107.  
  11108.                 ld      a, (byte_D0F2)
  11109.                 and     #F
  11110.                 cp      9
  11111.                 ld      b, a
  11112.                 jr      nc, loc_B8A0
  11113.  
  11114.                 ld      hl, byte_D098
  11115.                 inc     (hl)
  11116.                 inc     (hl)
  11117.                 jr      loc_B8A0
  11118.  
  11119. ; ---------------------------------------------------------------------------
  11120.  
  11121. loc_B841:                               ; CODE XREF: RAM:B81E
  11122.                 ld      a, (curlevel)
  11123.                 dec     a
  11124.                 jr      z, loc_B877
  11125.  
  11126.                 ld      a, (timenorm)
  11127.                 rra
  11128.                 rra
  11129.                 rra
  11130.                 and     #1E
  11131.                 jr      z, loc_B877 ;так не бывает? начинается с #0C
  11132.  
  11133.                 inc     c
  11134.                 cp      c
  11135.                 ld      a, (byte_D0F2)
  11136.                 ld      b, a
  11137.                 jr      nc, loc_B8A0
  11138.  
  11139.                 ld      hl, (INC_SECONDS)
  11140.                 ld      de, (word_D02B)
  11141.                 add     hl, de
  11142.                 ld      a, h
  11143.                 or      a
  11144.                 jr      nz, loc_B877
  11145.  
  11146.                 ld      a, (byte_D02A)
  11147.                 srl     a
  11148.                 srl     a
  11149.                 cp      l
  11150.                 jr      c, loc_B877
  11151.  
  11152.                 ld      a, (byte_D02A)
  11153.                 ld      (byte_D0F3), a
  11154.                 jr      loc_B88A
  11155.  
  11156. ; ---------------------------------------------------------------------------
  11157.  
  11158. loc_B877:                               ; CODE XREF: RAM:B845   RAM:B84F ...
  11159.                 ld      a, (curlevel)
  11160.                 cp      #B
  11161.                 jr      z, loc_B88A
  11162.  
  11163.                 ld      a, (byte_D0B4)
  11164.                 bit     5, a
  11165.                 scf
  11166.                 ret     z ;visible board?
  11167.                 ld      hl, byte_D0B3 ;d3=swap board
  11168.                 set     5, (hl)
  11169.  
  11170. loc_B88A:                               ; CODE XREF: RAM:B875   RAM:B87C
  11171.                 ld      a, (byte_D0F2)
  11172.                 push    af
  11173.                 and     #F0
  11174.                 ld      b, a
  11175.                 pop     af
  11176.                 add     a, 7
  11177.                 ld      (byte_D0F2), a
  11178.                 and     #F0
  11179.                 cp      b
  11180.                 jr      z, loc_B8AD
  11181.  
  11182.                 ld      (byte_D0F2), a
  11183.                 ld      b, a
  11184.  
  11185.  
  11186. loc_B8A0:                               ; CODE XREF: RAM:B828   RAM:B82E ...
  11187.                 ld      hl, byte_D098
  11188.                 ld      a, (hl)
  11189.                 cp      8
  11190.                 ld      a, #F
  11191.                 jr      z, loc_B8AD
  11192.  
  11193.                 inc     (hl)
  11194.                 inc     (hl)
  11195.                 ld      a, b
  11196.  
  11197. loc_B8AD:                               ; CODE XREF: RAM:B89A   RAM:B8A8
  11198.                 call    sub_B943 ;берёт [a] из таблицы по 3 байта и раскладывает в byte_D019..C
  11199.  
  11200.                 or      a
  11201.                 ret
  11202.  
  11203.  
  11204. ; =============== S U B R O U T I N E =======================================
  11205.  
  11206.  
  11207. sub_B8B2:                               ; CODE XREF: sub_A915   sub_AFC5+82 ...
  11208.                 ld      a, (curlevel)
  11209.                 add     a, a
  11210.                 ld      hl, tbl_B8DD-2
  11211.                 add     a, l
  11212.                 ld      l, a
  11213.                 jr      nc, loc_B8BE
  11214.  
  11215.                 inc     h
  11216.  
  11217.  
  11218. loc_B8BE:                               ; CODE XREF: sub_B8B2+9
  11219.                 ld      a, (hl)
  11220.                 ld      (timenorm), a
  11221.                 inc     hl
  11222.                 ld      a, (hl)
  11223.                 ld      (timeformove), a
  11224.                 ld      e, a
  11225.                 ld      d, 0
  11226.                 ld      hl, 0
  11227.                 ld      a, (byte_D049) ;move #
  11228.                 dec     a
  11229.                 jr      z, loc_B8D9
  11230.  
  11231.                 ld      b, a
  11232.                 sbc     hl, de
  11233.  
  11234.  
  11235. loc_B8D6:                               ; CODE XREF: sub_B8B2+25
  11236.                 add     hl, de
  11237.                 djnz    loc_B8D6
  11238.  
  11239. ; End of function sub_B8B2
  11240.  
  11241.  
  11242. loc_B8D9:                               ; CODE XREF: sub_B8B2+1F
  11243.                 ld      (word_D088), hl
  11244.                 ret
  11245.  
  11246. ; ---------------------------------------------------------------------------
  11247.  
  11248.                 ; no alignment
  11249. tbl_B8DD:       db  #0C, #02
  11250.                 db  #11, #06
  11251.                 db  #16, #0F
  11252.                 db  #1A, #1E
  11253.                 db  #1F, #2D
  11254.                 db  #20, #3C
  11255.                 db  #24, #6E
  11256.                 db  #28, #AA
  11257.                 db  #2C, #D2
  11258.                 db  #16, #0F
  11259.                 db  #4F, #FF
  11260.                 db  #42, #FF
  11261.                 db  #34, #F6
  11262.                 db  #07, #97
  11263.                 db  #27, #96
  11264.                 db  #76, #86
  11265.                 db  #47, #94
  11266.                 db  #E6, #47
  11267.                 db  #56, #C6
  11268.                 db  #C6, #96
  11269.                 db  #76, #56
  11270.                 db  #E6, #47
  11271.                 db  #35, #F6
  11272.                 db  #66, #47
  11273.                 db  #77, #16
  11274.                 db  #27, #56
  11275.                 db  #83, #33
  11276.  
  11277.  
  11278.                 ; no alignment
  11279. tbl_B913:       db  #00, #85, #00
  11280.                 db  #02, #85, #00
  11281.                 db  #41, #85, #03
  11282.                 db  #42, #85, #03
  11283.                 db  #42, #8D, #03
  11284.                 db  #42, #85, #01
  11285.                 db  #43, #8D, #01
  11286.                 db  #84, #89, #01
  11287.                 db  #83, #8D, #40
  11288.                 db  #83, #89, #40
  11289.                 db  #94, #89, #40
  11290.                 db  #93, #89, #07
  11291.                 db  #94, #C9, #07
  11292.                 db  #A5, #C9, #07
  11293.                 db  #A5, #C9, #80
  11294.                 db  #A6, #C9, #80
  11295.  
  11296. ; =============== S U B R O U T I N E =======================================
  11297.  
  11298.  
  11299. sub_B943:                               ; CODE XREF: RAM:loc_B8AD
  11300. ;a=?
  11301.                 and     #F
  11302.                 ld      hl, tbl_B913
  11303.                 ld      c, a
  11304.                 add     a, a ;*2
  11305.                 add     a, c ;*3
  11306.                 add     a, l
  11307.                 ld      l, a
  11308.                 jr      nc, loc_B950
  11309.                 inc     h
  11310. loc_B950:                               ; CODE XREF: sub_B943+A
  11311.                 ld      a, (hl)
  11312.                 ld      c, a
  11313.                 and     #F
  11314.                 ld      (byte_D01A), a
  11315.                 ld      a, c
  11316.                 rra
  11317.                 rra
  11318.                 rra
  11319.                 rra
  11320.                 and     #F
  11321.                 ld      (byte_D019), a
  11322.                 inc     hl
  11323.                 ld      a, (hl)
  11324.                 ld      (byte_D01B), a
  11325.                 inc     hl
  11326.                 ld      a, (hl)
  11327.                 ld      (byte_D01C), a
  11328.                 or      a
  11329.                 ret
  11330.  
  11331. ; End of function sub_B943
  11332.  
  11333.  
  11334. ; =============== S U B R O U T I N E =======================================
  11335.  
  11336.  
  11337. sub_B96D:                               ; CODE XREF: sub_B47F+10
  11338.                 ld      a, (byte_D097)
  11339.                 add     a, a
  11340.                 ld      hl,  word_D240+1
  11341.                 add     a, l
  11342.                 ld      l, a
  11343.  
  11344. ; End of function sub_B96D
  11345.  
  11346.  
  11347. ; =============== S U B R O U T I N E =======================================
  11348.  
  11349.  
  11350. sub_B976:                               ; CODE XREF: sub_8C20-B13
  11351.                 ld      e, l
  11352.                 ld      b, #B
  11353.  
  11354. loc_B979:                               ; CODE XREF: sub_B976+1B
  11355.                 bit     7, (hl)
  11356.                 jr      nz, loc_B994
  11357.  
  11358.                 dec     l
  11359.                 ld      a, (hl)
  11360.                 and     #77
  11361.                 or      #80
  11362.                 ld      (hl), a
  11363.                 dec     l
  11364.                 dec     b
  11365.                 bit     7, (hl)
  11366.                 jr      nz, loc_B994
  11367.  
  11368.                 dec     l
  11369.                 ld      a, (hl)
  11370.                 and     #77
  11371.                 ld      (hl), a
  11372.                 dec     l
  11373.                 dec     b
  11374.                 jp      p, loc_B979
  11375.  
  11376. loc_B994:                               ; CODE XREF: sub_B976+5 sub_B976+12
  11377.                 ld      a, #C
  11378.                 sub     b
  11379.                 cp      5
  11380.                 ret     c
  11381.                 ld      d, a
  11382.  
  11383. loc_B99B:                               ; CODE XREF: sub_B976+58 sub_B976+74 ...
  11384.                 ld      l, e
  11385.                 scf
  11386.  
  11387. loc_B99D:                               ; CODE XREF: sub_B976+33
  11388.                 ld      b, d
  11389.                 dec     d
  11390.                 ret     z
  11391.                 ld      c, (hl)
  11392.                 dec     l
  11393.                 ld      a, (hl)
  11394.                 dec     l
  11395.                 bit     3, a
  11396.                 jr      z, loc_B9AD
  11397.  
  11398.                 rla
  11399.                 jp      c, loc_B99D
  11400.  
  11401.                 ret
  11402.  
  11403. ; ---------------------------------------------------------------------------
  11404.  
  11405. loc_B9AD:                               ; CODE XREF: sub_B976+30
  11406.                 ld      e, l
  11407.                 sra     b
  11408.                 push    de
  11409.                 and     #77
  11410.                 ld      e, a
  11411.                 ld      a, c
  11412.                 and     #77
  11413.                 ld      c, a
  11414.                 ld      d, 0
  11415.  
  11416.  
  11417. loc_B9BA:                               ; CODE XREF: sub_B976+52 sub_B976+71
  11418.                 dec     l
  11419.                 set     7, (hl)
  11420.                 dec     l
  11421.                 ld      a, (hl)
  11422.                 dec     l
  11423.                 and     #77
  11424.                 cp      e
  11425.                 jr      z, loc_B9D1
  11426.  
  11427.                 set     7, (hl)
  11428.  
  11429. loc_B9C7:                               ; CODE XREF: sub_B976+66
  11430.                 dec     l
  11431.                 djnz    loc_B9BA
  11432.  
  11433.                 scf
  11434.                 dec     d
  11435.                 pop     de
  11436.                 ret     m
  11437.                 jp      loc_B99B
  11438.  
  11439. ; ---------------------------------------------------------------------------
  11440.  
  11441. loc_B9D1:                               ; CODE XREF: sub_B976+4D
  11442.                 set     3, (hl)
  11443.                 ld      a, (hl)
  11444.                 and     #77
  11445.                 cp      c
  11446.                 jr      z, loc_B9F7
  11447.  
  11448.                 set     7, (hl)
  11449.                 ld      e, a
  11450.                 jp      loc_B9C7
  11451.  
  11452. ; ---------------------------------------------------------------------------
  11453.  
  11454. loc_B9DF:                               ; CODE XREF: sub_B976+7F
  11455.                 ld      a, (hl)
  11456.                 or      #88
  11457.                 ld      (hl), a
  11458.                 and     #77
  11459.                 ld      e, a
  11460.                 dec     l
  11461.                 djnz    loc_B9BA
  11462.  
  11463.                 pop     de
  11464.                 jp      loc_B99B
  11465.  
  11466. ; ---------------------------------------------------------------------------
  11467.  
  11468. loc_B9ED:                               ; CODE XREF: sub_B976+82
  11469.                 inc     d
  11470.                 dec     l
  11471.                 dec     l
  11472.                 ld      a, (hl)
  11473.                 and     #77
  11474.                 dec     l
  11475.                 cp      c
  11476.                 jr      z, loc_B9DF
  11477.  
  11478. loc_B9F7:                               ; CODE XREF: sub_B976+61
  11479.                 dec     l
  11480.                 djnz    loc_B9ED
  11481.  
  11482.                 pop     de
  11483.                 jp      loc_B99B
  11484.  
  11485. ; End of function sub_B976
  11486.  
  11487. ; ---------------------------------------------------------------------------
  11488.                 db    0 ;unused?
  11489.                 db    0 ;unused?
  11490.  
  11491.  
  11492.         align 256
  11493.                 ;must be 256-aligned ;какие-то константы для оценки позиции?
  11494. tbl_BA00:       db    0,   1,   1,  #D,   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    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11498.                 db    9,   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.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11502.                 db    9,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11503.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11504.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11505.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11506.                 db    9,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11507.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11508.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11509.                 db    5,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1,   3,   1,   1,   1
  11510.                 ;must be after tbl_BA00
  11511. tbl_BB00:       db    0,   0,   1,   0,   0,   4,   5,   6,   4,   8,   9,  #A,   8,  #C,  #D,  #E
  11512.                 db    0, #10, #11, #12, #10, #14, #15, #16, #14, #18, #19, #1A, #18, #1C, #1D, #1E
  11513.                 db  #10, #20, #21, #22, #20, #24, #25, #26, #24, #28, #29, #2A, #28, #2C, #2D, #2E
  11514.                 db  #20, #30, #31, #32, #30, #34, #35, #36, #34, #38, #39, #3A, #38, #3C, #3D, #3E
  11515.                 db    0, #40, #41, #42, #40, #44, #45, #46, #44, #48, #49, #4A, #48, #4C, #4D, #4E
  11516.                 db  #40, #50, #51, #52, #50, #54, #55, #56, #54, #58, #59, #5A, #58, #5C, #5D, #5E
  11517.                 db  #50, #60, #61, #62, #60, #64, #65, #66, #64, #68, #69, #6A, #68, #6C, #6D, #6E
  11518.                 db  #60, #70, #71, #72, #70, #74, #75, #76, #74, #78, #79, #7A, #78, #7C, #7D, #7E
  11519.                 db  #40, #80, #81, #82, #80, #84, #85, #86, #84, #88, #89, #8A, #88, #8C, #8D, #8E
  11520.                 db  #80, #90, #91, #92, #90, #94, #95, #96, #94, #98, #99, #9A, #98, #9C, #9D, #9E
  11521.                 db  #90, #A0, #A1, #A2, #A0, #A4, #A5, #A6, #A4, #A8, #A9, #AA, #A8, #AC, #AD, #AE
  11522.                 db  #A0, #B0, #B1, #B2, #B0, #B4, #B5, #B6, #B4, #B8, #B9, #BA, #B8, #BC, #BD, #BE
  11523.                 db  #80, #C0, #C1, #C2, #C0, #C4, #C5, #C6, #C4, #C8, #C9, #CA, #C8, #CC, #CD, #CE
  11524.                 db  #C0, #D0, #D1, #D2, #D0, #D4, #D5, #D6, #D4, #D8, #D9, #DA, #D8, #DC, #DD, #DE
  11525.                 db  #D0, #E0, #E1, #E2, #E0, #E4, #E5, #E6, #E4, #E8, #E9, #EA, #E8, #EC, #ED, #EE
  11526.                 db  #E0, #F0, #F1, #F2, #F0, #F4, #F5, #F6, #F4, #F8, #F9, #FA, #F8, #FC, #FD, #FE
  11527.  
  11528. ; =============== S U B R O U T I N E =======================================
  11529.  
  11530.  
  11531. sub_BC00:                               ; CODE XREF: sub_8C20-9FD
  11532.                                         ; sub_8C20-77C ...
  11533.  
  11534. ; FUNCTION CHUNK AT C0A0 SIZE 000000AA BYTES
  11535.  
  11536.                 call    sub_8F4D
  11537.  
  11538.                 ld      (word_D03D), sp
  11539.                 xor     a
  11540.                 ld      e, a
  11541.                 ex      af, af' ;'
  11542.                 ld      h, BRD_88_0/256
  11543.                 exx
  11544.                 ld      h, word_D100/256
  11545.                 ld      a, (byte_D02D)
  11546.                 rrca
  11547.                 ld      iy, loc_C313
  11548.                 bit     1, a
  11549.                 jr      z, loc_BC27
  11550.  
  11551.                 ld      iy, loc_C303
  11552.                 bit     2, a
  11553.                 jr      z, loc_BC27
  11554.  
  11555.                 ld      iy, loc_C2A6
  11556.  
  11557.  
  11558. loc_BC27:                               ; CODE XREF: sub_BC00+19 sub_BC00+21
  11559.                 add     a, #80
  11560.                 ld      b, a
  11561.                 exx
  11562.                 jp      c, loc_C0AE
  11563.  
  11564.  
  11565. loc_BC2E:                               ; CODE XREF: sub_BC00+547
  11566.                 ld      d, #88
  11567.                 ld      a, (byte_D188)
  11568.                 or      a
  11569.                 call    p, sub_C48D ;проверяем поля по ходу ферзя?
  11570.  
  11571.                 ld      a, (byte_D190)
  11572.                 or      a
  11573.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  11574.  
  11575.                 ld      a, (byte_D198)
  11576.                 or      a
  11577.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  11578.  
  11579.                 ld      a, (byte_D1A0)
  11580.                 or      a
  11581.                 call    p, sub_C5CF ;что-то делаем и проверяем поля по ходу слона
  11582.  
  11583.                 ld      a, (byte_D1A8)
  11584.                 or      a
  11585.                 call    p, sub_C5CF ;что-то делаем и проверяем поля по ходу слона
  11586.  
  11587.                 ld      a, (byte_D1B0)
  11588.                 or      a
  11589.                 call    p, sub_C505 ;что-то делаем и проверяем поля по ходу коня
  11590.  
  11591.                 ld      a, (byte_D1B8)
  11592.                 or      a
  11593.                 call    p, sub_C505 ;что-то делаем и проверяем поля по ходу коня
  11594.  
  11595.                 ld      d, #F1
  11596.                 ld      b, array_D200/256
  11597.                 ld      hl, (word_D1C0)
  11598.                 bit     7, l
  11599.                 call    z, sub_C2F2
  11600.  
  11601.                 ld      hl, (word_D1C8)
  11602.                 bit     7, l
  11603.                 call    z, sub_C2F2
  11604.  
  11605.                 ld      hl, (word_D1D0)
  11606.                 bit     7, l
  11607.                 call    z, sub_C2F2
  11608.  
  11609.                 ld      hl, (word_D1D8)
  11610.                 bit     7, l
  11611.                 call    z, sub_C2EA
  11612.  
  11613.                 ld      hl, (word_D1E0)
  11614.                 bit     7, l
  11615.                 call    z, sub_C2EA
  11616.  
  11617.                 ld      hl, (word_D1E8)
  11618.                 bit     7, l
  11619.                 call    z, sub_C2F2
  11620.  
  11621.                 ld      hl, (word_D1F0)
  11622.                 bit     7, l
  11623.                 call    z, sub_C2F2
  11624.  
  11625.                 ld      hl, (word_D1F8)
  11626.                 bit     7, l
  11627.                 call    z, sub_C2F2
  11628.  
  11629.                 call    sub_C06D
  11630.  
  11631.                 exx
  11632.                 bit     4, b
  11633.                 jp      z, loc_C0A0
  11634.  
  11635.  
  11636. loc_BCAE:                               ; CODE XREF: sub_BC00+541
  11637.                 bit     6, b
  11638.                 jr      nz, loc_BCC1
  11639.  
  11640.                 ld      l, (ix+1)
  11641.                 res     7, l
  11642.                 dec     h
  11643.                 ld      l, (hl)
  11644.                 inc     h
  11645.                 bit     2, l
  11646.                 jr      z, loc_BCC1
  11647.  
  11648.                 inc     l
  11649.                 set     1, (hl)
  11650.  
  11651.  
  11652. loc_BCC1:                               ; CODE XREF: sub_BC00+B0 sub_BC00+BC
  11653.                 bit     3, b
  11654.                 jp      z, loc_BCD2
  11655.  
  11656.                 exx
  11657.                 ld      a, (byte_D04C)
  11658.                 or      a
  11659.                 jr      nz, loc_BCCF
  11660.  
  11661.                 sra     e
  11662.  
  11663.  
  11664. loc_BCCF:                               ; CODE XREF: sub_BC00+CB
  11665.                 sra     e
  11666.                 exx
  11667.  
  11668.  
  11669. loc_BCD2:                               ; CODE XREF: sub_BC00+C3
  11670.                 bit     5, b
  11671.                 exx
  11672.                 call    nz, sub_C6C4
  11673.  
  11674.                 ex      af, af' ;'
  11675.                 sra     a
  11676.                 sra     a
  11677.                 add     a, e
  11678.                 ld      e, a
  11679.                 ld      hl, 0
  11680.                 ld      (word_D039), hl
  11681.                 ld      hl, (word_D18A)
  11682.                 ld      a, h
  11683.                 or      l
  11684.                 jr      z, loc_BCF8
  11685.  
  11686.                 ld      bc, (word_D18C)
  11687.                 ld      a, 9
  11688.                 call    sub_C3A3
  11689.  
  11690.                 ld      (word_D18A), hl
  11691.  
  11692.  
  11693. loc_BCF8:                               ; CODE XREF: sub_BC00+EA
  11694.                 ld      (word_D18C), hl
  11695.                 ld      hl, (word_D192)
  11696.                 ld      a, h
  11697.                 or      l
  11698.                 jr      z, loc_BD0E
  11699.  
  11700.                 ld      bc, (word_D194)
  11701.                 ld      a, 5
  11702.                 call    sub_C3A3
  11703.  
  11704.                 ld      (word_D192), hl
  11705.  
  11706.  
  11707. loc_BD0E:                               ; CODE XREF: sub_BC00+100
  11708.                 ld      (word_D194), hl
  11709.                 ld      hl, (word_D19A)
  11710.                 ld      a, h
  11711.                 or      l
  11712.                 jr      z, loc_BD24
  11713.  
  11714.                 ld      bc, (word_D19C)
  11715.                 ld      a, 5
  11716.                 call    sub_C3A3
  11717.  
  11718.                 ld      (word_D19A), hl
  11719.  
  11720.  
  11721. loc_BD24:                               ; CODE XREF: sub_BC00+116
  11722.                 ld      (word_D19C), hl
  11723.                 ld      hl, (word_D1A2)
  11724.                 ld      a, h
  11725.                 or      l
  11726.                 jr      z, loc_BD3A
  11727.  
  11728.                 ld      bc, (word_D1A4)
  11729.                 ld      a, 3
  11730.                 call    sub_C3A3
  11731.  
  11732.                 ld      (word_D1A2), hl
  11733.  
  11734.  
  11735. loc_BD3A:                               ; CODE XREF: sub_BC00+12C
  11736.                 ld      (word_D1A4), hl
  11737.                 ld      hl, (word_D1AA)
  11738.                 ld      a, h
  11739.                 or      l
  11740.                 jr      z, loc_BD50
  11741.  
  11742.                 ld      bc, (word_D1AC)
  11743.                 ld      a, 3
  11744.                 call    sub_C3A3
  11745.  
  11746.                 ld      (word_D1AA), hl
  11747.  
  11748.  
  11749. loc_BD50:                               ; CODE XREF: sub_BC00+142
  11750.                 ld      (word_D1AC), hl
  11751.                 ld      hl, (word_D1B2)
  11752.                 ld      a, h
  11753.                 or      l
  11754.                 jr      z, loc_BD66
  11755.  
  11756.                 ld      bc, (word_D1B4)
  11757.                 ld      a, 3
  11758.                 call    sub_C3A3
  11759.  
  11760.                 ld      (word_D1B2), hl
  11761.  
  11762.  
  11763. loc_BD66:                               ; CODE XREF: sub_BC00+158
  11764.                 ld      (word_D1B4), hl
  11765.                 ld      hl, (word_D1BA)
  11766.                 ld      a, h
  11767.                 or      l
  11768.                 jr      z, loc_BD7C
  11769.  
  11770.                 ld      bc, (word_D1BC)
  11771.                 ld      a, 3
  11772.                 call    sub_C3A3
  11773.  
  11774.                 ld      (word_D1BA), hl
  11775.  
  11776.  
  11777. loc_BD7C:                               ; CODE XREF: sub_BC00+16E
  11778.                 ld      (word_D1BC), hl
  11779.                 ld      hl, (word_D1C2)
  11780.                 ld      a, h
  11781.                 or      l
  11782.                 jr      z, loc_BD93
  11783.  
  11784.                 ld      bc, (word_D1C4)
  11785.                 ld      a, (word_D1C0+1)
  11786.                 call    sub_C3A1
  11787.  
  11788.                 ld      (word_D1C2), hl
  11789.  
  11790.  
  11791. loc_BD93:                               ; CODE XREF: sub_BC00+184
  11792.                 ld      (word_D1C4), hl
  11793.                 ld      hl, (word_D1CA)
  11794.                 ld      a, h
  11795.                 or      l
  11796.                 jr      z, loc_BDAA
  11797.  
  11798.                 ld      bc, (word_D1CC)
  11799.                 ld      a, (word_D1C8+1)
  11800.                 call    sub_C3A1
  11801.  
  11802.                 ld      (word_D1CA), hl
  11803.  
  11804.  
  11805. loc_BDAA:                               ; CODE XREF: sub_BC00+19B
  11806.                 ld      (word_D1CC), hl
  11807.                 ld      hl, (word_D1D2)
  11808.                 ld      a, h
  11809.                 or      l
  11810.                 jr      z, loc_BDC1
  11811.  
  11812.                 ld      bc, (word_D1D4)
  11813.                 ld      a, (word_D1D0+1)
  11814.                 call    sub_C3A1
  11815.  
  11816.                 ld      (word_D1D2), hl
  11817.  
  11818.  
  11819. loc_BDC1:                               ; CODE XREF: sub_BC00+1B2
  11820.                 ld      (word_D1D4), hl
  11821.                 ld      hl, (word_D1DA)
  11822.                 ld      a, h
  11823.                 or      l
  11824.                 jr      z, loc_BDD8
  11825.  
  11826.                 ld      bc, (word_D1DC)
  11827.                 ld      a, (word_D1D8+1)
  11828.                 call    sub_C3A1
  11829.  
  11830.                 ld      (word_D1DA), hl
  11831.  
  11832.  
  11833. loc_BDD8:                               ; CODE XREF: sub_BC00+1C9
  11834.                 ld      (word_D1DC), hl
  11835.                 ld      hl, (word_D1E2)
  11836.                 ld      a, h
  11837.                 or      l
  11838.                 jr      z, loc_BDEF
  11839.  
  11840.                 ld      bc, (word_D1E4)
  11841.                 ld      a, (word_D1E0+1)
  11842.                 call    sub_C3A1
  11843.  
  11844.                 ld      (word_D1E2), hl
  11845.  
  11846.  
  11847. loc_BDEF:                               ; CODE XREF: sub_BC00+1E0
  11848.                 ld      (word_D1E4), hl
  11849.                 ld      hl, (word_D1EA)
  11850.                 ld      a, h
  11851.                 or      l
  11852.                 jr      z, loc_BE06
  11853.  
  11854.                 ld      bc, (word_D1EC)
  11855.                 ld      a, (word_D1E8+1)
  11856.                 call    sub_C3A1
  11857.  
  11858.                 ld      (word_D1EA), hl
  11859.  
  11860.  
  11861. loc_BE06:                               ; CODE XREF: sub_BC00+1F7
  11862.                 ld      (word_D1EC), hl
  11863.                 ld      hl, (word_D1F2)
  11864.                 ld      a, h
  11865.                 or      l
  11866.                 jr      z, loc_BE1D
  11867.  
  11868.                 ld      bc, (word_D1F4)
  11869.                 ld      a, (word_D1F0+1)
  11870.                 call    sub_C3A1
  11871.  
  11872.                 ld      (word_D1F2), hl
  11873.  
  11874.  
  11875. loc_BE1D:                               ; CODE XREF: sub_BC00+20E
  11876.                 ld      (word_D1F4), hl
  11877.                 ld      hl, (word_D1FA)
  11878.                 ld      a, h
  11879.                 or      l
  11880.                 jr      z, loc_BE34
  11881.  
  11882.                 ld      bc, (word_D1FC)
  11883.                 ld      a, (word_D1F8+1)
  11884.                 call    sub_C3A1
  11885.  
  11886.                 ld      (word_D1FA), hl
  11887.  
  11888.  
  11889. loc_BE34:                               ; CODE XREF: sub_BC00+225
  11890.                 ld      (word_D1FC), hl
  11891.                 xor     a
  11892.                 sub     e
  11893.                 ld      e, a
  11894.                 ld      hl, (word_D039)
  11895.                 push    hl
  11896.                 ld      hl, 0
  11897.                 ld      (word_D039), hl
  11898.                 ld      hl, (word_D10A)
  11899.                 ld      a, h
  11900.                 or      l
  11901.                 jr      z, loc_BE57
  11902.  
  11903.                 ld      bc, (word_D10C)
  11904.                 ld      a, 9
  11905.                 call    sub_C3A3
  11906.  
  11907.                 ld      (word_D10A), hl
  11908.  
  11909.  
  11910. loc_BE57:                               ; CODE XREF: sub_BC00+249
  11911.                 ld      (word_D10C), hl
  11912.                 ld      hl, (word_D112)
  11913.                 ld      a, h
  11914.                 or      l
  11915.                 jr      z, loc_BE6D
  11916.  
  11917.                 ld      bc, (word_D114)
  11918.                 ld      a, 5
  11919.                 call    sub_C3A3
  11920.  
  11921.                 ld      (word_D112), hl
  11922.  
  11923.  
  11924. loc_BE6D:                               ; CODE XREF: sub_BC00+25F
  11925.                 ld      (word_D114), hl
  11926.                 ld      hl, (word_D11A)
  11927.                 ld      a, h
  11928.                 or      l
  11929.                 jr      z, loc_BE83
  11930.  
  11931.                 ld      bc, (word_D11C)
  11932.                 ld      a, 5
  11933.                 call    sub_C3A3
  11934.  
  11935.                 ld      (word_D11A), hl
  11936.  
  11937.  
  11938. loc_BE83:                               ; CODE XREF: sub_BC00+275
  11939.                 ld      (word_D11C), hl
  11940.                 ld      hl, (word_D122)
  11941.                 ld      a, h
  11942.                 or      l
  11943.                 jr      z, loc_BE99
  11944.  
  11945.                 ld      bc, (word_D124)
  11946.                 ld      a, 3
  11947.                 call    sub_C3A3
  11948.  
  11949.                 ld      (word_D122), hl
  11950.  
  11951.  
  11952. loc_BE99:                               ; CODE XREF: sub_BC00+28B
  11953.                 ld      (word_D124), hl
  11954.                 ld      hl, (word_D12A)
  11955.                 ld      a, h
  11956.                 or      l
  11957.                 jr      z, loc_BEAF
  11958.  
  11959.                 ld      bc, (word_D12C)
  11960.                 ld      a, 3
  11961.                 call    sub_C3A3
  11962.  
  11963.                 ld      (word_D12A), hl
  11964.  
  11965.  
  11966. loc_BEAF:                               ; CODE XREF: sub_BC00+2A1
  11967.                 ld      (word_D12C), hl
  11968.                 ld      hl, (word_D132)
  11969.                 ld      a, h
  11970.                 or      l
  11971.                 jr      z, loc_BEC5
  11972.  
  11973.                 ld      bc, (word_D134)
  11974.                 ld      a, 3
  11975.                 call    sub_C3A3
  11976.  
  11977.                 ld      (word_D132), hl
  11978.  
  11979.  
  11980. loc_BEC5:                               ; CODE XREF: sub_BC00+2B7
  11981.                 ld      (word_D134), hl
  11982.                 ld      hl, (word_D13A)
  11983.                 ld      a, h
  11984.                 or      l
  11985.                 jr      z, loc_BEDB
  11986.  
  11987.                 ld      bc, (word_D13C)
  11988.                 ld      a, 3
  11989.                 call    sub_C3A3
  11990.  
  11991.                 ld      (word_D13A), hl
  11992.  
  11993.  
  11994. loc_BEDB:                               ; CODE XREF: sub_BC00+2CD
  11995.                 ld      (word_D13C), hl
  11996.                 ld      hl, (word_D142)
  11997.                 ld      a, h
  11998.                 or      l
  11999.                 jr      z, loc_BEF2
  12000.  
  12001.                 ld      bc, (word_D144)
  12002.                 ld      a, (byte_D141)
  12003.                 call    sub_C3A1
  12004.  
  12005.                 ld      (word_D142), hl
  12006.  
  12007.  
  12008. loc_BEF2:                               ; CODE XREF: sub_BC00+2E3
  12009.                 ld      (word_D144), hl
  12010.                 ld      hl, (word_D14A)
  12011.                 ld      a, h
  12012.                 or      l
  12013.                 jr      z, loc_BF09
  12014.  
  12015.                 ld      bc, (word_D14C)
  12016.                 ld      a, (byte_D149)
  12017.                 call    sub_C3A1
  12018.  
  12019.                 ld      (word_D14A), hl
  12020.  
  12021.  
  12022. loc_BF09:                               ; CODE XREF: sub_BC00+2FA
  12023.                 ld      (word_D14C), hl
  12024.                 ld      hl, (word_D152)
  12025.                 ld      a, h
  12026.                 or      l
  12027.                 jr      z, loc_BF20
  12028.  
  12029.                 ld      bc, (word_D154)
  12030.                 ld      a, (byte_D151)
  12031.                 call    sub_C3A1
  12032.  
  12033.                 ld      (word_D152), hl
  12034.  
  12035.  
  12036. loc_BF20:                               ; CODE XREF: sub_BC00+311
  12037.                 ld      (word_D154), hl
  12038.                 ld      hl, (word_D15A)
  12039.                 ld      a, h
  12040.                 or      l
  12041.                 jr      z, loc_BF37
  12042.  
  12043.                 ld      bc, (word_D15C)
  12044.                 ld      a, (byte_D159)
  12045.                 call    sub_C3A1
  12046.  
  12047.                 ld      (word_D15A), hl
  12048.  
  12049.  
  12050. loc_BF37:                               ; CODE XREF: sub_BC00+328
  12051.                 ld      (word_D15C), hl
  12052.                 ld      hl, (word_D162)
  12053.                 ld      a, h
  12054.                 or      l
  12055.                 jr      z, loc_BF4E
  12056.  
  12057.                 ld      bc, (word_D164)
  12058.                 ld      a, (byte_D161)
  12059.                 call    sub_C3A1
  12060.  
  12061.                 ld      (word_D162), hl
  12062.  
  12063.  
  12064. loc_BF4E:                               ; CODE XREF: sub_BC00+33F
  12065.                 ld      (word_D164), hl
  12066.                 ld      hl, (word_D16A)
  12067.                 ld      a, h
  12068.                 or      l
  12069.                 jr      z, loc_BF65
  12070.  
  12071.                 ld      bc, (word_D16C)
  12072.                 ld      a, (byte_D169)
  12073.                 call    sub_C3A1
  12074.  
  12075.                 ld      (word_D16A), hl
  12076.  
  12077.  
  12078. loc_BF65:                               ; CODE XREF: sub_BC00+356
  12079.                 ld      (word_D16C), hl
  12080.                 ld      hl, (word_D172)
  12081.                 ld      a, h
  12082.                 or      l
  12083.                 jr      z, loc_BF7C
  12084.  
  12085.                 ld      bc, (word_D174)
  12086.                 ld      a, (byte_D171)
  12087.                 call    sub_C3A1
  12088.  
  12089.                 ld      (word_D172), hl
  12090.  
  12091.  
  12092. loc_BF7C:                               ; CODE XREF: sub_BC00+36D
  12093.                 ld      (word_D174), hl
  12094.                 ld      hl, (word_D17A)
  12095.                 ld      a, h
  12096.                 or      l
  12097.                 jr      z, loc_BF93
  12098.  
  12099.                 ld      bc, (word_D17C)
  12100.                 ld      a, (byte_D179)
  12101.                 call    sub_C3A1
  12102.  
  12103.                 ld      (word_D17A), hl
  12104.  
  12105.  
  12106. loc_BF93:                               ; CODE XREF: sub_BC00+384
  12107.                 ld      (word_D17C), hl
  12108.                 ld      b, e
  12109.                 pop     de
  12110.                 ld      hl, (word_D039)
  12111.                 ld      a, (byte_D02D)
  12112.                 rra
  12113.                 jr      nc, loc_BFAB
  12114.  
  12115.                 xor     a
  12116.                 sub     b
  12117.                 ld      b, a
  12118.                 ex      de, hl
  12119.                 ld      a, (word_D00D)
  12120.                 jp      loc_BFB0
  12121.  
  12122. ; ---------------------------------------------------------------------------
  12123.  
  12124. loc_BFAB:                               ; CODE XREF: sub_BC00+39F
  12125.                 ld      a, (word_D00D)
  12126.                 neg
  12127.  
  12128.  
  12129. loc_BFB0:                               ; CODE XREF: sub_BC00+3A8
  12130.                 sub     l
  12131.                 add     a, a
  12132.                 dec     l
  12133.                 jp      m, loc_BFD4
  12134.  
  12135.                 set     1, (ix+2)
  12136.                 ex      af, af' ;'
  12137.                 ld      a, l
  12138.                 inc     a
  12139.                 sub     e
  12140.                 jp      m, loc_BFCC
  12141.  
  12142.                 ld      a, (byte_D07A)
  12143.                 sub     2
  12144.                 push    hl
  12145.                 ld      l, a
  12146.                 ld      h, word_D100/256
  12147.                 ld      a, (hl)
  12148.                 pop     hl
  12149.  
  12150.  
  12151. loc_BFCC:                               ; CODE XREF: sub_BC00+3BE
  12152.                 ld      (byte_D07A), a
  12153.                 ex      af, af' ;'
  12154.                 jr      z, loc_BFD3
  12155.  
  12156.                 dec     a
  12157.  
  12158.  
  12159. loc_BFD3:                               ; CODE XREF: sub_BC00+3D0
  12160.                 sub     h
  12161.  
  12162.  
  12163. loc_BFD4:                               ; CODE XREF: sub_BC00+3B3
  12164.                 inc     l
  12165.                 dec     e
  12166.                 jp      m, loc_C002
  12167.  
  12168.                 ex      af, af' ;'
  12169.                 ld      a, (byte_D01D)
  12170.                 bit     1, a
  12171.                 jr      nz, loc_BFE5
  12172.  
  12173.                 set     6, (ix+2)
  12174.  
  12175.  
  12176. loc_BFE5:                               ; CODE XREF: sub_BC00+3DF
  12177.                 bit     2, (ix+2)
  12178.                 jr      nz, loc_C001
  12179.  
  12180.                 inc     b
  12181.                 inc     b
  12182.                 dec     d
  12183.                 jp      m, loc_C001
  12184.  
  12185.                 and     #C9 ; 'Й'
  12186.                 jr      z, loc_BFF9
  12187.  
  12188.                 set     6, (ix+2)
  12189.  
  12190.  
  12191. loc_BFF9:                               ; CODE XREF: sub_BC00+3F3
  12192.                 inc     b
  12193.                 inc     b
  12194.                 dec     d
  12195.                 jp      m, loc_C001
  12196.  
  12197.                 inc     b
  12198.                 inc     b
  12199.  
  12200.  
  12201. loc_C001:                               ; CODE XREF: sub_BC00+3E9
  12202.                                         ; sub_BC00+3EE ...
  12203.                 ex      af, af' ;'
  12204.  
  12205.  
  12206. loc_C002:                               ; CODE XREF: sub_BC00+3D6
  12207.                 cp      #18
  12208.                 jr      c, loc_C016
  12209.  
  12210.                 cp      #E9 ; 'й'
  12211.                 jp      nc, loc_C016
  12212.  
  12213.                 rla
  12214.                 ld      a, 3
  12215.                 ld      b, a
  12216.                 ld      c, a
  12217.                 ret     c
  12218.                 ld      a, #FC  ; 'ь'
  12219.                 ld      b, a
  12220.                 ld      c, a
  12221.                 ret
  12222.  
  12223. ; ---------------------------------------------------------------------------
  12224.  
  12225. loc_C016:                               ; CODE XREF: sub_BC00+404
  12226.                                         ; sub_BC00+408
  12227.                 add     a, a
  12228.                 add     a, a
  12229.                 ld      c, a
  12230.                 ld      a, b
  12231.                 sra     a
  12232.                 cp      #22 ; '"'
  12233.                 jr      c, loc_C02B
  12234.  
  12235.                 cp      #DF ; 'Я'
  12236.                 jr      nc, loc_C02B
  12237.  
  12238.                 rla
  12239.                 ld      a, #21 ; '!'
  12240.                 jr      nc, loc_C02B
  12241.  
  12242.                 ld      a, #DF  ; 'Я'
  12243.  
  12244.  
  12245. loc_C02B:                               ; CODE XREF: sub_BC00+41E
  12246.                                         ; sub_BC00+422 ...
  12247.                 add     a, c
  12248.                 add     a, #80 ; '?'
  12249.                 ld      c, a
  12250.                 ld      b, a
  12251.                 ld      a, (byte_D03B)
  12252.                 rla
  12253.                 jr      c, loc_C049
  12254.  
  12255.  
  12256. loc_C036:                               ; CODE XREF: sub_BC00+459
  12257.                 ld      a, c
  12258.                 bit     6, (ix+2)
  12259.                 ret     z
  12260.                 inc     e
  12261.                 ret     z
  12262.                 rlc     e
  12263.                 rl      e
  12264.                 add     a, e
  12265.                 ld      b, a
  12266.                 ld      a, c
  12267.                 ret     nc
  12268.                 ld      b, #FE  ; 'ю'
  12269.                 ret
  12270.  
  12271. ; ---------------------------------------------------------------------------
  12272.  
  12273. loc_C049:                               ; CODE XREF: sub_BC00+434
  12274.                 rla
  12275.                 ld      a, (byte_D02D)
  12276.                 jr      c, loc_C062
  12277.  
  12278.                 rra
  12279.                 ld      a, (byte_D01E)
  12280.                 jr      nc, loc_C056
  12281.  
  12282.                 cpl
  12283.  
  12284.  
  12285. loc_C056:                               ; CODE XREF: sub_BC00+453
  12286.                 adc     a, #80 ; '?'
  12287.                 cp      c
  12288.                 jr      nc, loc_C036
  12289.  
  12290.  
  12291. loc_C05B:                               ; CODE XREF: sub_BC00+46B
  12292.                 ld      c, a
  12293.                 ld      b, a
  12294.                 res     6, (ix+2)
  12295.                 ret
  12296.  
  12297. ; ---------------------------------------------------------------------------
  12298.  
  12299. loc_C062:                               ; CODE XREF: sub_BC00+44D
  12300.                 rra
  12301.                 ld      a, (byte_D01E)
  12302.                 jr      nc, loc_C069
  12303.  
  12304.                 cpl
  12305.  
  12306.  
  12307. loc_C069:                               ; CODE XREF: sub_BC00+466
  12308.                 adc     a, #80 ; '?'
  12309.                 jr      loc_C05B
  12310.  
  12311. ; End of function sub_BC00
  12312.  
  12313.  
  12314. ; =============== S U B R O U T I N E =======================================
  12315.  
  12316.  
  12317. sub_C06D:                               ; CODE XREF: sub_BC00+A5
  12318.                                         ; sub_BC00+525
  12319.                 ld      hl, array_D200
  12320.                 xor     a
  12321.                 ld      c, a
  12322.  
  12323.  
  12324. loc_C072:                               ; CODE XREF: sub_C06D+7 sub_C06D+27     ...
  12325.                 inc     l
  12326.                 or      (hl)
  12327.                 jr      z, loc_C072
  12328.  
  12329.                 ret     m
  12330.                 ld      (hl), c
  12331.  
  12332.  
  12333. loc_C078:                               ; CODE XREF: sub_C06D+12
  12334.                 dec     a
  12335.                 jp      z, loc_C082
  12336.  
  12337.                 dec     e
  12338.                 dec     e
  12339.                 dec     e
  12340.                 jp      loc_C078
  12341.  
  12342. ; ---------------------------------------------------------------------------
  12343.  
  12344. loc_C082:                               ; CODE XREF: sub_C06D+C
  12345.                 inc     l
  12346.                 or      (hl)
  12347.                 jr      z, loc_C09A
  12348.  
  12349.                 ret     m
  12350.  
  12351.  
  12352. loc_C087:                               ; CODE XREF: sub_C06D+29
  12353.                 ld      (hl), c
  12354.  
  12355.  
  12356. loc_C088:                               ; CODE XREF: sub_C06D+22
  12357.                 dec     a
  12358.                 jp      z, loc_C092
  12359.  
  12360.                 dec     e
  12361.                 dec     e
  12362.                 dec     e
  12363.                 jp      loc_C088
  12364.  
  12365. ; ---------------------------------------------------------------------------
  12366.  
  12367. loc_C092:                               ; CODE XREF: sub_C06D+1C
  12368.                 inc     l
  12369.                 or      (hl)
  12370.                 jr      z, loc_C072
  12371.  
  12372.                 jp      p, loc_C087
  12373.  
  12374.                 ret
  12375.  
  12376. ; ---------------------------------------------------------------------------
  12377.  
  12378. loc_C09A:                               ; CODE XREF: sub_C06D+17
  12379.                 dec     e
  12380.                 dec     e
  12381.                 dec     e
  12382.                 jp      loc_C072
  12383.  
  12384. ; End of function sub_C06D
  12385.  
  12386. ; ---------------------------------------------------------------------------
  12387. ; START OF FUNCTION CHUNK FOR sub_BC00
  12388.  
  12389. loc_C0A0:                               ; CODE XREF: sub_BC00+AB
  12390.                 ld      a, #90 ; '?'
  12391.                 add     a, b
  12392.                 ld      b, a
  12393.                 exx
  12394.                 xor     a
  12395.                 sub     e
  12396.                 ld      e, a
  12397.                 ld      h, BRD_88_0/256
  12398.                 ex      af, af' ;'
  12399.                 neg
  12400.                 ex      af, af' ;'
  12401.  
  12402.  
  12403. loc_C0AE:                               ; CODE XREF: sub_BC00+2B
  12404.                 ld      a, (byte_D108)
  12405.                 ld      d, #88
  12406.                 or      a
  12407.                 call    p, sub_C48D ;проверяем поля по ходу ферзя?
  12408.  
  12409.                 ld      a, (byte_D110)
  12410.                 or      a
  12411.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  12412.  
  12413.                 ld      a, (byte_D118)
  12414.                 or      a
  12415.                 call    p, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  12416.  
  12417.                 ld      a, (byte_D120)
  12418.                 or      a
  12419.                 call    p, sub_C5C4 ;что-то делаем и проверяем поля по ходу слона?
  12420.  
  12421.                 ld      a, (byte_D128)
  12422.                 or      a
  12423.                 call    p, sub_C5C4 ;что-то делаем и проверяем поля по ходу слона?
  12424.  
  12425.                 ld      a, (byte_D130)
  12426.                 or      a
  12427.                 call    p, sub_C512 ;что-то делаем и проверяем поля по ходу коня
  12428.  
  12429.                 ld      a, (byte_D138)
  12430.                 or      a
  12431.                 call    p, sub_C512 ;что-то делаем и проверяем поля по ходу коня
  12432.  
  12433.                 ld      d, #11
  12434.                 ld      b, array_D200/256
  12435.                 ld      hl, (unk_D140)
  12436.                 bit     7, l
  12437.                 call    z, sub_C2F2
  12438.  
  12439.                 ld      hl, (unk_D148)
  12440.                 bit     7, l
  12441.                 call    z, sub_C2F2
  12442.  
  12443.                 ld      hl, (unk_D150)
  12444.                 bit     7, l
  12445.                 call    z, sub_C2F2
  12446.  
  12447.                 ld      hl, (unk_D158)
  12448.                 bit     7, l
  12449.                 call    z, sub_C2EA
  12450.  
  12451.                 ld      hl, (unk_D160)
  12452.                 bit     7, l
  12453.                 call    z, sub_C2EA
  12454.  
  12455.                 ld      hl, (unk_D168)
  12456.                 bit     7, l
  12457.                 call    z, sub_C2F2
  12458.  
  12459.                 ld      hl, (unk_D170)
  12460.                 bit     7, l
  12461.                 call    z, sub_C2F2
  12462.  
  12463.                 ld      hl, (unk_D178)
  12464.                 bit     7, l
  12465.                 call    z, sub_C2F2
  12466.  
  12467.                 call    sub_C06D
  12468.  
  12469.                 ld      hl, (word_D100)
  12470.                 call    sub_C1EF ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12471.  
  12472.                 ex      af, af' ;'
  12473.                 neg
  12474.                 ex      af, af' ;'
  12475.                 xor     a
  12476.                 sub     e
  12477.                 ld      e, a
  12478.                 ld      hl, (word_D180)
  12479.                 exx
  12480.                 set     7, b
  12481.                 call    sub_C1F4 ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12482.  
  12483.                 exx
  12484.                 bit     4, b
  12485.                 jp      nz, loc_BCAE
  12486.  
  12487.                 set     4, b
  12488.                 exx
  12489.                 jp      loc_BC2E
  12490.  
  12491. ; END OF FUNCTION CHUNK FOR sub_BC00
  12492. ; ---------------------------------------------------------------------------
  12493. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12494.  
  12495. loc_C14A:                               ; CODE XREF: sub_C1F4-1B
  12496.                 or      a
  12497.                 jp      nz, loc_C1E6
  12498.  
  12499.                 ld      a, d
  12500.                 or      a
  12501.                 jr      nz, loc_C155
  12502.  
  12503.                 sub     #A
  12504.                 ld      d, a
  12505.  
  12506.  
  12507. loc_C155:                               ; CODE XREF: sub_C1F4-A4
  12508.                 ld      a, 7
  12509.                 and     l
  12510.                 inc     a
  12511.                 rra
  12512.                 cp      2
  12513.                 jr      z, loc_C169
  12514.  
  12515.                 ld      a, #70 ; 'p'
  12516.                 and     l
  12517.                 cp      #30 ; '0'
  12518.                 jr      z, loc_C169
  12519.  
  12520.                 cp      #40 ; '@'
  12521.                 jr      nz, loc_C16F
  12522.  
  12523.  
  12524. loc_C169:                               ; CODE XREF: sub_C1F4-98 sub_C1F4-91
  12525.                 ex      af, af' ;'
  12526.                 add     a, #10
  12527.                 jp      loc_C1E7
  12528.  
  12529. ; ---------------------------------------------------------------------------
  12530.  
  12531. loc_C16F:                               ; CODE XREF: sub_C1F4-8D
  12532.                 ld      a, 7
  12533.                 and     l
  12534.                 cp      2
  12535.                 jr      z, loc_C185
  12536.  
  12537.                 cp      5
  12538.                 jr      z, loc_C185
  12539.  
  12540.                 ld      a, #70 ; 'p'
  12541.                 and     l
  12542.                 cp      #20 ; ' '
  12543.                 jr      z, loc_C185
  12544.  
  12545.                 cp      #50 ; 'P'
  12546.                 jr      nz, loc_C1E6
  12547.  
  12548.  
  12549. loc_C185:                               ; CODE XREF: sub_C1F4-80 sub_C1F4-7C ...
  12550.                 ex      af, af' ;'
  12551.                 add     a, 8
  12552.                 jp      loc_C1E7
  12553.  
  12554. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12555. ; ---------------------------------------------------------------------------
  12556. ; START OF FUNCTION CHUNK FOR sub_C1EF
  12557.  
  12558. loc_C18B:                               ; CODE XREF: sub_C1EF+3
  12559. ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12560.                 ld      a, (byte_D049) ;move #
  12561.                 cpl
  12562.                 add     a, #B
  12563.                 exx
  12564.                 ld      c, a
  12565.                 ld      a, (byte_D189)
  12566.                 bit     4, a
  12567.                 jr      z, loc_C1A4
  12568.  
  12569.                 ld      a, (byte_D188)
  12570.                 or      a
  12571.                 jp      m, loc_C1A4
  12572.  
  12573.                 ld      a, e
  12574.                 add     a, c
  12575.                 ld      e, a
  12576.  
  12577.  
  12578. loc_C1A4:                               ; CODE XREF: sub_C1EF-57 sub_C1EF-51
  12579.                 ld      a, (byte_D109)
  12580.                 bit     4, a
  12581.                 jr      z, loc_C1B5
  12582.  
  12583.                 ld      a, (byte_D108)
  12584.                 or      a
  12585.                 jp      m, loc_C1B5
  12586.  
  12587.                 ld      a, e
  12588.                 sub     c
  12589.                 ld      e, a
  12590.  
  12591.  
  12592. loc_C1B5:                               ; CODE XREF: sub_C1EF-46 sub_C1EF-40
  12593.                 exx
  12594.                 jp      sub_C1F4 ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12595.  
  12596. ; END OF FUNCTION CHUNK FOR sub_C1EF
  12597. ; ---------------------------------------------------------------------------
  12598. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12599.  
  12600. loc_C1B9:                               ; CODE XREF: sub_C1F4+4
  12601.                 bit     3, a
  12602.                 jr      nz, loc_C1C5
  12603.  
  12604.                 ld      h, BRD_88_0/256
  12605.                 ld      b, l
  12606.                 ld      c, 8
  12607.                 jp      loc_C21E ;проверяем поля вокруг
  12608.  
  12609. ; ---------------------------------------------------------------------------
  12610.  
  12611. loc_C1C5:                               ; CODE XREF: sub_C1F4-39
  12612.                 ld      b, a
  12613.                 ld      c, 4
  12614.                 ld      a, #C0  ; 'А'
  12615.                 and     h
  12616.                 rra
  12617.                 rra
  12618.                 rra
  12619.                 ld      d, a
  12620.                 ld      a, (byte_D01E)
  12621.                 or      a
  12622.                 jr      z, loc_C1DC
  12623.  
  12624.                 xor     b
  12625.                 ld      a, (byte_D04C)
  12626.                 jp      p, loc_C14A
  12627.  
  12628.  
  12629. loc_C1DC:                               ; CODE XREF: sub_C1F4-21
  12630.                 rr      d
  12631.                 or      a
  12632.                 jr      nz, loc_C1E6
  12633.  
  12634.                 ld      a, #C0  ; 'А'
  12635.                 and     h
  12636.                 jr      nz, loc_C185
  12637.  
  12638.  
  12639. loc_C1E6:                               ; CODE XREF: sub_C1F4-A9 sub_C1F4-71 ...
  12640.                 ex      af, af' ;'
  12641.  
  12642.  
  12643. loc_C1E7:                               ; CODE XREF: sub_C1F4-88 sub_C1F4-6C
  12644.                 add     a, d
  12645.                 ex      af, af' ;'
  12646.                 ld      h, BRD_88_0/256
  12647.                 ld      b, l
  12648.                 jp      loc_C21E ;проверяем поля вокруг
  12649.  
  12650. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12651.  
  12652. ; =============== S U B R O U T I N E =======================================
  12653.  
  12654.  
  12655. sub_C1EF:                               ; CODE XREF: sub_BC00+52B
  12656.  
  12657. ; FUNCTION CHUNK AT C18B SIZE 0000002E BYTES
  12658.  
  12659.                 exx
  12660.                 bit     0, b
  12661.                 jr      z, loc_C18B ;что-то делаем и проверяем поля вокруг ;out: Z=пусто, A' прибавляет 12 на каждом занятом
  12662.  
  12663. ; End of function sub_C1EF
  12664.  
  12665.  
  12666. ; =============== S U B R O U T I N E =======================================
  12667.  
  12668.  
  12669. sub_C1F4:                               ; CODE XREF: sub_BC00+53B
  12670.                                         ; sub_C1EF-39
  12671. ;L' = поле
  12672. ;B = ?
  12673. ; FUNCTION CHUNK AT C14A SIZE 00000041 BYTES
  12674. ; FUNCTION CHUNK AT C1B9 SIZE 00000036 BYTES
  12675. ; FUNCTION CHUNK AT C26D SIZE 0000001F BYTES
  12676. ; FUNCTION CHUNK AT C28F SIZE 00000006 BYTES
  12677. ; FUNCTION CHUNK AT C298 SIZE 0000000E BYTES
  12678.  
  12679.                 ld      a, b
  12680.                 exx
  12681.                 bit     2, a
  12682.                 jr      nz, loc_C1B9
  12683.  
  12684.                 bit     5, h
  12685.                 jp      z, loc_C27F
  12686.  
  12687.                 ld      a, #C0  ; 'А'
  12688.                 and     h
  12689.                 jr      nz, loc_C26D
  12690.  
  12691.                 ld      c, #C
  12692.                 ld      b, l
  12693.                 ld      h, BRD_88_0/256
  12694.                 ld      a, #1F
  12695.                 add     a, b
  12696.                 jp      p, loc_C211
  12697.  
  12698.                 sub     #40 ; '@'
  12699.  
  12700.  
  12701. loc_C211:                               ; CODE XREF: sub_C1F4+18
  12702.                 ld      l, a
  12703.                 ld      a, (hl)
  12704.                 inc     l
  12705.                 or      (hl)
  12706.                 inc     l
  12707.                 or      (hl)
  12708.                 bit     6, a
  12709.                 jr      nz, loc_C21D
  12710.  
  12711.                 dec     e
  12712.                 dec     e
  12713.  
  12714.  
  12715. loc_C21D:                               ; CODE XREF: sub_C1F4+25
  12716.                 ld      l, b
  12717.  
  12718.  
  12719. loc_C21E:                               ; CODE XREF: sub_C1F4-32 sub_C1F4-8     ...
  12720. ;проверяем поля вокруг ;out: Z=пусто, A' прибавляет C на каждом занятом
  12721.                 dec     l
  12722.                 xor     a
  12723.                 or      (hl) ;левее
  12724.                 call    nz, sub_C254
  12725.  
  12726.                 inc     l
  12727.                 inc     l
  12728.                 or      (hl) ;правее
  12729.                 call    nz, sub_C254
  12730.  
  12731.                 ld      a, #10
  12732.                 add     a, b
  12733.                 jp      m, loc_C241 ;не смотрим ниже
  12734.  
  12735.                 ld      l, a
  12736.                 xor     a
  12737.                 or      (hl) ;ниже?
  12738.                 call    nz, sub_C254
  12739.  
  12740.                 inc     l
  12741.                 or      (hl) ;ниже правее?
  12742.                 call    nz, sub_C254
  12743.  
  12744.                 dec     l
  12745.                 dec     l
  12746.                 or      (hl) ;ниже левее?
  12747.                 call    nz, sub_C254
  12748.  
  12749.  
  12750. loc_C241:                               ; CODE XREF: sub_C1F4+39
  12751.                 ld      a, #F0  ; 'р'
  12752.                 add     a, b
  12753.                 ret     m ;не смотрим выше
  12754.                 ld      l, a
  12755.                 xor     a
  12756.                 or      (hl) ;выше?
  12757.                 call    nz, sub_C254
  12758.  
  12759.                 inc     l
  12760.                 or      (hl) ;выше левее?
  12761.                 call    nz, sub_C254
  12762.  
  12763.                 dec     l
  12764.                 dec     l
  12765.                 or      (hl) ;выше правее?
  12766.                 ret     z
  12767.  
  12768. ; End of function sub_C1F4
  12769.  
  12770.  
  12771. ; =============== S U B R O U T I N E =======================================
  12772.  
  12773.  
  12774. sub_C254:                               ; CODE XREF: sub_C1F4+2D sub_C1F4+33 ...
  12775.  
  12776. ; FUNCTION CHUNK AT C471 SIZE 0000001C BYTES
  12777.  
  12778.                 exx
  12779.                 ld      l, a ;код найденной фигуры?
  12780.                 inc     l
  12781.                 xor     b ;цвет фигур?
  12782.                 jp      p, loc_C263
  12783.  
  12784.                 ld      a, #78 ; 'x'
  12785.                 and     l
  12786.                 jp      z, loc_C471
  12787.  
  12788.                 dec     l
  12789.                 dec     l
  12790.  
  12791.  
  12792. loc_C263:                               ; CODE XREF: sub_C254+4
  12793.                 inc     (hl)
  12794.                 xor     a
  12795.                 bit     6, l
  12796.                 exx
  12797.                 ret     z
  12798.                 ex      af, af' ;'
  12799.                 add     a, c  ;0/4/8/12
  12800.                 ex      af, af' ;'
  12801.                 ret
  12802.  
  12803. ; End of function sub_C254
  12804.  
  12805. ; ---------------------------------------------------------------------------
  12806. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12807.  
  12808. loc_C26D:                               ; CODE XREF: sub_C1F4+E sub_C1F4+AA
  12809.                 ld      c, 4
  12810.                 bit     7, h
  12811.                 jp      z, loc_C276
  12812.  
  12813.                 dec     e
  12814.                 dec     e
  12815.  
  12816.  
  12817. loc_C276:                               ; CODE XREF: sub_C1F4+7D
  12818.                 dec     e
  12819.                 dec     e
  12820.                 dec     e
  12821.                 ld      b, l
  12822.                 ld      h, BRD_88_0/256
  12823.                 jp      loc_C21E ;проверяем поля вокруг
  12824.  
  12825. ; ---------------------------------------------------------------------------
  12826.  
  12827. loc_C27F:                               ; CODE XREF: sub_C1F4+8
  12828.                 bit     4, h
  12829.                 jr      nz, loc_C28F
  12830.  
  12831.                 ld      h, BRD_88_0/256
  12832.                 ld      b, l
  12833.                 ld      c, 0
  12834.                 inc     e
  12835.                 jp      loc_C21E ;проверяем поля вокруг
  12836.                
  12837.  
  12838. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12839. ; ---------------------------------------------------------------------------
  12840.                 rra                     ; dead code???
  12841.                 jr      nc, loc_C295
  12842.  
  12843. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12844.  
  12845. loc_C28F:                               ; CODE XREF: sub_C1F4+8D
  12846.                 ld      a, e
  12847.                 sub     #C
  12848.                 jp      loc_C298        ;  jr???
  12849.  
  12850. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12851. ; ---------------------------------------------------------------------------
  12852.  
  12853. loc_C295:                               ; CODE XREF: RAM:C28D
  12854.                 ld      a, e
  12855.                 sub     8
  12856.  
  12857. ; START OF FUNCTION CHUNK FOR sub_C1F4
  12858.  
  12859. loc_C298:                               ; CODE XREF: sub_C1F4+9E
  12860.                 ld      e, a
  12861.                 ld      c, 8
  12862.                 ld      a, #C0  ; 'А'
  12863.                 and     h
  12864.                 jr      nz, loc_C26D
  12865.  
  12866.                 ld      h, BRD_88_0/256
  12867.                 ld      b, l
  12868.                 jp      loc_C21E ;проверяем поля вокруг
  12869.  
  12870. ; END OF FUNCTION CHUNK FOR sub_C1F4
  12871. ; ---------------------------------------------------------------------------
  12872.  
  12873. loc_C2A6:                               ; DATA XREF: sub_BC00+23
  12874.                 srl     h
  12875.                 srl     h
  12876.                 ex      af, af' ;'
  12877.                 add     a, h
  12878.                 ex      af, af' ;'
  12879.                 bit     5, h
  12880.                 jp      z, loc_C313
  12881.  
  12882. ; START OF FUNCTION CHUNK FOR sub_C2F2
  12883.  
  12884. loc_C2B2:                               ; CODE XREF: sub_C2F2+1E
  12885.                 ld      h, BRD_88_0/256
  12886.                 dec     l
  12887.                 ld      a, (hl)
  12888.                 inc     l
  12889.                 or      a
  12890.                 jp      nz, loc_C315
  12891.  
  12892.                 set     6, (ix+2)
  12893.                 set     0, (ix+2)
  12894.                 ex      af, af' ;'
  12895.                 exx
  12896.                 bit     4, b
  12897.                 exx
  12898.                 jr      nz, loc_C2CC
  12899.  
  12900.                 add     a, #16
  12901.  
  12902.  
  12903. loc_C2CC:                               ; CODE XREF: sub_C2F2-2A
  12904.                 add     a, #E
  12905.                 ex      af, af' ;'
  12906.                 jp      loc_C315
  12907.  
  12908. ; END OF FUNCTION CHUNK FOR sub_C2F2
  12909. ; ---------------------------------------------------------------------------
  12910. ; START OF FUNCTION CHUNK FOR sub_C2EA
  12911.  
  12912. loc_C2D2:                               ; CODE XREF: sub_C2EA+5
  12913.                 ld      a, #E
  12914.                 and     h
  12915.                 jr      nz, loc_C33E
  12916.  
  12917.                 dec     e
  12918.                 ld      a, d
  12919.                 add     a, l
  12920.                 ld      l, a
  12921.                 dec     l
  12922.                 push    hl
  12923.                 ld      h, BRD_88_0/256
  12924.                 ld      a, (hl)
  12925.                 pop     hl
  12926.                 inc     l
  12927.                 or      a
  12928.                 ld      a, l
  12929.                 jr      z, loc_C2FB
  12930.  
  12931.                 dec     e
  12932.                 dec     e
  12933.                 jr      loc_C2FB
  12934.  
  12935. ; END OF FUNCTION CHUNK FOR sub_C2EA
  12936.  
  12937. ; =============== S U B R O U T I N E =======================================
  12938.  
  12939.  
  12940. sub_C2EA:                               ; CODE XREF: sub_BC00+82 sub_BC00+8A ...
  12941.  
  12942. ; FUNCTION CHUNK AT C2D2 SIZE 00000018 BYTES
  12943.  
  12944.                 ld      a, l
  12945.                 add     a, #20 ; ' '
  12946.                 bit     6, a
  12947.                 jr      z, loc_C2D2
  12948.  
  12949.                 inc     e
  12950.  
  12951. ; End of function sub_C2EA
  12952.  
  12953.  
  12954. ; =============== S U B R O U T I N E =======================================
  12955.  
  12956.  
  12957. sub_C2F2:                               ; CODE XREF: sub_BC00+6A sub_BC00+72 ...
  12958.  
  12959. ; FUNCTION CHUNK AT C2B2 SIZE 00000020 BYTES
  12960. ; FUNCTION CHUNK AT C362 SIZE 0000000C BYTES
  12961. ; FUNCTION CHUNK AT C467 SIZE 0000000A BYTES
  12962.  
  12963.                 inc     e
  12964.                 ld      a, #E
  12965.                 and     h
  12966.                 jr      nz, loc_C33E
  12967.  
  12968.                 ld      a, d
  12969.                 add     a, l
  12970.                 ld      l, a
  12971.  
  12972.  
  12973. loc_C2FB:                               ; CODE XREF: sub_C2EA-6 sub_C2EA-2
  12974.                 and     #F
  12975.                 ld      c, a
  12976.                 ld      a, (bc)
  12977.                 inc     a
  12978.                 ld      (bc), a
  12979.                 jp      (iy)
  12980.  
  12981. ; ---------------------------------------------------------------------------
  12982.  
  12983. loc_C303:                               ; DATA XREF: sub_BC00+1B
  12984.                 srl     h
  12985.                 jr      z, loc_C313
  12986.  
  12987.                 srl     h
  12988.                 srl     h
  12989.                 ex      af, af' ;'
  12990.                 add     a, h
  12991.                 ex      af, af' ;'
  12992.                 bit     4, h
  12993.                 jp      nz, loc_C2B2
  12994.  
  12995.  
  12996. loc_C313:                               ; CODE XREF: RAM:C2AF   sub_C2F2+13
  12997.                                         ; DATA XREF: ...
  12998.                 ld      h, BRD_88_0/256
  12999.  
  13000.  
  13001. loc_C315:                               ; CODE XREF: sub_C2F2-3A sub_C2F2-23
  13002.                 ld      a, (hl)
  13003.                 or      a
  13004.                 jp      z, loc_C32A
  13005.  
  13006.                 exx
  13007.                 ld      l, a
  13008.                 xor     b
  13009.                 jp      p, loc_C327
  13010.  
  13011.                 ld      a, #78 ; 'x'
  13012.                 and     l
  13013.                 jr      z, loc_C362
  13014.  
  13015.                 dec     l
  13016.                 dec     l
  13017.  
  13018.  
  13019. loc_C327:                               ; CODE XREF: sub_C2F2+2B
  13020.                 inc     (hl)
  13021.                 exx
  13022.                 xor     a
  13023.  
  13024.  
  13025. loc_C32A:                               ; CODE XREF: sub_C2F2+25
  13026.                 dec     l
  13027.                 dec     l
  13028.                 or      (hl)
  13029.                 ret     z
  13030.                 exx
  13031.                 ld      l, a
  13032.                 xor     b
  13033.                 jp      p, loc_C33B
  13034.  
  13035.                 ld      a, #78 ; 'x'
  13036.                 and     l
  13037.                 jr      z, loc_C362
  13038.  
  13039.                 dec     l
  13040.                 dec     l
  13041.  
  13042.  
  13043. loc_C33B:                               ; CODE XREF: sub_C2F2+3F
  13044.                 inc     (hl)
  13045.                 exx
  13046.                 ret
  13047.  
  13048. ; ---------------------------------------------------------------------------
  13049.  
  13050. loc_C33E:                               ; CODE XREF: sub_C2EA-15 sub_C2F2+4
  13051.                 push    bc
  13052.                 push    de
  13053.                 ld      bc, ret_C35D
  13054.                 push    bc
  13055.                 ld      c, h
  13056.                 ld      h, BRD_88_0/256
  13057.                 ld      d, #88
  13058.                 ld      a, l
  13059.                 bit     3, c
  13060.                 jp      nz, sub_C48D ;проверяем поля по ходу ферзя?
  13061.  
  13062.                 bit     2, c
  13063.                 jp      nz, sub_C498 ;что-то делаем и проверяем поля по ходу ладьи?
  13064.  
  13065.                 bit     7, c
  13066.                 ld      b, a
  13067.                 jp      nz, loc_C5D5
  13068.  
  13069.                 jp      loc_C517
  13070.  
  13071. ; End of function sub_C2F2
  13072.  
  13073. ; ---------------------------------------------------------------------------
  13074.  
  13075. ret_C35D:                               ; DATA XREF: sub_C2F2+4E
  13076.                 ld      l, e
  13077.                 pop     de
  13078.                 ld      e, l
  13079.                 pop     bc
  13080.                 ret
  13081.  
  13082. ; ---------------------------------------------------------------------------
  13083. ; START OF FUNCTION CHUNK FOR sub_C2F2
  13084.  
  13085. loc_C362:                               ; CODE XREF: sub_C2F2+31 sub_C2F2+45
  13086.                 bit     4, b
  13087.                 jp      z, loc_C467
  13088.  
  13089.                 set     7, (ix+2)
  13090.                 exx
  13091.                 inc     e
  13092.                 ret
  13093.  
  13094. ; END OF FUNCTION CHUNK FOR sub_C2F2
  13095. ; ---------------------------------------------------------------------------
  13096. ; START OF FUNCTION CHUNK FOR sub_C3A3
  13097.  
  13098. loc_C36E:                               ; CODE XREF: sub_C3A3+A
  13099.                 ld      a, b
  13100.                 and     #FD ; 'э'
  13101.                 jr      nz, loc_C377
  13102.  
  13103.                 ex      af, af' ;'
  13104.                 jp      loc_C432
  13105.  
  13106. ; ---------------------------------------------------------------------------
  13107.  
  13108. loc_C377:                               ; CODE XREF: sub_C3A3-32
  13109.                 ld      a, b
  13110.                 ld      d, a
  13111.                 and     3
  13112.                 ld      b, a
  13113.                 ld      a, d
  13114.                 and     #FC ; 'ь'
  13115.                 jr      nz, loc_C3AF
  13116.  
  13117.                 dec     e
  13118.                 res     0, b
  13119.                 ld      a, 3
  13120.                 jp      loc_C3AF
  13121.  
  13122. ; ---------------------------------------------------------------------------
  13123.  
  13124. loc_C389:                               ; CODE XREF: sub_C3A3+3
  13125.                 bit     0, h
  13126.                 jr      nz, loc_C390
  13127.  
  13128.                 ld      h, 0
  13129.                 ret
  13130.  
  13131. ; ---------------------------------------------------------------------------
  13132.  
  13133. loc_C390:                               ; CODE XREF: sub_C3A3-18
  13134.                 ld      a, h
  13135.                 ld      d, h
  13136.                 and     3
  13137.                 ld      h, a
  13138.                 ld      a, d
  13139.                 and     #FC ; 'ь'
  13140.                 jr      nz, loc_C3A8
  13141.  
  13142.                 ld      a, 3
  13143.                 res     0, h
  13144.                 jp      loc_C3A8
  13145.  
  13146. ; END OF FUNCTION CHUNK FOR sub_C3A3
  13147.  
  13148. ; =============== S U B R O U T I N E =======================================
  13149.  
  13150.  
  13151. sub_C3A1:                               ; CODE XREF: sub_BC00+18D
  13152.                                         ; sub_BC00+1A4 ...
  13153.                 and     #F
  13154.  
  13155. ; End of function sub_C3A1
  13156.  
  13157.  
  13158. ; =============== S U B R O U T I N E =======================================
  13159. ;a=0..15 (реально 9,5,3)? попадёт в max?
  13160. ;l=? попадёт в индекс таблицы для вычитания
  13161. ;c=? попадёт в индекс таблицы для сложения
  13162. ;b=?
  13163. ;h=?
  13164. ;out: hl в том же формате, что bc
  13165.  
  13166. sub_C3A3:                               ; CODE XREF: sub_BC00+F2
  13167.                                         ; sub_BC00+108 ...
  13168.  
  13169. ; FUNCTION CHUNK AT C36E SIZE 00000033 BYTES
  13170.  
  13171.                 ex      af, af' ;'
  13172.                 ld      a, l
  13173.                 or      a
  13174.                 jr      z, loc_C389
  13175.  
  13176. loc_C3A8:                               ; CODE XREF: sub_C3A3-B sub_C3A3-5
  13177.                 exx
  13178.                 ld      b, a
  13179.                 exx
  13180.                 ld      a, c
  13181.                 or      a
  13182.                 jr      z, loc_C36E
  13183.  
  13184. loc_C3AF:                               ; CODE XREF: sub_C3A3-24 sub_C3A3-1D
  13185.                 exx
  13186.                 ld      c, a
  13187.                 ex      af, af' ;'
  13188.                 ld      d, a ;max?
  13189.                 ld      e, #FF ;min?
  13190.                 ld      h, tbl_BA00/256 ;какие-то константы для оценки позиции?
  13191.  
  13192. loc_C3B7:                               ; CODE XREF: sub_C3A3+36 sub_C3A3+49 ...
  13193.                 ld      l, b
  13194.                 sub     (hl)
  13195.                 cp      e
  13196.                 jp      m, loc_C3C2 ;value<max?
  13197.                 cp      d
  13198.                 jp      p, loc_C420 ;value>min?
  13199. ;max<=value<=min???
  13200.                 ld      e, a ;new max?
  13201. loc_C3C2:                               ; CODE XREF: sub_C3A3+17
  13202.                 inc     h               ; tbl_BB00
  13203.                 ld      b, (hl)
  13204.                 inc     b
  13205.                 dec     b
  13206.                 jr      z, loc_C3FD
  13207.  
  13208. loc_C3C8:                               ; CODE XREF: sub_C3A3+6A sub_C3A3+79
  13209.                 dec     h
  13210.                 ld      l, c
  13211.                 add     a, (hl)
  13212.                 cp      d
  13213.                 jp      p, loc_C3D4 ;value>min?
  13214.                 cp      e
  13215.                 jp      m, loc_C42A ;value<max?
  13216. ;max<=value<=min???
  13217.                 ld      d, a ;new min?
  13218. loc_C3D4:                               ; CODE XREF: sub_C3A3+29
  13219.                 inc     h
  13220.                 ld      c, (hl)
  13221.                 dec     h
  13222.                 inc     c
  13223.                 dec     c
  13224.                 jp      nz, loc_C3B7
  13225.  
  13226.                 exx
  13227.                 ex      af, af' ;'
  13228.                 ld      a, b ;изначально передано в процедуру в b
  13229.                 and     #FC ; 'ь'
  13230.                 jr      z, loc_C3EF
  13231.  
  13232.                 ld      d, a
  13233.                 ld      a, b
  13234.                 and     3
  13235.                 ld      b, a
  13236.                 ld      a, d
  13237.                 exx
  13238.                 ld      c, a
  13239.                 ex      af, af' ;'
  13240.                 jp      loc_C3B7
  13241.  
  13242. ; ---------------------------------------------------------------------------
  13243.  
  13244. loc_C3EF:                               ; CODE XREF: sub_C3A3+3E
  13245.                 bit     0, b
  13246.                 jr      z, loc_C41F
  13247.  
  13248.                 res     0, b
  13249.                 ld      a, 3
  13250.                 exx
  13251.                 ld      c, a
  13252.                 ex      af, af' ;'
  13253.                 jp      loc_C3B7
  13254.  
  13255. ; ---------------------------------------------------------------------------
  13256.  
  13257. loc_C3FD:                               ; CODE XREF: sub_C3A3+23
  13258.                 exx
  13259.                 ex      af, af' ;'
  13260.                 ld      a, h
  13261.                 and     #FC ; 'ь'
  13262.                 jr      z, loc_C410
  13263.  
  13264.                 ld      d, a
  13265.                 ld      a, h
  13266.                 and     3
  13267.                 ld      h, a
  13268.                 ld      a, d
  13269.                 exx
  13270.                 ld      b, a
  13271.                 ex      af, af' ;'
  13272.                 jp      loc_C3C8
  13273.  
  13274. ; ---------------------------------------------------------------------------
  13275.  
  13276. loc_C410:                               ; CODE XREF: sub_C3A3+5F
  13277.                 bit     0, h
  13278.                 jr      z, loc_C429
  13279.  
  13280.                 res     0, h
  13281.                 ld      a, 3
  13282.                 dec     e
  13283.                 exx
  13284.                 ld      b, a
  13285.                 ex      af, af' ;'
  13286.                 jp      loc_C3C8
  13287.  
  13288. ; ---------------------------------------------------------------------------
  13289.  
  13290. loc_C41F:                               ; CODE XREF: sub_C3A3+4E
  13291.                 exx
  13292.  
  13293.  
  13294. loc_C420:                               ; CODE XREF: sub_C3A3+1B
  13295.                 ld      a, d
  13296.                 or      a
  13297.                 exx
  13298.                 jp      p, loc_C430
  13299.  
  13300.                 jp      loc_C459
  13301.  
  13302. ; ---------------------------------------------------------------------------
  13303.  
  13304. loc_C429:                               ; CODE XREF: sub_C3A3+6F
  13305.                 exx
  13306.  
  13307.  
  13308. loc_C42A:                               ; CODE XREF: sub_C3A3+2D
  13309.                 ld      a, e
  13310.                 or      a
  13311.                 exx
  13312.                 jp      m, loc_C459
  13313.  
  13314.  
  13315. loc_C430:                               ; CODE XREF: sub_C3A3+80
  13316.                 jr      z, loc_C454
  13317.  
  13318.  
  13319. loc_C432:                               ; CODE XREF: sub_C3A3-2F
  13320.                 ld      hl, word_D039
  13321.                 cp      (hl)
  13322.                 jr      c, loc_C44F
  13323.  
  13324.                 ld      c, a
  13325.                 ld      d, (hl)
  13326.                 ld      (hl), c
  13327.                 pop     iy
  13328.                 push    iy
  13329.                 ld      a, (byte_D02D)
  13330.                 rrca
  13331.                 ld      c, (iy+1)
  13332.                 xor     c
  13333.                 jp      m, loc_C44E
  13334.  
  13335.                 ld      a, c
  13336.                 ld      (byte_D07A), a
  13337.  
  13338.  
  13339. loc_C44E:                               ; CODE XREF: sub_C3A3+A4
  13340.                 ld      a, d
  13341.  
  13342.  
  13343. loc_C44F:                               ; CODE XREF: sub_C3A3+93
  13344.                 inc     l
  13345.                 cp      (hl)
  13346.                 jr      c, loc_C454
  13347.  
  13348.                 ld      (hl), a
  13349.  
  13350.  
  13351. loc_C454:                               ; CODE XREF: sub_C3A3:loc_C430
  13352.                                         ; sub_C3A3+AE
  13353.                 dec     e
  13354.                 bit     1, b
  13355.                 jr      nz, loc_C45D
  13356.  
  13357.  
  13358. loc_C459:                               ; CODE XREF: sub_C3A3+83 sub_C3A3+8A
  13359.                 ld      hl, 0
  13360.                 ret
  13361.  
  13362. ; ---------------------------------------------------------------------------
  13363.  
  13364. loc_C45D:                               ; CODE XREF: sub_C3A3+B4
  13365.                 set     2, (ix+2)
  13366.                 ld      hl, 0
  13367.                 dec     e
  13368.                 dec     e
  13369.                 ret
  13370.  
  13371. ; End of function sub_C3A3
  13372.  
  13373. ; ---------------------------------------------------------------------------
  13374. ; START OF FUNCTION CHUNK FOR sub_C2F2
  13375.  
  13376. loc_C467:                               ; CODE XREF: sub_C2F2+72
  13377.                 xor     a
  13378.                 ld      b, 8
  13379.                 ld      hl,  array_D200+1
  13380.  
  13381.  
  13382. loc_C46D:                               ; CODE XREF: sub_C2F2+17D
  13383.                 ld      (hl), a
  13384.                 inc     l
  13385.                 djnz    loc_C46D
  13386.  
  13387. ; END OF FUNCTION CHUNK FOR sub_C2F2
  13388. ; START OF FUNCTION CHUNK FOR sub_C254
  13389.  
  13390. loc_C471:                               ; CODE XREF: sub_C254+A sub_C563+17     ...
  13391.                 xor     a
  13392.                 ld      (byte_D079), a
  13393.                 ld      b, #1F
  13394.                 ld      de, 5
  13395.                 ld      hl, word_D10A
  13396.  
  13397.  
  13398. loc_C47D:                               ; CODE XREF: sub_C254+231
  13399.                 ld      (hl), a
  13400.                 inc     l
  13401.                 ld      (hl), a
  13402.                 inc     l
  13403.                 ld      (hl), a
  13404.                 inc     l
  13405.                 ld      (hl), a
  13406.                 add     hl, de
  13407.                 djnz    loc_C47D
  13408.  
  13409.                 ld      c, a
  13410.                 ld      sp, (word_D03D)
  13411.                 ret
  13412.  
  13413. ; END OF FUNCTION CHUNK FOR sub_C254
  13414.  
  13415. ; =============== S U B R O U T I N E =======================================
  13416.  
  13417.  
  13418. sub_C48D:                               ; CODE XREF: sub_BC00+34
  13419.                                         ; sub_BC00+4B4 ...
  13420. ;проверяем поля по ходу ферзя?
  13421.                 ld      b, a
  13422.                 exx
  13423.                 ld      c, #40
  13424.                 call    sub_C49C ;проверяем поля по ходу ладьи?
  13425.  
  13426.                 exx
  13427.                 jp      loc_C5D9 ;проверяем поля по ходу слона
  13428.  
  13429. ; End of function sub_C48D
  13430.  
  13431.  
  13432. ; =============== S U B R O U T I N E =======================================
  13433.  
  13434.  
  13435. sub_C498:                               ; CODE XREF: sub_BC00+3B sub_BC00+42 ...
  13436.                 ld      b, a
  13437.                 exx
  13438.                 ld      c, #10
  13439.  
  13440. ; End of function sub_C498
  13441.  
  13442.  
  13443. ; =============== S U B R O U T I N E =======================================
  13444.  
  13445.  
  13446. sub_C49C:                               ; CODE XREF: sub_C48D+4
  13447. ;проверяем поля по ходу ладьи?
  13448.                 ld      e, 8
  13449.                 exx
  13450.                 ld      l, b
  13451.                 xor     a
  13452. loc_C4A1:                               ; CODE XREF: sub_C49C+B
  13453.                 inc     l
  13454.                 bit     3, l
  13455.                 jr      nz, loc_C4AF
  13456.                 or      (hl)
  13457.                 jr      z, loc_C4A1
  13458.  
  13459.                 ld      c, 1
  13460.                 call    sub_C4E2 ;проверяем поля справа?
  13461.                 xor     a
  13462.  
  13463. loc_C4AF:                               ; CODE XREF: sub_C49C+8
  13464.                 ld      l, b
  13465.  
  13466.  
  13467. loc_C4B0:                               ; CODE XREF: sub_C49C+1A
  13468.                 dec     l
  13469.                 bit     3, l
  13470.                 jr      nz, loc_C4BD
  13471.  
  13472.                 or      (hl)
  13473.                 jr      z, loc_C4B0
  13474.  
  13475.                 ld      c, #FF
  13476.                 call    sub_C4E2 ;проверяем поля слева?
  13477.  
  13478.  
  13479. loc_C4BD:                               ; CODE XREF: sub_C49C+17
  13480.                 ld      c, #10
  13481.                 ld      a, b
  13482.                 add     a, c
  13483.                 call    p, sub_C4CA ;проверяем поля снизу?
  13484.  
  13485.                 ld      c, #F0  ; 'р'
  13486.                 ld      l, b
  13487.                                     ;проверяем поля сверху?
  13488.  
  13489. loc_C4C7:                               ; CODE XREF: sub_C4CA+4
  13490.                 ld      a, l
  13491.                 add     a, c
  13492.                 ret     m
  13493.  
  13494. ; End of function sub_C49C
  13495.  
  13496.  
  13497. ; =============== S U B R O U T I N E =======================================
  13498.  
  13499.  
  13500. sub_C4CA:                               ; CODE XREF: sub_C49C+25
  13501.                 ld      l, a
  13502.                 inc     e
  13503.                 xor     a
  13504.                 or      (hl)
  13505.                 jr      z, loc_C4C7
  13506.  
  13507.                 exx
  13508.                 ld      l, a
  13509.                 xor     b
  13510.                 jp      m, loc_C609
  13511.  
  13512.                 ld      a, c
  13513.                 add     a, (hl)
  13514.                 ld      (hl), a
  13515.                 set     1, l
  13516.                 ld      a, (hl)
  13517.                 and     e
  13518.                 exx
  13519.                 ret     z
  13520.                 jp      loc_C648
  13521.  
  13522. ; End of function sub_C4CA
  13523.  
  13524.  
  13525. ; =============== S U B R O U T I N E =======================================
  13526.  
  13527.  
  13528. sub_C4E2:                               ; CODE XREF: sub_C49C+F sub_C49C+1E
  13529.                 exx
  13530.                 ld      l, a
  13531.                 xor     b
  13532.                 jp      m, loc_C609
  13533.  
  13534.                 ld      a, c
  13535.                 add     a, (hl)
  13536.                 ld      (hl), a
  13537.                 set     1, l
  13538.                 ld      a, (hl)
  13539.                 and     e
  13540.                 exx
  13541.                 ret     z
  13542.  
  13543.  
  13544. loc_C4F1:                               ; CODE XREF: sub_C4E2+15
  13545.                 ld      a, l
  13546.                 add     a, c
  13547.                 ld      l, a
  13548.                 and     d
  13549.                 ret     nz
  13550.                 or      (hl)
  13551.                 jr      z, loc_C4F1
  13552.  
  13553.                 exx
  13554.                 ld      l, a
  13555.                 xor     b
  13556.                 jp      m, loc_C657
  13557.  
  13558.                 inc     l
  13559.                 ld      a, c
  13560.                 add     a, (hl)
  13561.                 ld      (hl), a
  13562.                 exx
  13563.                 ret
  13564.  
  13565. ; End of function sub_C4E2
  13566.  
  13567.  
  13568. ; =============== S U B R O U T I N E =======================================
  13569.  
  13570.  
  13571. sub_C505:                               ; CODE XREF: sub_BC00+57 sub_BC00+5E
  13572.                 ld      b, a
  13573.                 or      #70 ; 'p'
  13574.                 cp      b
  13575.                 jp      nz, loc_C517
  13576.  
  13577.  
  13578. loc_C50C:                               ; CODE XREF: sub_C512+3
  13579.                 ld      a, e
  13580.                 sub     6
  13581.                 jp      loc_C51A
  13582.  
  13583. ; End of function sub_C505
  13584.  
  13585.  
  13586. ; =============== S U B R O U T I N E =======================================
  13587.  
  13588.  
  13589. sub_C512:                               ; CODE XREF: sub_BC00+4D7
  13590.                                         ; sub_BC00+4DE
  13591.                 ld      b, a
  13592.                 and     #70 ; 'p'
  13593.                 jr      z, loc_C50C
  13594.  
  13595.  
  13596. loc_C517:                               ; CODE XREF: sub_C2F2+68 sub_C505+4
  13597.                 ld      a, e
  13598.                 sub     5
  13599.  
  13600.  
  13601. loc_C51A:                               ; CODE XREF: sub_C505+A
  13602.                 ld      e, a
  13603.                 exx
  13604.                 ld      c, 4
  13605.                 exx
  13606.  
  13607.  
  13608. loc_C51F:                               ; CODE XREF: sub_C6C4+5E
  13609. ;проверяем поля по ходу коня
  13610.                 ld      a, #E
  13611.                 add     a, b
  13612.                 jp      m, loc_C542
  13613.  
  13614.                 ld      l, a
  13615.                 and     d
  13616.                 call    z, sub_C563
  13617.  
  13618.                 ld      a, #12
  13619.                 add     a, b
  13620.                 ld      l, a
  13621.                 and     d
  13622.                 call    z, sub_C563
  13623.  
  13624.                 ld      a, #1F
  13625.                 add     a, b
  13626.                 ld      l, a
  13627.                 and     d
  13628.                 call    z, sub_C562
  13629.  
  13630.                 ld      a, #21 ; '!'
  13631.                 add     a, b
  13632.                 ld      l, a
  13633.                 and     d
  13634.                 call    z, sub_C562
  13635.  
  13636.  
  13637. loc_C542:                               ; CODE XREF: sub_C512+10
  13638.                 ld      a, #F2  ; 'т'
  13639.                 add     a, b
  13640.                 ret     m
  13641.                 ld      l, a
  13642.                 and     d
  13643.                 call    z, sub_C563
  13644.  
  13645.                 ld      a, #EE  ; 'о'
  13646.                 add     a, b
  13647.                 ld      l, a
  13648.                 and     d
  13649.                 call    z, sub_C563
  13650.  
  13651.                 ld      a, #E1  ; 'б'
  13652.                 add     a, b
  13653.                 ret     m
  13654.                 ld      l, a
  13655.                 and     d
  13656.                 call    z, sub_C562
  13657.  
  13658.                 ld      a, #DF  ; 'Я'
  13659.                 add     a, b
  13660.                 ld      l, a
  13661.                 and     d
  13662.                 ret     nz
  13663.  
  13664. ; End of function sub_C512
  13665.  
  13666.  
  13667. ; =============== S U B R O U T I N E =======================================
  13668.  
  13669.  
  13670. sub_C562:                               ; CODE XREF: sub_C512+25 sub_C512+2D ...
  13671.                 inc     e
  13672.  
  13673. ; End of function sub_C562
  13674.  
  13675.  
  13676. ; =============== S U B R O U T I N E =======================================
  13677.  
  13678.  
  13679. sub_C563:                               ; CODE XREF: sub_C512+15 sub_C512+1D ...
  13680.                 inc     e
  13681.                 or      (hl)
  13682.                 ret     z
  13683.                 exx
  13684.                 ld      l, a
  13685.                 xor     b
  13686.                 jp      p, loc_C573
  13687.  
  13688.                 ld      a, #78 ; 'x'
  13689.                 and     l
  13690.                 jr      z, loc_C578
  13691.  
  13692.                 dec     l
  13693.                 dec     l
  13694.  
  13695.  
  13696. loc_C573:                               ; CODE XREF: sub_C563+6
  13697.                 ld      a, c
  13698.                 add     a, (hl)
  13699.                 ld      (hl), a
  13700.                 exx
  13701.                 ret
  13702.  
  13703. ; ---------------------------------------------------------------------------
  13704.  
  13705. loc_C578:                               ; CODE XREF: sub_C563+C
  13706.                 bit     4, b
  13707.                 jp      z, loc_C471
  13708.  
  13709.                 set     7, (ix+2)
  13710.                 bit     6, b
  13711.                 set     6, b
  13712.                 exx
  13713.                 jr      nz, loc_C592
  13714.  
  13715.                 ld      l, b
  13716.                 ld      l, (hl)
  13717.                 inc     l
  13718.                 inc     h
  13719.                 set     1, (hl)
  13720.                 dec     h
  13721.                 inc     e
  13722.                 inc     e
  13723.                 ret
  13724.  
  13725. ; ---------------------------------------------------------------------------
  13726.  
  13727. loc_C592:                               ; CODE XREF: sub_C563+23
  13728.                 set     6, (ix+2)
  13729.                 ex      af, af' ;'
  13730.                 add     a, #14
  13731.                 ex      af, af' ;'
  13732.                 ret
  13733.  
  13734. ; End of function sub_C563
  13735.  
  13736. ; ---------------------------------------------------------------------------
  13737. ; START OF FUNCTION CHUNK FOR sub_C5FF
  13738.  
  13739. loc_C59B:                               ; CODE XREF: sub_C5FF+D
  13740.                 bit     4, b
  13741.                 jp      z, loc_C471
  13742.  
  13743.                 set     7, (ix+2)
  13744.                 bit     6, b
  13745.                 set     6, b
  13746.                 exx
  13747.                 jr      nz, loc_C5B9
  13748.  
  13749.                 ld      a, l
  13750.                 ld      l, b
  13751.                 ld      l, (hl)
  13752.                 inc     l
  13753.                 inc     h
  13754.                 set     1, (hl)
  13755.                 dec     h
  13756.                 ld      l, a
  13757.                 inc     e
  13758.                 inc     e
  13759.                 jp      loc_C5FA ;проверяем поля по какому-то направлению C
  13760.  
  13761. ; ---------------------------------------------------------------------------
  13762.  
  13763. loc_C5B9:                               ; CODE XREF: sub_C5FF-56
  13764.                 set     6, (ix+2)
  13765.                 ex      af, af' ;'
  13766.                 add     a, #14
  13767.                 ex      af, af' ;'
  13768.                 jp      loc_C5FA ;проверяем поля по какому-то направлению C
  13769.  
  13770. ; END OF FUNCTION CHUNK FOR sub_C5FF
  13771.  
  13772. ; =============== S U B R O U T I N E =======================================
  13773.  
  13774.  
  13775. sub_C5C4:                               ; CODE XREF: sub_BC00+4C9
  13776.                                         ; sub_BC00+4D0
  13777.                 ld      b, a
  13778.                 and     #70 ; 'p'
  13779.                 jp      nz, loc_C5D5
  13780.  
  13781.  
  13782. loc_C5CA:                               ; CODE XREF: sub_C5CF+4
  13783.                 dec     e
  13784.                 dec     e
  13785.                 jp      loc_C5D6
  13786.  
  13787. ; End of function sub_C5C4
  13788.  
  13789.  
  13790. ; =============== S U B R O U T I N E =======================================
  13791.  
  13792.  
  13793. sub_C5CF:                               ; CODE XREF: sub_BC00+49 sub_BC00+50
  13794.                 ld      b, a
  13795.                 or      #70 ; 'p'
  13796.                 cp      b
  13797.                 jr      z, loc_C5CA
  13798.  
  13799.  
  13800. loc_C5D5:                               ; CODE XREF: sub_C2F2+65 sub_C5C4+3
  13801.                 inc     e
  13802.  
  13803.  
  13804. loc_C5D6:                               ; CODE XREF: sub_C5C4+8
  13805.                 exx
  13806.                 ld      c, 4
  13807.  
  13808.  
  13809. loc_C5D9:                               ; CODE XREF: sub_C48D+8
  13810. ;проверяем поля по ходу слона
  13811.                 ld      e, #C4  ; 'Д'
  13812.                 exx
  13813.                 ld      c, #F
  13814.                 ld      a, b
  13815.                 add     a, c
  13816.                 ld      l, a ;ниже левее? (и далее по этому направлению)
  13817.                 and     d
  13818.                 call    z, sub_C5FF
  13819.  
  13820.                 ld      c, #11
  13821.                 ld      a, b
  13822.                 add     a, c
  13823.                 ld      l, a ;ниже правее? (и далее по этому направлению)
  13824.                 and     d
  13825.                 call    z, sub_C5FF
  13826.  
  13827.                 ld      c, #EF  ; 'п'
  13828.                 ld      a, b
  13829.                 add     a, c
  13830.                 ld      l, a ;выше левее? (и далее по этому направлению)
  13831.                 and     d
  13832.                 call    z, sub_C5FF
  13833.  
  13834.                 ld      c, #F1  ; 'с'
  13835.                 ld      l, b
  13836.                              ;выше правее? (и далее по этому направлению)
  13837.  
  13838. loc_C5FA:                               ; CODE XREF: sub_C5FF-49 sub_C5FF-3E ...
  13839. ;проверяем поля по какому-то направлению C
  13840.                 ld      a, l
  13841.                 add     a, c
  13842.                 ld      l, a
  13843.                 and     d
  13844.                 ret     nz
  13845.  
  13846. ; End of function sub_C5CF
  13847.  
  13848.  
  13849. ; =============== S U B R O U T I N E =======================================
  13850.  
  13851.  
  13852. sub_C5FF:                               ; CODE XREF: sub_C5CF+13 sub_C5CF+1C ...
  13853.  
  13854. ; FUNCTION CHUNK AT C59B SIZE 00000029 BYTES
  13855.  
  13856.                 inc     e
  13857.                 or      (hl)
  13858.                 jr      z, loc_C5FA ;проверяем поля по какому-то направлению C
  13859.  
  13860.                 exx
  13861.                 ld      l, a
  13862.                 xor     b
  13863.                 jp      p, loc_C63C
  13864.  
  13865.  
  13866. loc_C609:                               ; CODE XREF: sub_C4CA+9 sub_C4E2+3
  13867.                 ld      a, #78 ; 'x'
  13868.                 and     l
  13869.                 jr      z, loc_C59B
  13870.  
  13871.                 dec     l
  13872.                 dec     l
  13873.                 ld      a, c
  13874.                 add     a, (hl)
  13875.                 ld      (hl), a
  13876.                 set     2, l
  13877.                 ld      a, (hl)
  13878.                 and     e
  13879.                 jr      z, loc_C669
  13880.  
  13881.                 jp      m, loc_C669
  13882.  
  13883.                 exx
  13884.  
  13885.  
  13886. loc_C61D:                               ; CODE XREF: sub_C5FF+24
  13887.                 ld      a, l
  13888.                 add     a, c
  13889.                 ld      l, a
  13890.                 and     d
  13891.                 ret     nz
  13892.                 or      (hl)
  13893.                 jr      z, loc_C61D
  13894.  
  13895.                 exx
  13896.                 ld      d, l
  13897.                 ld      l, a
  13898.                 xor     b
  13899.                 jp      p, loc_C665
  13900.  
  13901.                 dec     l
  13902.                 ld      a, c
  13903.                 add     a, (hl)
  13904.                 ld      (hl), a
  13905.                 inc     l
  13906.  
  13907.  
  13908. loc_C631:                               ; CODE XREF: sub_C5FF+77
  13909.                 inc     l
  13910.                 inc     l
  13911.                 ld      a, (hl)
  13912.                 rra
  13913.                 jr      c, loc_C67F
  13914.  
  13915.                 rra
  13916.                 jr      c, loc_C67B
  13917.  
  13918.                 exx
  13919.                 ret
  13920.  
  13921. ; ---------------------------------------------------------------------------
  13922.  
  13923. loc_C63C:                               ; CODE XREF: sub_C5FF+7
  13924.                 ld      a, c
  13925.                 add     a, (hl)
  13926.                 ld      (hl), a
  13927.  
  13928.  
  13929. loc_C63F:                               ; CODE XREF: sub_C5FF+63
  13930.                 set     1, l
  13931.                 ld      a, (hl)
  13932.                 and     e
  13933.                 exx
  13934.                 ret     z
  13935.                 jp      m, loc_C6AC
  13936.  
  13937.  
  13938. loc_C648:                               ; CODE XREF: sub_C4CA+15 sub_C5FF+50
  13939.                 ld      a, l
  13940.                 add     a, c
  13941.                 ld      l, a
  13942.                 and     d
  13943.                 ret     nz
  13944.                 inc     e
  13945.                 or      (hl)
  13946.                 jr      z, loc_C648
  13947.  
  13948.                 exx
  13949.                 ld      l, a
  13950.                 xor     b
  13951.                 jp      p, loc_C65D
  13952.  
  13953.  
  13954. loc_C657:                               ; CODE XREF: sub_C4E2+1A
  13955.                 dec     l
  13956.  
  13957.  
  13958. loc_C658:                               ; CODE XREF: sub_C5FF+67
  13959.                 ld      a, c
  13960.                 add     a, (hl)
  13961.                 ld      (hl), a
  13962.                 exx
  13963.                 ret
  13964.  
  13965. ; ---------------------------------------------------------------------------
  13966.  
  13967. loc_C65D:                               ; CODE XREF: sub_C5FF+55
  13968.                 inc     l
  13969.                 ld      a, c
  13970.                 add     a, (hl)
  13971.                 ld      (hl), a
  13972.                 dec     l
  13973.                 jp      loc_C63F
  13974.  
  13975. ; ---------------------------------------------------------------------------
  13976.  
  13977. loc_C665:                               ; CODE XREF: sub_C5FF+2A
  13978.                 inc     l
  13979.                 jp      loc_C658
  13980.  
  13981. ; ---------------------------------------------------------------------------
  13982.  
  13983. loc_C669:                               ; CODE XREF: sub_C5FF+18 sub_C5FF+1A
  13984.                 exx
  13985.  
  13986.  
  13987. loc_C66A:                               ; CODE XREF: sub_C5FF+71
  13988.                 ld      a, l
  13989.                 add     a, c
  13990.                 ld      l, a
  13991.                 and     d
  13992.                 ret     nz
  13993.                 or      (hl)
  13994.                 jr      z, loc_C66A
  13995.  
  13996.                 exx
  13997.                 ld      d, l
  13998.                 ld      l, a
  13999.                 xor     b
  14000.                 jp      m, loc_C631
  14001.  
  14002.                 exx
  14003.                 ret
  14004.  
  14005. ; ---------------------------------------------------------------------------
  14006.  
  14007. loc_C67B:                               ; CODE XREF: sub_C5FF+39
  14008.                 bit     6, c
  14009.                 jr      nz, loc_C6A8
  14010.  
  14011.  
  14012. loc_C67F:                               ; CODE XREF: sub_C5FF+36
  14013.                 res     1, d
  14014.                 res     2, d
  14015.                 ld      hl, byte_D079
  14016.  
  14017.  
  14018. loc_C686:                               ; CODE XREF: sub_C5FF+8E
  14019.                 ld      a, (hl)
  14020.                 or      a
  14021.                 jr      z, loc_C697
  14022.  
  14023.                 inc     l
  14024.                 inc     l
  14025.                 cp      d
  14026.                 jp      nz, loc_C686
  14027.  
  14028.                 dec     l
  14029.                 ld      (hl), 0
  14030.                 inc     h
  14031.                 exx
  14032.                 inc     e
  14033.                 ret
  14034.  
  14035. ; ---------------------------------------------------------------------------
  14036.  
  14037. loc_C697:                               ; CODE XREF: sub_C5FF+89
  14038.                 ld      a, l
  14039.                 cp      #84 ; '"'
  14040.                 jr      nc, loc_C6A7
  14041.  
  14042.                 ld      (hl), d
  14043.                 inc     l
  14044.                 exx
  14045.                 ld      a, c
  14046.                 exx
  14047.                 ld      (hl), a
  14048.                 inc     l
  14049.                 ld      (hl), 0
  14050.                 set     5, b
  14051.  
  14052.  
  14053. loc_C6A7:                               ; CODE XREF: sub_C5FF+9B
  14054.                 inc     h
  14055.  
  14056.  
  14057. loc_C6A8:                               ; CODE XREF: sub_C5FF+7E
  14058.                 exx
  14059.                 inc     e
  14060.                 inc     e
  14061.                 ret
  14062.  
  14063. ; ---------------------------------------------------------------------------
  14064.  
  14065. loc_C6AC:                               ; CODE XREF: sub_C5FF+46
  14066.                 rla
  14067.                 xor     c
  14068.                 ret     p
  14069.                 ld      a, l
  14070.                 add     a, c
  14071.                 ld      l, a
  14072.                 and     d
  14073.                 ret     nz
  14074.                 or      (hl)
  14075.                 ret     z
  14076.                 exx
  14077.                 ld      l, a
  14078.                 inc     l
  14079.                 xor     b
  14080.                 jp      p, loc_C6BF
  14081.  
  14082.                 dec     l
  14083.                 dec     l
  14084.  
  14085.  
  14086. loc_C6BF:                               ; CODE XREF: sub_C5FF+BB
  14087.                 ld      a, c
  14088.                 add     a, (hl)
  14089.                 ld      (hl), a
  14090.                 exx
  14091.                 ret
  14092.  
  14093. ; End of function sub_C5FF
  14094.  
  14095.  
  14096. ; =============== S U B R O U T I N E =======================================
  14097.  
  14098.  
  14099. sub_C6C4:                               ; CODE XREF: sub_BC00+D5
  14100.  
  14101. ; FUNCTION CHUNK AT C719 SIZE 0000000E BYTES
  14102. ; FUNCTION CHUNK AT C734 SIZE 00000010 BYTES
  14103.  
  14104.                 ld      iy, byte_D079
  14105.                 push    de
  14106.                 ld      h, BRD_88_0/256
  14107.                 exx
  14108.                 ld      l, (iy+0)
  14109.  
  14110.  
  14111. loc_C6CF:                               ; CODE XREF: RAM:C777
  14112.                 ld      bc, loc_C76B
  14113.                 push    bc
  14114.                 ld      a, l
  14115.                 and     #80 ; '?'
  14116.                 ld      b, a
  14117.                 ld      e, (hl)
  14118.                 inc     l
  14119.                 ld      a, (hl)
  14120.                 and     #8E ; '?'
  14121.                 jr      z, loc_C6EF
  14122.  
  14123.                 jp      m, loc_C734
  14124.  
  14125.                 cp      4
  14126.                 jr      c, loc_C719
  14127.  
  14128.                 jr      z, loc_C725
  14129.  
  14130.                 ld      c, #C0  ; 'А'
  14131.                 call    sub_C727
  14132.  
  14133.                 jp      loc_C73D
  14134.  
  14135. ; ---------------------------------------------------------------------------
  14136.  
  14137. loc_C6EF:                               ; CODE XREF: sub_C6C4+18 sub_C6C4+72
  14138.                 bit     7, b
  14139.                 ld      a, e
  14140.                 exx
  14141.                 ld      b, a
  14142.                 ld      c, #F
  14143.                 jr      z, loc_C6FA
  14144.  
  14145.                 ld      c, #EF  ; 'п'
  14146.  
  14147.  
  14148. loc_C6FA:                               ; CODE XREF: sub_C6C4+32
  14149.                 call    sub_C6FF
  14150.  
  14151.                 inc     c
  14152.                 inc     c
  14153.  
  14154. ; End of function sub_C6C4
  14155.  
  14156.  
  14157. ; =============== S U B R O U T I N E =======================================
  14158.  
  14159.  
  14160. sub_C6FF:                               ; CODE XREF: sub_C6C4:loc_C6FA
  14161.                 ld      a, (iy+1)
  14162.                 cp      c
  14163.                 ret     z
  14164.                 neg
  14165.                 cp      c
  14166.                 ret     z
  14167.                 ld      a, c
  14168.                 add     a, b
  14169.                 ld      l, a
  14170.                 xor     a
  14171.                 or      (hl)
  14172.                 ret     z
  14173.                 exx
  14174.                 ld      l, a
  14175.                 xor     b
  14176.                 jp      p, loc_C716
  14177.  
  14178.                 dec     l
  14179.                 dec     l
  14180.  
  14181.  
  14182. loc_C716:                               ; CODE XREF: sub_C6FF+12
  14183.                 dec     (hl)
  14184.                 exx
  14185.                 ret
  14186.  
  14187. ; End of function sub_C6FF
  14188.  
  14189. ; ---------------------------------------------------------------------------
  14190. ; START OF FUNCTION CHUNK FOR sub_C6C4
  14191.  
  14192. loc_C719:                               ; CODE XREF: sub_C6C4+1F
  14193.                 ld      c, #FC
  14194.                 set     4, b
  14195.                 ld      a, e
  14196.                 exx
  14197.                 ld      d, #88
  14198.                 ld      b, a
  14199.                 jp      loc_C51F ;проверяем поля по ходу коня
  14200.  
  14201. ; ---------------------------------------------------------------------------
  14202.  
  14203. loc_C725:                               ; CODE XREF: sub_C6C4+21
  14204.                 ld      c, #F0
  14205.  
  14206. ; END OF FUNCTION CHUNK FOR sub_C6C4
  14207.  
  14208. ; =============== S U B R O U T I N E =======================================
  14209.  
  14210.  
  14211. sub_C727:                               ; CODE XREF: sub_C6C4+25
  14212.                 ld      a, e
  14213.                 exx
  14214.                 ld      c, 1
  14215.                 ld      b, a
  14216.                 call    sub_C744
  14217.  
  14218.                 ld      c, #10
  14219.                 jp      sub_C744
  14220.  
  14221. ; End of function sub_C727
  14222.  
  14223. ; ---------------------------------------------------------------------------
  14224. ; START OF FUNCTION CHUNK FOR sub_C6C4
  14225.  
  14226. loc_C734:                               ; CODE XREF: sub_C6C4+1A
  14227.                 and     2
  14228.                 jr      z, loc_C6EF
  14229.  
  14230.                 ld      c, #FC  ; 'ь'
  14231.                 ld      a, e
  14232.                 exx
  14233.                 ld      b, a
  14234.  
  14235.  
  14236. loc_C73D:                               ; CODE XREF: sub_C6C4+28
  14237.                 ld      c, #F
  14238.                 call    sub_C744
  14239.  
  14240.                 ld      c, #11
  14241.  
  14242. ; END OF FUNCTION CHUNK FOR sub_C6C4
  14243.  
  14244. ; =============== S U B R O U T I N E =======================================
  14245.  
  14246.  
  14247. sub_C744:                               ; CODE XREF: sub_C727+5 sub_C727+A ...
  14248.                 ld      a, (iy+1)
  14249.                 cp      c
  14250.                 ret     z
  14251.                 neg
  14252.                 cp      c
  14253.                 ret     z
  14254.                 ld      d, #88 ; '?'
  14255.                 call    sub_C755
  14256.  
  14257.                 xor     a
  14258.                 sub     c
  14259.                 ld      c, a
  14260.  
  14261. ; End of function sub_C744
  14262.  
  14263.  
  14264. ; =============== S U B R O U T I N E =======================================
  14265.  
  14266.  
  14267. sub_C755:                               ; CODE XREF: sub_C744+B
  14268.                 ld      l, b
  14269.  
  14270.  
  14271. loc_C756:                               ; CODE XREF: sub_C755+7
  14272.                 ld      a, l
  14273.                 add     a, c
  14274.                 ld      l, a
  14275.                 and     d
  14276.                 ret     nz
  14277.                 or      (hl)
  14278.                 jr      z, loc_C756
  14279.  
  14280.                 exx
  14281.                 ld      l, a
  14282.                 xor     b
  14283.                 jp      p, loc_C766
  14284.  
  14285.                 dec     l
  14286.                 dec     l
  14287.  
  14288.  
  14289. loc_C766:                               ; CODE XREF: sub_C755+C
  14290.                 ld      a, c
  14291.                 add     a, (hl)
  14292.                 ld      (hl), a
  14293.                 exx
  14294.                 ret
  14295.  
  14296. ; End of function sub_C755
  14297.  
  14298. ; ---------------------------------------------------------------------------
  14299.  
  14300. loc_C76B:                               ; DATA XREF: sub_C6C4:loc_C6CF
  14301.                 ld      a, (iy+2)
  14302.                 or      a
  14303.                 jr      z, loc_C77A
  14304.  
  14305.                 inc     iy
  14306.                 inc     iy
  14307.                 exx
  14308.                 ld      l, a
  14309.                 jp      loc_C6CF
  14310.  
  14311. ; ---------------------------------------------------------------------------
  14312.  
  14313. loc_C77A:                               ; CODE XREF: RAM:C76F
  14314.                 pop     de
  14315.                 ld      (byte_D079), a
  14316.                 ret
  14317.  
  14318. ; ---------------------------------------------------------------------------
  14319.        if !FIX
  14320.                 db    0 ;unneeded???
  14321.        endif
  14322.  
  14323.  
  14324.                 ;might be at any address
  14325. Openings:      
  14326.                 db #26,#92,#69,#C4,#CA,#B0,#4C,#2E,#0D
  14327.                 db #0A,#16,#49,#E8,#91,#32,#30,#B6,#4B
  14328.                 db #05,#94,#90,#02,#84,#01,#3D,#17,#26
  14329.                 db #05,#88,#82,#81,#00,#40,#A0,#34,#21
  14330.                 db #08,#08,#C0,#C1,#C4,#00,#50,#9A,#18
  14331.                 db #15,#A2,#89,#E9,#92,#5A,#64,#CC,#99
  14332.                 db #08,#86,#02,#41,#50,#02,#2C,#0C,#4A
  14333.                 db #40,#13,#13,#00,#50,#68,#15,#00,#44
  14334.                 db #AB,#03,#C2,#E4,#90,#A1,#4C,#9A,#1C
  14335.                 db #04,#15,#D0,#00,#A4,#01,#44,#39,#4E
  14336.                 db #45,#14,#91,#40,#04,#50,#3C,#3A,#5A
  14337.                 db #50,#86,#51,#C5,#52,#E9,#28,#3E,#8B
  14338.                 db #2D,#03,#D3,#70,#90,#E2,#04,#BE,#93
  14339.                 db #A7,#A2,#A4,#E1,#B4,#A0,#58,#BA,#59
  14340.                 db #28,#26,#83,#09,#48,#E8,#71,#13,#59
  14341.                 db #45,#56,#91,#55,#B4,#55,#71,#37,#1F
  14342.                 db #49,#94,#4B,#41,#A5,#14,#50,#2E,#5F
  14343.                 db #49,#92,#D2,#E4,#C4,#E0,#3D,#2C,#55
  14344.                 db #31,#11,#01,#A8,#F0,#58,#51,#2A,#14
  14345.                 db #02,#02,#C1,#E5,#44,#21,#88,#22,#28
  14346.                 db #08,#1A,#D2,#61,#34,#79,#A0,#00,#06
  14347.                 db #4C,#1A,#53,#05,#C4,#00,#48,#00,#68
  14348.                 db #4B,#91,#53,#00,#04,#C0,#48,#B4,#56
  14349.                 db #0D,#82,#C1,#44,#64,#94,#15,#27,#19
  14350.                 db #11,#24,#2B,#81,#30,#A2,#2A,#B2,#1B
  14351.                 db #04,#A2,#EB,#01,#40,#92,#26,#AC,#94
  14352.                 db #8B,#A2,#C0,#C4,#92,#68,#20,#3A,#0A
  14353.                 db #0B,#A1,#CB,#84,#A0,#6A,#42,#1A,#0C
  14354.                 db #08,#A0,#20,#69,#52,#89,#00,#22,#15
  14355.                 db #07,#01,#D2,#A4,#C0,#80,#00,#1A,#11
  14356.                 db #43,#83,#4A,#20,#00,#70,#28,#0C,#94
  14357.                 db #27,#00,#02,#41,#24,#69,#48,#00,#07
  14358.                 db #05,#24,#40,#20,#D0,#58,#59,#29,#55
  14359.                 db #0C,#12,#D0,#C4,#44,#E1,#04,#20,#07
  14360.                 db #40,#13,#41,#E0,#E4,#A0,#48,#0A,#19
  14361.                 db #0B,#25,#A8,#09,#8A,#08,#54,#28,#00
  14362.                 db #09,#06,#52,#54,#70,#90,#24,#2E,#06
  14363.                 db #47,#C2,#C1,#84,#84,#88,#31,#30,#4E
  14364.                 db #0B,#04,#C2,#E5,#00,#A5,#24,#3A,#14
  14365.                 db #02,#05,#44,#C1,#20,#D8,#38,#32,#05
  14366.                 db #52,#85,#89,#E9,#33,#32,#4E,#50,#8C
  14367.                 db #27,#06,#83,#40,#E2,#D2,#34,#1C,#89
  14368.                 db #09,#15,#00,#28,#F2,#7A,#3A,#44,#10
  14369.                 db #0A,#22,#A0,#E1,#30,#2A,#60,#94,#04
  14370.                 db #2E,#05,#81,#60,#40,#B2,#5C,#36,#12
  14371.                 db #09,#86,#81,#01,#50,#F2,#5C,#A6,#45
  14372.                 db #0C,#01,#82,#E1,#14,#F8,#34,#30,#06
  14373.                 db #0B,#88,#83,#29,#82,#C8,#38,#1E,#95
  14374.                 db #8B,#02,#C3,#A0,#B0,#D0,#10,#42,#91
  14375.                 db #26,#D3,#89,#64,#62,#9D,#18,#A6,#40
  14376.                 db #22,#80,#C2,#E0,#62,#C0,#4C,#00,#59
  14377.                 db #26,#22,#0A,#A9,#82,#42,#5E,#20,#98
  14378.                 db #0B,#02,#8B,#C9,#01,#02,#26,#8C,#13
  14379.                 db #4E,#40,#0A,#C9,#82,#90,#14,#AE,#8D
  14380.                 db #86,#A3,#C2,#61,#70,#A9,#5D,#22,#1F
  14381.                 db #0A,#A7,#0A,#41,#42,#E8,#2C,#3E,#1A
  14382.                 db #06,#90,#52,#61,#A4,#99,#81,#0D,#08
  14383.                 db #40,#86,#08,#C9,#48,#8A,#1C,#90,#13
  14384.                 db #09,#A4,#4A,#C5,#A0,#00,#14,#3A,#12
  14385.                 db #2A,#A4,#40,#C9,#88,#90,#11,#45,#49
  14386.                 db #02,#92,#52,#80,#00,#B8,#15,#31,#03
  14387.                 db #0B,#82,#D1,#05,#82,#99,#24,#2E,#97
  14388.                 db #8E,#86,#11,#85,#60,#D0,#39,#24,#48
  14389.                 db #09,#85,#12,#E5,#40,#60,#69,#19,#00
  14390.                 db #06,#05,#92,#44,#92,#00,#64,#22,#8E
  14391.                 db #09,#87,#41,#08,#2A,#D8,#58,#36,#21
  14392.                 db #45,#45,#C0,#C0,#D0,#BA,#64,#18,#53
  14393.                 db #20,#11,#C2,#49,#E2,#F8,#49,#1B,#11
  14394.                 db #0A,#0A,#42,#60,#34,#39,#4D,#28,#54
  14395.                 db #0E,#81,#D1,#20,#60,#F8,#59,#35,#10
  14396.                 db #0A,#05,#10,#E5,#60,#D8,#20,#AC,#1B
  14397.                 db #0F,#25,#A4,#69,#B2,#68,#48,#2A,#00
  14398.                 db #08,#82,#01,#E4,#14,#B0,#19,#2C,#48
  14399.                 db #2C,#05,#80,#00,#00,#CA,#22,#26,#13
  14400.                 db #05,#21,#2A,#20,#00,#80,#60,#0E,#01
  14401.                 db #4C,#46,#43,#41,#91,#00,#48,#00,#97
  14402.                 db #22,#92,#0B,#44,#20,#E8,#34,#00,#95
  14403.                 db #2B,#07,#43,#C2,#74,#3C,#70,#3A,#1F
  14404.                 db #13,#A3,#8B,#61,#60,#A0,#78,#18,#A5
  14405.                 db #A0,#05,#83,#20,#90,#D2,#26,#32,#07
  14406.                 db #0D,#02,#43,#A9,#40,#89,#50,#B0,#1E
  14407.                 db #09,#03,#43,#A2,#01,#09,#31,#4C,#44
  14408.                 db #45,#C2,#54,#D0,#60,#88,#08,#14,#8A
  14409.                 db #2E,#06,#48,#05,#00,#32,#78,#0C,#22
  14410.                 db #4E,#19,#83,#01,#34,#BD,#7C,#30,#24
  14411.                 db #41,#47,#82,#24,#74,#08,#65,#01,#0F
  14412.                 db #43,#15,#83,#25,#72,#10,#69,#2A,#52
  14413.                 db #0A,#01,#C3,#E9,#52,#40,#28,#06,#22
  14414.                 db #50,#01,#02,#E0,#A4,#79,#38,#10,#1F
  14415.                 db #09,#88,#13,#11,#E2,#C8,#60,#30,#14
  14416.                 db #44,#96,#04,#40,#81,#02,#74,#34,#0F
  14417.                 db #4C,#12,#02,#25,#84,#38,#1D,#16,#13
  14418.                 db #2C,#00,#C3,#21,#94,#68,#44,#2E,#19
  14419.                 db #11,#03,#83,#E9,#D2,#69,#58,#AE,#20
  14420.                 db #06,#01,#43,#82,#90,#D1,#79,#20,#63
  14421.                 db #48,#46,#D1,#F0,#C0,#60,#70,#34,#0F
  14422.                 db #40,#13,#8A,#A1,#00,#81,#58,#3C,#0C
  14423.                 db #47,#00,#40,#41,#64,#C4,#30,#02,#01
  14424.                 db #05,#05,#05,#49,#A8,#28,#30,#1E,#13
  14425.                 db #0D,#25,#8A,#A1,#62,#68,#35,#24,#51
  14426.                 db #08,#82,#C1,#C0,#40,#02,#02,#38,#0D
  14427.                 db #0C,#87,#CB,#40,#74,#00,#6C,#0E,#A1
  14428.                 db #AC,#03,#80,#61,#C0,#F8,#58,#3A,#8E
  14429.                 db #8B,#05,#C3,#E0,#12,#10,#34,#18,#11
  14430.                 db #50,#88,#82,#C1,#50,#DA,#78,#94,#4D
  14431.                 db #0D,#05,#83,#61,#42,#A0,#38,#32,#80
  14432.                 db #A1,#85,#42,#A9,#A8,#C8,#58,#28,#9C
  14433.                 db #05,#92,#02,#21,#C0,#38,#30,#3C,#11
  14434.                 db #45,#46,#81,#01,#A0,#F0,#68,#10,#13
  14435.                 db #4C,#11,#C1,#A1,#A0,#B8,#74,#AC,#24
  14436.                 db #07,#88,#10,#90,#C0,#38,#4C,#36,#83
  14437.                 db #2B,#05,#C9,#00,#B0,#21,#48,#A6,#98
  14438.                 db #2D,#01,#C2,#28,#09,#28,#48,#26,#9D
  14439.                 db #C4,#C7,#50,#31,#80,#38,#3C,#22,#54
  14440.                 db #4F,#06,#03,#C1,#74,#41,#30,#AC,#16
  14441.                 db #29,#16,#43,#21,#B2,#48,#50,#2C,#92
  14442.                 db #09,#07,#40,#89,#72,#90,#64,#24,#07
  14443.                 db #0B,#07,#51,#85,#02,#88,#58,#2E,#16
  14444.                 db #05,#21,#C2,#C1,#D0,#D8,#20,#2A,#A8
  14445.                 db #0D,#03,#82,#81,#80,#CA,#28,#A6,#4C
  14446.                 db #2F,#87,#03,#84,#E0,#C1,#41,#2E,#03
  14447.                 db #0B,#A4,#09,#E2,#02,#C0,#11,#24,#19
  14448.                 db #0D,#A5,#83,#41,#F4,#B9,#3C,#38,#1F
  14449.                 db #06,#02,#52,#A5,#B0,#58,#60,#2C,#04
  14450.                 db #48,#52,#43,#A0,#30,#50,#01,#53,#5E
  14451.                 db #0F,#00,#D0,#74,#40,#A8,#3C,#0E,#04
  14452.                 db #44,#C6,#03,#A1,#20,#88,#35,#24,#52
  14453.                 db #26,#11,#C4,#A1,#32,#92,#0E,#56,#92
  14454.                 db #25,#09,#04,#00,#E4,#60,#68,#34,#09
  14455.                 db #08,#A3,#A4,#01,#21,#08,#58,#3C,#8D
  14456.                 db #8D,#05,#42,#81,#80,#CA,#28,#BE,#19
  14457.                 db #2E,#04,#03,#20,#32,#72,#5A,#1E,#9B
  14458.                 db #2B,#86,#00,#A1,#30,#4A,#84,#88,#10
  14459.                 db #10,#05,#44,#88,#F0,#F0,#44,#32,#0F
  14460.                 db #07,#29,#A3,#C1,#B0,#70,#50,#B2,#8F
  14461.                 db #0D,#A3,#22,#A1,#60,#68,#48,#32,#1A
  14462.                 db #0B,#A7,#C9,#05,#60,#61,#4C,#28,#15
  14463.                 db #25,#05,#02,#26,#44,#D8,#41,#2E,#4D
  14464.                 db #2E,#02,#42,#49,#30,#80,#24,#36,#93
  14465.                 db #07,#96,#0A,#A1,#04,#80,#60,#26,#8C
  14466.                 db #0A,#03,#93,#25,#E0,#A1,#74,#1C,#13
  14467.                 db #47,#03,#91,#A5,#F0,#41,#38,#10,#88
  14468.                 db #0A,#86,#51,#B1,#24,#A1,#28,#18,#12
  14469.                 db #04,#A7,#2A,#80,#C0,#B8,#50,#26,#91
  14470.                 db #87,#23,#08,#45,#70,#19,#58,#1E,#57
  14471.                 db #03,#02,#C1,#A0,#04,#F4,#3C,#20,#0E
  14472.                 db #4A,#15,#01,#05,#50,#51,#84,#26,#1D
  14473.                 db #4A,#87,#82,#A8,#C0,#98,#0C,#1A,#0F
  14474.                 db #09,#24,#41,#40,#52,#9A,#2C,#20,#8B
  14475.                 db #85,#03,#C3,#48,#F2,#58,#5C,#98,#56
  14476.                 db #06,#87,#4A,#2A,#20,#80,#5C,#12,#8E
  14477.                 db #04,#01,#40,#E0,#70,#C0,#21,#14,#83
  14478.                 db #20,#85,#89,#A1,#30,#A2,#80,#1E,#1E
  14479.                 db #06,#03,#83,#49,#9A,#80,#58,#00,#13
  14480.                 db #08,#18,#82,#E9,#D2,#D0,#19,#18,#10
  14481.                 db #08,#20,#E1,#41,#60,#50,#4C,#34,#5A
  14482.                 db #04,#23,#09,#40,#81,#20,#01,#0C,#62
  14483.                 db #04,#06,#08,#09,#E0,#DA,#78,#98,#08
  14484.                 db #44,#04,#01,#01,#F0,#00,#11,#0E,#4B
  14485.                 db #25,#D4,#8A,#25,#40,#A0,#3C,#1C,#0D
  14486.                 db #07,#02,#93,#64,#C0,#68,#48,#30,#5D
  14487.                 db #0C,#88,#52,#41,#80,#58,#71,#42,#0F
  14488.                 db #06,#83,#4B,#21,#D4,#78,#60,#30,#0B
  14489.                 db #0E,#28,#49,#44,#C2,#70,#28,#20,#1D
  14490.                 db #48,#05,#02,#E0,#A0,#18,#44,#32,#91
  14491.                 db #27,#81,#C8,#60,#70,#D0,#4C,#2C,#8F
  14492.                 db #2C,#02,#02,#60,#D0,#6A,#58,#34,#9A
  14493.                 db #CA,#14,#E9,#E4,#D0,#C8,#6C,#18,#1C
  14494.                 db #00,#25,#C9,#E1,#A0,#48,#40,#2E,#00
  14495.                 db #4A,#C4,#82,#A1,#50,#D0,#08,#2C,#97
  14496.                 db #26,#05,#83,#01,#90,#A2,#4A,#AC,#17
  14497.                 db #0C,#08,#52,#31,#50,#B8,#38,#40,#21
  14498.                 db #49,#05,#29,#85,#20,#51,#1C,#3C,#00
  14499.                 db #0E,#A2,#81,#81,#E0,#A8,#89,#36,#19
  14500.                 db #0B,#86,#C2,#41,#40,#F0,#69,#1A,#14
  14501.                 db #0D,#83,#02,#C8,#92,#60,#2C,#2E,#17
  14502.                 db #04,#06,#43,#C0,#E4,#B0,#24,#16,#07
  14503.                 db #24,#95,#02,#60,#C0,#90,#65,#38,#44
  14504.                 db #07,#8A,#02,#00,#E4,#98,#6C,#1C,#1A
  14505.                 db #09,#08,#D2,#84,#60,#62,#5C,#AA,#0C
  14506.                 db #49,#96,#91,#81,#60,#62,#60,#84,#52
  14507.                 db #28,#53,#08,#C5,#82,#B1,#39,#0C,#15
  14508.                 db #23,#A3,#C0,#C9,#12,#00,#38,#30,#1D
  14509.                 db #0D,#00,#0B,#48,#D0,#78,#71,#18,#59
  14510.                 db #2A,#86,#42,#28,#E0,#70,#34,#3A,#8B
  14511.                 db #27,#05,#43,#A1,#14,#80,#6D,#30,#53
  14512.                 db #03,#84,#08,#01,#54,#91,#48,#2A,#96
  14513.                 db #07,#85,#51,#24,#A0,#F0,#38,#36,#98
  14514.                 db #20,#86,#43,#A8,#02,#92,#64,#84,#19
  14515.                 db #0B,#A3,#83,#41,#B0,#9A,#3E,#28,#18
  14516.                 db #0A,#14,#41,#48,#70,#C8,#50,#30,#1C
  14517.                 db #2E,#A3,#8C,#88,#E0,#9A,#38,#1F,#51
  14518.                 db #24,#80,#C3,#E8,#A0,#E0,#0C,#18,#0A
  14519.                 db #00,#20,#00,#C0,#70,#18,#64,#00,#0C
  14520.                 db #44,#94,#89,#84,#12,#D0,#4C,#B4,#00
  14521.                 db #07,#87,#28,#04,#E0,#F0,#40,#A6,#9A
  14522.                 db #2E,#24,#02,#89,#30,#60,#79,#10,#61
  14523.                 db #4B,#48,#13,#65,#10,#00,#2C,#B2,#22
  14524.                 db #4E,#87,#41,#89,#D3,#10,#00,#16,#5C
  14525.                 db #2D,#26,#44,#49,#92,#68,#69,#2E,#18
  14526.                 db #4A,#08,#C0,#01,#80,#C9,#35,#36,#1E
  14527.                 db #4D,#C4,#82,#61,#F0,#00,#35,#16,#11
  14528.                 db #2B,#83,#C3,#01,#00,#D8,#2C,#2A,#00
  14529.                 db #0E,#96,#50,#05,#34,#00,#09,#00,#52
  14530.                 db #04,#90,#83,#80,#54,#01,#75,#00,#0A
  14531.                 db #40,#12,#41,#22,#04,#00,#28,#1E,#0E
  14532.                 db #07,#04,#91,#34,#F4,#0C,#69,#02,#4D
  14533.                 db #0A,#94,#01,#A1,#40,#C8,#50,#B0,#1C
  14534.                 db #2E,#A3,#8C,#88,#E0,#9A,#38,#36,#1C
  14535.                 db #06,#A3,#81,#C1,#20,#78,#38,#1E,#18
  14536.                 db #43,#C4,#42,#A4,#D4,#98,#30,#26,#0C
  14537.                 db #48,#52,#41,#E0,#70,#49,#50,#26,#0C
  14538.                 db #09,#06,#53,#85,#B0,#70,#68,#24,#23
  14539.                 db #4A,#01,#01,#E2,#80,#80,#39,#27,#4C
  14540.                 db #28,#21,#89,#E8,#60,#6A,#66,#0C,#05
  14541.                 db #04,#06,#02,#61,#80,#88,#28,#24,#81
  14542.                 db #A4,#85,#09,#80,#A0,#C2,#54,#1C,#17
  14543.                 db #0A,#27,#A1,#E5,#20,#18,#68,#22,#0B
  14544.                 db #02,#05,#C0,#00,#04,#B0,#24,#06,#87
  14545.                 db #24,#93,#40,#64,#D2,#51,#24,#B0,#07
  14546.                 db #05,#07,#42,#00,#B0,#2A,#78,#2C,#07
  14547.                 db #00,#80,#02,#88,#48,#B8,#34,#22,#16
  14548.                 db #0C,#26,#82,#C5,#60,#88,#50,#08,#9B
  14549.                 db #23,#01,#00,#01,#20,#18,#01,#36,#13
  14550.                 db #46,#05,#49,#49,#C0,#B0,#45,#08,#49
  14551.                 db #23,#01,#40,#80,#50,#A0,#4C,#2C,#95
  14552.                 db #01,#81,#02,#A1,#50,#20,#10,#24,#12
  14553.                 db #02,#21,#00,#40,#30,#80,#4C,#A8,#19
  14554.                 db #07,#06,#42,#60,#B4,#70,#58,#38,#1B
  14555.                 db #0D,#05,#C2,#08,#32,#19,#2C,#1A,#54
  14556.                 db #08,#82,#C2,#A0,#E0,#60,#10,#16,#A3
  14557.                 db #28,#83,#41,#A0,#24,#4C,#4D,#0A,#42
  14558.                 db #09,#04,#80,#20,#10,#00,#00,#22,#12
  14559.                 db #04,#27,#21,#25,#24,#68,#29,#1B,#46
  14560.                 db #26,#80,#11,#60,#B0,#02,#2E,#1E,#0B
  14561.                 db #22,#02,#C2,#28,#70,#68,#2C,#1E,#87
  14562.                 db #22,#16,#0C,#26,#82,#C5,#60,#88,#50
  14563.                 db #08,#9B,#23,#01,#00,#01,#20,#18,#01
  14564.                 db #36,#13,#46,#05,#49,#49,#C0,#B0,#45
  14565.                 db #08,#49,#23,#01,#40,#80,#50,#A0,#4C
  14566.                 db #2C,#95,#01,#81,#02,#A1,#50,#20,#10
  14567.                 db #24,#12,#02,#21,#00,#40,#30
  14568.  
  14569.                 ;^^^ that table ends exactly at #CFFF !!!!
  14570. end
  14571.  
  14572.  
  14573.                 ; below is only data memory (tables and variables), zeroed at start
  14574.  
  14575.                 ds 0xD000-$
  14576.  
  14577. BRD_88_0:       ds 8            ; DATA XREF: START_POINT+6B
  14578.                                         ; sub_8C20-71D ...
  14579.                 db    0
  14580. byte_D009:      db 0                    ; DATA XREF: sub_B75A:loc_B781
  14581.                                         ; RAM:B7AA ...
  14582. byte_D00A:      db 0                    ; DATA XREF: sub_8C20:loc_8142
  14583.                                         ; sub_8C20:loc_8253 ...
  14584. byte_D00B:      db 0                    ; DATA XREF: sub_AFC5+A6 sub_AFC5+E6 ...
  14585.                 db    0
  14586. word_D00D:      dw 0                    ; DATA XREF: sub_8C20-574 sub_AD40+2 ...
  14587.                 db    0
  14588. BRD_88_1:       ds 8
  14589.                 db    0
  14590. byte_D019:      db 0                    ; DATA XREF: sub_AFC5+B2
  14591.                                         ; sub_B47F+188 ...
  14592. byte_D01A:      db 0                    ; DATA XREF: sub_B47F+293
  14593.                                         ; sub_B75A+1B   ...
  14594. byte_D01B:      db 0                    ; DATA XREF: RAM:B7B7   sub_B943+20
  14595. byte_D01C:      db 0                    ; DATA XREF: sub_AFC5+A9
  14596.                                         ; sub_B47F+1E2 ...
  14597. byte_D01D:      db 0                    ; DATA XREF: sub_AB53+1 sub_B47F-2D     ...
  14598. byte_D01E:      db 0                    ; DATA XREF: sub_B19C+33
  14599.                                         ; sub_B47F+118 ...
  14600.                 db    0
  14601. BRD_88_2:       ds 8
  14602.                 db    0
  14603. byte_D029:      db 0                    ; DATA XREF: sub_8C20-9C9
  14604.                                         ; sub_8C20-6C8
  14605. byte_D02A:      db 0                    ; DATA XREF: sub_AFC5+126
  14606.                                         ; sub_B1EB+11   ...
  14607. word_D02B:      dw 0                    ; DATA XREF: sub_8C20-AB0
  14608.                                         ; sub_8DE9+6E   ...
  14609. byte_D02D:      db 0                    ; DATA XREF: sub_8C20-AD6
  14610.                                         ; sub_8C20:loc_82D7 ...
  14611. byte_D02E:      db 0                    ; DATA XREF: sub_AFC5+3B sub_B19C+1D
  14612.                 db    0
  14613. BRD_88_3:       ds 8
  14614.                 db    0
  14615. word_D039:      dw 0                    ; DATA XREF: sub_BC00+E2
  14616.                                         ; sub_BC00+23A ...
  14617. byte_D03B:      db 0                    ; DATA XREF: sub_AD40+6 sub_AD40+57     ...
  14618. byte_D03C:      db 0                    ; DATA XREF: sub_AFC5+10F
  14619.                                         ; sub_AFC5+148 ...
  14620. word_D03D:      dw 0                    ; DATA XREF: sub_AD40+1A sub_AD40+AD ...
  14621.                 db    0
  14622. BRD_88_4:       ds 8
  14623.                 db    0
  14624. byte_D049:      db 0                    ; DATA XREF: sub_8C20-B62 ;move # (1..N)
  14625.                                         ; sub_8C20-B37 ...
  14626. word_D04A:      dw 0                    ; DATA XREF: sub_AB53+8 sub_AB53+CD     ...
  14627. byte_D04C:      db 0                    ; DATA XREF: sub_A932+10 sub_AFC5+2D ...
  14628. byte_D04D:      db 0                    ; DATA XREF: sub_8C20-B24
  14629.                                         ; sub_8C20-654 ...
  14630. byte_D04E:      db 0                    ; DATA XREF: sub_AB53+18 sub_AB53+29 ...
  14631.                 db    0
  14632. BRD_88_5:       ds 8
  14633.                 db    0
  14634. word_D059:      dw 0                    ; DATA XREF: sub_8C20-A8E
  14635.                                         ; sub_8C20-A35 ...
  14636. byte_D05B:      db 0                    ; DATA XREF: sub_8C20-6CB
  14637.                                         ; sub_8C20-1C8 ...
  14638. word_D05C:      dw 0                    ; DATA XREF: sub_8C20-8B2
  14639.                                         ; sub_8C20-6D4 ...
  14640. byte_D05E:      db 0                    ; DATA XREF: sub_8C20-6D1 sub_8B66+9
  14641.                 db    0
  14642. BRD_88_6:       ds 8
  14643.                 db    0
  14644. word_D069:      dw 0                    ; DATA XREF: sub_AB53+B sub_AB53+35     ...
  14645. JP_ADDR:        dw 0                    ; DATA XREF: RAM:AB4F   sub_B75A+2D ...
  14646. word_D06D:      dw 0                    ; DATA XREF: sub_B47F+134
  14647.                                         ; sub_B47F+16A ...
  14648.                 db    0
  14649. BRD_88_7:       ds 8
  14650.                 db    0
  14651. byte_D079:      db 0                    ; DATA XREF: sub_C254+21E
  14652.                                         ; sub_C5FF+84   ...
  14653. byte_D07A:      db 0                    ; DATA XREF: FindMoveAndSwap+13 sub_B47F+2      ...
  14654.                 db    0
  14655.                 db    0
  14656.                 db    0
  14657.                 db    0
  14658.                 db    0
  14659. unk_D080:       db    0                 ; DATA XREF: InitBoard_ClearMoves+18
  14660.                 db    0
  14661.                 db    0
  14662.                 db    0
  14663.                 db    0
  14664.                 db    0
  14665. word_D086:      dw 0                    ; DATA XREF: sub_AB53+45 sub_AB53+6A
  14666. word_D088:      dw 0                    ; DATA XREF: sub_8C20-1FB
  14667.                                         ; sub_8C20:loc_8A2F ...
  14668. byte_D08A:      db 0                    ; DATA XREF: sub_AFC5+A0
  14669.                                         ; sub_AFC5+1A2 ...
  14670. byte_D08B:      db 0                    ; DATA XREF: sub_AFC5+70 sub_AFC5+AD ...
  14671. byte_D08C:      db 0                    ; DATA XREF: sub_AFC5+A3
  14672.                                         ; sub_AFC5+1A5 ...
  14673. byte_D08D:      db 0                    ; DATA XREF: sub_8C20-657
  14674.                                         ; sub_8C20-634 ...
  14675. byte_D08E:      db 0                    ; DATA XREF: sub_8C20-661
  14676.                 db    0
  14677.                 db    0
  14678.                 db    0
  14679.                 db    0
  14680. RAND_SEED:      db 0                    ; DATA XREF: GEN_RANDBYTE+3
  14681.                                         ; GEN_RANDBYTE+8
  14682.                 db    0
  14683.                 db    0
  14684.                 db    0
  14685. byte_D097:      db 0                    ; DATA XREF: InitBoard_ClearMoves+49
  14686.                                         ; sub_A94F:loc_A961 ...
  14687. byte_D098:      db 0                    ; DATA XREF: sub_A6F7+34 sub_AFC5+5F ...
  14688. word_D099:      dw 0                    ; DATA XREF: InitBoard_ClearMoves+58
  14689.                 db    0
  14690.                 db    0
  14691.                 db    0
  14692. byte_D09E:      db 0                    ; DATA XREF: sub_8C20-A4E ;end of opening?
  14693.                                         ; sub_8C20-90D ...
  14694. word_D09F:      dw 0                    ; DATA XREF: sub_8C20-B58
  14695.                                         ; sub_8C20:loc_811C ...
  14696.                 db    0
  14697.                 db    0
  14698.                 db    0
  14699.                 db    0
  14700.                 db    0
  14701.                 db    0
  14702.                 db    0
  14703.                 db    0
  14704.                 db    0
  14705.                 db    0
  14706.                 db    0
  14707.                 db    0
  14708.                 db    0
  14709.                 db    0
  14710.                 db    0
  14711.                 db    0
  14712. curlevel:       db 0                    ; DATA XREF: START_POINT+8F
  14713.                                         ; sub_8C20:loc_8515 ...
  14714. byte_D0B2:      db 0                    ; DATA XREF: sub_8C20-ACD
  14715.                                         ; sub_8C20-5A5 ...
  14716. byte_D0B3:      db 0                    ; DATA XREF: sub_8C20-B66
  14717.                                         ; sub_8C20-8DF ...
  14718.                                         ; bit 3 -- swap clocks ;d3=swap board
  14719. byte_D0B4:      db 0                    ; DATA XREF: sub_92D7-123C ;d5=invisible board?
  14720.                                         ; sub_8C20-AEE ...
  14721.                 db    0
  14722. byte_D0B6:      db 0                    ; DATA XREF: sub_8C20:loc_81A1
  14723.                                         ; sub_8C20-A48 ...
  14724. byte_D0B7:      db 0                    ; DATA XREF: sub_8C20-68A
  14725.                                         ; PrintMoveNumber:loc_A0AF ...
  14726. keycodeformenu: db 0                    ; DATA XREF: sub_8C20-885
  14727.                                         ; sub_8C20-873 ...
  14728.                 db    0
  14729.                 db    0
  14730. needdrawcursorfrom: db 0                        ; DATA XREF: sub_8C20-895
  14731. needdrawcursor1: db 0
  14732.                                         ; sub_8C20-7C0 ...
  14733. keycode:        db 0                    ; DATA XREF: KEY_SCAN+9
  14734.                                         ; KEY_SCAN:loc_90D1 ...
  14735. SEL_SCRorBUF:   db 0                    ; DATA XREF: START_POINT+81
  14736.                                         ; sub_8D9E:loc_8DB0 ...
  14737. byte_D0BF:      db 0                    ; DATA XREF: sub_8C20-AD1
  14738.                                         ; sub_8C20-942 ...
  14739. byte_D0C0:      db 0                    ; DATA XREF: sub_96A6+14 sub_9FB2+D     ...
  14740.                 db    0
  14741. byte_D0C2:      db 0                    ; DATA XREF: sub_8C20-A0F
  14742.                                         ; sub_8C20-78E ...
  14743. byte_D0C3:      db 0                    ; DATA XREF: sub_8C20-A03
  14744.                                         ; sub_8C20-782 ...
  14745. byte_D0C4:      db 0                    ; DATA XREF: sub_8C20-A15
  14746.                                         ; sub_8C20-794 ...
  14747. byte_D0C5:      db 0                    ; DATA XREF: sub_8C20-A09
  14748.                                         ; sub_8C20-788 ...
  14749. word_D0C6:      dw 0                    ; DATA XREF: sub_8D9E+27 sub_8D9E+36 ...
  14750. word_D0C8:      dw 0                    ; DATA XREF: sub_8D9E+33 sub_8DE9+10
  14751. BRD_COLOR:      db 0                    ; DATA XREF: SET_BRD_COLOR:loc_9655
  14752.                                         ; BEEP_routine+15
  14753. byte_D0CB:      db 0                    ; DATA XREF: sub_8E81+1E
  14754.                                         ; sub_8EA7:loc_8EE5
  14755. byte_D0CC:      db 0                    ; DATA XREF: sub_8EA7:loc_8EA8
  14756.                                         ; sub_8EA7+26
  14757. byte_D0CD:      db 0                    ; DATA XREF: sub_8C20-892
  14758. scr_XY:         dw 0                    ; DATA XREF: sub_842C+8
  14759.                                         ; sub_8C20:loc_85B4 ...
  14760. scr_pix_addr:   dw 0                    ; DATA XREF: sub_8EFB+B sub_8EFB+25     ...
  14761. scr_attr_addr:  dw 0                    ; DATA XREF: sub_8EFB+14 sub_8EFB+2E ...
  14762. NEED_SCR2BUF:   db 0                    ; DATA XREF: PrintCurLevel+A
  14763.                                         ; PRINT_STR_FF:PRINT_STR_A ...
  14764. gamestatemsgaddr:       dw 0                    ; DATA XREF: FillAttrsAndBorder+4 PrintGameState ...
  14765. TMP_BOARD_PTR:  dw 0                    ; DATA XREF: sub_93A4:loc_93A7
  14766.                                         ; sub_93A4:loc_93FC ...
  14767. curkey_D0D9:    db 0                    ; DATA XREF: sub_8C20-697
  14768.                                         ; HotKeys:HotKeys_keepkey_pop_ret
  14769. word_D0DA:      dw 0                    ; DATA XREF: sub_8C20-8CF
  14770.                                         ; sub_9128+EE
  14771. byte_D0DC:      db 0                    ; DATA XREF: sub_8C20:loc_835C
  14772.                                         ; sub_8C20-76D ...
  14773. DECREMENT_50HZ: db 0                    ; DATA XREF: INT_PROC+4 sub_8D9E+46     ...
  14774.                 db    0
  14775. byte_D0DF:      db 0                    ; DATA XREF: sub_8C20-AA9
  14776.                                         ; sub_8C20:loc_81AA ...
  14777. CFG_BITS:       db 0                    ; DATA XREF: sub_8C20-B4F
  14778.                                         ; sub_8C20-AFC ...
  14779.                                         ; bit2=1 -- there is serial printer
  14780.                                         ; bit3=1 -- there is zx printer
  14781. byte_D0E1:      db 0                    ; DATA XREF: sub_A0F7+4 PRT_DETECT+1 ...
  14782. baudrate_NUM:   db 0                    ; DATA XREF: PRT_DETECT+16
  14783.                                         ; sub_8C20+1754 ...
  14784. byte_D0E3:      db 0                    ; DATA XREF: sub_8C20-ABC
  14785. INC_SECONDS:    dw 0                    ; DATA XREF: sub_8C20-AB3
  14786.                                         ; sub_8C20-910 ...
  14787. unk_D0E6:       db    0                 ; DATA XREF: sub_AB53+F
  14788.                                         ; sub_AB53:loc_ABEF
  14789.                 db    0
  14790.                 db    0
  14791.                 db    0
  14792.                 db    0
  14793.                 db    0
  14794.                 db    0
  14795.                 db    0
  14796.                 db    0
  14797. byte_D0EF:      db 0                    ; DATA XREF: sub_AB53+32 sub_AFC5+6D
  14798. byte_D0F0:      db 0                    ; DATA XREF: START_POINT+97
  14799. timenorm:       db 0                    ; DATA XREF: sub_8F4D+3C sub_AFC5+85 ... ;норма времени на ход? в начале партии #0C, после 1 хода за белых #10, потом с 9 хода за белых увеличивается на 1 с каждым ходом. Take Back не влияет, даже если уйти с линии
  14800. byte_D0F2:      db 0                    ; DATA XREF: sub_AFC5+88
  14801.                                         ; sub_AFC5+18F ...
  14802. byte_D0F3:      db 0                    ; DATA XREF: sub_8C20-AB9
  14803.                                         ; sub_8F4D+28   ...
  14804. timeformove:    db 0                    ; DATA XREF: sub_8C20-201
  14805.                                         ; sub_8C20-179 ...
  14806. ptr_stk_1bvalue:dw 0                    ; DATA XREF: sub_8C20-9D7
  14807.                                         ; sub_8C20-9D2 ...
  14808. word_D0F7:      dw 0                    ; DATA XREF: sub_8C20-B1F
  14809.                                         ; sub_8C20-9E4 ...
  14810.                 db    0
  14811.                 db    0
  14812.                 db    0
  14813.                 db    0
  14814.                 db    0
  14815.                 db    0
  14816. byte_D0FF:      db 0                    ; DATA XREF: InitBoard_ClearMoves+1
  14817. word_D100:      dw 0                    ; DATA XREF: sub_8C20-532
  14818.                                         ; InitBoard_ClearMoves+24       ...
  14819.                 db    0
  14820.                 db    0
  14821.                 db    0
  14822.                 db    0
  14823.                 db    0
  14824.                 db    0
  14825. byte_D108:      db 0                    ; DATA XREF: sub_AFC5+29
  14826.                                         ; sub_BC00:loc_C0AE ...
  14827. byte_D109:      db 0                    ; DATA XREF: sub_C1EF:loc_C1A4
  14828. word_D10A:      dw 0                    ; DATA XREF: sub_BC00+244
  14829.                                         ; sub_BC00+254 ...
  14830. word_D10C:      dw 0                    ; DATA XREF: sub_BC00+24B
  14831.                                         ; sub_BC00:loc_BE57
  14832.                 db    0
  14833.                 db    0
  14834. byte_D110:      db 0                    ; DATA XREF: sub_BC00+4B7
  14835.                 db    0
  14836. word_D112:      dw 0                    ; DATA XREF: sub_BC00+25A
  14837.                                         ; sub_BC00+26A
  14838. word_D114:      dw 0                    ; DATA XREF: sub_BC00+261
  14839.                                         ; sub_BC00:loc_BE6D
  14840.                 db    0
  14841.                 db    0
  14842. byte_D118:      db 0                    ; DATA XREF: sub_BC00+4BE
  14843.                 db    0
  14844. word_D11A:      dw 0                    ; DATA XREF: sub_BC00+270
  14845.                                         ; sub_BC00+280
  14846. word_D11C:      dw 0                    ; DATA XREF: sub_BC00+277
  14847.                                         ; sub_BC00:loc_BE83
  14848.                 db    0
  14849.                 db    0
  14850. byte_D120:      db 0                    ; DATA XREF: sub_BC00+4C5
  14851.                 db    0
  14852. word_D122:      dw 0                    ; DATA XREF: sub_BC00+286
  14853.                                         ; sub_BC00+296
  14854. word_D124:      dw 0                    ; DATA XREF: sub_BC00+28D
  14855.                                         ; sub_BC00:loc_BE99
  14856.                 db    0
  14857.                 db    0
  14858. byte_D128:      db 0                    ; DATA XREF: sub_BC00+4CC
  14859.                 db    0
  14860. word_D12A:      dw 0                    ; DATA XREF: sub_BC00+29C
  14861.                                         ; sub_BC00+2AC
  14862. word_D12C:      dw 0                    ; DATA XREF: sub_BC00+2A3
  14863.                                         ; sub_BC00:loc_BEAF
  14864.                 db    0
  14865.                 db    0
  14866. byte_D130:      db 0                    ; DATA XREF: sub_BC00+4D3
  14867.                 db    0
  14868. word_D132:      dw 0                    ; DATA XREF: sub_BC00+2B2
  14869.                                         ; sub_BC00+2C2
  14870. word_D134:      dw 0                    ; DATA XREF: sub_BC00+2B9
  14871.                                         ; sub_BC00:loc_BEC5
  14872.                 db    0
  14873.                 db    0
  14874. byte_D138:      db 0                    ; DATA XREF: sub_BC00+4DA
  14875.                 db    0
  14876. word_D13A:      dw 0                    ; DATA XREF: sub_BC00+2C8
  14877.                                         ; sub_BC00+2D8
  14878. word_D13C:      dw 0                    ; DATA XREF: sub_BC00+2CF
  14879.                                         ; sub_BC00:loc_BEDB
  14880.                 db    0
  14881.                 db    0
  14882. unk_D140:       db    0                 ; DATA XREF: sub_881D   sub_A94F+7E ...
  14883. byte_D141:      db 0                    ; DATA XREF: sub_BC00+2E9
  14884. word_D142:      dw 0                    ; DATA XREF: sub_BC00+2DE
  14885.                                         ; sub_BC00+2EF
  14886. word_D144:      dw 0                    ; DATA XREF: sub_BC00+2E5
  14887.                                         ; sub_BC00:loc_BEF2
  14888.                 db    0
  14889.                 db    0
  14890. unk_D148:       db    0                 ; DATA XREF: sub_BC00+4ED
  14891. byte_D149:      db 0                    ; DATA XREF: sub_BC00+300
  14892. word_D14A:      dw 0                    ; DATA XREF: sub_BC00+2F5
  14893.                                         ; sub_BC00+306
  14894. word_D14C:      dw 0                    ; DATA XREF: sub_BC00+2FC
  14895.                                         ; sub_BC00:loc_BF09
  14896.                 db    0
  14897.                 db    0
  14898. unk_D150:       db    0                 ; DATA XREF: sub_BC00+4F5
  14899. byte_D151:      db 0                    ; DATA XREF: sub_BC00+317
  14900. word_D152:      dw 0                    ; DATA XREF: sub_BC00+30C
  14901.                                         ; sub_BC00+31D
  14902. word_D154:      dw 0                    ; DATA XREF: sub_BC00+313
  14903.                                         ; sub_BC00:loc_BF20
  14904.                 db    0
  14905.                 db    0
  14906. unk_D158:       db    0                 ; DATA XREF: sub_BC00+4FD
  14907. byte_D159:      db 0                    ; DATA XREF: sub_BC00+32E
  14908. word_D15A:      dw 0                    ; DATA XREF: sub_BC00+323
  14909.                                         ; sub_BC00+334
  14910. word_D15C:      dw 0                    ; DATA XREF: sub_BC00+32A
  14911.                                         ; sub_BC00:loc_BF37
  14912.                 db    0
  14913.                 db    0
  14914. unk_D160:       db    0                 ; DATA XREF: sub_BC00+505
  14915. byte_D161:      db 0                    ; DATA XREF: sub_BC00+345
  14916. word_D162:      dw 0                    ; DATA XREF: sub_BC00+33A
  14917.                                         ; sub_BC00+34B
  14918. word_D164:      dw 0                    ; DATA XREF: sub_BC00+341
  14919.                                         ; sub_BC00:loc_BF4E
  14920.                 db    0
  14921.                 db    0
  14922. unk_D168:       db    0                 ; DATA XREF: sub_BC00+50D
  14923. byte_D169:      db 0                    ; DATA XREF: sub_BC00+35C
  14924. word_D16A:      dw 0                    ; DATA XREF: sub_BC00+351
  14925.                                         ; sub_BC00+362
  14926. word_D16C:      dw 0                    ; DATA XREF: sub_BC00+358
  14927.                                         ; sub_BC00:loc_BF65
  14928.                 db    0
  14929.                 db    0
  14930. unk_D170:       db    0                 ; DATA XREF: sub_BC00+515
  14931. byte_D171:      db 0                    ; DATA XREF: sub_BC00+373
  14932. word_D172:      dw 0                    ; DATA XREF: sub_BC00+368
  14933.                                         ; sub_BC00+379
  14934. word_D174:      dw 0                    ; DATA XREF: sub_BC00+36F
  14935.                                         ; sub_BC00:loc_BF7C
  14936.                 db    0
  14937.                 db    0
  14938. unk_D178:       db    0                 ; DATA XREF: sub_BC00+51D
  14939. byte_D179:      db 0                    ; DATA XREF: sub_BC00+38A
  14940. word_D17A:      dw 0                    ; DATA XREF: sub_BC00+37F
  14941.                                         ; sub_BC00+390
  14942. word_D17C:      dw 0                    ; DATA XREF: sub_BC00+386
  14943.                                         ; sub_BC00:loc_BF93
  14944.                 db    0
  14945.                 db    0
  14946. word_D180:      dw 0                    ; DATA XREF: sub_A94F+31
  14947.                                         ; sub_BC00+535
  14948.                 db    0
  14949.                 db    0
  14950.                 db    0
  14951.                 db    0
  14952.                 db    0
  14953.                 db    0
  14954. byte_D188:      db 0                    ; DATA XREF: sub_BC00+30 sub_C1EF-55
  14955. byte_D189:      db 0                    ; DATA XREF: sub_C1EF-5C
  14956. word_D18A:      dw 0                    ; DATA XREF: sub_BC00+E5 sub_BC00+F5
  14957. word_D18C:      dw 0                    ; DATA XREF: sub_BC00+EC
  14958.                                         ; sub_BC00:loc_BCF8
  14959.                 db    0
  14960.                 db    0
  14961. byte_D190:      db 0                    ; DATA XREF: sub_BC00+37
  14962.                 db    0
  14963. word_D192:      dw 0                    ; DATA XREF: sub_BC00+FB
  14964.                                         ; sub_BC00+10B
  14965. word_D194:      dw 0                    ; DATA XREF: sub_BC00+102
  14966.                                         ; sub_BC00:loc_BD0E
  14967.                 db    0
  14968.                 db    0
  14969. byte_D198:      db 0                    ; DATA XREF: sub_BC00+3E
  14970.                 db    0
  14971. word_D19A:      dw 0                    ; DATA XREF: sub_BC00+111
  14972.                                         ; sub_BC00+121
  14973. word_D19C:      dw 0                    ; DATA XREF: sub_BC00+118
  14974.                                         ; sub_BC00:loc_BD24
  14975.                 db    0
  14976.                 db    0
  14977. byte_D1A0:      db 0                    ; DATA XREF: sub_BC00+45
  14978.                 db    0
  14979. word_D1A2:      dw 0                    ; DATA XREF: sub_BC00+127
  14980.                                         ; sub_BC00+137
  14981. word_D1A4:      dw 0                    ; DATA XREF: sub_BC00+12E
  14982.                                         ; sub_BC00:loc_BD3A
  14983.                 db    0
  14984.                 db    0
  14985. byte_D1A8:      db 0                    ; DATA XREF: sub_BC00+4C
  14986.                 db    0
  14987. word_D1AA:      dw 0                    ; DATA XREF: sub_BC00+13D
  14988.                                         ; sub_BC00+14D
  14989. word_D1AC:      dw 0                    ; DATA XREF: sub_BC00+144
  14990.                                         ; sub_BC00:loc_BD50
  14991.                 db    0
  14992.                 db    0
  14993. byte_D1B0:      db 0                    ; DATA XREF: sub_BC00+53
  14994.                 db    0
  14995. word_D1B2:      dw 0                    ; DATA XREF: sub_BC00+153
  14996.                                         ; sub_BC00+163
  14997. word_D1B4:      dw 0                    ; DATA XREF: sub_BC00+15A
  14998.                                         ; sub_BC00:loc_BD66
  14999.                 db    0
  15000.                 db    0
  15001. byte_D1B8:      db 0                    ; DATA XREF: sub_BC00+5A
  15002.                 db    0
  15003. word_D1BA:      dw 0                    ; DATA XREF: sub_BC00+169
  15004.                                         ; sub_BC00+179
  15005. word_D1BC:      dw 0                    ; DATA XREF: sub_BC00+170
  15006.                                         ; sub_BC00:loc_BD7C
  15007.                 db    0
  15008.                 db    0
  15009. ;block 0
  15010. word_D1C0:      dw 0                    ; DATA XREF: sub_BC00+65
  15011.                                         ; sub_BC00+18A
  15012. word_D1C2:      dw 0                    ; DATA XREF: sub_BC00+17F
  15013.                                         ; sub_BC00+190
  15014. word_D1C4:      dw 0                    ; DATA XREF: sub_BC00+186
  15015.                                         ; sub_BC00:loc_BD93
  15016.                 db    0
  15017.                 db    0
  15018. ;block 1
  15019. word_D1C8:      dw 0                    ; DATA XREF: sub_BC00+6D
  15020.                                         ; sub_BC00+1A1
  15021. word_D1CA:      dw 0                    ; DATA XREF: sub_BC00+196
  15022.                                         ; sub_BC00+1A7
  15023. word_D1CC:      dw 0                    ; DATA XREF: sub_BC00+19D
  15024.                                         ; sub_BC00:loc_BDAA
  15025.                 db    0
  15026.                 db    0
  15027. ;block 2
  15028. word_D1D0:      dw 0                    ; DATA XREF: sub_BC00+75
  15029.                                         ; sub_BC00+1B8
  15030. word_D1D2:      dw 0                    ; DATA XREF: sub_BC00+1AD
  15031.                                         ; sub_BC00+1BE
  15032. word_D1D4:      dw 0                    ; DATA XREF: sub_BC00+1B4
  15033.                                         ; sub_BC00:loc_BDC1
  15034.                 db    0
  15035.                 db    0
  15036. ;block 3
  15037. word_D1D8:      dw 0                    ; DATA XREF: sub_BC00+7D
  15038.                                         ; sub_BC00+1CF
  15039. word_D1DA:      dw 0                    ; DATA XREF: sub_BC00+1C4
  15040.                                         ; sub_BC00+1D5
  15041. word_D1DC:      dw 0                    ; DATA XREF: sub_BC00+1CB
  15042.                                         ; sub_BC00:loc_BDD8
  15043.                 db    0
  15044.                 db    0
  15045. ;block 4
  15046. word_D1E0:      dw 0                    ; DATA XREF: sub_BC00+85
  15047.                                         ; sub_BC00+1E6
  15048. word_D1E2:      dw 0                    ; DATA XREF: sub_BC00+1DB
  15049.                                         ; sub_BC00+1EC
  15050. word_D1E4:      dw 0                    ; DATA XREF: sub_BC00+1E2
  15051.                                         ; sub_BC00:loc_BDEF
  15052.                 db    0
  15053.                 db    0
  15054. ;block 5
  15055. word_D1E8:      dw 0                    ; DATA XREF: sub_BC00+8D
  15056.                                         ; sub_BC00+1FD
  15057. word_D1EA:      dw 0                    ; DATA XREF: sub_BC00+1F2
  15058.                                         ; sub_BC00+203
  15059. word_D1EC:      dw 0                    ; DATA XREF: sub_BC00+1F9
  15060.                                         ; sub_BC00:loc_BE06
  15061.                 db    0
  15062.                 db    0
  15063. ;block 6
  15064. word_D1F0:      dw 0                    ; DATA XREF: sub_BC00+95
  15065.                                         ; sub_BC00+214
  15066. word_D1F2:      dw 0                    ; DATA XREF: sub_BC00+209
  15067.                                         ; sub_BC00+21A
  15068. word_D1F4:      dw 0                    ; DATA XREF: sub_BC00+210
  15069.                                         ; sub_BC00:loc_BE1D
  15070.                 db    0
  15071.                 db    0
  15072. ;block 7
  15073. word_D1F8:      dw 0                    ; DATA XREF: sub_BC00+9D
  15074.                                         ; sub_BC00+22B
  15075. word_D1FA:      dw 0                    ; DATA XREF: sub_BC00+220
  15076.                                         ; sub_BC00+231
  15077. word_D1FC:      dw 0                    ; DATA XREF: sub_BC00+227
  15078.                                         ; sub_BC00:loc_BE34
  15079.                 db    0
  15080.                 db    0
  15081.  
  15082. array_D200:     db    0,   0,   0,   0,   0,   0,   0,   0 ; DATA XREF: InitBoard_ClearMoves+4
  15083.                                         ; InitBoard_ClearMoves+11       ...
  15084.                 ds 1                    ; still
  15085.                 ds 1                    ; array
  15086.                 ds 1                    ; D200
  15087. unk_D20B:       ds 1                    ; DATA XREF: sub_B34B+6
  15088.                                         ; FindMoveAndSwap:loc_B39E
  15089. byte_D20C:      ds 1                    ; DATA XREF: sub_8C20-B72 ;oldmove #?
  15090.                                         ; sub_8C20-535 ...
  15091. byte_D20D:      ds #E                   ; DATA XREF: sub_B2D1+3 ;sub_B2D1 копирует 14 координат полей с маской 0yyy0xxx из byte_D258 в byte_D20D
  15092.                                         ; array of 14 bytes
  15093.                 ds 1
  15094.                 ds 1
  15095.                 ds 1
  15096.                 ds 1
  15097.                 ds 1
  15098.                 ds 1
  15099.                 ds 1
  15100.                 ds 1
  15101.                 ds 1
  15102.                 ds 1
  15103.                 ds 1
  15104.                 ds 1
  15105.                 ds 1
  15106.                 ds 1
  15107. unk_D229:       ds 1                    ; DATA XREF: sub_8B66+1E
  15108.                 ds 1
  15109. unk_D22B:       ds 1                    ; DATA XREF: sub_8B66+1B
  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.                 ds 1
  15122.                 ds 1
  15123.                 ds 1
  15124.                 ds 1
  15125.                 ds 1
  15126.                 ds 1
  15127.                 ds 1
  15128.                 ds 1
  15129.                 ds 1
  15130. word_D240:      ds 2                    ; DATA XREF: sub_8C20-B28
  15131.                                         ; sub_8C20-6C2 ...
  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.                 ds 1
  15146.                 ds 1
  15147.                 ds 1
  15148.                 ds 1
  15149.                 ds 1
  15150.                 ds 1
  15151.                 ds 1
  15152.                 ds 1
  15153.                 ds 1
  15154. byte_D258:      ds 1                    ; DATA XREF: sub_A684+23 sub_B2D1 ...
  15155.                                         ; array of 14 bytes
  15156.                 ds 1
  15157. word_D25A:      ds 2                    ; DATA XREF: sub_8C20-B19
  15158.                                         ; sub_8C20-901 ...
  15159. byte_D25C:      ds #A                   ; DATA XREF: sub_B2E2
  15160.  
  15161.  
  15162.  
  15163.  
  15164.                 ds 0xD300-$
  15165.  
  15166. byte_D300:      ds 1                    ; DATA XREF: sub_8C20-541
  15167.                                         ; sub_8C20-1D1
  15168. byte_D301:      ds 1                    ; DATA XREF: sub_8C20-547
  15169.                                         ; sub_8C20-1CB
  15170. byte_D302:      ds 1                    ; DATA XREF: sub_8C20-53B
  15171.                                         ; sub_8C20-1BA
  15172. array_64bytes:  ds #40                  ; DATA XREF: sub_8C20-52F
  15173.                                         ; sub_8C20-1D4
  15174. stk_1bvalue:    ds 1                    ; DATA XREF: START_POINT+94
  15175.                                         ; sub_8C20-B6A ...
  15176.  
  15177.  
  15178.  
  15179.  
  15180.  
  15181.                 ds 0xD800-$
  15182.                 ;stack is upwards
  15183. RAM_END_D800:                           ; DATA XREF: START_POINT:loc_8067
  15184.                                         ; START_POINT+70 ...
  15185.                    
  15186.                 ds 0xD803-$
  15187. tbl_D803:                               ; DATA XREF: sub_8C20:loc_8365
  15188.                                         ; sub_8446 ...
  15189.                                         ; some 3byte structs, #FF -- end mark
  15190.                                         ; sized kilobyte or more
  15191.  
  15192.  
  15193.  
  15194.  
  15195.                 ds 0xF000-$
  15196. unk_F000:                               ; DATA XREF: sub_8446+3 sub_92A0 ...
  15197.                        
  15198.  
  15199.  
  15200.                 ds 0xF300-$
  15201.  
  15202.                 ds 1
  15203.  
  15204. BOARD:          ds #40                  ; DATA XREF: sub_8C20-976 ShowHintMove+E ...
  15205.                
  15206.                 ds 6
  15207.  
  15208. BOARD2:         ds #40                  ; DATA XREF: sub_8C20-979
  15209.                                         ; sub_8DE9+58   ...
  15210.                 ds 6
  15211.  
  15212. save_SP:        ds 2                    ; DATA XREF: START_POINT+33
  15213. save_HLtick:    ds 2                    ; DATA XREF: START_POINT+38
  15214. save_ERRSP:     ds 2                    ; DATA XREF: RAM:803E
  15215.  
  15216.  
  15217.  
  15218.  
  15219.                 ds 0xFEFF-$
  15220. INT_VEC:        ds 2
  15221.  
  15222.  
  15223.  
  15224.  
  15225.                 ;savebin "cyrus2_compilable.bin",#8000,#5000
  15226.                 ;labelslist "cyrus2_compilable.lab"
  15227.                 ;end
  15228.        if FIX
  15229.         savebin "cyrus960.com",begin,end-begin
  15230.        else
  15231.         savebin "cyrus2.com",begin,end-begin
  15232.        endif
  15233.         LABELSLIST "../../../us/user.l",1
  15234.