Re-enabling WinHelp on Windows 10

There was a shift years ago from the old help system that has it’s roots going back to Windows 3.0, and was certainly one of the killer features of Windows 3.0, the hyperlinked and searchable help files.  They were a form of compiled RTF files, and could also embed image resources, and later audio & video with the evolution of Windows.  This allowed for a platform for early multimedia encylopedias and other refrence books of sorts.

Starting with Windows Vista, however the WinHelp engine was being retired out for a CHM or compiled HTML help engine.  And for a whlie there optional updates and later downloads to re-enable WinHelp.  However starting with Windows 10 the downloads no longer work.

All is not lost however, if you copy any of the 32bit WinHelp programs from NT 3.1 onward it will still function on Windows 10.  And thanks to this great post on TenForums, you can re-enable the hook so that Windows 10 will integrate again with WinHelp.

@echo off
set crtpth=%CD%
takeown /f "%windir%\winhlp32.exe" >nul
icacls "%windir%\winhlp32.exe" /grant *S-1-5-32-544:F >nul
copy /y "%crtpth%\winhlp32.exe" %windir%
icacls "%windir%\winhlp32.exe" /setowner "NT Service\TrustedInstaller" >nul
echo.
echo Done.
echo.
echo Press any key to Exit
pause >nul

WinHelp from Windows NT 3.1 refresh on Windows 10

And there we go, now I can load obsolete refrence docs from great old programs like Visual C++ 1.10 for Windows NT!

Naturally Microsoft removed all this stuff as it was a security risk, in that they apparently never revamped or updated it, so yeah it may be another infection vector.

Microsoft Fortran PowerStation for NT 1.00

So I came across this recently, and unlike the previous version I had for Windows 3.1, This version is for Windows NT.  And unlike the Windows 3.1 version this version does actually run on the shipping version of Windows NT 3.1, and thus will work all the though including Windows 10 on x64.  The setup program unfortunately doesn’t complete leaving it ‘unlicensed’ however it’ll still run.

The diskettes for the Windows 3.1 version I have are dated 11-23-93, but once installed the compiler is actually from February of 1993, with the Windows NT version being dated October of 1993.

So the nice thing with the Windows NT version is that you don’t have to mess with the compiler, and linker, it’ll just run.  And just like Visual C++ 1.0 / 1.10 for NT the linker doing a release build will always result in an exe being at least 2 megabytes in size.

I know that this is pretty much useless for 99.9999% of people.  Yes it’s ancient Fortran.  Yes Fortran PowerStation 4.0 is far more comprehensive.  Yes after it was sold to Compaq as part of some deal over the collapse of Dec & Windows NT, then sold out to Intel.  And GFortran is free.

But here we go.

32bit Fortran from 1993 in 2018!

WineVDM is improving at a dramatic rate

It’s incredible how much it’s improved since I last touched on WineVDM, the port of Wine to run on Windows using the MS-DOS Player (and Mame 80386 emulation) at it’s heart.

The latest source build WineVDM_2018_07_30b.7z is now capable of loading and running Sim City for Windows 1.0.

I found it best to install Windows 3.0 into DOSBox, and then your application.  After the install I copy the application so the physical drive of the hosts matches where it was installed, and then unpack the 7z build archive into that directory.  There is a ‘WINDOWS’ directory and I xcopy the installed Windows directory into there so it has all the INI files, fonts and all that jazz.  To make sure it doesn’t conflict I delete the following from Windows 3.0:

del windows\system\*.drv
del windows\system\*.exe
del windows\system\*.mod
del windows\system\WIN87EM.DLL

Since these files are most certainly going to be emulated by WineVDM.  After that it’s time to run stuff!

130 KLOC!

I should also add that I’ve been able to use QuickC for Windows, and build a ‘non trivial’ program, the Fortran f2c compiler weighing in at 104,245 lines , and use that to compile 16,182 lines of Fortran 77 into C, and then compile the resulting C + the Fortran runtime library a staggering 130,405 lines of code, and the resulting binary works, just like it did on Windows 3.0!

I’ve also been able to print a text file using Microsoft Word 2.0 much to my amazement, although anything involving fonts just locks or crashes.  I can’t say I’m all that surprised.

And yes, it does in fact run SkiFree 1.0

SkiFree on WineVDM

So no need to wait for Win3mu, there is WineVDM which is being developed RIGHT NOW, and the source is already available.  You can see my notes on building it here.

Compiling rsync for VMWare ESXi 6.5

So what had started this little ‘adventure’ is that years ago there was this great sale over at Joe’s Datacenter, where I had picked up a physial server for the mere price of $20 USD a month!  What a deal!  No more quotas, CPU sharing issues and generally having to share.  Awesome!

So I have them install Debian, and load up the KVM modules, and away I go and life is good.  So foolishly years later, I jumped onto the whole container thing, installed docker, and that is where everything went south.

Every few seconds while doing a tcpdump on the 100% virtual bridge I’d see a massive influx of arp traffic.  I tried static arp’s on the host & the guest and it was ‘better’ but now the network traffic would hang.  Things like TCP would break after a minute and stuff like UDP game state would break so bad it’d end up unplayable.  This basically broke maraakate.org and hosting stuff like Quake I/ Quake II/ Daikatana and other iD based games.

My existing virtual machines now had a major issue where they would stop responding to traffic.  I never could find a fix, and it ended up with me moving my blog out to sloppy.io to keep running as a container based service until it magically stopped working and I gave up and did a full dump/reload on a hosted WordPress over at ChicagoVPS.  What a nightmare!

But what about all those virtual machines?

Well even after apt-get purge of everything docker, upgrading and downgrading the kernel nothing helped.  The VMs still dropped off the network periodically.  So with some spare time I decided to just go ahead and backup the box, and wipe the machine.

Since the physical network was working fine I was able to rsync the 300GB+ worth of data over the span of a few days.  That was fine, and considering how crap the server had been, I figured some straight downtime wouldn’t hurt anything too much.  While looking for an OS to install onto the machine, I saw that Joe offers VMWare ESXi 6.5, so I thought I’d just go with that, as naturally VMWare runs both VMs and with Project Photon I could maybe mess with containers again at a later date.

Since rsync had worked so well for moving hundreds of gigabytes of data from the USA to Hong Kong, I figured it’d be trivial to just convert the existing RAW KVM/Qemu disk images back to the United States of America.  And that is where the fun begins.

Let me tell you!

While reading this great post on virten.net they drop mention of XSIBackup, which requires registration (yuck) and worse their stupid registration system is broken:

LOL WHUT?

Rest assured the email does show up!

Dear Neo Zeed, thank you for visiting 33hops.com
This is your download url http://a.33hops.com/downloads/?key=bq7l5ptPB70MJj9dkftxFegr3xWoBZwpdFPQOUC3Cm10KPSIl3v1532877224253

But of course it doesn’t work

The key is invalid or has expired, only two downloads are allowed per key, download a new one at 33hops.com

What

The

Fuck

I know this is an ongoing issue at large when you provide executable binaries on the internet, as you will no doubt get flagged with some false positive by some virus crusaiding idiot who just sets up a tool and never reads anything but sends out threatening emails.  I went through this with the need for the simple 404 redirect, all thanks to Gerhard W. Recher.

So since this wasn’t going to be an avenue to persue I dug a little deeper and ran across this post over at virtuallyGhetto.  So it turns out the userland for ESXi is a CentOS environment that uses busybox.  And if you just download and install CentOS 3.9 into a VM, and build whatever you want, and ideally add in the -static flag, and copy it over.  For those who want to look into more ‘internals’ of the userland, check out zemris.fer.hr.

Great!

Things like UID/GUID mappings are broken in the libc it seems among other things.  So for my simple rsync config I just put the numbers in myself.

uid = 0
gid = 0
use chroot = no
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
hosts allow = a.b.c.d

[datastore1]
path = /vmfs/volumes/datastore1
comment = WDC_WD5000AAJS2D00A8B0
read only = no

I have read that you really ought to keep your binaries/config on the datastore so they aren’t subject to upgrades overwriting them and other chaotic stuff.  So editing the file “/etc/rc.local.d/local.sh” I just added the following before the exit 0:

/vmfs/volumes/datastore1/tools/rsync –daemon –log-file=/tmp/rsync.log –config=/vmfs/volumes/datastore1/tools/rsyncd.conf

And then ran it manually to kick it off.

So now I don’t have to rely on someone’s elses broken downoad system, and now we can build other fun native stuff.

And the best part is that after all of this fighting Maraakate’s site is back online and I get this message from him:

holy crap that new server setup so much better
its like playing it locally honest to god
played a whole unit not a single fuck up
no rubber banding lag effect or any of that

So now things are actually performing better on VMWare than we were getting on KVM.  And yes I had flattened out the disk images, loaded up the paravirtual disk & network drives on KVM, but VMWare does such a surprisingly better job.

I honestly wasn’t expecting that.

And as a bonus, I messed with qemu-0.9.0 (I didn’t feel the need to go through glibc2 hell), and qemu-img works great with a simple raw to vmdk

[root@jdc-user:/vmfs/volumes/5b5806fd-339444da-f897-003048d70598] ./tools/qemu-i
mg.static info win30.raw
image: win30.raw
file format: raw
virtual size: 32M (33554432 bytes)
disk size: 32M
[root@jdc-user:/vmfs/volumes/5b5806fd-339444da-f897-003048d70598] ./tools/qemu-i
mg.static convert -f raw -O vmdk win30.raw win30.vmdk
[root@jdc-user:/vmfs/volumes/5b5806fd-339444da-f897-003048d70598] ./tools/qemu-i
mg.static info win30.vmdk
image: win30.vmdk
file format: vmdk
virtual size: 32M (33554432 bytes)
disk size: 27M

And it boots!

Transcopied Windows 3.0 VM

So yes, wrapping up you can in fact run stuff on ESXi, copy data, and even convert disk images.

Oh yeah, and so people can deal with my 404 based download system (the password is on the 404 page)

Let the games begin!

Running CP/M on the Commodore 64!

 

CP/M cartridge retail box

Back in 1983 there was this great idea of expanding the Commodore 64 with the then popular (but declining) base of serious business software from the CP/M side of the world by creating a cartridge with a z80 processor inside, and a special port of the CP/M operating system that would take over the C64 letting you run real programs like Fortran, Cobol and the far better (and updated) Microsoft Basic v5!

However as always the major failing of CP/M was the massively different and incompatible diskettes of every platform.  The Commodore 64, lacking in RS-232 ports, and it’s incredibly incompatible 1541 drive rendered it nearly impossible for the average home user to transfer any programs in the specially formatted CP/M diskettes for the cartridge.  Not being able to read a standard 1541 diskette would prove to be it’s undoing.

While messing around in Vice, I saw that this cartridge is emulated now!  A quick search led me to zimmers.net where I was able to then locate the needed cpm.d64.gz, and I was booted up into CP/M and of course that hit the first snag which is of course, where is the software?

Well another search brought me to the package ‘ctools‘ which I quickly built on the Linux subsystem for Windows (I had to add -fpermissive to get it compile..), and now I could take that CP/M diskette delete the contents, and for the heck of it insert in Zork.. Of course where to find Zork along with other CP/M software?  The zip zork123_80.zip can be located on retroarchive.org, even fun things like Microsoft BASIC v5.21 (Interpreter), along with the manual.

CP/M only recognized a single drive, so you have to swap diskettes (Such a typical Commodore 64 experience), and here we go!

via Vice

Naturally the Commodore 64’s 40 column mode is… terrible.

However even back in 1984, a fine program aptly called soft80.com sets up the Commodore 64 in high resolution graphics mode, and emulates an 80 column mode.  Even better, the magic for the most part happens on the 6502 side, meaning it doesn’t take away from the precious memory on the CP/M side.

Zork 1 under CP/M / Soft80

Its worth noting that although Infocom games are dreadfully slow on the Commodore 64, playing under CP/M is also dreadfully slow, taking some 10-15 seconds to complete a command.

At least under emulation there is the warp mode.  And what took an hour to put together would have been months no doubt in the 1980’s ending in the CP/M cartridge going into a drawer to never be seen again.

A Z80 on a cart is pretty interesting.  It would have been interesting if other CPUs had made their way, a 68000 would have been interesting to have bridge the 8 bit world out, or even if Commodore had tried to put an 8088 onto that card, as early PC’s were nowhere near the 640kb hard disk wielding monsters they would become much later.  Naturally one could only dream of the power of an 80386 or the once vaunted NS32016

So Google is starting to ‘shame’ sites for not using HTTPS

Really?

So I guess we are at that point where I’m going to have to turn on https for all the other ‘shared’ services I have.  Old links should still work, just expect to be redirected.

Old machines, however… yeah I guess you guys just got cut out.

I just modified the crazy regex hell I have to patch up AltaVista / UTZOO so at least that ought to be working.  The source archive seems operational as well.  When everything is working, HAPROXY is freaking awesome.

 

So close, and yet so far away

OS/2 Presentation Manager Softset

I know it said it had no media, but I wanted it anyways as Microsoft tools of the OS/2 era are so damned hard to come by it’s almost as crazy as a religious artifact.

Anyways I kind of like the Microsoft early 90’s arty vibe to the OS/2 logo.

Anyone have any old MS OS/2 tools hiding in plain sight?

Virtualization Challenge III – Acorn ARM Minix

(This is a guest post from Antoni Sawicki aka Tenox)

Recently came across this unfinished port of Minix 1.5 to Acorn Archimedes A310. According to the readme file this is a set of patches that needs to be applied on a standard Minix 1.5.10 code base on a Unix machine. The code then needs to be to transferred to Risc OS machine for compilation. Once complete then you need to manually create boot records and a file system. Sounds like a fun little project.

What I want is pretty standard:

  • A ready to use working disk image that anyone can unpack and run on a modern machine under an emulator of your choice (commercial OK).
  • Aclock binary and screenshot.

First person to deliver these gets a prize of £100 (that is 100 GBP / Pound Sterling). I strongly encourage to coordinate your efforts via comments.

If needed I can supply licenses for commercial Acorn emulators and C compiler for Risc OS, albeit I only have license for a modern ROOL DDE. I hope ancient version is not needed, but this part of the challenge. Note that I can’t just give away the licenses to anyone, I will only share or purchase new licenses for serious contenders on one to one basis.

Let the challenge begin!