Reputation: 5221
Hey Im trying to understand the INT 10h, 13h (19) that writes a Character String with the BIOS interruption 10 with 13h in ah. I have found the info below about the different flags to put in the the different registers. One thing I still don't get is what is supposed to go in BL, if i simply want to write a string with this function what should be in BL as attribute? Right now it writes out strange blinking symbols that don't make sense. Thank you, beforehand
Writes a string of characters with specified attributes to any display
page.
On entry: AH 13h
AL Subservice (0-3)
BH Display page number
BL Attribute (Subservices 0 and 1)
CX Length of string
DH Row position where string is to be written
DL Column position where string is to be written
ES:BP Pointer to string to write
Returns: None
Notes: This service is available only for XTs dated 1/19/86
and later, ATs, EGAs, and PC Convertibles.
The service has four subservices, as follows:
AL=00h: Assign all characters the attribute in BL;
do not update cursor
AL=01h: Assign all characters the attribute in BL;
update cursor
AL=02h: Use attributes in string; do not update
cursor
AL=03h: Use attributes in string; update cursor
In Subservices 0 and 1, all characters in the string
are written to the screen with the same attribute--
the attribute specified in BL.
In Subservices 2 and 3, the attribute byte for each
character is found in the string itself. The string
itself consists of a character followed by its
attribute, another character followed by its
attribute, and so on. The string is copied directly
to the video buffer as is.
In Subservices 0 and 2, the cursor position is not
updated after the string is written.
In Subservices 1 and 3, the cursor is moved to the
first position following the last character in the
string.
Like Service 0Eh, Service 13h responds appropriately
to ASCII 07h (bell), 08h (backspace), 10h (line
feed), and 0Dh (carriage return). All other
characters are printed.
Upvotes: 5
Views: 6508
Reputation: 54059
With int 10h
, the BL
register is used for the colour attributes.
Unless you're dealing with CGA, where the BL
value is the palette number, the BL
value is a number representing the foreground color (4 bits - low part) and the background color (4 bits - high part).
For instance, if you want a blue (0x01) background with red (0x04) text colour, you'll need to put 0x14
into the BL
register - in binary that is 00010100
.
0001 0100
|_ Background _| |_ Foreground _|
Colours are usually:
- Black 0x00
- Blue 0x01
- Green 0x02
- Cyan 0x03
- Red 0x04
- Magenta 0x05
- Brown 0x06
- LightGray 0x07
- DarkGray 0x08
- LightBlue 0x09
- LightGreen 0x0A
- LightCyan 0x0B
- LightRed 0x0C
- LightMagenta 0x0D
- LightBrown 0x0E
- White 0x0F
Upvotes: 6