Posts by Diddl

    Ehrlich gesagt verstehe ich nicht, warum das Spezial Bit (das 10 Bit) notwendig sein soll beim ROR.


    Zum einen ist der zusätzlich Takt (den es braucht um das Carry zurück an Bit 7 zu schreiben) ein großer Nachteil.


    Zum anderen ist es technisch nicht notwendig. Warum sollte man das Carry Bit nicht als Eingang zum Bit 7 durschalten können? Das Bit 6 wird auch vom Bit 7 gefüttert und gibt gleichzeitig seinen Inhalt an das Bit 5 weiter. Warum sollte das nicht gehen bei Carry zu Bit 7, - verstehe ich nicht???

    Schon bitter.

    Kauft einer 1976 einen Computer (oder SBC).

    Dann kommt Mitte des Jahres der ROR Befehl hinzu.

    Ende des Jahres gibt es einen verbesserten Kernal, der ROR verwendet.


    Nun kann der das Update auf den neuen Kernal nicht machen, weil seine 6502 CPU zu alt ist!!

    Aber sind die anderen Speicher-Bereiche nicht auch unter BASIC per POKE/PEEK erreichbar?

    Jein.

    Wenn das Banking der Erweiterung flexibel genug ist, dann schon.

    Aber wenn zum Beispiel das Banking dann das ROM weg zieht oder Speicherbereiche die das BASIC braucht, dann führen diese POKE Befehle ja zum Absturz.


    Aber meist langt ein Mini Assembler Code, den man zum Beispiel in DATA Zeilen ablegen kann.

    Damit kann man dann bequem mit dem erweiterten Speicher umgehen.

    Ich habe damit gearbeitet, da war ich noch ein Kid.

    Sowohl am PET als später auch am C64.


    Am PET habe ich einen 2 Pass Assembler entwickelt.

    Später habe ich den Assembler auf den C64 portiert.

    Mein HELP Modul hatte nur 4K und mein Assembler 3K.

    Deshalb habe ich das dann kombiniert: Help + Assem


    Später habe ich das HELP ersetzt durch eine eigene Befehlserweiterung und es wurde ExAss daraus (extended Assem).


    Vor einigen Monaten hat jemand HELP angeboten bei eBay.

    Aus Nostalgie musste ich zuschlagen.

    Das Zeugs liegt irgendwo im Keller.

    Ich kann am WE danach suchen ...

    Dieselbe Frage könnte man für entwickelte Hardware stellen ...



    Bei mir Zeit es sich in zwei Phasen :

    1. Phase 1 Entwicklung
    2. Phase 2 Support


    In Phase eins denke ich nicht an Verbreitung. Es ist hauptsächlich eigene Befriedigung das Ding zu entwickeln und zu bauen.


    In Phase 2 sehe ich bei mir selbst schon eine gewisse Befriedigung wenn es sich verbreitet und auch anderen Menschen Freude bereitet.



    Allerdings kommt es häufig nur zur Phase 2. Weil ich es nicht veröffentliche oder weil es gar nie fertig wird.


    Oft reicht es mir, wenn das Problem erforscht und gelöst ist. Es fällt mir schwer dann das bis zur Reife weiter zu führen. Da brauche ich etwas Druck von der Öffentlichkeit. Neue Themen üben einen zu starken Reiz aus auf mich.

    das ist ja eine tolle idee !! Hat das jemand schon probiert ?

    Nicht meine Idee.

    In dem verlinkten Video spricht der Vortragende davon.

    Anscheinend hat er das Ding auch gebaut ... :)


    Erinnert mich daran: Vortrag "Virtueller Speicher für den 6502" - Hans Franke - RETROpulsiv 9.0 (Augsburg).

    Könnte man wohl auch mit dem 6502 machen.

    Z80 hat damit deutlich weniger Probleme, wie ja insgesamt ein deutlich ausgefeilteres "industrietaugliches" Design, aber dadurch natürlich auch komplizierter in Assembler zu programmieren.


    Mehrere IRQ, also mehrere Hardware Vektoren wären natürlich ein großer Vorteil. Die 6502 ist für low cost ausgelegt. Man hat alles so billig wie möglich gemacht.


    Aber aus heutiger Sicht lässt sich auch dieses Manko sehr leicht beheben. Zumindest bei der neueren 65C02. Die signalisiert ja einen Vektor Ferch. Sehr einfach kann man da den Vektor durch eine Zusatz Hardware (IRQ Manager) anbieten, sodass die "richtige" IRQ Routine sofort automatisch angesprungen wird.

    Dafür ist zumindest der 6502 (z.B. durch seinen festen HW-Stack) denkbar schlecht vorbereitet (vom Z80 habe ich zu wenig Ahnung um das zu bewerten).

    Naja, prinzipiell gebe ich dir recht, jeder "TASK" benötigt einen eigenen HW Stack Bereich.




    Aber das hängt nun mal nicht von der CPU ab.

    Wie man auch in dem oben verlinkten Video sehen kann.


    Ein bisschen Hardware (10 bis 12 TTL Chips) und schon hat jeder Task seinen eigenen Zeropage und HW Stack, auch bei einer 6502.

    Der RAM Bereich wird eingeblendet, jeweils ein anderer für jeden Task.


    Im Video spricht er von 40µS für einen Taskwechsel.

    Das fällt kaum ins Gewicht beim ausführen von 10 oder 15 Tasks.



    Es gab ja alles schon vor 40 Jahren.

    Es wurde halt nur sehr selten genutzt.

    Vermutlich haben die meisten Anwender keinen Bedarf dafür gehabt.



    Wie auch immer, hätten sich MMU und Co durchgesetzt bei 8 Bitter, dann hätte sich die breite Einführung von 16 Bitter stark verzögert.

    Mal ehrlich: 8-Bit CPUs waren Spielzeug und nicht für richtige Computer gedacht. Die Leistung reichte eh nur für einen Task, und dass nur mit sehr schlankem oder gar keinem OS.

    Hardware-banging in Assembler war doch nötig, um überhaupt akzeptable Performance für irgendwas zu erreichen.

    Was will man da vor was und wem schützen?

    Entweder die Software läuft oder sie ist buggy und crasht. Dann gibt es ein Reset und die nächste Software wird genommen.

    Eine MMU für einen 1-4 MHz 8-Bit Computer ist so nützlich, wie ein Spoiler am Trabi.


    Du hast dir noch nie OS9 angeguckt, hmmm?


    Es gab 8 Bit Computer die Multitasking und Multiuser fähig waren, zum Beispiel der Positron 9000.

    Da konnten 8 Studenten daran arbeiten.

    Und das lief wirklich sehr flink und flüssig.


    Aber man muss gar auf solche High Tech Maschinen wie die P-9000 gucken.

    Der Tandy CoCo-3 hatte auch schon OS9.

    Ja das ist clever.



    Motorola hat was ähnliches gemacht für ihre 8 Bit CPU 6809.

    Allerdings mit erheblich mehr Aufwand.


    Motorola hat der 6809 eine MMU verpasst, die MMU 6829.


    Mit der MMU wird ein 6809 System extrem aufgeputscht:

    • physikalischer Adressraum von 2MB
    • sehr flexibles Banking (32 Pages zu 2KB)
    • Super User Modus
    • getrennte Adressräume einzelner Tasks
    • geschützte IO Bereiche
    • Ein User Task läuft in einer 64K Sandbox, wo er nicht raus kann


    Die MMU überwacht die Arbeit der CPU. Bei Reset oder Interrupt wartet die MMU bis die CPU die Register auf den User Stack gelegt hat. Bevor die CPU den Interrupt Vektor fetched schaltet die MMU auf die System MAP um. Der System User Modus wird aktiviert.


    Dadurch hat jeder User Task seinen eigene 64K Speicher MAP. Es wird kein einziges Byte verschwendet für OS Routinen oder Hardware Vektoren. Der User Task hat die vollen 64K für Daten und Benutzer Code. Das OS selbst und Buffer für Disk Zugriff sind vollkommen separiert.

    Tja, das versuche ich auch noch genau herauszufinden. Laut einem ehemaligen Bundespost-Techiker war das für das für das Wählprüfnetz vorgesehen. Es gab aber auch noch ein "Leben" nach den 12 Wählimpulsen, angeblich sogar bis 16.

    12 Impulse mal ganz sicher, schon wegen Raute (#) und Stern (*).


    Hatten die Amerikaner nicht noch zusätzlich Buchstaben?

    Oder verwechsle ich da was?

    Nun ja, so ein Design gibt es bereits in Form des T56.

    Vom Preis her dürfte der T56 wohl auch unschlagbar sein.


    Was beim T56 fehlt, ist nur eine Open Source Programmier Software.

    Aber auch da sind schon Ansätze vorhanden ...

    Ich bekomme ein Einschaltbild.

    Naja, das bedeutet, dass wahrscheinlich das FLASH und der SRAM funktionieren.


    Zum anderen schränkt sich der Fehlerkreis ein:

    • CPLD
    • 74LS245


    Wenn die Hardware funktioniert, dann fährt der VC-20 hoch, auch wenn im FLASH nichts gespeichert ist.

    Aber den Inhalt hast du ja kontrolliert ...