summaryrefslogtreecommitdiff
path: root/v4.0/src/INC/SYSVAR.C
diff options
context:
space:
mode:
authorGravatar Mark Zbikowski2024-04-25 21:24:10 +0100
committerGravatar Microsoft Open Source2024-04-25 22:32:27 +0000
commit2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch)
tree80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/INC/SYSVAR.C
parentMerge pull request #430 from jpbaltazar/typoptbr (diff)
downloadms-dos-main.tar.gz
ms-dos-main.tar.xz
ms-dos-main.zip
MZ is back!HEADmain
Diffstat (limited to 'v4.0/src/INC/SYSVAR.C')
-rw-r--r--v4.0/src/INC/SYSVAR.C49
1 files changed, 49 insertions, 0 deletions
diff --git a/v4.0/src/INC/SYSVAR.C b/v4.0/src/INC/SYSVAR.C
new file mode 100644
index 0000000..300d02f
--- /dev/null
+++ b/v4.0/src/INC/SYSVAR.C
@@ -0,0 +1,49 @@
1/* return the system variables in sysVars */
2
3#include "sysvar.h"
4#include <dos.h>
5#include "jointype.h"
6
7GetVars(pSVars)
8struct sysVarsType *pSVars ;
9{
10 struct sysVarsType far *vptr ;
11 int i ;
12
13 union REGS ir ;
14 register union REGS *iregs = &ir ; /* Used for DOS calls */
15 struct SREGS syssegs ;
16
17 iregs->h.ah = GETVARS ; /* Function 0x52 */
18 intdosx(iregs, iregs, &syssegs) ;
19
20 *(long *)(&vptr) = (((long)syssegs.es) << 16)+(iregs->x.bx & 0xffffL) ;
21
22 for (i=0 ; i <= sizeof(*pSVars) ; i++)
23 *((char *)pSVars+i) = *((char far *)vptr+i) ;
24
25}
26
27
28
29
30PutVars(pSVars)
31struct sysVarsType *pSVars ;
32{
33 struct sysVarsType far *vptr ;
34 int i ;
35
36 union REGS ir ;
37 register union REGS *iregs = &ir ; /* Used for DOS calls */
38 struct SREGS syssegs ;
39
40 iregs->h.ah = GETVARS ; /* Function 0x52 */
41 intdosx(iregs, iregs, &syssegs) ;
42
43 *(long *)(&vptr) = (((long)syssegs.es) << 16)+(iregs->x.bx & 0xffffL) ;
44
45 for (i=0 ; i <= sizeof(*pSVars) ; i++)
46 *((char far *)vptr+i) = *((char *)pSVars+i) ;
47
48}
49 \ No newline at end of file