C64 Kurze Listings

Es gibt 78 Antworten in diesem Thema, welches 23.699 mal aufgerufen wurde. Der letzte Beitrag (1. Juni 2025 um 18:23) ist von _Joey_.

  • Code
    10 input "farbwert 0-15:";a$
    20 poke 53280,a$

    Sollte das nicht so auch Funktionieren ?

  • Sollte das nicht so auch Funktionieren ?

    Nein. Du kannst keine Strings POKEn. Nur Zahlenwerte. Also:

    Code
    10 input "farbwert 0-15:";a
    20 poke 53280,a
    [edit]

    Oder natürlich:

    Code
    input "farbwert 0-15:";a$
    20 poke 53280,val(a$)
    [/edit]
  • 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.

    Dateien

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

    Einmal editiert, zuletzt von goloMAK (7. Februar 2022 um 20:18)

  • 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! :thumbup:

    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!

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • goloMAK

    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! :popcorn:

    Code
    1 cl(0)=5:s1=1024:s2=2024:fori=0to999:poke55296+i,cl(iand2):next:poke53281,0
    2 c=32:forn=1to41:c=192-c:fora=0ton:forb=s1+atos2stepn:pokeb,c:nextb,a,n

    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! :popcorn:

    Code
    1 cl(0)=5:s1=1024:s2=2024:fori=0to999:poke55296+i,cl(iand2):next:poke53281,0
    2 c=32:forn=1to41:c=192-c:fora=0ton:forb=s1+atos2stepn:pokeb,c:nextb,a,n
    Code
    10 print chr$(205.5+rnd(1));:goto10

    Erzeugt Muster

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

    :thumbsup:

  • 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. :)

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • 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

  • 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