?login_element?

Subversion Repositories NedoOS

Rev

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