Abstract:
This invention provides a universal interface system that is capable of launching software applications across operating system platforms. For example, the universal interface system allows a computer using a Microsoft Windows operating system to launch and execute software applications that were written for a UNIX operating system environment. Conversely, the universal interface system allows software applications written for a Linux operating system environment to be launched and operating in a Sun Solaris operating system environment. The universal interface system may interface between the BIOS and the operating system or operate on top of the operating system.

Description:
CLAIM OF PRIORITY 
     The following co-pending and commonly assigned U.S. provisional patent application was filed on Apr. 24, 2000, having U.S. Provisional Patent Application Ser. No. 60/199,293, entitled “A Universal Interface System.” 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to a system for providing a universal interface system. Specifically, the invention relates to a software interface for proprietary hardware that may act between the Basic Input Output System (BIOS) and the operating system or specific applications, or between the operating system and specific applications. 
     2. Related Art 
     When a personal computer is initially started, the boot process executes a series of complex instructions to ensure that the components are properly functioning. The computer executes a power-on self test (“POST”) to check the functionality of the central processing unit (“CPU”) and the memory. In the initiation of a POST, an electrical signal following a permanently programed path to the CPU clears any leftover data from the internal proprietary memory registers. The discrete signal also resets the program counter to typically the hexadecimal number of F000. This number instructs the CPU of the next instruction that requires processing. This address is the start of the boot program typically stored in read only memory (ROM) that contains the basic input/output system (“BIOS”). The BIOS boot program invokes a series of systems checks including reading code located in various memory locations and checking the code against identical records stored in the BIOS chip set or some other CMOS chip. 
     The boot operation typically performs the POST and searches for the operating system. Once the operating system is found, the system files are read and copied into random access memory (“RAM”). Typically, each computer has only one operating system. In a disk operating system environment, once the boot record loads the IO.SYS files into RAM the SYSINIT routine is called that manages the remaining part of the boot process. The SYSINIT loads the MSDOS.SYS into RAM and works to manage the files, execute programs and respond to hardware commands. Other operating system files that may be launched are COMMAND.COM and AUTOEXEC.BAT. 
     Due to interoperability problems there exists a need for a software system to interface between the BIOS and the operating system. For example, often there is a need to operate a Windows based application contemporaneously with a UNIX based application. Without interface software, a Windows operating system will not execute a UNIX application and vice versa. There also is a need for a software system interface to act between the microprocessor BIOS and specific application or between the operating system and specific applications. These problems often exist when computer systems seek to launch or share programs across a variety of platforms and operating system releases. 
    
    
     BRIEF DESCRIPTION OF THE FIGURES 
     The invention can be better understood with reference to the following figures. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principals of the invention. Moreover, in the figures, like reference numerals designate corresponding parts throughout the different views. 
     FIG. 1 illustrates a block diagram of the universal interface system relative to the chip Basic Input Output System (BIOS), operating system, and/or applications operating via the operating system of the microprocessor. 
     FIG. 2 illustrates a block diagram of the execution of the universal interface system during the power-on self test (“POST”) operation. 
     FIG. 3 illustrates a block diagram of the execution of the universal interface system during the power-on self test (“POST”) operation. 
     FIG. 4 illustrates a block diagram of the execution of software applications independent of the operating system. 
    
    
     SUMMARY 
     This invention provides a universal interface system that is capable of launching software applications across a variety of operating system platforms. For example, the universal interface system allows a computer using a Microsoft Windows operating system to launch and execute software applications that were written for a Novelle, UNIX, ATM, etc. operating system environment. Conversely, the universal interface system allows software applications compiled for one operating system environment to be launched and operate in either the same or a second and different operating system environment where the software application is not compiled to operate in. The universal interface system may interface between the proprietary integrated circuits, the BIOS and the operating system(s) or operate simultaneously with another operating system. 
     The universal interface system implements three math tables that create equations capable of manipulating the software application&#39;s instructions such that the functionality of the application shells operate independent of the operating system. The first math table K implements the memory allocation and memory functionality. The universal interface system then implements a second math table K(x) on top of the first math table K using functions from the first math table. Operation of the third math table&#39;s formulas involves loading the variables into memory will equate the values that run in the shells. The first math table K equates to f(x) in the following equations and is the function of a variable where K is the math table of that variable. The variable f(x) is typically in hexadecimal format and the input/output number is typically in a decimal format. The actual input/output that the firmware uses is typically in a decimal format and the software values in a hexadecimal format. 
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The universal interface application may be implemented during the initial boot-up of a computer or on an operating computer. FIG. 1 illustrates a block diagram of the universal interface application relative to the chip Basic Input Output System (BIOS), operating system, and/or applications operating via the operating system of the microprocessor. The universal interface system  100  may interact with the standard BIOS  102  in a microprocessor or may act as firmware BIOS  104  on a specialized chip  106  designed to optimize the universal interface system  108  code. The universal interface system  100  or  108  may also interact with various operating systems  110  and  112 . Or the software applications  114  may interact with the operating systems  110  and  112  or directly with the universal interface system  100  and  108 . 
     FIG. 2 illustrates a block diagram of the execution of the universal interface application during the power-on self-test (“POST”) operation. When a computer is initially turned on, it performs a POST operation  200 . If the universal interface system is installed on the computer, during the POST operation additional tasks are performed. A first math table K  202  is selected for the BIOS, and next the system components  204  are identified. 
     The first math table uses the Feigenbaum constants to determine values where ƒ(x)=αx(1−x), and where a is a constant. The interval [0,1] is mapped into itself by ƒ for each value of a ε[0,4]. These functions, parametrized by the constant α, is known as a family of logical maps. The 1-cycles of ƒ or the fixed points of ƒ are obtained by solving x=ƒ(x). Therefore, for x=0 (attracts for α&lt;1 and repels for α&gt;1), and        x   =       a   -   1     a                            
     (attracts for 1&lt;α&lt;3 and repels for α&gt;3). 
     The 2-cycle or the fixed points of the iterate ƒ 2  that are not fixed points of ƒ are obtained from solving: 
     
       
           x=ƒ   2 ( x ) 
       
     
     
       
           x =ƒ( x ) 
       
     
     obtains the 2-cycle fixed points        x   =       a   =     1   ±       (       a   2     -     2      a     -   3     )       1   2             2      a                              
     This equation produces values that attract for 3&lt;α&lt;1+{square root over (6)} and repels for α&gt;1+{square root over (6)}. For α&gt;1+{square root over (6)}=3.4495, an attracting 4-cycle emerges. A 4-cycle may be obtained numerically by solving: 
     
       
           x=ƒ   4 ( x ) 
       
     
     
       
           x=ƒ   2 ( x ) 
       
     
     The 4-cycle attracts for 3.45595 . . . &lt;a&lt;3.5441 . . . and repels for a&gt;3.5441 . . . For α&gt;3.5441 . . . , an attracting 8-cycle emerges. An 8-cycle may be obtained numerically by solving: 
     
       
           x=ƒ   8 ( x ) 
       
     
     
       
           x=ƒ   4 ( x ) 
       
     
     The 8-cycle attracts for 3.5441 . . . &lt;α&lt;3.5644 . . . and repels for α&gt;3.5644 . . . This sequence of period doubling bifurcations stops short of 4. Letting: 
     
       
         α 0 =1, α 1 =3, α 2 =1+{square root over (6=3.4495 . . . ,)} α 3 =3.5441 . . . , α 4 3.5644 . . .  
       
     
     denotes the cascade of bifurcations. 
     If the system component identification is not complete  206 , additional steps to identify all the system components  204  is performed. Values are loaded  208  into the system based on the math table K in memory. The first math table K implements the memory allocation and functionality. The universal interface system then implements a second math table K(x)  210  on top of the first math table K using functions from the first math table. The first and the second math table are then compiled  212  and stored in memory. Connector A  214  links FIGS. 2 and 3. 
     The first math table K is typically loaded into random access memory (RAM)  300  and the memory locations F000 to C700 are cleared  302 . A specialized flash boot of the computer system  304  is performed. The specialized flash boot clears out certain memory locations for storage or new functions of the math tables. The universal interface system reloads the memory locations F000 to C700 for storage of the second math table K(x)  306 . 
     For the second math table K(x), the Madelung&#39;s constant equations are used.          M   2     =       ∑     i   ,     j   =     -   ∞         ∞              (     -   1     )       i   +   j             i   2     +     i   2                       M   2     =       4          (       2   -   1       )     ·     ∂     (     1   2     )       ·     β        (     1   2     )           =       -   1.6155426267                   …                 M   3     =       ∑     i   ,   j   ,     k   =     -   ∞         ∞              (     -   1     )       i   +   j   +   k             i   2     +     j   2     +     k   2                       M   3     =       12      x          ∑     m   ,   n   ,     =   1       ∞          sec                     h   2          [       x   2                (       2      m     -   1     )     2     +       (       2      n     -   1     )     2           ]             =       -   1.7475645946                   …                              
     The universal interface system ensures that the variables are not set with denominative values  310  and loads the third math table K(f) typically upon the start up of the computer system  312 . However, for execution of an application, the third math table K(f) is not limited only upon start up of the computer but may be loaded after the computer is operational. Operation of the third math table&#39;s formulas involves loading the variables into memory, typically RAM, that will equate the values that run in the shells. The first math table K equates to f(x) in the following equations and is the function of a variable where K is the math table of that variable. The variable f(x) is typically in hexadecimal format and the input/output number is typically in a decimal format. The actual input/output that the firmware uses is typically in a decimal format and the software values in a hexadecimal format. The universal interface system will decide if the attached peripheral devices may be determined that are connected to the CMOS chip found in almost all computer systems. The universal interface system will use an extremely large number such as infinity over sigma n equal to 1 or the derivative of n equal to 1, as long as it&#39;s a positive integer value. 
     If the series converges in the generation of the third math table, the remainder R N  equals the series of −S N , the exact sum of an infinite series. The third math table may be utilized for the system manager and operates according to implementation of the following sets of formulas. The value of x in the right side of the following Fourier Transform, Cosine Transform and Sine Transform equations respectively, is the value supplied from operation of the second math table K(x). 
     
       
         ƒ( x )=1 /x (2 x ) x x g ( t ) e{circumflex over ( )}   (itx)   dt   
       
     
     
       
         ƒ( x )= x (2 /x ) x x g ( x )cos( xt ) dt   
       
     
     
       
         ƒ( x )= x (2 /x ) x x g ( x )sin( xt ) dt   
       
     
     The Fourier Transform is best utilized in transmitting a data packet, the Cosine Transform is best used when precise bandwidths are required, while the Sine Transform is used for data compression. Both the Cosine and Sine Transforms may be used interchangeably. 
     The p-Series convergence is determined by:            ∑     n   =   1     ∞          1   /     n   p         =       1   /     1   p       +     1   /     2   p       +     1   /     3   p       +   …                            
     where p&gt;0 by definition. If p&gt;1 then the series converges. This occurs for approximately 90% of the programs, where p&lt;=1, then the series diverges, and the program will not operate. 
     The nth-Term is tested for divergence such that if the sequence {a n } does not converge to zero, then the series          ∑     n   =   1     ∞          a   n                            
     diverges. 
     The special cases of Fourier Integral is used where x is the hexadecimal value. If ƒ(x)=ƒ(−x) then: 
     
       
         ƒ( x )=2 /PI ∫ 0   ∞ cos  xy dy ∫   0   ∞ ƒ( t )cos  yt dt   
       
     
     Where, if ƒ(−x)=−ƒ(x) then: 
     
       
         ƒ( x )=2 /PI∫   0   28  sin  xy dy∫   0   ∞ sin  yt dt   
       
     
     The integral test is used to provide t he value of n in terms of i. If for all n&gt;=1, then f(n)=α n  and ƒ is positive and continuous, then:          ∑     n   =   1     ∞            a   n                   a                 n                 d                     ∫   1   ∞          a   n                                
     and convergence occurs. If the above series converges, then the remainder R N =S−S N , where S is the exact sum of the infinite series and S N  is the sum of the first N terms of the series. R N  is bounded by: 
     
       
         0 &lt;=R   N &lt;=∫( N  . . . ∞)ƒ( x ) dx   
       
     
     The third math table K(f) may be created using the following formulas. Using the following Fourier and Inverse Fourier Transforms where i is the shell value needed to run the operation. The Fourier Transforms are the last value added before the shell integration.          f        (   x   )       =     1          (     2      π     )              ∫   ∞   ∞            g        (   t   )                 ⋀     (                      t                 x     )                 t                     g        (   x   )       =     1          (     2      π     )              ∫   ∞   ∞            f        (   t   )                 ^     (                      t                 x     )                 t                                  
     In a Microsoft Windows environment, the system manager is used to manipulate the relationship between the firmware interrupts and the application source. The universal interface system queries whether a custom system manager is to be loaded  314 . If a custom system manager is selected  316 , the custom system manager is loaded  316  and executed  318 . If a custom system manager is not selected  314 , the standard registry is implemented  320  and a standard system manager is loaded  322 . Once the custom system manager is executed  318  or the standard system manager is loaded  322 , a third math table K(f) is created  324 . In a non-Windows operating system environment, the need for a system manager is not required and a custom system manager may be implemented for convenience. 
     The universal interface system activates or deactivates system hardware or firmware as needed  326  and optimizes conventional memory  328 . The root directories are then read and any software applications are run as if in their original design shell  330 . The software applications are then executed  332  when selected. 
     Although described with particular reference to implementation upon start up of a computer, the universal interface application may be implemented at any time during the operation of the computer. The implementation of the universal interface application may occur in firmware or software, and be capable of interfacing at the BIOS level or the operating system level. The universal interface system may also be implemented using a specialized integrated circuit with the system operating as the firmware for the integrated circuit. The universal interface system may also operate across a variety of operating systems and be able to translate software applications so that they can operate cross any operating system. Furthermore, the universal interface system is applicable to any system where it is desirable to implement a variety of cross operating system platforms. 
     FIG. 4 illustrates a block diagram of the execution of software applications independent of the operating system. A first math table K  400  is selected and implemented. The first math table uses the Feigenbaum constants to determine values where ƒ(x)=αx(1−x), and where a is a constant. The interval [0, 1] is mapped into itself by ƒ for each value of a ε[0, 4]. These functions, parametrized by the constant α, is known as a family of logical maps. The 1-cycles of ƒ or the fixed points of ƒ are obtained by solving x=ƒ(x). Therefore, for x=0 (attracts for α&lt;1 and repels for α&gt;1), and        x   =       a   -   1     a                            
     (attracts for 1&lt;α&lt;3 and repels for α&gt;3). 
     The 2-cycle or the fixed points of the iterate ƒ 2  that are not fixed points of ƒ are obtained from solving: 
     
       
           x=ƒ   2 ( x ) 
       
     
     
       
           x =ƒ( x ) 
       
     
     obtains the 2-cycle fixed points        x   =       a   =     1   ±       (       a   2     -     2      a     -   3     )       1   2             2      a                              
     This equation produces values that attract for 3&lt;α&lt;1+{square root over (6)} and repels for α&gt;1+{square root over (6)}. For α&gt;1+{square root over (6)}=3.4495, an attracting 4-cycle emerges. A 4-cycle maybe obtained numerically by solving: 
     
       
           x=ƒ   4 ( x ) 
       
     
       x=ƒ   2 ( x ) 
     The 4-cycle attracts for 3.45595 . . . &lt;a&lt;3.5441 . . . and repels for a&gt;3.5441 . . . For α&gt;3.5441 . . . , an attracting 8-cycle emerges. An 8-cycle may be obtained numerically by solving: 
     
       
           x=ƒ   8 ( x ) 
       
     
     
       
           x=ƒ   4 ( x ) 
       
     
     The 8-cycle attracts for 3.5441 . . . &lt;α&lt;3.5644 . . . and repels for α&gt;3.5644 . . . This sequence of period doubling bifurcations stops short of 4. Letting: 
     
       
         α 0 =1, α 1 =3, α 2 =1+{square root over (6=3.4495 . . . ,)} α 3 =3.5441 . . . , α 4 3.5644 . . .  
       
     
     denotes the cascade of bifurcations. 
     Values are loaded  402  into the system based on the math table K in memory. The first math table K implements the memory allocation and functionality. The universal interface system then implements a second math table K(x)  404  on top of the first math table K using functions from the first math table. The first and the second math table are then compiled  406  and  408  and stored in memory. 
     For the second math table K(x), the Madelung&#39;s constant equations are used.          M   2     =       ∑     i   ,     j   =     -   ∞         ∞              (     -   1     )       i   +   j             i   2     +     i   2                                            M   2     =         (     4          2   -   1         )     ·     ∂     (     1   2     )       ·     β        (     1   2     )         =       -   1.6155426267                   …                 M   3     =       ∑     i   ,   j   ,     k   =     -   ∞         ∞                         (     -   1     )       i   +   j   +   k             i   2     +     j   2     +     k   2                       M   3     =       12      x          ∑     m   ,     n   =   1       ∞              sec      h     2          [       x   2                (       2      m     -   1     )     2     +       (       2      n     +   1     )     2           ]           =       -   1.7475645946                   …                               
     Operation of the third math table&#39;s formulas involves loading the variables into memory, typically RAM, that will equate the values that run in the shells. The first math table K equates to f(x) in the following equations and is the function of a variable where K is the math table of that variable. The variable f(x) is typically in hexadecimal format and the input/output number is typically in a decimal format. The actual input/output that the firmware uses is typically in a decimal format and the software values in a hexadecimal format. The universal interface system will use an extremely large number such as infinity over sigma n equal to 1 or the derivative of n equal to 1, as long as it&#39;s a positive integer value. 
     If the series converges in the generation of the third math table, the remainder R N  equals the series of −S N , the exact sum of an infinite series. The third math table may be utilized for the system manager and operates according to implementation of the following sets of formulas. The value of x in the right side of the following Fourier Transform, Cosine Transform and Sine Transform equations respectively, is the value supplied from operation of the second math table K(x). 
     
       
         ƒ( x )=1 /x (2 x ) x x g ( t ) e{circumflex over ( )}   (itx)   dt   
       
     
     
       
         ƒ( x )= x (2 /x ) x x g ( x )cos( xt ) dt   
       
     
     
       
         ƒ( x )= x (2 /x ) x x g ( x )sin( xt ) dt   
       
     
     The Fourier Transform is best utilized in transmitting a data packet, the Cosine Transform is best used when precise bandwidths are required, while the Sine Transform is used for data compression. Both the Cosine and Sine Transforms may be used interchangeably. 
     The p-Series convergence is determined by:            ∑     n   =   1     ∞                     1   /     n   p         =       1   /     1   p       +     1   /     2   p       +     1   /     3   p       +   …                            
     where p&gt;0 by definition. If p&gt;1 then the series converges. This occurs for approximately 90% of the programs, where p&lt;=1, then the series diverges, and the program will not operate. 
     The nth-Term is tested for divergence such that if the sequence {a n } does not converge to zero, then the series          ∑     n   =   1     ∞          a   n                            
     diverges. 
     The special cases of Fourier Integral is used where x is the hexadecimal value. If ƒ(x)=ƒ(−x) then: 
     
       
         ƒ( x )=2 /PI∫   0   ∞ cos  xy dy∫   0   ∞ƒ(   t )cos  yt dt   
       
     
     Where, if ƒ(−x)=−ƒ(x) then: 
     
       
         ƒ( x )=2 /PI∫   0   ∞ sin  xy dy∫   0   ∞ sin  yt dt   
       
     
     The integral test is used to provide the value of n in terms of i. If for all n&gt;=1, then f(n)=α n  and ƒ is positive and continuous, then:          ∑     n   =   1     ∞            a   n                   and                     ∫   1   ∞          a   n                                
     and convergence occurs. If the above series converges, then the remainder R N =S−S N , where S is the exact sum of the infinite series and S N  is the sum of the first N terms of the series. R N  is bounded by: 
     
       
         0 &lt;=R   N &lt;=∫( N  . . . ∞)ƒ( x ) dx   
       
     
     The third math table K(f) may be created using the following formulas. Using the following Fourier and Inverse Fourier Transforms where i is the shell value needed to run the operation. The Fourier Transforms are the last value added before the shell integration. 
     
       
         ƒ( x )=1{square root over ((2π))}∫ ∞   ∞   g ( t ) e{circumflex over ( )}   (itx)   dt   
       
     
     
       
           g ( x )=1{square root over ((2π))}∫ ∞   ∞ƒ(   t ) e{circumflex over ( )}   (−itx)   dt   
       
     
     Once a third math table K(f) is created and loaded into memory  410 , the software application may be executed independent of the operating system. 
     Furthermore, the universal interface system of the invention can be implemented in software, hardware, or a combination of hardware and software. In a preferred embodiment(s), selected portions of the universal interface system may be implemented in hardware and software. The hardware portion of the invention can be implemented using specialized hardware logic. The software portion can be stored in a memory and be executed by a suitable instruction execution system (microprocessor). The hardware implementation of the universal interface system may include any or a combination of the following technologies, which are all well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (“ASIC”) having appropriate logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc. 
     Furthermore, the universal interface system software that comprises an ordered listing of executable instructions for implementing logical functions, may be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. 
     In the context of this document, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (“RAM”), a read-only memory (“ROM”), an erasable programmable read-only memory (“EPROM” or Flash memory) (magnetic), an optical fiber (optical), and a portable compact disc read-only memory (“CD-ROM”) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory. 
     While various embodiments of the application have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible that are within the scope of this invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their equivalents.