Hallo Besucher, der Thread wurde 44k mal aufgerufen und enthält 337 Antworten

letzter Beitrag von Boulderdash64 am

Optimierungsgrad KERNAL /BASIC - fiktiver Talk

  • Mike:
    Du sprichst von der Quadratwurzel und weiteren Beispielen.
    würdest du Prioritäten nennen können, die neben dem eingedampften Unterbau in die besagten 9 K (+7K Kernel) passen würden / sollten?


    bezgl. Wunschdenken: der Wunsch ist ja oft sprichwörtlich Vater des Gedankens und somit Ursprung mancher Innovation ... hast du dich bewusst mit Aussagen zur von mir ventilierten "Compo" zurückgehalten? ;-)



    BIF: wäre der String dann in einer Variablen (A$) oder auch als Literal einschließlich nichtdruckbarer Effekte ("()$/§)$H§$") (ohne die Null, denn die brächte was durcheinander) vorgesehen? oder gar im eingebetteten hexadezimalformat ? Wie schützt man diesen "ausführbaren" String davor , im Speicher verschoben zu werden bzw. wie stellt man sicher dass er nicht "relokatibel" sein muss?

  • Anstatt hier eine Lesehürde (TL;DR) nach der anderen zu produzieren, würde ich empfehlen mal dem Slogan der Firma NIKE zu folgen:


    http://bit.ly/1K75TAd



    ps: Ich hab' zwar neue Gehäuse, Tasten, Boards etc. gekauft... aber eine Story über einen Sack Reis in China wäre für mich interessanter
    als so ein gepimptes Basic!

  • Wie bereits angekündigt, kommt der Thread jetzt bis auf weiteres in die Laberecke. Wie AndroSID bereits beschrieben hat, so handelt es sich hier um viel heiße Luft und fiktives Gespräch ohne wirkliches Ergebnis. Für eine Neuplanung oder ein zukünftiges Projekt, wäre ich im Fall eines konkreten Codevorhabens bereit eine entsprechende Projektgruppe außerhalb der TOP 20 anzulegen. Bis dahin viel Spaß beim labern.


    Gruß
    Tom / Pentagon

  • @Stephan,


    Das String-SYS arbeitet mit der Stringadresse, die in der Stringvariablen gespeichert ist.


    Daher kann der String auch verschoben werden.


    Bei dem String-SYS muß der User eben nicht wissen wo der String im Speicher steht, das SYS A$ immer zur Adresse des Strings springt und sich die Stringadresse in der Stringvariblen befindet.


    Statt wie normal das MC-Programm in irgend einen Speicherbereich zu Poken, installiert man dann den Maschinencode Basic-compatibel in einen String.


    Und eine Basic-Befehlserweiterung kann man dann ganz einfach als Strings laden.


    Schönen Gruß.

  • Ich bin dafür, dass sinnlos inflationär eingesetzte Pseudo-Commands, wie alleinstehende Doppelpunkte, vom Editor/Compiler einfach wegoptimiert werden. :bgdev



    Bei dem String-SYS muß der User eben nicht wissen wo der String im Speicher steht, das SYS A$ immer zur Adresse des Strings springt und sich die Stringadresse in der Stringvariblen befindet.

    Aha. Also ein Pointer wie in C & co. Und dass man einfach mal so irgendwo in den Speicher wo eigentlich ein String stehen sollte, ein Programm ausführt und dazu einen Pointer eines Strings missbraucht, beunruhigt Dich überhaupt nicht?
    Ob das zu einer einfacheren, besseren Programmierung für einen 08/15 User mit einfachen Programmierkenntnissen positiv was dazu beiträgt?


    Warum überhaupt dieses SYS/POKE Gemurkse? Sollte es nicht darum gehen, die Programmierbarkeit und damit Zugänglichkeit eines solchen Systems zu verbessern?
    Die ganzen BASIC 3.5/4.0/7.0 etc. der anderen Commodore Rechner braucht es also demnach nicht, weil man alles in POKEs und SYS' simulieren kann?

  • Ob das zu einer einfacheren, besseren Programmierung für einen 08/15 User mit einfachen Programmierkenntnissen positiv was dazu beiträgt?

    Um den geht es nicht ausschließlich!
    Ich darf die Definition von Basic (..Dartmouth) in Erinnerung rufen:
    - der Einsteiger soll schnell zu Erfolgserlebnissen kommen, daher die reduktionistische Komponente;
    - doch auch der Fortgeschrittene soll Herausforderungen vorfinden und sie lösen können, eigenständig Erweiterungen vornehmen können.


    Beide Dimensionen sind Bestandteil von Basic. Von daher - und wenn es um eine mehrdimensionale Optimierung (Verbesserung) geht, ist die Sys-Instruktion Bestandteil des Gesamtpakets, die ganz genauso in die Betrachtung einbezogen werden kann.


    Wie armselig wäre die Rechnerlandschaft geblieben, wenn es beim Sprachumfang des Altair-Basic geblieben wäre: Ohne Poke, ohne Peek, ohne USR, und eben ohne SYS wären der VIC-II und der SID niemals breit bekannt geworden.


    Edit: ich finde den neuen Threadtitel unfreiwillig komisch - welcher Talk ist denn nicht "fiktiv"?

  • Um den geht es nicht ausschließlich!Ich darf die Definition von Basic (..Dartmouth) in Erinnerung rufen:
    - der Einsteiger soll schnell zu Erfolgserlebnissen kommen, daher die reduktionistische Komponente;
    - doch auch der Fortgeschrittene soll Herausforderungen vorfinden und sie lösen können, eigenständig Erweiterungen vornehmen können.

    Das Eine schliesst ja nicht das Andere aus. Man kann auch als Einsteiger ein BASIC verwenden, welches fortgeschrittene BASIC Befehle enthält, welche man dann vielleicht nicht braucht, wohl aber als Fortgeschrittener durchaus einsetzt. Ich finde es sogar besser, wenn der Fortgeschrittene dann mit brauchbarem Befehlssatz unterstützt wird. Dann kann er sich besser auf die Lösung der Problematik konzentrieren als mit irgendwelchen beknackten PEEKs/POKEs/SYS rumzuwurschteln.


    Wie armselig wäre die Rechnerlandschaft geblieben, wenn es beim Sprachumfang des Altair-Basic geblieben wäre: Ohne Poke, ohne Peek, ohne USR, und eben ohne SYS wären der VIC-II und der SID niemals breit bekannt geworden.

    Ähem....der Einsatz von POKE/PEEK/USR/SYS war eher eine Notwendigkeit unter dem schlechten BASIC V2 und weniger ein Enabler für VIC-II und SID. Die Bekanntheit wurde dann auch vor allem durch die Games vorangetrieben, welche diese C64 Chips auch ausnutzten....aber das war mit geschickter Assembler Programmierung und kaum wegen BASIC der Fall.


    [...] wenn es um eine mehrdimensionale Optimierung (Verbesserung) geht, ist die Sys-Instruktion Bestandteil des Gesamtpakets, die ganz genauso in die Betrachtung einbezogen werden kann.

    LOL, was für ein Satz. :D Was soll an Verbesserungen und Optimierungen "multidimensional" sein?

  • Mit Mehrdimensionaler Optimierung meinte ich
    https://de.wikipedia.org/wiki/Pareto-Optimierung
    ... was dort auch - synonym - als multikriterielle Optimierung bezeichnet wird.
    Möglichst mehrere, wenn nicht alle Dimensionen (Zeitbedarf, Platzbedarf ..) des Rom werden verbessert.


    Zitat: "mit irgendwelchen beknackten PEEKs/POKEs/SYS rumzuwurschteln." niemand verlangt von dir beknackte Peeks usw. zu nutzen - du kannst gern nach Belieben auch sinnvolle Peeks nutzen, oder es sogar bleiben lassen - das ist ganz freigestellt :)

  • Anstatt hier eine Lesehürde (TL;DR) nach der anderen zu produzieren, würde ich empfehlen mal dem Slogan der Firma NIKE zu folgen:

    Just do it. Ja. Kein Problem. Ich hab' schon diverse Erweiterungen zu Betriebssystemen (nicht nur CBM) und *einige* Programmiertools, Anwendungen und Spiele geschrieben und daher gibt's hier keinen Schuh den ich mir anziehe.

    ps: Ich hab' zwar neue Gehäuse, Tasten, Boards etc. gekauft... aber eine Story über einen Sack Reis in China wäre für mich interessanter als so ein gepimptes Basic!

    Wie neulich berichtet: Ein echter Hammer: In Lübeck ist ein Sack Reis umgekippt! :bgdev



    Du sprichst von der Quadratwurzel und weiteren Beispielen. Würdest Du Prioritäten nennen können, die neben dem eingedampften Unterbau in die besagten 9 K (+7K Kernel) passen würden / sollten?

    Nur die zwei *) bereits genannten: die olle GC und die Quadratwurzel. Wenn dann der zugehörige Byte-Code-Interpreter (etwa SWEET16) auch noch nach außen exportiert wird, prima.


    Ich hab' aber nun mal recht viel Spaß an Grafik-Anwendungen - und setze mal gar nicht voraus, daß dann noch "alles andere" laufen können muß, wenn so eine Erweiterung aktiv ist. Die kann gerne RAM-basiert ausgeführt sein.


    Was solcherlei Erweiterungen angeht, hab' ich hier schon einiges genannt. Ein paar interessante Kandidaten gab's da früher schon in den Magazinen zum Abtippen, z.B. GBASIC (RUN 6/86, extreme schnelle Linienziehroutine), I.M.L. (Interpreter Music Language, Compute mit 11/85 - gedacht zum Programmieren von Musikstücken, mit extra Disk-Toolkit), beide für den C64. Und MG + assozierte Bibliotheken für den VC-20. :D



    *) Edit: zweieinhalb. Die defekte Multiplikation sollte selbstredend ebenfalls repariert werden.

  • Ein richtig re-assembliertes KERNAL/BASIC gibt scheinbar wirklich nicht, oder? Mir ist zumindest noch keins untergekommen. Die bekannten ROM-Listings sind irgendwie auch nur recht rudimentär bzw. teils auch noch falsch, aber natürlich i. d. R. ausreichend brauchbar.

    Unlängst sind die Originalsourcen aufgetaucht. (Eine Anleitung, um den Kernal zu übersetzen gibt es auch.)

  • Unlängst sind die Originalsourcen aufgetaucht.

    Hatte ich mitbekommen. Wirklich schöner Fund. Hatte ich auch schon (teilweise) runtergeladen und so einiges angeschaut/angetestet. Schön oldscool alles.


    Eine Anleitung, um den Kernal zu übersetzen gibt es auch

    Da hab' ich mich zufällig die letzten zwei Stunden rum getrieben :) (war wohl irgendwo ein Link dahin...?). Kommt man immer schwer wieder von weg, auch wenn man das meiste schon mal gelesen hat 8o .


    Den KERNAL-Source-Code habe ich mir aber noch nicht ernsthaft angetan wegen PET und so. Wenn mal viel Lust und Zeit da ist...


    Trotzdem natürlich Danke (für den Thread).

  • Seid Ihr jetzt eigentlich dabei, nen neuen KERNAL zu schreiben?? Effektiver, schneller, mit neuen Funktionen? :D Und trotzdem 100% C64?