?login_element?

Subversion Repositories NedoOS

Rev

Rev 1035 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. PSQQ    DEFB #FF,#80,#80,#80,#80,#80,#95,#AA
  2.         DEFB #FF,0,0,0,0,0,#55,#AA
  3.         DEFB #FF,0,1,2,1,2,#55,#AA
  4.  
  5. PSS     DEFB 0,1,1,2
  6. PSS2    DEFB 0,2
  7.  
  8. CRC1    DEFW    0 ;[] - crc1
  9.  
  10. NEWHER  LD (HER_N),A ;нов.герой
  11.         CALL GET_AD
  12.         LD (HER_AD),HL
  13.         RET
  14.  
  15.        if 0
  16. GET_AD  RLCA ;Взять описатель(MAN+A*32) ->HL
  17.         RLCA
  18.         RLCA
  19.         LD L,A
  20.         LD H,0
  21.         ADD HL,HL
  22.         ADD HL,HL
  23.         LD A,MAN/256
  24.         ADD A,H
  25.         LD H,A
  26.         RET
  27.  
  28. GET_IX  CALL GET_AD;То же для IX
  29.         PUSH HL
  30.         POP IX
  31.         RET
  32.        endif
  33.  
  34. GET_DE  LD HL,(HER_AD);коорд ->DE
  35. GT_DE_  LD E,(HL)
  36.         INC HL
  37.         LD D,(HL)
  38.         INC HL
  39.         RET
  40.  
  41. ;0-x,1-y,2-ЭТАЖ,3-направление,4-Paca,5-наш/не наш,6-VISION,7-N спрайта внизу
  42. ;8-имя,9-ранг,10-защита,11-TU,12-EN,13-HEALTH,14-WOUND,15-MORAL,16-Меткость
  43. ;(17-20)-ОРУЖИЕ 1-4, (21-24)-патроны 1-4
  44. ;25-текущ.оружие, 26-FREEZE
  45. ;27-TUold, 28-ENold, 29-HEALTHold, 30-peзерв, 31-MORALold
  46.  
  47. COMBAT  ;****************************** Бой **
  48. ;       0-Победа,1-Поражение/Эвакуация
  49.         DI
  50.         LD SP,COMBATSTACK;#8F7E ;чтобы не было переполн ;TODO проверить
  51.         XOR A
  52.         LD (PVIS),A
  53.         LD (FIRTYP),A
  54.         LD (WAREND),A
  55.         DEC A
  56.         LD HL,#151E
  57.         LD (BX),HL
  58.         CALL BNEW
  59.         CALL PANEL1
  60.         CALL LCOUNT
  61.         CALL INIHER
  62.         CALL isILL
  63.         CALL INILOK
  64.         ;jr $
  65.         CALL INIALI
  66.         CALL L_ON ;hack
  67.         CALL HER1st
  68.         CALL CENTR
  69.         CALL ALLSPF
  70.         CALL PANELM
  71.         CALL CLRSET
  72.         CALL OUTDSC
  73. ;               CALL VZLOM
  74. ;               CALL ENDBAT
  75.         CALL C_SAVE ;----
  76. COMB_   CALL BOUT
  77.         CALL P_IMG
  78.         CALL PNTR
  79.         CALL CURHER
  80.         CALL OUTDSC
  81.         CALL CURHER
  82.         CALL POFF
  83.         CALL ROTATE
  84. ;;;;;   CALL EDITOR    ;
  85.         CALL BMOV
  86.         JR C,COMB_1
  87.         CALL LOOKER
  88.         CALL FIRER
  89.         CALL LOOPER
  90. COMB_1  CALL GETZON
  91.         CALL ACTION
  92.         CALL LOOPER
  93.  
  94. PANEL1  ;Неизм.изобр.панели
  95.         CALL OFFD
  96.         CALL STD
  97.         LD BC,PSQQ
  98.         LD HL,PSS
  99.         PUSH HL
  100.         LD DE,1
  101.         LD A,4
  102.         CALL PRINT
  103.         POP HL
  104.         LD E,25
  105.         LD A,4
  106.         CALL PRINT
  107.         LD DE,#110D
  108.         LD HL,PSS2
  109.         LD A,2
  110.         CALL PRINT
  111.         LD L,0
  112.         LD A,1
  113.         LD DE,#1701
  114.         CALL SYMBOL
  115.         LD L,1
  116.         LD A,26
  117.         CALL SYMBOL
  118.         LD L,2
  119.         LD A,1
  120.         CALL SYMBOL
  121.         Ms 3+#80
  122.         LD HL,0
  123.         LD BC,#2018
  124.         LD A,#68
  125.         CALL ATRBAR
  126.         INC H
  127.         INC L
  128.         LD BC,#1C10
  129.         LD A,(COLOR)
  130.         CALL ATRBAR
  131.         LD HL,29
  132.         LD BC,#318
  133.         LD A,#72
  134.         CALL ATRBAR
  135.         LD DE,xPARAM
  136.         LD B,6
  137. PN0     PUSH BC
  138.         LD BC,#302
  139.         CALL PUTSIM
  140.         INC H
  141.         INC H
  142.         LD C,1
  143.         LD A,#60
  144.         CALL ATRBAR
  145.         INC H
  146.         EX DE,HL
  147.         LD BC,48
  148.         ADD HL,BC
  149.         EX DE,HL
  150.         POP BC
  151.         DJNZ PN0
  152.         LD BC,#306
  153.         LD A,#78
  154.         CALL ATRBAR
  155.         LD DE,xKEY
  156.         LD BC,#C06
  157.         LD HL,#1101
  158.         CALL PUTSIM
  159.         ;очистка кнопок
  160.         LD DE,23*32+xLABEL
  161.         LD HL,#110F
  162.         LD B,7
  163. PN4     PUSH BC
  164.         LD BC,#202
  165.         CALL PUTSIM
  166.         POP BC
  167.         INC L
  168.         INC L
  169.         DJNZ PN4
  170. ;       LD HL,141*256+125 ;цифры на кнопках
  171. ;       LD DE,FONT+8
  172. ;       CHN$ XOR_
  173. ;       LD B,7
  174. ;PN4A   PUSH BC
  175. ;       LD BC,#108
  176. ;       CALL PUTSPR
  177. ;       LD A,16
  178. ;       ADD A,L
  179. ;       LD L,A
  180. ;       LD A,8
  181. ;       ADD A,E
  182. ;       LD E,A
  183. ;       LD A,0
  184. ;       ADC A,D
  185. ;       LD D,A
  186. ;       POP BC
  187. ;       DJNZ PN4A
  188. ;       CALL STD
  189.         LD DE,xWBUTTN
  190.         LD HL,#130D
  191.         LD B,4
  192. PN5     PUSH BC
  193.         LD BC,#403
  194.         CALL PUTSIM
  195.         POP BC
  196.         INC L
  197.         INC L
  198.         INC L
  199.         INC L
  200.         DJNZ PN5
  201.         LD HL,#160D
  202.         LD BC,#1001
  203.         LD A,#70
  204.         CALL ATRBAR
  205.         LD A,#FF
  206.         CALL SIMBAR
  207.         LD HL,#7878
  208.         LD (#12*32+#D+DATR),HL
  209.         CALL MEM7
  210.         CALL COPYAT
  211.         JP PT128
  212.  
  213. SPLDIR  Ms 3
  214.         LD DE,DSCR ;перенесение спрайта
  215.         PUSH DE
  216.         LD BC,96
  217.         LDIR
  218.         POP DE
  219.         JP MEM7
  220.  
  221.  
  222. INIHER  ;иниц.героев
  223.         LD HL,MAN   ;парам.людей
  224.         LD DE,MAN+1
  225.         LD BC,#3FF
  226.         LD (HL),0
  227.         LDIR
  228.         LD B,10
  229.         LD HL,AQNAVT
  230.         LD DE,MAN+8
  231. INH0    PUSH BC
  232.         LD BC,3
  233.         LDIR
  234.         PUSH HL
  235.         LD C,10
  236.         LDIR
  237.         INC HL
  238.         INC HL
  239.         INC HL
  240.         EX (SP),HL
  241.         LD A,E
  242.         ADD A,6
  243.         LD E,A
  244.         LD C,5
  245.         LDIR
  246.         LD A,E
  247.         ADD A,8
  248.         LD E,A
  249.         POP HL
  250.         POP BC
  251.         DJNZ INH0
  252.         LD HL,MAN+17 ;оружие
  253.         LD C,10
  254. INH2    LD B,4
  255. INH3    LD A,(HL)
  256.         INC HL
  257.         PUSH HL
  258.         CP 15
  259.         JR C,INH41
  260.         XOR A
  261.         JR INH4
  262. INH41   EXX
  263.         LD HL,WEAPON+6
  264.         RLCA
  265.         CALL DD
  266.         EXX
  267. INH4    INC HL
  268.         INC HL
  269.         INC HL
  270.         LD (HL),A
  271.         POP HL
  272.         DJNZ INH3
  273.         LD DE,28
  274.         ADD HL,DE
  275.         DEC C
  276.         JR NZ,INH2
  277.         ;поз.людей
  278.         LD IX,32*9+MAN
  279.         XOR A
  280.         LD H,A
  281.         LD L,A
  282.         LD (TX),HL
  283.         CALL FLOOR
  284.         LD B,10
  285. INL0    LD A,(IX+14) ;болен?
  286.         OR A
  287.         JR Z,INL0_
  288.         LD (IX+8),0 ;мёртв
  289. INL0_   LD A,(IX+8) ;cуществует?
  290.         OR A
  291.         JR Z,INL1
  292. INL2    CALL NEXTSP
  293.         AND #7F
  294.         CP 2
  295.         JR NZ,INL2
  296.         LD (IX+7),2
  297.         LD HL,(TX)
  298.         LD (IX),L
  299.         LD (IX+1),H
  300.         LD A,(FLR)
  301.         LD (IX+2),A
  302.         LD (IX+3),6
  303.         LD A,#5F
  304.         ADD A,B
  305.         CALL PSP
  306. INL1    PUSH DE
  307.         LD DE,-32
  308.         ADD IX,DE
  309.         POP DE
  310.         DJNZ INL0
  311.  
  312.         RET
  313.  
  314.        if 0
  315. HERLIV  LD A,(IX+8) ;IX-жив? Z-нет
  316.         OR A
  317.         RET Z
  318.         LD A,(IX+13)
  319.         OR A
  320.         RET Z
  321.         CP (IX+26)
  322.         RET NC
  323.         XOR A
  324.         RET
  325.        endif
  326.  
  327. HER1st  LD IX,MAN ;взять первого
  328.         LD B,0
  329. HS0     CALL HERLIV
  330.         JR Z,HS1
  331.         LD A,(IX+5)
  332.         OR (IX+4)
  333.         JR NZ,HS1
  334.         LD A,B
  335.         JP NEWHER
  336. HS1     LD DE,32
  337.         ADD IX,DE
  338.         INC B
  339.         LD A,B
  340.         CP 10
  341.         JR C,HS0
  342.         XOR A
  343.         JP BATRET
  344.  
  345. NEXTSP  EXX
  346.         LD HL,(TX);взять след.поле
  347.         INC L
  348.         LD A,(XMAX)
  349.         CP L
  350.         JR NC,Nxs
  351.         LD L,0
  352.         INC H
  353.         LD A,(YMAX)
  354.         CP H
  355.         JR NC,Nxs
  356.         LD H,0
  357.         LD A,(FLR)
  358.         XOR 1
  359.         CALL FLOOR
  360. Nxs     LD (TX),HL
  361.         JP GSP+1
  362.  
  363. PANELM ;При смене героя(HER_AD-описатель)
  364.         LD HL,(HER_AD)
  365.         PUSH HL
  366.         LD HL,DSCR+#400
  367.         LD DE,DSCR+#1400
  368.         LD BC,#400
  369.         LDIR
  370.         CALL STS
  371.         CALL MEM7
  372.         CALL GUNOUT
  373.         LD HL,#5
  374.         LD BC,#1401 ;имя
  375.         LD A,#71
  376.         CALL ATRBAR
  377.         CALL STD
  378.         LD A,#FF
  379.         CALL SIMBAR
  380.         POP HL
  381.         INC L
  382.         INC L
  383.         INC L
  384.         INC L
  385.         LD A,(HL)
  386.         INC L
  387.         INC L
  388.         INC L
  389.         INC L
  390.         OR A
  391.         JR Z,LM78
  392.         ADD A,20
  393.         JR LM79
  394. LM78    LD A,(HL)
  395.         DEC A
  396.         LD BC,NAMES
  397.         LD (_words),BC
  398. LM79    PUSH HL
  399.         LD HL,6
  400.         LD (SX),HL
  401.         CALL NWRDM
  402.         LD HL,WORDS
  403.         LD (_words),HL
  404.         CALL STS
  405.         LD HL,DSCR+6
  406.         LD DE,SCR+6
  407.         LD B,8
  408. LM77    PUSHs;$
  409.         LD BC,19
  410.         LDIR
  411.         POPs;$
  412.         INC H
  413.         INC D
  414.         DJNZ LM77
  415.         POP HL
  416.         INC HL
  417.         LD E,(HL)    ;звание
  418.         INC HL
  419.         PUSH HL
  420.         LD L,72
  421.         CALL MULB
  422.         LD HL,xSIGN
  423.         ADD HL,DE
  424.         CALL SPLDIR
  425.         LD HL,#121D
  426.         LD BC,#303
  427.         CALL PUTSIM
  428.         POP HL
  429.         LD E,(HL)   ;защита
  430.         INC HL
  431.         PUSH HL
  432.         LD L,72
  433.         CALL MULB
  434.         LD HL,xSIGN+576
  435.         ADD HL,DE
  436.         CALL SPLDIR
  437.         LD HL,#151D
  438.         LD BC,#303
  439.         CALL PUTSIM
  440.         LD A,#71
  441.         CALL ATRBAR
  442.         LD B,6
  443.         LD HL,#21D ;парам
  444. LM2     LD (SX),HL
  445.         EX (SP),HL
  446.         LD A,(HL)
  447.         INC HL
  448.         EX (SP),HL
  449.         CALL WB
  450.         INC H
  451.         INC H
  452.         INC H
  453.         DJNZ LM2
  454.         POP HL
  455.         EXX     ;оружие
  456.         LD HL,256*156+13
  457.         LD B,4
  458. LM3     PUSH BC
  459.         EXX
  460.         LD A,(HL)
  461.         INC HL
  462.         EXX
  463.         PUSH HL
  464.         CP 15
  465.         LD HL,xWBUTTN+16
  466.         JR NC,LM4
  467.         LD E,A
  468.         LD L,64
  469.         CALL MULB
  470.         LD HL,xWEAPON
  471.         ADD HL,DE
  472. LM4     CALL SPLDIR
  473.         POP HL
  474.         LD BC,#410
  475.         CALL PUTSCR
  476.         LD A,4
  477.         ADD A,L
  478.         LD L,A
  479.         POP BC
  480.         DJNZ LM3
  481.         EXX
  482. PANG_   PUSH HL
  483.         CALL STS ;к-во патронов
  484.         LD HL,#160D
  485.         LD BC,#401
  486. LM02    LD (SX),HL
  487.         EX (SP),HL
  488.         LD A,(HL)
  489.         INC HL
  490.         EX (SP),HL
  491.         OR A
  492.         JR NZ,LM03
  493.         PUSH BC
  494.         LD B,3
  495.         LD A,#FF
  496.         CALL SIMBAR
  497.         POP BC
  498.         JR LM04
  499. LM03    CALL WB
  500. LM04    INC L
  501.         INC L
  502.         INC L
  503.         INC L
  504.         DJNZ LM02
  505.         ATRs #130D,#1003,#68;текущ.оружие
  506.         EX (SP),HL
  507.         LD A,(HL)
  508.         AND 3
  509.         LD (HL),A
  510.         RLCA
  511.         RLCA
  512.         POP HL
  513.         ADD A,L
  514.         LD L,A
  515.         LD B,4
  516.         LD A,#79
  517.         CALL ATRBAR
  518.         LD DE,DSCR+#400
  519.         LD HL,DSCR+#1400
  520.         LD BC,#400
  521.         LDIR
  522.         ATRs #1304,#602,#68
  523.         LD A,(FIRTYP) ;тип стрельбы
  524.         OR A
  525.         JR NZ,LM17
  526.         LD L,7
  527. LM17    LD B,3
  528.         LD A,#7A
  529.         CALL ATRBAR
  530.         LD A,14
  531.         CALL HER_BA ;F.Wound>0?
  532.         OR A
  533.         LD L,#60
  534.         JR Z,LM18
  535.         LD L,#78
  536. LM18    LD H,L
  537.         LD (ATR+382),HL
  538.         JP LA_OUT ;вокруг враги?
  539.  
  540. PANELG ;вывод К-ва патронов
  541.         LD A,21
  542.         CALL HER_BA
  543.         CALL MEM7
  544.         JP PANG_       
  545.  
  546. BX      DEFB    5
  547. BY      DEFB    7
  548. BXOLD   DEFW    0
  549. BHL     DEFW    0
  550. AHL     DEFW    0
  551. BIBU    DEFS    9
  552. BZON    DEFB    0
  553. BCAP    DEFB    0
  554. BVIS    DEFB    0;0-GR/1-TXT
  555. BIN     DEFB    #55,#81,1,#81,1,#81,1,#FF
  556.  
  557. ;killablecursorbuf
  558. ;        ds 9
  559.  
  560. BOFF    ;выкл.курсор
  561.         LD      HL,(BHL)
  562.        inc h
  563.        dec h
  564.        jr z,BOFF_SKIP
  565.         LD      DE,BIBU
  566.         LD      B,8
  567. BO4     LD      A,(DE)
  568.         LD      (HL),A
  569.         INC     DE
  570.         INC     H
  571.         DJNZ    BO4
  572. BOFF_SKIP
  573.         LD      A,(BIBU+8);(DE)
  574.         LD      HL,(AHL)
  575.        inc h
  576.        dec h
  577.        jr z,BNEW
  578.         LD      (HL),A
  579.  
  580. BNEW    XOR A ;предуст.курсора
  581.         LD (BHL+1),A
  582.         LD (AHL+1),A
  583.         DEC A
  584.         LD (BXOLD),A
  585.        ;ld hl,killablecursorbuf
  586.        ;ld (BHL),hl
  587.        ;ld (AHL),hl
  588.         RET
  589.  
  590. BOUT    CALL    MEM7
  591.         LD      A,#FF
  592.         LD      (BVIS),A
  593.         LD      A,(BX)
  594.         OR      A
  595.         JR      Z,BO1
  596.         CP      29
  597.         JR      NC,BO1
  598.         LD      A,(BY)
  599.         OR      A
  600.         JR      Z,BO1
  601.         CP      17
  602.         JR      NC,BO1
  603.         CALL    BOFF
  604.         LD      HL,#8080
  605.         LD      (BXOLD),HL
  606.         LD      BC,(X0)  ;gr mrk
  607.         LD      A,(SH)
  608.         OR      A
  609.         JR      NZ,BO8
  610.         INC     B
  611. BO8     LD      A,(BX)
  612.         DEC     A
  613.         SRL     A
  614.         JR      NC,BO2
  615.         INC     C
  616. BO2     LD      E,A
  617.         ADD     A,C
  618.         LD      C,A
  619.         LD      A,B
  620.         SUB     E
  621.         LD      D,A
  622.         LD      A,(BY)
  623.         DEC     A
  624.         LD      E,A
  625.         ADD     A,D
  626.         LD      (PPY),A
  627.         LD      A,E
  628.         ADD     A,C
  629.         LD      (PPX),A
  630.         XOR     A
  631.         LD      (BVIS),A
  632.         JP PT128
  633. BO1     CALL    STS
  634.         LD      DE,(BX)
  635.         LD      HL,(BXOLD)
  636.         XOR     A
  637.         SBC     HL,DE
  638.         RET     Z
  639.         PUSH    DE
  640.         PUSH    DE
  641.         CALL    BOFF
  642.         POP     DE
  643.         LD      (BXOLD),DE
  644.         CALL    SCOORD
  645.         LD      (BHL),HL
  646.         LD      DE,BIBU
  647.         LD      BC,BIN
  648.         LD      A,8
  649. BO3     EX      AF,AF
  650.         LD      A,(HL)
  651.         LD      (DE),A
  652.         LD      A,(BC)
  653.         LD      (HL),A
  654.         INC     BC
  655.         INC     DE
  656.         INC     H
  657.         EX      AF,AF
  658.         DEC     A
  659.         JR      NZ,BO3
  660.         POP HL
  661.         LD A,H
  662.         RRCA
  663.         RRCA
  664.         RRCA
  665.         LD H,A
  666.         AND #E0
  667.         ADD A,L
  668.         LD L,A
  669.         LD A,H
  670.         AND 3
  671.         ADD A,ATR/256
  672.         LD H,A
  673.         LD (AHL),HL
  674.         LD A,(HL)
  675.         LD (BIBU+8),A
  676.         LD (HL),#60
  677.         LD A,2
  678.         CALL DELAY
  679.         JP PT128
  680.  
  681. BSLOW   DEFB 2
  682. BMOV    ;Перемещ: C-FIRE
  683.         LD HL,BSLOW
  684.         DEC (HL)
  685.         LD BC,#BFFE ;Enter?
  686.         IN A,(C)
  687.         CPL
  688.         AND %1111
  689.         JR Z,BMOV_
  690.         LD A,(HL)
  691.         AND 3
  692.         OR A
  693.         RET NZ
  694. BMOV_   LD HL,#101
  695.         LD (MWINX),HL
  696.         CALL CONTR
  697.         AND #20 ;Caps || R.butt?
  698.         LD E,A
  699.         LD BC,#FEFE
  700.         IN A,(C)
  701.         AND 1
  702.         OR E
  703.         LD (BCAP),A
  704.         LD B,4
  705. BVL     PUSH BC
  706.         LD A,(CONTRB)
  707.         CALL MMOV_
  708.         POP BC
  709.         DJNZ BVL
  710.         PUSH AF
  711.         LD A,(MX)
  712.         AND %11111000
  713.         RRCA
  714.         RRCA
  715.         RRCA
  716.         LD L,A
  717.         LD A,(MY)
  718.         AND %11111000
  719.         RRCA
  720.         RRCA
  721.         RRCA
  722.         LD H,A
  723.         LD (BX),HL
  724.         POP AF
  725.         RET
  726.  
  727. ROTATE  ;скролл поля
  728.         LD A,(BX)
  729.         OR A
  730.         JR NZ,RA1
  731.         LD HL,LRT
  732.         LD C,%10
  733.         CALL MROTAT
  734.         JR RA2
  735. RA1     CP 31
  736.         LD HL,RRT
  737.         LD C,%1
  738.         CALL NC,MROTAT
  739. RA2     LD A,(BY)
  740.         OR A
  741.         LD HL,URT
  742.         LD C,%1000
  743.         JR Z,MROTAT
  744.         CP 23
  745.         LD HL,DRT
  746.         LD C,%100
  747.         CALL NC,MROTAT
  748.         RET
  749.  
  750. MROTAT  ;учёт мыши
  751.         LD A,(PMOUSE)
  752.         OR A
  753.         JR NZ,MRO1
  754.         LD A,(CONTRB)
  755.         AND C
  756.         RET Z
  757. MRO1    JP (HL)
  758.  
  759.  
  760. LOOPER  LD HL,COMB_ ;цикл
  761.         EX (SP),HL
  762.         RET
  763.  
  764. GETZON  LD HL,(BX) ;НОМЕР ЗОНЫ
  765.         LD A,#FF
  766.         LD DE,BZON
  767.         LD (DE),A
  768.         LD A,L
  769.         OR A
  770.         RET Z
  771.         CP 29
  772.         RET NC
  773.         LD A,H
  774.         OR A
  775.         RET Z
  776.         CP 23
  777.         RET NC
  778.         CP 17
  779.         JR NC,GZ1
  780.         XOR A
  781.         LD (DE),A
  782.         RET
  783. GZ1     LD A,L
  784.         CP 13
  785.         JR C,GZ2
  786.         LD A,H
  787.         CP 19
  788.         LD A,1
  789.         JR C,GZ3
  790.         INC A
  791. GZ3     LD (DE),A
  792.         RET
  793. GZ2     DEC L
  794.         LD A,H
  795.         SUB 17
  796.         AND #FE
  797.         RLCA
  798.         LD B,A
  799.         LD E,L
  800.         LD L,3
  801.         CALL DIVB
  802.         LD A,E
  803.         ADD A,B
  804.         ADD A,3
  805.         LD (BZON),A
  806.         RET
  807.  
  808. PPX     DEFB    #80
  809. PPY     DEFB    #80
  810. PIMG    DEFW    xMARKER
  811. PVIS    DEFB    0
  812. P_AD    DEFW    0
  813.  
  814. P_IMG   ;вид 3D курс
  815.         LD HL,(PPX)
  816.         CALL LIFTYP
  817.         CP #FF
  818.         JR Z,P_IM0
  819.         LD HL,xMARKER+256
  820. P_IMr   LD (PIMG),HL
  821.         RET
  822. P_IM0   LD A,11
  823.         CALL HER_BA
  824.         LD HL,(G_TIME)
  825.         CP L
  826.         JR C,P_IM1
  827.         CALL CURGUN
  828.         JR NC,P_IM1
  829.         LD HL,xMARKER+384
  830.         CP 11
  831.         JR Z,P_IMr
  832.         CP 13
  833.         JR NC,P_IMr
  834.         CP 5
  835.         JR C,P_IM2
  836.         CP 7
  837.         JR C,P_IMr
  838. P_IM2   LD HL,xMARKER+128
  839.         JR P_IMr
  840. P_IM1   LD HL,xMARKER
  841.         JR P_IMr
  842.  
  843.  
  844. POFF    LD HL,PVIS ;Гашен. 3D курс.
  845.         LD A,(HL)
  846.         OR A
  847.         RET Z
  848.         DEC (HL)
  849.         LD HL,DSCR
  850.         LD DE,(P_AD)
  851.         LD BC,#40FD
  852. PF0     LDI
  853.         LDI
  854.         LD A,30
  855.         ADD A,E
  856.         LD E,A
  857.         JR NC,PF1
  858.         INC D
  859. PF1     DJNZ PF0
  860.         RET
  861.  
  862. flashP  DEFB 0 ;мигать,если чел.
  863. PNTR    LD      A,(BVIS) ;выв.3D курс
  864.         OR      A
  865.         RET     NZ
  866.         CALL    CANFIR ;возм. стрельбы
  867.         CALL    CANF_V
  868.         LD      HL,(PPX)
  869.         LD      (TX),HL
  870.         CALL    GSP60
  871.         JR      C,PNT5
  872.         SUB     #60
  873.         CALL    GET_AD
  874.         LD      A,6
  875.         ADD     A,L
  876.         LD      L,A
  877.         LD      A,(HL)
  878.         OR      A
  879.         JR      NZ,PNT5
  880.         LD      HL,flashP
  881.         INC     (HL)
  882.         BIT     2,(HL)
  883.         RET     Z
  884. PNT5    CALL    INFR
  885.         RET     NC
  886.         LD      A,1
  887.         LD      (PVIS),A
  888.         CALL    XYHL
  889.         LD      BC,DSCR+129
  890.         ADD     HL,BC
  891.         LD (P_AD),HL
  892.         LD DE,DSCR
  893.         LD BC,#40FD
  894. PTN0    LDI
  895.         LDI
  896.         LD A,30
  897.         ADD A,L
  898.         LD L,A
  899.         JR NC,PTN1
  900.         INC H
  901. PTN1    DJNZ PTN0
  902.         LD      A,(FLR)
  903.         OR      A
  904.         JR      NZ,PNTR_
  905.         INC     A
  906.         CALL    FLOOR
  907.         LD      HL,(PIMG)
  908.         PUSH    HL
  909.         LD      HL,xMARKER
  910.         LD      (PIMG),HL
  911.         CALL    PNTR_
  912.         XOR     A
  913.         CALL    FLOOR
  914.         LD      HL,(PPX)
  915.         INC     H
  916.         INC     H
  917.         INC     H
  918.         INC     L
  919.         INC     L
  920.         INC     L
  921.         LD      (TX),HL
  922.         CALL    PXY
  923.         POP     HL
  924.         LD      (PIMG),HL
  925.  
  926. PNTR_   CALL    NORM_V
  927.         LD      HL,(PPX)
  928.         LD      (TX),HL
  929.         CALL    INFR
  930.         RET     NC
  931.         Ms      3
  932.         CALL    XYHL
  933.         LD      BC,DSCR+129
  934.         ADD     HL,BC
  935.         LD      (TXT),HL
  936.         LD      DE,(PIMG)
  937.         LD      B,#20
  938.         PUSH    HL
  939.         CALL    BSP
  940.         LD      HL,TY
  941.         INC     (HL)
  942.         POP     HL
  943.         LD      A,L
  944.         SUB     16
  945.         LD      L,A
  946.         CALL    PT128
  947.         JP      PNE_
  948.  
  949. INFR    LD      HL,(X0)
  950.         LD      A,(TX)
  951.         SUB     L
  952.         LD      L,A
  953.         LD      A,(TY)
  954.         SUB     H
  955.         LD      H,A
  956.         ADD     A,L
  957.         LD      E,A
  958.         CP      39
  959.         RET     NC
  960.         LD      A,(SH)
  961.         OR      A
  962.         LD      A,L
  963.         JR      NZ,IF2
  964.         INC     A
  965. IF2     SUB     H
  966.         LD      D,A
  967.         CP      29
  968.         RET
  969.  
  970. XYHL    XOR     A
  971.         LD      H,E
  972.         SRL     H
  973.         RRA
  974.         ADD     A,D
  975.         LD      L,A
  976.         RET
  977.  
  978. RELAX   CALL INFR;вывод изобр. перед 3D спр.
  979.         RET NC
  980.         CALL XYHL
  981.         LD DE,DSCR+129
  982.         ADD HL,DE
  983.         LD (TXT),HL
  984.         CALL ASP
  985.         CALL MSP
  986.         LD HL,TY
  987.         INC (HL)
  988.         JP PNE_
  989.  
  990. PXYF    LD      A,(FLR) ;в 2 этажа
  991.         OR      A
  992.         JR      NZ,PXY
  993.         INC     A
  994.         CALL    FLOOR
  995.         LD      HL,(TX)
  996.         PUSH    HL
  997.         DEC H
  998.         DEC H
  999.         DEC H
  1000.         DEC L
  1001.         DEC L
  1002.         DEC L
  1003.         LD      (TX),HL
  1004.         CALL    PXY
  1005.         XOR     A
  1006.         CALL    FLOOR
  1007.         POP HL
  1008.         LD (TX),HL
  1009.  
  1010. PXY     CALL    INFR ;выв. 3D спр.(TX,TY)
  1011.         RET     NC
  1012.         CALL    XYHL
  1013.         LD      DE,DSCR+129
  1014.         ADD     HL,DE
  1015.         LD      (TXT),HL
  1016.         LD      A,(TX)
  1017.         SUB     4
  1018.         LD      (TX),A
  1019.         LD      A,(TY)
  1020.         SUB     3
  1021.         LD      (TY),A
  1022.         LD      HL,112
  1023.         LD      BC,#404
  1024. PX1     PUSH    HL
  1025.         CALL    ASP
  1026.         ADD     HL,DE
  1027.         EX      DE,HL
  1028.         LD      HL,(TXT)
  1029.         CALL    RSPB
  1030.         LD      HL,TX
  1031.         INC     (HL)
  1032.         INC     HL
  1033.         DEC     (HL)
  1034.         CALL    ASP
  1035.         POP     HL
  1036.         PUSH    HL
  1037.         ADD     HL,DE
  1038.         EX      DE,HL
  1039.         LD      HL,(TXT)
  1040.         INC     L
  1041.         CALL    LSPB
  1042.         LD      HL,TY
  1043.         INC     (HL)
  1044.         INC     B
  1045.         INC     B
  1046.         INC     B
  1047.         INC     B
  1048.         CALL    ASP
  1049.         POP     HL
  1050.         LD      A,L
  1051.         SUB     16
  1052.         LD      L,A
  1053.         PUSH    HL
  1054.         ADD     HL,DE
  1055.         EX      DE,HL
  1056.         LD      HL,(TXT)
  1057. PNE     CALL    BSP
  1058.         LD      HL,TY
  1059.         INC     (HL)
  1060.         POP     HL
  1061.         INC     B
  1062.         INC     B
  1063.         INC     B
  1064.         INC     B
  1065.         LD      A,L
  1066.         SUB     16
  1067.         LD      L,A
  1068.         DEC     C
  1069.         JR      NZ,PX1
  1070.  
  1071. PNE_    LD      B,28
  1072. PX2     LD      HL,(TXT)
  1073.         LD      DE,128
  1074.         ADD     HL,DE
  1075.         LD      (TXT),HL
  1076.         CALL    ASP
  1077.         CALL    RSPB
  1078.         LD      HL,TX
  1079.         INC     (HL)
  1080.         INC     HL
  1081.         DEC     (HL)
  1082.         LD      HL,(TXT)
  1083.         INC     L
  1084.         CALL    ASP
  1085.         CALL    LSPB
  1086.         LD      HL,TY
  1087.         INC     (HL)
  1088.         DEC     B
  1089.         DEC     B
  1090.         DEC     B
  1091.         DEC     B
  1092.         RET     Z
  1093.         LD      HL,(TXT)
  1094.         LD      DE,128
  1095.         ADD     HL,DE
  1096.         LD      (TXT),HL
  1097.         CALL    ASP
  1098.         CALL    BSP
  1099.         LD      HL,TY
  1100.         INC     (HL)
  1101.         DEC     B
  1102.         DEC     B
  1103.         DEC     B
  1104.         DEC     B
  1105.         RET     Z
  1106.         JR      PX2
  1107.  
  1108.  
  1109. CENTR   CALL GET_DE
  1110. CENTR_  LD A,(HL)
  1111.         CALL FLOOR
  1112. CENTRg  LD A,D
  1113.         SUB 2
  1114.         LD D,A
  1115.         LD A,E
  1116.         SUB 16;15
  1117.         LD E,A
  1118.         LD (X0),DE
  1119.         RET
  1120.  
  1121. C_MRK   DEFB #70,#07,#40,#01,#40,#01
  1122.         DEFB #40,#01,#40,#01,#70,#07
  1123.  
  1124. flashC  DEFB #FF
  1125. CURHER  ;указат.тек.героя
  1126.         LD HL,flashC
  1127.         INC (HL)
  1128.         BIT 1,(HL)
  1129.         RET NZ
  1130.         CALL GET_DE
  1131.         LD A,(FLR)
  1132.         CP (HL)
  1133.         RET NZ
  1134.         LD (TX),DE
  1135.         CALL INFR
  1136.         RET NC
  1137.         CALL XYHL
  1138.         LD BC,DSCR+193
  1139.         ADD HL,BC
  1140.         LD DE,C_MRK
  1141.         CALL CMR_
  1142.         LD BC,704
  1143.         ADD HL,BC
  1144.         LD DE,C_MRK+6
  1145. CMR_    LD BC,#203
  1146. CMR1    PUSH BC
  1147. CMR0    LD A,(DE)
  1148.         XOR (HL)
  1149.         LD (HL),A
  1150.         INC HL
  1151.         INC DE
  1152.         DJNZ CMR0
  1153.         LD BC,30
  1154.         ADD HL,BC
  1155.         POP BC
  1156.         DEC C
  1157.         JR NZ,CMR1
  1158.         RET
  1159.  
  1160. XW      DEFB    0 ;угол окна трасс.
  1161. YW      DEFB    0
  1162. WSTART  DEFW    0 ;нач
  1163. WSTOP   DEFW    0 ;кон
  1164. TSTART  DEFW    0
  1165. WSTEP   DEFB    0 ;N итер
  1166.  
  1167. XY2TRC  ;преобр.коорд
  1168.         LD DE,(XW)
  1169.         LD A,H
  1170.         SUB D
  1171.         LD H,A
  1172.         LD A,L
  1173.         SUB E
  1174.         RLA
  1175.         RLA
  1176.         RLA
  1177.         SRL H
  1178.         RRA
  1179.         SRL H
  1180.         RRA
  1181.         SRL H
  1182.         RRA
  1183.         LD L,A
  1184.         LD DE,DSCR
  1185.         ADD HL,DE
  1186.         RET
  1187.  
  1188. TRACE1  ;волновой трассировщик (oт DE до HL)
  1189.         ;253-X(непрох.),254-O(проходимо),0-start,255/<250>-end
  1190.         LD (WSTART),DE
  1191.         LD (WSTOP),HL
  1192.         LD A,L    ;опр. угла поля тр.
  1193.         ADD A,30
  1194.         SUB E
  1195.         CP 60 ;не дальше 30 шагов
  1196.         JR NC,CWBD1
  1197.         SRL A
  1198.         SUB 31
  1199.         ADD A,E
  1200.         LD L,A
  1201.         LD A,H    ;опр. угла поля тр.
  1202.         ADD A,30
  1203.         SUB D
  1204.         CP 60 ;не дальше 30 шагов
  1205. CWBD1   JP NC,CWBD
  1206.         SRL A
  1207.         SUB 31
  1208.         ADD A,D
  1209.         LD H,A
  1210.         LD (XW),HL
  1211.         LD HL,DSCR ;очст
  1212.         LD DE,DSCR+1
  1213.         LD BC,#3FF
  1214.         LD (HL),253
  1215.         LDIR
  1216.         LD HL,DSCR+33;cост.карты
  1217.         LD DE,(XW)
  1218.         INC E
  1219.         INC D
  1220.         LD C,30
  1221. TW1     LD B,30
  1222.         PUSH DE
  1223. TW2     PUSH HL
  1224.         LD (TX),DE
  1225.         CALL GSP
  1226.         AND #7F
  1227. ;;      CP #60
  1228. ;;      JR NC,TW5
  1229.         LD L,A
  1230.         LD H,xATR/256
  1231.         LD A,254
  1232.         BIT 5,(HL)
  1233.         JR NZ,TW4
  1234.         DEC A
  1235. ;;      JR TW4
  1236. ;TW5    SUB #60
  1237. ;;      CALL GET_IX
  1238. ;;      CALL HERLIV
  1239. ;;      LD A,254
  1240. ;;      JR Z,TW4
  1241. ;;      DEC A
  1242. TW4     POP HL
  1243.         LD (HL),A
  1244.         INC HL
  1245.         INC E
  1246.         DJNZ TW2
  1247.         POP DE
  1248.         INC D
  1249.         INC HL
  1250.         INC HL
  1251.         DEC C
  1252.         JR NZ,TW1
  1253.         LD HL,(WSTOP)
  1254.         CALL XY2TRC
  1255.         XOR A
  1256.         LD (HL),A
  1257.         LD (WSTEP),A
  1258.         LD HL,(WSTART)
  1259.         CALL XY2TRC
  1260.         LD (TSTART),HL
  1261.         LD (HL),255
  1262.          ;волна
  1263.         LD D,0
  1264. CW0     LD E,28
  1265.         LD HL,DSCR+66
  1266. CW1     LD BC,28
  1267. CW2     ;CALL HH
  1268.         LD A,D
  1269.         CPIR
  1270.         JR NZ,CW4
  1271.         PUSH AF
  1272.         PUSH HL
  1273.         PUSH BC
  1274.         CALL CW254
  1275.         DEC HL
  1276.         DEC HL
  1277.         CALL CW254
  1278.         LD BC,-31
  1279.         ADD HL,BC
  1280.         CALL CW254
  1281.         LD BC,64
  1282.         ADD HL,BC
  1283.         CALL CW254
  1284.         POP BC
  1285.         POP HL
  1286.         POP AF
  1287. CW4     JP PE,CW2
  1288.         LD BC,4
  1289.         ADD HL,BC
  1290.         DEC E
  1291.         JR NZ,CW1
  1292.         INC D
  1293.         LD A,64 ;К-во итер
  1294.         CP D
  1295.         JR NC,CW0
  1296. CWBD    SCF ;BAD-C
  1297.         RET
  1298.  
  1299. CW254   LD A,(HL) ;Cлед.волна
  1300.         CP 254
  1301.         JR Z,CW254_
  1302.         RET C
  1303.         POP HL ;OK-NC
  1304.         POP HL
  1305.         POP HL
  1306.         POP HL ;бывший af!!!
  1307.         ;LD (HL),250
  1308.         RET
  1309. CW254_  LD A,D ;фаза волны 0..64
  1310.         INC A
  1311.         LD (HL),A
  1312.         RET
  1313.  
  1314. TD0 EQU DATR
  1315. TRACE2  ;нахожд. маршрута
  1316.         LD HL,(TSTART)
  1317.         LD DE,DATR+765
  1318.         PUSH DE
  1319. TR2B    ;назад на шаг
  1320.         PUSH DE
  1321.         PUSH HL
  1322.         LD DE,-33
  1323.         ADD HL,DE
  1324.         LD DE,TD0
  1325.         LD B,3
  1326. RBT1    PUSH BC
  1327.         LD BC,3
  1328.         LDIR
  1329.         LD BC,29
  1330.         ADD HL,BC
  1331.         POP BC
  1332.         DJNZ RBT1
  1333.         POP HL
  1334.         LD E,#F0;E-мин.знач,D-напр
  1335. RB7     LD A,(TD0+1)
  1336.         CP 253
  1337.         JR Z,RB3
  1338.         LD A,(TD0+3)
  1339.         CP 253
  1340.         JR Z,RB5
  1341.         LD A,(TD0+0)
  1342.         CP E
  1343.         JR NC,RB5
  1344.         LD E,A
  1345.         LD D,3
  1346.         LD BC,-33
  1347. RB5     LD A,(TD0+5)
  1348.         CP 253
  1349.         JR Z,RB1
  1350.         LD A,(TD0+2)
  1351.         CP E
  1352.         JR NC,RB3
  1353.         LD E,A
  1354.         LD D,1
  1355.         LD BC,-31
  1356. RB3     LD A,(TD0+7)
  1357.         CP 253
  1358.         JR Z,RB6
  1359.         LD A,(TD0+5)
  1360.         CP 253
  1361.         JR Z,RB1
  1362.         LD A,(TD0+8)
  1363.         CP E
  1364.         JR NC,RB1
  1365.         LD E,A
  1366.         LD D,7
  1367.         LD BC,33
  1368. RB1     LD A,(TD0+3)
  1369.         CP 253
  1370.         JR Z,RB6
  1371.         LD A,(TD0+6)
  1372.         CP E
  1373.         JR NC,RB6
  1374.         LD E,A
  1375.         LD D,5
  1376.         LD BC,31
  1377. RB6     LD A,(TD0+1)
  1378.         CP E
  1379.         JR NC,RB0
  1380.         LD E,A
  1381.         LD D,2
  1382.         LD BC,-32
  1383. RB0     LD A,(TD0+3)
  1384.         CP E
  1385.         JR NC,RB4
  1386.         LD E,A
  1387.         LD D,4
  1388.         LD BC,-1
  1389. RB4     LD A,(TD0+5)
  1390.         CP E
  1391.         JR NC,RB2
  1392.         LD E,A
  1393.         LD D,0
  1394.         LD BC,1
  1395. RB2     LD A,(TD0+7)
  1396.         CP E
  1397.         JR NC,RBN
  1398.         LD E,A
  1399.         LD D,6
  1400.         LD BC,32
  1401. RBN     ADD HL,BC
  1402.         LD A,D
  1403.         LD C,E
  1404.         POP DE
  1405.         LD (DE),A
  1406.         DEC DE
  1407.         LD A,C
  1408.         OR A
  1409.         JP NZ,TR2B
  1410.         CPL
  1411.         LD (DE),A
  1412.         POP DE
  1413.         RET
  1414.  
  1415. VBYT    EQU DSCR+512
  1416. isLOOK  DEFB 0;1-были изм. из LOOK
  1417.  
  1418. ;+X(#85) -X(#95)
  1419. ;+Y(#84) -Y(#94)
  1420. LOOKT   DEFW #8584,#9584,#9485,#9495,#9594,#8594,#8495,#8485
  1421. LOOKSH  DEFB #24,#25,#2C,#2D,#25,#24,#2D,#2C
  1422.  
  1423. LOOK    ;просмотр
  1424.         CALL GET_DE
  1425.         LD A,(HL)
  1426.         PUSH AF
  1427.         CALL FLOOR
  1428.         POP AF
  1429.         INC HL
  1430.         OR A
  1431.         LD A,(HL)
  1432. LOOK_   JR Z,LOOKF ;DE-pos A-dir Z/NZ-floor 2/1
  1433.         PUSH DE
  1434.         PUSH AF
  1435.         XOR A
  1436.         CALL FLOOR
  1437.         LD (TX),DE
  1438.         CALL GSP
  1439.         AND #7F
  1440.         JR NZ,LOOKf
  1441.         POP AF
  1442.         PUSH AF
  1443.         CALL LOOKF
  1444. LOOKf   LD A,1
  1445.         CALL FLOOR
  1446.         POP AF
  1447.         POP DE
  1448. LOOKF   PUSH AF
  1449.         CALL LOOK1
  1450.         POP AF
  1451.         INC A
  1452.         AND 7
  1453. LOOK1   PUSH AF
  1454.         LD HL,LOOKSH
  1455.         CALL BA
  1456.         LD (LOMSH),A
  1457.         POP AF
  1458.         LD HL,LOOKT
  1459.         CALL WT
  1460.         LD A,L
  1461.         LD (LOMX),A
  1462.         LD A,H
  1463.         LD (LOMY),A
  1464.         ;просмотр 1 сект
  1465.         PUSH DE
  1466.         LD HL,VBYT
  1467.         LD (HL),1
  1468.         INC HL
  1469.         LD (HL),0
  1470.         LD DE,VBYT+2
  1471.         LD BC,110
  1472.         LDIR
  1473.         POP DE
  1474.         LD BC,VBYT+1
  1475.         LD HL,VTAB+2
  1476. LOM1    PUSH BC
  1477.         LD A,(HL)
  1478.         INC HL
  1479.         LD C,(HL)
  1480.         INC HL
  1481.         PUSH HL
  1482.         LD HL,VBYT
  1483.         CALL BA
  1484.         OR A
  1485.         JR Z,LOM2
  1486.         LD A,C
  1487.         AND #F
  1488.         LD L,A
  1489.         LD A,C
  1490.         RLCA
  1491.         RLCA
  1492.         RLCA
  1493.         RLCA
  1494.         AND #F
  1495.         LD H,A
  1496.         LD A,D
  1497. LOMY    ADD A,H
  1498.         LD C,A
  1499.         LD A,E
  1500. LOMX    ADD A,L
  1501.         LD L,A
  1502.         LD H,C
  1503.         LD (TX),HL
  1504.         CALL GSP
  1505.         CP #80
  1506.         JR C,LOM7
  1507.         LD (isLOOK),A
  1508.         AND #7F
  1509. LOM7    CP 2
  1510.         JR C,LOMSH
  1511.         EXX
  1512.         LD (HL),A
  1513.         CP #60
  1514.         CALL NC,LOKMAN
  1515.         LD L,A
  1516.         LD H,xATR/256
  1517.         LD A,(HL)
  1518.         EXX
  1519.         RLA
  1520.         JR NC,LOM2
  1521. LOMSH   INC L
  1522.         LD (TX),HL
  1523.         CALL GSP
  1524.         CP #80
  1525.         JR C,LOM8
  1526.         LD (isLOOK),A
  1527.         AND #7F
  1528. LOM8    CP 2
  1529.         JR C,LOM2_
  1530.         EXX
  1531.         LD (HL),A
  1532.         CP #60
  1533.         CALL NC,LOKMAN
  1534.         EXX
  1535. LOM2_   POP HL
  1536.         POP BC
  1537.         LD A,1
  1538.         LD (BC),A
  1539.         JR LOM4
  1540. LOM2    POP HL
  1541.         POP BC
  1542. LOM4    INC C
  1543.         LD A,104
  1544.         CP C
  1545.         JR NC,LOM1
  1546.         RET
  1547.  
  1548. LOKMAN  ;очистка поля, если персонаж
  1549.         SUB #60
  1550.         CALL GET_AD
  1551.         LD A,7
  1552.         CALL BA
  1553.         RES 7,(HL)
  1554.         LD A,#60
  1555.         RET
  1556.  
  1557.        if 0
  1558. NORM_V  LD A,#AA ;вкл.норм.отобр
  1559.         LD (Ainv1),A
  1560.         LD (Ainv2),A
  1561.         LD (Ainv3),A
  1562.         LD (Ainv4),A
  1563.         RET
  1564.        endif
  1565.  
  1566. HT      DEFW    DSP0,DSP2,DSP4,DSP6
  1567. HERO    PUSH    HL;Выв.героя со сдвигом-A:0-3
  1568.         LD      HL,HT
  1569.         CALL    WT
  1570.         LD      (HE1+1),HL
  1571.         LD      (HE1+4),HL
  1572.         Ms 4+#C0
  1573.         POP     HL
  1574.         CALL    GBU
  1575.         LD B,24
  1576. HE1     CALL    15635
  1577.         CALL    1010
  1578.         LD      A,30
  1579.         ADD     A,L
  1580.         LD      L,A
  1581.         JR      NC,HE2
  1582.         INC     H
  1583. HE2     DJNZ    HE1
  1584.         JP      PT128
  1585.  
  1586. DSP4    LD      A,(DE)
  1587.         INC     DE
  1588.         RLCA
  1589.         RLCA
  1590.         RLCA
  1591.         RLCA
  1592.         LD      C,A
  1593.         AND     %1111
  1594.         OR      (HL)
  1595.         LD      (HL),A
  1596.         LD      A,C
  1597.         AND     #F0
  1598.         INC     HL
  1599.         OR      (HL)
  1600.         LD      (HL),A
  1601.         DEC     HL
  1602.         LD      A,(DE)
  1603.         INC     DE
  1604.         RRCA
  1605.         RRCA
  1606.         RRCA
  1607.         RRCA
  1608.         LD      C,A
  1609.         AND     #F
  1610.         XOR     (HL)
  1611.         LD      (HL),A
  1612.         LD      A,C
  1613.         AND     #F0
  1614.         INC     HL
  1615.         XOR     (HL)
  1616.         LD      (HL),A
  1617.         RET
  1618.  
  1619. DSP2    LD      A,(DE)
  1620.         INC     DE
  1621.         RRCA
  1622.         RRCA
  1623.         LD      C,A
  1624.         AND     #3F
  1625.         OR      (HL)
  1626.         LD      (HL),A
  1627.         LD      A,C
  1628.         AND     #C0
  1629.         INC     HL
  1630.         OR      (HL)
  1631.         LD      (HL),A
  1632.         DEC     HL
  1633.         LD      A,(DE)
  1634.         INC     DE
  1635.         RRCA
  1636.         RRCA
  1637.         LD      C,A
  1638.         AND     #3F
  1639.         XOR     (HL)
  1640.         LD      (HL),A
  1641.         LD      A,C
  1642.         AND     #C0
  1643.         INC     HL
  1644.         XOR     (HL)
  1645.         LD      (HL),A
  1646.         RET
  1647.  
  1648. DSP6    LD      A,(DE)
  1649.         INC     DE
  1650.         RLCA
  1651.         RLCA
  1652.         LD      C,A
  1653.         AND     %11
  1654.         OR      (HL)
  1655.         LD      (HL),A
  1656.         LD      A,C
  1657.         AND     #FC
  1658.         INC     HL
  1659.         OR      (HL)
  1660.         LD      (HL),A
  1661.         DEC     HL
  1662.         LD      A,(DE)
  1663.         INC     DE
  1664.         RLCA
  1665.         RLCA
  1666.         LD      C,A
  1667.         AND     #3
  1668.         XOR     (HL)
  1669.         LD      (HL),A
  1670.         LD      A,C
  1671.         AND     #FC
  1672.         INC     HL
  1673.         XOR     (HL)
  1674.         LD      (HL),A
  1675.         RET
  1676.  
  1677. DSP0    LD      A,(DE)
  1678.         INC     DE
  1679.         OR      (HL)
  1680.         LD      (HL),A
  1681.         LD      A,(DE)
  1682.         INC     DE
  1683.         XOR     (HL)
  1684.         LD      (HL),A
  1685.         INC     HL
  1686.         RET
  1687.  
  1688. GET_XY  LD L,(IX) ;текущ.коорд
  1689.         LD H,(IX+1)
  1690.         RET
  1691.  
  1692. NXtXY   DEFW #2C00,#2C25,#0025,#2D25,#2D00,#2D24,#0024,#2C24
  1693.         ;+X(#2C) -X(#2D) +Y(#24) -Y(#25)
  1694. NEXTXY  LD A,(IX+3) ;след.коорд
  1695.         LD HL,NXtXY
  1696.         CALL WT
  1697.         LD (NEXXY),HL
  1698.         CALL GET_XY
  1699. NEXXY   DEC L
  1700.         DEC H
  1701.         RET
  1702.  
  1703. PHASE   DEFB 0
  1704.  
  1705. HERMOV  LD C,A ;передв. акв. (С-поворот)
  1706.         LD A,(PHASE)
  1707.         OR A
  1708.         JR NZ,MOV4
  1709.         LD IX,(HER_AD)
  1710.         LD A,(IX+3)
  1711.         LD D,A
  1712.         CP C
  1713.         JR Z,MOV1
  1714.         SUB C
  1715.         AND 7
  1716.         CP 4
  1717.         LD A,D
  1718.         JR NC,MOV2
  1719.         DEC A
  1720.         JR MOV3
  1721. MOV2    INC A
  1722. MOV3    AND 7
  1723.         LD (IX+3),A
  1724. MOV6    CALL GET_XY
  1725.         LD (TX),HL
  1726.         CALL PXYF
  1727.         SCF
  1728.         RET
  1729. MOV1    CALL GET_XY ;чел вых
  1730.         PUSH HL
  1731.         CALL NEXTXY
  1732.         CALL DOOR
  1733.         LD (IX),L
  1734.         LD (IX+1),H
  1735.         POP HL
  1736.         LD A,(IX+7)
  1737.         AND #7F
  1738.         LD (TX),HL
  1739.         CALL PSP
  1740.         CALL PXYF
  1741.         LD A,4
  1742.         LD (PHASE),A
  1743. MOV4    CALL GET_XY
  1744.         LD (TX),HL
  1745.         LD HL,PHASE
  1746.         DEC (HL)
  1747.         LD A,(HL)
  1748.         OR A
  1749.         JR NZ,MOV7
  1750.         CALL GSP
  1751.         LD (IX+7),A
  1752.         LD A,(HER_N)
  1753.         ADD A,#60
  1754.         CALL PSP
  1755.         CALL PXYF
  1756.         XOR A
  1757.         RET
  1758. MOV7    CALL INFR
  1759.         CCF
  1760.         RET C
  1761.         CALL XYHL
  1762.         LD (TXT),HL
  1763.         LD A,(PHASE)
  1764.         AND 1
  1765.         LD C,(IX+3)
  1766.         ADD A,C
  1767.         ADD A,C
  1768.         CALL M96
  1769.         LD A,(IX+4)
  1770.         RLCA
  1771.         LD C,A
  1772.         RLCA
  1773.         ADD A,C
  1774.         ADD A,H
  1775.         LD H,A
  1776.         LD DE,xHERO
  1777.         ADD HL,DE
  1778.         EX DE,HL
  1779.         LD A,(IX+3)
  1780.         LD C,A
  1781.         RLCA
  1782.         ADD A,C
  1783.         LD C,A
  1784.         LD A,(PHASE)
  1785.         DEC A
  1786.         ADD A,C
  1787.         PUSH AF
  1788.         LD HL,xROT
  1789.         CALL BA
  1790.         EX AF,AF
  1791.         POP AF
  1792.         LD HL,xDHL
  1793.         CALL WT
  1794.         LD BC,DSCR+257
  1795.         ADD HL,BC
  1796.         LD BC,(TXT)
  1797.         ADD HL,BC
  1798.         EX AF,AF
  1799.         CALL HERO
  1800.         LD A,(IX+3)
  1801.         LD HL,xRELT
  1802.         CALL WT
  1803.         LD (CREL+1),HL
  1804.         CALL GET_XY
  1805. CREL    CALL #3D13
  1806.         SCF
  1807.         RET
  1808.  
  1809. xDHL    DEFW  -33,-65,-97,-1,-1,-2,31,63,95,64,128,192
  1810.         DEFW  32,64,96,0,1,1,-32,-64,-96,-64,-128,-192
  1811. xROT    DEFB 3,2,1,2,0,2,3,2,1,0,0,0,1,2,3,2,0,2,1,2,3,0,0,0
  1812. xRELT   DEFW XR1,XR3A,XR2A,XR2B,XR1A,XR3,XR2,XR1
  1813.  
  1814. XR1A    INC L
  1815. XR1     INC L
  1816.         CALL RELA
  1817.         DEC L
  1818.         INC H
  1819.         CALL RELA
  1820.         DEC L
  1821.         JR RELA
  1822. XR2B    INC L
  1823. XR2A    INC H
  1824. XR2     INC H
  1825.         CALL RELA
  1826.         DEC H
  1827.         INC L
  1828.         CALL RELA
  1829.         DEC H
  1830. RELA    LD (TX),HL
  1831.         PUSH HL
  1832.         CALL RELAX
  1833.         POP HL
  1834.         RET
  1835. XR3A    INC H
  1836.         DEC L
  1837. XR3     INC H
  1838.         CALL RELA
  1839.         DEC H
  1840.         INC L
  1841.         CALL RELA
  1842.         DEC H
  1843.         INC L
  1844.         JR RELA
  1845.  
  1846. GB_AD   DEFW 0
  1847. GBU     PUSH HL
  1848.         PUSH DE
  1849.         LD (GB_AD),HL ;сохр.изобр.при передвиж
  1850.         LD DE,DATR+128
  1851.         LD A,24
  1852. GBU1    LDI
  1853.         LDI
  1854.         LDI
  1855.         LD BC,29
  1856.         ADD HL,BC
  1857.         DEC A
  1858.         JR NZ,GBU1
  1859.         POP DE
  1860.         POP HL
  1861.         RET
  1862.  
  1863. PBU     LD DE,(GB_AD) ;восст
  1864.         LD A,D
  1865.         OR A
  1866.         RET Z
  1867.         XOR A
  1868.         LD (GB_AD+1),A
  1869.         LD HL,DATR+128
  1870.         LD A,24
  1871. PBU1    LDI
  1872.         LDI
  1873.         LDI
  1874.         EX DE,HL
  1875.         LD BC,29
  1876.         ADD HL,BC
  1877.         EX DE,HL
  1878.         DEC A
  1879.         JR NZ,PBU1
  1880.         RET
  1881.  
  1882. DECPAR  ;уменьшить время(D) и энергию(E);C-нехватает
  1883. ; XOR A
  1884. ; RET
  1885.         CALL MEM7
  1886.         LD IX,(HER_AD)
  1887.         BIT 0,(IX+5)
  1888.         EX AF,AF
  1889.         LD A,(IX+11)
  1890.         SUB D
  1891.         JR C,NOTU
  1892.         LD D,A
  1893.         LD A,(IX+12)
  1894.         SUB E
  1895.         JR C,NOEN
  1896.         LD (IX+12),A
  1897.         LD (IX+11),D
  1898.         EX AF,AF
  1899.         JR NZ,DCP2
  1900.         EX AF,AF
  1901.         LD HL,#51D
  1902.         LD (SX),HL
  1903.         CALL WB
  1904.         LD A,D
  1905.         LD HL,#21D
  1906.         LD (SX),HL
  1907.         CALL WB
  1908. DCP2    CALL PT128
  1909.         XOR A
  1910.         RET
  1911. NOTU    EX AF,AF
  1912.         JR NZ,DCP0
  1913.         LD HL,#1D
  1914.         JR DCP3
  1915. NOEN    EX AF,AF
  1916.         JR NZ,DCP0
  1917.         LD HL,#31D
  1918. DCP3    LD B,6
  1919.         LD C,#55
  1920. DCPL    PUSH BC
  1921.         LD B,3
  1922. DCPP    CALL E_I
  1923.         DJNZ DCPP
  1924.         LD A,C
  1925.         LD BC,#302
  1926.         CALL ATRBAR
  1927.         POP BC
  1928.         LD A,C
  1929.         XOR #27
  1930.         LD C,A
  1931.         DJNZ DCPL
  1932. DCP0    CALL PT128
  1933.         SCF
  1934.         RET
  1935.  
  1936.  
  1937. DOOR    ;LD A,1
  1938.         ;LD (isMVIS),A
  1939. DOOR_   PUSH HL
  1940.         LD (TX),HL ;откр дверь
  1941.         CALL ATSP
  1942.         AND %11100
  1943.         CP %100
  1944.         JR NZ,door2
  1945.         CALL GSP60
  1946.         PUSH AF
  1947. door3   CALL GSP
  1948.         PUSH AF
  1949.         AND #7F
  1950.         LD HL,xCONV
  1951.         CALL BA
  1952.         LD L,A
  1953.         POP AF
  1954.         AND #80
  1955.         OR L
  1956.         CALL PSP
  1957.         CALL PXYF
  1958.         ;LD A,(isMVIS)
  1959.         ;OR A
  1960.         ;JR Z,doorN
  1961.         LD A,7
  1962.         CALL DELAY
  1963.         CALL OUTDSA
  1964. doorN   POP AF
  1965.         POP HL
  1966.         PUSH HL
  1967.         PUSH AF
  1968.         LD (TX),HL ;откр дверь
  1969.         CALL ATSP
  1970.         AND %11100
  1971.         CP %100
  1972.         JR Z,door3
  1973.         CALL SET_AD ;зап поз дв
  1974.         LD DE,(TX)
  1975.         LD (HL),E
  1976.         INC HL
  1977.         LD (HL),D
  1978.         INC HL
  1979.         LD A,(FLR)
  1980.         LD (HL),A
  1981.         INC HL
  1982.         CALL GSP60
  1983.         LD (HL),A
  1984.         INC HL
  1985.         POP AF
  1986.         LD (HL),A
  1987. door2   POP HL
  1988.         RET
  1989.  
  1990. ;(C) 1995 MEDNONOGOV
  1991. ;таблица просмотра сектора (45гр.,R=16) (N_PRED,#dYdX)
  1992. VTAB    DEFB 0,0 ;0
  1993.         DEFB 0,#10
  1994.         DEFB 0,#11
  1995.         DEFB 1,#20
  1996.         DEFB 2,#21
  1997.         DEFB 2,#22
  1998.         DEFB 3,#30
  1999.         DEFB 3,#31
  2000.         DEFB 6,#40
  2001.         DEFB 6,#41
  2002.         DEFB 4,#32
  2003.         DEFB 5,#33
  2004.         DEFB 8,#50
  2005.         DEFB 9,#51
  2006.         DEFB 7,#42
  2007.         DEFB 10,#43
  2008.         DEFB 11,#44
  2009.         DEFB 12,#60
  2010.         DEFB 13,#61
  2011.         DEFB 14,#52
  2012.         DEFB 15,#53
  2013.         DEFB 16,#54
  2014.         DEFB 17,#70
  2015.         DEFB 18,#71
  2016.         DEFB 19,#62
  2017.         DEFB 19,#63
  2018.         DEFB 20,#64
  2019.         DEFB 16,#55
  2020.         DEFB 22,#80
  2021.         DEFB 23,#81
  2022.         DEFB 24,#72
  2023.         DEFB 25,#73
  2024.         DEFB 26,#74
  2025.         DEFB 21,#65
  2026.         DEFB 27,#66
  2027.         DEFB 28,#90 ;35
  2028.         DEFB 29,#91
  2029.         DEFB 30,#82
  2030.         DEFB 31,#83
  2031.         DEFB 32,#84
  2032.         DEFB 26,#75
  2033.         DEFB 33,#76
  2034.         DEFB 34,#77
  2035.         DEFB 35,#A0
  2036.         DEFB 35,#A1
  2037.         DEFB 36,#A2
  2038.         DEFB 37,#92
  2039.         DEFB 38,#93
  2040.         DEFB 39,#94
  2041.         DEFB 39,#95
  2042.         DEFB 40,#85
  2043.         DEFB 41,#86
  2044.         DEFB 42,#87
  2045.         DEFB 42,#88
  2046.         DEFB 43,#B0
  2047.         DEFB 44,#B1
  2048.         DEFB 45,#B2
  2049.         DEFB 46,#A3
  2050.         DEFB 47,#A4
  2051.         DEFB 48,#A5
  2052.         DEFB 49,#A6
  2053.         DEFB 50,#96
  2054.         DEFB 51,#97
  2055.         DEFB 52,#98
  2056.         DEFB 53,#99
  2057.         DEFB 54,#C0
  2058.         DEFB 55,#C1
  2059.         DEFB 56,#C2
  2060.         DEFB 57,#B3
  2061.         DEFB 58,#B4
  2062.         DEFB 59,#B5 ;70
  2063.         DEFB 60,#B6
  2064.         DEFB 61,#A7
  2065.         DEFB 62,#A8
  2066.         DEFB 63,#A9
  2067.         DEFB 65,#D0
  2068.         DEFB 66,#D1
  2069.         DEFB 67,#D2
  2070.         DEFB 68,#C3
  2071.         DEFB 69,#C4
  2072.         DEFB 70,#C5
  2073.         DEFB 72,#B7
  2074.         DEFB 72,#B8
  2075.         DEFB 73,#B9
  2076.         DEFB 64,#AA
  2077.         DEFB 75,#E0
  2078.         DEFB 76,#E1
  2079.         DEFB 77,#E2
  2080.         DEFB 78,#D3
  2081.         DEFB 79,#D4
  2082.         DEFB 79,#D5
  2083.         DEFB 71,#C6
  2084.         DEFB 71,#C7
  2085.         DEFB 81,#C8
  2086.         DEFB 74,#BA
  2087.         DEFB 85,#F0
  2088.         DEFB 86,#F1
  2089.         DEFB 87,#F2
  2090.         DEFB 77,#E3
  2091.         DEFB 88,#E4
  2092.         DEFB 89,#E5
  2093.         DEFB 80,#D6
  2094.         DEFB 91,#D7
  2095.         DEFB 82,#C9 ;103
  2096.  
  2097. INILOK  LD B,32 ;просмотр перед новым ходом
  2098. ILL1    PUSH BC
  2099.         LD A,B
  2100.         DEC A
  2101.         CALL NEWHER
  2102.         LD IX,(HER_AD)
  2103.         CALL HERLIV
  2104.         JR Z,ILL2
  2105.         CALL MANALI
  2106.         JR NZ,ILL2
  2107.         CALL GET_DE
  2108.         LD A,(HL)
  2109.         CALL FLOOR
  2110.         CALL LOOKS
  2111. ILL2    POP BC
  2112.         DJNZ ILL1
  2113.         RET
  2114.  
  2115. ;=============================================
  2116. cBOOM   DEFB 00,#00 ;распространение взрыва (2/20,3/36,4/56,6/120)
  2117.         DEFB 00,#10 ;(C)1996 Медноногов В.С.
  2118.         DEFB 00,#01
  2119.         DEFB 00,#F0
  2120.         DEFB 00,#0F
  2121.         DEFB 00,#11
  2122.         DEFB 00,#F1
  2123.         DEFB 00,#FF
  2124.         DEFB 00,#1F
  2125.         DEFB 01,#20
  2126.         DEFB 02,#02
  2127.         DEFB 03,#E0
  2128.         DEFB 04,#0E
  2129.         DEFB 05,#21
  2130.         DEFB 06,#F2
  2131.         DEFB 07,#EF
  2132.         DEFB 08,#1E
  2133.         DEFB 05,#12
  2134.         DEFB 06,#E1
  2135.         DEFB 07,#FE
  2136.         DEFB 08,#2F
  2137.         DEFB 10,#03
  2138.         DEFB 11,#D0
  2139.         DEFB 12,#0D
  2140.         DEFB 09,#30
  2141.         DEFB 10,#F3
  2142.         DEFB 11,#DF
  2143.         DEFB 12,#1D
  2144.         DEFB 09,#31
  2145.         DEFB 11,#D1
  2146.         DEFB 12,#FD ;30
  2147.         DEFB 09,#3F
  2148.         DEFB 10,#13
  2149.         DEFB 06,#E2
  2150.         DEFB 07,#EE
  2151.         DEFB 08,#2E
  2152.         DEFB 05,#22
  2153.         DEFB 22,#C0
  2154.         DEFB 23,#0C
  2155.         DEFB 24,#40
  2156.         DEFB 21,#04
  2157.         DEFB 25,#F4
  2158.         DEFB 14,#E3
  2159.         DEFB 18,#D2
  2160.         DEFB 29,#C1
  2161.         DEFB 26,#CF
  2162.         DEFB 15,#DE
  2163.         DEFB 19,#ED
  2164.         DEFB 30,#FC
  2165.         DEFB 27,#1C
  2166.         DEFB 16,#2D
  2167.         DEFB 20,#3E
  2168.         DEFB 31,#4F
  2169.         DEFB 28,#41
  2170.         DEFB 13,#32
  2171.         DEFB 17,#23
  2172.         DEFB 32,#14
  2173.         DEFB 40,#05
  2174.         DEFB 41,#F5
  2175.         DEFB 42,#E4
  2176.         DEFB 33,#D3 ;60
  2177.         DEFB 43,#C2
  2178.         DEFB 44,#B1
  2179.         DEFB 37,#B0
  2180.         DEFB 45,#BF
  2181.         DEFB 46,#CE
  2182.         DEFB 34,#DD
  2183.         DEFB 47,#EC
  2184.         DEFB 48,#FB
  2185.         DEFB 38,#0B
  2186.         DEFB 49,#1B
  2187.         DEFB 50,#2C
  2188.         DEFB 35,#3D
  2189.         DEFB 51,#4E
  2190.         DEFB 52,#5F
  2191.         DEFB 39,#50
  2192.         DEFB 53,#51
  2193.         DEFB 54,#42
  2194.         DEFB 36,#33
  2195.         DEFB 55,#24
  2196.         DEFB 56,#15
  2197.         DEFB 57,#06
  2198.         DEFB 58,#F6
  2199.         DEFB 41,#E5
  2200.         DEFB 59,#D5
  2201.         DEFB 42,#D4
  2202.         DEFB 60,#C4
  2203.         DEFB 43,#C3
  2204.         DEFB 61,#B3
  2205.         DEFB 44,#B2
  2206.         DEFB 62,#A1 ;90
  2207.         DEFB 63,#A0
  2208.         DEFB 64,#AF
  2209.         DEFB 45,#BE
  2210.         DEFB 65,#BD
  2211.         DEFB 46,#CD
  2212.         DEFB 66,#CC
  2213.         DEFB 47,#DC
  2214.         DEFB 67,#DB
  2215.         DEFB 48,#EB
  2216.         DEFB 68,#FA
  2217.         DEFB 69,#0A
  2218.         DEFB 70,#1A
  2219.         DEFB 49,#2B
  2220.         DEFB 71,#3B
  2221.         DEFB 50,#3C
  2222.         DEFB 72,#4C
  2223.         DEFB 51,#4D
  2224.         DEFB 73,#5D
  2225.         DEFB 52,#5E
  2226.         DEFB 74,#6F
  2227.         DEFB 75,#60
  2228.         DEFB 76,#61
  2229.         DEFB 53,#52
  2230.         DEFB 77,#53
  2231.         DEFB 54,#43
  2232.         DEFB 78,#44
  2233.         DEFB 55,#34
  2234.         DEFB 79,#35
  2235.         DEFB 56,#25
  2236.         DEFB 80,#16 ;120
  2237.         DEFB 0,0
  2238.  
  2239. isILL   ;больные
  2240.         LD B,10
  2241.         LD IX,MAN
  2242.         LD DE,32
  2243. WSI     LD A,(IX+14)
  2244.         OR A
  2245.         JR Z,WSJ
  2246.         LD (IX+8),0
  2247. WSJ     ADD IX,DE
  2248.         DJNZ WSI
  2249.         RET
  2250.  
  2251. TO_INT  ;поcадка в истр
  2252.         LD IX,MAN
  2253.         LD IY,AQNAVT
  2254.         LD B,10
  2255. NI1     LD A,(IY+6) ;не был в бою
  2256.         OR A
  2257.         JR NZ,NI7
  2258.         LD A,(IX+4) ;жив?
  2259.         OR A
  2260.         JR NZ,N_dead
  2261.         LD A,(IX+8)
  2262.         OR A
  2263.         JR Z,N_dead
  2264.         LD A,(IX+13)
  2265.         OR A
  2266.         JR NZ,NI2
  2267. N_dead  LD A,(IY)
  2268.         OR A
  2269.         JR Z,NI2
  2270.         LD (IY),0
  2271.         LD HL,AQU
  2272.         DEC (HL)
  2273. NI2     LD A,(IX+14) ;F.Wound
  2274.         LD (IY+6),A
  2275.         LD A,(IX+26) ;Freez
  2276.         OR A
  2277.         JR Z,NI3
  2278.         INC (IY+6)
  2279.         INC (IY+6)
  2280. NI3     LD C,(IX+17) ;Guns
  2281.         LD (IY+9),C
  2282.         LD C,(IX+18)
  2283.         LD (IY+10),C
  2284.         LD C,(IX+19)
  2285.         LD (IY+11),C
  2286.         LD C,(IX+20)
  2287.         LD (IY+12),C
  2288.         LD A,(BATRES)
  2289.         CP 2
  2290.         JR C,NI7
  2291.                 LD A,7
  2292.                 SUB (IX+9)
  2293.                 RLCA
  2294.                 RLCA
  2295.                 RLCA ;(56/256..8/256)
  2296.                 LD C,A
  2297.                 CALL RND ;уменьш вр до зв в случ победы
  2298.                 CP C
  2299.                 JR NC,NI7
  2300.                 CALL RND
  2301.                 AND 1
  2302.                 INC A
  2303.                 LD (IY+13),A
  2304. NI7     LD DE,16
  2305.         ADD IY,DE
  2306.         LD E,32
  2307.         ADD IX,DE
  2308.         DJNZ NI1
  2309.         RET
  2310.  
  2311. CRC4    DEFB 0;[]
  2312. PICK    ;сбор артеф во времен хран
  2313.         LD IX,ALIEN
  2314.         LD DE,32
  2315.         LD B,22
  2316. PIK1    LD A,(IX+8)
  2317.         OR A
  2318.         JR Z,PIKK
  2319.         ;оружие
  2320.         LD C,17
  2321. PIK0    LD A,C
  2322.         LD (PIKX+2),A
  2323. PIKX    LD A,(IX+17)
  2324.         CP 15
  2325.         JR NC,PIK2
  2326.         LD HL,U_GUN
  2327.         CALL BA
  2328.         INC (HL)
  2329. PIK2    INC C
  2330.         LD A,C
  2331.         CP 21
  2332.         JR C,PIK0
  2333.         ;тела/живьём
  2334.         LD A,(IX+13)
  2335.         OR A
  2336.         JR NZ,PIKLI
  2337. PIKDI   LD HL,U_ART+9
  2338.         JR PIK3
  2339. PIKLI   LD A,(IX+4)
  2340.         CP 2
  2341.         JR NZ,PIK4
  2342.         LD A,(RS+22) ;дайп?
  2343.         OR A
  2344.         JR NZ,PIKDI
  2345.         LD A,2
  2346. PIK4    LD HL,U_LIV-1
  2347.         CALL BA
  2348. PIK3    INC (HL)
  2349. PIKK    ADD IX,DE
  2350.         DJNZ PIK1
  2351.         ;корпуса
  2352.         LD A,(L_LAND)
  2353.         PUSH AF
  2354.         OR A
  2355.         JR NZ,PIK6
  2356.         LD HL,U_ART+8
  2357.         INC (HL)
  2358. PIK6    POP AF;зербайт
  2359.         OR A
  2360.         JR Z,PIKz
  2361.         CP 5
  2362.         RET C
  2363.         CP 10
  2364.         RET NC
  2365.         CP 7
  2366.         RET Z
  2367.         LD A,30
  2368. PIKz    ADD A,30
  2369.         LD C,A
  2370.         CALL RND
  2371.         CPL
  2372.         AND 7
  2373.         JR NZ,PIK7
  2374.         LD A,C
  2375.         LD (U_ART+7),A
  2376. PIK7    ;артефакты
  2377.         LD C,16
  2378.         LD HL,U_ART
  2379. PIKAA   LD DE,#E000
  2380. PIKA    LD A,(DE)
  2381.         INC DE
  2382.         AND #7F
  2383.         CP C
  2384.         JP NZ,PIK8
  2385.         INC (HL)
  2386. PIK8    LD A,E
  2387.         OR D
  2388.         JP NZ,PIKA
  2389.         INC HL
  2390.         INC C
  2391.         LD A,C
  2392.         CP 22
  2393.         JR C,PIKAA
  2394.         ;пси-контр
  2395.         LD A,(L_LAND)
  2396.         CP 9
  2397.         RET NZ
  2398.         LD A,(WAREND)
  2399.         OR A
  2400.         RET NZ
  2401.         LD HL,U_ART+6
  2402.         LD DE,#E000
  2403. PIK22   LD A,(DE)
  2404.         AND #7F
  2405.         CP 22
  2406.         JR Z,PIK9
  2407.         INC DE
  2408.         LD A,E
  2409.         OR D
  2410.         JR NZ,PIK22
  2411.         RET
  2412. PIK9    LD (HL),1
  2413.         RET
  2414.  
  2415.        if PROTECT
  2416.         ;4 - пров свопперов []
  2417. CHK_4   LD A,(PERIOD)
  2418.         CP 3
  2419.         RET C
  2420.         LD HL,(CRC4)
  2421.         PUSH HL
  2422.         LD DE,LQWE-MAN
  2423.         LD BC,+(B_LOOP-LQWE) *256 +8
  2424.         LD IX,MAN
  2425.         ADD IX,DE
  2426. prt4    LD A,(IX+2)
  2427.         OR A
  2428.         JR Z,prt44
  2429.         ADD A,C
  2430.         LD C,A
  2431. prt44   INC IX
  2432.         DJNZ prt4
  2433.         POP HL
  2434.         CP L
  2435.         RET Z
  2436.         CALL NZ,SWPBAT
  2437.         JP BEEP
  2438.        endif
  2439.