[comp.sys.ibm.pc.digest] Info-IBMPC Digest V6 #36

Info-IBMPC@C.ISI.EDU (Info-IBMPC Digest) (05/14/87)

Info-IBMPC Digest       Wednesday, 13 May   1987      Volume 6 : Issue 36

This Week's Editor: Billy Brackenridge

Today's Topics:

			    ANSI Code List
			  Disk-Defragmenters
		      MS-DOS 3.1 COMMAND.COM Bug
		     UUENCODE/UUDECODE again ...
                        EGA Detection (2 Msgs)
	     BIOS Cursor and ANSI.SYS Cursor are Separate
		   Screen Swapping Under SCO XENIX
			     MSC 4.0 bugs
				 C++
Today's Queries:
			    EMACS for PC's
			Virtual Device Driver?
		     TEAC FD-55F Turbo C and GKS
		      Redirection in Batch Files
	   Speech Synthesis Hardware and Software (2 Msgs)
			 Ampro LittleBoard/PC

      INFO-IBMPC BBS Phone Numbers: (213)827-2635 (213)827-2515

----------------------------------------------------------------------


Date: Tue, 12 May 87 16:58:34 edt
From: geac!len@Sun.COM (Leonard Vanek)
Subject: ANSI Code List


Here is the requested list of ANSI control sequences. I picked it
up off of the Usenet a while back.

[Here we go again this one seems more complete than the one published last
digest. -wab]

 ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals
                       in alphabetic order by mnemonic

     (Inspired by the article "Toward Standardized Video Terminals: ANSI
      X3.64 Device Control" by Mark L. Siegel, April 1984 BYTE, page 365)

		Note: This describes the VT-100 standard.

               (Ps and Pn are parameters expressed in ASCII.)
               (Numeric parameters are given in decimal radix.)
               (Abbreviations are explained in detail at end.)
               (Spaces used in this table for clarity are not
                used in the actual codes.)

                                                           Default    Type
Sequence     Sequence                                      Parameter   or
Mnemonic     Name              Sequence                    Value      Mode
 ---------------------------------------------------------------------------
APC  Applicatn Program Command Esc Fe                                 Delim
CBT  Cursor Backward Tab       Esc [ Pn Z                   1         EdF
CCH  Cancel Previous Character Esc T
CHA  Cursor Horzntal Absolute  Esc [ Pn G                   1         EdF
CHT  Cursor Horizontal Tab     Esc [ Pn I                   1         EdF
CNL  Cursor Next Line          Esc [ Pn E                   1         EdF
CPL  Cursor Preceding Line     Esc [ Pn F                   1         EdF
CPR  Cursor Position Report    Esc [ Pn ; Pn R              1, 1
CSI  Control Sequence Intro    Esc [                                  Intro
CTC  Cursor Tab Control        Esc [ Ps W                   0         EdF
CUB  Cursor Backward           Esc [ Pn D                   1         EdF
CUD  Cursor Down               Esc [ Pn B                   1         EdF
CUF  Cursor Forward            Esc [ Pn C                   1         EdF
CUP  Cursor Position           Esc [ Pn ; Pn H              1, 1      EdF
CUU  Cursor Up                 Esc [ Pn A                   1         EdF
CVT  Cursor Vertical Tab       Esc [ Pn Y                             EdF
DA   Device Attributes         Esc [ Pn c                   0
DAQ  Define Area Qualification Esc [ Ps o                   0
DCH  Delete Character          Esc [ Pn P                   1         EdF
DCS  Device Control String     Esc P                                  Delim
DL   Delete Line               Esc [ Pn M                   1         EdF
DMI  Disable Manual Input      Esc \                                  Fs
DSR  Device Status Report      Esc [ Ps n                   0
EA   Erase in Area             Esc [ Ps O                   0         EdF
ECH  Erase Character           Esc [ Pn X                   1         EdF
ED   Erase in Display          Esc [ Ps J                   0         EdF
EF   Erase in Field            Esc [ Ps N                   0         EdF
EL   Erase in Line             Esc [ Ps K                   0         EdF
EMI  Enable Manual Input       Esc b                                  Fs
EPA  End of Protected Area     Esc W
ESA  End of Selected Area      Esc G
FNT  Font Selection            Esc [ Pn ; Pn Space D        0, 0      FE
GSM  Graphic Size Modify       Esc [ Pn ; Pn Space B        100, 100  FE
GSS  Graphic Size Selection    Esc [ Pn Space C             none      FE
HPA  Horz Position Absolute    Esc [ Pn `                   1         FE
HPR  Horz Position Relative    Esc [ Pn a                   1         FE
HTJ  Horz Tab w/Justification  Esc I                                  FE
HTS  Horizontal Tab Set        Esc H                                  FE
HVP  Horz & Vertical Position  Esc [ Pn ; Pn f              1, 1      FE
ICH  Insert Character          Esc [ Pn @                   1         EdF
IL   Insert Line               Esc [ Pn L                   1         EdF
IND  Index                     Esc D                                  FE
INT  Interrupt                 Esc a                                  Fs
JFY  Justify                   Esc [ Ps ; ... ; Ps Space F  0         FE
MC   Media Copy                Esc [ Ps i                   0
MW   Message Waiting           Esc U
NEL  Next Line                 Esc E                                  FE
NP   Next Page                 Esc [ Pn U                   1         EdF
OSC  Operating System Command  Esc ]                                  Delim
PLD  Partial Line Down         Esc K                                  FE
PLU  Partial Line Up           Esc L                                  FE
PM   Privacy Message           Esc ^                                  Delim
PP   Preceding Page            Esc [ Pn V                   1         EdF
PU1  Private Use 1             Esc Q
PU2  Private Use 2             Esc R
QUAD Typographic Quadding      Esc [ Ps Space H             0         FE
REP  Repeat Char or Control    Esc [ Pn b                   1
RI   Reverse Index             Esc M                                  FE
RIS  Reset to Initial State    Esc c                                  Fs
RM   Reset Mode                Esc [ Ps l                   none
SD   Scroll Down               Esc [ Pn T                   1         EdF
SEM  Select Edit Extent Mode   Esc [ Ps Q                   0
SGR  Select Graphic Rendition  Esc [ Ps m                   0         FE
SL   Scroll Left               Esc [ Pn Space @             1         EdF
SM   Select Mode               Esc [ Ps h                   none
SPA  Start of Protected Area   Esc V
SPI  Spacing Increment         Esc [ Pn ; Pn Space G        none      FE
SR   Scroll Right              Esc [ Pn Space A             1         EdF
SS2  Single Shift 2 (G2 set)   Esc N                                  Intro
SS3  Single Shift 3 (G3 set)   Esc O                                  Intro
SSA  Start of Selected Area    Esc F
ST   String Terminator         Esc \                                  Delim
STS  Set Transmit State        Esc S
SU   Scroll Up                 Esc [ Pn S                   1         EdF
TBC  Tab Clear                 Esc [ Ps g                   0         FE
TSS  Thin Space Specification  Esc [ Pn Space E             none      FE
VPA  Vert Position Absolute    Esc [ Pn d                   1         FE
VPR  Vert Position Relative    Esc [ Pn e                   1         FE
VTS  Vertical Tabulation Set   Esc J                                  FE

 ---------------------------------------------------------------------------

Abbreviations:

Intro  an Introducer of some kind of defined sequence; the normal 7-bit
       X3.64 Control Sequence Introducer is the two characters "Escape ["

Delim  a Delimiter

x/y    identifies a character by position in the ASCII table (column/row)

EdF    editor function (see explanation)

FE     format effector (see explanation)

F      is a Final character in
            an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
            a control sequence (F from 4/0 to 7/14)

Gs     is a graphic character appearing in strings (Gs ranges from
       2/0 to 7/14) in the ASCII table

Ce     is a control represented as a single bit combination in the C1 set
       of controls in an 8-bit character set

C0     the familiar set of 7-bit ASCII control characters

C1     roughly, the set of control characters available only in 8-bit systems.
       This is too complicated to explain fully here, so read Jim Fleming's
       article in the February 1983 BYTE, especially pages 214 through 224.

Fe     is a Final character of a 2-character Escape sequence that has an
       equivalent representation in an 8-bit environment as a Ce-type
       (Fe ranges from 4/0 to 5/15)

Fs     is a Final character of a 2-character Escape sequence that is
       standardized internationally with identical representation in 7-bit
       and 8-bit environments and is independent of the currently
       designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)

I      is an Intermediate character from 2/0 to 2/15 (inclusive) in the
       ASCII table

P      is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
       table

Pn     is a numeric parameter in a control sequence, a string of zero or
       more characters ranging from 3/0 to 3/9 in the ASCII table

Ps     is a variable number of selective parameters in a control sequence
       with each selective parameter separated from the other by the code
       3/11 (which usually represents a semicolon); Ps ranges from
       3/0 to 3/9 and includes 3/11

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v

Format Effectors versus Editor Functions

A format effector specifies how the final output is to be created.
An editor function allows you to modify the specification.

For instance, a format effector that moves the "active position" (the 
cursor or equivalent) one space to the left would be useful when you want to
create an over strike, a compound character made of two standard characters
overlaid. Control-H, the Backspace character, is actually supposed to be a
format effector, so you can do this. But many systems use it in a
nonstandard fashion, as an editor function, deleting the character to the
left of the cursor and moving the cursor left. When Control-H is assumed to
be an editor function, you cannot predict whether its use will create an
over strike unless you also know whether the output device is in an "insert
mode" or an "overwrite mode". When Control-H is used as a format effector,
its effect can always be predicted. The familiar characters carriage
return, linefeed, formfeed, etc., are defined as format effectors.

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^

ANSI X3.64 Mode-Changing Parameters for use with the
           Select Mode (SM) and Reset Mode (RM) functions

    Parameter           Mode          Mode Function
    Characters          Mnemonic
 column/    graphic
  row       repres.
 ----------------------------------------------------------------------------
3/0           0                       an error condition
3/1           1          GATM         guarded-area transfer mode
3/2           2          KAM          keyboard action mode
3/3           3          CRM          control representation mode
3/4           4          IRM          insertion/replacement mode
3/5           5          SRTM         status-reporting transfer mode
3/6           6          ERM          erasure mode
3/7           7          VEM          vertical editing mode
3/8           8                       reserved for future standardization
3/9           9                       reserved for future standardization
3/10          :                       reserved separator for parameters
3/11          ;                       Standard separator for parameters
3/12          <                       reserved for private (experimental) use
3/13          =                       reserved for private (experimental) use
3/14          >                       reserved for private (experimental) use
3/15          ?                       reserved for private (experimental) use
3/1  3/0      10         HEM          horizontal editing mode
3/1  3/1      11         PUM          positioning unit mode
3/1  3/2      12         SRM          send/receive mode
3/1  3/3      13         FEAM         format effector action mode
3/1  3/4      14         FETM         format effector transfer mode
3/1  3/5      15         MATM         multiple area transfer mode
3/1  3/6      16         TTM          transfer termination mode
3/1  3/7      17         SATM         selected area transfer mode
3/1  3/8      18         TSM          tabulation stop mode
3/1  3/9      19         EBM          editing boundary mode
3/1  3/10     1:                      reserved separator for parameters
3/1  3/11     1;                      Standard separator for parameters
3/1  3/12     1<                      error condition--unspecified recovery
3/1  3/13     1=                      error condition--unspecified recovery
3/1  3/14     1>                      error condition--unspecified recovery
3/1  3/15     1?                      error condition--unspecified recovery
3/2  3/0      20         LNM          linefeed/newline mode (not in ISO 6429)
3/2  3/1      21
 .            .
 .            .                       reserved for future standardization
 .            .
3/9  3/9      99

3/12 3/0      <0
 .            .
 .            .                       reserved for private (experimental) use
 .            .
3/15 3/15     ??

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^

NOTES ON THE DEC VT100 IMPLEMENTATION

In the case of the popular DEC VT100 video-terminal implementation,
the only mode that may be altered is the linefeed/newline (LNM) mode.
Other modes are considered permanently set, reset, or not applicable
as follows:

     Set:   ERM
     Reset: CRM, EBM, FEAM, FETM, IRM, KAM, PUM, SRTM, TSM
     N/A:   GATM, HEM, MATM, SATM, TTM, VEM

Control sequences implemented in the VT100 are as follows:

     CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
     LNM, NEL, RI, RIS, RM, SGR, SM, TBC

plus several private DEC commands.

Erasing parts of the display (EL and ED) in the VT100 is performed thus:

     Erase from cursor to end of line           Esc [ 0 K    or Esc [ K
     Erase from beginning of line to cursor     Esc [ 1 K
     Erase line containing cursor               Esc [ 2 K
     Erase from cursor to end of screen         Esc [ 0 J    or Esc [ J
     Erase from beginning of screen to cursor   Esc [ 1 J
     Erase entire screen                        Esc [ 2 J

The VT100 responds to receiving the DA (Device Attributes) control

     Esc [ c    (or Esc [ 0 c)

by transmitting the sequence

     Esc [ ? l ; Ps c

where Ps is a character that describes installed options.

The VT100's cursor location can be read with the DSR (Device Status
Report) control

     Esc [ 6 n

The VT100 reports by transmitting the CPR sequence

     Esc [ Pl ; Pc R

where Pl is the line number and Pc is the column number (in decimal).

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^

The complete document describing the standard,  "ANSI X3.64-1979:
Additional Controls for Use with the American National Standard
Code for Information Interchange," can be ordered for $13.50 (plus
$4 postage) from

     Standards Sales Department
     American National Standards Institute
     1430 Broadway
     New York, NY 10018
     212/354-3300

It's best to read the full standard before using it. It also helps
to have copies of the related standards "X3.4-1977: American
National Standard Code for Information Interchange" (the ASCII
standard) and "X3.41.1974: Code-Extension Techniques for Use with
the 7-Bit Coded Character Set of American National Standard for
Information Interchange."

See also the chapter "Using Extended Screens and Keyboard Control"
in the IBM PC-DOS manuals (versions 2.0, 2.1, and 3.0), especially
for the coding for character attributes.

The specification for the DEC VT100 is document EK-VT100-UG-003,
available for $13.00 prepaid from:

     Digital Equipment Corporation
     Accessories and Supplies Group
     POB CS-2008
     Nashua, NH 03061

(Copyright 1984 BYTE Publications, subsidiary of McGraw-Hill Inc.)
(Permission granted to reproduce for noncommercial uses.)
(This file prepared by Richard S. Shuford.)


Len Vanek

------------------------------


Date: Wed, 13 May 87 03:11:24 EDT
From: David Kirschbaum <kirsch@braggvax.arpa>
Subject: Disk-Defragmenters

Re the recent query and responses for a disk defragmenter:
No one mentioned REFORMAT (presently in the Info-IBMPC library in full
Turbo source).  I helped with some tweaking of that programmer, have tested
it extensively on many different machines with no problems, etc.
Is there a problem with REFORMAT that I haven't heard about?  Jos (the author,
a Dutchman whose name I don't have handy) did one heck of a nice job on it
(to include the latest improvements to handle big hard disks).
It doesn't have some of the nicetities of displaying just how fragmented
your disk is BEFORE you start the defragmenting, however.  (Maybe next
version, Jos?)
Regards,
David Kirschbaum
Toad Hall
kirsch@braggvax.ARPA

[The Editor was asleep again. Don't know my own library! -wab]

------------------------------


Date:           Wed, 13 May 87 01:38:31 PDT
From:           Dana Myers <bilbo.dana@CS.UCLA.EDU>
Subject:        MS-DOS 3.1 COMMAND.COM Bug

  Recently, in Info-IBMPC, a bug in MS-DOS 3.1 COMMAND.COM was reported.
I researched the bug and discovered that this is the expected behavior
on an IBM/IBM Clone PC.

  The explanation requires one to think of MS-DOS as the component
portions "IBMDOS.COM" and "IBMBIO.COM". IBMDOS.COM is the I/O independent
portion of MS-DOS. IBMBIO.COM is a collection of device drivers which
IBMDOS.COM uses to perform all I/O. One exception, in the case of PC-DOS,
is that COMMAND.COM does the CLS (clear screen command) if the CON device
is the original IBMBIO.COM driver by using INT 10. This does not happen
in MS-DOS.

  Some of the drivers in IBMBIO.COM can be replaced by CONFIG.SYS
directives. One such case is the loading of ANSI.SYS, which replaces
the CON driver resident in IBMBIO.COM.

  The driver in IBMBIO.COM appears to do INT 010h to write characters to
the screen. The ROM BIOS INT 010h handler does not implement "back-wrap"
so the cursor will just stay at the beginning of the line. I confirmed this
by using testing with INT 10.

  It turns out that "bug" here is in INT 10. This certainly is not a
COMMAND.COM problem, but many programs DO "back-wrap". They achieve this
by directly controlling the video memory and video controller. COMMAND  does
not do this; instead, it simply performs system calls that in turn cause
I/O driver calls that in turn cause INT 10s to occur.

Dana H. Myers
Locus Computing Corp.
Santa Monica, CA

P.S. One more supposed bug caused by a lack of understanding and dispelled by
 scientific research  ;-)

------------------------------


Date: Wed, 13 May 87 14:50:12 GMT
From: Gregory Hicks COMFLEACTS - Chinhae <hicks@walker-emh.arpa>
Subject: UUENCODE/UUDECODE again ...
To: info-ibmpc@c.isi.edu

When I submitted the MS-DOS UUENCODE/UUDECODE last week, I made a serious
mistake in testing the modifications.  I uuencode'd a text file and then
uudecode'd the encoded file.  (Why?  Because I could READ the decoded file!)
However, when I went to encode a binary file, I discovered the mods wouldn't
work.  The attached submission fixes that error.  These progs have been
compiled with Microsoft C v3.00 and tested with both binary and text files.
They work.  I apologize for the faulty submission.  These files can only
be compiled with Microsoft C however.  They should only run under MS-DOS.

These files originally came from SIMTEL20.  I modified the conditionals
so that they would only compile with Microsoft C v3.00 ...

Usage is:
uuencode [local-f-n] [remote-f-n]
and
uudecode [remote-f-n]

Programs will end up in the [local-f-n] with Un*x permissions of 666 after
they have been decode'd.

These originally came from info-ibmpc and the fixes to correct the text only
encoding from SIMTEL20.  Again, apologize for the faulty submission.

Gregory Hicks

[UUENCODE.C has been updated again. -wab]

------------------------------


Date: 13 May 87 09:20:00 EDT
From: "V703::S_DANIELS" <s_daniels%v703.decnet@nusc.arpa>
Subject: EGA Detection

HOW TO DETECT PRESENCE OF AN EGA CARD:       5/13/87
This code fragment comes from the program "QWIK13" by (author unknown)
This program provides super-fast screen writes, boxes, save/restore
from Turbo Pascal. The latest version is QWIK21 and can be found on 
various BBS's, including our own, SE CT PC UG @ (203) 886-5265.
A similar method comes with the program "PIBMDOS" by Phil Burns,
part, of an article published in MicroSystem Journal recently.
 

{ EGAcheck - check if EGA is in use                    ver 1.3, 11-10-86 }
{ SOURVCE: QWIK13 package of fast screen write procedures  }
 
{ If you want faster results with an EGA and also will use a CGA,
this function will check for existing EGA BIOS and use the faster
loops that don't wait for retrace as needed on the CGA.  }
 
var ToEGA: Boolean;      { Assign the result of EGAcheck to ToEGA as an }
                         { initializing routine in your program!!!      }
 
Function EGAcheck: Boolean;
begin
Inline(
  $B4/$12                {       MOV   AH,$12          ;Set AH for alt select}
  /$BB/$10/$FF           {       MOV   BX,$FF10         ;Set BX for EGA info}
  /$CD/$10               {       INT   $10              ;Interrupt}
  /$80/$EF/$FF           {       SUB   BH,$FF           ;Check if BH changed}
  /$74/$02               {       JZ    NoEGA            ;BH=false if no EGA}
  /$B7/$01               {       MOV   BH,$01           ;Set BH=true ($01)}
  /$88/$7E/$04           {NoEGA: MOV   [BP+$04],BH      ;EGAcheck: $01 or $00}
);
end;
 
{ test program }
{ remove following line to enable the test program }
(*
begin
  writeln('EGA CHECK: EGA exists = ', egacheck);
end.
(**)

GOOD LUCK... SCOTT DANIELS.
 

Date:     Wed, 13 May 87 17:30:48 PDT
From:     ssnyder@Tybalt.Caltech.Edu (Scott S. Snyder)
Subject:  How to detect an EGA



  One way to detect an EGA is to use the get alternate information BIOS
call, which is not present in the CGA BIOS. It is called with AH = 0x12 and
BL = 0x10, and on return BL indicates the EGA memory size (0=64k, 1=128k,
2=192k, and 3=256k) and cl contains the status of the EGA configuration
switches. If there is no EGA, the call returns with registers unmodified,
i.e., BL still contains 0x10. This method is not entirely ideal since there
is no guarantee that this behaviour is unique to the EGA, but it was the
best I could come up with. 

------------------------------


Date:           Wed, 13 May 87 10:13:43 PDT
From:           Jim Anderson <bilbo.jta@CS.UCLA.EDU>
Subject: BIOS Cursor and ANSI.SYS Cursor are Separate

ANSI.SYS (or NANSI, or whatever) has it's own idea of the current cursor
position.  If you use BIOS cursor positioning and subsequently write to
the ANSI driver, it will use it's idea of the cursor position, not the
cursor position set by BIOS.

Of course, none of this applies if you don't have an ANSI driver installed.

------------------------------


Date: Tue, 12 May 87 23:10:43 PDT
From: ucscc!ross@ucscd.ucsc.edu (98817000)
Subject: Screen Swapping Under SCO XENIX


SCO XENIX release 2.2 does support both a monochrome and color
display in the system at once. Each display is allocated half of
the system's multiscreens. Switching multiscreens, therefore,
switches the active display. If you have an earlier version of
XENIX, you must upgrade to 2.2 to be able to use this feature.

Ross Oliver
Tech Support @ SCO
...decvax!microsoft!sco!rosso
...ucbvax!ucscc!sco!rosso


------------------------------

From: ee163adj@sdcc18.ucsd.EDU (Steven "B.J." Martin)
Subject: MSC 4.0 bugs
Date: 11 May 87 20:06:43 GMT
Organization: University of California, San Diego


The following are the responses I received about bugs in microsoft C 4.0.
I have commented where I could add something to what was stated otherwise I 
Their response is how I received it.


>From: "Nelson H.F. Beebe" <Beebe@science.utah.edu>

The one bug I have found is in sscanf() (and probably
scanf() and fscanf(), though I haven't checked).
Specifically, the format "%d:%d:%d" should return the number
of fields successfully parsed for the function value.  That
is, it should return respectively 1, 2, and 3 for the inputs
"3", "3:4", and "3:4:5".  For the first two, it incorrectly
returns 0.  If the input is changed to "3:" or "3:4:", the
returned value is correct.



I tried this one the problem shows up with sscanf in any model.


>From: seismo!vu-vlsi!colin@sdcsvax (Colin Kelley)

The only bug I've run across is this:  [it's been discussed at length in
this newsgroup]

The signal(SIGINT,...) routine does not function under MS-DOS 3.x,
because it assumes that the stack segment and offset (SS:SP) have not
been changed when an INT 23H (^C) is executed, when in fact MS-DOS
has changed them in order to switch to an internal stack.  This often
results in a "stack overflow" or "stack underflow" error when the
control-C handler is executed.  The work-around is to install your
own assembly language routine which first restores SS:SP and then
jumps to the C ^C handler...

	-Colin Kelley  ..{cbmvax,pyrnj,bpa}!vu-vlsi!colin

---------------------------------------------------------------------------

>From: ddl@husc6.HARVARD.EDU (Dan Lanciani)

These are from memory, so you might want to try them...

1) overambitious constant elimination:

	foo(int_variable | 0L);

passes a 16-bit quantity rather than a 32-bit one.  Of course, 1L works just
fine as does

	foo(int_constant | 0L);

2) This isn't explicitly a bug, but probably isn't what they wanted:

	(long)p != (long)(int)p

for p char (near) pointer because conversion to a long causes the
segment value to be inserted in the high word.  This is strictly ok
because conversion back to a pointer will truncate and that's all
that is guaranteed anyway...

3) This really is a bug:

	(long)((char *)&thing - (char *)&other_thing) !=
		(long)(int)((char *)&thing - (char *)&other_thing)

Again, funny stuff happens to the high-order word.

2 and 3 are especially bad when the conversion to long happens implicitly as.


					Dan Lanciani
					ddl@harvard.*


These are the only responses I got, if you know of any others please let me
know.

					Steven "B.J." Martin


------------------------------


Date: Wed, 13 May 87 16:24:56 EDT
From: jcm@ORNL-MSR.ARPA (James A. Mullens)
Subject: C++


I like C++.  Besides supplying a basic object-oriented programming
capability, it improves on C itself: cleaner function declaration
syntax, operator overloading, variable number of function arguments
with defaulted argument values supplied for missing arguments, inline
functions instead of bug-prone macro definitions, constant data
declarations instead of #define, and other features.  Ada programmers
will find some familiar concepts in C++.

On the negative side, it has been much harder for me to learn than C,
FORTRAN, Pascal, LISP, BASIC, or the little bit of Ada I know.  (My
only source of information was the language creator's book).  I would
say that it is a "language lawyer's" dream.  This may be a
shortcoming of the book's presentation, but it is true that the
language gets very complex in areas like initialization of objects
(structs).

I have tried Advantage C++, distributed by Lifeboat for MSDOS.
(Oasys distributes it for VAX/VMS).  I have used the Microsoft C V4
version -- another version is available for Lattice C.  Lifeboat is
just now shipping the third version of C++ for Microsoft (1.1M3).

I had problems, which I can sum up by saying the C++ translator can
barely be squeezed into an MSDOS machine.  First, I had grown
accustomed to leaving my editor (Epsilon) in memory while I compile
with Microsoft C.  But the C++ translator requires (about) 512K to
run, so there is no way to leave Epsilon in.  In fact some of you may
have to cut back on your memory-resident goodies as well.  This is
just a minor annoyance unless those memory-resident programs are
critical to your applications (e.g., GKS graphics drivers for the C++
program you are creating).  Neither have I been able to use Microsoft
MAKE because it does not leave enough room for the C++ translator
either.

Second, Microsoft C V4 cannot handle the bulky code produced by the
C++ translator.  I have a C++ source which defines and uses a lot of
objects and methods for a graphics package.  The C++ source consists
of an 8K program and 10K of include files (graphics object
definitions).  This is expanded by the C++ translator (which also
handles the C preprocessor phase) to a 28K C source.  This is a
fairly standard C source, except it contains some huge structure
definitions (87 full lines for a struct describing one of my objects).
When C tries to compile the file it dies, complaining that the
compiler has run out of heap space, and the manual suggests that I
divide the file into smaller files and feed them to the compiler
one-at-a-time.  I believe in modular code, especially when I can keep
my editor memory-resident and edit multiple files, but an 8K size
restriction in this project was too much for me to bear.

On the plus side, the technical support has been good.

I have the impression that the translator internals are mature,
however the adaptation to MSDOS and Microsoft C is still in progress.
There have been many product changes between the beta test version I
received last September and the version 3 I received this week.  One
of those changes was a switch from the Microsoft C preprocessor to a
Unix System V compatible preprocessor.  I didn't notice any problems
there, but then I don't use tricky preprocessor features.

I have stopped using the MSDOS version because I plan to continue
development on our uVAX-II/VMS machine, which is the real target
environment anyway.  I have not received the VMS version yet, but I
have heard that it lacks support for some unique VAX C features like
"globaldef".

I believe there are other MSDOS versions, and I'd like to hear from
anyone who has used them.

I would like to receive the mail from the USENET newsgroup dealing
with C++.  (As far as I know, that newsgroup is not available on the
ARPAnet side).  Would anyone offer to send the archives?  Could
anyone suggest how an ARPAnetter could access this USENET group
without putting USENET up on the local Unix VAX?

jim mullens / jcm@ornl-msr.arpa / oak ridge national laboratory

------------------------------
Date: Tue 12 May 87 15:09:57-PDT
From: Frank Kolakowski <BCOOPERMAN.KOLAKOWSKI@BIONET-20.ARPA>
Subject: EMACS for PC's


   I am looking for a reasonable implementation and some good documentation
for an EMACS for MS-DOS machines.  What is the current version of EMACS
and is there a good version the is PD and with source.  I'd like a full
implementation, as I am working on both UNIX (BSD 4.2 Ultrix) and  TOPS
(DEC TOPS-20 ) machines which both have full working versions.

Any suggestions?


Frank Kolakowski

c/o JES@eniac.seas.upenn.edu
or KOLAKOWSKI@BIONET-20.ARPA
or 215-898-2927

[There are many. They have been discussed many times in past digests. -wab]

------------------------------


Date:         Tue, 12 May 87 16:56:00 EDT
From:         Kevin Brown <KCB1%APLVM.BITNET@wiscvm.wisc.edu>
Subject:      Virtual Device Driver?
To:           INFO-IBMPC@USC-ISIB.ARPA

I am looking for a Virtual Device Interface Driver for the
Hewlett-Packard Laser Jet +. Does anyone know of a source or know the
reason why it is hard to find this device driver? I have no trouble
coming up with Virtual Device Drivers for other types of printers
(i.e. Think Jets, Epson, etc.).

Thanx in Advance,

Kevin Brown
Applied Physics Laboratory
Laurel, MD
(301) 953-5000

KCB1@APLVM                                  BITNET
KCB1%APLVM.BITNET@wiscvm.wisc.edu           ARPA Internet

------------------------------


Date:     Wed, 13 May 87 13:53 N
From:     <SINGPANG%HLERUL5.BITNET@wiscvm.wisc.edu> (Marc Chang Sing Pang)
Subject: TEAC FD-55F Turbo C and GKS

Hello all,
I have the following questions:
1. Can you use a TEAC FD-55F floppy drive as a 1 MB drive for an AT?
2. Can you use Turbo C together with the IBM GKS (Graphical Kernel System)?
   I want to know if you can link Turbo C programs together with the
   GKS procedures which are in the GKS library.
3. Will Intel produce a 80386 version which is plug-in compatible with
   the 80286 (just as it is with a 8088 and NEC V20) ?

Thanks in advance,
Marc

[PC Week erroneously announced such a chip about a month ago. Intel plans
a board that will plug into a 286 socket. -wab]

------------------------------
Subject: Redirection in Batch Files
From: oxy!bagpiper@csvax.caltech.edu (Michael Paul Hunter)
Date: 13 May 87 03:19:46 PST



Say for instance I have a batch file that does the following:

pass1  %1
pass2
link   %1;

I call this batch file compile.

compile >errors
doesn't do what I want it to do for some obvious reasons (it only seems
to redir. stdin for the batch file itself, but not for any processes that
start and terminate inside...I would assume this is because the batch
file manager (PC-DOS) exec's each task which creates a new environment..
i.e, it does not give the new process a copy of the old environment [where
STDIN, STDOUT points.] )  Now the question is:  Can anyone shed anymore
light on this problem...all that I have said I have guessed at...It would
be nice to capture all of the output in one file instead of having to do

pass1 %1 >pass1.err
pass2    >pass2.err
link  %1 >link.err

This is bogus...I should be able to get all of this in one file without having
to do a

type pass1.err >errors
type pass2.err >>errors
type link.err  >>errors
erase pass1.err
erase pass2.err
erase link.err

Does anyone have an answer to this problem (besides writing a program to
do the above batch -- I can do this, it just means that much more floating
around in memory and I barely have enough mem to do what I have to do.)??



          .
         .           <--- The Great Highland Bagpipe
        . . .             Las Gaitas
       . . .
      . . .            Michael Hunter
     . . .             ARPA  : oxy!bagpiper@csvax.caltech.edu
     -----             BITNET: oxy!bagpiper@hamlet.bitnet
    |     |            CSNET : oxy!bagpiper%csvax.caltech.edu@relay.cs.net
   |   I   |          UUCP  : ....{seismo, ruthers, ames}!cit-vax!oxy!bagpiper
    |  I  |            usmail: box 241
     -----                     Occidental College
       I                       Los Angeles, CA   90041
       I
      _I_               Note: If you know the word for Bagpipe in a language
                              that is not listed...Tell Me.

------------------------------


Date: 13 May 87 14:30:00 EDT
From: "ARTIC::GAYMAN" <gayman%artic.decnet@ARI-HQ1.ARPA>
Subject: Speech synthesis hardware and software



                           Speech Synthesis Devices

We would appreciate any information you have regarding speech synthesis
"devices" that can read text files.  We are expecting to hire a visually
handicapped person at our site and the speech synthesis approach seems best 
for this situation - although all suggestions are welcome.

Please post to INFO-IBMPC@C.ISI.EDU as I am not a subscriber to this list.

Elizabeth Gayman (GAYMAN@ARI-HQ1.ARPA)

------------------------------


Date: 13 May 1987 16:40:45 PDT
Subject: Speech Synthesis Hardware and Software
From: Billy <BRACKENRIDGE@C.ISI.EDU>
To: "ARTIC::GAYMAN" <gayman%artic.decnet@ARI-HQ1.ARPA>

There are a dozen or so companies making text to speech based systems
for blind people. Most systems use some sort of text to speech device
connected by a serial port. Some programs are quite elaborate and
allow people to use screen oriented programs like Lotus. Here is a
list of sources. I think it would be a nice service if people would
send in their experiences with these companies. We could compile a
database that might be of use to blind (and perhaps deaf) people.

There are many companies who do text to speech for telephone
applications and as part of more elaborate speech recognition and
response systems. I have limited the list to those directly in the
handicapped market.

Computer Conversations
"Enhanced PC Talking Program"
2350 N 4th Street
Columbus Ohio 43202
(614)263-4324
Software that works with external text to speech synthesizers such as
DEC-Talk or Echo-PC. 

Telesensory Systems
VERT and Soft-VERT
455 N. Bernard Ave.
Mountain View, CA 94039
(415)960-0920
Software and hardware, however soft-vert works with external speech
synthesizers.

Computer Aids
Screentalk
124 West Washington, Lower Arcade
Ft. Wayne, Indiana 46802
(219)422-2425
Software

Street Electronics
Echo PC
P.O. Box 50220
Santa Barbara, CA 93150
(805)565-1612
RS232 and PC Cards that do text to speech less than $200

Digital Equipment Corp
DEC-Talk
Contact your friendly local DEC Salesperson
RS232 text to speech greater than $2,000

Personal Data Systems
Noel Runyon
638 Sobrato LN
Campbell, CA 95008
Software and hardware coming "real soon now". I don't know Noel but
many in the industry expect the next generation in PC based
aids for the blind to come from him.

Berkeley Speech Technology
(415)841-5083
Text to speech algorithms for OEMs who want to roll their own
product.


------------------------------
Date: Wed, 13 May 87 12:59 PDT
From: Mark Geisert <Mark-Geisert%LADC@HI-MULTICS.ARPA>
Subject: Ampro LittleBoard/PC


Greetings NetLandians.....
I would be interested in hearing of the experiences of any of you who
have used the above product.  I'm most interested in whether it is
truly compatible with MS-DOS and PC-DOS as claimed.  Who makes the
ROM BIOS?  Any problems using add-on hardware?  Any problems at all?

(By the way, I'm talking about the LittleBoard/PC, not the older
LittleBoard.  The /PC product is a single board computer that fits
to a diskette drive and comes with a 7.15MHz V40, up to 768K RAM,
2 serial and 1 parallel port, SCSI port, 8087 socket, some amount
of EPROM space, mostly CMOS construction, piggyback video card, etc.)

Please reply to me directly.. I will summarize to net.
Thanks in advance,  ..mark   (Mark-Geisert%LADC@HI-MULTICS.ARPA)



------------------------------

End of Info-IBMPC Digest
************************


-------