HDTenEightyP/NetNews huggingface dataset:
From: chad@quality.ta.ford.com (Chad Childers)
Reply-To: chad@quality.ta.ford.com (Chad Childers)
Subject: Re: C++ vs Quick BASIC : HELP NEEDED
Organization: Technical Affairs, Ford Motor Company
Date: Wed, 9 Sep 92 13:43:37 EDT
X-Received: by usenet.pa.dec.com; id AA19717; Wed, 9 Sep 92 10:45:12 -0700
X-Received: by inet-gw-1.pa.dec.com; id AA22106; Wed, 9 Sep 92 10:45:05 -0700
X-Received: from pms035.pms.ford.com by srlns1.srl.ford.com (4.1/Ford 2.0) via id AA04399; Wed, 9 Sep 92 13:44:57 EDT
X-Received: by pms035.pms.ford.com (4.1/SMI-4.1)id AA01566; Wed, 9 Sep 92 13:43:37 EDT
X-Newsgroups: comp.os.msdos.programmer
X-References: <ardtlong.715415233@adam.adelaide.edu.au>
X-Disclaimer: Not an official spokesman for Ford Tech Affairs
X-Apparently-To: comp.os.msdos.programmer.usenet

>I was wonding what the 'pros and cons' are with Microsoft Quick BASIC and
>C++ (Borland). I need to buy a language I can use to create a flexible
>string based data base (as well as for general programming). I can only buy
>one and would like to know what would best suit my needs.

That's a pretty big question.  I have built a specialized engineering
database in QuickBASIC 4.0b (because 4.5 has some bugs in it that I didn't
want to live with) so I know you can do it.  QuickBASIC is a fast, flexible
development environment - pretty much anything you can think of has been
added in as a language extention: do loops, while statements, case statements,
called subroutines.  C++ would be more impressive on a hacker level, and
if you need object orientation, that's the way to go... and Borland Turbo C++
is good.  Both have friendly developer interface... it really comes down to
your personal preference.  I chose QuickBASIC last time because we see the
development time and prototyping as faster, and we have code already written
that we want to re-use.

Tell me what you come up with.
From: cej@dstos3.dsto.gov.au
Newsgroups: comp.os.msdos.programmer
Subject: Re: using expanded memory
Date: 15 Sep 92 18:42:38 GMT
Organization: Defence Science and Technology Organisation

In article <1992Sep14.173510.21630@coli.uni-sb.de>, chbl@sbustd.rz.uni-sb.de (Christian Blum) writes:
> reznick@acf3.NYU.EDU (Daniel Reznick) writes:
>> I am interested in utilizing XMS and EMS memory in programs being
>> developed with BC++ 3.1, written in assembly and C (the plain vanilla
>> version).  If any one can give me and pointers to good references,
>> otimally with code examples, I would be most appreciative.  Either
>> assember or C would be fine.  Also, does the memory model begin used
>> affect this at all? (im sure it does somewhat..) thanks.
>
> Best source of information is Ralf Brown's famous interrupt list.
> It is available from several BBSs.

You can grab sample code for EMS & XMS functions from the Simtel archives.
On our Simtel CD-Rom there are 4 or 5 C "units" to let you use one or the other
or both. (Also a few for TP)

--
Chris Jones                                  E-mail: cej@dstos3.dsto.gov.au
CSS/CD/ERL                                    Phone: +61 8 259 6758
DSTO Salisbury, South Australia                 Fax: +61 8 259 6328

Disclaimer: The opinions expressed are purely personal and do NOT represent
            the official view of DSTO.

"I'm going to put the shame file in the sludge file!  Or is that the sludge
 file in the shame file? Shame, sludge, sludge, shame, ...
 That's life, get nicked.."   Derrin Hunch, Fast Forward
From: un040337@wvnvms.wvnet.edu
Newsgroups: comp.os.msdos.programmer
Subject: Error in Win3.1 GDI.EXE ?? Help!
Date: 8 Sep 92 14:41:24 GMT
Organization: West Virginia Network for Educational Telecomputing


Hi,
   I need some help with Windows 3.1! Every now and then an application will
   quit on me and windows reports:
                       Illegal Instruction Error
                       in module GDI.EXE
                       Address 0001:0624
   I have no idea what could cause it. I checked my system for bad
   memmory and hardware conflict and came up empty.  Win3.1 was installed
   from floppies onto my 486-33 with 8MB of memory. I know that it is not
   a problem with the video card or EMM386.exe or any other software
   besides windows. (removed them all and error still ocuured). I also
   turned of the cash and shadowing of memory, no effect.  The memory has
   also been tested many times. 
   If anybody out there knows anything I would appreciate the help!

                                      Thanks !

                                      Andy
                                      Un040337@wvnvms.wvnet.edu
From: cl@ukc.ac.uk (C.Lau)
Newsgroups: comp.os.msdos.programmer
Subject: SIGALRM and alarm(), Microsoft C 6.0
Date: 15 Sep 92 14:40:32 GMT
Organization: Computing Lab, University of Kent at Canterbury, UK.

In UNIX, there are SIGALRM in signal() and alarm().  Are there similar
things in Microsoft C?

Thanks in advance.

Chris
From: esova@magnus.acs.ohio-state.edu (Edward R Sova)
Subject: Dbase III+ library
Organization: The Ohio State University
Date: Sat, 12 Sep 1992 05:29:40 GMT

I'd like to get hold of a shareware package for reading, manipulating... 
.DBF files.  In the C Users Group catalog, disk 326 is called SoftC Database
library.  Supposed to have like 120 functions for data, memo, index fields
even DbaseIV, Clipper, Foxbase  Last version I have heard about is 2.1
includes TC/C++, Zortech and Microsoft C.  Where could I ftp this gem from?
thanx,


Newsgroups: comp.os.msdos.programmer
From: yawei@bronze.ucs.indiana.edu (~{QG9p~})
Subject: Re: Another MsDos batch programming challenge
Organization: Indiana University
Date: Sun, 13 Sep 1992 17:37:11 GMT

This is an old trick:

@echo off
echo set cd=%%2 >directory.bat
dir >tmp~tmp.bat
call tmp~tmp
del directory.bat
del tmp~tmp.bat


This should put the current directory in the environment
variable CD.


Newsgroups: comp.os.msdos.programmer
From: jas37876@uxa.cso.uiuc.edu (John A. Slagel)
Subject: Re: Simple Terminal in QBASIC
Organization: University of Illinois at Urbana
Date: Sat, 5 Sep 1992 20:34:54 GMT

<U24226@uicvm.uic.edu> writes:

>Hi! I'm trying to write a simple terminal
>program in QBASIC. I've managed to get
>the COM port set up and can get the
>program to dial. I'm having problems
>getting data from the modem. Every time
>I use the get command (GET #22,t) I
>get a bad record error. I think it's
>because at the time I get the data
>there is nothing to get. I tried using
>the ON COM GOSUB routine. It goes to
>my GET command I still get the same
>error though.
>Any Suggestions?

   Use something like this:

   if loc(22) > 0 then
       x$ = input$(loc(22),#22)
   else
       x$ = ""
   end if

-- 
------------------------------------------------------------------------
 John A. Slagel     "My old man used to tell me, before he left this
 j-slagel1@uiuc.edu  shitty world, never chase buses or women- you
                     always get left behind." -The Marlboro Man
Xref: sparky comp.os.msdos.programmer:9198 comp.os.msdos.misc:5113
From: exuptr@exu.ericsson.se (exuptr@exu.ericsson.se)
Newsgroups: comp.os.msdos.programmer,comp.os.msdos.misc
Subject: Re: Disk Drive Purchase?
Date: 9 Sep 92 17:12:30 GMT
Organization: Ericsson Network Systems, Inc.

In article <1992Sep2.220649.11769@newstand.syr.edu> amichiel@rodan.acs.syr.edu (Allen J Michielsen) writes:
>3. IDE drives and controllers, could already be windows 32 bit disk access
>   compatible.  IDE drives and controllers are about as fast as they are
>  ever going to be, or are capable of being.  

Whatever gave you that idea?  IDE controllers are limited only by the
bus, today.  Make an EISA or Local Bus IDE and you will have more speed.

 ----------------------------------------------------------------------------
    "This must be Thursday.  I never could get the hang of Thursdays"
                                                       - D Adams
  - Patrick Taylor
    Ericsson Network Systems
    exuptr@exu.ericsson.se                       "Don't let the .se fool you"
    alternately, exuptr@ZGNews.Lonestar.Org
Newsgroups: comp.os.msdos.programmer
From: ins700e@lindblat.cc.monash.edu.au (Simon Carter)
Subject: Ctrl-C trapping TSRs
Organization: Monash University
X-Newsreader: Tin 1.1 PL5
Date: Thu, 10 Sep 1992 02:52:43 GMT

I am attempting to write a TSR that traps both Ctrl-C and Ctrl-Break.

The Ctrl-Break section works very well (this involved writing new
interrupt $1b and $23 handlers that just iret).

I can also detect when Ctrl-C is pressed with a new interrupt $16 handler 
(When it is detected, I just call the old $16 handler again - but only
if function 0 or $10 was called to get a key).

The problem is that if after pressing Ctrl-C, the user types a letter (may
in fact work with any key), either that key disappears (is swallowed up) or
a Ctrl-C appears. I do not know why this is happening.

I have tried several solutions.
- forcing my interrupt $1b and $23 handlers to zero the MSB of the byte at
$0040:$0071 (which is used to flag if Ctrl-Break is pressed)
- when a Ctrl-C is detected, overwriting that word in the keyboard buffer
with a dummy value (the letter A).

Neither of these has worked.

Perhaps I should always reset the byte at $0040:$0071 ????


Any help would be greatly appreciated


Simon Carter
--
-[Simon Carter]-----+-Email: vort@yoyo.cc.monash.edu.au ----------------
2nd Year BCSE       | @mail: 14 Canterbury Rd,Heathmont,VIC 3135,AUST 
Monash Uni, Clayton | Manager:Crystal Software  Product:Crystal Menu 
--------------------+ "Sure my program works - it just doesn't compile!"
Newsgroups: comp.os.msdos.programmer
From: d_hopp@tangram.informatik.uni-kl.de (Daniel Hopp)
Subject: Help! Problems with EMM386.EXE. 
Keywords: emm386 
Reply-To: d_hopp@tangram.informatik.uni-kl.de (Daniel Hopp)
Organization: University of Kaiserslautern (Germany)
Date: Fri, 11 Sep 1992 12:34:21 GMT

Hi,

I've got a problem switching the expanded memory manager EMM386.EXE, using
the functions documentated in Ralf Brown's interrupt list. Although switching
to modes OFF and AUTO works fine, I COULDN'T SWITCH IT ON !!!!!

Here's the excerpt from the list:

>        INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
>                AX = FFA5h
>        Return: AX = 845Ah if loaded
>                    BX:CX -> API entry point
>
>        Call API entry point with:
>                AH = 00h get memory manager's status
>                    Return: AH = status
>                                bit 0: not active (OFF)
>                                bit 1: in "Auto" mode
>                AH = 01h set memory manager's state
>                    AL = new state (00h ON, 01h OFF, 02h AUTO)
>

This is the assembler program I use:

         QUEST     dw 0ffa5h
         INSTALLED dw 0845ah
         API_POINT dd ?

MAIN:    mov  ax,QUEST                  ; test installation
         int  67h
         cmp  ax,INSTALLED              ; equal if installed
         jne  EXIT

         mov  word ptr API_POINT,cx     ; entry point in BX:CX
         mov  word ptr API_POINT[2],bx

ENABLE:  mov  ah,01h                    ; set state
         mov  al,00h                    ; ON - does not work !
         mov  si,offset API_POINT
         call dword ptr cs:[si]


As this thing is of great importance for me, it would be nice if somebody
could help me here. Thanx!


                                       Daniel Hopp



Newsgroups: comp.os.msdos.programmer
From: jdz1@Ra.MsState.Edu (John D. Zitterkopf)
Subject: Re: WarmBoot on ALT-CTRL-DEL {Re: The smallest TSR contest}
Organization: Mississippi State University
Date: Sun, 6 Sep 1992 04:39:06 GMT

In article <1992Sep3.022806.4536@oucsace.cs.ohiou.edu> tswingle@oucsace.cs.ohiou.edu (Tom Swingle) writes:
>
>Are you using VSHIELD on your computer?  VSHIELD forces a cold boot on Control-
>Alt-Delete, unless you run it with the /NB parameter.  Viruses stand a lesser
>chance of surviving a cold boot than a warm boot, although it might still be
>possible; I don't know for sure.
	Yep, That would do it. I figured after reading some previous posts that
It had to be either VSHIELD or PC-CACHE. I guess I should have known...
	I wonder, why wouldn't a cache intercept the "warm-boot", Flush the
write-back buffer and then proceed with the warm-boot. Next, I also hope that 
the "great" makers of the 486dx cachers somehow made sure that the buffer
was flushed by the warm boot. Seems like a power loss would be possible with
hardware to flush... 

Just the ramblings of an Electrical Engineering Student...
John

--
 ____________   _------_  |||IBM & |      EE majors Do it Best 8-)
  --------\\ ] ~-______-~ |||Atari |~~~~~~~~~John D. Zitterkopf~~~~~~~~~~~~~
     (~~~~~\\|_(__ ~~    / | \Rules!jdz1@ra.MsState.edu  jdz1@MsState.bitnet
      \______| (        /  |  \    |AOL: zitt@aol.com  jdz1@isis.MsState.edu 
Newsgroups: comp.os.msdos.programmer
From: Ross Ridge <ross@zooid.guild.org>
Subject: Re: studying executables
Organization: ZOOiD BBS
Distribution: comp
Date: Mon, 7 Sep 1992 09:09:18 GMT

ara@zurich.ai.mit.edu (Allan Adler) writes:
>First, it seems to me that every compiler and every assembler must have its
>own idiosyncratic way of producing the executable. Is that true?

ross@zooid.guild.org (Ross Ridge) writes:
>For compilers yes, for assemblers no.  With assemblers every byte of
>the execuatable is under the programmers control.

mlevis@ringer.cs.utsa.edu (Mike Levis) writes:
>Actually, assemblers have their own way of producing executables, too.
>There is a share-ware assembler (I think it is called A86) that even
>says that it creates opcodes different from other assemblers.  This
>way, the author can sue unregistered owners for not registering.
>There are different ways an assembler can create a "fingerprint".
>One example is ``MOV BX, AX''.  An assembler can generate either
>``89h C3h'' or ``8Bh D8h'' for the opcode (I don't have A86, so I
>don't know which opcode set it uses for ``MOV BX, AX'').

True, this can be used to identify assemblers.  I hadn't thought
of that.  But it isn't of any use in helping you understand
the programme.

>Likewise, an assembler can optimize the code for speed and/or size.
>For example, I have TASM, which converts a far call into the same
>segment into a push cs and near call.
>
>TASM also automatically generates code for you, such as when using
>Language modifiers.  For example, you can call a C function from
>your ASM program.  TASM will push your parameters (using the C
>parameter passing protocol), make the call, then adjust the stack
>for you.

Neither of these examples help you identify the assembler, the code
generated by TASM could've easily been generated explicitly by another 
assembler or even automatically by a compiler.  They're still also fully
under control of the programmer.  The second example however, a programme
using the C language calling convention, whether automatically or not is
something that can be used to gain some insight into the programme.

						Ross Ridge

-- 
Ross Ridge - The Great HTMU					     l/	 //
								    [OO][oo]
ross@zooid.guild.org						    /()\/()/
uunet.ca!zooid!ross						     db	 //
From: mlf@genrad.com (Matt Fichtenbaum)
Newsgroups: comp.os.msdos.programmer
Subject: Microsoft Source Profiler: conflict with 386MAX?
Date: 8 Sep 92 13:36:07 GMT
Distribution: usa
Organization: GenRad, Inc.


  Source Profiler 1.2 is included in the Microsoft C/C++ 7.0 package.  So is
Qualitas' 386MAX, to provide the compiler with its required protected-mode
memory services.
  I've had the compiler, PWB, etc. running for a couple of months.  This
weekend I tried the profiler for the first time and it crashed.  It ran on
the "bare" machine; it crashed with 386MAX.
  The machine is a 486/50 Cache Computers board with 8 meg of memory.
  Anyone had similar problems?  Anyone have solutions?  I've written to
Microsoft support, but am trying this path too.
  Email replies are welcome.  mlf@genrad.com.
Newsgroups: comp.os.msdos.programmer
From: P0LU000 <P0LU@UNB.CA>
Subject: Using INT86x(): problem here...
Organization: The University of New Brunswick
Date: Tue, 8 Sep 1992 11:51:29 GMT

Well, I adapted the code from a Pascal routine in PC Magazine
(July 1992, page 496), and this version will run.  The only
problem is that it does not print out the correct disk volume.

The program I've written up so far is included below.  Can
anyone here tell me what I'm doing wrong.  More importantly,
can anyone tell me how to do it right?

Thanx in advance...
Leslie Mills

********* Program Follows **********

/* sorry for the incredibly bad spacing.  I had a horrible time
   trying to transfer the file where I could actually post it,
   and the editor I'm currently using is horrible.
*/

//
// File: t.c
//
//  Program to read a disk's serial number.
//

void main( int argc, char *argv[] );

#include <stdio.h>
#include <dos.h>
#include <signal.h>
#include <process.h>

#include "t.h"   // File contains only comments, unimportant

int get_disk_serial( unsigned char  diskno,
      char           *ser );

int get_byte_form( unsigned char diskno,
       long int      *i );

void main( int  argc,   // these variables are not used.
      char *argv[] )     // I placed them here out of habit
{
  char ser[10];           // disk serial number
  int res;                // result of function call

  res = get_disk_serial( (unsigned char) 3, ser );
  if ( res == 0 ) {
   printf( "The serial number of drive C: is: %s\n", ser );
  } else {
   printf( "Call barfed. Big Bad Ugly Error.\n" );
  }

  return;
}

//
// I grabbed quite a bit of this procedure from:
//          PC Magazine, July 1992, page 496
// Written: 92/09/04
//
int get_disk_serial( unsigned char  diskno,
       char           ser[] )
{
  long int i;         // This will hold the function result
  char     *hexdigits = "0123456789ABCDEF";
  int      res;

  union REGS   inregs, outregs;
  struct SREGS segregs;

  inregs.h.ah = 0x69;     // DOS fcn call 69h : serial number code
  inregs.h.al = 0x00;     // read from disk, don't write!
  inregs.h.bl = diskno;   // read from disk number in diskno
  inregs.x.dx = (unsigned int) &i;       // data pointer

  res = int86x( 0x21, &inregs, &outregs, &segregs );
  if ( outregs.x.cflag ) {
   // my ambiguous way of displaying an error message
   printf( "Little Fluffy took a round, better take him to the vet.\n" );
  } else {
   printf( "Yeah!\n" );
  }

  //*- Now long int variable i should have disk serial number

printf( "Byte value of i: %lX\n\n", i );

  ser[0] = hexdigits[  i >> 28 ];
  ser[1] = hexdigits[ (i >> 24) & 0xf ];
  ser[2] = hexdigits[ (i >> 20) & 0xf ];
  ser[3] = hexdigits[ (i >> 16) & 0xf ];
  ser[4] = '-';
  ser[5] = hexdigits[ (i >> 12) & 0xf ];
  ser[6] = hexdigits[ (i >>  8) & 0xf ];
  ser[7] = hexdigits[ (i >>  4) & 0xf ];
  ser[8] = hexdigits[ i & 0xf ];
  ser[9] = '\0';

  printf( "We reached here all right...\n" );

  return( 0 );
}

Newsgroups: comp.os.msdos.programmer
From: yogi@cs.ubc.ca (Yossi Gil)
Subject: Re: Another MsDos batch programming challenge
Organization: Computer Science, University of B.C., Vancouver, B.C., Canada
Date: Sun, 13 Sep 92 19:42:15 GMT

>>
>>cd >> %0
>>echo echo %%set%% >> %0
>>set set=^Z
>>
>>(The above should be invoked with the .BAT extension. It should 
>>be quite easy to remove this restriction)

>This is very clever but doesn't its self-modifying behavior cause it 
>to fail after one use?  (The location of the end-of-file marker, ^Z, 

This is my own way of abusing the contest rules...

>is important in your scenario.)  And wouldn't CD be a better environment 
>variable name than SET?  In any case, I can't come up with something

Who says it has to be clear?

>that works even once! :-(

If you really care you could wrap it so that it could be invoked
several times. But even so, this is not the remedy of all batch file
problems. One has to use 4DOS or write a real program for all the
serious stuff. Batch file tricks are just like three-legged races.
Slow, funny  and cumbersome yet challenging and sometimes even
quite funny.

>--
>Jimmy Liberato   liberato@dri.com
>                 ...uunet!drivax!liberato



--
Joseph (Yossi) Gil                 {alberta,uw-beaver,uunet}!ubc-cs!yogi
Dept. of Computer Science          yogi@cs.ubc.ca (cs.ubc.ca=137.82.8.5)
6356 Agricultural Road., Univ. of B.C.,             Tel: +1-604-822-8175
Vancouver, British Columbia, V6T 1Z2, Canada.       Fax: +1-604-822-5485
Xref: sparky comp.os.msdos.programmer:9160 comp.lang.c:13326
From: mll@aio.jsc.nasa.gov (Mark Littlefield)
Newsgroups: comp.os.msdos.programmer,comp.lang.c
Subject: multi-dimension HUGE arrays
Date: 8 Sep 1992 14:10:37 GMT
Reply-To: mll@aio.jsc.nasa.gov
Organization: Lockheed ESC/NASA JSC

Hi there,

I hope this is the right forum for this question (I don't normally
read this group).  I have to write a set of test programs on a PC for
a new laser scanner that we are getting here in our lab.  The problem
I'm having is allocating a short 256x256 array in borland C.  I know I
should be using the huge data type, but I get two types of errors
depending on how I define the array.  If I say

   int array[256][256]

I get the error "array size too large"

but if I put

   int huge array[256][256]

I get the error "conflicting type modifiers."

I'm sure it's a simple answer so if you can send me mail with the
answer I'd appreciate it (no need to blow bandwidth on this one).

thanks,

mark
-- 
=====================================================================
Mark L. Littlefield              Intelligent Systems Department
internet: mll@aio.jsc.nasa.gov 
USsnail:  Lockheed Engineering and Sciences 
          2400 Nasa Rd 1 / MC C-19            
          Houston, TX 77058-3711
====================================================================
Xref: sparky comp.os.msdos.programmer:9219 comp.os.msdos.misc:5133
From: wells@cdsmn.mn.org (Rich Wells)
Newsgroups: comp.os.msdos.programmer,comp.os.msdos.misc
Subject: Re: Disk Drive Purchase?
Date: 8 Sep 92 15:03:34 GMT
Organization: Dicomed, Inc

andyross@infopls.chi.il.us (Andrew Rossmann) writes:
:   ???? IDE drives are only using a fraction of the power available to them.
: With their full 16-bit parallel access, you are limited only by the bus
: speed. I wonder if there are any drives that really tax the bus, yet.
: 
:   Does anyone know if there is going to be a 32-bit version of IDE for EISA
: or even local-bus??

The machine I have on order from Gateway will have an IDE controller on
local-bus.  I didn't think to ask about whether it is 16-bit or 32-bit.
They claim it has a transfer rate of 17-30 Mb/sec.

What is a good source of information about disk drives?  I'd like to
know the difference between IDE, SCSI, and ESDI, but have no idea
where to begin.  I would prefer a source void of marketing hype, but
I'm quite capable of filtering that out if necessary.
-- 

Richard Wells  wells@cdsmn.mn.org  or  ...!tcnet!cdsmn!wells
Newsgroups: comp.os.msdos.programmer
From: isc30108@nusunix3.nus.sg (AMBAT SASI S/O PALISSERY P)
Subject: Re: Color pixel in VGA mode
Organization: National University of Singapore
Date: Tue, 8 Sep 1992 01:25:52 GMT

mpni@jyu.fi (Nieminen Mika Petteri) writes:
: 
: Hi!
: 
: I have a problem with programming in VGA 640X480 16 colors mode.
: I don't know exactly how to change 'color palette' to produce multicolor
: picture. In 320X200 256 color mode it's not a problem (no need to worry
: about different palette/bitplane). 
: 
: Could someome kindly post a simply answer with/without example program (C/Asm)
: how to draw color pixels in 640X480 mode.
: 
: 				Thanks
: 				Mika Nieminen
:
programming in this mode has a lot to do with port[$3CE]
in pseudo assembly (in pre OUT DX,AX form) .....

after u init the mode,
   al <- 1    index to enable set/reset of color bit plane
   ah <- f    select all planes

when setting pixel,
   al <- 8    bitmask for the byte u r writing to
   ah <- x    eg. x=01010101 at [$a000:0] will write to
		   (1,0) , (3,0) , (5,0) & (7,0)

   al <- 0    set/reset color bit plane
   ah <- color

but works just as well.

sasi.
Newsgroups: comp.os.msdos.programmer