-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathHistory.txt
More file actions
111 lines (96 loc) · 5.14 KB
/
History.txt
File metadata and controls
111 lines (96 loc) · 5.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
History
24.02.2026, v3.40:
- optional cmdline option /NMI added to make HimemX NMI aware.
- if unreal-mode is on, block copies are done with interrupts enabled.
12.03.2025, v3.39:
- function ah=0Eh (get handle information): returns now error A2h (invalid
handle) if size > 65535 kB. This is MS Himem compatible. Previously the
reported size was just truncated to 65535 kB.
21.11.2022, v3.38:
- options /MAX and /HMAMIN did only work correctly with decimal numbers
and no suffix.
16.12.2020, v3.37:
- block move routine speed-up.
- return DX=0 if emb allocation fails (XMS spec).
- bugfix: printf() did assume SS==DS.
10/29/2020, v3.36:
- bugfix: block moves >= 2GB failed due to signed comparison.
- remove unused and undocumented option /INT15:xx.
- removed useless option /NOX2MAX32.
- cleaned source code.
04/16/2020, v3.35:
- realloc emb will try to grow the emb "in-place" if possible. This is
similiar to what MS Himem does.
- requests for embs with size 0 are now handled the way MS Himem does.
- added a second version of HimemX.exe, called HimemX2.exe.
- bugfix: if no unused handles were available, shrinking an emb did modify
the block's size, although the call failed ( returned with error bl=A1 ).
02/04/2020, v3.34:
- the amount of extended memory restricted by /MAX doesn't include the
HMA.
- multiple free memory blocks reported by int 15h, ax=e820h can now be
handled.
- /LOG option has been removed, can be activated in the source code.
- /TESTMEM:ON|OFF option has been removed, since not implemented.
--/--/2009, v3.33:
03/13/2008, v3.32:
- the amount of extended memory restricted by /MAX does now include the
HMA. That means, a /MAX=2048k parameter restricts Himem to exactly
use range 0x100000-0x2FFFFF.
- TASM compatibility abandoned (didn't work with v3.31 either). Instead
source is now compatible with JWasm.
- binary size reduction.
07/23/2007, v3.31:
- bugfix: for MS-DOS v6.22 and below, HimemX damaged parts of its code
during initialization.
- bugfix: after PE bit is set on a 80386/80486, there must be at least
1 instruction before a segment register can be set. This wasn't true
in v3.30 using unreal mode.
04/29/2007: v3.30
- binary size reduction
04/19/2007, v3.29:
- bugfix: in XMS functions 08h/88h the BH register was modified.
- bugfix: global disable A20 does no longer disable A20 if the local
disable counter is > 0.
- UMBM.EXE added
04/13/2007, v3.28:
- bugfix: to mark unused handles FDHimem moves 01 ("free") into the flag
field of the XMS handle and clears base address and size. HimemX
marks unused handles by moving 04 ("unallocated") into the flag field,
which is the - documented - MS Himem way to do it.
- bugfix: FDHimem's "block move" implementation unconditionally enables
interrupts if cpu is in v86-mode. HimemX never enables interrupts if
IF is cleared on entry.
- bugfix: the "resize EMB" function (AH=0Fh/8Fh) of FDHimem is not
reentrant.
- bugfix: in real-mode, FDHimem switches to protected mode and sets DS,ES
to a flat, 4GB data selector to move to/from extended memory. After the
move DS and ES are not reset to a "standard" segment with FFFFh limit.
This in fact enables and keeps "unreal mode" unintentionally.
- bugfix: for XMS local disable A20 function, FDHimem does not test an
underflow condition of the counter (0 -> -1)
- bugfix: HimemX checks for a 80386 cpu *before* using 32bit opcodes, so
there is a true chance that this driver will not crash on a 80286.
- bugfix: FDHimem's hook code for int 15h, ah=87h does not return reported
status of carry flag to the caller.
- bugfix: FDHimem's implementation of function 0E (get handle info) might
have returned 0 for block size if block size was indeed exactly 64 MB.
- bugfix: FDHimem opens an "interrupt window" in v86-mode only. HimemX opens
an "interrupt window" in both v86- and real-mode.
- bugfix: if no extended memory is free, FDHimem doesn't allow to allocate
an EMB with size 0. MS Windows 9x needs this feature.
- in FDHimem the routine which tests whether A20 is enabled is more
complicated than necessary.
- in FDHimem the code which switches to protected-mode and back
sets/restores CS which is not necessary.
- some variables which don't have to be resident were moved to the _DATA
section, thus reducing size of the resident part.
- HimemX is written completely in ASM, the C part has been abandoned.
- unused code in resident part has been deactivated (proc delay2)
- default number of handles in HimemX is 48, in FDHimem it is 72.
- /X2MAX32 switch is off by default in HimemX, it is on in FDHimem.
- if extended memory is >= 64 MB, the size returned by XMS V2 function
is 65535 kB in HimemX, FDHimem returns 64448 kB.
- generally, the source was changed from TASM IDEAL to MASM format.
It still can be assembled by TASM, though. OW's WASM cannot be used.
- HimemX uses "unreal" mode for moving EMBs if cpu is not in v86-mode.