5 neues vonne küste 6 die bahncard kommt (2) 8
Transcrição
5 neues vonne küste 6 die bahncard kommt (2) 8
5 6 8 11 12 16 18 20 22 23 24 27 ... ... ... ... ... ... ... ... ... ... ... ... NEUES VONNE KÜSTE DIE BAHNCARD KOMMT (2) TRANSISTOR IST ES ... ZXBOX-ZUGRIFF MIT LINUX EMULIERTE RECHNER HRG FÜR JEDEN PC DIE VERGESSENEN TOOLS FORMATIERTE ZAHLENAUSGABE NEUES VON UNIDABAS STIFTUNG WASSERFEST ZX97-LITE (7) ALTES VON SIR CLIVE Diese Seite ist leer 2 Strohfeuer? Das letzte Heft war noch voll gepackt mit Euren Berichten und Artikeln, ich musste mich echt anstrengen, um keinen Artikeleinsender zu benachteiligen. Das ist mir nicht gelungen (zum Glück, weil ich einige Artikel für dieses Heft aufheben konnte), aber für diese Ausgabe habt Ihr Euch nicht gerade überschlagen. Natürlich haben mich die üblichen Verdächtigen nicht im Stich gelassen, aber es ist einfach nicht zu übersehen, daß viel weniger eingeschickt wurde. Keine Bange, ich nehm es keinem übel, denn auch bei mir mussten beruflich und privat andere Prioritäten gesetzt werden. Bitte lasst nicht nach, mir von Euren ZX81 Projekten zu berichten, jede noch so kurze eMail kann wichtige Hinweise enthalten. [email protected] Bitte beachtet, daß der Redaktionsschluß für Heft 4/2005 um eine Woche vorverlegt ist, weil ich anschließend in Urlaub gehe. Bitte unbedingt unverbindlich vormerken und den Termin1 freihalten: Jubiläumstreffen 10. bis 12. März 2006 1 immer in der Hoffnung, daß uns der Belegungsplan des Kreisjugendamts keinen Strich durch die Rechnung macht Vater Microsoft der Du bist auf der Festplatte geheiligt sei Dein Windows Dein Update komme Dein Bugfix geschehe wie in Windows also auch in Office Unser täglich MSN gib uns heute und vergib uns unsere Raubkopie so wie wir vergeben uns'rer Telekom Und führe uns nicht zu IBM sondern erlöse uns von OS2 Denn Dein ist das DOS und das Windows und NT in Ewigkeit ENTER 3 ZX96 hat Aussetzer Das Bild bricht zusammen, die LED für die Spannungsversorgung bleibt dunkel. Festplatte, Diskette und LCD sind aktiv. Ich habe das ZX96 Modul ausgebaut und die Leitungen der Versorgungsspannung geprüft. Am Modul scheint alles in Ordnung. Nach Abbau der Treiberplatine habe ich vom VG-Stecker zu den IC´s gemessen... alles OK. An der Steckverbindung zum ZX96 habe ich den Pin für die 5Volt gesucht. Eine Messung ergab ... kein Durchgang. Ein nachlöten des Pin ergab keinen Erfolg. Eine nähere Prüfung ergab... das Lötauge war von der Leiterbahn abgerissen. Aus welchem Grund auch immer. Ich habe ein Stück Draht zwischen dem Pin und dem VG-Stecker eingelötet. Jetzt läuft die Kiste wieder einwandfrei. Georg aus Sparneck [email protected] Henning sucht: folgende Programme: Multifile, Computacalc, Financial Forecasts, Engineering calculations, Productivity analysys, Pricing, Job costing, Estimating, Production scheduling, WORD POOL, APPOINTMENT,MADE, STEEL BEAM DESIGN,, TIMBER BEAM DESIGN, 3D-ANOVA, SCOUT-FRAME, PLANE FRAME, VARIANCE ANALYSER, CONSTELLATION, Met.-Plot, GRAPHICS TOOLKIT, FOOTBALL FORECASTER, VIEWTEXT, Turret Laser, The chemistry tutor, Ephemeris V, Memoriers von DOWNSWAY. Desweiteren sucht er das Interface FD-ZX1K bzw. FD.ZX1A, sowie den ZEBRA KEYBOARD BEEPER. Alles um die DNS (DNA) Vor kurzem sah ich ein interessantes Basicprogramm aus dem Jahre 1986 von einem mittlerweile Herrn Dr. Herren. Mit der ZXGraphik wurde damit die Struktur der Desoxyribonukleinsaeure (DNS, engl. DNA) dargestellt. Erfreut stellte ich fest, dass schon sehr frueh und immer wieder gern der ZX81 in der Naturwissenschaft eingesetzt wurde. Wie es der Zufall wollte, bekam ich fast gleichzeitig ein KC85/4Programm in die Finger: "Molekulare Genetik" mit welchem man nach allen Regeln der Kunst aus Bausteinen (Basen) verschiedene Eiweisse entstehen lassen und diese in die DNS einarbeiten kann. Das KC85/4-Basicprogramm ist recht lang, fraglich ob es auf den ZX81 umgeschrieben werden kann, hab ich aber im Plan. (Das Listing "DNS" aus Computer Kontakt 1986 ist leider zu schlecht, um es hier abzudrucken. Eine Kopie kann bei Interesse bei Peter angefordert werden). Bei dem ZX81 Programm gab es bei der Bilddarstellung ein Problem. Nach einer Abbildung in einem meiner Lexika passte da einiges nicht zum Computerbild. Deshalb wandte ich mich an Dr. Herren. Er schickte mir freundlicherweise eine neue Version von "DNS", welches auch ein anderes Ergebnisbild brachte. Um die Unterschiede zum Listing in der Computerzeitschrift von 1986 darzustellen, wird im 2. Teil des Listingausdrucks der unveraenderte Listingabschnitt Zeile 1050 bis 1130 und der graphische Ausdruck mit angegeben. Henning Räder 4 *** Neues vonne Küste *** Moin moin, liebe Türstoppergemeinde, es ist und wird für mich ein ereignisreiches Jahr. Am 17.5.2005, genau einen Monat nach unserem 35 ten Hochzeitstag kam Jonna zur Welt, unser zweites Enkelkind. Jonna ist wie ich und ihr Vater und ihr großer Bruder in Kiel geboren, direkt an der Küste. Jonna war 3220 g schwer und ist z.Z. noch ein sehr ruhiges Kind, d.h. sie schläft gerne und viel. Am 3. Juni heiratet Heiko, mein Sohn eine Rheinländerin aus der Nähe von Düsseldorf. (Nicht Köln !!!) Es gibt dann Altbier. Ich wollte ja aus Zeit- Entfernungs- und Kostengründen nicht an jedem Treffen teilnehmen, aber 2006 muß ich wohl noch einmal Urlaub nehmen. Ich habe jetzt die Hochzeitszeitung fertig und kann mich wieder der ZX-81 Bahncard zuwenden, der Entwurf geht Peter als Bericht zu, aber der bekommt das Magazin ja ohnehin immer gut voll, ein Rätsel wie der das macht. Mit der Zusendung der Berichte per I-Mehl klappt es inzwischen auch ganz gut, Peter kann Papyrus verarbeiten und .pdf ja ohnehin. Ich habe per Zufall über das Internet Kontakt in die Schweiz zu einem „alten“ Atarianer der das Schaltplanprogramm „Transistor“ ( Atari ST ) von Rainer Stamm weiterentwickelt hat. Das hat zur Folge, daß ich nun unter XP weiter meine einfachen Schaltpläne für das ZX-TEAM Magazin entwerfen kann, eine tolle Sache, ich werde da noch getrennt drüber berichten. Der große Vorteil dieses einfachen Programmes liegt darin, daß es pixelorientiert arbeitet d.h. man hat die Macht über jedes müde Pixel ! Ich muß in den nächsten Monaten auch noch ein paar „Zusagen“ vom letzten Treffen abarbeiten, z.B. noch einmal eine gut funktionierende 32k Zeddy-Platine mit Akkustützung nachbauen. Ich möchte mich hier auch noch einmal bei den vielen Helfern des letzten Treffens und besonders bei Peter bedanken. Ich wünsche Euch Allen einen herrlichen Supersommer und immer ein freies Bit im Speicher des Zeddy......bis bald..... Willi 5 Die Bahncard kommt... die ersten Entwürfe Moin moin, auf dem Treffen in Dietges habt Ihr sicher Joachim und mich bei den ersten Tests mit der PWM-Steuerung für Gleichstrom-Modelleisenbahnen gesehen. Wir sind zu einem Ergebnis gekommen. Wenn es irgendwie geht, wollen wir bis zum nächsten Treffen die " Bahncard " vorstellen. Ich konnte trotz des üblichen Zeitdruckes wenigstens schon einmal erste Entwürfe mit dem "TransistorProgramm" erstellen. Es soll eine Platine im Europaformat 100 X 160 mm entstehen, die genau in der Mitte zu trennen sein soll. Der rechte Teil besteht (fast) symmetrisch aus zwei der von uns getesteten Schaltungen die mit je 4 bit zu steuern sind, speed, Voraus/Zurück, Stop und Up/Down sind die Signale die über einen PROFET an die Modellbahn gegeben werden. Unter den PROFET werden Klemmen angeordnet um die Verbindung zur Modellbahn ( Schienen) und die Stromversorgung der Bahn anzuschließen. Im CONTROL-Feld befindet sich je ein Digipoti mit dem CMOS- IC für die Steuerung und LEDs für die Anzeige der Zustände. Im vorderen oberen Feld soll das bekannte einfache 8-bit Sparinterface Verwendung finden, im unteren vorderen Feld eine einfache Oszillatorschaltung um die Bahncard auch ohne Computer über Taster zu steuern z.B. zum Testen. Damit würde die Bahncard auch ein einfaches Fahrpult ermöglichen. Am Anfang des rechten Teils ist eine Pfostenleiste geplant um beliebige 8-bit Ansteuerung anzuschließen, wie man auf der nächsten Seite sieht. 6 Die Bahncard kommt / Seite 2 (Entworfen mit ATARI TRANSISTOR von Rainer Stamm) Hier ist ein Beispiel angedeutet, der rechte Teil wird abgetrennt und kann mit einer Z80 PIO im gleichen Format von 80X100 verbunden werden. Beide Teile können z.B. in Führungsschienen direkt hintereinander eingeschoben und dann verbunden werden weil die eigentliche 2X4 bit Bahnsteuerung völlig autark ist. Ich hatte auch schon einmal angedacht, statt der Handverstellung auf der Sparinterfaceversion eine 16k Speichererweiterung einzuplanen, das würde aus jedem Standard-1kZeddy ein Super-Modellbahnfahrpult machen, 1k Speicher wären wohl nur bei Steuerung über Maschinensprache ausreichend, dafür hat im Zusammenhang mit dem Digipoti ja Joachim schon in einem früheren Magazin einen Bericht geschrieben. Sollte noch jemand zu diesem Zeitpunkt einen Wunsch oder eine Idee oder Verbesserung haben, sehen, erkennen, bitte bei Joachim oder bei mir melden, noch ist etwas Zeit, ich wollte in der Zweiten Jahreshälfte mit dem Layouten beginnen. Noch einmal zur Erinnerung: [email protected], da bin ich meistens, inne Firma in Hamburch, selten bei [email protected], das ist zuhause anne Küste in Kiel. Zu bemerken wäre noch, daß die enstehende Bahncard mit PWM natürlich auch für andere Steuerungsaufgaben genutzt werden kann, und sei es als ZX-81-Sonnenuntergangssimulationskomfortdimmer für ein Aquarium ! ( Na, war das ein Wort ?? ) Denn mal bis zum nächsten BahncardBeitrach..... Willi 7 Transistor ist es....forever.... Liebe ZX-81 und Spectrum-Fan-Gemeinde, dieser Beitrag war schon lange fällig. Aus gegebenem Anlass stelle ich ( noch einmal ?? ) TRANSISTOR vor. Das Programm wurde vor langer Zeit von Rainer Stamm auf einem ATARI ST in GFABasic geschrieben und von Thomas Schaerer so stark verbessert, daß es bei mir völlig problemlos unter WINdoof-IXPEH läuft. Mein Dank gilt beiden, beide sind einfach genial !! Ich arbeite fast ausschließlich und schon seit Jahren mit diesem Programm, das erkennt man auch an meinen Beiträgen aus den vergangenen Jahren. Wie genau ich damit arbeite erkläre ich Euch auf der nächsten Seite, auch die Verbeserung des Programmes. Ich habe auch etliche Pneumatikpläne mit TRANSISTOR gezeichnet, einen kleinen Ausschnitt einer Symboldatei könnt Ihr links sehen. Der Platz für die Symbole ist etwas begrenzt, aber man kann größere Symbole ganz leicht zusammenfügen. In der Grundversion konnte ich das Programm ohne Fehlermeldungen bis WIN 98 und nur mit Laden von Diskette nutzen. Mit der neuen Version von Thomas klappt alles Super von der Festplatte unter WIN-XP. Ich bin total begeistert, Hut ab. Was für Programme braucht man denn nun genau, wenn man nun mal keinen ATARI-ST besitzt ? Dazu nun die Antworten. 8 Thomas Schaerer ist einer von uns, das werden besonders die vielen "Bastler" unter Euch merken, wenn sie ihn im Internet einmal auf seinen vielen Seiten besuchen, es lohnt sich ! Hier sein Titelbild für die neue Version 1.92 : Ich habe unter XP den ATARI-Emulator STemulator ver.1.00 (c) 1977 Seneca / FALKE Verlag installiert und im gleichen Ordner das geniale PAPYRUS 5.25 Gold Erweiterung vom 8.6.1997 TOS #2.6 beide Programme natürlich original und lizensiert. Dann im Ordner TRANSISTOR 1.92 von Thomas. Ich rufe TRANSISTOR auf, speicher den Plan als .PIC ab, und lege dann den ganzen Plan oder Ausschnitte unter Papyrus mit .pap ab. Das wars schon. Ein Vorteil ist, daß ich unter Papyrus mit tollen DTP-Möglichkeiten arbeiten kann. Nun kann ich mit meinem neuen PAPYRUS 11 das PAP-Dokument unter XP drucken und verändern usw. Papyrus 11 kann die alten Dokumente problemlos lesen, ohne Fehler, versucht das mal mit alten WORD-Versionen. Zu dem Thema mein Lieblingssatz: Papyrus ist eine Alternative zu Word, aber Word keine Alternative zu Papyrus. Das ganze sieht nun etwas aufwendig aus, ist es aber nicht. Zum nächsten Treffen werde ich meinen Läpptopp wieder mitbringen, dann mach ich mal eine Vorführung. Wer Interesse hat, kann die oben genannten Programme sicher günstig über das Internet erwerben. Gerade für Papyrus sollte man ruhig Geld ausgeben, da stimmen Preis/Leistung immer. Also, die starken drei sind STemulator, TRANSISTOR und PAPYRUS um komfortabel kleine Schaltpläne zu erstellen, im ZX-Look. 9 Hier sehen wir eine kleine Auswahl von Symbolen,die man problemlos erweitern oder ändern oder auch völlig neu entwerfen kann (jeden Pixel!!!) 10 ZXBOX Zugriff mit Linux und Bluetooth-Handy Obwohl die ZXBOX eigentlich eine recht proprietäre (besser ZX-81 Standard) Angelegenheit ist, ist es möglich, mit Linux und ohne normale Telefon-Linie die ZXBOX von Gernot zu kontaktieren. Der Hintergrund: Ich habe keine normale Telefon-Linie mehr (schon seit Jahren), sondern nur noch ein Handy (GSM). Seit dem Treffen 2005 bin aber auch ich nicht mehr von der ZXBOX ausgeschlossen, obwohl ich kein Modem am ZX-81 habe. Ich verwende dazu die Software ZXBOX von Bodo Wenzel (Danke Bodo!). Dieses Programm lässt sich mit make -f Makefile.unx problemlos unter Linux kompilieren. Die Verbindung vom Notebook zum Handy wird dabei via Bluetooth hergestellt. Nachfolgend ist der Script um die Bluetooth-Verbindung zum Handy aufzubauen und ZXBOX zu starten: #!/bin/sh rfcomm release 0 sleep 2 rfcomm bind 0 00:11:22:33:44:55 7 sleep 2 rfcomm sleep 1 ./zxbox sleep 1 rfcomm release 0 Die Bluetooth-Adresse des Handy's muss in der 4. Zeile entsprechend gesetzt werden. Die 7 steht für den Bluetooth-Kanal. Es kann sein, dass dieser Kanal je nach Handy-Typ anders ist. Bei einem SonyEricsson P910i ist es jedenfalls die 7. Die sleep Kommandos im Script machen das Script etwas langsamer damit der serielle Kanal sicher steht, wenn darauf zugegriffen wird. Die Änderungen an der Datei zxbox.ini sind ebenfalls minimal: (alle anderen Zeilen bleiben wie sie sind) [GENERAL] ;PORT kann weggelassen werden, dann gelten folgende Standards: ;fuer Unix: PORT=/dev/modem ;fuer DOS: PORT=COM1: PORT=/dev/rfcomm0 ;INIT kann weggelassen werden, dann wird nichts ans Modem gesendet INIT=AT Z S0=0 ;DIAL ist noetig, enthaelt die Telefonnummer der ZX-Mailbox DIAL=AT DT +496234920001 ,, 22 bei PORT wird der Port für die Serielle Schnittstelle via Bluetooth angegeben, welcher im Script verbunden wurde. Bei INIT wird einfach ein minimaler Init-String angegeben, welcher vom HandyModem verstanden wird. Und bei DIAL wird die Telefonnummer der ZXBOX im internationalen Format mit +49... angegeben, wie bei GSM-Handy's üblich. Viel Spass damit... Thomas Lienhard 11 Emulierte Rechner Beim letzten ZX-Team Treffen wurde ich von verschiedenen Personen, welchen meinen ZX-81 Emulator auf dem Handy bestaunt haben gefragt, wie denn so ein Emulator genau funktioniere. Nun, ich werde versuchen, ein wenig Licht in diese Sache zu bringen. Unabhängig davon, ob es Sinn macht, das P800 als ZX-81 zu benutzen, hier die Details. Um einen Emulator zu schreiben, sollte man das Ziel-System sehr genau kennen. Nun, der ZX-81 ist zum Glück relativ einfach gehalten, was meinem Ziel, einen Emulator zu schreiben recht förderlich war. Überlegungen Als erstes dachte ich über die Schnittstellen nach. Der ZX-81 hat eine Tastatur und ein VideoAusgang (TV) sowie eine Kassettenrekorder-Schnittstelle und einen Systembus. Auch ein Drucker kann angeschlossen werden. Nun den Systembus lass ich eh weg, da ich an meinem Handy kaum je Original-Erweiterungen anstecken werde. Das ganze soll ja mobil bleiben. Die Tastatur bilde ich auf dem Touch-Screen des P800 ab. Dann kann ich diese auch richtig anschreiben. Der Bildschirm muss auch auf das Display. Ein erstes Problem: Der Touch-Screen des P800 ist 320x208 Pixel gross. Er müsste aber 256 Pixel breit sein um einen ZX-81 Bildschirm (32 Zeichen x 8 Pixel) darstellen zu können. Eine Möglichkeit wäre gewesen, das Handy Quer zu nehmen, aber dann hätte die Tastatur keinen Platz mehr gehabt. Also Entschied ich mich dazu, eine neue Matrix mit 6x8 Pixel grossen Zeichen zu verwenden. Nun sind es nur noch 192 Pixel (32 Zeichen x 6 Pixel) in der Breite und ebenso viele (24 Zeilen * 8 Pixel) in der Höhe. Also habe auf Häuschenpapier alle Zeichen des ZX-81 gezeichnet und versucht, den ZX-81 Look so gut wie möglich zu treffen. Schliesslich noch die Kassettenrekorder-Schnittstelle. Diese Nachzubilden ist praktisch unmöglich und auch unsinnig. Ich habe das Problem anders gelöst, doch dazu mehr unter „Laden und Speichern“. Prozessor und Speicher Im ZX-81 arbeitet eine Zylog Z80 CPU vor sich hin, weiter gibt es ein 8kB grosses ROM und natürlich RAM. Dieses habe ich der Einfachheit halber auf 16kB gesetzt. Mein Emulator hat eigentlich einen 32kB grossen Speicher. Dies sind die unteren 32kB des Z-80 Adressraumes. In die untersten 8kB wird das ROM geladen und auch in die nächsten 8kB kopiert. In die untersten 8kB werden keine Schreibzugriffe erlaubt (ROM) die nächsten 8kB enthalten eine Kopie des ROM (Schatten-ROM) können aber als RAM genutzt werden für Maschinen-Programme und ähnliches. Die folgenden 16kB sind das normale erweiterte RAM. Das sieht dann so aus: void putbyte_func(int i, int j) { i &= 0x7fff; j &= 0xff; } if(i > 8191) RAM[i] = (byte)j; Der Prozessor selbst ist eine riesengrosse Case-Anweisung. Der Prozessor startet nach einem Reset bekanntlich bei der Adresse 0 und beginnt die Maschinenbefehle auszuführen. Es gibt Befehle mit 1, 2, 3 oder 4 Bytes Länge. Je nach Länge des Befehls wird der Program-Counter pc um die entsprechende Anzahl inkrementiert. Hier eine abgekürzte Version: void DoOpcode() { switch(RAM[run_pc++] & 0xff) { case 0: // nop Tstates -= 4; return; 12 case 1: // ld bc,NN Tstates -= 10; d16 = RAM[run_pc] & 0xff | (RAM[run_pc + 1] & 0xff) << 8; run_pc += 2; run_b = (d16 & 0xff00) >> 8; run_c = d16 & 0xff; return; } case 2: // ld (bc),a Tstates -= 7; ea = run_b << 8 | run_c; d8 = run_a; putbyte_func(ea, d8); return; ......... case 219: // in a,N Tstates -= 11; d8 = RAM[run_pc++] & 0xff; d8 = PORTIN(d8 | run_a << 8); run_a = d8 & 0xff; return; ......... } So wird eine Instruktion um die andere ausgeführt, wobei natürlich das Original-ROM benötigt wird, da die komplette Logik des Emulators auf dem Original-ROM basiert. Bildschirmausgabe und Tastatureingabe Zur Bildschirmausgabe wird in regelmässigen Abständen die System-Variable D_FILE gelesen und die Zeichen, auf welche D_FILE im RAM zeigt interpretiert. Ein Wert von 118 bedeutet z.B. Zeilenende. Die gesamte Logik im ROM zur Bilderzeugung wird also gar nicht gebraucht. Auch die ULA wird so nicht mitemuliert. Der Nachteil dieser Lösung ist, dass man keine HRG-Bilder erzeugen kann. Die normale Klötzchen-Grafik, welche ja auf normalen Zeichen besteht funktioniert natürlich trotzdem. Die Tastatureingaben werden von der Original-ROM-Routine bearbeitet. int PORTIN(int i) { if(i == 0xFB) return(128); if((i & 7) == 6) { i >>= 8; int k = 255; for(int j = 0; j < 8; j++) { if((i & 1) == 0) k &= key_matrix[j]; i >>= 1; } return k; } return (i & 0x84) != 128 ? 255 : 255; } In der Variable key_matrix werden von der Anzeige-Routine die Werte bereitgelegt, welche das ROM bei einem Tastendruck erwartet. Diese Funktion wird aufgerufen, wenn die CPU auf das Byte „DB“ (219) stösst. 13 Kassettenrekorder-Interface Auch das Kassettenrekorder-Interface ist nicht sinnvoll zu emulieren. Ich habe mich deshalb dazu entschlossen, das ROM an den entsprechenden Stellen mit einem ungültigen Op-Code zu patchen und diesen in meiner virtuellen CPU entsprechend zu behandeln. Dies ist einfacher umzusetzen als es scheint. In der Initialisierung werden, bevor der eigentliche Emulator startet, folgende Befehle ausgeführt: setRAMword(763,65517); //SAVE setRAMword(839,65517); //LOAD Hier wird an den jeweiligen Stellen im ROM-Bereich der Befehl ED FF eingepatcht, welcher es in einer echten Z80-CPU gar nicht gibt. Dieser wird dann folgendermassen abgehandelt (Im Beispiel die LOAD-Routine): case 255: // Illegal OpCode fuer LOAD und SAVE if(run_pc == 841) //load { int save_hl=run_hl-run_c; StringBuffer stringbuffer = new StringBuffer(); do { stringbuffer.append((char)zx2asc(RAM[save_hl])); } while (RAM[save_hl++] >= 0); stringbuffer.append(".P"); String s = stringbuffer.toString(); try { FileInputStream fileinputstream = new FileInputStream(s); fileinputstream.read(RAM, 16393, 32767 - 16393); fileinputstream.close(); } catch(Exception _ex) { } run_pc = 519; return; } Hier wird zuerst geprüft, an welcher Adresse der Op-Code auftrat, und bei Übereinstimmung der Datei-Namen geholt. (Pointer HL - Länge C) Dieser wird dann in ASCII gewandelt und ein „.P“ angehängt. Danach wird die Datei normal in das RAM an die Adresse 16393 geladen. Dies ist die Adresse, an welche auch der ZX-81 seine Basic-Programme lädt. Am Ende lade ich den PC mit der Adresse, welche auch nach der normalen LOAD-Routine angesprungen wird. Drucken Das Drucken funktioniert ähnlich wie das Laden und Speichern, wobei ich der virtuellen CPU mehr Arbeit aufgebe als nur das Erkennen eines illegalen Op-Codes. Beim Studieren der ROM-Routinen habe ich erkannt, dass PRINT, LPRINT, LIST, LLIST, COPY und andere Befehle alle irgendwie miteinander verknüpft sind. Ich habe mich dann dazu entschlossen, das ROM folgendermassen zu patchen: RAM[0x87A] RAM[0x87B] RAM[0x87C] RAM[0x87D] RAM[0x87E] RAM[0x87F] RAM[0x880] RAM[0x881] RAM[0x882] 14 = = = = = = = = = (byte)0x7E; (byte)0xED; (byte)0xFF; (byte)0x23; (byte)0xFE; (byte)0x76; (byte)0x20; (byte)0xF8; (byte)0x15; // // // // // // // // // LD A,(HL) :start Illegal OP fuer Print INC HL CP 76 JR NZ start DEC D RAM[0x883] RAM[0x884] RAM[0x885] RAM[0x886] RAM[0x887] RAM[0x888] = = = = = = (byte)0xCA; (byte)0xDE; (byte)0x08; (byte)0xC3; (byte)0x7A; (byte)0x08; // JP Z 08DE ende // // // JP 087A start // // Hier ersetzte ich die Originale Druck-Routine mit einer eigenen, welche bei jedem Zeichen wieder meinen beliebten Illegalen Op-Code ausführt. Wird dieser von der virtuellen CPU erkannt kommt folgender Code-Teil zur Ausführung: if(run_pc == 0x087D) // LPRINT,LLIST,COPY (Ausdruck-Routine) { paper = paper + (char)chr2asc(run_a); if (run_a == 118) { paper = paper + (char)0x0a; StringSelection contents = new StringSelection(paper); clipboard.setContents(contents, this); } return; } Hier wird jedes Zeichen nach der Umwandlung in ASCII dem System-Clipboard angehängt. Ich kann dann das 'ausgedruckte' Listing in jede andere Applikation (Editor) einfügen, etwas überarbeiten und dann tatsächlich ausdrucken oder auch nur abspeichern. Sonderzeichen wie die Grafik-Zeichen gehen dabei zwar leider verloren, was aber kaum zu umgehen ist, ohne eine GrafikDatei erzeugen zu wollen. Auch hier funktioniert nur der normale Text-Druck. HRG-Grafik-Druck wird damit nicht unterstützt. Fazit Ein Emulator kann recht einfach aufgebaut sein, wenn auf 100% Kompatibilität verzichtet werden kann. Ein gründliches Studium des ZX-81, besonders aber seinen ROM-Routinen ist unbedingt erforderlich. Der gesamte Java-Source-Code ist gerade mal 140kB gross. Trotzdem kann ein Emulator natürlich keinesfalls einen echten Zeddy ersetzten. Ich hoffe, dass die Platinen für den ZX2000 bald bei mir eintreffen, damit ich auch unterwegs nicht auf „echtes“ Zeddy-Feeling verzichten muss. Schöne Grüsse aus der Schweiz Thomas Email: [email protected] - Forum: http://zx81.tlienhard.com 15 HRG für jeden PC Die Titelgraphiken für das ZX-Team-Magazin werden seit Jahr und Tag auf meinem ZX81 erzeugt und von selbigem zum Drucker geschickt. Das ist ein eisernes Prinzip. Peter's Vorhaben, die ZX-Team-Magazine auch als pdf-Files anzubieten, 'zwangen' mich, mir etwas einfallen zu lassen. Es konnte nicht angehen, daß die Titelgraphik vom Zeddy gedruckt und von einem PC eingescanned wird. Wenn die Information schon in Bits und Bytes vorliegt, dann sollte es keinen Umweg geben dürfen. Wieder war es Markus Schinhärl der die Idee zur folgenden Geschichte gab: Er übertrug die Bilddaten zum PC (siehe dazu Artikel aus 2/2005) und verwendete dazu Visual Basic und Excel. Die bmp-Datei im ZX-Format hatte er vorher erzeugt und die Graphik vom ZX immer wieder in dieses File geladen. Ich wollte es etwas luxuriöser haben und fragte am ZX-Treffen Bodo Wenzel, wie sich denn so eine bmp-Datei aufbaut. Bodo klapperte mal eben etwas in seinen Laptop und brachte kurzerhand eine Beschreibung hervor. Gemeinsam tüftelten wir den Header für eine ZX81-Graphik zusammen. Dabei stellten wir fest, daß die Bitmap-Bilder im Vergleich zum Aufbau im ZX-Speicher auf dem Kopf stehen. Eine kleine MC-Routine löste dieses Problem. Herausgekommen ist nachfolgendes MC, das problemlos die HRG8-Graphiken zum PC schickt (Verbindung PC-ZX siehe ZXT 2/2005). Damit können nun die ZX-Team-Titelbilder pixelscharf in ein pdf-File eingebunden werden. Auf der PC-Seite muß dazu nur das empfangene File als .bmp abgespeichert werden. Es kann dann mit einem Graphikprogramm sofort angezeigt werden. Viel Spaß damit wünscht Joachim 8000 8000 8000 8000 8000 8000 8000 8003 8005 8008 800B 800C 800E 800E 8011 8013 8016 8017 8019 801B 801E 801F 801F 8020 8023 8024 ;------------------------; GRAPHIC-TRANSFER ZUM PC ;; ; 3/2005 ;------------------------;; TRANS CALL INIT CD3080 LD B,$3E 063E LD HL,BMP 21A380 LOOP CALL AUSG CD4380 INC HL 23 DJNZ LOOP 10FA ;; LD HL,$8000 210080 LD B,$C0 06C0 MLOOP CALL OUT CD1F80 XOR A AF SBC HL,DE ED52 DJNZ MLOOP 10F8 CALL SLOW CD2B0F RET C9 ;; OUT PUSH BC C5 LD DE,$0020 112000 XOR A AF SBC HL,DE ED52 8026 8028 LOUT 802B 16 LD B,$20 CALL AUSG INC HL 0620 CD4380 23 ;PIO initialisieren ;bmp-Header zum PC schicken ;Beginn der Bildübertragung ;mit dem letzten Byte der ;Graphik + 1 ;Übertragen werden 192 Zeilen ;und 32 Spalten 808C RTSLO IN A,DA 808E AND $01 8090 JR NZ,RTSLO DB47 E601 20FA 802C 802E 802F 8030 8030 8030 8032 8034 8036 8038 803A 803C 803F 8042 8043 8043 8043 8043 8046 8047 8049 804B 804D 804F 8051 8053 8054 8056 8056 8059 805A 805C 805E 8060 8061 8063 8063 8066 8067 8069 806B 806C 806E 806E 8071 8072 8074 8076 8078 8079 807B 807C 807C 807F 8082 8084 8085 8087 8089 808B DJNZ LOUT POP BC RET 10FA C1 C9 ;; ;--------------------------INIT LD A,$CF 3ECF OUT PA,A D357 LD A,$CD 3ECD OUT PA,A D357 LD A,$FF 3EFF OUT DA,A D347 LD (BRK),A 32A280 CALL FAST CD230F RET C9 ;; ;--------------------------;; AUSG CALL RTSHI CD7C80 LD A,(HL) 7E AND $03 E603 SLA A CB27 SLA A CB27 SLA A CB27 SLA A CB27 ADD A,$02 C602 CPL 2F OUT DA,A D347 ;; AUS2 CALL RTSLO CD8C80 LD A,(HL) 7E AND $0C E60C SLA A CB27 SLA A CB27 CPL 2F OUT DA,A D347 ;; AUS3 CALL RTSHI CD7C80 LD A,(HL) 7E AND $30 E630 ADD A,$02 C602 CPL 2F OUT DA,A D347 ;; AUS4 CALL RTSLO CD8C80 LD A,(HL) 7E AND $C0 E6C0 SRL A CB3F SRL A CB3F CPL 2F OUT DA,A D347 RET C9 ;; RTSHI CALL BREAK CD9380 LD A,(BRK) 3AA280 CP $01 FE01 RET Z C8 IN A,DA DB47 AND $01 E601 JR Z,RTSHI 28F1 RET C9 8092 8093 8093 8093 8093 8095 8097 8098 809B 809C 809E 80A1 80A2 80A2 80A3 80A3 80A3 80AB 80B3 80BB 80C3 80CB 80D3 80DB RET C9 ;; ;--------------------------;; BREAK LD A,$7F 3E7F IN A,$FE DBFE RRA 1F JP NC,EXIT D29C80 RET C9 EXIT LD A,$01 3E01 LD (BRK),A 32A280 RET C9 ;; BRK 001=$01 ;; ;--------------------------BMP 424D3E1800000000 ;Header 00003E0000002800 000000010000C000 0000010001000000 0000001800000000 0000000000000000 000000000000FFFF FF0000000000 Die unterstrichenen Werte im HeaderDump haben folgende Bedeutung: 00010000 : Bildbreite in Pixel hier: 256 C0000000 : Bildhöhe in Pixel hier: 192 Wer das Programm an andere Formate anpassen will, muß dies beachten. 17 Die vergessenen Tools Teil 1: SIMDOS In der Blütezeit des ZX81 wurden zahlreiche Programmiertools auf dem Markt angeboten. Diese konnten grob in drei Kategorien eingeteilt werden: Tools, die BASIC aufwerten, Tools, die die Erstellung und Fehlersuche in Maschinenprogrammen erleichtern und Tools, die Auskunft über das System geben sollten. Diese Hilfsprogramme waren entweder teuer oder langwierig aus endlosen Hex-Dumps abzutippen. Egal jedoch wie man zu ihnen kam, dies hatten sie gemeinsam: man mußte sie erst von Kassette laden, viele liefen in der REM-Zeile und konnten nachträglich nicht mehr eingebaut werden oder in einem Speicherbereich, den man nicht hatte. Nun, nach Jahren und dem Vorhandensein eines ZX-TEAMs, das für einen gewaltigen Aufschwung des ZX81 sorgte, sind diese Werkzeuge aus einem anderem Sichtwinkel zu betrachten. Sie können schnell von der Platte oder Diskette geladen werden, es ist immer der richtige Speicherbereich vorhanden und sie sind im Team alle verfügbar. Eines meiner Lieblingstools ist SIMDOS von Carlo Delhez. Es wurde ursprünglich konzipiert, um mit einem 32K-Speicher ab Adresse 32768 eine Disk zu simulieren. Man kann den Speicherbereich formatieren und es wird auch ein Directory angelegt. Das Programm läuft im Adressraum ab 8192. Der Befehlsumfang ist folgender: Die Befehlseingabe erfolgt immer mit : PRINT USR 14000;"<Befehl>". Dabei können auch mehrere Befehle hintereinander in einer Zeile eingegeben werden. Diese müssen dann nur mit einem Strichpunkt getrennt werden. Beispiele: PRINT USR 14000;"FORMAT:32768:16384:" formatiert einen 16 KB-Block ab Adresse 32768. PRINT USR 14000;"SC:ROM:0:8192:" speichert den ROM-Code. PRINT USR 14000;"DEL:TEST.S:" löscht den abgelegten Bildschirminhalt. Fehlermeldungen: E = Zeilen wurden eingefügt H = File existiert bereits I = Zeilennummer existiert nicht J = Syntax-Fehler K = File nicht gefunden L = Formatfehler N = RAM voll Wichtig ist, diese Erfahrung mußte ich auch erst machen, daß immer mit einem Doppelpunkt abgeschlossen wird. Wer nun Besitzer einer Mega-Byte-Karte ist, kann sich schon vorstellen, was sich da für ihn auftut. Wird diese Karte akkugepuffert, können Programme dauerhaft abgelegt werden. Ist das Programm auch noch in einem batteriegespeistem Zusatz-RAM ab Adr. 8192 abgelegt, braucht es nach dem Einschalten nur noch aufgerufen werden. 18 Ich nutze SIMDOS jedoch überwiegend dazu, einzelne Programmzeilen oder Programmteile abzulegen, die ich dann in neu zu erstellende Programme einbaue. Die 16K-Blöcke werden komfortabel mit MEFISDOS abgespeichert. So entsteht nach und nach eine nützliche Sammlung von Programmteilen, die man mit SIMDOS bei bedarf leicht und schnell einbauen kann. SIMDOS selbst kann jederzeit von Platte geladen werden und berührt dabei ein im BASIC-Speicher befindliches Programm nicht. Ich gehe dabei wie in meinem Artikel 'Tips und Tricks für MEFISDOS' beschrieben vor: Ich lade von Platte ein Maschinenprogramm, das ich SIM getauft habe, direkt zur Adresse 40000. SIM wurde mit dem Attribut '-R' abgespeichert, so daß es nach dem Laden von selbst startet. SIM schaltet meine Mega-Byte-Karte auf die Bank 63 (die ich sonst nie benutze) und lädt das File SIMDOS -also das eigentliche Maschinenprogramm vom Carlo- zur Adresse 49152. Dann wird - immernoch von SIM - im Zusatzspeicher ab Adresse 8192 die RAMBank 5 eingeschaltet (POKE 8,5) . Anschließend wird ein Blocktransfer von Adresse 49152 zu Adresse 8192 durchgeführt. SIMDOS liegt jetzt im richtigen Speicherbereich und wartet auf seinen Aufruf. Nun lade ich mir den gewünschten 16-K-Block mit den relevanten Programmzeilen in die Mega-Byte-Karte zur Adresse 49152 und rufe SIMDOS auf. Damit spart man sich nicht nur Programmierzeit sondern vermeidet auch Fehler, weil die abgelegten Zeilen schon mehrfach gelaufen und erprobt sind. Natürlich können so auch Maschinenprogramme, die in einer REM-Zeile stehen, in vorhandene BASIC-Programme eingebaut werden. Sollte es mal vorkommen, daß die abgelegten Programmzeilen schon in dem zu verändernden Programm vorkommen, müssen die Programmzeilen umnummeriert werden. Dazu aber mehr im Teil 2. SIMDOS steht - wie immer - in der ZXBOX zum Herunterladen bereit. Joachim Befehl DEL:<Name>.<Typ>: DIR: FORMAT:<Adr.>:<Länge>: LB:<Name>: LC:<Name>:<Adr.>: LL:<Name>: LP:<Name>: LS:<Name>: RUN:<Name>: SHOW: SB:<Name>: SC:<Name>:<Adr.>:<Länge>: SL:<Name>:<1.Zeile>:<letzte Zeile>: SP:<Name>: SS:<Name>: Bedeutung File löschen Directory anzeigen RAM formatieren und Directory anzeigen BASIC-Programm laden (Typ = B) Code-File laden (Typ = C) BASIC-Zeilen einfügen (Typ = L) Komplettes Programm laden (Typ = P) Bildschirm laden (Typ = S) Programm laden und starten (Typ = P) Hilfe anzeigen BASIC-Programm speichern (Typ = B) Code-Block speichern (Typ = C) BASIC-Zeilen speichern (Typ = L) Komplettes Progr. peichern (Typ = P) Bildschirm speichern (Typ = S) 19 Formatierte Zahlenausgabe mit dem ZX81 für Zahlen von 0 bis 255 Auch diese Routine habe ich aus dem Internet und sie stammt wieder von Joe Pemperton. Ich habe sie mit einer Testroutine versehen und für den ZX81 angepaßt. Es können damit Zahlen von 0 bis 255 ausgegeben werden. Die Ausgabe ist formatiert und erfolgt mit führenden Nullen. Wie durch das Beispiel-BASIC-Programm zu erkennen ist, ist auch diese MC-mäßige Zahlenausgabe wesentlich schneller als die des ZX81-Betriebssystems. Natürlich gibt's das Programm, mit BASIC-Teil und ASDIS-Source in der ZX-BOX. Viele Anwendungen wünscht Joachim 4082;--------------------------------------------------------4082;; 4082; BINAER-ZU-BCD-WANDLER 4082; MIT FORMATIERTER ZAHLENAUSGABE 4082;; 4082;--------------------------------------------------------4082;; TESTROUTINE 4082;; 4082TEST LD A,(ZAHL) 3A9740 4085 LD C,A 4F 4086 CALL BTOBC CD9840 4089 LD DE,(DFILE) ED5B0C40 408D INC DE 13 408E LD HL,BCDS0 21D940 4091 LD BC,$0003 010300 4094 LDIR EDB0 4096 RET C9 4096;; 4097ZAHL 00 SPEICHER FUER ZU WANDELNDE 4098;; ZAHL 4098;--------------------------------------------------------4098; WANDLERROUTINE: 4098;; 4098; REGISTER C = ZU WANDELNDE ZAHL VON 0 BIS 255 4098;; 4098; AUSGABE DER ZAHL FORMATIERT MIT FUEHRENDEN NULLEN 4098;; 4098; NACH RET BEINHALTEN H = HUNDERTER 4098; L = ZEHNER 4098; E = EINER 4098;; 4098; BCDS0 BIS BCDS2 BEINHALTET AUSGABE MIT ZX81-CODE 4098;; 4098;--------------------------------------------------------4098BTOBCLD B,$08 0608 409A LD HL,$0000 210000 409D LD E,L 5D 409EBCDL LD A,E 7B 409F CP $05 FE05 40A1 JR C,BCD1 3803 40A3 ADD A,$03 C603 40A5 LD E,A 5F 40A6BCD1 LD A,L 7D 40A7 CP $05 FE05 20 40A9 JR C,BCD2 3803 40AB ADD A,$03 C603 40AD LD L,A 6F 40AEBCD2 SLA C CB21 40B0 RL E CB13 40B2 BIT 4,E CB63 40B4 JR Z,BCDB1 2803 40B6 RES 4,E CBA3 40B8 SCF 37 40B9BCDB1RL L CB15 40BB BIT 4,L CB65 40BD JR Z,BCDB2 2803 40BF RES 4,L CBA5 40C1 SCF 37 40C2BCDB2RL H CB14 40C4 DJNZ BCDL 10D8 40C6 LD A,H 7C 40C7 ADD A,$1C C61C 40C9 LD (BCDS0),A 32D940 40CC LD A,L 7D 40CD ADD A,$1C C61C 40CF LD (BCDS1),A 32DA40 40D2 LD A,E 7B 40D3 ADD A,$1C C61C 40D5 LD (BCDS2),A 32DB40 40D8 RET C9 40D9;; 40D9BCDS000 40DABCDS100 40DBBCDS200 40DB;--------------------------------------------------------BASIC-Testprogramm: 10 20 30 40 FOR I=255 TO 0 STEP -1 POKE 16535,I RAND USR 16514 NEXT I 21 Neues von UNIDABAS Meine selbstgestrickte Datenbank setze ich derzeit bei 10 Anwendungen ein. Unter anderem verwalte ich damit meinen gesamten Elektronikteilebestand. Diese Anwendung machte es notwendig, eine Freitextrecherche einzubinden. Dies ist nun geschehen. Ein Suchbegriff kann in irgendein Maskenfeld eingegeben werden. Mit dem Kommando 'F' wird der Bestand seriell nach diesem Begriff durchsucht. Die Suche dauert selbst bei großem Bestand bisher längstens eine Sekunde (im SLOW-Modus). Die Anwendung für den Sporturkundendruck verlangt, daß Mitglieder, für die eine Urkunde gedruckt werden soll, schnell aufgefunden und das Datum und Ergebnis des Erfolges in der Datenbank eingetragen werden. Ich habe nun einen Befehl in UNIDABAS eingefügt, der BASIC mit dem MC verbindet. Wird der Kommandobuchstabe 'R' eingegeben, verzweigt das MC zum BASIC-Teil und übergibt einer Variablen den Datensatz. Dort wird der Druck und die Datenbankaktualisierung vorgenommen. Anschließend wird zum MC zurückgekehrt. Der aktuelle Satz ist noch im Zugriff und wird auch auf der Maske angezeigt. Das gleiche Verfahren verwende ich auch in der Adressenverwaltung und Drucke damit Kuverts in allen Größen sowie Paket- und Päckchenaufkleber. Für die Bestandsverwaltung meiner Elektronikteile mußte eine schnelle Erfassung ermöglicht werden. Dazu kann nun bereits bei der Maskengenerierung definiert werden, daß eine Erfassung mit der Tastenkombination Shift und NL sowie einem leeren Befehlsfeld vorgenommen werden darf. Das spart sehr viel Zeit, weil mit dem Cursor nicht mehr in das Befehlseingabefeld gesprungen werden muß. Alles in allem bin ich mit meinem UNIDABAS mehr als zufrieden, weil ich alle Anwendungen genau auf mich zuschneidern kann. Für die Zukunft habe ich keine Bedenken, zumal alle Daten problemlos zum PC exportiert werden können. Die Datensicherung erfolgt auf eine MMC. Damit sind die Daten auch transportierbar. Was will man mehr! Joachim Wieder neue Programme von ANDRE*** Ich kann nur jedem, ob Spielefreak oder nicht, empfehlen, sich die Programme von Andre Baune anzusehen. Das sind wahre Meisterstücke. Die Programme von Andre werden auf unserer Homepage angeboten. Für die ZX-BOX sind sie leider zu lange. Joachim 22 "Stiftung Wasserfest" Die hat mehrere Rechnertypen auf ihre Eignung für den Heimanwender überprüft. Getestet wurden verschiedene Hard- und Softwarekomponenten. Als Problemstellung wurde festgelegt, dass der Rechner zwei und drei addieren soll. Dabei kam es zu, für den Anwender höchst interessanten, unterschiedlichen Resultaten: Auf dem C64 wurde das Ergebnis (5) innerhalb von 1,023 Sekunden ermittelt. Etwas störend wirkte sich der zweiminütige Crackervorspann aus, der Aufgrund eines Listschutzes nicht entfernt werden kann. Der Amiga errechnete als Resultat fünf, allerdings muss peinlichst darauf geachtet werden, dass sich die Systembibliotheken in den richtigen Pfaden befinden. Der Stereosound kann nicht abgeschaltet werden. Während der Berechnung flackert allerdings der Bildschirm. Die Rechendauer ist von der Flackerfrequenz abhängig und schwankt zwischen 3 und 7 Sekunden. Auf dem PC unter DOS fehlte zuerst eine Installationsdiskette. Nachdem diese beschafft war, stellte sich leider heraus, dass das Diskettenformat nicht kompatibel zum eingebauten Laufwerk war. Mit einigen Kniffen lässt sich das Programm aber von einem erfahrenen Anwender doch installieren. Leider kann das Resultat nicht ausgegeben werden, da die Fliesskommaroutinen nicht kompatibel zum Bildschirmtreiber sind, solange wie eine Tastatur angeschlossen ist, oder eine ungerade Anzahl von "e" in der CONFIG.SYS vorkommt. Der PC unter Windows rechnet noch. Alle 5 Sekunden wird ein Hinweisfenster mit dem Inhalt: "Intel inside" ausgegeben. Zur Zeit sind ca. zwei bis drei Billionen Fenster geöffnet. Auf dem MAC erschien das Ergebnis bereits auf dem Bildschirm, als der Tester mit der Diskette den Raum betrat. Ausgedruckt werden kann das Ergebnis leider nur auf einem MAC-spezifischen Drucker, der den Preis eines Luxusklasse-PKW hat. Handelsübliche Drucker zu zivilen Preisen sind nur mit Spezialkabeln anschliessbar, die alleine mehr kosten, als ein spezieller MAC-Drucker. Ein Atari TT errechnete das Ergebnis in nicht messbar kurzer Zeit und gab es völlig korrekt und gut lesbar auf dem Monitor aus. Auf Tastendruck konnte es problemlos ausgedruckt oder gespeichert werden. Da die Ausgabe jedoch nicht GEM-konform waren, wurde das Resultat von den Anwendern nicht akzeptiert. Der Atari Falcon meldete unter dem ersten Task 42, gleichzeitig im zweiten Task 0.4354655642476587E-231 und im dritten Task "Incorrect formula!" als Ergebnis. Anschliessend warf er zwei Bomben in drei Fenstern. Eine Workstation unter UNIX wird zur Zeit noch von einem Tool durchgescannt das ermittelt, mit welcher ESC-Tastenkombination der "emacs" verlassen werden kann, nachdem man "2+3" eingegeben hat. Der Archimedes verwies den Anwender unter Berufung auf seinen RISC-Prozessor an einen Taschenrechner. Ein ZX-81 ermittelte in sehr kurzer Zeit völlig korrekt als Ergebnis fünf und liess sich durch einfachste Befehle dazu bringen, dies auf Drucker oder Bildschirm auszugeben. Damit entspricht er nicht den Anforderungen der heutigen Zeit und geht als schwächster Kandidat aus dem Test hervor. (eingeschickt von Jens) 23 The ZX97LITE SCHEMATIC DISASSEMBLED PART 7 - ZX97L VIDEO CIRCUIT Wilf Rigter 11/2003 This part of the ZX97L was probably the most difficult to design in terms of generating the precise timing to get a stable video image on the screen. Many parts of the ZX97 hardware, CPU and software must smoothly work together to generate the video display. This part combines that effort in the composite video output to the TV/Monitor. DFILE ECHO DECODER The basis for generating the ZX81 video display is the execution of an echo of the DFILE characters during which the Z80 is forced to execute NOP instructions. This video circuit uses a special DFILE echo address decoder (U19), which provides an output (NOP) when the displayable characters of DFILE are executed in the upper 16K of memory. The 74HC138 octal decoder (U19) inputs C, B and A are connected to the A14, A15 address lines as well as CHR$ data bit D7 which identifies an inverted dot pattern. The M1, CHR$ data bit D6 and HALT signals are connected to the chip enable lines. As a result, the decoder generates two valid active low output states: Y6 or Y7, which represent non-inverted and inverted video data. When low, the Z80 HALT signal disables the decoder as the last character (N/L) of a horizontal line is executed and the CPU enters the HALT state executing NOPs until the INT line goes active low and the HALT state is exited. The active low signals on Y6 and Y7 are OR'd with U13.D. The active low NOP signal at the output of U13.D is used to enable the NOP generator described in the CPU part. The NOP generator fools the Z80 into executing NOP instructions while the CHR$ data in DFILE is converted into a dot pattern byte to be loaded into U22, the video shift register (VSR). Note that except for video execution, DFILE is not otherwise accessible in 48K-64K. Also note that this video decoding means no M/C program code can be executed in 48K-64K, which is therefore only used as a Silicon Disk space for file storage. THE VIDEO SHIFT REGISTER LOAD PULSE The VSR is loaded asynchronously through the parallel inputs with an active low load pulse generated from the NOP signal delayed by U20.B and U21.B. The load pulse is clocked out on /Q of U21.B at the end of the last T state of the RFSH cycle, which is decoded with U13.C. The load pulse duration is just a few tens of nanoseconds of propagation delay thanks to the connection between /Q of U21.B and the U20.B preset input. The VSR load pulses, the VSR data and the invert signal are resynchronized with the (inverted) /6.5M video clock using U5.B to ensure a crisp and seamless appearance of the dot patterns on the screen. The ZX80 used some RC components in a kludge circuit to accomplish the same load pulse shaping. These are generally unstable and the video quality may deteriorate with time and temperature. THE INVERT CIRCUIT The Y7 output (decoded D7 bit of the CHR$ code) is delayed and latched (U20.A and U21.A) when the VSR is loaded and if high, XOR gate U15.C inverts the serial dot pattern as it is clocked out of the VSR. This INVERT signal is also used in conjunction with the Z80 I register to select the second character pattern lookup table. BLACK ON WHITE ON BLACK The foreground and background colors (B/W) of the display and the borders around the display are user selected with J8 and J9. VIDEO OUTPUT The video signal is combined with the composite sync signal using resistors R15-16 and D11. The summed signals are buffered by T1 and the VID output level is adjusted with P1. The video signal 24 has three distinct output levels, from most positive to GND: white, black and sync HINDSIGHT The design of the load pulse circuit came before the addition of U15.C, which reduces the stringent timing by re-synchronizing the combined VSR data with the inverted video clock. Some simplification could be made to reduce the ZX97L chip count by one. THE ZX97L I/O PORT AND EXTERNAL CONNECTOR is the next and last part. 25 CHIP Inhaltsverzeichnis der in CHIP veröffentlichten Artikel über ZX80/ZX81 Heft: 1/81 Der Winzling aus England (Test: Sinclair ZX-80) 6/81 Clive Sinclair - der Erfinder "Hohe Technologie entspricht der Haute Couture" (Report) 9/81 Vier ICs machen einen BASIC-Rechner (Test: Sinclair ZX 81) 12/81 Winzling als Zahlmeister (Programm zur Haushaltsführung für den ZX-80) 6/82 Groß-/Kleinschreibung mit dem ZX 80/81-Drucker (Character Generator) Der Zwerg wächst - Peripherie für Sinclair ZX 81 (Report) 7/82 LOAD und SAVE für ZX 80/81-Maschinen-Programme (Hilfsprogramm) 8/82 Der 99-Dollar-Computer (Timex Sinclair 1000) 10/82 Aufgemotzt (Die besten Tips und Tricks für den ZX 81) 11/82 ZX-Microfair: Vielfalt in London (Report) 12/82 FREE-Funktion für Sinclair-Computer (Hilfsprogramm) Daten rein - Daten raus (Ein- und Ausgang für den ZX80/81) 2/83 Hilf dir selbst, Computer (ZX81: Künstliche Intelligenz?) 3/83 Steuerungen mit ZX81 (Daten rein - Daten raus) 4/83 Nach allen Seiten offen (Steigender Zubehörmarkt in Deutschland) Huckepack für Speicher (Decodierung und Speichererweiterung des ZX 81) 6/83 Tippfehler besiegt (ZX 81-Programmiertrick) 7/83 Sprachtrichter (Maschinensprache für den ZX 81) 9/83 Simulation von DATA-Zeilen für ZX 81 Der Steuerknüppel (Joystick für ZX 81) 10/83 Z 80-Tuning für ZX 81 (Routinen.Programme) Der Massen-Speicher (Hardware für den ZX80/81) 11/83 Timex übertrumpft Sinclair - Zwei neue Home-Computer in den USA (Report) Heizungsregelung für den ZX 81 (Anwenderprogramm) Spartip in BASIC (Heizungsregelung mit dem ZX81) 12/83 Optimaler Bildschirm (Videoausgang für ZX81) Der Kleine mit dem Großen (Fernschreiber-Routine für ZX 81) 1/84 Musik aus dem Computer (Soundgenerator für den ZX81) 3/84 "Schachmatt" löst Schachprobleme (Analyse des Maschinenprogramms) Echtzeit für Computer (Datum-Uhrenzusatz für neue Möglichkeiten) 6/84 Invertierend (Weiße Schrift auf dunklem Hintergrund für den ZX 81) Programmschutz für ZX 81 (Password schützt Software) 12/84 Parallel-Anschluß (Drucker-Interface für ZX81 und Spectrum) 2/85 Der Kleine ist nicht stumm (Musik mit dem Sinclair ZX81) (Gerhard Dohnke) 26 Altes von Sir Clive Mon 10 Jan 2005 Miles ahead of its time Sinclair showcases his electric vehicle before its launch in 1985. It flopped, but for a hardy band of enthusiasts it retains a cult allure. AURA ROBERTS AS HE DODGES through the traffic-packed streets close to his penthouse on London's Trafalgar Square, there is one vehicle Sir Clive Sinclair can be almost certain he will not have to avoid. Twenty years ago today, the inventor launched his Sinclair C5 electric tricycle, the battery and pedal- powered contraption he believed would revolutionise road travel. Instead, it was derided as a potential death-trap, dubbed the "washing machine motor" and quickly vanished from public view. Sinclair, with a fabulous record of innovation behind him, hoped millions of C5s would hit the roads to usher in the era of the electric car; the man who played a key part in the development of the pocket calculator, digital watch, portable TV and ZX80 personal computer saw it as the future of urban transportation. A maximum speed of 15mph meant anyone over 14 could drive a C5 without a licence, road tax, insurance or a helmet. But the batteries could only power the vehicle 20 miles at a time (considerably less in cold weather) and struggled with hills. The motoring press savaged the C5. One Daily Telegraph reviewer wrote on 11 January 1985: "I would not want to drive a C5 in any traffic. My head was on a level with the top of a juggernaut’s tyres, the exhaust fumes blasted into my face. Even with the miniscule front and rear lights on, I could not feel confident that a lorry driver so high above the ground would see me." The C5 had some good points. It was relatively cheap - the "no-frills" model originally sold for £399, although added "extras" (such as wing mirrors and indicators) pushed the cost to £600. Yet the millions of sales envisaged by Sinclair proved way off the mark; only 5,000 were sold worldwide, including just a handful in the US and Europe. The C5’s inventor cheerfully admits he never personally owned one: "I don’t own any car. I live and work in Trafalgar Square so I have no need." Yet two decades later, he still has faith in the vehicle we all loved to laugh at - and insists it was the right idea at the wrong time. "The C5 was early for what it was," says Sinclair, now 64. "People reacted negatively and the press didn’t help. It was too low down and people felt insecure, hence it got bad press. However, I have a firm belief in the future of electrically-powered transport." The C5 debacle lost Sinclair around £7 million. It was meant to be the first in a range of electric vehicles - to be followed with larger C10 and C15 models - but production ended after just a few months. The losses forced Sinclair to sell his computer business, which had a turnover of £30 million in 1982, to Amstrad for £5 million. "The C5 money was my money - I back myself," he says. "We did market research and decided there was a demand. It wasn’t a blow to my confidence - you can’t win them all." Yet 20 years on, the C5 has achieved something of a cult status among enthusiasts and vehicles are changing hands for up to £1,000 each. Sir Elton John has two for driving on his estate, while Princes William and Harry kept one at Kensington Palace. And C5s certainly engender great passion among fans. Mark Koeberle, 33, was just 14 when the vehicle was launched, but has bought seven of them in the past two years. drive the C5 from John O’Groats to Land’s End later this year. 27 He explains: "When they first came out, I thought they were really good gadgets to muck around in. I really wanted one, but in those days I had nowhere to keep it and no idea where to get spare parts. I like them because they remind me of being a kid. They are retro and cool." Engineer Chris Crosskey, 38, is perhaps even more of a C5-nerd. He commutes every day from his home in Abingdon into Oxford (a 12-mile round trip) on his C5, holds the record for the longest journey completed on a C5 - 103 miles - and will make his third attempt to drive the C5 from John O’Groats to Land’s End later this year. He says: "I must have done around 30,000 miles in my C5. I bought it in 1998, when I was looking to buy a recumbent bicycle but I injured my knees and decided it would put them under too much stress. Then I found an old C5 which was for the scrap heap and decided to do it up. It only took a couple of weeks. It looks very Sci Fi, or like a UFO from a 1970s sitcom. "These days it’s much easier to drive one because you’ve got all the cycle lanes. It’s a great way to commute. You can’t get done for speeding and you can beat the traffic. Speed bumps can be a problem, though. There’s a mad joy in riding it and it’s great exercise. I’ve had one dodgy moment with a Greek lorry driver, but it’s such a strange-looking thing and easy for humans to pick up in their peripheral vision. Its odd shape means everybody sees you." Adam Harper, a 39-year-old former C5 salesmen, is not interested in a leisurely commute; he reached 150mph in his turbo-charged C5, a landspeed record for an electric vehicle. He says: "Up to 100mph, it’s like running on rails, really stable. At about 110-120 mph, it starts getting tricky. At that point, if a tyre blew up or something happened, you would surely be dead." Not everyone likes the C5 as much as these men. Scottish futurologist Ian Pearson describes the design as "ridiculous", adding: "You would never take that on the road." Pearson continues: "The C5 was dangerous. I am a fan of Sinclair, but you need to be a fanatic to drive one. Whether the car is safe or not, reality is of no consequence. Perception is what matters. I wouldn’t feel safe driving it off private roads. You are a sitting duck waiting for a truck to run over you." Adam Vaughan, managing editor of Stuff magazine for men, agrees: "It was eccentric and bold but hugely flawed and unsuited to the real world. Where were you going to use it? Most people don’t want a cross between a sidecar and a Reliant Robin." Yet both Vaughan and Pearson agree electric cars are the future. As Vaughan says: "In 20 years’ time we will use electric cars and bikes that you can charge at home. You won’t need to pay the congestion charge or for parking." So was the C5 an invention ahead of its time? Sinclair is adamant it was: "Having the benefit of hindsight, I would do what Mercedes did with the A Class and show it a year before launching it so people could get used to the idea. I do think that it has a place in the future, which is why I’m still working on lightweight vehicles. We will launch a lightweight folding bicycle some time this year. "I hoped the C5 would be the start of the electric car. Criticism of its safety was not fair at all. We sold 5,000 and I never heard of any serious accidents. The idea that it was dangerous was just invented by a bogus outfit [the British Safety Council] and was unfair. We didn’t sell it as a serious car because it was so unusual. There is still a future for electric cars, but progress is taking longer than we all thought. The world is slow to come round." SINCLAIR: 'YOU CAN'T WIN THEM ALL' Despite a proven track record in innovation, three of Clive Sinclair’s other ideas suffered the same fate as the C5: • THE MICRO-6: Launched in 1964: A matchbox-sized radio - nicknamed the Transrista as it could be worn on your arm. Sinclair claimed this was the smallest in the world and one which was 28 powerful enough to pick up signals from around Europe. It was neither. Smaller radios had been invented in the 1950s, and although it could technically pick up radio stations in Russia and Eastern Europe, it did so simultaneously, so you couldn’t hear a thing. There were also early problems with the battery holders. One ambiguous advertisement summed it up, declaring that "the Micro-6 cannot be too highly recommended". • THE BLACK WATCH. Launched 1975: Plagued by malfunctions, this digital watch flopped. The list of complaints was endless: the chip could be ruined by static from your shirt, carpets or airconditioned office; the accuracy of the quartz timing crystal was temperature-sensitive so the watch ran at different speeds in winter and summer, and the control panels malfunctioned, making it impossible to turn the display on or off - which often led to exploding batteries. • ZIKE. Launched 1992: Modestly promoted as "the greatest invention since the bicycle," the Zike was an ultra-light electric bicycle (weighing less than 11kg) with an electric motor hidden inside the frame. Priced £499.99, It had a top speed of about 10mph and recharged itself when ridden down slopes. The Zike went the same way as the C5. In sales terms, it was actually less successful, selling only 2,000 units, and production - intended to be 10,000 a month - ended after only six months. This article: http://news.scotsman.com/features.cfm?id=26142005 Sir Clive Sinclair: http://news.scotsman.com/topics.cfm?tid=963 Websites: Sinclair Research http://www.sinclair-research.co.uk Planet Sinclair http://www.nvg.ntnu.no/sinclair/ Verschiedene ROM-Versionen des ZX-81 Es gibt Anlaß zu der Annahme, daß es vom ROM des ZX 81 verschiedene Versionen gibt. Überprüfen Sie bitte jeweils mit PRINT PEEK an den angegebenen Adressen die Werte: Adresse Wert 699 33 700 255 1981 22 1982 0 2462 229 2463 205 3875 205 (wenn nicht: evtl. bei 3872) 3883 253 (wenn nicht: evtl. bei 3880) 3886 246 Alle Angaben sind in dezimal! Quelle: CHIP Das Mikrocomputer-Magazin Juni 1984 Nr. 6 Seite 234 f. (Gerhard Dohnke) 29 Es war einmal: ZX-TEAM-MAGAZIN 3/94 Joachim hat in der Programmtheke gleich zwei Päckchenzusammengestellt. Das erste enthält nützliche Tools und das zweite eine kleine Spielesammlung. Das ZEDNET, Teil 3 kommt von Gernot und darin nimmt der Zeddy Verbindung zu fernen Kollegen per DFÜ mit Akustikkoppler auf. Die Mitgliederliste enthält 60 Einträge. Kai verhilft uns zu einem Schnelleinstieg POWER3000 Neues vonne Küste, klar kommt wie immer von Willi. Ebenso die CeBIT 94 Nachlese, auf dem Photo könnt Ihr Willi und mich im jugendlichen Alter bewundern. Der ZX81-Emulator für den ATARI ist auch von Willi verfasst. Darin geht es um die Version von Christoph Zwerschke. Die Mitgliedervorstellung stammt von Kai. Kai hat auch herausgefunden, wie man Drucker und Floppy an einer PIO betreiben kann Jörg beschreibt seine Erfahrungen mit dem Umbau Farbmodul -> Zeddy. Und zu guter Letzt kommt eine weiter Folge von Willis MC-Kurs. [email protected] Das ZX-TEAM-MAGAZIN als pdf-Datei gibt es nur vorübergehend hier: http://www.zx-team.de/zx-team/stop/magazin_305.pdf Bitte veröffentlicht diese URL nicht. Impressum / Verantwortlich im Sinne des Pressegesetzes Redaktion: Druck und Versand: Titelseite und Mitgliederverwaltung: Peter Liebert-Adelt ([email protected]) Lützowstr. 3 D-38102 Braunschweig Tel.: 0531 / 2344660 Schulz-Electronic Gotthard Schulz ([email protected]) Gerberstr. 33 D-74635 Kupferzell Joachim Merkl ([email protected]) Bernbacher Str. 12 D-90768 Fürth Bankverbindung: J. Merkl, Stadtsparkasse Fürth, BLZ 76250000, Konto: 9024175 Die Unkostenbeteiligung für ein Kalenderjahr (6 Ausgaben) beträgt z.Zt.15 € Redaktionsschluß für Heft 4/2005 ist am 22.07.2005!! 30