C64 Kurze Listings
-
BlueBird -
26. Dezember 2021 um 22:31 -
Erledigt
Es gibt 78 Antworten in diesem Thema, welches 23.692 mal aufgerufen wurde. Der letzte Beitrag (
-
-
Sollte das nicht so auch Funktionieren ?
Nein. Du kannst keine Strings POKEn. Nur Zahlenwerte. Also:
[edit]Oder natürlich:
[/edit] -
- Interessanter Beitrag
Vor ein paar Tagen ist mir etwas aufgefallen, was wahrscheinlich außer mir schon (fast) jeder wusste:
Man kann jede beliebige 8 x 8 Bitmatrix mit den Commodore-Sonderzeichen nachbilden und dabei um den Faktor 4 (bzw. 16 von der Fläche her) vergrößern!
Ja, heidenei, darauf muss man erstmal kommen. Ist für Speichermonitore, Sprite-Betrachter usw. sicherlich sehr praktisch. Habe den "Trick" in einem Programm von Nikolaus Heusler gefunden. Eine mögliche eindeutige Zuordnung erfolgt so: Man scannt immer einen 2x2-Pixelblock und nimmt den Wert der unteren Zeile mal 4 und addiert dann den Wert der oberen Zeile, dann erhält man ein Ergebnis zwischen 0 und 15. Dieses Ergebnis muss man jetzt nur noch in einer Tabelle mit dem passenden Grafikzeichen verknüpfen.
Anyway, ich habe mal ein - primitives - BASIC-Programm ("minimag.prg") als Demo geschrieben, obwohl sich Maschinensprache sicherlich besser eignet, aber das war jetzt mal der Reiz daran.

Die obere Vergrößerung ist eine plumpe 1:1 Übersetzung von 1 Bit = 1 (inverses) Space.
Die untere Vergrößerung benutzt eben die Grafikzeichen.
Bitte melde dich an, um diesen Anhang zu sehen.
Faszinierend.

Achtung, von Bit-Manipulationen in BASIC habe ich nicht wirklich Ahnung, habe das jetzt ziemlich schlicht und möglicherweise suboptimal gemacht. Aber es läuft.
-
- Interessanter Beitrag
Und das ganze in 679 Bytes ... die "milchtrinkende Erfolgsgeneration" würde nebst 50 GByte Betriebssystem erst mal noch 10 GByte Framework benötigen.

-
die "milchtrinkende Erfolgsgeneration"
Sind wir nicht die ?
Die neue Generation Trinkt doch diese Energie Drinks
Und Spricht so komisch 
-
Die neue Generation Trinkt doch diese Energie Drinks
Und Spricht so komisch 
Du meinst vong Sprache her?
-
-
Hallo goloMAK
freut mich, dass mein "Trick", den ich vermutlich irgendwann mal in den 1980er oder 1990er-Jahren im 64er-Magazin veröffentlicht habe, für Dich hilfreich war!
Herzliche Grüße aus einem regnerischen München
Nikolaus Heusler
-
Hallo goloMAK
freut mich, dass mein "Trick", den ich vermutlich irgendwann mal in den 1980er oder 1990er-Jahren im 64er-Magazin veröffentlicht habe, für Dich hilfreich war!
Herzliche Grüße aus einem regnerischen München
Nikolaus Heusler
Hallo Nikolaus, das ist ja toll, dass ich sogar noch eine Rückmeldung kriege!

Das Programm war "Magnify" aus der 64er 04/1993. Ich fand es faszinierend, dass man da noch im Vergrößerungsmodus Eingaben tätigen konnte.
Bitte melde dich an, um diesen Anhang zu sehen.
Habe das Programm disassembliert, lange darüber gebrütet, aber letztlich auch eine Menge daraus gelernt. Die Vergrößerung über Grafikzeichen habe ich später noch in einem eigenen kleinen Tool, dem "Bitte melde dich an, um diesen Link zu sehen." benutzt.
Also, danke nochmal für dieses schöne Programm!
-
Nochmal vielen Dank für Dein Interesse. Ich bin normalerweise nicht in diesem Forum unterwegs, aber ich freue mich sehr, wenn Leser "von damals" auch heute noch meine Werke diskutieren. Ich war jung und brauchte das Geld.
Wer Informationen oder z.B. kostenlos eine Kopie meines Buchs "222 Tips, Tricks, Tools für den C64" (PDF-Datei) haben möchte, teilt mir bitte seine E-Mail-Adresse mit.
Herzliche Grüße aus München
Nikolaus Heusler
-
Ein schönes Programm aus der Transformer, 1983.
Zeile 1 habe ich noch hinzugefügt, um die Einstellungen etwas anzupassen (und um die Ausführung ein wenig zu beschleunigen). Es entsteht eine Hommage an einen bekannten Kinofilm!
Enjoy!

Das ist einer der besten Basic 2-Zeiler, die ich je gesehen habe - vielen Dank!
-
Ein schönes Programm aus der Transformer, 1983.
Zeile 1 habe ich noch hinzugefügt, um die Einstellungen etwas anzupassen (und um die Ausführung ein wenig zu beschleunigen). Es entsteht eine Hommage an einen bekannten Kinofilm!
Enjoy!

Danke habe eingetippt und viel Spaß dran gehabt. Ich habe das Programm auf eine Kassette aufgenommen. Es hat geklappt.

-
das finde ich auch ganz nett. ähnlich dem von goloMAK. ist aus 'the transactor 4'...
0 c=32:forn=1to41:c=192-c:fora=0ton:forb
=1024+ato2047stepn:pokeb,c:nextb,a,n
-
das finde ich auch ganz nett. ähnlich dem von goloMAK. ist aus 'the transactor 4'...
0 c=32:forn=1to41:c=192-c:fora=0ton:forb
=1024+ato2047stepn:pokeb,c:nextb,a,n
Das ist das gleiche Listing wie in Bitte melde dich an, um diesen Link zu sehen.. Ich hatte damals nur die Farben vorgegeben und ein paar Variablen definiert, um den Ablauf zu beschleunigen. Außerdem habe ich aus Versehen "Transformer" statt "Transactor" geschrieben.

-
das finde ich auch ganz nett. ähnlich dem von goloMAK. ist aus 'the transactor 4'...
0 c=32:forn=1to41:c=192-c:fora=0ton:forb
=1024+ato2047stepn:pokeb,c:nextb,a,n
Das ist das gleiche Listing wie in Bitte melde dich an, um diesen Link zu sehen.. Ich hatte damals nur die Farben vorgegeben und ein paar Variablen definiert, um den Ablauf zu beschleunigen. Außerdem habe ich aus Versehen "Transformer" statt "Transactor" geschrieben.

ah, ich dachte doch, das erinnert mich sehr stark an deines. und auch der name der quelle war sehr ähnlich. sorry, das ich das nochmals brachte, aber die grafik ist super, für einen einzeiler. habe auf weihnachten das buch von holger weissling gekriegt 'for basic to one-liners'. bin ein bisschen am stöbern darin und darin wurde dieser code auch zitiert...
-
...dafür bring ich jetzt noch was 'neues'

0 printchr$(147):poke53280,6:poke53281,1:forl=1024to2023:pokel,123:nextl
1 forl=.to7:wait53265,128:poke53265,(peek(53265)and240)or7-l:pO53270,l:nE:goto1
(in zeile 1 musste poke mit pO und next mit nE abgekürzt werden, wegen den 80 zeichen)
-
ok, noch zwei schmackerl:
0 printchr$(14)mid$(chr$(223)+chr$(233),rnd(.)*2+1);:goto
(ein 10print in high-res)
0 A="08'ROT''F5'@ 000 @'F5''ROT'000"="":poke53272,18:printchr$(rnd(.)+65.5);:goto
(achtung 'ROT' bedeutet tasten control+3 und 'F5' bedeutet die taste F5. ein 10print mit anderen characters)
-
eine sehenswerte 10print variante vom meister ian witham, welche ein relief / 3D artiges muster erzeugt (von mir ein bisschen gekürzt):
0 printchr$(147):poke53281,12:rem * 10print varainate 'relief' *
1 b=b<>-1:fori=1to40:b=b<>-1:printchr$(146+b*128);:z=int(rnd(1)+.5)
2 printchr$(155-z*4)+chr$(z*54+169);:next:goto1
-
Die neue Generation Trinkt doch diese Energie Drinks
Und Spricht so komisch 
Du meinst vong Sprache her?
..... die machen solche Sachen wie das mit dem :innen die nennen das glaube ich Gendern - sind wohl die Nebenwirkungen der Energydrinks
-
auch von ian witham: durch diese zugegeben etwas längere if-then orgie entsteht ein sehr faszinierendes 3D labyrinth! (ein paar cracks unter euch könnten es vielleicht kürzen und schneller machen). kann man ins vice kopieren, aber achtung, die sonderzeichen von 400-460 anpassen...
1 rem if copying source into vice,
2 rem remember to retype special
3 rem characters on lines 400-460
5 poke53281,1
10 dimr(40)
15 fori=1to40:r(i)=2^int(rnd(.)*4+1):next
20 fori=1to40
40 ifi=1thent=127:goto200
100 l=r(i-1)
110 ifl=1thent=4or8or64
120 ifl=2thent=4or8or64or16
130 ifl=4thent=35
140 ifl=8thent=35
150 ifl=16thent=1or2or32
160 ifl=32thent=16or64or4or8
170 ifl=64thent=4or8or16or64
200 u=r(i)
210 ifu=1thent=t and(32or64)
220 ifu=2thent=t and(32or64)
230 ifu=4thent=t and(16or64or32)
240 ifu=8thent=t and(16or64or32)
250 ifu=16thent=t and(1or4)
260 ifu=32thent=t and10
270 ifu=64thent=t and48 :rem16or32
300 ift=48thent=16+((rnd(.)*2)and1)*16
310 ift=5thent=1+((rnd(.)*2)and1)*3
320 ift=96thent=32+((rnd(.)*2)and1)*32
330 ift=80thent=16+((rnd(.)*2)and1)*48
340 ift=10thent= 2+((rnd(.)*2)and1)* 6
350 ift=112thent=2^int(rnd(.)*3+4)
390 r(i)=t
400 ift=1thenprint"{rvof}{gry2}{SHIFT-POUND}";:next
410 ift=2thenprint"{rvof}{gry1}{SHIFT-POUND}";:next
420 ift=4thenprint"{rvof}{gry2}{CBM-*}";:next
430 ift=8thenprint"{rvof}{gry1}{CBM-*}";:next
440 ift=16thenprint"{rvon}{gry2}{SHIFT-POUND}";:next
450 ift=32thenprint"{rvon}{gry1}{CBM-*}";:next
460 ift=64thenprint"{rvof} ";:next
470 ifi=41thengoto20
480 print:printl,u,i,t
-