новый бит в переменной 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
|
||||
MAX_DATA_PACKET_FOR_REQUEST_SENSE EQU 254
|
||||
|
||||
|
||||
_ZIP_WAITS_ EQU 128
|
||||
|
||||
ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number"
|
||||
|
||||
;[]================================================================[#51]
|
||||
@ -93,6 +96,7 @@ ATAPI_5x_GET_PAR:
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
; [ ] sector size. media changed
|
||||
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||
CALL ATAPI_CHECK_MEDIA_CHANGED
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
@ -123,6 +127,10 @@ ATAPI_5x_GET_PAR:
|
||||
SCF
|
||||
EX AF,AF'
|
||||
.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)
|
||||
; [ ] sector size
|
||||
LD E,(IY+IDE.HDD_INIT_TABLE.SectorSize)
|
||||
@ -139,7 +147,14 @@ ATAPI_5x_GET_PAR:
|
||||
OUT (SLOT3),A
|
||||
LD A,BIOS.Error.ATAPI.UnitAttention ; ¥á«¨ CF, â® ®¬¥à ®è¨¡ª¨
|
||||
EX AF,AF
|
||||
RET
|
||||
RET
|
||||
.RereadCapacity:
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
CALL GET_ATAPI_CAPACITY
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
RET
|
||||
;[]================================================================[#58]
|
||||
|
||||
|
||||
@ -515,27 +530,7 @@ EXEC_PACKET_COMMAND:
|
||||
RET NZ
|
||||
LD A,BIOS.Error.Failure
|
||||
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
|
||||
EX DE,HL
|
||||
JR Z,.error_fail
|
||||
@ -543,10 +538,8 @@ EXEC_PACKET_COMMAND:
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
; .start_sys_page:
|
||||
; LD A,SYS_PAGE
|
||||
; EX AF,AF'
|
||||
;
|
||||
;
|
||||
.start: XOR A ; ¯à¨§ ª ⮣®, çâ® ®è¨¡ª á¬¥ë ®á¨â¥«ï ¤®«¦ ®¡à ¡ âë¢ âìáï ¢ EXEC_PACKET_COMMAND
|
||||
.start_custom: EXX
|
||||
LD C,A ; ¯à¨§ ª ⮣®, çâ® ®è¨¡ª á¬¥ë ®á¨â¥«ï ¤®«¦ ®¡à ¡ âë¢ âìáï ¢ EXEC_PACKET_COMMAND
|
||||
@ -636,7 +629,7 @@ EXEC_PACKET_COMMAND:
|
||||
EX DE,HL
|
||||
;
|
||||
.AP_LOOP: ;CALL ATAPI_WAITPRT.wait_NZ
|
||||
LD B,128
|
||||
LD B,_ZIP_WAITS_
|
||||
DJNZ $
|
||||
CALL ATAPI_CHECK_DRV
|
||||
JP C,.error;_APLOOP
|
||||
@ -683,7 +676,7 @@ EXEC_PACKET_COMMAND:
|
||||
JR .return_rw
|
||||
; ;
|
||||
.END_BUFFER: ;CALL ATAPI_WAITPRT.wait_NZ
|
||||
LD B,128
|
||||
LD B,_ZIP_WAITS_
|
||||
DJNZ $
|
||||
CALL ATAPI_CHECK_DRV
|
||||
JP C,.error
|
||||
@ -693,7 +686,7 @@ EXEC_PACKET_COMMAND:
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ATAPI_IdlePasses:
|
||||
;CALL ATAPI_WAITPRT.wait_NZ
|
||||
LD B,128
|
||||
LD B,_ZIP_WAITS_
|
||||
DJNZ $
|
||||
CALL ATAPI_CHECK_DRV
|
||||
JP C,EXEC_PACKET_COMMAND.error
|
||||
@ -1084,26 +1077,27 @@ ATAPI_MEDIA_ERROR:
|
||||
OR %0000'0011
|
||||
LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A
|
||||
;
|
||||
;LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA
|
||||
LD DE,SYS_PAGE.TMP_BUFFER
|
||||
;CALL EXEC_PACKET_COMMAND.start_sys_page
|
||||
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
|
||||
CALL 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
|
||||
; JR NC,.exit
|
||||
; SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
|
||||
;
|
||||
.exit: POP AF
|
||||
POP HL
|
||||
@ -1132,6 +1126,34 @@ ATAPI_MEDIA_ERROR:
|
||||
;
|
||||
.unkn_error: LD C,BIOS.Error.ATAPI.MediumError
|
||||
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 ¤®«¦¥ ®âà ¡®â âì § à ¥¥
|
||||
|
||||
@ -459,7 +459,7 @@ PARSE_IdentifyDevice:
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
|
||||
.END: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
|
||||
; [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'
|
||||
OUT (SLOT3),A
|
||||
@ -472,26 +472,40 @@ PARSE_IdentifyDevice:
|
||||
LD HL,ICHANEL
|
||||
OR (HL)
|
||||
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
|
||||
;
|
||||
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
||||
LD B,200 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
||||
.get_error_loop:
|
||||
PUSH BC
|
||||
;LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
|
||||
;CALL EXEC_PACKET_COMMAND.start
|
||||
CALL EXEC_TEST_CMD
|
||||
POP BC
|
||||
JR NC,.s_size
|
||||
;
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR Z,PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
||||
;
|
||||
; ¢á直© á«ãç ©
|
||||
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
||||
LD B,200 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
||||
.get_error_loop: PUSH BC
|
||||
;LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
|
||||
;CALL EXEC_PACKET_COMMAND.start
|
||||
CALL EXEC_TEST_CMD
|
||||
POP BC
|
||||
JR NC,.s_size
|
||||
;
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR Z,PARSE_IdentifyDevice.END ;!TEST ;!FIXIT ZIP bug
|
||||
;
|
||||
CP BIOS.Error.ATAPI.NotReady
|
||||
HALT
|
||||
JR Z,.get_error_loop
|
||||
DJNZ .get_error_loop
|
||||
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
|
||||
DJNZ .get_error_loop
|
||||
;
|
||||
; [ ] sector size ATAPI
|
||||
.s_size: LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®á⮠㦥 ¡ë« ¡ãä¥à
|
||||
CALL ATAPI_READ_CAPACITY_DATA
|
||||
@ -675,26 +689,25 @@ SELECT_IDE: AND A ;%0000'0011
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////[v]
|
||||
SKIPKEY:
|
||||
EXX
|
||||
CALL SCANKEY
|
||||
EXX
|
||||
SCF
|
||||
CCF
|
||||
RET Z
|
||||
EXX
|
||||
LD HL,#3E00 ;!HARDCODE
|
||||
XOR A
|
||||
SBC HL,DE
|
||||
EXX
|
||||
SCF
|
||||
CCF
|
||||
RET NZ
|
||||
;A=0
|
||||
LD (SKIP),A
|
||||
INC A
|
||||
SCF
|
||||
RET ;ZF=0, CF=1
|
||||
SKIPKEY: EXX
|
||||
CALL SCANKEY
|
||||
EXX
|
||||
;SCF
|
||||
;CCF
|
||||
RET Z
|
||||
EXX
|
||||
LD HL,#3E00 ;!HARDCODE
|
||||
;XOR A
|
||||
SBC HL,DE
|
||||
EXX
|
||||
SCF
|
||||
CCF
|
||||
RET NZ
|
||||
;A=0
|
||||
LD (SKIP),A
|
||||
INC A
|
||||
SCF
|
||||
RET ;ZF=0, CF=1
|
||||
/////////////////////////////////////////////////////////////////////[^]
|
||||
|
||||
|
||||
|
||||
@ -81,93 +81,89 @@ SF_BUFF EQU 0
|
||||
; D8
|
||||
; D7..D0 - ASCII code
|
||||
|
||||
WAITKEY:
|
||||
LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
JR Z,WAITKEY
|
||||
CALL GETSYM
|
||||
LD A,E
|
||||
AND A
|
||||
RET
|
||||
WAITKEY: LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
JR Z,WAITKEY
|
||||
CALL GETSYM
|
||||
LD A,E
|
||||
;AND A
|
||||
RET
|
||||
|
||||
SCANKEY:
|
||||
LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
CALL GETSYM
|
||||
LD A,E
|
||||
RET
|
||||
SCANKEY: LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
CALL GETSYM
|
||||
LD A,E
|
||||
RET
|
||||
|
||||
CTRLKEY:
|
||||
LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
LD BC,(KEYFLAG)
|
||||
LD A,#00
|
||||
RET Z
|
||||
DEC A
|
||||
RET
|
||||
CTRLKEY: LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
LD BC,(KEYFLAG)
|
||||
LD A,#00
|
||||
RET Z
|
||||
DEC A
|
||||
RET
|
||||
|
||||
PUTSYM: LD HL,HEAD
|
||||
LD A,(HOST)
|
||||
SUB 4
|
||||
AND #3F
|
||||
CP (HL)
|
||||
JR Z,FULL_BF
|
||||
LD A,(HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
RES 6,(HL)
|
||||
LD L,A
|
||||
LD H,high SBUF
|
||||
LD (HL),E
|
||||
INC L
|
||||
LD (HL),D
|
||||
INC L
|
||||
LD (HL),B
|
||||
INC L
|
||||
LD (HL),C
|
||||
RET
|
||||
PUTSYM: LD HL,HEAD
|
||||
LD A,(HOST)
|
||||
SUB 4
|
||||
AND #3F
|
||||
CP (HL)
|
||||
JR Z,FULL_BF
|
||||
;
|
||||
CALL GetSymAddr
|
||||
;
|
||||
LD (HL),E
|
||||
INC L
|
||||
LD (HL),D
|
||||
INC L
|
||||
LD (HL),B
|
||||
INC L
|
||||
LD (HL),C
|
||||
RET
|
||||
|
||||
GETSYM: LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
LD A,(HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
RES 6,(HL)
|
||||
LD L,A
|
||||
LD H,high SBUF
|
||||
LD E,(HL)
|
||||
INC L
|
||||
LD D,(HL)
|
||||
INC L
|
||||
LD B,(HL)
|
||||
INC L
|
||||
LD C,(HL)
|
||||
RET
|
||||
GetSymAddr: LD A,(HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
INC (HL)
|
||||
RES 6,(HL)
|
||||
LD L,A
|
||||
LD H,high SBUF
|
||||
RET
|
||||
|
||||
FULL_BF:
|
||||
EX AF,AF'
|
||||
BIT SF_BUFF,(IX+SOUND_K)
|
||||
JR Z,.FBF
|
||||
EXX
|
||||
LD DE,230
|
||||
LD HL,50
|
||||
CALL BEEP
|
||||
EXX
|
||||
.FBF: EX AF,AF'
|
||||
RET
|
||||
GETSYM: LD HL,HOST
|
||||
LD A,(HEAD)
|
||||
CP (HL)
|
||||
RET Z
|
||||
AND A
|
||||
;
|
||||
CALL GetSymAddr
|
||||
;
|
||||
LD E,(HL)
|
||||
INC L
|
||||
LD D,(HL)
|
||||
INC L
|
||||
LD B,(HL)
|
||||
INC L
|
||||
LD C,(HL)
|
||||
RET
|
||||
|
||||
KEYSCAN:
|
||||
LD IX,KEYFLAG
|
||||
FULL_BF: EX AF,AF'
|
||||
BIT SF_BUFF,(IX+SOUND_K)
|
||||
JR Z,.FBF
|
||||
EXX
|
||||
LD DE,230
|
||||
LD HL,50
|
||||
CALL BEEP
|
||||
EXX
|
||||
.FBF: EX AF,AF'
|
||||
RET
|
||||
|
||||
KEYSCAN: LD IX,KEYFLAG
|
||||
RESCANN:
|
||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||
AND 1
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user