new ide detecting procedures

This commit is contained in:
Anatoliy Belyanskiy 2023-09-07 01:07:46 +10:00
parent 61457e702e
commit de46473cc8
3 changed files with 906 additions and 840 deletions

File diff suppressed because it is too large Load Diff

View File

@ -72,51 +72,6 @@
;FDD EQU #03
;!!!!!!!!!!!!!!!!!!!!!!
; !FIXIT ¯à®¢¥à¨âì â ª¨¥ ¦¥ «¨  ¤à¥á  CMOS ¢ Settings ¨á¯®«ì§ãîâáï
; SM_CYLL EQU #2F
; SM_CYLH EQU #30
; SM_HEAD EQU #31
; SM_SECT EQU #32
; SS_CYLL EQU #33
; SS_CYLH EQU #34
; SS_HEAD EQU #35
; SS_SECT EQU #36
; M_CYLL EQU #37
; M_CYLH EQU #38
; M_HEAD EQU #39
; M_SECT EQU #3A
; S_CYLL EQU #3B
; S_CYLH EQU #3C
; S_HEAD EQU #3D
; S_SECT EQU #3E
M_CYLL EQU #12
M_CYLH EQU #13
M_HEAD EQU #14
M_SECT EQU #15
S_CYLL EQU #16
S_CYLH EQU #17
S_HEAD EQU #18
S_SECT EQU #19
SM_CYLL EQU #37
SM_CYLH EQU #38
SM_HEAD EQU #39
SM_SECT EQU #3A
SS_CYLL EQU #3B
SS_CYLH EQU #3C
SS_HEAD EQU #3D
SS_SECT EQU #3E
;!!!!!!!!!!!!!!!!!!!!!!
TEMP EQU #7E00 ; !HARDCODE
MEMMAP2 EQU TEMP ; ¤®«¦­® ¡ëâì ¢ë஢­¥­® ¯® ALIGN 256
TPOINTD EQU TEMP-32
@ -681,13 +636,14 @@ INFO_MESSAGE: ;!FIXIT
;CALL ScreenPOS.LOCAT
CALL LP_SET_PLACE
CALL TSETUP
CALL TSETUP ;!TODO ¬®¦¥â ¯¨å­ãâì ¥ñ ­  ¯à¥à뢠­¨ï?
CALL AUTODET
CALL CONFIGURE_IDE_DRIVES.START
CALL CTRLKEY
LD A,B
AND #10
JR NZ,ABOOT
CALL TSETUP
@ -742,7 +698,7 @@ TSETUP:
AND A
SBC HL,DE
JR NZ,TSETUP
POP HL
POP HL ; 㡨ࠥ¬ «¨è­¥¥
JP EXIT_SETUP
CSETUP: XOR A
LD (ITEM_Restore),A
@ -1115,226 +1071,6 @@ NOFDD1:
RET
AUTODET:
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD HL,IDE.INIT_TBL_IDE0
LD BC,256*(IDE.HDD_INIT_TABLE * 4) + #FF ;R02
;CLEAR HDD VARIABLE
.FILLIDE:
LD (HL),C
INC HL
DJNZ .FILLIDE
EX AF,AF'
OUT (SLOT3),A
;======== áâ à ï ­ã¬¥à æ¨ï ¤¨áª®¢! ========
; CALL GET_AVAILABLE_STRUCT
; LD A,#00
; CALL COMMONIDE
; CALL GET_AVAILABLE_STRUCT
; LD A,#01
; CALL COMMONIDE
; CALL GET_AVAILABLE_STRUCT
; LD A,#02
; CALL COMMONIDE
; CALL GET_AVAILABLE_STRUCT
; LD A,#03
; CALL COMMONIDE
;==========================================
LD IY,IDE.INIT_TBL_IDE0
XOR A
CALL COMMONIDE
LD IY,IDE.INIT_TBL_IDE1
LD A,#01
CALL COMMONIDE
LD IY,IDE.INIT_TBL_IDE2
LD A,#02
CALL COMMONIDE
LD IY,IDE.INIT_TBL_IDE3
LD A,#03
CALL COMMONIDE
;!TEST save hdd parameters to cmos for "setup" in settings
CALL WRITING
;
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
;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:
AND A
LD H,A ;SAVE DRIVE NUMBER
LD BC,#3011 ;CMOS VALUE
LD L,msgStrings.detectIdePrMA
JR Z,COMMON2
DEC A
LD BC,#C011 ;CMOS VALUE
LD L,msgStrings.detectIdePrSL
JR Z,COMMON2
DEC A
; !HARDCODE § ¬¥­¨âì ç¨á«  ­  ¬¥âª¨ ¢ í⮩ ¯à®æ¥¤ãà¥
LD BC,#3020
LD L,msgStrings.detectIdeSecMA
JR Z,COMMON2
DEC A
LD BC,#C020
LD L,msgStrings.detectIdeSecSL
JR Z,COMMON2
SCF
RET
;0 - AUTODETECT
;1 - GETTING FROM SETUP
;2 - CD-ROM (ATAPI device)
;3 - DISABLED
COMMON2:
CALL G_VALUE
OR A
JP Z,AUTODETECT ;AUTODECECT
DEC A
JP Z,SETUPDETECT ;SETUP
DEC A
JP Z,IT_IS_CDROM ;CDROM
RET ;DON'T CHECK THIS DEVICE
AUTODETECT:
PUSH HL
LD A,L ;DETECT MESSAGE
CALL POSTMSG
CALL ScreenPOS.SUBNAME
;
EI
;
POP HL
LD A,H ;RESTORE DRIVE NUMBER
CALL IDEAUTO
IDEJUMPBACK:
CALL NC,MODEL
LD A,(SKIP)
INC A
LD A,msgStrings.ideNone
JR Z,NOSKIPKEY
LD A,msgStrings.ideSkiped
NOSKIPKEY:
CALL C,POSTMSG
CALL ScreenPOS.CRLF
RET
IT_IS_CDROM:
PUSH HL
LD A,L ;DETECT MESSAGE
CALL POSTMSG
CALL ScreenPOS.SUBNAME
;
EI
;
POP HL
LD A,H ;RESTORE DRIVE NUMBER
CALL IDE__CD
JP IDEJUMPBACK
; ????? ¯®á¬®âà¥âì
PRIM_MASTER_CMOS_T:
DB M_CYLL,M_CYLH,M_HEAD,M_SECT
PRIM_SLAVE_CMOS_T:
DB S_CYLL,S_CYLH,S_HEAD,S_SECT
SEC_MASTER_CMOS_T:
DB SM_CYLL,SM_CYLH,SM_HEAD,SM_SECT
SEC_SLAVE_CMOS_T:
DB SS_CYLL,SS_CYLH,SS_HEAD,SS_SECT
SETUPDETECT:
LD A,H
LD IX,PRIM_MASTER_CMOS_T
OR A
JR Z,SETUPD2
;
LD IX,PRIM_SLAVE_CMOS_T
CP 1
JR Z,SETUPD2
;
LD IX,SEC_MASTER_CMOS_T
CP 2
JR Z,SETUPD2
;
LD IX,SEC_SLAVE_CMOS_T
SETUPD2:
CALL SELECT_IDE
LD HL,TEMP
LD DE,TEMP+1
LD BC,511
LD (HL),0
LDIR
CALL WAITHDD
RET C
;;
LD A,(IX+2) ;M_HEAD
CALL READCMS
LD (TEMP+3*2),A ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. HEADS PER TRACK
;
LD A,(IX+1) ;M_CYLH
CALL READCMS
PUSH AF
;
LD A,(IX+0) ;M_CYLL
CALL READCMS
POP HL
LD L,A
LD (TEMP+1*2),HL ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. CYLINDERS
;
LD A,(IX+3) ;M_SECT
CALL READCMS
LD (TEMP+6*2),A ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã. SECTOR PER TRACK
;
;LD A,IDE.Drive.Master
;LD BC,IDE.Write.DeviceHead
;OUT (C),A
LD A,IDE.Device.HDD
LD (IDEDEV),A
CALL IDESPEC
RET
;ID_BUFFER: BLOCK #100,0 ;!HARDCODE ; !FIXIT 㬥­ìè¨âì ¡ãä¥à ¨«¨ ¯¥à¥­¥áâ¨?
PIDNUM: LD HL,memBUFFER.ID
LD BC,#00FF
XOR A
@ -1454,20 +1190,6 @@ PRNTIME:
OUT (SLOT3),A
RET
MODEL: LD HL,TEMP+27*2 ; !TODO ᤥ« âì ç¥à¥§ áâàãªâãàã.
LD A,(HL)
OR A
JR Z,.unknown
LD B,20
CALL DWPRINT
AND A
RET
.unknown:
LD A,msgStrings.ideUnknown
CALL POSTMSG
AND A
RET
PMEMORY:
ADD HL,HL
ADD HL,HL

View File

@ -603,16 +603,16 @@ PITEM: LD E,(HL) ; x-coordinate
ENDIF
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^]
; <20>¥ ¯®àâ¨â HL
G_VALUE:
PUSH BC
LD A,C
CALL READCMS
POP BC
AND B
RRLPX:
RRCA
.loop: RRCA
RRC B
JR NC,RRLPX
JR NC,.loop
RLCA
RET