+ READ_PORTS, * FN_HDD_PART и FN_HDD_INIT переделаны
This commit is contained in:
parent
84e81ef7df
commit
832cbf9460
@ -1 +1 @@
|
|||||||
Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e
|
Subproject commit 5cb5d02cf145ff2d6d14fca5a5f9a5fb2ec6a673
|
||||||
Binary file not shown.
@ -235,8 +235,8 @@ TAB_FNS:
|
|||||||
DB low CMOS_RD ; #F6
|
DB low CMOS_RD ; #F6
|
||||||
DB low CMOS_WR ; #F7
|
DB low CMOS_WR ; #F7
|
||||||
DB low SET_PORTS ; #F8
|
DB low SET_PORTS ; #F8
|
||||||
DB low READ_PORTS ; #F9 !TODO
|
DB low READ_PORTS ; #F9 [x] 26/01/2024
|
||||||
DB low WRITE_PORTS ; #FA !TODO
|
DB low FN_RESERVED ; #FA [x] 26/01/2024 ¥ à ¡®â « ¨ ¥ 㦠, ¤ã¡«¨àã¥â SET_PORTS
|
||||||
DB low GOTO_SPEC ; #FB Goto Spectrum!
|
DB low GOTO_SPEC ; #FB Goto Spectrum!
|
||||||
DB low FN_RESERVED ; #FC
|
DB low FN_RESERVED ; #FC
|
||||||
DB low REINIT ; #FD
|
DB low REINIT ; #FD
|
||||||
@ -428,7 +428,7 @@ TAB_FNS:
|
|||||||
DB high CMOS_WR
|
DB high CMOS_WR
|
||||||
DB high SET_PORTS
|
DB high SET_PORTS
|
||||||
DB high READ_PORTS
|
DB high READ_PORTS
|
||||||
DB high WRITE_PORTS
|
DB high FN_RESERVED
|
||||||
DB high GOTO_SPEC
|
DB high GOTO_SPEC
|
||||||
DB high FN_RESERVED
|
DB high FN_RESERVED
|
||||||
DB high REINIT
|
DB high REINIT
|
||||||
|
|||||||
@ -582,17 +582,73 @@ DCP_CONFIG:
|
|||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
;[x] 26/01/2024
|
||||||
|
READ_PORTS:
|
||||||
|
CALL SET_PORTS.Prepare
|
||||||
|
LD BC,0
|
||||||
|
IN B,(C)
|
||||||
|
JR SET_PORTS.End
|
||||||
|
|
||||||
|
;[x] 26/01/2024
|
||||||
|
; WRITE_PORTS:
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;
|
;
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;[x] ’¥¯¥àì íâ® ¥ 㦮: CALL from 3D13h! Žáâ®à®¦¥¥ á ¯à¥àë¢ ¨ï¬¨, «ãçè¥ £ á¨âì, ç⮡ ¥ ᡨâì ᨣ « DOS_ON
|
;[x] ’¥¯¥àì íâ® ¥ 㦮: CALL from 3D13h! Žáâ®à®¦¥¥ á ¯à¥àë¢ ¨ï¬¨, «ãçè¥ £ á¨âì, ç⮡ ¥ ᡨâì ᨣ « DOS_ON
|
||||||
; in: A - ¢ãâ२© ¯®àâ, B - § 票¥ ¤«ï § ¯¨á¨ ¢® ¢ãâ२© ¯®àâ
|
; in: A - ¢ãâ२© ¯®àâ, B - § 票¥ ¤«ï § ¯¨á¨ ¢® ¢ãâ२© ¯®àâ
|
||||||
; out: B - áâ ஥ § 票¥ ¢ãâ॥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ ¢«¨¢ ¥âáï ª®ä ¯à®¯¨á ï ¢ CONFIG_DE.
|
; out: B - áâ ஥ § 票¥ ¢ãâ॥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ ¢«¨¢ ¥âáï ª®ä ¯à®¯¨á ï ¢ CONFIG_DE.
|
||||||
SET_PORTS:
|
SET_PORTS:
|
||||||
|
CALL .Prepare
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,B
|
||||||
|
LD BC,0
|
||||||
|
EX AF,AF'
|
||||||
|
;
|
||||||
|
; —⥨¥ ¯®àâ
|
||||||
|
IN A,(C)
|
||||||
|
; ‡ ¯¨áì ¯®àâ
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (C),A ; ãáâ ®¢¨âì ®¢®¥ § 票¥ ¯®àâ
|
||||||
|
EX AF,AF'
|
||||||
|
;
|
||||||
|
LD B,A ; ¯à®è«®¥ á®áâ®ï¨¥ ¯®àâ
|
||||||
|
;
|
||||||
|
.End: LD A,DCP_PAGE ; ãáâ ®¢¨âì DCP
|
||||||
|
LD C,SLOT2
|
||||||
|
OUT (C),A
|
||||||
|
LD A,L
|
||||||
|
LD (#8000),A ; ¢¥àãâì ¯®àâ
|
||||||
|
LD A,H
|
||||||
|
LD (#8200),A ; ¢¥àãâì ¯®àâ
|
||||||
|
;
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (C),A
|
||||||
|
LD A,(SYS_PAGE.CONFIG_DE-#4000)
|
||||||
|
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||||||
|
OUT (SYS_PORT.ROM),A
|
||||||
|
;
|
||||||
|
CALL DOS_OFF
|
||||||
|
;
|
||||||
|
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||||||
|
BIT 2,E
|
||||||
|
RET Z
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
;AND A
|
||||||
|
;RET
|
||||||
|
;
|
||||||
|
.Prepare:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||||||
AND A
|
AND A
|
||||||
LD A,R
|
LD A,R
|
||||||
PUSH AF
|
PUSH AF
|
||||||
|
POP DE
|
||||||
DI
|
DI
|
||||||
CALL DOS_ON
|
CALL DOS_ON
|
||||||
;
|
;
|
||||||
@ -613,41 +669,7 @@ SET_PORTS:
|
|||||||
;
|
;
|
||||||
LD (#8000),A ; ãáâ ®¢¨âì ¢ãâ२© ¯®àâ
|
LD (#8000),A ; ãáâ ®¢¨âì ¢ãâ२© ¯®àâ
|
||||||
LD (#8200),A
|
LD (#8200),A
|
||||||
;
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,B
|
|
||||||
LD BC,0
|
|
||||||
EX AF,AF'
|
|
||||||
;
|
|
||||||
IN A,(C)
|
|
||||||
;
|
|
||||||
EX AF,AF'
|
|
||||||
OUT (C),A ; ãáâ ®¢¨âì ®¢®¥ § 票¥ ¯®àâ
|
|
||||||
EX AF,AF'
|
|
||||||
;
|
|
||||||
LD B,A
|
|
||||||
LD A,L
|
|
||||||
LD (#8000),A ; ¢¥àãâì ¯®àâ
|
|
||||||
LD A,H
|
|
||||||
LD (#8200),A ; ¢¥àãâì ¯®àâ
|
|
||||||
|
|
||||||
LD C,SLOT2
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (C),A
|
|
||||||
LD A,(SYS_PAGE.CONFIG_DE-#4000)
|
|
||||||
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
OUT (C),D ; ¢¥àãâì áâà ¨æã
|
||||||
OUT (SYS_PORT.ROM),A
|
|
||||||
;
|
|
||||||
CALL DOS_OFF
|
|
||||||
;
|
|
||||||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
|
||||||
POP AF
|
|
||||||
RET PO
|
|
||||||
EI
|
|
||||||
RET
|
RET
|
||||||
;
|
|
||||||
;AND A
|
|
||||||
;RET
|
|
||||||
;
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
@ -596,15 +596,15 @@ SET_DOS_OFF:
|
|||||||
|
|
||||||
;
|
;
|
||||||
FDD.SET720:
|
FDD.SET720:
|
||||||
LD A,#01 ;!HARDCODE
|
LD A,FDD_Density.SET_720
|
||||||
OUT (#BD),A ;!HARDCODE
|
OUT (FDD_Density),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
FDD.SET1440:
|
FDD.SET1440:
|
||||||
LD A,#21 ;!HARDCODE
|
LD A,FDD_Density.SET_1440
|
||||||
OUT (#BD),A ;!HARDCODE
|
OUT (FDD_Density),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -7,32 +7,89 @@
|
|||||||
ENDM
|
ENDM
|
||||||
;______________________________________________________________________:
|
;______________________________________________________________________:
|
||||||
;
|
;
|
||||||
;--
|
|
||||||
|
; GET_BPB_OFFSET:
|
||||||
|
; ;LD A,SYS_PAGE
|
||||||
|
; ;LD HL,MS_BPB
|
||||||
|
; PUSH AF
|
||||||
|
; PUSH HL
|
||||||
|
; LD B,1
|
||||||
|
; LD IX,#0000
|
||||||
|
; LD DE,#0000
|
||||||
|
; CALL FN_HDD_READ
|
||||||
|
; POP IX
|
||||||
|
; POP AF
|
||||||
|
; PUSH AF
|
||||||
|
; PUSH IX
|
||||||
|
; LD DE,#01BE ;!HARDCODE ᬥ饨¥ ®â ç « ᥪâ®à ¤«ï â ¡«¨æë à §¤¥«®¢
|
||||||
|
; ADD IX,DE
|
||||||
|
; ;
|
||||||
|
; EX AF,AF'
|
||||||
|
; IN A,(SLOT3)
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; ;
|
||||||
|
; LD E,(IX+8) ; ¯¥à¢ë© ᥪâ®à (LBA) ç « à §¤¥« (DWORD)
|
||||||
|
; LD D,(IX+9)
|
||||||
|
; LD L,(IX+10)
|
||||||
|
; LD H,(IX+11)
|
||||||
|
; ;
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; EX AF,AF'
|
||||||
|
; ;
|
||||||
|
; PUSH HL
|
||||||
|
; POP IX
|
||||||
|
; POP HL
|
||||||
|
; POP AF
|
||||||
|
; RET
|
||||||
HD_BPB_PREP:
|
HD_BPB_PREP:
|
||||||
LD D,A
|
; [ ] 27/01/2023
|
||||||
|
;LD D,A
|
||||||
|
;IN A,(SLOT3)
|
||||||
|
;EX AF,AF'
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
|
||||||
|
; LD E,A
|
||||||
|
;EX AF,AF'
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;LD A,D
|
||||||
|
;LD D,#00
|
||||||
|
;LD IX,#0000
|
||||||
|
;LD B,#01
|
||||||
|
|
||||||
|
|
||||||
|
LD B,A
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.CURRENT_HDD)
|
||||||
|
INC A
|
||||||
|
JR NZ,.configured
|
||||||
|
;
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
|
||||||
LD E,A
|
LD E,A
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD A,D
|
|
||||||
LD D,#00
|
LD D,#00
|
||||||
LD IX,#0000
|
LD IX,#0000
|
||||||
|
JR .done
|
||||||
|
;
|
||||||
|
.configured:
|
||||||
|
LD IX,(SYS_PAGE.HDD_PARTITION_OFFSET+2)
|
||||||
|
LD DE,(SYS_PAGE.HDD_PARTITION_OFFSET)
|
||||||
|
.done: EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,B
|
||||||
LD B,#01
|
LD B,#01
|
||||||
|
;
|
||||||
HD_PREPARE:
|
HD_PREPARE:
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL HD_CALC_SECS
|
CALL HD_CALC_SECS
|
||||||
JR NC,.L1
|
JR C,.error
|
||||||
POP HL
|
;
|
||||||
POP AF
|
LD A,B
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
|
|
||||||
.L1: LD A,B
|
|
||||||
LD BC,IDE.Write.Counter ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨
|
LD BC,IDE.Write.Counter ; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
@ -57,13 +114,16 @@ HD_PREPARE:
|
|||||||
AND #F0 ; !!!!! ¯®á¬®âà¥âì
|
AND #F0 ; !!!!! ¯®á¬®âà¥âì
|
||||||
OR H
|
OR H
|
||||||
INC B ; IDE.Write.DeviceHead
|
INC B ; IDE.Write.DeviceHead
|
||||||
|
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
POP HL ; BUFER & PAGE
|
POP HL ; BUFER & PAGE
|
||||||
POP AF
|
POP AF
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
.error: POP HL
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
|
||||||
|
|
||||||
NEXT_ADD_SEC:
|
NEXT_ADD_SEC:
|
||||||
@ -222,7 +282,8 @@ HD_RD_L1:
|
|||||||
HD_RD_L2:
|
HD_RD_L2:
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
|
|
||||||
BIT IDE.ControlBit.DataRequest,A
|
;BIT IDE.ControlBit.DataRequest,A
|
||||||
|
AND IDE.ControlByte.DataRequest
|
||||||
JR NZ,HD_READ_CONT
|
JR NZ,HD_READ_CONT
|
||||||
|
|
||||||
ZERO_PORTY
|
ZERO_PORTY
|
||||||
@ -404,45 +465,114 @@ TEST_HDD_DRV:
|
|||||||
IN A,(C) ; ????? IDE.Write.Sector+#100
|
IN A,(C) ; ????? IDE.Write.Sector+#100
|
||||||
CP H
|
CP H
|
||||||
RET
|
RET
|
||||||
/*
|
|
||||||
TEST_HDD_DRV:
|
|
||||||
; EXTENDED.ASM variant
|
|
||||||
LD HL,#00FF ;?????
|
|
||||||
LD BC,IDE.Write.CylinderLow
|
|
||||||
OUT (C),L
|
|
||||||
IF IDE_Optimization
|
|
||||||
INC C
|
|
||||||
OUT (C),H ; IDE.Write.CylinderHigh
|
|
||||||
|
|
||||||
INC B
|
; TEST_HDD_DRV:
|
||||||
DEC C
|
; ; EXTENDED.ASM variant
|
||||||
IN A,(C) ; ????? ’ãâ ॣ¨áâà BC = #0254 - çâ® § ¯®àâ â ª®© ¨ çâ® ®ââ㤠¯à®ç¨â ¥âáï?
|
; LD HL,#00FF ;?????
|
||||||
CP L
|
; LD BC,IDE.Write.CylinderLow
|
||||||
RET NZ
|
; OUT (C),L
|
||||||
INC C
|
; IF IDE_Optimization
|
||||||
|
; INC C
|
||||||
|
; OUT (C),H ; IDE.Write.CylinderHigh
|
||||||
|
|
||||||
ELSE
|
; INC B
|
||||||
LD BC,IDE.Write.CylinderHigh
|
; DEC C
|
||||||
OUT (C),H
|
; IN A,(C) ; ????? ’ãâ ॣ¨áâà BC = #0254 - çâ® § ¯®àâ â ª®© ¨ çâ® ®ââ㤠¯à®ç¨â ¥âáï?
|
||||||
LD BC,#0254 ;???!!!!
|
; CP L
|
||||||
IN A,(C)
|
; RET NZ
|
||||||
CP L
|
; INC C
|
||||||
RET NZ
|
|
||||||
LD BC,#0255 ;???!!!!
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IN A,(C) ; ????? ’ãâ ॣ¨áâà BC = #0255 - çâ® § ¯®àâ â ª®© ¨ çâ® ®ââ㤠¯à®ç¨â ¥âáï?
|
; ELSE
|
||||||
CP H
|
; LD BC,IDE.Write.CylinderHigh
|
||||||
RET
|
; OUT (C),H
|
||||||
*/
|
; LD BC,#0254 ;???!!!!
|
||||||
|
; IN A,(C)
|
||||||
|
; CP L
|
||||||
|
; RET NZ
|
||||||
|
; LD BC,#0255 ;???!!!!
|
||||||
|
; ENDIF
|
||||||
|
|
||||||
|
; IN A,(C) ; ????? ’ãâ ॣ¨áâà BC = #0255 - çâ® § ¯®àâ â ª®© ¨ çâ® ®ââ㤠¯à®ç¨â ¥âáï?
|
||||||
|
; CP H
|
||||||
|
; RET
|
||||||
|
|
||||||
|
|
||||||
FN_HDD_INIT:
|
; [ ] 07/01/2024 bit1: Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
|
||||||
LD BC,IDE.Write.DeviceHead
|
; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á SYS_PAGE.IDE_0..3
|
||||||
|
FN_HDD_PART:
|
||||||
|
DI
|
||||||
|
PUSH BC
|
||||||
|
PUSH HL
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
;
|
||||||
|
LD C,A
|
||||||
|
AND 2
|
||||||
|
LD A,IDE.Chanel.Primary
|
||||||
|
JR Z,.SET_CH
|
||||||
|
LD A,IDE.Chanel.Secondary
|
||||||
|
.SET_CH:
|
||||||
|
OUT (IDE.Chanel.Set),A
|
||||||
|
;
|
||||||
|
LD A,C
|
||||||
|
PUSH AF
|
||||||
|
AND 1
|
||||||
|
;
|
||||||
|
LD A,IDE.Drive.Slave
|
||||||
|
JR NZ,.SET_Master_Slave
|
||||||
|
;
|
||||||
LD A,IDE.Drive.Master
|
LD A,IDE.Drive.Master
|
||||||
|
.SET_Master_Slave:
|
||||||
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
CALL TEST_HDD_DRV
|
CALL TEST_HDD_DRV
|
||||||
JR NZ,.ABSENT
|
JR NZ,.Error
|
||||||
|
;
|
||||||
|
CALL FN_HDD_INIT.L3
|
||||||
|
JR C,.Error
|
||||||
|
;
|
||||||
|
POP BC
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;e tu
|
||||||
|
LD A,B
|
||||||
|
LD (SYS_PAGE.CURRENT_HDD),A
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
CALL SET_BPB_OFFSET
|
||||||
|
;AND A
|
||||||
|
.exit: POP HL
|
||||||
|
POP BC
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.Error: POP AF
|
||||||
|
SCF
|
||||||
|
JR .exit
|
||||||
|
|
||||||
|
; [ ] 27/01/2024 ¤ ¯â¨à®¢ ¤«ï ª®à४⮩ à ¡®âë á FN_HDD_PART
|
||||||
|
FN_HDD_INIT:
|
||||||
|
LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,(SYS_PAGE.CURRENT_HDD)
|
||||||
|
OUT (C),B
|
||||||
|
INC A
|
||||||
|
JR Z,FN_HDD_PART
|
||||||
|
CALL TEST_HDD_DRV
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
; LD BC,IDE.Write.DeviceHead
|
||||||
|
; LD A,IDE.Drive.Master
|
||||||
|
; OUT (C),A
|
||||||
|
; CALL TEST_HDD_DRV
|
||||||
|
; JR NZ,.ABSENT
|
||||||
;
|
;
|
||||||
.L3: WAIT_HDD
|
.L3: WAIT_HDD
|
||||||
LD BC,IDE.Write.Command
|
LD BC,IDE.Write.Command
|
||||||
@ -450,17 +580,20 @@ FN_HDD_INIT:
|
|||||||
OUT (C),A
|
OUT (C),A
|
||||||
WAIT_HDD
|
WAIT_HDD
|
||||||
BIT IDE.ControlBit.DataRequest,A
|
BIT IDE.ControlBit.DataRequest,A
|
||||||
JR NZ,.L2
|
;JR NZ,.L2
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET Z
|
||||||
.ABSENT:
|
;JR NZ,.L2
|
||||||
LD BC,IDE.Write.DeviceHead
|
;SCF
|
||||||
LD A,IDE.Drive.Slave
|
;RET
|
||||||
OUT (C),A
|
; .ABSENT:
|
||||||
CALL TEST_HDD_DRV
|
; LD BC,IDE.Write.DeviceHead
|
||||||
JR Z,.L3
|
; LD A,IDE.Drive.Slave
|
||||||
SCF
|
; OUT (C),A
|
||||||
RET
|
; CALL TEST_HDD_DRV
|
||||||
|
; JR Z,.L3
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
;
|
;
|
||||||
.L2: LD BC,IDE.Read.Data
|
.L2: LD BC,IDE.Read.Data
|
||||||
LD HL,SYS_PAGE.HD_IDF_ADR
|
LD HL,SYS_PAGE.HD_IDF_ADR
|
||||||
@ -503,13 +636,18 @@ FN_HDD_INIT:
|
|||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),H
|
OUT (C),H
|
||||||
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
|
||||||
|
.HDD_CONFIGURED:
|
||||||
LD BC,IDE.Write.Counter
|
LD BC,IDE.Write.Counter
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD A,D
|
LD A,D
|
||||||
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
|
||||||
RET C
|
RET C
|
||||||
@ -642,60 +780,44 @@ HD_CALC_SECS:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; [ ] 07/01/2024 bit0: Primary/Secondary, bit1 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
|
; [ ] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD
|
||||||
; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á SYS_PAGE.IDE_0..3
|
SET_BPB_OFFSET:
|
||||||
FN_HDD_PART:
|
LD A,SYS_PAGE
|
||||||
DI
|
LD HL,SYS_PAGE.MS_BPB
|
||||||
PUSH BC
|
LD IX,#0000
|
||||||
PUSH HL
|
LD DE,#0000
|
||||||
|
LD B,1
|
||||||
|
CALL FN_HDD_READ
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;
|
|
||||||
LD C,A
|
|
||||||
AND 1
|
|
||||||
LD A,IDE.Chanel.Primary
|
|
||||||
JR Z,.SET_CH
|
|
||||||
LD A,IDE.Chanel.Secondary
|
|
||||||
.SET_CH:
|
|
||||||
OUT (IDE.Chanel.Set),A
|
|
||||||
;
|
|
||||||
LD A,C
|
|
||||||
PUSH AF
|
|
||||||
AND 2
|
|
||||||
;
|
|
||||||
LD A,IDE.Drive.Slave
|
|
||||||
JR NZ,.SET_Master_Slave
|
|
||||||
;
|
|
||||||
LD A,IDE.Drive.Master
|
|
||||||
.SET_Master_Slave:
|
|
||||||
LD BC,IDE.Write.DeviceHead
|
|
||||||
OUT (C),A
|
|
||||||
CALL TEST_HDD_DRV
|
|
||||||
JR NZ,.Error
|
|
||||||
CALL FN_HDD_INIT.L3
|
|
||||||
JR C,.Error
|
|
||||||
;
|
|
||||||
POP BC
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
LD A,B
|
LD A,(SYS_PAGE.CURRENT_HDD)
|
||||||
LD (SYS_PAGE.CURRENT_HDD),A
|
RRCA
|
||||||
|
RRCA
|
||||||
|
AND 3
|
||||||
|
INC A
|
||||||
|
LD B,A
|
||||||
|
;
|
||||||
|
LD HL,SYS_PAGE.MS_BPB-16 + #01BE ;!HARDCODE ᬥ饨¥ ®â ç « ᥪâ®à ¤«ï â ¡«¨æë à §¤¥«®¢ c ¯¥à¢ë¬ ᥪâ®à®¬ LBA ¤«ï ¯¥à¢®£® à §¤¥«
|
||||||
|
LD DE,16 ;!HARDCODE à §¬¥à ¯®«ï ®¯¨á ⥫ï à §¤¥«
|
||||||
|
.loop: ADD HL,DE
|
||||||
|
DJNZ .loop
|
||||||
|
;
|
||||||
|
LD A,8
|
||||||
|
ADD L
|
||||||
|
LD L,A
|
||||||
|
LD DE,SYS_PAGE.HDD_PARTITION_OFFSET
|
||||||
|
LD C,4
|
||||||
|
LDIR
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
EX AF,AF'
|
||||||
AND A
|
|
||||||
.exit: POP HL
|
|
||||||
POP BC
|
|
||||||
EI
|
|
||||||
RET
|
RET
|
||||||
;
|
|
||||||
.Error: POP AF
|
|
||||||
SCF
|
|
||||||
JR .exit
|
|
||||||
; ENDMODULE
|
; ENDMODULE
|
||||||
;************************************************
|
;************************************************
|
||||||
|
|
||||||
|
|||||||
@ -271,14 +271,14 @@ FN_TURBO:
|
|||||||
|
|
||||||
;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬
|
;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬
|
||||||
.SET_FDD_720:
|
.SET_FDD_720:
|
||||||
LD A,1
|
LD A,FDD_Density.SET_720
|
||||||
OUT (#BD),A ; !HARDCODE
|
OUT (FDD_Density),A
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬
|
;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬
|
||||||
.SET_FDD_1440:
|
.SET_FDD_1440:
|
||||||
LD A,#21
|
LD A,FDD_Density.SET_1440
|
||||||
OUT (#BD),A ; !HARDCODE
|
OUT (FDD_Density),A
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -308,18 +308,14 @@ FN_TURBO:
|
|||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
READ_PORTS: ; !TODO ᤥ« âì
|
|
||||||
WRITE_PORTS: ; !TODO ᤥ« âì
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
;----------------------------------------------------------------------;
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
;!TODO
|
;!TODO
|
||||||
;FN_GET_SYS_VAR:
|
;FN_GET_SYS_VAR:
|
||||||
; ‚室: HL - ®¬¥à á¨á⥬®© ¯¥à¥¬¥®©
|
; ‚室: HL - ®¬¥à á¨á⥬®© ¯¥à¥¬¥®©
|
||||||
; ‚ë室: HL - § 票¥ á¨á⥬®© ¯¥à¥¬¥®©
|
; ‚ë室: HL - § 票¥ á¨á⥬®© ¯¥à¥¬¥®©
|
||||||
; RET
|
; RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;!TODO ᪮¬¯®®¢ âì
|
;!TODO ᪮¬¯®®¢ âì
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user