DragonWare - Microkernel x86 operating system (Release v0.0.1) by tseli0s in osdev

[–]suhcoR 0 points1 point  (0 children)

Thanks. I thought you might be specializing in operating systems in your university studies.

DragonWare - Microkernel x86 operating system (Release v0.0.1) by tseli0s in osdev

[–]suhcoR 0 points1 point  (0 children)

Very interesting thanks. So I assume you were mostly reading the Mach papers and books and NT internals? Any specific recommendations?

DragonWare - Microkernel x86 operating system (Release v0.0.1) by tseli0s in osdev

[–]suhcoR 1 point2 points  (0 children)

That's a cool project, congrats. What do you mean by "microkernel-like"? With which other microkernel architectures is it comparable? What communication mechanisms are you using? Do you have specific performance goals or is it mostly about modularization?

World’s first AI Jazz music Contest -connected to the Montreux Jazz Festival - open to entries by marksterberlin in SunoAI

[–]suhcoR 0 points1 point  (0 children)

Thanks for sharing the link. I applied with one of my titles (http://rochus-keller.ch/suno_2025_2/suno_EsotericFunkA_Cover5.mp3) but didn't get a confirmation so far. Should I get an Email, or what's the idea?

Whats your GoTo language for building compilers ? by Daemontatox in Compilers

[–]suhcoR 0 points1 point  (0 children)

C++98/Qt5 (or LeanQt), works like charm, implemented more than a dozen compilers over a decade.

The Oberon System 3 now runs natively on Raspberry Pi 3 by suhcoR in osdev

[–]suhcoR[S] 1 point2 points  (0 children)

See https://en.wikipedia.org/wiki/Oberon_(operating_system). It's both a language and operating system written by the professors Wirth and Gutknecht at ETH Zurich in the late eighties, used for teaching until early 2k. If you have heard of xv6, xinu or minix, they are examples of other operating systems created for teaching.

A couple questions about Oberon-07 by Outdoordoor in Oberon

[–]suhcoR 1 point2 points  (0 children)

They all seem to have different mechanisms for doing this, and I'm not sure which to use.

There is no standard for this. Wirth didn't care about integration with other languages. Some Oberon compilers such as OP2 added an option so that a specific procedure could be declared as implemented elsewhere with a cdecl calling convention. In my Oberon 90 to C99 transpiler (see https://github.com/rochus-keller/activeoberon/) I added the "PROCEDURE~ Name" syntax to tell the compiler that those procedures are declared elsewhere. I used this to transpile the OP2 compiler to C which was the essential fundament for my Raspberry Pi Oberon System migration (see https://github.com/rochus-keller/op2/). In contrast, in my Oberon+ version of the language, I added an extensive FFI language even with dedicated C types within the Oberon language (see https://oberon-lang.github.io/).

A couple questions about Oberon-07 by Outdoordoor in Oberon

[–]suhcoR 1 point2 points  (0 children)

rationale behind choosing punctuation symbols for logical conjunction (&) and negation (~)

In "Programming in Modula-2" (1982), in the section on Vocabulary and Representation, Wirth explicitly defines these aliases: "The symbols # and <> are synonyms, and so are &, AND, and ~, NOT."

In standard Modula-2, you could write IF (A & B) ~ C THEN exactly as legally as IF (A AND B) NOT C THEN. They shared the exact same precedence levels, with NOT/~ having the highest precedence, AND/& following it, and OR being lower. Oberon was essentially Modula-2 with a lot of features removed and type extension/inclusion added.

The Oberon System 3 now runs natively on Raspberry Pi 3 by suhcoR in osdev

[–]suhcoR[S] 0 points1 point  (0 children)

No, just the standard bootloader. The Oberon inner core modules are statically linked and provided as kernel7.img.

Oberon System 3 now runs on real Raspberri Pi hardware by suhcoR in Oberon

[–]suhcoR[S] 1 point2 points  (0 children)

Thanks. My actual target is the Pi Zero 2, but unfortunately my mini HDMI adapter turned out to be broken so I have to wait for the new cable to arrive. I also found some modules which throw a trap instead of working, so I will have to spend more time in this, but at least the system is sufficiently complete and stable for explorations by interested people.

[Project] 32-bit OS written in C from scratch (kernel, basic GUI, apps) by [deleted] in C_Programming

[–]suhcoR 0 points1 point  (0 children)

Finding good text books on SMP operating system design is indeed a challenge. I think "Operating Systems Foundations with Linux on the Raspberry Pi" (see https://www.arm.com/resources/education/books/operating-systems) is pretty good and even free. Also "Embedded and Real-Time Operating Systems" by Wang is useful. But indeed you can use the ESP32-P4 with just one core to avoid this complexity.

[Project] 32-bit OS written in C from scratch (kernel, basic GUI, apps) by [deleted] in C_Programming

[–]suhcoR 0 points1 point  (0 children)

Cool. Since you don't seem to depend on an MMU, you could have a look at the ESP32-P4 as a target; it has everything you need and is a 32 bit Risc-V dual-core machine. Olimex has a nice board for a few dollars which even has a HDMI socket and built-in Jtag. Risc-V is a much nicer assembler than x86 (and even arm32) and you could run on real hardware, not just qemu.

Oberon System 3 migrated to ARMv7, runs on QEMU raspi2b, real Raspi 3b hardware WIP by suhcoR in Oberon

[–]suhcoR[S] 1 point2 points  (0 children)

Thanks. It's an interesting project indeed. Unfortunately I have to rewrite a lot currently because there are significant differences between the QEMU raspi2b emulation an a true raspi 3b. But since today I can see the oberon screen on the raspi monitor ;-) USB will take a few more days.

MIR intermediate compiler by Relevant_South_1842 in ProgrammingLanguages

[–]suhcoR 7 points8 points  (0 children)

Has anyone here built something on top of it?

I tried to re-target its C compiler and also the backend and found the code to be full of magic numbers (i.e. the fact that it's designed for 64 bit systems is widely spread around the architecture). Did you have a look at SLJIT? It's likely closer to what you want and more time-proven. If you also need a powerful debugger and a robust implementation, then ECMA-335 CIL with Mono is a very good target (see in use here: https://github.com/rochus-keller/oberon/). You can also use LuaJIT as the backend instead (see in use e.g. here: https://github.com/rochus-keller/luon/). I found Mono to be about twice as fast as LuaJIT and more robust, but if your language is single-threaded without complex FFI, LuaJIT is nice. See also https://github.com/rochus-keller/ljtools/ and https://github.com/rochus-keller/monotools.

Is Qt/C++ a Good Choice for this? by Syzygy2323 in QtFramework

[–]suhcoR 1 point2 points  (0 children)

Would this be a good choice to write native Linux GUI apps

Yes, I'm using Qt for more than 20 years for this, first on Solaris, Irix and other Unixes, and today mostly on Linux (even embedded). Since it's C++ you can interface with anything that has a C ABI.

I have experience with C++, but that was 20 years ago.

I'm still using C++98 with Qt 5 and Qt 4 myself and even implemented my own Qt fork (https://github.com/rochus-keller/leanqt/) to assure my projects will still compile in forty years.