The Windows version uses the left and right arrow keys to move, and the
spacebar to shoot.

This preliminary version of Invaders (19-Sep-2026) requires features of
the XPLW compiler that have not yet been released, so it won't compile
with the currently released version.

I've claimed that most XPL programs port easily to this new Windows
environment, but Space Invaders isn't like most programs. Games, in
particular, push the envelope of what's doable.

There was no issue with changing the 16-bit integers to 64 bits. The
original code, however, uses the 'peek' and 'port' commands, which are
no longer supported.

The 'peek' command got the keyboard status bits, and that capability was
replaced years ago by the intrinsic GetShiftKeys.

Similarly, the 'port' commands were used to access the vertical blanking
signal to regulate timing and to set the color palette registers. Those
necessities were also replaced years ago. The intrinsics are
WaitForVSync and SetPalette.

I was able to fix these incompatibilities in a few minutes. The brick
wall was how to port the iconic sound effects. Those depended on a Sound
Blaster, and Windows phased out any emulation of that decades ago.

Without Sound Blaster support, the "easy" port led to a new intrinsic.
MidiMsg (35) provides a simple way to play MIDI notes. For example,
MidiMsg($90, 60, 100); plays middle C (60) on channel 0 using the
Acoustic Grand Piano, with a velocity of 100 (out of 127). An essential
guide to using MIDI is: https://midimusic.github.io/tech/midispec.html

With this, and some help from ChatGPT, Invaders is now running under
modern Windows, complete with its familiar sound effects.

-Loren
