Seite 3 von 7
Re: KC85/4 dual VGA
Verfasst: So 24. Feb 2019, 00:17
von PIC18F2550
So sieht die neue Platte aus.
Beide Seiten sind Daten mässig vollständig getrennt.
Jetzt heist es erst ein mal wieder Warten ....
Re: KC85/4 dual VGA
Verfasst: So 24. Feb 2019, 00:22
von PIC18F2550
Eigentlich müssten die VGA Löcher durchsichtig sein. Sind sie aber nicht.
Wie müsste die Linie (Layer in Eagle) für die VGA-Buchse sein.
Ich habe "milling" und "outlinie" getestet beides beides keinen Erfolg mit dem Gerber Viewer.
Re: KC85/4 dual VGA
Verfasst: Do 28. Feb 2019, 13:02
von PIC18F2550
Antwort vom Schmied : Es ist alles OK der Gerberwiev erkennt keine Durchbrüche.
Also gleich den Autrag dem Schmied hinterher geworfen.
Nu solle er es auch machen.

Re: KC85/4 dual VGA
Verfasst: Sa 9. Mär 2019, 12:50
von PIC18F2550
So die VGA Platten sind da.
Die bestellung bei Reichelt hat es nicht geschafft.
Das heist noch eine Woche warten.
Re: KC85/4 dual VGA
Verfasst: Mi 20. Mär 2019, 22:05
von PIC18F2550
So beide Kanäle Arbeiten.

Re: KC85/4 dual VGA
Verfasst: Do 21. Mär 2019, 08:13
von kuroneko
Congratulations!
Wie ist das dann eigentlich auf dem KC, muss man da "offiziell" mit 'ner Tastenkombination umschalten um den anderen screen zu sehen?
Re: KC85/4 dual VGA
Verfasst: Do 21. Mär 2019, 09:24
von digger
ich finde das echt Hammer! aber genau, erzähl mal wie man die Eingabe aber auch die Ausgabe switcht? Kann man auch vom KC Basic aus steuern auf welchem Bildschirm man etwas ausgeben möchte?
P.S. auf jeden Fall wird das für die KC Jünger auf dem Treffen ein unglaubliches Highlight, die wollen das sicher alle haben

Re: KC85/4 dual VGA
Verfasst: Do 21. Mär 2019, 12:35
von PIC18F2550
Ich kenne zur Zeit nur die Variante mit der Funktionstasten definition. "ESC 1" und "ESC 2"
Aber das funktioniert genauso wie bei der internen Graphig.
Das ist mit Version 2.
Die Version 3 soll zwei verschiedene Graphigmodis haben.
einmal wie das original und einmal echten Textmodus.(128x64) zum Programmieren.
Aber da werde ich wohl wieder kuroneko nerven, wie ich die Treiber ohne umladen der COGs abwechselnd in den Ruhemodus schicken kann.
Ich nehme an das das weniger Störungen auf dem Bildschirm verursacht.
In wie weit das ein vorteil gegenüber das neuladen bringt weis ich noch nicht.
Bei meinen Texttreiber kann ich immer nur für eine Zeile die Farbe bestimmen ...

das währe nicht so schön.
Für den Text und Farbattributen sind getrennte arrays vorhanden wie beim KC85/4 üblich.
Im Treiber ist auch eine Anzeige für einen Maus Kursor vorhanden nur müsste dieser dem KC zugänglich gemacht werden.
Mit dem haben wollen ist das so eine Sache.
Für das M100 (VGA für KC85/3 mit 1MB SRAM gepuffert) hielt sich das Interesse in grenzen Ich und +1.

Re: KC85/4 dual VGA
Verfasst: Do 21. Mär 2019, 18:38
von PIC18F2550
So 128x64 läuft erst einmal.
Jetzt geht es noch um die Umschaltung.
Code: Alles auswählen
OBJ
system: "core.con.system"
VAR
long cogv[2]
PUB start(ID, mailbox)
long[mailbox][3] := 0
cogv[0] := system.launch( ID, @driver, mailbox) & 7
cogv[1] := system.launch(cogv[0], @driver, mailbox|$8000)
cogv[0] := cogv[0] +1
cogv[1] := cogv[1] +1
repeat
until long[mailbox][3] == $0000FFFF ' OK (secondary/primary)
long[mailbox][3] := 0 ' release sync lock
PUB stop | i 'io ' Stop VGA driver - frees two COGs
repeat i from 0 to 1
if cogv[i]
cogstop(cogv[i]~ - 1)
Code: Alles auswählen
PUB start(ScreenPtr, CursorPtr, SyncPtr) : okay | i, j, a 'io '
{{
'' Start VGA driver - starts two COGs
'' returns false if two COGs not available
''
'' BasePin = VGA starting pin (0, 8, 16, 24, etc.)
''
'' ScreenPtr = Pointer to 80x30 words containing Latin-1 codes and colors for
'' each of the 80x30 screen characters. The lower byte of the word
'' contains the Latin-1 code to display. The upper byte contains
'' the foreground colour in bits 11..8 and the background colour in
'' bits 15..12.
''
'' screen word example: %00011111_01000001 = "A", white on blue
''
'' CursorPtr = Pointer to 6 bytes which control the cursors:
''
'' bytes 0,1,2: X, Y, and MODE of cursor 0
'' bytes 3,4,5: X, Y, and MODE of cursor 1
''
'' X and Y are in terms of screen characters
'' (left-to-right, top-to-bottom)
''
'' MODE uses three bottom bits:
''
'' %x00 = cursor off
'' %x01 = cursor on
'' %x10 = cursor on, blink slow
'' %x11 = cursor on, blink fast
'' %0xx = cursor is solid block
'' %1xx = cursor is underscore
''
'' cursor example: 127, 63, %010 = blinking block in lower-right
''
'' SyncPtr = Pointer to long which gets written with -1 upon each screen
'' refresh. May be used to time writes/scrolls, so that chopiness
'' can be avoided. You must clear it each time if you want to see
'' it re-trigger.
}}
stop ' if driver is already running, stop it
reg_vcfg := $200000FF + (BEL_VGABASE & %111000) << 6 ' implant pin settings
i := $FF << (BEL_VGABASE & %011000)
j := BEL_VGABASE & %100000 == 0
reg_dira := i & j
reg_dirb := i & !j
sync_cnt := cnt + $10000 ' implant CNT value to sync COGs to
longmove(@screen_base, @ScreenPtr, 2) ' implant pointers
screen_at := 0
screen_op := @screen_at
font_base := @font
vf_lines.byte := vf ' implant unique settings and launch first COG
vb_lines.byte := vb
font_part := 1
cogv[1] := cognew(@entryv, SyncPtr) + 1
waitcnt($2000 + cnt) ' allow time for first COG to launch
vf_lines.byte := vf+4 ' differentiate settings and launch second COG
vb_lines.byte := vb-4 ' differentiate settings and launch second COG
font_part := 0
cogv[0] := cognew(@entryv, SyncPtr) + 1
if cogv[0] and cogv[1] ' if both COGs launched, return true
return true
stop ' else, stop any launched COG and return false
PUB stop | i 'io ' Stop VGA driver - frees two COGs
repeat i from 0 to 1
if cogv[i]
cogstop(cogv[i]~ - 1)
Die Umschaltung klappt einmal danach bleibt der Bildschirm Dunkel.
ich denke das ich das core.con.system anderst behandeln muss.
Oder müssen die beiden COGs logisch hintereinander liegen?
Wer kann mir den richtigen Tritt verpassen so das ich in die richtige Richtung fliege.
Danke.
Re: KC85/4 dual VGA
Verfasst: Fr 22. Mär 2019, 10:35
von kuroneko
system.launch hat das +1 schon mit drin.
Code: Alles auswählen
PUB launch(ID, code, data)
'' PASM quick launch using a specific or the next available ID.
''
'' parameters
'' ID: cog ID
'' 0..7: coginit, otherwise cognew (may fail)
'' code: address of code fragment (4n)
'' data: cognew/coginit parameter (4n)
''
'' result
'' == 0: [ABORT] thread creation failed (cognew only)
'' <> 0: thread/cog ID + 1