mirror of
https://github.com/Tolik-Trek/DOOM2.git
synced 2026-06-15 09:01:34 +03:00
Release 25/06/2025
This commit is contained in:
commit
26c9f72b31
422
D2_FRAM.asm
422
D2_FRAM.asm
@ -15,9 +15,7 @@ SND_READ_SECTORS EQU 4
|
|||||||
|
|
||||||
Module__D2_FRAM__Start EQU $
|
Module__D2_FRAM__Start EQU $
|
||||||
;
|
;
|
||||||
TRACE:
|
TRACE: IN A,(SLOT1)
|
||||||
|
|
||||||
IN A,(SLOT1)
|
|
||||||
LD (TRACE_RET_SLOT1),A
|
LD (TRACE_RET_SLOT1),A
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
LD (TRACE_RET_SLOT3),A
|
LD (TRACE_RET_SLOT3),A
|
||||||
@ -47,21 +45,21 @@ TRACE:
|
|||||||
NO_SKY_2:
|
NO_SKY_2:
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
|
|
||||||
LD A,0 ;????????? ¥ 㦮?
|
;LD A,0 ;????????? ¥ 㦮?
|
||||||
LD C,80
|
LD C,80
|
||||||
SKY_LOOP_1:
|
SKY_LOOP_1:
|
||||||
|
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
LD B,0
|
LD A,0
|
||||||
ACC_CopyBlock
|
ACC_CopyBlock
|
||||||
LD B,(HL)
|
LD B,(HL)
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
LD B,#80
|
LD B,#80
|
||||||
ACC_Off
|
ACC_Off
|
||||||
|
|
||||||
XOR A
|
;XOR A
|
||||||
|
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
ACC_CopyScreenBlock
|
ACC_CopyScreenBlock
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
@ -69,14 +67,14 @@ SKY_LOOP_1:
|
|||||||
INC DE
|
INC DE
|
||||||
INC DE
|
INC DE
|
||||||
|
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
ACC_CopyScreenBlock
|
ACC_CopyScreenBlock
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
|
|
||||||
DEC DE
|
DEC DE
|
||||||
|
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
ACC_CopyScreenBlock
|
ACC_CopyScreenBlock
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
@ -84,7 +82,7 @@ SKY_LOOP_1:
|
|||||||
INC DE
|
INC DE
|
||||||
INC DE
|
INC DE
|
||||||
|
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
ACC_CopyScreenBlock
|
ACC_CopyScreenBlock
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
@ -98,11 +96,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,20 +112,17 @@ 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 EQU $+1
|
SCREEN_1+1:
|
||||||
LD DE,#C040 ; ç «® íªà
|
LD DE,ScreenStartAddress ; ç «® íªà
|
||||||
LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!!
|
LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
|
ANGLE_M+1:
|
||||||
LD HL,0 ; ç «ìë© ã£®« * 32
|
LD HL,0 ; ç «ìë© ã£®« * 32
|
||||||
ANGLE_M EQU $-2
|
|
||||||
;
|
;
|
||||||
LD A,H
|
LD A,H
|
||||||
RLCA
|
RLCA
|
||||||
@ -155,18 +146,17 @@ 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
|
||||||
LD (CONT_PAGE),A
|
LD (CONT_PAGE),A
|
||||||
; JR TRACE_LOOP
|
; JR TRACE_LOOP
|
||||||
|
|
||||||
TRACE_LOOP:
|
TRACE_LOOP:
|
||||||
LD A,#50
|
LD A,#50
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
XOR A
|
XOR A
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
REPT 16
|
REPT 16
|
||||||
LD E,(HL) ; ¯¥à¢ë© ¨ ¤ «¥¥ á«¥¤ãî騩 ªã¡¨ª
|
LD E,(HL) ; ¯¥à¢ë© ¨ ¤ «¥¥ á«¥¤ãî騩 ªã¡¨ª
|
||||||
@ -177,20 +167,19 @@ TRACE_LOOP:
|
|||||||
ENDR
|
ENDR
|
||||||
|
|
||||||
PURE_LINE:
|
PURE_LINE:
|
||||||
;
|
|
||||||
EXX
|
EXX
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
LD A,#80 ; ¯ãáâ ï á⥪
|
LD A,#80 ; ¯ãáâ ï á⥪
|
||||||
ACC_Off
|
ACC_Off
|
||||||
; LD (DE),A ; LINE-Z-bufer
|
;LD (DE),A ; LINE-Z-Buffer
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
;
|
||||||
LD A,(COLOR_LO)
|
LD A,(COLOR_LO)
|
||||||
|
;
|
||||||
ACC_FillScreenOneByte
|
ACC_FillScreenOneByte
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
LD A,#70 ; Z-bufer
|
LD A,#70 ; Z-Buffer
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
@ -203,8 +192,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
|
||||||
@ -231,9 +219,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
|
||||||
;
|
;
|
||||||
@ -259,10 +245,10 @@ PLACE_L2 EQU $-1
|
|||||||
|
|
||||||
; <64 â®çª¨, ¢¥áì íªà
|
; <64 â®çª¨, ¢¥áì íªà
|
||||||
XOR A
|
XOR A
|
||||||
OUT (RGADR),A ; á á ¬®£® ç «
|
OUT (PORT_Y),A ; á á ¬®£® ç «
|
||||||
|
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
LD (DE),A ; 256 ¡ ©â ˆ LINE-Z-bufer!!!!
|
LD (DE),A ; 256 ¡ ©â ˆ LINE-Z-Buffer!!!!
|
||||||
ACC_Off
|
ACC_Off
|
||||||
LD A,#58
|
LD A,#58
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -270,7 +256,7 @@ PLACE_L2 EQU $-1
|
|||||||
LD (DE),A ; ”ˆƒ€Š‘ ¢áî «¨¨î!!!
|
LD (DE),A ; ”ˆƒ€Š‘ ¢áî «¨¨î!!!
|
||||||
ACC_Off
|
ACC_Off
|
||||||
XOR A
|
XOR A
|
||||||
LD (DE),A ; LINE-Z-bufer!!!!
|
LD (DE),A ; LINE-Z-Buffer!!!!
|
||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
JR NEXT_ANGLE
|
JR NEXT_ANGLE
|
||||||
@ -278,10 +264,10 @@ PLACE_L2 EQU $-1
|
|||||||
HIGH_1:
|
HIGH_1:
|
||||||
; A - ¢ëá®â , á ª®â®à®© à¨áã¥âáï á⥪
|
; A - ¢ëá®â , á ª®â®à®© à¨áã¥âáï á⥪
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
LD (DE),A ; ç¨á«® â®ç¥ª ¯®â®«ª ¨ ¯®« ! & LINE-Z-bufer
|
LD (DE),A ; ç¨á«® â®ç¥ª ¯®â®«ª ¨ ¯®« ! & LINE-Z-Buffer
|
||||||
ACC_Off
|
ACC_Off
|
||||||
NEG ; ¯®«ãç¨âì ¯®«®¦¥¨¥ ç « ¯®«
|
NEG ; ¯®«ãç¨âì ¯®«®¦¥¨¥ ç « ¯®«
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
LD L,A
|
LD L,A
|
||||||
|
|
||||||
LD A,#58
|
LD A,#58
|
||||||
@ -290,8 +276,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 ; à¨á®¢ âì ¯®«
|
||||||
@ -305,15 +290,15 @@ COLOR_LO EQU $-1
|
|||||||
|
|
||||||
LD A,L
|
LD A,L
|
||||||
NEG
|
NEG
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
LD A,L
|
LD A,L
|
||||||
; IN A,(RGADR)
|
; IN A,(PORT_Y)
|
||||||
ADD A,A
|
ADD A,A
|
||||||
; 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
|
||||||
@ -333,8 +318,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
|
||||||
|
|
||||||
@ -344,13 +328,7 @@ CONT_PAGE EQU $-1
|
|||||||
LD L,A
|
LD L,A
|
||||||
JP NZ,TRACE_LOOP
|
JP NZ,TRACE_LOOP
|
||||||
|
|
||||||
; CALL SOUND ; ¨£à âì ¬ã§ëªã ª®¢®ªá¡« áâ¥à¥!!!
|
CALL SOUND ; ¨£à âì ¬ã§ëªã ª®¢®ªá¡« áâ¥à¥!!!
|
||||||
|
|
||||||
IF YesSound
|
|
||||||
CALL SOUND
|
|
||||||
; ELSE
|
|
||||||
; CALL YesSoundZero
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
INC H
|
INC H
|
||||||
BIT 7,H
|
BIT 7,H
|
||||||
@ -359,8 +337,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
|
||||||
@ -391,17 +368,15 @@ 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
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
;***************************************
|
;***************************************
|
||||||
@ -463,9 +438,8 @@ NO_CORN1:
|
|||||||
;
|
;
|
||||||
;***************************************
|
;***************************************
|
||||||
;
|
;
|
||||||
SET_PICTURE:
|
|
||||||
; A - ®â®á¨â¥«ìë© ®¬¥à áâà ¨æë
|
; A - ®â®á¨â¥«ìë© ®¬¥à áâà ¨æë
|
||||||
|
SET_PICTURE:
|
||||||
LD C,SLOT1
|
LD C,SLOT1
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
PUSH BC
|
PUSH BC
|
||||||
@ -476,14 +450,10 @@ 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),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 +461,7 @@ SET_PICTURE:
|
|||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
LD A,0 ; ¯® 256 ¡ ©â
|
LD A,0 ; ¯® 256 ¡ ©â
|
||||||
ACC_Off
|
ACC_Off
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
POP AF
|
POP AF
|
||||||
|
|
||||||
@ -522,11 +492,7 @@ LOOP_PG:
|
|||||||
|
|
||||||
POP BC
|
POP BC
|
||||||
|
|
||||||
IF YesSound
|
|
||||||
CALL SOUND
|
CALL SOUND
|
||||||
; ELSE
|
|
||||||
; CALL YesSoundZero
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
DJNZ PIC_LOOP
|
DJNZ PIC_LOOP
|
||||||
|
|
||||||
@ -703,7 +669,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)
|
||||||
@ -722,10 +688,9 @@ 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 (RGADR),A
|
OUT (PORT_Y),A
|
||||||
;
|
;
|
||||||
;------[®¯â¨¬¨§¨à®¢ âì?]----------------
|
;------[®¯â¨¬¨§¨à®¢ âì?]----------------
|
||||||
OUT (C),C ; Œ€‘˜’€<E28099> 1:1, ç¨ âì á 0
|
OUT (C),C ; Œ€‘˜’€<E28099> 1:1, ç¨ âì á 0
|
||||||
@ -788,7 +753,7 @@ MAP_LOOP_2:
|
|||||||
LD BC,#0100
|
LD BC,#0100
|
||||||
OUT (C),C ; Œ€‘˜’€<E28099> 1:1
|
OUT (C),C ; Œ€‘˜’€<E28099> 1:1
|
||||||
|
|
||||||
IF NORM_ACC
|
; IF NORM_ACC
|
||||||
LD B,16
|
LD B,16
|
||||||
LD A,184
|
LD A,184
|
||||||
|
|
||||||
@ -805,7 +770,7 @@ MAP_LOOP_1:
|
|||||||
INC H
|
INC H
|
||||||
|
|
||||||
REPT 4
|
REPT 4
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
ACC_CopyBlock
|
ACC_CopyBlock
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
@ -814,55 +779,55 @@ MAP_LOOP_1:
|
|||||||
|
|
||||||
DJNZ MAP_LOOP_1
|
DJNZ MAP_LOOP_1
|
||||||
|
|
||||||
ELSE
|
; ELSE
|
||||||
|
|
||||||
LD B,16
|
; LD B,16
|
||||||
LD A,184
|
; LD A,184
|
||||||
|
|
||||||
MAP_LOOP_1:
|
; MAP_LOOP_1:
|
||||||
|
|
||||||
ACC_SetBlockSize
|
; ACC_SetBlockSize
|
||||||
LD C,#40
|
; LD C,#40
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD C,(HL)
|
; LD C,(HL)
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
|
|
||||||
OUT (RGADR),A
|
; OUT (PORT_Y),A
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD (DE),A
|
; LD (DE),A
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
INC A
|
; INC A
|
||||||
LD L,64
|
; LD L,64
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD C,(HL)
|
; LD C,(HL)
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
OUT (RGADR),A
|
; OUT (PORT_Y),A
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD (DE),A
|
; LD (DE),A
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
INC A
|
; INC A
|
||||||
LD L,64*2
|
; LD L,64*2
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD C,(HL)
|
; LD C,(HL)
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
OUT (RGADR),A
|
; OUT (PORT_Y),A
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD (DE),A
|
; LD (DE),A
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
INC A
|
; INC A
|
||||||
LD L,64*3
|
; LD L,64*3
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD C,(HL)
|
; LD C,(HL)
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
OUT (RGADR),A
|
; OUT (PORT_Y),A
|
||||||
ACC_CopyBlock
|
; ACC_CopyBlock
|
||||||
LD (DE),A
|
; LD (DE),A
|
||||||
ACC_Off
|
; ACC_Off
|
||||||
INC A
|
; INC A
|
||||||
INC H
|
; INC H
|
||||||
LD L,0
|
; LD L,0
|
||||||
DJNZ MAP_LOOP_1
|
; DJNZ MAP_LOOP_1
|
||||||
ENDIF
|
; ENDIF
|
||||||
|
|
||||||
LD BC,240
|
LD BC,240
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -873,8 +838,8 @@ MAP_LOOP_1:
|
|||||||
CP #50
|
CP #50
|
||||||
JR Z,MAP_LOOP_2
|
JR Z,MAP_LOOP_2
|
||||||
|
|
||||||
LD A,0
|
XOR A
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
POP AF
|
POP AF
|
||||||
POP HL
|
POP HL
|
||||||
@ -889,26 +854,22 @@ 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,(RGADR)
|
IN A,(PORT_Y)
|
||||||
LD (RGADR_RET1),A
|
LD (WALL_PORT_Y_RET),A
|
||||||
LD A,#58
|
LD A,#5C
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,(IX+0) ; áâà ¨æ á⥪¨
|
LD A,(IX+0) ; áâà ¨æ á⥪¨
|
||||||
@ -916,7 +877,7 @@ WALL:
|
|||||||
|
|
||||||
EXX
|
EXX
|
||||||
LD C,0 ; ¯®àâ ¬ áèâ ¡
|
LD C,0 ; ¯®àâ ¬ áèâ ¡
|
||||||
|
;
|
||||||
LD H,TABLE_X/256 ; â ¡«¨æ ¢ëá®â ¨ ª®í䍿¨¥â®¢ ¬ áèâ ¡¨à®¢ ¨ï
|
LD H,TABLE_X/256 ; â ¡«¨æ ¢ëá®â ¨ ª®í䍿¨¥â®¢ ¬ áèâ ¡¨à®¢ ¨ï
|
||||||
LD L,(IX+3) ; ¯®«®¦¥¨¥ ¯® Y / ®¯à¥¤¥«ï¥â ¢ëá®âã
|
LD L,(IX+3) ; ¯®«®¦¥¨¥ ¯® Y / ®¯à¥¤¥«ï¥â ¢ëá®âã
|
||||||
LD A,(HL) ; ¬ áèâ ¡ - LOW
|
LD A,(HL) ; ¬ áèâ ¡ - LOW
|
||||||
@ -926,17 +887,16 @@ WALL:
|
|||||||
LD A,(HL) ; ¬ áèâ ¡ - HIGH
|
LD A,(HL) ; ¬ áèâ ¡ - HIGH
|
||||||
LD (X_ADD2),A
|
LD (X_ADD2),A
|
||||||
DEC H
|
DEC H
|
||||||
|
;
|
||||||
LD A,L
|
LD A,L
|
||||||
ADD A,A
|
ADD A,A
|
||||||
NEG ; è¨à¨ ¯® £®à¨§®â «¨
|
NEG ; è¨à¨ ¯® £®à¨§®â «¨
|
||||||
|
;
|
||||||
BIT 0,(IX+M_VAR3)
|
BIT 0,(IX+M_VAR3)
|
||||||
JR Z,NO_DEL2
|
JR Z,NO_DEL2
|
||||||
RRA
|
RRA
|
||||||
AND #7F
|
AND #7F
|
||||||
NO_DEL2:
|
NO_DEL2: BIT 1,(IX+M_VAR3)
|
||||||
BIT 1,(IX+M_VAR3)
|
|
||||||
JR Z,NO_DEL4
|
JR Z,NO_DEL4
|
||||||
AND A
|
AND A
|
||||||
RRA
|
RRA
|
||||||
@ -965,7 +925,7 @@ NO_DEL4:
|
|||||||
; ; ¢ A ᪮«ìª® «¨¨© ¤® ç « íªà
|
; ; ¢ A ᪮«ìª® «¨¨© ¤® ç « íªà
|
||||||
;WALL_NO_SCF:
|
;WALL_NO_SCF:
|
||||||
;
|
;
|
||||||
; LD HL,140h
|
; LD HL,#0140
|
||||||
; AND A
|
; AND A
|
||||||
; SBC HL,DE
|
; SBC HL,DE
|
||||||
; LD A,L ; ¢ A - ᪮«ìª® «¨¨© ®áâ «®áì ¤® ª®æ íªà ??
|
; LD A,L ; ¢ A - ᪮«ìª® «¨¨© ®áâ «®áì ¤® ª®æ íªà ??
|
||||||
@ -982,6 +942,7 @@ NO_DEL4:
|
|||||||
; LD E,A
|
; LD E,A
|
||||||
LD D,0
|
LD D,0
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
|
;!FIXIT ¯®á«¥ ¢ëç¨â ¨ï ¢ HL ¤à¥á ¯® ª®â®à®¬ã ¡ã¤¥â § ¯¨áì ¡«®ª , ¬®¦¥â § «¥§ âì èà¨äâë
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
|
|
||||||
LD H,(IX+2) ; áâ à訩 ¤à¥á á⥪¨
|
LD H,(IX+2) ; áâ à訩 ¤à¥á á⥪¨
|
||||||
@ -992,15 +953,16 @@ NO_DEL4:
|
|||||||
WOLL_LOOP:
|
WOLL_LOOP:
|
||||||
|
|
||||||
XOR A
|
XOR A
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
LD A,D
|
LD A,D
|
||||||
|
;!FIXIT âã⠯஢¥àª áâ à訩 ¤à¥á, ® èà¨äâ ¬ íâ® ¥ ¯®¬®¦¥â
|
||||||
CP #C3
|
CP #C3
|
||||||
JR NC,NO_WRITE_ALL ; ¥ ¢ë¢®¤¨âì § íªà ¨ § ª®ç¨âì
|
JR NC,NO_WRITE_ALL ; ¥ ¢ë¢®¤¨âì § íªà ¨ § ª®ç¨âì
|
||||||
CP #C0
|
CP #C0
|
||||||
JR C,NO_WRITE_LINE ; ¥ ¢ë¢®¤¨âì § íªà
|
JR C,NO_WRITE_LINE ; ¥ ¢ë¢®¤¨âì § íªà
|
||||||
|
;!FIXIT âãâ ¬®¦¥â ç¨â âìáï ¨§ ®¡« á⨠èà¨ä⮢
|
||||||
LD A,(DE) ; Z-bufer!!!
|
LD A,(DE) ; ç⥨¥ ¨§ Z-Buffer
|
||||||
EXX
|
EXX
|
||||||
CP L
|
CP L
|
||||||
EXX
|
EXX
|
||||||
@ -1043,8 +1005,8 @@ NO_Z_A1:
|
|||||||
JR Z,NO_Z_A
|
JR Z,NO_Z_A
|
||||||
XOR A
|
XOR A
|
||||||
NO_Z_A:
|
NO_Z_A:
|
||||||
OUT (RGADR),A ; § ¤ âì ¯®àâ Y
|
OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y
|
||||||
|
;!FIXIT âãâ ¬®¦¥â ¯¨á âìáï ¢ ®¡« áâì èà¨ä⮢
|
||||||
ACC_CopyScreenBlock
|
ACC_CopyScreenBlock
|
||||||
LD (DE),A ; ¢ë¢¥á⨠«¨¨î
|
LD (DE),A ; ¢ë¢¥á⨠«¨¨î
|
||||||
ACC_Off
|
ACC_Off
|
||||||
@ -1052,21 +1014,17 @@ 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
|
||||||
|
|
||||||
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
|
||||||
@ -1075,13 +1033,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 (RGADR),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
|
||||||
@ -1172,11 +1130,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
|
||||||
|
|
||||||
@ -1204,9 +1158,7 @@ MAP_L6:
|
|||||||
POP HL
|
POP HL
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
|
||||||
IF YesSound
|
|
||||||
CALL SOUND
|
CALL SOUND
|
||||||
ENDIF
|
|
||||||
|
|
||||||
LD C,16
|
LD C,16
|
||||||
|
|
||||||
@ -1219,7 +1171,7 @@ MAP_L8:
|
|||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
LD A,L
|
LD A,L
|
||||||
SUB 40H
|
SUB #40
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,H
|
LD A,H
|
||||||
SBC A,0
|
SBC A,0
|
||||||
@ -1307,7 +1259,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
|
||||||
@ -1320,7 +1274,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
|
||||||
@ -1331,7 +1285,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
|
||||||
@ -1354,36 +1308,29 @@ 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)
|
||||||
LD E,A
|
LD E,A
|
||||||
|
|
||||||
JR SND_INIT1
|
JR SND_INIT1
|
||||||
ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
SOUND:
|
SOUND:
|
||||||
IF !YesSound
|
SoundOnOff:
|
||||||
; PUSH AF
|
|
||||||
; CALL KBD_INT
|
|
||||||
; POP AF
|
|
||||||
RET
|
|
||||||
ENDIF
|
|
||||||
;
|
|
||||||
IF YesSound
|
|
||||||
MemPatch_SoundOnOff EQU $
|
|
||||||
NOP ; áî¤ ¢áâ ¢«ï¥âáï ª®¬ ¤ RET ¤«ï ®âª«îç¥¨ï §¢ãª ¨ NOP ¤«ï ¢ª«î票ï
|
NOP ; áî¤ ¢áâ ¢«ï¥âáï ª®¬ ¤ RET ¤«ï ®âª«îç¥¨ï §¢ãª ¨ NOP ¤«ï ¢ª«î票ï
|
||||||
|
SoundOnOff2:
|
||||||
|
NOP
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH HL
|
PUSH HL
|
||||||
SND_MORE:
|
SND_MORE:
|
||||||
|
|
||||||
CALL KBD_INT
|
CALL KBD_INT
|
||||||
|
|
||||||
IN A,(#FE)
|
IN A,(#FE)
|
||||||
;
|
;
|
||||||
|
COV_ADR+1:
|
||||||
XOR 0 ; covox ¤à¥á
|
XOR 0 ; covox ¤à¥á
|
||||||
COV_ADR EQU $-1
|
|
||||||
;
|
;
|
||||||
AND #80
|
AND #80
|
||||||
JP NZ,NO_LD_SND
|
JP NZ,NO_LD_SND
|
||||||
@ -1401,8 +1348,14 @@ COV_ADR EQU $-1
|
|||||||
|
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
LD E,A
|
LD E,A
|
||||||
MemPatch_D2_FRAM_SndPage EQU $+1
|
|
||||||
LD A,0
|
|
||||||
|
;!FIXIT DEBUG
|
||||||
|
; LD A,COLORS.CGA.BORDER.CYAN
|
||||||
|
; OUT (BorderColor),A
|
||||||
|
;
|
||||||
|
|
||||||
|
LD A,CBL.BUFFER_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
L_DDX:
|
L_DDX:
|
||||||
@ -1419,6 +1372,13 @@ L_DDX:
|
|||||||
DEC D
|
DEC D
|
||||||
JR NZ,L_DDX
|
JR NZ,L_DDX
|
||||||
|
|
||||||
|
|
||||||
|
;!FIXIT DEBUG
|
||||||
|
; LD A,COLORS.CGA.BORDER.BLACK
|
||||||
|
; OUT (BorderColor),A
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
LD (SND_A),HL
|
LD (SND_A),HL
|
||||||
|
|
||||||
LD A,H
|
LD A,H
|
||||||
@ -1426,7 +1386,6 @@ L_DDX:
|
|||||||
JP NZ,NO_SNDP
|
JP NZ,NO_SNDP
|
||||||
|
|
||||||
SND_INIT1:
|
SND_INIT1:
|
||||||
|
|
||||||
PUSH IX
|
PUSH IX
|
||||||
PUSH AF
|
PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -1473,7 +1432,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,CBL.BUFFER_PAGE ; áâà ¨æ ¡ãä¥à , ¥á«¨ ¤à¥á ¢ ®ª¥ #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 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
|
||||||
@ -1510,7 +1469,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
|
||||||
@ -1529,22 +1487,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
|
||||||
@ -1571,7 +1523,6 @@ EFF_LOOP:
|
|||||||
LD (EFF_),DE
|
LD (EFF_),DE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
|
|
||||||
RET
|
RET
|
||||||
;***************************************
|
;***************************************
|
||||||
|
|
||||||
@ -1582,7 +1533,7 @@ CLEAR_Z_BUFER:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,0
|
LD A,0
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
LD DE,(SCREEN_1)
|
LD DE,(SCREEN_1)
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
@ -1733,7 +1684,6 @@ TAB_ANGLE:
|
|||||||
DB -1 , 1
|
DB -1 , 1
|
||||||
DB -1 , 1
|
DB -1 , 1
|
||||||
DB 0 , 1 ; 0
|
DB 0 , 1 ; 0
|
||||||
|
|
||||||
TAB_ANGLE2:
|
TAB_ANGLE2:
|
||||||
DB 0 , 2 ; 0
|
DB 0 , 2 ; 0
|
||||||
DB 1 , 2 ; 22
|
DB 1 , 2 ; 22
|
||||||
@ -1751,12 +1701,9 @@ TAB_ANGLE2:
|
|||||||
DB -2 , 1
|
DB -2 , 1
|
||||||
DB -2 , 2
|
DB -2 , 2
|
||||||
DB -1 , 2 ; 0
|
DB -1 , 2 ; 0
|
||||||
|
|
||||||
TAB_ANGLE3:
|
TAB_ANGLE3:
|
||||||
|
|
||||||
DB 4 , 2 ; 67
|
DB 4 , 2 ; 67
|
||||||
DB 4 , 1 ; 67
|
DB 4 , 1 ; 67
|
||||||
|
|
||||||
DB 4 , 0 ; 90
|
DB 4 , 0 ; 90
|
||||||
DB 4 , -1 ; 112
|
DB 4 , -1 ; 112
|
||||||
DB 4 , -2 ; 135
|
DB 4 , -2 ; 135
|
||||||
@ -1765,7 +1712,6 @@ TAB_ANGLE3:
|
|||||||
DB 3 , -4 ; 157
|
DB 3 , -4 ; 157
|
||||||
DB 2 , -4 ; 157
|
DB 2 , -4 ; 157
|
||||||
DB 1 , -4 ; 157
|
DB 1 , -4 ; 157
|
||||||
|
|
||||||
DB 0 , -4 ; 180
|
DB 0 , -4 ; 180
|
||||||
DB -1 , -4
|
DB -1 , -4
|
||||||
DB -2 , -4
|
DB -2 , -4
|
||||||
@ -1774,7 +1720,6 @@ TAB_ANGLE3:
|
|||||||
DB -4 , -3
|
DB -4 , -3
|
||||||
DB -4 , -2
|
DB -4 , -2
|
||||||
DB -4 , -1
|
DB -4 , -1
|
||||||
|
|
||||||
DB -4 , 0
|
DB -4 , 0
|
||||||
DB -4 , 1
|
DB -4 , 1
|
||||||
DB -4 , 2
|
DB -4 , 2
|
||||||
@ -1783,7 +1728,6 @@ TAB_ANGLE3:
|
|||||||
DB -3 , 4 ; 0
|
DB -3 , 4 ; 0
|
||||||
DB -2 , 4 ; 0
|
DB -2 , 4 ; 0
|
||||||
DB -1 , 4 ; 0
|
DB -1 , 4 ; 0
|
||||||
|
|
||||||
DB 0 , 4 ; 0
|
DB 0 , 4 ; 0
|
||||||
DB 1 , 4 ; 0
|
DB 1 , 4 ; 0
|
||||||
DB 2 , 4 ; 22
|
DB 2 , 4 ; 22
|
||||||
@ -1869,7 +1813,6 @@ A_NO_ADD2:
|
|||||||
; H - Y-ª®®à¤¨ â
|
; H - Y-ª®®à¤¨ â
|
||||||
|
|
||||||
MONSTR_ALL1:
|
MONSTR_ALL1:
|
||||||
|
|
||||||
LD A,L
|
LD A,L
|
||||||
ADD A,A
|
ADD A,A
|
||||||
ADD A,A
|
ADD A,A
|
||||||
@ -1926,21 +1869,18 @@ MONST_H1:
|
|||||||
LD (IX+M_HOR),L ; 㣮«
|
LD (IX+M_HOR),L ; 㣮«
|
||||||
LD (IX+M_HOR+1),H
|
LD (IX+M_HOR+1),H
|
||||||
|
|
||||||
LD DE,128
|
; LD DE,128 ; € çñ¡ ¥ ã¯à®áâ¨âì â ª:
|
||||||
ADD HL,DE
|
; ADD HL,DE ; LD DE,256+320-128
|
||||||
|
; LD DE,256+320 ; SBC HL,DE
|
||||||
LD DE,256+320
|
; AND A ; ¨ ¢áñ... HL ¬®¦¥â ¯¥à¥¯®«ïâìáï ¯à¨ ADD 128? - ¥â
|
||||||
AND A
|
; SBC HL,DE ; ; ¯à®¢¥àª ¯®¯ ¤ ¨ï ¬®áâà ¢ 㣮« §à¥¨ï
|
||||||
|
LD DE,256+320-128
|
||||||
SBC HL,DE ; ¯à®¢¥àª ¯®¯ ¤ ¨ï ¬®áâà ¢ 㣮« §à¥¨ï
|
SBC HL,DE ; ¯à®¢¥àª ¯®¯ ¤ ¨ï ¬®áâà ¢ 㣮« §à¥¨ï
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
@ -1953,14 +1893,14 @@ MONSTR_NEXT_P:
|
|||||||
RET NZ
|
RET NZ
|
||||||
|
|
||||||
LD A,(IX+M_VAR2) ; áç¥â稪 横«
|
LD A,(IX+M_VAR2) ; áç¥â稪 横«
|
||||||
AND 0Fh
|
AND #0F
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
ADD A,(IX+M_VAR2) ; ¤®¡ ¢¨âì ¬« ¤è¨© ¡ ©â ª áâ à襬ã
|
ADD A,(IX+M_VAR2) ; ¤®¡ ¢¨âì ¬« ¤è¨© ¡ ©â ª áâ à襬ã
|
||||||
LD (IX+M_VAR2),A
|
LD (IX+M_VAR2),A
|
||||||
AND 0F0h
|
AND #F0
|
||||||
RET NZ ; ¢¥àãâìáï, ¥á«¨ ¥ 0
|
RET NZ ; ¢¥àãâìáï, ¥á«¨ ¥ 0
|
||||||
|
|
||||||
; JR NC,NO_ADD_MX
|
; JR NC,NO_ADD_MX
|
||||||
@ -2013,15 +1953,15 @@ CONT_MONS:
|
|||||||
|
|
||||||
LD A,(IX+M_ADR+1) ; ¯¥à¥ª«îç â¥«ì ¤à¥á
|
LD A,(IX+M_ADR+1) ; ¯¥à¥ª«îç â¥«ì ¤à¥á
|
||||||
ADD A,(IX+M_VAR4) ; ᪮«ìª® ¤®¡ ¢«ïâì
|
ADD A,(IX+M_VAR4) ; ᪮«ìª® ¤®¡ ¢«ïâì
|
||||||
AND 3Fh
|
AND #3F
|
||||||
OR 40h
|
OR #40
|
||||||
LD (IX+M_ADR+1),A
|
LD (IX+M_ADR+1),A
|
||||||
CP 40h ; ¯à¨§ ª § ¢¥àè¥¨ï æ¨ª«
|
CP #40 ; ¯à¨§ ª § ¢¥àè¥¨ï æ¨ª«
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SW_MONS:
|
SW_MONS:
|
||||||
LD A,(IX+M_ADR) ; ¯¥à¥ª«îç â¥«ì ¤à¥á
|
LD A,(IX+M_ADR) ; ¯¥à¥ª«îç â¥«ì ¤à¥á
|
||||||
ADD A,40H
|
ADD A,#40
|
||||||
LD (IX+M_ADR),A
|
LD (IX+M_ADR),A
|
||||||
AND A ; ¯à¨§ ª § ¢¥àè¥¨ï æ¨ª«
|
AND A ; ¯à¨§ ª § ¢¥àè¥¨ï æ¨ª«
|
||||||
;NO_ADD_MX:
|
;NO_ADD_MX:
|
||||||
@ -2055,25 +1995,25 @@ 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,(RGMOD)
|
IN A,(SCREEN_SWITCH)
|
||||||
AND 1
|
AND 1
|
||||||
LD HL,0C040H
|
LD HL,ScreenStartAddress
|
||||||
JR NZ,SET_1X
|
JR NZ,SET_1X
|
||||||
LD HL,0C180H
|
LD HL,ScreenStartAddress + #0140
|
||||||
SET_1X:
|
SET_1X:
|
||||||
LD IX,TABLE_PIC
|
LD IX,TABLE_PIC
|
||||||
LD A,(IX)
|
LD A,(IX)
|
||||||
AND A
|
AND A
|
||||||
RET Z
|
RET Z
|
||||||
|
|
||||||
LD DE,08436h
|
LD DE,#8436
|
||||||
|
|
||||||
SAVE_PIC_X:
|
SAVE_PIC_X:
|
||||||
LD (SAVE_HL),HL ; Pic line
|
LD (SAVE_HL),HL ; Pic line
|
||||||
IN A,(RGADR)
|
IN A,(PORT_Y)
|
||||||
LD (SAVE_RGA2),A
|
LD (SAVE_RGA2),A
|
||||||
|
|
||||||
LD C,SLOT2
|
LD C,SLOT2
|
||||||
@ -2087,7 +2027,7 @@ SAVE_PIC_X:
|
|||||||
OUT (C),A ; Screen
|
OUT (C),A ; Screen
|
||||||
|
|
||||||
LD A,#FF
|
LD A,#FF
|
||||||
OUT (RGADR),A ; Line 1
|
OUT (PORT_Y),A ; Line 1
|
||||||
|
|
||||||
LD A,(IX)
|
LD A,(IX)
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
@ -2097,7 +2037,6 @@ NEXT_SV_LN:
|
|||||||
|
|
||||||
LD B,160
|
LD B,160
|
||||||
LOOP_SV_PIC:
|
LOOP_SV_PIC:
|
||||||
|
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC HL
|
INC HL
|
||||||
@ -2116,24 +2055,25 @@ LOOP_SV_PIC:
|
|||||||
INC IX
|
INC IX
|
||||||
LD A,(IX)
|
LD A,(IX)
|
||||||
OUT (SLOT2),A ; next page
|
OUT (SLOT2),A ; next page
|
||||||
LD DE,8000h
|
LD DE,#8000
|
||||||
NO_NEXT_PAGE:
|
NO_NEXT_PAGE:
|
||||||
DJNZ LOOP_SV_PIC
|
DJNZ LOOP_SV_PIC
|
||||||
|
|
||||||
; CALL SOUND
|
; CALL SOUND
|
||||||
|
|
||||||
IN A,(RGADR)
|
IN A,(PORT_Y)
|
||||||
DEC A
|
DEC A
|
||||||
OUT (RGADR),A
|
OUT (PORT_Y),A
|
||||||
CP 0FFh
|
CP #FF
|
||||||
JR NZ,NEXT_SV_LN
|
JR NZ,NEXT_SV_LN
|
||||||
|
|
||||||
LD BC,(SAVE_P2)
|
LD BC,(SAVE_P2)
|
||||||
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:
|
||||||
OUT (RGADR),A
|
LD A,0
|
||||||
|
OUT (PORT_Y),A
|
||||||
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|||||||
493
Music_4x.asm
Normal file
493
Music_4x.asm
Normal file
@ -0,0 +1,493 @@
|
|||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
;!FIXIT ¯¥à¥¤¥« âì ¬ã§«® API 5x
|
||||||
|
;-------[¨¨æ¨ «¨§ æ¨ï ¢¨ç¥áâ¥à ]------;
|
||||||
|
INIT_HDD_WORK:
|
||||||
|
.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)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD HL,SYS_PAGE.MSD_FAT_SEC
|
||||||
|
LD DE,MSD_DATS
|
||||||
|
LD BC,16 ;!HARDCODE
|
||||||
|
LDIR
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
|
||||||
|
;[x] music and dirs
|
||||||
|
LD HL,SND_DIR
|
||||||
|
LD DE,Temp_Buffer
|
||||||
|
LD A,FAT_ATTR.DIRECTORY
|
||||||
|
LD BC,Dss.F_First.FATname
|
||||||
|
RST ToDSS
|
||||||
|
JR NC,.start_setup
|
||||||
|
;
|
||||||
|
LD A,#C9 ; RET opcode - disable music
|
||||||
|
LD (SoundOnOff2),A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.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:
|
||||||
|
; LD DE,(MSD_DATS.MSD_CAT_SEC) ; CAT TABLE. ¡á®«îâë© ®¬¥à ᥪâ®à ¬« ¤è ï ç áâì
|
||||||
|
; LD IX,(MSD_DATS.MSD_CAT_SEC2) ; ¡á®«îâë© ®¬¥à ᥪâ®à áâ àè ï ç áâì
|
||||||
|
;-----[ç¨â âì ᥪâ®àë á ¢¨ç¥áâ¥à ]-----
|
||||||
|
|
||||||
|
READ_DIR:
|
||||||
|
LD HL,#C000 ; ¤à¥á ¡ãä¥à ¤ ëå
|
||||||
|
LD DE,(MSD_DATS.MSD_CAT_SEC) ; CAT TABLE. ¡á®«îâë© ®¬¥à ᥪâ®à ¬« ¤è ï ç áâì
|
||||||
|
LD IX,(MSD_DATS.MSD_CAT_SEC2) ; ¡á®«îâë© ®¬¥à ᥪâ®à áâ àè ï ç áâì
|
||||||
|
LD B,32 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
|
||||||
|
CatPage+1:
|
||||||
|
LD A,0 ; áâà ¨æ ¡ãä¥à , ¥á«¨ ¤à¥á ¢ ®ª¥ #C000
|
||||||
|
LD C,BIOS.HDD_READ ; IX:DE - ¡á®«îâë© ®¬¥à ᥪâ®à
|
||||||
|
RST ToBIOS ; § £à㧨âì CAT
|
||||||
|
RET
|
||||||
|
|
||||||
|
; KOSTILYI:
|
||||||
|
; INC IX
|
||||||
|
; RET
|
||||||
|
;---------------------------------------
|
||||||
|
|
||||||
|
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_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:
|
||||||
|
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.CLASTER_LEN + 1) ; ¤«¨ ª« áâ¥à ¢ ¡ ©â å
|
||||||
|
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.MSD_DAT_SEC)
|
||||||
|
ADD IX,DE
|
||||||
|
LD DE,(MSD_DATS.MSD_DAT_SEC2)
|
||||||
|
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
|
||||||
|
;
|
||||||
|
LD A,CBL.BUFFER_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
IN A,(PORT_Y)
|
||||||
|
PUSH AF
|
||||||
|
EX AF,AF'
|
||||||
|
RST ToBIOS ; ç¨â âì ᥪâ®à á ¢¨ç¥áâ¥à , äãªæ¨ï #45
|
||||||
|
;
|
||||||
|
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 DE,SYS_PAGE.MS_BPB+FAT_ID
|
||||||
|
LD HL,.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,(DE)
|
||||||
|
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> §¬¥à ᥪâ®à
|
||||||
|
LD A,B
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
LD C,A
|
||||||
|
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
|
LD (SYS_PAGE.FilesPerSector),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 BC,0
|
||||||
|
LD D,B
|
||||||
|
LD (SYS_PAGE.SectorsPerCluster),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> §¬¥à ᥪâ®à
|
||||||
|
; D = 0
|
||||||
|
LD H,D
|
||||||
|
LD L,D
|
||||||
|
LD E,D
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
|
LD D,A
|
||||||
|
XOR A
|
||||||
|
.NEXT_ADD3:
|
||||||
|
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
||||||
|
ADC A,E
|
||||||
|
DEC D
|
||||||
|
JR NZ,.NEXT_ADD3
|
||||||
|
|
||||||
|
LD (SYS_PAGE.CLASTER_LEN),HL
|
||||||
|
LD B,E
|
||||||
|
LD C,A
|
||||||
|
LD (SYS_PAGE.CLASTER_LEN2),BC
|
||||||
|
;
|
||||||
|
; DE=0
|
||||||
|
EX DE,HL ;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'
|
||||||
|
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-
|
||||||
|
; 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 DE,(MSD_DATS.MSD_DAT_SEC2)
|
||||||
|
ADC HL,DE
|
||||||
|
;!TODO ¤® «¨ ¯à®¢¥àïâì ¯¥à¥¯®«¥¨¥ HL:IX?
|
||||||
|
RET
|
||||||
|
;-=-=-=-=-=-=-=-
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 95c15f46dcd79b9ea7f60eca0011152305fbc366
|
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1
|
||||||
Loading…
Reference in New Issue
Block a user