VGA 640x480@60Hz 80x60(8X8) char Color16/16 für Spiele

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

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

-
Zuletzt geändert von PIC18F2550 am Mi 17. Jul 2013, 17:12, insgesamt 1-mal geändert.
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Regime sendet &c8 als backspace anstelle von $08. :oops:
in reg-ios.spin wird aber ein $08 ordnungsgemäß gesendet
Ursache ist warscheinlich unterschiedliche Tastaturtreiber :oops:

Code: Alles auswählen

''      1C0      Left Arrow
''      1C1      Right Arrow
''      1C2      Up Arrow
''      1C3      Down Arrow
''      1C4      Home
''      1C5      End
''      1C6      Page Up
''      1C7      Page Down
''      1C8      Backspace
''      1C9      Delete
''      1CA      Insert
''      1CB      Esc
''      1CC      Apps
''      1CD      Power
''      1CE      Sleep
''      1CF      Wakeup

Code: Alles auswählen

  CrsLt = $02E4   '←
  CrsRt = $03E6   '→
  CrsUp = $04E8   '↑
  CrsDn = $05E2   '↓
  CrsHm = $06E7   '◀
  CrsEn = $07E1   '▶
  PgUp  = $A0E9   '
  PgDn  = $A2E3   '
  Bksp  = $00C8   'È
  Del   = $BAEA   '
  Ins   = $BBE0   '
  Esc   = $001B   '
  Apps  = $CC00   'Ì
  Power = $CD00   'Í
  Sleep = $CE00   'Î
  WkUp  = $CF00   'Ï
Da bau ich dort besser eine Convertierung ein. :(
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Aber erst bei Mutti kaffee trinken :D :D :D :D :D .
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Ich weis nicht wo das herkommt.
ich habe schon bel-keyb.spin verwendet das gleiche Problem.
DSCI0196.JPG
mal in ruhe darüber nachdenken.

Datenstrom auf dem BUS beim starten 1. Teil.
DSCI0202.JPG
Datenstrom auf dem BUS beim starten 2. Teil.
DSCI0203.JPG
Am Ende wird es wol darauf hinauslaufen, das ich einen kompletten Treiber, nur für Spiele mache, und so das Problem umgehen werde. :oops:
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Also es kommt ein Komlettmodul mit VGA, Keybord und Maus.

Die Schnittstelle verwendet zwar die port's aber die Daten werden eine andere Bedeutung haben.

Administra bleibt so wie der EEPROM ist.

Für regnatix wird ein Grundmodell für Spiele erstellt das den neuen VGA-Treiber ansteuern kann.

Regime kann dann das Grundmodell starten und das Grundmodell kehrt am Ende zu regime zurück.

Auszug vom neuen Treiber

Code: Alles auswählen

    a := startm(bini#BEL_MOUSED, bini#BEL_MOUSEC)'mausport starten
    a := startk(bini#BEL_KEYBD, bini#BEL_KEYBC, %0_000_000, %01_01000)  'tastaturport starten
    a := startv(@screen, @ckx, @sync) 'start vga text driver
    if (a)
        xchr($FE)
        xstr(string("(c)PIC18F2550 VGA 80x60, COLOR 16/16 RASTER 8x8 Treiber fuer HIVE r48/n"))
        xstr(string("Z1013.A2 Zeichensatz/n"))
        waitcnt(clkfreq * 2 + cnt)
        case par_mpresent
            0 : xstr(string("no mouse connected/n"))
            1 : xstr(string("two-button or three-button mouse/n"))
            2 : xstr(string("three-button scrollwheel mouse/n"))
            3 : xstr(string("five-button scrollwheel mouse/n"))
        case -par_kpresent
            true : xstr(string("keybord connected/n"))
            False: xstr(string("no keybord connected/n"))
        waitcnt(clkfreq * 4 + cnt)
Dateianhänge
Steuerzeichen.pdf
(95.89 KiB) 528-mal heruntergeladen
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Also die datenströme sind i.O.
Woher das $C8 beim backspace stammt ist mir immer noch ein Rätzel.
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Stand des Treibers : ersteinmal die Textverwaltung, Maus, Config...

Code: Alles auswählen

            cmd := gc
            if cmd > 0                                                  ' > 0
                xchr(cmd)                                               ' textzeichen $01..$FF
            else
                cmd := gc
                case cmd
                '-----------------------------------------  KEYBOARD
                    $01:                                            'io ' Tastaturstatus senden
                    $02:                                            'io ' Tastaturzeichen senden
                    $03:                                            '   ' Statustasten ($100..$1FF) abfragen
                    $04:                                            '   ' Keybord Kursorstatus lesen
                    $05:                                            '   ' Keybordkursorstatus setzen
                    $06:                                            '   ' Kursor von Windows lesen
                    $07:                                            '   ' Kursor von Windows setzen
                '-----------------------------------------  MAUS
                    $10:                                            '   ' Maus Kursorstatus lesen
                    $11:                                            '   ' Maus Kursorstatus setzen
                    $12:                                            'io ' Maus position lesen(x,y,z)
                    $13:                                            'io ' Maus position setzen(x,y,z)
                    $14:                                            '   ' Maus letzte click position (x,y,z)
                '-----------------------------------------  VGA-Textausgabe
                    $20:                                            'io ' clear Fenster
                    $21:                                            'io ' Kursor home im fenster
                    $22:                                            'io ' Kursor pos1
                    $23:                                            'io ' scrollup scrollt das Fenster nach oben
                    $24:                                            'xxx' scrolldown scrollt das Fenster nach unten
                    $25:                                            'io ' Kursor im Fenster backspace
                    $26:                                            '   ' Tabulatortabelle setzen
                    $27:                                            'io ' tab im fenster setzen

                    $60:                                            '   ' aktuelle Fenster Nummer lesen
                    $61:                                            '   ' aktuelle Fenster Nummer setzen

                    $70:                                            '   ' Fenster Schriftfarbe setzen
                    $71:                                            '   ' Fenster Hintergrundfarbe setzen
                '-----------------------------------------  VGA-Zeichensatz
                    $80:                                            'io*' hive-logo ausgeben
                    $81:                                            '   ' Ein Zeichen im Zeichensatz ändern
                '-----------------------------------------  CHIP-MANAGMENT
                    $F0:                                            '   ' Config abfragen
                    $F1:                                            'io ' screeninit
                    $FF:                                            'io ' bellatrix neu starten
                    other:
                            b := Awindows
                            Awindows := 9
                            xstr(string("BUS-COMMAND-ERROR>00 "))
                            xstr(integerToHexadecimal(cmd,2))
                            xstr(string("<\n"))
                            repeat 2
                                waitcnt(clkfreq + cnt)
                                !outa[HBEAT]                                'led blinken
                            Awindows := b

    else  ' LED Error meldung
        waitcnt(clkfreq + cnt)
        !outa[HBEAT]                                                        'led blinken
Die Fuktionen habe ich mal rausgenommen.

Code: Alles auswählen

'io ' Getestet
'   ' ungetestet
'xxx' geht nicht

Code: Alles auswählen

PRI xchr(a)                                                         '   ' ein Zeichen ausgeben
    if (a == "\") & !(lchar[Awindows] == "\")                           ' Zeichen "\" zwischenspeichern
        lchar[Awindows] := a
    else
        if (a == "\") & (lchar[Awindows] == "\")                        ' doppeltes "\\"
            lchar[Awindows] := 0
        if !(a == "\") and (lchar[Awindows] == "\")                     ' doppeltes "\?" Steuerzeichen
            lchar[Awindows] := 0
            case a
                "n" :                                                   '\n     newline
                    lchar[Awindows] := a
                    spalte[Awindows] := 0
                    if (zeile[Awindows] < eline[Awindows])
                        zeile[Awindows]++
                    else
                        zeile[Awindows] := eline[Awindows]
                        wordmove(@screen[sline[Awindows]*cols], @screen[(sline[Awindows]+1)*cols],(eline[Awindows]-sline)*cols) 'wordmove(dest,src,cnt)
                        wordfill(@screen[eline[Awindows]*cols], fcolor[Awindows] + hcolor[Awindows] + " ", cols)

        else                                                            ' Zeichen 0..255 Ausgeben
            lchar[Awindows] := 0
            screen[spalte[Awindows] + zeile[Awindows] * 80] := fcolor[Awindows] + hcolor[Awindows] + a
            spalte[Awindows]++
            if spalte[Awindows] >79
                spalte[Awindows] := 0
                zeile[Awindows]++
                if (zeile[Awindows] > eline[Awindows])
                    zeile[Awindows]--
                    wordmove(@screen[sline[Awindows]*cols], @screen[(sline[Awindows]+1)*cols],(eline[Awindows]-sline)*cols) 'wordmove(dest,src,cnt)
                    wordfill(@screen[eline[Awindows]*cols], fcolor[Awindows] + hcolor[Awindows] + " ", cols)
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Und er werde Farbe. :twisted:
DSCI0204.JPG
1. Versuch Text mit Farbattributen zu übertragen.
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: VGA 640x480@60Hz 80x60(8X8) char Color16/16

Beitrag von PIC18F2550 »

Im speedtest ist diese version nicht der Hammer. :oops:

Daher Planänderung.

Es gibt keine Comandosignatur ($00) mehr. dammit verschwinden die texte in der Commandostruktur.
da die texte nicht die Masse sind ist das akzeptabel.
Objekte kommen direkt in Bellatrix und werden nur noch von Regnatix angewiesen wo und wie darzustellen.
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: VGA 640x480@60Hz 80x60(8X8) char Color16/16 für Spiele

Beitrag von drohne235 »

@PIC: Der Font ist doch 8x8 Pixel? Hast du mal einen Quelltext zum extrahieren, ich bräuchte mal so einen Font für den G1-Treiber. Mal schauen, ob das noch auf dem TV lesbar ist.
"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
Antworten