ARM support (proven with PdAndro)

All development related issues welcome

Moderator: Moderator Team

Post Reply
kerravon
Posts: 11
Joined: Sat May 15, 2021 11:06 am

ARM support (proven with PdAndro)

Post by kerravon »

Hi all.

I'm not sure how many of you are aware, but there is an ARM version of Windows 11, and it includes both 32-bit and 64-bit support, the same as Windows 11 for the x64. They may be about to remove ARM32 soon though - so get in quick if you want a reference machine.

Anyway, I note that ReactOS doesn't have an ARM target. Perhaps you can start doing that? That would possibly be a niche. Especially if you cover ARM32.

Anyway, I have my own project, PDOS (https://pdos.org), that also seeks to clone Windows (ie same as ReactOS), but my scope is largely restricted to the command line, because I want to support other platforms, including IBM mainframes.

But just focusing on Windows, one of the 3 semi-independent versions of PDOS is PDOS-generic, which was a redesign, making use of a pseudo-bios. This design allowed me to create (with the help of others), as one of the flavors, an Android app called PdAndro, which you can find on the Google Play Store here:

https://play.google.com/store/apps/deta ... l=en&gl=US

Or as an APK plus source here:

https://github.com/robertapengelly/Pdos-PdAndro

But the most critical bit is the libbios.so which is provided in packages (ucarm.zip, uca64.zip, uc386l.zip, ucx64l.zip) from pdos.org, but named bios.exe (even though it is a Linux executable and can be run directly under Linux - see below).

The same technique can be used under other OSes, like Linux and OS/2, which has allowed me to stand up Windows clones there too (ie basically a version of WINE - but only about 100k in size - which turned out to be all that was required to support the character interface - at least for the limited scope I have focused on). If you want the ARM version in particular, you can use qemu-user (not system) to run that. qemu-system is also available, as I have another flavor that will run under UEFI. Indeed - you can turn a modern UEFI PC into a mini Windows clone (including the ability to run an entire toolchain - separate executables), with a 100k executable (making use of the fact that UEFI itself is an OS, and uses the same function call convention as Windows).

Anyway, I know ReactOS aims for a full graphics implementation. But I don't know how viable that is on a smartphone. You may wish to produce a command line version of ReactOS instead.

I do have a plan for some limited graphics support (independent of the existing limited graphics), which is to enhance ANSI X3.64 (ESC [ 2 J to clear screen etc), to be able to put the "terminal" (which is what PdAndro basically is - ignoring libbios.so) - into graphics mode and then send ANSI escapes to draw individual pixels. This would also be useful for displaying graphics on a mainframe (I support EBCDIC ANSI terminals over a TN3270 link on z/PDOS-generic for IBM z/Arch mainframes). Perhaps we can work together to get a standard for ANSI graphics? Pixels drawn with "ESC [ 111;222H X" or whatever the escape sequence is to position and then drawing an X is really just setting a pixel in the current color.

Any interest?

Oh - BTW, PDOS is completely public domain, almost entirely C90 source, so anything can be taken and incorporated into ReactOS without restriction.

And also the ARM32 version of PdAndro is self-hosting. Using just an Android phone you can build libbios.so plus the entire toolchain, using Win32 ARM32 executables, and you can even replace the libbios.so in the APK because we also provide a SignYourAPK app, plus there is a "zip" in pdos/util. This means you don't need an internet connection to do development. Nor do you need Android Studio unless you want to change the terminal (a small amount of Kotlin code - I think under 1000 lines).

BFN. Paul.
User avatar
binarymaster
Posts: 501
Joined: Sun Nov 16, 2014 7:05 pm
Location: Russia, Moscow
Contact:

Re: ARM support (proven with PdAndro)

Post by binarymaster »

kerravon wrote: Wed Nov 13, 2024 2:03 am I note that ReactOS doesn't have an ARM target.
It actually does, if you look at GitHub Actions status and produced artifacts there.
kerravon wrote: Wed Nov 13, 2024 2:03 am You may wish to produce a command line version of ReactOS instead.
The thing you're describing seems to resemble Windows Nano Server edition, which is terminal-only version without GUI.

- https://mcr.microsoft.com/en-us/artifac ... rver/about
- https://www.youtube.com/watch?v=Bzfwr8mEHFs
kerravon
Posts: 11
Joined: Sat May 15, 2021 11:06 am

Re: ARM support (proven with PdAndro)

Post by kerravon »

binarymaster wrote: Wed Nov 13, 2024 2:50 pm
kerravon wrote: Wed Nov 13, 2024 2:03 am I note that ReactOS doesn't have an ARM target.
It actually does, if you look at GitHub Actions status and produced artifacts there.
I've had a look - that's fantastic that you have both ARM and ARM64 builds operational. I even note that you managed to keep ARM32 alive despite MS dropping support. ARM32 is very important for me as it brings to life decades worth of old smartphones. I bought a Win64 ARM64 laptop and now that it is operational I have it disconnected from the internet so that I don't lose ARM32. I also bought Visual Studio Professional before the ARM32 support was removed. So I have a reference if required. But what I'm hoping to do is replace both the reference OS and the reference compiler.

Unfortunately for ARM64 I only saw a few applications being built for ReactOS.

What I'm after is an ARM64 EFI version of ReactOS (ie a bootaa64.efi), plus a version of Mingw-w64 that targets ARM64 msvcrt.dll.

Is any of that on the cards?

Thanks. Paul.
middings
Posts: 1081
Joined: Tue May 07, 2013 9:18 pm
Location: California, USA

Re: ARM support (proven with PdAndro)

Post by middings »

kerravon wrote: Sat Nov 23, 2024 7:39 am ...I only saw a few applications being built for ReactOS.
I don't understand. Applications built for ReactOS alone would defeat the purpose of ReactOS.
How to find the ReactOS Wiki: Choose "ReactOS" (or the ReactOS logo) at the top this web page [link], then choose "Development" on the menu bar at the top of the web page that appears [menu], then choose "Wiki" from the drop down list that appears [menu item]. A web page named "Welcome to the ReactOS Development Wiki" will appear. This is the main page of the ReactOS Wiki.

To see a discussion of ReactOS ports to non-x86 processors in the ReactOS Wiki, start from the Wiki's "Welcome to the ReactOS Development Wiki" page [menu], look for the heading "Status" (scroll the page if necessary), then under the "Status" heading choose the link marked "ports" [web link].
kerravon
Posts: 11
Joined: Sat May 15, 2021 11:06 am

Re: ARM support (proven with PdAndro)

Post by kerravon »

middings wrote: Thu Nov 28, 2024 11:42 am
kerravon wrote: Sat Nov 23, 2024 7:39 am ...I only saw a few applications being built for ReactOS.
I don't understand. Applications built for ReactOS alone would defeat the purpose of ReactOS.
Sorry - I used poor English. I meant "apps for ReactOS/Windows/any other Windows clone" as opposed to "an actual ReactOS OS".
To see a discussion of ReactOS ports to non-x86 processors in the ReactOS Wiki, start from the Wiki's "Welcome to the ReactOS Development Wiki" page [menu], look for the heading "Status" (scroll the page if necessary), then under the "Status" heading choose the link marked "ports" [web link].
Thanks for that.

I eventually found https://reactos.org/wiki/AArch64

And that implies that it is not possible to build an ARM64 version of ReactOS, which would explain why there is no ARM64 download that I can see.

Note that my "information" that ARM64 was not supported came from two sources:

1. Wikipedia (supported targets)
2. ReactOS website (no obvious download for ARM64)

As far as I can tell, that information is largely correct. ARM64 and even ARM32 don't seem to be available as downloadable targets.

The "main thread" that is pointed to is both brief and old (2018).

I would suggest that ARM64 be given more prominence. There is a "captive market" there in the form of the Macbook. If people want to run Windows applications and only have a Macbook, ReactOS is the lightweight option. You can install real Windows for ARM, but it's not easy to obtain. It may be easier in the future, but you still need to buy a license. While with ReactOS you don't.

Someone with a Macbook may only have limited need for Windows, which ReactOS can satisfy. And use MacOS for the rest of their needs.

This is in fact my situation - I have a Macbook but no real ability (I do have highly limited ability) to run Windows apps currently. And I'm only trying to run an ARM64 toolchain.
User avatar
dizt3mp3r
Posts: 1898
Joined: Mon Jun 14, 2010 5:54 pm

Re: ARM support (proven with PdAndro)

Post by dizt3mp3r »

ReactOS is so far from being usable that development is taking place on missing fundamentals with developers working very hard just to get the o/s basics in some sort of reasonable shape. I doubt that the suggestion to give ARM more focus is going to distract them from the development task ahead of them (five to ten more years of hard coding). Giving them more to do, will only delay that goal.

Any dev that wants to focus on ARM surely will, some devs are already interested but there is no over-all team direction to point the way. Each contributor works on those aspects that interest them. Having said that, by all means, dive in and contribute to ReactOS for ARM as all contributions are welcomed, code and otherwise.

P.S The documentation being incorrect or misleading in parts is the result of the documentation also being community driven. Devs or contributors update the documentation as they see fit. We all contribute some changes to the documentation when we understand the subject ourselves. As people move to new tasks, move on or lose interest, the documentation suffers with time. My recommendation, join the team, user your login to make changes. IF the changes are good then they will now form part of the updated documentation. Apologies if it was somewhat incorrect. I maintain perhaps two pages myself with the limited knowledge I have but unfortunately it is not those pages that you found.
Skillset: VMS,DOS,Windows Sysadmin from 1985, fault-tolerance, VaxCluster, Alpha,Sparc. DCL,QB,VBDOS- VB6,.NET, PHP,NODE.JS, Graphic Design, Project Manager, CMS, Quad Electronics. classic cars & m'bikes. Artist in water & oils. Historian.
kerravon
Posts: 11
Joined: Sat May 15, 2021 11:06 am

Re: ARM support (proven with PdAndro)

Post by kerravon »

dizt3mp3r wrote: Fri Nov 29, 2024 2:09 pm ReactOS is so far from being usable
What about for the limited goal of bringing up a command prompt and running gcc? Is that not possible currently?
User avatar
EmuandCo
Developer
Posts: 4781
Joined: Sun Nov 28, 2004 7:52 pm
Location: Germany, Bavaria, Steinfeld
Contact:

Re: ARM support (proven with PdAndro)

Post by EmuandCo »

What is minimal on this? This means that the kernel and all other low level parts are ported and this is at least 90% of the work that needs to be done for a working port. As already said before.

Prio #1 is i386 and x64 working fine and more stable than right now.
Prio #2 is NT6 apps support
Prio #3 is UEFI
Sometime after that there was talk about ARM64 already.

Then we can discuss some corner cases like ARM32, unless you wanna work on it of course.
ReactOS is still in alpha stage, meaning it is not feature-complete and is recommended only for evaluation and testing purposes.

If my post/reply offends or insults you, be sure that you know what sarcasm is...
kerravon
Posts: 11
Joined: Sat May 15, 2021 11:06 am

Re: ARM support (proven with PdAndro)

Post by kerravon »

EmuandCo wrote: Sat Nov 30, 2024 5:02 am What is minimal on this? This means that the kernel and all other low level parts are ported and this is at least 90% of the work that needs to be done for a working port. As already said before.

Prio #1 is i386 and x64 working fine and more stable than right now.
Forgetting about ARM for now, and just looking at i386.

In uc386l.zip from pdos.org you will find this:

62,464 bios.efi

A 62k module, which - at your option - can be renamed to bootia32.efi and be the only OS of an x86 computer with 32-bit UEFI.

It is capable of running certain Win32 x86 executables, like bwBASIC:

277,504 bwbasic.exe

It uses a technique to convert UEFI into Win32, taking advantage of the fact that UEFI is itself an OS, and also the fact that the calling convention is the same (or can be the same) between UEFI and Win32. The same applies for x64 and ARM32/64.

ReactOS should have the components necessary to do this already. Or it should be pretty close. It's mainly a manipulation of the C library, but it could be done differently as you wish.

My bios.efi is only capable of running certain msvcrt-based programs. But ReactOS can probably do more than that.

It's only single-tasking and only capable of giving a command line interface. But that is all I actually need in order to run gcc. I have a C90-compliant msvcrt-based gcc 3.2.3-based executable for my own use, but ReactOS can likely handle something more modern.

It may not be a full bells and whistles OS, but hopefully you would have something of practical use in much less than 5-10 years. And if it's alive and has a practical application, maybe more people will be inspired to stay/join.

Just an approach you may wish to consider.

BTW, that same bios.efi above will also run certain OS/2 applications. And I've just made a change to the way that it is built so that the next version will support certain Linux executables too. That bumps the size of the executable up to 69k.
Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests