Was man braucht, um einen CPC in Assembler zu programmieren

  • Manchmal, da will man sich ein bisschen mit Dingen beschäftigen, die man so als normal-User nicht oft braucht, wenn man nicht gerade Spiele, Demo oder Sonsteincoder ist.
    Auf dem Mittwintermeeting 2012 kam die Idee auf, dass man ja mal so einen kleinen Assembler Grundkurs machen könnte. Und bevor man damit beginnt, muss man natürlich erst einmal die passende Software und Dokumentation heran karren, damit man dann auch gepflegt loslegen kann.


    Wer in der glücklichen Situation ist, eine ROM-Box zu haben - am besten eine, wo man die ROMS nicht mehr umständlich als EPROM, sondern easy per Software laden kann - der braucht definitiv Maxam 1.5 und Protext. Was? Ja! Maxam ist DER Assembler auf dem CPC (Ja, Maxam II gibt es auch, ist weniger bekannt, läuft unter CP/M und ist eher für den PCW ideal) und in der Version 1.5 auch schön in einem ROM verpackt.
    Protext ist ein Textsystem für den CPC und was für ein geiles! Im 80 Zeichen Modus hat man alles schön untr kontrolle und man kann direkt aus Protext raus den Assembler Maxam starten, so dass man schnell und optimiert arbeiten kann. Code in Protext schreiben, speichern, compilieren, starten, korrigieren, speichern, compilieren, starten, abschmieren, laden, korrgieren etc… Super Sache! Hat mir immer viel Spass gemacht.


    Man braucht also an Software für die ROM-Box:

    Maxam gibt es auch in kleineren Versionen mit und ohne inkludiertem Texteditor als Diskettenversion, genauso wie Protext auch. Findet man auf dem CPCSZENE-FTP


    An Literatur hilft am Anfang ein schönes ROM-Listing. Dort findet man alle System-Calls. So muss man zumindest für den Anfang die ganzen Räder nicht neu erfinden und kann auf bestehende Systemroutinen zurückgreifen um "Standard-Probleme" mit Standard-Lösungen zu beheben. Textausgabe, Diskettenoperationen… so Zeugs eben. Ein richtiger Coder würde zwar als erstes alles übern Haufen werfen und eigene Routinen für Textausgabe und Gedöns machen, weil das dann nochmal alles nen fetten Tacken schneller wird (manch einer kann mit optimierten Diskettenroutinen schneller seine Dateien lesen, als der Floppymotor die Scheibe drehen kann, sagt man) - aber für den Anfang reicht es sicherlich, wenn man sich mal daran erfreut ein geladenes A-Register als Character auf dem Screen auszugeben.


    Und das sollte man also haben und am besten ausgedruckt neben sich liegen zum stöbern:


    Manch einer wird nun "WIE KANNST DU NUR DIESE BÜCHER EMPFEHLEN" schreien. Aber hey.. deshalb gibt es unter diesem Beitrag einen Kommentar-Knopf, um seine eigenen Tipps und Tricks mit einfliessen zu lassen.


    Gehen wir also trotzdem einmal davon aus, dass wir uns all diese hübschen Dateien auf den Rechner geladen haben. Was nun? Nun. Wir sollten uns erstmal eine ROM-Box besorgen, oder? Sonst macht das alles a) keinen Spass (das Coden mit Maxam als zu ladende Software ist ein Greuel!) und b) dauert auch alles zu lang.


    Ich kruschtel mal in meiner Kiste was für ROM-Boxen man am besten nimmt. Vielleicht kann hier ja der eine oder andere mal nen netten Tipp abgeben, was man heutzutage nehmen sollte mit Links zu Adressen, wo man es beiziehen kan? Und ein anderer kann ggf. für die OldSkooler einen EPROM-Brennservice anbieten und Maxam und Protext jeweils als EPROM gegen Unkostenbeitrag anbieten?
    Und wenn jetzt noch der eine oder andere sagt: "AU JA, da helf ich mit, anderen Assembler beizubringen", dann könnte es passieren, dass wir hier den einen oder anderen netten Kurs und ein paar Sources für Einsteiger anbieten können. Wäre doch klasse, oder?

  • Deiner Ausstattungs-Übersicht ist kaum was hinzuzufügen. Außer vielleicht ein Tipp für diejenigen, die keine eigene CPC-Hardware ihr eigen nennen: Der Emulator WinAPE enthält einen eingebauten Assembler, der weitgehend MAXAM-kompatibel ist und direkt in den Speicher des (emulierten) CPCs assemblieren kann.Das könnte sogar für Nutzer ohne ROM-Box eine Alternative sein, denn bei jedem Systemabsturz den Assembler neu von Diskette zu laden, könnte zur Geduldsprobe werden.


    Ein Buch-Tipp für Anfänger hätte ich auch noch: Der "Z80 Maschinensprachekurs für den Schneider CPC" aus dem Heise-Verlag ist meiner Meinung nach etwas einsteigerfreundlicher als das Standardwerk von Rodnay Zaks (welches man sich zur Referenz trotzdem zulegen sollte) und geht speziell auf die Eigenheiten des CPCs ein, geht aber trotzdem sehr sparsam mit Hinweisen auf die Firmware um und beschränkt sich zunächst auf den reinen Z80-Prozessor.

    Nilquader of SPRING

  • Kann man den Thread in "Was braucht man, um einen CPC in Assembler..."


    Ich wollt gerade anfangen, meine Lieblingsausstattung zu tippen...
    KickASS z.B. Buchtipp: Assembler "Letzte Chance"
    aber öhh?


    Stefan

  • Nun es geht ja nicht um die Frage, was man braucht, sondern um die Aussage, was man braucht, denn was man braucht, wissen wir ja :)

  • Boah, wie geil! Mit Timing…


    Endlich eine Basis für das "Lustige OpCode-Raten".... ich nehme "7E" :)

  • Boah, wie geil! Mit Timing…

    Das wir als CPC-User leider nicht direkt brauchen können, sondern auf die nächste durch 4 teilbare Taktzahl erhöhen müssen. Aber ansonsten ist die Tabelle super. Liegt hier auch schon seit dem Mittwintermeeting 2010 auf meinem Schreibtisch.

    Nilquader of SPRING

  • durch 4 teilbare Taktzahl erhöhen


    Uiuiuiui.. Laufzeitstrecking zur CPUbeglückung :) Macht aber doch nix :)


    Ist übrigens schön in der Wiki beschrieben:


    Zitat

    Im CPC wird die Z80-CPU mit einer Taktfrequenz von 4 MHz betrieben, wobei jeder Maschinenbefehl auf Vielfache von 4 Zyklen gestreckt wird, um Zugriffskonflikte zwischen Hauptprozessor und Videoelektronik (Snowing) zu vermeiden. Da viele der meistverwendeten Z80-Befehle drei oder vier Zyklen erfordern, ist die durch dieses Verfahren entstehende Leistungseinbuße relativ gering. Es ergibt sich eine theoretische Rechenleistung von bis zu 1 MIPS, in praktischen Anwendungen sind es jedoch eher unter 0,5 MIPS.

  • Das wir als CPC-User leider nicht direkt brauchen können, sondern auf die nächste durch 4 teilbare Taktzahl erhöhen müssen. Aber ansonsten ist die Tabelle super. Liegt hier auch schon seit dem Mittwintermeeting 2010 auf meinem Schreibtisch.

    Auf die nächste durch 4 teilbare Taktzahl zu erhöhen, ergibt in manchen Fällen auch wieder ein falsches Resultat.


    Beispiel von arnoldemu:
    out (c),r -> laut Zilog = 4, 4, 4 ... das wäre also eine runde 12 und man würde denken, dass es dabei bleibt.


    Tatsächlich aber wird wegen der CRTC noch ein Taktzyklus eingeschoben, der dann dazu führt, dass dieser eine auf ganze 4 aufgebläht wird. Also: 4, 4, 4 wird zu 4, 4, 1, 4 wird zu 4, 4, 4, 4. Aus 12 ursprünglich Zyklen werden dann 16.


    out (n),a lässt sich andererseits dann wieder über die Daumenregel "Aufrunden auf ein vielfaches von 4" errechnen:


    Zilog: 4, 3, 4 wird zu 4, 4, 4 also 12 Taktzyklen.



    Zurück zum Thema:
    Ich greife gerne auf das Schneider CPC Systembuch zurück - http://k1.dyndns.org/Vintage/S…C%20Systembuch/index.html
    Ich hätt's gerne als richtiges Buch bei mir liegen. *neidigaufOctoateschau*

  • Nun, wir wollen natürlich die Heerscharen der CPCler zuerst einmal mit ihrer Original-Hardware und auch dem original OS vertraut machen, bevor wir uns in die große Welt der verschiedenen Erweiterungen und Ergänzungen stürzen wollen.


    Heute werde ich mal nochmal mit Bryce tickern, bezüglich des Schaltplans - und dann gucken wir mal wie weit wir mit unserem MegaFlash-Projekt kommen.


    Natürlich neigen wir alle hier zur Fachidioterie innerhalb des CPC-Dunstes. Der eine bastelt am liebsten in und mit seiner Emu-Umgebung, der nächste an und mit seinem ultimativen Betriebssystem, ich bin auch nur am Musik machen und rumblödeln. Aber vielleicht könnten wir auch in dem Bereich einmal über den Tellerrand gucken - aber im gleichen Geschirrset bleiben? Uns auf die BASICs besinnen. Erklär mir doch mal zum Bispiel, lieber FutureSoft, wie ich eine Diskettenroutine in ASM schreibe, ohne auf die Systemroutinen zurückzugreifen? Oder beginnen wir mit etwas leichterem.


    Wie schreibe ich mir meinen eigenen BB5A?! Was brauche ich als Hintergrundwissen? Welche Knowledge brauche ich dazu und wie fange ich es an?


    Wie male ich ein Bild für Overscan? Was brauche ich hier an Tools. Wie funktoniert und was ist Overscan eigentlich? Welche Logik steckt dahinter?! Wie kann es sein, dass ich den Border mit addressiert bekomme? Und wie genau funktioniert es in ASM?


    Das wären hilfreiche Beiträge. Einige davon haben wir im Bereich Programmierung ja schon gesehen. Danke hier an die jeweiligen Beitragsleister. Sofern die AMS-Sources etwas besser kommentiert wären, würden sie auch einem Laien wie mir helfen, zu verstehen, was da genau passiert.

  • Der Z80 Maschinensprachekurs aus dem Heise-Verlag beschreib übrigens wunderbar, wie du dir deinen eigenen BB5A bastelst, bevor überhaupt der BB5A vorgestellt wird. Wenn du was aus der Bryce-Ecke hörst, sag bescheid. Noch hab ich Zeit für Basteleien, in 10 Tagen oder so bin ich dann im Umzugsstress...

    Nilquader of SPRING

  • Nur mein lieber Quader, wo bekomm ich denn den Heise Kurs her?
    Link it!

  • Ich müsste scannen. Und das ist ein 150Seiten gebundenes Buch, das ich ungern zerschneiden würde. Also: Viel Arbeit! Aber ich kann ja mal eine Scan-Umfrage starten und es mit auf den Scan-Stapel legen....

    Nilquader of SPRING


  • Ein paar kleine Fehlerchen haben sich zwar eingeschlichen, [...]


    Wundert das irgendwen? Schau mal, welcher Verlag das ist...


    Ansonsten: Ja, gutes Buch. Gerade im Bezug auf die direkte Ansteuerung der Floppy-Hardware (speziell im CPC, ohne IRQ und DMA) allerdings doch ein bisschen knapp...

    Nilquader of SPRING

  • Hallo,


    ich bin neu hier im Forum und gerade auf diesen interessanten Thread gestoßen.


    ich selbst leite seit Herbst 2011 einen Z80-Assembler-Kurs an der Uni (im Bereich Medienwissenschaft, wo wir uns viel mit Programmierung von Analog- und Digitalcomputern beschäftigen und ich selbst ein Forschungsprojekt über frühe Digitalcomputer betreibe).


    Wir haben uns im Programmierkurs als Hardware-Plattform ebenfalls für den CPC entschieden - gerade auch wegen der sehr guten Literaturlage zum Gerät. Weil wir nicht für alle Teilnehmer einen Original CPC zur Verfügung stellen können (wir haben nur 4), programmieren wir in einer Emulationsumgebung. Als Emulator nutzen wir JavaCPC, weil er bereits einen Assembler eingebaut hat und auch sonst sehr gute Features bietet (Monitorprogramm, Möglichkeit zum Copy&Paste zwischen CPC-Emulator und "Außenwelt" usw.) Der Entwickler von JavaCPC freut sich immer über meine Erweiterungs- und Verbesserungsvorschläge und realisiert sie nicht selten noch am selben Tag!


    Die Basis-Literatur ist bei uns ebenfalls Zaks' Z80-Buch, sowie - wechselweise für Programmbeispiele - auch "Z80 Maschinensprache" von Peter Heiss und Dullin/Strassenburg "Das Maschinensprachebuch zum CPC" (letzteres enthält - DATA-Becker-typisch - nicht wenige Druckfehler, vor allem in den Listings sind die ärgerlich, laden aber zur Fehlersuche ein).


    Der Kurs läuft recht erfolgreich, wenn man bedenkt, dass sich Leute freiwillig und ohne spätere Anwendungsmöglichkeit mit derartig alter Materie beschäftigen. Wir sind 4-5 Teilnehmer, ab nächstem Semester dann sogar 10. Als einen "Berater" habe ich kürzlich Federico Faggin (den Gründer von Zilog, Erfinder des Z80 und des ersten Mikroprozessors überhaupt - Intel 4004) gewinnen können, dem wir Fragen bezüglich der Hardware und spezifischer Besonderheiten des Z80 ("Warum haben Sie das damals so gemacht?") stellen können.


    Ich würde mich freuen, auch hier hin und wieder in den Erfahrungsaustausch treten zu können.


    Ach ja: Falls hier jemand aus Berlin kommt und Interesse an der Teilnahme im Kurs hat, kann er sich gern bei mir melden.


    Stefan

    »It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.« (Edsger W. Dijkstra)


    Homespage| Computerarchäologie | Blog | Forschung

  • Nur mein lieber Quader, wo bekomm ich denn den Heise Kurs her?
    Link it!

    Ich habe den (und die meisten anderen CPC-/Z80-Assembler)-Bücher gescannt vorliegen.

    »It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.« (Edsger W. Dijkstra)


    Homespage| Computerarchäologie | Blog | Forschung

  • Ich würde mich freuen, wenn wir die Scans haben könnten. Gerne auch als Upload in das incoming-Verzeichnis von ftp.cpcszene.de

  • *pfeif*

    »It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.« (Edsger W. Dijkstra)


    Homespage| Computerarchäologie | Blog | Forschung

  • Gibt es ggf. Interesse daran, eine Art Grundkurs Z80-Assembler, den man z.B. in unserem LOAD-Magazin (http://www.load-magazin) verwenden könnte, zu veröffentlichen? Mit dem Hinweis, dass es vielleicht hier im Forum dann die Fortsetzung bzw. die ergänzenden Teile dazu gibt? Oder eben auch in Berlin im Kurs?

  • Für unseren Kurs habe ich im "Moodle"-System der Uni eine Art "Handbuch" angelegt; da wird jede Sitzung protokolliert - mit Programmbeispielen und auch den Fehlern und Problemen, auf die wir gestoßen sind. Sehr weit sind wir im letzten Semester noch nicht gekommen - den Befehlsvorrat haben wir jetzt komplett erarbeitet und müssten jetzt mal anfangen, kleinere Probleme in Programme zu verwandeln.

    »It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.« (Edsger W. Dijkstra)


    Homespage| Computerarchäologie | Blog | Forschung

  • Hier der korrekte Link zum Load-Mag: http://load-magazin.de


    Das werde ich auf jeden Fall abonnieren!

    »It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.« (Edsger W. Dijkstra)


    Homespage| Computerarchäologie | Blog | Forschung

  • letzteres enthält - DATA-Becker-typisch - nicht wenige Druckfehler


    Ich sag nur "80 Bit sind ein Terabyte"... laut Data Becker. Habe mir inzwischen angewöhnt, Data Becker Literatur nur noch in Ausnahmefällen zu verwenden. Wenn man sich auf die Information nicht verlassen kann, hilft es wenig. Meistens gibt es ja Alternativen.


    Toll, dass ihr noch was mit dem Z80 macht. Wir mussten 8051 lernen - mann, was ist das eine kranke Speicherarchitektur.


    freiwillig und ohne spätere Anwendungsmöglichkeit


    Wenn man eine CPU beherrscht, fällt der Umstieg auf einen anderen 8 oder 16-Bitter nicht schwer. Das hat schon seine Berechtigung. Wenn ich überlege, wie schnell ich dank meines Z80-Wissens mit dem 8051 und selbst mit dem MSP430 zurecht kam...

    Nilquader of SPRING

  • "80 Bit sind ein Terabyte"... laut Data Becker.

    Hast du dazu einen Quellennachweis, den ich gutheissen kann?
    gibt es noch mehr solche schöne Zitate? Ich hb noch ein Eckchen frei für "Retro-Witze" :D