This commit is contained in:
Anatoliy Belyanskiy 2023-12-21 05:31:39 +10:00
parent 2d65e4cdd0
commit be6233a072
10 changed files with 486 additions and 361 deletions

@ -1 +1 @@
Subproject commit f112b1359045d7fe7aa47f843011fddc5e03eba2 Subproject commit 226dbc13e8cacb202848245b7f11de3df2f0cbd7

View File

@ -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

View File

@ -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)

View File

@ -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
;

View File

@ -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
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 HL,IDE.INIT_TBL_IDE0.DriveType
LD C,SLOT3 ; AND 3
OUT (C),B ; 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 IDE.Device.HDD ; LD A,(HL)
RET Z ; LD C,SLOT3
SCF ; OUT (C),B
.error: LD A,BIOS.Error.BadDrvNumber
RET ; CP IDE.Device.HDD
; RET Z
; SCF
; .error: LD A,BIOS.Error.BadDrvNumber
; RET
;[]================================================================[#57] ;[]================================================================[#57]

View 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

View File

@ -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, $

View File

@ -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

View File

@ -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.