das ist bei mir nicht weider schlimm es kann nur noch besser werdendrohne235 hat geschrieben:Jetzt mach PIC nicht verrückt



So das habt ihr jetzt davon. Vielspaß beim testen.
das ist bei mir nicht weider schlimm es kann nur noch besser werdendrohne235 hat geschrieben:Jetzt mach PIC nicht verrückt
Code: Alles auswählen
'------------------------------------------- CONTROLL
long plen ' länge datenblock loader
byte proghdr[16] ' puffer für objektkopf
'------------------------------------------- VIDEOTREIBER
long cog[2] '
long sync ' sync long - written to -1 by VGA driver after each screen refresh
long screen_at ' Zeiger auf screenanfang für VGA Darstellung (in zeilen schritten)
word screen[cols * rows * SCREENS] ' screen buffer - could be bytes, but longs allow more efficient scrolling
byte ckx, cky, ckm, cmx, cmy, cmm ' cursor control bytes
byte cmz ' cursor control bytes Scrollrad
'------------------------------------------- KEYBORD
long keycode ' letzter tastencode
'------------------------------------------- VIDEO
byte tab[TABANZ] ' tabulatorpositionen
byte Awindows ' Aktuelles Fenster
long lchar[WINDOWS] ' letztes ausgegebenes Zeichen
word fcolor[WINDOWS] ' Schriftfarbe
word hcolor[WINDOWS] ' Hintergrundfarbe
byte sline[WINDOWS] ' startzeile des scrollfensters (0 = 1. zeile)
byte eline[WINDOWS] ' endzeile des scrollfensters (0 = 1. zeile)
byte sspalte[WINDOWS] ' startspalte des scrollfensters (0 = 1. Spalte)
byte espalte[WINDOWS] ' endspalte des scrollfensters (0 = 1. Spalte)
byte spalte[WINDOWS] ' kursor X
byte zeile[WINDOWS] ' kursor Y
Ist das jetzt nutzbar wie die Multiscreens im normalen Treiber? Da gab es noch die Funktionen mgr_wscr und mgr_dscr um einzustellen, auf welchen Screen gerade geschrieben und welcher angezeigt wird und das wird auch verwendet um zwischen den ersten drei Forth-COGs mit ESC-1|2|3 umzuschalten.So jetzt sind auf dem virtuellen screen z.Z. 80x120 10 Fensterbereiche einstellbar und ihre Keybord Kursordaten werden jetzt zwischengespeichert und beim wechsel ins nächste fenster wiederhergestellt.
es sind fensterbereiche auf einem virtuellen Monitor von 80x120 von dem ein bereich von 80x1..60 bis 80x61..120 dargestellt wird(scrollrad).drohne235 hat geschrieben:Ist das jetzt nutzbar wie die Multiscreens im normalen Treiber
noch nicht drinn.drohne235 hat geschrieben:mgr_wscr und mgr_dscr um
dafür deffiniert man 3 Fenster auf dem virtuellen Monitor.(Kursor zieht "fenster" in den Sichtbaren (teil noch nicht drinn)drohne235 hat geschrieben:zwischen den ersten drei Forth-COGs mit ESC-1|2|3 umzuschalten
Das ist das von mir in http://hive-project.de/board/viewtopic.php?f=7&t=671 angesprochene Problem wenn im treiber nicht alle möglichkeiten ausdekodiert werden können.drohne235 hat geschrieben:Der Bellatrix Code zeigt brav erst "BUS-COMMAND-ERROR>00 59< und folgend "BUS-COMMAND-ERROR>00 58< an (praktische Sache, werde ich in den Normalocode übernehmen!). Allerdings wird die zweite Meldung am oberen Bidlschirmrand angezeigt und der Cursor steht bei Home in der linken oberen Ecke.
drohne235 hat geschrieben:Was mir noch aufgefallen ist: unser altes CR/NL-Problem schlägt wieder zu. Unter Forth werden immer doppelte Zeilenwechsel ausgeführt.
Code: Alles auswählen
$0A, $0D: 'new line
if a == $0a and lchar[Awindows] == $0d
a := 0
lchar[Awindows] := a
spalte[Awindows] := 0
if (zeile[Awindows] < eline[Awindows])
zeile[Awindows]++
else
zeile[Awindows] := eline[Awindows]
xchr($06)