Basic Listing
Moderator: Rockford
- Sleeπ
- Beiträge: 1642
- Registriert: 18.06.2021 20:58
- Has thanked: 105 times
- Been thanked: 322 times
- Kontaktdaten:
Re: Basic Listing
Das habe ich "damals" sogar (wie so vieles) abgetippt, und, iir, in meinem Spielchen "Pipeliners XL" verwendet.
Sleeπ
- Dr. Irata
- Beiträge: 946
- Registriert: 24.08.2021 14:40
- Has thanked: 113 times
- Been thanked: 275 times
- Kontaktdaten:
Re: Basic Listing
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:
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
- atarixle
- Beiträge: 275
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
Re: Basic Listing
Das geht besser. Mit 256 Farben in Gr.0. ... hänge ich demnächst mal an diesen Post an.
Online
- Kveldulfur
- Beiträge: 645
- Registriert: 17.08.2021 02:32
- Has thanked: 249 times
- Been thanked: 171 times
- Kontaktdaten:
Re: Basic Listing
Hallo!
Reden wir jetzt von 256 Farben untereinander per DLI oder die Möglichkeit diese in einer Zeile zu haben?
Grüße
Reden wir jetzt von 256 Farben untereinander per DLI oder die Möglichkeit diese in einer Zeile zu haben?
Grüße
- atarixle
- Beiträge: 275
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
Online
- Kveldulfur
- Beiträge: 645
- Registriert: 17.08.2021 02:32
- Has thanked: 249 times
- Been thanked: 171 times
- Kontaktdaten:
Online
- andymanone
- Beiträge: 2581
- Registriert: 17.08.2021 12:34
- Wohnort: Berlin - Suburban
- Has thanked: 522 times
- Been thanked: 860 times
- Kontaktdaten:
Re: Basic Listing
War da nicht auch was mit Switching zwischen Graphics 9 / Graphics 11 in 80 x 192 ?
Gtx.,
andY
Gtx.,
andY
Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / My brandnew, experimental Album "Apocalyptic Symphony"
- atarixle
- Beiträge: 275
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
Re: Basic Listing
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:
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).
Um ein Pixel in Farbe X (zwischen 0 bis 255) zu setzen, wird folgende C-Routine eingesetzt:
ad ist das Byte im Bildschirmspeicher, also DPEEK(88)+x+y*40
In BASIC heißt das so viel wie:
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).
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
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
}
Code: Alles auswählen
void pokePixel(int ad, unsigned char value) {
POKE(ad, value&1 ? 255^(value>>1) : value>>1);
}
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
- Dateianhänge
-
- Fujiama2019.atr
- Einladung zur Fujiama 2019 (Turbo-BASIC)
- (179.64 KiB) 90-mal heruntergeladen
-
- FUJI2019.XEX
- Einladung zur Fujiama 2019 (C)
- (26.84 KiB) 97-mal heruntergeladen
Online
- Kveldulfur
- Beiträge: 645
- Registriert: 17.08.2021 02:32
- Has thanked: 249 times
- Been thanked: 171 times
- Kontaktdaten:
Wer ist online?
Mitglieder in diesem Forum: Google [Bot] und 1 Gast