1
0
mirror of https://github.com/Tolik-Trek/DOOM2.git synced 2026-06-15 09:01:34 +03:00

correct work in DSS

This commit is contained in:
Anatoliy Belyanskiy 2024-02-11 05:05:29 +10:00
parent b27ca37cc9
commit 4259263dee
4 changed files with 460 additions and 398 deletions

View File

@ -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,19 +45,19 @@ 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 (PORT_Y),A OUT (PORT_Y),A
ACC_CopyScreenBlock ACC_CopyScreenBlock
@ -118,7 +116,7 @@ NO_NEXT_SKY:
EXX EXX
SCREEN_1+1: SCREEN_1+1:
LD DE,#C040 ; ­ ç «® íªà ­  LD DE,ScreenStartAddress ; ­ ç «® íªà ­ 
LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!! LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!!
EXX EXX
; ;
@ -154,7 +152,6 @@ PLACE_L+1:
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
@ -170,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 (PORT_Y),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
; ;
@ -236,13 +232,13 @@ PLACE_L2+1: LD A,5
LD H,TABLE_X/256 LD H,TABLE_X/256
LD L,A ; ¢ëá®â  TABLE_X - â ¡«¨æ  ¢ëá®â LD L,A ; ¢ëá®â  TABLE_X - â ¡«¨æ  ¢ëá®â
LD B,(HL) ; áâ àè ï ç áâì ª®í䍿¨¥­â  LD B,(HL) ; áâ àè ï ç áâì ª®í䍿¨¥­â 
; ld b,0 ; ld b,0
INC H INC H
LD L,(HL) ; ¬« ¤è ï ç áâì ª®í䍿¨¥­â /ᬥ饭¨¥ ¢ á⥭ª¥ LD L,(HL) ; ¬« ¤è ï ç áâì ª®í䍿¨¥­â /ᬥ饭¨¥ ¢ á⥭ª¥
; LD C,0 ; LD C,0
OUT (C),L ; ¬ áèâ ¡¨à®¢ ­¨¥ OUT (C),L ; ¬ áèâ ¡¨à®¢ ­¨¥
; OUTI ; B 㬥­ìè ¥âáï á­ ç « ! ; OUTI ; B 㬥­ìè ¥âáï á­ ç « !
BIT 7,A BIT 7,A
JR Z,HIGH_1 ; 64 â®çª¨, ­¥ ­  ¢¥áì íªà ­ JR Z,HIGH_1 ; 64 â®çª¨, ­¥ ­  ¢¥áì íªà ­
@ -252,7 +248,7 @@ PLACE_L2+1: LD A,5
OUT (PORT_Y),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
@ -260,7 +256,7 @@ PLACE_L2+1: LD A,5
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
@ -268,7 +264,7 @@ PLACE_L2+1: LD A,5
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 (PORT_Y),A OUT (PORT_Y),A
@ -873,7 +869,7 @@ WALL: IN A,(SLOT3)
LD (WALL_SLOT1_RET),A LD (WALL_SLOT1_RET),A
IN A,(PORT_Y) IN A,(PORT_Y)
LD (WALL_PORT_Y_RET),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) ; áâà ­¨æ  á⥭ª¨
@ -881,7 +877,7 @@ WALL: IN A,(SLOT3)
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
@ -891,17 +887,16 @@ WALL: IN A,(SLOT3)
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
@ -930,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 - ᪮«ìª® «¨­¨© ®áâ «®áì ¤® ª®­æ  íªà ­ ??
@ -947,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) ; áâ à訩  ¤à¥á á⥭ª¨
@ -960,12 +956,13 @@ WOLL_LOOP:
OUT (PORT_Y),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
@ -984,7 +981,7 @@ WOLL_LOOP:
ACC_Off ACC_Off
EXX EXX
; L - ¢ëá®â  -128..0..127 !!! ; L - ¢ëá®â  -128..0..127 !!!
LD B,(HL) LD B,(HL)
INC H INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH LD A,(HL) ; ¬ áèâ ¡ - HIGH
@ -1009,7 +1006,7 @@ NO_Z_A1:
XOR A XOR A
NO_Z_A: NO_Z_A:
OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y
;!FIXIT âãâ ¬®¦¥â ¯¨á âìáï ¢ ®¡« áâì èà¨ä⮢
ACC_CopyScreenBlock ACC_CopyScreenBlock
LD (DE),A ; ¢ë¢¥á⨠«¨­¨î LD (DE),A ; ¢ë¢¥á⨠«¨­¨î
ACC_Off ACC_Off
@ -1174,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
@ -1671,79 +1668,72 @@ OFF_BYTE: DB #FF
; ;
TAB_ANGLE: TAB_ANGLE:
DB 0,1 ; 0 DB 0 , 1 ; 0
DB 1,1 ; 45 DB 1 , 1 ; 45
DB 1,1 ; 45 DB 1 , 1 ; 45
DB 1,0 ; 90 DB 1 , 0 ; 90
DB 1,0 ; 90 DB 1 , 0 ; 90
DB 1,-1 ; 135 DB 1 , -1 ; 135
DB 1,-1 ; 135 DB 1 , -1 ; 135
DB 0,-1 ; 180 DB 0 , -1 ; 180
DB 0,-1 ; 180 DB 0 , -1 ; 180
DB -1,-1 DB -1 , -1
DB -1,-1 DB -1 , -1
DB -1,0 DB -1 , 0
DB -1,0 DB -1 , 0
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
DB 2,2 ; 45 DB 2 , 2 ; 45
DB 2,1 ; 67 DB 2 , 1 ; 67
DB 2,0 ; 90 DB 2 , 0 ; 90
DB 2,-1 ; 112 DB 2 , -1 ; 112
DB 2,-2 ; 135 DB 2 , -2 ; 135
DB 1,-2 ; 157 DB 1 , -2 ; 157
DB 0,-2 ; 180 DB 0 , -2 ; 180
DB -1,-2 DB -1 , -2
DB -2,-2 DB -2 , -2
DB -2,-1 DB -2 , -1
DB -2,0 DB -2 , 0
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 , -1 ; 112
DB 4,0 ; 90 DB 4 , -2 ; 135
DB 4,-1 ; 112 DB 4 , -3 ; 135
DB 4,-2 ; 135 DB 4 , -4 ; 135
DB 4,-3 ; 135 DB 3 , -4 ; 157
DB 4,-4 ; 135 DB 2 , -4 ; 157
DB 3,-4 ; 157 DB 1 , -4 ; 157
DB 2,-4 ; 157 DB 0 , -4 ; 180
DB 1,-4 ; 157 DB -1 , -4
DB -2 , -4
DB 0,-4 ; 180 DB -3 , -4
DB -1,-4 DB -4 , -4
DB -2,-4 DB -4 , -3
DB -3,-4 DB -4 , -2
DB -4,-4 DB -4 , -1
DB -4,-3 DB -4 , 0
DB -4,-2 DB -4 , 1
DB -4,-1 DB -4 , 2
DB -4 , 3
DB -4,0 DB -4 , 4 ; 0
DB -4,1 DB -3 , 4 ; 0
DB -4,2 DB -2 , 4 ; 0
DB -4,3 DB -1 , 4 ; 0
DB -4,4 ; 0 DB 0 , 4 ; 0
DB -3,4 ; 0 DB 1 , 4 ; 0
DB -2,4 ; 0 DB 2 , 4 ; 22
DB -1,4 ; 0 DB 3 , 4 ; 45
DB 4 , 4 ; 45
DB 0,4 ; 0 DB 4 , 3 ; 45
DB 1,4 ; 0
DB 2,4 ; 22
DB 3,4 ; 45
DB 4,4 ; 45
DB 4,3 ; 45
MONSTR_ALL: MONSTR_ALL:
@ -1823,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
@ -1880,13 +1869,15 @@ 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
CALL SOUND CALL SOUND
@ -1902,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
@ -1962,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:
@ -2009,9 +2000,9 @@ SAVE_P2: DW 0
SAVE_PIC: SAVE_PIC:
IN A,(SCREEN_SWITCH) IN A,(SCREEN_SWITCH)
AND 1 AND 1
LD HL,#C040 LD HL,ScreenStartAddress
JR NZ,SET_1X JR NZ,SET_1X
LD HL,#C180 LD HL,ScreenStartAddress + #0140
SET_1X: SET_1X:
LD IX,TABLE_PIC LD IX,TABLE_PIC
LD A,(IX) LD A,(IX)

340
DOOM2.asm
View File

@ -5,7 +5,8 @@
;--------------------------------------- ;---------------------------------------
*/ */
ScreenStartAddress EQU #C040
;ScreenStartAddress EQU #C000
; ;
;---------------------------[Defines section]--------------------------- ;---------------------------[Defines section]---------------------------
DEFINE EXE_HEADER 1 DEFINE EXE_HEADER 1
@ -71,15 +72,15 @@ CMD_Line+1:
LD HL,#8080 LD HL,#8080
CALL SET_HOME_PATH CALL SET_HOME_PATH
;--------[§ £à㧪  à¥áãàᮢ ¨£àë]------- ;--------[§ £à㧪  à¥áãàᮢ ¨£àë]-------
; ¢ë¯®«­¥­® ¢ ¢¨¤¥ ª®áâë«ì­®© § £«ã誨
LD HL,Loading_TXT LD HL,Loading_TXT
LD C,Dss.PChars LD C,Dss.PChars
RST ToDSS RST ToDSS
; ;
CALL SAVE_ALL
; ¢ë¯®«­¥­® ¢ ¢¨¤¥ ª®áâë«ì­®© § £«ã誨
CALL Load_Resources CALL Load_Resources
; ;
CALL SAVE_PAL ;CALL SAVE_TXT_SCREEN
CALL SAVE_TXT_SCREEN
; LD A,Dss.SetVMod.grf320x256 ; LD A,Dss.SetVMod.grf320x256
; LD BC,Dss.SetVMod.Screen_1 ; LD BC,Dss.SetVMod.Screen_1
; RST ToDSS ; RST ToDSS
@ -111,7 +112,7 @@ CMD_Line+1:
ld a,(RAMBlkIDs.d2_fram) ld a,(RAMBlkIDs.d2_fram)
ld (D2_FRAM_page),a ld (D2_FRAM_page),a
;----[] ;----[;!FIXIT ¯¥à¥¤¥« âì ¬ã§«® ­  API 5x]
; ‡ ¯à è¨¢ ¥¬ áâà ­¨æã ¤«ï ª â «®£  ; ‡ ¯à è¨¢ ¥¬ áâà ­¨æã ¤«ï ª â «®£ 
; á®å࠭塞 ¥ñ ü ¢ ª®¤¥ ; á®å࠭塞 ¥ñ ü ¢ ª®¤¥
; ;
@ -142,8 +143,8 @@ CMD_Line+1:
CALL SET_PAL CALL SET_PAL
;----[®âªàëâì ¯®àâë ¬ áèâ ¡¨à®¢ ­¨ï]---- ;----[®âªàëâì ¯®àâë ¬ áèâ ¡¨à®¢ ­¨ï]----
; ®¤¨­ ¢­ãâ७­¨© ¯®àâ ¬ áèâ ¡¨à®¢ ­¨ï ¬ ¯¯¨âáï ­  ¤¨ ¯¯ §®­ #XX00 ; ®¤¨­ ¢­ãâ७­¨© ¯®àâ ¬ áèâ ¡¨à®¢ ­¨ï ¬ ¯¯¨âáï ­  ¤¨ ¯¯ §®­
; ¢­¥è­¨å ¯®à⮢. Write, Dos off, CNF 0. ; #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 ; ¬ áª 
@ -166,7 +167,7 @@ CMD_Line+1:
; EX AF,AF' ; EX AF,AF'
; OUT (SLOT3),A ; OUT (SLOT3),A
; €ªâ¨¢ æ¨ï €ªá¥«ï ¬ áèâ ¡¨à®¢ ­¨ï, ®¡à â­® ⮫쪮 ç¥à¥§ à¥á¥â ; €ªâ¨¢ æ¨ï €ªá¥«ï ¬ áèâ ¡¨à®¢ ­¨ï, ®¡à â­® ⮫쪮 ç¥à¥§ à¥á¥â
LD BC,#100 ; C - ¬ áèâ ¡ 1:1 LD BC,#0100 ; C - ¬ áèâ ¡ 1:1
OUT (C),C OUT (C),C
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
@ -188,18 +189,6 @@ CMD_Line+1:
; ;
;-----------[EXIT Procedure]------------; ;-----------[EXIT Procedure]------------;
RETURN_POINT: 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) IN A,(FastRAM.OFF)
LD A,SYS_PORT.BIOS LD A,SYS_PORT.BIOS
OUT (SYS_PORT.RAM),A OUT (SYS_PORT.RAM),A
@ -210,6 +199,10 @@ RETURN_POINT:
; ;
CALL RESTORE_ALL CALL RESTORE_ALL
; ;
LD HL,GOTO_EXIT
LD C,Dss.PChars
RST ToDSS
;
.loop: LD BC,Dss.Exit .loop: LD BC,Dss.Exit
RST ToDSS RST ToDSS
JR .loop JR .loop
@ -299,19 +292,18 @@ CLEAR_GRAF_SCR:
XOR A XOR A
OUT (PORT_Y),A OUT (PORT_Y),A
LD SP,#C040 + 640 LD SP,ScreenStartAddress + 640
LD B,640/4 LD B,640/4
;!!!!!!!!!!![®¯â¨¬¨§¨à®¢ âì]!!!!!!!!!!!! ;!TODO ![®¯â¨¬¨§¨à®¢ âì]!
LOOP_CLS:
ACC_SetBlockSize ACC_SetBlockSize
LD E,0 LD E,0
LD D,E LD D,E
LOOP_CLS:
ACC_FillScreenOneByte ACC_FillScreenOneByte
PUSH DE PUSH DE
PUSH DE PUSH DE
ACC_Off ACC_Off
DJNZ LOOP_CLS DJNZ LOOP_CLS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SPSave2+1: SPSave2+1:
@ -466,9 +458,9 @@ MAIN: CALL INIT_TABLE
; !FIXIT ¯¥à¥¤¥« âì «®£¨ªã ¯®¤ ­®¢ë© ¡¨®á? ; !FIXIT ¯¥à¥¤¥« âì «®£¨ªã ¯®¤ ­®¢ë© ¡¨®á?
;---[ãáâ ­®¢ª  ᨭåàë, ®ç¨á⪠ íªà ­ ]-- ;---[ãáâ ­®¢ª  ᨭåàë, ®ç¨á⪠ íªà ­ ]--
LD A,2 ; ०¨¬ Pentagon - 320 áâப ¢ íªà ­¥ ; LD A,2 ; ०¨¬ Pentagon - 320 áâப ¢ íªà ­¥
LD C,BIOS.FN_SYNC ; LD C,BIOS.FN_SYNC
RST ToBIOS ; RST ToBIOS
;--------------------------------------- ;---------------------------------------
;------[Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­]------ ;------[Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­]------
@ -480,44 +472,21 @@ MAIN: CALL INIT_TABLE
; HL - ¬¥áâ® ­  íªà ­¥ ¯® §­ ª®¬¥áâ ¬ ; HL - ¬¥áâ® ­  íªà ­¥ ¯® §­ ª®¬¥áâ ¬
; (ª®¯¨ï ¢ IX+2,3), ¢ ­®¢ëå ¢¥àá¨ïå ; (ª®¯¨ï ¢ IX+2,3), ¢ ­®¢ëå ¢¥àá¨ïå
; ¡¨®á  §­ ç¥­¨¥ HL ­¥ áãé¥á⢥­­® ; ¡¨®á  §­ ç¥­¨¥ HL ­¥ áãé¥á⢥­­®
;
LD HL,#4000 LD HL,#4000
LD E,1 LD E,0
LD B,8 ; £à ä¨ç¥áª®¥ ®ª­® 0, HL - ¯®«®¦¥­¨¥ ®ª­  LD B,8 ; £à ä¨ç¥áª®¥ ®ª­® 0, HL - ¯®«®¦¥­¨¥ ®ª­ 
LD C,BIOS.LP_OPEN_S LD C,BIOS.LP_OPEN_S
RST ToBIOS RST ToBIOS
;
LD HL,#5000 LD HL,#5000
LD E,1 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
/*
LD A,Dss.SetVMod.grf320x256
LD BC,Dss.SetVMod.Screen_0
RST ToDSS
LD A,Dss.SetVMod.grf320x256
LD BC,Dss.SetVMod.Screen_1
RST ToDSS
;£à ä¨ç¥áª®¥ ®ª­® 0
PIC_320X256_1:
DB 40,32,0,0,32,0,08,0
DB 40,32,0,0,96,0,48,0
DB 40,32,0,0,32,0,00,0 ;4
DB 40,32,0,0,96,0,40,0 ;6
;£à ä¨ç¥áª®¥ ®ª­® 1
PIC_320X256_2:
; 320x256. £à ä¨ç¥áª®¥, 0-© íªà ­
TAB_320x256_0
; 320x256. £à ä¨ç¥áª®¥, 1-© íªà ­
TAB_320x256_1
*/
;--------------------------------------- ;---------------------------------------
LD A,1 LD A,(RESTORE_ALL.scr)
OUT (SCREEN_SWITCH),A OUT (SCREEN_SWITCH),A
;----[¯¥à¥¡à®á ç á⨠ª®¤  ¢ FastRAM]---- ;----[¯¥à¥¡à®á ç á⨠ª®¤  ¢ FastRAM]----
@ -732,13 +701,13 @@ CONT_WORK:
SCR_SWITCH: SCR_SWITCH:
IN A,(SCREEN_SWITCH) IN A,(SCREEN_SWITCH)
AND 1 ;AND 1
XOR 1 XOR 1
OUT (SCREEN_SWITCH),A OUT (SCREEN_SWITCH),A
LD DE,#C040 LD DE,ScreenStartAddress
JR Z,SET_1 JR Z,SET_1
LD DE,#C180 LD DE,ScreenStartAddress + #0140
SET_1: SET_1:
LD (SCREEN_1),DE LD (SCREEN_1),DE
RET RET
@ -1607,19 +1576,48 @@ SET_HOME_PATH:
RET RET
;*********************************************************************** ;***********************************************************************
SAVE_PAL: SAVE_PAL:
IN A,(SLOT2) LD A,SYS_PORT.BIOS
PUSH AF OUT (SYS_PORT.ON),A
IN A,(FastRAM.ON)
LD A,1
OUT (FastRAM.SLOT0),A
;
LD A,#50
OUT (SLOT3),A OUT (SLOT3),A
XOR A
OUT (PORT_Y),A
; ;
LD HL,Pal_Restore_Buffer+#4000
LD DE,0 LD DE,0
LD A,4 .loop: LD HL,#C3E0
LD C,BIOS.PIC_GET_PAL LD BC,#20
RST ToBIOS LDIR
IN A,(PORT_Y)
INC A
OUT (PORT_Y),A
JR NZ,.loop
; ;
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
XOR A
OUT (SYS_PORT.OFF),A
RET
; IN A,(SLOT3)
; PUSH AF
; IN A,(SLOT2)
; OUT (SLOT3),A
; ;
; LD HL,Pal_Restore_Buffer+#4000
; LD DE,0
; LD A,#80 + 0
; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS
; ;
; LD HL,Pal_Restore_Buffer+#4000 + 1024 ; LD HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0 ; LD DE,0
; LD A,5 ; LD A,#80 + 1
; LD C,BIOS.PIC_GET_PAL ; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS ; RST ToBIOS
; ; ; ;
@ -1635,21 +1633,48 @@ SAVE_PAL:
; LD C,BIOS.PIC_GET_PAL ; LD C,BIOS.PIC_GET_PAL
; RST ToBIOS ; RST ToBIOS
; ;
POP AF ; POP AF
OUT (SLOT3),A ; OUT (SLOT3),A
RET ; RET
;*********************************************************************** ;***********************************************************************
RESTORE_PAL: RESTORE_PAL:
LD A,SYS_PORT.BIOS
OUT (SYS_PORT.ON),A
IN A,(FastRAM.ON)
LD A,1
OUT (FastRAM.SLOT0),A
; ;
IN A,(SLOT2) LD A,#50
PUSH AF
OUT (SLOT3),A OUT (SLOT3),A
XOR A
OUT (PORT_Y),A
; ;
LD HL,Pal_Restore_Buffer+#4000 LD HL,0
LD DE,0 .loop: LD DE,#C3E0
LD A,4 LD BC,#20
LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë LDIR
RST ToBIOS IN A,(PORT_Y)
INC A
OUT (PORT_Y),A
JR NZ,.loop
;
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
XOR A
OUT (SYS_PORT.OFF),A
RET
;
; 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 HL,Pal_Restore_Buffer+#4000 + 1024
; LD DE,0 ; LD DE,0
@ -1669,70 +1694,129 @@ RESTORE_PAL:
; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë ; LD BC,#FF*256 + BIOS.PIC_SET_PAL ; ãáâ ­®¢ª  ¯ «¨âàë
; RST ToBIOS ; RST ToBIOS
; ;
POP AF ; POP AF
OUT (SLOT3),A ; OUT (SLOT3),A
RET ; RET
;*********************************************************************** ;***********************************************************************
;!TODO âãâ ­¥ ¯à®¢¥àï¥âáï ०¨¬ 80 ¨«¨ 40 ;!TODO âãâ ­¥ ¯à®¢¥àï¥âáï ०¨¬ 80 ¨«¨ 40
SAVE_TXT_SCREEN: ; DEFINE _TXT_SCREEN #E000
LD C,BIOS.LP_GET_PLACE ; SAVE_TXT_SCREEN:
RST ToBIOS ; DI
LD (LOAD_TXT_SCREEN.CURS),DE ; LD C,BIOS.LP_GET_PLACE
LD IX,#4000 + TXT_SCREEN ; RST ToBIOS
LD HL,#2050 ; #2028 ; LD (LOAD_TXT_SCREEN.CURS),DE
; ; ;
; LD (LOAD_TXT_SCREEN.SVHL1),HL ; XOR A
LD DE,#0000 ; LD B,SHARED_PAGE
IN A,(SLOT2) ; LD HL,#2050 ; #2028
LD B,A ; LD DE,#0000
LD C,BIOS.WIN_COPY ; LD IX,_TXT_SCREEN
JP ToBIOS ; LD C,BIOS.WIN_COPY
; JP ToBIOS
LOAD_TXT_SCREEN: ; LOAD_TXT_SCREEN:
LD IX,#4000 + TXT_SCREEN ; DI
.SVHL1+1: LD HL,#2050 ; #2028 ; XOR A
LD DE,#0000 ; LD B,SHARED_PAGE
IN A,(SLOT2) ; LD HL,#2050 ; #2028
LD B,A ; LD DE,#0000
LD C,BIOS.WIN_RESTORE ; LD IX,_TXT_SCREEN
RST ToBIOS ; LD C,BIOS.WIN_RESTORE
; ; RST ToBIOS
.CURS+1: LD DE,#0000 ; ;
LD C,Dss.Locate ; .CURS+1: LD DE,#0000
JP ToDSS ; LD C,Dss.Locate
; JP ToDSS
;*********************************************************************** ;***********************************************************************
RESTORE_ALL: RESTORE_ALL:
LD A,1 ; LD B,3 ; 3 - ãáâ ­®¢ª  CGA ¯ «¨âàë
LD HL, %0000'0100'0000'0000 ; §­ ç¥­¨¥ ; LD C,BIOS.SET_PAL_INIT ; ­®¬¥à ä㭪樨
LD DE, %1111'1110'0110'1111 ; ¬ áª  ; RST ToBIOS ; ãáâ ­®¢ª  ¯ «¨âàë
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 CALL RESTORE_PAL
; ;
.mode+1: LD A,Dss.SetVMod.txt80x32
.scr+2: LD BC,Dss.SetVMod
RST ToDSS
;
LD BC,Dss.Lib_Sub.RestoreFont
RST ToDSS
;
LD A,(.mode)
CP #80
RET NC
;
.cursor+1:
LD DE,0
LD C,Dss.Locate
RST ToDSS
LD C,Dss.WinRest
JP TXT_Screen_Copy_Restore
;
;***********************************************************************
SAVE_ALL:
CALL SAVE_PAL
; ã§­ âì ¢¨¤¥®à¥¦¨¬
LD C,Dss.GetVMod
RST ToDSS
LD (RESTORE_ALL.mode),A
LD A,B
LD (RESTORE_ALL.scr),A
; ¥á«¨ ०¨¬ ⥪áâ®¢ë© - á®åà ­¨âì ®ª­®
LD A,(RESTORE_ALL.mode)
CP #80
RET NC
;
LD C,Dss.Cursor
RST ToDSS
LD (RESTORE_ALL.cursor),DE
;
LD C,Dss.WinCopy
;JP TXT_Screen_Copy_Restore
;****************************
TXT_Screen_Copy_Restore:
LD A,Dss.WinCopy
SUB C
PUSH AF
PUSH BC
CALL NZ,SCREEN_IN_CACHE
;
LD A,(RESTORE_ALL.mode)
SUB 2
LD DE,0 LD DE,0
LD HL,#2050 LD HL,#2050
LD BC,COLORS.CGA.INC.LGRAY*256 + BIOS.LP_CLS_WIN JR NZ,.next
RST ToBIOS LD L,#28
.next: IN A,(SLOT2)
POP BC
LD B,A
LD IX,TXT_SCREEN
RST ToDSS
POP AF
RET NZ
;DEC A
;JP SCREEN_IN_CACHE
;****************************
SCREEN_IN_CACHE:
LD A,SYS_PORT.BIOS
OUT (SYS_PORT.ON),A
IN A,(FastRAM.ON)
LD A,1
OUT (FastRAM.SLOT0),A
; ;
CALL LOAD_TXT_SCREEN LD HL,TXT_SCREEN
LD DE,1024*8 ; à §¬¥à ¯ «¨âàë
JR Z,.no_change
EX DE,HL
.no_change:
LD BC,80*32*2 ; ¬ ªá¨¬ «ì­ë© à §¬¥à ⥪á⮢®£® íªà ­ 
LDIR
; ;
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
XOR A
OUT (SYS_PORT.OFF),A
RET RET
;*********************************************************************** ;***********************************************************************
;***********************************************************************
;---------------[Tables]---------------- ;---------------[Tables]----------------
ALIGN 2,0 ALIGN 2,0
; ;
@ -1764,6 +1848,7 @@ SND_DIR: DZ "MUSIC"
;Up_Dir: DZ ".." ;Up_Dir: DZ ".."
; ;
Loading_TXT: DZ "\r\nPlease wait, resources are loading..." Loading_TXT: DZ "\r\nPlease wait, resources are loading..."
GOTO_EXIT: DZ "\r\n < GAME OVER))) >"
; ;
; IFN NORM_syncPORT ; IFN NORM_syncPORT
@ -1786,8 +1871,7 @@ Loading_TXT: DZ "\r\nPlease wait, resources are loading..."
;CURRENT_DIR: BLOCK 257,0 ;CURRENT_DIR: BLOCK 257,0
;------------------------------------ ;------------------------------------
Pal_Restore_Buffer EQU $ ;Temp_Buffer + 256 Temp_Buffer EQU $
Temp_Buffer EQU Pal_Restore_Buffer + 1024 + 1024
TXT_SCREEN EQU Temp_Buffer + 257 TXT_SCREEN EQU Temp_Buffer + 257
; ;
; ;

View File

@ -1,5 +1,6 @@
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
;!FIXIT ¯¥à¥¤¥« âì ¬ã§«® ­  API 5x
;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------; ;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------;
INIT_HDD_WORK: INIT_HDD_WORK:
.currentDisk+1: ; .currentDisk+1: ;
@ -61,20 +62,6 @@ INIT_HDD_WORK:
OUT (SLOT3),A OUT (SLOT3),A
;[ ] music and dirs ;[ ] music and dirs
; LD A,(CURRENT_DIR+1)
; AND A
; JR Z,.skip_dir
;
; LD HL,Up_Dir
; LD C,Dss.ChDir
; RST ToDSS
;
; LD A,'\' ;
; LD HL,CURRENT_DIR+257
; LD BC,257 ;!HARDCODE か┃<E3818B> 痰牀<E797B0> <20>
; CPDR
; INC HL
;
LD HL,SND_DIR LD HL,SND_DIR
LD DE,Temp_Buffer LD DE,Temp_Buffer
LD A,FAT_ATTR.DIRECTORY LD A,FAT_ATTR.DIRECTORY

@ -1 +1 @@
Subproject commit 1a384e2e43f985438aafa6f7fed3e7552d7b6f3d Subproject commit b8a215d38afde3eed48f39eb961e96cdb6d9e426