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