Login

Subversion Repositories NedoOS

Rev

Rev 1124 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

        DEVICE ZXSPECTRUM1024
        include "../../_sdk/sys_h.asm"

        SLOT 0
        page 63 ;иначе по умолчанию в 0x0000 pg7
        SLOT 3

MUSIC=1

IMVEC=#4100
IM2=0

PROTECT=0
CHEATS=1
NOENEMY=0;1

;*L-
;*Z80
;*O
;*M-
;*D-
;D$     MAC ;debug
        ;DI
        ;HALT
        ;ENDM

        include "macro.asm"

        PAGE 8
        org 0xc000
        ds 0x0400 ;чтобы в одной странице ровно 5 рядов спрайтов
        include "sprites1.ast"
        savebin "ufo2/ufospr1.dat",0xc000,$-0xc000
        display "endsprites=",$
        PAGE 9
        org 0xc000
        include "sprites2.ast"
        savebin "ufo2/ufospr2.dat",0xc000,$-0xc000
        display "endsprites2=",$
        ;PAGE 10
        ;org 0xc000
        ;include "sprites3.ast"
        ;savebin "ufo2/ufospr3.dat",0xc000,$-0xc000
        ;display "endsprites3=",$
        ;PAGE 11
        ;org 0xc000
        ;include "sprites4.ast"
        ;savebin "ufo2/ufospr4.dat",0xc000,$-0xc000
        ;display "endsprites4=",$
        ;PAGE 12
        ;org 0xc000
        ;include "sprites5.ast"
        ;savebin "ufo2/ufospr5.dat",0xc000,$-0xc000
        ;display "endsprites5=",$
        PAGE 13
        org 0xc000
        include "xm0.ast"
        include "xm11a.ast"
        savebin "ufo2/ufoxm11a.dat",0xc000,$-0xc000
        PAGE 14
        org 0xc000
        include "xm11b.ast"
        ;include "sprites1.ast"
        savebin "ufo2/ufoxm11b.dat",0xc000,$-0xc000

;*F     XPAGE
;содержимое страниц
;СТРАНИЦЫ: c #C000
;0: #C000:
;1: #C000:T(256<),TWCMPR(256),WORDS,MENUS,PEDIA,NAMES
;2: *main*
;3: #C000:xSprites,xSHIP,xUFO
;4: #C000:xHERO(12k=8*16*96),#F000:xDIE(768),#F300:xBOOM(768),#F600
;5: *main*
;6: *swap*
;7: #C000:SCR,#D800:ATR,#DB00:
;*P4 ***********Страница 4***********
        PAGE 4
        ORG #C000
begin4
;*B ..\data\xhero.dat
        incbin "data/xhero.dat"
xSHIP
;*B ..\ZX_DISC\XM0.LPC
        ;incbin "ZX_DISC/XM0.LPC"
        incbin "ZX_DISC/xm0.mlz"
        ds #FFFE-$;DEFR
end4
;*P3 ***********Cтраница 3***********
        PAGE 3
        ORG #C000
begin3
xEARTH
;*B ..\data\xsprites.dat
        incbin "data/xsprites.dat"
xWEAPON EQU xEARTH+2880
xBUTTON EQU xEARTH+3840
xWBUTTN EQU xBUTTON+128
xBBUTTN EQU xWBUTTN+96
xSIGN   EQU xEARTH+4192
xPARAM  EQU xEARTH+5056
xKEY    EQU xEARTH+5536
xPLUS   EQU xKEY+576
xLABEL  EQU xEARTH+6304
xMAP    EQU xEARTH+7136
xMARKER
;*B ..\ZX_DISC\xmarker.dat
        incbin "ZX_DISC/xmarker.dat"
xUFO   
;*B ..\ZX_DISC\XM1.LPC
        ;incbin "ZX_DISC/XM1.LPC"
        incbin "ZX_DISC/xm1.mlz"
xL0
;*B ..\ZX_DISC\XL0.LPC
        ;incbin "ZX_DISC/XL0.LPC"
        incbin "ZX_DISC/XL0.mlz"
xL1
;*B ..\ZX_DISC\XL1.LPC
        ;incbin "ZX_DISC/XL1.LPC"
        incbin "ZX_DISC/XL1.mlz"
end3
;*P1 ***********Cтраница 1***********
        PAGE 1
        ORG #C000
begin1
T
;*B ..\data\x256.dat
        incbin "data/x256.dat"
TWCMPR
;*B ..\data\xcompres.dat
        incbin "data/xcompres.dat"
WORDS
;*B ..\data\xword.dat
        incbin "data/xword.dat"
MENUS
;*B ..\data\xmenu.dat
        incbin "data/xmenu.dat"
PEDIA
;*B ..\data\xfopedia.dat
        incbin "data/xfopedia.dat"
NAMES
;*B ..\data\xname.dat
        incbin "data/xname.dat"
        ;DEFR #FFFE-$
        ds #FFFE-$
end1
;*P7 ***********Cтраница 7***********
        PAGE 7
        ORG #C000
begin7
;*B ..\IMAGES\XHIST.SCR
        incbin "images/XHIST.SCR"
        DEFS 1024,0
        db " No room for STS 4.x!  Please reload..."
;сюда процедурой SWPBAT с адреса SwpMEM #E600 кладётся кусок памяти из SwpADR #7580 длиной #1A00 (при этом DSCR=#9000)
       
end7
;*P0
        PAGE 0      

        org PROGSTART
begin
        include "loader.asm"
       
        ORG #4000+16
beginmain
        ;ENT $
JP_ST   JP xSTART ;вх.
        ds #4040-$ ;DEFR
;Interupt entry
INTRP
       if 1
        push af
        ld a,(SEED)
        inc a
        ld (SEED),a
        jr nz,INTR2
        ld a,(SEED+1)
        inc a
        ld (SEED+1),a
INTR2
        pop af
        ei
        ret
       else
        PUSH HL
        LD HL,SEED
        INC (HL)
        JR NZ,INTR2
        INC HL
        INC (HL)
INTR2   POP HL
        EI
        RETI
       endif
;SEED   DEFW 1 ;счётчик
NRFT    DEFB 1 ;для XIO
;Interupt table
;==================================обслуживание клавиатуры
PRSROW  IN      A,(C)
        CPL
        AND     #1F
        RET

;TMO    LD      A,(KEYJOY)
;       OR      A
;       JR      NZ,TMOJOY
;       LD      C,#FE
;       LD      B,C
;TMOO   CALL    PRSROW
;       JR      NZ,TMOOK
;       RLC     B
;       JR      TMOO
;TMOOK  LD      C,A
;       RET
;TMOJOY CALL    CONTR
;       OR      A
;       JR      Z,TMOJOY
;       RET

PRSKEY  PUSH    BC
        LD      C,#FE
        CALL    PRSROW
        POP     BC
        AND     C
        RET

        display "CONTR=",$
CONTR   PUSHs;$
        LD      A,(KEYJOY)
        OR      A
        JR      Z,CO1
        LD      C,#1F
        CALL    PRSROW
        XOR     #1F
CO2     LD      (CONTRB),A
        LD      A,(PMOUSE)
        OR      A
        CALL    NZ,MOUSE
        POPs;$
        LD      A,(CONTRB)
        RET
CO1     LD      HL,(KEYS)
        LD      E,0
        LD      D,5
CO3     LD      C,(HL)
        INC     HL
        LD      B,(HL)
        CALL    PRSKEY
        JR      Z,CO4
        SET     5,E
CO4     RRC     E
        DEC     D
        INC     HL
        JR      NZ,CO3
        LD      A,E
        JR      CO2

DELAY
       if MUSIC
        push af
        YIELD
        pop af
       else
        EI
        HALT
        DI
       endif
        DEC A
        JR NZ,DELAY
        RET Z

;*************Параметры настройки игры**
C_ONOF  DEFB    0;0-вкл/1-выкл
KEYN    DEFB    0
KEYS    DEFW    KBR
KEYJOY  DEFB    0 ;(1-K.-stick)
PMOUSE  DEFB    0 ;(1-K.-mouse)

CFGLEN  EQU     $-C_ONOF
;***************************************
CONTRB  DEFB    0
KBR     DEFW    #DF01,#DF02,#FD01,#FB01,#7F07
KBR2    DEFW    #7F04,#7F08,#FE02,#FD01,#7F03
INT2    DEFW    #EF08,#EF10,#EF04,#EF02,#EF01
KUR     DEFW    #EF04,#F710,#EF10,#EF08,#EF01 ;;;

RND     PUSH    HL
        LD      HL,(RNA)
        INC     HL
;;;     LD      A,R
;;;     ADD     A,H
        LD      A,H ;;;
        AND     #1F
        LD      H,A
        LD      A,(RNB)
        RRCA
        XOR     (HL)
        ADD     A,L
        LD      (RNA),HL
        LD      (RNB),A
        POP     HL
        RET

        ;DEFR #4100-$,#40
        ds IMVEC-$,#40
        DEFS 257,#40

xSTART  DI
        LD SP,#4030
        CALL START1 ;нач.уст.защиты
        LD A,2
        OUT (254),A
        ;ост после защиты
        CALL MU_ENT
        XOR A
        OUT (254),A
        CALL JP_ST
start   DI
        LD SP,#4040
       if IM2
        LD A,#41
        LD I,A
        IM 2
       else
       call swapimer
       endif
        CALL START2 ;нач.уст
        CALL BACK ;копирование экрана
       ;call SWPBAT
        LD IX,MUST
        CALL MENUC ;вывод меню
        CALL MU_ENT ;ждать ENTER
        CALL NO_3D ;откл 3D боя
       if 1
       ld a,1
       ld (T_INTR),a ;тип истребителя
       ld a,1
       ld (AQU),a ;число акванавтов
       ld (AQNAVT),a ;имя
       xor a
       ld (AQNAVT+6),a ;wound
       ld a,7
       ld (AQNAVT+1),a ;ранг
       endif
       if 0
       ld a,1
       ld (T_UFO),a
       ld (AQU),a ;число акванавтов
       ld (AQNAVT),a ;имя
       ld a,7
       ld (AQNAVT+1),a ;ранг
       call BATTLE
       endif
       ;call BATTL1
       if MUSIC
       call SETMENUMUSIC
       endif
        CALL MLOOP      ;---начало
;       CALL XEARTH  ;--удали
;       CALL COPYAT  ;
;       LD A,0       ;
;       LD (T_INTR),A;
;       LD A,4       ;
;       LD (TARoff),A;
;       LD (NRECR),A ;
;       LD (AQU),A   ;
;       CALL RECRUT  ;
;       CALL MLOOP

MUST    DEFW #202,#3412
MU_ENT  LD A,#BF ;ждать ENTER
        IN A,(#FE)
        RRA
        JR C,MU_ENT
        RET NC
NO_3D   RRCA ;откл 3D боя
        RRCA
        RRCA
        LD HL,xHAC2
        RET C
        INC (HL)
        RET
;Main procedures
;*F     XMAIN
;**** HЛО-2. Дьяволы бездны ****
;*M-
;*D-
        DEFB 0
SYSINI  DEFB 28 ;systxt 28
MONINI  DEFB 1 ;1/0 в ScrBU нет/есть текст
xHACK   DEFB #7;F;если 7f, то видимое поле []
;*F xLID
        include "xlid.asm"
;*F xGamedat
        include "xgamedat.asm"
FONT
;*B ..\data\xfont.dat
        incbin "data/xfont.dat"
CRC3    DEFB 11
;*L+
TAB100  ds 98;DEFR 98
        DEFB #15,#88 ;таблица плохих секторов
;*L-
;*F xlib
        ;include "xlib.asm"
;CRC2   DEFW 0;[] -crc2
xHAC2   DEFB #D5;D6;если D6, то нет боя []
;*F xlie
        include "xlie.asm"
;--------swap-область
;*L+
;*F XLIN
        include "xlin.asm"
;*F xliM
        include "xlim.asm"
;*F XLIK
        include "xlik.asm"
;*L+
;*D-
        ;DEFR #8F3F-$
        ds #8F3F-$
        db " Область для размещения стека "
        DEFS #9000-$,#CC
;*L-
;*F xLI1 ;нач. уст
        include "xli1.asm"
        ORG $
end



LESHA   DISP #B000
;*F xLESHA
        include "xlesha.asm"
        ent;ENDD
endLESHA

;*P0 *********** Страница 0 ***********
        PAGE 0
        ORG #C000
begin0
;блок для упаковки BLK2?
ASMBL1  DISP #AB00
;*F xlix
        include "xlix.asm"
        ent;ENDD
        ORG $
;блок для упаковки BLK3?
ASMBL2  DISP SwpADR
;*F XLIC
        include "xlic.asm"
;*L+
        DEFB $/256,$&0xff ;xlic
;*L-
        ent;ENDD
        ORG $
;блок для упаковки BLK4?
ASMBL3  DISP SwpADR
;*F XLIF
        include "xlif.asm"
;*F XIOD
        include "xiod.asm"
;*L+
        DEFB $/256,$&0xff ;xliF+xioD
;*L-
        ent;ENDD
end0

        savebin "blk1.bin",LESHA,endLESHA-LESHA
        savebin "blk2.bin",ASMBL1,ASMBL2-ASMBL1
        savebin "blk3.bin",ASMBL2,ASMBL3-ASMBL2
        savebin "blk4.bin",ASMBL3,end0-ASMBL3

        page 0
        savebin "ufo2/ufo2main.dat",beginmain,end-beginmain
        page 1
        savebin "ufo2/ufo21.dat",begin1,end1-begin1
        page 3
        savebin "ufo2/ufo23.dat",begin3,end3-begin3
        page 4
        savebin "ufo2/ufo24.dat",begin4,end4-begin4
        ;page 6
        ;savebin "ufo2/ufo26.dat",begin6,end6-begin6
        page 7
        savebin "ufo2/ufo27.dat",begin7,end7-begin7
       
        LABELSLIST "../../../us/user.l",1