...
This commit is contained in:
parent
2d65e4cdd0
commit
be6233a072
@ -1 +1 @@
|
|||||||
Subproject commit f112b1359045d7fe7aa47f843011fddc5e03eba2
|
Subproject commit 226dbc13e8cacb202848245b7f11de3df2f0cbd7
|
||||||
@ -92,11 +92,11 @@ TAB_FNS:
|
|||||||
DB low FN_5x_Parser_8 ;#58 - Get Media parameters
|
DB low FN_5x_Parser_8 ;#58 - Get Media parameters
|
||||||
DB low FN_5x_Parser_9 ;#59 - Set Media parameters
|
DB low FN_5x_Parser_9 ;#59 - Set Media parameters
|
||||||
|
|
||||||
DB low DRV_VERSION ;#5A - Version number
|
DB low DRV_VERSION ;#5A - Version number
|
||||||
DB low FN_RESERVED_5x ;#5B
|
DB low FN_RESERVED_5x ;#5B
|
||||||
DB low FN_RESERVED_5x ;#5C
|
DB low FN_RESERVED_5x ;#5C
|
||||||
DB low FN_RESERVED_5x ;#5D
|
DB low FN_RESERVED_5x ;#5D
|
||||||
DB low FN_RESERVED_5x ;#5E
|
DB low FN_5x_Parser_E ;#5E
|
||||||
DB low DRV_LIST ;#5F
|
DB low DRV_LIST ;#5F
|
||||||
;--------------
|
;--------------
|
||||||
|
|
||||||
@ -288,7 +288,7 @@ TAB_FNS:
|
|||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_5x_Parser_E
|
||||||
DB high DRV_LIST
|
DB high DRV_LIST
|
||||||
;--------------
|
;--------------
|
||||||
|
|
||||||
@ -434,6 +434,27 @@ TAB_FNS:
|
|||||||
DB high REINIT
|
DB high REINIT
|
||||||
DB high FN_RESERVED
|
DB high FN_RESERVED
|
||||||
DB high FN_VERSION
|
DB high FN_VERSION
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
;
|
||||||
|
; ,----, ,----,.
|
||||||
|
; ,/ .`| ,' ,' |
|
||||||
|
; ,` .' : ,--, ,' .' |
|
||||||
|
; ; ; / ,---, ,--.'| ,----.' .'
|
||||||
|
; .'___,/ ,' ,---.'| | | : | | .'
|
||||||
|
; | : | | | : : : ' : : |--, ,--, ,--,
|
||||||
|
; ; |.'; ; ,--.--. : : : | ' | ,---. : | ;.' \|'. \/ .`|
|
||||||
|
; `----' | | / \ : |,-.' | | / \ | | |' \/ / ;
|
||||||
|
; ' : ;.--. .-. || : ' || | : / / | `----'.'\ ; \ \.' /
|
||||||
|
; | | ' \__\/: . .| | / :' : |__ . ' / | __ \ . | \ ; ;
|
||||||
|
; ' : | ," .--.; |' : |: || | '.'|' ; /| / /\/ / : / \ \ \
|
||||||
|
; ; |.' / / ,. || | '/ :; : ;' | / | / ,,/ ',- ./__; ; \
|
||||||
|
; '---' ; : .' \ : || , / | : | \ ''\ ;| :/\ \ ;
|
||||||
|
; | , .-./ \ / ---`-' \ \ / \ \ .' `---' `--`
|
||||||
|
; `--`---' `-'----' `----' `--`-,-'
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
_mInfoALIGN 256,0
|
_mInfoALIGN 256,0
|
||||||
@ -451,11 +472,11 @@ TAB_5xFNS:
|
|||||||
; --< LOW PART >--
|
; --< LOW PART >--
|
||||||
;-------------------------------------------------------------[ FDD #0 ]
|
;-------------------------------------------------------------[ FDD #0 ]
|
||||||
;
|
;
|
||||||
DB low FN_RESERVED_5x ;#50 - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low FN_RESERVED_5x ;#50 - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB low FDD_5x.RESET ;#51
|
DB low FDD_5x.RESET ;#51
|
||||||
DB low FDD_5x.LONG_READ ;#52
|
DB low FDD_5x.LONG_READ ;#52
|
||||||
DB low FDD_5x.LONG_WRITE ;#53
|
DB low FDD_5x.LONG_WRITE ;#53
|
||||||
DB low FN_ABSENT_5x ;#54
|
DB low FN_ABSENT_5x ;#54
|
||||||
DB low FDD_5x.READ ;#55
|
DB low FDD_5x.READ ;#55
|
||||||
DB low FDD_5x.WRITE ;#56
|
DB low FDD_5x.WRITE ;#56
|
||||||
DB low FDD_5x.DETECT ;#57
|
DB low FDD_5x.DETECT ;#57
|
||||||
@ -463,10 +484,10 @@ TAB_5xFNS:
|
|||||||
DB low FDD_5x.SETMED ;#59
|
DB low FDD_5x.SETMED ;#59
|
||||||
|
|
||||||
DB low DRV_VERSION ;#5A - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low DRV_VERSION ;#5A - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB low FN_RESERVED_5x ;#5B - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low FN_RESERVED_5x ;#5B - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB low FN_RESERVED_5x ;#5C - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low FN_RESERVED_5x ;#5C - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB low FN_RESERVED_5x ;#5D - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low FN_RESERVED_5x ;#5D - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB low FN_RESERVED_5x ;#5E - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low FN_RESERVED_5x ;#5E - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB low DRV_LIST ;#5F - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB low DRV_LIST ;#5F - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
;
|
;
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
@ -477,14 +498,14 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-------------------------------------------------------[ RAM DRIVE #6 ]
|
;-------------------------------------------------------[ RAM DRIVE #6 ]
|
||||||
;
|
;
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low RMD_5x.LONG_READ
|
DB low RMD_5x.LONG_READ
|
||||||
DB low RMD_5x.LONG_WRITE
|
DB low RMD_5x.LONG_WRITE
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low RMD_5x.READ
|
DB low RMD_5x.READ
|
||||||
DB low RMD_5x.WRITE
|
DB low RMD_5x.WRITE
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low RMD_5x.GETMED
|
DB low RMD_5x.GETMED
|
||||||
DB low RMD_5x.SETMED
|
DB low RMD_5x.SETMED
|
||||||
|
|
||||||
@ -502,7 +523,7 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-------------------------------------------------------------[ HDD #8 ]
|
;-------------------------------------------------------------[ HDD #8 ]
|
||||||
;
|
;
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low HDD_5x.RESET
|
DB low HDD_5x.RESET
|
||||||
DB low HDD_5x.LONG_READ
|
DB low HDD_5x.LONG_READ
|
||||||
DB low HDD_5x.LONG_WRITE
|
DB low HDD_5x.LONG_WRITE
|
||||||
@ -514,10 +535,10 @@ TAB_5xFNS:
|
|||||||
DB low HDD_5x.SETMED
|
DB low HDD_5x.SETMED
|
||||||
|
|
||||||
DB low DRV_VERSION
|
DB low DRV_VERSION
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low DRV_LIST
|
DB low DRV_LIST
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
|
|
||||||
@ -527,22 +548,22 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-----------------------------------------------------------[ CDROM #C ]
|
;-----------------------------------------------------------[ CDROM #C ]
|
||||||
;
|
;
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low CD_5x.RESET
|
DB low CD_5x.RESET
|
||||||
DB low CD_5x.LONG_READ
|
DB low CD_5x.LONG_READ
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low CD_5x.READ
|
DB low CD_5x.READ
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low CD_5x.DETECT
|
DB low CD_5x.DETECT
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
DB low FN_ABSENT_5x
|
DB low FN_ABSENT_5x
|
||||||
|
|
||||||
DB low DRV_VERSION
|
DB low DRV_VERSION
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_RESERVED_5x
|
DB low FN_RESERVED_5x
|
||||||
DB low FN_RESERVED_5x
|
DB low CD_5x.Extended
|
||||||
DB low DRV_LIST
|
DB low DRV_LIST
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
|
|
||||||
@ -554,23 +575,22 @@ TAB_5xFNS:
|
|||||||
; --< HIGH PART >--
|
; --< HIGH PART >--
|
||||||
;-------------------------------------------------------------[ FDD #0 ]
|
;-------------------------------------------------------------[ FDD #0 ]
|
||||||
;
|
;
|
||||||
DB high FN_RESERVED_5x ;#50 - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB high FN_RESERVED_5x ;#50 - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB high FDD_5x.RESET ;#51
|
DB high FDD_5x.RESET ;#51
|
||||||
DB high FDD_5x.LONG_READ ;#52
|
DB high FDD_5x.LONG_READ ;#52
|
||||||
DB high FDD_5x.LONG_WRITE ;#53
|
DB high FDD_5x.LONG_WRITE ;#53
|
||||||
DB high FN_ABSENT_5x ;#54
|
DB high FN_ABSENT_5x ;#54
|
||||||
DB high FDD_5x.READ ;#55
|
DB high FDD_5x.READ ;#55
|
||||||
DB high FDD_5x.WRITE ;#56
|
DB high FDD_5x.WRITE ;#56
|
||||||
DB high FDD_5x.DETECT ;#57
|
DB high FDD_5x.DETECT ;#57
|
||||||
DB high FDD_5x.GETMED ;#58
|
DB high FDD_5x.GETMED ;#58
|
||||||
DB high FDD_5x.SETMED ;#59
|
DB high FDD_5x.SETMED ;#59
|
||||||
|
DB high DRV_VERSION ;#5A - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB high DRV_VERSION ;#5A - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB high FN_RESERVED_5x ;#5B - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB high FN_RESERVED_5x ;#5B - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB high FN_RESERVED_5x ;#5C - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB high FN_RESERVED_5x ;#5C - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB high FN_RESERVED_5x ;#5D - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB high FN_RESERVED_5x ;#5D - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB high FN_RESERVED_5x ;#5E - Extended functions
|
||||||
DB high FN_RESERVED_5x ;#5E - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
DB high DRV_LIST ;#5F - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
||||||
DB high DRV_LIST ;#5F - „ã¡«ì. <20> íâã äãªæ¨î ¯àë£ ¥â ¨§ ®á®¢®£® ®¡à ¡®â稪
|
|
||||||
;
|
;
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
|
|
||||||
@ -580,23 +600,22 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-------------------------------------------------------[ RAM DRIVE #6 ]
|
;-------------------------------------------------------[ RAM DRIVE #6 ]
|
||||||
;
|
;
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high RMD_5x.LONG_READ
|
DB high RMD_5x.LONG_READ
|
||||||
DB high RMD_5x.LONG_WRITE
|
DB high RMD_5x.LONG_WRITE
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high RMD_5x.READ
|
DB high RMD_5x.READ
|
||||||
DB high RMD_5x.WRITE
|
DB high RMD_5x.WRITE
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high RMD_5x.GETMED
|
DB high RMD_5x.GETMED
|
||||||
DB high RMD_5x.SETMED
|
DB high RMD_5x.SETMED
|
||||||
|
DB high DRV_VERSION
|
||||||
DB high DRV_VERSION
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high DRV_LIST
|
||||||
DB high DRV_LIST
|
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
|
|
||||||
;---------------------------------[ #7 ]
|
;---------------------------------[ #7 ]
|
||||||
@ -605,23 +624,22 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-------------------------------------------------------------[ HDD #8 ]
|
;-------------------------------------------------------------[ HDD #8 ]
|
||||||
;
|
;
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high HDD_5x.RESET
|
DB high HDD_5x.RESET
|
||||||
DB high HDD_5x.LONG_READ
|
DB high HDD_5x.LONG_READ
|
||||||
DB high HDD_5x.LONG_WRITE
|
DB high HDD_5x.LONG_WRITE
|
||||||
DB high HDD_5x.VERIFY
|
DB high HDD_5x.VERIFY
|
||||||
DB high HDD_5x.READ
|
DB high HDD_5x.READ
|
||||||
DB high HDD_5x.WRITE
|
DB high HDD_5x.WRITE
|
||||||
DB high HDD_5x.DETECT
|
DB high HDD_5x.DETECT
|
||||||
DB high HDD_5x.GETMED
|
DB high HDD_5x.GETMED
|
||||||
DB high HDD_5x.SETMED
|
DB high HDD_5x.SETMED
|
||||||
|
DB high DRV_VERSION
|
||||||
DB high DRV_VERSION
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high DRV_LIST
|
||||||
DB high DRV_LIST
|
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
|
|
||||||
;-----------------------------[ #9..#B ]
|
;-----------------------------[ #9..#B ]
|
||||||
@ -630,23 +648,22 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;----------------------------------------------------------[ CDROM #C0 ]
|
;----------------------------------------------------------[ CDROM #C0 ]
|
||||||
;
|
;
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high CD_5x.RESET
|
DB high CD_5x.RESET
|
||||||
DB high CD_5x.LONG_READ
|
DB high CD_5x.LONG_READ
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high CD_5x.READ
|
DB high CD_5x.READ
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high CD_5x.DETECT
|
DB high CD_5x.DETECT
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
DB high FN_ABSENT_5x
|
DB high FN_ABSENT_5x
|
||||||
|
DB high DRV_VERSION
|
||||||
DB high DRV_VERSION
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_RESERVED_5x
|
||||||
DB high FN_RESERVED_5x
|
DB high CD_5x.Extended
|
||||||
DB high FN_RESERVED_5x
|
DB high DRV_LIST
|
||||||
DB high DRV_LIST
|
|
||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
|
|
||||||
;-----------------------------[ #D..#F ]
|
;-----------------------------[ #D..#F ]
|
||||||
@ -668,31 +685,34 @@ EXP_FNS_RST18:
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
FN_5x_Parser_1:
|
FN_5x_Parser_1:
|
||||||
LD C,1
|
LD C,#01
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_2:
|
FN_5x_Parser_2:
|
||||||
LD C,2
|
LD C,#02
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_3:
|
FN_5x_Parser_3:
|
||||||
LD C,3
|
LD C,#03
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_4:
|
FN_5x_Parser_4:
|
||||||
LD C,4
|
LD C,#04
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_5:
|
|
||||||
LD C,5
|
|
||||||
JP FN_5x_Parser
|
|
||||||
FN_5x_Parser_6:
|
FN_5x_Parser_6:
|
||||||
LD C,6
|
LD C,#06
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_7:
|
FN_5x_Parser_7:
|
||||||
LD C,7
|
LD C,#07
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_8:
|
FN_5x_Parser_8:
|
||||||
LD C,8
|
LD C,#08
|
||||||
JP FN_5x_Parser
|
JP FN_5x_Parser
|
||||||
FN_5x_Parser_9:
|
FN_5x_Parser_9:
|
||||||
LD C,9
|
LD C,#09
|
||||||
|
JP FN_5x_Parser
|
||||||
|
FN_5x_Parser_E:
|
||||||
|
LD C,#0E
|
||||||
|
JP FN_5x_Parser
|
||||||
|
FN_5x_Parser_5:
|
||||||
|
LD C,5
|
||||||
FN_5x_Parser:
|
FN_5x_Parser:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD H,A
|
LD H,A
|
||||||
|
|||||||
@ -173,7 +173,7 @@ FDD_5x.READ:
|
|||||||
; HL:IX - Sector
|
; HL:IX - Sector
|
||||||
; DE - Address
|
; DE - Address
|
||||||
; B - Sector counter
|
; B - Sector counter
|
||||||
; A'- Memory ID Block
|
; A'- Memory Page Number
|
||||||
;Return:
|
;Return:
|
||||||
; HL:IX - Sector + Sector counter
|
; HL:IX - Sector + Sector counter
|
||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
@ -320,7 +320,7 @@ FDD_5x.WRITE:
|
|||||||
; HL:IX - Sector
|
; HL:IX - Sector
|
||||||
; DE - Address
|
; DE - Address
|
||||||
; B - Sector counter
|
; B - Sector counter
|
||||||
; A'- Memory ID Block
|
; A'- Memory Page Number
|
||||||
;Return:
|
;Return:
|
||||||
; HL:IX - Sector + Sector counter
|
; HL:IX - Sector + Sector counter
|
||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
;CD ROM DRIVE DRIVER ;!FIXIT ALL!
|
;[ ] 18/12/2023. ¤®¡ ¢«¥¨¥/¤®¯¨«¨¢ ¨¥ API CD-ROM (ATAPI)
|
||||||
|
|
||||||
|
;CD ROM DRIVE DRIVER
|
||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
;Rev Date Name Description
|
;Rev Date Name Description
|
||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
@ -11,12 +13,15 @@ RAM_ATAPI_PK EQU SYS_PAGE.SHARED_BUFFER_32b
|
|||||||
RAM_ATAPI_READ EQU SYS_PAGE.SHARED_BUFFER_32b+16
|
RAM_ATAPI_READ EQU SYS_PAGE.SHARED_BUFFER_32b+16
|
||||||
|
|
||||||
ASSERT ((PKTSIZE % 2) = 0), "PKTSIZE must be an even number"
|
ASSERT ((PKTSIZE % 2) = 0), "PKTSIZE must be an even number"
|
||||||
;[]===========================================================[]
|
|
||||||
|
;[]================================================================[#51]
|
||||||
CD_5x.RESET:
|
CD_5x.RESET:
|
||||||
|
LD C,IDE.Device.CDROM
|
||||||
|
CALL SELECT_DRIVE
|
||||||
|
RET C
|
||||||
LD B,50
|
LD B,50
|
||||||
.loop:
|
.loop:
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD A,1
|
|
||||||
CALL CD_TEST
|
CALL CD_TEST
|
||||||
POP BC
|
POP BC
|
||||||
RET NC
|
RET NC
|
||||||
@ -24,70 +29,46 @@ CD_5x.RESET:
|
|||||||
HALT
|
HALT
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
RET
|
RET
|
||||||
;[]===========================================================[]
|
;[]================================================================[#51]
|
||||||
|
|
||||||
|
|
||||||
;[]===========================================================[]
|
;[]================================================================[#55]
|
||||||
CD_5x.LONG_READ: ; !FIXIT ¥ ¤® á®åà ïâì áâà ¨æã SLOT3 ª ª ¢ ¤àã£¨å ¤à ©¢ å?
|
;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:
|
CD_5x.READ:
|
||||||
LD A,1
|
EX AF,AF'
|
||||||
JP CD_READ
|
IN A,(SLOT3)
|
||||||
;[]===========================================================[]
|
EX AF,AF'
|
||||||
|
;[]================================================================[#52]
|
||||||
|
;Function: Long Read Sectors
|
||||||
;[]===========================================================[]
|
; A - Disk
|
||||||
CD.OPEN:
|
; HL:IX - Sector
|
||||||
LD A,1
|
; DE - Address
|
||||||
JP CD_OPEN
|
; B - Sector counter
|
||||||
;[]===========================================================[]
|
; A'- Memory Page Number
|
||||||
|
;Return:
|
||||||
|
; HL:IX - Sector + Sector counter
|
||||||
;[]===========================================================[]
|
; DE - Address + (Sector counter * Size sector)
|
||||||
CD.CLOSE:
|
;LONG READ SECTOR(S)
|
||||||
LD A,1
|
CD_5x.LONG_READ:
|
||||||
JP CD_CLOSE
|
LD C,IDE.Device.CDROM
|
||||||
;[]===========================================================[]
|
CALL SELECT_DRIVE
|
||||||
|
RET C
|
||||||
CD_TEST LD HL,CMDNOPP
|
;
|
||||||
LD DE,0
|
|
||||||
CALL AP_COM
|
|
||||||
RET
|
|
||||||
|
|
||||||
;
|
|
||||||
;[]===========================================================[]
|
|
||||||
CD_5x.DETECT: ; !FIXIT
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
;[]===========================================================[]
|
|
||||||
CD_OPEN:
|
|
||||||
LD HL,CMDOPEN
|
|
||||||
LD DE,0
|
|
||||||
CALL AP_COM
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
|
|
||||||
CD_CLOSE:
|
|
||||||
LD HL,CMDCLOS
|
|
||||||
LD DE,0
|
|
||||||
CALL AP_COM
|
|
||||||
RET
|
|
||||||
|
|
||||||
; HL:IX - SECTOR
|
|
||||||
; DE - ADDRESS
|
|
||||||
; B - SECTOR COUNT
|
|
||||||
; A - DRIVE
|
|
||||||
|
|
||||||
CD_READ:
|
|
||||||
LD C,A
|
|
||||||
EXX
|
EXX
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD HL,CMDREAD
|
LD HL,ATAPI_CMD_PACKET.READ
|
||||||
LD DE,RAM_ATAPI_READ
|
LD DE,RAM_ATAPI_READ
|
||||||
LD BC,PKTSIZE
|
LD BC,PKTSIZE
|
||||||
LDIR
|
LDIR
|
||||||
@ -101,59 +82,107 @@ CD_READ:
|
|||||||
LD A,H
|
LD A,H
|
||||||
LD H,L
|
LD H,L
|
||||||
LD L,A
|
LD L,A
|
||||||
LD (RAM_ATAPI_READ+SECREAD+0),HL
|
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+0),HL
|
||||||
;
|
;
|
||||||
LD A,XH
|
LD A,XH
|
||||||
LD (RAM_ATAPI_READ+SECREAD+2),A ;R01
|
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+2),A ;R01
|
||||||
LD A,XL
|
LD A,XL
|
||||||
LD (RAM_ATAPI_READ+SECREAD+3),A ;R01
|
LD (RAM_ATAPI_READ + ATAPI_PACKET.SECTOR+3),A ;R01
|
||||||
LD A,B
|
LD A,B
|
||||||
LD (RAM_ATAPI_READ+COUNT+1),A ;R01
|
LD (RAM_ATAPI_READ + ATAPI_PACKET.COUNTER+1),A ;R01
|
||||||
POP AF
|
;
|
||||||
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
; POP AF
|
||||||
|
; OUT (SLOT3),A
|
||||||
;R01 LD HL,CMDREAD
|
;R01 LD HL,CMDREAD
|
||||||
LD HL,RAM_ATAPI_READ
|
LD HL,RAM_ATAPI_READ
|
||||||
LD A,C
|
|
||||||
CALL AP_COM
|
CALL AP_COM
|
||||||
|
;
|
||||||
|
POP BC
|
||||||
|
LD C,SLOT3
|
||||||
|
OUT (C),B
|
||||||
|
;
|
||||||
RET
|
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 ;!HARDCODE error code
|
||||||
|
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)
|
; INPUT: HL - AP paket (12bytes)
|
||||||
; RETURN: CF - ERROR
|
; RETURN: CF - ERROR
|
||||||
; 01h - RECOVERED ERROR
|
; #01 - RECOVERED ERROR
|
||||||
; 02h - NOT READY
|
; #02 - NOT READY
|
||||||
; 03h - MEDIUM ERROR
|
; #03 - MEDIUM ERROR
|
||||||
; 04h - HARDWARE ERROR
|
; #04 - HARDWARE ERROR
|
||||||
; 05h - ILLEGAL REQUEST
|
; #05 - ILLEGAL REQUEST
|
||||||
; 06h - UNIT ATTETION
|
; #06 - UNIT ATTETION
|
||||||
; 07h - DATA PROTECT
|
; #07 - DATA PROTECT
|
||||||
; 0Bh - ABORTED COMMAND
|
; #0B - ABORTED COMMAND
|
||||||
; 80h - TIME OUT
|
; #80 - TIME OUT
|
||||||
AP_COM: AND #01
|
AP_COM: EXX
|
||||||
LD A,IDE.Drive.Master
|
LD DE,#8000
|
||||||
JR Z,.APCOM1
|
CALL CD_WAITPRT
|
||||||
LD A,IDE.Drive.Slave
|
|
||||||
.APCOM1 LD BC,IDE.Write.DeviceHead
|
|
||||||
OUT (C),A ;SELECT DRIVE
|
|
||||||
EXX
|
EXX
|
||||||
LD DE,#8000
|
JR NC,.READY
|
||||||
;LD BC,IDE.Read.Status
|
|
||||||
CALL CWAITPRT
|
|
||||||
EXX
|
|
||||||
JR NC,.CDREADY
|
|
||||||
LD BC,IDE.Write.Command
|
LD BC,IDE.Write.Command
|
||||||
LD A,#08
|
LD A,IDE.ATAPI.Reset
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
|
|
||||||
LD B,#00
|
LD B,#80
|
||||||
.pause: DJNZ .pause
|
.pause: DJNZ .pause
|
||||||
|
|
||||||
EXX
|
EXX
|
||||||
LD DE,#8000
|
LD DE,#8000
|
||||||
;LD BC,IDE.Read.Status
|
CALL CD_WAITPRT
|
||||||
CALL CWAITPRT
|
|
||||||
EXX
|
EXX
|
||||||
RET C
|
RET C
|
||||||
.CDREADY:
|
.READY:
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
IN B,(C)
|
||||||
|
|
||||||
@ -163,7 +192,7 @@ AP_COM: AND #01
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD A,B
|
LD A,B
|
||||||
LD DE,RAM_ATAPI_PK
|
LD DE,RAM_ATAPI_PK ;!FIXIT ¬®¦¥â á⥪¥ ¢ë¤¥«ïâì ¬¥áâ®?
|
||||||
LD BC,PKTSIZE
|
LD BC,PKTSIZE
|
||||||
LDIR
|
LDIR
|
||||||
|
|
||||||
@ -173,32 +202,30 @@ AP_COM: AND #01
|
|||||||
|
|
||||||
XOR A
|
XOR A
|
||||||
EXX
|
EXX
|
||||||
OUT (C),A
|
;OUT (C),A
|
||||||
XOR A
|
;XOR A
|
||||||
LD BC,IDE.Write.Features
|
LD BC,IDE.Write.Features
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD DE,SIZESEC ;SIZE BLOCK
|
LD DE,SIZESEC ;SIZE BLOCK ;!HARDCODE ¤®áâ ¢ âì ¨§ ¯¥à¥¬¥®© ª ª®©-¨¡ã¤ì
|
||||||
LD BC,IDE.Write.CylinderLow
|
LD BC,IDE.Write.CylinderLow
|
||||||
OUT (C),E
|
OUT (C),E
|
||||||
LD BC,IDE.Write.CylinderHigh
|
LD BC,IDE.Write.CylinderHigh
|
||||||
OUT (C),D
|
OUT (C),D
|
||||||
LD BC,IDE.Write.Command
|
LD BC,IDE.Write.Command
|
||||||
LD A,IDE.ATAPI.Packet
|
LD A,IDE.ATAPI.Packet
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
LD DE,#8000
|
LD DE,#8000
|
||||||
;LD BC,IDE.Read.Status
|
CALL CD_WAITPRT
|
||||||
CALL CWAITPRT
|
|
||||||
EXX
|
EXX
|
||||||
RET C
|
RET C
|
||||||
EXX
|
EXX
|
||||||
LD DE,#0908
|
LD DE,#0908
|
||||||
;LD BC,IDE.Read.Status
|
CALL CD_WAITPRT
|
||||||
CALL CWAITPRT
|
|
||||||
EXX
|
EXX
|
||||||
BIT IDE.ControlBit.Error,A
|
BIT IDE.ControlBit.Error,A
|
||||||
JR NZ,.CDERROR
|
JR NZ,.CDERROR
|
||||||
JR NC,.YEP_DRQ
|
JR NC,.YEP_DRQ
|
||||||
LD A,#80
|
LD A,#80 ; TIME OUT ;!HARDCODE
|
||||||
RET
|
RET
|
||||||
.YEP_DRQ:
|
.YEP_DRQ:
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
@ -209,7 +236,6 @@ AP_COM: AND #01
|
|||||||
LD HL,RAM_ATAPI_PK
|
LD HL,RAM_ATAPI_PK
|
||||||
LD BC,IDE.Write.Data
|
LD BC,IDE.Write.Data
|
||||||
LD A,PKTSIZE/2
|
LD A,PKTSIZE/2
|
||||||
;SRL A
|
|
||||||
.OUTPKT:
|
.OUTPKT:
|
||||||
OUTI
|
OUTI
|
||||||
OUTI
|
OUTI
|
||||||
@ -224,9 +250,8 @@ AP_COM: AND #01
|
|||||||
|
|
||||||
.AP_LOOP:
|
.AP_LOOP:
|
||||||
EXX
|
EXX
|
||||||
LD DE,#8000
|
LD DE,#8000
|
||||||
;LD BC,IDE.Read.Status
|
CALL CD_WAITPRT
|
||||||
CALL CWAITPRT
|
|
||||||
EXX
|
EXX
|
||||||
RET C
|
RET C
|
||||||
LD BC,IDE.Read.Status
|
LD BC,IDE.Read.Status
|
||||||
@ -245,7 +270,7 @@ AP_COM: AND #01
|
|||||||
RET
|
RET
|
||||||
.NO_ERR:
|
.NO_ERR:
|
||||||
BIT IDE.ControlBit.DataRequest,A
|
BIT IDE.ControlBit.DataRequest,A
|
||||||
LD A,0
|
LD A,BIOS.Error.NoErrors
|
||||||
RET Z ;NO DATA REQUEST
|
RET Z ;NO DATA REQUEST
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD BC,IDE.Read.CylinderLow
|
LD BC,IDE.Read.CylinderLow
|
||||||
@ -258,8 +283,8 @@ AP_COM: AND #01
|
|||||||
LD BC,IDE.Read.Counter
|
LD BC,IDE.Read.Counter
|
||||||
IN A,(C)
|
IN A,(C)
|
||||||
AND #02
|
AND #02
|
||||||
CP #02
|
;CP #02
|
||||||
JP Z,.FROM_CD
|
JP NZ,.FROM_CD
|
||||||
;.TO_CD:
|
;.TO_CD:
|
||||||
LD BC,IDE.Read.Data
|
LD BC,IDE.Read.Data
|
||||||
.WR_T_CD:
|
.WR_T_CD:
|
||||||
@ -298,26 +323,15 @@ AP_COM: AND #01
|
|||||||
LD A,D
|
LD A,D
|
||||||
OR E
|
OR E
|
||||||
JR NZ,.RD_N_CD
|
JR NZ,.RD_N_CD
|
||||||
; DE = 0 !!!
|
; DE = 0
|
||||||
JR .AP_LOOP
|
JR .AP_LOOP
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
; E - Second * 10
|
|
||||||
; PAUSE LD HL,#0000
|
|
||||||
; PAUSE1 DEC L
|
|
||||||
; JR NZ,PAUSE1
|
|
||||||
; DEC H
|
|
||||||
; JR NZ,PAUSE1
|
|
||||||
; DEC E
|
|
||||||
; JR NZ,PAUSE1
|
|
||||||
; RET
|
|
||||||
|
|
||||||
|
|
||||||
; D - MASK
|
; D - MASK
|
||||||
; E - PATTERN
|
; E - PATTERN
|
||||||
//; BC - PORT
|
CD_WAITPRT:
|
||||||
CWAITPRT:
|
|
||||||
LD BC,IDE.Read.Status
|
LD BC,IDE.Read.Status
|
||||||
LD A,100
|
LD A,100
|
||||||
LD HL,#0000
|
LD HL,#0000
|
||||||
@ -344,32 +358,50 @@ CWAITPRT:
|
|||||||
.CWAITP1:
|
.CWAITP1:
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
CMDNOPP DEFB #00
|
|
||||||
DEFB 00,00,00
|
|
||||||
DEFB #00
|
|
||||||
DEFB 00,00,00
|
|
||||||
DEFB 00,00,00
|
|
||||||
DEFB #00
|
|
||||||
|
|
||||||
CMDOPEN DEFB #1B
|
|
||||||
DEFB #00,#00,#00
|
|
||||||
DEFB #02
|
|
||||||
DEFB #00,#00,#00,#00,#00,#00,#00
|
|
||||||
|
|
||||||
CMDCLOS DEFB #1B
|
|
||||||
DEFB #00,#00,#00
|
|
||||||
DEFB #03
|
|
||||||
DEFB #00,#00,#00,#00,#00,#00,#00
|
|
||||||
|
|
||||||
CMDREAD DEFB #28,#00
|
|
||||||
SECREAD EQU $-CMDREAD
|
|
||||||
DEFB #00,#00,#00,#00
|
|
||||||
DEFB #00
|
|
||||||
COUNT EQU $-CMDREAD
|
|
||||||
DEFB #00,#01
|
|
||||||
DEFB #00,#00,#00
|
|
||||||
|
|
||||||
;========================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
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
|
||||||
|
;
|
||||||
@ -89,47 +89,6 @@ HDD_5x.RESET: ; !FIXIT
|
|||||||
RET
|
RET
|
||||||
;[]================================================================[#51]
|
;[]================================================================[#51]
|
||||||
|
|
||||||
SELECTH:
|
|
||||||
AND #0F
|
|
||||||
LD IY,IDE.INIT_TBL_IDE0
|
|
||||||
JR Z,SELHH
|
|
||||||
DEC A
|
|
||||||
LD IY,IDE.INIT_TBL_IDE1
|
|
||||||
;R02
|
|
||||||
JR Z,SELHH
|
|
||||||
DEC A
|
|
||||||
LD IY,IDE.INIT_TBL_IDE2
|
|
||||||
JR Z,SELHH
|
|
||||||
DEC A
|
|
||||||
LD IY,IDE.INIT_TBL_IDE3
|
|
||||||
;
|
|
||||||
JR NZ,NODRIVE
|
|
||||||
SELHH: EXX
|
|
||||||
LD C,SLOT3
|
|
||||||
IN B,(C)
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (C),A
|
|
||||||
|
|
||||||
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
|
||||||
AND #01
|
|
||||||
LD A,IDE.Chanel.Secondary
|
|
||||||
JR NZ,SELCHAN
|
|
||||||
LD A,IDE.Chanel.Primary
|
|
||||||
SELCHAN:
|
|
||||||
OUT (IDE.Chanel.Set),A ;R02
|
|
||||||
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType)
|
|
||||||
CP IDE.Device.HDD ;!FIXIT ¢®§¬®¦®, åॠ¥ 㦮, ¯®â®¬ã-çâ® ¥á«¨ CD, â® ¯à¨«¥â¨â ¢ ¤à ©¢¥à CD
|
|
||||||
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
|
||||||
OUT (C),B ;¢®§¢à â áâà ¨æë
|
|
||||||
LD BC,IDE.Write.DeviceHead
|
|
||||||
RES 0,A
|
|
||||||
OUT (C),A
|
|
||||||
EXX
|
|
||||||
RET Z
|
|
||||||
NODRIVE:
|
|
||||||
LD A,BIOS.Error.BadDrvNumber
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
|
|
||||||
;[]================================================================[#58]
|
;[]================================================================[#58]
|
||||||
;Function: Get Current Media Parameters
|
;Function: Get Current Media Parameters
|
||||||
@ -141,7 +100,8 @@ NODRIVE:
|
|||||||
; IX - Capacity sector in bytes
|
; IX - Capacity sector in bytes
|
||||||
; B - Flags: MASTER/SLAVE, LBA/CHS
|
; B - Flags: MASTER/SLAVE, LBA/CHS
|
||||||
HDD_5x.GETMED:
|
HDD_5x.GETMED:
|
||||||
CALL SELECTH
|
LD C,IDE.Device.HDD
|
||||||
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -170,7 +130,8 @@ HDD_5x.GETMED:
|
|||||||
; B - Flags
|
; B - Flags
|
||||||
;Return: None
|
;Return: None
|
||||||
HDD_5x.SETMED:
|
HDD_5x.SETMED:
|
||||||
CALL SELECTH
|
LD C,IDE.Device.HDD
|
||||||
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -208,7 +169,7 @@ HDD_5x.READ:
|
|||||||
; HL:IX - Sector
|
; HL:IX - Sector
|
||||||
; DE - Address
|
; DE - Address
|
||||||
; B - Sector counter
|
; B - Sector counter
|
||||||
; A'- Memory ID Block
|
; A'- Memory Page Number
|
||||||
;Return:
|
;Return:
|
||||||
; HL:IX - Sector + Sector counter
|
; HL:IX - Sector + Sector counter
|
||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
@ -273,7 +234,9 @@ RST8RDR: RESTORE_PORTY
|
|||||||
;EX AF,AF' ;!TEST 21/11/23
|
;EX AF,AF' ;!TEST 21/11/23
|
||||||
RET
|
RET
|
||||||
;READ SECTOR(S)
|
;READ SECTOR(S)
|
||||||
RDS000: CALL SELECTH
|
RDS000:
|
||||||
|
LD C,IDE.Device.HDD
|
||||||
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
EXX
|
EXX
|
||||||
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
||||||
@ -333,6 +296,7 @@ RDS004: DUP 16
|
|||||||
LD XH,A
|
LD XH,A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
.W44: INC XL ;INC LOADED SECTORS
|
.W44: INC XL ;INC LOADED SECTORS
|
||||||
EXX
|
EXX
|
||||||
LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
|
LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
|
||||||
@ -369,7 +333,7 @@ HDD_5x.WRITE:
|
|||||||
; HL:IX - Sector
|
; HL:IX - Sector
|
||||||
; DE - Address
|
; DE - Address
|
||||||
; B - Sector counter
|
; B - Sector counter
|
||||||
; A'- Memory ID Block
|
; A'- Memory Page Number
|
||||||
;Return:
|
;Return:
|
||||||
; HL:IX - Sector + Sector counter
|
; HL:IX - Sector + Sector counter
|
||||||
; DE - Address + (Sector counter * Size sector)
|
; DE - Address + (Sector counter * Size sector)
|
||||||
@ -436,7 +400,8 @@ RST8WRR: RESTORE_PORTY
|
|||||||
|
|
||||||
;WRITE SECTOR(S)
|
;WRITE SECTOR(S)
|
||||||
WRS000:
|
WRS000:
|
||||||
CALL SELECTH
|
LD C,IDE.Device.HDD
|
||||||
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
EXX
|
EXX
|
||||||
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
||||||
@ -550,7 +515,9 @@ HDD_5x.VERIFY:
|
|||||||
RET
|
RET
|
||||||
;[]================================================================[#54]
|
;[]================================================================[#54]
|
||||||
;VERIFY SECTOR(S)
|
;VERIFY SECTOR(S)
|
||||||
VRS000: CALL SELECTH
|
VRS000:
|
||||||
|
LD C,IDE.Device.HDD
|
||||||
|
CALL SELECT_DRIVE
|
||||||
RET C
|
RET C
|
||||||
EXX
|
EXX
|
||||||
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0
|
||||||
@ -665,9 +632,9 @@ CHS005: INC A
|
|||||||
LD L,A
|
LD L,A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
; D - MASK
|
; D - MASK
|
||||||
; E - PATTERN
|
; E - PATTERN
|
||||||
//; BC - PORT
|
|
||||||
WAITPRT:
|
WAITPRT:
|
||||||
LD BC,IDE.Read.Status
|
LD BC,IDE.Read.Status
|
||||||
LD HL,#0000 ; § ¤¥à¦ª ;!HARDCODE
|
LD HL,#0000 ; § ¤¥à¦ª ;!HARDCODE
|
||||||
@ -690,42 +657,46 @@ WAITPRT:
|
|||||||
RET
|
RET
|
||||||
.ok: POP HL
|
.ok: POP HL
|
||||||
RET
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;=======================================================================
|
|
||||||
|
|
||||||
;[]================================================================[#57]
|
;[]================================================================[#57]
|
||||||
|
;[ ] 18/12/2023. ¤®¡ ¢«¥¨¥/¤®¯¨«¨¢ ¨¥ API CD-ROM (ATAPI)
|
||||||
;Function: Detect Disk
|
;Function: Detect Disk
|
||||||
; A - Disk
|
; A - Disk
|
||||||
;Return: CF=0 - A=Drive type
|
;Return: CF=0 - A=Drive type
|
||||||
; CF=1 - drive not present, A=#FF
|
; CF=1 - drive not present, A=#02
|
||||||
HDD_5x.DETECT:
|
HDD_5x.DETECT:
|
||||||
CP #84 ;!HARDCODE max HDD drives (#80,#81,#82,#83)
|
LD C,IDE.Device.HDD
|
||||||
CCF
|
JP DRV_DETECT
|
||||||
JR C,.error
|
|
||||||
|
|
||||||
LD HL,IDE.INIT_TBL_IDE0.DriveType
|
; CP #84 ;!HARDCODE max IDE drives (#80,#81,#82,#83)
|
||||||
AND 3
|
; CCF
|
||||||
JR Z,.get_param
|
; JR C,.error
|
||||||
LD HL,IDE.INIT_TBL_IDE1.DriveType
|
|
||||||
DEC A
|
; LD HL,IDE.INIT_TBL_IDE0.DriveType
|
||||||
JR Z,.get_param
|
; AND 3
|
||||||
LD HL,IDE.INIT_TBL_IDE2.DriveType
|
; JR Z,.get_param
|
||||||
DEC A
|
; LD HL,IDE.INIT_TBL_IDE1.DriveType
|
||||||
JR Z,.get_param
|
; DEC A
|
||||||
LD HL,IDE.INIT_TBL_IDE3.DriveType
|
; JR Z,.get_param
|
||||||
.get_param:
|
; LD HL,IDE.INIT_TBL_IDE2.DriveType
|
||||||
IN A,(SLOT3)
|
; DEC A
|
||||||
LD B,A
|
; JR Z,.get_param
|
||||||
LD A,SYS_PAGE
|
; LD HL,IDE.INIT_TBL_IDE3.DriveType
|
||||||
OUT (SLOT3),A
|
; .get_param:
|
||||||
|
; IN A,(SLOT3)
|
||||||
|
; LD B,A
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,(HL)
|
; LD A,(HL)
|
||||||
LD C,SLOT3
|
; LD C,SLOT3
|
||||||
OUT (C),B
|
; OUT (C),B
|
||||||
|
|
||||||
CP IDE.Device.HDD
|
; CP IDE.Device.HDD
|
||||||
RET Z
|
; RET Z
|
||||||
SCF
|
; SCF
|
||||||
.error: LD A,BIOS.Error.BadDrvNumber
|
; .error: LD A,BIOS.Error.BadDrvNumber
|
||||||
RET
|
; RET
|
||||||
;[]================================================================[#57]
|
;[]================================================================[#57]
|
||||||
100
src/bios/exp/EXTENDED/IDE/shared.asm
Normal file
100
src/bios/exp/EXTENDED/IDE/shared.asm
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
;[ ] 18/12/2023. ¤®¡ ¢«¥¨¥/¤®¯¨«¨¢ ¨¥ API CD-ROM (ATAPI)
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
|
; ‚室: A - ®¬¥à ãáâனáâ¢
|
||||||
|
; C - ’¨¯
|
||||||
|
SELECT_DRIVE:
|
||||||
|
AND #0F
|
||||||
|
LD IY,IDE.INIT_TBL_IDE0
|
||||||
|
JR Z,.channel
|
||||||
|
DEC A
|
||||||
|
LD IY,IDE.INIT_TBL_IDE1
|
||||||
|
;R02
|
||||||
|
JR Z,.channel
|
||||||
|
DEC A
|
||||||
|
LD IY,IDE.INIT_TBL_IDE2
|
||||||
|
JR Z,.channel
|
||||||
|
DEC A
|
||||||
|
LD IY,IDE.INIT_TBL_IDE3
|
||||||
|
;
|
||||||
|
JR Z,.channel
|
||||||
|
LD A,BIOS.Error.BadDrvNumber
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.channel:
|
||||||
|
EXX
|
||||||
|
IN A,(SLOT3)
|
||||||
|
PUSH AF
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
||||||
|
AND 1
|
||||||
|
LD A,IDE.Chanel.Secondary
|
||||||
|
JR NZ,.device
|
||||||
|
LD A,IDE.Chanel.Primary
|
||||||
|
.device:
|
||||||
|
OUT (IDE.Chanel.Set),A ;R02
|
||||||
|
LD C,(IY+IDE.HDD_INIT_TABLE.DriveType)
|
||||||
|
LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
||||||
|
POP AF
|
||||||
|
OUT (SLOT3),A ;¢®§¢à â áâà ¨æë
|
||||||
|
;
|
||||||
|
LD A,C
|
||||||
|
EXX
|
||||||
|
CP C
|
||||||
|
EXX
|
||||||
|
SCF
|
||||||
|
LD A,BIOS.Error.BadDrvNumber
|
||||||
|
RET NZ
|
||||||
|
;
|
||||||
|
LD A,B
|
||||||
|
AND #F0
|
||||||
|
LD BC,IDE.Write.DeviceHead
|
||||||
|
OUT (C),A
|
||||||
|
EXX
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
; NODRIVE:
|
||||||
|
; LD A,BIOS.Error.BadDrvNumber
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
|
;Function: Detect Disk
|
||||||
|
; A - Disk
|
||||||
|
; ‘ - Type
|
||||||
|
;Return: CF=0 - A=Drive type
|
||||||
|
; CF=1 - drive not present, A=#02
|
||||||
|
DRV_DETECT:
|
||||||
|
CP #84 ;!HARDCODE max IDE drives (#80,#81,#82,#83)
|
||||||
|
CCF
|
||||||
|
JR C,.error
|
||||||
|
|
||||||
|
LD HL,IDE.INIT_TBL_IDE0.DriveType
|
||||||
|
AND 3
|
||||||
|
JR Z,.get_param
|
||||||
|
LD HL,IDE.INIT_TBL_IDE1.DriveType
|
||||||
|
DEC A
|
||||||
|
JR Z,.get_param
|
||||||
|
LD HL,IDE.INIT_TBL_IDE2.DriveType
|
||||||
|
DEC A
|
||||||
|
JR Z,.get_param
|
||||||
|
LD HL,IDE.INIT_TBL_IDE3.DriveType
|
||||||
|
.get_param:
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD B,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
|
||||||
|
LD A,(HL)
|
||||||
|
CP C ; compare Type
|
||||||
|
LD C,SLOT3
|
||||||
|
OUT (C),B
|
||||||
|
RET Z
|
||||||
|
SCF
|
||||||
|
.error: LD A,BIOS.Error.BadDrvNumber
|
||||||
|
RET
|
||||||
@ -119,8 +119,9 @@ DRV_LIST: ; ?????
|
|||||||
|
|
||||||
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
|
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
|
||||||
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'
|
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'
|
||||||
INCLUDE 'EXTENDED/HDD_DRIVER_6.asm'
|
INCLUDE 'EXTENDED/IDE/HDD_DRV.asm'
|
||||||
INCLUDE 'EXTENDED/CD_DRIVER_0.asm'
|
INCLUDE 'EXTENDED/IDE/CD_DRV.asm'
|
||||||
|
INCLUDE 'EXTENDED/IDE/SHARED.asm'
|
||||||
|
|
||||||
|
|
||||||
;DISPLAY " EXTENDED end addr: ", /A, $
|
;DISPLAY " EXTENDED end addr: ", /A, $
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;Rev Date Name Description
|
;Rev Date Name Description
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;R02 17.08.2023 BAO Fixed bug with AUTODETECT ATAPI Drives
|
;R02 17.08.2023 BAO New AUTODETECT ATA/ATAPI procedure
|
||||||
;R01 01.08.2001 DNS FIX BUG INT "SELECT_IDE"
|
;R01 01.08.2001 DNS FIX BUG INT "SELECT_IDE"
|
||||||
;R00 24.07.2001 DNS ADD SECONDARY IDE
|
;R00 24.07.2001 DNS ADD SECONDARY IDE
|
||||||
; 24.07.2001 DNS INITIAL NEW VERSION 2.48
|
; 24.07.2001 DNS INITIAL NEW VERSION 2.48
|
||||||
@ -169,7 +169,7 @@ START: CALL SetUP_CHANELS
|
|||||||
LD A,#03
|
LD A,#03
|
||||||
CALL STEP1_GETCMOS
|
CALL STEP1_GETCMOS
|
||||||
|
|
||||||
;!TEST 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
|
CALL ScreenPOS.CRLF
|
||||||
|
|||||||
@ -884,6 +884,7 @@ RECOVERYstart:
|
|||||||
|
|
||||||
|
|
||||||
PrepareToBOOT:
|
PrepareToBOOT:
|
||||||
|
CALL INT_ON
|
||||||
HALT ; ¡¥§ ¥£® ¥ áà ¡ âë¢ ¥â § ¦¨¬ ¨¥ è¨ä⠯ਠáâ à⥠¤®á ¤«ï ®â¬¥ë áâ àâ system.exe
|
HALT ; ¡¥§ ¥£® ¥ áà ¡ âë¢ ¥â § ¦¨¬ ¨¥ è¨ä⠯ਠáâ à⥠¤®á ¤«ï ®â¬¥ë áâ àâ system.exe
|
||||||
CALL INT_OFF
|
CALL INT_OFF
|
||||||
CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer
|
CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer
|
||||||
@ -937,7 +938,7 @@ CDSTART:
|
|||||||
POP AF
|
POP AF
|
||||||
PUSH AF
|
PUSH AF
|
||||||
CALL PRINT_CHANEL
|
CALL PRINT_CHANEL
|
||||||
|
;
|
||||||
POP BC
|
POP BC
|
||||||
SET 6,B
|
SET 6,B
|
||||||
SCF
|
SCF
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user