Textcolor and Textbackground
-
Guest
Textcolor and Textbackground
i want to emulate the functions of textcolor and textbackground functions found in the borland conio files.
so far i have created a series of functions dat work, but cant seem to get it to work right when i add blink to the functions. i am testing under bochs.
the code is as follows:
denary to hex
int den2hex (int denary)
{
int lookuptable [] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,
0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,
0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,
0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,
0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x61,0x63,0x64,0x65,0x66,
0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,
0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,
0x9D,0x9E,0x9F,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,
0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xC0,
0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,
0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,
0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
int hex = 0;
if ((denary >= 0) && (denary <= 255)) {
hex = lookuptable [denary];
} else {
hex = lookuptable [8];
}
printf ("hex: %d\n", hex);
return hex;
}
Text background
void textbackground (int color)
{
int tmpcolor = 0;
switch (color) {
case BLACK: bgcolor = BASE * color;
break;
case BLUE: bgcolor = BASE * color;
break;
case GREEN: bgcolor = BASE * color;
break;
case CYAN: bgcolor = BASE * color;
break;
case RED: bgcolor = BASE * color;
break;
case MAGENTA: bgcolor = BASE * color;
break;
case BROWN: bgcolor = BASE * color;
break;
case LIGHTGRAY: bgcolor = BASE * color;
break;
default: bgcolor = 0;
}
tmpcolor = txtcolor + bgcolor;
printf ("tmpcolor: %d\n", tmpcolor);
textattrib = den2hex (tmpcolor);
printf ("color: %d\n", color);
printf ("textattrib: %d\n", textattrib);
}
Text color
void textcolor (int color)
{
int tmpcolor = 0;
txtcolor = color;
tmpcolor = txtcolor + bgcolor;
printf ("tmpcolor: %d\n", tmpcolor);
textattrib = den2hex (tmpcolor);
printf ("color: %d\n", color);
printf ("textattrib: %d\n", textattrib);
}
this seems to work for all colors which dont involve blink and when i add blink it dont seem to work correctly, beacuse it doesnt blink and the colors dont come out right.
if ne body cud help?
thnx
so far i have created a series of functions dat work, but cant seem to get it to work right when i add blink to the functions. i am testing under bochs.
the code is as follows:
denary to hex
int den2hex (int denary)
{
int lookuptable [] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,
0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,
0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,
0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,
0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x61,0x63,0x64,0x65,0x66,
0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,
0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,
0x9D,0x9E,0x9F,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,
0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xC0,
0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,
0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,
0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
int hex = 0;
if ((denary >= 0) && (denary <= 255)) {
hex = lookuptable [denary];
} else {
hex = lookuptable [8];
}
printf ("hex: %d\n", hex);
return hex;
}
Text background
void textbackground (int color)
{
int tmpcolor = 0;
switch (color) {
case BLACK: bgcolor = BASE * color;
break;
case BLUE: bgcolor = BASE * color;
break;
case GREEN: bgcolor = BASE * color;
break;
case CYAN: bgcolor = BASE * color;
break;
case RED: bgcolor = BASE * color;
break;
case MAGENTA: bgcolor = BASE * color;
break;
case BROWN: bgcolor = BASE * color;
break;
case LIGHTGRAY: bgcolor = BASE * color;
break;
default: bgcolor = 0;
}
tmpcolor = txtcolor + bgcolor;
printf ("tmpcolor: %d\n", tmpcolor);
textattrib = den2hex (tmpcolor);
printf ("color: %d\n", color);
printf ("textattrib: %d\n", textattrib);
}
Text color
void textcolor (int color)
{
int tmpcolor = 0;
txtcolor = color;
tmpcolor = txtcolor + bgcolor;
printf ("tmpcolor: %d\n", tmpcolor);
textattrib = den2hex (tmpcolor);
printf ("color: %d\n", color);
printf ("textattrib: %d\n", textattrib);
}
this seems to work for all colors which dont involve blink and when i add blink it dont seem to work correctly, beacuse it doesnt blink and the colors dont come out right.
if ne body cud help?
thnx
-
nullify
Re:Textcolor and Textbackground
To add blink, perform a bitwise OR operation on the text attribute with 80h...
Also, I'm not too sure if Bochs supports blinking text. I don't have access to a machine to verify that right now, though.
Code: Select all
textattrib = den2hex (tmpcolor) | 0x80;
- Pype.Clicker
- Member

- Posts: 5964
- Joined: Wed Oct 18, 2006 2:31 am
- Location: In a galaxy, far, far away
- Contact:
Re:Textcolor and Textbackground
what is that huge look up table for ? it roughly looks like
lookup[x]==x, which seems pretty useless to my senses.
... or did i just missed something as usual ?
lookup[x]==x, which seems pretty useless to my senses.
... or did i just missed something as usual ?
-
Guest
Re:Textcolor and Textbackground
the lookup table is used to find the hex value of a denary number.
that is the only way i no how to do it and dont no ne oder method.
if u no a easier and shorter method then care 2 share?
that is the only way i no how to do it and dont no ne oder method.
if u no a easier and shorter method then care 2 share?
-
jrfritz
Re:Textcolor and Textbackground
Are you trying to convert hex to decimal?
If so...there's a better way...
If so...there's a better way...
Re:Textcolor and Textbackground
all the table is doing is saying X = X., so really, its not doing anything at all!
-- Stu --
-
jrfritz
Re:Textcolor and Textbackground
I wonder what this person is really trying to do....(This is Tom Fritz...just to let everyone know
)
-
Tim
Re:Textcolor and Textbackground
Wow... what an utterly pointless function. All that, and you could sum it up with:
Anyway, WTF is 'denary'? Surely 'decimal'?
Code: Select all
int den2hex(int den)
{
return den;
}-
Guest
Re:Textcolor and Textbackground
its an array which contains all the hex values from 0 to 255, and it recuves a decimal value as an arguement. it uses dis to look at the array den in the corresponding array element will be de hex value for the decimal number. this hex value is den returned.
E.g
den2hex (5)
would return the hex value
0x05, which is 5 in hex.
E.g
den2hex (5)
would return the hex value
0x05, which is 5 in hex.
-
jrfritz
Re:Textcolor and Textbackground
Thats not a good way....I have some code to do the correct way....what happends when you put in 500 with your code? The OS crashes!
-
Guest
Re:Textcolor and Textbackground
well not exacatly, becuase b4 readin the array there is an if statement that cheks whether the decimal number is between the given ranage and if its not it will give the default value:
E.g
the follwoing statement takes care of thet:
if ((denary >= 0) && (denary <= 255)) {
hex = lookuptable [denary];
} else {
hex = lookuptable [8];
}
E.g
the follwoing statement takes care of thet:
if ((denary >= 0) && (denary <= 255)) {
hex = lookuptable [denary];
} else {
hex = lookuptable [8];
}
-
Guest
Re:Textcolor and Textbackground
this is the only way i no how to convert decimal to hex, dont no ne other way.
if u no of a way plz tell me?
thnx
if u no of a way plz tell me?
thnx
-
jrfritz
Re:Textcolor and Textbackground
I can't post my code here since it's too big, but in FritzOS's fstdio.h file there is a doprintf,printf_help and the real printf function....you can print hex with those like this:
printf("0x%x",0x13"); and it'll print 0x13 or 0xFF or 0xFFFF or whatever you want.
printf("0x%x",0x13"); and it'll print 0x13 or 0xFF or 0xFFFF or whatever you want.
-
Guest
Re:Textcolor and Textbackground
but i dont want 2 print the values i want to store the hex value in a variable and use it later.
the printf will just print it, which i dont want to happen.
the printf will just print it, which i dont want to happen.