<< Back

cesky: , English:

TEXT

Text strings

Text strings TEXT arose as an attempt of uniform and easy use of texts in both system and applications. Part of the text is the length of the text string (word). Despite the original intention, the text strings are not consistently used in the system, because they require reallocation of memory, which is time and memory consuming and therefore their use is left rather to the application.

Texts in Litos8 system are encoded as 8-bit characters either in IBM 437 code or in KEYBCS2 (=Kamenickych) code, according to the language choosen by the Scroll Lock key. Only functions for converting lower and upper case letters using national character tables depend on the selected language.


Misc functions

CharHexToBin - convert ASCII HEX character to a number

INPUT:
AL = HEX character ("0" to "9", "A" to "F" or "a" to "f")

OUTPUT:
AL = number 0 to 15 (if NC) or AL not changed (if CY)
CY = invalid HEX character (AL not changed)


CharDecToBin - convert ASCII decimal character to a number

INPUT:
AL = ASCII decimal character ("0" to "9")

OUTPUT:
AL = number 0 to 9 (if NC) or AL not changed (if CY)
CY = invalid decimal character (AL not changed)


IsDigit - check digit character

INPUT:
AL = character

OUTPUT:
CY = not digit character


IsAlpha - check alpha character

INPUT:
AL = character

OUTPUT: CY = not alpha character


UpperCase - convert to uppercase letter

INPUT:
AL = character

OUTPUT:
AL = uppercase letter (not national characters)
CY = not converted (not lowercase letter)


LowerCase - convert to lowercase letter

INPUT:
AL = character

OUTPUT:
AL = lowercase letter (not national characters)
CY = not converted (not lowercase letter)


UpperLowerCase - convert uppercase/lowercase letter

INPUT:
AL = character

OUTPUT:
AL = changed letter (not national characters)
CY = not converted (not letter)


UpperCaseNat - convert to uppercase letter with national

INPUT:
AL = character

OUTPUT:
AL = uppercase letter
CY = not converted (not letter)


LowerCaseNat - convert to lowercase letter with national

INPUT:
AL = character

OUTPUT:
AL = lowercase letter
CY = not converted (not letter)


UpperLowerCaseNat - convert uppercase/lowercase letter with national

INPUT:
AL = character

OUTPUT:
AL = changed letter
CY = not converted (not letter)


Text managing

TextZLength - get length of ASCIIZ string

INPUT:
SI = pointer to ASCII string (it can be NULL)

OUTPUT:
AX = length of ASCII string (0 if SI=NULL)


TextLength - get length of text string

INPUT:
BX = pointer to
TEXT structure (it can be NULL)

OUTPUT:
AX = length of text string (0 if BX=NULL)


TextCheckInx - check if character index is valid

INPUT:
BX = pointer to
TEXT
SI = character index

OUTPUT:
CY = index is not valid (it is out of valid range)


TextDup - duplicate text string

INPUT:
BX = pointer to
TEXT structure (may be CTEXT)

OUTPUT:
AX = new
TEXT structure or NULL on error
CY = memory error (AX = NULL)


TextFree - delete text string

INPUT:
BX = pointer to
TEXT structure

OUTPUT:
BX = old address or NULL on error
CY = invalid pointer (BX = NULL)


TextResize - resize text string

INPUT:
BX = pointer to
TEXT structure
CX = required new length of text string

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


New text string

TextNew - allocate new text string

INPUT:
CX = length of text string

OUTPUT:
AX = pointer to
TEXT structure or NULL on error
CY = memory error (AX = NULL)


TextNewEmpty - allocate new empty text string

OUTPUT:
AX = pointer to
TEXT structure or NULL on error
CY = memory error (AX = NULL)


TextNewZ - create text string from ASCIIZ text

INPUT:
SI = pointer to ASCIIZ text (it can be NULL)

OUTPUT:
AX = new
TEXT structure or NULL on error
CY = memory error (AX = NULL)


TextNewBuf - create text string from buffer

INPUT:
CX = length of text string
SI = pointer to source text

OUTPUT: AX = pointer to TEXT structure or NULL on error
CY = memory error (AX = NULL)


Get/set character

TextGetChar - get character from text

INPUT:
AL = default character, if index is out of range
BX = pointer to
TEXT structure
SI = character index (0...)

OUTPUT:
AL = character from the text (or default character if CY)
CY = error, index is out of range (AL not changed)


TextSetChar - set character in text

INPUT:
AL = character
BX = pointer to
TEXT structure
SI = character index (0...) (it may be out of range)

OUTPUT:
CY = error, index is out of range (text not changed)


TextGetFirst - get first character from text

INPUT:
AL = default character, if no text
BX = pointer to
TEXT structure

OUTPUT:
AL = character from the text (or default character if CY)
CY = error, no text (AL not changed)


TextGetLast - get last character from text

INPUT:
AL = default character, if no text
BX = pointer to
TEXT structure

OUTPUT:
AL = character from the text (or default character if CY)
CY = error, no text (AL not changed)


Add text/character

TextAddText - add text string to end of text

INPUT:
AX = pointer to second
TEXT structure
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddBuf - add text string from buffer to end of text

INPUT:
BX = pointer to
TEXT structure
CX = length of second text
SI = pointer to second text

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddTextZ - add ASCIIZ text to end of text

INPUT:
BX = pointer to
TEXT structure
SI = pointer to second ASCIIZ text (it can be NULL)

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddChar - add character to end of text

INPUT:
AL = character
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddSpc - add space character to end of text

INPUT:
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddMinus - add minus character to end of text

INPUT:
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddNewLine - add new line CR/LF to end of text

INPUT:
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddDate - add date to end of text

INPUT:
AH =
date format (DATEFORM_EURO,...)
BX = pointer to
TEXT structure
DL = day
DH = month
SI = year

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error or invalid date format


TextAddTime - add time to end of text

INPUT:
BX = pointer to
TEXT structure
CL = minute
CH = hour
DH = second

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


TextAddDiskSize - add disk size

INPUT:
DX:AX = number of 512 B sectors
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


TextAddPathSep - add path separator

INPUT:
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


Number conversion

TextAddDig - add one digit character to end of text

INPUT:
AL = number (in range 0 to 9)
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAdd2Dig - add two digit characters to end of text

INPUT:
AL = number (in range 0 to 99)
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAdd2DigSpc - add two digit characters with space to end of text

INPUT:
AL = number (in range 0 to 99)
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddByte - add unsigned byte number to end of text

INPUT:
AL = unsigned data byte
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddWord - add unsigned word number to end of text

INPUT:
AX = unsigned data word
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddDWord - add unsigned dword number to end of text

INPUT:
DX:AX = unsigned data dword
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddSByte - add signed byte number to end of text

INPUT:
AL = signed data byte
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddSWord - add signed word number to end of text

INPUT:
AX = signed data word
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddSDWord - add signed dword number to end of text

INPUT:
DX:AX = signed data dword
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddHByte - add HEX byte to end of text

INPUT:
AL = data byte
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddHWord - add HEX word to end of text

INPUT:
AX = data word
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


TextAddHDWord - add HEX dword to end of text

INPUT:
DX:AX = data dword
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


TextAddBByte - add BIN byte to end of text

INPUT:
AL = data byte
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error (text not changed)


TextAddBWord - add BIN word to end of text

INPUT:
AX = data word
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


TextAddBDWord - add BIN dword to end of text

INPUT:
DX:AX = data dword
BX = pointer to
TEXT structure

OUTPUT:
BX = old or new pointer to
TEXT structure
CY = memory error


Delete text

TextDel - delete part of text

INPUT:
BX = pointer to
TEXT structure
CX = length of text to delete
SI = offset of text to delete

OUTPUT:
BX = old or new pointer to
TEXT structure

NOTES: It limits length and offset to a valid range.


TextDelStart - delete start of text

INPUT:
BX = pointer to
TEXT structure
CX = length of text to delete

OUTPUT:
BX = old or new pointer to
TEXT structure

NOTES: It limits length to a valid range.


TextDelFrom - delete rest of text from given position

INPUT:
BX = pointer to
TEXT structure
SI = offset of text to delete

OUTPUT:
BX = old or new pointer to
TEXT structure

NOTES: It limits offset to a valid range.


TextDelEnd - delete end of text

INPUT:
BX = pointer to
TEXT structure
CX = length of text to delete

OUTPUT:
BX = old or new pointer to
TEXT structure

NOTES: It limits length to a valid range.


TextDelChar - delete one character from text

INPUT:
BX = pointer to
TEXT structure
SI = index of character to delete

OUTPUT:
BX = old or new pointer to
TEXT structure

NOTES: It checks validity of character position.


TextDelPathSep - delete end path separator (except root)

INPUT:
BX = pointer to
TEXT structure


Extract text

TextLeft - get left part of text

INPUT:
BX = pointer to
TEXT structure
CX = length of left part of text

OUTPUT:
AX = new
TEXT structure or NULL on error
CY = memory error (AX = NULL)

NOTES: It limits length to a valid range.


TextRight - get right part of text

INPUT:
BX = pointer to
TEXT structure
CX = length of right part of text

OUTPUT:
AX = new
TEXT structure or NULL on error
CY = memory error (AX = NULL)

NOTES: It limits length to a valid range.


TextFrom - get text from given position

INPUT:
BX = pointer to
TEXT structure
SI = start position of right part

OUTPUT:
AX = new
TEXT structure or NULL on error
CY = memory error (AX = NULL)

NOTES: It limits position to a valid range.


TextMid - get middle part of text

INPUT:
BX = pointer to
TEXT structure
CX = length of part of text
SI = start position of part of text

OUTPUT:
AX = new
TEXT structure or NULL on error
CY = memory error (AX = NULL)

NOTES: It limits length and position to a valid range.


Conversions

TextUpper - convert text to uppercase letters (only a..z are affected)

INPUT:
BX = pointer to
TEXT structure

NOTES: It does not convert national characters.


TextLower - convert text to lowercase letters (only A..Z are affected)

INPUT:
BX = pointer to
TEXT structure

NOTES: It does not convert national characters.


TextUpLow - change uppercase/lowercase letters (only a..z, A..Z are affected)

INPUT:
BX = pointer to
TEXT structure

NOTES: It does not convert national characters. It changes lowercase letters to uppercase and contrariwise.


TextUpperNat - convert text to uppercase letters with national chars

INPUT:
BX = pointer to
TEXT structure


TextLowerNat - convert text to lowercase letters with national chars

INPUT:
BX = pointer to
TEXT structure


TextUpLowNat - change uppercase/lowercase letters with national chars

INPUT:
BX = pointer to
TEXT structure

NOTES: It changes lowercase letters to uppercase and contrariwise,


TextCapital - capitalize words (only a..z, A..Z are affected)

INPUT:
BX = pointer to
TEXT structure

NOTES: It does not convert national characters. It changes first letter of words to uppercase, other lowercase.


Compare text

TextEqu - compare text strings to equality

INPUT:
AX = pointer to second
TEXT structure
BX = pointer to first
TEXT structure

OUTPUT:
CY = strings are not equal

NOTES: Comparison is case sensitive.


TextComp - compare text strings alphabeticaly

INPUT:
AX = pointer to second
TEXT structure
BX = pointer to first
TEXT structure

OUTPUT:
AX = first string is 1:greater (later), -1:smaller, 0:equal.
flags SF,ZF contains result (as "or ax,ax")

NOTES: Comparison is not case sensitive (not national characters).


Trim text

TextTrimLeft - trim text from left (delete spaces and control characters from start)

INPUT:
BX = pointer to
TEXT structure


TextTrimRight - trim text from right (delete spaces and control characters from end)

INPUT:
BX = pointer to
TEXT structure


TextTrim - trim text from left and right (delete spaces and control characters)

INPUT:
BX = pointer to
TEXT structure

OUTPUT:
CY = memory error (text may be changed)


TextTrimMid - trim from the text

INPUT:
BX = pointer to
TEXT structure


TextTrimList - trim text using list of forbidden characters

INPUT:
AX = pointer to
TEXT with list of forbidden characters
BX = pointer to
TEXT structure


TextTrimUnlist - trim text using list of allowed characters

INPUT:
AX = pointer to
TEXT with list of allowed characters
BX = pointer to
TEXT structure


Search text

TextFindChFirst - find first character in text

INPUT:
AL = character to find
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindChNext - find next character in text

INPUT:
AL = character to find
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindChLast - find last character in text

INPUT:
AL = character to find
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindChPrev - find previous character in text

INPUT:
AL = character to find
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind2ChFirst - find first two characters in text

INPUT:
AL = first character to find
AH = second character to find
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found characters (or SI = -1 if not found)
CY = characters not found (SI = -1)


TextFind2ChNext - find next two characters in text

INPUT:
AL = first character to find
AH = second character to find
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found characters (or SI = -1 if not found)
CY = characters not found (SI = -1)


TextFind2ChLast - find last two characters in text

INPUT:
AL = first character to find
AH = second character to find
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found characters (or SI = -1 if not found)
CY = characters not found (SI = -1)


TextFind2ChPrev - find previous two characters in text

INPUT:
AL = first character to find
AH = second character to find
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found characters (or SI = -1 if not found)
CY = characters not found (SI = -1)


TextFindFirst - find first string in text

INPUT:
AX = pointer to
TEXT to find
BX = pointer to
TEXT where to search

OUTPUT:
SI = offset of found text (or SI = -1 if text not found)
CY = text not found (SI = -1)


TextFindNext - find next string in text

INPUT:
AX = pointer to
TEXT to find
BX = pointer to
TEXT where to search
SI = start offset

OUTPUT:
SI = offset of found text (or SI = -1 if text not found)
CY = text not found (SI = -1)


TextFindLast - find last string in text

INPUT:
AX = pointer to
TEXT to find
BX = pointer to
TEXT where to search

OUTPUT:
SI = offset of found text (or SI = -1 if text not found)
CY = text not found (SI = -1)


TextFindPrev - find previous string in text

INPUT:
AX = pointer to
TEXT to find
BX = pointer to
TEXT where to search
SI = start offset

OUTPUT:
SI = offset of found text (or SI = -1 if text not found)
CY = text not found (SI = -1)


TextFindListFirst - find first character from list in text

INPUT:
AX = pointer to
TEXT with list of characters
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindListNext - find next character from list in text

INPUT:
AX = pointer to
TEXT with list of characters
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindUnlistFirst - find first character not in list in text

INPUT:
AX = pointer to
TEXT with list of characters to skip
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindUnlistNext - find next character not in list in text

INPUT:
AX = pointer to
TEXT with list of characters to skip
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindListLast - find last character from list in text

INPUT:
AX = pointer to
TEXT with list of characters
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindListPrev - find previous character from list in text

INPUT:
AX = pointer to
TEXT with list of characters
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindUnlistLast - find last character not in list in text

INPUT:
AX = pointer to
TEXT with list of characters to skip
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFindUnlistPrev - find previous character not in list in text

INPUT:
AX = pointer to
TEXT with list of characters to skip
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind2ListFirst - find first character from 2-character list

INPUT:
AL = character 1
AH = character 2
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind2ListNext - find next character from 2-character list

INPUT:
AL = character 1
AH = character 2
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind3ListFirst - find first character from 3-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind3ListNext - find next character from 3-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind4ListFirst - find first character from 4-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
DH = character 4
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind4ListNext - find next character from 4-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
DH = character 4
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind2ListLast - find last character from 2-character list

INPUT:
AL = character 1
AH = character 2
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind2ListPrev - find previous character from 2-character list

INPUT:
AL = character 1
AH = character 2
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind3ListLast - find last character from 3-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind3ListPrev - find previous character from 3-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind4ListLast - find last character from 4-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
DH = character 4
BX = pointer to
TEXT structure

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextFind4ListPrev - find previous character from 4-character list

INPUT:
AL = character 1
AH = character 2
DL = character 3
DH = character 4
BX = pointer to
TEXT structure
SI = start offset

OUTPUT:
SI = offset of found character (or SI = -1 if not found)
CY = character not found (SI = -1)


TextSubstCh - substitute character

INPUT:
AL = old character (to search for)
AH = new character (to substitute with)
BX = pointer to
TEXT structure


Parse text

ParseInt - get unsigned number from text

INPUT:
SI = text
CX = text length

OUTPUT:
DX:AX = number
CY = invalid character (not digit) or overflow


text string TEXT:

TEXT_Length: (word) text length (in bytes)
TEXT_Text: (N bytes) text

CTEXT - macro, constant text string. This is ordinary text string TEXT with text entered as parameter of macro. It usually resides in constant memory. CTEXT should not be freed using TextFree function.


date format:

DATEFORM_EURO: (=0) Europe: day.month.year
DATEFORM_USA: (=1) USA: month/day/year
DATEFORM_JAPAN: (=2) Japan: year-month-day


Source code TEXT.ASM

<< Back