?login_element?

Subversion Repositories NedoOS

Rev

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

  1. MENUC   ;выв меню с копир
  2.         CALL MENU
  3.         CALL MEM7
  4.         JP COPYAT
  5.  
  6. SETPER  ;установить ПЕРИОД
  7.         LD C,4
  8.         LD A,(DAT+13)
  9.         CP 8
  10.         JR NC,SPER
  11.         LD A,(DAT+14)
  12.         LD C,0
  13.         CP 2
  14.         JR C,SPER
  15.         INC C ;1
  16.         CP 3
  17.         JR C,SPER
  18.         INC C ;2
  19.         CP 5
  20.         JR C,SPER
  21.         INC C ;3
  22.         CP 8
  23.         JR C,SPER
  24.         INC C ;4
  25. SPER    LD A,(RS+49)
  26.         OR A
  27.         JR NZ,SPE2
  28.         LD C,5
  29.         LD A,(RS+58)
  30.         OR A
  31.         JR NZ,SPE2
  32.         INC C
  33. SPE2    LD A,C
  34.         LD (PERIOD),A
  35.         RET
  36.  
  37. T50     DEFB 5
  38. TIM50   LD HL,T50 ;Z-sec
  39.         DEC (HL)
  40.         RET NZ
  41. TIM50_  LD (HL),50
  42.         RET
  43.  
  44. TIMS    LD      HL,TIM+7 ;Счёт времени (NC-переход в начало)
  45.         INC     (HL)
  46.         LD      A,(HL)
  47.         CP      10
  48.         RET     C
  49.         LD      (HL),0
  50.         DEC     HL
  51.         INC     (HL)
  52.         LD      A,(HL)
  53.         CP      6
  54.         RET     C
  55.         LD      (HL),0
  56.         RET
  57. TIMM    LD      HL,TIM+4
  58.         INC     (HL)
  59.         LD      A,(HL)
  60.         CP      10
  61.         RET     C
  62.         LD      (HL),0
  63.         DEC     HL
  64.         INC     (HL)
  65.         LD      A,(HL)
  66.         CP      6
  67.         RET     C
  68.         LD      (HL),0
  69.         RET
  70. TIMH    LD      HL,TIM+1
  71.         INC     (HL)
  72.         LD      A,(HL)
  73.         CP      4
  74.         JR      NZ,T2
  75.         DEC     HL
  76.         LD      A,(HL)
  77.         CP      2
  78.         RET     C
  79.         XOR     A
  80.         LD      (HL),A
  81.         INC     HL
  82.         LD      (HL),A
  83.         RET
  84. T2      CP      10
  85.         RET     C
  86.         LD      (HL),0
  87.         DEC     HL
  88.         INC     (HL)
  89.         SCF
  90.         RET
  91.  
  92. DATE    LD HL,nDAT
  93.         INC (HL)
  94.         JR NZ,DM4
  95.         INC HL
  96.         INC (HL)
  97. DM4     LD HL,MNT
  98.         LD A,(DAT+14)
  99.         CALL WA
  100.         LD E,A
  101.         INC HL
  102.         LD D,(HL)
  103.         LD HL,(DAT)
  104.         PUSH HL
  105.         OR A
  106.         SBC HL,DE
  107.         POP HL
  108.         JR NZ,DM1
  109.         LD HL,#100
  110. DM2     LD (DAT),HL
  111.         RET
  112. DM1     INC H
  113.         LD A,H
  114.         CP 10
  115.         JR C,DM2
  116.         INC L
  117.         LD H,255
  118.         JR DM1
  119.  
  120. MONTH   LD HL,DAT+14
  121.         INC (HL)
  122.         LD A,(HL)
  123.         CP 12
  124.         JR C,DM3
  125.         XOR A
  126.         LD (HL),A
  127. DM3     PUSH AF
  128.         ADD A,A
  129.         LD HL,MNAME
  130.         CALL DD
  131.         LD DE,DAT+2
  132.         LD BC,8
  133.         LDIR
  134.         POP AF
  135.         RET
  136.  
  137. YEAR    LD HL,DAT+13
  138.         INC (HL)
  139.         LD A,(HL)
  140.         CP 10
  141.         RET ;>2019-end
  142.  
  143.  
  144. PD4     CALL PD2
  145. PD2     CALL PDD
  146. PDD     PUSH HL
  147.         LD L,(HL)
  148.         LD H,0
  149.         ADD HL,HL
  150.         ADD HL,HL
  151.         ADD HL,HL
  152.         LD BC,FONT+1
  153.         ADD HL,BC
  154.         LD B,6
  155.         PUSH DE
  156. PD0     LD A,(HL)
  157.         LD (DE),A
  158.         INC HL
  159.         INC D
  160.         DJNZ PD0
  161.         POP DE
  162.         POP HL
  163.         INC E
  164.         INC HL
  165.         RET
  166.  
  167. PUTDAT   ;вывод времени
  168.         LD DE,SCR+24
  169. PDDS    LD HL,TIM
  170.         CALL PD4
  171.         CALL PD4
  172.         LD E,32+27
  173.         CALL PD2
  174.         LD E,64+24
  175.         CALL PD4
  176.         CALL PD4
  177.         LD E,96+26
  178.         CALL PD4
  179.         RET
  180.  
  181. ;вывод карты
  182. XEARTH  Ms 3+#80
  183.         XOR A
  184.         LD (T_M),A
  185.         CALL STD
  186.         CALL OFFD
  187.         LD A,(C_ONOF)
  188.         OR A
  189.         LD HL,#6960
  190.         JR Z,XE7
  191.         LD HL,#6838
  192. XE7     PUSH HL
  193.         LD A,L
  194.         LD BC,#1809 ;монитор
  195.         LD HL,#F00
  196.         CALL ATRBAR
  197.         LD DE,xEARTH
  198.         LD HL,0
  199.         LD BC,#180F
  200.         CALL PUTSIM
  201.         POP AF;цвет карты
  202.         CALL ATRBAR
  203.         LD L,24
  204.         LD BC,#804
  205.         LD A,#68;цвет часов
  206.         CALL ATRBAR
  207.         LD H,4
  208.         LD C,20
  209.         LD A,#30;кнопки
  210.         CALL ATRBAR
  211. XEART2  LD DE,xLABEL+128
  212.         LD C,5
  213. XE0     LD B,2
  214.         LD L,24
  215. XE1     PUSH BC
  216.         PUSH HL
  217.         PUSH DE
  218.         LD DE,xBUTTON
  219.         LD BC,#404
  220.         CALL PUTSIM
  221.         POP DE
  222.         LD BC,#202
  223.         INC H
  224.         INC L
  225.         CALL PUTSIM
  226.         LD HL,32
  227.         ADD  HL,DE
  228.         EX DE,HL
  229.         POP HL
  230.         LD L,28
  231.         POP BC
  232.         DJNZ XE1
  233.         LD A,4
  234.         ADD A,H
  235.         LD H,A
  236.         DEC C
  237.         JR NZ,XE0
  238. ;;              CALL OUTPER
  239.         JP MEM7
  240.  
  241. OUTPER  CALL STD ;выв периода войны []
  242.         LD HL,#115
  243.         LD (SX),HL
  244.         LD A,(PERIOD)  
  245.         JP WB
  246.  
  247. TARBUT  Ms 3
  248.         LD DE,xLABEL+416;кнопки целей
  249.         LD BC,#202
  250.         LD HL,#1519
  251.         CALL STD
  252.         CALL PUTSIM
  253.         LD DE,xLABEL+448
  254.         LD L,#1D
  255.         CALL PUTSIM
  256.         LD HL,#519
  257.         LD DE,xLABEL+480
  258.         EXX
  259.         LD B,4
  260.         LD HL,T_UFO
  261. TB0     LD C,2
  262. TB1     LD A,(HL)
  263.         INC HL
  264.         EXX
  265.         EX AF,AF
  266.         CALL PUTSIM
  267.         EX AF,AF
  268.         XOR #FF
  269.         CALL Z,SIMBAR
  270.         LD A,32
  271.         ADD A,E
  272.         LD E,A
  273.         JR NC,TB3
  274.         INC D
  275. TB3     LD L,#1D
  276.         EXX
  277.         DEC C
  278.         JR NZ,TB1
  279.         EXX
  280.         LD A,4
  281.         ADD A,H
  282.         LD H,A
  283.         LD L,#19
  284.         EXX
  285.         DJNZ TB0
  286.         LD L,#38
  287. TARBU2  CALL MEM7
  288.         CALL STS
  289.         LD A,L
  290.         LD HL,#418
  291.         LD BC,#814
  292.         CALL ATRBAR
  293.         LD HL,DSCR+25
  294.         LD DE,SCR+25
  295.         LD A,192
  296. TB5     LDI
  297.         LDI
  298.         INC L
  299.         INC L
  300.         INC E
  301.         INC E
  302.         LDI
  303.         LDI
  304.         LD BC,26
  305.         ADD HL,BC
  306.         EX DE,HL
  307.         ADD HL,BC
  308.         EX DE,HL
  309.         DEC A
  310.         JR NZ,TB5
  311.         RET
  312.  
  313. PMAP    INC L ;Перекрестье цели(HL)
  314.         INC H
  315.         LD B,8
  316. Pmp     PUSH BC
  317.         PUSH HL
  318.         CALL STS
  319.         CHNs XOR_
  320.         LD D,H
  321.         LD L,1
  322.         LD E,190
  323.         CALL LINE
  324.         POP HL
  325.         PUSH HL
  326.         LD E,L
  327.         LD H,1
  328.         LD D,118
  329.         CALL LINE
  330.         CALL E_I
  331.         CALL INT0
  332.         POP HL
  333.         POP BC
  334.         DJNZ Pmp
  335.         RET
  336.  
  337. T_M     DEFB    0 ;0/1-НЕТ/ЕСТЬ СТАТ
  338. T_D     DEFB    0 ;0/1-НЕТ/ЕСТЬ ДИН
  339. T_SW    DEFB    0
  340. INT0    LD A,(T_SW) ;выв. объектов
  341.         INC A
  342.         LD (T_SW),A
  343.         RRCA
  344.         JR C,I0
  345.         CALL PUTDAT
  346.         LD A,(T_D)
  347.         XOR 1
  348.         LD (T_D),A
  349.         JP SHOWD
  350. I0      AND 3 ;flash
  351.         RET NZ
  352.         LD A,(T_M)
  353.         XOR 1
  354.         LD (T_M),A
  355.         CALL SHOWT
  356. SHOWS     ;вывод баз
  357.         LD A,SCR/256
  358.         CALL SELSCR
  359.         CHNs XOR_
  360.         LD DE,SPM+4
  361.         LD BC,#103
  362.         EXX
  363.         LD B,8
  364.         LD HL,XBASE
  365.         LD DE,BASE
  366. SWS0    LD A,(DE)
  367.         INC DE
  368.         CP 100
  369.         EX AF,AF
  370.         LD A,(HL)
  371.         EX AF,AF
  372.         INC HL
  373.         LD A,(HL)
  374.         INC HL
  375.         JR NC,SWS2
  376.         EXX
  377.         LD H,A
  378.         EX AF,AF
  379.         LD L,A
  380.         CALL PUTSPR
  381.         EXX
  382. SWS2    DJNZ SWS0
  383.         RET
  384.  
  385. SHOWD    ;вывод истр. и НЛО
  386.         LD A,SCR/256
  387.         CALL SELSCR
  388.         CHNs XOR_
  389.         LD A,(T_INTR)
  390.         LD DE,SPM
  391.         LD BC,#103
  392.         LD HL,(INTR)
  393.         CP 255
  394.         CALL NZ,PUTSPR
  395.         LD DE,SPM+8
  396.         LD A,(T_UFO)
  397.         CP 255
  398.         RET Z
  399.         LD A,(UFOV)
  400.         OR A
  401.         LD HL,(UFO)
  402.         CALL Z,PUTSPR
  403.         RET
  404.  
  405. SHOWT    ;вывод целей
  406.         LD A,SCR/256
  407.         CALL SELSCR
  408.         CHNs XOR_
  409.         LD IY,SWST
  410.         LD IX,T_SHP
  411.         LD DE,SPM+12
  412.         LD BC,#104
  413.         EXX
  414.         LD B,7
  415. SWS1    EXX
  416.         LD A,(IX)
  417.         CP 255
  418.         JR Z,SWS3
  419.         LD L,(IY)
  420.         LD H,(IY+1)
  421.         CALL WT
  422.         CALL PUTSPR
  423. SWS3    INC DE
  424.         INC DE
  425.         INC DE
  426.         INC DE
  427.         INC IX
  428.         INC IY
  429.         INC IY
  430.         EXX
  431.         DJNZ SWS1
  432.         RET
  433. SWST    DEFW SHIP,PORT,ISLN,XBASE,UCOLON,UBASE,TLETH
  434.  
  435. NBUTT   LD HL,(MX);N КНОПКИ (0-9)
  436.         LD A,L
  437.         CP #E0
  438.         LD B,0
  439.         JR C,NUI
  440.         INC B
  441. NUI     LD A,H
  442.         SUB 32
  443.         RRCA
  444.         RRCA
  445.         RRCA
  446.         RRCA
  447.         AND #E
  448.         ADD A,B
  449.         RET
  450.  
  451. T_COOR  LD B,A
  452.         LD HL,(UFO) ;A-n,HL-coord
  453.         OR A
  454.         RET Z
  455.         LD HL,T_UFO
  456.         CALL BA
  457.         LD C,A
  458.         LD A,B
  459.         LD HL,SWST-2
  460.         CALL WT
  461.         LD A,C
  462.         JP WT
  463.  
  464. SELTAR  LD A,(T_INTR)
  465.         RLA
  466.         JR NC,NQY
  467.         LD A,27
  468. NQ_NO   CALL DISPL
  469.         JR NQR4
  470. NQY     LD A,(AQU)
  471.         OR A
  472.         JR NZ,NQW
  473.         LD A,41
  474.         JR NQ_NO
  475. NQW     LD HL,T_UFO
  476.         LD B,8
  477. NQQ     LD A,(HL)
  478.         INC HL
  479.         RLA
  480.         JR NC,NQS
  481.         DJNZ NQQ
  482.         LD A,17
  483.         CALL DISPL
  484.         JR NQR4
  485. NQS     CALL TARBUT
  486. NQR0    CALL INT0
  487.         CALL MARK_
  488.         JR C,NQR0
  489. NQR1    CALL INT0
  490.         CALL MARK_
  491.         JR NC,NQR1
  492.         CALL NBUTT
  493.         CP 8
  494.         JR Z,NQI
  495.         JR NC,NQR4
  496.         LD B,A
  497.         LD HL,T_UFO
  498.         CALL BA
  499.         CP 255
  500.         JR Z,NQR1
  501.         LD A,B
  502.         CP 7
  503.         JR NZ,NQR11
  504.         LD A,(T_INTR)
  505.         CP 2
  506.         JR Z,NQR11
  507.         LD A,31
  508.         CALL DISPL
  509.         JR NQR1
  510. NQR11   LD A,B
  511.         LD (T_TYPE),A
  512.         CALL T_COOR
  513.         LD (INTR_T),HL
  514.         CALL PMAP
  515.         LD A,(T_TYPE)
  516.         ADD A,145
  517.         LD (DSDAT),A
  518.         LD A,21
  519.         CALL DISPLX
  520. NQR4    CALL INT0
  521.         CALL MARK_
  522.         JR C,NQR4
  523.         Ms 3+#40
  524.         LD HL,#418
  525.         CALL XEART2
  526.         LD L,#30
  527.         CALL TARBU2
  528.         JP T_SLOW
  529. NQI     LD A,18
  530.         CALL DISPLX
  531.         LD B,145
  532.         LD HL,T_UFO
  533. NQI1    pushs
  534.         LD A,(HL)
  535.         CP 255
  536.         JR Z,NQI2
  537.         LD A,B
  538.         LD (DSDAT),A
  539.         CP 147
  540.         LD A,19
  541.         JR C,NQI3
  542.         LD A,B
  543.         CP 150
  544.         LD A,19
  545.         JR NC,NQI3
  546.         LD A,B
  547.         LD C,216
  548.         CP 148
  549.         JR Z,NQI4
  550.         LD C,192
  551.         JR NC,NQI4
  552.         LD C,200
  553. NQI4    LD A,(HL)
  554.         ADD A,C
  555.         LD (DSDAT+1),A
  556.         LD A,20
  557. NQI3    CALL DISPLX
  558.         pops
  559.         pushs
  560.         LD A,B
  561.         SUB 145
  562.         CALL T_COOR
  563.         CALL PMAP
  564. NQI2    pops
  565.         INC HL
  566.         INC B
  567.         LD A,B
  568.         CP 153
  569.         JR C,NQI1
  570.         JP NQR1
  571.  
  572.        if PROTECT
  573. CHK_2   LD A,#80 ;[] check CRC2
  574.         CALL MEM
  575.         LD HL,SCR
  576.         PUSH HL
  577.         LD BC,#2000
  578.         ADD HL,BC
  579.         POP DE
  580. Crt1    LD A,(DE)
  581.         CP (HL)
  582.         JR Z,Crt1_
  583.         DEC C
  584.         ADD A,B
  585.         ADD A,(HL)
  586.         LD B,A
  587. Crt1_   INC HL
  588.         INC DE
  589.         LD A,H
  590.         OR L
  591.         JR NZ,Crt1
  592.         RET
  593.        endif
  594.  
  595. I_RET   LD A,255
  596.         LD (T_TYPE),A
  597.         LD A,(T_INTR)
  598.         RLA
  599.         LD A,27
  600.         JR C,I_RE2
  601.         LD HL,(XBASE)
  602.         LD DE,(INTR)
  603.         PUSH HL
  604.         SBC HL,DE
  605.         POP HL
  606.         LD A,42
  607.         JP Z,I_RE2
  608.         LD (INTR_T),HL
  609.         LD A,3
  610. I_RE2   CALL DISPL
  611.         JR T_SLOW
  612.  
  613. GOhome  LD A,255
  614.         LD (T_TYPE),A
  615.         LD HL,(XBASE)
  616.         LD (INTR_T),HL
  617.         RET
  618.  
  619. STOP_T  XOR A
  620.         INC A
  621.         LD (ST_TIM),A
  622.         RET
  623.  
  624. ST_TIM  DEFB 0 ;не 0 -вызов Т_SLOW
  625. T_SLOW  LD HL,#400+50
  626.         LD DE,LNXT
  627.         JR FMS
  628.  
  629. T_MID   LD HL,#800+1
  630.         LD DE,LNXT
  631.         JR FMS
  632.  
  633. T_FAST  LD HL,#C00+1
  634.         LD DE,LLF2
  635. FMS     XOR A
  636.         LD (ST_TIM),A
  637.         LD (LLF1+1),DE
  638.         LD A,L
  639.         LD (TIM50_+1),A
  640.         LD (T50),A
  641.         LD L,28
  642.         PUSH HL
  643.         CALL STS
  644.         ATRs #41C,#40C,#30
  645.         POP HL
  646.         LD C,4
  647.         LD A,#68
  648.         CALL ATRBAR
  649.         JR LOOP
  650.  
  651. LOOPT   DEFW XMENUS,T_SLOW,I_RET,T_MID,SELTAR
  652.         DEFW T_FAST,UPEDIA,OPTION,FINANS,INFO
  653.  
  654. XMR     CALL NOKEYw
  655. MLOOP   LD SP,#403E
  656.         CALL MEM7
  657.         CALL XEARTH;*******Главный цикл
  658.         LD DE,DSCR+24
  659.         CALL PDDS
  660.         CALL LODMON
  661.         LD A,(SYSINI)
  662.         OR A
  663.         JR Z,M_LOOP
  664.         CALL DISPL
  665.         XOR A
  666.         LD (SYSINI),A
  667. M_LOOP  CALL INIBUT
  668.         CALL RECRUT
  669.         CALL CALC
  670.         CALL RS254
  671.         CALL SETPER
  672.         XOR A
  673.         LD (T_D),A
  674.         CALL isTLEF
  675.         JP T_SLOW
  676. LOOP    CALL STDCFG
  677.         CALL INT0
  678.         CALL TIM50
  679.         JR NZ,LNXT
  680.         CALL TIMS
  681. LLF1    JP C,LNXT
  682. LLF2    CALL ACTM
  683.         CALL TIMM
  684.         JR C,LNXT
  685.         CALL ACTH
  686.         CALL TARh
  687.         CALL TIMH
  688.         JR C,LNXT
  689.         CALL DATE
  690.         PUSH AF
  691.         CALL ACTD
  692.         POP AF
  693.         JR C,LNXT
  694.         CALL Mn_FIN
  695.         CALL MONTH
  696.         JR C,LNXT
  697.         CALL YEAR
  698.         JR C,LNXT
  699.         CALL SMERT
  700. LNXT    LD BC,#FDFE
  701.         IN A,(C)
  702.         CPL
  703.         AND %1110
  704.         JR Z,ML2
  705.         RRA
  706.         PUSH AF
  707.         CALL MARK_
  708.         POP AF
  709.         RRA
  710.         JP C,T_SLOW
  711.         RRA
  712.         JP C,T_MID
  713.         RRA
  714.         JP C,T_FAST
  715. ML2     LD A,(ST_TIM)
  716.         OR A
  717.         JP NZ,T_SLOW
  718.         CALL MARK_
  719.         JR NC,LOOP
  720.         CALL NBUTT
  721.         LD HL,LOOPT
  722.         CALL WT
  723.         JP (HL)
  724.  
  725. MU00    DEFW    #301,#001C,T+89
  726.         DEFB    8
  727. MU01    DEFW    #204,#117,T+1,12,RS
  728.         DEFW    #903,#118,T+13,3,RS+12
  729.         DEFW    #A04,#118,T+16,3,RS+15
  730.         DEFW    #906,#118,T+19,3,RS+18
  731.         DEFW    #203,#113,T+22,12,RS+21
  732.         DEFW    #707,#115,T+34,9,RS+33
  733.         DEFW    #504,#118,T+43,9,RS+42
  734.         DEFW    #604,#118,T+52,9,RS+51
  735.  
  736.  
  737. LODMON  CALL MEM7
  738.         LD HL,MONINI
  739.         LD A,(HL)
  740.         OR A
  741.         JR NZ,LDM1
  742.         INC (HL)
  743.         CALL    STD
  744.         LD      HL,#F00 ;восст диспл
  745.         LD      DE,ScrBU
  746.         LD      BC,#1809
  747.         CALL    PUTSIM
  748. LDM1    CALL    COPYAT
  749.         LD      A,255
  750.         LD      BC,#1801
  751.         LD      HL,#1700
  752.         CALL      SIMBAR
  753.         LD      HL,#FFFF
  754.         LD      (MBEG),HL
  755.         RET
  756.  
  757. SAVMON  CALL MRK2
  758.         XOR A
  759.         LD (MONINI),A
  760.         CALL    STS
  761.         LD      HL,#F00 ;сохр диспл
  762.         LD      DE,ScrBU
  763.         LD      BC,#1809
  764.         JP      GETSIM
  765.  
  766. optN    DEFW op1,op2,op3,opOK
  767. optD    DEFB 1,1,1,171
  768. XMopt   LD HL,(KEYS)
  769.         LD (_KEYS),HL
  770.         LD HL,(KEYJOY)
  771.         LD (_KEYJ),HL
  772. XMooo   ;опции
  773.         LD DE,optD
  774.         LD A,(C_ONOF)
  775.         ADD A,174
  776.         LD (DE),A
  777.         INC DE
  778.         LD A,(KEYN)
  779.         ADD A,176
  780.         LD (DE),A
  781.         INC DE
  782.         LD A,(_KEYJ+1)
  783.         ADD A,180
  784.         LD (DE),A
  785.         LD IX,MUopt
  786.         CALL SELM
  787.         JR NC,XORT
  788.         LD HL,optN
  789.         CALL WT
  790.         LD (XMO+1),HL
  791. XMO     CALL #38
  792.         JR XMooo
  793.  
  794. op1     LD HL,C_ONOF
  795. op31    LD A,(HL)
  796.         XOR 1
  797.         LD (HL),A
  798.         RET
  799. op3     LD HL,_KEYJ+1
  800.         JR op31
  801. op2     LD HL,KEYN
  802.         LD A,(HL)
  803.         DEC (HL)
  804.         OR A
  805.         JR NZ,op21
  806.         LD (HL),3
  807.         LD A,1
  808. op22    LD (_KEYJ),A
  809.         RET
  810. op21    LD L,(HL)
  811.         LD E,10
  812.         CALL MULB
  813.         LD HL,KBR
  814.         ADD HL,DE
  815.         LD (_KEYS),HL
  816.         XOR A
  817.         JR op22
  818. opOK    POP DE
  819. XORT    LD HL,(_KEYS)
  820.         LD (KEYS),HL
  821.         LD HL,(_KEYJ)
  822.         LD (KEYJOY),HL
  823.         RET
  824.  
  825. _KEYS   DEFW #202
  826. _KEYJ   DEFW #202
  827.  
  828. MUopt   DEFW #C00,#471B,optD
  829.         DEFB 4
  830.  
  831. STDCFG  LD BC,#FEFE ;станд СFG
  832.         IN A,(C)
  833.         AND %1100 ;C
  834.         RET NZ
  835.         XOR A
  836.         LD (KEYJOY),A
  837.         LD (PMOUSE),A
  838.         LD (KEYN),A
  839.         LD HL,KBR
  840.         LD (KEYS),HL
  841.         LD A,#48
  842.         JP DISPLX
  843.  
  844. UPEDIA  CALL    SAVMON
  845.         CALL    RESNUM
  846.         LD      HL,(R_NUM-1)
  847.         CP      H
  848.         CALL    NZ,OFFNUM
  849.         CALL    BACK
  850. UP_XX   LD      IX,MU00
  851.         CALL    SELM
  852.         JR      NC,UP9
  853.         LD      IX,MU01-10
  854.         LD      DE,10
  855.         INC     A
  856.         LD      B,A
  857. UP8     ADD     IX,DE
  858.         DJNZ    UP8
  859.         CALL    SELM
  860.         JR      NC,UP_XX
  861.         LD      L,(IX+4)
  862.         LD      H,(IX+5)
  863.         LD      DE,T
  864.         OR      A
  865.         SBC     HL,DE
  866.         ADD     A,L
  867.         DEC     A
  868.         LD      (USN),A
  869.         XOR     A
  870.         LD      (UST),A
  871.         CALL    UP
  872.         CALL    MEM7
  873. UP9     CALL    MARK_
  874.         JR      C,UP9
  875.         JP      MLOOP
  876.  
  877. ;---------------------работа с маркером
  878.  
  879. OFLINE  LD HL,MTMP  ;выкл.пункт
  880.         LD A,(HL)
  881.         DEC HL
  882.         LD D,(HL)
  883.         LD (HL),A
  884.         INC HL
  885.         CP D
  886.         RET Z
  887.         INC D
  888.         RET Z
  889.         DEC D
  890.         INC HL
  891. ONOFL   INC HL
  892.         LD E,(HL)
  893.         INC HL
  894.         LD B,(HL)
  895.         CALL SCOORD
  896.         LD C,8
  897.         LD E,L
  898.         LD D,B
  899. ONOF1   LD A,(HL)
  900.         CPL
  901.         LD (HL),A
  902.         INC L
  903.         DJNZ ONOF1
  904.         LD B,D
  905.         LD L,E
  906.         INC H
  907.         DEC C
  908.         JR NZ,ONOF1
  909.         RET
  910.  
  911. ONLINE  LD DE,(MXSH)   ;вкл.пункт
  912.         LD A,L
  913.         SUB E
  914.         JR C,NOLINE
  915.         CP D
  916.         JR NC,NOLINE
  917.         LD DE,(MBEG)
  918.         LD A,H
  919.         CP E
  920.         JR C,NOLINE
  921.         CP D
  922.         JR Z,ONL1
  923.         JR C,ONL1
  924. NOLINE  LD HL,MTMP
  925.         LD (HL),255
  926.         INC HL
  927.         LD (HL),255
  928.         RET
  929. ONL1    LD HL,MOLD
  930.         CP (HL)
  931.         RET Z
  932.         INC HL
  933.         LD (HL),A
  934.         LD D,A
  935.         INC HL
  936.         SUB E
  937.         LD (HL),A
  938.         XOR A
  939.         LD (NEW_M),A
  940.         JR ONOFL
  941.  
  942. ;сохранить изображение под стрелкой
  943. GETBUF  LD A,D  ;DE-YX
  944.         CP 176
  945.         JR C,M112
  946.         LD D,176
  947. M112    LD A,E
  948.         CP 232
  949.         JR C,M115
  950.         LD E,232
  951. M115    CALL PCOORD
  952.         LD DE,MBU
  953.         LD B,16
  954. M110    PUSH BC
  955.         PUSH HL
  956.         LDI
  957.         LDI
  958.         LDI
  959.         POP HL
  960.         INC H
  961.         LD A,H
  962.         AND %111
  963.         JR NZ,M114
  964.         LD A,H
  965.         SUB 8
  966.         LD H,A
  967.         LD A,L
  968.         ADD A,32
  969.         LD  L,A
  970.         JR NC,M114
  971.         LD A,8
  972.         ADD A,H
  973.         LD H,A
  974. M114    POP BC
  975.         DJNZ M110
  976.         RET
  977.  
  978. ;восстановить изображение под стрелкой
  979. PUTBUF  LD A,D ;de-xy
  980.         CP 176
  981.         JR C,M192
  982.         LD D,176
  983. M192    LD A,E
  984.         CP 232
  985.         JR C,M195
  986.         LD E,232
  987. M195    CALL PCOORD
  988.         LD DE,MBU
  989.         EX DE,HL
  990.         LD B,16
  991. M190    PUSH BC
  992.         PUSH DE
  993.         LDI
  994.         LDI
  995.         LDI
  996.         POP DE
  997.         INC D
  998.         LD A,D
  999.         AND %111
  1000.         JR NZ,M194
  1001.         LD A,D
  1002.         SUB 8
  1003.         LD D,A
  1004.         LD A,E
  1005.         ADD A,32
  1006.         LD  E,A
  1007.         JR NC,M194
  1008.         LD A,8
  1009.         ADD A,D
  1010.         LD D,A
  1011. M194    POP BC
  1012.         DJNZ M190
  1013.         RET
  1014.  
  1015. ;вывод стрелки в DSCR
  1016. ARROW   PUSH DE      ;de-xy
  1017.         LD A,176
  1018.         LD C,16
  1019.         SUB D
  1020.         JR NC,M17W
  1021.         ADD A,C
  1022.         LD C,A
  1023. M17W    CALL PCOORD
  1024.         POP DE
  1025.         LD A,E
  1026.         AND %110
  1027.         RRCA
  1028.         ADD A,MBU2/256
  1029.         LD D,A
  1030.         LD E,0
  1031.         LD A,L
  1032.         AND #1F
  1033.         SUB 30
  1034.         CPL
  1035.         JR NC,M179
  1036.         XOR A
  1037. M179    ADD A,3
  1038.         LD (ARW+1),A
  1039. ARW     LD B,3
  1040.         PUSH HL
  1041.         PUSH DE
  1042. ARW0    LD A,(DE)
  1043.         INC E
  1044.         OR (HL)
  1045.         LD (HL),A
  1046.         LD A,(DE)
  1047.         INC E
  1048.         XOR (HL)
  1049.         LD (HL),A
  1050.         INC L
  1051.         DJNZ ARW0
  1052.         POP DE
  1053.         POP HL
  1054.         LD A,E
  1055.         ADD A,6
  1056.         LD E,A
  1057.         INC H
  1058.         LD A,H
  1059.         AND %111
  1060.         JR NZ,M174
  1061.         LD A,H
  1062.         SUB 8
  1063.         LD H,A
  1064.         LD A,L
  1065.         ADD A,32
  1066.         LD  L,A
  1067.         JR NC,M174
  1068.         LD A,8
  1069.         ADD A,H
  1070.         LD H,A
  1071. M174    DEC C
  1072.         JR NZ,ARW
  1073.         RET
  1074.  
  1075. ;инициализация при входе в меню
  1076. ARRINI  LD DE,MRK
  1077.         LD HL,MBU2
  1078.         CALL ARIS
  1079.         LD DE,MRK+32
  1080.         LD HL,MBU2+1
  1081. ARIS    LD C,0
  1082. ARIS0   LD B,16
  1083.         PUSH HL
  1084.         PUSH DE
  1085. A0IS0   PUSH BC
  1086.         CALL RRCB
  1087.         LD (HL),A
  1088.         INC L
  1089.         INC L
  1090.         LD (HL),B
  1091.         CALL RRCB
  1092.         OR (HL)
  1093.         LD (HL),A
  1094.         INC L
  1095.         INC L
  1096.         LD (HL),B
  1097.         INC L
  1098.         INC L
  1099.         POP BC
  1100.         DJNZ A0IS0
  1101.         POP DE
  1102.         POP HL
  1103.         INC H
  1104.         INC C
  1105.         LD A,C
  1106.         CP 4
  1107.         JR NZ,ARIS0
  1108.         RET
  1109. RRCB    LD A,C
  1110.         OR A
  1111.         LD A,(DE)
  1112.         LD B,C
  1113.         INC DE
  1114.         RET Z
  1115.         LD B,0
  1116.         EX AF,AF
  1117.         LD A,C
  1118. RRC1    EX AF,AF
  1119.         SRL A
  1120.         RR B
  1121.         SRL A
  1122.         RR B
  1123.         EX AF,AF
  1124.         DEC A
  1125.         JR NZ,RRC1
  1126.         EX AF,AF
  1127.         RET
  1128.  
  1129. ;МЕНЮ: отображение стрелки и подсвеченного пункта в SCR
  1130. w_band  EQU 29
  1131. MRK1    CALL E_I
  1132.         LD A,(PMOUSE)
  1133.         OR A
  1134.         JR Z,MRK1N
  1135.         LD A,(MYOLD)
  1136.         CALL MRK1_
  1137. MRK1N   LD A,(MY)
  1138.         LD (MYOLD),A
  1139. MRK1_   AND #FE
  1140.         SUB 11
  1141.         JR NC,M11
  1142.         XOR A
  1143.         JR M10
  1144. M11     CP 192-w_band
  1145.         JR C,M10
  1146.         LD A,192-w_band
  1147. M10     LD D,A
  1148.         LD E,0
  1149.         CALL BCOORD
  1150.         PUSH HL
  1151.         LD BC,SCR-DSCR
  1152.         ADD HL,BC
  1153.         POP DE
  1154.         EX DE,HL
  1155.         LD B,w_band
  1156. M12     PUSHs
  1157.         LD BC,32
  1158.         LDIR
  1159.         POPs
  1160.         INC D
  1161.         INC H
  1162.         LD A,H
  1163.         AND %111
  1164.         JR NZ,M14
  1165.         LD A,H
  1166.         SUB 8
  1167.         LD H,A
  1168.         LD A,L
  1169.         ADD A,32
  1170.         LD  L,A
  1171.         LD  E,A
  1172.         JR NC,M15
  1173.         LD A,8
  1174.         ADD A,H
  1175.         LD H,A
  1176. M15     LD A,+(SCR-DSCR)/256
  1177.         ADD A,H
  1178.         LD D,A
  1179. M14     DJNZ M12
  1180.         RET
  1181.  
  1182. ;КНОПКИ: отображение стрелки в SCR
  1183. wB_band EQU 20
  1184. MYOLD   DEFB 0
  1185. MRK2    CALL E_I
  1186.         CALL STD
  1187.         LD A,(PMOUSE)
  1188.         OR A
  1189.         JR Z,MRK2N
  1190.         LD A,(MYOLD)
  1191.         CALL MRK2_
  1192. MRK2N   LD A,(MY)
  1193.         LD (MYOLD),A
  1194. MRK2_   AND #FE
  1195.         SUB 2
  1196.         CP 191-wB_band
  1197.         JR C,M210
  1198.         LD A,191-wB_band
  1199. M210    LD D,A
  1200.         LD E,0
  1201.         CALL BCOORD
  1202.         PUSH HL
  1203.         LD BC,SCR-DSCR
  1204.         ADD HL,BC
  1205.         POP DE
  1206.         EX DE,HL
  1207.         LD B,wB_band
  1208. M212    PUSHs
  1209.         LD A,E
  1210.         ADD A,24
  1211.         LD E,A
  1212.         LD L,A
  1213.         LDI
  1214.         LDI
  1215.         LDI
  1216.         LDI
  1217.         LDI
  1218.         LDI
  1219.         LDI
  1220.         LDI
  1221.         POPs
  1222.         INC D
  1223.         INC H
  1224.         LD A,H
  1225.         AND %111
  1226.         JR NZ,M214
  1227.         LD A,H
  1228.         SUB 8
  1229.         LD H,A
  1230.         LD A,L
  1231.         ADD A,32
  1232.         LD  L,A
  1233.         LD  E,A
  1234.         JR NC,M215
  1235.         LD A,8
  1236.         ADD A,H
  1237.         LD H,A
  1238. M215    LD A,+(SCR-DSCR)/256
  1239.         ADD A,H
  1240.         LD D,A
  1241. M214    DJNZ M212
  1242.         RET
  1243.  
  1244. ;*************работа со стрелкой
  1245. NEW_M   DEFB 2 ;0 -смена пункта
  1246. MARK    XOR     A;C выводом трёх нижних строк
  1247. mark_0  CALL    mark_
  1248.         JR      C,mark_1
  1249.         LD A,(NEW_M)
  1250.         OR A
  1251.         JR NZ,mark_0
  1252.         CPL
  1253.         LD (NEW_M),A
  1254. mark_1  LD A,(MPOS)
  1255.         RET
  1256. MARK_   LD      A,1     ;Без вывода трёх нижних строк
  1257. mark_   LD      (MC21),A
  1258.         CALL    STD
  1259.         CALL    MMOV
  1260.         JR      C,MMV1 ;учёт прав кнопки мыши
  1261.         RR      C
  1262. MMV1    PUSH    AF
  1263.         LD      HL,(MX)
  1264.         RES     0,L
  1265.         RES     0,H
  1266.         PUSH    HL
  1267.         SRL     H
  1268.         SRL     H
  1269.         SRL     H
  1270.         SRL     L
  1271.         SRL     L
  1272.         SRL     L
  1273.         CALL    ONLINE
  1274.         CALL    OFLINE
  1275.         POP     DE
  1276.         PUSH    DE
  1277.         CALL    GETBUF
  1278.         POP     DE
  1279.         PUSH    DE
  1280.         CALL    ARROW
  1281. MRKN    CALL    MRK1
  1282.         POP     DE
  1283.         CALL    PUTBUF
  1284.         CALL    COPY21
  1285.         POP     AF
  1286.         RET;вых:C/NC-нажат или нет FIRE, A-номер пункта или 255 (вне меню)
  1287.  
  1288. INIMNU  LD DE,MRK1  ;инит для работы с меню
  1289.         LD HL,#101
  1290. IniMB   LD (MRKN+1),DE
  1291.         LD (MWINX),HL
  1292.         LD A,(MY)
  1293.         LD (MYOLD),A
  1294.         LD (NEW_M),A
  1295.         JP ARRINI
  1296. INIBUT  LD HL,#FFFF  ;инит для работы с картой
  1297.         LD (MOLD),HL
  1298.         LD (MBEG),HL
  1299.         LD HL,(MX)
  1300.         LD A,#22
  1301.         CP H
  1302.         JR C,IB1
  1303.         LD H,A
  1304. IB1     LD A,#C4
  1305.         CP L
  1306.         JR C,IB2
  1307.         LD L,A
  1308. IB2     LD (MX),HL
  1309.         LD DE,MRK2
  1310.         LD HL,#21C3
  1311.         JR IniMB
  1312.  
  1313. COPY21  LD      HL,MC21
  1314.         LD      A,(HL)
  1315.         OR      A
  1316.         RET     NZ
  1317.         INC     (HL)
  1318.         LD      HL,DSCR+#10A0
  1319.         LD      DE,SCR+#10A0
  1320.         LD      B,8
  1321. C210    PUSHs
  1322.         LD      BC,#60
  1323.         LDIR
  1324.         POPs
  1325.         INC H
  1326.         INC D
  1327.         DJNZ C210
  1328.         RET
  1329.  
  1330. ;----------------- исследования
  1331. RS254   LD      B,0 ;новые иссл.
  1332.         LD      DE,RS
  1333. RS21    LD      A,(DE)
  1334.         CP      255
  1335.         JR      NZ,RS22
  1336.         LD      A,B
  1337.         PUSH    BC
  1338.         LD      BC,RSCH
  1339.         LD      L,A
  1340.         LD      H,0
  1341.         ADD     HL,HL
  1342.         ADD     HL,HL
  1343.         ADD     HL,BC
  1344.         POP     BC
  1345.         LD      A,(HL)
  1346.         OR      A
  1347.         JR      Z,RS25
  1348.         PUSH    HL
  1349.         LD      HL,S_GUN
  1350.         CALL    WA
  1351.         OR      A
  1352.         POP     HL
  1353.         JR      Z,RS22
  1354.         INC     HL
  1355.         LD      A,(HL)
  1356.         OR      A
  1357.         JR      Z,RS23
  1358.         DEC     HL
  1359. RS25    INC     HL
  1360.         LD      C,(HL)
  1361.         INC     HL
  1362.         LD      A,(HL)
  1363.         INC     HL
  1364.         LD      H,(HL)
  1365.         LD      L,A
  1366. RS24    PUSH    HL
  1367.         LD      A,(HL)
  1368.         LD      HL,RS
  1369.         CALL    BT
  1370.         POP     HL
  1371.         OR      A
  1372.         JR      NZ,RS22
  1373.         INC     HL
  1374.         DEC     C
  1375.         JR      NZ,RS24
  1376. RS23    EXX
  1377.         LD      BC,80*256
  1378.         LD      HL,RS
  1379. RSEX    LD A,(HL) ;не более 17 иссл
  1380.         INC HL
  1381.         CP 254
  1382.         JR NZ,RSE1
  1383.         INC C
  1384. RSE1    DJNZ RSEX
  1385.         LD A,C
  1386.         CP 17
  1387.         RET NC
  1388.         EXX
  1389.         LD      A,254
  1390.         LD      (DE),A
  1391.         LD      A,B
  1392.         INC     A
  1393.         LD      (DSDAT),A
  1394.         LD      A,51
  1395.         CALL    DISPLX
  1396.         CALL    STOP_T
  1397.         JR      RS254
  1398. RS22    INC     DE
  1399.         INC     B
  1400.         LD      A,B
  1401.         CP      80
  1402.         RET     NC
  1403.         JR      C,RS21
  1404.  
  1405. ;ОЧЕРЁДНОСТЬ исследований
  1406. RSCH    DEFW 0,0
  1407.         DEFW 0,0
  1408.         DEFW    #302,_R2
  1409.         DEFW    #103,_R3
  1410.         DEFW 0,0
  1411.         DEFW    #105,_R5
  1412.         DEFW    #200,_R6
  1413.         DEFW    #300,_R7
  1414.         DEFW    #108,_R8
  1415.         DEFW    #109,_R9
  1416.         DEFW    #10A,_R10
  1417.         DEFW 0,0
  1418.         DEFW    #30C,_R12
  1419.         DEFW 0,0
  1420.         DEFW 0,0
  1421.         DEFW    #300,_R15
  1422.         DEFW    #300+33,_R16
  1423.         DEFW    #300,_R17
  1424.         DEFW 0,0
  1425.         DEFW    #300,_R19
  1426.         DEFW    #200,_R20
  1427.         DEFW    55,0
  1428.         DEFW    #100,_R22
  1429.         DEFW    57,0
  1430.         DEFW    #100+58,_R24
  1431.         DEFW    59,0
  1432.         DEFW    60,0
  1433.         DEFW    #100+61,_R27
  1434.         DEFW    63,0
  1435.         DEFW    #200,_R29
  1436.         DEFW    #100,_R30
  1437.         DEFW    #100,_R31
  1438.         DEFW    #100,_R32
  1439.         DEFW    19,0
  1440.         DEFW    20,0
  1441.         DEFW    21,0
  1442.         DEFW    22,0
  1443.         DEFW    23,0
  1444.         DEFW    24,0
  1445.         DEFW    #400,_R39
  1446.         DEFW    #400,_R40
  1447.         DEFW    #300,_R41
  1448.         DEFW    #300+33,_R42
  1449.         DEFW    #100+25,_R43
  1450.         DEFW    26,0
  1451.         DEFW    27,0
  1452.         DEFW    28,0
  1453.         DEFW    29,0
  1454.         DEFW    30,0
  1455.         DEFW    #300+31,_R49
  1456.         DEFW    32,0
  1457.         DEFW    #100,_R51
  1458.         DEFW    #200,_R52
  1459.         DEFW    #200,_R53
  1460.         DEFW    #100,_R54
  1461.         DEFW    #100,_R55
  1462.         DEFW    #300,_R56
  1463.         DEFW    #100,_R57
  1464.         DEFW    #300+62,_R58
  1465.         DEFW 0,0
  1466.         DEFW    #200+35,_R60;
  1467.         DEFW    #100+36,_R61
  1468.         DEFW    #100+37,_R62
  1469.         DEFW    #100+38,_R63
  1470.         DEFW    #100+39,_R64;
  1471.         DEFW    #100+40,_R65
  1472.         DEFW    #100+41,_R66
  1473.         DEFW    #100+42,_R67
  1474.         DEFW    #100+43,_R68;
  1475.         DEFW    #100+44,_R69
  1476.         DEFW    #100+45,_R70
  1477.         DEFW    #100+46,_R71
  1478.         DEFW    #100+47,_R72;
  1479.         DEFW    #100+48,_R73
  1480.         DEFW    #100+49,_R74
  1481.         DEFW    #100+50,_R75
  1482.         DEFW    #100+51,_R76
  1483.         DEFW    #200+52,_R77
  1484.         DEFW    #100+53,_R78
  1485.         DEFW    #200+54,_R79
  1486.  
  1487. _R2     DEFB    3,9,16
  1488. _R3     DEFB    10
  1489. _R5     DEFB    8
  1490. _R6     DEFB    9,5
  1491. _R7     DEFB    6,10,19
  1492. _R8     DEFB    50
  1493. _R9     DEFB    8
  1494. _R10    DEFB    8
  1495. _R12    DEFB    2,48,79
  1496. _R15    DEFB    11,13,14
  1497. _R16    DEFB    15,23,63
  1498. _R17    DEFB    16,20,69
  1499. _R19    DEFB    43,44,50
  1500. _R20    DEFB    19,42
  1501. _R22    DEFB    60
  1502. _R24    DEFB    47
  1503. _R27    DEFB    78
  1504. _R29    DEFB    50,64
  1505. _R30    DEFB    67
  1506. _R31    DEFB    77
  1507. _R32    DEFB    62
  1508. _R39    DEFB    61,33,35,37
  1509. _R40    DEFB    74,34,36,38
  1510. _R41    DEFB    76,39,40
  1511. _R42    DEFB    41,43,44
  1512. _R43    DEFB    50
  1513. _R49    DEFB    52,53,55
  1514. _R51    DEFB    75
  1515. _R52    DEFB    69,51
  1516. _R53    DEFB    66,54
  1517. _R54    DEFB    68
  1518. _R55    DEFB    73
  1519. _R56    DEFB    70,45,46
  1520. _R57    DEFB    65
  1521. _R58    DEFB    71,56,49
  1522. _R60    DEFB    62,63
  1523. _R61    DEFB    21
  1524. _R62    DEFB    61
  1525. _R63    DEFB    61
  1526. _R64
  1527. _R65    DEFB    22
  1528. _R66    DEFB    64
  1529. _R67    DEFB    65
  1530. _R68
  1531. _R69    DEFB    23
  1532. _R70
  1533. _R71    DEFB    69
  1534. _R72
  1535. _R74    DEFB    24
  1536. _R73
  1537. _R75    DEFB    72
  1538. _R76
  1539. _R78    DEFB    25
  1540. _R77
  1541. _R79    DEFB    76,78
  1542.  
  1543. RSDAY   LD      B,0     ;ведение иссл.
  1544.         LD      HL,RS
  1545. RY1     LD      A,(HL)
  1546.         OR      A
  1547.         JR      Z,RY2
  1548.         CP      254
  1549.         JR      NC,RY2
  1550.         LD      A,(RSN)
  1551.         ADD     A,4
  1552.         SRL     A
  1553.         SRL     A
  1554.         SRL     A
  1555.         LD      D,A
  1556.         LD      A,(HL)
  1557.         SUB     D
  1558.         JR      NC,RY3
  1559.         XOR     A
  1560. RY3     LD      (HL),A
  1561.         OR      A
  1562.         RET     NZ
  1563.         INC     B
  1564.         LD      A,B
  1565.         LD      (DSDAT),A
  1566.         LD      A,5
  1567.         CALL    DISPLX
  1568.         LD      A,(DSDAT)
  1569.         CP      19
  1570.         LD      A,6
  1571.         CALL    C,DISPL
  1572.         CALL    STOP_T
  1573.         LD      HL,R_NUM
  1574.         INC     (HL)
  1575.         JP      RS254
  1576. RY2     INC     HL
  1577.         INC     B
  1578.         LD      A,B
  1579.         CP      80
  1580.         JR      C,RY1
  1581.         RET     NC
  1582. RY4     CALL    RESNUM
  1583.         LD      HL,R_NUM
  1584.         CP      A
  1585.         RET
  1586.  
  1587. ;----Program Data
  1588. ;Дни в месяце
  1589. MNT     DEFB    3,1, 2,8, 3,1, 3,0, 3,1, 3,0, 3,1, 3,1, 3,0, 3,1, 3,0, 3,1
  1590. ;Названия месяцев
  1591. MNAME   DEFB    15,47,30,18,16,33,47,15
  1592.         DEFB    37,21,18,33,16,28,47,15
  1593.         DEFB    15,29,16,33,35,16,15,15
  1594.         DEFB    15,16,32,33,21,28,47,15
  1595.         DEFB    15,15,29,16,47,15,15,15
  1596.         DEFB    15,15,25,46,30,47,15,15
  1597.         DEFB    15,15,25,46,28,47,15,15
  1598.         DEFB    16,18,19,36,34,35,16,15
  1599.         DEFB    34,21,30,35,47,17,33,47
  1600.         DEFB    31,27,35,47,17,33,47,15
  1601.         DEFB    15,30,31,47,17,33,47,15
  1602.         DEFB    20,21,27,16,17,33,47,15
  1603. ;Курсор-стрелочка
  1604. MRK     DEFW    #C0,#E0,#F0,#F8,#FC,#FE,#FF,#80FF,#C0FF,#E0FF
  1605.         DEFW    #F0FF,#F0FF,#F8,#F0,#E0,#C0
  1606.         DEFW    #00,#40,#60,#50,#48,#44,#42,#0041,#8040,#4040
  1607.         DEFW    #E047,#0048,#50,#60,#40,#00
  1608. ;Условные знаки
  1609. SPM     DEFB    #40,#E0,#40,0 ;истр
  1610.         DEFB    #E0,#A0,#E0,0 ;база
  1611.         DEFB    #A0,#40,#A0,0 ;НЛО
  1612.         DEFB    #50,#F8,#78,0
  1613.         DEFB    #E0,#E0,#E0,0
  1614.         DEFB    #C0,#C0,0,0
  1615.         DEFB    #04,#0C,#04,0
  1616.         DEFB    #60,#90,#90,#60
  1617.         DEFB    #60,#F0,#F0,#60
  1618.         DEFB    #F0,#90,#90,#F0
  1619.  
  1620. ;Координаты: -баз
  1621. XBASE   DEFB    95,19, 123,54, 56,37, 81,64
  1622.         DEFB    22,87, 75,110, 135,105, 171,28
  1623. ;-портов
  1624. PORT    DEFB    98,20, 102,32, 11,20, 28,40
  1625.         DEFB    169,96, 102,12, 161,18, 112,30
  1626.         DEFB    80,23, 92,86, 140,48, 45,95
  1627.         DEFB    24,74, 46,28, 166,53, 74,33
  1628. ;-островов
  1629. ISLN    DEFB    183,101,111,78,51,25,2,35
  1630.         DEFB    161,45,69,68,79,77,84,34
  1631.         DEFB    165,37,90,36,12,96,2,86
  1632.         DEFB    187,45,129,102,136,58,68,40
  1633. ;-колонии
  1634. UCOLON  DEFB    154,4,99,7,68,20,168,72
  1635.         DEFB    27,3,133,79,9,65,45,49
  1636.         DEFB    107,107,67,112,177,37,71,80
  1637.         DEFB    11,54,57,9,162,105,113,66
  1638. ;-базы врагов
  1639. UBASE   DEFB    56,90,173,110,107,98,180,20
  1640.         DEFB    60,33,120,60,29,106,152,100
  1641.         DEFB    7,2,78,100,82,13,62,62
  1642.         DEFB    139,85,39,36,155,59,178,55
  1643. ;-корабли
  1644. SHIP    DEFB    70,88,129,67,64,54,97,39
  1645.         DEFB    25,53,152,77,168,45,12,82
  1646.         DEFB    93,105,71,29,117,83,119,5
  1647.         DEFB    51,57,31,95,186,83,89,9
  1648. ;-Тлеф
  1649. TLETH   DEFB    42,40
  1650.  
  1651. ;------------------------------------------
  1652. SEA_T   DEFW    SEA0,SEA1,SEA2,SEA3,SEA4
  1653.  
  1654. SEABAT  ;бой под водой
  1655.         CALL SAVMON
  1656. SEB     CALL LODALX
  1657.         CALL ALEX
  1658.         PUSH AF
  1659.         CALL LDASM1
  1660.         POP AF
  1661.         JR NC,SEB
  1662.         PUSH AF
  1663.         ADD A,#3B
  1664.         LD (MUsea+3),A
  1665.         CALL BACK
  1666.         LD IX,MUsea
  1667.         CALL MENUC
  1668.         POP AF
  1669.         LD HL,SEA_T
  1670.         CALL WT
  1671.         JP (HL)
  1672.  
  1673. MUsea   DEFW #404,#FF16
  1674. SEA0    ;гибель ufo
  1675. SEA3    ;поломка intr (или эвак)
  1676.         CALL TMOF
  1677. SEA3_   LD A,255
  1678.         LD (TARlst),A
  1679.         LD (T_UFO),A
  1680.         JR SEA2_
  1681. SEA4    XOR A
  1682.         LD (AQU),A
  1683.         DEC A
  1684.         LD (T_INTR),A ;гибель intr
  1685.         LD B,10
  1686.         LD HL,AQNAVT
  1687. SEA4_   LD (HL),0
  1688.         LD DE,16
  1689.         ADD HL,DE
  1690.         DJNZ SEA4_
  1691.  
  1692. SEA2    CALL TMOF ;ничья
  1693. SEA2_   CALL OFFS
  1694.         CALL GOhome
  1695.         JP XMR
  1696.  
  1697. SEA1    CALL YES_NO
  1698.         JR NZ,SEA3_
  1699.         LD A,1
  1700.         LD (MONINI),A
  1701.         JP BATTL1
  1702.  
  1703. MU55    DEFW #201,#3717
  1704.         DEFW 0
  1705.         DEFW MNY1
  1706.         DEFW MNY2
  1707.         DEFW MNY3
  1708.         DEFW DOLG
  1709.         DEFW ITOGO
  1710.         DEFW MONEY
  1711.  
  1712. MNY1    EQU MXDM
  1713. MNY2    EQU MNY1+4
  1714. MNY3    EQU MNY1+8
  1715. ITOGO   EQU MNY1+12
  1716.  
  1717. FINANS  ;фин.отч
  1718.         LD HL,#BDBC
  1719.         CALL F_O
  1720.         CALL XMR
  1721.  
  1722. F_O     LD (MU55+4),HL
  1723.         CALL MARK_
  1724.         CALL SAVMON
  1725.         CALL BACK
  1726.         LD HL,MNY1
  1727.         LD DE,MNY1+1
  1728.         LD (HL),0
  1729.         LD BC,16
  1730.         LDIR
  1731.         LD HL,ITOGO
  1732.         PUSH HL
  1733.         LD A,(RSN)
  1734.         OR A
  1735.         JR Z,FA1
  1736.         LD IX,MNY1
  1737.         LD B,A
  1738. FA0     LD HL,(ZP)
  1739.         PUSH HL
  1740.         CALL INCR
  1741.         POP HL
  1742.         EX (SP),IX
  1743.         CALL INCR
  1744.         EX (SP),IX
  1745.         DJNZ FA0
  1746. FA1     LD A,(ENG)
  1747.         OR A
  1748.         JR Z,FA2
  1749.         LD IX,MNY2
  1750.         LD B,A
  1751. FA3     LD HL,(ZP+2)
  1752.         PUSH HL
  1753.         CALL INCR
  1754.         POP HL
  1755.         EX (SP),IX
  1756.         CALL INCR
  1757.         EX (SP),IX
  1758.         DJNZ FA3
  1759. FA2     LD A,(AQU)
  1760.         OR A
  1761.         JR Z,FA6
  1762.         LD IX,MNY3
  1763.         LD B,A
  1764. FA5     LD HL,(ZP+4)
  1765.         PUSH HL
  1766.         CALL INCR
  1767.         POP HL
  1768.         EX (SP),IX
  1769.         CALL INCR
  1770.         EX (SP),IX
  1771.         DJNZ FA5
  1772. FA6     POP AF
  1773.         LD HL,(ITOGO)
  1774.         LD DE,(DOLG)
  1775.         ADD HL,DE
  1776.         LD (ITOGO),HL
  1777.         LD HL,(ITOGO+2)
  1778.         LD DE,(DOLG+2)
  1779.         ADC HL,DE
  1780.         LD (ITOGO+2),HL
  1781.         LD IX,MU55
  1782.         JP MNU
  1783.  
  1784. MU56    DEFW 0,#381e
  1785. SMERT   LD IX,MU56
  1786.         CALL MNU
  1787.         CALL TMOF
  1788.         JP EX__
  1789.  
  1790. Mn_FIN  ;итоги за прош мес
  1791.         LD A,(RNB)
  1792.         LD (RNAgen),A
  1793.         LD HL,#BFBE
  1794.         CALL F_O
  1795.         ;долги?
  1796.         LD HL,0
  1797.         LD (DOLG),HL
  1798.         LD (DOLG+2),HL
  1799.         LD DE,(ITOGO)
  1800.         LD HL,(MONEY)
  1801.         XOR A
  1802.         SBC HL,DE
  1803.         LD (MONEY),HL
  1804.         LD DE,(ITOGO+2)
  1805.         LD HL,(MONEY+2)
  1806.         SBC HL,DE
  1807.         LD (MONEY+2),HL
  1808.         JR C,BAD_M
  1809.         ;рейтинг
  1810.         LD HL,REYTING
  1811.         LD A,(HL)
  1812.         LD (HL),0
  1813.         PUSH AF
  1814.         ADD A,191
  1815.         LD (MU79+6),A
  1816.         LD IX,MU79
  1817.         CALL MNU
  1818.         POP AF
  1819.         CP 2
  1820.         JR NC,RIP
  1821.         ;баз>=4
  1822.         LD HL,BASE
  1823.         LD BC,#800
  1824. F_BS    LD A,(HL)
  1825.         INC HL
  1826.         CP 100
  1827.         JR NC,F_BS2
  1828.         INC C
  1829. F_BS2   DJNZ F_BS
  1830.         LD A,C
  1831.         CP 4
  1832.         JR C,BAD_B
  1833.         CALL XEARTH
  1834.         CALL LODMON
  1835.         CALL INIBUT
  1836.         JP STOP_T
  1837.  
  1838. MU81    DEFW 0,#511E
  1839. MU80    DEFW #602,#501A
  1840. MU79    DEFW #1400,#4F1E,MONEY
  1841.         DEFB 192
  1842.  
  1843. BAD_B   LD IX,MU82
  1844.         JR BAD_
  1845. BAD_M   LD IX,MU80
  1846. BAD_    CALL MNU
  1847. RIP     LD IX,MU81
  1848.         CALL MENUC
  1849.         CALL TMOF
  1850.         CALL NW_GE
  1851.         CALL MLOOP
  1852. MU82    DEFW #802,#5218
  1853.  
  1854. ACTD    ;действия кжд день
  1855.         CALL baseUP
  1856.         CALL hlthUP
  1857.         LD A,(DAT+14)
  1858.         LD HL,MNT
  1859.         CALL WT
  1860.         EX DE,HL
  1861.         XOR A
  1862.         LD HL,(DAT)
  1863.         PUSH HL
  1864.         SBC HL,DE
  1865.         POP HL
  1866.         JR Z,LST_D
  1867.         XOR A
  1868.         LD DE,#201
  1869.         SBC HL,DE
  1870.         RET NZ
  1871.         LD A,(DAT+14)
  1872.         CP 4
  1873.         RET NZ
  1874.         CALL STOP_T
  1875.         LD A,30
  1876.         JR B_D
  1877. LST_D   LD A,57
  1878. B_D     JP DISPL
  1879.  
  1880. baseUP  LD B,8
  1881.         LD HL,BASE
  1882. BUP0    LD A,(HL)
  1883.         OR A
  1884.         JR Z,BUP1
  1885.         CP 100
  1886.         JR NC,BUP1
  1887.         CP 9
  1888.         JR C,BUP2
  1889.         SUB 4
  1890. BUP2    DEC A
  1891.         LD (HL),A
  1892. BUP1    INC HL
  1893.         DJNZ BUP0
  1894.         RET
  1895.  
  1896. hlthUP  LD A,(DAT+1)
  1897.         OR A
  1898.         JR Z,HUP1
  1899.         CP 6
  1900.         RET NZ
  1901. HUP1    LD DE,AQNAVT
  1902.         LD HL,AQNAVT+6
  1903.         LD B,10
  1904. HUP0    PUSH BC
  1905.         LD A,(HL)
  1906.         OR A
  1907.         JR Z,HUP2
  1908.         LD A,(DE)
  1909.         OR A
  1910.         JR Z,HUP2
  1911.         DEC (HL)
  1912.         JR NZ,HUP2
  1913.         PUSH HL
  1914.         PUSH DE
  1915.         DEC A
  1916.         LD (DSDAT),A
  1917.         LD A,83
  1918.         CALL DISPLX
  1919.         POP DE
  1920.         POP HL
  1921. HUP2    LD BC,16
  1922.         ADD HL,BC
  1923.         EX DE,HL
  1924.         ADD HL,BC
  1925.         EX DE,HL
  1926.         POP BC
  1927.         DJNZ HUP0
  1928.         RET
  1929.  
  1930. ;================= генератор целей ==============
  1931. AN_UFO  DEFB 6,9,8,5,7,9,11,13,17 ;макс к-во на НЛО
  1932. AN_OBJ  DEFB 18,19,14,19,17,14,20,21,22,16 ;макс к-во на объектах
  1933.  
  1934. PREBAT  ;предустановки боя
  1935.         CALL SET_U
  1936.         CALL SET_AR
  1937.         CALL SET_AN
  1938.         RET
  1939.  
  1940. SET_U   LD A,(T_UFO) ;тип НЛО (0..8) T_UFO->L_UFO
  1941.         CP 1
  1942.         JR C,SEU0
  1943.         JR Z,SEU1
  1944.         LD A,8
  1945.         JR SEU
  1946. SEU1    CALL RND
  1947.         AND 1
  1948.         ADD A,6
  1949.         JR SEU
  1950. SEU0    CALL RND
  1951.         AND 7
  1952.         CP 6
  1953.         JR NC,SEU0
  1954. SEU     LD (L_UFO),A
  1955.         RET
  1956.  
  1957. SET_AR  ;SET раса (1..5)
  1958.         LD A,(L_LAND)
  1959.         CP 9
  1960.         JR NZ,SER1
  1961.         LD A,3
  1962. SER0    LD (A_RASA),A
  1963.         RET
  1964. SER1    LD A,(PERIOD)
  1965.         LD HL,W_RASA
  1966.         CALL DD
  1967.         LD C,1
  1968.         CALL R100
  1969.         LD B,A
  1970.         XOR A
  1971. SER2    ADD A,(HL)
  1972.         INC HL
  1973.         CP B
  1974.         JR NC,SER3
  1975.         INC C
  1976.         LD E,A
  1977.         LD A,C
  1978.         CP 5
  1979.         LD A,E
  1980.         JR C,SER2
  1981. SER3    LD A,C
  1982.         JR SER0
  1983.  
  1984. SET_AN  LD A,(L_LAND) ;к_во врагов
  1985.         OR A
  1986.         LD HL,AN_OBJ-1
  1987.         JR NZ,SEN0
  1988.         LD A,(L_UFO)
  1989.         LD HL,AN_UFO
  1990. SEN0    CALL BT
  1991.         LD (A_NUM),A
  1992.        if PROTECT
  1993.         CALL CHK_3
  1994.         LD HL,(TX)
  1995.         LD A,(CRC3)
  1996.         CP L
  1997.         CALL NZ,OFFS
  1998.        endif
  1999.         JP MEM7
  2000.  
  2001. ;6 периодов ведения войны
  2002. ;появл врагов в %
  2003. W_RASA  DEFB 97,1,0,1;1
  2004.         DEFB 50,5,0,5;40
  2005.         DEFB 25,22,5,23;25
  2006.         DEFB 10,20,20,25;25
  2007.         DEFB 1,15,40,14;30
  2008.         DEFB 0,10,70,10;10
  2009.         DEFB 0,2,90,2;6
  2010. ;появл НЛО в %
  2011. W_UFO   DEFB 95,95+5;0
  2012.         DEFB 83,83+15;2
  2013.         DEFB 75,75+17;8
  2014.         DEFB 55,55+30;15
  2015.         DEFB 40,40+35;25
  2016.         DEFB 10,10+55;35
  2017.         DEFB 10,10+30;60
  2018. ;появл целей в % (UFO,sh,port,isl,Xb,Uc;Ub)
  2019. W_OBJ   DEFB 90,02,04,05,00,00;00 ;
  2020.         DEFB 80,04,10,07,00,00;00 ; НЕТ Xb,Uc,Ub!
  2021.         DEFB 70,07,08,10,00,06;00
  2022.         DEFB 60,08,09,05,03,10;05
  2023.         DEFB 49,11,02,05,08,10;15
  2024.         DEFB 20,05,09,01,25,15;25
  2025.         DEFB 10,05,02,03,70,02;03
  2026.  
  2027. OBJ_N   DEFB 1  ;(тип 0..6)
  2028. OBJ_MOD DEFB 1  ;(модификация)
  2029. NEWOBJ  ;генерация нов.объекта
  2030.         LD A,(PERIOD)
  2031.         ADD A,A
  2032.         LD B,A
  2033.         ADD A,A
  2034.         ADD A,B;x6
  2035.         LD HL,W_OBJ
  2036.         CALL BA
  2037.         LD C,0
  2038.         CALL R100
  2039.         LD B,A
  2040.         XOR A
  2041. NJ2     ADD A,(HL)
  2042.         INC HL
  2043.         CP B
  2044.         JR NC,NJ3
  2045.         INC C
  2046.         LD E,A
  2047.         LD A,C
  2048.         CP 6
  2049.         LD A,E
  2050.         JR C,NJ2
  2051. NJ3     LD A,C
  2052.        ;ld a,2 ;FIXME 2=порт (работает)
  2053.        ;ld a,0 ;FIXME 0=НЛО?
  2054.        ;ld a,1 ;FIXME 1=корабль?
  2055.        ld a,3 ;FIXME 3=остров?
  2056.         LD (OBJ_N),A ;(тип 0..6)
  2057.         OR A
  2058.         JR Z,NJ0 ;0=НЛО
  2059.         CP 4
  2060.         JR Z,NJ4 ;4=база?
  2061.         CALL RNDG ;кор,порт,остр,Ub,Uc (0..15)
  2062.        ld a,2 ;FIXME 2=это всегда порт (для острова плохо подходит)
  2063.        ;ld a,3 ;FIXME 3=это???
  2064.         AND #F
  2065.         JR NJR
  2066. NJ4     LD B,80
  2067. NJ4_    CALL RND  ;Xb (1..7)
  2068.         AND 7
  2069.         JR Z,NJ4_
  2070.         LD C,A
  2071.         LD HL,BASE
  2072.         CALL BA
  2073.         CP 100
  2074.         LD A,C
  2075.         JR C,NJR
  2076.         DJNZ NJ4_
  2077.         JR NEWOBJ ;нет живых Xb
  2078. NJ0     LD A,(PERIOD) ;ufo (0..2)
  2079.         LD HL,W_UFO
  2080.         CALL WA
  2081.         CALL R100
  2082.         LD C,0
  2083.         CP (HL)
  2084.         JR C,NJ00
  2085.         INC C
  2086.         INC HL
  2087.         CP (HL)
  2088.         JR C,NJ00
  2089.         INC C
  2090. NJ00    LD A,C
  2091. NJR     LD (OBJ_MOD),A
  2092.         RET
  2093.  
  2094. RNDG    PUSH    HL ;пост случ посл
  2095.         LD      HL,(RNAgen)
  2096.         INC     HL
  2097.         LD      A,H ;;;
  2098.         AND     #1F
  2099.         LD      H,A
  2100.         LD      A,(RNBgen)
  2101.         RRCA
  2102.         RRCA
  2103.         RRCA
  2104.         XOR     (HL)
  2105.         SUB     L
  2106.         ADD     A,%11101
  2107.         LD      (RNAgen),HL
  2108.         LD      (RNBgen),A
  2109.         POP     HL
  2110.         RET
  2111.  
  2112. R100    CALL RNDG ; (rnd 1..100)
  2113.         AND #7F
  2114.         CP 100
  2115.         JR NC,R100
  2116.         INC A
  2117.         RET
  2118.  
  2119. TR_N1   DEFB 198-2,0,202-1,218-1,194-1;перв назв
  2120. TARh    ;генератор целей
  2121.         LD HL,TARoff
  2122.         LD A,(HL)
  2123.         OR A
  2124.         JR Z,TRon
  2125.         DEC (HL)
  2126.         RET NZ
  2127.         INC HL   ;нов
  2128.         CALL RNDG
  2129.         AND #1F
  2130.         ADD A,4
  2131. ; LD A,6;---------
  2132.         LD (HL),A ;время жизни (4..19)
  2133.         CALL NEWOBJ
  2134.         LD E,A
  2135.         LD A,(OBJ_N)
  2136.         LD (TARlst),A
  2137.         PUSH AF
  2138.         LD HL,TR_N1
  2139.         CALL BA
  2140.         ADD A,E
  2141.         LD (DSDAT),A
  2142.         POP AF
  2143.         PUSH AF
  2144.         OR A
  2145.         CALL Z,UFOst
  2146.         POP AF
  2147.         PUSH AF
  2148.         LD HL,T_UFO
  2149.         CALL BA
  2150.         LD (HL),E
  2151.         LD A,84
  2152.         CALL DISPL
  2153.         POP AF
  2154.         ADD A,85
  2155.         CALL DISPLX
  2156.         CALL STOP_T
  2157.         JP REMAP
  2158.  
  2159. TRon    INC HL
  2160.         DEC (HL)
  2161.         RET NZ
  2162.         DEC HL
  2163.         CALL RNDG
  2164.         AND #1F
  2165.         ADD A,2;время межд целями (2..33)
  2166.         LD (HL),A
  2167. ; LD (HL),1 ;-----------
  2168.         ;убрать стар цель
  2169.         LD A,(TARlst)
  2170.         CP 200
  2171.         RET NC
  2172.         LD E,A
  2173.         LD HL,T_UFO ;цель была уничтожена
  2174.         CALL BA
  2175.         LD A,(HL)
  2176.         CP 200
  2177.         RET NC
  2178.         LD A,E
  2179.         PUSH AF
  2180.         CP 4
  2181.         JR Z,TRxb
  2182.         JR NC,TRubc ;для Ub,Uc
  2183.         OR A
  2184.         JR Z,TRufo
  2185.         LD HL,REYTING ;для гор,остр,кор
  2186.         LD A,(HL)
  2187.         CP 2
  2188.         JR NC,TR_
  2189.         INC (HL)
  2190.         JR TR_
  2191. TRxb    LD A,(T_BAS);для XB
  2192.         LD HL,BASE
  2193.         CALL BA
  2194.         LD (HL),255
  2195.         JR TR_
  2196. TRufo   LD A,(T_UFO)
  2197.         CP 3
  2198.         LD A,92    ;для ufo
  2199.         CALL C,DISPL
  2200. TR_     POP AF
  2201.         PUSH AF
  2202.         LD HL,T_UFO
  2203.         CALL BA
  2204.         LD (HL),255
  2205. TRubc   POP AF
  2206.         LD HL,T_TYPE
  2207.         CP (HL)
  2208.         CALL Z,GOhome ;цель потеряна
  2209.         LD A,255
  2210.         LD (TARlst),A
  2211.         JP REMAP
  2212.  
  2213. UFOst   ;Новые коорд НЛО
  2214.         PUSH DE
  2215. Ust     CALL UFORND
  2216.         CALL isSEA
  2217.         JR Z,Ust
  2218.         LD (UFO),HL
  2219.         CALL UFORND
  2220.         LD (UFO_T),HL
  2221.         POP DE
  2222.         RET
  2223.  
  2224. UFORND  CALL RND ;случ коорд
  2225.         AND #7F
  2226.         CP 116
  2227.         JR NC,UFORND
  2228.         LD H,A
  2229. UC1     CALL RND
  2230.         CP 190
  2231.         JR NC,UC1
  2232.         LD L,A
  2233.         RET
  2234.  
  2235.  
  2236. REMAP   ;восст карты
  2237.         XOR A
  2238.         LD (T_D),A
  2239.         LD (T_SW),A
  2240.         LD HL,DSCR
  2241.         LD DE,SCR
  2242.         LD C,8
  2243.         CALL RE_64
  2244.         LD HL,DSCR+#800
  2245.         LD DE,SCR+#800
  2246.         LD C,7
  2247. RE_64   LD B,8
  2248.         PUSH DE
  2249.         PUSH HL
  2250. RE_8    PUSHs
  2251.         LDI
  2252.         LDI
  2253.         LDI
  2254.         LDI;4
  2255.         LDI
  2256.         LDI
  2257.         LDI
  2258.         LDI;8
  2259.         LDI
  2260.         LDI
  2261.         LDI
  2262.         LDI;12
  2263.         LDI
  2264.         LDI
  2265.         LDI
  2266.         LDI;16
  2267.         LDI
  2268.         LDI
  2269.         LDI
  2270.         LDI;20
  2271.         LDI
  2272.         LDI
  2273.         LDI
  2274.         LDI;24
  2275.         POPs
  2276.         INC H
  2277.         INC D
  2278.         DJNZ RE_8
  2279.         POP HL
  2280.         POP DE
  2281.         LD A,L
  2282.         ADD A,32
  2283.         LD L,A
  2284.         LD A,E
  2285.         ADD A,32
  2286.         LD E,A
  2287.         DEC C
  2288.         JR NZ,RE_64
  2289.         RET
  2290.  
  2291.  
  2292. isSEA   ;HL - это океан ? NZ-да, Z-нет
  2293.         PUSH HL
  2294.         EX DE,HL
  2295.         LD IX,DATA01
  2296.         LD A,E
  2297.         AND %111
  2298.         LD (ISE0+2),A
  2299.         CALL STD
  2300.         CALL PCOORD
  2301. ISE0    LD A,(IX+0)
  2302.         AND (HL)
  2303.         POP HL
  2304.         RET
  2305.  
  2306. ACTM    LD A,(T_D)
  2307.         AND 1
  2308.         LD A,1
  2309.         LD (T_D),A
  2310.         JR Z,AKM0
  2311.         CALL SHOWD
  2312. AKM0    LD HL,(UFO_T) ;UFO move
  2313.         PUSH HL
  2314.         LD DE,(UFO)
  2315.         CALL LINini
  2316.         CALL LINnx_
  2317.         LD (UFO),DE
  2318.         POP HL
  2319.         XOR A
  2320.         SBC HL,DE
  2321.         JR NZ,AKM1
  2322.         CALL UFORND
  2323.         LD (UFO_T),HL
  2324. AKM1    LD HL,(UFO) ;intr move
  2325.         LD A,(T_TYPE)
  2326.         OR A
  2327.         JR Z,AKM2
  2328.         LD HL,(INTR_T)
  2329. AKM2    PUSH HL
  2330.         LD DE,(INTR)
  2331.         XOR A
  2332.         SBC HL,DE
  2333.         POP HL
  2334.         JR Z,AKM4
  2335.         PUSH HL
  2336.         CALL LINini
  2337.         CALL LINnx_
  2338.         LD (INTR),DE
  2339.         POP HL
  2340.         XOR A
  2341.         SBC HL,DE
  2342.         JP NZ,SHOWD
  2343. AKM4    LD A,(T_TYPE)
  2344.         CP 100
  2345.         JP NC,SHOWD
  2346.         OR A
  2347.         JR NZ,AKM3
  2348.         LD HL,(UFO)
  2349.         CALL isSEA
  2350.         JP Z,SHOWD
  2351.         LD A,(xHAC2)
  2352.         CP #D6
  2353.         JP Z,SEA1
  2354.         CALL BATTLE
  2355. AKM3    ;вызов боя
  2356.         CALL BATTL1
  2357.  
  2358. isTLEF  LD A,(RS+58)
  2359.         OR A
  2360.         RET NZ
  2361.         LD (Tleth),A
  2362.         RET
  2363.  
  2364. EVAC    ;эвакуация
  2365.         CALL BADDER
  2366.         JP SEA2_
  2367.  
  2368. ALLDIE  ;все погибли
  2369.         CALL MEM7
  2370.         CALL BACK
  2371.         LD IX,MU93
  2372.         CALL MENUC
  2373.         CALL TMOF
  2374.         CALL BADDER
  2375.         JP SEA4
  2376.  
  2377. MU93    DEFW #A02,#5D1A
  2378.  
  2379. TARRES  LD A,(T_TYPE) ;откл цель
  2380.         PUSH AF
  2381.         LD HL,T_UFO
  2382.         CALL BA
  2383.         LD B,(HL)
  2384.         LD (HL),255
  2385.         POP AF
  2386.         OR A
  2387.         RET
  2388. BADDER  ;плохие рез-ты
  2389.         CALL TARRES
  2390.         RET Z ;для нло
  2391.         CP 4
  2392.         JR Z,BDxb
  2393.         RET NC ;для Ub,Uc
  2394.         LD HL,REYTING ;для гор,остр,кор
  2395.         LD A,(HL)
  2396.         CP 2
  2397.         RET NC
  2398.         INC (HL)
  2399.         RET
  2400. BDxb    LD A,B;для XB
  2401.         LD HL,BASE
  2402.         CALL BA
  2403.         LD (HL),255
  2404.         RET
  2405.  
  2406. POSTBAT ;итоги после боя
  2407.        if PROTECT
  2408.         CALL CHECK4
  2409.        endif
  2410.         CALL TARRES
  2411.         CALL PICKER
  2412.         JP U2S
  2413.  
  2414. CLEAR   ;очистка врем хран
  2415.         LD HL,U_GUN
  2416.         LD B,U_len
  2417. CLE0    LD (HL),0
  2418.         INC HL
  2419.         DJNZ CLE0
  2420.         RET
  2421.  
  2422. PICKER  CALL STD ;сообщения о собр
  2423.         CALL OFFD
  2424.         LD HL,#5
  2425.         LD (SX),HL
  2426.         LD A,199
  2427.         CALL NWRDM
  2428.         LD B,0
  2429.         LD HL,#201
  2430.         LD (SX),HL
  2431. PK1     PUSH BC
  2432.         LD A,B
  2433.         LD HL,U_GUN
  2434.         CALL BA
  2435.         OR A
  2436.         JR Z,PK4
  2437.         PUSH AF
  2438.         LD A,B
  2439.         CP 15
  2440.         JR C,PK2
  2441.         ADD A,43-15
  2442.         CP 51
  2443.         JR C,PK2
  2444.         ADD A,111-51
  2445. PK2     CALL NWRDM
  2446.         POP AF
  2447.         LD HL,SX
  2448.         LD (HL),22
  2449.         PUSH HL
  2450.         CALL WB
  2451.         POP HL
  2452.         LD (HL),1
  2453.         INC HL
  2454.         INC (HL)
  2455. PK4     POP BC
  2456.         INC B
  2457.         LD A,B
  2458.         CP U_len
  2459.         JR C,PK1
  2460.         CALL STS
  2461.         CALL OFFS
  2462.         CALL COPY
  2463.         ATRs #0,#1618,#70
  2464.         LD L,22
  2465.         LD B,6
  2466.         LD A,#68
  2467.         CALL ATRBAR
  2468.         CALL PT128
  2469.         JP TMOF
  2470.  
  2471. UplusS  LD A,(DE)
  2472.         INC DE
  2473.         ADD A,(HL)
  2474.         LD (HL),A
  2475.         INC HL
  2476.         JR NC,UpS
  2477.         INC (HL)
  2478. UpS     INC HL
  2479.         DJNZ UplusS
  2480.         RET
  2481.  
  2482. U2S     ;из U_XXX в S_XXX
  2483.         LD B,5  ;инопл-профессионалы
  2484.         LD HL,U_LIV
  2485.         LD DE,S_PROF
  2486. U2S30   LD C,(HL)
  2487. U2S3    LD A,C
  2488.         OR A
  2489.         JR Z,U2S4
  2490.         DEC C
  2491.         CALL RND
  2492.         AND %1000 ;только 1 из 2х
  2493.         JR Z,U2S7
  2494.         LD A,(S_ART+18)
  2495.         INC A
  2496.         LD (S_ART+18),A
  2497.         JR U2S3
  2498. U2S7    PUSH HL
  2499.         CALL RND
  2500.         AND 3
  2501.         LD L,A
  2502.         LD H,0
  2503.         ADD HL,HL
  2504.         ADD HL,DE
  2505.         INC (HL)
  2506.         POP HL
  2507.         JR U2S3
  2508. U2S4    INC HL
  2509.         PUSH HL
  2510.         LD HL,8
  2511.         ADD HL,DE
  2512.         EX DE,HL
  2513.         POP HL
  2514.         DJNZ U2S30
  2515.         ;артеф и оруж
  2516.         LD B,15
  2517.         LD DE,U_GUN
  2518.         LD HL,S_GUN
  2519.         CALL UplusS
  2520.         LD HL,S_ART
  2521.         LD B,10
  2522.         CALL UplusS
  2523.         LD HL,S_LIV
  2524.         LD B,7
  2525.         CALL UplusS
  2526.         LD A,(S_ART+12)
  2527.         CP 5
  2528.         JR C,U2S1
  2529.         LD (S_TMP),A ;5 пси-контр
  2530. U2S1    LD A,(L_LAND)
  2531.         OR A
  2532.         RET NZ
  2533.         LD A,(L_UFO) ;тип НЛО
  2534.         LD HL,S_UFO
  2535.         CALL WA
  2536.         INC (HL)
  2537.         RET
  2538.  
  2539. OFFNUM  LD HL,RS-55 ;откл иссл
  2540.         LD BC,#80FF
  2541. OFNU    LD (HL),C
  2542.         INC HL
  2543.         DJNZ OFNU
  2544.         RET
  2545.  
  2546. DEMBEL  ;демобилизация
  2547.         CALL RNDG
  2548.         AND %00011111
  2549.         CP 10
  2550.         RET NC
  2551.         ADD A,A
  2552.         ADD A,A
  2553.         LD HL,AQNAVT
  2554.         CALL DD
  2555.         LD A,(HL)
  2556.         LD (DSDAT),A
  2557.         OR A
  2558.         RET Z
  2559.         INC HL
  2560.         LD A,(HL)
  2561.         CP 7
  2562.         RET C
  2563.         DEC HL
  2564.         LD (HL),0
  2565.         LD HL,AQU
  2566.         DEC (HL)
  2567.         LD A,96
  2568.         CALL DISPLX
  2569.         JP STOP_T
  2570.  
  2571. ;опции =================================================
  2572. MUL480  LD L,A
  2573.         LD H,0
  2574.         LD DE,480
  2575.         CALL MUL
  2576.         LD HL,ALLDAT
  2577.         ADD HL,DE
  2578.         RET
  2579.  
  2580. GAMs    DEFB 25,51,65,48,15,0
  2581.         DEFB 15,15,15,0,0,15,0,0,15,0,0,15
  2582.         DEFB 0,0,99,0,0,99,2,0,0,0,#7F
  2583.  
  2584. GM_DAT  ;строка игры (A=1..5)
  2585.         LD (GAMs+5),A
  2586.         DEC A
  2587.         CALL MUL480
  2588.         LD DE,TIM-DATA
  2589.         ADD HL,DE
  2590.         Ms 3+#C0
  2591.         LD DE,GAMs+9
  2592.         LD BC,8
  2593.         LDIR
  2594.         INC DE
  2595.         LDI
  2596.         LDI
  2597.         INC DE
  2598.         PUSH DE
  2599.         LD BC,10
  2600.         ADD HL,BC
  2601.         LD DE,GAMs+26
  2602.         LDI
  2603.         LDI
  2604.         LD A,(HL)
  2605.         INC A
  2606.         CALL WTRB
  2607.         LD HL,DCS+8
  2608.         POP DE
  2609.         LDI
  2610.         LDI
  2611.         LD HL,GAMs+21
  2612.         LD A,(HL)
  2613.         CP 15
  2614.         JP NZ,MEM7
  2615.         LD (HL),0
  2616.         JP MEM7
  2617.  
  2618. MU_4CD  DEFW #400,#4C1E,T+138
  2619.         DEFB 5
  2620.  
  2621. GAMLST  LD IX,MU_4CD
  2622.         LD (MU_4CD+3),A
  2623.         CALL MENU
  2624.         LD HL,#E02
  2625.         LD B,5
  2626. GAL     pushs
  2627.         LD A,B
  2628.         LD (SX),HL
  2629.         CALL GM_DAT
  2630.         LD HL,GAMs
  2631.         LD (TXT),HL
  2632.         CALL WORD
  2633.         pops
  2634.         DEC H
  2635.         DJNZ GAL
  2636.         CALL INIMNU
  2637.         LD HL,SELmr
  2638.         LD (sx1+1),HL ;HL-Sub.ADR
  2639.         LD (sx2+1),HL
  2640.         JP COPYAT
  2641.  
  2642. LD_M    LD A,#4D
  2643.         CALL GAMLST
  2644.         CALL SELTN
  2645.         RET NC
  2646.         CALL MUL480
  2647.         LD DE,DATA
  2648. OP_M    Ms 3
  2649.         LD BC,DATLEN
  2650.         LDIR
  2651.         JP MEM7
  2652.  
  2653. SV_M    LD A,#4C
  2654.         CALL GAMLST
  2655.         CALL SELTN
  2656.         RET NC
  2657.         CALL MUL480
  2658.         LD DE,DATA
  2659.         EX DE,HL
  2660.         JR OP_M
  2661.  
  2662. MU_4A   DEFW #503,#4A16,T+182
  2663.         DEFB 6
  2664. DO_T    DEFW SV_M,LD_M,NW_G,SV_D,LD_D,EX_G
  2665. MU_4B   DEFW #B00,#4B18
  2666.  
  2667. OPTION  ;Диск.операции
  2668.         CALL SAVMON
  2669.         CALL    BACK
  2670.         LD      IX,MU_4A
  2671.         CALL    SELM
  2672.         JP      NC,UP9
  2673.         LD      HL,DO_T
  2674.         CALL    WT
  2675.         LD      DE,OPTR
  2676.         PUSH    DE
  2677.         JP (HL)
  2678. OPTR    JP MLOOP
  2679.  
  2680. EX_G    LD IX,MU_4B
  2681.         CALL MENUC
  2682.         CALL YES_NO
  2683.         RET NZ
  2684. EX__    LD HL,#4000
  2685.         LD DE,#4001
  2686.         LD (HL),E
  2687.         LD BC,#2000
  2688.         LDIR
  2689.         ;LD BC,#7FFD
  2690.         ;XOR A
  2691.         ;OUT (C),A
  2692.         ;CALL 0
  2693.         jp quit
  2694.  
  2695. MU_4E   DEFW #301,#4E1A
  2696. NW_G    LD IX,MU_4E
  2697.         CALL MENUC
  2698.         CALL YES_NO
  2699.         RET NZ
  2700. NW_GE   Ms 3+#C0
  2701.         LD HL,NEWDAT
  2702.         LD DE,DATA
  2703.         LD BC,DATLEN
  2704.         LDIR
  2705.         CALL MEM7
  2706. NGG     CALL RND
  2707.         CP 192
  2708.         JR NC,NGG
  2709.         INC A
  2710.         LD (N_AQU),A
  2711.         LD A,R
  2712.         LD (RNBgen+1),A
  2713.         LD HL,(RNA)
  2714.         LD (RNAgen),HL
  2715.         LD A,28
  2716.         LD (SYSINI),A
  2717.         RET
  2718.  
  2719. SV_D    LD IX,MU53
  2720.         LD A,194
  2721.         LD (MU53+4),A
  2722.         CALL MENUC
  2723.         CALL YES_NO
  2724.         RET NZ
  2725.        if PROTECT
  2726.         CALL CHK_2 ;[]
  2727.         LD HL,(CRC2)
  2728.         OR A
  2729.         SBC HL,BC
  2730.         JR NZ,LD_RTN
  2731.        endif
  2732. LD_RTR  Ms 3+#80
  2733. LD_RTN  LD DE,DSCR+1
  2734.         LD HL,ALLDAT
  2735.         LD BC,480*5
  2736.         LDIR
  2737.         LD HL,C_ONOF
  2738.         LD C,CFGLEN
  2739.         LDIR
  2740.         LD HL,DATA
  2741.         LD BC,600
  2742.         LDIR
  2743.        if PROTECT
  2744.         CALL XORDAT
  2745.         LD (DSCR),A
  2746.        endif
  2747.         CALL MEM7
  2748.         ;save DSCR,4k
  2749.         CALL S_DSCR
  2750.         CALL OFFD
  2751.         ;load DSCR,4k
  2752.         CALL L_DSCR
  2753.         Ms 3+#80
  2754.        if PROTECT
  2755.         CALL XORDAT
  2756.         CALL XORDAT
  2757.         LD HL,DSCR
  2758.         CP (HL)
  2759.         JR NZ,LD_RTR
  2760.        endif
  2761.         JP MEM7
  2762.  
  2763. MU53    DEFW #901,#351A
  2764.         DEFB 196
  2765.  
  2766. LD_D    LD IX,MU53
  2767.         LD A,195
  2768.         LD (MU53+4),A
  2769.         CALL MENUC
  2770.         CALL YES_NO
  2771.         RET NZ
  2772.         ;load DSCR,4k
  2773.         CALL L_DSCR
  2774.         Ms 3+#40
  2775.        if PROTECT
  2776.         CALL XORDAT
  2777.         CALL XORDAT
  2778.         LD HL,DSCR
  2779.         CP (HL)
  2780.         JP NZ,LD_ER
  2781.         CALL XORDAT
  2782.        endif
  2783.         LD HL,DSCR+1
  2784.         LD DE,ALLDAT
  2785.         LD BC,480*5
  2786.         LDIR
  2787.         LD DE,C_ONOF
  2788.         LD C,CFGLEN
  2789.         LDIR
  2790.         LD DE,DATA
  2791.         LD BC,DATLEN
  2792.         LDIR
  2793.         JP MEM7
  2794.  
  2795. SET_LS  XOR A
  2796.         LD (SIDE),A
  2797.         LD HL,DSCR
  2798.         LD B,16
  2799.         LD DE,#201
  2800.         RET
  2801.  
  2802. L_DSCR  CALL LDASM3
  2803.         LD B,3
  2804. L_DS    PUSH BC
  2805.         CALL TR000
  2806.         CALL SET_LS
  2807. L_D1    PUSH BC
  2808.         LD B,1
  2809.         CALL D_READ
  2810.         POP BC
  2811.         JR C,L_D_ER
  2812.         DEC H
  2813.         DEC H
  2814.         DEC H
  2815.         DJNZ L_D1
  2816.         POP BC
  2817.         JP LDASM2
  2818. L_D_ER  POP BC
  2819.         DJNZ L_DS
  2820.         JP LDASM2
  2821.  
  2822. S_DSCR  CALL LDASM3
  2823.         CALL TR000
  2824.         CALL SET_LS
  2825.         CALL D_WRITE
  2826.         JP LDASM2
  2827.  
  2828.        if PROTECT
  2829. XORDAT  ;xor DSCR+1,len=3000 CRC->A
  2830.         LD A,#A9
  2831.         EX AF,AF
  2832.         LD HL,DSCR+1
  2833.         LD DE,SCR+200
  2834.         LD BC,3000
  2835. XD0     LD A,(DE)
  2836.         XOR (HL)
  2837.         LD (HL),A
  2838.         EX AF,AF
  2839.         XOR (HL)
  2840.         EX AF,AF
  2841.         INC DE
  2842.         INC HL
  2843.         DEC BC
  2844.         LD A,C
  2845.         OR B
  2846.         JR NZ,XD0
  2847.         EX AF,AF
  2848.         RET
  2849.  
  2850.         PUSH AF
  2851. CHECK4  ; []#4
  2852.         LD A,70
  2853.         LD HL,TAB100+7
  2854.         CALL BT
  2855.         RRCA
  2856.         RRCA
  2857.         LD C,A
  2858.         LD A,22
  2859.         CALL BA
  2860.         CP C
  2861.         RET Z
  2862.         POP AF
  2863.         JP B_LOOP
  2864.        endif
  2865.  
  2866. LD_ER   CALL XEARTH
  2867.         CALL COPYAT
  2868.         LD IX,MU54
  2869.         CALL BEEP
  2870.         JP MNU
  2871. MU54    DEFW #307,#3610
  2872.  
  2873.