mirror of
https://github.com/Tolik-Trek/Sprinter-BIOS.git
synced 2026-06-15 01:11:47 +03:00
Добавлена функция [5x] DRV_GET_NAME для ATA/ATAPI
This commit is contained in:
parent
2e74cde2db
commit
bd908595f8
@ -1 +1 @@
|
|||||||
Subproject commit e1dc7ec10dc9c7e9153a05884e42973a57378a63
|
Subproject commit 20f00d231f2a8e7979248c02769c9528ee67f457
|
||||||
@ -80,8 +80,7 @@ TAB_FNS:
|
|||||||
|
|
||||||
; 5x
|
; 5x
|
||||||
;--------------
|
;--------------
|
||||||
DB low FN_RESERVED_5x ;#50
|
DB low FN_5x_Parser_0 ;#50 - Get drive name
|
||||||
|
|
||||||
DB low FN_5x_Parser_1 ;#51 - Reset drive
|
DB low FN_5x_Parser_1 ;#51 - Reset drive
|
||||||
DB low FN_5x_Parser_2 ;#52 - Long read
|
DB low FN_5x_Parser_2 ;#52 - Long read
|
||||||
DB low FN_5x_Parser_3 ;#53 - Long write
|
DB low FN_5x_Parser_3 ;#53 - Long write
|
||||||
@ -272,8 +271,7 @@ TAB_FNS:
|
|||||||
;--------------
|
;--------------
|
||||||
|
|
||||||
;--------------
|
;--------------
|
||||||
DB high FN_RESERVED_5x
|
DB high FN_5x_Parser_0
|
||||||
|
|
||||||
DB high FN_5x_Parser_1
|
DB high FN_5x_Parser_1
|
||||||
DB high FN_5x_Parser_2
|
DB high FN_5x_Parser_2
|
||||||
DB high FN_5x_Parser_3
|
DB high FN_5x_Parser_3
|
||||||
@ -523,7 +521,7 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-------------------------------------------------------------[ ATA #8 ]
|
;-------------------------------------------------------------[ ATA #8 ]
|
||||||
;
|
;
|
||||||
DB low FN_RESERVED_5x
|
DB low ATA_5x_GET_DRIVE_NAME
|
||||||
DB low ATA_5x_RESET
|
DB low ATA_5x_RESET
|
||||||
DB low ATA_5x_LONG_READ
|
DB low ATA_5x_LONG_READ
|
||||||
DB low ATA_5x_LONG_WRITE
|
DB low ATA_5x_LONG_WRITE
|
||||||
@ -548,7 +546,7 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-----------------------------------------------------------[ ATAPI #C ]
|
;-----------------------------------------------------------[ ATAPI #C ]
|
||||||
;
|
;
|
||||||
DB low FN_RESERVED_5x
|
DB low ATAPI_5x_GET_DRIVE_NAME
|
||||||
DB low ATAPI_5x_RESET
|
DB low ATAPI_5x_RESET
|
||||||
DB low ATAPI_5x_LONG_READ
|
DB low ATAPI_5x_LONG_READ
|
||||||
DB low ATAPI_5x_LONG_WRITE ; [ ] new
|
DB low ATAPI_5x_LONG_WRITE ; [ ] new
|
||||||
@ -626,7 +624,7 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-------------------------------------------------------------[ ATA #8 ]
|
;-------------------------------------------------------------[ ATA #8 ]
|
||||||
;
|
;
|
||||||
DB high FN_RESERVED_5x
|
DB high ATA_5x_GET_DRIVE_NAME
|
||||||
DB high ATA_5x_RESET
|
DB high ATA_5x_RESET
|
||||||
DB high ATA_5x_LONG_READ
|
DB high ATA_5x_LONG_READ
|
||||||
DB high ATA_5x_LONG_WRITE
|
DB high ATA_5x_LONG_WRITE
|
||||||
@ -651,7 +649,7 @@ TAB_5xFNS:
|
|||||||
|
|
||||||
;-----------------------------------------------------------[ ATAPI #C ]
|
;-----------------------------------------------------------[ ATAPI #C ]
|
||||||
;
|
;
|
||||||
DB high FN_RESERVED_5x
|
DB high ATAPI_5x_GET_DRIVE_NAME
|
||||||
DB high ATAPI_5x_RESET
|
DB high ATAPI_5x_RESET
|
||||||
DB high ATAPI_5x_LONG_READ
|
DB high ATAPI_5x_LONG_READ
|
||||||
DB high ATAPI_5x_LONG_WRITE ; LONG_WRITE ; [ ] new
|
DB high ATAPI_5x_LONG_WRITE ; LONG_WRITE ; [ ] new
|
||||||
@ -702,7 +700,8 @@ EXP_FNS_RST18: PUSH HL
|
|||||||
; FN_RESERVED_5x
|
; FN_RESERVED_5x
|
||||||
; FN_RESERVED_5x
|
; FN_RESERVED_5x
|
||||||
; DRV_LIST
|
; DRV_LIST
|
||||||
|
FN_5x_Parser_0: LD C,#00
|
||||||
|
JR FN_5x_Parser
|
||||||
FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET
|
FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET
|
||||||
JR FN_5x_Parser
|
JR FN_5x_Parser
|
||||||
FN_5x_Parser_2: LD C,#02 ; ATA_5x_LONG_READ
|
FN_5x_Parser_2: LD C,#02 ; ATA_5x_LONG_READ
|
||||||
|
|||||||
@ -24,6 +24,23 @@ _ZIP_WAITS_ EQU 128
|
|||||||
|
|
||||||
ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number"
|
ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number"
|
||||||
|
|
||||||
|
;[]================================================================[#50]
|
||||||
|
; IN: A - 䨧¨ç¥áª¨© ®¬¥à ¯à¨¢®¤
|
||||||
|
; DE - ¡ãää¥à 64 ¡ ©â ¤«ï §¢ ¨ï ãáâனáâ¢
|
||||||
|
; OUT: NC - ¢ ¡ãä¥à¥ §¢ ¨¥
|
||||||
|
; ‘F - ¢ A ®¬¥à ®è¨¡ª¨
|
||||||
|
ATAPI_5x_GET_DRIVE_NAME:
|
||||||
|
LD B,A ; á®åà 塞 A
|
||||||
|
LD C,IDE.Device.ATAPI
|
||||||
|
CALL SELECT_DRIVE.drv_params
|
||||||
|
JP Z,ATAxx_5x_GET_DRIVE_NAME
|
||||||
|
;
|
||||||
|
LD A,BIOS.Error.BadNumber
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;[]================================================================[#50]
|
||||||
|
|
||||||
|
|
||||||
;[]================================================================[#51]
|
;[]================================================================[#51]
|
||||||
ATAPI_5x_RESET: LD C,IDE.Device.ATAPI
|
ATAPI_5x_RESET: LD C,IDE.Device.ATAPI
|
||||||
CALL SELECT_DRIVE
|
CALL SELECT_DRIVE
|
||||||
|
|||||||
@ -73,9 +73,27 @@ IDE3 EQU #C1D8
|
|||||||
; DB #FF ;SECTOR PER CYLINDER HIGH ;06
|
; DB #FF ;SECTOR PER CYLINDER HIGH ;06
|
||||||
; DB #FF ;RESERVED ;07
|
; DB #FF ;RESERVED ;07
|
||||||
|
|
||||||
|
|
||||||
WRITE_OUTI_DUPs EQU 32 ; bytes
|
WRITE_OUTI_DUPs EQU 32 ; bytes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;[]================================================================[#50]
|
||||||
|
; IN: A - 䨧¨ç¥áª¨© ®¬¥à ¯à¨¢®¤
|
||||||
|
; DE - ¡ãää¥à 64 ¡ ©â ¤«ï §¢ ¨ï ãáâனáâ¢
|
||||||
|
; OUT: NC - ¢ ¡ãä¥à¥ §¢ ¨¥
|
||||||
|
; ‘F - ¢ A ®¬¥à ®è¨¡ª¨
|
||||||
|
ATA_5x_GET_DRIVE_NAME:
|
||||||
|
LD B,A ; á®åà 塞 A
|
||||||
|
LD C,IDE.Device.HDD
|
||||||
|
CALL SELECT_DRIVE.drv_params
|
||||||
|
JP Z,ATAxx_5x_GET_DRIVE_NAME
|
||||||
|
;
|
||||||
|
LD A,BIOS.Error.BadNumber
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;[]================================================================[#50]
|
||||||
|
|
||||||
|
|
||||||
;[]================================================================[#51]
|
;[]================================================================[#51]
|
||||||
;Function: Reset drive
|
;Function: Reset drive
|
||||||
ATA_5x_RESET: ; !FIXIT ¥ à¥á¥â¨âáï?
|
ATA_5x_RESET: ; !FIXIT ¥ à¥á¥â¨âáï?
|
||||||
|
|||||||
@ -3,37 +3,39 @@
|
|||||||
; ‚室: A - ®¬¥à ãáâனá⢠, C - DriveType
|
; ‚室: A - ®¬¥à ãáâனá⢠, C - DriveType
|
||||||
; ‚ë室: A - MediaParameters, C - DriveType
|
; ‚ë室: A - MediaParameters, C - DriveType
|
||||||
; ¥ ¯®àâ¨â L
|
; ¥ ¯®àâ¨â L
|
||||||
SELECT_DRIVE: AND #0F
|
SELECT_DRIVE: CALL .drv_params
|
||||||
LD IY,IDE.INIT_TBL_IDE0
|
; AND #0F
|
||||||
JR Z,.channel
|
; LD IY,IDE.INIT_TBL_IDE0
|
||||||
DEC A
|
; JR Z,.channel
|
||||||
LD IY,IDE.INIT_TBL_IDE1
|
; ;
|
||||||
;R02
|
; DEC A
|
||||||
JR Z,.channel
|
; LD IY,IDE.INIT_TBL_IDE1
|
||||||
DEC A
|
; JR Z,.channel
|
||||||
LD IY,IDE.INIT_TBL_IDE2
|
; ;
|
||||||
JR Z,.channel
|
; DEC A
|
||||||
DEC A
|
; LD IY,IDE.INIT_TBL_IDE2
|
||||||
LD IY,IDE.INIT_TBL_IDE3
|
; JR Z,.channel
|
||||||
;
|
; ;
|
||||||
JR NZ,.error
|
; DEC A
|
||||||
;
|
; LD IY,IDE.INIT_TBL_IDE3
|
||||||
.channel: EXX
|
; JR NZ,.error
|
||||||
IN A,(SLOT3)
|
; ;
|
||||||
PUSH AF
|
; .channel: EXX
|
||||||
LD A,SYS_PAGE
|
; IN A,(SLOT3)
|
||||||
OUT (SLOT3),A
|
; PUSH AF
|
||||||
;
|
; LD A,SYS_PAGE
|
||||||
LD H,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
|
; OUT (SLOT3),A
|
||||||
LD C,(IY + IDE.HDD_INIT_TABLE.DriveType)
|
; ;
|
||||||
LD B,(IY + IDE.HDD_INIT_TABLE.DRV_Flags)
|
; LD H,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
|
||||||
POP AF
|
; LD C,(IY + IDE.HDD_INIT_TABLE.DriveType)
|
||||||
OUT (SLOT3),A ;¢®§¢à â áâà ¨æë
|
; LD B,(IY + IDE.HDD_INIT_TABLE.DRV_Flags)
|
||||||
;
|
; POP AF
|
||||||
LD A,C
|
; OUT (SLOT3),A ;¢®§¢à â áâà ¨æë
|
||||||
EXX
|
; ;
|
||||||
;
|
; LD A,C
|
||||||
CP C
|
; EXX
|
||||||
|
; ;
|
||||||
|
; CP C
|
||||||
;
|
;
|
||||||
EXX
|
EXX
|
||||||
SCF
|
SCF
|
||||||
@ -66,7 +68,46 @@ SELECT_DRIVE: AND #0F
|
|||||||
;
|
;
|
||||||
.error: LD A,BIOS.Error.BadNumber
|
.error: LD A,BIOS.Error.BadNumber
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
; ¥ ¯®àâ¨â ॣ¨áâàë B,DE
|
||||||
|
.drv_params: AND #0F
|
||||||
|
LD IY,IDE.INIT_TBL_IDE0
|
||||||
|
JR Z,.channel
|
||||||
|
;
|
||||||
|
DEC A
|
||||||
|
LD IY,IDE.INIT_TBL_IDE1
|
||||||
|
JR Z,.channel
|
||||||
|
;
|
||||||
|
DEC A
|
||||||
|
LD IY,IDE.INIT_TBL_IDE2
|
||||||
|
JR Z,.channel
|
||||||
|
;
|
||||||
|
DEC A
|
||||||
|
LD IY,IDE.INIT_TBL_IDE3
|
||||||
|
RET NZ
|
||||||
|
;
|
||||||
|
.channel: EXX
|
||||||
|
IN A,(SLOT3)
|
||||||
|
PUSH AF
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD H,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
|
||||||
|
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
|
||||||
|
RET
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
@ -87,6 +128,89 @@ CHANGE_MEM_BLK: LD HL,#C000
|
|||||||
;=======================================================================
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
|
; IN: B - 䨧¨ç¥áª¨© ®¬¥à ¯à¨¢®¤
|
||||||
|
; DE - ¡ãää¥à 64 ¡ ©â ¤«ï §¢ ¨ï ãáâனáâ¢
|
||||||
|
; OUT: NC - ¢ ¡ãä¥à¥ §¢ ¨¥
|
||||||
|
; ‘F - ¢ A ®¬¥à ®è¨¡ª¨
|
||||||
|
ATAxx_5x_GET_DRIVE_NAME:
|
||||||
|
LD A,B
|
||||||
|
AND #0F
|
||||||
|
LD HL,SYS_PAGE.IDE_0.NAME
|
||||||
|
JR Z,.ldir
|
||||||
|
;
|
||||||
|
DEC A
|
||||||
|
LD HL,SYS_PAGE.IDE_1.NAME
|
||||||
|
JR Z,.ldir
|
||||||
|
DEC A
|
||||||
|
LD HL,SYS_PAGE.IDE_2.NAME
|
||||||
|
JR Z,.ldir
|
||||||
|
DEC A
|
||||||
|
LD HL,SYS_PAGE.IDE_3.NAME
|
||||||
|
JR NZ,.error
|
||||||
|
;
|
||||||
|
.ldir: EXX
|
||||||
|
LD C,SLOT3
|
||||||
|
IN B,(C)
|
||||||
|
LD D,SYS_PAGE
|
||||||
|
OUT (C),D
|
||||||
|
EXX
|
||||||
|
LD A,(HL)
|
||||||
|
EXX
|
||||||
|
OUT (C),B
|
||||||
|
EXX
|
||||||
|
AND A ;CONFIGURE_IDE_DRIVES.IDE_NAME_MARKER.None
|
||||||
|
JR Z,.error
|
||||||
|
;
|
||||||
|
INC A ;CONFIGURE_IDE_DRIVES.IDE_NAME_MARKER.NoInfo
|
||||||
|
JR Z,.autodetect
|
||||||
|
;
|
||||||
|
INC A ;CONFIGURE_IDE_DRIVES.IDE_NAME_MARKER.Unknown
|
||||||
|
JR Z,.UnknownName
|
||||||
|
;
|
||||||
|
LD B,SYS_PAGE.IDE_x.NAME.Size
|
||||||
|
.loop: EXX
|
||||||
|
OUT (C),D
|
||||||
|
EXX
|
||||||
|
LD A,(HL)
|
||||||
|
EXX
|
||||||
|
OUT (C),B
|
||||||
|
EXX
|
||||||
|
LD (DE),A
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
DJNZ .loop
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.UnknownName: LD HL,.Unknown_str
|
||||||
|
LD BC,.Unknown_str.Size
|
||||||
|
LDIR
|
||||||
|
XOR A
|
||||||
|
EX DE,HL
|
||||||
|
LD B,SYS_PAGE.IDE_x.NAME.Size - .Unknown_str.Size
|
||||||
|
.loop_zero: LD (HL),A
|
||||||
|
INC HL
|
||||||
|
DJNZ .loop_zero
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.autodetect: ;!FIXIT ᤥ« âì ¤¥â¥ªâ!!!
|
||||||
|
JR .UnknownName
|
||||||
|
;
|
||||||
|
; ¥á«¨ ¥â ¤à ©¢
|
||||||
|
.error: LD A,BIOS.Error.BadNumber
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.Unknown_str: BYTE 'Unknown'
|
||||||
|
.Unknown_str.Size EQU $ - .Unknown_str
|
||||||
|
|
||||||
|
; ¥á«¨ ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¢®§¢à â ¨¬¥¨ ¤«ï ãáâனáâ¢
|
||||||
|
;LD A,BIOS.Error.InvalidSubFunction
|
||||||
|
;SCF
|
||||||
|
;RET
|
||||||
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
;Function: Detect Disk
|
;Function: Detect Disk
|
||||||
; A - Disk
|
; A - Disk
|
||||||
|
|||||||
@ -92,6 +92,11 @@ IDE3 EQU #C1D8
|
|||||||
|
|
||||||
MODULE CONFIGURE_IDE_DRIVES
|
MODULE CONFIGURE_IDE_DRIVES
|
||||||
|
|
||||||
|
IDE_NAME_MARKER:
|
||||||
|
.None EQU #00
|
||||||
|
.NoInfo EQU #FF
|
||||||
|
.Unknown EQU #FE
|
||||||
|
|
||||||
MODULE PAUSES
|
MODULE PAUSES
|
||||||
HALT:
|
HALT:
|
||||||
.Time_2s EQU 100
|
.Time_2s EQU 100
|
||||||
@ -153,11 +158,20 @@ START: ; reset all
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD HL,IDE.INIT_TBL_IDE0
|
LD HL,IDE.INIT_TBL_IDE0
|
||||||
LD BC,256*(IDE.HDD_INIT_TABLE * 4) + #FF ;R02
|
LD BC,256*(IDE.HDD_INIT_TABLE * 4) + #FF ;R02
|
||||||
;CLEAR HDD VARIABLE
|
;CLEAR HDD VARIABLE
|
||||||
.FILLIDE:
|
.FILLIDE:
|
||||||
LD (HL),C
|
LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .FILLIDE
|
DJNZ .FILLIDE
|
||||||
|
;CLEAR HDD NAME
|
||||||
|
LD HL,SYS_PAGE.IDE_NAMES_TABLE
|
||||||
|
LD B,low SYS_PAGE.IDE_NAMES_TABLE.Size
|
||||||
|
INC C ; IDE_NAME_MARKER.None
|
||||||
|
.FILLIDE_NAME:
|
||||||
|
LD (HL),C
|
||||||
|
INC HL
|
||||||
|
DJNZ .FILLIDE_NAME
|
||||||
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
@ -207,6 +221,7 @@ AUTODETECT: LD A,L ;DETECT MESSAGE
|
|||||||
INC A
|
INC A
|
||||||
LD A,msgStrings.ideNone
|
LD A,msgStrings.ideNone
|
||||||
JR Z,.NOSKIPKEY
|
JR Z,.NOSKIPKEY
|
||||||
|
;
|
||||||
LD A,msgStrings.ideSkiped
|
LD A,msgStrings.ideSkiped
|
||||||
.NOSKIPKEY: CALL C,POSTMSG
|
.NOSKIPKEY: CALL C,POSTMSG
|
||||||
CALL ScreenPOS.CRLF
|
CALL ScreenPOS.CRLF
|
||||||
@ -598,22 +613,25 @@ IDE_CMD:
|
|||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
PRINT_IDE_MODEL:
|
PRINT_IDE_MODEL:
|
||||||
LD HL,IDENTIFY_DEVICE_BUFFER.ModelNumber
|
LD HL,IDENTIFY_DEVICE_BUFFER.ModelNumber
|
||||||
|
LD B,+(_ATA_IDENTIFY_DEVICE_DATA.MaximumBlockTransfer - _ATA_IDENTIFY_DEVICE_DATA.ModelNumber)/2
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OR A
|
OR A
|
||||||
JR Z,.unknown
|
JR Z,.unknown
|
||||||
LD B,+(_ATA_IDENTIFY_DEVICE_DATA.MaximumBlockTransfer - _ATA_IDENTIFY_DEVICE_DATA.ModelNumber)/2
|
|
||||||
; !FIXIT ‘¤¥« âì ª®¯¨à®¢ ¨¥ §¢ ¨ï ¢¨â ¢ SYS_PAGE ¨
|
|
||||||
; ®¢®© äãªæ¨¥©/¯®¤äãªæ¨¥© ®â¤ ¢ âì íâã áâà®çªã
|
|
||||||
; ç⮡ ¯à®£¨ ⨯ FDISK ¥ ¤¥« «¨ ¢¥«®á¨¯¥¤®¢
|
|
||||||
CALL PRINT_STR_BIG_ENDIAN
|
|
||||||
;
|
;
|
||||||
|
CALL PRINT_STR_BIG_ENDIAN
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.unknown: LD A,msgStrings.ideUnknown
|
.unknown: LD HL,.marker
|
||||||
|
LD A,.marker.Size
|
||||||
|
CALL COPY_IDE_NAME_TO_SYS_PAGE
|
||||||
|
LD A,msgStrings.ideUnknown
|
||||||
CALL POSTMSG
|
CALL POSTMSG
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
.marker: BYTE IDE_NAME_MARKER.Unknown
|
||||||
|
.marker.Size: EQU $ - .marker
|
||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
@ -1044,6 +1062,38 @@ Nop_CHANELS:
|
|||||||
/////////////////////////////////////////////////////////////////////[^]
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
|
; ‚室: A - ¤«¨ áâப¨
|
||||||
|
; HL - ¤à¥á áâப¨
|
||||||
|
; IY - ¤à¥á ¤ ëå ¤à ©¢ ¢ SYS_PAGE (.IDE_0 .. .IDE_3)
|
||||||
|
; ‚ë室: B - ¤«¨ áâப¨
|
||||||
|
COPY_IDE_NAME_TO_SYS_PAGE:
|
||||||
|
; save IDE name
|
||||||
|
LD C,A
|
||||||
|
LD B,0
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; SYS_PAGE.IDE_x --> SYS_PAGE.IDE_x.NAME
|
||||||
|
PUSH IY
|
||||||
|
POP DE
|
||||||
|
SET 1,D
|
||||||
|
LD A,%0010'0000
|
||||||
|
XOR E
|
||||||
|
LD E,A
|
||||||
|
SLA E
|
||||||
|
SLA E
|
||||||
|
;
|
||||||
|
LD A,C
|
||||||
|
LDIR
|
||||||
|
LD B,A
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
RET
|
||||||
|
/////////////////////////////////////////////////////////////////////[^]
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////[v]
|
/////////////////////////////////////////////////////////////////////[v]
|
||||||
; DisableWriteCache:
|
; DisableWriteCache:
|
||||||
; LD BC,IDE.Write.Features
|
; LD BC,IDE.Write.Features
|
||||||
|
|||||||
@ -17,38 +17,95 @@ ScreenPOS:
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
;=======================================================================
|
||||||
IF BIG_ENDIAN_STR_PRINT = 2
|
; 2 - ¯¥ç âì ¡¥§ ¯®àç¨ ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - á⮪
|
||||||
PRINT_STR_BIG_ENDIAN:
|
; PRINT_STR_BIG_ENDIAN:
|
||||||
LD A,(HL)
|
; LD A,(HL)
|
||||||
CP ' '
|
; CP ' '
|
||||||
JR NZ,.PRINTDW
|
; JR NZ,.PRINTDW
|
||||||
INC HL
|
; INC HL
|
||||||
LD A,(HL)
|
; LD A,(HL)
|
||||||
DEC HL
|
; DEC HL
|
||||||
CP ' '
|
; CP ' '
|
||||||
JR NZ,.PRINTDW
|
; JR NZ,.PRINTDW
|
||||||
INC HL
|
; INC HL
|
||||||
INC HL
|
; INC HL
|
||||||
.no_space: DJNZ DWPRINT
|
; .no_space: DJNZ DWPRINT
|
||||||
RET
|
; RET
|
||||||
;
|
; ;
|
||||||
.PRINTDW: PUSH BC
|
; .PRINTDW: PUSH BC
|
||||||
LD E,(HL)
|
; LD E,(HL)
|
||||||
INC HL
|
; INC HL
|
||||||
LD A,(HL)
|
; LD A,(HL)
|
||||||
INC HL
|
; INC HL
|
||||||
CALL PRINT_CHAR
|
; CALL PRINT_CHAR
|
||||||
LD A,E
|
; LD A,E
|
||||||
CALL PRINT_CHAR
|
; CALL PRINT_CHAR
|
||||||
POP BC
|
; POP BC
|
||||||
LD A,' '
|
; LD A,' '
|
||||||
CP E
|
; CP E
|
||||||
JR Z,.no_space
|
; JR Z,.no_space
|
||||||
DJNZ .PRINTDW
|
; DJNZ .PRINTDW
|
||||||
RET
|
; RET
|
||||||
|
;=======================================================================
|
||||||
ELSEIF BIG_ENDIAN_STR_PRINT = 0
|
; 0 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¨ ¯à®¯ã᪮¬ ¤¢®©ëå ¯à®¡¥«®¢ - ¢ 1,5 à § èãáâ॥ á⮪ ¥ § â¨à ¥â ¯à¥¤ë¤ãéãî áâபã
|
||||||
|
; PRINT_STR_BIG_ENDIAN:
|
||||||
|
; PUSH HL
|
||||||
|
; PUSH BC
|
||||||
|
; LD D,H
|
||||||
|
; LD E,L
|
||||||
|
; INC HL
|
||||||
|
; ;
|
||||||
|
; .loop_ch: LD A,(DE)
|
||||||
|
; LDI
|
||||||
|
; LD (DE),A
|
||||||
|
; INC HL
|
||||||
|
; INC DE
|
||||||
|
; DJNZ .loop_ch
|
||||||
|
; ;
|
||||||
|
; POP BC
|
||||||
|
; POP HL
|
||||||
|
; LD A,B
|
||||||
|
; ADD A,B
|
||||||
|
; LD B,A
|
||||||
|
; ;
|
||||||
|
; .print_loop: CALL .no_space
|
||||||
|
; RET Z
|
||||||
|
; LD D,H
|
||||||
|
; LD E,L
|
||||||
|
; PUSH DE
|
||||||
|
; PUSH BC
|
||||||
|
; LD D,' '
|
||||||
|
; CALL LP_PRINT_LINE6
|
||||||
|
; POP BC
|
||||||
|
; POP DE
|
||||||
|
; PUSH HL
|
||||||
|
; AND A
|
||||||
|
; SBC HL,DE
|
||||||
|
; LD A,B
|
||||||
|
; SUB L
|
||||||
|
; LD B,A
|
||||||
|
; JR Z,.exit
|
||||||
|
; LD A,' '
|
||||||
|
; INC B
|
||||||
|
; PUSH BC
|
||||||
|
; CALL PRINT_CHAR
|
||||||
|
; POP BC
|
||||||
|
; POP HL
|
||||||
|
; DJNZ .print_loop
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
; .no_space: LD A,(HL)
|
||||||
|
; CP ' '
|
||||||
|
; RET NZ
|
||||||
|
; INC HL
|
||||||
|
; DJNZ .no_space
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
; .exit: POP HL
|
||||||
|
; RET
|
||||||
|
;=======================================================================
|
||||||
|
; 1 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - ¢ 3 à § èãáâ॥ á⮪
|
||||||
PRINT_STR_BIG_ENDIAN:
|
PRINT_STR_BIG_ENDIAN:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
@ -67,67 +124,11 @@ PRINT_STR_BIG_ENDIAN:
|
|||||||
POP HL
|
POP HL
|
||||||
LD A,B
|
LD A,B
|
||||||
ADD A,B
|
ADD A,B
|
||||||
LD B,A
|
|
||||||
;
|
|
||||||
.print_loop: CALL .no_space
|
|
||||||
RET Z
|
|
||||||
LD D,H
|
|
||||||
LD E,L
|
|
||||||
PUSH DE
|
|
||||||
PUSH BC
|
|
||||||
LD D,' '
|
|
||||||
CALL LP_PRINT_LINE6
|
|
||||||
POP BC
|
|
||||||
POP DE
|
|
||||||
PUSH HL
|
PUSH HL
|
||||||
AND A
|
CALL CONFIGURE_IDE_DRIVES.COPY_IDE_NAME_TO_SYS_PAGE
|
||||||
SBC HL,DE
|
|
||||||
LD A,B
|
|
||||||
SUB L
|
|
||||||
LD B,A
|
|
||||||
JR Z,.exit
|
|
||||||
LD A,' '
|
|
||||||
INC B
|
|
||||||
PUSH BC
|
|
||||||
CALL PRINT_CHAR
|
|
||||||
POP BC
|
|
||||||
POP HL
|
POP HL
|
||||||
DJNZ .print_loop
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
.no_space: LD A,(HL)
|
|
||||||
CP ' '
|
|
||||||
RET NZ
|
|
||||||
INC HL
|
|
||||||
DJNZ .no_space
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
.exit: POP HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
ELSEIF BIG_ENDIAN_STR_PRINT = 1
|
|
||||||
PRINT_STR_BIG_ENDIAN:
|
|
||||||
PUSH HL
|
|
||||||
PUSH BC
|
|
||||||
LD D,H
|
|
||||||
LD E,L
|
|
||||||
INC HL
|
|
||||||
;
|
|
||||||
.loop_ch: LD A,(DE)
|
|
||||||
LDI
|
|
||||||
LD (DE),A
|
|
||||||
INC HL
|
|
||||||
INC DE
|
|
||||||
DJNZ .loop_ch
|
|
||||||
;
|
|
||||||
POP BC
|
|
||||||
POP HL
|
|
||||||
LD A,B
|
|
||||||
ADD A,B
|
|
||||||
LD B,A
|
|
||||||
JP LP_PRINT_LINE2
|
JP LP_PRINT_LINE2
|
||||||
ENDIF
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PRINTA: LD E,A
|
PRINTA: LD E,A
|
||||||
|
|||||||
@ -29,8 +29,8 @@ RELEASEhotFIX EQU 0 ;
|
|||||||
DEFINE UnusedSettingsFeatures 0 ;
|
DEFINE UnusedSettingsFeatures 0 ;
|
||||||
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
|
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
|
||||||
DEFINE TMP_CELLS_INIT 0 ; ¨¨â ¯®à⮢ 4 ¨ 5 ¤«ï ¢à¥¬¥®£® åà ¥¨ï § 票© ¢ âà-¤®á
|
DEFINE TMP_CELLS_INIT 0 ; ¨¨â ¯®à⮢ 4 ¨ 5 ¤«ï ¢à¥¬¥®£® åà ¥¨ï § 票© ¢ âà-¤®á
|
||||||
DEFINE BIG_ENDIAN_STR_PRINT 1 ;
|
;DEFINE BIG_ENDIAN_STR_PRINT 1 ;
|
||||||
; ; 0 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¨ ¯à®¯ã᪮¬ ¤¢®©ëå ¯à®¡¥«®¢ - ¢ 1,5 à § èãáâ॥ á⮪ ;!FIXIT ¥ § â¨à ¥â ¯à¥¤ë¤ãéãî áâபã
|
; ; 0 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¨ ¯à®¯ã᪮¬ ¤¢®©ëå ¯à®¡¥«®¢ - ¢ 1,5 à § èãáâ॥ á⮪ ¥ § â¨à ¥â ¯à¥¤ë¤ãéãî áâபã
|
||||||
; ; 1 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - ¢ 3 à § èãáâ॥ á⮪
|
; ; 1 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - ¢ 3 à § èãáâ॥ á⮪
|
||||||
; ; 2 - ¯¥ç âì ¡¥§ ¯®àç¨ ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - á⮪
|
; ; 2 - ¯¥ç âì ¡¥§ ¯®àç¨ ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - á⮪
|
||||||
;===============================================================;
|
;===============================================================;
|
||||||
Loading…
Reference in New Issue
Block a user