Kein Assembler? Wenn ich einen String in der Zeile hab und den per Sys aufrufe, ist das nicht ok? Ein Sys ins Rom ist ok?
Hallo Besucher, der Thread wurde 27k mal aufgerufen und enthält 157 Antworten
letzter Beitrag von Dekay am
Commodore FREE One Liners competition
- WTE
- Erledigt
-
-
Kein Assembler? Wenn ich einen String in der Zeile hab und den per Sys aufrufe, ist das nicht ok? Ein Sys ins Rom ist ok?
Ja, genau so. Oder? Also keine Tricks. Vielleicht auch kein Sys ins Rom. Wäre noch "einfacher".
-
Wenn Poke erlaubt ist, dann könnte man ja auch Assembler poken und dann aufrufen. Dann besser sys komplett verbieten.
-
Sys verbieten hilft nicht; es gibt auch andere Wege eigenen Maschinencode aufzurufen. Am sinnvollsten ist da noch die Regel: "Die CPU darf nur Code ausführen, der schon vor dem Laden des Beitrags im RAM war bzw. im ROM ist."
(auf ROM beschränken geht nicht, weil "GetByte" und ein paar Vektoren im RAM liegen) -
Tach.
Also keine Tricks.
Wobei bei einem One-Liner da wohl nicht viel bei rüberkommen dürfte.
Wie wär's mit einem Five-Liner oder Nine-Liner oder Seven-To-Eleven- oder Wasimmer-Liner? Dann würde ich vielleicht auch mitspielen .
Bin ja auch eher ASMer (gewesen), aber just for fun mal wieder back to Basic... : !
Wenn Poke erlaubt ist, dann könnte man ja auch Assembler poken und dann aufrufen. Dann besser sys komplett verbieten.
Ganz ohne POKE wär auch doof. Dürfte aber halt kein ausführbarer Code sein. Oder halt auf VIC/SID/Screen beschränken. -
Zitat von logiker
Mein spontaner Vorschlag: Eine Zeile Code, dich nachweislich auch von Hand ohne Hilfsmittel eingegeben werden kann. Maximal .. Bytes. Kein Assembler. Peek/Poke/Sys schon.
Nutzt alles nichts.Wenn ich es darauf anlege, kann ich 'von Hand' auch eine überlange Zeile eingeben, eben mit POKE.
Auch 'kein Assembler' ist eine Scheinbeschränkung. Da läuft die ganze Zeit schon ein Maschinenprogramm, der BASIC-Interpreter. Ein gezieltes POKE in die CHRGET-Routine, und schon entführt man die geordneten Abläufe innerhalb des Interpreters in ein selbstgewähltes und getarntes Maschinenprogramm.
Geht also nur mit vollständigem Verbot von PEEK */POKE/SYS/USR/WAIT. Und selbst dann kann man immer noch mit 'merkwürdigen' Befehlen den Interpreter zu unerwartetem Verhalten bringen, z.B. mit dem Klassiker PRINT 5+"A"+-5.
*) warum PEEK()? Einige I/O-Adressen sind lese-sensitiv!
-
Oneliner sind sehr ausgelutscht imho.
Ich fand damals[tm] bei der NOGOTO Competition ja LIST muss in ein Screen passen ein gutes Limit.
Zitat20 Zeiler oder 4K oder so
wäre auch okay, wobei ich da eine klare Blockbegrenzung für zielführender halte als Zeilenlimit, welches dazu führen würde, dass wir uns wieder alle die Finger brechen mit dem Hinpfuschen überlangen BASIC Zeilen mittels Petcat & friends bzw darüber fabulieren, ob man das denn darf.Cheers
Ryk -
Ich würde trotzdem beim Thema one liner bleiben wollen. Wenn mehrere Zeilen erlaubt sein sollen, kann man die Regeln ja danach erweitern.
Das kein Assembler verwendet werden soll, ist glaub ich klar. Notfalls kann man ja zwei Noten vergeben. A Programm Note B Basic-Anteil- (bzw. Assember-Missbrauchs-) Note. -
Ich denke one liner ganz ohne irgendwelche "Tricks" werden so unglaublich langweilig, dass am Ende keiner was macht.
Die Beschränkung "muss von Hand eingegeben werden können" finde ich dagegen nicht schlecht, wenn man sie noch um "direkt nach dem Einschalten ohne vorherige Direktmodus-Befehle" ergänzt wird es mit dem Tricksen schon recht schwierig.
-
ja zu _fast_ allem, was Ziriras sagt.
Auf Oneliner wird kaum jemand Bock haben, aber egal ob mit oder ohne tricks, weil zu viele schon damit rumgemacht haben und es auch einfach schon seeehr viel gibt diesbzgl.
Muss im Direktmodus eingebbar sein ist auch gut, z.B. das hier wäre okay:
Code- **** commodore 64 basic v2 ****
- 64k ram system 38911 basic bytes free
- ready.
- 0?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?
- :?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?
- list
- 0 print:print:print:print:print:print:pr
- int:print:print:print:print:print:print:
- print:print:print:print:print:print:prin
- t:print:print:print:print:print:print:pr
- int:print:print:print:print:print:print:
- print:print:print:print:print:print:prin
- t
- ready.
Aber irgendein PetCat-Pfusch nicht.Braucht man aber eigentlich nur, wenn man Zeilen als Limit nimmt. Fände nach wie vor 4 oder 16 blocks interessanter.
-
Die Meinung, dass Oneliner langweilig sind, teile ich nicht. Aber wie die Größenbeschränkung nun genau aussieht, ist gar nicht so wichtig, glaube ich, solange eine da ist, um die Hemmschwelle zum Mitmachen klein zu halten.
Mir kommt es sinnvoller vor, die Regeln so abzufassen, dass es nicht zu einem Wettlauf kommt, wie man am besten Assemblercode einschmuggelt. Das ist alles sehr interessant, aber für ASM-Coder gibt es doch genug andere Gelegenheiten und Wettbewerbe.
-
OK. Ich versuch mal das ganze ein wenig zusammenzutragen:
Teilnahmebedingungen:
1. Nur eine Zeile.
2. Die Zeile muss per Hand ohne Hilfsmittel eingegeben werden können.
3. Kein verstecken anderer Programmiersprachen (z.B. von eigenem Assembler-Code, dafür gibt es andere Wettbewerbe)
4. Sys/Peek/Poke usw. nur in begründeten Fällen (z.B. für Farben setzten usw., wenn dafür kein Befehl existiert)
5. System(e): Commodore C.. ohne irgendeine ErweiterungAbgabe:
1. Programm als .PRG und als .TXT Datei.
2. Beschreibung des Programms (als Ganzes und Befehl für Befehl.) Format: txt, doc(x), pdf, rtfBewertungskriterien:
1. Geschmack
2. Neu
3. Verständlichkeit bzw. Genialität
4. Reines BasicWettbewerbe und Abarten:
1. One Liner
2. 2 Liner
3. 10 Liner
4. 64 Byte Assembler WettbewerbJury: ....
Abgabeschluss: ....
Bekanntgabe der Resultate: ....
-
Hi,
ich wollte nur drauf hinweisen, dass ich auch gerade eine ASM-Compo vorbereite (in der ASM-Ecke gleich hier nebenan, das wird dann ASM Compo #3). Das wird was kleines, nur Forum64-intern und es wird eine sehr klar vorgegebene Aufgabenstellung geben. Trotzdem, falls es hier zu einer ASM-Compo käme, sollten wir uns da vielleicht abstimmen, damit das nicht gleichzeitig stattfindet ^^...
-
Na ist doch super, dann können sich die Assembler-Gurus doch da austoben.
Vielleicht kann man die Variante 'Sprung ins Kernal/BASIC-Rom' sogar erlauben, eben unter der Bedingung, dass der Coder in seiner Docu genau erklärt, was er da macht und wie das funktioniert. Dann könnten wir alle da was bei lernen.
-
Trotzdem, falls es hier zu einer ASM-Compo käme, sollten wir uns da vielleicht abstimmen, damit das nicht gleichzeitig stattfindet ^^...
Keine Angst.
Ich persönlich wäre dafür, dass man mal mit einem Einzeiler-Wettbewerb für nur ein System anfängt. Die Erfahrungen kann man dann ja wiederverwenden und weitere Compos auf anderen Systemen oder mit anderen Topics, usw. veranstalten. -
Ich poste es jetzt mal hier, weil es hier vielleicht thematisch am besten reinpasst. Auf heise.de gibt es einen Artikel ueber One-Liner:
https://www.heise.de/make/meld…ic-One-Liner-3944822.html
Dort sind auch ein paar evtl. interessante PDFs verlinkt
-
Danke für den Tipp ZeHa !!! Habe mir mal das c64 PDF gezogen.
-
Danke auch für den Hinweis zum Artikel und Buch!