Windows on 68000

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
kerravon
Member
Member
Posts: 332
Joined: Fri Nov 17, 2006 5:26 am

Windows on 68000

Post by kerravon »

Some of you may be aware that Microsoft Windows is available for both x86 32-bit and 64-bit and ARM 32-bit and 64-bit, and all 4 environments have an msvcrt.dll

And you may also be aware that PDOS-generic from pdos.org has a mini-clone of all 4 environments. Although Microsoft isn't interested in the 68000 for obvious reasons, I am, and most of the infrastructure to port PDOS-generic, including win32 mini-clone capability, to basically anywhere, with minimal fuss from the OS side (the linker pdld needs some work though), is already in place.

As first proof of that, now have a Windows 68000 environment, so you can have PE/COFF 68000 executables running at native 68000 speed on any 68000 environment.

Here it is using qemu-m68k (user, not system), transparently, on Linux:

root@kerravon2-pc:/home/kerravon/w2kshare# ./bios.exe pdos.exe scratch.vhd

bios starting
type in "dir" to get a list of files
type in "type" to show the contents of a file
type in "e/me/uemacs file.txt" to edit a file
ctrl-x, ctrl-s saves; ctrl-x, ctrl-c quits
about to execute program with entry point 3FB3A02C
welcome to PDOS-generic
running as pdos.exe
before printing parm
argv1 is scratch.vhd
about to open disk
done open
lba is 80
fat type is FAT12
about to call app at address 3E457954
welcome to pcomm
type help for help

enter a command
:pdptest.exe abc def
about to call app at address 3E54D000
welcome to pdptest
main function is at 3E54D1EC
allocating 10 bytes
m1 is 3E456030
allocating 20 bytes
m2 is 3E456080
stack is around 407FF9D4
printing arguments
argc = 3
arg 0 is <:pdptest.exe>
arg 1 is <abc>
arg 2 is <def>
return from app is hex 0

enter a command
exit
return from app is hex 0
return from called program is hex 0
enter command, exit to exit

bios exiting
root@kerravon2-pc:/home/kerravon/w2kshare#


Executable pdptest.exe was built with pdpclib/makefile.s68

bios.exe was built with generic/makebios.l6g and that makefile points to the other things.

The makefiles use tools available on the PDOS/386 hard disk image at pdos.org

And the executables I produced myself can be found in a temp.zip attachment here:

https://eab.abime.net/showthread.php?t=120813


Next stop might be Windows on the IBM mainframe. But I was planning on getting z/OS PCDOS out the door first, and that's waiting on Dat from Vietnam to debug.
Gigasoft
Member
Member
Posts: 859
Joined: Sat Nov 21, 2009 5:11 pm

Re: Windows on 68000

Post by Gigasoft »

Well, that sounds like fun. What is the upper byte of those addresses for? Will you support multiple tasks, and if so how will function pointers work across modules when you have multiple instances of a module?
User avatar
iansjack
Member
Member
Posts: 4827
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: Windows on 68000

Post by iansjack »

Gigasoft wrote: Tue Jul 08, 2025 5:25 am What is the upper byte of those addresses for?
Good question. It would make sense on a 68012 or above, but not on a plain 68000. The byte could be used for other purposes (some OSs did so), but surely that would then limit the program to the 68000 rather than its later variants.

I wonder which processor the OP was emulating. (Edit: By default qemu m68k emulates a ColdFire processor, which is 32-bit. So it looks like basic Amigas and Atari Sts are left out of the equation. Not quite "any" 68000 environment. TBH, to get any useful Windows programs running with only 16MB of RAM - or less than 1MB on a basic Amiga - would be impressive in itself.)
Post Reply