Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: ORANGE-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Sonntag, 28. Oktober 2012, 13:28

Orange OS

https://github.com/ORANGE-Corps

Nötiger Funktionsumfang für ein OS:

- Anzeige von Systeminformationen (angeschlossene Geräte)
- Menü zur Steuerung
- DOS (Disketten Operation System, Laden, Kopieren, Speichern, Prüfen usw.)
- MD5 Hash des Systems, von Disketten oder so erstellen, damit auf Veränderungen geprüft werden kann.
- kleine Spiele (als Feature und Programmierübung -> XXO, Tetris, Memory oder 4Gewinnt…)
- 3D Ausgabe vereinfachen.

Diese Punkte können bereits ohne Spiel umgesetzt werden selbst wenn sich die Definition der CPU noch ändert muss man nur die betroffenen Stellen anpassen.

Es sind aber ein paar wichtige Punkte zu beachten, Schleifen bei Eingaben müssen einen bestimmten Aufbau haben:

Beispiel 1:
Diese Loop läuft solange bis die richtige Taste gedrückt wird. Solange passiert zwar jede Menge (Keyboard lesen, Taste prüfen, Jump) aber nichts Nützliches…

Quellcode

1
2
3
4
5
6
7
8
9
10
11
:mainloop

set a, 1 ; Keyboard Interrupt abrufen
hwi [KEYBOARD] ; c wird hier überschrieben

ife c, 0 ; Es wurde keine Taste gedrückt 
	set pc, mainloop ; Sprung zurück 
ife c, 0x0031  
	set pc, otherprogrammpart

set pc mainloop ; No Exit!


Beispiel 2:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
:LoopCnt 
dat 0
:LoopCntMax
dat 100

:mainloop

set a, [LoopCnt] ; Loop Variable Speichern
add a, 1 ; a=a+1 -> a++;
set [LoopCnt] , a ; Loop Variable zurück Speichern
set c, [LoopCntMax] ; Loop Max Speichern
ife a, c ; alle LoopCntMax Durchläufe wird das Programm „systemloop” aufgerufen 
	jsr systemloop

set a, 1		; Keyboard Interrupt abrufen
hwi [KEYBOARD] ; c wird hier überschrieben

ife c, 0	 ; Es wurde keine Taste gedrückt 
	set pc, mainloop ; Sprung zurück 
ife c, 0x0031  
	set pc, otherprogrammpart

set pc mainloop ; No Exit!

: systemloop
     ; Hier können systemrelevante Aufgaben ausgeführt werden. 
     ; zB bei einen Angriff Schilde ausfahren oder Warnungen ausgeben.
set pc, pop ; Return zur aktuellen Eingabeschleife


Mit diesem Aufbau kann auch ein anderes Programm fortgesetzt werden falls es nötig ist. Im Notfall muss man also nicht erst das aktuelle Programm beenden um zB zur Waffen\Energie Kontrolle zu gelangen
Happy Coding

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »The_Real_Black« (28. Oktober 2012, 13:36)


2

Sonntag, 28. Oktober 2012, 14:04

Tja, beim DCPU ist es viel einfacher ein OS zu programmieren als z.B. beim i386, irgendwie will ich jetzt ein OS für den DCPU programmieren

3

Sonntag, 28. Oktober 2012, 17:34

Weitere Funktionen
- Sin undTan Tabellen
- (Zukunft) Vernetzung -> Notch hat anscheinend bei Tritter auch von Vernetzungen zwischen Computern gesprochen.

Tja, beim DCPU ist es viel einfacher ein OS zu programmieren als z.B. beim i386, irgendwie will ich jetzt ein OS für den DCPU programmieren

Würde ich jetzt so nicht sagen, aber was ein OS können muss ist ein anderes Thema. Bei einen echten vollen OS sind viele Featrues nötig um überhaupt zu laufen.
Bei einen Maschienen nahen OS muss kein Dateiverwaltungssystem, oder was ähnliches unbedingt implementiert werden. Ich bleib da bei meinen Waschmaschienen Beispiel ;) Ebenso muss kein direktes Threading implementiert werden mit der oben angedeuteten Schleife kann dies auch erreicht werden.
Happy Coding

4

Sonntag, 28. Oktober 2012, 17:43

Na ja, wenn ich mir mal den Bootloader-Schit von ganz einfachen Programmen auf dem i386 wie deinem angucke, sind zumindest so Mini-Dinger auf dem DCPU deutlich einfacher

5

Sonntag, 28. Oktober 2012, 21:23

Na ja, wenn ich mir mal den Bootloader-Schit von ganz einfachen Programmen auf dem i386 wie deinem angucke, sind zumindest so Mini-Dinger auf dem DCPU deutlich einfacher

Mit Bootloader hatte ich noch keinen direkten Kontakt und wenn dann war immer alles vorbereitet das es klappt (als Iso ausgegeben und dann als VM laufen lassen).

Im Ram hat man nur 127 kB also 65536 Words Platz für Programme und Daten auf eine Disc passen 11 mal so viele Daten. Ich frag emich ob die ganzen Features eines Multithreading OS überhaupt auf diesen kleinen Platz passen ohne, dass alle Daten immer wieder auf eine Diskette ausgelagert werden müssen.

Ich habe jetzt noch ein paar Tweets von Notch gelesen und was andere darüber zusammen geschrieben haben. Man sollte beide Varianten verfolgen also ein kleines einfaches OS welches keine Angriffsvektoren bietet und eins welches alle Features eines DOS mit sich bringt. Welches am Ende besser ist wird sich zeigen.
Happy Coding

6

Sonntag, 28. Oktober 2012, 22:51

also ich muss sagen ich freu mich das wir jetzt n guten programierer haben ;)

7

Montag, 29. Oktober 2012, 09:54

Wer nicht?

OK, ich glaube für ein Linux hat der Computer einfach nicht genug Resourcen, aber für ein DOS reichts. Bei Linux hatte ich auch Vergessen, dass es trotzdem viel Assembler gibt, bei DOS ist das aber nicht so häufig, ich könnte mal probieren, FreeDOS für den DCPU azupassen.

8

Montag, 29. Oktober 2012, 10:20

Wer nicht?

OK, ich glaube für ein Linux hat der Computer einfach nicht genug Resourcen, aber für ein DOS reichts. Bei Linux hatte ich auch Vergessen, dass es trotzdem viel Assembler gibt, bei DOS ist das aber nicht so häufig, ich könnte mal probieren, FreeDOS für den DCPU azupassen.


Dass wäre gut.

PS an alle die was lernen wollen:
http://www.google.de/#hl=de&safe=off&out…iw=1159&bih=685

Googlet mal nach "Manuskript zur Vorlesung Echtzeitsysteme" die ersten Treffer sehen ganz gut aus, aber dies ist ein 8086 cpu. Nett ist hier die Speicherverwaltung erklärt und die Register Typen. Ebenso sind hier Stackwechsel und anderes erklärt, da es aber anscheinend beim DCPU (noch) keine offizielle Option gibt die Position von Speicherblöcken festzulegen wird hier einiges an Umwegen gebraucht werden. Auch gibt es kaum Chancen, dass es einen Protected Mode beim Speicherzugriff gibt (außer man baut sich diesen selbst...).
-> Spatzen und Flak-Geschütze... :P
Happy Coding

9

Montag, 29. Oktober 2012, 11:40

da es aber anscheinend beim DCPU (noch) keine offizielle Option gibt die Position von Speicherblöcken festzulegen wird hier einiges an Umwegen gebraucht werden. Auch gibt es kaum Chancen, dass es einen Protected Mode beim Speicherzugriff gibt (außer man baut sich diesen selbst...).

Dann wird das OS allerdings auch langsamer, da das ja dann nicht direkt in der Hardware eingebaut ist.

10

Mittwoch, 31. Oktober 2012, 16:42

Ich mache mir Gedanken über ein Dateisystem auf den Disketten:

- Ich suche noch nach einen Hash\Checksum Algo. welcher gleich einen ganzen Sektor (512 Words) Hashen kann.

- Idee:
Die ersten oder letzten Words des ersten Sektors sollten einen Code enthalten ("ORANGE DISC GUID") welcher die Disk als eine von "uns" kenntzeichnet.
Desweiteren enthält der erste Sektor die Informationen über Dateien auf der Disk:
Typ, Start Sektor, Länge (in Sektoren angegeben), Dateinamen ( Je Word 2 Zeichen) -> Maximal 8, Checksum

Typen können dann sein:
Info - Hier wird das obenbeschriebene Dateiformat gespeichert.
Daten - Hier werden Daten von Programmen gespechert.
Programm - kann ab Word 0 ausgeführt werden (Programm austausch)
OS\Boot - Programm welches den RAM überschreiben darf soll, als System Update.
Leer - ...
Defekt - Sektor ist Defekt und muss übersprungen werden.

Vor Dateien können auch Info Sektoren stehen welche dann weitere Checksums oder Meta Daten enthalten.

Fraglich ist wie viele weitere Speichermedien es geben wird (Festplatte? Bandspeicher?) dass sich die Disketten auch als nützlich erweisen die Datenmengen zu kopieren...
Happy Coding

11

Mittwoch, 31. Oktober 2012, 16:56

Idee für Funktionsumfang:
Log (Texteditor) zum Speichern, Laden und Bearbeiten von "Logbüchern". Ausgabe sollte ohne Formate, 2 Chars je Word erfolgen.
Happy Coding

12

Mittwoch, 31. Oktober 2012, 17:01

Man kann doch einfach ein schon existierendes Dateisystem nehmen, die sind auch viel optimierter als ein eigenes.
Und 512 Bit hashen kann doch fast jeder Algorythmus, da die zu verschlüssende Datengröße doch normalerweise Variabel ist.

13

Mittwoch, 31. Oktober 2012, 17:13

Man kann doch einfach ein schon existierendes Dateisystem nehmen, die sind auch viel optimierter als ein eigenes.
Und 512 Bit hashen kann doch fast jeder Algorythmus, da die zu verschlüssende Datengröße doch normalerweise Variabel ist.

Problem ist hier, dass dies mit nur 16 Bit etwas schwer zu rechnen ist. Ein paar eigene Versuche und Sources aus dem Englischen Forum haben immer wieder Überlauf gehabt. Ka ob dies mit bedacht ist oder nicht...

Ein "existierendes Dateisystem" bietet aber Angriffsflächen welche man vermeiden sollte. Auto-Start Viren oder andere schädliche Programme.
Happy Coding

14

Mittwoch, 31. Oktober 2012, 17:16

Mit EXT (dem Linux Dateisystem) ist es möglich, bestimmte Bereiche schreibzuschützen, da würde dann theoretisch nicht mal der Kernel, über das Dateisystem, rankommen, ohne den Schutz aufzuheben.

15

Mittwoch, 31. Oktober 2012, 17:43

Mit EXT (dem Linux Dateisystem) ist es möglich, bestimmte Bereiche schreibzuschützen, da würde dann theoretisch nicht mal der Kernel rankommen, ohne den Schutz aufzuheben.

Dann nehmen wir gleich ein Linux als Betriebssystem...
Happy Coding

16

Mittwoch, 31. Oktober 2012, 17:45

Gegen Linux spricht ja, dass es sogar total abgespeckt zu langsam ist. Allerding könnte man mit Linux alle Daten auf zentralen Server speichern.

17

Mittwoch, 31. Oktober 2012, 18:31

Gegen Linux spricht ja, dass es sogar total abgespeckt zu langsam ist. Allerding könnte man mit Linux alle Daten auf zentralen Server speichern.
Das könnte manchen übernommenen OS so ergehen... naja warten wir mal ob sich nochmehr Entwickler finden und welche HW dann noch aufkommt bevor wir entscheiden was wir verwenden werden.
Happy Coding

18

Donnerstag, 1. November 2012, 20:51

Orange OS:
Es wird eine beliebige Anzahl von Monitoren unterstützt, diese wechseln sich ab mit den Informationen.
In jeder Loop wurde ein Zähler hinzugefügt welcher nach x Schleifen durchläufen ein Notfall Checheck durchführt. Wenn der Check gestartet wurde schaltet der Screen 0 den Rand auf Rot (ist im Bild angedeutet). Im Moment zählt in der Check-Schleife nur ein Zähler hoch, damit man das Umschalten auch mitbekommt, später soll hier geprüft werden ob Feinde in der Nähe sind oder andere Aktionen erforderlich sind.
Das Submenü "Disketten Operationen" hat noch keine Funktion, so wie es aussieht stimmt hier die Implementierung nicht mit denen von Notch überein.
Im Submenü "System Operationen" gibt es eine Option das System neuzustarten.
»The_Real_Black« hat folgende Dateien angehängt:
  • TestHWMapping_20121101.txt (19,64 kB - 4 mal heruntergeladen - zuletzt: 1. November 2012, 22:38)
  • Blink.jpg (77,51 kB - 17 mal heruntergeladen - zuletzt: 27. März 2013, 17:29)
Happy Coding

19

Samstag, 3. November 2012, 21:07

Update ich verwende im Moment die Organic-Lettuce Toolchain und hier klappt das SPED3 (Siehe 0x10c Forum unter meinen Tools ^^)
Im Moment wird ein Boot Screen angezeigt bavor das Programm weiter ausgeführt wird. (Funktion keine, aber sieht nett aus).
Ebenso wird der Cosinus nur als Test in das Sped3 gezeichnet.

-> OrangeOS klappt also auch unter der Organic-Lettuce Toolchain
-> Alle Geräte werden nun korrekt erkannt (dank Lettuce sogar ansteuerbar)
-> 4 Monitore, Sped3, Clock, Keyboard, Schlafkammer, 2 Floppys werden erkannt und wären nun bereit angesteurt zu werden.

Nachste Ziele wären:
-> Floppys ansteuern damit von A nach B kopiert werden kann.
-> Disketten erstellen und mit eingenen OS füllen (?BootDisc?)
-> Hash je Sektor und Disc erstellen
-> Spiele einbauen ^^

(hat jemand Interesse mitzumachen?)

Edit: Ich hab mal das BIN auch mit angehängt, damit es nur noch mit Lettuce ausgeführt werden muss.
»The_Real_Black« hat folgende Dateien angehängt:
  • OrangeOS.asm (24,6 kB - 2 mal heruntergeladen - zuletzt: 4. November 2012, 12:08)
  • OrangeOS.bin (4,16 kB - 1 mal heruntergeladen - zuletzt: 3. November 2012, 23:46)
Happy Coding

20

Samstag, 3. November 2012, 23:49

hört sich ja schonmal ganz gut an xd auch wenn ich keine ahnung vom programieren habe ^^

Ähnliche Themen