Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » Auf dem KC 85/4 programmieren » Themenansicht

Autor Thread - Seiten: -1-
000
30.08.2022, 22:09 Uhr
u-held



Gibt es im KC 85/4 keine Möglichkeit, mit CAOS-Routinen die Hintergrundfarbe eines 8x1-Bereichs festzulegen? Ich bin letztendlich bei VPOKE gelandet. Die Adressberechnung ist dann aber 85/4-spezifisch und müsste für den 85/3 angepasst werden. Natürlich kann ich im BASIC mit


Quellcode:
COLOR... : PRINT AT(...)" "



oder


Quellcode:
COLOR... : WINDOW... : CLS



die Hintergrundfarbe setzen, aber immer mindestens auf einen 8x8-Bereich.

Und hier die konkrete Spielerei zum Thema, die ich nur im jkcemu ausprobiert habe:


Quellcode:

10 COLOR 7,7 : CLS
20 PRINT AT(5,2);"### Die Farbpalette des KC 85/4 ###"
30 X=80: F=8: GOSUB 200
40 X=128: F=0: GOSUB 200
50 X=176: F=0: GOSUB 300
60 GOSUB 400
70 GOSUB 600
100 LOCATE 29,0
110 PRINT "beenden mit "+CHR$(141)
120 E$=INKEY$: IF E$="" GOTO 120
130 IF E$<>CHR$(13) GOTO 120
140 COLOR 7,1: CLS
150 END
199 REM --- Vordergrundfarben ---
200 FOR Y=144 TO 88 STEP -8
210 FOR L=0 TO 3: LINE X,Y+L,X+40,Y+L,F: NEXT
220 F=F+1
230 NEXT
240 RETURN
299 REM --- Hintergrundfarben ---
300 PRINT CHR$(27);"9"
310 FOR Y=144 TO 88 STEP -8
320 FOR L=0 TO 3
330 FOR XI=X TO X+40 STEP 8
340 AD=(XI AND -8)*32+255-Y-L
350 VPOKE AD,(VPEEK(AD) AND -8)+F
360 NEXT: NEXT: F=F+1: NEXT
370 PRINT CHR$(27);"9"
380 RETURN
399 REM --- Beschriftung ---
400 SP=7: F=8: GOSUB 460
410 SP=27: F=0: GOSUB 460
420 PRINT AT(10,9);"Vordergrund- Hintergrund-"
430 PRINT AT(11,14);"farben  farben"
440 PRINT AT(23,13);"Farbnummern"
450 RETURN
460 FOR L=13 TO 20
470 K=0: IF F>9 THEN K=-1
480 PRINT AT(L,SP+K);F
490 F=F+1  
500 NEXT
510 RETURN
599 REM --- Markierungen ---
600 XA=-1: INK 7
610 XE=XA: YE=YA: READ XA,YA
620 IF XA=-2 THEN RETURN
630 IF XA=-1 THEN GOTO 610
640 IF XE=-1 THEN GOTO 610
650 LINE XA,YA,XE,YE
660 GOTO 610
700 DATA 175,87,216,87,216,92,175,92
710 DATA 175,87,-1,-1
720 DATA 77,148,77,152,79,154,168,154
730 DATA 170,152,170,148,-1,-1
740 DATA 174,148,174,152,176,154,216,154
750 DATA 218,152,218,148,-1,-1
760 DATA 52,92,52,84,54,82,120,82
770 DATA 122,84,122,89,-1,-1
780 DATA 126,89,126,84,128,82,232,82
790 DATA 234,84,234,92
800 DATA -2,-2


Wer will, kann das in Assembler umsetzen. Vielleicht schaffe ich das auch noch. Aber mit KC-Pascal bin ich an der Aufgabe gescheitert. (Das ist dann ein anderes Thema.)
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
31.08.2022, 07:05 Uhr
Bert




Zitat:
u-held schrieb
Gibt es im KC 85/4 keine Möglichkeit, mit CAOS-Routinen die Hintergrundfarbe eines 8x1-Bereichs festzulegen?


Ich weiß jetzt nicht genau, was Du unter CAOS-Routinen verstehst.

Um direkt aus dem CAOS-Menü den Farbspeicher mit MODIFY zu bearbeiten, muß man vorher mit ESC-9 die Farbebene aktivieren. Zurückschalten auf die Pixelebene geht dann auch wieder mit ESC-9.

Der andere Weg wäre über das CAOS-Unterprogramm PUSE (30H).
Das muß ggf. zweimal mit gesetztem Bit 0 (XOR) aufgerufen werden.

Um - wie in Deinem Beispiel - Linien zu zeichnen, kann man auch auf das Unterprogramm LINE (3Eh) zurückgreifen.

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
31.08.2022, 07:45 Uhr
ralle



BASIC-Programme sollten, sofern nicht direkt /4 Spezifiges, auf allen KC laufen. Das wenige betrifft letztlich nur die reine Bildsteuerung weil 2 Bilder (Bild 0 und Bild1) und andere ESC-Befehle möglich sind. Ebenso auch der direkte Eingriff auf die Hardware mittels Poke, Doke usw.

Ich probier das Programm mal aus.

Der KC85/3 hat 8x8.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700

Dieser Beitrag wurde am 31.08.2022 um 07:50 Uhr von ralle editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
31.08.2022, 11:17 Uhr
maleuma



Stimmt nicht ganz. Der KC85/3 hat 8x4.
Aber mit den CAOS-UP PUSE bzw. LINE bekommst du ein Programm hin, welches auf jedem KC-Typ läuft.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
31.08.2022, 11:55 Uhr
ralle



@Bert, er will das selbe, was mit den Vordergrundfarben geht. Allerdings nur 8mal.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
31.08.2022, 17:07 Uhr
u-held




Zitat:
Bert schrieb
Ich weiß jetzt nicht genau, was Du unter CAOS-Routinen verstehst.



Ich wollte damit nur ausdrücken, dass ich nicht den PC-Modus alias MicroDOS meine.


Zitat:
Um direkt aus dem CAOS-Menü den Farbspeicher mit MODIFY zu bearbeiten, muß man vorher mit ESC-9 die Farbebene aktivieren. Zurückschalten auf die Pixelebene geht dann auch wieder mit ESC-9.



So ist es im Beispiel oben umgesetzt, siehe Zeilen 300 und 370.


Zitat:
Der andere Weg wäre über das CAOS-Unterprogramm PUSE (30H).
Das muß ggf. zweimal mit gesetztem Bit 0 (XOR) aufgerufen werden.



Ich bilde mir ein, dass ich damit keinen Erfolg hatte. Aber wenn Du das sagst, probiere ich es nochmal.

VG, Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
01.09.2022, 09:53 Uhr
kaiOr

Avatar von kaiOr

Unter BASIC könnte noch ein:

PAPER... : IF PTEST(x) THEN PSET x,y ELSE PRESET x,y

genügen um 1*8 oder 4*8 Pixel auf einmal zu ändern. Man müsste aber für PTEST vermutl. noch die y-Koordinate mit einem PEEK setzen.

MfG
Kai
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
01.09.2022, 20:46 Uhr
Hojoe



Soweit ich sehe wird unter Basic wie unter CAOS immer nur die Vordergrundfarbe beim Setzen von Punkten oder beim Zeichnen von Linien verwendet. Auch XOR wird da nicht weiter helfen, damit kann nur ein existierender Bildpunkt gelöscht werden und die ursprüngliche Hintergrundfarbe wird wieder sichtbar. Spontan sehe ich keine einfache Möglichkeit die Hintergrundfarbe an einer bestimmten Stelle Systemunabhängig zu ändern.

Am nächsten kommt noch 'PADR' UP-Nr. 34H der Lösung. Damit kann die Adresse im Farbspeicher im Register DE berechnet werden. Beim /4 muss dann auf die Farbebene umgeschaltet werden. Beim /3 könnte das ins Leere laufen. Damit könnte das vielleicht ohne extra Systemunterscheidung funktionieren.

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
07.09.2022, 20:57 Uhr
Hojoe



Ich habe etwas herumprobiert. Wie schon geschrieben wird es mit reinen Bordmitteln schwierig. Ich bin jetzt bei folgendem C Programm gelandet:

Quellcode:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>

char START[] =
{ 0x7f, 0x7f, 'T', 'E', 'S', 'T', 0x01, 0xcd, 0x00, 0x10 };

// Prototypes
void gosub200(uint8_t x, uint8_t vFarbe);
void gosub300(uint8_t x, uint8_t hFarbe);
void gosub400();
void gosub460(uint8_t spalte, uint8_t f);
void gosub600();
uint16_t berechneFarbAdr(uint8_t spalte, uint8_t y) __naked __z88dk_callee;
void plotPixel(uint16_t x, uint8_t y, uint16_t farbe);

// Konstanten im RAM / IRM
__at (0xb7d3) uint16_t HOR;
__at (0xb7d5) uint8_t VERT;
__at (0xb7d6) uint8_t FARB;

int main()
{
    textcolor(WHITE);
    textbackground(WHITE);
    clrscr();
    gotoxy(2, 5);
    cputs("### Die Farbpalette des KC 85/4 ###");
    gosub200(80, 8);
    gosub200(128, 0);
    gosub300(176, 0);
    gosub400();
    gosub600();
    gotoxy(0,29);
    cputs("beenden mit ENTER");
    while(getch() != 10);
    return 0;
}

// Vordergrundfarben
void gosub200(uint8_t x, uint8_t vFarbe)
{
    for( int y = 144; y >= 88; y = y - 8 )
    {
        for( int l = y; l <= y + 3; l++ )
        {
            for( int i = x; i < x + 40; i++ )
            {
                plotPixel(i, l, (vFarbe<<3) | 0x100);
            }
        }
        vFarbe++;
    }
}

// Hintergrundfarben
void gosub300(uint8_t x, uint8_t hFarbe)
{
    for( int y = 144; y >= 88; y = y - 8 )
    {
        for( int l = y; l <= y + 3; l++ )
        {
            for( int i = x; i < x + 40; i++ )
            {
                plotPixel(i, l, hFarbe);
            }
        }
        hFarbe++;
    }
}

void gosub400()
{
    gosub460(7, 8);
    gosub460(27, 0);
    gotoxy(9,10);
    cputs("Vordergrund- Hintergrund-");
    gotoxy(14,11);
    cputs("farben  farben");
    gotoxy(13,23);
    cputs("Farbnummern");
}

void gosub460(uint8_t spalte, uint8_t f)
{
    for(int l=13; l <= 20; l++)
    {
        gotoxy(spalte,l);
        printf("%2d", f);
        f++;
    }
}

void gosub600()
{
    draw(216,168, 175,168);
    draw(175,168, 175,163);
    draw(175,163, 216,163);
    draw(216,163, 216,168);

    draw(77,255-152, 77,255-148);
    draw(79,255-154, 77,255-152);
    draw(168,255-154,79,255-154);
    draw(170,255-152,168,255-154);
    draw(170,255-148,170,255-152);

    draw(174,255-152, 174,255-148);
    draw(176,255-154, 174,255-152);
    draw(216,255-154, 176,255-154);
    draw(218,255-152, 216,255-154);
    draw(218,255-148, 218,255-152);

    draw(52,255-84, 52,255-92);
    draw(54,255-82, 52,255-84);
    draw(120,255-82, 54,255-82);
    draw(122,255-84, 120,255-82);
    draw(122,255-89, 122,255-84);

    draw(126,255-84, 126,255-89);
    draw(128,255-82, 126,255-84);
    draw(232,255-82, 128,255-82);
    draw(234,255-84, 232,255-82);
    draw(234,255-92, 234,255-84);
}

void plotPixel(uint16_t x, uint8_t y, uint16_t farbe)
{
    if((farbe & 0xff00) > 0)
    {
        HOR = x;
        VERT = y;
        FARB = farbe & 0xf8;
#asm
        LD      A,0x28
        out     (0x84),a
        LD      (0x1f1),A
        call    0xf003
        db      0x30    ; PUSE Punkt setzen
#endasm
    }
    else
    {
        uint8_t *farbAdr = berechneFarbAdr(x>>3, 255-y);
        outp(0x84, 0x2a);
        *farbAdr = farbe;
        outp(0x84, 0x28);
    }
}

uint16_t berechneFarbAdr(uint8_t spalte, uint8_t y)
{
#asm
        POP     BC      ; Rücksprungadresse
        POP     DE      ; y
        POP     HL      ; spalte
        PUSH    BC      ; Rücksprung Adresse wieder auf den Stack
        LD      H,E
        call    0xf003
        db      0x34
        LD      A,D
        CMP     0       ; beim KC85/4 bleibt Register D auf 0 und HL enthält die Adr im Farbspeicher
        JR      Z,end   ; beim KC85/3 ist in DE die Adresse im Farbspeicher
        LD      HL,DE
end:    RET             ; in HL befindet sich der Rückgabewert
#endasm
}




Das ganze habe ich mit "zcc +kc -g --list -o Test2.bin -create-app Test2.c" kompiliert.
Das läuft auf dem 85/3 und 85/4 im JKCEmu

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
08.09.2022, 15:15 Uhr
MarioG77

Avatar von MarioG77

Klasse... Wenn ich mit meinen Hardware Opfern (1834/1715) erst Mal irgendwie durch bin, will ich so was auch mal angehen...

Schon klar, dass man das so nicht in C auf dem KC programmieren kann. Aber es sieht für mich gewohnter als Basic oder Assembler aus.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy, D008], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x A5120 und hin und wieder was von oben
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
08.09.2022, 15:37 Uhr
ralle



Theoretisch sollte es auch auf dem KC gehen, für CPM gibt es einen C-Compiler.
http://www.z80.eu/c-compiler.html
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
08.09.2022, 17:06 Uhr
Hojoe



Falls Interesse besteht die KCC Datei dazu liegt für die nächsten 4 Wochen unter https://0e6hyyypseot0xdb.myfritz.net/nextcloud/index.php/s/mxsMBjamQmEf4AJ

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
08.09.2022, 18:29 Uhr
ralle



Holger, was ist mit dem angefangen Spiel?
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
08.09.2022, 20:18 Uhr
Hojoe



Oh, jetzt hast du mich erwischt und überrascht. Nach 20 Jahren(?) kommst du damit um die Ecke.
Psst nicht weiter erzählen, das habe ich neulich in C neu geschrieben. Damit habe ich meine ersten Erfahrungen in C und mit dem z88dk gesammelt. Das wollte ich im Oktober mit zum Clubtreffen mitbringen.

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
08.09.2022, 20:20 Uhr
ralle



Lauffähig auf 4.8?
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
08.09.2022, 20:36 Uhr
Hojoe



Ich hoffe, es läuft im 85/4 Emulator und einmal kurz auf echter Hardware, bis es der zu warm wurde.
Möchtest du eins der limitierten Test Exemplare, um es zu probieren?

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
08.09.2022, 22:17 Uhr
u-held



Vielen Dank Holger für die Vervollständigung und Umsetzung in C. Ich komme nicht so schnell zum Testen Deines Programms, werde es aber auf alle Fälle ausprobieren.

Gibt es eigentlich eine Begründung oder historische Herleitung, warum die Adressierung des IRM im 85/2/3 so sonderbar gestaltet wurde? Warum werden die Pixelzeilen nicht wie beim 85/4 linear adressiert? Warum gilt "rechts" von 256 Pixeln eine andere Adressierung?

Viele Grüße,
Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
09.09.2022, 10:56 Uhr
ralle



Ich denke eher an das fehlen der eigentlich sonst benötigten Hardware. Also Videocontroller gab es da nicht, weil war ja Spielzeug.

War bei den Britischen Computern doch noch etwas anders, da hatte man alles in einem Chip verpackt. War in der Produktion halt billiger..
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
10.09.2022, 10:26 Uhr
Bert




Zitat:
Hojoe schrieb
Wie schon geschrieben wird es mit reinen Bordmitteln schwierig. Ich bin jetzt bei folgendem C Programm gelandet:


Hier gibt es ein Beispiel wie die CAOS-Funktionen für den SDCC verfügbar gemacht wurden:
https://github.com/anchorz/sdcc-z1013-kc85
Das läßt sich auch für den zcc adaptieren.
Dann reicht es die caos.h einzubinden und man hat u.a. die Funktionen: puse(), circle(), line()
https://github.com/anchorz/sdcc-z1013-kc85/blob/master/sample_05_kc85_graphic/src/main.c



Zitat:
ralle schrieb
Theoretisch sollte es auch auf dem KC gehen, für CPM gibt es einen C-Compiler.


Theoretisch ja, praktisch wird beim zcc und dem sdcc gleich der Vorspann bzw. Menüeintrag mit erzeugt. Außerdem dürften die CPM-Compiler (BDS-C, Small-C, HiTech-C) für conio/stdio auf die CPM-Funktionen zurückgreifen. Da wäre einiges an Anpassung nötig.
Wenn das Programm auf der D004/D008 laufen soll, sind wieder andere Schritte nötig um Linien, Pixel und Kreise ausgeben zu können, da dort die Grafikausgabe von der ZAS im Grundgerät übernommen wird.



Zitat:
u-held schrieb
Gibt es eigentlich eine Begründung oder historische Herleitung, warum die Adressierung des IRM im 85/2/3 so sonderbar gestaltet wurde?


Ich vermute, das man ursprünglich eine Grafik-Hardware entworfen hatte, die für 256x256 Pixel funktionierte. Die wurde dann (schnell?) auf 320x256 Pixel aufgebohrt. Das damit die Programmierung sehr umständlich wurde hat man dann wohl gemerkt und später den internen Bildaufbau beim 85/4 komplett geändert. Ca. 30 bis 40% der Grundplatine beim KC85/4 ist mit Schaltkreisen für die Bilderzeugung bestückt.



Zitat:
ralle schrieb
War bei den Britischen Computern doch noch etwas anders, da hatte man alles in einem Chip verpackt.


So pauschal stimmt die Aussage natürlich nicht. Im ZX80 kümmert sich z.B. die CPU und eine Softwareroutine um die Bildschirmausgabe (ähnlich wie beim Ju+Te tiny 2k/4k):
http://www.qrp.gr/zx80/zx80.pdf

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
13.09.2022, 20:42 Uhr
ralle



Da fällt mir noch das Demo von der Demo/4 ein, mit dem scrollenden Hintergrund.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
14.09.2022, 16:12 Uhr
Hojoe




Zitat:
Bert schrieb
Hier gibt es ein Beispiel wie die CAOS-Funktionen für den SDCC verfügbar gemacht wurden:
https://github.com/anchorz/sdcc-z1013-kc85
Das läßt sich auch für den zcc adaptieren.
Dann reicht es die caos.h einzubinden und man hat u.a. die Funktionen: puse(), circle(), line()
https://github.com/anchorz/sdcc-z1013-kc85/blob/master/sample_05_kc85_graphic/src/main.c


Die eigentliche Frage war ursprünglich ob es in Basic oder im CAOS Funktionen gibt mit die Hintergrundfarbe kleingranular (auf 1x8 oder 4x8) setzen oder anderweitig beeinflussen kann. Ich behaupte so richtig was gutes gibt es nicht.

Das kleinst was mit Bordmitteln geht dürfe ein minimales Window von 8x8 Pixeln (ein Zeichen) sein und dann CLS aufrufen.

Wenn die Adressberechnung nicht manuell nach implementiert werden soll, dann bleibt nur CAOS UP 34H 'PADR'. Damit kann die Farbadresse berechnet werden und dann muss leider manuell die Farbe gesetzt werden.
Das dies ein gangbarer Weg ist wollte ich mit obigen Programm zeigen. Wobei auch da eine kleine Fallunterscheidung zwischen 85/3 und 85/4 enthalten ist, da sich das UP leider nicht gleich verhält.

Ob das mit dem sdcc oder dem sccz80 (oder in Assembler) umgesetzt wird ist da relativ egal.

Ich wollte den gesamten Quelltext in eine Datei packen, damit es etwa kompakter ist und sich vielleicht einfacher ausprobieren lässt. Der Quelltext oben wirkt daher etwas bemüht. Besser ist es natürlich den Assembler Teil in eine eigene Datei zu packen und die Funktionen mit einer Header Datei für das C Programm frei zu geben.

Obiges Programm lässt sich mit einigen wenigen Änderungen auch mit dem sdcc übersetzen. (ich habe es nur mit dem sdcc aus dem z80dk probiert)

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
15.09.2022, 11:52 Uhr
ralle



Wartet mal, der KC85/3 hat eine Shift-Lock-Anzeige. Dann wäre noch der Hintergrundscroller in den Demo für den 85/4.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
15.09.2022, 15:38 Uhr
Hojoe




Zitat:
ralle schrieb
Wartet mal, der KC85/3 hat eine Shift-Lock-Anzeige. Dann wäre noch der Hintergrundscroller in den Demo für den 85/4.



Ich bin etwas abgehängt. Was meinst du damit?

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
15.09.2022, 19:49 Uhr
ralle



Also dre /3er hat einen farbigen Cursor, der im unteren Teil bei Shift-Lock die Farbe ändert.

Auf der Demo-Kassette KC85/4 Demo wird ein Hintergrundscholler gezeigt.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
15.09.2022, 21:50 Uhr
Bert




Zitat:
Hojoe schrieb
Die eigentliche Frage war ursprünglich ob es in Basic oder im CAOS Funktionen gibt mit die Hintergrundfarbe kleingranular (auf 1x8 oder 4x8) setzen oder anderweitig beeinflussen kann. Ich behaupte so richtig was gutes gibt es nicht.


Ich habe nochmal etwas mit COLOR, INK, PAPER, PSET und PRESET getestet.
Du hast Recht, die mit COLOR, INK oder PAPER gesetzte Farbe wird von PSET, PRESET und LINE einfach ignoriert.

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
15.09.2022, 23:34 Uhr
maleuma




Zitat:
Bert schrieb
Ich habe nochmal etwas mit COLOR, INK, PAPER, PSET und PRESET getestet.
Du hast Recht, die mit COLOR, INK oder PAPER gesetzte Farbe wird von PSET, PRESET und LINE einfach ignoriert.


Ja, das ist korrekt.
COLOR, INK und PAPER tragen den Farbwert für die Zeichenfarbe in B7A3H ein. PSET, PRESET, LINE und CIRCLE benutzen den Wert der Grafikfarbe in B7D6H.
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
17.09.2022, 23:02 Uhr
u-held



Nochmal zur IRM-Adressierung im KC 85/3 und davor: Mir kam auch der Gedanke, dass ein vorhandenes 256x256-Design aufgebohrt wurde. Das erklärt aus meiner Sicht aber nicht, warum die Bits der Vertikalen nicht linear in die Adressierung eingehen, siehe Bild. Aus Sicht eines Programmierers ist das Mist, der Hardware-Ingenieur kann es vielleicht erklären.



Ich habe mein Programm überarbeitet. Es liegt auf https://github.com/duhlig/KC85_software/tree/main/farben. Anders als Holger habe ich keinen Maschinencode verwendet. Hier kommt es ja nicht auf Geschwindigkeit an, und ich finde es ganz gut, wenn man beide Lösungen nebeneinander sieht. Es ist auch interessant, die Programme miteinander zu vergleichen: Zwischen KC 85/3 und 4 merkt man die Geschwindigkeitsunterschiede in der Grafik. Da ist der 85/3 nur beim Einfärben seiner 8x4-Bereiche schneller als BASIC auf dem 85/4. Und der Vergleich von C- zu BASIC-Programm geht erwartbar aus: Nur die CAOS-Routinen sind gleich schnell, was auch sonst.

Damit ist für mich das Thema Farbadressierung geklärt.

Gruß, Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
18.09.2022, 09:34 Uhr
Bert




Zitat:
u-held schrieb
Es liegt auf https://github.com/duhlig/KC85_software/tree/main/farben.


Danke.


Zitat:

Zwischen KC 85/3 und 4 merkt man die Geschwindigkeitsunterschiede in der Grafik.


Bei CAOS 3.4i wurden die Grafikroutinen ordentlich optimiert. Damit läuft dann das BASIC-Programm auf dem 85/3 auch einen Ticken schneller als auf dem 85/4.

Grüße,
Bert

P.S.: Bei mir hatte der KC85 erst nach der Wende bunte Bilder, als die Omi sich einen neuen TV mit 100Hz-Technik aus Staßfurt gönnte und ich ihren alten Colormat bekam.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
18.09.2022, 14:19 Uhr
maleuma



Sehr schön, danke.
--
Mario.
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