Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Vollgrafik KRT & SDCC » Themenansicht

Autor Thread - Seiten: -1-
000
31.10.2016, 09:30 Uhr
Hobi



ich versuche gerade ein paar Routinen zur KRT-Grafik mit zu den SDCC Bibliotheken hinzuzufügen.

Dabei habe ich noch eine Frage zum Einstand. Wenn man das Ergebnis vom JKCEMU nimmt, scheint die Standardfarbe (0x00 im Speicher) Weiß zu sein. Einen schwarzen Pixel bekommt man, wenn man ein Bit auf 1 setzt. Ist dieses Verhalten beim echten Z1013 genau so?

Was macht der KC87? Ist die Darstellung dort auch "invers"?
--
-------------------------------------------
Corontäne
-------------------------------------------

Dieser Beitrag wurde am 31.10.2016 um 09:32 Uhr von Hobi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
31.10.2016, 09:36 Uhr
PIC18F2550

Avatar von PIC18F2550

Hobi

denk mal an die alten bildröhren

Da wurde das Zeichen durch helltasten des Kathodenstrahls gezeichnet.

Daher 0 = aus = dunkel = schwarz


--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
31.10.2016, 10:06 Uhr
Hobi



Das ist ja gerade mein Problem. Im Emulator ist 0 = weiß und so wahrscheinlich auch auf der Originalplatine.
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
31.10.2016, 10:39 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Die originale Z1013-KRT benutzt invertierende Puffer, daher ist bei der originalen KRT die Bedeutung von 0 und 1 vertauscht.
Nachfolgende Schaltungen + Software sowie der KC87 nutzen nichtinvertierende Treiber, hier ist 1 = Pixel gesetzt in Vordergrundfarbe, 0 = Pixel gesetzt in Hintergrundfarbe.

Bei schwarz/weiß-Röhrenmonitoren wird weiß auf schwarz dargestellt, ein gesetzter Pixel ist weiß.

Letztlich ist es aber für Grafik egal.
Ich würde Dir empfehlen, die Routinen analog zum JKCEMU zu implementieren. Dann kannst du mit dem eingebauten BASIC-Compiler Test-Programme schreiben, für die verschiedenen System nutzen, und die Bildschirmausgaben direkt vergleichen.

Unter
http://hc-ddr.hucki.net/wiki/doku.php/z1013:erweiterungen:vollgrafik#krt-grafik_kleinstrechnertipps
liegt die relevante Routine zum Pixel setzen/rücksetzen, wie das in der BASIC-Erweiterung nach FA 92-8 gelöst ist.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 31.10.2016 um 10:42 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
31.10.2016, 10:54 Uhr
Hobi



Danke. Sowas in der Art hatte ich mir schon gedacht. Nun bliebe nur noch die Frage, wieviele Z1013 Nutzer haben invertierte Treiber.

Softwaremäßig ist es kein Problem die Routinen jeweils nochmal invers mitzuliefern.

Wie kann man die Grafik auf dem KC87 ansprechen? Gibt es dazu eine SW-Dokumentation, resp. die IO Adressen?
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
31.10.2016, 11:38 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Ich kenne niemand, der am Z1013 überhaupt eine funktionierende Grafik hat, ergo auch niemand mit KRT-Grafik.

KC87 s. http://hc-ddr.hucki.net/wiki/doku.php/z9001:erweiterungen:krtgrafik, speziell Hardware + Download. Bei U. Zander gibt es bessere Hardwareunterlagen.

Der BASIC-Compiler im JKCEMU erzeugt auch passenden Code. Schau mal in den Quellcode src\jkcemu\programming\basic\target\*.java
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
01.11.2016, 10:13 Uhr
Hobi



Gibt es irgendwo noch den Originalartikel?
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
01.11.2016, 11:07 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Klar :-)
Ich hab die ne Mail geschickt.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
01.11.2016, 12:16 Uhr
Hobi



Warum hat man denn invertierende Treiber verwendet? War das eine Frage des Preises oder der Verfügbarkeit?
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
01.11.2016, 12:33 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Ich denke letzteres. Das, was wohl die Bastelkiste hergab. Und vielleicht auch mit dem Gedanken, das Grafik wohl eher schwarz auf weiß angezeigt wird?
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
03.11.2016, 14:55 Uhr
Hobi



Mittlerweile finde ich es richtig cool am KC87 rumzubasteln. Ich hab das Gerät mit zum SDCC dazugefügt.

Wie verhält es sich eigentlich bei den S/W Geräten? Werden da die Farbwerte als Graustufen angezeigt oder fehlt 1K Farb RAM völlig?
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
03.11.2016, 15:09 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Beim originalen TV-Ausgang erfolgt die Darstellung immer nur in schwarz/weiß, egal, ob eine Farb-Karte eingebaut ist oder nicht. Man sieht am Fernseher nur schwarz/weiß. Ein gesetztes Zeichen/Pixel wird weiß auf dem TV dargestellt.

Nutzt man den Farbausgang, sieht man ein gesetztes Zeichen/Pixel in der hinterlegten Vordergrund- und Hintergrundfarbe.

Wenn keine Farb-Karte vorhanden ist, gibt es auch keinen Farb-RAM.

nb: ich hab großes Interesse an Deinen SDCC-Anpassungen. Kannst du irgendwo ein Paket bereitstellen? Diff zum Original oder als Komplett-Paket?

btw, die Jungs von Z88DK verheiraten seit einiger Zeit ihr Paket mit dem SDCC. Zusammen hat man eine große Bibliothek an Funktionen. Kennst du das Projekt?
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 03.11.2016 um 15:12 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
04.11.2016, 02:02 Uhr
Hobi



gibts auf GITHUB. Im wesentlichen sind es nur ein paar Bibliotheken und ein paar Anpassungen beim Linken.

Zwecks Kompatibilität habe ich mich durchgerungen alle Funktionen mit einem Farbbyte zu versehen. Dieses kann meinetwegen auf dem Z1013 durch "Weiss auf Schwarz" gesetzt werden.

Gibt es eigentlich beim KC87 eine Inkey Routine? Ich hab temporär ein paar Zeilen aus dem OS geklaut:

ld hl,#0x25
ld a,(hl)
ld c,a
xor a,a
ld (hl),a
ld l,c ; return code in L
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
04.11.2016, 08:08 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

inkey direkt gibt es nicht. Es gibt allg. CALL 5-Routinen Console Status und Console Input.
In der Systembeschreibung (http://www.sax.de/~zander/z9001/z9_os.pdf) sind die System-Routinen beschrieben.

so wie Du das machst, geht es auch, und schneller als über die Systemrufe.
In 0025h wird ein Zeichen abgelegt, was über die Tastatur interruptgesteuert erkannt wurde. Solange die Zelle gefüllt ist, wird kein neues Zeichen eingelesen (das ist also ein 1-Zeichen-Tastaturpuffer).

s.a. http://hc-ddr.hucki.net/wiki/doku.php/z9001:programmieren#assembler
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
04.11.2016, 09:08 Uhr
volkerp
Default Group and Edit
Avatar von volkerp


Zitat:
Hobi schrieb
gibts auf GITHUB. Im wesentlichen sind es nur ein paar Bibliotheken und ein paar Anpassungen beim Linken.



Unter

https://github.com/anchorz/sdcc-z1013-kc85

finde ich nur alte Sachen, noch nix zum Z9001 ?
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
04.11.2016, 10:56 Uhr
Hobi



ja die neuen Änderungen sind noch nicht mit dabei. Ich will mein Demo ersteinmal zum Laufen bringen.
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
06.11.2016, 13:52 Uhr
Hobi



so der Z9001 und Z1013 ist mit im Repository, inkusive der Beispiele. Die KRT Bibliothek ist mit dabei.

Als Bonus gibt es noch ein rudimentäres Fonthandling für Textausgaben mit Ümlauten, die normalerweise ja nicht im Zeichensatz vorhanden sind. Der Zeichensatz im Grafikmodus ist jetzt 288 Zeichen groß.

Eigentlich rennender Blödsinn dem Rechner UTF8 beizubringen, aber das erspart mir Portierungsaufwand bei den Strings.
--
-------------------------------------------
Corontäne
-------------------------------------------
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
08.11.2016, 14:44 Uhr
Hobi




Zitat:
inkey direkt gibt es nicht. Es gibt allg. CALL 5-Routinen Console Status und Console Input.



INKEY stammt aus dem BASIC-Code. Das war der falsche Gedanke. Auf dem meisten Computern wird das mittels kbhit/getch abgewickelt. Unter DOS und conio.h sieht der Code so aus:


Zitat:

if(kbhit()) // Nur wenn auch eine Taste gedrückt ist
{
char c = getch();



und getch() ist als Systemaufruf vorhanden. Ich glaube in CP/M war es genau so.
--
-------------------------------------------
Corontäne
-------------------------------------------

Dieser Beitrag wurde am 08.11.2016 um 14:46 Uhr von Hobi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek