?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.         ORG     23845
  2. ORGX
  3. *D+
  4.  
  5. ; НЛО-2. Дьяволы бездны
  6. ; Стартовый менеджер загрузки заставки
  7. ; а затем - введение, инструкция или игра
  8. ; #6200-#6fff
  9.  
  10. DSCR    EQU #4000
  11. SCR     EQU #C000
  12.         DEFM " UFO-2 StartUp Manager *"
  13.         DEFM " Wrote by Slava MEDNONOGOV *"
  14.         DEFM " (c) 1996, COPPER FEET *"
  15. ;Декомпрессор
  16. ;HL-откуда DE-куда
  17. DLPCB   DEFM "2105"
  18. DELPC   PUSH DE
  19.         LD DE,DLPCB
  20.         LD BC,4
  21.         LDIR
  22.         POP DE
  23. xpD0    LD A,(HL)
  24.         BIT 7,A
  25.         JR NZ,xpD1
  26.         PUSH AF
  27.         AND 1
  28.         LD B,A
  29.         LD A,(HL)
  30.         AND #E
  31.         RRCA
  32.         ADD A,3
  33.         LD C,A
  34. xpD0X   INC HL
  35.         LD A,E
  36.         SUB (HL)
  37.         INC HL
  38.         PUSH HL
  39.         LD L,A
  40.         LD A,D
  41.         SBC A,B
  42.         LD H,A
  43.         LD B,0
  44.         LDIR
  45. D00     POP HL
  46.         POP AF
  47.         RLCA
  48.         RLCA
  49.         RLCA
  50.         RLCA
  51.         AND #F
  52.         JR Z,xpD0
  53.         JR xpDRR
  54. xpD1    INC HL
  55.         BIT 6,A
  56.         JR NZ,xpD2
  57.         AND #3F
  58.         JR Z,xpDEND
  59. xpDRR   LD C,A
  60. xpDLO   LD A,(HL) ;неразрушающий
  61.         RRCA
  62.         LD (DE),A
  63.         INC DE
  64.         INC HL
  65.         DEC C
  66.         JP NZ,xpDLO
  67.         JR xpD0
  68. xpD2    AND #3F
  69.         ADD A,4
  70.         LD C,A
  71.         LD A,(HL)
  72.         PUSH AF
  73.         AND #F
  74.         LD B,A
  75.         JR xpD0X
  76. xpDEND  LD HL,DLPCB
  77.         LD C,4
  78.         LDIR
  79.         RET
  80.  
  81. DELPCF  LD DE,#FFFE
  82. ;Декомпрессор
  83. ;HL - ОТКУДА И КУДА, DE - ВЕРХНЯЯ ГРАНИЦА ОБЛАСТИ
  84. DELPCX  PUSH HL
  85.         LD C,(HL)
  86.         INC HL
  87.         LD B,(HL)
  88.         ADD     HL,BC
  89.         LDDR
  90.         EX      DE,HL
  91.         INC     HL
  92.         POP     DE
  93.         JP      DELPC
  94.  
  95. MEM0    XOR A;Cтандартная страница-0
  96.         JR      MEM
  97.  
  98. MEM7    LD      A,7
  99. MEM     OR      %11000
  100.         PUSH BC
  101.         LD      BC,#7FFD
  102.         OUT     (C),A
  103.         POP BC
  104.         RET
  105.  
  106. OFFD    LD      DE,DSCR+#1AFE
  107.         LD      HL,DSCR+#1AFF
  108.         LD      BC,768
  109.         LD      (HL),0
  110.         LDDR
  111.         LD      BC,6143
  112.         LD      (HL),255
  113.         LDDR
  114.         RET
  115.  
  116. OFFS    CALL    MEM7
  117. OFFS_   LD      DE,SCR+#1AFE
  118.         LD      HL,SCR+#1AFF
  119.         LD      BC,768
  120.         LD      (HL),0
  121.         LDDR
  122.         LD      BC,6143
  123.         LD      (HL),255
  124.         LDDR
  125.         RET
  126.  
  127.         DEFS    256+ORGX-$
  128.  
  129.         DEFW    S,S,S,S,S,S,S,S,S,S,S,S,S,S
  130.  
  131. TR00    DI
  132.         LD      IX,#2F5F
  133.         CALL    DOS
  134.         LD      IX,#2F65
  135.         JP      DOS
  136.  
  137. MEMS    OR      %10000
  138.         PUSH BC
  139.         LD      BC,#7FFD
  140.         OUT     (C),A
  141.         POP BC
  142.         RET
  143.  
  144. F_DAT
  145. *F XDISK1
  146. S
  147. START   ;начало начал
  148.         DI
  149.         IM 1
  150.         LD SP,#6F00
  151.         ;Теневик off
  152.         CALL ON256
  153.         XOR A
  154.         CALL MEMS
  155.         LD DE,#C000
  156.         LD BC,#4700
  157.         PUSH BC
  158.         POP HL
  159.         LDIR
  160.         CALL OFF256
  161.         ;Заставка
  162.         XOR A
  163.         OUT (254),A
  164.         CALL OFFD
  165.         CALL OFFS
  166.         CALL MEM0
  167.         LD A,1
  168.         CALL LOADF
  169.         LD HL,#7000
  170.         CALL DELPCF
  171.         CALL #7000
  172.         ;Что нажато
  173.         CP 1
  174.         JP Z,GAME
  175.         JP C,INTRO
  176.         ;------------
  177. INSTR   CALL MEM7
  178.         LD A,2
  179.         CALL LOADF
  180.         LD HL,#DB00
  181.         CALL DELPCF
  182.         CALL MEM0
  183.         LD A,3
  184.         CALL LOADF
  185.         LD HL,#7000
  186.         CALL DELPCF
  187.         CALL #7000
  188.         JP START
  189.         ;-----------
  190. INTRO   LD A,1
  191.         CALL MEMS
  192.         LD A,14
  193.         CALL LOADF
  194.         LD A,4
  195.         CALL MEMS
  196.         LD A,15
  197.         CALL LOADF
  198.         XOR A
  199.         CALL MEMS
  200.         LD A,16
  201.         CALL LOADF
  202.         LD A,6
  203.         CALL MEMS
  204.         LD A,17
  205.         CALL LOADF
  206.         LD A,7
  207.         CALL MEMS
  208.         LD A,18
  209.         CALL LOADF
  210.         LD A,3
  211.         CALL MEMS
  212.         LD A,19
  213.         CALL LOADF
  214.         XOR A
  215.         CALL MEMS
  216.         LD A,20
  217.         CALL LOADF
  218.         LD HL,#7000
  219.         LD DE,#BFF0
  220.         CALL DELPCX
  221.         CALL OFFD
  222.         CALL #7000
  223.         LD A,7
  224.         CALL MEMS
  225.         CALL OFFS_
  226.         JP START
  227.         ;-------------
  228. LOADG   CALL LOADF
  229.         LD HL,#C000
  230.         JP DELPCF
  231.  
  232. GAME    DI
  233.         CALL OFFD
  234.         CALL OFFS
  235.         LD A,7
  236.         CALL MEMS
  237.         LD A,4
  238.         CALL LOADG
  239.         CALL MEM0
  240.         LD A,5
  241.         CALL LOADF
  242.         LD A,1
  243.         CALL MEM
  244.         LD A,6
  245.         CALL LOADG
  246.         LD A,3
  247.         CALL MEM
  248.         LD A,7
  249.         CALL LOADG
  250.         LD A,4
  251.         CALL MEM
  252.         LD A,8
  253.         CALL LOADG
  254.         LD A,2
  255.         CALL MEM
  256.         LD A,9
  257.         CALL LOADF
  258.         LD HL,#8000
  259.         CALL DELPCF
  260.         LD A,6
  261.         CALL MEM
  262.         LD A,10
  263.         CALL LOADG
  264.  
  265. ;       CALL OFFS
  266.         DI
  267.         LD HL,S_UP
  268.         LD DE,S_AD
  269.         LD BC,8
  270.         LDIR
  271.         LD HL,#8000
  272.         LD DE,#4000
  273.         LD BC,#9000
  274.         JP S_AD
  275.  
  276. S_AD    EQU #FFF8
  277. S_UP    LDIR
  278.         JP #4010
  279.  
  280. ;ФАЙЛЫ:
  281. ;1-DANGEROU.LPC L:#7000 *P0 S:#7000
  282. ;-----------------
  283. ;2-XBINSTR.LP0  L:#DB00 *P7
  284. ;3-XBINSTR.LP1  L:#7000 *P0 S:#7000
  285. ;-----------------
  286. ;4-XCOM3.PG7  L:#C000 *P7
  287. ;5-XCOM3.PG0  L:#C000 *P0 /некомпр
  288. ;6-XCOM3.PG1  L:#C000 *P1
  289. ;7-XCOM3.PG3  L:#C000 *P3
  290. ;8-XCOM3.PG4  L:#C000 *P4
  291. ;9-XCOM3.PG5  L:#7000 *P5 S:?
  292. ;10-XCOM3.PG2  L:#7000 *P2 S:?
  293. ;11-?
  294. ;12-?
  295. ;13-?
  296. ;-----------------
  297. ;14-XDEMO0.LPC  L:#C000 *P1
  298. ;15-XDEMO1.LPC  L:#C000 *P4
  299. ;16-XDEMO2.LPC  L:#C000 *P0
  300. ;17-XDEMOS6.LPC L:#C000 *P6
  301. ;18-XDEMOS7.LPC L:#C000 *P7
  302. ;19-XDEMOTXT.LPC L:#C000 *P3
  303. ;20-XBEGIN.LPC  L:#7000 *P0 S:#7000 E:#BFF0
  304. ;-----------------
  305. ST_ADR  DEFB #70,#DB,#70
  306.         DEFB #C0,#C0,#C0,#C0,#C0,#80,#C0,#70,#70,#DB
  307.         DEFB #C0,#C0,#C0,#C0,#C0,#C0,#70,#70
  308.  
  309. READ    DI ;E-sec,D-trk,B-sec.num,HL-mem.adr
  310.         CALL    POS
  311.         LD      A,(#5CD6)
  312.         EX      AF,AF'
  313. NXT_S   DEFB    #DD
  314.         LD      L,#3 ;retry.num
  315. NXT_SC  PUSH    HL
  316.         PUSH    BC
  317. NXC_C1  PUSH    IX
  318.         LD      C,#5F
  319.         LD      A,E
  320.         CALL    RG_DOS
  321.         CALL    RD_SCT
  322.         DI
  323.         LD      HL,#5CD6
  324.         EX      AF,AF'
  325.         CP      (HL)
  326.         POP     IX
  327.         JR      Z,GOOD
  328.         LD      (HL),A
  329.         DEFB    #DD
  330.         DEC     L
  331.         POP     BC
  332.         POP     HL
  333.         JP      Z,ERR_RW
  334.         EX      AF,AF'
  335.         JR      NXT_SC
  336. GOOD    POP     BC
  337.         POP     HL
  338.         EX      AF,AF'
  339. GOOD1   INC     E
  340.         LD      A,E
  341.         CP      #FE
  342.         JR      C,OLD_TR
  343.         LD      E,#F5
  344.         INC     D
  345.         CALL    POS
  346. OLD_TR  INC     H
  347.         INC     H
  348.         DJNZ    NXT_S
  349.         DI
  350.         XOR     A
  351.         RET
  352.  
  353. POS     LD A,(SIDE)
  354.         OR A
  355.         LD      A,#3C
  356.         JR      Z,DW_SID
  357.         RES     4,A
  358. DW_SID  LD      C,#FF
  359.         CALL    RG_DOS
  360.         LD      A,D
  361.         LD      C,#7F
  362.         CALL    RG_DOS
  363.         LD      A,#18
  364.         LD      C,#1F
  365.         CALL    RG_DOS
  366.         CALL    COM_EX
  367.         DI
  368.         RET
  369.  
  370. RD_SCT  LD      BC,RD_SCT
  371.         PUSH    BC
  372.         LD      BC,#17F
  373.         LD      IX,#2090
  374.         JR      DOS
  375.  
  376. RG_DOS  LD      IX,#2A53
  377.         JR      DOS
  378.  
  379. COM_EX  LD      IX,#3EF5
  380. DOS     PUSH    IX
  381.         JP      #3D2F
  382.  
  383. ERR_RW  SCF
  384.         RET
  385.  
  386.  
  387. WA      RLCA
  388. BA      ADD     A,L
  389.         LD      L,A
  390.         JR      NC,B1
  391.         INC     H
  392. B1      LD      A,(HL)
  393.         RET
  394.  
  395. SIDE    DEFB    0
  396.  
  397. LOADF   ;A-N ф-ла (0..20)
  398.         PUSH    AF
  399.         LD D,A
  400.         ADD A,A
  401.         ADD A,D
  402.         LD HL,F_DAT-3
  403.         CALL BA
  404.         LD E,(HL)
  405.         INC HL
  406.         LD D,(HL)
  407.         INC HL
  408.         LD B,(HL)
  409.         POP AF
  410.         LD HL,ST_ADR-1
  411.         CALL BA
  412.         LD H,A
  413.         XOR A
  414.         LD L,A
  415.         LD      (SIDE),A
  416. RETRY1  CALL    READ
  417.         RET     NC
  418.         LD      A,(SIDE)
  419.         CPL
  420.         LD      (SIDE),A
  421.         DI
  422.         CALL    TR00
  423.         CALL    TR00
  424.         CALL    TR00
  425.         JR      RETRY1
  426.  
  427. ON256   LD      A,#10
  428.         JR      M2
  429. OFF256  XOR     A
  430. M2      LD      BC,#1FFD
  431.         OUT     (C),A
  432.         RET
  433.  
  434.