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 physical 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 crusading 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 peruse, 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!

WineVDM

This is super cool, building on Takeda Toshiya’s excellent MS-DOS Player, is a fusion of the MS-DOS emulation with portions of Wine to run Win16 applications on Win32 capable OS’s.

Excel 3.0a

Yes, it really can run Excel 3.0a.  I don’t know how much people will want a 27 year old spreadsheet, but here we go!  It’s incredibly buggy, and many Microsoft programs don’t like their accelerators, or menus, more things don’t run than do, but when they do it’s great.

The releases on the github page are quite old, and you’ll really want to bulid this from source.    You will need Visual Studio 2017 to build this, and I used the Community Edition.  While trying to compiling I got this error:

Really it’s no help at all

Performing Custom Build Tools
The system cannot find the path specified.

Well that doesn’t help us at all!

Setting the Tools -> Options -> Build and Run, MSBuild sections to both detailed verbosity revealed:

“C:\Users\neozeed\source\repos\winevdm-master\Release\convspec” “krnl386.exe16.spec” KERNEL > “krnl386.exe16.asm” && “C:\msys32\mingw64\bin\as” –32 -o “krnl386.exe16.obj” “krnl386.exe16.asm”
Performing Custom Build Tools
The system cannot find the path specified.

So it turns out it is using GNU GAS to assemble itself.  So I just copied in an ‘as.exe’ from another MinGW install I have lying around.

c:\msys32\mingw64\bin\as.exe –version
GNU assembler 2.17.50 20060824

So it doesn’t even have to be a hyper modern version, as you can see with the –32 we are building 32bit based stuff anyways.

And with that all done we have a release build.

F2c Dungeon

I had no luck with Sim City, but Sim Life & Sim Earth load at least, but not being able to use the menus means you can’t really use them.  Microsoft Word 1.1 won’t load at all, while Word 2.0 will load but again no menus, and it’s unable to register enough OLE to open documents so it’s not very useful again.  Although my ancient QuickC for Windows F2c port of Dungeon, works okay, although QuickC for Windows itself does not currently run.

WinHelp 3.00

Another great thing is that you can run WinHelp for all your ancient documenation fixes!  Also MS Write from the ancient days of Windows 3.0/3.1 works as well

Write

You can download my binary build here: WineVDM_2018_07_30.7z.  It’s almost a given that you will need the Visual C++ 2017 runtime.

The latest version allows the menus to work properly so you can actually use Word for Windows 2.0 and SimEarth & SimLife now!  Further updates let you actually select and open files in Word for Windows 2.0!

A week with the Microsoft Lumia 950

Lumia 950

I’m a sucker for old / obsolete junk.  I was looking through an electronic market and was near some used cellphone vendors and I saw this little gem, the Microsoft (Nokia) Lumia 950.  I used to have a Windows 8 phone back in 2013, I picked it up in China on my accidental trip, the Huawei Ascend W1, which Huawei quickly dropped and distanced itself from Microsoft as a sign of the impending failure of Windows Phone.  It was a barely serviceable phone, the music subscription service would frequently corrupt downloaded audio tracks constantly requiring me to reset the phone, and re-download over and over.  Other than being part of the launch of the NT kernel on a phone it really wasn’t that great of an experience, but it was a budget phone, so my expectations were pretty low.

So I found this 950 for $400 Hong Kong, or about $50 USD.  So yeah I thought it’d be a fun toy to play with, even though Microsoft had finally conceded defeat in the mobile space and pulled further development of Windows 10 based Windows Phone platform.  Again, this isn’t too surprising, Android simply dominates the world outside of the USA/Western Europe, while Apple IOS is still a profitable and comfortable #2 worldwide.  There simply is no room for a #3 mobile platform.

So why would I even care about this obsolete phone? Simple it’s the greatest feature never really touted or pushed, It’s simply called Continuum.  Simply put, docking the phone into a USB + Power + HDMI dock allows the phone to transform into a (limited) desktop.

Lumia 950 with Continuum

I know for most people it’d be “just get a real computer” but I have to say that this is one of those opportunities blown things in the fun world of corporate IT.  You see many of us ‘desktop’ users have been reduced to glorified mainframe users, where our desktops are actually just access ports into products like VMWare VDI, where we no longer have VPN access in this brave new world, and on our local machines all we have if Microsoft Office, all 3rd party installations are blocked by GPOs.  And this is where a corporate phone like the HP x3, Microsoft 950/950xl simply shines, as now we can dock and have that VDI terminal, we still can run office from the phone, and better we can unplug and take the phone with us on the go.  I have no doubt that this was instead targeted to executive users, numbering in the tens instead of the entire back office in the tens of thousands.

Well ok that’s all cool, but how does it function as a phone?  I’ve taken call on it, and yeah it was OK.  Looking at the hardware specs from AnTuTu gives you some idea of the class of hardware for this vintage October 2015 handset.

Lumia 950 Specs

And how does it hold up?  Well as luck has it I managed to scrounge up some other models, and put the numbers together:

From left to right, the Samsung Galaxy S8+, The Microsoft Lumia 950, The Nokia Lumia 1520, and a Microsoft Lumia 535.

Three years is a LONG time in the cellphone market, and comparing a high-end model to a mid-range at best is just not fair, although if anything it really goes to show how 3D performance has picked up.   One fun thing is that since the AnTuTu benchmark is a Windows Universal application I can run it on my vintage 2010 MacPro and see how it compares!

And in this case a circa 2010 Xeon with a Nvidia 1030 crushes cellphones.  Even though it weighs significantly more.

And then there is the apps.  And the complete lack of.  Since I go between Hong Kong & China the lack of WeChat makes Windows Phone 100% useless and reduces me to a feature phone with a nice camera.  Obviously Microsoft Office works nice on here, but it also runs on Android & IOS just as well.  I used it for work, and it was okay for me, but the lack of anything fun besides Minecraft was well.. sad.

There was an Uber application, however it’s been terminated, and instead redirects you to use a web page instead.  I was lucky in that I already knew where I was, and where I wanted to go, but the web interface to Uber is poor at best.  Looking around the map, or trying to pick locations on the web interface is just an all-around terrible experience.

Naturally there are NO Google applications for the Windows Phone.  So, you can only view YouTube via Edge, which actually works surprisingly well.  Even on a lowly 535 that really was only hampered by the tiny screen.  Speaking of Google the Mail/Outlook program on the phone reads Gmail just fine.

Another must have application for me is Google translate, which Microsoft certainly had no answer back in 2013, however there is now Microsoft Translator however it does NOT currently support OCR of Asian languages.  Which is a really big disappointment as the quality of text translations felt better with the Microsoft app.  That said, it is now available for Android and IOS, which goes to show that Microsoft really has no choice but to fully commit to abandoning their own platform.

There is one thing to be said about having next to no applications which is it is very free of distractions and gave me more moments to looking around at the world, instead of staring into a tiny screen.  For those who care, here are some pictures from the 950.

It’s always interesting when a major player falters and misses out on a new platform setting themselves up for obsolescence.  And doubling down by not chasing the business market harder instead being happy to fade into irrelevance.  Microsoft has done it’s best to take the success of crushing most midrange to small range UNIX with Windows NT, but the lawsuits against Linux have in the long term set them up to fail on their own island.  Just as they have lost the mindset of generations of developers and even with their purchase of GitHub in an attempt to stay relevant will be any indication if they really are going to long term exit the desktop/server market and become a cloud services company first, and a language developer second.

The desktop is dead, long live mobile.