...
This commit is contained in:
parent
c8d95662c8
commit
d3c7979b19
@ -1 +1 @@
|
|||||||
Subproject commit 84d47b2818758fdceda21ecf2953324c1f339858
|
Subproject commit 713bcf1538ff822231da15aed4d8fb7611ebe205
|
||||||
Binary file not shown.
@ -44,7 +44,7 @@
|
|||||||
; POP AF
|
; POP AF
|
||||||
; RET
|
; RET
|
||||||
HD_BPB_PREP:
|
HD_BPB_PREP:
|
||||||
; [ ] 27/01/2023
|
; [x] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD
|
||||||
;LD D,A
|
;LD D,A
|
||||||
;IN A,(SLOT3)
|
;IN A,(SLOT3)
|
||||||
;EX AF,AF'
|
;EX AF,AF'
|
||||||
@ -238,7 +238,7 @@ FN_HDD_READ_BPB:
|
|||||||
CALL HD_WAIT
|
CALL HD_WAIT
|
||||||
RET C
|
RET C
|
||||||
CALL HD_BPB_PREP
|
CALL HD_BPB_PREP
|
||||||
JR NC,HD_RD_L1
|
JR NC,FN_HDD_READ.L1
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ FN_HDD_READ_NEXT:
|
|||||||
CALL HD_WAIT
|
CALL HD_WAIT
|
||||||
RET C
|
RET C
|
||||||
CALL NEXT_ADD_SEC
|
CALL NEXT_ADD_SEC
|
||||||
JR HD_RD_L1
|
JR FN_HDD_READ.L1
|
||||||
|
|
||||||
|
|
||||||
; HL - BUFER, A - PAGE
|
; HL - BUFER, A - PAGE
|
||||||
@ -266,44 +266,25 @@ FN_HDD_READ:
|
|||||||
CALL HD_WAIT
|
CALL HD_WAIT
|
||||||
CALL NC,HD_PREPARE
|
CALL NC,HD_PREPARE
|
||||||
RET C
|
RET C
|
||||||
HD_RD_L1:
|
.L1: EXX
|
||||||
EXX
|
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
EXX
|
EXX
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
;
|
||||||
SAFE_PORTY
|
SAFE_PORTY
|
||||||
|
;
|
||||||
LD BC,IDE.Write.Command
|
LD BC,IDE.Write.Command
|
||||||
LD A,IDE.ATA.ReadSectorsWithRetry
|
LD A,IDE.ATA.ReadSectorsWithRetry
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
HD_RD_L2:
|
.L2: WAIT_HDD
|
||||||
WAIT_HDD
|
|
||||||
|
|
||||||
;BIT IDE.ControlBit.DataRequest,A
|
;BIT IDE.ControlBit.DataRequest,A
|
||||||
AND IDE.ControlByte.DataRequest
|
AND IDE.ControlByte.DataRequest
|
||||||
JR NZ,HD_READ_CONT
|
JR Z,HD_RET_PortY
|
||||||
|
;
|
||||||
ZERO_PORTY
|
;HD_READ_CONT
|
||||||
HD_RET:
|
|
||||||
EXX
|
|
||||||
OUT (C),B
|
|
||||||
EXX
|
|
||||||
LD BC,IDE.Read.Error
|
|
||||||
IN A,(C)
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET NZ
|
|
||||||
|
|
||||||
EX AF,AF'
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
|
|
||||||
HD_READ_CONT:
|
|
||||||
LD BC,IDE.Read.Data
|
LD BC,IDE.Read.Data
|
||||||
|
|
||||||
.loop_read1:
|
.loop_read1:
|
||||||
DUP 16
|
DUP 16
|
||||||
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®.
|
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®.
|
||||||
@ -314,21 +295,38 @@ HD_READ_CONT:
|
|||||||
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®.
|
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®.
|
||||||
EDUP
|
EDUP
|
||||||
JR NZ,.loop_read2
|
JR NZ,.loop_read2
|
||||||
|
;
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JR NZ,HD_RD_L2
|
JR NZ,.L2
|
||||||
|
;
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,SYS_PAGE.RAMD_FAT
|
LD H,high SYS_PAGE.RAMD_FAT
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,#C000 ; !!!!!
|
LD HL,#C000 ; !!!!!
|
||||||
JR HD_RD_L2
|
JR .L2
|
||||||
|
|
||||||
|
|
||||||
|
HD_RET_PortY:
|
||||||
|
ZERO_PORTY
|
||||||
|
HD_RET: EXX
|
||||||
|
OUT (C),B
|
||||||
|
EXX
|
||||||
|
LD BC,IDE.Read.Error
|
||||||
|
IN A,(C)
|
||||||
|
AND A
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
; HL - BUFER, A - PAGE
|
; HL - BUFER, A - PAGE
|
||||||
FN_HDD_WRITE:
|
FN_HDD_WRITE:
|
||||||
@ -357,7 +355,7 @@ HD_WR_L2:
|
|||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
|
|
||||||
BIT IDE.ControlBit.DataRequest,A
|
BIT IDE.ControlBit.DataRequest,A
|
||||||
JP Z,HD_RET
|
JR Z,HD_RET
|
||||||
|
|
||||||
LD BC,IDE.Write.Data
|
LD BC,IDE.Write.Data
|
||||||
LD D,32 ;!HARDCODE § ¢¨á¨â ®â áçñâ稪 DUP ¢ HD_WR_LOOP
|
LD D,32 ;!HARDCODE § ¢¨á¨â ®â áçñâ稪 DUP ¢ HD_WR_LOOP
|
||||||
@ -376,7 +374,7 @@ HD_WR_LOOP:
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD HL,SYS_PAGE.RAMD_FAT
|
LD H,high SYS_PAGE.RAMD_FAT
|
||||||
LD L,A
|
LD L,A
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -384,6 +382,7 @@ HD_WR_LOOP:
|
|||||||
LD HL,#C000 ;!!!!!
|
LD HL,#C000 ;!!!!!
|
||||||
JR HD_WR_L2
|
JR HD_WR_L2
|
||||||
|
|
||||||
|
; [ ] ¯®ª à ¡®â ¥â ⮫쪮 á ®¤¨¬ ª «®¬ (¯®-áâ ஬ã)
|
||||||
FN_HDD_RECAL:
|
FN_HDD_RECAL:
|
||||||
LD A,IDE.Drive.Master
|
LD A,IDE.Drive.Master
|
||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
@ -407,34 +406,82 @@ FN_HDD_RECAL:
|
|||||||
; CALL HD_CMD_EXE
|
; CALL HD_CMD_EXE
|
||||||
; RET
|
; RET
|
||||||
|
|
||||||
|
; [x] 28/01/2024 à ¡®â ¥â á® ¢á¥¬¨ ª « ¬¨
|
||||||
FN_HDD_TEST_IDE:
|
FN_HDD_TEST_IDE:
|
||||||
LD E,#00
|
LD E,#00
|
||||||
LD BC,IDE.Write.DeviceHead
|
; TEST Secondary Chanel
|
||||||
LD A,IDE.Drive.Master
|
LD A,IDE.Chanel.Secondary
|
||||||
OUT (C),A
|
OUT (IDE.Chanel.Set),A
|
||||||
|
CALL .TEST_CHANEL
|
||||||
CALL TEST_HDD_DRV
|
SLA E
|
||||||
|
SLA E
|
||||||
JR NZ,NO_HDD1
|
; TEST Primary Chanel
|
||||||
SET 0,E
|
LD A,IDE.Chanel.Primary
|
||||||
NO_HDD1:
|
OUT (IDE.Chanel.Set),A
|
||||||
LD BC,IDE.Write.DeviceHead
|
CALL .TEST_CHANEL
|
||||||
LD A,IDE.Drive.Slave
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
OUT (C),A
|
; LD BC,IDE.Write.DeviceHead
|
||||||
|
; LD A,IDE.Drive.Master
|
||||||
CALL TEST_HDD_DRV
|
; OUT (C),A
|
||||||
|
; ;
|
||||||
JR NZ,NO_HDD2
|
; CALL TEST_HDD_DRV
|
||||||
SET 1,E
|
; ;
|
||||||
NO_HDD2:
|
; JR NZ,.NO_HDD1
|
||||||
LD A,E
|
; SET 0,E
|
||||||
|
; .NO_HDD1:
|
||||||
|
; LD BC,IDE.Write.DeviceHead
|
||||||
|
; LD A,IDE.Drive.Slave
|
||||||
|
; OUT (C),A
|
||||||
|
; ;
|
||||||
|
; CALL TEST_HDD_DRV
|
||||||
|
; ;
|
||||||
|
; JR NZ,.NO_HDD2
|
||||||
|
; SET 1,E
|
||||||
|
; .NO_HDD2:
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,(SYS_PAGE.CURRENT_HDD)
|
||||||
|
OUT (C),B
|
||||||
|
CP #FF
|
||||||
|
JR Z,.exit
|
||||||
|
AND 1
|
||||||
|
JR Z,.exit
|
||||||
|
LD A,IDE.Chanel.Secondary
|
||||||
|
OUT (IDE.Chanel.Set),A
|
||||||
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
.exit: LD A,E
|
||||||
AND A
|
AND A
|
||||||
SCF
|
SCF
|
||||||
RET Z ; HDD absent !
|
RET Z ; HDD absent !
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
.TEST_CHANEL:
|
||||||
|
LD BC,IDE.Write.DeviceHead
|
||||||
|
LD A,IDE.Drive.Master
|
||||||
|
OUT (C),A
|
||||||
|
;
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
;
|
||||||
|
JR NZ,.NO_HDD1
|
||||||
|
SET 0,E
|
||||||
|
.NO_HDD1:
|
||||||
|
LD BC,IDE.Write.DeviceHead
|
||||||
|
LD A,IDE.Drive.Slave
|
||||||
|
OUT (C),A
|
||||||
|
;
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
;
|
||||||
|
RET NZ
|
||||||
|
SET 1,E
|
||||||
|
RET
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
;-----------------------------------[DIFFERENT]
|
;-----------------------------------[DIFFERENT]
|
||||||
; <20>¥ ¤®«¦ ¯®àâ¨âì ॣ¨áâà E!!!
|
; <20>¥ ¤®«¦ ¯®àâ¨âì ॣ¨áâà E!!!
|
||||||
@ -446,7 +493,7 @@ TEST_HDD_DRV:
|
|||||||
IF IDE_Optimization
|
IF IDE_Optimization
|
||||||
INC C
|
INC C
|
||||||
OUT (C),H ; IDE.Write.Sector
|
OUT (C),H ; IDE.Write.Sector
|
||||||
|
;
|
||||||
DEC C
|
DEC C
|
||||||
INC B
|
INC B
|
||||||
IN A,(C) ; ????? IDE.Write.Counter+#100
|
IN A,(C) ; ????? IDE.Write.Counter+#100
|
||||||
@ -497,7 +544,7 @@ TEST_HDD_DRV:
|
|||||||
; RET
|
; RET
|
||||||
|
|
||||||
|
|
||||||
; [ ] 07/01/2024 bit1: Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
|
; [x] 07/01/2024 bit1: Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
|
||||||
; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á SYS_PAGE.IDE_0..3
|
; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á SYS_PAGE.IDE_0..3
|
||||||
FN_HDD_PART:
|
FN_HDD_PART:
|
||||||
DI
|
DI
|
||||||
@ -554,7 +601,7 @@ FN_HDD_PART:
|
|||||||
SCF
|
SCF
|
||||||
JR .exit
|
JR .exit
|
||||||
|
|
||||||
; [ ] 27/01/2024 ¤ ¯â¨à®¢ ¤«ï ª®à४⮩ à ¡®âë á FN_HDD_PART
|
; [x] 27/01/2024 ¤ ¯â¨à®¢ ¤«ï ª®à४⮩ à ¡®âë á FN_HDD_PART
|
||||||
FN_HDD_INIT:
|
FN_HDD_INIT:
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
@ -645,10 +692,6 @@ FN_HDD_INIT:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
|
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
|
||||||
CALL HD_CMD_EXE
|
CALL HD_CMD_EXE
|
||||||
;
|
|
||||||
;
|
|
||||||
;
|
|
||||||
;
|
|
||||||
RET
|
RET
|
||||||
HD_CMD_EXE:
|
HD_CMD_EXE:
|
||||||
CALL HD_WAIT
|
CALL HD_WAIT
|
||||||
@ -782,7 +825,7 @@ HD_CALC_SECS:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; [ ] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD
|
; [x] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD
|
||||||
SET_BPB_OFFSET:
|
SET_BPB_OFFSET:
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
LD HL,SYS_PAGE.MS_BPB
|
LD HL,SYS_PAGE.MS_BPB
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user