diff --git a/Shared_Includes b/Shared_Includes index dd98f39..2facbb2 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit dd98f391c99f3ff16920ca176349cff874ad9b23 +Subproject commit 2facbb273ecfd873a5bb622c8c405cc9880a39e5 diff --git a/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm b/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm index b426c21..ba3235b 100644 --- a/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm +++ b/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm @@ -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) diff --git a/src/bios/exp/FUNC_4x.ASM b/src/bios/exp/FUNC_4x.ASM index 15dc933..c8e3a9d 100644 --- a/src/bios/exp/FUNC_4x.ASM +++ b/src/bios/exp/FUNC_4x.ASM @@ -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 diff --git a/src/bios/rom/SETUP/AUTOIDE.asm b/src/bios/rom/SETUP/AUTOIDE.asm index 17c7603..d6c7503 100644 --- a/src/bios/rom/SETUP/AUTOIDE.asm +++ b/src/bios/rom/SETUP/AUTOIDE.asm @@ -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 прибраться тут. После 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: diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 0405459..b527982 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -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 diff --git a/src/bios/shared/includes.inc b/src/bios/shared/includes.inc index 32e8210..bac6d14 100644 --- a/src/bios/shared/includes.inc +++ b/src/bios/shared/includes.inc @@ -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' ;--------------------------------------- ;