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