I’ve been experimenting with some programming in Applesoft Basic for the past 6+ months. I have bounced between my Apple //c+ with a Guimauve 2ooo VGA adapter. This has been a great way to use the Apple when I’m near a monitor or need to use a projector.
But when I’m on my laptop, I use AppleWin, an Apple 2 emulator for Windows. It is pretty full featured and does a very good job. Unfortunately it does have a small drawback.
My laptop’s native resolution is 1920 X 1080. This makes the default AppleWin window size of 622 x 427 very small and hard to read, especially as my eyes get worse every year.
I decided to dig into the source code, and see how easy it would be do double the size of the virtual window. After a few days of relearning C and rediscovering Windows GUI programming, I was able to produce a binary that does just that. The viewport is now 1120 x 768, up from 560 x 384.
I took a few shortcuts, so there are a couple of caveats to mention.
- There is no choice whether to double or not, it just doubles
- I did not convert all the magic numbers in the code to variables or constants
- I removed the optimized progressive refresh, and replaced with a full emulated screen one (already in the code but disabled due to some glimmering)
- I cheated and make a helper function that translates the BilBlt GDI calls into a StretchBlt call.
- I have not experimented with SetStretchBltMode to produces the best quality image
I plan on continuing my work on this and creating a proper patch to submit to the project. I would like to make the double size selectable from config screen, remove all the magic numbers and investigate reimplementing the progressive update logic.
Enough of the technical details, if you want to test this out, the zip below contains:
- ApplewinDouble.exe which you can place in your Applewin directory and run with the same config
- ApplewinDoubleSize.patch which is a source code patch to the AppleWin source code
Before the download, just a quick video sample of the results.
Download (Code & binary released under the GPL 2.0 to comply with AppleWin license)