новый бит в переменной HDD_INIT_TABLE.MediaParameters, мелкие правки
This commit is contained in:
parent
5069c5941e
commit
fddc5985b8
@ -1 +1 @@
|
|||||||
Subproject commit 63faf9f0823649cfb52e9fcaad430170a05b31a7
|
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1
|
||||||
Binary file not shown.
@ -19,6 +19,9 @@ RAM_ATAPI_PK EQU SYS_PAGE.SHARED_BUFFER_32b
|
|||||||
RAM_ATAPI_RW_CMD EQU SYS_PAGE.SHARED_BUFFER_32b+16
|
RAM_ATAPI_RW_CMD EQU SYS_PAGE.SHARED_BUFFER_32b+16
|
||||||
MAX_DATA_PACKET_FOR_REQUEST_SENSE EQU 254
|
MAX_DATA_PACKET_FOR_REQUEST_SENSE EQU 254
|
||||||
|
|
||||||
|
|
||||||
|
_ZIP_WAITS_ EQU 128
|
||||||
|
|
||||||
ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number"
|
ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number"
|
||||||
|
|
||||||
;[]================================================================[#51]
|
;[]================================================================[#51]
|
||||||
@ -93,6 +96,7 @@ ATAPI_5x_GET_PAR:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
; [ ] sector size. media changed
|
; [ ] sector size. media changed
|
||||||
|
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||||
CALL ATAPI_CHECK_MEDIA_CHANGED
|
CALL ATAPI_CHECK_MEDIA_CHANGED
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
POP AF
|
POP AF
|
||||||
@ -123,6 +127,10 @@ ATAPI_5x_GET_PAR:
|
|||||||
SCF
|
SCF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
.get_data: LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters)
|
.get_data: LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters)
|
||||||
|
AND %000'0100
|
||||||
|
CALL NZ,.RereadCapacity
|
||||||
|
;
|
||||||
|
LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters)
|
||||||
LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
||||||
; [ ] sector size
|
; [ ] sector size
|
||||||
LD E,(IY+IDE.HDD_INIT_TABLE.SectorSize)
|
LD E,(IY+IDE.HDD_INIT_TABLE.SectorSize)
|
||||||
@ -140,6 +148,13 @@ ATAPI_5x_GET_PAR:
|
|||||||
LD A,BIOS.Error.ATAPI.UnitAttention ; ¥á«¨ CF, â® ®¬¥à ®è¨¡ª¨
|
LD A,BIOS.Error.ATAPI.UnitAttention ; ¥á«¨ CF, â® ®¬¥à ®è¨¡ª¨
|
||||||
EX AF,AF
|
EX AF,AF
|
||||||
RET
|
RET
|
||||||
|
.RereadCapacity:
|
||||||
|
EX AF,AF'
|
||||||
|
PUSH AF
|
||||||
|
CALL GET_ATAPI_CAPACITY
|
||||||
|
POP AF
|
||||||
|
EX AF,AF'
|
||||||
|
RET
|
||||||
;[]================================================================[#58]
|
;[]================================================================[#58]
|
||||||
|
|
||||||
|
|
||||||
@ -516,26 +531,6 @@ EXEC_PACKET_COMMAND:
|
|||||||
LD A,BIOS.Error.Failure
|
LD A,BIOS.Error.Failure
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
; .error_ex: EX DE,HL
|
|
||||||
; .error: CP #FF
|
|
||||||
; .error_fail: SCF
|
|
||||||
; LD C,A
|
|
||||||
; LD A,BIOS.Error.Failure
|
|
||||||
; RET Z
|
|
||||||
; ;
|
|
||||||
; LD A,BIOS.Error.ATAPI.UnitAttention
|
|
||||||
; CP C
|
|
||||||
; SCF
|
|
||||||
; RET Z
|
|
||||||
; ;
|
|
||||||
; LD A,BIOS.Error.ATAPI.MediumError
|
|
||||||
; CP C
|
|
||||||
; SCF
|
|
||||||
; RET Z
|
|
||||||
; ;
|
|
||||||
; LD A,BIOS.Error.Busy
|
|
||||||
; RET
|
|
||||||
;
|
|
||||||
.error_TimeOut: CP #FF
|
.error_TimeOut: CP #FF
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
JR Z,.error_fail
|
JR Z,.error_fail
|
||||||
@ -543,9 +538,7 @@ EXEC_PACKET_COMMAND:
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
; .start_sys_page:
|
;
|
||||||
; LD A,SYS_PAGE
|
|
||||||
; EX AF,AF'
|
|
||||||
;
|
;
|
||||||
.start: XOR A ; ¯à¨§ ª ⮣®, çâ® ®è¨¡ª á¬¥ë ®á¨â¥«ï ¤®«¦ ®¡à ¡ âë¢ âìáï ¢ EXEC_PACKET_COMMAND
|
.start: XOR A ; ¯à¨§ ª ⮣®, çâ® ®è¨¡ª á¬¥ë ®á¨â¥«ï ¤®«¦ ®¡à ¡ âë¢ âìáï ¢ EXEC_PACKET_COMMAND
|
||||||
.start_custom: EXX
|
.start_custom: EXX
|
||||||
@ -636,7 +629,7 @@ EXEC_PACKET_COMMAND:
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
;
|
;
|
||||||
.AP_LOOP: ;CALL ATAPI_WAITPRT.wait_NZ
|
.AP_LOOP: ;CALL ATAPI_WAITPRT.wait_NZ
|
||||||
LD B,128
|
LD B,_ZIP_WAITS_
|
||||||
DJNZ $
|
DJNZ $
|
||||||
CALL ATAPI_CHECK_DRV
|
CALL ATAPI_CHECK_DRV
|
||||||
JP C,.error;_APLOOP
|
JP C,.error;_APLOOP
|
||||||
@ -683,7 +676,7 @@ EXEC_PACKET_COMMAND:
|
|||||||
JR .return_rw
|
JR .return_rw
|
||||||
; ;
|
; ;
|
||||||
.END_BUFFER: ;CALL ATAPI_WAITPRT.wait_NZ
|
.END_BUFFER: ;CALL ATAPI_WAITPRT.wait_NZ
|
||||||
LD B,128
|
LD B,_ZIP_WAITS_
|
||||||
DJNZ $
|
DJNZ $
|
||||||
CALL ATAPI_CHECK_DRV
|
CALL ATAPI_CHECK_DRV
|
||||||
JP C,.error
|
JP C,.error
|
||||||
@ -693,7 +686,7 @@ EXEC_PACKET_COMMAND:
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
ATAPI_IdlePasses:
|
ATAPI_IdlePasses:
|
||||||
;CALL ATAPI_WAITPRT.wait_NZ
|
;CALL ATAPI_WAITPRT.wait_NZ
|
||||||
LD B,128
|
LD B,_ZIP_WAITS_
|
||||||
DJNZ $
|
DJNZ $
|
||||||
CALL ATAPI_CHECK_DRV
|
CALL ATAPI_CHECK_DRV
|
||||||
JP C,EXEC_PACKET_COMMAND.error
|
JP C,EXEC_PACKET_COMMAND.error
|
||||||
@ -1084,26 +1077,27 @@ ATAPI_MEDIA_ERROR:
|
|||||||
OR %0000'0011
|
OR %0000'0011
|
||||||
LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A
|
LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A
|
||||||
;
|
;
|
||||||
;LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA
|
CALL GET_ATAPI_CAPACITY
|
||||||
LD DE,SYS_PAGE.TMP_BUFFER
|
; LD DE,SYS_PAGE.TMP_BUFFER
|
||||||
;CALL EXEC_PACKET_COMMAND.start_sys_page
|
; CALL ATAPI_READ_CAPACITY_DATA
|
||||||
CALL ATAPI_READ_CAPACITY_DATA
|
; ;
|
||||||
;
|
; LD HL,#FFFF
|
||||||
LD HL,#FFFF
|
; LD C,BIOS.Error.ATAPI.MediumError
|
||||||
LD C,BIOS.Error.ATAPI.MediumError
|
; JR C,.No_Media
|
||||||
JR C,.No_Media
|
; ;
|
||||||
;
|
; LD HL,(SYS_PAGE.TMP_BUFFER) ; media size high
|
||||||
LD HL,(SYS_PAGE.TMP_BUFFER) ; media size high
|
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H
|
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L
|
; LD HL,(SYS_PAGE.TMP_BUFFER + 2) ; media size low
|
||||||
LD HL,(SYS_PAGE.TMP_BUFFER + 2) ; media size low
|
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H
|
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L
|
; LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size
|
||||||
LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size
|
; ;
|
||||||
;
|
; LD C,BIOS.Error.ATAPI.UnitAttention
|
||||||
LD C,BIOS.Error.ATAPI.UnitAttention
|
; .No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size
|
||||||
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size
|
; LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
|
; JR NC,.exit
|
||||||
|
; SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
|
||||||
;
|
;
|
||||||
.exit: POP AF
|
.exit: POP AF
|
||||||
POP HL
|
POP HL
|
||||||
@ -1132,6 +1126,34 @@ ATAPI_MEDIA_ERROR:
|
|||||||
;
|
;
|
||||||
.unkn_error: LD C,BIOS.Error.ATAPI.MediumError
|
.unkn_error: LD C,BIOS.Error.ATAPI.MediumError
|
||||||
JR .exit
|
JR .exit
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
GET_ATAPI_CAPACITY:
|
||||||
|
;
|
||||||
|
LD DE,SYS_PAGE.TMP_BUFFER
|
||||||
|
CALL ATAPI_READ_CAPACITY_DATA
|
||||||
|
;
|
||||||
|
LD HL,#FFFF
|
||||||
|
LD C,BIOS.Error.ATAPI.MediumError
|
||||||
|
JR C,.No_Media
|
||||||
|
;
|
||||||
|
LD HL,(SYS_PAGE.TMP_BUFFER) ; media size high
|
||||||
|
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H
|
||||||
|
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L
|
||||||
|
LD HL,(SYS_PAGE.TMP_BUFFER + 2) ; media size low
|
||||||
|
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H
|
||||||
|
LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L
|
||||||
|
LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size
|
||||||
|
;
|
||||||
|
LD C,BIOS.Error.ATAPI.UnitAttention
|
||||||
|
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size
|
||||||
|
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
|
||||||
|
RET NC
|
||||||
|
SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
|
||||||
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
; !!! SELECT_DRIVE ¤®«¦¥ ®âà ¡®â âì § à ¥¥
|
; !!! SELECT_DRIVE ¤®«¦¥ ®âà ¡®â âì § à ¥¥
|
||||||
|
|||||||
@ -459,7 +459,7 @@ PARSE_IdentifyDevice:
|
|||||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
|
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
|
||||||
.END: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
.END: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||||
; [x] save hdd parameters to cmos for "setup" in settings
|
; [x] save hdd parameters to cmos for "setup" in settings
|
||||||
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) ; for save to cmos in GETPARM
|
.END_2: LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) ; for save to cmos in GETPARM
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -473,11 +473,10 @@ PARSE_IdentifyDevice:
|
|||||||
OR (HL)
|
OR (HL)
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
|
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
|
||||||
;
|
;
|
||||||
;
|
|
||||||
; ¢á直© á«ãç ©
|
|
||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
||||||
LD B,200 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
LD B,200 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
||||||
.get_error_loop: PUSH BC
|
.get_error_loop:
|
||||||
|
PUSH BC
|
||||||
;LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
|
;LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
|
||||||
;CALL EXEC_PACKET_COMMAND.start
|
;CALL EXEC_PACKET_COMMAND.start
|
||||||
CALL EXEC_TEST_CMD
|
CALL EXEC_TEST_CMD
|
||||||
@ -487,8 +486,23 @@ PARSE_IdentifyDevice:
|
|||||||
CP BIOS.Error.ATAPI.UnitAttention
|
CP BIOS.Error.ATAPI.UnitAttention
|
||||||
JR Z,PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
JR Z,PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
||||||
;
|
;
|
||||||
CP BIOS.Error.ATAPI.NotReady
|
|
||||||
HALT
|
HALT
|
||||||
|
;
|
||||||
|
PUSH AF
|
||||||
|
CALL SKIPKEY
|
||||||
|
JR NC,.noSkipKey
|
||||||
|
; CF=1
|
||||||
|
LD A,#FF
|
||||||
|
LD (SKIP),A
|
||||||
|
; LD (IY+IDE.HDD_INIT_TABLE.SectorSize),A
|
||||||
|
; LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),A
|
||||||
|
SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||||
|
POP AF
|
||||||
|
SCF
|
||||||
|
JR .set_sector
|
||||||
|
.noSkipKey: POP AF
|
||||||
|
;
|
||||||
|
CP BIOS.Error.ATAPI.NotReady
|
||||||
JR Z,.get_error_loop
|
JR Z,.get_error_loop
|
||||||
DJNZ .get_error_loop
|
DJNZ .get_error_loop
|
||||||
;
|
;
|
||||||
@ -675,16 +689,15 @@ SELECT_IDE: AND A ;%0000'0011
|
|||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
SKIPKEY:
|
SKIPKEY: EXX
|
||||||
EXX
|
|
||||||
CALL SCANKEY
|
CALL SCANKEY
|
||||||
EXX
|
EXX
|
||||||
SCF
|
;SCF
|
||||||
CCF
|
;CCF
|
||||||
RET Z
|
RET Z
|
||||||
EXX
|
EXX
|
||||||
LD HL,#3E00 ;!HARDCODE
|
LD HL,#3E00 ;!HARDCODE
|
||||||
XOR A
|
;XOR A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
EXX
|
EXX
|
||||||
SCF
|
SCF
|
||||||
|
|||||||
@ -81,18 +81,16 @@ SF_BUFF EQU 0
|
|||||||
; D8
|
; D8
|
||||||
; D7..D0 - ASCII code
|
; D7..D0 - ASCII code
|
||||||
|
|
||||||
WAITKEY:
|
WAITKEY: LD HL,HOST
|
||||||
LD HL,HOST
|
|
||||||
LD A,(HEAD)
|
LD A,(HEAD)
|
||||||
CP (HL)
|
CP (HL)
|
||||||
JR Z,WAITKEY
|
JR Z,WAITKEY
|
||||||
CALL GETSYM
|
CALL GETSYM
|
||||||
LD A,E
|
LD A,E
|
||||||
AND A
|
;AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SCANKEY:
|
SCANKEY: LD HL,HOST
|
||||||
LD HL,HOST
|
|
||||||
LD A,(HEAD)
|
LD A,(HEAD)
|
||||||
CP (HL)
|
CP (HL)
|
||||||
RET Z
|
RET Z
|
||||||
@ -100,8 +98,7 @@ SCANKEY:
|
|||||||
LD A,E
|
LD A,E
|
||||||
RET
|
RET
|
||||||
|
|
||||||
CTRLKEY:
|
CTRLKEY: LD HL,HOST
|
||||||
LD HL,HOST
|
|
||||||
LD A,(HEAD)
|
LD A,(HEAD)
|
||||||
CP (HL)
|
CP (HL)
|
||||||
LD BC,(KEYFLAG)
|
LD BC,(KEYFLAG)
|
||||||
@ -116,14 +113,9 @@ PUTSYM: LD HL,HEAD
|
|||||||
AND #3F
|
AND #3F
|
||||||
CP (HL)
|
CP (HL)
|
||||||
JR Z,FULL_BF
|
JR Z,FULL_BF
|
||||||
LD A,(HL)
|
;
|
||||||
INC (HL)
|
CALL GetSymAddr
|
||||||
INC (HL)
|
;
|
||||||
INC (HL)
|
|
||||||
INC (HL)
|
|
||||||
RES 6,(HL)
|
|
||||||
LD L,A
|
|
||||||
LD H,high SBUF
|
|
||||||
LD (HL),E
|
LD (HL),E
|
||||||
INC L
|
INC L
|
||||||
LD (HL),D
|
LD (HL),D
|
||||||
@ -133,11 +125,7 @@ PUTSYM: LD HL,HEAD
|
|||||||
LD (HL),C
|
LD (HL),C
|
||||||
RET
|
RET
|
||||||
|
|
||||||
GETSYM: LD HL,HOST
|
GetSymAddr: LD A,(HL)
|
||||||
LD A,(HEAD)
|
|
||||||
CP (HL)
|
|
||||||
RET Z
|
|
||||||
LD A,(HL)
|
|
||||||
INC (HL)
|
INC (HL)
|
||||||
INC (HL)
|
INC (HL)
|
||||||
INC (HL)
|
INC (HL)
|
||||||
@ -145,6 +133,16 @@ GETSYM: LD HL,HOST
|
|||||||
RES 6,(HL)
|
RES 6,(HL)
|
||||||
LD L,A
|
LD L,A
|
||||||
LD H,high SBUF
|
LD H,high SBUF
|
||||||
|
RET
|
||||||
|
|
||||||
|
GETSYM: LD HL,HOST
|
||||||
|
LD A,(HEAD)
|
||||||
|
CP (HL)
|
||||||
|
RET Z
|
||||||
|
AND A
|
||||||
|
;
|
||||||
|
CALL GetSymAddr
|
||||||
|
;
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC L
|
INC L
|
||||||
LD D,(HL)
|
LD D,(HL)
|
||||||
@ -154,8 +152,7 @@ GETSYM: LD HL,HOST
|
|||||||
LD C,(HL)
|
LD C,(HL)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
FULL_BF:
|
FULL_BF: EX AF,AF'
|
||||||
EX AF,AF'
|
|
||||||
BIT SF_BUFF,(IX+SOUND_K)
|
BIT SF_BUFF,(IX+SOUND_K)
|
||||||
JR Z,.FBF
|
JR Z,.FBF
|
||||||
EXX
|
EXX
|
||||||
@ -166,8 +163,7 @@ FULL_BF:
|
|||||||
.FBF: EX AF,AF'
|
.FBF: EX AF,AF'
|
||||||
RET
|
RET
|
||||||
|
|
||||||
KEYSCAN:
|
KEYSCAN: LD IX,KEYFLAG
|
||||||
LD IX,KEYFLAG
|
|
||||||
RESCANN:
|
RESCANN:
|
||||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
AND 1
|
AND 1
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user