NKC Forum
Register | FAQ | Search | Who is online? | Member list | Today's posts | Calendar | Login



Author Topic: Mal angedacht: OS-9/68k
m.haardt
Voll in Gange
***
ID # 93


  Posted on February 23, 2020 02:30 PM (#1)  |  Quote Quote   PM PM   E-mail E-mail
Hallo,

nun wo mein 68008 anscheinend endlich läuft, ist es an der Zeit, sich mal Gedanken über ein OS zu machen. Also, wie sieht's mit OS-9/68k aus?

Erstmal: Legale Kopien sind quasi nicht mehr zu bekommen, Ebay ist ausgetrocknet und es ist immer noch copyrighted. Die Evaluationslizenzen enthalten, soweit ich weiss, kein 68k mehr und es wird nicht mehr verkauft. Illegale Kopien sind im Umlauf, was anscheinend nicht aktiv verfolgt wird.

Der letzte Stand von 68k ist 2.9, was ein 2.4 mit Y2K Bugfixes ist. 2.4 gibt es als Images hier und da, die Bugfixes gibt es einzeln verstreut.

Die ganze Literatur ist als PDF legal zu bekommen und das ist eine Menge. Das System ist exzellent dokumentiert und extrem sauber implementiert.

Technisch: Typischerweise startet das System aus dem ROM, d.h. man braucht einen Bootloader. Es gibt einen als open source, den ich anpassen will. Der sucht ein OS-9 Image im ROM und startet es mit einigen Parametern (ein paar Dutzend Zeilen, könnte man auch dem GP hinzufügen). Der Start aus dem ROM ist sehr typisch, obwohl es auch Systeme gibt, die das Bootimage von einem Massenspeicher laden. Am oberen Ende stehen Systeme mit 512 KB ROM, am unteren Ende 64-128 KB. RAM variiert stark mit dem Anwendungszweck. Mit 256 KB geht es wohl, mehr ist immer besser. Die Hardware sollte interruptgesteuert laufen, obwohl Polling prinzipiell geht. Shared interrupts gehen auch (haben wir beim NKC). Zum Multitasking braucht man einen Timer. Die UHR3 ginge vermutlich. Für den 68008 wären 768 KB RAM und 256 Kb ROM (minus 64 Kb IO) vielleicht nicht schlecht. Einst benutzte ich auf einem Atari ST mit 1 MB ein System für zwei Benutzer (Konsole plus serielles Terminal). Mit 2 MB lief da sogar ein GUI (MGR). Wir hatten viel Spass mit dem System.

In heutiger Terminologie ist OS-9 ein objektorientierter Microkernel. Der Kernel wird um Module erweitert, die eigentlich Klassen sind. Sog. Deskriptoren bilden die Instanzen der Klassen, d.h. ein Modul für einen seriellen Treiber und Deskriptoren für Interfaces (Portadressen, Interrupts etc). Ein Bootimage ist ein Archiv von Kernel, Modulen und Deskriptoren. Module sind relokatibler, reentranter 68k Code. Der Kernel startet, sucht sich die Module im Archiv und startet die jeweils einzeln. Zur Laufzeit kann man Module laden und entfernen. Das Image muss also nur enthalten, was man zum Start braucht.

OS-9 hat nicht wie Unix einen Dateibaum, sondern wie DOS Laufwerke, die allerdings lange Namen haben, aber wie Unix mount/umount brauchen. Virtuelle Dateisysteme sind dann auf virtuellen Laufwerken.

Man braucht zwingend ein OS-9 System, um Treiber und Deskriptoren zu compilieren/assemblieren. Unter Linux kann man OS9Exec, einen OS-9 Emulator, laufen lassen. Dabei wird OS-9 mit den üblichen Modulen emuliert, um OS-9 Programme laufen zu lassen. Es läuft also kein OS-9 OS in einem Emulator einer Maschine, sondern das OS wird emuliert. Zudem gibt es os9disk, um auf Dateisysteme zuzugreifen.

Für eine Portierung fängt man bei Null an. Es gab mal OS-9 für den 68k NKC (um die 600 DM, meine ich), aber der typische einstige Preis sorgte wohl dafür, dass keine Kopien überlebten.

Einst wurde viel open source für OS-9 angepasst, aber man darf heute nicht mehr viel erwarten: K&R C, im Detail trotz vieler Ähnlichkeiten erhebliche Unterschiede zu Unix und inzwischen veraltete APIs werden die Portierung von Software sehr schwer machen. Aber JADOS ist noch viel weiter von der Gegenwart weg. Sehr alte Versionen von open source bauen dafür evtl. noch ohne Probleme.

Soweit, was ich darüber weiss. Abgesehen von einer möglichen NetBSD-Portierung ab 68020 (wegen MMU) wird man für den 68k sonst nichts Besseres bekommen.

Ich fänd's sehr cool, aber angesichts der verfügbaren Zeit brauche ich alleine sicher etliche Jahre. Die Reparatur vom NKC brauchte ja schon ewig. Interessiert sich sonst noch jemand dafür?

Mein erstes Ansinnen ist, den Bootloader anzupassen, so dass das Boot-ROM ihn startet (serielle Konsole). Dann muss ich RAM und ROM aufrüsten und wollte mit dem Arduino mit der UHR3 spielen, deren Platine hier schon ewig liegt. Parallel muss ich lernen, wie man sich im Emulator bewegt und ein Image baut.

Michael

Posts: 501 | Member since: April 2008 | IP address: not saved
smed
Stammgast
**
ID # 114


  Posted on February 24, 2020 05:16 PM (#2)  |  Quote Quote   PM PM   E-mail E-mail
Hi,
ich sehe mehr Sinn Zeit in die Portierung einer (abgespeckten?) Linux Variante zu stecken. Ein OS das nicht die Tuer fuer weitere Software oeffnet ist fuer mich nicht wirklich interessant, mindestens sollten neue, moderne Compiler herausspringen. Wie bereits mehrfach erwaehnt und beworben, habe ich eine rudimentaere Version von gcc fuer den 68k NKC als cross-compiler am Laufen und damit meinen NKC zum Leben erweckt. OS-9 mag ja cool sein (ist es!) aber noch ein OS a la CP/M 68k ohne Software...hm...

Gruss
smed

-----------------------
NKC'ler seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k.

NKC - OpenSource since 1983

Posts: 198 | Member since: January 2011 | IP address: not saved
m.haardt
Voll in Gange
***
ID # 93


  Posted on February 24, 2020 10:35 PM (#3)  |  Quote Quote   PM PM   E-mail E-mail
Unix ohne MMU ist kein Unix, weil es kein fork() gibt. Man kann damit immer noch eine Menge machen, aber man fällt sehr oft über die fehlende MMI. Mit MMU wird man auf kleineren Systemen mit NetBSD glücklicher. Linux ist da zu fett. Für den 68020 mit sagen wir mal 64 MB RAM wäre das ideal.

Bei einem 68000/68008 mit 1 MB RAM wird das nichts. Ich kenne da auch kein anderes OS.

Mit dem Compiler hast Du natürlich Recht. Selbst damals war gcc 1.40 auf OS-9 ein grausiger Hack, weil die Systemincludes dann eine Mischung waren und immer irgendwas quer lag. Dennoch haben wir einiges an Software ans Laufen gebracht. Und stundenlang nethack gespielt. ;-)

Michael

Posts: 501 | Member since: April 2008 | IP address: not saved
smed
Stammgast
**
ID # 114


  Posted on February 25, 2020 03:12 PM (#4)  |  Quote Quote   PM PM   E-mail E-mail
Ich hoffe ja auf die CPU68020 Karte von Uwe mit der 68030 Adapterkarte von Thorsten...mit der COL256 steht dann einem DOOM port nichts mehr im Wege... :D

siehe: https://ntxdhxgzadrdathx.myfritz.net/forumdrc/index.php?mode=viewthread&forum_id=1&thread=13&z=1&#post13

Gruss
smed

PS
https://doom.fandom.com/wiki/Source_port

-----------------------
NKC'ler seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,UHR3,PROMER,CENT,SER,SOUND,CAS,6xBUS2,4xBUS3,3xPOW5V,2xTAST..und einen ArduinoMEGA mit auf dem BUS, und eine selbstgebastelte MEM960k.

NKC - OpenSource since 1983

Posts: 198 | Member since: January 2011 | IP address: not saved
Champus
Lernt noch alles kennen
*
ID # 204


  Posted on February 25, 2020 07:52 PM (#5)  |  Quote Quote   PM PM   E-mail E-mail   HP HP
Hi,

ich bin eindeutig für OS-9. Ich sitze fast jeden Tag vor SLES und OES Kisten und aus meiner Sicht ist Linux für den NKC oversized. Für mich ist der NKC noch immer ein Lehr-/Lern-System und da möchte ich es halbwegs überschaubar haben.

Ein C-Compiler ist für mich langfristig auch ein must-have. Wie sieht es denn mit Sourcen für den NKC aus.

Grüße
Lutz

PS: Im Moment bin ich noch in der Reanimationsphase meiner NKCs. Ich habe also noch viel Zeit.

Posts: 13 | Member since: February 2020 | IP address: not saved
m.haardt
Voll in Gange
***
ID # 93


  Posted on February 25, 2020 11:34 PM (#6)  |  Quote Quote   PM PM   E-mail E-mail
Ein C89 Compiler ist im Zweifelsfall nicht das Problem, wenn's nicht gerade gcc sein muss, dessen Portierung echt komplex ist und der RAM wie blöde braucht. Speziell für den m68k gab es früher einige freie Compiler, die z.B. unter Minix auf dem Atari ST liefen und die man vermutlich auch auf OS-9 portiert bekäme. C99 ist so eine Sache, aber mit Arbeit vielleicht noch machbar. Hauptpunkt sind dynamische Arrays, aber die 68k Compiler hatten eigentlich immer alloca(), was das Gleiche ist, was mich vermuten lässt, dass das übliche ABI einen Framepointer vorsah. Ohne geht es auch, aber nett ist das nicht mehr. Da die Optimierung für 68k eher einfach ist, liefern auch einfache Compiler ganz guten Code ab.

Die Libraries sind schon eine andere Geschichte. glibc ist Overhead ohne Ende, aber was ich aus dem embedded Umfeld bisher sah, war abschreckend: Bugs und fehlende Standardfunktionalität. Evtl. wäre da die letzte Version von Minix hilfreich, bevor man auf das NetBSD userland wechselte.

OS-9 kommt natürlich mit einem Compiler daher, aber halt K&R C. Man kann wie früher einen ANSI-C nach K&R Konverter davor setzen, schön ist das aber nicht. Und die Libraries sind vermutlich grausiger als die von SunOS 4.

Compiler und Libraries portieren habe ich ansonsten früher schon gemacht. Vor der GNU Zeit war Software noch klein und verständlich, da ging sowas mit erträglichem Aufwand.

Michael

Posts: 501 | Member since: April 2008 | IP address: not saved
Torsten
Kennt sich schon aus
**
ID # 92


  Posted on February 26, 2020 12:26 AM (#7)  |  Quote Quote   PM PM   E-mail E-mail
Hi,

ich möchte mich smed anschliessen. Ein etwas verbreiteteres OS wäre hilfreich, damit man mal aus dem SW Engpass des 68K NKC rauskommt. Wenn es eine schnelle Portierung des CP/M-68K gibt ist das nett (ich hatte hier mal eine Diskettenversion zu Laufen gebracht, funktioniert halt...), aber zu viel Zeit würde ich da nicht hineininvestieren wollen.

Wie auch smed habe ich seit langem einen gcc Cross-Compiler am Laufen (https://github.com/THemmecke/NKC-CLIB/blob/master/doc/m68k-tools-ReadMe.txt )[/url] mit dem ich auch µCLinux auf dem 68000 zum laufen bekommen habe, ohne MMU. Natürlich wäre ein "echtes" Linux schöner, oder auch ein Minix. Die dafür benötigte MMU wäre bereits in einem 68030 vorhanden, dafür gibt es ja Adapter für den 68020 (z.B. https://github.com/THemmecke/68K20/tree/master/ADAP030 )[/url]
Auch uCOSII ist eine Überlegung wert, da hat man rel. schnell ein lauffähiges Multitasking-System auch mit 68000 ohne MMU am Laufen und könnte sicher ein paar schöne Dinge damit anstellen.

Generell hat man mit einem GCC, wenn man ein bisschen mehr machen will, das Problem, dass man eine CLib braucht. Ich hatte da ja vor einiger Zeit schonmal angefangen, das funktioniert schon ganz gut mit modularen Hardwaretreibern für GIDE, GDP, SDCard und Software-Treibern für JADOS-FS und FAT-FS. Allerdings ist hier noch "Optimierungs-Luft nach Oben", es läuft halt. Mit diesr Lib könnte man z.B. ein eigenes kleines DOS basteln, viel wäre nicht mehr nötig. Die Treiber könnte man auch in anderen Projekten (uCLinux, Linux, Minix ...) weiterverwenden.

Die Software-Thematik ist neben dem Problem der Bauteil-Beschaffung und dem "nicht wieder die gleichen Fehler wie vor 30 Jahren suchen wollen" der Hauptgrund, warum ich mein Neu-Design auf "modernere" Bauteile gestützt hatte: Die Hardware soll sicher funktionieren, damit man sich auf die Software konzentrieren kann.

LG
Torsten

Posts: 78 | Member since: March 2008 | IP address: not saved
m.haardt
Voll in Gange
***
ID # 93


  Posted on February 26, 2020 10:41 PM (#8)  |  Quote Quote   PM PM   E-mail E-mail
Wie gesagt: Ab 68020 mit 68851 oder alternativ 68030 kann ich nur NetBSD empfehlen. Damit habt ihr ein modernes, schlankes und schönes OS.

Modern, schlank und schön aber 68000 ohne MMU wird's nicht geben. Man kann natürlich eine Menge machen, keine Frage, aber wird nie an ein normales Unix rankommen. Minix unterstützt keine Systeme ohne MMU mehr, wozu auch. OS-9 mit einem moderneren Compiler und einer brauchbaren C Library böte immerhin ein Framework für modularen Code. Von selbstgemachten monolithischen Kerneln kann ich nur abraten. Das beginnt ganz einfach und endet in race conditions, Bugs und der Erkenntnis, dass die Erfinder von Unix vieles klug und weitsichtig lösten, was nur in Plan 9 noch besser ist.

Michael

Posts: 501 | Member since: April 2008 | IP address: not saved
m.haardt
Voll in Gange
***
ID # 93


  Posted on March 14, 2020 06:40 PM (#9)  |  Quote Quote   PM PM   E-mail E-mail
Ich habe noch ein Problem mit dem Makroassembler asl, aber grundsätzlich geht der Bootmonitor an meinem NKC mit SER. Den 68008 erkennt er als 68000, weil er nur auf 68010 prüft.

OS-9/68k System bootstrap 2.0
(68000)

>

Der Monitor ist das Übliche: Speicher ändern/ansehen, breakpoints, run etc. Er ist mit ca. 4 KB erstaunlich klein. Damit gäbe es für den 68k das Äquivalent vom rdkmon beim Z80.

Michael

Posts: 501 | Member since: April 2008 | IP address: not saved



| https://hschuetz.selfhost.eu | Board rules | Privacy policy


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Site created in 0.030756 seconds
Processed 18 files
gzip compression enabled
2540.72 KiB memory usage