Jump to content

The package for A20 Line Always On processing (and more) in HIMEM.SYS


Recommended Posts

  • 9 months later...

Posted

For the sake of interest, I checked all this on an Intel H81:

0. 0_FIXED        WARNING: The A20 Line was already enabled
1. 1_PS_2        Windows protection error. You need to restart your computer.
2. 2__A20CONTROL_OFF    WARNING: The A20 Line was already enabled
2+1. 2_1_PREFERRED    WARNING: The A20 Line was already enabled
3. 3__ALWAYS_ON        Installed A20 handler number 19.
3+1. 3_1        Windows protection error. You need to restart your computer. (What's surprising is that the error occurs exactly once every other time.).

А20TEST.EXE (From the "Undocumented PC" floppy disk from 1996) in any case it gives the following:

  A20 CONTROL TEST                       v2.00 (c) 1994, 1996 FVG
  ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
  Tests the A20 gate state and keyboard controller status and the
  ability of the controller to change the A20 gate.   When A20 is
  enabled, memory is accessable above 1MB.    Otherwise, when A20
  is disabled, the system acts like an 8088.

  ДДДДДДДДДДДДДДДДДДДДДДДД Test Results ДДДДДДДДДДДДДДДДДДДДДДДДД

                          Verified    ДДД Keyboard Controller ДДД
  A20 Test                A20 State   Returned State     D0 Value
  ДДДДДДДДДДДДДДДДДДДД    ДДДДДДДДД   ДДДДДДДДДДДДДД     ДДДДДДДД
  Initial State           enabled     disabled           49h
  D1 Command disable      enabled     disabled           49h
  D1 Command enable       enabled     disabled           49h
  DD Command disable      enabled     disabled           49h
  DF Command enable       enabled     disabled           49h
 

Posted
1 hour ago, defuser said:

1. 1_PS_2        Windows protection error. You need to restart your computer.
3+1. 3_1        Windows protection error. You need to restart your computer. (What's surprising is that the error occurs exactly once every other time.).

Definitely some problem exists with PS/2 handler. What is the result on unpatched (original) HIMEM.SYS? And to check more precisely it is better to run himem in verbose mode:

device=himem.sys /v

1 hour ago, defuser said:

А20TEST.EXE (From the "Undocumented PC" floppy disk from 1996) in any case it gives the following

http://sweetlow.orgfree.com/download/a20speed.zip

The modern version of this kind of software.

Posted (edited)
2 hours ago, SweetLow said:

What is the result on unpatched (original) HIMEM.SYS? And to check more precisely it is better to run himem in verbose mode:

device=himem.sys /v

So he writes the following:

Quote

Installed A20 handler number 2.

64K High Memory Area (HMA) is available.

and WINDOWS starts normally (without errors). The old "A20TEST" (1996) gives the same as above. And here is the new one, the link to which you gave:

Quote

XMS Function Addr: 0762:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Enabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Enabled
Local Disabling: Success
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
3 Seconds Wait...
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
 

But I launched the original HIMEM.SYS (from 11.05.1998), as you wrote, only with the parameter "/V". Although usually (Beyond the current experiment) I also use additionally "/MACHINE:AT" (With it, the ScanDIsk disk check at the WINDOWS boot stage is MUCH faster), as well as the parameter "/NUMHANDLES=64".

Edited by defuser
Posted (edited)

--> Real A20 Line: Enabled

always

and

--> PS/2 A20 Line: Disabled

--> PS/2 A20 Line: Enabled

i.e. switchable.

It is usual behaviour of middle time hardware (Intel chipsets from 5* to 9* for example)

But the source of 

>Windows protection error. You need to restart your computer.

on patched PS/2 handler is unknown.

Edited by SweetLow
Posted
1 hour ago, SweetLow said:

It is usual behaviour of middle time hardware (Intel chipsets from 5* to 9* for example)

So which correction option is best suited for this case?

1 hour ago, SweetLow said:

But the source of 

>Windows protection error. You need to restart your computer.

on patched PS/2 handler is unknown.

I retested in combination with the new "A20TEST" variant and only with the "/V" parameter:

Quote

Installed A20 handler number 2.

64K High Memory Area (HMA) is available.

XMS Function Addr: 0762:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
Local Disabling: Error: 82h
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
 

However, the error when starting WINDOWS has not appeared again yet.

Posted (edited)

Can you provide reference results of "A20TEST" when it is guaranteed to work correctly, in the same form as presented above? To understand how it should actually be, under normal conditions.

Edited by defuser
Posted
2 minutes ago, defuser said:

So which correction option is best suited for this case?

2_1 - as readme states. And it's the best till it's working, of course.

4 minutes ago, defuser said:

I retested

Which of variants?

You have to test 2 variants:

1. Original HIMEM.SYS (NOT in package).

2. 1_PS_2

Without any options except /v.

And better with DOS=LOW in CONFIG.SYS (or without DOS too).

Posted (edited)
1 hour ago, SweetLow said:

You have to test 2 variants:

1. Original HIMEM.SYS (NOT in package).

2. 1_PS_2

Without any options except /v.

And better with DOS=LOW in CONFIG.SYS (or without DOS too).

Original HIMEM.SYS /v

Quote

A20TEST.EXE

XMS Function Addr: 0217:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
Local Disabling: Success
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
3 Seconds Wait...
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled

...

A20TEST.EXE /AT /PS2

XMS Function Addr: 0217:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Enabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Enabled
Local Disabling: Success
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
3 Seconds Wait...
  --> XMS A20 Line:  Disabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled

Fixed "1. 1_PS_2" /v

Quote

A20TEST.EXE

XMS Function Addr: 0217:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
Local Disabling: Error: 82h
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled

...

A20TEST.EXE /AT /PS2

XMS Function Addr: 0217:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
Local Disabling: Error: 82h
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled


"DOS=HIGH,UMB" is removed in this case. Only HIMEM.SYS is loaded with the single parameter "/v". HIMEM.SYS itself writes the same thing in both cases:

Quote

Installed A20 handler number 2.

64K High Memory Area (HMA) is available.

 

Edited by defuser
Posted (edited)
1 hour ago, SweetLow said:

2_1 - as readme states. And it's the best till it's working, of course.

On this configuration, this option does not work, as far as I understand:

Quote

XMS Function Addr: 0217:00CF
XMS Version: 03.00h (3.0)
Driver Version: 3.95 (03.5Fh)
HMA: Present
On Enter
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
Local Disabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
Local Enabling: Success
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
3 Seconds Wait...
  --> XMS A20 Line:  Enabled
  --> Real A20 Line: Enabled
  --> AT A20 Line:   Disabled
  --> PS/2 A20 Line: Disabled
 

 

Edited by defuser
Posted
Just now, defuser said:

On this configuration, this option does not work, as far as I understand:

No, it is working as expected - XMS state is exactly equal to the state of real hardware. Always On to be precise.

23 minutes ago, defuser said:

A20TEST.EXE

Ok, hardware is functioning as described above.

  • 2 weeks later...
Posted (edited)

Thank to @defuser testing:

http://sweetlow.orgfree.com/download/a20alwon.zip

1. Fixed bug of simultaneous using /TESTMEM:ON and /A20CONTROL:OFF.
Memory testing procedure relied on the state after /A20CONTROL:ON execution.
2. The code for the /A20CONTROL:OFF patch is made more generic
and yet at the same time simplified.

3. Added 3+2+1 variant of patch.
4. The difference of variants -1 and 3 from /A20CONTROL:OFF on the hardware
with the A20 Line Always On mentioned.
 

Edited by SweetLow
more descriptions

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...