Solved

Writing to VDU memory

Posted on 2003-11-08
9
1,200 Views
Last Modified: 2012-06-21
Why my program coding is ineffective to display the characters on the screen using VDU memory?

The coding is given as below:

/* printing the integers stored in an array */
#include<stdio.h>
#include<conio.h>

void main()
{
 int i;
 clrscr();
 char far *video;
 *video=0xB8000000;  /* for VGA/EGA/CGA type */
 int k, array[4]={ 1,2,3,4 };
 for(i=0,k=0; k<=4; i+=2,k++)
 {
  *(video+i)=array[k];  /* adding text */
  *(video+i+1)=65;  /* adding attributes (colors) */
 }
getch();
}

Please help!


0
Comment
Question by:gagandeep_1984
  • 4
  • 3
9 Comments
 
LVL 22

Expert Comment

by:grg99
Comment Utility
This will noly work if you're using a compiler that generates 16-bit code.

What compiler and memory model are you using?

0
 
LVL 4

Expert Comment

by:dhyanesh
Comment Utility
hi

a few errors in your code

/* printing the integers stored in an array */
#include<stdio.h>
#include<conio.h>

void main()
{
int i;
clrscr();
char far *video;
video=0xB8000000;  /* for VGA/EGA/CGA type */        //it should be video and not *video
int k, array[4]={ 1,2,3,4 };
for(i=0,k=0; k<=4; i+=2,k++)
{
 *(video+i)=array[k] + '0';  /* adding text */               //Here ascii value of zero is added to print correctly
 *(video+i+1)=65;  /* adding attributes (colors) */
}
getch();
}

Dhyanesh
0
 
LVL 1

Author Comment

by:gagandeep_1984
Comment Utility
Dear grg99,

 Sorry, but I have a very less knowledge about memory model but the complier, which I  am using is the " Turbo-c 3.0" .

0
 
LVL 4

Expert Comment

by:dhyanesh
Comment Utility
The program modified by me works fine under Turbo-c 3.0
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 1

Author Comment

by:gagandeep_1984
Comment Utility
Dear Dhyanesh,

Sorry for the late response.
According to your coding, I compiled the program but it shows an error " Cannot convert ' unsigned long' to 'char far' " at that point where you were insisting to remove the pointer from the statement ( video=0xB8000000; ) . But when the pointer is used in that statement, the concerned error vanish. After compiling the program, I see nothing on screen . Am I doing something wrong?
Please help!

Gagan...
0
 
LVL 4

Accepted Solution

by:
dhyanesh earned 100 total points
Comment Utility
hi

It works fine on my compiler. You can try to cast type it like

video = (char far *)0xB8000000L;

It has to be video and not *video. This is because *video will store 0xB8000000 at a location pointed by video.

However if 'video' is used then the statement makes 'video' point to location 0xB000000 which is starting location for VDU memory.

Dhyanesh
0
 
LVL 1

Author Comment

by:gagandeep_1984
Comment Utility
Dear Dhyanesh ,
Thank you for your help to make this program a success.
The statement which you have given stated as " video=(char far *) B8000000; "  makes the program works fine.
But why does it gives a background of RED color?  and also the value B0000000 given by you runs under monochorme  video mode but mine is VGA mode.
0
 
LVL 4

Expert Comment

by:dhyanesh
Comment Utility
hi

Sorry about the value B000000 it was a typing mistake. The value should be 0xB8000000.

Also if you want the text in red change following statement.

*(video+i+1)=RED;  /* adding attributes (colors) */

Dhyanesh
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now