?login_element?

Subversion Repositories NedoOS

Rev

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

  1. DELPCmlz=DEC40
  2. L_OFF   ;Сброс битов видимости
  3.         LD HL,#E000
  4.         LD BC,#2000
  5. L_OF1   LD A,(HL)
  6.         CP 3
  7.         JR C,L_OF2
  8.         SET 7,(HL)
  9. L_OF2   INC HL
  10.         DEC BC
  11.         LD A,C
  12.         OR B
  13.         JR NZ,L_OF1
  14.         LD HL,(L_IPOS)
  15.         BIT 7,H
  16.         RET NZ
  17.         XOR A
  18.         PUSH HL
  19.         CALL L_Off
  20.         POP HL
  21.         LD A,1
  22.         CALL L_Off
  23.         LD HL,#FFFF
  24.         LD (L_IPOS),HL
  25.         RET
  26. L_Off   CALL FLOOR
  27.         LD C,16
  28. Loo1    LD B,16
  29.         LD (TX),HL
  30.         PUSH HL
  31. Loo0    CALL GSP ;psp
  32.         EXX
  33.         RES 7,(HL)
  34.         EXX
  35.         LD HL,TX
  36.         INC (HL)
  37.         DJNZ Loo0
  38.         POP HL
  39.         INC H
  40.         DEC C
  41.         JR NZ,Loo1
  42.         RET
  43.  
  44. ;-----------------------------------------------
  45. L_Land  CALL PT128
  46.         LD A,(L_LAND) ;загр.ландш
  47.         LD HL,L_LL
  48.         CALL WT
  49.         JP (HL)
  50.  
  51. ;========Формирование ландшафта================================
  52. L_SPR4  CALL L_SPR1;загр спр истр + НЛО
  53.         Ms 3
  54.         LD DE,DSCR
  55.         PUSH DE
  56.         LD HL,xUFO;+2
  57.         CALL DELPCmlz
  58.         CALL PT128
  59.         POP HL
  60.         LD DE,#B800
  61.         LD BC,#1800
  62.         LDIR
  63.         RET
  64.  
  65. L_SPR1  ;загр спр истр
  66.         LD HL,#B000
  67.         PUSH HL
  68.         LD DE,xATR
  69.         LD BC,96
  70.         LDIR
  71.         PUSH DE
  72.         POP HL
  73.         INC DE
  74.         LD (HL),%10000001 ;xATR трупа
  75.         LD C,31
  76.         LDIR
  77.         Ms 4
  78.         POP DE
  79.         LD HL,xSHIP;+2
  80.         CALL DELPCmlz
  81.         JP PT128
  82.  
  83. L_L10   CALL SET8x2 ;кop II
  84.         LD HL,7*256+34  ;)
  85.         CALL L_4var
  86.         JR L_SPR1
  87.  
  88. L_L1    CALL SET8x2 ;корабль I
  89.         LD HL,9*256+28
  90.         CALL L_4var
  91.         LD HL,#804
  92.         LD A,16
  93.         CALL L_INTR
  94.         JR L_SPR1
  95.  
  96. L_L6    CALL PERgt1
  97.         CALL SET4x4 ;Ubase I
  98.         LD HL,4*256+24   ;)
  99.         CALL L_4var
  100.         CALL RND
  101.         AND 3
  102.         LD HL,T_L6
  103.         CALL WT
  104.         CALL L_IN64
  105.         JR L_SPR1
  106.  
  107. L_L7    CALL PERgt1
  108.         CALL SET4x4 ;Tleth
  109.         LD HL,5*256+40
  110.         CALL L_4var
  111.         JR L_SPR1
  112.  
  113. T_ML0   DEFB   20,1,22,2,47,13,52,15,50,16,51,17,49,18,53,19
  114. L_L0    ;подв.мир
  115.         CALL RND
  116.         AND 7
  117.         LD HL,T_ML0
  118.         CALL WT
  119.         CALL L_1var
  120.         CALL D2FLR
  121.         CALL L_SWAP
  122.         CALL L_DUP
  123.         CALL L_COPY
  124.         CALL L_InUf
  125.         JP L_SPR4
  126.  
  127. L_L2    ;город-порт
  128.         LD HL,3*256+23
  129.         CALL RND
  130.         RRCA
  131.         LD A,16
  132.         JR C,L_l2
  133.         LD HL,10*256+44
  134.         LD A,45
  135. L_l2    PUSH AF
  136.         CALL L_1v10
  137.         CALL D2FLR
  138.         CALL L_SWAP
  139.         CALL L_DUP
  140.         CALL L_COPY
  141.         CALL RND
  142.         AND #30
  143.         LD L,A
  144.         CALL RND
  145.         AND #30
  146.         LD H,A
  147.         POP AF
  148.         PUSH AF
  149.         CALL L_INTR
  150.         POP AF
  151.         CP 16
  152.         JR Z,L_l20
  153.         LD BC,#1000 ;порт 2
  154.         LD HL,#F000
  155. L_l21   LD A,(HL)
  156.         CP 11
  157.         JR NZ,L_l22
  158.         LD (HL),48
  159.         JR L_l23
  160. L_l22   CP 15
  161.         JR NZ,L_l23
  162.         LD (HL),50
  163. L_l23   INC HL
  164.         DEC BC
  165.         LD A,C
  166.         OR B
  167.         JR NZ,L_l21
  168.         JP L_SPR1
  169. L_l20   LD HL,(L_IPOS) ;порт 1
  170.         DEC H
  171.         DEC L
  172.         PUSH HL
  173.         LD (TX),HL
  174.         LD B,16
  175. L_l24   LD A,16
  176.         CALL PSP
  177.         LD HL,TX
  178.         INC (HL)
  179.         DJNZ L_l24
  180.         POP HL
  181.         LD (TX),HL
  182.         LD B,16
  183. L_l25   LD A,16
  184.         CALL PSP
  185.         LD HL,TY
  186.         INC (HL)
  187.         DJNZ L_l25
  188.         JP L_SPR1
  189.  
  190. CHECK3  ;[]#3
  191.         LD HL,TAB100+75
  192.         LD A,(HL)
  193.         LD DE,14-75
  194.         ADD HL,DE
  195.         NEG
  196.         CP (HL)
  197.         RET Z
  198.         CALL NZ,MLOOP
  199.  
  200. L_L8    ;колония II
  201.         LD HL,12*256+46
  202.         JR L_L498
  203.  
  204. L_L4    ;наша база
  205.         LD HL,6*256+33 ;)
  206. L_L498  CALL L_1v10
  207.         CALL D2FLR
  208.         CALL L_SWAP
  209.         CALL L_COPY
  210.         JP L_SPR1
  211.  
  212. L_L9    ;Ubase II
  213.         LD HL,11*256+45
  214.         JR L_L498
  215.  
  216.        if PROTECT
  217. CHECK7  ;[]#7
  218.         LD HL,(TAB100+87)
  219.         LD B,10
  220.         PUSH BC
  221. CH7     INC L
  222.         DEC H
  223.         XOR A
  224.         LD DE,(TAB100+56)
  225.         SBC HL,DE
  226.         POP BC
  227.         RET Z
  228.         DJNZ CH7
  229.        endif
  230.        
  231. L_L3    ;остров
  232.         LD HL,8*256+38
  233.         CALL L_1v10
  234.         LD A,16
  235.         JR l_l35
  236.  
  237. T_L6    DEFW 0,#30,#3000,#3030
  238. L_L5    ;Ucolony I
  239.         CALL PERgt1
  240.         LD HL,14*256+48
  241.         CALL L_1var
  242.         LD A,64
  243. l_l35   PUSH AF
  244.         CALL D2FLR
  245.         CALL L_SWAP
  246.         CALL L_DUP
  247.         CALL L_COPY
  248.         CALL RND
  249.         AND #30
  250.         LD L,A
  251.         CALL RND
  252.         AND #30
  253.         LD H,A
  254.         POP AF
  255.         PUSH AF
  256.         CALL L_INTR
  257.         POP AF
  258.         CP 64
  259.         JP Z,L_SPR4
  260.         JP L_SPR1
  261.  
  262. L_SWAP  ;cоздать MAP16 и тасовать
  263.         LD BC,#1000
  264.         LD HL,MAP16
  265. Lsw0    LD (HL),C
  266.         INC HL
  267.         INC C
  268.         DJNZ Lsw0
  269.         LD DE,MAP16
  270.         LD H,D
  271.         LD B,16
  272. Lsw1    CALL RND
  273.         AND #F
  274.         LD L,A
  275.         LD A,(DE)
  276.         LD C,(HL)
  277.         LD (HL),A
  278.         LD A,C
  279.         LD (DE),A
  280.         INC DE
  281.         DJNZ Lsw1
  282.         RET
  283.  
  284. L_DUP   ;продублировать 0-4
  285.         LD H,MAP16/256
  286.         LD D,H
  287.         CALL RND
  288.         AND 7
  289.         RET Z
  290.         LD B,A
  291. Ldup1   CALL RND
  292.         AND #F
  293.         LD L,A
  294.         CALL RND
  295.         AND #F
  296.         LD E,A
  297.         LD A,(HL)
  298.         LD  (DE),A
  299.         DJNZ Ldup1
  300.         RET
  301.  
  302. L_C16   ;копировать кусок 16x16  ;HL-YX, A- No куска
  303.         LD E,0
  304.         ADD A,#90
  305.         LD D,A
  306.         PUSH DE
  307.         PUSH HL
  308.         XOR A
  309.         CALL LCC1
  310.         POP HL
  311.         POP DE
  312.         LD A,#10
  313.         ADD A,D
  314.         LD D,A
  315.         LD A,1
  316. LCC1    CALL FLOOR
  317.         LD C,16
  318. Lcc1    LD B,16
  319.         LD (TX),HL
  320.         PUSH HL
  321. Lcc0    CALL GSP ;psp
  322.         LD A,(DE)
  323.         INC DE
  324.         EXX
  325.         LD (HL),A
  326.         EXX
  327.         LD HL,TX
  328.         INC (HL)
  329.         DJNZ Lcc0
  330.         POP HL
  331.         INC H
  332.         DEC C
  333.         RET Z
  334.         JR NZ,Lcc1
  335.  
  336. L_COPY  ;Kопировать карту 64x64 по массиву MAP16
  337. MAP16   EQU #B100
  338.         LD DE,MAP16
  339.         LD C,4
  340.         LD H,0
  341. Lcc3    LD B,4
  342.         LD L,0
  343. Lcc4    LD A,(DE)
  344.         INC DE
  345.         PUSHs
  346.         CALL L_C16
  347.         POPs
  348.         LD A,L
  349.         ADD A,16
  350.         LD L,A
  351.         DJNZ Lcc4
  352.         LD A,H
  353.         ADD A,16
  354.         LD H,A
  355.         DEC C
  356.         JR NZ,Lcc3
  357.         RET
  358.  
  359. L_1var  LD A,L ;H-XM L-XL
  360.         LD (L_MOD),A
  361.         LD A,H
  362.         LD HL,DSCR
  363.         CALL CREAD
  364.         LD HL,DSCR;+2
  365.         LD DE,#B800
  366.         CALL DELPCmlz
  367.         LD BC,96
  368.         LD HL,#B800
  369.         LD DE,#B000
  370.         LDIR
  371.         LD C,96
  372.         LD DE,xCONV
  373.         LDIR
  374.         LD DE,#D000
  375.         LD BC,#1000
  376.         LDIR
  377.         LD A,(L_MOD)
  378.         LD HL,DSCR
  379.         CALL READ
  380.         LD HL,DSCR;+2
  381.         LD DE,#E000
  382.         CALL DELPCmlz
  383.         CALL SET4x4
  384.         RET
  385.  
  386. L_1v10  LD A,L ;H-XM L-XL
  387.         LD (L_MOD),A
  388.         LD A,H
  389.         LD HL,DSCR
  390.         CALL CREAD
  391.         LD HL,DSCR;+2
  392.         LD DE,#B800
  393.         CALL DELPCmlz
  394.         LD BC,96
  395.         LD HL,#B800
  396.         LD DE,#B000
  397.         LDIR
  398.         LD C,96
  399.         LD DE,xCONV
  400.         LDIR
  401.         LD DE,#B800
  402.         LD BC,#2800
  403.         LDIR
  404.         LD A,(L_MOD)
  405.         LD HL,DSCR
  406.         CALL READ
  407.         LD HL,DSCR;+2
  408.         LD DE,#E000
  409.         CALL DELPCmlz
  410.         CALL SET4x4
  411.         RET
  412.  
  413. L_4var  CALL RND ;H-XM, L-XLa..d
  414.         AND 3
  415.         ADD A,L
  416.         LD (L_MOD),A
  417.         LD A,H
  418.         LD HL,DSCR
  419.         CALL CREAD
  420.         LD HL,DSCR;+2
  421.         LD DE,#B800
  422.         CALL DELPCmlz
  423.         LD BC,96
  424.         LD HL,#B800
  425.         LD DE,#B000
  426.         LDIR
  427.         LD C,96
  428.         LD DE,xCONV
  429.         LDIR
  430.         LD DE,#B800
  431.         LD BC,#2800
  432.         LDIR
  433.         LD A,(L_MOD)
  434.         LD HL,DSCR
  435.         CALL READ
  436.         LD HL,DSCR;+2
  437.         LD DE,#E000
  438.         CALL DELPCmlz
  439.         RET
  440.  
  441. D2FLR   ;преобр. ландшафт 128x32 в куски 16x16
  442.         LD DE,#9000
  443.         LD HL,#E000
  444.         CALL DCFLR
  445.         LD DE,#A000
  446.         LD HL,#F000
  447. DCFLR   PUSH HL
  448.         CALL DCHALF
  449.         POP HL
  450.         SET 3,H
  451. DCHALF  LD C,8
  452. DCH0    PUSH HL
  453.         LD B,16
  454. DCH1    PUSH BC
  455.         LD BC,16
  456.         LDIR
  457.         LD BC,112
  458.         ADD HL,BC
  459.         POP BC
  460.         DJNZ DCH1
  461.         POP HL
  462.         LD A,16
  463.         ADD A,L
  464.         LD L,A
  465.         DEC C
  466.         JR NZ,DCH0
  467.         RET
  468.  
  469. L_IN64  LD A,64
  470. L_INTR  ;поместить истребитель в поз. HL
  471.         ;спр 64 -> (A)
  472.         LD (L_IPOS),HL
  473.         PUSH HL
  474.         PUSH AF
  475.         LD HL,xL0;+2
  476.         CALL DExLP
  477.         LD HL,DSCR+#1000
  478.         LD BC,768
  479.         POP DE
  480.         LD A,64
  481. L_in0   CPIR
  482.         JR NZ,L_in1
  483.         EX AF,AF
  484.         DEC HL
  485.         LD (HL),D
  486.         INC HL
  487.         EX AF,AF
  488. L_in1   JP PE,L_in0
  489.         LD A,(T_INTR)
  490.         POP HL
  491.         JP L_C16
  492.  
  493. DExLP   Ms 3 ;декомпр и расшифр карту с HL
  494.         LD DE,DSCR
  495.         PUSH DE
  496.         CALL DELPCmlz
  497.         CALL MEM7
  498.         CALL OFFS
  499.         POP HL
  500.         LD DE,SCR
  501.         LD BC,#1000
  502.         PUSH BC
  503.         PUSH DE
  504.         PUSH HL
  505.         PUSH DE
  506.         LDIR
  507.         POP HL
  508.         POP DE
  509.         CALL DCFLR
  510.         POP DE
  511.         POP BC
  512.         LD HL,DSCR+#1000
  513.         PUSH HL
  514.         PUSH DE
  515.         LDIR
  516.         POP HL
  517.         POP DE
  518.         CALL DCFLR
  519.         JP PT128
  520.  
  521. CREAD   ;загр.+уст.цвет+пров.защиты
  522.         PUSH AF
  523.         EXX
  524.         LD HL,C_ONOF
  525.         BIT 0,(HL)
  526.         JR NZ,CREA1
  527.         LD HL,C_tab-1
  528.         CALL BT
  529.         JR CREA2
  530. CREA1   LD A,#38
  531. CREA2   LD (COLOR),A
  532.         EXX
  533.         POP AF
  534.         CALL READ
  535.        if PROTECT
  536.         CALL TR_SEC ; []
  537.        endif
  538.         CALL PT128
  539.        if PROTECT
  540.         JP CHECK7
  541.        else
  542.         ret
  543.        endif
  544.  
  545. T_P0    DEFW #0000,#0010,#0020,#0030 ;поз.истр
  546.         DEFW #1030,#2030,#3030,#3020
  547.         DEFW #3010,#3000,#2000,#1000
  548.         DEFW #0000,#0010,#0020,#0030
  549.         DEFW #1030,#2030,#3030,#3020
  550.         DEFW #3010
  551. T_u0    DEFB 8,4,3,9,10,5,6,0,2 ;нач.карт НЛО
  552. L_InUf  CALL RND;пост. Истр+UFO
  553.         AND #F
  554.         CP 12
  555.         JR NC,L_InUf
  556.         PUSH AF
  557.         LD HL,T_P0
  558.         CALL WT
  559.         CALL L_IN64
  560. L_u5    CALL RND
  561.         AND 7
  562.         JR Z,L_u5
  563.         LD E,A
  564.         POP AF
  565.         INC A
  566.         INC A
  567.         ADD A,E
  568.         LD HL,T_P0
  569.         CALL WT
  570.         PUSH HL
  571.         LD A,(L_UFO)
  572.         LD HL,xL0;+2
  573.         CP 7
  574.         JR C,L_u0
  575.         LD HL,xL1;+2
  576. L_u0    CALL DExLP
  577.         LD A,(L_UFO)
  578.         LD HL,T_u0
  579.         CALL BT
  580.         CP 7
  581.         JR C,L_U1
  582.         POP HL  ;мал
  583.         JP L_C16
  584. L_U1    CP 3
  585.         JR C,L_UB
  586.         CP 6
  587.         JR NC,L_UB
  588. L_UM    POP HL;мал x2
  589.         EX AF,AF
  590.         LD A,H
  591.         CP #30
  592.         JR C,L_U2
  593.         LD H,#20
  594. L_U2    EX AF,AF
  595.         PUSH AF
  596.         PUSH HL
  597.         CALL L_C16
  598.         POP HL
  599.         LD A,#10
  600.         ADD A,H
  601.         LD H,A
  602.         POP AF
  603.         ADD A,8
  604.         JP L_C16
  605. L_UB    POP HL
  606.         PUSH AF
  607.         EX AF,AF
  608.         LD A,L
  609.         CP #30
  610.         JR C,L_U3
  611.         LD L,#20
  612. L_U3    PUSH HL
  613.         EX AF,AF
  614.         CALL L_UM+1
  615.         POP HL
  616.         LD A,16
  617.         ADD A,L
  618.         LD L,A
  619.         POP AF
  620.         INC A
  621.         JR L_UM+1
  622.  
  623. L_LL    DEFW L_L0,L_L1,L_L2,L_L3,L_L4,L_L5
  624.         DEFW L_L6,L_L7,L_L8,L_L9,L_L10
  625.  
  626.         DEFM "++ This program protected by copyright law of Russia ++"
  627.  
  628. ;===================== Победа-Demo ===========
  629.  
  630. POBEDA  CALL PT128
  631.         LD A,21
  632.         LD HL,SCR+9800
  633.         CALL READ
  634.         LD HL,SCR+9800;+2
  635.         LD DE,SCR
  636.         PUSH DE
  637.         CALL DELPCmlz
  638.         LD HL,(#F002)
  639.         LD DE,DSCR
  640.         LD BC,6144
  641.         PUSH DE
  642.         PUSH BC
  643.         LDIR
  644.         CALL OFFS
  645.         POP BC
  646.         POP HL
  647.         POP DE
  648.         LDIR
  649.         LD BC,736
  650.         PUSH DE
  651.         POP HL
  652.         INC DE
  653.         LD (HL),#70
  654.         LDIR
  655.         LD (HL),0
  656.         LDI
  657.         LD BC,30
  658.         LD (HL),#68
  659.         LDIR
  660.         LD (HL),0
  661.         CALL PT128
  662.         CALL #C000 ;???
  663.         XOR A
  664.         LD (SX),A
  665.         CALL STS
  666.         LD HL,(#F004)
  667.         LD (TXT),HL
  668.                
  669. P_LOOP  CALL E_I
  670.         CALL PT128
  671.        if PROTECT
  672.         CALL #C006 ;???
  673.        endif
  674.         LD HL,SX
  675.         INC (HL)
  676.         LD A,(HL)
  677.         AND 7
  678.         LD (HL),A
  679.         JR NZ,P_L1
  680.         CALL PT128
  681.         LD HL,(TXT)
  682.         INC HL
  683.         LD (TXT),HL
  684.         LD A,(HL)
  685.         CP 126
  686.         JR C,P_L2
  687.         LD HL,(#F004)
  688.         LD (TXT),HL
  689.         LD A,(HL)
  690. P_L2    EX AF,AF
  691.         CALL MEM7
  692.         EX AF,AF
  693.         LD DE,#171F
  694.         LD BC,FONT
  695.         LD L,A
  696.         LD A,1
  697.         CALL SYMBOL
  698. P_L1    CALL MEM7
  699.         CALL P_SCRL
  700.         LD BC,#BFFE
  701.         IN A,(C)
  702.         AND 1
  703.         JR NZ,P_LOOP
  704.         LD BC,65533
  705.         LD A,7
  706.         OUT (C),A
  707.         LD BC,49149
  708.         LD A,#FF
  709.         OUT (C),A
  710.         RET
  711.  
  712. P_SCRL  LD HL,SCR+#1000+255
  713.         LD B,8
  714. P_SC0   pushs
  715.         LD B,31
  716. P_SC1   RL (HL)
  717.         DEC L
  718.         DJNZ P_SC1
  719.         pops
  720.         INC H
  721.         DJNZ P_SC0
  722.         RET
  723.  
  724. PERgt1  LD HL,PERIOD ;цель соотв? []
  725.         LD A,(HL)
  726.         CP 2
  727.         RET NC
  728.         JP P_LOOP
  729.  
  730.         DEFM "Do You like me ?"
  731.  
  732. C_tab   DEFB #28,#38,#71,#69,#79,#38,#30,#60
  733.         DEFB #78,#70,#78,#71,#30,#28,#68,#70,#78,#60,#71
  734.