This commit is contained in:
Anatoliy Belyanskiy 2023-08-21 01:29:49 +10:00
parent 7fc7fe3490
commit 1f3a3f2192
6 changed files with 84 additions and 92 deletions

@ -1 +1 @@
Subproject commit dd98f391c99f3ff16920ca176349cff874ad9b23
Subproject commit 2facbb273ecfd873a5bb622c8c405cc9880a39e5

View File

@ -292,7 +292,7 @@ RDS000: CALL SELECTH
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,ATA_READ_SECTORS ; WITH RETRY
LD A,IDE.ATA.ReadSectorsWithRetry
OUT (C),A
;?????
;SAVE HL!
@ -473,7 +473,7 @@ NO_WriteProtect:
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,ATA_WRITE_SECTORS ; WITH RETRY
LD A,IDE.ATA.WriteSectorsWithRetry
OUT (C),A
;SAVE HL!
WRS002: EXX
@ -570,7 +570,7 @@ VRS000: CALL SELECTH
CALL PRESET
POP HL
LD BC,IDE.Write.Command
LD A,ATA_READ_VERIFY_SECTORS ; WITH RETRY
LD A,IDE.ATA.ReadVerifySectorsWithRetry
OUT (C),A
VRS002: LD BC,IDE.Read.Status
IN A,(C)

View File

@ -169,7 +169,7 @@ FN_HDD_PREPARE: ;
.SetCommand:
LD BC,IDE.Write.Command
LD A,ATA_READ_SECTORS
LD A,IDE.ATA.ReadSectorsWithRetry
; OUT (C),A
AND A
RET
@ -220,7 +220,7 @@ HD_RD_L1:
SAFE_PORTY
LD BC,IDE.Write.Command
LD A,ATA_READ_SECTORS
LD A,IDE.ATA.ReadSectorsWithRetry
OUT (C),A
HD_RD_L2:
@ -293,7 +293,7 @@ FN_HDD_WRITE:
EX AF,AF'
LD BC,IDE.Write.Command
LD A,ATA_WRITE_SECTORS
LD A,IDE.ATA.WriteSectorsWithRetry
OUT (C),A
HD_WR_L2:
@ -331,7 +331,7 @@ FN_HDD_RECAL:
LD A,#A0
LD BC,IDE.Write.DriveCtrl
OUT (C),A
LD A,ATA_EXECUTE_DEVICE_DIAGNOSTIC
LD A,IDE.ATA.ExecuteDeviceDiagnostic
CALL HD_CMD_EXE
AND A
BIT IDE.ControlBit.Error,A
@ -451,7 +451,7 @@ HD_C0_L3:
WAIT_HDD
LD BC,IDE.Write.Command
LD A,ATA_IDENTIFY_DEVICE
LD A,IDE.ATA.IdentifyDevice
OUT (C),A
WAIT_HDD
@ -519,7 +519,7 @@ HD_C0_NO_LBA:
LD A,D
OUT (SLOT3),A
LD A,ATA_INITIALIZE_DEVICE_PARAMETERS ; SET HDD PARAMETERS
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
CALL HD_CMD_EXE
RET

View File

@ -105,17 +105,17 @@ CDAUTO:
SELECT_IDE:
AND A ;%0000'0011
LD D,IDE.ATA.Master
LD D,IDE.Drive.Master
JR Z,.AUTO_0
DEC A
LD D,#B0
JR Z,.AUTO_0
DEC A
;R00
LD D,IDE.ATA.Master
LD D,IDE.Drive.Master
JR Z,.AUTO_1
DEC A
LD D,IDE.ATA.Slave
LD D,IDE.Drive.Slave
.AUTO_1: LD A,IDE.Chanel.Secondary ;SELECT SECONDARY
OUT (IDE.Chanel.Set),A
;LD A,1
@ -134,7 +134,6 @@ SELECT_IDE:
IDEAUTO:
CALL SELECT_IDE
;MASTER
LD A,IDE.Device.NONE
LD (IDEDEV),A
CDMASTR:
@ -192,7 +191,7 @@ NO_BUSY:
JR NZ,.check_next
;JP NZ,DETECT_ATA_ATAPI
;
/*
DETECT_ATA_ATAPI: ;R02
; 1. Set the Sectorcount, LBAlo, LBAmid, and LBAhi IO ports to 0 (port 0x1F2 to 0x1F5).
LD BC,IDE.Write.Counter
@ -206,13 +205,13 @@ DETECT_ATA_ATAPI: ;R02
;
; 2. Send the IDENTIFY command (0xEC) to the Command IO port (0x1F7).
LD BC,IDE.Write.Command
LD E,ATA_IDENTIFY_DEVICE
LD E,IDE.ATA.IdentifyDevice
OUT (C),E
;
; 3. Read the Status port (0x1F7) again.
; 3.1 If the value read is 0, the drive does not exist.
LD B,0
.pause: DJNZ .pause
; 3.1 If the value read is 0, the drive does not exist.
LD BC,IDE.Read.Status
IN A,(C)
JP Z,ABSENT
@ -228,13 +227,12 @@ DETECT_ATA_ATAPI: ;R02
INC C ;IDE.Read.CylinderHigh
IN B,(C)
OR B
JP NZ,NOHDD ; IT IS ATAPI
JP NZ,Non_ATA ; IT IS ATAPI
; 3.5 Otherwise, continue polling one of the Status ports until bit 3 (DRQ, value = 8) sets, or until bit 0 (ERR, value = 1) sets.
LD HL,WAIT_SML
LD DE,#0101 ;!FIXIT
LD DE,#0908
CALL WAIT_PRT
JP NC,ABSENT
JP C,ABSENT
;
; 4. At that point, if ERR is clear, the data is ready to read from the Data port (0x1F0). Read 256 16-bit values, and store them.
LD A,IDE.Device.HDD
@ -242,15 +240,16 @@ DETECT_ATA_ATAPI: ;R02
JP GETPARM
;
;;;;;;;;;;;;;;;;;;;;;;; R02
*/
NO_BUSY.check_next:
CP IDE.Device.CDROM
JP Z,NOHDD
JP Z,Non_ATA
;!TODO ¯à¨¡à âìáï âãâ. <20>®á«¥ R02 âãâ ¬®¦­® ã¡à âì ¬­®£® «¨è­¥£®
;-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=;
LD E,ATA_NOP
LD E,IDE.ATA.Nop
LD BC,IDE.Write.Command
OUT (C),E
DEC B ; LD BC, IDE.Read.Status
@ -273,7 +272,7 @@ WXREADY:
LD A,IDE.Device.HDD
LD (IDEDEV),A
LD E,ATA_IDENTIFY_DEVICE
LD E,IDE.ATA.IdentifyDevice
LD BC,IDE.Write.Command
OUT (C),E
@ -283,7 +282,7 @@ WXREADY:
LD HL,WAIT_SML
LD DE,#0101
CALL WAIT_PRT
JP NC,NOHDD
JP NC,Non_ATA
;-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=-=-=-=-=-==-=-=;
GETPARM:
LD HL,WAIT_IDE
@ -299,7 +298,7 @@ GETPARM:
AND A
RET
NOHDD: LD A,IDE.Device.CDROM
Non_ATA: LD A,IDE.Device.CDROM
LD (IDEDEV),A
LD E,#A1 ;!HARDCODE IDENTIFY ATAPI
LD BC,IDE.Write.Command
@ -313,8 +312,7 @@ NOHDD: LD A,IDE.Device.CDROM
LD DE,#0101
CALL WAIT_PRT
JP C,GETPARM
ABSENT:
SCF
ABSENT: SCF
RET
IDESPEC:
@ -358,7 +356,7 @@ NONLBA: LD A,B
LD BC,IDE.Write.Counter
ENDIF
OUT (C),A
LD A,ATA_INITIALIZE_DEVICE_PARAMETERS
LD A,IDE.ATA.InitializeDeviceParameters
CALL IDE_CMD
; RET C
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track
@ -417,26 +415,27 @@ WTREADY:
JR NZ,WTREADY
SCF
RET
; D - MASK
; E - PATTERN
; BC - PORT
; IN:
; HL - Waiting delay
; DE - MASK : PATTERN
; OUT:
; NC: (PORT & D)-E = 0
; CF: waiting delay exceeded
WAIT_PRT:
LD BC,IDE.Read.Status
;
.loop: IN A,(C)
AND D
CP E
;JR NZ,.P2
;AND A
;RET
RET Z
.P2: DEC HL
RET Z
DEC HL
CALL SKIPKEY
RET C
LD A,L
OR H
JP NZ,.loop
.error: SCF
;
SCF
RET
SKIPKEY:

View File

@ -633,7 +633,8 @@ CHEKOK: ;CALL ScreenPOS.GET_CUR
CALL CMOS_TEST
LD A,msgStrings.cmosNone
JR C,NOCMOS
JR C,CMOS_ABSENT
; CMOS OK
CALL CMOSINIT
LD A,msgStrings.cmosFound
CALL POSTMSG
@ -644,11 +645,10 @@ CHEKOK: ;CALL ScreenPOS.GET_CUR
LD HL,RebootDate
CALL PRNTIME
CALL ScreenPOS.CRLF
JR NOCMOS2
NOCMOS:
JR INFO_MESSAGE
CMOS_ABSENT:
CALL POSTMSG
NOCMOS2: ;!FIXIT ­ §¢ ­¨¥ ­¥¯à ¢¨«ì­®¥
INFO_MESSAGE: ;!FIXIT ­ §¢ ­¨¥ ­¥¯à ¢¨«ì­®¥
LD DE,#0528
;CALL ScreenPOS.LOCAT
CALL LP_SET_PLACE
@ -723,10 +723,7 @@ TSETUP:
JR NZ,TSETUP
POP HL
JP EXIT_SETUP
CSETUP:
; POP HL
;------------test ; !!!!! ¯®á¬®âà¥âì
XOR A
CSETUP: XOR A
LD (ITEM_Restore),A
CALL SETTINGS
XOR A
@ -1103,7 +1100,7 @@ AUTODET:
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,IDE.INIT_TBL_IDE0
LD BC,#20FF ;R02 ;!HARDCODE table
LD BC,256*(IDE.HDD_INIT_TABLE * 4) + #FF ;R02
FILLIDE:
LD (HL),C ;CLEAR HDD VARIABLE
INC HL
@ -1111,7 +1108,7 @@ FILLIDE:
EX AF,AF'
OUT (SLOT3),A
;==== ;!!!!! áâ à ï ­ã¬¥à æ¨ï ¤¨áª®¢ !!!!!====
;======== áâ à ï ­ã¬¥à æ¨ï ¤¨áª®¢! ========
; CALL GET_AVAILABLE_STRUCT
; LD A,#00
; CALL COMMONIDE
@ -1127,7 +1124,7 @@ FILLIDE:
; CALL GET_AVAILABLE_STRUCT
; LD A,#03
; CALL COMMONIDE
;==========================================
;==========================================
LD IY,IDE.INIT_TBL_IDE0
LD A,#00
@ -1148,35 +1145,34 @@ FILLIDE:
CALL ScreenPOS.CRLF
RET
;
;==== ;!!!!! áâ à ï ­ã¬¥à æ¨ï ¤¨áª®¢ !!!!!====
; GET_AVAILABLE_STRUCT
; LD C,SLOT3
; IN B,(C)
; LD A,SYS_PAGE
; OUT (C),A
; CALL FIND_AVAILABLE_STRUCT
; OUT (C),B
; RET
;======== áâ à ï ­ã¬¥à æ¨ï ¤¨áª®¢! ========
;GET_AVAILABLE_STRUCT
;LD C,SLOT3
;IN B,(C)
;LD A,SYS_PAGE
;OUT (C),A
;CALL FIND_AVAILABLE_STRUCT
;OUT (C),B
;RET
;FIND_AVAILABLE_STRUCT
;LD IY,IDE0
;LD A,(IY+DTYPE_H)
;INC A
;RET Z
;LD IY,IDE1
;LD A,(IY+DTYPE_H)
;INC A
;RET Z
;LD IY,IDE2
;LD A,(IY+DTYPE_H)
;INC A
;RET Z
;LD IY,IDE3
;LD A,(IY+DTYPE_H)
;INC A
;RET
;==========================================
; FIND_AVAILABLE_STRUCT
; LD IY,IDE0
; LD A,(IY+DTYPE_H)
; INC A
; RET Z
; LD IY,IDE1
; LD A,(IY+DTYPE_H)
; INC A
; RET Z
; LD IY,IDE2
; LD A,(IY+DTYPE_H)
; INC A
; RET Z
; LD IY,IDE3
; LD A,(IY+DTYPE_H)
; INC A
; RET
;==========================================
;
; !HARDCODE § ¬¥­¨âì ç¨á«  ­  ¬¥âª¨ ¢ í⮩ ¯à®æ¥¤ãà¥
COMMONIDE:
@ -1204,9 +1200,8 @@ COMMONIDE:
;0 - AUTODETECT
;1 - GETTING FROM SETUP
;2 - CD-ROM
;2 - CD-ROM (ATAPI device)
;3 - DISABLED
COMMON2:
CALL G_VALUE
OR A
@ -1219,7 +1214,7 @@ COMMON2:
AUTODETECT:
PUSH HL
LD A,L ;DETECT MESSAGE
LD A,L ;DETECT MESSAGE
CALL POSTMSG
CALL ScreenPOS.SUBNAME
;
@ -1719,11 +1714,11 @@ FindStringAddr:
LD H,0
LD BC,memBUFFER.Messages
ADD HL,HL
ADD HL,BC
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
ADD HL,BC
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
RET
/*
Get_Item_Address:
@ -1764,20 +1759,19 @@ POSTMSC:
LD A,E
JP CPRINTZ
;
SETLAND:
LD A,#0E ; !HARDCODE CMOS ï祩ª  options
CALL READCMS
AND #04 ; !HARDCODE CMOS §­ ç¥­¨¥ ï§ëª 
JR NZ,.RUS
;
LD HL,MSG_ENG
LD DE,memBUFFER.Messages
LD BC,MSG_ENG.size
LDIR
RET
.RUS:
LD HL,MSG_RUS
;
.RUS: LD HL,MSG_RUS
LD DE,memBUFFER.Messages
LD BC,MSG_RUS.size
LDIR

View File

@ -13,6 +13,5 @@
INCLUDE 'src/bios/shared/VERSION.inc' ; ‚¥àá¨ï EXP ¨ ROM
INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc'
INCLUDE 'src/bios/ROM/BIOS.inc'
INCLUDE 'Shared_Includes/constants/ata.inc'
;---------------------------------------
;