README_REBUILD I originally did a re-build about 1.5 years ago, so today I did it again from scratch to help ensure I didn't miss anything. My NT system is up-to-date and I'm building with an up-to-date Visual Studio 2017. - Windows 10 Pro Version 1909 Build 1863.693 - Visual Studio 2017, current updates, 15.9.21 Rather than using my existing enlistment, I did a new clone of the bits. I also checked that the google-code site I referenced previously is still available. Here are the steps that I took to do the rebuild: - Get the acme-sac bits - git clone https://github.com/caerwynj/acme-sac.git - "J:\code\acme-sac" - Run the existing Acme.exe - Fails to run, (more detail below) - Get a working acme.exe - Rename "J:\code\acme-sac\Acme.exe" "J:\code\acme-sac\Acme-original.exe" - Go to: https://code.google.com/archive/p/acme-sac/ - Get the Acme-0.13.zip in the Downloads area. - Extract ONLY the Acme.exe file and copy it to "J:\code\acme-sac" - Open an elevated cmd prompt - "[Version 10.0.18363.693]" - Change to the acme-sac directory - "J:\code\acme-sac" - Make sure the sys tree is clean - "J:\code\acme-sac\sys" - look : "dir /s/b *.obj *.pdb *.map" - delete : "del /s/q *.obj *.pdb *.map" - delete the sys/Nt/386/Lib directory. - Run the "vcvars32.bat" batch file - For me, the batch is here: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\" - Should see something like: ********************************************************************** ** Visual Studio 2017 Developer Command Prompt v15.9.21 ** Copyright (c) 2017 Microsoft Corporation ********************************************************************** [vcvarsall.bat] Environment initialized for: 'x86' - Run acme.exe - Run from the cmd prompt. - Inside acme - [if desired, adjust windows] - type "win" in right column bar, then middle-click - [if desired, set mono font: type "Font" in the win bar, then middle-click] - at the win prompt: % env % cd /sys % run Nt/prompt % mk - type "Put /build-output.txt" in the win bar, then middle-select/release - Assuming no errors ... - rename $root/acme.exe $root/acme-0.13.exe - copy $root/sys/emu/Nt/iacme.exe $root/acme.exe - Run the new acme.exe - Run from the cmd prompt. - type "win" in right column bar, then middle-click - at the win prompt: % cd /sys % run Nt/prompt % mk clean Code Changes Three minor changes were made, one to quiet a compiler warning, another to alter a bit of annoying behavior and the third to remove pdb files from the emu/Nt directory on clean. lib9.h:22: add an undef to silence a re-definition warning. /* do-it-yourself isinf and isnan */ + #if _MSC_VER >= 1900 + #undef isnan + #endif #define isnan(x) _isnan(x) emu/Nt/cmd.c:163: add create_no_window flag to keep process creates from thrashing focus. CREATE_NEW_PROCESS_GROUP|CREATE_DEFAULT_ERROR_MODE | CREATE_NO_WINDOW |prio, ^^^^^^^^^^^^^^^^^^ emu/port/portmkfile:49: make sure vc140.pdb gets deleted on clean. rm -f *.[$OS] errstr.h *.out *.obj *.pdb ^^^^^ Execution Problem When trying to run the existing Acme.exe from a cmd prompt, a message box pops with the message: -- Unsupported 16-bit Application -- "The program or feature "\??\J:\code\acme-sac\Acme.exe" cannot start or run due to incompatibility with 64-bit versions of Windows. Please contact the software vendor to ask if a 64-bit Windows compatible version is available" After a quick look at the file, the offset of the PE header is off by one byte. The msdos header says it's at offset x'F8, but it actually starts at x'F7.