ZX81-IDE SW-Entwicklungsumgebung

ZX-Team Forum
Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 05.02.2012, 01:20

Ab sofort ist die aktuelle Version der ZX-IDE im ersten Beitrag dieses Threads zu finden, der auch gleichzeitig das Manual (Handbuch) repräsentiert.
An dieser Stelle informiere ich künftig nur noch über Änderungen und Erweiterungen der ZX-IDE. 8)

ZX81-IDE in der Praxis, Tipps & Tricks (auch für ZX80)



Hier der ursprüngliche Einführungsbeitrag:

Hier eine Basisversion der von mir entwickelten Entwicklungsumgebung für den ZX81.
Hier erstmal nur die WIN Version, falls jemand LINUX oder Kommandozeilen Version braucht, kann er sich ggf. hier im Thread oder per PN melden.
Gegenüber der letzten "Demoversion" ist diese hier nun auch tatsächlich zu gebrauchen. :mrgreen:

Features:
* Z80 Cross Assembler für WIN
* Multi-Window-Editor mit Syntax Highlighting
* Transfer von Source Files (die dann automatisch assembliert werden) oder auch beliebigen anderen .P oder .81 Files aus dem Dateisystem zum ZX81 über die Soundkarte
* Transfer des aktuell assemblierten bzw. zu assemblierendem File einfach mit F9
* Transfer anderer Files über F10
* Framework mit einem Dummy Basic Programm (1 REM Zeile für beliebig langen Assemblercode)

Zu einem späteren Zeitpunkt wird dann schrittweise auch das komplette ZX BASIC integriert, dann kann man damit auch reine BASIC Programme bzw. Mischprogramme mit BASIC und Assembler schreiben. Außerdem will ich noch verschiedene weitere Entwicklungstools integrieren.

Dokumentation folgt auch noch später, im Moment braucht man erst mal nur CTRL-F9 (zum Assemblieren), F9 zum Übertragen und F10 zum Übertragen von Binaries (.P oder .81 Files). Ansonsten verweise ich mal auf dieses Manual vom Flatassembler, wobei das sich schwerpunktmäßig auf x86 bezieht.
http://flatassembler.net/docs.php?article=manual
Einige Sections, insbesondere zum Thema Makros sowieso "sinnvolle" Directives (also brauchbar im Zusammenhang mit Z80 Umgebungen) sind natürlich gültig und nutzbar. PHASE oder DEPHASE gibt es derzeit nicht, entsprechende Aufgaben sind über ORG zu lösen wie bereits an anderer Stelle geschrieben. :wink:

Zur Technik: Der Assembler basiert auf http://flatassembler.net sowie auf die Tape Schnittstelle von Simon Holdsworth (in Java geschrieben). Aus diesem Grunde wird prinzipiell JAVA benötigt, der Funktionsaufruf benutzt JAVAW.EXE und das sollte im Suchpfad des Rechners zu finden sein, sofern JAVA installiert ist. Ggf. muss man halt aktuelle JAVA Version downloaden und installieren. Es ist ein Dummy Programm YYY.P dabei, welches aus zwei sinnvollen REM Zeilen besteht :
1 REM 123
2 REM 456
sowie ein ZX81DEMO.ASM, welches ein simples Framework bietet mit einer Standard Datenstruktur und einer REM Zeile. Zwischen asmcode_st: und asmcode_end: kann beliebiger Z80 Assemblercode geschrieben werden.

Ansonsten wünsche ich dem Einen oder Anderen viel Spaß damit. Ich werde dann jetzt endlich damit meine USB Entwicklung weitermachen können, da ich nun Assemblerprogramme schreiben UND über die Tape Schnittstelle übertragen kann. Auf der Zeddy Tastatur mag ich nicht viel mehr eingeben als ein RUN oder LOAD "". Und vielleicht noch ein RAND USR. Ganz sicher werde ich aber keine längeren Programme über die Tastatur eingeben. :mrgreen:
Zuletzt geändert von PokeMon am 25.01.2013, 18:45, insgesamt 3-mal geändert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 05.02.2012, 09:48

Wie sieht es mit ZX80 aus?
Werden auch ZX80 Dateien per Soundkarte an den ZX80 Ear Eingang übertragen?
Oder brauche ich dann dafür eine neue IDE?
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 05.02.2012, 14:15

Momentan geht ZX80 nicht, weil ich dafür ein anderes Übertragungsprogramm brauche oder dieses irgendwie anpassen muss. Der o.g. Tapeloader den ich einsetze, macht eine syntaktische Prüfung der ZX81 Datei (weil er die z.B. auch listen kann, also den Quellcode dazu anzeigen kann). Das Laden von ZX80 Programmen wird daher über den Tapeloader verweigert, weil die ZX80 Datenstruktur ein wenig anders ist. Vielleicht kann man den Loader auch überlisten nur habe ich derzeit keine Zeit in der Richtung weiterzumachen. Eine neue IDE brauchts dafür sicher nicht, wenn dann einen neuen Tapeloader. Vielleicht gehts irgendwann auch mal mit ZX80 - kann ich aber derzeit nicht versprechen. :wink:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
bbock
User
Beiträge: 347
Registriert: 01.10.2010, 22:06

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von bbock » 05.02.2012, 14:23

Das ist eine prima IDE, gefällt mir wirklich gut! Danke, dass du deine Arbeit mit uns teilst.

Den Sinn des Demo-Programms habe ich nicht ganz verstanden :wink: Ich werde mal ein erstes kleines Assembler-Programm mit der deiner IDE realisieren, sobald ich wieder ein bisschen Zeit für's Hobby habe. Bisher habe ich mehr mit dem z88dk gemacht, d.h. mit C als primärer Sprache und einigem an Assembler-Optimierung.

Gruß
Bernd

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 05.02.2012, 14:24

Vielleicht noch ein Hinweis zur Übertragung über die Tape Schnittstelle:

1. Der Eingang ist die mit EAR beschriftete Buchse am ZX81 (und nicht die MIC Buchse wie man meinen könnte).
2. Der EAR Eingang braucht ordentlich Power. Ich habe die beste Erfahrung mit 75% Lautstärke gemacht.
3. Ich bin über den EAR Ausgang meines externen PC Soundsystems gegangen. Das müsste/sollte prinzipiell auch über den Ausgang der Soundkarte gehen, habe ich aber nicht explizit getestet. Habe noch immer kein langes Kabel. Da fällt mir ein, dass ich sowieso mal wieder eine Reichelt Bestellung aufgeben wollte. :D
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 05.02.2012, 14:25

bbock hat geschrieben:Den Sinn des Demo-Programms habe ich nicht ganz verstanden :wink:
Das ist zugegebenermaßen etwas sinnfrei aber es funktioniert. :mrgreen:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
siggi
User
Beiträge: 2005
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim
Kontaktdaten:

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von siggi » 15.02.2012, 10:42

Paul hat geschrieben:Wie sieht es mit ZX80 aus?
Werden auch ZX80 Dateien per Soundkarte an den ZX80 Ear Eingang übertragen?
Oder brauche ich dann dafür eine neue IDE?
Hallo Paul,
also nur an der Sound-Geschichte sollte das alles nicht scheitern.
Warum hängst Du Dir nicht einfach ein VDRIVE2 und ein E(E)PROM an den ZX80 an und modifizierst Olivers romfähigen USB-Treiber, so daß er auf dem ZX80 läuft? Dann könntest Du die mit der IDE erzeugten ZX80 Programme per USB-Stick in den ZX80 laden.

Oder Du gehst gleich einen Schritt weiter und bastelst Dir auch eine Netzwerk-Karte für den ZX80. Die Hardwareanbindung wäre wie beim ZX81 möglich. Und der größte Teil der Zeddynet-Software (Socket.lib und Zeddynet.lib) würde auch mit dem ZX80 laufen, nur die "Benutzeroberfläche" NFM müßte an den ZX80 angepaßt werden, da Keyboard, Konsole und Display-Routinen halt für den ZX81 nur passen.
Da wäre es dann am sinnvollstem, bei den Z88DK-Entwicklern als "Feature Request" den ZX80 als "neues Target" anzufordern. Dann könnte man ganz einfach die Zeddynet-Programm auch auf den ZX80 portieren.
Hier kann man Wünsche an die Z88DK-Entwickler einkippen:

http://www.z88dk.org/forum/viewforum.php?id=8

Es geht also auch ohne die alte Pieps-Schnittstelle ...

Gruß
Siggi

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 15.02.2012, 11:12

Hallo Siggi,
danke für die Vorschläge. Zugreifen kann ich über mein ZXPand für ZX80 :mrgreen: schon jetzt problemlos .
Vdip1 steht bei mir noch in der Pipeline, möchte dieses aber immer noch parallel ansprechen um das ganze serielle umwandeln zu sparen. Mir widerstrebt es alles hin und her umwandeln zu müssen wenn die parallele Variante auch existiert und billiger ist. Bin da leider zeitlich noch nicht weitergekommen.
Eine Netzwerkkarte 8) steht sicher auch noch für ZX80 und ZX81 auf dem Programm.

Mir geht es hauptsächlich darum den ZX80 nicht zu vergessen. Ich bin ja nun mal mehr ZX80 als ZX81 Fan :oops:
Wenn man bei dem Design oder der Umsetzung gleich auch an den ZX80 denkt kostet die ganze Sache nur Minuten, wenn erstmal alles implementiert ist, Wochen.
Die Tapeschnittstelle ist dafür ein super Beispiel. Hätte Pokemon statt dem jetzt verwendeten Algorithmus den von Holmatic verwendet wäre ZX80 eben schon mit drin, und der Aufwand wäre bestimmt nicht höher gewesen, da auch dieser bereits im C-Source vorliegt.
Wenn die ASM-Makros für die erste Remzeile usw. auch für ZX80 vorlägen wäre ein weiterer Hinderungsgrund für ZX80 Programme weg.
Es ist halt schade das der ZX80 IMMER vergessen wird :x . Es gäbe mit einer guten IDE sicher auch mehr Programme für ZX80. Wenn es irgendwo eine Auswahl gibt "Erzeugen für ZX81 oder ZX80" wählt vielleicht jemand mal aus Interesse den ZX80 aus.
Ich versuche ja bereits meinen Teil zu den ZX80 Programmen beizutragen. Deshalb die ZXPand Anpassung mit dem ROM von mir. Es wäre halt schön wenn ich nicht der einzige wäre der an den ZX80 denkt. Die ZX80 stehen halt leider meist in der Vitrine statt auf dem Schreibtisch. Die darf man aber auch anfassen :D

Ich hoffe halt immer noch das der stete Tropfen den Stein höhlt. Denn die Hoffnung stirbt zuletzt.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 15.02.2012, 11:16

siggi hat geschrieben:Hier kann man Wünsche an die Z88DK-Entwickler einkippen: http://www.z88dk.org/forum/viewforum.php?id=8
Darf man da nur Wünsche äussern oder kann man aktiv mitwirken? Werden deine LIBs mal in den Standard übernommen?
ZX80 C-Programme mit stabilem Bild ohne NMI wäre schon eine Coole Sache :wink:
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
siggi
User
Beiträge: 2005
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim
Kontaktdaten:

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von siggi » 15.02.2012, 11:53

Paul hat geschrieben:
siggi hat geschrieben:Hier kann man Wünsche an die Z88DK-Entwickler einkippen: http://www.z88dk.org/forum/viewforum.php?id=8
Darf man da nur Wünsche äussern
Darauf habe ich mich bisher beschränkt und oft wurde mein Wunsch erhört ..
oder kann man aktiv mitwirken?
Das habe ich bisher nicht vorgehabt, den "Compilerbau" hat mich noch nie interessiert. Frage dort einfach mal nach. Da schon mehrere Entwickler den Z88dDK entwickeln, ist es wohl nicht ausgeschlossen.
Werden deine LIBs mal in den Standard übernommen?
Das wäre denkbar, aber ich habe noch nicht danach gefragt.
ZX80 C-Programme mit stabilem Bild ohne NMI wäre schon eine Coole Sache :wink:
Upps, das Feature wäre wriklich ein harter Brocken und vermutlich ein völlig neuer Compiler, denn Taktzyklen zu zählen macht bisher wohl kein Compiler.

Also am besten bei den Z88DK-Entwicklern man "anklopfen", was die für machbar halten.

Gruß
Siggi

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 15.02.2012, 12:09

siggi hat geschrieben:Upps, das Feature wäre wriklich ein harter Brocken und vermutlich ein völlig neuer Compiler, denn Taktzyklen zu zählen macht bisher wohl kein Compiler.
@Pokemon
Wäre das Taktzyklenzählen, z.B. zwischen zwei Labels, eine erweiterbare Sache für deine IDE?
Wäre online super, ginge aber zur Not auch im List-file

Das würde NMI-freie, bildstabile Programme für den ZX80 extrem erleichtern.
Und dafür macht man ja einen eigenen Assembler, um ihn an eigene (oder die der Kameraden :?: ) Bedürfnisse anzupassen :D
Interessant wäre auch eine Funkton "auf eine bestimmte Taktzyklenzahl auffüllen" (und dann wieder als Erweiterung: dabei so wenig Bytes wie möglich zu verwenden :D)
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 15.02.2012, 16:48

Hallo Paul,

Danke für Deine Anregungen.
Paul hat geschrieben: @Pokemon
Wäre das Taktzyklenzählen, z.B. zwischen zwei Labels, eine erweiterbare Sache für deine IDE?
Wäre online super, ginge aber zur Not auch im List-file
Ja natürlich wäre das machbar und könnte mir auch gut vorstellen, dass entsprechend zu erweitern. Es fehlt ja auch noch das Listing. Da ist prinzipiell ein Modul vorhanden, welches aber separat in FASM eingebunden werden muss und ich weiß auch noch nicht, ob die Ausgabe ohne Anpassungen brauchbar ist. Werde voraussichtlich nächste Woche Zeit haben, an der IDE weiterzumachen. Den ZX80 habe ich übrigens nicht vergessen, ich habe aber selbst auch nicht so einen Rechner. Hätte aber Interesse daran auch damit zu arbeiten. Über Ebay wurde bislang noch keiner angeboten. Vielleicht hast Du einen zu verkaufen ?

Was die Soundausgabe angeht, das mit dem implementierten JAR war für mich einfach die einfachste nicht zeitaufwändige Lösung, sozusagen ein erster Schritt. Der Typ, der das mal entwickelt hat, hat mir übrigens mittlerweile per Email geantwortet. Er findet das ganz toll, dass jemand seine Tape Utilities benutzt, hat selbst momentan aber kaum Zeit für das Hobby. Ich habe mal angefragt, ob man die Syntax Prüfung der zu übermittelnden Daten ausschalten oder überspringen kann, vielleicht antwortet er ja und hat eine Idee, vielleicht würde er mir auch das Java Source schicken. Das habe ich angefragt, ist natürlich seine Sache ob er das preisgeben will oder nicht.

Natürlich ist es einfacher ein fertiges Programm zu starten als neuen Prozess, darum mögest Du mir das bitte nachsehen. Das hatte rein kapazitive Gründe damals. Ich gehe oftmals den Weg des geringsten Widerstandes. :mrgreen:

Natürlich kann ich auch die Software von holmatic integrieren, wenn es in C geschrieben ist, könnte man es natürlich auch compilieren und als DLL einbinden/aufrufen oder ich schaue mir an, welche WIN Funktionen er darin aufruft. Das käme mir auch aus anderem Grunde entgegen, weil ich nämlich noch gerne einen Fast Loader implementieren möchte. Ich denke der könnte so mit 5/10kHz Frequenzen arbeiten und eine Downloadgeschwindigkeit von etwa 7,5 kBit resp. 1 kByte/Sekunde erreichen. Das Gegenprogramm für den ZX81 (oder auch ZX80) könnte man fest hinterlegen und auf Knopfdruck einmal vorab runterladen.

Vielleicht könntest Du insofern mitwirken, als Du mir den entsprechenden Link zu der holmatic Sound Ansteuerung in C nochmals in diesen Thread postest. Dann schaue ich mir das nächste Woche auf jeden Fall an. :wink:
Zuletzt geändert von PokeMon am 25.01.2013, 18:39, insgesamt 1-mal geändert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 15.02.2012, 18:51

Hi Karl
Ich besitze leider nur einen Original ZX80, eine Replika und einen amerikanischen Nachbau der nicht originalgetreu ist.
Da ich jeden davon in unterschiedlichen Konfigurationen betreibe möchte ich keinen davon abgeben.
Die Replika ist auf Basis der Folien von Grant Searle. Den kann ich empfehlen. Es ist fast kein Unterschied festzustellen.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 04.03.2012, 14:59

*** Update ***

So nun habe ich den WAV Algorhythmus selbst geschrieben, nach den Vorgaben von
http://nocash.emubase.de/zxdocs.htm
zum Thema Cassette Signals.

Signalerzeugung:
Zur technischen Realisierung war mir der converter von holmatic eine gute Hilfe, insbesondere weil ich offenbar den Filenamen vergessen hatte zu übertragen bzw. in das WAV File zu packen und beim letzten Character Bit 7 zu setzen. Naja so eine Kleinigkeit kann im Eifer des Gefechts schon mal passieren. :mrgreen: Erst dachte ich, es liegt an meiner Samplefrequenz. Die meisten Loader arbeiten mit 22050 Hz als Sample Frequenz, die aber eigentlich nicht ideal ist. Denn so ein Pulse besteht aus einer 150us langen High und einer 150us langen Low Phase, nach den Pulsen kommt eine 1300us lange stille Phase. Ideal wäre daher eine Granularität die alle 3 Längen sauber abdeckt, das wäre 50us bzw. 20000 Hz Sample Frequenz. Sofern man mit 22050 Hz arbeitet, muss man nämlich gelegentlich "Streckbytes" einschieben, da sonst ein Pulse nicht 150us lang wäre sondern nur 136us. Und damit kommt der Loader vom ZX81 aus dem Tritt, die Pulsefolge wäre zu schnell. Aufgrund des bis dahin nicht bekannten Fehlers mit dem Dateinamen bin ich dann auch zu der Standard Sample Frequenz übergegangen, was aber gar nicht notwendig gewesen wäre. Nun arbeitet mein Loader wieder mit 20000 Hz wie vorgesehen und hört sich etwas "tiefer" an als andere Loader. Der ZX81 kommt damit aber wunderbar klar.

Signalstärke
Auch hier habe ich ein bischen experimentiert. Ausreichend ist ein Signal mit etwa 1,6 Volt SS, 1,2 Volt hat bei mir nicht mehr funktioniert, nach oben eigentlich auch kein Problem da das Signal sowieso digital ist. Allerdings habe ich nicht so starke Verstärker genutzt, dass es aus dem Zeddy raucht. :mrgreen: Nach Messungen liefert meine Soundkarte sowohl über Line Out als auch über den Kopfhörerausgang genügend Signalstärke für den Zeddy. 75% Lautstärke Einstellung (ca. 2 Volt SS) reicht vollkommen aus. Ich habe eine Realtek HD in meinem Desktop PC. Keine Ahnung wie das bei Notebooks aussieht. :shock: Muss man halt mal testen. Übrigens ist das Signal, was aus dem Zeddy rauskommt (MIC) absoluter Schrott. Dürften nicht mehr als 10-20 mV sein, welches im Rauschen des Signals kaum auffällt, auf jeden Fall nicht triggerbar ist. Kein Wunder, dass das Speichern und Laden mit Kassette früher immer häufig fehlgeschlagen ist.
IMG_4708k.jpg
IMG_4708k.jpg (167.26 KiB) 9971 mal betrachtet
Sonstiges
Die Java Engine als auch das JAR vom letzten ZIP wird nicht mehr benötigt. Die Software erstellt eine temporäre WAV Datei die dann in der WIN Version mit "PlaySound" abgespielt wird. Das kann man asynchron tun, ich habe mich aber für die synchrone Version entschieden. Dabei ist das Programm bis zum Ende der Übertragung geblockt aber man kann dann den Sound auch mal abbrechen wenn man sich vertan hat und den höllenden Lärm abstellen will. :mrgreen: Da der Inhalt des P Files (oder O Files) nicht mehr geprüft wird, lassen sich damit genauso auch ZX80 Dateien übertragen. Allerdings konnte ich den Empfang mangels ZX80 nicht wirklich testen. Ich bitte daher an dieser Stelle Paul die Funktion mal zu prüfen, Du hast ja auch genau das bei der letzten Version moniert. Wie vorher kann man sowohl das aktuelle Programm mit F9 direkt übertragen als auch über F10 (oder im RUN Menü) eine beliebiges anderes File übertragen oder ein beliebiges File in eine WAV Datei konvertieren. Optional gibt es da auch noch eine Einstellung "Auto Create WAV", es wird dann automatisch beim Kompilieren ein WAV File erstellt.

Assembler Entwicklung für ZX81
Das ZX81DEMO.ASM und die Includes wurden ein "wenig" (die Betonung liegt hier mehr auf wenig :mrgreen: ) überarbeitet und so erhält das Programm neben der Dummy REM Zeile mit folgendem Assemblercode auch noch eine folgende PRINT USR 16514 Zeile (hard codiert) sowie eine Demo-mäßige dritte REM Zeile. Hier muss ein echter BASIC Interpreter integriert werden, dazu hatte ich noch nicht die Zeit. Es gibt aber jetzt auch eine Autoloader Einstellung
; AUTOLD EQU noauto_load ; can be auto_load or noauto_load
AUTOLD EQU auto_load ; can be auto_load or noauto_load
die man einfach entsprechend auskommentieren kann. Außerdem kann man in den Bildschirmspeicher (D-FILE) einen beliebigen Text unterbringen, z.B. einen Copyright Hinweis, der nach dem Laden angezeigt wird aber nicht Bestandteil des Programms ist. Also einfach mit CLEAR gelöscht werden kann. Allerdings fehlt hier noch die Zeichensatz Konvertierung. Die kommt dann in den nächsten Wochen zusammen mit dem BASIC Interpreter. :wink:

Ansonsten wünsche ich viel Spaß mit dem überarbeiteten Tool. Achja Fastloader kommt auch in Kürze. Die Standard Geschwindigkeit ist derzeit ca. 38 Byte /s - ich denke das kann ich mindestens auf 3 bis 4kByte/s hochbringen, eventuell auch noch ein bischen mehr. Wird sich zeigen.
Zuletzt geändert von PokeMon am 25.01.2013, 18:40, insgesamt 1-mal geändert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
bodo
User
Beiträge: 290
Registriert: 14.02.2007, 17:21
Kontaktdaten:

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von bodo » 04.03.2012, 21:51

Zur Signalerzeugung:
Nachdem ZX80LOAD und ZX81LOAD bei mir immer funktioniert haben, kann ich behaupten, dass die Pulse nicht genau 2*150µs lang sein müssen. Die Zeddies akkumulieren die High-Zeiten und entscheiden dann bei der Pause am Bitende, welches Bit es war. Daher konnte ich auch eine simple serielle Schnittstelle zum Erzeugen benutzen. Sie wurde auf 4800baud eingestellt, mit 8 Datenbits, ohne Parität und mit 1 Stoppbit. Um ein 0-Bit zu erzeugen, wird ein Byte 0xF5 gesendet, und für ein 1-Bit werden zwei Bytes 0x55 und 0xF5 gesendet. Die High- und Low-Zeiten betragen dann 1/4800baud = 208µs, die Pause 1,04ms. Da geht, weil beim 0-Bit nur 3 Pulse kommen und beim 1-Bit 8 Pulse.

Zum Pegel bei SAVEn:
Der Ausgang MIC beim Zeddy wurde ja damals in den Mikrofoneingang gestöpselt. Und dieser ist bei Kassettenrekorden höllisch empfindlich, weil die damals üblichen dynamischen Mikrofone so wenig Pegel hatten. Deshalb ist im Zeddy auch der krasse Spannungsteiler eingebaut: 1MOhm||47pF auf 1kOhm||47nF. Hier gibt es zwei schnelle Lösungen: den Spannungsteiler ändern/deaktivieren, oder einen Mikrofoneingang am PC probieren - sofern der nicht nur hochpegelige Quellen voraussetzt.
B0D0: Real programmers do it in hex.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 05.03.2012, 01:19

bodo hat geschrieben: Nachdem ZX80LOAD und ZX81LOAD bei mir immer funktioniert haben, kann ich behaupten, dass die Pulse nicht genau 2*150µs lang sein müssen. Die Zeddies akkumulieren die High-Zeiten und entscheiden dann bei der Pause am Bitende, welches Bit es war. Daher konnte ich auch eine simple serielle Schnittstelle zum Erzeugen benutzen.
Ich habe im Detail nicht geprüft, wie die LOAD Routine im Zeddy konkret arbeitet und welche Toleranzen zulässig sind. Betreffend der Realisierung habe ich mich an die o.g. Hardware/Software Beschreibung http://nocash.emubase.de/zxdocs.htm gehalten. Dort wurden die Dauer der Pulse und Pausen genannt. Die Dokumentation (vorausgesetzt sie ist richtig, zumindest funktioniert sie) spricht aber von 4 bzw. 9 Pulsen für 0 und 1. Du schreibst von 3 und 8 Pulsen. Auch ist die Angabe der Pause signifikant unterschiedlich (1,3 versus 1,04ms). Ich weiß nicht was richtig ist, auf jeden Fall funktioniert es wenn ich mich an die o.g. Doku halte. Auch Oliver (holmatic) hat in seinem WAV Creator offensichtlich entsprechende Füll Bytes verwendet, um die etwas zu kurze Dauer von 3*45us bei 22050 Hz Sampling Frequenz zeitweise auszugleichen.

Bei der Realisierung des FAST Loaders werde ich den genauen Ablauf der LOAD Routine aber sowieso mal unter die Lupe nehmen.

Zum Signalpegel bei SAVE: Im Prinzip ist mir das schnuppe was da rauskommt, ich halte 5mV für sehr wenig und ziemlich störanfällig. Meine eigenen Erfahrungen aus der Vergangenheit und die vieler Zeddy User mit handelsüblichen Kassettenrecordern bestätigen meine These. Das war nur so eine Randbemerkung. :mrgreen:

Für die andere Übertragungsrichtung verwende ich dann mein USB Interface. :wink:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 13.03.2012, 00:00

So, mal wieder eine neue Version der IDE. Die hat jetzt einen FASTLOADER integriert, mehr dazu weiter unten. Erstmal die wichtigen Dinge. :mrgreen:

Beim Überarbeiten des FASM instruction set und Portierung auf den Z80 Prozessor sind versehentlich einige nicht ganz unwichtige directives verschwunden. Bereits in der letzten Version habe ich das ORG directive wieder integriert sowie das IF directive für Verwendung in Makros. Sowas fällt halt erst auf, wenn mans braucht. :wink: Bei der neuen Version sind jetzt noch nach systematischem Durchsuchen die folgenden directives wieder verfügbar:

ALIGN, LABEL, TIMES, REPEAT, BREAK, LOAD, STORE, VIRTUAL, DISPLAY, ERR

Falls Jemandem auffällt, dass weitere wichtige Instructions fehlen dann ggf. bitte melden und nachfragen. PHASE und DEPHASE gibts so nicht, diese Funktionen sind mit ORG abbildbar. Vielleicht schreibe ich mal ein Makro bei Gelegenheit. Damit müsste das vielleicht automatisierbar sein.

Ich habe außerdem das Feature AUTOLD (Autoload) in AUTORUN umbenannt. Ist zwar nur eine Konvention / Name aber er trifft die Funktion besser. Weil ja nicht wirklich was automatisch geladen sondern nur automatisch gestartet wird. Damit sich jetzt nicht jemand einen Wolf sucht falls was nicht mehr geht was vorher ging. Aber sooo viel dürfte damit auch noch nicht gearbeitet worden sein. Das Feedback von Paul, ob die Programme für den ZX80 erfolgreich geladen werden steht noch immer aus. So ist das, wenn man nach Features ruft, das verpflichtet auch mein lieber Paul. :mrgreen:

So kommen wir nun zum Kern, dem Fastloader. Die ganze Sache war deutlich komplizierter als ich dachte und konnte mit der aktuellen Version nicht ganz den Datendurchsatz erreichen, den ich mir vorgestellt hatte. Der Grund liegt zum Einen in der Verarbeitungsgeschwindigkeit des Zeddy (selbst im FAST Mode), zum Anderen in einem besonders effizienten Ladecode. Es ist daher eine Kompromisslösung, die aber immerhin ca. 1kByte/Sekunde erreicht. Die normale LOAD Routine im Zeddy kommt auf ca. 38 Byte/Sekunde als Vergleich, der FASTLOADER ist also um den Faktor 25 schneller. Die Samplingrate konnte ich nur auf 30 kHz erhöhen. Das Besondere aber ist in dieser Version, dass der Loader 1k kompatibel ist, also keinen Speicher im Zeddy belegt, zumindest keinen den man temporär während des Ladevorgangs benötigt. Mit mehreren Tricks habe ich erreicht, dass der FASTLOADER Code mit einer Länge von insgesamt 72 Bytes in dem ungenutzten 65 Byte Bereich für den Printer Buffer und MEMBOT läuft. Wen's interessiert, der Code liegt bei.

Es gibt im Menü RUN nun eine zusätzliche Option Fastloader, die man An- oder Ausklicken kann (der Status wird natürlich in der INI gespeichert). Übrigens habe ich die INI im ZIP nicht mitgepackt, die erstellt FASM sowieso selbst neu. Ansonsten müsste man einen fest hinterlegten INCLUDE Pfad anpassen, so entfällt dieser Schritt. Man kann also wählen, ob man die Dateien im normalen oder im FAST Modus übertragen will. Außerdem funktioniert weiterhin die Funktion AutoCreateWav (wenn aktiviert). Der FASTLOADER funktioniert 2-stufig, es ist daher keine vorherige Installation des FASTLOADERS auf dem ZX81 notwendig. Man tippt einfach auf LOAD "" (ohne Dateinamen) und wählt die Geschwindigkeit. Im FAST Modus wird zunächst das Loaderprogramm mit normaler Geschwindigkeit geladen (dauert leider ca. 7 Sekunden aufgrund der lahmen Grundgeschwindigkeit), danach erfolgt eine kurze Pause, anschließend wird das gerade assemblierte Programm mit dem FAST Algorithmus übertragen mit der Maximalgeschwindigkeit. Alternativ kann auch ein von der Festplatte gewähltes Programm übertragen werden oder auch nur die Funktion CreateWav zum Erstellen einer WAV Datei.

Die erstellte WAV Datei funktioniert mit jedem handelssüblichen ZX81 ohne Extras, kann also auch verteilt werden. Ich habe mal einen Test gemacht mit dem AY Programm von Sascha, die 8 kByte werden in insgesamt ca. 17 Sekunden übertragen (statt über 3 Minuten) und das erstellte WAV hat nur etwa 500 kByte anstatt 4 MByte. Wobei sich das WAV auch gut komprimieren läßt mit jedem ZIP Programm auf ca. 2 bis 3 % der WAV Dateigröße (im konkreten Fall also auf etwa 13 kByte). Ist also recht handlich, im Moment erstellt die IDE noch kein komprimiertes WAV. Wäre aber überlegenswert da die WIN Versionen ja ZIP Komprimierung bei File Open/Close anbieten. Vielleicht in der nächsten Version.

Ausblick:
Ich werde nochmal eine effizientere Übertragung entwickeln, die aber zwingend zusätzlichen Speicher voraussetzt und sich nicht mit 72 Byte Programmcode realisieren läßt. Durch eine andere Übertragung kann man meiner Meinung nach nochmal mindestens Faktor 2 herausholen, durch eine Komprimierung der Daten während der Übertragung sicherlich auch nochmal mindestens Faktor 2. Also 4 kByte/Sekunde müssen schon noch drin sein. Außerdem vielleicht noch ein Verschlüsselungsfunktion, aber Zeddy gerecht. Wir wollen den Kleinen ja nicht überfordern und auch nicht den zur Verfügung stehenden Speicher.

Wäre ganz nett auch mal Feedback zur Übertragung zu erhalten, geht jetzt auch mit ZX80 und bei 25-facher Geschwindigkeit zählen auch Ausreden wie "ich habe keine Zeit" nicht mehr. :mrgreen:



PS: Ist auch ein ganz neues Klangerlebnis. Also ruhig mal die Boxen bei der Übertragung anlassen. Der Sound bei LOAD kann mit dem C64 locker mithalten. :wink:
Zuletzt geändert von PokeMon am 25.01.2013, 18:40, insgesamt 1-mal geändert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 13.03.2012, 08:14

PokeMon hat geschrieben: Aber sooo viel dürfte damit auch noch nicht gearbeitet worden sein. Das Feedback von Paul, ob die Programme für den ZX80 erfolgreich geladen werden steht noch immer aus. So ist das, wenn man nach Features ruft, das verpflichtet auch mein lieber Paul. :mrgreen:
Lieber Karl, ob du es glaubst oder nicht, seit einigen Tagen habe ich tatsächlich die Möglichkeit auch Windowsprogramme zu starten (ausser auf den Laptops meiner Kinder) . An deine Entwicklungsumgebung hatte ich zwar noch nicht gedacht, aber ich lade sie gerne mal herunter und versuche es. Auf jeden Fall bis zu unserem Treffen. Hoffentlich finde ich einen passenden Verstärker. Das uralte Notebook ist erstens sehr leise und zweitens ist der ZX80 ja schon fast taub.
Im übrigen bekomme ich nur XP halbwegs ans laufen. Es gibt zwar Vista Treiber, aber die Grafikkarte bekomme ich unter Windows 7 nicht ans laufen (beziehungsweise nur die Standardgrafik mit bis zu 1024x768)
Ich habe tagelang gegoogelt und Leute gefunden die mit dem Vistatreiber Erfolg gehabt haben wollen, aber keine Anleitung geben wie. Installation klappt zwar, aber Win7 nimmt trotzdem den Standardtreiber :(
Das ist besonders ärgerlich weil ich extra eine gekaufte Win7 Lizenz habe. Ansonsten findet man viele Treibersuchprogramme die man kaufen kann. Taugt das was?
Bietet XP auch schon Zip beim Laden und Speichern an? Oder erst neuere WINs?
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
bodo
User
Beiträge: 290
Registriert: 14.02.2007, 17:21
Kontaktdaten:

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von bodo » 13.03.2012, 08:50

Um die Sounddateien zu komprimieren, bietet sich doch MP3 oder OGG-Vorbis an. Dann könnte man nämlich seine Programme auf einen normalen Taschenspieler (vulgo: MP3-Player) kopieren und hätte sie immer dabei. Wer es braucht. :lol: Und der Schritt des Auspackens entfällt, wenn z.B. die IDE nicht greifbar ist.

Diese Idee geistert nämlich seit wenigen Jahren durch meinen Hinterkopf: Heutzutage gibt es kaum noch Kassettenrekorder, aber jede Menge Flash-basierter Nachfolger. Selbst die einfachen und alten davon haben oft ein Mikrofon, und alle haben einen Kopfhörerausgang. Wenn man jetzt das Mikrofon durch eine Klinkenbuchse ersetzt, vielleicht ein bisschen Pegel- und/oder Impedanzanpassung betreibt, ist das doch ein moderner Nachfolger des Kassettenrekorders. Und er arbeitet ohne diese lästigen Dropouts...

Zumindest für Anwender, die das brauchen... :mrgreen:
B0D0: Real programmers do it in hex.

Benutzeravatar
Paul
User
Beiträge: 2388
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von Paul » 13.03.2012, 21:37

Ich habe diverse Versuche unternommen.
Mit dem ZX80 klappt keine Übertragung. Hast du daran gedacht das der ZX80 keinen Namen kennt?
Etwas störend war am Anfang das beim Übertragen der .o Datei versucht wurde einen Fastloader für ZX81 zu übertragen. Das ist mir erst aufgefallen als ich das ganze mal angehört habe. Ich bin halt in der Benutzung der IDE noch ganz ungeübt.
Zum Gegentest habe ich dann noch mal den Cassettenrecorder rausgekramt und damit funktionieren alle ZX80 die ich habe.
Heute habe ich keine Zeit mehr, aber ich werde mal ein anderes in WAV Umwandelprogramm ausprobieren und dir das WAV zukommen lassen falls es klappt.
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 13.03.2012, 21:51

bodo hat geschrieben:Um die Sounddateien zu komprimieren, bietet sich doch MP3 oder OGG-Vorbis an. Dann könnte man nämlich seine Programme auf einen normalen Taschenspieler (vulgo: MP3-Player) kopieren und hätte sie immer dabei. Wer es braucht. :lol: Und der Schritt des Auspackens entfällt, wenn z.B. die IDE nicht greifbar ist.
Danke für Deine Hinweise. Der Grund für das WAV Format liegt in der einfachen Struktur. Wobei die Struktur auch wieder nicht so logisch ist. Das RIFF Format arbeitet mit Chunks und Subchunks. Eigentlich ist die Strukturierung der Daten recht gut jedoch ist es nicht vorgesehen, dass mehrere Chunks in einer WAV Datei verwendet werden können. Wenn ich nur einen einzigen Chunk (Datencontainer) verwenden kann fragt man sich nach dem Sinn dieser Struktur.

Ich hätte eigentlich erwartet, dass man mehrere Format und Data Chunks verwenden kann, dann wäre es nämlich möglich für die Inhalte unterschiedliche Komprimierungen zu verwenden. Also unterschiedliche PCM Sampling Frequenzen. Das würde die Datei nochmals verkleinern. Das PCM Format ist nicht besonders intelligent gewählt, insbesondere wird die Samplingauflösung nur als 8-Bit Vielfaches unterstützt. Weniger Bits belegen trotzdem den gleichen Speicherplatz. 8 Bit belegt 1 Byte, 16 Bit belegt 2 Byte, 9 Bit belegt auch 2 Byte, 4 oder 2 Bit belegen auch 1 volles Byte. Es ist halt nicht alles Gold was glänzt. :mrgreen:

Eine andere Codierung werde ich aber nicht einarbeiten, aus mehreren Gründen. Erstens sind viele gängige Codecs geschützt/patentiert und deren Nutzung lösen Lizenzgebühren aus. Auf diese Grauzone möchte ich mich nicht begeben. Freie Formate werden halt oft nicht von entsprechender Hardware unterstützt bzw. haben keine ausreichende Reputation. Zweitens sind eben aus diesem Grund viele Dateiformate auch nicht im Detail veröffentlicht. So konnte ich auch zu MS ADPCM nichts Konkretes finden, außerdem haben andere Hersteller wieder andere ADPCM Varianten. Der dritte Grund ist aber auch die vermutlich geringe Nutzung. Es hat natürlich Charme, wenn man Programme auf sein Handy oder MP3 Player übertragen kann, aber wer wird das schon nachher wirklich nutzen ? Bei der IDE weiß ich es auch nicht, aber zumindest weiß ich, dass ich die Funktionen definitiv selbst nutze. So rentiert sich die Arbeit zumindest schon mal für mich selbst. Das wäre ja schon mal einer und meine Arbeit nicht ganz so nutzlos. :mrgreen:

Die LZ Komprimierung unter WIN ist eigentlich integriert und ich braucht eigentlich nur FileOpen durch LZFileOpen zu ersetzen. Also minimaler Aufwand und die IDE kann die komprimierten Daten natürlich auch wieder automatisch lesen und wer nur das WAV (oder besser ZIP) hat, kann ja auch ein beliebiges ZIP Entpackprogramm verwenden. Und wer wirklich die MP3 Masche nutzen möchte, kann natürlich ein WAV - MP3 Konverter nutzen als zusätzliches Tool. Aber ich gebe zu, das Handy oder den MP3 Player am Zeddy anzuschließen, hat einen gewissen Coolness Faktor. :wink:

@Paul
Danke für Deine Erklärung, ich wollte auch nur ein bischen sticheln. Nein im Ernst, ich stelle halt allzu oft fest, dass jemand sich Funktionen wünscht (oder vorstellen kann) die er dann eigentlich nicht braucht. Aus diesem Grund investiere ich keinen Aufwand in eine MP3 Konvertierung. Aber ich will auch keine Schuldgefühle wecken, im Grunde war die Implementierung eines eigenen Loaders nicht ganz uneigennützig und die Übertragung der ZX80 Files ein Nebenprodukt (wenn man's überhaupt so bezeichnen will, im Grunde ist nur die Beschränkung der Syntaxprüfung durch den JAR Loader entfallen) mit minimalem Umsetzungsaufwand. :wink:

Aber hier geht's auch ums Prinzip. Eigentum verpflichtet. Oder so. :mrgreen:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 13.03.2012, 22:07

Paul hat geschrieben:Ich habe diverse Versuche unternommen.
Mit dem ZX80 klappt keine Übertragung. Hast du daran gedacht das der ZX80 keinen Namen kennt?
Nö, an den fehlenden Dateinamen habe ich nicht gedacht. :mrgreen:
Muss ich mein Programm überarbeiten, Update folgt.
Brauchst also damit nicht weiter zu probieren.

Die Einstellung wird im RUN Menü festgelegt und gespeichert. Den untersten Haken bei Fastloader solltest Du rausnehmen. Wenn eine INI Datei noch nicht existiert, ist das die Default Einstellung (Fastloader on). Danach wird der jeweils letzte gewählte Zustand in der INI Datei gespeichert (sofern sie ordnungsgemäß beendet wird). Auto Create WAV ist auch Default on aber das dürfte nicht stören wenn Deine Festplatte groß genug ist.

Der Fastloader wird auf dem ZX80 nicht laufen, aus mehreren Gründen. Erstens ist der Variablenbereich offenbar anders aufgebaut, der Code wird auf Adresse 16534 - 16508 geladen. In meiner ganz groben Erinnerung weicht die Variablenstruktur beim ZX80 ab und der Bereich ist deutlich kleiner. Zweitens nutzt der Fastloader Einsprungadressen in das ZX81 ROM die beim ZX80 ROM vermutlich so nicht funktionieren. Der Grund dafür liegt darin, dass der Kontext des laufenden Programms (des Fastloaders) nach dem Überladen mit dem tatsächlich gewollten Programm nicht mehr vorhanden und daher ein einfacher Rücksprung nicht möglich ist.

Sollte ich mal einen ZX80 besitzen, werde ich den Fastloader vielleicht anpassen. Obwohl - das könntest Du vielleicht selbst auch machen. Die Sourcen liegen ja anbei. Geändert werden müssten die Rücksprungadressen ins ROM (bei erfolgreicher Ladung oder bei Fehlern), das Ziel für die Relocation oder auf eine Relocation ganz zu verzichten und dann müsste ich aber auch die IDE anpassen. Die kopiert den Loader "hart" in das zu ladende Programm. Sofern man den Loader auf eine höhere Adresse legt (RAMTOP & Co.) kann man auch darauf verzichten, die zu ladenden Programme zu bearbeiten. Ich weiß auch gar nicht welche Mindest Memoryausstattung der ZX80 normalerweise hat.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 14.03.2012, 00:26

Hallo Paul,

hier die Version für den ZX80 - ohne Dateinamen.
Außerdem wird beim ZX80 die Einstellung FastLoader ignoriert, also immer das Schneckentempo gewählt.
Da war auch wohl noch irgendein Problem in den Include Dateien, die Variablen weil ich da was in AUTORUN umbenannt habe.
Das Assemblieren des ZX81DEMO.asm brachte daher eine Fehlermeldung, das ist jetzt weg.

ZX80 wird übrigens nur an der Dateiendung erkannt, muss .o oder .80 File sein.
Zuletzt geändert von PokeMon am 25.01.2013, 18:40, insgesamt 1-mal geändert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 16.03.2012, 21:43

* UPDATE *

Letztes Update vor Mahlerts. :mrgreen:

Hauptgrund für das Update ist nun der integrierte Zeichensatzkonverter von ASCII zum ZX Zeichensatz. Nur die 7-Bit ASCII Zeichen $00-$7F werden unterstützt. Einige Zeichen im ASCII Satz, die nicht im ZX Satz vorhanden sind, habe ich benutzt um spezielle ZX Zeichen zu verwenden. Das ist jetzt aber im Grunde nur eine Konvention, nachdem ich eine RFC für diesen Einsatzzweck nicht finden konnte. :wink: Falls jemand da Einwände hat, weil es bestehende Projekte betrifft oder allgemein verbindliche Übereinkünfte zur Übersetzung der Zeichen dann bitte ich um einen kurzen Hinweis. Die meisten ASCII Zeichen die nicht im ZX Zeichensatz vorhanden sind, werden mit $00 (SPACE) übersetzt.

Im INCLUDE Directory gibt es eine Beschreibungsdatei ZX81CONV.TXT in der die verwendeten Definitionen gelistet sind.

Hier die Übersetzungstabelle der "Sonderzeichen", rein willkürlich gewählt. Ob es später mal nützlich ist, weiß ich noch nicht.

Code: Alles auswählen

    ASCII   purpose    ZX char    purpose
    $08   BACKSPACE   $77      RUBOUT
    $09   TAB      $73      CURSOR RIGHT
    $0A   LINEFEED   $76      NEWLINE
    $0B   VERTICAL TAB   $71      CURSOR DOWN
    $0C   FORMFEED   $FD      CLEAR
    $0D   CARRIAGE RETURN $76      NEWLINE
    $23   #      $D8      **
    $5B   [      $DB      <=
    $5C   \      $DD      <>
    $5D   ]      $DC      >=
    $7F   DEL      $77      RUBOUT
Um den Zeichensatzkonverter zu aktivieren gibt es eine neue Assembler Anweisung mit dem Namen "dbzx" anstelle der sonst verwendeten "db" Anweisung für Strings. Die Übersetzung funktioniert aber auch mit Nummern/Zahlen.

Es gibt noch eine erweiterte Funktion um die Zeichensatzkonvertierung auch mit anderen Befehlen nutzen zu können. Die Umsetzung war aber nicht so einfach und ich wollte auch nicht den kompletten FASM Parser umschreiben. Einen kompletten Bereich als Übersetzungszone zu definieren (also ein- und wieder auszuschalten) finde ich auch nicht so komfortabel. So habe ich die Syntaxregeln für diesen Zweck missbraucht (man könnte auch sagen gebrochen :wink: ). Die Befehle LD,ADD,ADC,SUB,SBC,AND,OR,XOR,CP können mit der Zeichensatzkonvertierung benutzt werden, in dem man ein doppeltes Komma ",," anstelle des einfachen Kommas "," als Separator benutzt oder bei den logischen Befehlen ein Komma vor das Argument setzt.
Siehe Beispiele:

Code: Alles auswählen

dbzx 'CREATED WITH ZX81-IDE' - wird in den ZX Zeichensatz konvertiert
dbzx $39 - wir konvertiert in $25

LD A,,'?' - in A wird $0F anstelle von $3F übertragen
ADD A,,'0' - adiiert $1C anstatt $30
CP ,,'A'  - vergleicht mit $26 anstelle $41
Ansonsten gibt es noch ein paar kleine weitere Änderungen. Ich habe den Fastloader Code jetzt von ZX81FALD.p nach FASTLOAD.BIN kopiert um zu verhindern, dass sich jemand versehentlich den Fastloader zerschießt wenn er mit der Source ZX81FALD.asm experimentiert. Der Fastloader Code wird hart in das zu übertragende File kopiert. So ist das etwas sicherer in der Anwendung. Übrigens sind die 1k Games von dr. beep nicht mit dem Fastloader übertragbar, da dr. beep das letzte Byte rausquetscht und nicht benutzte Variablen / Bereich verwendet, genauso wie ich. Das geht dann schief. :mrgreen:

Außerdem gibt es 2 neue Anweisungen (EQU), um den DFILE Typ zu festzulegen (COLLAPSED oder EXPANDED) und bei der Gelegentheit habe ich die Definitionen für STKBOT/STKEND angepaßt, die mit dem Expanded DFILE kollidieren. Außerdem kann man eine STARTUPMESSAGE festlegen, die im DFILE eingetragen wird und das Programm nach dem Laden anzeigt. Zum Beispiel den Namen oder den Zweck. Der Text ist momentan auf 32 Zeichen beschränkt und wird mittig formatiert. Funktioniert sowohl mit dem kollabierten als auch mit dem erweiterten DFILE.

Für ein Beispiel verweise ich auf ZX81DEMO.ASM (die ersten paar Definitionszeilen).

Hoffentlich habe ich nichts vergessen, das müßte es aber gewesen sein.
Ich werde später mal ein Handbuch dazu schreiben, wenn der Thread die 4. Seite erreicht hat.
Bis dahin wird alles hier im Thread dokumentiert.

Viel Spaß mit der IDE. 8)
Zuletzt geändert von PokeMon am 25.01.2013, 18:40, insgesamt 1-mal geändert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4301
Registriert: 31.08.2011, 23:41

Re: ZX81-IDE SW-Entwicklungsumgebung

Beitrag von PokeMon » 17.03.2012, 01:00

Kleine Ergänzung zur Verwendung der Audio Schnittstelle.
Habe jetzt auch mal mit einem Compaq Presario Notebook getestet und den EAR Ausgang vom Notebook genutzt.
Einwandfreie Übertragung mit etwa 80% Pegel, also mit Vollanschlag sollte das mit jedem Notebook funktionieren.
Glaube ich jedenfalls. :wink:

@Paul
Wie siehts jetzt aus mit ZX80 Files ?
Filename ist raus und Fastloader auch automatisch deaktiviert.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Antworten