Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die die geringste Anzahl an Bytes hatte. Welche waren das und laufen die auch noch prinzipiell auf dem PC?
MaWin alias Palle schrieb: > Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die > die geringste Anzahl an Bytes hatte. Demo-Szene. > laufen die auch noch prinzipiell auf dem PC? Natürlich. Die, die halt für den PC gedacht sind. Aber leider: viele alte Demos laufen auf aktuellen PCs halt nicht mehr. Läßt man dann halt in einer "VM" laufen, die einen hinreichend historischen PC bereitstellt... Bei wirklich modernen PCs ist es halt auch einigermaßen schwierig, etwas zu schreiben, was wirklich überrascht. Die Dinger haben halt einfach mal Rechenleistung ohne Ende. Merkt man bloß bei normalen Anwendungen und OS nix von, weil die alle Rechenleistung, die den Fortschritt der Hardware zusätzlich bereit gestellt hat, in sinnlosen Verwicklungen irgendwelcher schwachsinnigen Abstraktionen verwursten.
Solche Programme hatte ich nicht im Sinn, aber schaut mal her: https://www.com-magazin.de/news/open-source-games/kleinste-computer-schachspiel-welt-885733.html
In der Ausbildung damals hatten wir einen DCF77-Empfänger auf dem SBC85 programmiert, 984 der 986 bytes Programmspeicher ausgenutzt. Mel the programmer wäre stolz drauf gewesen. Der DPT-twister für meine 324x16 Festplatte war 28 byte groß, TSR 18 byte.
Ja, so ähnlich. Aber hier ist kein deutscher Programmierer aufgeführt.
Christian M. schrieb: > Dachte immer unter 1GB geht gar nix mehr ;-) Das Ganze ist eh nur Hobby, verkaufen lässt sich sowas nicht. Ich kann mich erinnern dass vor der Jahrtausendwende sogenannte Fachjournalisten in sogenannten Fachzeitungen sich über Programme lustig gemacht haben die ihnen zu klein vorkamen. Ein volle CD muss schon sein, sonst fühlen sich die Anwender betrogen - auch wenn die Software nichts kostet. Ein gigantischer Resourcenverbrauch, etwa auch an RAM, gilt heute als Leistungsnachweis. Georg
MaWin alias Palle schrieb: > Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die > die geringste Anzahl an Bytes hatte. Nicht die geringste sondern kleiner als eine bestimmte Grenze. Beispielsweise 64K https://en.wikipedia.org/wiki/64K_intro Diese Grenze resultiert as der maximalen größe für ein .Com-programm, was wiederum wegen der x64 codesegment struktur auf 64k limitiert waren > > Welche waren das und laufen die auch noch prinzipiell auf dem PC? prinzipiell eher nicht, wenn die BIOS-Adressen nicht mehr gleich sind oder besondere Privilegien erfordern. Mit nen Emzlator wie Dosbox koennte es noch klappen. Es gab auch ander Limits als die für ein COM, beispielsweise höchstens einen Disk-sector, oder muss in den Bootsector passen. War typisch für intros Da mal ein Klassiker aus Teutonenland - Farbrausch: https://www.youtube.com/watch?v=Y3n3c_8Nn2Y Da was aus der 4k-Ecke: https://www.youtube.com/watch?v=qg9Hltb9UU4 Persönlich begeistere ich mich eher für Amiga-Demos. Nicht PC, sondern 7.* MHz Homecumputer - der Apple des kleinen Mannes ;-) https://youtu.be/cKy57re_6BY?t=4898
Georg schrieb: > Christian M. schrieb: >> Dachte immer unter 1GB geht gar nix mehr ;-) > > Das Ganze ist eh nur Hobby, verkaufen lässt sich sowas nicht. Ich kann > mich erinnern dass vor der Jahrtausendwende sogenannte Fachjournalisten > in sogenannten Fachzeitungen sich über Programme lustig gemacht haben > die ihnen zu klein vorkamen. Ein volle CD muss schon sein, sonst fühlen > sich die Anwender betrogen - auch wenn die Software nichts kostet. Ein > gigantischer Resourcenverbrauch, etwa auch an RAM, gilt heute als > Leistungsnachweis. > > Georg Genau das denke ich mir auch, scheinbar programmieren die alle irgendwelche Luftballons rein die eigentlich keine Funktion haben. Hauptsache der Anwender benötigt noch einen Speicherriegel mehr um seinen Brief zu tippen.
AtTiny85 mit 0.000011574 Hz Taktfrequenz. Taktgeber ist ein Tageslicht-LDR. https://www.idogendel.com/en/archives/579
1 | int main(void) { |
2 | |
3 | // Prepare value to load into PINB
|
4 | asm volatile("LDI R16, 1"); |
5 | // DDRB0 to Output
|
6 | asm volatile("OUT 0x17, R16"); |
7 | |
8 | while (1) { |
9 | |
10 | // It's Saturday:
|
11 | // Set bit 0 of PINB to toggle PB0
|
12 | asm volatile("OUT 0x16, R16"); |
13 | // Sunday has come
|
14 | asm volatile("OUT 0x16, R16"); |
15 | |
16 | // Loop JMP will take 2 cycles,
|
17 | // so we need 3 more...
|
18 | asm volatile ("NOP"); |
19 | asm volatile ("NOP"); |
20 | asm volatile ("NOP"); |
21 | |
22 | }
|
23 | |
24 | }
|
Das Gerät braucht allerdings 40 Tage zum "booten".
:
Bearbeitet durch User
Codegolf geht auch in die Richtung: https://de.wikipedia.org/wiki/Codegolf Martin H. schrieb: > asm volatile ("NOP"); > asm volatile ("NOP"); > asm volatile ("NOP"); Das kann aber noch stark optimiert werden:
1 | asm volatile ("LPM"); |
MaWin alias Palle schrieb: > Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme > gab die > die geringste Anzahl an Bytes hatte. > > Welche waren das und laufen die auch noch prinzipiell auf dem PC? da gibt es z.B. - kleinstes Windowsprogramm https://github.com/pts/pts-tinype oder die 256byte, 4k oder 64k Demos die versuchen müssen in sehr wenig Platz sehr viel Demo unter zu bringen
Kein Wettbewerb als solcher, aber dazu fällt mir spontan Linus Akessons "Craft" ein, der einen Synthesizer und VGA-Videogenerator auf einem Atmega88 programmiert hat: https://www.linusakesson.net/scene/craft/
Ich erinnere mich an das wohl kleinste Programm überhaupt: 3 Byte. Das war mal vor gefühlt 20 Jahren in einer Computerzeitschrift beschrieben, wie man sich das per Kommandozeile selbst herstellen kann. Es war wohl eine .com, genau kann ich mich nicht mehr erinnern. Die Funktion des Programmes war obercool: Einfach den PC per Reset-Befehl zu booten. :-) Das würde mit dem heutigen Windows gar nicht mehr funktionieren.
https://kolibrios.org/de/index Ein komplettes Betriebssystem KEIN LINUX! auf einer Diskette!!! mit grafischer Oberfläche, spielen, Edistor, Norton Commaner Clon, Taschenrechner etc pp
Armin K. schrieb: > Ich erinnere mich an das wohl kleinste Programm überhaupt: > 3 Byte. Unter CP/M gab's sogar ein noch kürzeres Programm: 0 Byte. Weil CP/M den Speicher nicht gelöscht hat, hatte es sogar eine sinnvolle Funktion: Einfach das zuletzt geladene Programm nochmal starten. Und auf die Gefahr hin, dass der Thread jetzt gesperrt wird:
1 | X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* |
Lässt sich per Texteditor als *.com speichern (enthält nur 7-Bit-Ascii) und ist nachher ausführbar, und macht sogar was.
:
Bearbeitet durch User
cppbert3 schrieb: > die versuchen müssen in sehr wenig Platz sehr viel Demo unter zu bringen bei Demos ist das ja noch sinnvoll, anderswo wird 'anspruchsvoll klein programmieren' mit 'anspruchslos wenig programmieren' verwechselt und führt, weil man Bereichs- und Rückgabewertprüfung auslässt, zu katastrophalen Sicherheitslücken. Eine 'Lücke' ist eben auch ein Ausdruck für ein (viel zu) kleinem Programm. https://www.heise.de/security/artikel/So-funktioniert-der-Heartbleed-Exploit-2168010.html
>> Evtl meinst du ja den IOCCC: > > Ja, so ähnlich. Aber hier ist kein deutscher Programmierer aufgeführt. Ja, und man weiß auch nicht, ob sie Linkshänder sind. > Solche Programme hatte ich nicht im Sinn, aber schaut mal her: > [...Bootchess...] Das hat Oscar Toledo doch schon getoppt[1] - 326 Bytes. Versionen 1 und 2 (in C) hatten den 18. und 19. IOCCC gewonnen[2]. Ebenfalls beeindruckend: sein 8080 resp CP/M Emulator in 2k[3], ebenfalls IOCCC Best of the Show. [1] https://nanochess.org/chess6.html [2] https://nanochess.org/chess.html [3] https://nanochess.org/emulator.html
>Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die >die geringste Anzahl an Bytes hatte. demo ! Hier das ultimativ unübertroffene Demo für einen Atmega8 von Linus Akkeson https://www.youtube.com/watch?v=sNCqrylNY-0 >Welche waren das und laufen die auch noch prinzipiell auf dem PC? Und hier Debris von Farbrausch: https://www.youtube.com/watch?v=ffPPmrLbTyw
Die Urversion von Irfanview wurde nicht so recht ernstgenommen, weil das Programm auf eine Diskette passte. Das hat sich geändert, bloss passt die aktuelle Software auch nicht mehr annähernd auf die eine Diskette. So richtig traurig ist das allerdings nicht. Georg
Also mein kleinstes Programm, was ich mal mir vor langer Zeit unter DOS zusammenbastelte für einen bestimmten Zweck, war das hier als Textfile: e cs:100 EB 3C 90 42 4f 4f 54 2e 48 44 44 00 02 01 01 00 e cs:110 02 e0 00 40 0b f0 09 00 12 00 02 00 00 00 00 00 e cs:120 40 0b 00 00 00 75 3a e0 bf cb f cs:12a 13d 0 a cs:13e mov ax,0 mov ds,ax mov es,ax mov si,7c00 mov di,7e00 mov cx,200 repz movsw jmp 0:7e55 mov dl,80 mov dh,0 mov cl,1 mov ch,0 mov al,1 mov ah,2 mov bx,7c00 int 13 jmp 0:7c00 f cs:16b 2fd 0 e cs:2fe 55 AA w cs:100 0 0 1 q Und dann ausführen mit: debug < bootC.deb Was das macht? Es bastelt im Speicher ein kleines Assemblerprogramm zu sammen, und schreibt das Resultat dann in den Bootsektor einer Diskette (a:). Zweck: booten von c:, wenn die Diskette (ohne Betriebssystem) aus Versehen mal im LW steckte. Das eigentliche Programm sind nur die asm-Befehle, der Rest sind nur nötige Datenbereiche, damit der Sektor als gültiger Bootsektor verarbeitet werden kann.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.