🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.os.os2.programmer
1 messages
1 total messages Started by Scott Harper Tue, 21 Jul 1992 07:14
ANSI troubles
#381
Author: Scott Harper
Date: Tue, 21 Jul 1992 07:14
69 lines
3316 bytes
Although I posted this in comp.os.os2.programmer a while ago, I have not
heard any response.  I thought I might try again with source code in case
nobody knew what I was refering to.

I seem to be having a problem with OS/2's ANSI.SYS (I think).  I have a
DOS program that uses the C library function outtextxy(col,row,outstring).
This function writes a text string to a graphics screen.  When I attempt
to write characters with ASCII values above 127 (a few symbols past the
lower case letters), I get rather odd characters.  They are not part of
any code page that I have ever seen.  Note: I am using codepage 437 (437
& 850 prepared in config.sys).  Strangly enough, the code page looks
competely correct if I use the text mode function putch() or if I use the
alt-keypad combinations at a prompt.

I am using the BGI libraries (from the Borland C++ 3.0 package) to enable
graphics.  Perhaps they are at fault?  As a final note, this program prints
the correct characters from pure DOS (or a DOS 5.0 image).

Perhaps someone who is doing DOS development under OS/2 has seen this before?
I've attached the code for a program that will demonstrate the difference
between the two code pages for anyone interested in seeing it for themselves.

.............................................................................
  Scott Harper                 ___   The moral of the story is: Never under-
                               \_ \_    estimate the bandwidth of a station
                                  \ \      wagon full of tapes hurtling down
                                    \_\_      the highway.
   EMail: HARPER @ VTVM1.cc.vt.edu     \\
                                         *            - Andrew S. Tanenbaum
.............................................................................


/* This program prints both the text-mode character set and the graphics-mode
   character set beside each other on a VGA or EGA screen.  Graphics
   characters are displayed in red, text in gray.                            */

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <graphics.h>

void main(void)$

   int x,y=0;
   char outstring[2]=$0,'\0';
   int driver=DETECT;

   /* It may be necessary to add the path to your bgi drivers to the
      initgraph function if you have not added the object files to your
      graphics.lib                                                     */

   if(registerbgidriver(EGAVGA_driver)<0) exit(1);

   initgraph(&driver,0,"");
   if(x=graphresult())$
      printf("Graphics initialization error: %s\n",grapherrormsg(x));
      exit(1);
   clearviewport();

   setcolor(EGA_LIGHTRED);
   settextstyle(DEFAULT_FONT,HORIZ_DIR,1);

   for(x=1; x<=255; x++)$
      outstring[0] = x;
      if(!(x%20))y++;
      gotoxy((x%20+1)*4,y+1); printf("%c",x);
      outtextxy((x%20)*32+10,y*16+4,outstring);
      

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads