Neko screen saver via QEMU

A while back I found this post on IBM of all places on making a Windows screen saver out of Qemu.

I’ve always wanted to play with this but never really got around to it.  So I figured I’d give it a shot today, and whoa what a LOT of work.  First of all back then they were using Qemu 0.72 which… sucks compared to 0.14.1!

Next things have changed a *LOT* so it did take a bit of work to get this thing to go.  I’m not terribly happy with this but the upshot is that I did manage to create a CD-ROM ISO image that can:

Boot up, load the windows 3.0 demo which then kicks off Neko!

After exiting the demo, it’ll do an APM shutdown of the VM killing Qemu and returning you back to Windows.

So yes, in effect it is a neko screensaver using Windows 3.0 & Neko from 1991.  The installation is manual, the ISO has to live in C:\ .  There is no install program, and I don’t think it works on x86_64 machines.  Also the neat Windows preview thing doesn’t work (in the small window OR full screen preview..  And full screen textmode in Qemu is broken so while it’s doing the MS-DOS shuffle you’ll get garbage until it comes up in it’s VGA glory.

I’m kind of hesitant to release this but it it’s been driving me mad.  Also the changes to vl.c are in the ISO for the 2 or 3 people that care about how to remove the madding CLI options from Qemu and perhaps either read a config file, or hardcode it what to do.

So for those of you who think you can handle it, it’s right here.

 

Oh and the patch is like this in vl.c

    /* second pass of option parsing */
    optind = 1;
for(;;) {
        if (optind >= argc)
            break;
        if (argv[optind][0] != '-') {
                if(1==1){
              /* Going to run as a Windows screen saver */
              full_screen = 1 ;
                data_dir = ".";
              ram_size=16*1024*1024 ;
                no_reboot = 1;
                drive_add(IF_DEFAULT, 2, "c:\\neko.iso", CDROM_OPTS);

    argc--;
    optind--;       //turn off the 2nd uneeded flag...?
              rtc_utc = 0;
              optind += 1 ;
            }
                else {
            hda_opts = drive_add(IF_DEFAULT, 0, argv[optind++], HD_OPTS);

This entry was posted in neko, qemu by neozeed. Bookmark the permalink.
avatar

About neozeed

What is there to tell? I’ve loved UNIX like things since I was first exposed to QNX in highschool (we had the Unisys ICONS!), and spent the better time of my teenage years trying to get my own UNIX… I should have bought Coherent in retrospect.. Anyways latched onto Linux in 1992, and then got some old BSD admin books and have been hooked on the VAX BSD & other big/ancient things since…!

Leave a Reply

Your email address will not be published.

Notify me of followup comments via e-mail. You can also subscribe without commenting.