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