?login_element?

Subversion Repositories NedoOS

Rev

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

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