промежуточное

This commit is contained in:
Tolik 2024-12-22 16:35:33 +10:00
parent 73f9070083
commit 2927028434
12 changed files with 1068 additions and 876 deletions

@ -1 +1 @@
Subproject commit 710aa4b5dd4b651bcb01ef5e86150b99dfe739ee
Subproject commit ccb95c96a5684e4f99c19f96b8fcc72f7d0b8212

View File

@ -18,7 +18,7 @@
DB high FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5E - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_ABSENT_5x ;#5E
DB high DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
EDUP
ELSE
@ -487,7 +487,7 @@ TAB_5xFNS:
DB low FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5E - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_ABSENT_5x ;#5E - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
;
;---------------------------------------------------------------------[]
@ -513,7 +513,7 @@ TAB_5xFNS:
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_ABSENT_5x
DB low DRV_LIST
;---------------------------------------------------------------------[]
@ -538,7 +538,7 @@ TAB_5xFNS:
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_ABSENT_5x
DB low DRV_LIST
;---------------------------------------------------------------------[]
@ -551,13 +551,13 @@ TAB_5xFNS:
DB low FN_RESERVED_5x
DB low CD_5x_RESET
DB low CD_5x_LONG_READ
DB low FN_ABSENT_5x
DB low FN_ABSENT_5x
DB low FN_ABSENT_5x ; LONG_WRITE
DB low FN_ABSENT_5x ; VERIFY
DB low CD_5x_READ
DB low FN_ABSENT_5x
DB low FN_ABSENT_5x ; WRITE
DB low CD_5x_DETECT
DB low FN_ABSENT_5x
DB low FN_ABSENT_5x
DB low FN_ABSENT_5x ; GETMED
DB low FN_ABSENT_5x ; SETMED
DB low DRV_VERSION
DB low FN_RESERVED_5x
@ -589,7 +589,7 @@ TAB_5xFNS:
DB high FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5E - Extended functions
DB high FN_ABSENT_5x ;#5E - Extended functions
DB high DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
;
;---------------------------------------------------------------------[]
@ -614,7 +614,7 @@ TAB_5xFNS:
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_ABSENT_5x
DB high DRV_LIST
;---------------------------------------------------------------------[]
@ -638,7 +638,7 @@ TAB_5xFNS:
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_ABSENT_5x
DB high DRV_LIST
;---------------------------------------------------------------------[]
@ -684,34 +684,50 @@ EXP_FNS_RST18:
EX (SP),HL
RET
FN_5x_Parser_1:
; HDD_5x_RESET
; HDD_5x_LONG_READ
; HDD_5x_LONG_WRITE
; HDD_5x_VERIFY
; HDD_5x_READ
; HDD_5x_WRITE
; HDD_5x_DETECT
; HDD_5x_GETMED
; HDD_5x_SETMED
; DRV_VERSION
; FN_RESERVED_5x
; FN_RESERVED_5x
; FN_RESERVED_5x
; FN_RESERVED_5x
; DRV_LIST
FN_5x_Parser_1: ; HDD_5x_RESET
LD C,#01
JP FN_5x_Parser
FN_5x_Parser_2:
FN_5x_Parser_2: ; HDD_5x_LONG_READ
LD C,#02
JP FN_5x_Parser
FN_5x_Parser_3:
FN_5x_Parser_3: ; HDD_5x_LONG_WRITE
LD C,#03
JP FN_5x_Parser
FN_5x_Parser_4:
FN_5x_Parser_4: ; HDD_5x_VERIFY
LD C,#04
JP FN_5x_Parser
FN_5x_Parser_6:
FN_5x_Parser_6: ; HDD_5x_WRITE
LD C,#06
JP FN_5x_Parser
FN_5x_Parser_7:
FN_5x_Parser_7: ; HDD_5x_DETECT
LD C,#07
JP FN_5x_Parser
FN_5x_Parser_8:
FN_5x_Parser_8: ; HDD_5x_GETMED
LD C,#08
JP FN_5x_Parser
FN_5x_Parser_9:
FN_5x_Parser_9: ; HDD_5x_SETMED
LD C,#09
JP FN_5x_Parser
FN_5x_Parser_E:
FN_5x_Parser_E: ; DRV_EXTENDED
LD C,#0E
JP FN_5x_Parser
FN_5x_Parser_5:
FN_5x_Parser_5: ; HDD_5x_READ
LD C,5
FN_5x_Parser:
PUSH HL

View File

@ -0,0 +1,425 @@
;[x] 18/12/2023. ¤®¡ ¢«¥­¨¥/¤®¯¨«¨¢ ­¨¥ API CD-ROM (ATAPI)
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;CD ROM DRIVE DRIVER
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
; 02-08-2001 DNS Initial this module
;---------------------------------------------------------------
;========================================================
MAX_ATAPI_SEC_SIZE EQU 4096
PKTSIZE EQU 12
RAM_ATAPI_PK EQU SYS_PAGE.SHARED_BUFFER_32b
RAM_ATAPI_READ EQU SYS_PAGE.SHARED_BUFFER_32b+16
ASSERT ((PKTSIZE % 4) = 0), "PKTSIZE must be an even number"
;[]================================================================[#51]
CD_5x_RESET: LD C,IDE.Device.ATAPI
CALL SELECT_DRIVE
RET C
LD B,50
.loop: PUSH BC
CALL CD_TEST
POP BC
RET NC
EI
HALT
DJNZ .loop
RET
;[]================================================================[#51]
;!TODO
; atapi.pdf áâà. 24 § ¯¨áì/ç⥭¨¥ ¬®£ãâ ¡ëâì ¬ ªá¨¬ «ì­ë¬¨ ¡«®ª ¬¨ ¢ ­¥áª®«ìª® § å®¤®¢
;[]================================================================[#55]
;Function: Read Sectors
; A - Disk
; HL:IX - Sector
; DE - Address
; B - Sector counter
;Return:
; HL:IX - Sector + Sector counter
; DE - Address + (Sector counter * Size sector)
;READ SECTOR(S)
CD_5x_READ:
EX AF,AF'
IN A,(SLOT3)
EX AF,AF'
;[]================================================================[#52]
;Function: Long Read Sectors
; A - Disk
; HL:IX - Sector
; DE - Address
; B - Sector counter
; A'- Memory Page Number
;Return:
; HL:IX - Sector + Sector counter
; DE - Address + (Sector counter * Size sector)
;LONG READ SECTOR(S)
CD_5x_LONG_READ:
PUSH IY
SAFE_PORTY_2
PUSH BC
PUSH IX
PUSH HL
;
CALL RW_ATAPI_SECTORs
;
;
RET
RW_ATAPI_SECTORs:
LD C,IDE.Device.ATAPI
CALL SELECT_DRIVE
RET C
;
EXX
LD C,SLOT3
IN A,(C)
PUSH AF
LD A,SYS_PAGE
OUT (C),A
LD HL,ATAPI_CMD_PACKET.READ
LD DE,RAM_ATAPI_READ
LD BC,PKTSIZE
LDIR
EXX
;
LD A,H
LD H,L
LD L,A
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+0),HL
LD A,XH
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+2),A ;R01
LD A,XL
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+3),A ;R01
LD A,B
LD (RAM_ATAPI_READ + ATAPI_PACKET.COUNTER+1),A ;R01
;
EX AF,AF'
OUT (SLOT3),A
;
; POP AF
; OUT (SLOT3),A
LD HL,RAM_ATAPI_READ
CALL EXEC_PACKET_COMMAND
;
POP BC
LD C,SLOT3
OUT (C),B
;[]===========================================================[#52, #55]
;[]================================================================[#57]
;Function: Detect Disk
; A - Disk
;Return: CF=0 - A=Drive type
; CF=1 - drive not present, A=#02
CD_5x_DETECT:
LD C,IDE.Device.ATAPI
AND %1011'1111
JP DRV_DETECT
;[]================================================================[#57]
;[]================================================================[#5E]
;Function: Extended
; A - Disk
; B - SubFunction
;Return:
;
CD_5x_Extended:
LD C,IDE.Device.ATAPI
CALL SELECT_DRIVE
RET C
;
LD A,B
CP 2
JR C,TRAY_FN
; ...
; ...
;LD A,#AA
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;[]================================================================[#5E]
;----------------------------------------------------------------------;
TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE
LD DE,0 ; ¬ àª¥à ⮣®, çâ® ­¥ ­ã¦­® ç¨â âì á ãáâனá⢠ ¢ އ“
DEC A
JR Z,EXEC_PACKET_COMMAND
LD HL,ATAPI_CMD_PACKET.OPEN
JR EXEC_PACKET_COMMAND
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; INPUT: HL - AP paket (12bytes)
; RETURN: CF - ERROR
; !TODO CD ERRORS to INCLUDES
; #01 - RECOVERED ERROR
; #02 - NOT READY
; #03 - MEDIUM ERROR
; #04 - HARDWARE ERROR
; #05 - ILLEGAL REQUEST
; #06 - UNIT ATTETION
; #07 - DATA PROTECT
; #0B - ABORTED COMMAND
; #80 - TIME OUT
EXEC_PACKET_COMMAND:
EXX
CALL CD_WAITPRT
EXX
JR NC,.READY
;
LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Reset
OUT (C),A
;
LD B,#80
.pause: DJNZ .pause
;
EXX
CALL CD_WAITPRT
EXX
RET C
;
.READY: LD C,SLOT3
IN B,(C)
PUSH DE
PUSH BC
;
LD A,SYS_PAGE
OUT (C),A
LD DE,RAM_ATAPI_PK ;!FIXIT ¬®¦¥â ­  á⥪¥ ¢ë¤¥«ïâì ¬¥áâ®?
LD BC,PKTSIZE
LDIR
;
POP BC
POP DE
OUT (C),B
;
XOR A
EXX
;OUT (C),A
;XOR A
LD BC,IDE.Write.Features
OUT (C),A
LD DE,MAX_ATAPI_SEC_SIZE ;SIZE BLOCK ;!HARDCODE ¤®áâ ¢ âì ¨§ ¯¥à¥¬¥­­®© ª ª®©-­¨¡ã¤ì
LD BC,IDE.Write.CylinderLow
OUT (C),E
LD BC,IDE.Write.CylinderHigh
OUT (C),D
LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Packet
OUT (C),A
CALL CD_WAITPRT
EXX
RET C
EXX
LD DE,256*(IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest
CALL CD_WAITPRT.Custom
EXX
BIT IDE.CtrlBit.Error,A
JR NZ,.CDERROR
JR NC,.YEP_DRQ
LD A,#80 ; ERROR TIME OUT ;!HARDCODE
RET
;
.YEP_DRQ: LD C,SLOT3
IN B,(C)
PUSH BC
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,RAM_ATAPI_PK
LD BC,IDE.Write.Data
LD A,PKTSIZE/4
.OUTPKT: OUTI
OUTI
OUTI
OUTI
DEC A
JR NZ,.OUTPKT
;
POP BC
OUT (C),B
LD B,#80
.pause2: DJNZ .pause2
;
.AP_LOOP: EXX
CALL CD_WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.CtrlBit.Error,A
;JR NZ,.CDERROR
RET Z
;
.CDERROR: LD BC,IDE.Read.Error ;ERROR
IN A,(C)
RRCA
RRCA
RRCA
RRCA
AND #0F
SCF
RET
;
;!FIXIT
AND IDE.CtrlByte.DataRequest
RET Z ;NO DATA REQUEST. A = 0: BIOS.Error.NoErrors
EX DE,HL
LD BC,IDE.Read.CylinderLow
IN E,(C)
LD BC,IDE.Read.CylinderHigh
IN D,(C) ;TRANSFER BLOCK SIZE
LD A,D
OR E
RET Z ;BLOCK = 0
;
LD BC,IDE.Read.Counter
IN A,(C)
AND #02
;WRITE ;!FIXIT
LD BC,IDE.Read.Data
JR NZ,.FROM_CD
;
.WR_T_CD: OUTI
OUTI
DEC DE
DEC DE
LD A,D
OR E
JR NZ,.WR_T_CD
EX DE,HL
JR .AP_LOOP
;
;READ
.FROM_CD: ;LD BC,IDE.Read.Data
; ¯à®¢¥àª  ­  ¯¥à¥¯®«­¥­¨¥  ¤à¥á  ¡ãä¥à 
LD A,H
OR L
JR NZ,.read_loop
; next page in mem block
LD HL,#C000
IN A,(SLOT3)
EX AF,AF' ;>-----------> \
LD A,SYS_PAGE
OUT (SLOT3),A
LD D,high SYS_PAGE.RAM_TABLE
LD E,XH
LD A,(DE)
LD XH,A
EX AF,AF' ;<-----------< /
OUT (SLOT3),A
;
.read_loop: INI
INI
DEC DE
DEC DE
LD A,D
OR E
JR NZ,.read_loop
;
EX DE,HL
JR .AP_LOOP
;
;.NULL: LD BC,IDE.Read.Data
;.RD_N_CD: IN A,(C)
; DEC B
; IN A,(C)
; DEC B
; DEC DE
; DEC DE
; LD A,D
; OR E
; JR NZ,.RD_N_CD
; ; DE = 0
; JR .AP_LOOP
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; D - MASK, E - PATTERN
CD_WAITPRT: LD DE,256*(IDE.CtrlByte.DataRequest) + 0
.Custom: LD B,100
LD HL,#0000
.LOOP: LD A,high IDE.Read.Status
IN A,(low IDE.Read.Status)
CP #FF
JR Z,.error
AND D
CP E
;
RET Z
;
.NEXT_TRY: DEC L
JR NZ,.LOOP
DEC H
JR NZ,.LOOP
DJNZ .LOOP
;
EX AF,AF'
.error: ; !FIXIT error number
SCF
RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
CD_TEST: LD HL,ATAPI_CMD_PACKET.NOP
LD DE,0 ; ¬ àª¥à ⮣®, çâ® ­¥ ­ã¦­® ç¨â âì á ãáâனá⢠ ¢ އ“
JP EXEC_PACKET_COMMAND
;----------------------------------------------------------------------;
////////////////////////////////////////////////////////////////////////
ATAPI_CMD_PACKET:
.NOP: DUP 12
DB #00
EDUP
;
.OPEN: DB #1B
DB #00,#00,#00
DB #02
DB #00,#00,#00,#00,#00,#00,#00
;
.CLOSE: DB #1B
DB #00,#00,#00
DB #03
DB #00,#00,#00,#00,#00,#00,#00
;
.READ: DB #28,#00
DB #00,#00,#00,#00 ; sector dword
DB #00
DB #00,#01,#00,#00 ; counter dword
DB #00
;
.WRITE: DB #2E,#00
DB #00,#00,#00,#00 ; sector dword
DB #00
DB #00,#01,#00,#00 ; counter dword
DB #00
;
ATAPI_PACKET:
.SECTOR EQU 2
.COUNTER EQU 7
////////////////////////////////////////////////////////////////////////
;
; E - Second * 10
; PAUSE LD HL,#0000
; PAUSE1 DEC L
; JR NZ,PAUSE1
; DEC H
; JR NZ,PAUSE1
; DEC E
; JR NZ,PAUSE1
; RET
;

View File

@ -168,145 +168,157 @@ HDD_5x_READ:
; A - Disk
; HL:IX - Sector
; DE - Address
; B - Sector counter
; B - Sector counter, 0 = 256
; A'- Memory Page Number
;Return:
; HL:IX - Sector + Sector counter
; DE - Address + (Sector counter * Size sector)
; A' - Last mem page in RAM Block used for readed data
;LONG READ SECTOR(S)
HDD_5x_LONG_READ:
PUSH IY
SAFE_PORTY_2
PUSH BC
PUSH IX
PUSH HL
CALL RDS000
EX DE,HL
JR C,HERRRD0
LD A,XH
EX AF,AF'
POP HL
POP IX
POP BC
XOR A
CP B
LD C,B
LD B,A
JR NZ,RNOT256
INC B
ADD IX,BC
LD B,C
ADC HL,BC
;EX AF,AF' ;!TEST 21/11/23
JR RST8RDR
RNOT256 ADD IX,BC
LD C,B
ADC HL,BC
;EX AF,AF' ;!TEST 21/11/23
JR RST8RDR
HERRRD0 LD B,A
LD C,XL
LD A,XH
EX AF,AF'
POP HL
POP IX
PUSH BC
LD B,0
ADD IX,BC
LD C,B
ADC HL,BC
POP BC
POP AF
SUB C
LD C,A
LD A,B
LD B,C
;R03
SCF
;EX AF,AF' ;!TEST 21/11/23
PUSH IY
SAFE_PORTY_2
PUSH BC
PUSH IX
PUSH HL
;IF OPTIMIZE_RW_PROCEDURE
EX AF,AF'
AND A ;read
EX AF,AF'
CALL RW_ATA_SECTORs
;ELSE
;CALL READ_ATA_SECTORs
;ENDIF
;
EX DE,HL
JR C,.error
LD A,XH ; current page in mem block for SLOT3
EX AF,AF'
;
POP HL
POP IX
POP BC
XOR A
CP B
LD C,B
LD B,A
JR Z,.B_256_sectors
;
ADD IX,BC
LD C,B
.pre_exit: ADC HL,BC
.exit: RESTORE_PORTY
POP IY
RET
;
.B_256_sectors: INC B
ADD IX,BC
LD B,C
JR .pre_exit
;
.error: LD B,A ; A - ­®¬¥à ®è¨¡ª¨
LD C,XL
LD A,XH ; current page in mem block for SLOT3
EX AF,AF'
POP HL
POP IX
PUSH BC
LD B,0
ADD IX,BC
LD C,B
ADC HL,BC
POP BC
POP AF
SUB C
LD C,A
LD A,B
LD B,C
SCF ;R03
JR .exit
;
/*
IFN OPTIMIZE_RW_PROCEDURE
READ_ATA_SECTORs:
LD C,IDE.Device.HDD
CALL SELECT_DRIVE
RET C
EXX
;LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
CALL WAITPRT
EXX
RET C
EX AF,AF'
PUSH AF ; memory page number
PUSH DE
CALL PRESET
POP HL
POP AF ; memory page number
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,IDE.ATA.ReadSectorsWithRetry
OUT (C),A
;SAVE HL!
EXX
LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0
CALL WAITPRT.custom
EXX
RET C
;DI ;R01 REMOVED "DI"
.big_loop: IN A,(SLOT3)
EX AF,AF' ;>-----------> \
LD A,XH
OUT (SLOT3),A
;
RST8RDR: RESTORE_PORTY
POP IY
;EX AF,AF' ;!TEST 21/11/23
RET
;READ SECTOR(S)
RDS000: LD C,IDE.Device.HDD
CALL SELECT_DRIVE
RET C
EXX
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
CALL WAITPRT
EXX
RET C
EX AF,AF'
PUSH AF
PUSH DE
CALL PRESET
POP HL
POP AF
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,IDE.ATA.ReadSectorsWithRetry
OUT (C),A
;?????
;SAVE HL!
RDS002: EXX
LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0
CALL WAITPRT
EXX
RET C
;NOP ;R01 REMOVED "DI"
IN A,(SLOT3)
EX AF,AF'
LD A,XH
OUT (SLOT3),A
LD BC,IDE.Read.Data
RDS003: DUP 16
INI
EDUP
JP NZ,RDS003
RDS004: DUP 16
INI
EDUP
JP NZ,RDS004
EX AF,AF'
OUT (SLOT3),A
;
LD A,H
OR L
JR NZ,.W44
LD HL,#C000
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD D,#C2
LD E,XH
LD A,(DE)
LD XH,A
EX AF,AF'
OUT (SLOT3),A
; READ SECTOR 512 bytes ;!HARDCODE sector size
LD BC,IDE.Read.Data
.loop_256_1: DUP 16
INI
EDUP
JP NZ,.loop_256_1
.loop_256_2: DUP 16
INI
EDUP
JP NZ,.loop_256_2
; ; ; ; ;
;
.W44: INC XL ;INC LOADED SECTORS
EXX
LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
CALL WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.ControlBit.DataRequest,A
JP NZ,RDS002
XOR A
RET
EX AF,AF' ;<-----------< /
OUT (SLOT3),A
;
LD A,H
OR L
JR NZ,.W44
; next page in mem block
LD HL,#C000
IN A,(SLOT3)
EX AF,AF' ;>-----------> \
LD A,SYS_PAGE
OUT (SLOT3),A
LD D,high SYS_PAGE.RAM_TABLE
LD E,XH
LD A,(DE)
LD XH,A
EX AF,AF' ;<-----------< /
OUT (SLOT3),A
;
.W44: INC XL ;INC LOADED SECTORS
EXX
;LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
CALL WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.CtrlBit.DataRequest,A
;
RET Z
JP .big_loop
;JP NZ,.big_loop
;XOR A
;RET
;
ENDIF
*/
;[]===========================================================[#52, #55]
@ -343,7 +355,15 @@ HDD_5x_LONG_WRITE:
PUSH IX
PUSH HL
PUSH BC
CALL WRS000
;IF OPTIMIZE_RW_PROCEDURE
EX AF,AF'
SCF ;write
EX AF,AF'
CALL RW_ATA_SECTORs
;ELSE
;CALL WRITE_ATA_SECTORs
;ENDIF
;
EX DE,HL
JP C,HERRWR0
LD A,XH
@ -395,97 +415,195 @@ RST8WRR: RESTORE_PORTY
;EX AF,AF'
RET
;WRITE SECTOR(S)
WRS000:
LD C,IDE.Device.HDD
CALL SELECT_DRIVE
RET C
EXX
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
CALL WAITPRT
EXX
RET C
EX AF,AF'
PUSH AF
PUSH DE
;[x] CMOS Write Protect Disabled
IF HDDwriteProtect
PUSH BC
LD D,CMOS_CELL.Options
CALL CMOS_RD
POP BC
AND 1
JR Z,NO_WriteProtect
POP HL
POP AF
EX AF,AF'
LD XL,0
LD A,BIOS.Error.WriteProtect
SCF
RET
ENDIF
NO_WriteProtect:
CALL PRESET
POP HL
POP AF
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,IDE.ATA.WriteSectorsWithRetry
OUT (C),A
;SAVE HL!
WRS002: EXX
LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0
CALL WAITPRT
EXX
RET C
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
/*
temp1=0;
bp 20e3,{b@20e3==cd},{temp1=1; g};
bp 213b,{b@213b==cd},{temp1=2; g};
bp 21B1,{b@21b1==01 and temp1==2};
bp 2229,{b@2229==01 and temp1==1};
*/
; IF OPTIMIZE_RW_PROCEDURE
; CF=1 - write, CF=0 - read
RW_ATA_SECTORs: LD C,IDE.Device.HDD
CALL SELECT_DRIVE
RET C
EXX
;LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
CALL WAITPRT
EXX
RET C
EX AF,AF'
PUSH AF ; memory page number
PUSH DE
CALL PRESET
POP HL
POP AF ; memory page number
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,IDE.ATA.WriteSectorsWithRetry
JR C,.set_command
;
LD A,IDE.ATA.ReadSectorsWithRetry
.set_command: OUT (C),A
;SAVE HL!
EX AF,AF'
EXX
LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest
CALL WAITPRT.custom
EXX
RET C
;DI ;R01 REMOVED "DI"
.big_loop: IN A,(SLOT3)
EX AF,AF' ;>-----------> \
LD A,XH
OUT (SLOT3),A
JR C,.write_sector
;
; READ SECTOR 512 bytes ;!HARDCODE sector size
LD BC,IDE.Read.Data
.loop_256_1: DUP 16
INI
EDUP
JP NZ,.loop_256_1
.loop_256_2: DUP 16
INI
EDUP
JP NZ,.loop_256_2
EX AF,AF'
; ; ; ; ;
; CF=0
.return_rw: EX AF,AF' ;<-----------< /
OUT (SLOT3),A
;
LD A,H
OR L
JR NZ,.W44
; next page in mem block
LD HL,#C000
IN A,(SLOT3)
EX AF,AF' ;>-----------> \
LD A,SYS_PAGE
OUT (SLOT3),A
LD D,high SYS_PAGE.RAM_TABLE
LD E,XH
LD A,(DE)
LD XH,A
EX AF,AF' ;<-----------< /
OUT (SLOT3),A
;
.W44: INC XL ;INC LOADED SECTORS
EXX
CALL WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.CtrlBit.DataRequest,A
;
RET Z
JP .big_loop
;JP NZ,.big_loop
;XOR A
;RET
;
;
.write_sector: ; WRITE SECTOR 512 bytes ;!HARDCODE sector size
LD BC,IDE.Write.Data
LD D,512/WRITE_OUTI_DUPs ;!HARDCODE sector size
.loop: DUP WRITE_OUTI_DUPs
OUTI
EDUP
DEC D
JR NZ,.loop
SCF
JP .return_rw
; ; ; ; ;
;DI
IN A,(SLOT3)
EX AF,AF'
LD A,XH
OUT (SLOT3),A
LD BC,IDE.Write.Data
;LD D,#20
LD D,512/WRITE_OUTI_DUPs
WRS003:
DUP WRITE_OUTI_DUPs
OUTI
EDUP
DEC D
JR NZ,WRS003
EX AF,AF'
OUT (SLOT3),A
//EI
;
LD A,H
OR L
JR NZ,.W33
LD HL,#C000
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD D,#C2
LD E,XH
LD A,(DE)
LD XH,A
EX AF,AF'
OUT (SLOT3),A
.W33: INC XL ;INC SAVED SECTORS
EXX
LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
CALL WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.ControlBit.DataRequest,A
JP NZ,WRS002
XOR A
RET
;ENDIF
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
/*
IFN OPTIMIZE_RW_PROCEDURE
WRITE_ATA_SECTORs:
LD C,IDE.Device.HDD
CALL SELECT_DRIVE
RET C
EXX
;LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
CALL WAITPRT
EXX
RET C
EX AF,AF'
PUSH AF
PUSH DE
CALL PRESET
POP HL
POP AF
LD XL,0
LD XH,A
LD BC,IDE.Write.Command
LD A,IDE.ATA.WriteSectorsWithRetry
OUT (C),A
; SAVE HL?!
EXX
LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0
CALL WAITPRT.custom
EXX
RET C
;
.big_loop: IN A,(SLOT3)
EX AF,AF'
LD A,XH
OUT (SLOT3),A
; WRITE SECTOR 512 bytes ;!HARDCODE sector size
LD BC,IDE.Write.Data
LD D,512/WRITE_OUTI_DUPs ;!HARDCODE sector size
.loop: DUP WRITE_OUTI_DUPs
OUTI
EDUP
DEC D
JR NZ,.loop
; ; ; ; ;
EX AF,AF'
OUT (SLOT3),A
;EI
;
LD A,H
OR L
JR NZ,.W33
; next page in mem block
LD HL,#C000
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD D,high SYS_PAGE.RAM_TABLE
LD E,XH
LD A,(DE)
LD XH,A
EX AF,AF'
OUT (SLOT3),A
;
.W33: INC XL ;INC SAVED SECTORS
EXX
;LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
CALL WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.CtrlBit.DataRequest,A
;
RET Z
JP .big_loop
;JP NZ,.big_loop
;XOR A
;RET
;
ENDIF
*/
;[]===========================================================[#53, #56]
@ -513,7 +631,6 @@ VRS000: LD C,IDE.Device.HDD
CALL SELECT_DRIVE
RET C
EXX
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
CALL WAITPRT
EXX
RET C
@ -525,16 +642,15 @@ VRS000: LD C,IDE.Device.HDD
OUT (C),A
VRS002: LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.ControlBit.Error,A
BIT IDE.CtrlBit.Error,A
JR Z,VRS003
SCF
RET
VRS003: LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
CALL WAITPRT
VRS003: CALL WAITPRT
RET C
XOR A
RET
LD BC,IDE.Read.Counter
; HL:IX - LBA SECTOR
; B - SECTOR COUNTER
PRESET: LD A,B
@ -624,30 +740,30 @@ CHS005: INC A
;----------------------------------------------------------------------;
; D - MASK
; E - PATTERN
WAITPRT:
LD BC,IDE.Read.Status
LD HL,#0000 ; § ¤¥à¦ª  ;!HARDCODE
;
.loop: PUSH HL
;
.loop2: IN A,(C)
AND D
CP E
JR Z,.ok
DEC HL
LD A,L
OR H
JP NZ,.loop2
;
POP HL
DEC L
JR NZ,.loop
;
.error: LD A,BIOS.Error.NotReady
SCF
RET
.ok: POP HL
RET
WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error)+IDE.CtrlByte.Ready
.custom: LD BC,IDE.Read.Status
LD HL,#0000 ; § ¤¥à¦ª  ;!HARDCODE
;
.loop: PUSH HL
;
.loop2: IN A,(C)
AND D
CP E
JR Z,.ok
DEC HL
LD A,L
OR H
JP NZ,.loop2
;
POP HL
DEC L
JR NZ,.loop
;
.error: LD A,BIOS.Error.NotReady
SCF
RET
.ok: POP HL
RET
;----------------------------------------------------------------------;

View File

@ -1,403 +0,0 @@
;[x] 18/12/2023. ¤®¡ ¢«¥­¨¥/¤®¯¨«¨¢ ­¨¥ API CD-ROM (ATAPI)
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;CD ROM DRIVE DRIVER
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
; 02-08-2001 DNS Initial this module
;---------------------------------------------------------------
;========================================================
SIZESEC EQU #0800
PKTSIZE EQU 12
RAM_ATAPI_PK EQU SYS_PAGE.SHARED_BUFFER_32b
RAM_ATAPI_READ EQU SYS_PAGE.SHARED_BUFFER_32b+16
ASSERT ((PKTSIZE % 2) = 0), "PKTSIZE must be an even number"
;[]================================================================[#51]
CD_5x_RESET:
LD C,IDE.Device.CDROM
CALL SELECT_DRIVE
RET C
LD B,50
.loop:
PUSH BC
CALL CD_TEST
POP BC
RET NC
EI
HALT
DJNZ .loop
RET
;[]================================================================[#51]
;[]================================================================[#55]
;Function: Read Sectors
; A - Disk
; HL:IX - Sector
; DE - Address
; B - Sector counter
;Return:
; HL:IX - Sector + Sector counter
; DE - Address + (Sector counter * Size sector)
;READ SECTOR(S)
CD_5x_READ:
EX AF,AF'
IN A,(SLOT3)
EX AF,AF'
;[]================================================================[#52]
;Function: Long Read Sectors
; A - Disk
; HL:IX - Sector
; DE - Address
; B - Sector counter
; A'- Memory Page Number
;Return:
; HL:IX - Sector + Sector counter
; DE - Address + (Sector counter * Size sector)
;LONG READ SECTOR(S)
CD_5x_LONG_READ:
LD C,IDE.Device.CDROM
CALL SELECT_DRIVE
RET C
;
EXX
LD C,SLOT3
IN A,(C)
PUSH AF
LD A,SYS_PAGE
OUT (C),A
LD HL,ATAPI_CMD_PACKET.READ
LD DE,RAM_ATAPI_READ
LD BC,PKTSIZE
LDIR
EXX
LD A,H
LD H,L
LD L,A
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+0),HL
LD A,XH
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+2),A ;R01
LD A,XL
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+3),A ;R01
LD A,B
LD (RAM_ATAPI_READ + ATAPI_PACKET.COUNTER+1),A ;R01
;
EX AF,AF'
OUT (SLOT3),A
;
; POP AF
; OUT (SLOT3),A
LD HL,RAM_ATAPI_READ
CALL AP_COM
;
POP BC
LD C,SLOT3
OUT (C),B
;
RET
;[]===========================================================[#52, #55]
;[]================================================================[#57]
;Function: Detect Disk
; A - Disk
;Return: CF=0 - A=Drive type
; CF=1 - drive not present, A=#02
CD_5x_DETECT:
LD C,IDE.Device.CDROM
AND %1011'1111
JP DRV_DETECT
;[]================================================================[#57]
;[]================================================================[#5E]
;Function: Extended
; A - Disk
; B - SubFunction
;Return:
;
CD_5x_Extended:
LD C,IDE.Device.CDROM
CALL SELECT_DRIVE
RET C
;
LD A,B
CP 2
JR C,TRAY_FN
; ...
; ...
;LD A,#AA
LD A,BIOS.Error.InvalidSubFunction
SCF
RET
;[]================================================================[#5E]
;----------------------------------------------------------------------;
TRAY_FN:
LD DE,0 ;!FIXIT ­ã¦­® «¨?
LD HL,ATAPI_CMD_PACKET.CLOSE
DEC A
JR Z,AP_COM
LD HL,ATAPI_CMD_PACKET.OPEN
JR AP_COM
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; INPUT: HL - AP paket (12bytes)
; RETURN: CF - ERROR
; !TODO CD ERRORS to INCLUDES
; #01 - RECOVERED ERROR
; #02 - NOT READY
; #03 - MEDIUM ERROR
; #04 - HARDWARE ERROR
; #05 - ILLEGAL REQUEST
; #06 - UNIT ATTETION
; #07 - DATA PROTECT
; #0B - ABORTED COMMAND
; #80 - TIME OUT
AP_COM: EXX
;LD DE,#8000
CALL CD_WAITPRT
EXX
JR NC,.READY
LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Reset
OUT (C),A
LD B,#80
.pause: DJNZ .pause
EXX
;LD DE,#8000
CALL CD_WAITPRT
EXX
RET C
.READY:
LD C,SLOT3
IN B,(C)
PUSH DE
PUSH BC
LD A,SYS_PAGE
OUT (C),A
LD DE,RAM_ATAPI_PK ;!FIXIT ¬®¦¥â ­  á⥪¥ ¢ë¤¥«ïâì ¬¥áâ®?
LD BC,PKTSIZE
LDIR
POP BC
POP DE
OUT (C),B
XOR A
EXX
;OUT (C),A
;XOR A
LD BC,IDE.Write.Features
OUT (C),A
LD DE,SIZESEC ;SIZE BLOCK ;!HARDCODE ¤®áâ ¢ âì ¨§ ¯¥à¥¬¥­­®© ª ª®©-­¨¡ã¤ì
LD BC,IDE.Write.CylinderLow
OUT (C),E
LD BC,IDE.Write.CylinderHigh
OUT (C),D
LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Packet
OUT (C),A
;LD DE,#8000
CALL CD_WAITPRT
EXX
RET C
EXX
LD DE,#0908
CALL CD_WAITPRT.Custom
EXX
BIT IDE.ControlBit.Error,A
JR NZ,.CDERROR
JR NC,.YEP_DRQ
LD A,#80 ; ERROR TIME OUT ;!HARDCODE
RET
;
.YEP_DRQ:
LD C,SLOT3
IN B,(C)
PUSH BC
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,RAM_ATAPI_PK
LD BC,IDE.Write.Data
LD A,PKTSIZE/2
.OUTPKT:
OUTI
OUTI
DEC A
JR NZ,.OUTPKT
;
POP BC
OUT (C),B
;
LD B,#80
.pause2: DJNZ .pause2
;
.AP_LOOP:
EXX
;LD DE,#8000
CALL CD_WAITPRT
EXX
RET C
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.ControlBit.Error,A
JR Z,.NO_ERR
.CDERROR:
LD BC,IDE.Read.Error ;ERROR
IN A,(C)
RRCA
RRCA
RRCA
RRCA
AND #0F
SCF
RET
.NO_ERR:
;BIT IDE.ControlBit.DataRequest,A
AND IDE.ControlByte.DataRequest
LD A,BIOS.Error.NoErrors
RET Z ;NO DATA REQUEST A = 0: BIOS.Error.NoErrors
EX DE,HL
LD BC,IDE.Read.CylinderLow
IN E,(C)
LD BC,IDE.Read.CylinderHigh
IN D,(C) ;TRANSFER BLOCK SIZE
LD A,D
OR E
RET Z ;BLOCK = 0
LD BC,IDE.Read.Counter
IN A,(C)
AND #02
JR NZ,.FROM_CD
;.TO_CD:
LD BC,IDE.Read.Data
.WR_T_CD:
OUTI
OUTI
DEC DE
DEC DE
LD A,D
OR E
JR NZ,.WR_T_CD
EX DE,HL
JR .AP_LOOP
;
.FROM_CD:
; ¯à®¢¥àª  ­  ¯¥à¥¯®«­¥­¨¥  ¤à¥á  ¡ãä¥à 
LD A,H
OR L
JR Z,.NULL
LD BC,IDE.Read.Data
.RD_F_CD:
INI
INI
DEC DE
DEC DE
LD A,D
OR E
JR NZ,.RD_F_CD
EX DE,HL
JR .AP_LOOP
;
.NULL: LD BC,IDE.Read.Data
.RD_N_CD:
IN A,(C)
DEC B
IN A,(C)
DEC B
DEC DE
DEC DE
LD A,D
OR E
JR NZ,.RD_N_CD
; DE = 0
JR .AP_LOOP
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
CD_WAITPRT: LD DE,#8000 ; D - MASK, E - PATTERN
.Custom: LD BC,IDE.Read.Status
LD A,100
LD HL,#0000
.LOOP_A: EX AF,AF'
.LOOP_HL: IN A,(C)
CP #FF
JR Z,.error
AND D
CP E
;
; JR NZ,.NEXT_TRY
; AND A
; RET
RET Z
;
.NEXT_TRY: DEC L
JR NZ,.LOOP_HL
DEC H
JR NZ,.LOOP_HL
EX AF,AF'
DEC A
JR NZ,.LOOP_A
;
EX AF,AF'
.error: SCF
RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
CD_TEST LD HL,ATAPI_CMD_PACKET.NOP
LD DE,0 ;!FIXIT ­ã¦­® «¨?
JP AP_COM
;----------------------------------------------------------------------;
////////////////////////////////////////////////////////////////////////
ATAPI_CMD_PACKET:
.NOP: DUP 12
DB #00
EDUP
;
.OPEN: DB #1B
DB #00,#00,#00
DB #02
DB #00,#00,#00,#00,#00,#00,#00
;
.CLOSE: DB #1B
DB #00,#00,#00
DB #03
DB #00,#00,#00,#00,#00,#00,#00
;
.READ: DB #28,#00
DB #00,#00,#00,#00 ; sector dword
DB #00
DB #00,#01,#00,#00 ; counter dword
DB #00
;
ATAPI_PACKET:
.SECTOR EQU 2
.COUNTER EQU 7
////////////////////////////////////////////////////////////////////////
;
; E - Second * 10
; PAUSE LD HL,#0000
; PAUSE1 DEC L
; JR NZ,PAUSE1
; DEC H
; JR NZ,PAUSE1
; DEC E
; JR NZ,PAUSE1
; RET
;

View File

@ -2,7 +2,7 @@
MACRO WAIT_HDD
LD BC,IDE.Read.Status
.loop: IN A,(C)
BIT IDE.ControlBit.Busy,A
BIT IDE.CtrlBit.Busy,A
JR NZ,.loop
ENDM
;______________________________________________________________________:
@ -279,8 +279,8 @@ FN_HDD_READ:
LD A,IDE.ATA.ReadSectorsWithRetry
OUT (C),A
.L2: WAIT_HDD
;BIT IDE.ControlBit.DataRequest,A
AND IDE.ControlByte.DataRequest
;BIT IDE.CtrlBit.DataRequest,A
AND IDE.CtrlByte.DataRequest
JR Z,.RET_PortY
;
;HD_READ_CONT
@ -354,7 +354,7 @@ FN_HDD_WRITE:
HD_WR_L2:
WAIT_HDD
BIT IDE.ControlBit.DataRequest,A
BIT IDE.CtrlBit.DataRequest,A
JR Z,HD_RET
LD BC,IDE.Write.Data
@ -390,7 +390,7 @@ FN_HDD_RECAL:
LD A,IDE.ATA.ExecuteDeviceDiagnostic
CALL HD_CMD_EXE
;AND A
CP IDE.ControlByte.Error
CP IDE.CtrlByte.Error
RET Z
LD BC,IDE.Read.Error
IN A,(C)
@ -627,7 +627,7 @@ FN_HDD_INIT:
LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
OUT (C),A
WAIT_HDD
AND IDE.ControlByte.DataRequest
AND IDE.CtrlByte.DataRequest
;JR NZ,.L2
SCF
RET Z
@ -705,7 +705,7 @@ HD_WAIT:
LD DE,0
.loop: LD BC,IDE.Read.Status
IN A,(C)
AND IDE.ControlByte.Busy
AND IDE.CtrlByte.Busy
JR Z,.EXIT
DEC DE
LD A,D

View File

@ -33,94 +33,131 @@ DRV_LIST:
LD (IX+1),#00 ; DB 0 ;FDD COUNT
LD (IX+2),#00 ; DB 0 ;HDD COUNT
LD (IX+3),#00 ; DB 0 ;CDROM COUNT
; ; BLOCK 28,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
; ; BLOCK 13,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
LD (IX+4),#00 ; END FLAG
;Calculating FDD devices
LD A,#FF
LD HL,FDD_INI_TABLE.FDD_0
INC (IX+1)
LD B,8
LD A,#FF
.TFD0:
CP (HL)
INC HL
JR NZ,.YYYFD0
DJNZ .TFD0
DEC (IX+1)
.YYYFD0:
CALL .CHECK_FDD
LD HL,FDD_INI_TABLE.FDD_1
INC (IX+1)
LD B,8
LD A,#FF
.TFD1:
CP (HL)
INC HL
JR NZ,.YYYFD1
DJNZ .TFD1
DEC (IX+1)
.YYYFD1:
;Calculating IDE devices
CALL .CHECK_FDD
; INC (IX+1)
; LD B,8
; LD A,#FF
; .TFD0:
; CP (HL)
; INC HL
; JR NZ,.YYYFD0
; DJNZ .TFD0
; DEC (IX+1)
; .YYYFD0:
; LD HL,FDD_INI_TABLE.FDD_1
; INC (IX+1)
; LD B,8
; LD A,#FF
; .TFD1:
; CP (HL)
; INC HL
; JR NZ,.YYYFD1
; DJNZ .TFD1
; DEC (IX+1)
; .YYYFD1:
; A=#FF
;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM
LD IY,IDE.INIT_TBL_IDE0
LD DE,IDE.HDD_INIT_TABLE
LD B,4 ; !HARDCODE ª®«-¢® IDE ãáâனáâ¢
.CHECK_IDE:
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.ABSIDE0
JR Z,.NEXT_IDE
CP IDE.Device.HDD
JR NZ,.NOT_HD0
JR NZ,.NOT_HDD
INC (IX+2)
.NOT_HD0:
CP IDE.Device.CDROM
JR NZ,.NOT_CD0
INC (IX+3)
.NOT_CD0:
.ABSIDE0:
LD IY,IDE.INIT_TBL_IDE1
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.ABSIDE1
CP IDE.Device.HDD
JR NZ,.NOT_HD1
INC (IX+2)
.NOT_HD1:
CP IDE.Device.CDROM
JR NZ,.NOT_CD1
INC (IX+3)
.NOT_CD1:
.ABSIDE1:
LD IY,IDE.INIT_TBL_IDE2
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.ABSIDE2
CP IDE.Device.HDD
JR NZ,.NOT_HD2
INC (IX+2)
.NOT_HD2:
CP IDE.Device.CDROM
JR NZ,.NOT_CD2
INC (IX+3)
.NOT_CD2:
.ABSIDE2:
LD IY,IDE.INIT_TBL_IDE3
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,.check_exit
CP IDE.Device.HDD
JR NZ,.NOT_HD3
INC (IX+2)
.NOT_HD3:
CP IDE.Device.CDROM
JR NZ,.check_exit
.NOT_HDD:
CP IDE.Device.ATAPI
JR NZ,.NEXT_IDE
INC (IX+3)
.NEXT_IDE:
ADD IY,DE
DJNZ .CHECK_IDE
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.ABSIDE0
; CP IDE.Device.HDD
; JR NZ,.NOT_HD0
; INC (IX+2)
; .NOT_HD0:
; CP IDE.Device.ATAPI
; JR NZ,.NOT_CD0
; INC (IX+3)
; .NOT_CD0:
; .ABSIDE0:
; LD IY,IDE.INIT_TBL_IDE1
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.ABSIDE1
; CP IDE.Device.HDD
; JR NZ,.NOT_HD1
; INC (IX+2)
; .NOT_HD1:
; CP IDE.Device.ATAPI
; JR NZ,.NOT_CD1
; INC (IX+3)
; .NOT_CD1:
; .ABSIDE1:
; LD IY,IDE.INIT_TBL_IDE2
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.ABSIDE2
; CP IDE.Device.HDD
; JR NZ,.NOT_HD2
; INC (IX+2)
; .NOT_HD2:
; CP IDE.Device.ATAPI
; JR NZ,.NOT_CD2
; INC (IX+3)
; .NOT_CD2:
; .ABSIDE2:
; LD IY,IDE.INIT_TBL_IDE3
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
; CP #FF
; JR Z,.check_exit
; CP IDE.Device.HDD
; JR NZ,.NOT_HD3
; INC (IX+2)
; .NOT_HD3:
; CP IDE.Device.ATAPI
; JR NZ,.check_exit
; INC (IX+3)
.check_exit:
POP IY
POP AF
OUT (SLOT3),A
XOR A
RET
;
; A=#FF
.CHECK_FDD:
INC (IX+1)
LD B,8
.TFD0: CP (HL)
INC HL
RET NZ
DJNZ .TFD0
DEC (IX+1)
RET
;
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'
INCLUDE 'EXTENDED/IDE/HDD_DRV.asm'
INCLUDE 'EXTENDED/IDE/CD_DRV.asm'
INCLUDE 'EXTENDED/IDE/ATA_DRV.asm'
INCLUDE 'EXTENDED/IDE/ATAPI_DRV.asm'
INCLUDE 'EXTENDED/IDE/SHARED.asm'

View File

@ -290,7 +290,7 @@ AUTODETECTING: CALL DETECTORS.CheckChanel
; enter point for ATAPI in setup
.Its_ATAPI: CALL DETECTORS.IdentPDevChk
JR C,.IDE_ABSENT
LD A,IDE.Device.CDROM
LD A,IDE.Device.ATAPI
LD (IDEDEV),A
JR .get
@ -331,8 +331,8 @@ SETUP_FROM_CMOS:
JR Z,.step1
;
LD IX,SEC_SLAVE_CMOS_T
.step1: LD HL,TEMP
LD DE,TEMP+1
.step1: LD HL,IDENTIFY_DEVICE_BUFFER
LD DE,IDENTIFY_DEVICE_BUFFER+1
LD BC,511
LD (HL),0
LDIR
@ -346,7 +346,7 @@ SETUP_FROM_CMOS:
;
.step2: LD A,(IX+2) ;M_HEAD
CALL READCMS
LD (TEMP+3*2),A ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. HEADS PER TRACK
LD (IDENTIFY_DEVICE_BUFFER.NumHeads),A
;
LD A,(IX+1) ;M_CYLH
CALL READCMS
@ -356,92 +356,90 @@ SETUP_FROM_CMOS:
CALL READCMS
POP HL
LD L,A
LD (TEMP+1*2),HL ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. CYLINDERS
LD (IDENTIFY_DEVICE_BUFFER.NumCylinders),HL
;
LD A,(IX+3) ;M_SECT
CALL READCMS
LD (TEMP+6*2),A ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. SECTOR PER TRACK
LD (IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack),A
;
LD A,IDE.Device.HDD
LD (IDEDEV),A
CALL IDESPEC
RET
; CALL IDESPEC
; RET
/////////////////////////////////////////////////////////////////////[^]
/////////////////////////////////////////////////////////////////////[v]
IDESPEC:
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(IDEDEV)
LD (IY+IDE.HDD_INIT_TABLE.DriveType),A
CP IDE.Device.CDROM
JP Z,.FOR_CDR
;
LD BC,IDE.Read.Control
IN A,(C)
AND #F0
LD B,A
LD A,(TEMP+#06) ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. HEADS PER TRACK
LD (IY+IDE.HDD_INIT_TABLE.HeadsNumber),A
DEC A
AND #0F
OR B
LD B,A
LD A,(TEMP+#63) ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. LBA/NON-LBA bit 1 (FROM ZERO!)
BIT 1,A
JR Z,.NONLBA
;
SET 6,B
.NONLBA: LD A,B
LD BC,IDE.Write.DeviceHead
OUT (C),A
AND #F0 ;!HARDCODE DRIVE/HEAD REGISTER PHISICAL DISK bitmask
LD HL,ICHANEL
OR (HL)
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
LD HL,(TEMP+#02) ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. CYLINDERS
LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberLow),L
LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),H
LD A,(TEMP+#0C) ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. SECTOR PER TRACK
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),A
IF IDE_Optimization
LD B,high IDE.Write.Counter
ELSE
LD BC,IDE.Write.Counter
ENDIF
OUT (C),A
LD A,IDE.ATA.InitializeDeviceParameters
CALL IDE_CMD
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track
LD B,0
LD H,B
LD L,B
LD A,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) ; Head per HDD
.loop: ADD HL,BC
DEC A
JR NZ,.loop
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow),L
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
.END: ; [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
;
EX AF,AF'
OUT (SLOT3),A
AND A
RET
;
.FOR_CDR: LD BC,IDE.Read.Control
IN A,(C)
AND #F0
LD HL,ICHANEL
OR (HL)
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
JR IDESPEC.END
IDESPEC: IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(IDEDEV)
LD (IY+IDE.HDD_INIT_TABLE.DriveType),A
CP IDE.Device.ATAPI
JP Z,.FOR_ATAPI
;
LD BC,IDE.Read.Control
IN A,(C)
AND #F0
LD B,A
LD A,(IDENTIFY_DEVICE_BUFFER.NumHeads)
LD (IY+IDE.HDD_INIT_TABLE.HeadsNumber),A
DEC A
AND #0F
OR B
LD B,A
LD A,(IDENTIFY_DEVICE_BUFFER.Capabilities_high)
;BIT 1,A
AND %0000'0010
JR Z,.NONLBA
;
SET 6,B
.NONLBA: LD A,B
LD BC,IDE.Write.DeviceHead
OUT (C),A
AND #F0 ;!HARDCODE DRIVE/HEAD REGISTER PHISICAL DISK bitmask
LD HL,ICHANEL
OR (HL)
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
LD HL,(IDENTIFY_DEVICE_BUFFER.NumCylinders)
LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberLow),L
LD (IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),H
LD A,(IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack)
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),A
IF IDE_Optimization
LD B,high IDE.Write.Counter
ELSE
LD BC,IDE.Write.Counter
ENDIF
OUT (C),A
LD A,IDE.ATA.InitializeDeviceParameters
CALL IDE_CMD
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track
LD B,0
LD H,B
LD L,B
LD A,(IY+IDE.HDD_INIT_TABLE.HeadsNumber) ; Head per HDD
;
.loop: ADD HL,BC
DEC A
JR NZ,.loop
;
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow),L
LD (IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh),H
.END: ; [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
;
EX AF,AF'
OUT (SLOT3),A
AND A
RET
;
.FOR_ATAPI: LD BC,IDE.Read.Control
IN A,(C)
AND #F0
LD HL,ICHANEL
OR (HL)
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
JR IDESPEC.END
/////////////////////////////////////////////////////////////////////[^]
@ -449,20 +447,20 @@ IDESPEC:
IDE_CMD:
PUSH AF
LD HL,PAUSES.WAIT.IDE
LD DE,256*IDE.ControlByte.Busy + 0
LD DE,256*IDE.CtrlByte.Busy + 0
CALL BITS_WAITS.WAIT_PRT
POP HL
RET C
INC B ; LD BC,IDE.Write.Command
OUT (C),H
LD HL,PAUSES.WAIT.IDE
;LD DE,256*IDE.ControlByte.Busy + 0
;LD DE,256*IDE.CtrlByte.Busy + 0
JR BITS_WAITS.WAIT_PRT
/////////////////////////////////////////////////////////////////////[^]
/////////////////////////////////////////////////////////////////////[v]
MODEL: LD HL,TEMP+27*2 ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã.
MODEL: LD HL,IDENTIFY_DEVICE_BUFFER.ModelNumber
LD A,(HL)
OR A
JR Z,.unknown
@ -512,7 +510,7 @@ BITS_WAITS:
;SCF
;RET Z
;
AND IDE.ControlByte.Busy; + IDE.ControlByte.DataRequest
AND IDE.CtrlByte.Busy; + IDE.CtrlByte.DataRequest
RET Z
;
HALT
@ -611,7 +609,7 @@ SaveToCMOS:
;
LD IX,PRIM_SLAVE_CMOS_T
.save_to_cmos:
LD HL,(TEMP+1*2)
LD HL,(IDENTIFY_DEVICE_BUFFER.NumCylinders)
LD B,L
LD A,(IX+0)
CALL WRITCMS ; Cylinder low
@ -620,12 +618,12 @@ SaveToCMOS:
LD A,(IX+1)
CALL WRITCMS ; Cylinder high
LD A,(TEMP+3*2)
LD A,(IDENTIFY_DEVICE_BUFFER.NumHeads)
LD B,A
LD A,(IX+2)
CALL WRITCMS ; Heads
LD A,(TEMP+6*2)
LD A,(IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack)
LD B,A
LD A,(IX+3)
JP WRITCMS ; Heads
@ -667,11 +665,11 @@ Bug31SecCheck: LD A,(MasterSlave)
/////////////////////////////////////////////////////////////////////[v]
GETPARAM:
LD HL,PAUSES.WAIT.IDE
LD DE,IDE.ControlByte.DataRequest * 256 + IDE.ControlByte.DataRequest
LD DE,IDE.CtrlByte.DataRequest * 256 + IDE.CtrlByte.DataRequest
CALL BITS_WAITS.WAIT_PRT
RET C
LD BC,IDE.Read.Data
LD HL,TEMP
LD HL,IDENTIFY_DEVICE_BUFFER
INIR
INIR
CALL IDESPEC
@ -693,11 +691,11 @@ DETECTORS:
LD BC,IDE.Write.Counter
OUT (C),A
LD HL,PAUSES.WAIT.SMALL
LD DE,IDE.ControlByte.Busy*256 + 0
LD DE,IDE.CtrlByte.Busy*256 + 0
CALL BITS_WAITS.WAIT_PRT
RET C
;
LD BC,IDE.Read.Counter ; LD BC,IDE.Read.Counter
LD BC,IDE.Read.Counter
IN A,(C)
CP .test_counter
RET Z
@ -722,8 +720,8 @@ DETECTORS:
SCF
RET Z
;
AND IDE.ControlByte.Busy + IDE.ControlByte.DataRequest + IDE.ControlByte.Error
CP IDE.ControlByte.Error
AND IDE.CtrlByte.Busy + IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error
CP IDE.CtrlByte.Error
RET Z
;
HALT
@ -748,7 +746,7 @@ DETECTORS:
LD BC,IDE.Write.Command
OUT (C),E
;
LD DE,IDE.ControlByte.Busy * 256 + 0
LD DE,IDE.CtrlByte.Busy * 256 + 0
LD HL,PAUSES.WAIT.IDE
CALL BITS_WAITS.WAIT_PRT
RET C ; Absent
@ -758,7 +756,7 @@ DETECTORS:
RRCA
JR C,.non_ATA
;
AND (IDE.ControlByte.DataRequest + IDE.ControlByte.Ready) / 2
AND (IDE.CtrlByte.DataRequest + IDE.CtrlByte.Ready) / 2
SCF
RET Z
;
@ -778,19 +776,19 @@ DETECTORS:
; ATAPI or Absent
; Exit: CF - No device
; NC - ATAPI
.IdentPDevChk: LD E,IDE.ATAPI.IdentifyPackedDevice
.IdentPDevChk: LD E,IDE.ATAPI.IdentifyPacketDevice
LD BC,IDE.Write.Command
OUT (C),E
LD HL,PAUSES.WAIT.IDE
LD DE,IDE.ControlByte.Busy*256 + 0
LD DE,IDE.CtrlByte.Busy*256 + 0
CALL BITS_WAITS.WAIT_PRT
RET C
;
LD BC,IDE.Read.Status
IN A,(C)
RRCA
RET C
XOR A
; RET C
; XOR A
RET
;-------;

View File

@ -74,10 +74,11 @@
;FDD EQU #03
;!FIXIT ­®à¬ «ì­® ¯à®¯¨á âì
TEMP EQU #7E00 ; !HARDCODE
MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM; - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023
ASSERT (low TEMP = 0) or (low MEMMAP2 = 0), "ERROR Align 256!!!"
TEMP EQU #7E00 ; !HARDCODE
IDENTIFY_DEVICE_BUFFER _ATA_IDENTIFY_DEVICE_DATA = TEMP
MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256
TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM; - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023
ASSERT (low TEMP = 0) or (low MEMMAP2 = 0), "ERROR Align 256!!!"
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;SETUP_MAIN:
@ -1122,7 +1123,7 @@ HDSTART:
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
CP IDE.Device.CDROM
CP IDE.Device.ATAPI
JP Z,CDSTART
PUSH AF
PUSH BC

View File

@ -58,7 +58,7 @@
"TrDosC", -- 6
"TrDosD", -- 7
"SetTime", -- 8 DEFINES.INC --> NEW_FEATURE
"HddWrPr", -- 9 DEFINES.INC --> HDDwriteProtect
--"HddWrPr", -- 9 DEFINES.INC --> HDDwriteProtect
-- 10
-- 11
-- 12
@ -70,7 +70,7 @@
}
}
DeleteValueByDEFINE(SettingsTabsOrder,"NEW_FEATURE","SetTime")
DeleteValueByDEFINE(SettingsTabsOrder,"HDDwriteProtect","HddWrPr")
--DeleteValueByDEFINE(SettingsTabsOrder,"HDDwriteProtect","HddWrPr")
DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","MemTest")
DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","UpdBios")
DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypRate")
@ -340,16 +340,16 @@ SettingsItemsTabs:
DB msgStrings.valCdRom
DB msgStrings.valDash6
IF HDDwriteProtect
_mSETitemParams HddWrPr
DW OnChangeAction.nothing
IF NEW_FEATURE : DB paramLine : ENDIF
DB columnNum,lineNum
DB paramName
DW CMOS_CELL.Options.Mask.HDDwriteProtect : DB %0000'0001
DB msgStrings.valDisabled
DB msgStrings.valEnabled
ENDIF
; IF HDDwriteProtect
; _mSETitemParams HddWrPr
; DW OnChangeAction.nothing
; IF NEW_FEATURE : DB paramLine : ENDIF
; DB columnNum,lineNum
; DB paramName
; DW CMOS_CELL.Options.Mask.HDDwriteProtect : DB %0000'0001
; DB msgStrings.valDisabled
; DB msgStrings.valEnabled
; ENDIF
_mSETitemParams ScreenY
DW OnChangeAction.setXYpos
@ -652,9 +652,9 @@ msgStrings:
_mSetStr parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave',#FF,' : '
_mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : '
_mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : '
IF HDDwriteProtect
_mSetStr parHddWrPr, tmp_Counter : DZ 'HDD write protect : '
ENDIF
; IF HDDwriteProtect
; _mSetStr parHddWrPr, tmp_Counter : DZ 'HDD write protect : '
; ENDIF
_mSetStr parScreenY, tmp_Counter : DZ 'Y-screen position : '
_mSetStr valMinus7, tmp_Counter : DZ '-7'
_mSetStr valMinus6, tmp_Counter : DZ '-6'
@ -828,9 +828,9 @@ msgRusStrings:
_mSetStrRus parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave',#FF,' : '
_mSetStrRus parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : '
_mSetStrRus parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : '
IF HDDwriteProtect
_mSetStrRus parHddWrPr, tmp_Counter : DZ ' é¨â  § ¯¨á¨ ­  HDD : '
ENDIF
; IF HDDwriteProtect
; _mSetStrRus parHddWrPr, tmp_Counter : DZ '‡ é¨â  § ¯¨á¨ ­  HDD : '
; ENDIF
_mSetStrRus parScreenY, tmp_Counter : DZ '¤¢¨£ íªà ­  ¯® Y : '
_mSetStrRus valMinus7, tmp_Counter : DZ '-7'
_mSetStrRus valMinus6, tmp_Counter : DZ '-6'

View File

@ -19,7 +19,8 @@ BETA_RC EQU 1 ;
;----------------------------[ TEST ]---------------------------;
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ì᪮£® INT
DEFINE NEW_FEATURE 0 ; !TODO ¯ã­ªâë ¢ á¥â ¯
DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª  ¤«ï ä㭪権 5x
;DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª  ¤«ï ä㭪権 5x
DEFINE FDD_NormalCount 0 ; !TODO
DEFINE UnusedSettingsFeatures 0 ;
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
;===============================================================;

View File

@ -2,6 +2,7 @@
;---------[All shared includes]---------
INCLUDE 'src/bios/shared/DEFINES.INC' ; Shared defines
INCLUDE 'Shared_Includes/structures/FileSystem.inc'
INCLUDE 'Shared_Includes/structures/ATA_ATAPI.inc'
INCLUDE 'src/bios/Loader/Loader.asm' ; Bitstream loader as macros
INCLUDE 'src/bios/shared/CompMacro.asm' ; ¬ ªà®áë
INCLUDE 'Shared_Includes/constants/SP2000.inc' ; ª®­áâ ­âë