переделка AUTOIDE
This commit is contained in:
parent
0ef0c41481
commit
4a3574fe3f
@ -1 +1 @@
|
|||||||
Subproject commit 25ac1c89f4ce070e041437ddbcdd18ab2ab223be
|
Subproject commit 8371051031cac61e25740ba6cf9f2acacdc783b7
|
||||||
@ -300,8 +300,9 @@ RW_ATA_SECTORs: PUSH BC ;
|
|||||||
POP BC ; ¯à¨§ ª short/long ¢ C
|
POP BC ; ¯à¨§ ª short/long ¢ C
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
EXX
|
EXX
|
||||||
CALL WAITPRT
|
LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready
|
||||||
|
CALL WAITPRT.custom
|
||||||
EXX
|
EXX
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
@ -547,8 +548,9 @@ ATA_5x_VERIFY: PUSH IY
|
|||||||
.VERIFY: LD C,IDE.Device.HDD
|
.VERIFY: LD C,IDE.Device.HDD
|
||||||
CALL SELECT_DRIVE
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
EXX
|
EXX
|
||||||
CALL WAITPRT
|
LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready
|
||||||
|
CALL WAITPRT.custom
|
||||||
EXX
|
EXX
|
||||||
RET C
|
RET C
|
||||||
;PUSH DE
|
;PUSH DE
|
||||||
@ -664,7 +666,7 @@ DIV32X: ;HL:DE / BC => DE:IX HL-OSTATOK
|
|||||||
; D - MASK
|
; D - MASK
|
||||||
; E - PATTERN
|
; E - PATTERN
|
||||||
; !!! ¥ª®â®àë¥ äãªæ¨¨ ¤¥îâáï, çâ® ¢ë室¥ ¢á¥£¤ ZF
|
; !!! ¥ª®â®àë¥ äãªæ¨¨ ¤¥îâáï, çâ® ¢ë室¥ ¢á¥£¤ ZF
|
||||||
WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error)+IDE.CtrlByte.Ready
|
WAITPRT: LD DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error) + IDE.CtrlByte.Ready
|
||||||
.custom: LD BC,IDE.Read.Status
|
.custom: LD BC,IDE.Read.Status
|
||||||
LD HL,#0000 ; § ¤¥à¦ª ;!HARDCODE
|
LD HL,#0000 ; § ¤¥à¦ª ;!HARDCODE
|
||||||
;
|
;
|
||||||
|
|||||||
@ -51,12 +51,14 @@ SELECT_DRIVE: AND #0F
|
|||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
;
|
;
|
||||||
LD A,high IDE.Read.Status
|
.del_me: LD A,high IDE.Read.Status
|
||||||
IN A,(low IDE.Read.Status)
|
IN A,(low IDE.Read.Status)
|
||||||
AND IDE.CtrlByte.Busy
|
AND IDE.CtrlByte.Busy
|
||||||
JR Z,.notBusy
|
; 漭摵兒恥<E58592>言 <20>丰鄏左
|
||||||
LD B,32
|
;JR NZ,.del_me
|
||||||
DJNZ $
|
JR Z,.notBusy
|
||||||
|
LD B,32
|
||||||
|
DJNZ $
|
||||||
;
|
;
|
||||||
.notBusy: LD A,H
|
.notBusy: LD A,H
|
||||||
EXX
|
EXX
|
||||||
|
|||||||
@ -96,6 +96,7 @@ IDE3 EQU #C1D8
|
|||||||
HALT:
|
HALT:
|
||||||
.Time_2s EQU 100
|
.Time_2s EQU 100
|
||||||
.SMALL EQU 200 ; 04 ᥪ
|
.SMALL EQU 200 ; 04 ᥪ
|
||||||
|
.MEDIUM EQU 400 ; 08 ᥪ
|
||||||
.BIG EQU 1550 ; 31 ᥪ
|
.BIG EQU 1550 ; 31 ᥪ
|
||||||
WAIT:
|
WAIT:
|
||||||
.IDE EQU #0000
|
.IDE EQU #0000
|
||||||
@ -137,7 +138,7 @@ WAIT:
|
|||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
START: CALL SetUP_CHANELS
|
START: ;CALL Nop_CHANELS
|
||||||
;
|
;
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -172,8 +173,8 @@ START: CALL SetUP_CHANELS
|
|||||||
;[x] save hdd parameters to cmos for "setup" in settings
|
;[x] save hdd parameters to cmos for "setup" in settings
|
||||||
CALL WRITING
|
CALL WRITING
|
||||||
;
|
;
|
||||||
CALL ScreenPOS.CRLF
|
JP ScreenPOS.CRLF
|
||||||
RET
|
;RET
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
@ -200,7 +201,6 @@ AUTODETECT:
|
|||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
; !HARDCODE § ¬¥¨âì ç¨á« ¬¥âª¨ ¢ í⮩ ¯à®æ¥¤ãà¥
|
|
||||||
STEP1_GETCMOS:
|
STEP1_GETCMOS:
|
||||||
LD (MasterSlave),A
|
LD (MasterSlave),A
|
||||||
LD H,A ;SAVE DRIVE NUMBER
|
LD H,A ;SAVE DRIVE NUMBER
|
||||||
@ -225,12 +225,12 @@ STEP1_GETCMOS:
|
|||||||
LD L,msgStrings.detectIdeSecMA
|
LD L,msgStrings.detectIdeSecMA
|
||||||
JR Z,.choose
|
JR Z,.choose
|
||||||
;
|
;
|
||||||
DEC A
|
;DEC A
|
||||||
LD BC,CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave
|
LD BC,CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave
|
||||||
LD L,msgStrings.detectIdeSecSL
|
LD L,msgStrings.detectIdeSecSL
|
||||||
JR Z,.choose
|
;JR Z,.choose
|
||||||
SCF
|
;SCF
|
||||||
RET
|
;RET
|
||||||
;0 - AUTODETECT
|
;0 - AUTODETECT
|
||||||
;1 - GETTING FROM SETUP
|
;1 - GETTING FROM SETUP
|
||||||
;2 - CD-ROM (ATAPI device)
|
;2 - CD-ROM (ATAPI device)
|
||||||
@ -269,7 +269,7 @@ AUTODETECTING: CALL DETECTORS.CheckChanel
|
|||||||
JR C,.IDE_ABSENT
|
JR C,.IDE_ABSENT
|
||||||
|
|
||||||
CALL Bug31SecCheck
|
CALL Bug31SecCheck
|
||||||
JR C,.next
|
JR NC,.next
|
||||||
|
|
||||||
LD HL,PAUSES.HALT.BIG
|
LD HL,PAUSES.HALT.BIG
|
||||||
CALL BITS_WAITS.Clear_BUSY
|
CALL BITS_WAITS.Clear_BUSY
|
||||||
@ -286,7 +286,6 @@ AUTODETECTING: CALL DETECTORS.CheckChanel
|
|||||||
CALL DETECTORS.IdentDevCheck
|
CALL DETECTORS.IdentDevCheck
|
||||||
JR C,.IDE_ABSENT
|
JR C,.IDE_ABSENT
|
||||||
JR Z,.Its_ATA
|
JR Z,.Its_ATA
|
||||||
|
|
||||||
; enter point for ATAPI in setup
|
; enter point for ATAPI in setup
|
||||||
.Its_ATAPI: CALL DETECTORS.IdentPDevChk
|
.Its_ATAPI: CALL DETECTORS.IdentPDevChk
|
||||||
JR C,.IDE_ABSENT
|
JR C,.IDE_ABSENT
|
||||||
@ -304,11 +303,15 @@ AUTODETECTING: CALL DETECTORS.CheckChanel
|
|||||||
;
|
;
|
||||||
.IDE_ABSENT: LD A,IDE.Device.NONE
|
.IDE_ABSENT: LD A,IDE.Device.NONE
|
||||||
LD (IDEDEV),A
|
LD (IDEDEV),A
|
||||||
LD A,IDE.CMD.ATA.Nop
|
;LD A,IDE.CMD.ATA.Nop
|
||||||
LD BC,IDE.Write.Command
|
;LD BC,IDE.Write.Command
|
||||||
OUT (C),A
|
;OUT (C),A
|
||||||
DEC B
|
;;
|
||||||
IN A,(C) ; IDE.Read.Status
|
; ;DEC B
|
||||||
|
; PAUSE_DJNZ 0
|
||||||
|
; LD BC,IDE.Read.Status
|
||||||
|
;;
|
||||||
|
;IN A,(C) ; IDE.Read.Status
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
@ -337,7 +340,7 @@ SETUP_FROM_CMOS:
|
|||||||
LDIR
|
LDIR
|
||||||
;
|
;
|
||||||
CALL Bug31SecCheck
|
CALL Bug31SecCheck
|
||||||
JR C,.step2
|
JR NC,.step2
|
||||||
;
|
;
|
||||||
LD HL,PAUSES.HALT.BIG
|
LD HL,PAUSES.HALT.BIG
|
||||||
CALL BITS_WAITS.Clear_BUSY
|
CALL BITS_WAITS.Clear_BUSY
|
||||||
@ -447,8 +450,9 @@ IDESPEC: IN A,(SLOT3)
|
|||||||
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
|
||||||
LD B,100 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
LD B,100 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠- 1 HALT)
|
||||||
.get_error_loop: PUSH BC
|
.get_error_loop: PUSH BC
|
||||||
LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
|
;LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
|
||||||
CALL EXEC_PACKET_COMMAND.start
|
;CALL EXEC_PACKET_COMMAND.start
|
||||||
|
CALL EXEC_TEST_CMD
|
||||||
POP BC
|
POP BC
|
||||||
JR NC,.s_size
|
JR NC,.s_size
|
||||||
;
|
;
|
||||||
@ -458,7 +462,7 @@ IDESPEC: IN A,(SLOT3)
|
|||||||
;
|
;
|
||||||
HALT
|
HALT
|
||||||
DJNZ .get_error_loop
|
DJNZ .get_error_loop
|
||||||
;
|
;
|
||||||
; [ ] sector size ATAPI
|
; [ ] sector size ATAPI
|
||||||
.s_size: LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®á⮠㦥 ¡ë« ¡ãä¥à
|
.s_size: LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®á⮠㦥 ¡ë« ¡ãä¥à
|
||||||
CALL ATAPI_READ_CAPACITY_DATA
|
CALL ATAPI_READ_CAPACITY_DATA
|
||||||
@ -541,11 +545,6 @@ BITS_WAITS:
|
|||||||
; Pause for clear BUSY and DATA REQUEST
|
; Pause for clear BUSY and DATA REQUEST
|
||||||
.Clear_BUSY: LD BC,IDE.Read.Status
|
.Clear_BUSY: LD BC,IDE.Read.Status
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
;!TEST for normal bus with pull-ups
|
|
||||||
;CP #FF
|
|
||||||
;SCF
|
|
||||||
;RET Z
|
|
||||||
;
|
|
||||||
AND IDE.CtrlByte.Busy; + IDE.CtrlByte.DataRequest
|
AND IDE.CtrlByte.Busy; + IDE.CtrlByte.DataRequest
|
||||||
RET Z
|
RET Z
|
||||||
;
|
;
|
||||||
@ -607,16 +606,17 @@ SKIPKEY:
|
|||||||
RET Z
|
RET Z
|
||||||
EXX
|
EXX
|
||||||
LD HL,#3E00 ;!HARDCODE
|
LD HL,#3E00 ;!HARDCODE
|
||||||
AND A
|
XOR A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
EXX
|
EXX
|
||||||
SCF
|
SCF
|
||||||
CCF
|
CCF
|
||||||
RET NZ
|
RET NZ
|
||||||
LD A,0
|
;A=0
|
||||||
LD (SKIP),A
|
LD (SKIP),A
|
||||||
SCF
|
INC A
|
||||||
RET
|
SCF
|
||||||
|
RET ;ZF=0, CF=1
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
@ -664,9 +664,43 @@ SaveToCMOS:
|
|||||||
JP WRITCMS
|
JP WRITCMS
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
RESET_Slave_ATAPI:
|
; Check bug with 31 sec freeze
|
||||||
|
; Bug31SecCheck: LD A,(MasterSlave)
|
||||||
|
; AND 1
|
||||||
|
; RET NZ
|
||||||
|
; ;
|
||||||
|
; LD HL,PAUSES.HALT.Time_2s
|
||||||
|
; CALL BITS_WAITS.Clear_BUSY
|
||||||
|
; CCF
|
||||||
|
; RET C
|
||||||
|
; ;
|
||||||
|
; .RESET_Slave_ATAPI:
|
||||||
|
; LD A,IDE.Drive.Slave
|
||||||
|
; LD BC,IDE.Write.DeviceHead
|
||||||
|
; OUT (C),A
|
||||||
|
; PAUSE_DJNZ 16
|
||||||
|
; LD BC,IDE.Write.Command
|
||||||
|
; LD A,IDE.CMD.ATAPI.Reset
|
||||||
|
; OUT (C),A
|
||||||
|
; PAUSE_DJNZ 16
|
||||||
|
; LD A,IDE.Drive.Master
|
||||||
|
; LD BC,IDE.Write.DeviceHead
|
||||||
|
; OUT (C),A
|
||||||
|
; RET
|
||||||
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
|
; Check bug with 31 sec freeze
|
||||||
|
Bug31SecCheck: LD A,(MasterSlave)
|
||||||
|
AND 1
|
||||||
|
RET Z
|
||||||
|
;
|
||||||
|
LD HL,PAUSES.HALT.Time_2s
|
||||||
|
CALL BITS_WAITS.Clear_BUSY
|
||||||
|
RET NC
|
||||||
|
JR NZ,.skip
|
||||||
|
;
|
||||||
|
.RESET_Slave_ATAPI:
|
||||||
LD A,IDE.Drive.Slave
|
LD A,IDE.Drive.Slave
|
||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
@ -679,40 +713,26 @@ RESET_Slave_ATAPI:
|
|||||||
LD BC,IDE.Write.DeviceHead
|
LD BC,IDE.Write.DeviceHead
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
.skip: POP BC ; ¡ « á á⥪
|
||||||
|
JP AUTODETECTING.IDE_ABSENT
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
; Check bug with 31 sec freeze
|
GETPARAM: LD HL,PAUSES.WAIT.IDE
|
||||||
Bug31SecCheck: LD A,(MasterSlave)
|
LD DE,IDE.CtrlByte.DataRequest * 256 + IDE.CtrlByte.DataRequest
|
||||||
AND 1
|
CALL BITS_WAITS.WAIT_PRT
|
||||||
RET NZ
|
|
||||||
;
|
|
||||||
LD HL,PAUSES.HALT.Time_2s
|
|
||||||
CALL BITS_WAITS.Clear_BUSY
|
|
||||||
CCF
|
|
||||||
RET C
|
RET C
|
||||||
|
LD BC,IDE.Read.Data
|
||||||
|
LD HL,IDENTIFY_DEVICE_BUFFER
|
||||||
|
INIR
|
||||||
|
INIR
|
||||||
|
CALL IDESPEC
|
||||||
|
; [x] save hdd parameters to cmos for "setup" in settings
|
||||||
|
CALL SaveToCMOS
|
||||||
;
|
;
|
||||||
JP RESET_Slave_ATAPI
|
AND A
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
RET
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
|
||||||
GETPARAM:
|
|
||||||
LD HL,PAUSES.WAIT.IDE
|
|
||||||
LD DE,IDE.CtrlByte.DataRequest * 256 + IDE.CtrlByte.DataRequest
|
|
||||||
CALL BITS_WAITS.WAIT_PRT
|
|
||||||
RET C
|
|
||||||
LD BC,IDE.Read.Data
|
|
||||||
LD HL,IDENTIFY_DEVICE_BUFFER
|
|
||||||
INIR
|
|
||||||
INIR
|
|
||||||
CALL IDESPEC
|
|
||||||
; [x] save hdd parameters to cmos for "setup" in settings
|
|
||||||
CALL SaveToCMOS
|
|
||||||
;
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
@ -747,13 +767,16 @@ DETECTORS:
|
|||||||
|
|
||||||
PAUSE_DJNZ 0
|
PAUSE_DJNZ 0
|
||||||
|
|
||||||
LD HL,PAUSES.HALT.SMALL
|
;LD HL,PAUSES.HALT.SMALL
|
||||||
|
LD HL,PAUSES.HALT.MEDIUM
|
||||||
LD BC,IDE.Read.Status
|
LD BC,IDE.Read.Status
|
||||||
;DEC B
|
|
||||||
;
|
;
|
||||||
.loop: IN A,(C)
|
.loop: IN A,(C)
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z
|
||||||
|
; old CF bug fix
|
||||||
|
CP IDE.CtrlByte.Ready + IDE.CtrlByte.SeekComplete
|
||||||
|
RET Z
|
||||||
;
|
;
|
||||||
AND IDE.CtrlByte.Busy + IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error
|
AND IDE.CtrlByte.Busy + IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error
|
||||||
CP IDE.CtrlByte.Error
|
CP IDE.CtrlByte.Error
|
||||||
@ -763,20 +786,19 @@ DETECTORS:
|
|||||||
DEC HL
|
DEC HL
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
;SCF
|
;JR Z,.nop_exit
|
||||||
;RET Z ; Absent
|
SCF
|
||||||
JR Z,.nop_exit
|
RET Z ; Absent
|
||||||
;
|
;
|
||||||
CALL SKIPKEY
|
CALL SKIPKEY
|
||||||
RET C ; Skipped = Absent
|
RET C ; Skipped = Absent
|
||||||
;
|
|
||||||
JR .loop
|
JR .loop
|
||||||
;
|
;
|
||||||
.nop_exit: IN A,(C)
|
; .nop_exit: IN A,(C)
|
||||||
CP IDE.CtrlByte.Ready + IDE.CtrlByte.SeekComplete
|
; CP IDE.CtrlByte.Ready + IDE.CtrlByte.SeekComplete
|
||||||
RET Z ; old CF bug fix
|
; RET Z ; old CF bug fix
|
||||||
SCF
|
; SCF
|
||||||
RET ; Absent
|
; RET ; Absent
|
||||||
;-------;
|
;-------;
|
||||||
|
|
||||||
;-------;
|
;-------;
|
||||||
@ -808,10 +830,31 @@ DETECTORS:
|
|||||||
.non_ATA: LD BC,IDE.Read.Error
|
.non_ATA: LD BC,IDE.Read.Error
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND IDE.ErrorByte.Abort
|
AND IDE.ErrorByte.Abort
|
||||||
RET NZ ; ATAPI
|
; check signature #0114EB
|
||||||
|
;RET NZ ; ATAPI
|
||||||
|
;SCF
|
||||||
|
;RET ; Absent
|
||||||
|
SCF
|
||||||
|
RET Z ; Absent
|
||||||
|
LD C,low IDE.Read.Sector
|
||||||
|
IN A,(C)
|
||||||
|
DEC A
|
||||||
|
;CF=1
|
||||||
|
RET NZ
|
||||||
|
;
|
||||||
|
INC C ; LD BC,IDE.Read.CylinderLow
|
||||||
|
IN L,(C)
|
||||||
|
INC C ; LD BC,IDE.Read.CylinderHigh
|
||||||
|
IN H,(C)
|
||||||
|
;AND A
|
||||||
|
LD BC,#EB14 - 1 ; CF=1
|
||||||
|
SBC HL,BC
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
;A=0, CF=1
|
||||||
|
ADC A,A ; CF=0,ZF=0
|
||||||
|
RET ; ATAPI
|
||||||
;
|
;
|
||||||
SCF ; Absent
|
|
||||||
RET
|
|
||||||
;-------;
|
;-------;
|
||||||
|
|
||||||
;-------;
|
;-------;
|
||||||
@ -858,20 +901,24 @@ DETECTORS:
|
|||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
SetUP_CHANELS:
|
IFUSED Nop_CHANELS
|
||||||
|
Nop_CHANELS:
|
||||||
LD A,1
|
LD A,1
|
||||||
CALL .CMD
|
CALL .CMD
|
||||||
LD A,3
|
LD A,3
|
||||||
CALL .CMD
|
CALL .CMD
|
||||||
LD A,0
|
XOR A ; LD A,0
|
||||||
CALL .CMD
|
CALL .CMD
|
||||||
LD A,2
|
LD A,2
|
||||||
.CMD: CALL SELECT_IDE
|
.CMD: CALL SELECT_IDE
|
||||||
PAUSE_DJNZ 32
|
PAUSE_DJNZ 0
|
||||||
LD BC,IDE.Write.Command
|
LD BC,IDE.Write.Command
|
||||||
LD H,IDE.CMD.ATA.Nop
|
LD H,IDE.CMD.ATA.Nop
|
||||||
OUT (C),H
|
OUT (C),H
|
||||||
PAUSE_DJNZ 32
|
PAUSE_DJNZ 0
|
||||||
|
LD BC,IDE.Read.Status
|
||||||
|
IN A,(C)
|
||||||
|
RET
|
||||||
; Disable INTRQ
|
; Disable INTRQ
|
||||||
; LD BC,IDE.Write.DeviceControl
|
; LD BC,IDE.Write.DeviceControl
|
||||||
; LD A,%0000'0010
|
; LD A,%0000'0010
|
||||||
@ -880,7 +927,7 @@ SetUP_CHANELS:
|
|||||||
; ;
|
; ;
|
||||||
; CALL DisableStandBy
|
; CALL DisableStandBy
|
||||||
; PAUSE_DJNZ 32
|
; PAUSE_DJNZ 32
|
||||||
RET
|
ENDIF
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -777,6 +777,7 @@ INFO_MESSAGE:
|
|||||||
CALL TSETUP ;!TODO ¬®¦¥â ¯¨åãâì ¥ñ ¯à¥àë¢ ¨ï?
|
CALL TSETUP ;!TODO ¬®¦¥â ¯¨åãâì ¥ñ ¯à¥àë¢ ¨ï?
|
||||||
|
|
||||||
CALL CONFIGURE_IDE_DRIVES.START
|
CALL CONFIGURE_IDE_DRIVES.START
|
||||||
|
;CALL CONFIGURE_IDE_DRIVES.Nop_CHANELS
|
||||||
CALL CTRLKEY
|
CALL CTRLKEY
|
||||||
LD A,B
|
LD A,B
|
||||||
; [x] 05/07/2024 <CTRL for Recovery>
|
; [x] 05/07/2024 <CTRL for Recovery>
|
||||||
|
|||||||
@ -617,15 +617,15 @@ GET_CMOS_VALUE:
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
; [x] ç⮡ ¥ ¢«¥§«® ªã¤ ¥ ¤®
|
; [x] ç⮡ ¥ ¢«¥§«® ªã¤ ¥ ¤®
|
||||||
READCMS:
|
READCMS: LD D,high CMOSARE
|
||||||
LD D,high CMOSARE
|
LD E,A
|
||||||
LD E,A
|
CP CMOS.USED_MAX_ADDRESS+1
|
||||||
CP CMOS.USED_MAX_ADDRESS+1
|
JR NC,.error
|
||||||
JR NC,.error
|
LD A,(DE)
|
||||||
LD A,(DE)
|
RET
|
||||||
RET
|
;
|
||||||
.error: SCF
|
.error: SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; [x] ç⮡ ¥ ¢«¥§«® ªã¤ ¥ ¤®
|
; [x] ç⮡ ¥ ¢«¥§«® ªã¤ ¥ ¤®
|
||||||
WRITCMS:
|
WRITCMS:
|
||||||
@ -688,25 +688,22 @@ READING:
|
|||||||
JR NZ,.loop
|
JR NZ,.loop
|
||||||
RET
|
RET
|
||||||
|
|
||||||
WRITING:
|
WRITING: CALL CHEKSUM
|
||||||
CALL CHEKSUM
|
LD B,H
|
||||||
LD B,H
|
LD A,CMOS.Cell.CheckSum
|
||||||
LD A,CMOS.Cell.CheckSum
|
CALL WRITCMS
|
||||||
CALL WRITCMS
|
LD D,CMOS.USED_MIN_ADDRESS
|
||||||
LD D,CMOS.USED_MIN_ADDRESS ; !HARDCODE CMOS
|
.loop: LD H,high CMOSARE
|
||||||
.loop:
|
LD L,D
|
||||||
LD H,high CMOSARE
|
LD A,(HL)
|
||||||
LD L,D
|
PUSH DE
|
||||||
LD A,(HL)
|
CALL CMOS_WR
|
||||||
PUSH DE
|
POP DE
|
||||||
CALL CMOS_WR
|
LD A,CMOS.USED_MAX_ADDRESS+1
|
||||||
|
INC D
|
||||||
POP DE
|
CP D
|
||||||
LD A,CMOS.USED_MAX_ADDRESS+1
|
JR NZ,.loop
|
||||||
INC D
|
RET
|
||||||
CP D
|
|
||||||
JR NZ,.loop
|
|
||||||
RET
|
|
||||||
|
|
||||||
SETDEFX:
|
SETDEFX:
|
||||||
LD A,#FF
|
LD A,#FF
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user