• Please review our updated Terms and Rules here

Windows 95 running on Intel Inboard 386/PC on 5160 - patches and download available.

Mike1978

Experienced Member
Joined
Sep 6, 2020
Messages
169
Location
Sheffield UK
I finally cracked the uncrackable thanks to a lot of contributing factors, the emulation in UniPCEmu, the 4mb daughterboard by @stynx and @harrison.frazier and the pursuit to this quest many times by @Cimonvg

Also did a lot of research on the Inboard got some valuable input from Al Williams on the A20 gate and used comRade a tool for interfacing with real hardware over serial by Kevin Moonlight and a win95 port by Ahmad Byagowi.

Lots of continuing factors and of course the work going on by @ronnyroy may in future give us more ram and more modern Inboards.

So here’s how I cracked it, I ported the emulation to 86box I felt more at home with it and had help by AI Claude code, I emulated the inboard fixed up a few nuances around extended ram and then had a good place to intercept the things I couldn’t on actual hardware. I used interactions with real hardware to test hypothesis and prove it would work and then did an install on real hardware to the point before the monolithic vxd’s (virtual device drivers) would be combined into the vmm32.vxd

I then patched any of the vxd’s that would reference high IRQ’s looked for any broken gated a20 instructions and finally took inspiration from fast dooms XT keyboard port and the existing intel files to create a brand new vkd.vxd the keyboard driver in Windows 95 explicitly for an XT keyboard removing all calls to none existent AT keyboard calls that literally went unanswered and things like led and other keyboard controls. There was some patching of the inbrdpc.sys to remove an error loop that never exited and another patch for iret calls during set up and boot.

The emulation was invaluable and more details on the below GitHub page

The end product is a Windows 95 for XT and Inboard.

I’ve set up a GitHub and shared images 2gb CF images that load via xtide. You’ll also likely need the daughterboard to get up to the 5mb configuration.

This is still an early build there is still more to do like getting my sound, network and scsi devices supported but the main hurdle is done getting it to boot to desktop.


Some photos below show it running on my hardware..
 

Attachments

  • IMG_0735.jpeg
    IMG_0735.jpeg
    2.8 MB · Views: 29
  • 859107A7-D1BF-4D25-B79F-9600C608573F.jpeg
    859107A7-D1BF-4D25-B79F-9600C608573F.jpeg
    1.2 MB · Views: 29
  • 67E4810E-1C2C-4203-AFA8-52FD1A197855.jpeg
    67E4810E-1C2C-4203-AFA8-52FD1A197855.jpeg
    1.6 MB · Views: 28
Mike, I've been wanting for a while to port the Windows 3.0 InBoard drivers (the .386 files) to work on Windows 3.1 - looks like what you've done is somewhat related to that.

Any 8-bit SCSI card with Windows 95 drivers should do the trick for 32 bit disk access like a Future Domain TMC-850.
 
This is amazing! I will have to download your image and try it soon. Can you provide a listing of all the ISA cards you have installed with this set-up?
Inside:

Slot 1

Ati graphics ultra Mach 8 1MB card



Slot 2

3com 3c509b which supports 8bit mode.

I’ve moved Sergeys Floppy Rom here for the floppy controller allowing 1.44mb high density disks to work



Slot3

Creative Labs CT1600 Sound Blaster Pro 2 - cd cable is connected to the Nakamichi drive



Slot4

Trantor t130b scsi set to run in zero wait state



Slot5

Intel inboard 386/pc 1mb + 4mb community piggy back board.

CPU interposer I-O Data PK-A486BL 386 486 Blue Lightning Processor Upgrade CPU BL3 60MHz 486DLC including FPU

Crystal oscillator changed to 40Mhz from 32Mhz



Slot 6

Sergey Kisalev isa floppy disk and serial controller allowing high density 1.44mb fdd support and serial port Rom. I moved the floppy rom to the network I’ve added my RTC module here a SmartWatch+ Clock & Calendar Module's using a DS1315 by dJos. All to do with space constraints !


Slot 7

ISA to High-Speed ECP/EPP Parallel Port Card, INTEK21. (TK9901) Uses IRQ7 - I set this to be ECP/EPP through jumpers


Slot 8

Lo-Tech rev3 xtide with ribbon connecting to a cf socket externally - adding a 2gb cf card as boot device. Using a v20 Rom in xub to try and squeeze a little more speed

***********************************

So far using the stock Windows 95 driver I’ve got the network working selecting the isa version of the driver and setting it explicitly at the port address the card is on.

Video I’ve got working at 1024x768x256 but using the stock VGA driver - I’ve yet to get the Mach 8 driver working working theory is the addresses of the card might be being set high by Windows getting it working with its native driver is preferred for any card specific acceleration

Sound Blaster Pro driver currently causing a BSoD so again need to figure out.

Minor issue regionally with Model F when pressing \ I’m getting # that maybe just regional settings for the keyboard need to try

Final issue is if you do add new hardware and select have disk and hit browse it’s causing the screen to go black. Typing in the address of drivers though doesn’t cause the fault

So that’s where we are at for now. I’m adding issues on git as I go. There will be a small break in any attempted fixes as I’m taking a vacation. I did put a patch to try for the sound card but not had chance to test
 
Mike, I've been wanting for a while to port the Windows 3.0 InBoard drivers (the .386 files) to work on Windows 3.1 - looks like what you've done is somewhat related to that.

Any 8-bit SCSI card with Windows 95 drivers should do the trick for 32 bit disk access like a Future Domain TMC-850.
This has been done and Harrison above can probably link you to an image where it’s all ready set up. We’ve had Windows 3.11 fully working for a while, it just needed the two intel drivers adding to system.ini and referencing similar reason I had to make a new keyboard driver for Windows 95.

This is mainly for the XT referencing the XT keyboard directly and there’s a link between keyboard and a20 on the inboard, obviously trying to use an AT keyboard driver doesn’t work as there isn’t the hardware present on an XT

In terms of disk drivers SCSI should work you need to load the dos drivers ahead of Windows and Windows will inherit or Xtide also works fine.

I actually had a bluescsi off my Trantor T130b ahead of swapping back to XTIDE mainly so I had a small speed increase and also was kinder on the bus with SCSI devices at the same time.

Obviously the biggest slow down being the 4.77 isa bus speed.

If you have zero wait state on your SCSI devices it’s worth trying, it unlocked me being able to get the tape drive working and I’ve even managed to write a CD on the external CDRW by modifying a version of Gear to work with my more modern CDRW drive on the external SCSI enclosure.. let me be specific here the caveat being under Windows 3.11 - all this to recreate and try on more later software under Windows 95.

Lots of wasted hours and experimenting.

I’ll be writing some things up if there’s interest further.
 
Last edited:
Have you been able to run WFW3.11?
Yes Windows 3.11 has been working for sometime and completely stable I can’t take the credit for it but it had inspired me to want to go that one step further with Windows 95. There are posts on here with disk images. If they can’t be found then reach out.
 
First, congratulations on the breakthrough.

My attempt (still ongoing).
First, did take the new drivers to my IBM5150a , where i have a windows95 installed. But no way it would start.
Then switched the motherboard for the ibm XT. And at this point i have safe mode and mouse control - "all" working. :)
My setup is different - i have future domain scsi. And perhaps of that, the new INBRDPC.SYS do not work. (still have remesis of core IO.SYS, from old install - dont know, if it matter?). And i have Helix Netroom for memory manager , i get alot of "parity error at:????" , when i use himem.sys :unsure:

My procedure - copy the "win95 and patch and windows" directory from the pre-monolith.ISO-fil to my SCSI disk.
.. i had to produce a ENABLE.VXD , but it worked out.
If i try to run windows normaly , i get BSOD "VMOUSE(03) + 0000330D to device "VKD ", service 10 ..... ??
Well going on hollyday (away from my hardware) - but looking forward to try again later :)
/cimonvg
 
First, congratulations on the breakthrough.

My attempt (still ongoing).
First, did take the new drivers to my IBM5150a , where i have a windows95 installed. But no way it would start.
Then switched the motherboard for the ibm XT. And at this point i have safe mode and mouse control - "all" working. :)
My setup is different - i have future domain scsi. And perhaps of that, the new INBRDPC.SYS do not work. (still have remesis of core IO.SYS, from old install - dont know, if it matter?). And i have Helix Netroom for memory manager , i get alot of "parity error at:????" , when i use himem.sys :unsure:

My procedure - copy the "win95 and patch and windows" directory from the pre-monolith.ISO-fil to my SCSI disk.
.. i had to produce a ENABLE.VXD , but it worked out.
If i try to run windows normaly , i get BSOD "VMOUSE(03) + 0000330D to device "VKD ", service 10 ..... ??
Well going on hollyday (away from my hardware) - but looking forward to try again later :)
/cimonvg
Hook up with me on your return the parity error is generally because the inbrdpc.sys is not loaded.

Worth checking the order in the autoexec.bat and config.sys as there was a secondary TSR that loads last

I’m unsure what enable.vxd is. I’m interested how you loaded safe mode as normally that would exclude loading autoexec.bat and config.sys so inbrdpc.sys wouldn’t be loaded and managing ram.

I am using standard himem.sys and emm386 directly from Windows 95 for memory management and it works alongside everything normally so far, feels better to use that. So check config.sys / autoexec.bat. If I recall 5150 had issues in windows 3.11 as well so if you have a 5160 it should work.

For scsi load any resident tsr’s in DOS first there might be some compatibility mode with doing so but Windows should then just adopt the drivers and inherit. I did this with my Trantor T130b and in Windows I see my cd roms, all 6 of them :) MO drive and zip and they all seem to be working.

I no longer have a 5150 to explore with but the 5160 is working fine.

I do have a few exotic cards but the underlying config is standard for COM1 configuration for serial and LPT1

COM1 to the primary serial communications port (using base I/O address 0x3F8 and IRQ 4) and LPT1 to the primary parallel line printer port (using base I/O address 0x378 and IRQ 7).

If it’s helpful I can share the low level configuration as below

5160 deep dive config

5160 board jumpers

SW1
1 Off normal setting
2 Off FPU supported
3 Off
4 Off
Enabled motherboard ram Enable banks 0/1/2/3
5 On
6 On
Cards with a Bios expansion Rom eg VGA
7 Off
8 On
Two floppy drives

Slot1
Ati Ultra Mach 8

Jumper settings JU1 top two pins of three jumped (8bit mode)
JU3 all pins open 2x3 pins

Slot 2
Sound Blaster Pro 2 CT1600
Jumpers
JP11 DMA/CTL of 3 pins pins 2-3 jumped
JP4 2 JY_EN pins jumped assume joystick enable
JP13,JP14 2 pins each JP13 jumped 22x assume 220 address
JP21,JP20,JP19,JP18 (IRQ 2,5,7,10) 2pins each JP20 (IRQ 5) Jumped
JP5-7 (DRQ 0,1,3) 2 pins each JP6 DRQ1 jumped
JP15,JP16,JP17 (DACK0,1,3) JP16 DACK1 jumped
JP1 PC SPK unused 2 pin header
SPK EN 2 pin jumped
JP2 8 pins Audio pwd? Pins 2-3 jumped
CD in connected to Nakamichi drive output
Mic connected external
Speakers connected externally

Slot 3
3com Etherlink III
3c509b-C
No jumpers, configured by software
Hosting Rom for Sergey Floppy drive
I/O base address 320h
IRQ3
Rom address D0000h-D1FFFh
Network driver optimisation DOS Client
Maximum Modem Speed - no modem
Plug n Play Disabled
Full Duplex Enabled

Slot 4
Trantor T130b
Led 4pin jumped unused
Switch block SW1
1 Off
2 On
= I/O Address 340H
3 Off
4 Off
5 On
= Rom address CA000H
6 Off
7 Off
8 Off Unused

JP2 0WS (zero wait state) 2 pins jumped zero wait state enabled

JP3
IRQ 3
IRQ 5
IRQ 7
All not jumped 2 pins each so running without IRQ

Slot 5
Intel inboard 386/pc 1mb + 4mb community piggy back board.
CPU interposer I-O Data PK-A486BL 386 486 Blue Lightning Processor Upgrade CPU BL3 60MHz 486DLC including FPU
Crystal oscillator changed to 40Mhz from 32mhz

Slot 6
ISA Floppy Disk and Serial Controller Sergey Kisalev 2012
SW1
1 Off
2 On IRQ 4 (com1)
3-7 Off
8 On com1 0x3f8

SW2
1-2 On enable Rom, eeprom write on
3-4 On
5 Off
6-7 On
11011 =0xC8000 Rom address
8 Off unused
Rom is hosting the SmartWatch+ by dJos at above address

Slot 7
Intel 21 TK9901 isa high speed ECP/EPP parallel port
IEEE 1284 supports speeds up to 2mb/ps
Labels on silk screen are TK-A0IE12

Jumpers, 3 position pins 1-3
JP6 378h 2-3 jumped
JP5 DMA 3, 2-3 jumped
JP4 IRQ7 2-3 jumped
JP3 DMA 3, 2-3 jumped
JP2 ECP/EPP 2-3 jumped
JP1 ECP/EPP 2-3 jumped

Slot 8
Xtide universal bios
XT-CF lotech v20 Rom written
Jumpers
JP1 Rom enable 2 pins jumped
JP2 Rom address 2pins open D800h
JP3 slot 8 enable 2 pins jumped
 
Just a follow up you need both the vkd.vxd and keyboard.drv present for the keyboard to work referenced in system.ini I need to check git and update accordingly a few things. Vkd.vxd has to be in the monolithic vmm32.vxd but keyboard.drv
can be added later it has to be the one from my repo as both were patched to get the XT keyboard working and referenced in system.ini.

Mike
 
The bare install I did ahead of the monolithic vmm32.vxd creation is before the hardware is detected. Literally you install the software it asks to reboot at this stage I took the image - the second stage boot creates the monolithic vmm32.vxd, this is the window in which then you can modify the vxd’s and patch accordingly, so should be pretty universal, I didn’t do the detect hardware in the first stage eg network / sound / cdrom to keep things simple, as all that can be done via add new hardware later. This should be pretty universal. So there are the 3 VxD files vmad, vpicd and vkd a TSR that sits in autoexec.bat, a modified inbrdpc.sys and keyboard.drv that were modified. Everything else is stock Win95 OSR1. I’m on vacation but will pick up when I return on the bugs to date and tidy up git. I’ll also be attempting OSR2.

Additionally this was great another user used my build to get his XT based self devised board running also https://maniek86.xyz/
 
First, congratulations on the breakthrough.

My attempt (still ongoing).
First, did take the new drivers to my IBM5150a , where i have a windows95 installed. But no way it would start.
Then switched the motherboard for the ibm XT. And at this point i have safe mode and mouse control - "all" working. :)
My setup is different - i have future domain scsi. And perhaps of that, the new INBRDPC.SYS do not work. (still have remesis of core IO.SYS, from old install - dont know, if it matter?). And i have Helix Netroom for memory manager , i get alot of "parity error at:????" , when i use himem.sys :unsure:

My procedure - copy the "win95 and patch and windows" directory from the pre-monolith.ISO-fil to my SCSI disk.
.. i had to produce a ENABLE.VXD , but it worked out.
If i try to run windows normaly , i get BSOD "VMOUSE(03) + 0000330D to device "VKD ", service 10 ..... ??
Well going on hollyday (away from my hardware) - but looking forward to try again later :)
/cimonvg
Have you tried running this in the dev. branch of 86Box? The reason I ask is Inboard 386 support was recently added to 86Box, and it's much, much easier to debug these kind of hardware/software combinations there (such as your SCSI card).
 
Have you tried running this in the dev. branch of 86Box? The reason I ask is Inboard 386 support was recently added to 86Box, and it's much, much easier to debug these kind of hardware/software combinations there (such as your SCSI card).
Yes it came from my project. I believe there was a small issue introduced with it which I’ll rectify after my vacation.

It was a migration of the code from unipcemu by SuperFury but I found his emulation a little tricky to work with so I ported it to 86box it had other emulation I wanted and it allowed me to develop the build. I did end up fixing a few issues in the build with the emulation of extended ram to match the 4mb on the daughterboard and 1mb on the inboard. He had a bug that meant it was running at 6mb.

I’ll be sorting the issues on my return. There’s also the build I used on my GitHub.
 
Yes it came from my project. I believe there was a small issue introduced with it which I’ll rectify after my vacation.

It was a migration of the code from unipcemu by SuperFury but I found his emulation a little tricky to work with so I ported it to 86box it had other emulation I wanted and it allowed me to develop the build. I did end up fixing a few issues in the build with the emulation of extended ram to match the 4mb on the daughterboard and 1mb on the inboard. He had a bug that meant it was running at 6mb.

I’ll be sorting the issues on my return. There’s also the build I used on my GitHub.
Indeed you did - I saw your PRs and commits coming through! I was responding to Cimonvg, wondering if he was able to get his various combinations of hardware/software working in an emulator.
 
Back
Top