Basic Listing

Moderator: Rockford

Antworten
Iznogud
Beiträge: 72
Registriert: 26.08.2021 20:45
Has thanked: 29 times
Been thanked: 9 times
Kontaktdaten:

Basic Listing

Beitrag von Iznogud »

was für regnerische Tage..
Dateianhänge
3E82BDEB-2231-42A9-BFEE-8020EF0C0B69.jpeg

Benutzeravatar
Sleeπ
Beiträge: 1618
Registriert: 18.06.2021 20:58
Has thanked: 101 times
Been thanked: 304 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Sleeπ »

Das habe ich "damals" sogar (wie so vieles) abgetippt, und, iir, in meinem Spielchen "Pipeliners XL" verwendet. :-)
Sleeπ

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Dr. Irata »

Sehr interessant...
ich bin auch kürzlich auf ein nettes Listing in BASIC gestossen mit 16 Farben bei GR.0
Das werde ich für mein Assembler-Programm nutzen und entsprechend als nächstes in Assembler umschreiben:

Code: Alles auswählen

10 POKE 106,PEEK(106)-4
20 CB=PEEK(106)
30 GRAPHICS 0
40 CHRSET = CB*256
50 DIM CT(16)
60 FOR I=0 TO 15: CT(I)=17*I:NEXT I
70 FOR I=0 TO 15
80 FOR J=0 TO 7
90 POKE CHRSET+I*8+J,CT(I)
100 NEXT J: NEXT I
110 SCREEN=PEEK(88)+PEEK(89)*256
120 FOR I=0 TO 15: POKE SCREEN+I,I:NEXT I
130 POKE 756,CB
140 POKE 623,192
150 POKE 712,8
160 GOTO 160

Benutzeravatar
atarixle
Beiträge: 271
Registriert: 18.06.2021 21:19
Has thanked: 29 times
Been thanked: 51 times
Kontaktdaten:

Re: Basic Listing

Beitrag von atarixle »

Das geht besser. Mit 256 Farben in Gr.0. ... hänge ich demnächst mal an diesen Post an.

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Dr. Irata »

...ja mach mal !! Sehr gerne!
Am besten auch als Assembler ...

Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 239 times
Been thanked: 163 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Kveldulfur »

Hallo!

Reden wir jetzt von 256 Farben untereinander per DLI oder die Möglichkeit diese in einer Zeile zu haben?

Grüße

Benutzeravatar
atarixle
Beiträge: 271
Registriert: 18.06.2021 21:19
Has thanked: 29 times
Been thanked: 51 times
Kontaktdaten:

Re: Basic Listing

Beitrag von atarixle »

256 Farben ... natürlich nur 40 davon in einer Gr.0 Zeile 😁😁😁

Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 239 times
Been thanked: 163 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Kveldulfur »

Da wäre ich sehr interessiert dran. :D

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Dr. Irata »

Ich auch!!
Wie gesagt, am besten auch in Assembler...

Benutzeravatar
andymanone
Beiträge: 2500
Registriert: 17.08.2021 12:34
Wohnort: Berlin - Suburban
Has thanked: 493 times
Been thanked: 792 times
Kontaktdaten:

Re: Basic Listing

Beitrag von andymanone »

War da nicht auch was mit Switching zwischen Graphics 9 / Graphics 11 in 80 x 192 ;)?

Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Youtube

Benutzeravatar
atarixle
Beiträge: 271
Registriert: 18.06.2021 21:19
Has thanked: 29 times
Been thanked: 51 times
Kontaktdaten:

Re: Basic Listing

Beitrag von atarixle »

Ich mache es genauso wie bei den 256-Farbenbildern in 80x96.
Ich wechsel je Scanline zwischen 9 und 11. Das heißt, ein DLI wird ausgelöst und ich switche nach 9, WSYNC, 11, WSYNC, 9 ... .
Dazu erstelle ich einen angepassten Zeichensatz, der im Zusammenspiel mit den inversen Zeichen genau 256 Farben pro Zeichen ergibt. Ein Zeichen ist folglich ein Pixel (40x24 Pixel).
Der DLI sieht so aus:

Code: Alles auswählen

	pha
	lda #FONTDATA_HI
	sta WSYNC
	sta FONTBASE_HW ;FONTBASE Hardware-Register von 756

	lda #192 ; Gr.11
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC
	lda #64 ; Gr.9
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC

	lda #192 ; Gr.11
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC
	lda #64 ; Gr.9
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC

	lda #192 ; Gr.11
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC
	lda #64 ; Gr.9
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC

	lda #192 ; Gr.11
	sta %GPRIOR ; HW-Register von 623
	sta WSYNC
	lda #64 ; Gr.9
	sta %GPRIOR ; HW-Register von 623

	pla
	rti

und wird ab der ersten Zeile installiert:


Folgender C-Code erzeugt den Zeichensatz (der sollte sich eigentlich leicht in BASIC-Code übersetzen lassen, wenn nicht, schiebe ich einen Screenshot nach).

Code: Alles auswählen

void create256ColorFont(unsigned char fontbase) {
	int i, j, ad=fontbase << 8; // ad=fontbase*256
	
	for(i=0; i<16; i++) { // for i=0 to 15
		for(j=0; j<16; j+=2) { // for j=0 to 15
			POKE(ad  , (i<<4) | i); // poke ad, i*16
			POKE(ad+1, (j<<4) | j); // poke ad+1,j*16
			memcpy((void*)(ad+2), (void*)ad, 6); // move ad,ad+2,6
			ad+=8; // ad=ad+8
		} // next j
	} // next i
	
}
Um ein Pixel in Farbe X (zwischen 0 bis 255) zu setzen, wird folgende C-Routine eingesetzt:

Code: Alles auswählen

void pokePixel(int ad, unsigned char value) {
	POKE(ad, value&1 ? 255^(value>>1) : value>>1);
}
ad ist das Byte im Bildschirmspeicher, also DPEEK(88)+x+y*40
In BASIC heißt das so viel wie:

Code: Alles auswählen

if value & 1
	POKE ad, 255-(int(value/2))
else
	POKE ad,value/2
endif
Ich hänge mal eine fertige ATR und eine XEX an. Die XEX ist ein C-Programm und die ATR enthält das BASIC-Programm samt zusätzlicher Grafiken. Das Passwort zur ATR lautet "fuji2019" (ohne Anführungszeichen, Kleinbuchstaben, Caps-Lock ist nach dem Booten eingeschaltet).
Dateianhänge
Fujiama2019.atr
Einladung zur Fujiama 2019 (Turbo-BASIC)
(179.64 KiB) 89-mal heruntergeladen
FUJI2019.XEX
Einladung zur Fujiama 2019 (C)
(26.84 KiB) 92-mal heruntergeladen

Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 239 times
Been thanked: 163 times
Kontaktdaten:

Re: Basic Listing

Beitrag von Kveldulfur »

Hallo!

Danke für die Erklärung und die Beispiele.

Grüße
Janko

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast