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-04 03:39:25 +10:00
parent 84f6958d37
commit 804a9c4909
4 changed files with 638 additions and 459 deletions

View File

@ -156,7 +156,7 @@ TRACE_NEXT_:
LD (PLACE_L2),A LD (PLACE_L2),A
EXX EXX
; ;
PLACE_L EQU $+1 PLACE_L+1:
LD A,(TABLE_TRACE+10) ; â®­ª®¥ ¯®«®¦¥­¨¥ - ¯®«®¦¥­¨¥ ¢ ª¢ ¤à â¥ LD A,(TABLE_TRACE+10) ; â®­ª®¥ ¯®«®¦¥­¨¥ - ¯®«®¦¥­¨¥ ¢ ª¢ ¤à â¥
; ;
OUT (SLOT1),A OUT (SLOT1),A
@ -204,8 +204,7 @@ TRACE_CONT:
; ;
EXX EXX
EX AF,AF' ;­®¬¥à á⥭ª¨ EX AF,AF' ;­®¬¥à á⥭ª¨
PLACE_L1 EQU $+1 PLACE_L1+1: LD A,5
LD A,5
OUT (SLOT1),A ; á«¥¤ãî饥 ¯®«®¦¥­¨¥ ¢ â ¡«¨æ¥ OUT (SLOT1),A ; á«¥¤ãî饥 ¯®«®¦¥­¨¥ ¢ â ¡«¨æ¥
; LD C,0 ; LD C,0
@ -232,9 +231,7 @@ PLACE_L1 EQU $+1
LD A,(HL) ; ¢§ïâì ­¥¬ áèâ ¡¨à®¢ ­­®! LD A,(HL) ; ¢§ïâì ­¥¬ áèâ ¡¨à®¢ ­­®!
ACC_Off ; á⥭ª  ¢ އ“  ªá¥«¥à â®à ! ACC_Off ; á⥭ª  ¢ އ“  ªá¥«¥à â®à !
LD A,5 PLACE_L2+1: LD A,5
PLACE_L2 EQU $-1
OUT (SLOT1),A ; á«¥¤ãî饥 ¯®«®¦¥­¨¥ OUT (SLOT1),A ; á«¥¤ãî饥 ¯®«®¦¥­¨¥
EXX EXX
; ;
@ -291,8 +288,7 @@ HIGH_1:
; LD A,#06 ; 梥⠯®«  ; LD A,#06 ; 梥⠯®« 
; LD A,#5F ; 梥⠯®«  á¥àë© ; LD A,#5F ; 梥⠯®«  á¥àë©
; LD A,#CF ; 梥⠯®«  ᨭ¨© ; LD A,#CF ; 梥⠯®«  ᨭ¨©
LD A,#2F ; 梥⠯®«  ⥬­®ªà á­ë© COLOR_LO+1: LD A,#2F ; 梥⠯®«  ⥬­®ªà á­ë©
COLOR_LO EQU $-1
; ;
ACC_FillScreenOneByte ACC_FillScreenOneByte
LD (DE),A ; à¨á®¢ âì ¯®« LD (DE),A ; à¨á®¢ âì ¯®«
@ -314,7 +310,7 @@ COLOR_LO EQU $-1
; NEG ; ¢ë¢®¤¨¬ë© à §¬¥à á⥭ª¨ ; NEG ; ¢ë¢®¤¨¬ë© à §¬¥à á⥭ª¨
; á⥭ª  ¢  ªá¥«¥à â®à¥! ; á⥭ª  ¢  ªá¥«¥à â®à¥!
ACC_SetBlockSize ACC_SetBlockSize
LD (DE),A LD (DE),A ;!!!!! ¯à¨ª®«ì­®
ACC_CopyScreenBlock ACC_CopyScreenBlock
LD (DE),A ; ¯®«®¦¨âì á⥭ªã! LD (DE),A ; ¯®«®¦¨âì á⥭ªã!
ACC_Off ACC_Off
@ -334,8 +330,7 @@ NEXT_ANGLE:
NO_TEST: NO_TEST:
; ;
LD A,0 CONT_PAGE+1: LD A,0
CONT_PAGE EQU $-1
; ;
OUT (SLOT1),A OUT (SLOT1),A
@ -360,8 +355,7 @@ CONT_PAGE EQU $-1
PUSH HL PUSH HL
PUSH BC PUSH BC
; ;
LD A,#0F CORNER_1+1: LD A,#0F
CORNER_1 EQU $-1
; ;
AND #0F AND #0F
RRCA RRCA
@ -392,13 +386,11 @@ CORNER_1 EQU $-1
TRACE_END: TRACE_END:
; ;
LD A,0 TRACE_RET_SLOT3+1: LD A,0
TRACE_RET_SLOT3 EQU $-1
; ;
OUT (SLOT3),A OUT (SLOT3),A
; ;
LD A,5 TRACE_RET_SLOT1+1: LD A,5
TRACE_RET_SLOT1 EQU $-1
; ;
OUT (SLOT1),A OUT (SLOT1),A
LD A,0 LD A,0
@ -483,7 +475,7 @@ SET_PICTURE:
ENDIF ENDIF
; ;
ld bc,#0100 ; ¬ áèâ ¡¨à®¢ ­¨¥ - 1 ld bc,#0100 ; ¬ áèâ ¡¨à®¢ ­¨¥ - 1
OUT (C),B OUT (C),C
LD DE,(SCREEN_1) LD DE,(SCREEN_1)
LD B,5 ; 5 <E28098><EFBFBD>ˆ LD B,5 ; 5 <E28098><EFBFBD>ˆ
@ -491,7 +483,6 @@ SET_PICTURE:
ACC_SetBlockSize ACC_SetBlockSize
LD A,0 ; ¯® 256 ¡ ©â LD A,0 ; ¯® 256 ¡ ©â
ACC_Off ACC_Off
inc a ;!FIXIT ª®áâë«ì, ¨­ ç¥ á® áçñâ稪®¬  ªá¥«ï çâ®-â® ­¥ â ª
OUT (PORT_Y),A OUT (PORT_Y),A
POP AF POP AF
@ -704,7 +695,7 @@ WEAPON_OUT:
LD A,#58 LD A,#58
OUT (SLOT3),A OUT (SLOT3),A
WEAPON_SWITCH EQU $+1 WEAPON_SWITCH+1:
LD HL,#4500 ; ¯®«®¦¥­¨¥ á¯à ©â  ®àã¦¨ï ¢ áâà ­¨æ¥ LD HL,#4500 ; ¯®«®¦¥­¨¥ á¯à ©â  ®àã¦¨ï ¢ áâà ­¨æ¥
; ;
LD DE,(SCREEN_1) LD DE,(SCREEN_1)
@ -723,7 +714,6 @@ WEAPON_SWITCH EQU $+1
LD BC,#100 LD BC,#100
W_OUT_L: W_OUT_L:
LD A,#44 LD A,#44
SUB H SUB H
OUT (PORT_Y),A OUT (PORT_Y),A
@ -874,7 +864,7 @@ MAP_LOOP_1:
CP #50 CP #50
JR Z,MAP_LOOP_2 JR Z,MAP_LOOP_2
LD A,0 XOR A
OUT (PORT_Y),A OUT (PORT_Y),A
POP AF POP AF
@ -890,25 +880,21 @@ MAP_LOOP_1:
;*************************************** ;***************************************
; ;
WALL:
; IX+0 - áâà ­¨æ  á⥭ª¨ ; IX+0 - áâà ­¨æ  á⥭ª¨
; IX+1,2 -  ¤à¥á á⥭ª¨ ¢ áâà ­¨æ¥ ; IX+1,2 -  ¤à¥á á⥭ª¨ ¢ áâà ­¨æ¥
; IX+3 - ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ - § ¤ ¥â ¬ áèâ ¡ ; IX+3 - ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ - § ¤ ¥â ¬ áèâ ¡
; IX+4,5 - ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨ ; IX+4,5 - ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨
; IX+6,7 - reserved ; IX+6,7 - reserved
; IX+8,9 - X-add-parameter (ª®í䍿¨¥­â ¬ áèâ ¡¨à®¢ ­¨ï ¯® Y) ; IX+8,9 - X-add-parameter (ª®í䍿¨¥­â ¬ áèâ ¡¨à®¢ ­¨ï ¯® Y)
; IX+10 - ॠ«ì­ ï è¨à¨­  á⥭ª¨ ??? ; IX+10 - ॠ«ì­ ï è¨à¨­  á⥭ª¨ ???
; IX+11 - ॠ«ì­ ï ¢ëá®â  á⥭ª¨ ??? ; IX+11 - ॠ«ì­ ï ¢ëá®â  á⥭ª¨ ???
WALL: IN A,(SLOT3)
LD (WALL_SLOT3_RET),A
IN A,(SLOT3)
LD (SLOT3_RET1),A
IN A,(SLOT1) IN A,(SLOT1)
LD (SLOT1_RET1),A LD (WALL_SLOT1_RET),A
IN A,(PORT_Y) IN A,(PORT_Y)
LD (RGADR_RET1),A LD (WALL_PORT_Y_RET),A
LD A,#58 LD A,#58
OUT (SLOT3),A OUT (SLOT3),A
@ -1064,10 +1050,10 @@ NO_WRITE_LINE:
INC DE ; ­®¢®¥ §­ ç¥­¨¥ X INC DE ; ­®¢®¥ §­ ç¥­¨¥ X
LD A,C LD A,C
X_ADD2 equ $+1 X_ADD2+1:
ADD A,0 ; X-add-parameter 2 ADD A,0 ; X-add-parameter 2
LD C,A LD C,A
X_ADD equ $+1 X_ADD+1:
LD A,0 ; X-add-parameter LD A,0 ; X-add-parameter
ADC A,H ADC A,H
LD H,A ; á«¥¤ãîé ï «¨­¨ï WOLL LD H,A ; á«¥¤ãîé ï «¨­¨ï WOLL
@ -1076,13 +1062,13 @@ X_ADD equ $+1
NO_WRITE_ALL: NO_WRITE_ALL:
; ;
RGADR_RET1 EQU $+1 WALL_PORT_Y_RET+1:
LD A,0 LD A,0
OUT (PORT_Y),A OUT (PORT_Y),A
SLOT3_RET1 EQU $+1 WALL_SLOT3_RET+1:
LD A,0 LD A,0
OUT (SLOT3),A OUT (SLOT3),A
SLOT1_RET1 EQU $+1 WALL_SLOT1_RET+1:
LD A,5 LD A,5
OUT (SLOT3),A OUT (SLOT3),A
RET RET
@ -1321,7 +1307,7 @@ SND_OUT_S:
DJNZ SND_OUT_S DJNZ SND_OUT_S
LD A,#C9 ; § ¡¨âì ¢®§¢à â ¢ ¯à®£à ¬¬ã ¨£à ­¨ï ¬ã§ëª¨ LD A,#C9 ; § ¡¨âì ¢®§¢à â ¢ ¯à®£à ¬¬ã ¨£à ­¨ï ¬ã§ëª¨
LD (MemPatch_SoundOnOff),A LD (SoundOnOff),A
POP BC POP BC
POP AF POP AF
@ -1332,7 +1318,7 @@ SND_CONTINUE: ;
PUSH BC PUSH BC
LD A,0 ; § ¡¨âì NOP ¢ ¯à®£à ¬¬ã ¨£à ­¨ï ¬ã§ëª¨ LD A,0 ; § ¡¨âì NOP ¢ ¯à®£à ¬¬ã ¨£à ­¨ï ¬ã§ëª¨
LD (MemPatch_SoundOnOff),A LD (SoundOnOff),A
POP BC POP BC
POP AF POP AF
@ -1355,7 +1341,7 @@ SND_INIT:
; LD (SND_P),A ; LD (SND_P),A
LD A,0 LD A,0
LD (MemPatch_SoundOnOff),A LD (SoundOnOff),A
LD B,0 LD B,0
IN A,(SLOT3) IN A,(SLOT3)
@ -1373,7 +1359,7 @@ SOUND:
ENDIF ENDIF
; ;
IF YesSound IF YesSound
MemPatch_SoundOnOff: SoundOnOff:
NOP ; á ¢áâ ¢«ï¥âáï ª®¬ ­¤  RET ¤«ï ®âª«î祭¨ï §¢ãª  ¨ NOP ¤«ï ¢ª«î祭¨ï NOP ; á ¢áâ ¢«ï¥âáï ª®¬ ­¤  RET ¤«ï ®âª«î祭¨ï §¢ãª  ¨ NOP ¤«ï ¢ª«î祭¨ï
PUSH AF PUSH AF
PUSH HL PUSH HL
@ -1400,7 +1386,7 @@ COV_ADR+1:
IN A,(SLOT3) IN A,(SLOT3)
LD E,A LD E,A
MemPatch_D2_FRAM_SndPage+1: D2_FRAM_SndPage+1:
LD A,0 LD A,0
OUT (SLOT3),A OUT (SLOT3),A
@ -1471,7 +1457,7 @@ SND_INIT1:
;_------[—⥭¨¥ ᥪâ®à®¢ á ¤¨áª ]------- ;_------[—⥭¨¥ ᥪâ®à®¢ á ¤¨áª ]-------
NO_NEW_COUNT: NO_NEW_COUNT:
LD HL,-SND_READ_SECTORS*512 ; ¡ãä¥à ¤«ï ¤ ­­ëå LD HL,-SND_READ_SECTORS*512 ; ¡ãä¥à ¤«ï ¤ ­­ëå
LD A,0 ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ #C000 LD A,(D2_FRAM_SndPage) ;!FIXIT ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ #C000
LD DE,(SND_S1) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  Œ« ¤è ï ç áâì LD DE,(SND_S1) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  Œ« ¤è ï ç áâì
LD IX,(SND_S2) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ‘â àè ï ç áâì LD IX,(SND_S2) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ‘â àè ï ç áâì
LD B,SND_READ_SECTORS ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢ LD B,SND_READ_SECTORS ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
@ -1508,7 +1494,6 @@ NO_NEW_COUNT:
LD (SND_A),HL LD (SND_A),HL
NO_SNDP: NO_SNDP:
LD A,B LD A,B
CPL CPL
LD (COV_ADR),A LD (COV_ADR),A
@ -1569,7 +1554,6 @@ EFF_LOOP:
LD (EFF_),DE LD (EFF_),DE
EX AF,AF' EX AF,AF'
OUT (SLOT2),A OUT (SLOT2),A
RET RET
;*************************************** ;***************************************

486
DOOM2.asm
View File

@ -12,21 +12,18 @@
; IFDEF HARDWARE ; IFDEF HARDWARE
; DEFINE NORM_ACC 1 ; DEFINE NORM_ACC 1
; DEFINE NORM_syncPORT 1
; DEFINE NORM_FastRAM 1 ; DEFINE NORM_FastRAM 1
; ENDIF ; ENDIF
; IFDEF ZXMAK2 ; IFDEF ZXMAK2
; DEFINE NORM_ACC 0 ; DEFINE NORM_ACC 0
; DEFINE NORM_syncPORT 0
; DEFINE NORM_FastRAM 0 ; DEFINE NORM_FastRAM 0
; ENDIF ; ENDIF
; IFDEF MAME ; IFDEF MAME
; DEFINE NORM_ACC 1 ; DEFINE NORM_ACC 1
; DEFINE NORM_syncPORT 0
; DEFINE NORM_FastRAM 1 ; DEFINE NORM_FastRAM 1
; ENDIF ; ENDIF
IFNDEF YesSound : DEFINE YesSound 0 : ENDIF IFNDEF YesSound : DEFINE YesSound 1 : ENDIF
DEFINE EXE_HEADER 1 DEFINE EXE_HEADER 1
; DEFINE NEED_LOADER 1 ; DEFINE NEED_LOADER 1
@ -90,8 +87,7 @@ TABLE_W EQU #2000 ; ⥪
ORG org_addr - CLP_Buffer ORG org_addr - CLP_Buffer
ENDIF ENDIF
BEGIN: BEGIN: DI
DI
LD (CMD_Line),IX ; á®åà ­¨âì 㪠§ â¥«ì ­  ¯ à ¬¥âàë § ¯ã᪠ LD (CMD_Line),IX ; á®åà ­¨âì 㪠§ â¥«ì ­  ¯ à ¬¥âàë § ¯ã᪠
CMD_Line+1: CMD_Line+1:
@ -128,7 +124,7 @@ Loader_length EQU 0
;-----[ˆ­¨æ¨ «¨§ æ¨ï Covox-Blaster]----- ;-----[ˆ­¨æ¨ «¨§ æ¨ï Covox-Blaster]-----
; IF YesSound ; IF YesSound
ld bc,CBL.SYS_PORT ld bc,CBL.SYS_PORT
ld a,#80 ld a,CBL.Blaster + CBL.Mono + CBL.is8bit + CBL.Int_off + CBL.KHz_16old
out (c),a out (c),a
; ;
;-----------[§ £«ãè¨âì §¢ãª]------------ ;-----------[§ £«ãè¨âì §¢ãª]------------
@ -149,15 +145,15 @@ Loader_length EQU 0
ld a,(RAMBlkIDs) ld a,(RAMBlkIDs)
ld bc,BIOS.GetMemPage ld bc,BIOS.GetMemPage
rst ToBIOS rst ToBIOS
di ;di
ld (MemPatch_PalitrePage),a ld (PalitrePage),a
ld a,(RAMBlkIDs+3) ld a,(RAMBlkIDs+3)
ld bc,BIOS.GetMemPage ld bc,BIOS.GetMemPage
rst ToBIOS rst ToBIOS
di ;di
ld (MemPatch_D2_FRAM_page),a ld (D2_FRAM_page),a
DI ;DI
CALL CLEAR_GRAF_SCR CALL CLEAR_GRAF_SCR
@ -175,9 +171,11 @@ Loader_length EQU 0
CALL SET_PAL CALL SET_PAL
;----[®âªàëâì ¯®àâë ¬ áèâ ¡¨à®¢ ­¨ï]---- ;----[®âªàëâì ¯®àâë ¬ áèâ ¡¨à®¢ ­¨ï]----
; ®¤¨­ ¢­ãâ७­¨© ¯®àâ ¬ áèâ ¡¨à®¢ ­¨ï ¬ ¯¯¨âáï ­  ¤¨ ¯¯ §®­ #XX00
; ¢­¥è­¨å ¯®à⮢. Write, Dos off, CNF 0.
LD A,1 LD A,1
LD HL, %0000'0100'0000'0000 LD HL, %0000'0100'0000'0000 ; §­ ç¥­¨¥
LD DE, %1111'1110'0110'1111 LD DE, %1111'1110'0110'1111 ; ¬ áª 
LD BC,ACEX.SCALE*256 + BIOS.DCP_CONFIG LD BC,ACEX.SCALE*256 + BIOS.DCP_CONFIG
RST ToBIOS RST ToBIOS
@ -186,42 +184,30 @@ Loader_length EQU 0
; LD A,DCP_PAGE ; LD A,DCP_PAGE
; OUT (SLOT3),A ; OUT (SLOT3),A
; LD A,ACEX.SCALE ; LD A,ACEX.SCALE
; LD (#C400),A ; ¯®àâ #XX00 Dos off
; ; LD (#C410),A ; ¯®àâ #XX00 Dos off
; ®¤¨­ ¢­ãâ७­¨© ¯®àâ ¬ áèâ ¡¨à®¢ ­¨ï ; LD (#C480),A ; ¯®àâ #XX00 Dos off
; ¬ ¯¯¨âáï ­  ­¥áª®«ìª® ¤¨ ¯¯ §®­®¢ ; LD (#C490),A ; ¯®àâ #XX00 Dos off
; ¢­¥è­¨å ¯®à⮢ ; LD (#C500),A ; ¯®àâ #XX00 Dos off
; Œ áª  ; LD (#C510),A ; ¯®àâ #XX00 Dos off
; LD (#C580),A ; ¯®àâ #XX00 Dos off
; LD (#C400),A ; ¯®àâ #0000 Dos off ; LD (#C590),A ; ¯®àâ #XX00 Dos off
; LD (#C410),A ; ¯®àâ #2000 Dos off
; LD (#C480),A ; ¯®àâ #4000 Dos off
; LD (#C490),A ; ¯®àâ #6000 Dos off
; LD (#C500),A ; ¯®àâ #8000 Dos off
; LD (#C510),A ; ¯®àâ #A000 Dos off
; LD (#C580),A ; ¯®àâ #C000 Dos off
; LD (#C590),A ; ¯®àâ #E000 Dos off
; EX AF,AF' ; EX AF,AF'
; OUT (SLOT3),A ; OUT (SLOT3),A
;--------------------------------------- ; €ªâ¨¢ æ¨ï €ªá¥«ï ¬ áèâ ¡¨à®¢ ­¨ï, ®¡à â­® ⮫쪮 ç¥à¥§ à¥á¥â
EXX LD BC,#100 ; C - ¬ áèâ ¡ 1:1
LD BC,#100 ; ¬ áèâ ¡ 1:1 OUT (C),C
LD D,0 ;-----------------------------------------------------------------------
OUT (C),D
EXX
;
; IFN NORM_syncPORT ;-----------------------------------------------------------------------
; DI
; LD A, +(high im_handler_emulator)
; LD I,A
; ; IM 2 - ¯®ª  ­¥ ¢ª«îç ¥¬, ¯à®æ¥¤ãà  ¯à¥à뢠­¨ï ¯à룠¥â ¢ ªíè,   ®­ ­¥ ¢áâ ¢«¥­ ¨ ­¥ ¯à®£à㦥­
; ENDIF
CALL MAIN CALL MAIN
;------------------------------------------------------------------------ ;-----------------------------------------------------------------------
;-----------------------------------------------------------------------
; E)eeeeee X) xx I)iiii T)tttttt ; E)eeeeee X) xx I)iiii T)tttttt
; E) X) xx I) T) ; E) X) xx I) T)
; E)eeeee X)xx I) T) ; E)eeeee X)xx I) T)
@ -230,7 +216,7 @@ Loader_length EQU 0
; E)eeeeee X) xx I)iiii T) ; E)eeeeee X) xx I)iiii T)
;------------------------------------------------------------------------ ;-----------------------------------------------------------------------
;----[LP_OPEN_S]------------------------ ;----[LP_OPEN_S]------------------------
; Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­ ; Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­
@ -266,16 +252,16 @@ RETURN_POINT: ;
OUT (SLOT3),A OUT (SLOT3),A
LD (#C000),HL LD (#C000),HL
HALT_L: HALT_L:
DI ;DI
HALT HALT
JR HALT_L JR HALT_L
;--------------------------------------- ;---------------------------------------
SET_PAL_x: SET_PAL_x:
FRAM_OFF IN A,(FastRAM.OFF)
CALL SET_PAL CALL SET_PAL
FRAM_ON IN A,(FastRAM.ON)
RET RET
SET_PAL: SET_PAL:
@ -294,7 +280,7 @@ SET_PAL:
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
MemPatch_PalitrePage+1: PalitrePage+1:
LD A,#FF LD A,#FF
OUT (SLOT3),A OUT (SLOT3),A
@ -304,7 +290,7 @@ MemPatch_PalitrePage+1:
LD B,#FF LD B,#FF
LD C,BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë LD C,BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
RST ToBIOS RST ToBIOS
DI ;DI
LD HL,#C000 LD HL,#C000
LD DE,0 LD DE,0
@ -312,7 +298,7 @@ MemPatch_PalitrePage+1:
LD B,#FF LD B,#FF
LD C,BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë LD C,BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
RST ToBIOS RST ToBIOS
DI ;DI
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
@ -324,12 +310,12 @@ CLEAR_GRAF_SCR:
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
LD (MemPatch_SPSave2),SP LD (SPSave2),SP
LD A,#50 LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
LD A,0 XOR A
OUT (PORT_Y),A OUT (PORT_Y),A
LD SP,#C040 + 640 LD SP,#C040 + 640
@ -339,10 +325,7 @@ CLEAR_GRAF_SCR:
LOOP_CLS: LOOP_CLS:
ACC_SetBlockSize ACC_SetBlockSize
LD E,0 LD E,0
ACC_Off ; !FIXIT ã¡à âì?????
LD D,E LD D,E
ACC_FillScreenOneByte ACC_FillScreenOneByte
PUSH DE PUSH DE
PUSH DE PUSH DE
@ -350,7 +333,7 @@ LOOP_CLS:
DJNZ LOOP_CLS DJNZ LOOP_CLS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MemPatch_SPSave2+1: SPSave2+1:
LD SP,0 LD SP,0
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
@ -411,7 +394,7 @@ MemPatch_SPSave2+1:
; ;
FLAG: DB 0 FLAG: DB 0
SAVE_RGA: DB 0 ;SAVE_PORT_Y: DB 0
; ;
; ;
CLEAR_COVOX: CLEAR_COVOX:
@ -465,8 +448,7 @@ LOOP_PAL_D:
SUB E SUB E
JR NC,NO_Z JR NC,NO_Z
XOR A XOR A
NO_Z: NO_Z: LD (HL),A
LD (HL),A
INC L INC L
DEC D DEC D
JR NZ,LOOP_PAL_D JR NZ,LOOP_PAL_D
@ -489,12 +471,11 @@ NO_PAL_EXE:
; ;
; ;
; ;
MAIN: MAIN: CALL INIT_TABLE
CALL INIT_TABLE
RET C RET C
IN A,(PORT_Y) ;IN A,(PORT_Y)
LD (SAVE_RGA),A ;LD (SAVE_PORT_Y),A
LD A,#C0 LD A,#C0
OUT (PORT_Y),A OUT (PORT_Y),A
CALL RECALC_MAP CALL RECALC_MAP
@ -504,10 +485,10 @@ MAIN:
;--------------------------------------- ;---------------------------------------
LD A,(SAVE_RGA) ;LD A,(SAVE_PORT_Y)
OUT (PORT_Y),A ;OUT (PORT_Y),A
ret c ; ­ã¦­® «¨???!!! RET C ; ­ã¦­® «¨???!!!
XOR A XOR A
LD (LAST_KEY),A LD (LAST_KEY),A
@ -574,7 +555,7 @@ TAB_320x256_1
;----[¯¥à¥¡à®á ç á⨠ª®¤  ¢ FastRAM]---- ;----[¯¥à¥¡à®á ç á⨠ª®¤  ¢ FastRAM]----
IN A,(SLOT3) IN A,(SLOT3)
PUSH AF PUSH AF
MemPatch_D2_FRAM_page+1: D2_FRAM_page+1:
LD A,#FF LD A,#FF
OUT (SLOT3),A OUT (SLOT3),A
@ -589,34 +570,27 @@ MemPatch_D2_FRAM_page+1:
; ­ ¤® ¯®â®¬ ­®à¬ «ì­® ¢ë¤¥«ïâì ¨ ; ­ ¤® ¯®â®¬ ­®à¬ «ì­® ¢ë¤¥«ïâì ¨
; ®á¢®¡®¦¤ âì ¯ ¬ïâì,   ­¥ ¢®â íâ® ¢áñ ; ®á¢®¡®¦¤ âì ¯ ¬ïâì,   ­¥ ¢®â íâ® ¢áñ
; ;
ld b,1 ld b,2
ld c,Dss.GetMem ld c,Dss.GetMem
rst ToDSS rst ToDSS
PUSH AF ; ID ¡«®ª  ­  á⥪ ;
ld bc,BIOS.GetMemPage LD (CatPage),a
rst ToBIOS
LD (MemPatch_CatPage),a
ld b,1 ld b,1
POP AF ; ID ¡«®ª  á® á⥪ 
ld c,BIOS.GetMemPage ld c,BIOS.GetMemPage
rst ToBIOS rst ToBIOS
di ;
ld (DOOM2_SndPage),a
ld (D2_FRAM_SndPage+#B000),a
;di
;----[] ;----[]
ENDIF ENDIF
IN A,(FastRAM.ON)
FRAM_ON
LD HL,#C000 LD HL,#C000
LD DE,#1000 LD DE,#1000
LD BC,D2_fram_END-TRACE LD BC,D2_fram_END-TRACE
LDIR LDIR
IF YesSound
ld (MemPatch_D2_FRAM_SndPage),a
ld (MemPatch_DOOM2_SndPage),a
ENDIF
; IFN NORM_syncPORT ; IFN NORM_syncPORT
; IM 2 ; ¢®â ⥯¥àì ¬®¦­® ¢ª«îç âì ; IM 2 ; ¢®â ⥯¥àì ¬®¦­® ¢ª«îç âì
; ENDIF ; ENDIF
@ -639,10 +613,10 @@ MemPatch_D2_FRAM_page+1:
CALL CLEAR_COVOX CALL CLEAR_COVOX
FRAM_OFF IN A,(FastRAM.OFF)
CALL INIT_HDD_WORK CALL INIT_HDD_WORK
FRAM_ON IN A,(FastRAM.ON)
SOUND_SWITCH: SOUND_SWITCH:
IF YesSound IF YesSound
LD HL,NAMES+1 LD HL,NAMES+1
@ -660,9 +634,16 @@ SOUND_S1:
RLCA RLCA
RLCA RLCA
RLCA RLCA
ADD A,#80 ;
ADD A,low (NAMES+2)
LD E,A LD E,A
LD D,#80 LD A,0
RLA
ADD A,high (NAMES+2)
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 ENDIF
@ -969,10 +950,6 @@ MONSTR_DATS:
; ;
; ************************************** ; **************************************
; ;
MSD_DATS:
DW 0,0,0,0
DW 0,0,0,0
;CAT_PAGE EQU 15 ;CAT_PAGE EQU 15
EFF_PAGE: DB #FF EFF_PAGE: DB #FF
@ -983,239 +960,14 @@ BFGF_PAGE: DB #FF
MONSTR_END_T: DW MONSTR_TABLE MONSTR_END_T: DW MONSTR_TABLE
;=======================================================================
;=======================================================================
;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------; “<><E2809C>œ!!! INCLUDE 'Music_4x.asm'
INIT_HDD_WORK:
IFN YesSound ;=======================================================================
RET ;=======================================================================
ENDIF
LD C,BIOS.HDD_INIT
RST ToBIOS
JR C,INIT_HDD_WORK
;---------------------------------------
IN A,(SLOT3)
PUSH AF
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,SYS_PAGE.MSD_FAT_SEC
LD DE,MSD_DATS
LD BC,16
LDIR
POP AF
OUT (SLOT3),A
;-----[ç¨â âì ᥪâ®àë á ¢¨­ç¥áâ¥à ]-----
LD HL,#C000 ;  ¤à¥á ¡ãä¥à  ¤ ­­ëå
LD DE,(MSD_DATS+4) ; CAT TABLE.  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì
LD IX,(MSD_DATS+6) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì
LD B,32 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
MemPatch_CatPage EQU $+1
LD A,15 ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ 0C000h
LD C,BIOS.HDD_READ
RST ToBIOS ; § £à㧨âì CAT
;---------------------------------------
RET
SND_SEC1: DW 12525 ; ­ ç «ì­ë© ᥪâ®à
SND_SEC2: DW 0
SND_L1: DW 1720H ; ¤«¨­ 
SND_L2: DW 0
SND_S1: DW 12525 ; ⥪ã訩 ᥪâ®à
SND_S2: DW 0
SND_C1: DW 1720H ; ®áâ â®ª ¤® ª®­æ 
SND_C2: DW 0
SET_SND_FILE:
IFN YesSound
ret
ENDIF
CALL OPEN_FILE
RET C
LD (SND_SEC1),IX ; ᥪâ®à ¬ã§ëª¨!!!
LD (SND_SEC2),HL
LD HL,(FILE_DATA+2)
LD DE,(FILE_DATA+4)
AND A
RR D
RR E
RR H
LD L,H
LD H,E
LD E,D
LD D,0
LD (SND_L1),HL ; ¤«¨­  ¢ ᥪâ®à å
LD (SND_L2),DE ; ¤«¨­  ¢ ᥪâ®à å
AND A
RET
SWITCH_SND:
NAME_S+1: LD DE,NAME1
CALL SET_SND_FILE
JR C,SWITCH_X
LD HL,(NAME_S)
LD BC,16
ADD HL,BC
LD (NAME_S),HL
RET
SWITCH_X:
LD HL,NAME1
LD (NAME_S),HL
JR SWITCH_SND
FILE_DATA:
DW 0 ; ­ ç «ì­ë© ª« áâ¥à
DW 0,0 ; ¤«¨­  ä ©« 
DW 0 ; ⥪ã騩 ª« áâ¥à
DW 0,0 ; ⥪ã饥 ¯®«®¦¥­¨¥ ¢ ä ©«¥
DW 0 ; ⥪ã騩 ­®¬¥à ᥪâ®à  ¢ ª« áâ¥à¥
;
OPEN_FILE: ; DE - name
CALL FIND_FILE
RET C
LD C,SLOT3
IN B,(C)
PUSH BC
LD A,(MemPatch_CatPage)
OUT (C),A
LD BC,26
ADD HL,BC
LD DE,FILE_DATA
LD BC,6
LDIR
POP BC
OUT (C),B
LD HL,(FILE_DATA)
LD (FILE_DATA+6),HL
LD HL,0
LD (FILE_DATA+8),HL
LD (FILE_DATA+10),HL
LD (FILE_DATA+12),HL
LD IX,(FILE_DATA) ; ­®¬¥à ¯¥à¢®£® ª« áâ¥à 
DEC IX
DEC IX ; -2 !!!
LD HL,0
SCF
LD DE,(MSD_DATS+13) ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
RR D
RR E
SEC_MUL:
RR D
RR E
JR C,SECT_X
ADD IX,IX
ADC HL,HL
JR SEC_MUL
SECT_X:
LD DE,(MSD_DATS+8)
ADD IX,DE
LD DE,(MSD_DATS+10)
ADC HL,DE ; HL:IX - ­®¬¥à ¯¥à¢®£® ᥪâ®à  ä ©« 
AND A
RET
;
;DE - name - 11 ᨬ¢®«®¢
FIND_FILE:
;
LD C,SLOT3
IN B,(C)
PUSH BC
LD A,(MemPatch_CatPage)
OUT (C),A
LD HL,#C000
NEXT_LOOP:
LD B,11
PUSH DE
NAME_LOOP:
LD A,(DE)
CP (HL)
JR NZ,NEXT_NAME
INC HL
INC DE
DJNZ NAME_LOOP
POP DE
LD A,L
AND #E0
LD L,A
POP BC
OUT (C),B
AND A
RET ; HL - ¤ ­­ë¥ ä ©«  ¢ áâà ­¨æ¥ 6
NEXT_NAME:
POP DE
LD A,L
AND #E0
LD L,A
LD BC,#20
ADD HL,BC
LD A,(HL)
AND A
JR Z,END_CAT
LD A,H
AND A
JR NZ,NEXT_LOOP
END_CAT:
POP BC
OUT (C),B
SCF
RET
HDD_FN:
EX AF,AF'
FRAM_OFF ; ®âª«îç ¥¬ ªíè
IN A,(SLOT1)
PUSH AF
IN A,(SLOT3)
PUSH AF
LD A,5 ; <20><EFBFBD>…„…œ!!!
OUT (SLOT1),A
MemPatch_DOOM2_SndPage EQU $+1
LD A,0
OUT (SLOT3),A
IN A,(PORT_Y)
PUSH AF
EX AF,AF'
RST ToBIOS ; ç¨â âì ᥪâ®à  á ¢¨­ç¥áâ¥à , äã­ªæ¨ï #45
DI
POP AF
OUT (PORT_Y),A
POP AF
OUT (SLOT3),A
POP AF
OUT (SLOT1),A
FRAM_ON ; ¢ª«îç ¥¬ ªíè
RET
;
; **************************************
;
SKY_1: DB #FF SKY_1: DB #FF
SKY_2: DB #FF SKY_2: DB #FF
@ -1416,7 +1168,7 @@ NEXT_HL_FFING:
*/ */
;*************************************** ;***************************************
DS #8700-$ ;<E2809A><E282AC>ˆ<E2809A>ˆ BLOCK #8700-$,0 ;<E2809A><E282AC>ˆ<E2809A>ˆ
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; âãâ ¢ëà ¢­¨¢ ­¨¥ ­  0 ¢ ¬« ¤è¥¬ ; âãâ ¢ëà ¢­¨¢ ­¨¥ ­  0 ¢ ¬« ¤è¥¬
; ¡¨â¥  ¤à¥á  ; ¡¨â¥  ¤à¥á 
@ -1427,7 +1179,7 @@ TABLE_PIC: DS 6
;-------[§ £à㧪  à¥áãàᮢ ¨£àë]-------- ;-------[§ £à㧪  à¥áãàᮢ ¨£àë]--------
Load_Resources: Load_Resources:
in a,(SLOT3) in a,(SLOT3)
ld (.MemPatch_SavePage),a ld (.SavePage),a
LD B,FilesTBL.END LD B,FilesTBL.END
LD DE,FilesTBL LD DE,FilesTBL
@ -1440,7 +1192,7 @@ Load_Resources:
ex de,hl ex de,hl
ld b,(hl) ; FilesTBL ld b,(hl) ; FilesTBL
inc hl inc hl
ld (.MemPatch_FileName),hl ld (.FileName),hl
; B - à §¬¥à ¡«®ª  ¢ áâà ­¨æ å ; B - à §¬¥à ¡«®ª  ¢ áâà ­¨æ å
ld c,Dss.GetMem ld c,Dss.GetMem
@ -1464,12 +1216,12 @@ Load_Resources:
push hl ;++¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ push hl ;++¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ
push bc ;++᪮«ìª® áâà ­¨æ £à㧨¬ push bc ;++᪮«ìª® áâà ­¨æ £à㧨¬
.MemPatch_FileName EQU $+1 .FileName+1:
ld hl,.MemPatch_FileName ld hl,0
ld a,1 ld a,1
ld c,Dss.Open ld c,Dss.Open
rst ToDSS rst ToDSS
ld (.MemPatch_TempFileID),a ld (.TempFileID),a
pop bc ;--᪮«ìª® áâà ­¨æ £à㧨¬ pop bc ;--᪮«ìª® áâà ­¨æ £à㧨¬
pop hl ;--¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ pop hl ;--¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ
@ -1481,13 +1233,13 @@ Load_Resources:
push hl ;++¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ push hl ;++¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ
push bc ;++᪮«ìª® áâà ­¨æ £à㧨¬ push bc ;++᪮«ìª® áâà ­¨æ £à㧨¬
.MemPatch_TempFileID EQU $+1 .TempFileID+1:
ld a,#FF ; ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à ld a,#FF ; ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
LD HL,#C000 ;  ¤à¥á ¢ ¯ ¬ï⨠LD HL,#C000 ;  ¤à¥á ¢ ¯ ¬ïâ¨
LD DE,#4000 ; ª®«¨ç¥á⢮ ç¨â ¥¬ëå ¡ ©â LD DE,#4000 ; ª®«¨ç¥á⢮ ç¨â ¥¬ëå ¡ ©â
LD C,Dss.Read LD C,Dss.Read
rst ToDSS RST ToDSS
DI ;DI
pop bc ;--᪮«ìª® áâà ­¨æ £à㧨¬ pop bc ;--᪮«ìª® áâà ­¨æ £à㧨¬
pop hl ;--¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ pop hl ;--¡ãä¥à ᮠᯨ᪮¬ áâà ­¨æ
@ -1495,12 +1247,12 @@ Load_Resources:
;---[] ;---[]
;---[§ ªà뢠¥¬] ;---[§ ªà뢠¥¬]
ld a,(.MemPatch_TempFileID) ld a,(.TempFileID)
ld c,Dss.Close ld c,Dss.Close
rst ToDSS rst ToDSS
;---[] ;---[]
ld de,(.MemPatch_FileName) ld de,(.FileName)
ld hl,13 ld hl,13
add hl,de add hl,de
ex de,hl ex de,hl
@ -1524,30 +1276,39 @@ Load_Resources:
pop af pop af
ld c,Dss.Close ld c,Dss.Close
rst ToDSS rst ToDSS
/*
ld hl,MONSTR_TABLE_file
ld a,1
ld c,Dss.Open
rst ToDSS
push af
LD HL,MONSTR_TABLE ;  ¤à¥á ¢ ¯ ¬ï⨠; ld hl,MONSTR_TABLE_file
LD DE,MONSTR_TABLE_SIZE ; ª®«¨ç¥á⢮ ç¨â ¥¬ëå ¡ ©â ; ld a,1
LD C,Dss.Read ; ld c,Dss.Open
rst ToDSS ; rst ToDSS
; push af
pop af ; LD HL,MONSTR_TABLE ;  ¤à¥á ¢ ¯ ¬ïâ¨
ld c,Dss.Close ; LD DE,MONSTR_TABLE_SIZE ; ª®«¨ç¥á⢮ ç¨â ¥¬ëå ¡ ©â
rst ToDSS ; LD C,Dss.Read
*/ ; rst ToDSS
di
; pop af
; ld c,Dss.Close
; rst ToDSS
;di
;------------------------------ ;------------------------------
.MemPatch_SavePage equ $+1 .SavePage+1:
ld a,0 ld a,0
out (SLOT3),a out (SLOT3),a
;
LD HL,CURRENT_DIR
LD C,Dss.CurDir
RST ToDSS
;
LD C,Dss.CurDisk
RST ToDSS
LD (INIT_HDD_WORK.currentDisk),A
;
RET RET
Temp_Buffer: BLOCK 256,#FF ;Temp_Buffer: BLOCK 256,#FF
TABLE_X_file: db 'table_x.tbl',0 TABLE_X_file: db 'table_x.tbl',0
;MONSTR_TABLE_file: db 'monsters.tbl',0 ;MONSTR_TABLE_file: db 'monsters.tbl',0
@ -1900,24 +1661,24 @@ MONSTR_POS:
ALIGN 2,0 ALIGN 2,0
; ;
TABLES_START: TABLES_START:
X_COORD: DW 090*256 X_COORD: DW 90*256
Y_COORD: DW 090*256 Y_COORD: DW 90*256
ANGLE_A: DW -160*32+0C000h ANGLE_A: DW -160*32+#C000
ANGLE_R: DW 0 ANGLE_R: DW 0
X_SPEED: DW 300H X_SPEED: DW #300
Y_SPEED: DW 302H Y_SPEED: DW #302
A_SPEED: DW 200H A_SPEED: DW #200
TABLE_TRACE: DS 33 ; â ¡«¨æ  âà áá¨à®¢ª¨/¡ ­ª¨ â ¡«¨æë TABLE_TRACE: BLOCK 33,0 ; â ¡«¨æ  âà áá¨à®¢ª¨/¡ ­ª¨ â ¡«¨æë
TABLE_WALL: DS 33 TABLE_WALL: BLOCK 33,0
DS TABLES_START+#74-$ ;<E2809A><E282AC>ˆ<E2809A>ˆ ; BLOCK TABLES_START+#74-$,0 ;<E2809A><E282AC>ˆ<E2809A>ˆ
NAMES: DB 6,1
LAST_KEY: DB 0 LAST_KEY: DB 0
NAMES: DB 6,1
DS TABLES_START+#7C-$ ;<E2809A><E282AC>ˆ<E2809A>ˆ ; BLOCK TABLES_START+#7C-$,0 ;<E2809A><E282AC>ˆ<E2809A>ˆ
NAME1: DB "_1X62 CBL " NAME1: DB "_1X62 CBL "
NAME2: DB "2NDREAL3CBL " NAME2: DB "2NDREAL3CBL "
@ -1945,13 +1706,16 @@ NAME9: DB "_ENI511CCBL "
; ENDIF ; ENDIF
; ;
OUTEND ; ª®­¥æ ä ©«  doom2.exe OUTEND ; ª®­¥æ ä ©«  doom2.exe
DIR_NAME_11: BLOCK 11,0
CURRENT_DIR: BLOCK 257,0
Temp_Buffer EQU $
; ;
; ;
DISPLAY "DOOM2.EXE starts - ",/H,BEGIN DISPLAY "DOOM2.EXE starts - ",/H,BEGIN
DISPLAY "DOOM2.EXE ends - ",/H,$ DISPLAY "DOOM2.EXE ends - ",/H,$
DISPLAY "DOOM2.EXE size - ",/H,$-BEGIN DISPLAY "DOOM2.EXE size - ",/H,$-BEGIN
FRAM_PROG_1000H: ;FRAM_PROG_1000H:
include 'D2_FRAM.asm' include 'D2_FRAM.asm'
; ;
END END

431
Music_4x.asm Normal file
View File

@ -0,0 +1,431 @@
;-----------------------------------------------------------------------
;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------;
INIT_HDD_WORK:
IFN YesSound
RET
ENDIF
.currentDisk+1: ;
LD A,0
OR #80
LD HL,Temp_Buffer
LD BC,Dss.DskInfo
RST ToDSS
;
LD B,4 ;!HARDCODE ­®¬¥à ­ã¦­®£® ¯ à ¬¥âà 
LD DE,0
LD HL,Temp_Buffer
.loop_param: ADD HL,DE
LD E,(HL)
INC HL
DJNZ .loop_param
LD A,(HL)
AND #80
JR Z,.no_change_Disk
CP #90
JR NC,.no_change_Disk
;
LD A,3
AND (HL)
LD D,A
INC HL
LD A,(HL)
RLCA
RLCA
;
OR D
AND #0F
JR .start
;
.no_change_Disk:;
XOR A
.start: LD C,BIOS.HDD_PART ; IDE-1/IDE-2
RST ToBIOS
;
.loop: LD C,BIOS.HDD_INIT
RST ToBIOS
JR C,.loop
;
CALL BPB_SetUp
;-----------------------------------------------------------------------
IN A,(SLOT3)
PUSH AF
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,SYS_PAGE.MSD_FAT_SEC
LD DE,MSD_DATS
LD BC,16
LDIR
POP AF
OUT (SLOT3),A
;!TODO music and dirs
; ¯ àᨬ áâப㠯ãâ¨
; LD HL,CURRENT_DIR+1
; LD DE,DIR_NAME_11
; PUSH DE
; PUSH HL
; LD BC,1*256 + Dss.DosName
; RST ToDSS
;-----[ç¨â âì ᥪâ®àë á ¢¨­ç¥áâ¥à ]-----
READ_DIR:
LD HL,#C000 ;  ¤à¥á ¡ãä¥à  ¤ ­­ëå
LD DE,(MSD_DATS+4) ; CAT TABLE.  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì
LD IX,(MSD_DATS+6) ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì
LD B,32 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
CatPage+1:
LD A,15 ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ #C000
LD C,BIOS.HDD_READ
RST ToBIOS ; § £à㧨âì CAT
RET
;---------------------------------------
MSD_DATS: WORD 0,0,0,0,0,0,0,0
SND_SEC1: DW 12525 ; ­ ç «ì­ë© ᥪâ®à
SND_SEC2: DW 0
SND_L1: DW #1720 ; ¤«¨­ 
SND_L2: DW 0
SND_S1: DW 12525 ; ⥪ã訩 ᥪâ®à
SND_S2: DW 0
SND_C1: DW #1720 ; ®áâ â®ª ¤® ª®­æ 
SND_C2: DW 0
SET_SND_FILE:
IFN YesSound
ret
ENDIF
CALL OPEN_FILE
RET C
LD (SND_SEC1),IX ; ᥪâ®à ¬ã§ëª¨!!!
LD (SND_SEC2),HL
LD HL,(FILE_DATA+2)
LD DE,(FILE_DATA+4)
AND A
RR D
RR E
RR H
LD L,H
LD H,E
LD E,D
LD D,0
LD (SND_L1),HL ; ¤«¨­  ¢ ᥪâ®à å
LD (SND_L2),DE ; ¤«¨­  ¢ ᥪâ®à å
AND A
RET
SWITCH_SND:
NAME_S+1: LD DE,NAME1
CALL SET_SND_FILE
JR C,SWITCH_X
LD HL,(NAME_S)
LD BC,16
ADD HL,BC
LD (NAME_S),HL
RET
SWITCH_X:
LD HL,NAME1
LD (NAME_S),HL
JR SWITCH_SND
FILE_DATA:
DW 0 ; ­ ç «ì­ë© ª« áâ¥à
DW 0,0 ; ¤«¨­  ä ©« 
DW 0 ; ⥪ã騩 ª« áâ¥à
DW 0,0 ; ⥪ã饥 ¯®«®¦¥­¨¥ ¢ ä ©«¥
DW 0 ; ⥪ã騩 ­®¬¥à ᥪâ®à  ¢ ª« áâ¥à¥
;
OPEN_FILE: ; DE - name
CALL FIND_FILE
RET C
LD C,SLOT3
IN B,(C)
PUSH BC
LD A,(CatPage)
OUT (C),A
LD BC,26
ADD HL,BC
LD DE,FILE_DATA
LD BC,6
LDIR
POP BC
OUT (C),B
LD HL,(FILE_DATA)
LD (FILE_DATA+6),HL
LD HL,0
LD (FILE_DATA+8),HL
LD (FILE_DATA+10),HL
LD (FILE_DATA+12),HL
LD IX,(FILE_DATA) ; ­®¬¥à ¯¥à¢®£® ª« áâ¥à 
DEC IX
DEC IX ; -2 !!!
LD HL,0
SCF
LD DE,(MSD_DATS+13) ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
RR D
RR E
SEC_MUL:
RR D
RR E
JR C,SECT_X
ADD IX,IX
ADC HL,HL
JR SEC_MUL
SECT_X:
LD DE,(MSD_DATS+8)
ADD IX,DE
LD DE,(MSD_DATS+10)
ADC HL,DE ; HL:IX - ­®¬¥à ¯¥à¢®£® ᥪâ®à  ä ©« 
AND A
RET
;
;DE - name - 11 ᨬ¢®«®¢
FIND_FILE:
;
LD C,SLOT3
IN B,(C)
PUSH BC
LD A,(CatPage)
OUT (C),A
LD HL,#C000
NEXT_LOOP:
LD B,11
PUSH DE
NAME_LOOP:
LD A,(DE)
CP (HL)
JR NZ,NEXT_NAME
INC HL
INC DE
DJNZ NAME_LOOP
POP DE
LD A,L
AND #E0
LD L,A
POP BC
OUT (C),B
AND A
RET ; HL - ¤ ­­ë¥ ä ©«  ¢ áâà ­¨æ¥ 6
NEXT_NAME:
POP DE
LD A,L
AND #E0
LD L,A
LD BC,#20
ADD HL,BC
LD A,(HL)
AND A
JR Z,END_CAT
LD A,H
AND A
JR NZ,NEXT_LOOP
END_CAT:
POP BC
OUT (C),B
SCF
RET
HDD_FN:
EX AF,AF'
IN A,(FastRAM.OFF)
IN A,(SLOT1)
PUSH AF
IN A,(SLOT3)
PUSH AF
LD A,5 ;!FIXIT
OUT (SLOT1),A
DOOM2_SndPage+1:
LD A,0
OUT (SLOT3),A
IN A,(PORT_Y)
PUSH AF
EX AF,AF'
RST ToBIOS ; ç¨â âì ᥪâ®à  á ¢¨­ç¥áâ¥à , äã­ªæ¨ï #45
;DI
POP AF
OUT (PORT_Y),A
POP AF
OUT (SLOT3),A
POP AF
OUT (SLOT1),A
IN A,(FastRAM.ON) ; ¢ª«îç ¥¬ ªíè
RET
;
;
BPB_SetUp:
LD A,SYS_PAGE
LD HL,SYS_PAGE.MS_BPB
LD C,BIOS.HDD_READ_BPB
RST ToBIOS
.PARAMS:
DI
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.MS_BPB+FORM_CODE)
CP #F0
JP C,.ERROR_BPB
LD HL,SYS_PAGE.MS_BPB+FAT_ID
LD DE,.FAT1_MSG
LD B,4
.L1: LD A,(DE)
CP ' '
JR NZ,.L11
INC DE
JR .L1
.L11: CP (HL)
JR NZ,.PC_DOS
INC HL
INC DE
DJNZ .L1
LD A,(HL)
CP '6'
LD HL,#81FF ; FAT16 ä« £
JR Z,.FAT
CP '2'
JP NZ,.ERROR_BPB
.PC_DOS:
LD HL,#01FF ; FAT12 ä« £
.FAT: LD (SYS_PAGE.FAT_FLAG),HL
LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
LD (SYS_PAGE.MSD_SECS),A
BIT 7,H
LD IX,0
LD HL,0 ; ¢ëç¨á«¨âì ­ ç «ì­ë© ᥪâ®à FAT
JR Z,.NO_LD_SPECIAL
LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
.NO_LD_SPECIAL:
LD BC,0
LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
ADD IX,DE
ADC HL,BC
LD (SYS_PAGE.MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT
LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT
LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
LD BC,0
LD A,(SYS_PAGE.MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
.NEXT_ADD:
ADD IX,DE
ADC HL,BC
DEC A
JR NZ,.NEXT_ADD
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
RL C
RL B
RL C
RL B
RL C
RL B
LD C,B
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
LD A,C
LD (SYS_PAGE.F_P_S),A
LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
EX DE,HL
DEC HL
XOR A
.NEXT_ADD2:
INC A
JR Z,.ERROR_BPB
SBC HL,BC
JR NC,.NEXT_ADD2
EX DE,HL
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
LD D,0
LD BC,0
LD (SYS_PAGE.S_P_C),A
ADD IX,DE ; <20> ç «® DATA area
ADC HL,BC
LD (SYS_PAGE.MSD_DAT_SEC),IX
LD (SYS_PAGE.MSD_DAT_SEC2),HL
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
LD HL,0
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
LD D,A
LD A,0
.NEXT_ADD3:
ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à 
ADC A,0
DEC D
JR NZ,.NEXT_ADD3
LD (SYS_PAGE.CLASTER_LEN),HL
LD B,0
LD C,A
LD (SYS_PAGE.CLASTER_LEN2),BC
LD HL,0
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
LD A,(SYS_PAGE.MS_BPB+H_P_S)
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
ADD HL,BC
DEC A
JR NZ,.BPB_L1
LD (SYS_PAGE.S_X_H),HL
;
EX AF,AF'
OUT (SLOT3),A
EI
AND A
RET
.ERROR_BPB:
EX AF,AF'
OUT (SLOT3),A
SCF
EI
RET
;
.FAT1_MSG:
DB 'FAT1'

@ -1 +1 @@
Subproject commit b5606d6db7c0eecf2e3b3da53040af2432a40569 Subproject commit f74ae7e760de5541ee4966d509442c6421225c3b