ZX80/81-Emulator für iOS

ZX-Team Forum
Antworten
Benutzeravatar
bodo
User
Beiträge: 303
Registriert: 14.02.2007, 17:21
Kontaktdaten:

ZX80/81-Emulator für iOS

Beitrag von bodo » 28.07.2017, 13:20

Ich weiß nicht mehr, wie ich darauf gestoßen bin, aber seit einiger einiger Zeit gibt es von einem netten Schotten (Kevin Palser) einen gut funktionierenden Emulator für unseren kleinen Liebling, der auf den Apfel-Mobilgeräten läuft. Seit kurzem hat der auch eine eingedeutsche Benutzeroberfläche. ;-) Im App-Store findet ihr ihn unter "ZX81".

Wegen der App-Richtlinien des Systemherstellers dürfen keine P-Dateien von "außen" geladen werden. Daher sind eine Menge Beispielprogramme dabei. Natürlich könnt ihr im laufenden System eigene Programme eingeben und als Schnappschuss speichern, so dass die Arbeit nicht vergebens ist.

Von meinem Arbeitgeber wurde ich mit Telefon und Tablet dieses Herstellers ausgestattet und konnte das Wunderwerk ein bisschen ausprobieren. Und ich muss sagen, es funktioniert gut, soweit die mitgelieferten Programme und die kleinen BASIC-Tests das aufzeigen können! Besonders nett ist, dass eine Bluetooth-Tastatur am Tablet damit läuft.
B0D0: Real programmers do it in hex.

Benutzeravatar
msch
User
Beiträge: 3463
Registriert: 05.02.2013, 15:42
Wohnort: Hessen, Rhein-Main-Gebiet

Re: ZX80/81-Emulator für iOS

Beitrag von msch » 28.07.2017, 13:55

Die App ist klasse und zudem komplett eingedeutscht. *

Website zur App:
http://zx81-ios.weebly.com/

Bei iOS kann man Apps, die das unterstützen, Dateien über die Dateifreigabe in iTunes übertragen:
https://support.apple.com/de-de/HT201301

Ich weiss aber nicht, ob die App das supportet... **

*) ... sehe gerade, der thread-Ersteller ist hierfür verantwortlich :-)

**) ... tut sie nicht, weil Apple die Dateifreigabe für Program-Code inzw. untersagt.
manche meinen lechts und rinks kann man nicht velwechsern.
werch ein illtum! (lichtung, Ernst Jandl)

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

Re: ZX80/81-Emulator für iOS

Beitrag von Paul » 28.07.2017, 18:22

Wie ich zur Zeit des ersten Erscheinens leider feststellen musste werden ältere IOS Geräte wie mein iPhone 5 und mein iPad leider trotz aktuellem IOS nicht mehr unterstützt.
Wer mit seiner Hardware nicht aktuell ist bitte nicht zu früh freuen.
Liebe Grüße Paul
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
msch
User
Beiträge: 3463
Registriert: 05.02.2013, 15:42
Wohnort: Hessen, Rhein-Main-Gebiet

Re: ZX80/81-Emulator für iOS

Beitrag von msch » 28.07.2017, 19:09

Ja, es wird ein Apple A7 (iphone 5s, ipad Air oder neuer) vorausgesetzt. Grund ist die Metal API (für hardwarebasierte Grafikunterstützung, vergleichbar mit OpenGL). Ich bin bei solchen Hardwareanforderungen immer hin und hergerissen, insbesondere, wenn an sich schwachbrüstige Homecomputer emuliert werden sollen. Wenn man sich vor Augen führt, dass hier mit Kanonen auf Spatzen geschossen wird...

Ich hatte kurz mit dem Entwicker Kontakt, er könnte eine .P-Fileunterstützung für im und export locker realisieren, würde dann aber riskieren, dass die App aus dem Store fliegt.

Was Emulatoren angeht, ist Android deutlich besser geeignet, weil weniger restriktiv als iOS (insbes. was das Filesystem angeht) - und das sage ich als Fan von iOS (ich wollte nichts andere auf meinem Tablet/Smartphone haben. Für Android gibt es Zed Ex:
https://play.google.com/store/apps/deta ... droid.zx81
manche meinen lechts und rinks kann man nicht velwechsern.
werch ein illtum! (lichtung, Ernst Jandl)

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

Re: ZX80/81-Emulator für iOS

Beitrag von bodo » 28.07.2017, 22:49

Tatsächlich wird bei der Bildschirmemulation ein ganz schöner Aufwand getrieben: Jedes Pixel ist ein Vektorobjekt, das dann entsprechend der Größe des emulierten Bildschirms skaliert wird. Auf meine Anmerkung hin, dass dann jede Menge gerechnet werden muss, entgegnete Kevin (der Entwickler) zu Recht, dass das ja die Hardware macht; ist quasi geschenkt.

Dass ganz bestimmte "extreme" Programme laufen (die 1KB-HRG-Sachen zum Beispiel), ist ein deutlicher Hinweis darauf, dass die Emulation auch sehr aufwendig ist. Wie beim EightyOne müssen die Bildschirm- und die Prozessoremulation taktgenau zusammenarbeiten… Auch das erfordert sicher eine leistungsfähige Basis. Es ist halt wie in der PC-Spiele-Welt, manchmal muss die Hardware Mindestanforderungen genügen, auch wenn die Software (Betriebssystem) auf weniger läuft.

Jetzt fehlt nur noch, dass einige Nutzer sich die Emulation einzelner Erweiterungen wünschen, wie Audio oder Massenspeicher. Kevin ist allerdings (vermutlich inzwischen - ich bin nicht ganz auf dem aktuellen Stand) frisch gebackener Papa und damit für die nächste Zeit mit einem anderen Zwerg sicher völlig ausgelastet.
B0D0: Real programmers do it in hex.

Benutzeravatar
siggi
User
Beiträge: 2161
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: ZX80/81-Emulator für iOS

Beitrag von siggi » 28.07.2017, 23:15

bodo hat geschrieben:
28.07.2017, 22:49
Tatsächlich wird bei der Bildschirmemulation ein ganz schöner Aufwand getrieben: Jedes Pixel ist ein Vektorobjekt, das dann entsprechend der Größe des emulierten Bildschirms skaliert wird.
Der Original-Zeddy macht das ganz locker ...
Auf meine Anmerkung hin, dass dann jede Menge gerechnet werden muss, entgegnete Kevin (der Entwickler) zu Recht, dass das ja die Hardware macht; ist quasi geschenkt.
Jepp, der Original-Z80A ist nicht mehr sooo teuer ...
Dass ganz bestimmte "extreme" Programme laufen (die 1KB-HRG-Sachen zum Beispiel), ist ein deutlicher Hinweis darauf, dass die Emulation auch sehr aufwendig ist.
Dass diese "extremen" Programme aufwändig sind, weiß auch Dr Beep ...
Wie beim EightyOne müssen die Bildschirm- und die Prozessoremulation taktgenau zusammenarbeiten…
Und wie beim Zeddy auch, wenn er die Pixel in den Modulator drückt ...
Auch das erfordert sicher eine leistungsfähige Basis.
Z80 4E4 ;-)
Es ist halt wie in der PC-Spiele-Welt, manchmal muss die Hardware Mindestanforderungen genügen,
Jepp: 1 KByte RAM und mindestens 0,00325 GHz
auch wenn die Software (Betriebssystem) auf weniger läuft.
z. B. nur in 8kByte ROM
:)
Jetzt fehlt nur noch, dass einige Nutzer sich die Emulation einzelner Erweiterungen wünschen, wie Audio oder Massenspeicher.
Also Piepstöne und Cassettenrecorder ..
Kevin ist allerdings (vermutlich inzwischen - ich bin nicht ganz auf dem aktuellen Stand) frisch gebackener Papa und damit für die nächste Zeit mit einem anderen Zwerg sicher völlig ausgelastet.
Also ist Kevin nun ein "Micro-Controller"?

;)
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
msch
User
Beiträge: 3463
Registriert: 05.02.2013, 15:42
Wohnort: Hessen, Rhein-Main-Gebiet

Re: ZX80/81-Emulator für iOS

Beitrag von msch » 29.07.2017, 14:22

Der Entwickler, Kevin Palser, hat diesen thread verfolgt und sich bei Bodo und mir per email gemeldet. Hier sein Statement, welches explizit zur Veröffentlichung hier freigegeben ist:
The starting point for the app was a Mac OS X (now called macOS) written around 2010 in Objective-C using OpenGL. This was a playground for much of the early iOS development and if it had continued down this route perhaps earlier iOS devices would have been supported by the ZX81 app. In fact the app itself is really a testbed for allowing me to use the latest Apple frameworks as much as being motivated by the ZX81 emulation challenge.

When Swift appeared I thought to hell with it and decided to go the whole hog and switch to Metal too. Using vector graphics might seem extreme but it really requires very little of the resources of iOS devices thanks to their modern graphics chip set, especially for the simple tasks required from this emulator.

Take the following stats as being a little exaggerated due to the overhead of the devices simultaneously gathering profiling data. The ZX81 app on an iPhone 7 uses about 17% of the device processor time. Whilst on an iPhone 5s it needs up to 55%. So if benchmarks (https://browser.geekbench.com/ios-benchmarks) are to be trusted, the ZX81 app would need about 90% of the processor time of a iPhone 5. This percentage would be increased further because OpenGL would be required using more of the main processor cores times. I am not prepared to release a version with such poor performance characteristics.

So why does it require so much processor time? The EightyOne emulator has been around for a while now so surely the past desktop processors at the time weren't much better at the time than a iPhone 5? GeekBench v2 would suggest its processor was roughly equivalent to a 2Ghz Pentium M. It would be interesting to compare how much processor time EightyOne requires on a similar set-up and how many frames per second can be managed.

There are other 8bit computer emulator apps that run on earlier iOS devices. However, they have the luxury of being able to map video RAM more directly and not have to simulate processing a video sync signal. Obviously, it's not a 32bit vs 64bit iOS device scenario that rules out the iPhone 5 and older devices.

Could the ZX81 app be coded to run more efficiently? Perhaps I could strip out the extra conditions for the Z80 undocumented flags. I could also try to switch back to C instead of Swift for the ZX80 core code. My thoughts are that it is not worth my effort and I've done my best to optimise it. I am nostalgic for the ZX81 but not older iOS devices (he writes with his original iPhone carefully wrapped up in storage). With the aggressive upgrade cycle of mobile device owners, a year or two from now few iOS owners would notice let alone care that an app needs an A7 or above.
manche meinen lechts und rinks kann man nicht velwechsern.
werch ein illtum! (lichtung, Ernst Jandl)

Dr Beep
User
Beiträge: 167
Registriert: 23.03.2009, 07:16
Wohnort: Boxmeer, Niederlände
Kontaktdaten:

Re: ZX80/81-Emulator für iOS

Beitrag von Dr Beep » 04.08.2017, 13:02

Der Emulator war noch nicht perfekt.

Einige 1K Hiresspiele funktionierten nicht (korrekt).
Ich habe Kevin gesagt was fehlte und Kevin had in Updates dei Änderungen mitgenommen.

Der Emulator hatte Fehler in Bildaufbau und 1 Opcode war falsch emuliert.

Jetzt laufen alle 1K Hiresspiele einwandfrei.
Bilddruck vom ZX Spectrum zu non ZX-Drücker; 30 Bytes genügt!

Antworten