1
0
mirror of https://github.com/Tolik-Trek/DOOM2.git synced 2026-06-15 00:51:33 +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 $
;
TRACE:
IN A,(SLOT1)
TRACE: IN A,(SLOT1)
LD (TRACE_RET_SLOT1),A
IN A,(SLOT3)
LD (TRACE_RET_SLOT3),A
@ -47,19 +45,19 @@ TRACE:
NO_SKY_2:
OUT (SLOT1),A
LD A,0 ;????????? ­¥ ­ã¦­®?
;LD A,0 ;????????? ­¥ ­ã¦­®?
LD C,80
SKY_LOOP_1:
ACC_SetBlockSize
LD B,0
LD A,0
ACC_CopyBlock
LD B,(HL)
ACC_SetBlockSize
LD B,#80
ACC_Off
XOR A
;XOR A
OUT (PORT_Y),A
ACC_CopyScreenBlock
@ -118,7 +116,7 @@ NO_NEXT_SKY:
EXX
SCREEN_1+1:
LD DE,#C040 ; ­ ç «® íªà ­ 
LD DE,ScreenStartAddress ; ­ ç «® íªà ­ 
LD C,0 ;!!!!!!!!!!!!!!!!!!!!!!!!!!
EXX
;
@ -154,7 +152,6 @@ PLACE_L+1:
OUT (SLOT1),A
LD (CONT_PAGE),A
; JR TRACE_LOOP
TRACE_LOOP:
LD A,#50
OUT (SLOT3),A
@ -162,29 +159,28 @@ TRACE_LOOP:
OUT (PORT_Y),A
REPT 16
LD E,(HL) ; ¯¥à¢ë© ¨ ¤ «¥¥ á«¥¤ãî騩 ªã¡¨ª
LD A,(DE) ; ¥áâì ¨«¨ ­¥â?
AND A
JR NZ,TRACE_CONT ; ¥á«¨ ¥áâì, à¨á®¢ âì!!
INC L
LD E,(HL) ; ¯¥à¢ë© ¨ ¤ «¥¥ á«¥¤ãî騩 ªã¡¨ª
LD A,(DE) ; ¥áâì ¨«¨ ­¥â?
AND A
JR NZ,TRACE_CONT ; ¥á«¨ ¥áâì, à¨á®¢ âì!!
INC L
ENDR
PURE_LINE:
;
EXX
ACC_SetBlockSize
LD A,#80 ; ¯ãáâ ï á⥭ª 
ACC_Off
; LD (DE),A ; LINE-Z-bufer
OUT (PORT_Y),A
LD A,(COLOR_LO)
ACC_FillScreenOneByte
LD (DE),A
ACC_Off
LD A,#70 ; Z-bufer
LD (DE),A
ACC_SetBlockSize
LD A,#80 ; ¯ãáâ ï á⥭ª 
ACC_Off
;LD (DE),A ; LINE-Z-Buffer
OUT (PORT_Y),A
;
LD A,(COLOR_LO)
;
ACC_FillScreenOneByte
LD (DE),A
ACC_Off
LD A,#70 ; Z-Buffer
LD (DE),A
EXX
;
JR NEXT_ANGLE
@ -234,33 +230,33 @@ PLACE_L2+1: LD A,5
;
EXX
LD H,TABLE_X/256
LD L,A ; ¢ëá®â  TABLE_X - â ¡«¨æ  ¢ëá®â
LD B,(HL) ; áâ àè ï ç áâì ª®í䍿¨¥­â 
; ld b,0
LD L,A ; ¢ëá®â  TABLE_X - â ¡«¨æ  ¢ëá®â
LD B,(HL) ; áâ àè ï ç áâì ª®í䍿¨¥­â 
; ld b,0
INC H
LD L,(HL) ; ¬« ¤è ï ç áâì ª®í䍿¨¥­â /ᬥ饭¨¥ ¢ á⥭ª¥
; LD C,0
OUT (C),L ; ¬ áèâ ¡¨à®¢ ­¨¥
; OUTI ; B 㬥­ìè ¥âáï á­ ç « !
LD L,(HL) ; ¬« ¤è ï ç áâì ª®í䍿¨¥­â /ᬥ饭¨¥ ¢ á⥭ª¥
; LD C,0
OUT (C),L ; ¬ áèâ ¡¨à®¢ ­¨¥
; OUTI ; B 㬥­ìè ¥âáï á­ ç « !
BIT 7,A
JR Z,HIGH_1 ; 64 â®çª¨, ­¥ ­  ¢¥áì íªà ­
JR Z,HIGH_1 ; 64 â®çª¨, ­¥ ­  ¢¥áì íªà ­
; <64 â®çª¨, ­  ¢¥áì íªà ­
XOR A
OUT (PORT_Y),A ; á á ¬®£® ­ ç « 
OUT (PORT_Y),A ; á á ¬®£® ­ ç « 
ACC_SetBlockSize
LD (DE),A ; 256 ¡ ©â ˆ LINE-Z-bufer!!!!
LD (DE),A ; 256 ¡ ©â ˆ LINE-Z-Buffer!!!!
ACC_Off
LD A,#58
OUT (SLOT3),A
ACC_CopyScreenBlock
LD (DE),A ; ”ˆƒ€Š‘ ¢áî «¨­¨î!!!
LD (DE),A ; ”ˆƒ€Š‘ ¢áî «¨­¨î!!!
ACC_Off
XOR A
LD (DE),A ; LINE-Z-bufer!!!!
LD (DE),A ; LINE-Z-Buffer!!!!
EXX
;
JR NEXT_ANGLE
@ -268,7 +264,7 @@ PLACE_L2+1: LD A,5
HIGH_1:
; A - ¢ëá®â , á ª®â®à®© à¨áã¥âáï á⥭ª 
ACC_SetBlockSize
LD (DE),A ; ç¨á«® â®ç¥ª ¯®â®«ª  ¨ ¯®« ! & LINE-Z-bufer
LD (DE),A ; ç¨á«® â®ç¥ª ¯®â®«ª  ¨ ¯®« ! & LINE-Z-Buffer
ACC_Off
NEG ; ¯®«ãç¨âì ¯®«®¦¥­¨¥ ­ ç «  ¯®« 
OUT (PORT_Y),A
@ -873,40 +869,39 @@ WALL: IN A,(SLOT3)
LD (WALL_SLOT1_RET),A
IN A,(PORT_Y)
LD (WALL_PORT_Y_RET),A
LD A,#58
LD A,#5C
OUT (SLOT3),A
LD A,(IX+0) ; áâà ­¨æ  á⥭ª¨
OUT (SLOT1),A
EXX
LD C,0 ; ¯®àâ ¬ áèâ ¡ 
LD H,TABLE_X/256 ; â ¡«¨æ  ¢ëá®â ¨ ª®í䍿¨¥­â®¢ ¬ áèâ ¡¨à®¢ ­¨ï
LD L,(IX+3) ; ¯®«®¦¥­¨¥ ¯® Y / ®¯à¥¤¥«ï¥â ¢ëá®âã
LD A,(HL) ; ¬ áèâ ¡ - LOW
AND 3
LD (X_ADD),A
INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH
LD (X_ADD2),A
DEC H
LD A,L
ADD A,A
NEG ; è¨à¨­  ¯® £®à¨§®­â «¨
BIT 0,(IX+M_VAR3)
JR Z,NO_DEL2
RRA
AND #7F
NO_DEL2:
BIT 1,(IX+M_VAR3)
JR Z,NO_DEL4
AND A
RRA
RRA
AND #3F
LD C,0 ; ¯®àâ ¬ áèâ ¡ 
;
LD H,TABLE_X/256 ; â ¡«¨æ  ¢ëá®â ¨ ª®í䍿¨¥­â®¢ ¬ áèâ ¡¨à®¢ ­¨ï
LD L,(IX+3) ; ¯®«®¦¥­¨¥ ¯® Y / ®¯à¥¤¥«ï¥â ¢ëá®âã
LD A,(HL) ; ¬ áèâ ¡ - LOW
AND 3
LD (X_ADD),A
INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH
LD (X_ADD2),A
DEC H
;
LD A,L
ADD A,A
NEG ; è¨à¨­  ¯® £®à¨§®­â «¨
;
BIT 0,(IX+M_VAR3)
JR Z,NO_DEL2
RRA
AND #7F
NO_DEL2: BIT 1,(IX+M_VAR3)
JR Z,NO_DEL4
AND A
RRA
RRA
AND #3F
NO_DEL4:
EXX
@ -930,7 +925,7 @@ NO_DEL4:
; ; ¢ A ᪮«ìª® «¨­¨© ¤® ­ ç «  íªà ­ 
;WALL_NO_SCF:
;
; LD HL,140h
; LD HL,#0140
; AND A
; SBC HL,DE
; LD A,L ; ¢ A - ᪮«ìª® «¨­¨© ®áâ «®áì ¤® ª®­æ  íªà ­ ??
@ -947,9 +942,10 @@ NO_DEL4:
; LD E,A
LD D,0
SBC HL,DE
;!FIXIT ¯®á«¥ ¢ëç¨â ­¨ï ¢ HL  ¤à¥á ¯® ª®â®à®¬ã ¡ã¤¥â § ¯¨áì ¡«®ª , ¬®¦¥â § «¥§ âì ­  èà¨äâë
EX DE,HL
LD H,(IX+2) ; áâ à訩  ¤à¥á á⥭ª¨
LD H,(IX+2) ; áâ à訩  ¤à¥á á⥭ª¨
LD L,(IX+1)
LD A,#58
@ -960,58 +956,59 @@ WOLL_LOOP:
OUT (PORT_Y),A
LD A,D
;!FIXIT âã⠯஢¥àª  ­  áâ à訩  ¤à¥á, ­® èà¨äâ ¬ íâ® ­¥ ¯®¬®¦¥â
CP #C3
JR NC,NO_WRITE_ALL ; ­¥ ¢ë¢®¤¨âì §  íªà ­ ¨ § ª®­ç¨âì
JR NC,NO_WRITE_ALL ; ­¥ ¢ë¢®¤¨âì §  íªà ­ ¨ § ª®­ç¨âì
CP #C0
JR C,NO_WRITE_LINE ; ­¥ ¢ë¢®¤¨âì §  íªà ­
LD A,(DE) ; Z-bufer!!!
JR C,NO_WRITE_LINE ; ­¥ ¢ë¢®¤¨âì §  íªà ­
;!FIXIT âãâ ¬®¦¥â ç¨â âìáï ¨§ ®¡« á⨠èà¨ä⮢
LD A,(DE) ; ç⥭¨¥ ¨§ Z-Buffer
EXX
CP L
CP L
EXX
JR C,NO_WRITE_LINE
EXX
LD B,1
OUT (C),C ; ¬ áèâ ¡ - 1
ACC_SetBlockSize
LD B,#40 ; § ¤ âì ¤«¨­ã «¨­¨¨
ACC_Off
LD B,1
OUT (C),C ; ¬ áèâ ¡ - 1
ACC_SetBlockSize
LD B,#40 ; § ¤ âì ¤«¨­ã «¨­¨¨
ACC_Off
EXX
ACC_CopyBlock
LD A,(HL) ; ¢§ïâì «¨­¨î á⥭ª¨
LD A,(HL) ; ¢§ïâì «¨­¨î á⥭ª¨
ACC_Off
EXX
; L - ¢ëá®â  -128..0..127 !!!
LD B,(HL)
INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH
OUT (C),A
INC H
LD A,L
ADD A,A
JR NC,NO_Z_A1
XOR A
; L - ¢ëá®â  -128..0..127 !!!
LD B,(HL)
INC H
LD A,(HL) ; ¬ áèâ ¡ - HIGH
OUT (C),A
INC H
LD A,L
ADD A,A
JR NC,NO_Z_A1
XOR A
NO_Z_A1:
NEG
ACC_SetBlockSize
LD (HL),A ; § ¤ âì ¤«¨­ã «¨­¨¨
ACC_Off
DEC H
DEC H
LD A,L
NEG
ACC_SetBlockSize
LD (HL),A ; § ¤ âì ¤«¨­ã «¨­¨¨
ACC_Off
DEC H
DEC H
LD A,L
EXX
BIT 7,A
JR Z,NO_Z_A
XOR A
NO_Z_A:
OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y
OUT (PORT_Y),A ; § ¤ âì ¯®àâ Y
;!FIXIT âãâ ¬®¦¥â ¯¨á âìáï ¢ ®¡« áâì èà¨ä⮢
ACC_CopyScreenBlock
LD (DE),A ; ¢ë¢¥á⨠«¨­¨î
LD (DE),A ; ¢ë¢¥á⨠«¨­¨î
ACC_Off
LD A,E
@ -1021,16 +1018,16 @@ NO_Z_A:
;
NO_WRITE_LINE:
INC DE ; ­®¢®¥ §­ ç¥­¨¥ X
INC DE ; ­®¢®¥ §­ ç¥­¨¥ X
LD A,C
X_ADD2+1:
ADD A,0 ; X-add-parameter 2
ADD A,0 ; X-add-parameter 2
LD C,A
X_ADD+1:
LD A,0 ; X-add-parameter
LD A,0 ; X-add-parameter
ADC A,H
LD H,A ; á«¥¤ãîé ï «¨­¨ï WOLL
LD H,A ; á«¥¤ãîé ï «¨­¨ï WOLL
DJNZ WOLL_LOOP
@ -1174,7 +1171,7 @@ MAP_L8:
LD A,(HL)
LD (DE),A
LD A,L
SUB 40H
SUB #40
LD L,A
LD A,H
SBC A,0
@ -1605,15 +1602,15 @@ KBD_INT:
.NO_LAST_KEY:
POP AF
CP 20 ; CTRL
CP 20 ; CTRL
JR Z,.EFF_ON
CP 117 ; KEY_UP
CP 117 ; KEY_UP
JR Z,.DIR_UP
CP 114 ; KEY_DN
CP 114 ; KEY_DN
JR Z,.DIR_DN
CP 107 ; KEY_LF
CP 107 ; KEY_LF
JR Z,.DIR_LF
CP 116 ; KEY_RT
CP 116 ; KEY_RT
JR Z,.DIR_RT
JR .KBD_INT2
@ -1671,79 +1668,72 @@ OFF_BYTE: DB #FF
;
TAB_ANGLE:
DB 0,1 ; 0
DB 1,1 ; 45
DB 1,1 ; 45
DB 1,0 ; 90
DB 1,0 ; 90
DB 1,-1 ; 135
DB 1,-1 ; 135
DB 0,-1 ; 180
DB 0,-1 ; 180
DB -1,-1
DB -1,-1
DB -1,0
DB -1,0
DB -1,1
DB -1,1
DB 0,1 ; 0
DB 0 , 1 ; 0
DB 1 , 1 ; 45
DB 1 , 1 ; 45
DB 1 , 0 ; 90
DB 1 , 0 ; 90
DB 1 , -1 ; 135
DB 1 , -1 ; 135
DB 0 , -1 ; 180
DB 0 , -1 ; 180
DB -1 , -1
DB -1 , -1
DB -1 , 0
DB -1 , 0
DB -1 , 1
DB -1 , 1
DB 0 , 1 ; 0
TAB_ANGLE2:
DB 0,2 ; 0
DB 1,2 ; 22
DB 2,2 ; 45
DB 2,1 ; 67
DB 2,0 ; 90
DB 2,-1 ; 112
DB 2,-2 ; 135
DB 1,-2 ; 157
DB 0,-2 ; 180
DB -1,-2
DB -2,-2
DB -2,-1
DB -2,0
DB -2,1
DB -2,2
DB -1,2 ; 0
DB 0 , 2 ; 0
DB 1 , 2 ; 22
DB 2 , 2 ; 45
DB 2 , 1 ; 67
DB 2 , 0 ; 90
DB 2 , -1 ; 112
DB 2 , -2 ; 135
DB 1 , -2 ; 157
DB 0 , -2 ; 180
DB -1 , -2
DB -2 , -2
DB -2 , -1
DB -2 , 0
DB -2 , 1
DB -2 , 2
DB -1 , 2 ; 0
TAB_ANGLE3:
DB 4,2 ; 67
DB 4,1 ; 67
DB 4,0 ; 90
DB 4,-1 ; 112
DB 4,-2 ; 135
DB 4,-3 ; 135
DB 4,-4 ; 135
DB 3,-4 ; 157
DB 2,-4 ; 157
DB 1,-4 ; 157
DB 0,-4 ; 180
DB -1,-4
DB -2,-4
DB -3,-4
DB -4,-4
DB -4,-3
DB -4,-2
DB -4,-1
DB -4,0
DB -4,1
DB -4,2
DB -4,3
DB -4,4 ; 0
DB -3,4 ; 0
DB -2,4 ; 0
DB -1,4 ; 0
DB 0,4 ; 0
DB 1,4 ; 0
DB 2,4 ; 22
DB 3,4 ; 45
DB 4,4 ; 45
DB 4,3 ; 45
DB 4 , 2 ; 67
DB 4 , 1 ; 67
DB 4 , 0 ; 90
DB 4 , -1 ; 112
DB 4 , -2 ; 135
DB 4 , -3 ; 135
DB 4 , -4 ; 135
DB 3 , -4 ; 157
DB 2 , -4 ; 157
DB 1 , -4 ; 157
DB 0 , -4 ; 180
DB -1 , -4
DB -2 , -4
DB -3 , -4
DB -4 , -4
DB -4 , -3
DB -4 , -2
DB -4 , -1
DB -4 , 0
DB -4 , 1
DB -4 , 2
DB -4 , 3
DB -4 , 4 ; 0
DB -3 , 4 ; 0
DB -2 , 4 ; 0
DB -1 , 4 ; 0
DB 0 , 4 ; 0
DB 1 , 4 ; 0
DB 2 , 4 ; 22
DB 3 , 4 ; 45
DB 4 , 4 ; 45
DB 4 , 3 ; 45
MONSTR_ALL:
@ -1775,7 +1765,7 @@ MONSTR_LOOP:
SUB (IX+M_X+1) ; ¯®«®¦¥­¨¥ ¬®­áâà 
ADD A,64
JR Z,NO_M_OUT
BIT 7,A ; ¯à®¢¥àª  ­  ¤ «ì­®áâì
BIT 7,A ; ¯à®¢¥àª  ­  ¤ «ì­®áâì
JR NZ,NO_M_OUT ; ­¥ ¢ë¢®¤¨âì
SUB 64
@ -1792,7 +1782,7 @@ MONSTR_LOOP:
SUB 64
NEG
LD H,A ; H - Y, L - X
LD H,A ; H - Y, L - X
OR L
JR Z,NO_M_OUT ; ¯à®¢¥àª  ­  0
@ -1800,7 +1790,7 @@ MONSTR_LOOP:
BIT 7,H
JR Z,A_NO_ADD4
LD A,H ; ¯®¢®à®â ­  180 -X->X; -Y->Y
LD A,H ; ¯®¢®à®â ­  180 -X->X; -Y->Y
NEG
LD H,A
LD A,L
@ -1810,7 +1800,7 @@ MONSTR_LOOP:
A_NO_ADD4:
BIT 7,L
JR Z,A_NO_ADD2
LD A,L ; ¯®¢®à®â ­  90 Y->X; -X->Y
LD A,L ; ¯®¢®à®â ­  90 Y->X; -X->Y
NEG
LD L,H
LD H,A
@ -1823,7 +1813,6 @@ A_NO_ADD2:
; H - Y-ª®®à¤¨­ â 
MONSTR_ALL1:
LD A,L
ADD A,A
ADD A,A
@ -1839,23 +1828,23 @@ MONSTR_ALL1:
LD A,(PAGE_M_PLACE)
OUT (SLOT1),A
LD E,(HL) ; 㣮« ¬« ¤è¨©
LD E,(HL) ; 㣮« ¬« ¤è¨©
INC L
LD D,(HL) ; 㣮« áâ à訩
LD D,(HL) ; 㣮« áâ à訩
INC L
LD C,(HL) ; ¢ëá®â 
LD C,(HL) ; ¢ëá®â 
POP AF
OUT (SLOT1),A
LD A,D
ADD A,B
LD D,A ; ¤®¡ ¢¨âì ª¢ ¤à ­â
LD D,A ; ¤®¡ ¢¨âì ª¢ ¤à ­â
DEC C
BIT 7,C
JR Z,MONST_H1
LD C,0 ; ¬®­áâà à冷¬
LD C,0 ; ¬®­áâà à冷¬
MONST_H1:
INC C
LD (IX+M_HIGH),C ; ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨
@ -1880,12 +1869,14 @@ MONST_H1:
LD (IX+M_HOR),L ; 㣮«
LD (IX+M_HOR+1),H
LD DE,128
ADD HL,DE
; LD DE,128 ; € çñ¡ ­¥ ã¯à®áâ¨âì â ª:
; ADD HL,DE ; LD DE,256+320-128
; LD DE,256+320 ; SBC HL,DE
; AND A ; ¨ ¢áñ... HL ¬®¦¥â ¯¥à¥¯®«­ïâìáï ¯à¨ ADD 128? - ­¥â
; SBC HL,DE ; ; ¯à®¢¥àª  ¯®¯ ¤ ­¨ï ¬®­áâà  ¢ 㣮« §à¥­¨ï
LD DE,256+320-128
SBC HL,DE ; ¯à®¢¥àª  ¯®¯ ¤ ­¨ï ¬®­áâà  ¢ 㣮« §à¥­¨ï
LD DE,256+320
AND A
SBC HL,DE ; ¯à®¢¥àª  ¯®¯ ¤ ­¨ï ¬®­áâà  ¢ 㣮« §à¥­¨ï
CALL C,WALL
@ -1902,15 +1893,15 @@ MONSTR_NEXT_P:
RET NZ
LD A,(IX+M_VAR2) ; áç¥â稪 横« 
AND 0Fh
AND #0F
RLCA
RLCA
RLCA
RLCA
ADD A,(IX+M_VAR2) ; ¤®¡ ¢¨âì ¬« ¤è¨© ¡ ©â ª áâ à襬ã
LD (IX+M_VAR2),A
AND 0F0h
RET NZ ; ¢¥à­ãâìáï, ¥á«¨ ­¥ 0
AND #F0
RET NZ ; ¢¥à­ãâìáï, ¥á«¨ ­¥ 0
; JR NC,NO_ADD_MX
BIT 6,(IX+M_VAR3) ; ¡¨â ¥¤¨­¨ç­®£® ¯®ª §  横« 
@ -1962,15 +1953,15 @@ CONT_MONS:
LD A,(IX+M_ADR+1) ; ¯¥à¥ª«îç â¥«ì  ¤à¥á 
ADD A,(IX+M_VAR4) ; ᪮«ìª® ¤®¡ ¢«ïâì
AND 3Fh
OR 40h
AND #3F
OR #40
LD (IX+M_ADR+1),A
CP 40h ; ¯à¨§­ ª § ¢¥à襭¨ï 横« 
CP #40 ; ¯à¨§­ ª § ¢¥à襭¨ï 横« 
RET
SW_MONS:
LD A,(IX+M_ADR) ; ¯¥à¥ª«îç â¥«ì  ¤à¥á 
ADD A,40H
ADD A,#40
LD (IX+M_ADR),A
AND A ; ¯à¨§­ ª § ¢¥à襭¨ï 横« 
;NO_ADD_MX:
@ -2009,9 +2000,9 @@ SAVE_P2: DW 0
SAVE_PIC:
IN A,(SCREEN_SWITCH)
AND 1
LD HL,#C040
LD HL,ScreenStartAddress
JR NZ,SET_1X
LD HL,#C180
LD HL,ScreenStartAddress + #0140
SET_1X:
LD IX,TABLE_PIC
LD A,(IX)

438
DOOM2.asm
View File

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

View File

@ -1,5 +1,6 @@
;-----------------------------------------------------------------------
;!FIXIT ¯¥à¥¤¥« âì ¬ã§«® ­  API 5x
;-------[¨­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à ]------;
INIT_HDD_WORK:
.currentDisk+1: ;
@ -61,20 +62,6 @@ INIT_HDD_WORK:
OUT (SLOT3),A
;[ ] 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 DE,Temp_Buffer
LD A,FAT_ATTR.DIRECTORY

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