home *** CD-ROM | disk | FTP | other *** search
- #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);}
-
- }
-