1
0
mirror of https://github.com/Tolik-Trek/DOOM2.git synced 2026-06-15 17:11:34 +03:00
This commit is contained in:
Anatoliy Belyanskiy 2024-02-07 02:51:53 +10:00
parent 276d36e713
commit c6910384f9
4 changed files with 468 additions and 338 deletions

View File

@ -98,11 +98,7 @@ SKY_LOOP_1:
RES 7,H RES 7,H
SET 6,H SET 6,H
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
LD A,(SKY_1) LD A,(SKY_1)
LD B,A LD B,A
@ -118,12 +114,8 @@ NO_NEXT_SKY:
DEC C DEC C
JR NZ,SKY_LOOP_1 JR NZ,SKY_LOOP_1
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
;
EXX EXX
SCREEN_1+1: SCREEN_1+1:
LD DE,#C040 ; ­ ç «® íªà ­  LD DE,#C040 ; ­ ç «® íªà ­ 
@ -340,13 +332,7 @@ CONT_PAGE+1: LD A,0
LD L,A LD L,A
JP NZ,TRACE_LOOP JP NZ,TRACE_LOOP
; CALL SOUND ; 見<>碪 研投芥 <20><E88AB1>漭鄍!!! CALL SOUND ; 見<>碪 研投芥 <20><E88AB1>漭鄍!!!
IF YesSound
CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
INC H INC H
BIT 7,H BIT 7,H
@ -468,11 +454,7 @@ SET_PICTURE:
LD A,#50 LD A,#50
OUT (C),A OUT (C),A
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
; ;
ld bc,#0100 ; ¬ áèâ ¡¨à®¢ ­¨¥ - 1 ld bc,#0100 ; ¬ áèâ ¡¨à®¢ ­¨¥ - 1
OUT (C),C OUT (C),C
@ -514,11 +496,7 @@ LOOP_PG:
POP BC POP BC
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
DJNZ PIC_LOOP DJNZ PIC_LOOP
@ -1039,12 +1017,8 @@ NO_Z_A:
LD A,E LD A,E
AND #0F AND #0F
IF YesSound
CALL Z,SOUND CALL Z,SOUND
; ELSE ;
; CALL Z,YesSoundZero
ENDIF
NO_WRITE_LINE: NO_WRITE_LINE:
INC DE ; ­®¢®¥ §­ ç¥­¨¥ X INC DE ; ­®¢®¥ §­ ç¥­¨¥ X
@ -1159,11 +1133,7 @@ MAP_L4:
POP HL POP HL
PUSH HL PUSH HL
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
LD C,16 LD C,16
@ -1191,9 +1161,7 @@ MAP_L6:
POP HL POP HL
PUSH HL PUSH HL
IF YesSound
CALL SOUND CALL SOUND
ENDIF
LD C,16 LD C,16
@ -1294,7 +1262,9 @@ CONT_MOVE:
;COV_ADR: DB 0 ;COV_ADR: DB 0
;SND_P: DB #FF ;SND_P: DB #FF
SND_A: DW #C000 SND_A: DW #C000
IF YesSound
SND_STOP: SND_STOP:
; ®áâ ­®¢¨âì ¬ã§ëªã ; ®áâ ­®¢¨âì ¬ã§ëªã
PUSH AF PUSH AF
@ -1348,19 +1318,14 @@ SND_INIT:
LD E,A LD E,A
JR SND_INIT1 JR SND_INIT1
ENDIF
SOUND: SOUND:
IF !YesSound
; PUSH AF
; CALL KBD_INT
; POP AF
RET
ENDIF
;
IF YesSound
SoundOnOff: SoundOnOff:
NOP ; á ¢áâ ¢«ï¥âáï ª®¬ ­¤  RET ¤«ï ®âª«î祭¨ï §¢ãª  ¨ NOP ¤«ï ¢ª«î祭¨ï NOP ; á ¢áâ ¢«ï¥âáï ª®¬ ­¤  RET ¤«ï ®âª«î祭¨ï §¢ãª  ¨ NOP ¤«ï ¢ª«î祭¨ï
SoundOnOff2:
NOP
PUSH AF PUSH AF
PUSH HL PUSH HL
SND_MORE: SND_MORE:
@ -1525,22 +1490,16 @@ NO_LD_SND:
POP HL POP HL
POP AF POP AF
RET RET
ENDIF
; ; YesSoundZero:
IF !YesSound ; PUSH AF
YesSoundZero: ; PUSH HL
PUSH AF ; CALL KBD_INT
PUSH HL ; POP HL
CALL KBD_INT ; POP AF
POP HL ; RET
POP AF
RET
ENDIF
EFFECTS: EFFECTS:
IF !YesSound
RET
ENDIF
LD DE,(EFF_) LD DE,(EFF_)
LD A,D LD A,D
CP #C0 CP #C0
@ -1930,12 +1889,7 @@ MONST_H1:
CALL C,WALL CALL C,WALL
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
NO_M_OUT: NO_M_OUT:
call MONSTR_NEXT_P call MONSTR_NEXT_P
@ -2050,7 +2004,7 @@ NO_SAVE:
SAVE_HL: DW 0 SAVE_HL: DW 0
SAVE_P1: DW 0 SAVE_P1: DW 0
SAVE_P2: DW 0 SAVE_P2: DW 0
SAVE_RGA2: DB 0 ; SAVE_RGA2: DB 0
SAVE_PIC: SAVE_PIC:
IN A,(SCREEN_SWITCH) IN A,(SCREEN_SWITCH)
@ -2126,7 +2080,8 @@ NO_NEXT_PAGE:
OUT (C),B OUT (C),B
LD BC,(SAVE_P1) LD BC,(SAVE_P1)
OUT (C),B OUT (C),B
LD A,(SAVE_RGA2) SAVE_RGA2+1:
LD A,0
OUT (PORT_Y),A OUT (PORT_Y),A
RET RET

422
DOOM2.asm
View File

@ -8,36 +8,7 @@
; ;
;---------------------------[Defines section]--------------------------- ;---------------------------[Defines section]---------------------------
; IFNDEF HARDWARE : IFNDEF ZXMAK2 : IFNDEF MAME : DEFINE HARDWARE 1 : ENDIF : ENDIF : ENDIF
; IFDEF HARDWARE
; DEFINE NORM_ACC 1
; DEFINE NORM_FastRAM 1
; ENDIF
; IFDEF ZXMAK2
; DEFINE NORM_ACC 0
; DEFINE NORM_FastRAM 0
; ENDIF
; IFDEF MAME
; DEFINE NORM_ACC 1
; DEFINE NORM_FastRAM 1
; ENDIF
IFNDEF YesSound : DEFINE YesSound 1 : ENDIF
DEFINE EXE_HEADER 1 DEFINE EXE_HEADER 1
; DEFINE NEED_LOADER 1
; IFDEF HARDWARE
; DISPLAY "[]------[ Compilation target: Sprinter 2000 ]------[]"
; ENDIF
; IFDEF ZXMAK2
; DISPLAY "[]------[ Compilation target: emulator ZXMAK2 ]------[]"
; ENDIF
; IFDEF MAME
; DISPLAY "[]------[ Compilation target: emulator MAME ]------[]"
; ENDIF
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; ;
@ -58,6 +29,7 @@
include 'Shared_includes/constants/standart_colors.inc' include 'Shared_includes/constants/standart_colors.inc'
include 'Shared_includes/macroses/accelerator.z80' include 'Shared_includes/macroses/accelerator.z80'
include 'Shared_includes/macroses/macros.z80' include 'Shared_includes/macroses/macros.z80'
include 'Shared_includes/structures/FileSystem.inc'
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; ;
@ -67,6 +39,7 @@ org_addr EQU #8000+CLP_Buffer
code_addr EQU BEGIN code_addr EQU BEGIN
stack_point EQU #BFFF stack_point EQU #BFFF
program_start EQU BEGIN program_start EQU BEGIN
Loader_length EQU 0
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; ;
@ -87,43 +60,33 @@ TABLE_W EQU #2000 ; ⥪
ELSE ELSE
ORG org_addr - CLP_Buffer ORG org_addr - CLP_Buffer
ENDIF ENDIF
;[]-------------------------------------------------------------------[]
;[]-------------------------------------------------------------------[]
BEGIN: DI BEGIN: DI
LD (CMD_Line),IX ; á®åà ­¨âì 㪠§ â¥«ì ­  ¯ à ¬¥âàë § ¯ã᪠ LD (CMD_Line),IX ; á®åà ­¨âì 㪠§ â¥«ì ­  ¯ à ¬¥âàë § ¯ã᪠
CMD_Line+1: CMD_Line+1:
LD HL,#8080 LD HL,#8080
CALL SET_HOME_PATH
; „®¤¥« âì???!!!!
; LD C,(HL)
; LD B,0
; INC BC
; INC BC
; INC BC
; ADD HL,BC ; 㪠§ â¥«ì ­  ¯®«­ë© ¯ãâì ¤® ä ©«  § ¯ã᪠
; ld c,Dss.ChDir ; ¯¥à¥å®¤ ¢ ª â «®£ DOOM2 ­  ¢á直© á«ãç ©
; rst ToDSS
; DI
; IN A,(SLOT3)
; LD C,BIOS.SPRINTER_ALL
; RST ToBIOS
;--------[§ £à㧪  à¥áãàᮢ ¨£àë]------- ;--------[§ £à㧪  à¥áãàᮢ ¨£àë]-------
; ¢ë¯®«­¥­® ¢ ¢¨¤¥ ª®áâë«ì­®© § £«ã誨 ; ¢ë¯®«­¥­® ¢ ¢¨¤¥ ª®áâë«ì­®© § £«ã誨
call Load_Resources LD HL,Loading_TXT
LD C,Dss.PChars
IFDEF NEED_LOADER RST ToDSS
Loader_length EQU $-BEGIN ;
ELSE CALL Load_Resources
Loader_length EQU 0 ;
ENDIF CALL SAVE_PAL
CALL SAVE_TXT_SCREEN
; LD A,Dss.SetVMod.grf320x256
; LD BC,Dss.SetVMod.Screen_1
; RST ToDSS
;--------------------------------------- ;---------------------------------------
;-----[ˆ­¨æ¨ «¨§ æ¨ï Covox-Blaster]----- ;-----[ˆ­¨æ¨ «¨§ æ¨ï Covox-Blaster]-----
; IF YesSound
ld bc,CBL.SYS_PORT ld bc,CBL.SYS_PORT
ld a,CBL.Blaster + CBL.Mono + CBL.is8bit + CBL.Int_off + CBL.KHz_16old ld a,CBL.Blaster + CBL.Mono + CBL.is8bit + CBL.Int_off + CBL.KHz_16old
out (c),a out (c),a
@ -136,7 +99,6 @@ Loader_length EQU 0
JR NZ,1B JR NZ,1B
;--------------------------------------- ;---------------------------------------
; ;
; ENDIF
;--------------------------------------- ;---------------------------------------
@ -149,7 +111,6 @@ Loader_length EQU 0
ld a,(RAMBlkIDs.d2_fram) ld a,(RAMBlkIDs.d2_fram)
ld (D2_FRAM_page),a ld (D2_FRAM_page),a
IF YesSound
;----[] ;----[]
; ‡ ¯à è¨¢ ¥¬ áâà ­¨æã ¤«ï ª â «®£  ; ‡ ¯à è¨¢ ¥¬ áâà ­¨æã ¤«ï ª â «®£ 
; á®å࠭塞 ¥ñ ü ¢ ª®¤¥ ; á®å࠭塞 ¥ñ ü ¢ ª®¤¥
@ -163,7 +124,7 @@ Loader_length EQU 0
rst ToDSS rst ToDSS
LD (CatPage),a LD (CatPage),a
;----[] ;----[]
ENDIF
CALL CLEAR_GRAF_SCR CALL CLEAR_GRAF_SCR
@ -214,8 +175,6 @@ Loader_length EQU 0
CALL MAIN CALL MAIN
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; E)eeeeee X) xx I)iiii T)tttttt ; E)eeeeee X) xx I)iiii T)tttttt
@ -224,49 +183,61 @@ Loader_length EQU 0
; E) X)xx I) T) ; E) X)xx I) T)
; E) X) xx I) T) ; E) X) xx I) T)
; E)eeeeee X) xx I)iiii T) ; E)eeeeee X) xx I)iiii T)
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;
;-----------[EXIT Procedure]------------;
RETURN_POINT:
; DI
; LD A,#10
; LD BC,#1FFD
; OUT (C),A
; LD A,RESET_PAGE
; OUT (SLOT3),A
; LD (#C000),HL
; HALT_L:
; ;DI
; HALT
; JR HALT_L
IN A,(FastRAM.OFF)
LD A,SYS_PORT.BIOS
OUT (SYS_PORT.RAM),A
;
LD A,ACEX.Config_PG.Sp2000_SoftSetUp
LD BC,BIOS.RST_CONF.CUSTOM
RST ToBIOS
;
CALL RESTORE_ALL
;
.loop: LD BC,Dss.Exit
RST ToDSS
JR .loop
;---------------------------------------
;----[LP_OPEN_S]------------------------ ;----[LP_OPEN_S]------------------------
; Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­ ; Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­
LD HL,#5104 ; LD HL,#5104
LD E,0 ; win_flag - ä« £¨ ®ª­ : ; LD E,0 ; win_flag - ä« £¨ ®ª­ :
; bit 0 ®¯à¥¤¥«ï¥â áâà ­¨æã ०¨¬ , ª®â®à ï ¡ã¤¥â ; ; bit 0 ®¯à¥¤¥«ï¥â áâà ­¨æã ०¨¬ , ª®â®à ï ¡ã¤¥â
; ®âªàëâ  ¯®á«¥ ¨á¯®«­¥­¨ï ä㭪樨 ; ; ®âªàëâ  ¯®á«¥ ¨á¯®«­¥­¨ï ä㭪樨
LD B,4 ; 4 - ᯥªâà㬮¢áª®¥ ®ª­®, HL - ¯®«®¦¥­¨¥ ®ª­  ; LD B,4 ; 4 - ᯥªâà㬮¢áª®¥ ®ª­®, HL - ¯®«®¦¥­¨¥ ®ª­ 
LD C,BIOS.LP_OPEN_S ; LD C,BIOS.LP_OPEN_S
RST ToBIOS ; RST ToBIOS
;--------------------------------------- ; ;---------------------------------------
SP_SAVE1: ; SP_SAVE1:
LD SP,0 ; LD SP,0
EXX ; EXX
POP HL ; POP HL
EXX ; EXX
POP IX ; POP IX
POP IY ; POP IY
EI ; EI
RET ; RET
;======================================= ;=======================================
; ;
;
;-----------[EXIT Procedure]------------; ‘¤¥« âì!!!
RETURN_POINT: ; â®çª  ¢®§¢à â  - ¯®«­ë© á¡à®á
DI
LD A,#10
LD BC,#1FFD
OUT (C),A
LD A,RESET_PAGE
OUT (SLOT3),A
LD (#C000),HL
HALT_L:
;DI
HALT
JR HALT_L
;---------------------------------------
SET_PAL_x: SET_PAL_x:
IN A,(FastRAM.OFF) IN A,(FastRAM.OFF)
@ -413,11 +384,9 @@ CLEAR_COVOX:
CLEAR_COVOX_X: CLEAR_COVOX_X:
LD BC,CBL.COVOX_OUT LD BC,CBL.COVOX_OUT
; IF YesSound
CLEAR_CBL: CLEAR_CBL:
OUT (C),A OUT (C),A
DJNZ CLEAR_CBL DJNZ CLEAR_CBL
; ENDIF
RET RET
; ;
; ;
@ -518,7 +487,7 @@ MAIN: CALL INIT_TABLE
RST ToBIOS RST ToBIOS
LD HL,#5000 LD HL,#5000
LD E,0 LD E,1
LD B,9 ; £à ä¨ç¥áª®¥ ®ª­® 1, HL - ¯®«®¦¥­¨¥ ®ª­  LD B,9 ; £à ä¨ç¥áª®¥ ®ª­® 1, HL - ¯®«®¦¥­¨¥ ®ª­ 
LD C,BIOS.LP_OPEN_S LD C,BIOS.LP_OPEN_S
RST ToBIOS RST ToBIOS
@ -587,12 +556,12 @@ D2_FRAM_page+1:
CALL CLEAR_COVOX CALL CLEAR_COVOX
IN A,(FastRAM.OFF) IN A,(FastRAM.OFF)
CALL INIT_HDD_WORK CALL INIT_HDD_WORK
IN A,(FastRAM.ON) IN A,(FastRAM.ON)
SOUND_SWITCH: SOUND_SWITCH:
IF YesSound
LD HL,NAMES+1 LD HL,NAMES+1
LD A,(HL) LD A,(HL)
INC A INC A
@ -609,18 +578,14 @@ SOUND_S1:
RLCA RLCA
RLCA RLCA
; ;
ADD A,low (NAMES+2) ADD A,low (NAME1)
LD E,A LD E,A
LD A,0 LD A,0
RLA RLA
ADD A,high (NAMES+2) ADD A,high (NAME1)
LD D,A LD D,A
;ADD A,#80
;LD E,A
;LD D,#80
CALL SET_SND_FILE CALL SET_SND_FILE
CALL INIT_SOUND CALL INIT_SOUND
ENDIF
MORE_PIC: MORE_PIC:
LD HL,#0100 LD HL,#0100
@ -629,6 +594,7 @@ MORE_PIC:
LD (Y_SPEED),HL LD (Y_SPEED),HL
LD HL,#0200 LD HL,#0200
LD (A_SPEED),HL LD (A_SPEED),HL
HELP_2: HELP_2:
CALL CLEAR_SP_PAL CALL CLEAR_SP_PAL
LD A,6 LD A,6
@ -670,9 +636,10 @@ PAUS_START:
JR Z,DM_LOOP JR Z,DM_LOOP
CP 38 CP 38
JR Z,SOUND_SWITCH JR Z,SOUND_SWITCH
CP 9 CP 9
JP Z,RETURN_POINT JP Z,RETURN_POINT
; CP 76
; JP Z,RETURN_POINT
CP 5 CP 5
JP Z,HELP_ JP Z,HELP_
@ -715,89 +682,51 @@ DM_LOOP:
; CALL Z,SWITCH_XX_W ; CALL Z,SWITCH_XX_W
; CALL CRAZY_WALL ; CALL CRAZY_WALL
DI ;DI
; CALL SET_PAL_x ; CALL SET_PAL_x
; CALL FIRE_S ; CALL FIRE_S
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
CALL CALC_NEW_PLACE CALL CALC_NEW_PLACE
CALL MAP_PLACE CALL MAP_PLACE
CALL MAKE_MAP ; á®®à㤨âì ®â­®á¨â¥«ì­ãî ª àâã CALL MAKE_MAP ; á®®à㤨âì ®â­®á¨â¥«ì­ãî ª àâã
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
CALL PRECALC_PLACE CALL PRECALC_PLACE
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
CALL TRACE ; ¯à®à¨á®¢ª ! CALL TRACE ; ¯à®à¨á®¢ª !
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
; CALL MONSTR_OUT ; CALL MONSTR_OUT
CALL MONSTR_ALL CALL MONSTR_ALL
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
CALL WEAPON_OUT CALL WEAPON_OUT
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
CALL MAP_OUT CALL MAP_OUT
CALL CLEAR_Z_BUFER CALL CLEAR_Z_BUFER
LOOP_SCR: LOOP_SCR:
; IF NORM_syncPORT
IN A,(SCR_SyncPort) IN A,(SCR_SyncPort)
BIT 5,A BIT 5,A
JR NZ,CONT_WORK JR NZ,CONT_WORK
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
JR LOOP_SCR JR LOOP_SCR
; ELSE
; EI
; HALT
; ENDIF
CONT_WORK: CONT_WORK:
CALL SCR_SWITCH CALL SCR_SWITCH
IF YesSound
CALL SOUND CALL SOUND
; ELSE
; CALL YesSoundZero
ENDIF
JP DM_LOOP JP DM_LOOP
@ -817,7 +746,7 @@ SET_1:
PAUSE_INT: PAUSE_INT:
CALL SOUND1 CALL SOUND1
; IF NORM_syncPORT
IN A,(SCR_SyncPort) IN A,(SCR_SyncPort)
BIT 5,A BIT 5,A
JR NZ,PAUSE_INT JR NZ,PAUSE_INT
@ -828,11 +757,7 @@ PAUSE_INT1:
BIT 5,A BIT 5,A
RET NZ RET NZ
JR PAUSE_INT1 JR PAUSE_INT1
; ELSE
; EI
; HALT
; ret
; ENDIF
PAUSE_SNDC: PAUSE_SNDC:
JP SOUND JP SOUND
@ -1641,8 +1566,173 @@ MONSTR_POS:
POP DE POP DE
RET RET
; ;
;*************************************** ;***********************************************************************
;***********************************************************************
SET_HOME_PATH:
LD C,(HL)
LD B,0
INC BC
INC BC
INC BC
ADD HL,BC ; 㪠§ â¥«ì ­  ¯®«­ë© ¯ãâì ¤® ä ©«  § ¯ã᪠
LD A,(HL)
PUSH HL
SUB 'A'
LD C,Dss.ChDisk
RST ToDSS
;
POP HL
INC HL
INC HL
LD D,H
LD E,L
LD BC,128
XOR A
CPIR
LD A,'\' ;
LD BC,128
CPDR
LD A,(HL)
CP ':'
JR Z,.it_is_root
;
INC HL
LD (HL),0
EX DE,HL
LD C,Dss.ChDir ; ¯¥à¥å®¤ ¢ ª â «®£ DOOM2 ­  ¢á直© á«ãç ©
RST ToDSS
.it_is_root:
RET
;***********************************************************************
SAVE_PAL:
IN A,(SLOT2)
PUSH AF
OUT (SLOT3),A
;
LD HL,Pal_Restore_Buffer+#4000
LD DE,0
LD A,4
LD C,BIOS.PIC_GET_PAL
RST ToBIOS
;
; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0
; LD A,5
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024
; LD DE,0
; LD A,6
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024+1024
; LD DE,0
; LD A,7
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
;
POP AF
OUT (SLOT3),A
RET
;***********************************************************************
RESTORE_PAL:
;
IN A,(SLOT2)
PUSH AF
OUT (SLOT3),A
;
LD HL,Pal_Restore_Buffer+#4000
LD DE,0
LD A,4
LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
RST ToBIOS
;
; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0
; LD A,5
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024
; LD DE,0
; LD A,6
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024+1024+1024
; LD DE,0
; LD A,7
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS
;
POP AF
OUT (SLOT3),A
RET
;***********************************************************************
;!TODO âãâ ­¥ ¯à®¢¥àï¥âáï ०¨¬ 80 ¨«¨ 40
SAVE_TXT_SCREEN:
LD C,BIOS.LP_GET_PLACE
RST ToBIOS
LD (LOAD_TXT_SCREEN.CURS),DE
LD IX,#4000 + TXT_SCREEN
LD HL,#2050 ; #2028
;
; LD (LOAD_TXT_SCREEN.SVHL1),HL
LD DE,#0000
IN A,(SLOT2)
LD B,A
LD C,BIOS.WIN_COPY
JP ToBIOS
LOAD_TXT_SCREEN:
LD IX,#4000 + TXT_SCREEN
.SVHL1+1: LD HL,#2050 ; #2028
LD DE,#0000
IN A,(SLOT2)
LD B,A
LD C,BIOS.WIN_RESTORE
RST ToBIOS
;
.CURS+1: LD DE,#0000
LD C,Dss.Locate
JP ToDSS
;***********************************************************************
RESTORE_ALL:
LD A,1
LD HL, %0000'0100'0000'0000 ; §­ ç¥­¨¥
LD DE, %1111'1110'0110'1111 ; ¬ áª 
LD BC,0*256 + BIOS.DCP_CONFIG
RST ToBIOS
;
;LD B,3 ; 3 - ãáâ ­®¢ª  CGA ¯ «¨âàë
;LD C,BIOS.SET_PAL_INIT ; ­®¬¥à ä㭪樨
;RST ToBIOS ; ãáâ ­®¢ª  ¯ «¨âàë
;
LD A,Dss.SetVMod.txt80x32
LD BC,Dss.SetVMod.Screen_0
RST ToDSS
LD A,Dss.SetVMod.txt80x32
LD BC,Dss.SetVMod.Screen_1
RST ToDSS
;
CALL RESTORE_PAL
;
LD DE,0
LD HL,#2050
LD BC,COLORS.CGA.INC.LGRAY*256 + BIOS.LP_CLS_WIN
RST ToBIOS
;
CALL LOAD_TXT_SCREEN
;
RET
;***********************************************************************
;***********************************************************************
;---------------[Tables]---------------- ;---------------[Tables]----------------
ALIGN 2,0 ALIGN 2,0
; ;
@ -1659,25 +1749,21 @@ A_SPEED: DW #200
TABLE_TRACE: BLOCK 33,0 ; â ¡«¨æ  âà áá¨à®¢ª¨/¡ ­ª¨ â ¡«¨æë TABLE_TRACE: BLOCK 33,0 ; â ¡«¨æ  âà áá¨à®¢ª¨/¡ ­ª¨ â ¡«¨æë
TABLE_WALL: BLOCK 17,0 TABLE_WALL: BLOCK 17,0
; BLOCK TABLES_START+#74-$,0 ;<E2809A><E282AC>ˆ<E2809A>ˆ
NAMES: DB 6,1 NAMES: DB 7,1
LAST_KEY: DB 0 LAST_KEY: DB 0
; BLOCK TABLES_START+#7C-$,0 ;<E2809A><E282AC>ˆ<E2809A>ˆ
NAME1: DB "_1X62 CBL " NAME1: DB "_1X62 CBL "
NAME2: DB "2NDREAL3CBL " NAME2: DB "2NDREAL3CBL "
NAME3: DB "_ICT2 CBL " NAME3: DB "_ICT2 CBL "
;NAME4: DB "MISS2 CBL " NAME4: DB "5EL CBL "
;NAME5: DB "5EL CBL " NAME5: DB "_UNNY2 CBL "
NAME6: DB "_UNNY2 CBL " NAME6: DB "94956C CBL "
NAME8: DB "94956C CBL " NAME7: DB "_ENI511CCBL "
NAME9: DB "_ENI511CCBL "
; ;
SND_DIR: DZ "MUSIC"
;Up_Dir: DZ ".." ;Up_Dir: DZ ".."
;
Loading_TXT: DZ "\r\nPlease wait, resources are loading..."
; ;
; IFN NORM_syncPORT ; IFN NORM_syncPORT
@ -1700,7 +1786,9 @@ NAME9: DB "_ENI511CCBL "
;CURRENT_DIR: BLOCK 257,0 ;CURRENT_DIR: BLOCK 257,0
;------------------------------------ ;------------------------------------
Temp_Buffer EQU $ Pal_Restore_Buffer EQU $ ;Temp_Buffer + 256
Temp_Buffer EQU Pal_Restore_Buffer + 1024 + 1024
TXT_SCREEN EQU Temp_Buffer + 257
; ;
; ;
DISPLAY "DOOM2.EXE starts - ",/H,BEGIN DISPLAY "DOOM2.EXE starts - ",/H,BEGIN

View File

@ -2,10 +2,6 @@
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------; ;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------;
INIT_HDD_WORK: INIT_HDD_WORK:
IFN YesSound
RET
ENDIF
.currentDisk+1: ; .currentDisk+1: ;
LD A,0 LD A,0
OR #80 OR #80
@ -48,59 +44,113 @@ INIT_HDD_WORK:
JR C,.loop JR C,.loop
; ;
CALL BPB_SetUp CALL BPB_SetUp
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;
LD HL,SYS_PAGE.MSD_FAT_SEC LD HL,SYS_PAGE.MSD_FAT_SEC
LD DE,MSD_DATS LD DE,MSD_DATS
LD BC,16 LD BC,16
LDIR LDIR
POP AF EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
; ;[ ] music and dirs ;[ ] music and dirs
; LD A,(CURRENT_DIR+1) ; LD A,(CURRENT_DIR+1)
; AND A ; AND A
; JR Z,.skip_dir ; JR Z,.skip_dir
; ; ;
; LD HL,Up_Dir ; LD HL,Up_Dir
; LD C,Dss.ChDir ; LD C,Dss.ChDir
; RST ToDSS ; RST ToDSS
; ; ;
; LD A,'\' ; ; LD A,'\' ;
; LD HL,CURRENT_DIR+257 ; LD HL,CURRENT_DIR+257
; LD BC,257 ;!HARDCODE ¤«¨­  áâப¨ ¯ã⨠; LD BC,257 ;!HARDCODE ¤«¨­  áâப¨ ¯ãâ¨
; CPDR ; CPDR
; INC HL ; INC HL
; INC HL ;
; ; LD HL,SND_DIR
; LD DE,Temp_Buffer LD DE,Temp_Buffer
; LD A,FAT_ATTR.DIRECTORY LD A,FAT_ATTR.DIRECTORY
; LD BC,Dss.F_First LD BC,Dss.F_First
; RST ToDSS RST ToDSS
; ; JR NC,.start_setup
; LD HL,(Temp_Buffer+15) ;
; ; LD A,#C9 ; RET opcode - disable music
LD (SoundOnOff2),A
RET
;
;LD HL,(SYS_PAGE.MS_BPB + _sBOOT_SEC.B_P_S)
; LD BC,(Temp_Buffer+26) ; first dir cluster
; LD A,(SYS_PAGE.MS_BPB + _sBOOT_SEC.S_P_C)
; LD E,A
; LD D,0
; LD HL,0
; LD IX,0
; .cluster_loop:
; ADD HL,DE
; CALL C,KOSTILYI
; DEC BC
; LD A,B
; OR C
; JR NZ,.cluster_loop
.start_setup:
;-=-=-=-=-=-=-=-
LD HL,(Temp_Buffer+26) ; first dir cluster
CALL NSECTOR
LD (MSD_DATS.MSD_CAT_SEC2),HL
LD (MSD_DATS.MSD_CAT_SEC),IX
;JP READ_DIR
;-=-=-=-=-=-=-=-
; FAT12/FAT16 ¤«ï ª®à­¥¢®£® ª â «®£  ¢ë¤¥«¥­® ¬¥áâ® ¬¥¦¤ã FAT ¨ ¤ ­­ë¬¨.
; Š ª ã§­ âì ¥£® à §¬¥à ¢ ᥪâ®à å? —¨á«® í«¥¬¥­â®¢ ª®à­¥¢®£® ª â «®£  㬭®¦ ¥¬ ­  32,
; ¤®¡ ¢«ï¥¬ à §¬¥à ᥪâ®à , ¢ëç¨â ¥¬ ¥¤¨­¨æã ¨ ¤¥«¨¬ íâ® ¢áñ ­  à §¬¥à ᥪâ®à .
; Š« áâ¥à ¯ ¯ª¨ #2258
; IX:HL ®â­®á¨â¥«ì­ë© ᥪâ®à ¯ ¯ª¨ #897E0 (E0 97 08 00)
;
.skip_dir: .skip_dir:
; LD DE,(MSD_DATS.MSD_CAT_SEC) ; CAT TABLE.  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì
; LD IX,(MSD_DATS.MSD_CAT_SEC2) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì
;-----[ç¨â âì ᥪâ®àë á ¢¨­ç¥áâ¥à ]----- ;-----[ç¨â âì ᥪâ®àë á ¢¨­ç¥áâ¥à ]-----
READ_DIR: READ_DIR:
LD HL,#C000 ;  ¤à¥á ¡ãä¥à  ¤ ­­ëå LD HL,#C000 ;  ¤à¥á ¡ãä¥à  ¤ ­­ëå
LD DE,(MSD_DATS+4) ; CAT TABLE.  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì LD DE,(MSD_DATS.MSD_CAT_SEC) ; CAT TABLE.  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì
LD IX,(MSD_DATS+6) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì LD IX,(MSD_DATS.MSD_CAT_SEC2) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì
LD B,32 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢ LD B,32 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
CatPage+1: CatPage+1:
LD A,15 ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ #C000 LD A,0 ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ #C000
LD C,BIOS.HDD_READ LD C,BIOS.HDD_READ ; IX:DE -  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à 
RST ToBIOS ; § £à㧨âì CAT RST ToBIOS ; § £à㧨âì CAT
RET RET
; KOSTILYI:
; INC IX
; RET
;--------------------------------------- ;---------------------------------------
MSD_DATS: WORD 0,0,0,0,0,0,0,0 MSD_DATS:
.MSD_FAT_SEC DW 00
.MSD_FAT_SEC2 DW 00
.MSD_CAT_SEC DW 00
.MSD_CAT_SEC2 DW 00
.MSD_DAT_SEC DW 00
.MSD_DAT_SEC2 DW 00
.CLASTER_LEN DW 00
.CLASTER_LEN2 DW 00
SND_SEC1: DW 12525 ; ­ ç «ì­ë© ᥪâ®à SND_SEC1: DW 12525 ; ­ ç «ì­ë© ᥪâ®à
SND_SEC2: DW 0 SND_SEC2: DW 0
@ -113,10 +163,6 @@ SND_C1: DW #1720 ;
SND_C2: DW 0 SND_C2: DW 0
SET_SND_FILE: SET_SND_FILE:
IFN YesSound
ret
ENDIF
CALL OPEN_FILE CALL OPEN_FILE
RET C RET C
@ -192,7 +238,7 @@ OPEN_FILE: ; DE - name
DEC IX ; -2 !!! DEC IX ; -2 !!!
LD HL,0 LD HL,0
SCF SCF
LD DE,(MSD_DATS+13) ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å LD DE,(MSD_DATS.CLASTER_LEN + 1) ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
RR D RR D
RR E RR E
.SEC_MUL: .SEC_MUL:
@ -203,9 +249,9 @@ OPEN_FILE: ; DE - name
ADC HL,HL ADC HL,HL
JR .SEC_MUL JR .SEC_MUL
.SECT_X: .SECT_X:
LD DE,(MSD_DATS+8) LD DE,(MSD_DATS.MSD_DAT_SEC)
ADD IX,DE ADD IX,DE
LD DE,(MSD_DATS+10) LD DE,(MSD_DATS.MSD_DAT_SEC2)
ADC HL,DE ; HL:IX - ­®¬¥à ¯¥à¢®£® ᥪâ®à  ä ©«  ADC HL,DE ; HL:IX - ­®¬¥à ¯¥à¢®£® ᥪâ®à  ä ©« 
AND A AND A
RET RET
@ -422,15 +468,56 @@ BPB_SetUp:
; ;
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
EI ;EI
AND A AND A
RET RET
.ERROR_BPB: .ERROR_BPB:
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
SCF SCF
EI ;EI
RET RET
; ;
.FAT1_MSG: .FAT1_MSG:
DB 'FAT1' DB 'FAT1'
;-=-=-=-=-=-=-=-
; in: HL - CLUSTER
; out: HL:IX - SECTOR
NSECTOR:
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
;
LD DE,0 ;!FIXIT for FAT32
DEC HL
DEC HL
XOR 1
JR Z,.skip
;
RRA
.loop: ADD HL,HL
RL E
RL D
;
RRA
JP NC,.loop
;
.skip: EX DE,HL
LD XL,E
LD XH,D
LD DE,(MSD_DATS.MSD_DAT_SEC) ;first data sector ;!FIXIT   ¥á«¨ ­ ç «ì­ë© ᥪâ®à > #FFFF
XOR A
ADD IX,DE
LD D,A
LD E,A
ADC HL,DE
;!TODO   ­ ¤® «¨ ¯à®¢¥àïâì ¯¥à¥¯®«­¥­¨¥ HL:IX?
RET
;-=-=-=-=-=-=-=-

@ -1 +1 @@
Subproject commit f74ae7e760de5541ee4966d509442c6421225c3b Subproject commit 93f04cc30f6a3c20f382c8b467bca79718c9ab2e