Bei meinen Versuchen diese verflixte Rekursion in meinen Schädel zu bekommen stieß ich auf der Website eines Mathematikers der Universität von Ljubljana (Slowenien) auf weitere raumfüllende Kurven.
Die Knuth-Kurve
Das Logo-Programm von dort passt auch auf unserer Joyce. Wie bei den meisten Grafik-Sachen ist das Tempo beschaulich, aber in der CP/M-Box gibt es ja die F11-Taste.
Die Wirth-Kurve
Die Sierpinski-Kurve
Hier musste erst die Berechnung der Quadratwurzel definiert werden - diese Funktion fehlt im Dr Logo des PCW.
Die Suche ergab 36 Treffer
- 01.06.2024, 19:24
- Forum: Programmierung
- Thema: Grafik - Kurven
- Antworten: 5
- Zugriffe: 8701
- 31.12.2023, 20:48
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
- 31.12.2023, 15:15
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Hier seht Ihr, dass wirklich Welten dazwischen liegen. Dieser Apfelmännchen-Ausschnitt vom ZX81 (256 x 176 Pixel) benötigte tatsächlich Wochen zum Fertigstellen und dieser unter Michaels Interpreter (320 x 200 Pixel) keine zehn Sekunden: Ich bin gespannt auf die nächste Version!ein Thüringer hat geschrieben: ↑28.12.2023, 19:56(...) zeigt sich, dass das Zeichnen rasend schnell erfolgt.
- 29.12.2023, 01:29
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Ich war erst mal froh, dass ich es überhaupt zum Laufen bekommen hatte – ohne die schon kompilierte jar-Datei wäre ich komplett außen vor geblieben.
Du sollst auch nicht eine Liste von Programmen vor die Füße geworfen und nur gesagt bekommen, hier bleibt der Bildschirm blau, hier stürzt es gleich ab, hier bleibt es hängen, nun mache mal, sondern ich will auch schon selbst versuchen, eine Ursache zu benennen und das Problem etwas einzugrenzen / zu lokalisieren.
Genau, vgl. 000 in https://www.robotrontechnik.de/html/for ... adid=20758 . Dort ist auch ein Behelf, es im Programm und nicht im Bascoder zu erreichen, aber ersteres wäre schöner. Ich habe es sogar in meiner lokal gespeicherten Version des Hagemans-Bascoders patchen können, obwohl ich die Programmiersprache gar nicht beherrsche – einfach den betreffenden Passus aus der 100er Routine in die 110er kopiert.Wie soll das vonstatten gehen? GOSUB 110 setzt nicht nur den Cursor gemäß HO/VE, sondern auch die Textfarben gemäß CC(0)/(1)?
- 28.12.2023, 19:56
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
So, nun habe ich mich auch an diese Java-Sache gewagt. Es gab drei Hürden, bis es klappte, weil es anderen vielleicht ähnlich geht, will ich die mal hier schildern.
Um mir das Starten zu vereinfachen, habe ich eine .BAT-Datei geschrieben, die in dem Verzeichnis steht, das auch die basicode.jar und die BasiCode-Programme enthält. In dieser Batch-Datei ändere ich jeweils den Namen des gewünschten Programms und speichere sie ab. Dieses Verfahren erspart mir die Eingabe des langen Buchstabensalats im CMD-Fenster. In der Datei steht:
C:"\Program files\Java\jdk-21\bin\java" -jar D:\Thomas\Emulatio.nen\BC3CJAVA\basicode.jar -hold D:\Thomas\Emulatio.nen\BC3CJAVA\UNMOEGLI.BAS
Der blaue Text verweist auf das Verzeichnis, in dem das Java Development Kit steht, der magentafarbene auf die fertig kompilierte .JAR-Datei einschließlich ihres Pfads und der grüne Text auf Pfad und Name des gewünschten Programms. Die Bedeutung von -hold hat Michael erklärt: nach Programmende verschwindet das Fenster erst nach einem weiteren Tastendruck.
Wenn die Batch-Datei, die basicode.jar und die Programme im selben Verzeichnis stehen. sollte auch diese Form reichen:
C:"\Program files\Java\jdk-21\bin\java" -jar basicode.jar -hold UNMOEGLI.BAS
Wenn das klappt, kann man ja auch einen Link auf dem Desktop anlegen (der diese Batch-Datei aufruft) – um das ständige Editieren kommt man aber nicht herum. Doch zum Glück ist es nur eine Übergangslösung, bis Michael die Dateiauswahl in sein Projekt integriert hat.
Was waren nun die Hürden?
I) Im Explorer wird C:\Programme... angezeigt. Tatsächlich brauche ich aber den englischen Namen C:\Program files... Sch... Windows
II) Weil im Namen des ersten Ordners ein Leerzeichen enthalten ist, muss der Pfad in Anführungszeichen gesetzt werden.
III) Diese Anführungszeichen dürfen aber nicht den Laufwerksbuchstaben einschließen (also nicht "C:\Program files..."), das war mir fälschlich so gesagt worden.
Nun lief es endlich und gleich das erste Programm klappte auch: Schon hier zeigt sich, dass das Zeichnen rasend schnell erfolgt. Wenn der Auswahl-Punkt über die möglichen Felder geführt wird, ertönt jeweils ein kurzer Ton - und nur das Abspielen dieses Tons verzögert den Programmablauf. Als ich "STEINE.BAS" (ein Tetris im Text-Modus) aufrief, war Spielen absolut nicht möglich. Deswegen arbeitet Michael an einer optionalen Verzögerungsmöglichkeit.
Nicht alle Programme liefen, hier werden wir Stück für Stück die Ursachen ergründen. Ein weiteres Programm, das gleich lief: Mein nächster Wunsch an Michael wäre die Möglichkeit, die Buchstabenfarbe beim Ausführen von GOSUB 110 (der Positionierung des Textcursors) zu wechseln, dann könnte das Zauberwürfelprogramm angenehmer als mit Buchstaben gespielt werden. Das geht zwar über die Forderungen von BasiCode hinaus - aber es ist praktisch und viele Bascoder können es, obwohl es nicht gefordert ist.
Um mir das Starten zu vereinfachen, habe ich eine .BAT-Datei geschrieben, die in dem Verzeichnis steht, das auch die basicode.jar und die BasiCode-Programme enthält. In dieser Batch-Datei ändere ich jeweils den Namen des gewünschten Programms und speichere sie ab. Dieses Verfahren erspart mir die Eingabe des langen Buchstabensalats im CMD-Fenster. In der Datei steht:
C:"\Program files\Java\jdk-21\bin\java" -jar D:\Thomas\Emulatio.nen\BC3CJAVA\basicode.jar -hold D:\Thomas\Emulatio.nen\BC3CJAVA\UNMOEGLI.BAS
Der blaue Text verweist auf das Verzeichnis, in dem das Java Development Kit steht, der magentafarbene auf die fertig kompilierte .JAR-Datei einschließlich ihres Pfads und der grüne Text auf Pfad und Name des gewünschten Programms. Die Bedeutung von -hold hat Michael erklärt: nach Programmende verschwindet das Fenster erst nach einem weiteren Tastendruck.
Wenn die Batch-Datei, die basicode.jar und die Programme im selben Verzeichnis stehen. sollte auch diese Form reichen:
C:"\Program files\Java\jdk-21\bin\java" -jar basicode.jar -hold UNMOEGLI.BAS
Wenn das klappt, kann man ja auch einen Link auf dem Desktop anlegen (der diese Batch-Datei aufruft) – um das ständige Editieren kommt man aber nicht herum. Doch zum Glück ist es nur eine Übergangslösung, bis Michael die Dateiauswahl in sein Projekt integriert hat.
Was waren nun die Hürden?
I) Im Explorer wird C:\Programme... angezeigt. Tatsächlich brauche ich aber den englischen Namen C:\Program files... Sch... Windows
II) Weil im Namen des ersten Ordners ein Leerzeichen enthalten ist, muss der Pfad in Anführungszeichen gesetzt werden.
III) Diese Anführungszeichen dürfen aber nicht den Laufwerksbuchstaben einschließen (also nicht "C:\Program files..."), das war mir fälschlich so gesagt worden.
Nun lief es endlich und gleich das erste Programm klappte auch: Schon hier zeigt sich, dass das Zeichnen rasend schnell erfolgt. Wenn der Auswahl-Punkt über die möglichen Felder geführt wird, ertönt jeweils ein kurzer Ton - und nur das Abspielen dieses Tons verzögert den Programmablauf. Als ich "STEINE.BAS" (ein Tetris im Text-Modus) aufrief, war Spielen absolut nicht möglich. Deswegen arbeitet Michael an einer optionalen Verzögerungsmöglichkeit.
Nicht alle Programme liefen, hier werden wir Stück für Stück die Ursachen ergründen. Ein weiteres Programm, das gleich lief: Mein nächster Wunsch an Michael wäre die Möglichkeit, die Buchstabenfarbe beim Ausführen von GOSUB 110 (der Positionierung des Textcursors) zu wechseln, dann könnte das Zauberwürfelprogramm angenehmer als mit Buchstaben gespielt werden. Das geht zwar über die Forderungen von BasiCode hinaus - aber es ist praktisch und viele Bascoder können es, obwohl es nicht gefordert ist.
- 28.12.2023, 00:34
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Danke, Michael, Kurt und Paul! Der korrigierte Bascoder wurde schon von Werner in die Homepage eingepflegt.
Er überraschte mich auch mit dieser kleinen Animation: Danke auch an ihn!- 26.12.2023, 21:44
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Sehr gut, Paul!
Aber in 1 kann ja das RANDOMIZE dann entfallen, das GOTO 20 ist ja Pflicht in jedem Programm und einmal reicht. Ich überschlafe es, teste es morgen auch und erstelle den (bzw. übernehme Deinen) abgeänderten Bascoder.
Ein kleiner Änderungswunsch für Dein Programm: es läuft ungebremst in das GOTO 950 hinein. Laut Vereinbarungen
wird mit dem Rückführen in den computereigenen Basic-Betrieb aber auch der Bildschirm gelöscht (das wird Michael bestimmt noch hineinarbeiten), der Baum ist also eigentlich augenblicklich wieder fort. Wenn Du vor das GOTO 950 noch ein GOSUB 210 setzt, passiert das erst nach beliebigem Tastendruck.
Aber in 1 kann ja das RANDOMIZE dann entfallen, das GOTO 20 ist ja Pflicht in jedem Programm und einmal reicht. Ich überschlafe es, teste es morgen auch und erstelle den (bzw. übernehme Deinen) abgeänderten Bascoder.
Ein kleiner Änderungswunsch für Dein Programm: es läuft ungebremst in das GOTO 950 hinein. Laut Vereinbarungen
wird mit dem Rückführen in den computereigenen Basic-Betrieb aber auch der Bildschirm gelöscht (das wird Michael bestimmt noch hineinarbeiten), der Baum ist also eigentlich augenblicklich wieder fort. Wenn Du vor das GOTO 950 noch ein GOSUB 210 setzt, passiert das erst nach beliebigem Tastendruck.
- 26.12.2023, 10:54
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Hat es auch schon jemand anders auf der Joyce ausprobiert? Bei Werner erschienen die Kugeln immer an den selben Stellen. Bei mir auch, wie ich feststellen musste.
Abhilfe schuf diese kleine Änderung:
Hier wird auf Tastendruck der Bildschirm gelöscht und der Baum wird neu gezeichnet, sofern nicht "e" oder "E" gedrückt wurde.
Als saubere Lösung müsste aber eine Änderung nicht im Programm, sondern im Bascoder erfolgen.
Hier
werden die Speicherzellen der Systemuhr ausgelesen, um als Grundlage für die Zufallszahlenerzeugung verwendet zu werden. Diese Speicheradressen stimmen offenbar nicht.
EDIT: Die vorher genannten Adressen sind offenbar falsch. Unter Basic sind die Stunden, Minuten und Sekunden auf &HFBF6, &HFBF7 und &HFBF8 gespeichert. Sie werden allerdings nicht durch RUN zurückgesetzt, sondern durch GOTO 20 – dort ist ein CLEAR dabei.
Hat jemand eine Idee?
Abhilfe schuf diese kleine Änderung:
Code: Alles auswählen
(...)
1090 GOSUB 210:IF IN<>69 THEN GOSUB 600:GOTO 1015
1999 GOSUB 100:GOTO 950
Als saubere Lösung müsste aber eine Änderung nicht im Programm, sondern im Bascoder erfolgen.
Hier
Code: Alles auswählen
1 RANDOMIZE (60*PEEK(64503!)+PEEK(64504!)) (...)
EDIT: Die vorher genannten Adressen sind offenbar falsch. Unter Basic sind die Stunden, Minuten und Sekunden auf &HFBF6, &HFBF7 und &HFBF8 gespeichert. Sie werden allerdings nicht durch RUN zurückgesetzt, sondern durch GOTO 20 – dort ist ein CLEAR dabei.
Hat jemand eine Idee?
- 25.12.2023, 16:57
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Schön gemacht, gefällt mir, Paul!
Vor allem, wie die Kugeln bei jedem Durchlauf woanders hängen:
Vor allem, wie die Kugeln bei jedem Durchlauf woanders hängen:
- 23.12.2023, 16:12
- Forum: Programmierung
- Thema: BASICODE in Java
- Antworten: 57
- Zugriffe: 17518
Re: BASICODE in Java
Dort solltest Du auch nix machen (ist Michaels Job), nur in den Zeilen ab 1000.
Sowohl REM als auch PRINT I wird ausgeführt und wenig später muss laut Reglement (der Wikipedia-Artikel ist auch sehr ausführlich und hilfreich) der Sprung zu Zeile 1010 erfolgen.
"Meine" Seite ist Bestandteil unserer Klub-Homepage und Werner kümmert sich dankenswerterweise schon mindestens zwanzig Jahre darum.
Sowohl REM als auch PRINT I wird ausgeführt und wenig später muss laut Reglement (der Wikipedia-Artikel ist auch sehr ausführlich und hilfreich) der Sprung zu Zeile 1010 erfolgen.
"Meine" Seite ist Bestandteil unserer Klub-Homepage und Werner kümmert sich dankenswerterweise schon mindestens zwanzig Jahre darum.