?login_element?

Subversion Repositories NedoOS

Rev

Rev 1033 | 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 это всегда порт
  2053.         LD (OBJ_N),A
  2054.         OR A
  2055.         JR Z,NJ0
  2056.         CP 4
  2057.         JR Z,NJ4
  2058.         CALL RNDG ;кор,порт,остр,Ub,Uc (0..15)
  2059.        ld a,2 ;FIXME это всегда порт
  2060.         AND #F
  2061.         JR NJR
  2062. NJ4     LD B,80
  2063. NJ4_    CALL RND  ;Xb (1..7)
  2064.         AND 7
  2065.         JR Z,NJ4_
  2066.         LD C,A
  2067.         LD HL,BASE
  2068.         CALL BA
  2069.         CP 100
  2070.         LD A,C
  2071.         JR C,NJR
  2072.         DJNZ NJ4_
  2073.         JR NEWOBJ ;нет живых Xb
  2074. NJ0     LD A,(PERIOD) ;ufo (0..2)
  2075.         LD HL,W_UFO
  2076.         CALL WA
  2077.         CALL R100
  2078.         LD C,0
  2079.         CP (HL)
  2080.         JR C,NJ00
  2081.         INC C
  2082.         INC HL
  2083.         CP (HL)
  2084.         JR C,NJ00
  2085.         INC C
  2086. NJ00    LD A,C
  2087. NJR     LD (OBJ_MOD),A
  2088.         RET
  2089.  
  2090. RNDG    PUSH    HL ;пост случ посл
  2091.         LD      HL,(RNAgen)
  2092.         INC     HL
  2093.         LD      A,H ;;;
  2094.         AND     #1F
  2095.         LD      H,A
  2096.         LD      A,(RNBgen)
  2097.         RRCA
  2098.         RRCA
  2099.         RRCA
  2100.         XOR     (HL)
  2101.         SUB     L
  2102.         ADD     A,%11101
  2103.         LD      (RNAgen),HL
  2104.         LD      (RNBgen),A
  2105.         POP     HL
  2106.         RET
  2107.  
  2108. R100    CALL RNDG ; (rnd 1..100)
  2109.         AND #7F
  2110.         CP 100
  2111.         JR NC,R100
  2112.         INC A
  2113.         RET
  2114.  
  2115. TR_N1   DEFB 198-2,0,202-1,218-1,194-1;перв назв
  2116. TARh    ;генератор целей
  2117.         LD HL,TARoff
  2118.         LD A,(HL)
  2119.         OR A
  2120.         JR Z,TRon
  2121.         DEC (HL)
  2122.         RET NZ
  2123.         INC HL   ;нов
  2124.         CALL RNDG
  2125.         AND #1F
  2126.         ADD A,4
  2127. ; LD A,6;---------
  2128.         LD (HL),A ;время жизни (4..19)
  2129.         CALL NEWOBJ
  2130.         LD E,A
  2131.         LD A,(OBJ_N)
  2132.         LD (TARlst),A
  2133.         PUSH AF
  2134.         LD HL,TR_N1
  2135.         CALL BA
  2136.         ADD A,E
  2137.         LD (DSDAT),A
  2138.         POP AF
  2139.         PUSH AF
  2140.         OR A
  2141.         CALL Z,UFOst
  2142.         POP AF
  2143.         PUSH AF
  2144.         LD HL,T_UFO
  2145.         CALL BA
  2146.         LD (HL),E
  2147.         LD A,84
  2148.         CALL DISPL
  2149.         POP AF
  2150.         ADD A,85
  2151.         CALL DISPLX
  2152.         CALL STOP_T
  2153.         JP REMAP
  2154.  
  2155. TRon    INC HL
  2156.         DEC (HL)
  2157.         RET NZ
  2158.         DEC HL
  2159.         CALL RNDG
  2160.         AND #1F
  2161.         ADD A,2;время межд целями (2..33)
  2162.         LD (HL),A
  2163. ; LD (HL),1 ;-----------
  2164.         ;убрать стар цель
  2165.         LD A,(TARlst)
  2166.         CP 200
  2167.         RET NC
  2168.         LD E,A
  2169.         LD HL,T_UFO ;цель была уничтожена
  2170.         CALL BA
  2171.         LD A,(HL)
  2172.         CP 200
  2173.         RET NC
  2174.         LD A,E
  2175.         PUSH AF
  2176.         CP 4
  2177.         JR Z,TRxb
  2178.         JR NC,TRubc ;для Ub,Uc
  2179.         OR A
  2180.         JR Z,TRufo
  2181.         LD HL,REYTING ;для гор,остр,кор
  2182.         LD A,(HL)
  2183.         CP 2
  2184.         JR NC,TR_
  2185.         INC (HL)
  2186.         JR TR_
  2187. TRxb    LD A,(T_BAS);для XB
  2188.         LD HL,BASE
  2189.         CALL BA
  2190.         LD (HL),255
  2191.         JR TR_
  2192. TRufo   LD A,(T_UFO)
  2193.         CP 3
  2194.         LD A,92    ;для ufo
  2195.         CALL C,DISPL
  2196. TR_     POP AF
  2197.         PUSH AF
  2198.         LD HL,T_UFO
  2199.         CALL BA
  2200.         LD (HL),255
  2201. TRubc   POP AF
  2202.         LD HL,T_TYPE
  2203.         CP (HL)
  2204.         CALL Z,GOhome ;цель потеряна
  2205.         LD A,255
  2206.         LD (TARlst),A
  2207.         JP REMAP
  2208.  
  2209. UFOst   ;Новые коорд НЛО
  2210.         PUSH DE
  2211. Ust     CALL UFORND
  2212.         CALL isSEA
  2213.         JR Z,Ust
  2214.         LD (UFO),HL
  2215.         CALL UFORND
  2216.         LD (UFO_T),HL
  2217.         POP DE
  2218.         RET
  2219.  
  2220. UFORND  CALL RND ;случ коорд
  2221.         AND #7F
  2222.         CP 116
  2223.         JR NC,UFORND
  2224.         LD H,A
  2225. UC1     CALL RND
  2226.         CP 190
  2227.         JR NC,UC1
  2228.         LD L,A
  2229.         RET
  2230.  
  2231.  
  2232. REMAP   ;восст карты
  2233.         XOR A
  2234.         LD (T_D),A
  2235.         LD (T_SW),A
  2236.         LD HL,DSCR
  2237.         LD DE,SCR
  2238.         LD C,8
  2239.         CALL RE_64
  2240.         LD HL,DSCR+#800
  2241.         LD DE,SCR+#800
  2242.         LD C,7
  2243. RE_64   LD B,8
  2244.         PUSH DE
  2245.         PUSH HL
  2246. RE_8    PUSHs
  2247.         LDI
  2248.         LDI
  2249.         LDI
  2250.         LDI;4
  2251.         LDI
  2252.         LDI
  2253.         LDI
  2254.         LDI;8
  2255.         LDI
  2256.         LDI
  2257.         LDI
  2258.         LDI;12
  2259.         LDI
  2260.         LDI
  2261.         LDI
  2262.         LDI;16
  2263.         LDI
  2264.         LDI
  2265.         LDI
  2266.         LDI;20
  2267.         LDI
  2268.         LDI
  2269.         LDI
  2270.         LDI;24
  2271.         POPs
  2272.         INC H
  2273.         INC D
  2274.         DJNZ RE_8
  2275.         POP HL
  2276.         POP DE
  2277.         LD A,L
  2278.         ADD A,32
  2279.         LD L,A
  2280.         LD A,E
  2281.         ADD A,32
  2282.         LD E,A
  2283.         DEC C
  2284.         JR NZ,RE_64
  2285.         RET
  2286.  
  2287.  
  2288. isSEA   ;HL - это океан ? NZ-да, Z-нет
  2289.         PUSH HL
  2290.         EX DE,HL
  2291.         LD IX,DATA01
  2292.         LD A,E
  2293.         AND %111
  2294.         LD (ISE0+2),A
  2295.         CALL STD
  2296.         CALL PCOORD
  2297. ISE0    LD A,(IX+0)
  2298.         AND (HL)
  2299.         POP HL
  2300.         RET
  2301.  
  2302. ACTM    LD A,(T_D)
  2303.         AND 1
  2304.         LD A,1
  2305.         LD (T_D),A
  2306.         JR Z,AKM0
  2307.         CALL SHOWD
  2308. AKM0    LD HL,(UFO_T) ;UFO move
  2309.         PUSH HL
  2310.         LD DE,(UFO)
  2311.         CALL LINini
  2312.         CALL LINnx_
  2313.         LD (UFO),DE
  2314.         POP HL
  2315.         XOR A
  2316.         SBC HL,DE
  2317.         JR NZ,AKM1
  2318.         CALL UFORND
  2319.         LD (UFO_T),HL
  2320. AKM1    LD HL,(UFO) ;intr move
  2321.         LD A,(T_TYPE)
  2322.         OR A
  2323.         JR Z,AKM2
  2324.         LD HL,(INTR_T)
  2325. AKM2    PUSH HL
  2326.         LD DE,(INTR)
  2327.         XOR A
  2328.         SBC HL,DE
  2329.         POP HL
  2330.         JR Z,AKM4
  2331.         PUSH HL
  2332.         CALL LINini
  2333.         CALL LINnx_
  2334.         LD (INTR),DE
  2335.         POP HL
  2336.         XOR A
  2337.         SBC HL,DE
  2338.         JP NZ,SHOWD
  2339. AKM4    LD A,(T_TYPE)
  2340.         CP 100
  2341.         JP NC,SHOWD
  2342.         OR A
  2343.         JR NZ,AKM3
  2344.         LD HL,(UFO)
  2345.         CALL isSEA
  2346.         JP Z,SHOWD
  2347.         LD A,(xHAC2)
  2348.         CP #D6
  2349.         JP Z,SEA1
  2350.         CALL BATTLE
  2351. AKM3    ;вызов боя
  2352.         CALL BATTL1
  2353.  
  2354. isTLEF  LD A,(RS+58)
  2355.         OR A
  2356.         RET NZ
  2357.         LD (Tleth),A
  2358.         RET
  2359.  
  2360. EVAC    ;эвакуация
  2361.         CALL BADDER
  2362.         JP SEA2_
  2363.  
  2364. ALLDIE  ;все погибли
  2365.         CALL MEM7
  2366.         CALL BACK
  2367.         LD IX,MU93
  2368.         CALL MENUC
  2369.         CALL TMOF
  2370.         CALL BADDER
  2371.         JP SEA4
  2372.  
  2373. MU93    DEFW #A02,#5D1A
  2374.  
  2375. TARRES  LD A,(T_TYPE) ;откл цель
  2376.         PUSH AF
  2377.         LD HL,T_UFO
  2378.         CALL BA
  2379.         LD B,(HL)
  2380.         LD (HL),255
  2381.         POP AF
  2382.         OR A
  2383.         RET
  2384. BADDER  ;плохие рез-ты
  2385.         CALL TARRES
  2386.         RET Z ;для нло
  2387.         CP 4
  2388.         JR Z,BDxb
  2389.         RET NC ;для Ub,Uc
  2390.         LD HL,REYTING ;для гор,остр,кор
  2391.         LD A,(HL)
  2392.         CP 2
  2393.         RET NC
  2394.         INC (HL)
  2395.         RET
  2396. BDxb    LD A,B;для XB
  2397.         LD HL,BASE
  2398.         CALL BA
  2399.         LD (HL),255
  2400.         RET
  2401.  
  2402. POSTBAT ;итоги после боя
  2403.        if PROTECT
  2404.         CALL CHECK4
  2405.        endif
  2406.         CALL TARRES
  2407.         CALL PICKER
  2408.         JP U2S
  2409.  
  2410. CLEAR   ;очистка врем хран
  2411.         LD HL,U_GUN
  2412.         LD B,U_len
  2413. CLE0    LD (HL),0
  2414.         INC HL
  2415.         DJNZ CLE0
  2416.         RET
  2417.  
  2418. PICKER  CALL STD ;сообщения о собр
  2419.         CALL OFFD
  2420.         LD HL,#5
  2421.         LD (SX),HL
  2422.         LD A,199
  2423.         CALL NWRDM
  2424.         LD B,0
  2425.         LD HL,#201
  2426.         LD (SX),HL
  2427. PK1     PUSH BC
  2428.         LD A,B
  2429.         LD HL,U_GUN
  2430.         CALL BA
  2431.         OR A
  2432.         JR Z,PK4
  2433.         PUSH AF
  2434.         LD A,B
  2435.         CP 15
  2436.         JR C,PK2
  2437.         ADD A,43-15
  2438.         CP 51
  2439.         JR C,PK2
  2440.         ADD A,111-51
  2441. PK2     CALL NWRDM
  2442.         POP AF
  2443.         LD HL,SX
  2444.         LD (HL),22
  2445.         PUSH HL
  2446.         CALL WB
  2447.         POP HL
  2448.         LD (HL),1
  2449.         INC HL
  2450.         INC (HL)
  2451. PK4     POP BC
  2452.         INC B
  2453.         LD A,B
  2454.         CP U_len
  2455.         JR C,PK1
  2456.         CALL STS
  2457.         CALL OFFS
  2458.         CALL COPY
  2459.         ATRs #0,#1618,#70
  2460.         LD L,22
  2461.         LD B,6
  2462.         LD A,#68
  2463.         CALL ATRBAR
  2464.         CALL PT128
  2465.         JP TMOF
  2466.  
  2467. UplusS  LD A,(DE)
  2468.         INC DE
  2469.         ADD A,(HL)
  2470.         LD (HL),A
  2471.         INC HL
  2472.         JR NC,UpS
  2473.         INC (HL)
  2474. UpS     INC HL
  2475.         DJNZ UplusS
  2476.         RET
  2477.  
  2478. U2S     ;из U_XXX в S_XXX
  2479.         LD B,5  ;инопл-профессионалы
  2480.         LD HL,U_LIV
  2481.         LD DE,S_PROF
  2482. U2S30   LD C,(HL)
  2483. U2S3    LD A,C
  2484.         OR A
  2485.         JR Z,U2S4
  2486.         DEC C
  2487.         CALL RND
  2488.         AND %1000 ;только 1 из 2х
  2489.         JR Z,U2S7
  2490.         LD A,(S_ART+18)
  2491.         INC A
  2492.         LD (S_ART+18),A
  2493.         JR U2S3
  2494. U2S7    PUSH HL
  2495.         CALL RND
  2496.         AND 3
  2497.         LD L,A
  2498.         LD H,0
  2499.         ADD HL,HL
  2500.         ADD HL,DE
  2501.         INC (HL)
  2502.         POP HL
  2503.         JR U2S3
  2504. U2S4    INC HL
  2505.         PUSH HL
  2506.         LD HL,8
  2507.         ADD HL,DE
  2508.         EX DE,HL
  2509.         POP HL
  2510.         DJNZ U2S30
  2511.         ;артеф и оруж
  2512.         LD B,15
  2513.         LD DE,U_GUN
  2514.         LD HL,S_GUN
  2515.         CALL UplusS
  2516.         LD HL,S_ART
  2517.         LD B,10
  2518.         CALL UplusS
  2519.         LD HL,S_LIV
  2520.         LD B,7
  2521.         CALL UplusS
  2522.         LD A,(S_ART+12)
  2523.         CP 5
  2524.         JR C,U2S1
  2525.         LD (S_TMP),A ;5 пси-контр
  2526. U2S1    LD A,(L_LAND)
  2527.         OR A
  2528.         RET NZ
  2529.         LD A,(L_UFO) ;тип НЛО
  2530.         LD HL,S_UFO
  2531.         CALL WA
  2532.         INC (HL)
  2533.         RET
  2534.  
  2535. OFFNUM  LD HL,RS-55 ;откл иссл
  2536.         LD BC,#80FF
  2537. OFNU    LD (HL),C
  2538.         INC HL
  2539.         DJNZ OFNU
  2540.         RET
  2541.  
  2542. DEMBEL  ;демобилизация
  2543.         CALL RNDG
  2544.         AND %00011111
  2545.         CP 10
  2546.         RET NC
  2547.         ADD A,A
  2548.         ADD A,A
  2549.         LD HL,AQNAVT
  2550.         CALL DD
  2551.         LD A,(HL)
  2552.         LD (DSDAT),A
  2553.         OR A
  2554.         RET Z
  2555.         INC HL
  2556.         LD A,(HL)
  2557.         CP 7
  2558.         RET C
  2559.         DEC HL
  2560.         LD (HL),0
  2561.         LD HL,AQU
  2562.         DEC (HL)
  2563.         LD A,96
  2564.         CALL DISPLX
  2565.         JP STOP_T
  2566.  
  2567. ;опции =================================================
  2568. MUL480  LD L,A
  2569.         LD H,0
  2570.         LD DE,480
  2571.         CALL MUL
  2572.         LD HL,ALLDAT
  2573.         ADD HL,DE
  2574.         RET
  2575.  
  2576. GAMs    DEFB 25,51,65,48,15,0
  2577.         DEFB 15,15,15,0,0,15,0,0,15,0,0,15
  2578.         DEFB 0,0,99,0,0,99,2,0,0,0,#7F
  2579.  
  2580. GM_DAT  ;строка игры (A=1..5)
  2581.         LD (GAMs+5),A
  2582.         DEC A
  2583.         CALL MUL480
  2584.         LD DE,TIM-DATA
  2585.         ADD HL,DE
  2586.         Ms 3+#C0
  2587.         LD DE,GAMs+9
  2588.         LD BC,8
  2589.         LDIR
  2590.         INC DE
  2591.         LDI
  2592.         LDI
  2593.         INC DE
  2594.         PUSH DE
  2595.         LD BC,10
  2596.         ADD HL,BC
  2597.         LD DE,GAMs+26
  2598.         LDI
  2599.         LDI
  2600.         LD A,(HL)
  2601.         INC A
  2602.         CALL WTRB
  2603.         LD HL,DCS+8
  2604.         POP DE
  2605.         LDI
  2606.         LDI
  2607.         LD HL,GAMs+21
  2608.         LD A,(HL)
  2609.         CP 15
  2610.         JP NZ,MEM7
  2611.         LD (HL),0
  2612.         JP MEM7
  2613.  
  2614. MU_4CD  DEFW #400,#4C1E,T+138
  2615.         DEFB 5
  2616.  
  2617. GAMLST  LD IX,MU_4CD
  2618.         LD (MU_4CD+3),A
  2619.         CALL MENU
  2620.         LD HL,#E02
  2621.         LD B,5
  2622. GAL     pushs
  2623.         LD A,B
  2624.         LD (SX),HL
  2625.         CALL GM_DAT
  2626.         LD HL,GAMs
  2627.         LD (TXT),HL
  2628.         CALL WORD
  2629.         pops
  2630.         DEC H
  2631.         DJNZ GAL
  2632.         CALL INIMNU
  2633.         LD HL,SELmr
  2634.         LD (sx1+1),HL ;HL-Sub.ADR
  2635.         LD (sx2+1),HL
  2636.         JP COPYAT
  2637.  
  2638. LD_M    LD A,#4D
  2639.         CALL GAMLST
  2640.         CALL SELTN
  2641.         RET NC
  2642.         CALL MUL480
  2643.         LD DE,DATA
  2644. OP_M    Ms 3
  2645.         LD BC,DATLEN
  2646.         LDIR
  2647.         JP MEM7
  2648.  
  2649. SV_M    LD A,#4C
  2650.         CALL GAMLST
  2651.         CALL SELTN
  2652.         RET NC
  2653.         CALL MUL480
  2654.         LD DE,DATA
  2655.         EX DE,HL
  2656.         JR OP_M
  2657.  
  2658. MU_4A   DEFW #503,#4A16,T+182
  2659.         DEFB 6
  2660. DO_T    DEFW SV_M,LD_M,NW_G,SV_D,LD_D,EX_G
  2661. MU_4B   DEFW #B00,#4B18
  2662.  
  2663. OPTION  ;Диск.операции
  2664.         CALL SAVMON
  2665.         CALL    BACK
  2666.         LD      IX,MU_4A
  2667.         CALL    SELM
  2668.         JP      NC,UP9
  2669.         LD      HL,DO_T
  2670.         CALL    WT
  2671.         LD      DE,OPTR
  2672.         PUSH    DE
  2673.         JP (HL)
  2674. OPTR    JP MLOOP
  2675.  
  2676. EX_G    LD IX,MU_4B
  2677.         CALL MENUC
  2678.         CALL YES_NO
  2679.         RET NZ
  2680. EX__    LD HL,#4000
  2681.         LD DE,#4001
  2682.         LD (HL),E
  2683.         LD BC,#2000
  2684.         LDIR
  2685.         ;LD BC,#7FFD
  2686.         ;XOR A
  2687.         ;OUT (C),A
  2688.         ;CALL 0
  2689.         jp quit
  2690.  
  2691. MU_4E   DEFW #301,#4E1A
  2692. NW_G    LD IX,MU_4E
  2693.         CALL MENUC
  2694.         CALL YES_NO
  2695.         RET NZ
  2696. NW_GE   Ms 3+#C0
  2697.         LD HL,NEWDAT
  2698.         LD DE,DATA
  2699.         LD BC,DATLEN
  2700.         LDIR
  2701.         CALL MEM7
  2702. NGG     CALL RND
  2703.         CP 192
  2704.         JR NC,NGG
  2705.         INC A
  2706.         LD (N_AQU),A
  2707.         LD A,R
  2708.         LD (RNBgen+1),A
  2709.         LD HL,(RNA)
  2710.         LD (RNAgen),HL
  2711.         LD A,28
  2712.         LD (SYSINI),A
  2713.         RET
  2714.  
  2715. SV_D    LD IX,MU53
  2716.         LD A,194
  2717.         LD (MU53+4),A
  2718.         CALL MENUC
  2719.         CALL YES_NO
  2720.         RET NZ
  2721.        if PROTECT
  2722.         CALL CHK_2 ;[]
  2723.         LD HL,(CRC2)
  2724.         OR A
  2725.         SBC HL,BC
  2726.         JR NZ,LD_RTN
  2727.        endif
  2728. LD_RTR  Ms 3+#80
  2729. LD_RTN  LD DE,DSCR+1
  2730.         LD HL,ALLDAT
  2731.         LD BC,480*5
  2732.         LDIR
  2733.         LD HL,C_ONOF
  2734.         LD C,CFGLEN
  2735.         LDIR
  2736.         LD HL,DATA
  2737.         LD BC,600
  2738.         LDIR
  2739.        if PROTECT
  2740.         CALL XORDAT
  2741.         LD (DSCR),A
  2742.        endif
  2743.         CALL MEM7
  2744.         ;save DSCR,4k
  2745.         CALL S_DSCR
  2746.         CALL OFFD
  2747.         ;load DSCR,4k
  2748.         CALL L_DSCR
  2749.         Ms 3+#80
  2750.        if PROTECT
  2751.         CALL XORDAT
  2752.         CALL XORDAT
  2753.         LD HL,DSCR
  2754.         CP (HL)
  2755.         JR NZ,LD_RTR
  2756.        endif
  2757.         JP MEM7
  2758.  
  2759. MU53    DEFW #901,#351A
  2760.         DEFB 196
  2761.  
  2762. LD_D    LD IX,MU53
  2763.         LD A,195
  2764.         LD (MU53+4),A
  2765.         CALL MENUC
  2766.         CALL YES_NO
  2767.         RET NZ
  2768.         ;load DSCR,4k
  2769.         CALL L_DSCR
  2770.         Ms 3+#40
  2771.        if PROTECT
  2772.         CALL XORDAT
  2773.         CALL XORDAT
  2774.         LD HL,DSCR
  2775.         CP (HL)
  2776.         JP NZ,LD_ER
  2777.         CALL XORDAT
  2778.        endif
  2779.         LD HL,DSCR+1
  2780.         LD DE,ALLDAT
  2781.         LD BC,480*5
  2782.         LDIR
  2783.         LD DE,C_ONOF
  2784.         LD C,CFGLEN
  2785.         LDIR
  2786.         LD DE,DATA
  2787.         LD BC,DATLEN
  2788.         LDIR
  2789.         JP MEM7
  2790.  
  2791. SET_LS  XOR A
  2792.         LD (SIDE),A
  2793.         LD HL,DSCR
  2794.         LD B,16
  2795.         LD DE,#201
  2796.         RET
  2797.  
  2798. L_DSCR  CALL LDASM3
  2799.         LD B,3
  2800. L_DS    PUSH BC
  2801.         CALL TR000
  2802.         CALL SET_LS
  2803. L_D1    PUSH BC
  2804.         LD B,1
  2805.         CALL D_READ
  2806.         POP BC
  2807.         JR C,L_D_ER
  2808.         DEC H
  2809.         DEC H
  2810.         DEC H
  2811.         DJNZ L_D1
  2812.         POP BC
  2813.         JP LDASM2
  2814. L_D_ER  POP BC
  2815.         DJNZ L_DS
  2816.         JP LDASM2
  2817.  
  2818. S_DSCR  CALL LDASM3
  2819.         CALL TR000
  2820.         CALL SET_LS
  2821.         CALL D_WRITE
  2822.         JP LDASM2
  2823.  
  2824.        if PROTECT
  2825. XORDAT  ;xor DSCR+1,len=3000 CRC->A
  2826.         LD A,#A9
  2827.         EX AF,AF
  2828.         LD HL,DSCR+1
  2829.         LD DE,SCR+200
  2830.         LD BC,3000
  2831. XD0     LD A,(DE)
  2832.         XOR (HL)
  2833.         LD (HL),A
  2834.         EX AF,AF
  2835.         XOR (HL)
  2836.         EX AF,AF
  2837.         INC DE
  2838.         INC HL
  2839.         DEC BC
  2840.         LD A,C
  2841.         OR B
  2842.         JR NZ,XD0
  2843.         EX AF,AF
  2844.         RET
  2845.  
  2846.         PUSH AF
  2847. CHECK4  ; []#4
  2848.         LD A,70
  2849.         LD HL,TAB100+7
  2850.         CALL BT
  2851.         RRCA
  2852.         RRCA
  2853.         LD C,A
  2854.         LD A,22
  2855.         CALL BA
  2856.         CP C
  2857.         RET Z
  2858.         POP AF
  2859.         JP B_LOOP
  2860.        endif
  2861.  
  2862. LD_ER   CALL XEARTH
  2863.         CALL COPYAT
  2864.         LD IX,MU54
  2865.         CALL BEEP
  2866.         JP MNU
  2867. MU54    DEFW #307,#3610
  2868.  
  2869.