?login_element?

Subversion Repositories NedoOS

Rev

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

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