Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site voder.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxt!houxm!mtuxo!mtunh!mtung!mtunf!ariel!vax135!cornell!uw-beaver!tektronix!hplabs!nsc!voder!gbs
From: gbs@voder.UUCP (George Smith)
Newsgroups: net.micro.pc
Subject: Re: MS-DOS braindamage
Message-ID: <812@voder.UUCP>
Date: Mon, 8-Jul-85 02:39:39 EDT
Article-I.D.: voder.812
Posted: Mon Jul  8 02:39:39 1985
Date-Received: Fri, 12-Jul-85 04:52:01 EDT
References: <229@timeinc.UUCP> <7700007@prism.UUCP> <748@ncoast.UUCP>
Organization: National Semiconductor, Santa Clara
Lines: 87

The following refers to changing the switch character with the
undocumented int 21H, fucntion 37H:

> It didn't seem to work on here (ITT DOS 2.11/1.0, apparently MS-DOS 2.11),
> but that may have been a mistake of mine; I was trying to hack through it
> with DEBUG.COM, without much documentation.
> 

I ran the enclosed Turbo Pascal 3.0 program on my ITT Xtra with DOS 2.11
and it ran just fine.  I guess hacking through problems with debug just
doesn't cut it :-).  
   BTW, the Xtra seems to be quite compatible with IBM PC/XTs.  Every
piece of software that I have tried on it has run with no problems and
that includes some which have not run on a friend's Compaq.  At $1495
for 256k ram, 2 1/2 ht floppys, high resolution monochrome adapter and
monitor, 4 free full size slots, DOS 2.11, 128 watt power supply,
a serial port and a printer port, nicer keyboard layout than IBMs, a
smaller footprint than an XT, take it home and plug it in and it works
(unlike my venerable S100 system) I just couldn't resist it.  I plugged
in a Hercules Color Card (for $155) and hooked it up to an old Sanyo
composite video monitor and had very nice graphic capability for use with
Lotus ($279) and Turbo Pascal 3.0 ($39).  All prices mentioned were
from local computer stores here in Silicon Valley.

(*
** switchar.pas
**
** This program changes the system switch character.  It uses
** the undocumented system call int 21H, function 37H.
*)

program switchar;

type
  regpack = record
    ax,bx,cx,dx,bp,si,di,ds,es,flags: integer;
  end;

var
  recpack: regpack;
  argumentstr: string[80];
  old_switchar: char;
  new_switchar: char;


function getswitchar: char;

begin
  recpack.ax := $37 shl 8;
  msdos(recpack);
  getswitchar := chr(recpack.dx and $00ff)
end;


procedure setswitchar(new_char: char);

begin
  with recpack do begin
    ax := ($37 shl 8) + 1;
    dx := ord(new_char)
  end;
  msdos(recpack)
end;


begin { main }
  lowvideo;
  if paramcount <> 1 then begin
    writeln('This program changes the system switch character.');
    writeln('Usage: switchar char');
    halt
  end;
  argumentstr := paramstr(1);
  if length(argumentstr) <> 1 then begin
    writeln('switchar: expecting single character argument');
    halt
  end;
  old_switchar := getswitchar;
  writeln('Old switch char = ', old_switchar);
  setswitchar(argumentstr[1]);
  new_switchar := getswitchar;
  writeln('New switch char = ', new_switchar)
end.
-- 
George B. Smith
National Semiconductor
...!{ihnp4!nsc | decvax!decwrl!nsc | ucbvax}!voder!gbs