home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
sysutl
/
addport.arc
/
ADDPORT.C
next >
Wrap
C/C++ Source or Header
|
1989-03-02
|
3KB
|
122 lines
#include "stdio.h"
main(argc, argv)
int argc;
char *argv[];
{
int port, address, test;
char current;
char far *c = (char far *)0x411;
int far *i0 = (int far *)0x400;
int far *i1 = (int far *)0x402;
int far *i2 = (int far *)0x404;
int far *i3 = (int far *)0x406;
current = *c;
test = current & 15;
if (argc != 3)
{
puts("\nUsage: ADDPORT <COMx> <BASE_ADDRESS_IN_HEX>");
puts(" (example: addport com3 3e8)\n");
puts("NOTE: if port already exists program may be used to change base address\n\n");
puts(" CURRENT CONFIGURATION:\n");
if (test <= 1){
puts("\n No Serial Ports installed!");
exit(99);}
printf(" COM1 : %x\n", *i0);
if (test >= 4){
printf(" COM2 : %x\n", *i1);}
if (test >= 6){
printf(" COM3 : %x\n", *i2);}
if (test >= 8){
printf(" COM4 : %x\n", *i3);}
exit (99);
}
else
port = (argv[1][3]-'1');
if (port < 0 || port > 3)
{
puts("\n\nInvalid port: only can add COM1, COM2, COM3 or COM4\n\n");
exit (99);
}
sscanf(argv[2],"%x",&address);
switch (port)
{
case 0 :
if (test <= 1){
current = current | 2;}
*i0 = address;
break;
case 1 :
if (*i0 == 0){
puts("\nYou must install COM1 first!");
exit(99);}
if (test < 4){
current = (current | 4) ^ 2;}
*i1 = address;
break;
case 2 :
if (*i1 == 0){
puts("\nYou must install COM2 first!");
exit(99);}
if (test < 6){
current = current | 2;}
*i2 = address;
break;
case 3 :
if (*i2 == 0){
puts("\nYou must install COM3 first!");
exit(99);}
if (test < 8){
current = current ^ 14;}
*i3 = address;
}
*c = current;
test = current & 15;
puts("\n NEW CONFIGURATION:\n");
if (test > 1){
printf(" COM1 : %x\n", *i0);}
if (test >=4){
printf(" COM2 : %x\n", *i1);}
if (test >= 6){
printf(" COM3 : %x\n", *i2);}
if (test >= 8){
printf(" COM4 : %x\n", *i3);}
}