November 25, 2013

zxsp: Donate with Bitcoins (Update #2)

Keep zxsp Running and Collect Karma Points

Hello everybody,

i have added my Bitcoin wallet as a method for donations. I'm pretty new to this stuff, but i think i have done it right. If you have a wallet on your smartphone then you can scan the QR code, else click on the Bitcoin link or copy&paste my Bitcoin address into your wallet app.

What are your donations for? Besides of cheering me up and encouraging me to keep on working on zxsp, i will probably use them to get a paid Apple developer account which is US$99 per annum. It is required to put an app – free, free to play, or paid – in Apple's app store (plus 30% of any revenue).

With Mavericks they have tightened the screws once more: Now developers must register, or OSX will refuse to start their application unless the user has expressively allowed installation from any source. So i have considered to pay US$99 per year now, just to give away zxsp for free.

So, what are your donations for? Mostly for Apple, probably. :-/

    ... Kio !

If you have a Bitcoin wallet on your smartphone use the QR code to the left, else click on this link: 1BJ9kY9qm7Mg2UKj9eZxPyK42mzkqe1LKf or copy&paste the link into your wallet application. If you have a Litecoin wallet on your smartphone use the QR code to the right, or click on the link: LZtPuXCwjM11XKEexrdArGmNSqXPjzmXCP or copy&paste the link into your wallet application.

You can also donate with PayPal:

Add a comment which feature you'd like to see next or just say thank you. :-)
Donations will be used to cheer me up and keep me working on zxsp.

November 23, 2013

zxsp 0.8.0pre22: Timex Sinclair 2068 family; Updated

Hello everybody,

and on it goes: 3 new models added! Ok, basically it's only one model which comes in 3 flavours:

The Timex Sinclair 2068 Family

  • The Timex Sinclair 2068 (USA)
  • The Timex Computer 2068 (Portugal)
  • The unipolbrit 2086 (Poland)
Technically they are very similar, not to say identical, but there are minor differences:
The US version runs with 60 Hz, the European variants with 50 Hz frame rate.
The Polish version had only one joystick port, the right port was replaced by a parallel "Centromix" port. But, *wonder*wonder*, *my* U2086 had 2 joystick ports! So currently the U2086 is also emulated with 2 joystick ports and no parallel printer port. I currently don't know of any software using the printer port anyway. Even the precise usage of some control pins are still discussed.

TCC dock inspector
These computers had a Rom module port, the so called Timex Command Cartridge dock. These are stored on .dck files nowadays and i have included some samples in this distribution. Only a very limited number of titles were ever produced by Timex – Androids, Budgeter, Casino1, Crazy Bugs, Flight Simulator, Pinball, States And Capitals, and Penetrator – but there are also some Sinclair Interface II adaptations and some emulators for various variants of the ZX Spectrum, especially the ZX Spectrum emulator itself. This was even bundled with every U2086 computer AFAIK.

Note: if someone has games or demos which use the AY sound chip and joysticks of these machines could he please be so kind and send me a copy? Thanks in advance!

Some people say that the "86" in unipolbrit 2086 is not a spelling error but a pun on 8086 or an indication of the year of release – but then "Centromix" is probably no spelling error either... B-)

Update: Instant load tape files is currently broken on these machines. You must disable instant tape loading and load them in realtime. This will be fixed in the next release.

Other Changes

I have added recent-files menus to the SPECTRA and Sinclair Interface II inspector as well to the Dock inspector. Inserting a rom now also adds it to the global "recent files" list as well so that CMD-R reloads it.
The TK95 got a rear-side joystick connector image and a real photo of the keyboard – not sure whether this is an improvement thou.

November 1, 2013

zxsp 0.8.0pre21: misc. old stuff

Hi Folks,

bad news: i can't make up my mind for a picture. A blog post without a photo? – wait – there will be one, at the end of the post, maybe. :-)

New in this version:

misc. old stuff

"misc." consists of the following:

Video Beam Indicator

Yeah! Finally, the video beam indicator is back again. Right now only for the color machines, but the b&w machines know exactly where the beam currently is anyway. ;-)

The video beam indicator is a red&yellow blinking cursor at the current position of the video beam. It is activated when the cpu clock is throttled down to 100 kHz or less or when you single step in the debugger. This is an aid for anybody who wants to write a demo with some critical timing. For those who only want to play games it's a "nice to have" for curiosity. B-)

Load assembler source

Now it's possible (again) to load snapshots and tapes from assembler source. The source will be compiled by the built-in zasm assembler and the resulting snapshot will be loaded as if it was initially selected to load. The source file is stored in the "recent files" list so that reloading it is easy.

It's not trivial to get the headers of .sna or .z80 files right, so i have included template files in this distribution.

Supported target file types for assembler sources are .sna, .z80, .ace, .rom and .tap.

Load .rom and .scr files

Also, it is now possible again to load .rom and .scr files. 

Load .rom files: Based on the rom size, the currently running machine and the default machine in the preferences, the application choses the best fitting machine and uses this to load the rom file. If am Interface 2 or a SPECTRA interface is attached, then 16K roms will load as a rom cartridge. Else they will replace the built-in rom.

Load scr files: If the current machine is a color machine, then the .scr screenshot is loaded into the currently displayed video ram of that machine. Else, based on the default machine in the preferences, a color machine is chosen and started, but probably the screenshot will not be displayed very long in this case. 

Load .tap and .dsk files

Tapes and disks can now be loaded like a snapshot. zxsp choses the best fitting machine based on the file type, the currently running machine and the default model in the preferences. Note: a tape or disk normally does not contain any easily retrievable information about the required machine, so you should select the desired machine before loading a tape or disk.

Load .dsk files: That's fairly easy, as these disk files can only be loaded into a ZX Spectrum +3. zxsp just tries to select the British or Spanish version based on the currently running machine and the default model, if the currently running machine is not a +3.

Load .tap files: These tape files can only be loaded into a color model or into the Jupiter Ace. zxsp tries to detect whether this is a Jupiter Ace tape and loads it into a Jupiter Ace, else it uses the currently running machine, if it is a color model, else it tries to determine the best model based on the default model, starts it and loads the .tap file. Most .tap files can be instant-loaded entirely, giving the impression of loading a snapshot. If the program uses it's own tape loader code, instant loading does not work and you have to wait until the tape is loaded. You may open the tape recorder window (if it isn't opened by default) and wind back and fore if required.

Load .tzx files: These tapes may be loaded into every model. zxsp can't tell beforehand which might be the best fitting one. So it loads a .tzx file always into the current machine. You should always start the desired machine before loading a .tzx file. Frequently .tzx files contain programs which use custom loaders. Then instant loading will not work and you have to wait for the game loading as normal.

Loading a tape like a snapshot vs. inserting a tape into the tape recorder
Tapes and disks are no snapshots. They contain the data of their respective represented media. When you double-click or open a tape or disk file with "open file", then zxsp secretly loads a snapshot which was saved at a point where it started to load a program from tape or disk and inserts the requested tape or disk into the respective drive. Additionally, it sets the tape recorder to instant-load. The result is, that it looks like zxsp is loading the tape or disk like a snapshot, though you now know it isn't.

This is a convenience feature, though. Normally you should launch the desired model, insert the tape into the tape recorder (or the disk into the disk drive) and type LOAD "" or similar. Then you get back more of the original feeling. You can select instant-load and auto-start-stop the tape here as well.

Load .tap files into the Jupiter Ace
You may not know it, but the Jupiter Ace had no load tape command with wildcard and it had no auto-start feature. So zxsp takes some effort to supply the tape loader snapshot with the required name. But it does not know which command is required to start the game or to load subsequent data blocks. Once the first dictionary is loaded you are alone. You may open the tape recorder and wind the tape fore and back to see the names of following blocks, but you'll have to pick the info on how to load them and how to start the game from it's documentation.

Display parameters for the b&w Ulas

I reworked the display of video parameters in the Ula inspector for all models, but especially the b&w models, which up to now just showed some default values collected from various sources in the net. They now show the actually used display parameters, though some, most notably the cpu cycles per scan line, still just show the nominal values.

Select 50 Hz or 60 Hz model for the TK clones

I have added a 50 Hz / 60 Hz switch to the Brazilian TK models. I'm not sure about the cpu clock for the color 50 Hz models. If someone owns a TK85, TK90X or TK95 could he please determine the model (50 vs 60) and tell me the quartz frequencies? 


Fixed a problem with the .ace files saved by zxsp. 
The two final bytes were missing and made them not load. :-|

Fixed spurious crash when switching between models.
This was annoying me for a long time now and i really thought it was Qt to blame. But it was my fault and the error only popped up at an unexpected place, misleading me for quite a while. Under certain race conditions a mutex was released twice and then another thread waiting for this thread to terminate crashed in it's wait position, somewhere deep in the library function. :-/ 
Actually this fix made me issue version pre21 today.


An image, an image ...

.ace sample program loaded from assembler source animated gif file made with zxsp