Retro Basic Programmier Battle: AIM-65 vs Commodore 64
"Programmschlacht": Ein einfaches Basic Programm auf unterschiedlichen Rechnern (AIM-65 und C64) programmiert, artet zur kleinen Fehlersuch Orgie aus.
(Werbung) Filmora kostenlos downloaden:bit.ly/2zmP3EA (Ende der Werbung)
Inhalt
0:00 Einleitung
1:11 Wolfgangs Programm
8:18 Kritik (Debugging am C64)
25:05 Gegendarstellung (Wolfgang)
27:27 Abschlussbemerkung
►Mehr zu zum Thema Kino, Serien und Medien auf meinem Zweitkanal "MovieBrain"
/ moviebrain
►Mehr Labereien auf meinem Drittkanal "BrainDumpZero"
/ @braindumpzero
►(Werbung) Verwendete Ausrüstung (*1)/ Fragen / Zuschauerpost
Auf meiner Homepage: www.zerobrain.info/ausruestung
►Unterstützung des Kanals (Patreon / Ebay Partner Links / Amazon Wunschliste)
Auf meiner Homepage: www.zerobrain.info/supportpage/
(*1) Dominik Schuierer ist Teilnehmer des Amazon-Partnerprogramm, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.
► Unsere Discord Community: / discord
►Folgt mir (für technische Fragen bitte die Email Adresse nutzen s.o.)
Instagram: / zerobrain_info
Twitter: / totalzerobrain
Facebook: / dominik.schuierer
Mewe: mewe.com/i/zerobrain
Meine Homepage: www.zerobrain.info
#RetroComputing #8Bit #BASIC
👉🏼 Ergänzungen / Kommentare 👈🏼 (Werbung) Schaut mal bitte beim Sponsor vorbei: bit.ly/2zmP3EA (/Werbung) 🔸Zur Rundung: Ja 0.5 wäre besser gewesen 🔸Noch ein Fehler: (danke an Clemens Schaeffner und Rocky B Music ) "Bug im Programm 0 gibt keinen Punkt aus aber 1gleich zwei[...]" => Die Schleife muss natürlich bei "1" anfangen. 🔸Ihr könnt am Online Emulator weiterüben: c64emulator.111mb.de/index.php?site=pp_javascript&lang=de&group=c64
oder auf der Nintendo Switch mit SmileBasic. Kann man sich dort einfach im eShop herunterladen.
Oder auf dem Android Handy mit Frodo C64.
@@AtzeDatze oder auf einem C64 Mini mit USB Tastatur
sehr gerne, die Idee/das Format sind wirklich sehr unterhaltsam.. Gruß auch an Wolfgang..
Ja, ich wollte auch instant schreiben: „Hey! Die 0.5 Rundung! Seht ihr nicht, dass die Sinus-Kurve verhunzt ist?“ Aber da war ich wohl nicht der erste. Ebenfalls, weiterer Fehler, die "#" Line natürlich als GOSUB programmieren. Ebenfalls, die Plot-Line von x=0 bis 2*π laufen lassen in 2π/n Steps, so dass die Linie vernünftig endet. Außerdem kann man das Ende der Linie genauer positionieren, wenn man statt einem "*" die graphischen Symbole nimmt, die beim C64 zur Verfügung stehen, in diesem Falle die vertikalen Linien den ausgefüllten Block für den Balken und am Ende ▏▎▍▌▋▊▉█ voilà: Auflösung in X verachtfacht von 40 auf 320 und das ohne Grafikmodus. Das ganze natürlich nicht nur als Assembler, sondern über den USR() als Assembler-Erweitertungs-Funktion, so dass man bei der Gelegenheit in BASIC bleiben kann. Basic Erweiterungen programmieren kann man recht einfach, indem man mein CYPHERBASIC 64 nimmt, da alle Cryptofunktionen raus kickt und das derartig modifiziert, dass man seine eigene Funktion implementiert. Ich hab' das als Template entwickelt, es wird nur von wenigen genutzt, ich fürchte, das Wissen ist ein bisschen verloren gegangen bei den meisten. Wir waren ohnehin nie viele, die das konnten. Ein weiterer Bug bei dem Programm ist übrigens, dass die Null nicht als "*" gedruckt wird sondern als ".*" nur mal so für die B-Note. PRINTBAR sollte als GOSUB implementiert werden im übrigen. Aber ich sehe schon, ich hätte das Video zuende sehen sollen, bevor ich den Kommentar schreibe. Cypherbasic 64: github.com/silizium/cypherbasic Tolles Projekt, Jungs! Weiter so. 19:26 und um Gottes Willen keine Fallunterscheidung, das kostet irrsinnig Zeit statt dessen y=9+int(sin(x/5)*9+.5) das wär's gewesen. Genauso der IF zum Überspringen der Schleife ist ein großes No-No, weil man keine floating point Zahlen mit Gleich vergleicht sondern immer mit x < 0.5 oder sowas, also den Margin of Error. In diesem Fall braucht man aber ein WHILE…WEND als Struktur und das macht man elegant mit einem GOTO, da der Befehl nicht existiert in BASIC V2. Und schmeißt das alles raus mit dem FOR. FOR ist in diesem Falle falsch angewendet. Tatsächlich ist am schnellsten einen langen STRING zu definieren und ihn mit SUB$ zurecht zu schneiden, das ist ein One-Liner und die Verarbeitung ist schneller als FOR oder GOTO. Es gibt ja implizite Schleifen, das ist eine schöne Lektion, das zu vergleichen mit einer expliziten Schleife und welche Lösung schneller ist. Da das Schneiden des Strings extrem fix ist und nicht erst interpretiert werden muss, ist das tasächlich schneller, kürzer und eleganter als jede Schleife. 19:46 die Variable ZWERG existiert nicht und wird zu Fehlern führen, wenn man später eine Variable ZWISCHENWERT anlegt. Da BASIC nur die ersten beiden Buchstaben berücksichtigt, ist ZWERG und ZWISCHENWERT die selbe Variable, weswegen man in BASIC V2 niemals mehr als zwei Buchstaben für Variablen benutzt. Also ZW in diesem Falle. Die obige Aufgabe könnte man also so umsetzen, hier nicht auf Speed sondern Übersichtlichkeit geschrieben: 10 rem init 20 li$="##########":li$=li$+li$ 30 ba$="..........":ba$=ba$+ba$ 50 def fn xs(x)=int((1+sin(x))*9.5+0.5) 100 rem program 105 print li$ 110 for i=0 to 2*π step 2*π/50 120 gosub 1000 130 next i 900 print li$ 999 end 1000 rem printbar 1010 print left$(ba$,fn xs(i));"*" 1020 return Ein völliges No-Go ist es, Schleifen zu verschachteln. Das ist selbst auf heutigen Computern eine Sache, die in der Regel während der Optimierungsphase fliegt und bei dreifachen Verschachtelungen fliegt der Programmierer gleich hinterher. AWR hat mein alter Chemielehrer das genannt, Amok, Wahnsinn, Rausschmiss. Das geht immer anders, das geht immer in einer einfachen Schleife und wenn man schon schachtelt, dann wenigstens in einer impliziten inneren Schleife, also sowas wie left$() in diesem Falle. Der Aufruf von GOSUB kostet unnötig Zeit, aber ich hab's eingebaut, wegen weil. Schmeißt es raus. Es ist nur eine Zeile und sowas gosub'd man nicht, selbstverständlich. Schneller wird das ganze ebenfalls, wenn man es in eine Zeile setzt, also die eigentliche Programmschleife zum Beispiel, in der nicht viel passiert. Zeilen kosten Zeit. Die Funktion xs steht für X stepped. In diesem Falle, also einer Sinuskurve wäre es sehr viel besser, das als Bresenham zu schreiben, denke ich. Die eigentliche Funktion in ein DEF FN zu setzen beschleunigt die Berechnung auf Basic V2 im übrigen erheblich, soweit ich das richtig erinnere. Ich könnte das aber mit Polynomen verwechseln gerade. Jedenfalls wird es übersichtlich. Wir haben ja sonst wenig strukturierte Programmierung, also sollten wir nutzen, was wir haben. Den kleinen Zipfel, den ihr rausstehen habt in eurer Routine wird allgemein als Fehler angesehen, man rundet auf den Integerwert. Wenn ihr das mit +-0.5 machen wollt und negativen Werten, dann benutzt +0.5*SGN(x) und mit der man sich um eine dödelige Fallunterscheidung lavieren könnte. In diesem Falle habe ich das ganze Ding auf 19 hochgescaled und da es keinen richtigen Nullwert gibt bei 20, bin ich gegen diese Dimensionierung. Sie sollte immer ungerade sein, damit man: Unten, Mittellinie, Oben hat. Das ist bei 20 nicht möglich, die Null liegt zwischen 10 und 11, wenn man von 1 zählt. Ich hab' aber die Subroutine gelassen, falls jemand den Vorschlag mit der weiteren Verfeinerung umsetzen möchte. Biddeschön. Ich hoffe, ihr beide könnt es ab, mal untergeduckert zu werden. Ansonsten könnt ihr euch auf meinem Kanal rächen. Gibt da genug Sachen, die ich weiß, dass man sie besser machen könnte. Ich fordere euch mit einer überlangen Fibonacci-Funktion heraus auf euren Computern, also 15 Sekunden laufen lassen, sehen wie weit man kommt, das Ergebnis muss korrekt angezeigt werden. Gibt da einige Lösungen auf meiner Seite zu. Duckert gern zurück. kzhead.info/sun/d72mc76Jm4Z9iHk/bejne.html Sinus ist langweilig, mit Fibonacci fängt der Spaß erst an.
Mir war sofort klar das Wolfgang den Fehler absichtlich eingebaut hat, jedwede andere Behauptung grenzt an Blasphemie 😉 Wie immer ein tolles Video.
Klar! Was sonst!
Hey, das ist kein Fehler, sondern ein Feature. Wolfgang wollte zeigen, wie diese in heutiger Software implementiert werden. 😁😁
@@wolfgangrobel und mit 20% Aufwand 80% Ergebnis erzielt hast Du auch.
Also ich fand es spannend und unterhaltsam.
So ist es bei deren Vids immer. IMMER! Die zanken sich auf "Bit komm raus", vernaschen Schachteln an "RUM_Prallienen", machen einen auf "dicken Lötkolben" und prahlen anschließend mit ihren Lotabzugspumpen... Ok, Zero prahlt immer mit seiner Beißzange - die, nebenbei gesagt sehr attraktive "Schenkel" hat, und deren Rundungen auch nicht zu verachten sind.... (LOL ) (...komisch, wo war in diesem Vid wohl nur die Zange...) Also ich rieche hier eindeutig eine "Verschwörung". Ja ehrlich, "die Zwei" wollen uns nur bei Laune halten um Zuschauer zu binden. Dann wollen die bestimmt noch ihr Wissen weiter geben.... Richtig hinterhältig so etwas! Spass bei Seite: "Die Zwei" sind echt "TOP"! Wenn ich Zeit habe, dann sehe ich mir gerne diese Videos an. Ist viel nützliches dabei. Gruß Horst
Das Argument vom Sinus und anderen trig. Funktionen muss in Radiant angegeben werden nicht sin(A/5) , sondern sin(A*π/24) 0
Deine Lösung ist auch nicht ganz richtig. Sieh dir die Sinuszeile 22-25 an, da wurde auch nicht richtig gerundet. Richtig gerundet wird mit A=INT(WERT+0.5). In deinem fall ZWERG=ZWERG+0.5. Hab früher vor gaaaaanz langer Zeit auch mal in BASIC Programmiert (ZX81 😆). Tolles Video, weiter so. 😎
Ihr zwei seid echt der Hammer. Ich verstehe zwar nicht immer alles, bin halt jetzt kein Gelernter wie Ihr in dem Bereich, aber Ihr macht das so gut, dass ich nicht anders kann als euch immer wieder zu zuschauen.
Danke. Dominik versteht auch nicht immer alles. Ist also nicht schlimm...
Vielen Dank für daß sehr Unterhaltsame Video. Wäre sehr schön, wenn es mit BASIC noch weiter gehen würde.
Trotz des Formates interissant und unterhaltsam!
Sehr Geil! Ein Hoch auf den "Home Assistant" immer wieder interessant deine Videos! Danke
Tolles Video! Und obwohl es von einem Basic-Programm handelt, drohen bei schnellem Implementieren auch bei neueren Programmiersprachen diesselben Tücken :) Sehr analytische und v.a. nachvollziehbare Analyse! (Jetzt unter dem richtigen Video)
25:30 Chapeau für die Einblendung.
Da werde Erinnerungen wach, ich habe den C64 geliebt. Mit SpeedDOS und HD Floppy meine ersten Programmierschritte gemacht. Tolles Video von euch, bitte weitermachen. 👌
Vielen Dank für das tolle Video - hat mich in meine Anfangsjahre versetzt. 😆 Damals waren die Computer-Zeitschriften ja voll mit Basic-Programmen, die man abtippen konnte. Wenn man Glück hatte, kam sogar was nützliches hinten raus.😜 Heute sind wir einen Schritt weiter! Microdoof schickt uns ein Update (2004) auf unsere Computer, das bei 50 % aller Maschinen nicht fehlerfrei funktioniert und mehrere Updates und Treiber braucht, bis man seine Maschine wieder einigermaßen in der Reihe hat. 😆
Wieder sehr interessant! Insbesondere, wenn der Herr Robel mit dabei ist! Programmierung ist natürlich auch sehr interessant, ich allerdings würde mich aber auch wieder über Videos freuen in dem Ihr (alte) Hardware zerlegt und repariert! Bitte weiter so!
Ich muss meine alte Hardware nicht reparieren, weil sie im Gegenteil zu Dominiks Schrott nicht defekt ist... ;-)
Dafür haben selbst meine missglückten Reparaturvideos weniger Fehler als Deine "geglückten" Programmiervideos.
Ja die Videos von Dominik sind toll. Mit Wolfgang ist es dann mehr als doppelt so toll. Das Ganze ist dann wertvoller als seine beiden Teile.
@@Zerobrain Das siehst du falsch, Programmierer machen keine Fehler, sie bauen lediglich besondere Features ein. 😉
@@wolfgangrobel ICH WILL NICHT WISSEN, WIE EURE ALTE HARDWARE BEEINANDER IST, ´Zefix!!!
23:29 "Endlösung abspeichern"...uiuiuiui Ne, Spass... Aber dass die Inhaltsangabe neben der Laufzeit angegeben wird (d.h. in welchem Kapitel man ist), finde ich 1A* (den Schreibfehler verbuche ich mal als Programmname seitens Herrn Robel...)
Korrigiert.
@@Zerobrain Tatsache...und ohne Reupload...saubere Sache. PS: Deine Kommentare in der Gegendarstellung:🤣 Witziger sind nur vereinte Videos...
BASIC !!!! endlich! geiles Thema! Arbeite selbst gerade an einem kleinen Basic Interpreter :)
Tolle Idee! aber wenn Sie BASIC mögen dann schauen Sie unter www.qb64.org/portal/ da gib es QB 64-BASIC voll QB-4.5 Compatibel und es Kompiliert das Programm zu EXE FILES! OPEN-GL IST AUCH EINGEBAUT! Grüße Rita EOF EOT
Das Zeigt einen auch jetzt ihrgendwie "WARUM ZUM TEUFEL" Progamme auch in der Heutigen Zeit, auf den einem Gerät läuft und auf einem Anderen eben nicht
Sehr interessantes und unterhaltsames Video, macht Spaß auch selbst mal ein bisschen mitzudenken. :D Zu der Rundungsproblematik ist mir noch etwas ein- bzw. aufgefallen (betrifft auch das "flache Minimum"): Soweit ich es richtig verstanden habe, rundet der INT-befehl ja immer auf die kleinere Zahl - im positiven also zum Beispiel 8,6 auf 8 statt 9; im negativen -8,4 auf -9 statt -8. Würde man jetzt grundsätzlich auf alle Zahlen +0,5 addieren (statt 0,1), müsst man ja eigentlich eher einem "klassischen"runden entsprechen. Heißt in Beispielen positiv: 8,0-8,49 --> 8,5-8,99 --> "runtergerundet" auf 8, also richtig (ab)gerundet 8,5-8,99 --> 9,0-9,49 --> "runtergerundet" auf 9, also richtig (auf)gerundet im negativen wirds jetzt spannend negativ: -8,01- (-8,5) --> -7,51 - (-8,0) --> "runtergerundet" auf -8 -8,51- (-9,0) --> -8,01- (-8,5) --> "runtergerundet" auf -9 oder anders geschriben/zusammeneafasst: Bereich 0,5-1,49 wird auf 1 gerundet Bereich -0,51- (-1,5) wird auf -1 gerundet Das kommt den "klassischen" auf- bzw. Abrundungsregeln (nach betrag) schon recht nah, abgesehen von den - x,5 welche hier auf -x; sonst aber eher auf (-x+1) gerundet werden. Ich bin weder Mathematiker noch habe ich wirklich Programmier-Erfahrung; rein logisch erscheint mir das aber recht schlüssig. Kann natürlich sein, dass ich irgendwo einen grundlegenden Fahler eingebaut habe - wenn dem so ist, weist mich gerne darauf hin - aber eigentlich sollte zumindest im Fall des Programmes so eine deutlich zuverlässigere Rundung - bei allen Zahlen - entstehen. Ich freue mich auf weitere Antworten, die mir erklären, was daran falsch gedacht ist ;).
Ja, wäre ein Ansatz wenn INT denn auch runden würde, aber meines Wissens schneidet INT einfach alles nach dem Komma ab. Es bleibt einfach die "ganze Zahl" übrig.
@@zuppyguppy2087 wenn int aber einfach abschneidet, würde ja nie -9/0 entstehen, weil die minimalen werte die erreich werden ja bei iwas mit -8,99 liegen, also -8 --> 1
Bug: so druckt er immer(außer bei 0) einen Punkt zu viel Richtig wäre 100 FOR B=1 TO Y ------------------------------- als Sinclair anfänger werden als FOR NEXT Variablen grundsätzlich F oder N benutzt ;-)
Danke für die Korrektur.
Zeitstempel für die Kontrolle: 7:11 und 13:15 z.B. Ich schlage vor die Programme bis zum nächsten Mal zu verbessern, bevor man sich in Assembleruntiefen begibt. Am besten einen Test-Driven-Developmentansatz entwickeln. Die Kurven müssen natürlich symmetrisch sein, d.h. gleich flach bei Maximum und Minimum, und speziell f.d. Hausherrn: Nein, ein Peak ist da nicht notwendig, auch wenn man in der Natur ähnliche Rundungen mit Nippel schon gesehen hat.
@@unbekannter_Nutzer ich würde für Assembler allerdings vorschlagen, den Sinus in einer vorberechneten Tabelle abzulegen. Hab ich damals (1986) auch so gemacht .. kzhead.info/sun/Z7eMlZuFnoV7l6M/bejne.html (interessant zu sehen, welchen Weg die eigenen Programmierversuche so gehen)
Tolles und interessantes Video. Ich vermisse immer noch einen ausführlichen c64 programmierkurs in KZhead genauso wie Amiga Amos.
Es gibt den kompletten 64er-Magazin Programmierkurs als PDF Archiv zum Download. Ich suche dir gerne den Link raus. Assembler und SID-Programmierung sowie BASIC
@@Gutenberg1977 ja das wäre wirklich interessant. Das würde ich mir gerne mal anschauen. Was noch interessanter wäre ist Amiga Amos da habe ich schon ein ebook bekommen aber wirklich lernen tut man da leider recht wenig.
Genau solche Probleme mit dem runden auf Ganzzahlen hatte ich beim C64 früher, als ich für einen befreundeten Einzelhändler ein Programm zum erstellen einer Rechnung geschrieben habe. Da funktionierte dir Rundung nie ganz genau. Um damals exakte Werte zu erhalten, musste ich berechnete Zahlen in Text umwandeln, die Nachkommastellen ermitteln, auslesen dann runden und wieder zurück umwandeln. War ganz schön trickie.
Na dann bin ich ja mal auf die Assembler Version/Folge gespannt! Viele Grüße, Doktor64!
Keine Pralinen ... War wieder nett - wenn ich halt Basic auf einem CPC464 erlernte - Da musste man nicht jede Kleinigkeit Poken ;) (wenn halt die Spiele-Auswahl doch etwas restriktiver ausfiel, als beim C64 des Kumpels - aber war missbrauchte ich auch den Arbeits-Rechner des Vaters ... EpsonFX80 - 9-Nadel-Drucker ... nächtelang ...) War schon eine geile Zeit!
Das BASIC vom Amstrad war/ist wirklich gut und ziemlich schnell! Hier mal ein Beispiel! Link:kzhead.info/sun/bJmdkqyBn3eBl40/bejne.html
Es gab auch für den CPC jede Menge Spiele, wenn auch nicht so viele wie für den Brotkasten! Aber das Locomotive Basic war super, da konnte man sogar mit Basic richtig gute Programme erstellen!
@ Wolfgang könntest du evtl. den super geilen Sound der Vectrex(bzw. der Spiele) auf diese omminöse Webseite hochladen ? & macht ihr beide noch mal ein Let's Play zusammen ? 👍
ganz großes kino !
Das war ja wieder ein riesen Spaß. Ich habe mal vor gefühlten 100Jahren für (gegen😀) meine Kinder ein kleines Mathe-Programm für die Grundrechenarten auf meinem Atari(mit 5''Floppy) in Basic geschrieben. Der Vlog hat mich irgendwie daran erinnert.🙋
Ich denke das könnte so ausgesehen haben. LINK:kzhead.info/sun/gpuOlbOpmH-nY2w/bejne.html
Ui, Assembly - das hab ich in der Tat nie gelernt. Da hätte ich gerne ein Grundlagen-/Einführungsvideo zu!
Nice Video. Ein "FOR B=1 TO Y" hätte es besser gefixt, da du jetzt beim Übergang von Y=1 auf Y=0 einen Sprung von 2 Punkten hats. ;o)
Drucker statt Display 😅 🙈
Coole Zusammenarbeit. Ich fand die Einstellung schick wo Du mit dem Rücken vor der Laborecke sitzt. Mit all den Messgeräten im Hintergrund... Da möchte man direkt die Messspitzen in die Hand nehmen oder und loslegen 😀
Die komplexen Messgeräte sind nur Deko. Beißzange reicht.
Ich kenne nur C und ich muss sagen, das ZWER hat mich bis zur Erklärung mit den 2 Zeichen in Basic so stark verwirrt, dass ich mich erstmal selbst neu starten musste 😂
Tja. Wir sind alle verwöhnt von paranoiden Compilern, die dauernd nach Hilfe schreien.
Ja... wartet erst mal auf die assembler Beispiele - paranoide Programmierer, die nach Mami schreien...
Super Video - Hat mich an meine Schulzeit erinnert wo ich BASIC und dann PSCAL gelernt habe. Ich hab auch noch meinen alten Sharp PC-E500 der auch mit BASIC zu programieren ist.
wenn Sie BASIC mögen dann schauen Sie unter www.qb64.org/portal/ da gib es QB64-BASIC voll QB-4.5 Compatibel und es Kompiliert das Programm zu EXE FILES! OPEN-GL IST AUCH EINGEBAUT!
Ich find das Video gut und hoffe das die darauf folgenden Videos in kürzerer Zeitspanne kommen als dies von diesem Video zu dem vorherigen Video dieser Serie Retro der Fall war. Man kann sich ja nur vorstellen wie es gewesen wäre wenn der Coronablödsinn nicht wäre. Aber dennoch war die Folge gut, auch wenn mir die Witze gefehlt haben und das gegenseitig sticheln, da eben keine direkte Interaktion da war. Die Gegendarstellung von Wolfgang hat's so ein bissel wettgemacht :-) Man kann aber erahnen aus den Outtakes von dem Konfettiproduzenten, die man so schlecht wegsaugen kann, das es in normalem Bahnen wohl deutlich besser gewesen wäre. Was ich mich jedoch Frage ist, wozu hat Herr Robel nun einen dritten AIM-65? Er hatte doch bereits 2 die ursprüngliche Rockwell Version und die die dann Commodore herausgebracht hat? Oder ging es da schlicht um die Umverpackung des AIM-65, da die Teile ja schon so 700 bis 1200 Dollar kosten und sicherlich in der frühestens Form wohl noch teurer sind. Das hier erinnert mich stark daran als mein Vater damals mit einem VTech ankam auf dem man Basic programmieren konnte und ich das Geräte genutzt habe und das nicht gerade wenig und es läuft auch heute noch. Habe dies mal rausgekramt und auch mal etwas rumgetipselt. Man was da für lustige Erinnerungen hoch kamen. Danke dafür :-) Schon lustig das meine alten Konsolen wie SEGA, NES, SNES, Gameboy es noch heute machen. Nur doof das die Spiele so teuer geworden sind^^. Das einzige Problem ist nur wenn man sich einen neuen Fernseher kauft und man nicht darauf achtet das dort ein Skartanschluss dran ist muss man sich dann einen Skart-HDMI Konverter kaufen muss^^. Bin bis dato aber nicht so zufrieden mit dem Ergebnis.
Da verwechselt doch tatsächlich jemand KIM-1 und AIM-65... KIM-1 hab ich zwei - einen ganz alten mit ROR-Bug-CPU und einen Commodore-Typ. AIM-65 hab ich jetzt auch zwei - einen mit abgesägter Tastatur und ohne Gehäuse und einen Vollständigen!
@@wolfgangrobel Ups. Den mit abgesägter Tastatur und der trendigen neuen Leertaste fand ich auch ganz drollig, nur eben nicht mehr Original. Was natürlich deutlich den Wert mindert.
Mensch.... wo waren denn da die Schnapspralinen?
Die gibts nur wenn die Beiden zusammen sind! Weil dann gibts daheim keinen Mecker, haben ja nur Pralinen gegessen :))
Ihr erinnert mich sehr stark an die beiden alten knackkern bei der Muppet show ?? Smile .. fehlt nur noch Gonzo mit seinem Motorrad Lodge - Stunt .. schönen Gruss noch.
Ihr seid ein tolles Team! Hach... Schnapspralinen .... (welche Sorte, und wie kann ich euch mal welche schicken?) Danke jedenfalls für die erquicklichen Momente!
Schau mal auf Wolfgangs Homepage im Impressum ;-)
Zu Wolfgangs neuem Spielzeug würde ich gern mal ein Zerlegevideo sehen. Also non-destructive natürlich.
Z E R L E G E N !
@@Zerobrain nein nein nein das lied geht ZERSTÖÖÖÖREEEEEN!!!!
Ja ja, die Freuden der BASIC-Dialekte und der unterschiedlichen Hardwarefähigkeiten. Deshalb gab es damals auch BASICODE um die Inkompatibiltäten zu umschiffen. Pascal kannte dieselben Probleme. Zumindest zwischen Standard-Pascal nach Wirth und Turbo-Pascal. Letzteres hatte bei den Ein-/Ausgabefehlen kleine Abweichungen vom Standard, die es einem ersparten mit Zeigern für den Satzpuffer arbeiten zu müssen.
Ich dachte ja, dass Ihr Beide die Aufnahme eines einer Live-Streaming Session präsentiert. Aber das hier ist auch cool. In den Teams-Sessions mit den Kollegen haben wir jedenfalls neben Arbeit auch jede Menge Spaß.
Wir sind sowas von gut, wir können uns sogar zeit- und ortsversetzt dissen!
Das war natürlich ein Test. Ein Wolfgang R. macht keine Fehler. Er wollte mit dem fehlerhaften Code testen, ob Zero seine Freundschaft wert ist. ;) Wolfgang könnte niemals mit jemandem befreundet sein, der nicht binär denkt und hexadezimal handelt. Bleibt gesund Ihr beiden.
Besser hätte ich das gar nicht ausdrücken können...
Will mich auch unbedingt in das Thema rein Fuchsen ☺️
Hah, so eine schöne Tasse !
Danke.
Ich hab damals mit dem Sharp Pocket Computer PC 1245 begonnen, der hatte 1486 Byte Speicher, kaum zu glauben, damit haben wir Spiele programmiert (man konnte 16 Zeichen à 5*7 Pixel LCD direkt anpoken). Dazu gab es einen externen Thermodrucker mit Kasetteninterface. Das war damal ganz großes Kino.
Geil !!! Erinnert mich an meine VC20-Zeiten ! Den C64 konnte sich dazumal nicht jeder leisten...und den Sinclair ZX Spectrum schon gar nicht
Wenn das in einem richtigen Battle ausartet steht nachher eine ganz neue künstliche Intelligenz da und wird uns alle vernichten :D Ihr seid also die erschaffer von Skynet :D Auch wenn ich auf halber Strecker aus der Kurve geflogen bin war es doch sehr interessant und unterhaltsam :) Bin auf weitere Battles gespannt ;)
warum muss man beim Runden ne Fallunterscheidung machen. In c/c++/c# würde ich (int)(sin(A / 5.0f) * 9.0f + 0.5f) + 9 schreiben, da brauchst nix zu runden. Nein, d.h. ich würde (int)(sin(A * 0.2f) * 9.0f + 0.5f) + 9 schreiben und die Magic numbers durch Macros ersetzen, aber das iss ja das gleiche.
Jaja, wer austeilt muss auch einstecken können. Die korrekte kaufmännische Rundung mit +0.5 hast du ja bereits unten reingeschrieben. Statt zwei if würde ich nur eines nehmen, das im negativen Bereich einfach 1 abzieht, wenn du im default Fall 0.5 addierst. Weiters haben wir Studierte gelernt nie auf =0 abzufragen sondern auf
Viel mehr Basic bitte!
1 RUN
wenn Sie BASIC mögen dann schauen Sie unter www.qb64.org/portal/ da gib es QB64-BASIC voll QB-4.5 Compatibel und es Kompiliert das Programm zu EXE FILES! OPEN-GL IST AUCH EINGEBAUT!
Bin gerade bei 7:24. Ich tippe mal auf das int(). Müsste eher ein round() sein, oder eben (kann mich nicht an BASIC round() erinnern) die korrekte Korrektur mit 0.5. Zudem fällt auf, dass der positive Teil nicht exakt dem negativen entspricht, vermutlich deswegen.
Nach dem Video: ja, Mensch, das mit dem 0.1 solltest du unbedingt richtigstellen. Muss 0.5 sein. Das ist doch 1x1: Umwandlung von float nach int ohne math.h (bei kontrollierem Wertebereich). Geht auch mit C++ noch...
AIM-65 ist ja ganz toll, aber vielleicht kann Wolfgang beim nächten mal zeigen, wie man eine AIM-120 Luft-Luft-Rakete programmiert?
Solche "Luftnummern" machen wir nur vor ausgewähltem Publikum.
Nachher wird's so ein Rohrkrepierer, den man nur mit einer Zangengeburt gelöst bekommt... Zerobrain, übernehmen Sie!
Erinnert mich an: kzhead.info/sun/mJqzotKulqdmaKc/bejne.html
So war's gedacht!
Da passt doch besser die AIM- 9. Die kleine Schlange macht doch auch so schöne Sinuskurven - bei der Fortbewegung...😉
Verwendet ja nicht Filmora, weil weil wondershare bei der Suche nach jeder anderen Open source Videosoftware auf ihre Webseite mit filmora umleitet. Ich hab selbst nach einer filmsoftware gesucht und bin immer als erstes auf ihre Seite geleitet worden.
Wenn ein kleines Basicprogramm schon so einen Wind macht , können wir uns ja beim Assembler-Duell auf einen Sturm einstellen. Man hätte ja beim C64 die Zeichenausgabe auch an einen MPS801 Drucker umleiten können. Der hatte einen tollen Sound beim Drucken (Nachts ein Basic-Listing ausdrucken war schon fast eine Ruhestörung).
Der 801 steht tatsächlich schon bereit.
@@Zerobrain Habe gerade mal gegoogelt, es gibt tatsächlich noch das Endlospapier mit der Tracktorführung. Hatte ich irgendwie verdrängt .
@@nighthawkflyer Auch das liegt schon bereit!
@@nighthawkflyer Keine Wunder - endlos viele Firmen arbeiten ja immer noch damit.
Ja, als man noch Zeilennummern hatte, war die Welt noch schön ;-) Also Papier ist schon ein lauter Monitor ... hehehe Wolfgang ist doch nur neidisch auf den Zeh Vierundsechzig! :D
Passt aber irre viel drauf! Ich bin ganz von der Rolle!
@@wolfgangrobel Und man kann weiter hochscrollen als beim C64!
I am literally coding a game in basic right now while watching this
Zerobrain, sag mal, hat der rechthaberische Herr, der das hochkomplexe und über jede Kritik erhabene AIM-65 - Programm geschrieben hat, eigentlich eine eigene Webseite?
Mit Recht!
@@wolfgangrobel - und mit der geliehenen Reichweite von Zerobrain! :-D
Wenn man alt wird, geht man wieder auf die vertrauten Basics zurück. Mit all diesen neumodernen Kram kann man nichts mehr anfangen. ;-)
Unterhaltsam die Technik von Wolfgang & die ganzen kryptische zeichen Eingabe 😎 Nur leider verstehe ich Dafoe so viele wie der Dodo fon Fliegen 🤪 Aber die alte Technik ist hoch interessant Besonders was Wolfgang da immer aus seinem Fundus. Herbei zaubert Einfach faszinierend Grüße Das #rmultitool
Hat Wolfgang die Tastatur repariert ,(Die Leertaste ) oder hat er zwei.
Wie hieß die URL nochmal?
www.wolfgangrobel.de ... wie sonst?
Das ist nicht wirklich ein bug. Das selbe passiert auf dem C64 bei 40 Zeichen. Warum ist das so? Wenn man an die Grenze kommt (AIM 65: 20, C64: 40) , dann springt das nächste Zeichen bereits auf die nächste Zeile. Wenn man dann keine Leerzeile haben will, dann muß man so tun, als würde man einfach weiter schreiben. Versuche mal den Bildschirm mit einem Zeichen zu füllen, es wird immer in der letzten Zeile passieren, das eine Leerzeile erscheint, wenn das Zeichen ganz rechts, ganz unten gedruckt wird.
Das Video war gar nicht in meiner Abo Übersicht. Bug or Feature?
KZhead fragen...
@ Du meinst bei 0:50 die basics of basic, oder? :'D @ Wolgfang: Du stehst hier nicht unter Beobachtung, wir sind doch unter uns. Ich glaube, diese Fehler hat jeder schon gemacht. Manche verheimlichen es, andere geben es zu, und andere veröffentlichen es damit wieder andere etwas lernen können. :)
Krass, mein KZhead hat mich NICHT benachrichtigt! Weder auf der "my subscriptions" Seite, noch über die Benachrichtigung. Aber das letzte Mini-Video von bigclive hat es mir natürlich über die Empfehlungen trotzdem reingespielt. Aber nerven tut es schon.
Ein weiterer guter Grund, hier regelmäßig vorbeizusehen!
Oder mir auf Twitter zu folgen...
@@Zerobrain Twitter? Habichnich...
@@wolfgangrobel Na klar...
Ach war das schön als man noch 3 Stunden program listings abgetippt hat und dann vor lauter "gaga" vergessen zu speichern... (natürlich auf datasette.......)
Oder bevor man speicherte, Run eintippte und der Rechner dann abstürzte 😄😄
Oder wenn man nach Eintippen des Programms - um den Cassettenrecorder zu holen - hektisch über das Netzkabel des Netzteils stolperte und dieses aus dem Gerät riss... Ist mir beim ZX-81 passiert...
Ja, bitte mehr. Assembler wird zwar jetzt auch immer weniger, aber ist dennoch heute interessanter als Basic.
Auch heute gilt: wer die Grundlagen von Assembler nicht versteht, der hat gar nichts verstanden! Spätestens, wenn das Programm wieder mal nicht funktioniert, lohnt es sich, mal näher zu ergründen, was der Compiler aus der Hochsprache gewurschtelt hat! Wer das nicht deuten kann, ist verloren.
@@wolfgangrobel Dem kann man nur uneingeschränkt Zustimmen. Die Realität sieht bei vielen Programmierern aber leider anders aus und ich kämpfe seit Monaten mit so Einem. Gut, auch das ist eine Erfahrung mehr als vorher.
@@wolfgangrobel Bei Mikrocontrollern ist das interessant, bei Windowsprogrammierung eher weniger (ausser Treiberprogrammierung) und bei PHP & Co so ziemlich unmöglich. 😁
@rogie18967 Da hast du recht! Ich komme halt aus der hardwarenahem Programmierung...
@@wolfgangrobel Ich auch, zumindest anfangs. Inzwischen lohnt es wirklich nur in wenigen Fällen. Ich habe Anfang der 90'er mal in Turbo Pascal 6.0 angefangen, eine kleine 3D Grafik Engine zu programmieren, die Texturen auf Rechtecken darstellen konnte, vieles davon habe ich in Assembler geschrieben. Kurze Zeit später hatte ich dann Borland C++3.1 und habe das ganze in C umgesetzt, und das lief tatsächlich schneller als das inline Assembler in Turbo Pascal. Ich war natürlich neugierig, warum, und schaute mir das genrierte Assemblerlisting an und siehe da: Der Compiler benutzte Assembler Befehle, die ich gar nicht kannte. 😄😄
lol ich will mal sehen wie er das selbe programm in assmebler programmiert... Nen 8bitter ohne floating point unit ohne floating point befehle oder ähnliches zu sowas zubringen macht schon echt jede menge spass (nicht) und dann will ich ihn mal sehen wie er die taylorreihe vom sinus im assembler unterbringt...
Dieses Mal gabs keine Mail obwohl Abo und Glocke aktiv sind bei mir. Immerhin tauchte das Video in den Vorschlägen auf.
Abonniert einfach meinen Twitter / Facebook / Instagram Feed ;-)
dito
Los Poke(t) euch
Und du peekst dann?
Wenn man wegen int sowieso if Anweisungen schreiben muß.Kann man sich nicht gleich eine mathematische Rundungsfunktion bauen.
@zerobrain das du "C" und "richtige Sprache" in einem Satz erwähnt hast, hat mich irritiert. War das ironisch gemeint? (Achtung eigene Erfahrung + Meinung voraus:) Als ich vor vielen Jahren noch (hobbymäßig) in C programmiert habe, ist mir das ein oder andere Programm um die Ohren geflogen, so bald ich den C Compiler gewechselt habe. Das darf bei einer "richtigen" Programmiersprache meiner Meinung nach nicht passieren. Da sollte die Spec keinen Interpretationsspielraum lassen.
streng genommen ist das bei c der fall! die unterschiede zwischen den compilern findet man hauptsächlich bei undefined behavior und das ist nun mal eben nicht definiert. was ein compiler dann macht muss nicht immer gleich geschweigedenn richtig sein. er kann machen was er will undefined behaviour eben. da hat auch interpretation nicht unbedingt was mit zutun. der compiler produziert was er in dem fall produzieren würde und es fehlt einfach die abfrage ob das ganze valide ist beziehungsweise die ausgabe einer warnung. durch dass das ergebnis nicht definiert ist ist jedes ergebnis standard konform... und jeder compiler ist etwas anders aufgebaut und produziert verschiedene ergebnisse in den verschiedenen edgecases eben weil sein aufbau so verschieden ist.
kann ich euch mal mein prg zusenden?
... Wenn wir den Stundensatz vorher verhandelt haben.
oO Wolfang hat was falsch gemacht, BATTLE ROYALE :))
Oh man, ich fühl mich wieder wie 16.
Ich mich wie 8... Das war damals noch alles so schön simpel - aber nicht minder spannend.
haha, diese nette Kaffeetasse hab ich auch!
C64 und auch die Eule :D
Da hat der Wolfgang sich aber was geleistet...in einem Video an alle Zuschauer zu sagen: "Ich bin für Kritik offen, wenn sie nicht von DIR kommt!" Na, wer soll sich denn da bitteschön *NICHT* angesprochen fühlen? Jaja, so ist das mit der Kritikfähigkeit... "Ich bin für jegliche Kritik offen, solange sie nur die positiven Aspekte meines Handelns aufführt!" ;-P
Du verstehst eben nicht die "besondere Verbindung" zwischen den beiden.😉
Genau so!
110 IF Y0 THEN PRINT"."; :-) Sehr tolles Video. Ich Programmiere noch in FreeBasic. Der Stil ist aber völlig anders als beim guten alten Basic V2.
wenn Sie BASIC mögen dann schauen Sie unter www.qb64.org/portal/ da gib es QB64-BASIC voll QB-4.5 Compatibel und es Kompiliert das Programm zu EXE FILES! OPEN-GL IST AUCH EINGEBAUT!
Als damals der Wolfang das Programm am AIM-65 Programmiert hat, wusste man denn damals schon, dass es irgendwann einen C64 geben würde ?
das programm ist kaum älter als nen paar wochen (aller wahrscheinlichkeit nach) also ist die frage hinfällig weil beides nach ansicht der massen zum alten eisen gehört...
@@urugulu1656 Die Frage war mehr Ironisch gemeint. Aber wenn du keine Ironie verstehst: Der AIM-65 wurde 1976 gebaut. Der C64 folgte erst 6 Jahre später. Hätte man damals am AIM65 schon wissen können, dass die Programme später nicht kompatibel mit dem C64 sind ?
der VC20 hat gegenüber dem AIM-65 satte 17 Basic bytes mehr zu verfügung ;-)
24:11 "Hardwareabhängikeiten" meint der Drogen?
Das letzte Mal das ich Basic am 64er gemacht hatte war im letzten Jahrtausend. (VisualBasic zählt nicht hab ich immer gemieden). Kennt ihr noch vom C64 den MSE wo man aus den Heften Seiten weise Maschinencode abgekopft hat. (Und dann am Schluss merkt... F*** das war die April Ausgabe.) Ich könnte heute noch fluchen, aber auch andererseits über meine eigene Dämlichkeit lachen.
...oder in der nächsten Ausgabe stand: "Oh, da hat sich leider der Fehlerteufel eingeschlichen." und Du hast einen Monat lang den Fehler bei Dir gesucht.
Ich finde das Programm nicht ganz korrekt. Der Treppeneffenkt bei dem Minimum kommt dadurch zustande weil ja die Punkte nur nicht gedruckt werden wenn der Y-Wert 0 ist. Man müsste aber den B-Wert 0 überspringen - also innerhalb der Schleife fragen ob B=0 ist und dann wird in jeder Ausgabezeile der erste Punkt geschluckt. Zeile 95 streichen und stattdessen: 105 IF B=0 goto 120 Sonst nettes Video , wie immer :-)
>105 IF B=0 goto 120 Also das macht ja gar keinen Sinn! Damit wird die Schleife nur für B=0 geskippt. Entspricht dann quasi FORor B =1 to Y
@@Zerobrain hmmm .. du sagtest die Schleife wird auf jeden Fall einmal durchlaufen, daher mein eigenartiger Ansatz. bin bei Basic auch schon ewig raus ... edit : gibt ja zum Glück online-Intepreter: und du hast recht :-) 40 for a=1 to 20 50 print "#"; 60 next a 61 print 70 for a=0 to 50 80 z=sin(a/5)*9.5 82 y=9+(int(z)) 100 for b=1 to y 110 print "."; 120 next b 130 print "*"; 140 next a
@@Zerobrain Ich würde sagen, man könnte einfach die punkte statt bis Y immer (außer beim ersten mal) bis (Y-1) gehen lassen; wenn man auf Pos 18 das sternchen setzen will, muss man ja nur 18 Punkte (0-17) davor setzen. Das war in der Lösung von Wolfgang quasi schon mit eingepreist, der Punkt am Anfang "zu viel" war in jeder Zeile da, sodass der erst Punkt sozusagen immer einen Wert von -1 dargestellt hat. Von der Form her hat die ursprüngliche Lösung in dieser Hinsicht sogar besser gepasst ;)
Zerobrain doch, 1to y wäre korrekt gewesen, denn dann werden immer y Punkte ausgegeben. In deiner Lösung werden bei x=0 0 Punkte, ansonsten y+1 Punkte ausgegeben.
das war jetzt das erste video was nicht in der abobox war
Updates immer per Twitter / Facebook / Instagram!
@@Zerobrain ich hab aber leider nichts von den drei und will mir auch nichts davon zulegen
Dann musst du halt per Hand regelmäßig vorbeischauen...
Stimmt, bei mir auch nicht. Und ich habe von dem anderen, unten erwähntem Kram auch nix.
@@omashaushalt Dann musst du halt per Hand regelmäßig vorbeischauen...
Und jetzt bitte das Ganze noch für den "Z3"...
Quasi ein akustik Relais Koppler.
Commodore C64
Hatte der Wolfgang nicht ne Website? Wie hieß die noch???😂
Ja, die ist so kompliziert zu merken, kaum einer weiss, das es www.wolfgangrobel.de ist.😄😄
@@AtzeDatze stimmt! Und hätte sogar schön aufs Display der AIM-65 gepaßt.
Das Coronaexperiment :-)
Warum kein std::round() 😂
Iector guard weil die Template-Fehlermeldungen sonst immer mehrere Seiten volldrucken.
2:20 Ätsch der VC20 hatte 3583 Bytes Programmspeicher in der Grundausstattung, ganze 17 Bytes mehr als dein AIM65 😜. 😄😄😄😄😄
rogie18967 da war ich ja mit meinem C64 schon voll der Rockefeller!
Hab die gleiche Tasse!
Die mit Eule, gell?
@@wolfgangrobel Ja genau!
Indent 10,3 ich vermisse dich...
altes Rechnerzeugs: mehr gramm als byte
Das Programm hatte “Fehler”. Andere würden sagen: Das Programm hatte Verbesserungspotentiale :)
Features!
ein hoch auf die beschissene youtube hauptseite, da ist mir das doch tatsächlich nicht in die benachrichtigungen gekommen.... Toll
Ganz ohne altherren Witze? Schade. -
Hast Du den "Sinus" nicht gesehen? Fehlt Dir die Phantasie? Das Programm ist REINER PIXELPORN!
@@Zerobrain das you Tube das nicht zensiert!
@@Zerobrain Darum war der Nuppsi oben an der Kurve auch so wichtig.
1. Wäre früher niemand auf die Idee gekommen eine Variable mit mehr als 2 Zeichen zu verwenden. 2. Bug im Programm 0 gibt keinen Punkt aus aber 1gleich zwei.🙄
zu 2) Ups: stimmt! Sehr gut! (im angepinnten Kommentar ergänzt)
zu eins wozu braucht man variablen wen man register und speicheraddressen hat
Warum wird Basic einfach immer nur so schlecht geredet, auch in anderen Programmiersprachen gibt es Sprungbefehle(die vergleichbar mit GOTO sind!!) Aber Programmiersprachen die aus Blöcken bestehen(Scratch, Snap usw.) werden hochgelobt. Und eine andere Programmiersprache wie Python(=verkomplizierte Mischung aus Basic & Logo und ein bischen Pascal)wird ebenfalls hochgelobt, warum eigentlich??
Sind auch Modeerscheinungen. Selbst für den "bösen GOTO" gibt es durchaus legitime Ansätze.
@@Zerobrain Allerdings da es in sehr vielen Programmiersprachen vergleichbare Befehle gibt!
Schönen Tag zusammen tolles Video!!. Wenn Sie BASIC mögen dann schauen Sie bitte unter www.qb64.org/portal/ da gib es einen QB64-BASIC Compiler dr ist voll zu QB-4.5 Compatibel und es Kompiliert das Programm zu EXE FILES! OPEN-GL IST AUCH EINGEBAUT! ACHTUNG DIE COMPILIERTEN FILES SIND E X T R E M S C H N E L L ZUR LAUFZEIT. Viel Spass und alles gute wünscht ... Rita EOF EOT
Man weiß das man Alt ist wenn einen die ganzen doofen Pokes, Peeks und Sys Befehle schneller einfallen als das Geburtsdatum der Liebsten ;-) In dem Sinne: Sys 64738 ;-)
Call -151
Aua, Tastatur-Quäler
Wer jetzt?
Er wars!
@@wolfgangrobel Der, der fragt ;) Der arme Rockwell
Eine gute Tastatur kann sowas ab.
Immer noch falsch 😁. Jetzt ist Wolfgang wieder dran.