home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1999 January / Simtel-MSDOS-Jan1999-CD2.iso / sysutl / switchar.pas < prev    next >
Pascal/Delphi Source File  |  1998-12-10  |  1KB  |  60 lines

  1. (*
  2. ** switchar.pas
  3. **
  4. ** This program changes the system switch character.  It uses
  5. ** the undocumented system call int 21H, function 37H.
  6. *)
  7.  
  8. program switchar;
  9.  
  10. type
  11.   regpack = record
  12.     ax,bx,cx,dx,bp,si,di,ds,es,flags: integer;
  13.   end;
  14.  
  15. var
  16.   recpack: regpack;
  17.   argumentstr: string[80];
  18.   old_switchar: char;
  19.   new_switchar: char;
  20.  
  21.  
  22. function getswitchar: char;
  23.  
  24. begin
  25.   recpack.ax := $37 shl 8;
  26.   msdos(recpack);
  27.   getswitchar := chr(recpack.dx and $00ff)
  28. end;
  29.  
  30.  
  31. procedure setswitchar(new_char: char);
  32.  
  33. begin
  34.   with recpack do begin
  35.     ax := ($37 shl 8) + 1;
  36.     dx := ord(new_char)
  37.   end;
  38.   msdos(recpack)
  39. end;
  40.  
  41.  
  42. begin { main }
  43.   lowvideo;
  44.   if paramcount <> 1 then begin
  45.     writeln('This program changes the system switch character.');
  46.     writeln('Usage: switchar char');
  47.     halt
  48.   end;
  49.   argumentstr := paramstr(1);
  50.   if length(argumentstr) <> 1 then begin
  51.     writeln('switchar: expecting single character argument');
  52.     halt
  53.   end;
  54.   old_switchar := getswitchar;
  55.   writeln('Old switch char = ', old_switchar);
  56.   setswitchar(argumentstr[1]);
  57.   new_switchar := getswitchar;
  58.   writeln('New switch char = ', new_switchar)
  59. end.
  60.