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
|
||||
;--------------
|
||||
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_2 ;#52 - Long read
|
||||
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_2
|
||||
DB high FN_5x_Parser_3
|
||||
@ -523,7 +521,7 @@ TAB_5xFNS:
|
||||
|
||||
;-------------------------------------------------------------[ ATA #8 ]
|
||||
;
|
||||
DB low FN_RESERVED_5x
|
||||
DB low ATA_5x_GET_DRIVE_NAME
|
||||
DB low ATA_5x_RESET
|
||||
DB low ATA_5x_LONG_READ
|
||||
DB low ATA_5x_LONG_WRITE
|
||||
@ -548,7 +546,7 @@ TAB_5xFNS:
|
||||
|
||||
;-----------------------------------------------------------[ ATAPI #C ]
|
||||
;
|
||||
DB low FN_RESERVED_5x
|
||||
DB low ATAPI_5x_GET_DRIVE_NAME
|
||||
DB low ATAPI_5x_RESET
|
||||
DB low ATAPI_5x_LONG_READ
|
||||
DB low ATAPI_5x_LONG_WRITE ; [ ] new
|
||||
@ -626,7 +624,7 @@ TAB_5xFNS:
|
||||
|
||||
;-------------------------------------------------------------[ ATA #8 ]
|
||||
;
|
||||
DB high FN_RESERVED_5x
|
||||
DB high ATA_5x_GET_DRIVE_NAME
|
||||
DB high ATA_5x_RESET
|
||||
DB high ATA_5x_LONG_READ
|
||||
DB high ATA_5x_LONG_WRITE
|
||||
@ -651,7 +649,7 @@ TAB_5xFNS:
|
||||
|
||||
;-----------------------------------------------------------[ ATAPI #C ]
|
||||
;
|
||||
DB high FN_RESERVED_5x
|
||||
DB high ATAPI_5x_GET_DRIVE_NAME
|
||||
DB high ATAPI_5x_RESET
|
||||
DB high ATAPI_5x_LONG_READ
|
||||
DB high ATAPI_5x_LONG_WRITE ; LONG_WRITE ; [ ] new
|
||||
@ -702,7 +700,8 @@ EXP_FNS_RST18: PUSH HL
|
||||
; FN_RESERVED_5x
|
||||
; FN_RESERVED_5x
|
||||
; DRV_LIST
|
||||
|
||||
FN_5x_Parser_0: LD C,#00
|
||||
JR FN_5x_Parser
|
||||
FN_5x_Parser_1: LD C,#01 ; ATA_5x_RESET
|
||||
JR FN_5x_Parser
|
||||
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"
|
||||
|
||||
;[]================================================================[#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]
|
||||
ATAPI_5x_RESET: LD C,IDE.Device.ATAPI
|
||||
CALL SELECT_DRIVE
|
||||
|
||||
@ -73,9 +73,27 @@ IDE3 EQU #C1D8
|
||||
; DB #FF ;SECTOR PER CYLINDER HIGH ;06
|
||||
; DB #FF ;RESERVED ;07
|
||||
|
||||
|
||||
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]
|
||||
;Function: Reset drive
|
||||
ATA_5x_RESET: ; !FIXIT ¥ à¥á¥â¨âáï?
|
||||
|
||||
@ -3,37 +3,39 @@
|
||||
; ‚室: A - ®¬¥à ãáâனá⢠, C - DriveType
|
||||
; ‚ë室: A - MediaParameters, C - DriveType
|
||||
; ¥ ¯®àâ¨â L
|
||||
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 NZ,.error
|
||||
;
|
||||
.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
|
||||
SELECT_DRIVE: CALL .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
|
||||
; JR NZ,.error
|
||||
; ;
|
||||
; .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
|
||||
;
|
||||
EXX
|
||||
SCF
|
||||
@ -66,7 +68,46 @@ SELECT_DRIVE: AND #0F
|
||||
;
|
||||
.error: LD A,BIOS.Error.BadNumber
|
||||
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
|
||||
; A - Disk
|
||||
|
||||
@ -92,6 +92,11 @@ IDE3 EQU #C1D8
|
||||
|
||||
MODULE CONFIGURE_IDE_DRIVES
|
||||
|
||||
IDE_NAME_MARKER:
|
||||
.None EQU #00
|
||||
.NoInfo EQU #FF
|
||||
.Unknown EQU #FE
|
||||
|
||||
MODULE PAUSES
|
||||
HALT:
|
||||
.Time_2s EQU 100
|
||||
@ -153,11 +158,20 @@ START: ; reset all
|
||||
OUT (SLOT3),A
|
||||
LD HL,IDE.INIT_TBL_IDE0
|
||||
LD BC,256*(IDE.HDD_INIT_TABLE * 4) + #FF ;R02
|
||||
;CLEAR HDD VARIABLE
|
||||
;CLEAR HDD VARIABLE
|
||||
.FILLIDE:
|
||||
LD (HL),C
|
||||
INC HL
|
||||
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'
|
||||
OUT (SLOT3),A
|
||||
|
||||
@ -207,6 +221,7 @@ AUTODETECT: LD A,L ;DETECT MESSAGE
|
||||
INC A
|
||||
LD A,msgStrings.ideNone
|
||||
JR Z,.NOSKIPKEY
|
||||
;
|
||||
LD A,msgStrings.ideSkiped
|
||||
.NOSKIPKEY: CALL C,POSTMSG
|
||||
CALL ScreenPOS.CRLF
|
||||
@ -598,22 +613,25 @@ IDE_CMD:
|
||||
/////////////////////////////////////////////////////////////////////[v]
|
||||
PRINT_IDE_MODEL:
|
||||
LD HL,IDENTIFY_DEVICE_BUFFER.ModelNumber
|
||||
LD B,+(_ATA_IDENTIFY_DEVICE_DATA.MaximumBlockTransfer - _ATA_IDENTIFY_DEVICE_DATA.ModelNumber)/2
|
||||
LD A,(HL)
|
||||
OR A
|
||||
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
|
||||
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
|
||||
AND A
|
||||
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]
|
||||
; DisableWriteCache:
|
||||
; LD BC,IDE.Write.Features
|
||||
|
||||
@ -17,38 +17,95 @@ ScreenPOS:
|
||||
;;
|
||||
|
||||
|
||||
|
||||
IF BIG_ENDIAN_STR_PRINT = 2
|
||||
PRINT_STR_BIG_ENDIAN:
|
||||
LD A,(HL)
|
||||
CP ' '
|
||||
JR NZ,.PRINTDW
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
DEC HL
|
||||
CP ' '
|
||||
JR NZ,.PRINTDW
|
||||
INC HL
|
||||
INC HL
|
||||
.no_space: DJNZ DWPRINT
|
||||
RET
|
||||
;
|
||||
.PRINTDW: PUSH BC
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CALL PRINT_CHAR
|
||||
LD A,E
|
||||
CALL PRINT_CHAR
|
||||
POP BC
|
||||
LD A,' '
|
||||
CP E
|
||||
JR Z,.no_space
|
||||
DJNZ .PRINTDW
|
||||
RET
|
||||
|
||||
ELSEIF BIG_ENDIAN_STR_PRINT = 0
|
||||
;=======================================================================
|
||||
; 2 - ¯¥ç âì ¡¥§ ¯®àç¨ ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - á⮪
|
||||
; PRINT_STR_BIG_ENDIAN:
|
||||
; LD A,(HL)
|
||||
; CP ' '
|
||||
; JR NZ,.PRINTDW
|
||||
; INC HL
|
||||
; LD A,(HL)
|
||||
; DEC HL
|
||||
; CP ' '
|
||||
; JR NZ,.PRINTDW
|
||||
; INC HL
|
||||
; INC HL
|
||||
; .no_space: DJNZ DWPRINT
|
||||
; RET
|
||||
; ;
|
||||
; .PRINTDW: PUSH BC
|
||||
; LD E,(HL)
|
||||
; INC HL
|
||||
; LD A,(HL)
|
||||
; INC HL
|
||||
; CALL PRINT_CHAR
|
||||
; LD A,E
|
||||
; CALL PRINT_CHAR
|
||||
; POP BC
|
||||
; LD A,' '
|
||||
; CP E
|
||||
; JR Z,.no_space
|
||||
; DJNZ .PRINTDW
|
||||
; RET
|
||||
;=======================================================================
|
||||
; 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:
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
@ -67,67 +124,11 @@ PRINT_STR_BIG_ENDIAN:
|
||||
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
|
||||
CALL CONFIGURE_IDE_DRIVES.COPY_IDE_NAME_TO_SYS_PAGE
|
||||
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
|
||||
ENDIF
|
||||
|
||||
;=======================================================================
|
||||
|
||||
|
||||
PRINTA: LD E,A
|
||||
|
||||
@ -29,8 +29,8 @@ RELEASEhotFIX EQU 0 ;
|
||||
DEFINE UnusedSettingsFeatures 0 ;
|
||||
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
|
||||
DEFINE TMP_CELLS_INIT 0 ; ¨¨â ¯®à⮢ 4 ¨ 5 ¤«ï ¢à¥¬¥®£® åà ¥¨ï § 票© ¢ âà-¤®á
|
||||
DEFINE BIG_ENDIAN_STR_PRINT 1 ;
|
||||
; ; 0 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¨ ¯à®¯ã᪮¬ ¤¢®©ëå ¯à®¡¥«®¢ - ¢ 1,5 à § èãáâ॥ á⮪ ;!FIXIT ¥ § â¨à ¥â ¯à¥¤ë¤ãéãî áâபã
|
||||
;DEFINE BIG_ENDIAN_STR_PRINT 1 ;
|
||||
; ; 0 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¨ ¯à®¯ã᪮¬ ¤¢®©ëå ¯à®¡¥«®¢ - ¢ 1,5 à § èãáâ॥ á⮪ ¥ § â¨à ¥â ¯à¥¤ë¤ãéãî áâபã
|
||||
; ; 1 - ¯¥ç âì á ¯®à祩 ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - ¢ 3 à § èãáâ॥ á⮪
|
||||
; ; 2 - ¯¥ç âì ¡¥§ ¯®àç¨ ¡ãä¥à ¡¥§ ¯à®¯ã᪠¤¢®©ëå ¯à®¡¥«®¢ - á⮪
|
||||
;===============================================================;
|
||||
Loading…
Reference in New Issue
Block a user