commit a1e5dc32bc0e5dd4471044f97a8ec974b461655e Author: Natalia Portillo Date: Wed Jul 12 18:09:02 2000 +0100 Added DOS OEM code recognition diff --git a/ver.c b/ver.c new file mode 100644 index 0000000..6a5bc53 --- /dev/null +++ b/ver.c @@ -0,0 +1,143 @@ +/************************************************************************ + T h e O p e n W i n d o w s P r o j e c t + ------------------------------------------------------------------------ + + Filename : ver.c + Version : 0.01 + Author(s) : Natalia Portillo + + Component : OWP DOS subsystem + + --[ Description ]------------------------------------------------------- + + Says the DOS type and version. + + --[ History ] ---------------------------------------------------------- + + 0.00: Original file by Natalia Portillo. No DOS type. + 0.01: Tested with following DOSes obtaining: + DOS DOS Version DOS OEM Code + DR-DOS 7.03 6.0 0x00 + FreeDOS Beta 4 6.22 0xFD + MS-DOS 3.20 3.20 0x00 + MS-DOS 3.30 3.30 0x00 + MS-DOS 4.01 4.0 0xFF + MS-DOS 5.00 5.0 0xFF + PC-DOS 3.30 3.30 0x00 + Windows 98 S.E. 7.10 0xFF + Windows 2000 5.0 0xFF + + --[ How to compile ]---------------------------------------------------- + + Recommended compiler Borland Turbo C++ 1.01 + http://community.borland.com/museum + + --[ Where to get help/information ]------------------------------------- + + This archaic and abandoned software is opensource with no warranty + or help of any kind. + For inquiries contact claunia@claunia.com. + + --[ License ] ---------------------------------------------------------- + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License,or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not,write to the Free Software + Foundation,Inc.,59 Temple Place - Suite 330,Boston,MA 02111-1307,USA. + + ------------------------------------------------------------------------ + Copyright (c) 2000 The Open Windows Project +*************************************************************************/ + +#ifndef OWP_DOS_SUBSYSTEM +#define OWP_DOS_SUBSYSTEM +#endif + +#define SYSTEM "OWP" +#define PROGRAM "VER" +#define MAJOR_VERSION 0 +#define MINOR_VERSION_STRING "01" +#define SUB_VERSION_STRING "" +#define COPYRIGHT "2000 Open Windows Project" + +#include +#include + +void getdosver (int *major,int *minor,int *oem_code) +{ + union REGS regs; + regs.x.ax = 0x3000; + int86 (0x21,®s,®s); + *major = regs.h.al; + *minor = regs.h.ah; + *oem_code = regs.h.bh; +} + +main() +{ + int dos_major,dos_minor,dos_oem_code; + + printf("%s %s %d.%s%s",SYSTEM,PROGRAM,MAJOR_VERSION,MINOR_VERSION_STRING,SUB_VERSION_STRING); + printf("\nCopyright (c) %s\n\n",COPYRIGHT); + getdosver (&dos_major,&dos_minor,&dos_oem_code); + + if(dos_oem_code==0xFD) + { + printf("FreeDOS simulating DOS %d.%d",dos_major,dos_minor); + } + else if(dos_oem_code==0x00) + { + if(dos_major<=3) + { + printf("MS-DOS / PC-DOS %d.%d",dos_major,dos_minor); + } + else if(dos_major>=4) + { + printf("DR-DOS simulating DOS %d.%d",dos_major,dos_minor); + } + } + else if(dos_oem_code==0xFF && dos_major>=4 && dos_major <=6) + { + printf("MS-DOS / PC-DOS %d.%d",dos_major,dos_minor); + if(dos_major==5) + { + printf("\nNOTE: May be OS/2 / Windows NT simulating DOS 5.0"); + } + } + else if(dos_oem_code==0xFF && dos_major>=7) + { + if(dos_minor==0) + { + printf("Windows 95 simulating DOS 7.00"); + printf("\nNOTE: May be PC-DOS 7.0"); + } + else if(dos_minor==10) + { + printf("Windows 95 OSR 2 or upper simulating DOS 7.10"); + printf("\nNOTE: May be PC-DOS 7.1"); + } + else + { + printf("PC-DOS %d.%d",dos_major,dos_minor); + } + } + else if(dos_oem_code==0xFF && dos_major==3) + { + printf("MS-DOS %d.%d",dos_major,dos_minor); + } + else + { + printf("Unknown DOS version %d.%d,OEM code %x",dos_major,dos_minor,dos_oem_code); + printf("\nPlease send this info and the DOS name and version to iosglpgc@teleline.es"); + } +} +