delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/05/09/19:44:00

Message-Id: <199605092338.TAA14382@eelab.newpaltz.edu>
Comments: Authenticated sender is <fortin44 AT eelab DOT newpaltz DOT edu>
From: "John Fortin" <fortin44 AT eelab DOT newpaltz DOT edu>
To: djgpp AT delorie DOT com
Date: Thu, 9 May 1996 18:35:14 +0000
Subject: something strange with printf

This one is strange.

I'm learning how to use the svga card on my box.  I wrote the 
attached program to get the characteristics of the card.  This is a 
standard VESA 1.2 call (0x00).

I also wanted to see the location of the transfer buffer __tb.  I 
wanted to compare what I saw after with what was there (using debug)

The strange part is with this line in svga.c :

 printf("TB Address %lx %lx\n",__tb, (__tb/16)&0xffff);

If it is commented out, everything seems to work fine with the 
following output:

	VGAInfoBlock size 256
	VESASignature VESA
	VESA Version 1.258
	VESA Capabilities 0
	# of 64k Blocks 8
	OEMString Address: 4b860 c0001d11
	SEGMENT c000 OFFSET 1d11
	Cirrus Logic GD-54xx VGA
	VideoModePointer Address: 4b65c 24110014
	SEGMENT 2411 OFFSET 14

If I try to use the line I get the following:

	TB Address 24110 2411	
	VGAInfoBlock size 256
	VESASignature TB A
	VESA Version 100.25700
	VESA Capabilities 0
	# of 64k Blocks 12596	
	OEMString Address: 4b860 73736572
	SEGMENT 7373 OFFSET 6572

	VideoModePointer Address: 4b65c 32203031
	SEGMENT 3220 OFFSET 3031

The even stranger part, to me anyway, is that if I send the output to 
a file instead of the screen, OR if I send it to con:, the output is 
correct. 

Any ideas?? I hope it is something I am doing.

TIA


John E. Fortin
fortin44 AT eelab DOT newpaltz DOT edu

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019