Bellacode VGA-treiber laden

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Antworten
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Bellacode VGA-treiber laden

Beitrag von PIC18F2550 »

Meine Frage ist ob ich das so richtig verstanden Habe.

Code: Alles auswählen

PUB main | a,b
'ios initialisieren
    a := ios.start

'grafiktreiber laden
    a := ios.sdchdir(@ver0)     ' "/"
    a := ios.sdchdir(@ver2)     ' "system"
    ios.sddmact(ios#DM_USER)    ' dir-marker setzen
  a := ios.sdopen("r",@VGA)
  if a == 0
    ios.belload(b)              'treiberupload
    ios.screeninit(0,1)         'systemmeldung
  else
'    os_error(status)

DAT ' System config
VGA                     byte "VGA80x60.bel",0    ' bella-code, VGA-version

DAT 'Hintergrungmusik
ver0                    byte "\",0
ver2                    byte "system",0
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Bellacode VGA-treiber laden

Beitrag von drohne235 »

Sofern der Treiber im Systemverzeichnis liegt, kannst du auch die Marker nutzen. Also quasi gleich zum smarker wechseln, damit landest du ja im Systemverzeichnis. Ansonsten finde ich jetzt nicht, wo "b" definiert ist.

Interessant vielleicht auch die Routine in Regime um Bellatrix-Code zu laden:

Code: Alles auswählen

PUB os_testbel(stradr): flag | status,i,len             'sys: test ob kommando als bel-datei vorliegt

  flag := FALSE
  len := strsize(stradr)
  repeat i from 0 to 3                                  '.bel anhängen
    byte[stradr][len + i] := byte[@ext3][i]
  byte[stradr][len + i] := 0

' im aktuellen dir suchen
  status := ios.sdopen("r",stradr)                      'datei vorhanden?
  if status == 0                                        'datei gefunden
    flag := TRUE
    ios.belload(stradr)                                 'bellatrix-code laden
    ios.screeninit(0,1)                                 'systemmeldung
  else                                                  'datei nicht gefunden
  ios.sdclose

'im system-dir suchen
  ios.sddmset(ios#DM_USER)                              'u-marker setzen
  ios.sddmact(ios#DM_SYSTEM)                            's-marker aktivieren
  status := ios.sdopen("r",stradr)                      'datei vorhanden?
  if status == 0                                        'datei gefunden
    flag := TRUE
    ios.belload(stradr)                                 'bellatrix-code laden
    ios.screeninit(0,1)                                 'systemmeldung
  else                                                  'datei nicht gefunden
  ios.sdclose
  ios.sddmact(ios#DM_USER)                              'u-marker aktivieren

  byte[stradr][len] := 0                                'extender wieder abschneiden

Dabei ist der Code aber Teil der Kommandozeile, wo erstmal getestet wird:
1. Ist es ein internes Kommando? --> Routine aufrufen
2. Ist es eine BIN-Datei im aktuellen oder System Verzeichnis? --> Regnatix-Code starten
3. Ist es eine ADM-Datei im aktuellen oder System Verzeichnis? --> Administra-Code starten
4. Ist es eine BEL-Datei im aktuellen oder System Verzeichnis? --> Bellatrix-Code starten
5. Alternativ Fehlermeldung
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Bellacode VGA-treiber laden

Beitrag von PIC18F2550 »

b ist Leiche liegenlassen und beobachten :lol:
So müsste es also funktionieren.

Code: Alles auswählen

PUB test_belload: flag | status,i                         'sys: test ob kommando als bel-datei vorliegt

flag := FALSE
' im aktuellen dir suchen
  status := ios.sdopen("r",stradr)                      'datei vorhanden?
  if status == 0                                        'datei gefunden
    flag := TRUE
    ios.belload(stradr)                                 'bellatrix-code laden
    ios.screeninit(0,1)                                 'systemmeldung
  ios.sdclose

'im system-dir suchen
  ios.sddmset(ios#DM_USER)                              'u-marker setzen
  ios.sddmact(ios#DM_SYSTEM)                            's-marker aktivieren
  status := ios.sdopen("r",stradr)                      'datei vorhanden?
  if status == 0                                        'datei gefunden
    flag := TRUE
    ios.belload(stradr)                                 'bellatrix-code laden
    ios.screeninit(0,1)                                 'systemmeldung
  ios.sdclose
  ios.sddmact(ios#DM_USER)                              'u-marker aktivieren

DAT
datei	byte "vga80x60.bel",0
Die Dadei sucht er erst um userverzeichnis und anschließend im systemverzeichnis.
Dabei wird der aus dem systemverzeichnis über den vom userverzeichnis geladen aber das ist mit einfachen mitteln abzustellen es geht hier nur um das Prinzip.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten