zxsp - The Sinclair ZX Home Computer Simulator

History

Done

Current development version 0.7.4 pre 1

After i actually got some requests for it, i made zxsp compile on Lion.
It is not very stable, but it's better than nothing.

2008-06-24 - Version 0.7.3 pre 5

New in the development versions:

Jupiter Ace: generic memory, audio, video
Jupiter Ace: save to & load from .Snapshots: .TAPtap file
Modifier keys: ZX80ZX80: generic memory, audio, video
Modifier keys: ZX81ZX81: generic memory, audio, SLOW Done: 2000 – 0.1.8 and 0.2.2and FAST mode video
ZXSP: init with .Snapshots: .TAPtap file / instant .Snapshots: .TAPtap loader verified
Modifier keys: ZX80ZX80: init with .o file / instant Snapshots: .TAPtape i/o / Snapshots: .TAPtape i/o to/from audio file / load from Snapshots: .TAPtape
Modifier keys: ZX81ZX81: init with .p file / instant Snapshots: .TAPtape i/o / Snapshots: .TAPtape i/o to/from audio file / load from Snapshots: .TAPtape
Modifier keys: ZX81ZX81: 32K MMU registers for the +128K / +2: RAM $8000
MMU registers for the +128K / +2: RAM $4000
MMU registers for the +3 / +2A: RAM $8000
MMU registers for the +3 / +2A: RAM $4000
Ram
support
Fixed: save Snapshotssnapshot

2008-05-26 - Version 0.7.2

New in this version:

Updated: Included Paul Farrow's newest emulator Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
roms
for Modifier keys: ZX80ZX80 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX81ZX81
New: Jupiter Ace emulation using Paul Farrow's emulator Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
rom
.
New: Bi-Pak ZON X Done: 2000 – 0.1.8 and 0.2.2and Bi-Pak ZON X-81 Soundsound module for Modifier keys: ZX81ZX81 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX SpectrumZX Spectrum
New: stereo output
New: volume slider in "Tape recorder: OptionsOptions" menu. (Requires OS X 10.5)
New: record Done: 2000 – 0.1.8 and 0.2.2and replay audio files. (Requires OS X 10.4)
New: (try to) load Snapshots: .TAPtape files from "Open..." menu item
New: .TAP: Instant loading ".tap" filesinstant load from Done: 2000 – 0.1.8 and 0.2.2and save to Snapshots: .TAPtape files in the "Tape recorder: OptionsOptions" menu
Updated: load pzx files v1.0
Changed: behaviour of "record" button in the Tape recordertape recorder
New: context menu in Tape recordertape recorder for "new Snapshots: .TAPtape", "open Snapshots: .TAPtape" Done: 2000 – 0.1.8 and 0.2.2and "eject tape"
New: context menu in Keyboardkeyboard panel for selection of Game or Basic and Game mode: Basic modeBasic mode
Changed: moved "Check Update" to application menu
Changed: "Preferences: Auto start/stop tape for loading
Options: Auto start/stop tape recorder for loading
Options: Auto start/stop tape recorder for saving
Preferences: Auto start/stop tape for loading
auto start/stop tape
" combined for load Done: 2000 – 0.1.8 and 0.2.2and save (with the new "record" button behaviour)
Removed: "waitstates" item in "Tape recorder: OptionsOptions" menu. Setting is still available in ULA panel
Fixed: misc. bugs

2007-07-28 - Version 0.7.1

New in this version:

Mouse: Kempston Mouse InterfaceKempston mouse interface emulation.

Saving ".Snapshots: .Z80z80" Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
3.0 files now. Defined IDs for all supported machines.
Save ".80", ".o", ".81" Done: 2000 – 0.1.8 and 0.2.2and ".p" Snapshots: .TAPtape files for Modifier keys: ZX80ZX80 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX81ZX81.
Save Done: 2000 – 0.1.8 and 0.2.2and load ".Snapshots: .Z80z80" Snapshotssnapshot files for Modifier keys: ZX80ZX80 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX81ZX81.
Load ".pzx" v0.2 files.

Save highres Done: 2000 – 0.1.8 and 0.2.2and flashing Gif Screenshots and Movies: Gif ScreenshotsGif screenshots.
Save highres Done: 2000 – 0.1.8 and 0.2.2and animated Gif Screenshots and Movies
Gif Screenshots and Movies: Gif Movies
Gif movies
.

Audio-out handler extended to work with any number of channels, 1*n or m*1; but not n*m.
Fixed: Tape recordertape recorder playback on systems with different audio-in Done: 2000 – 0.1.8 and 0.2.2and -out device if audio-in is disabled.
Fixed: a very old bug (Done: 2000 – 0.1.8 and 0.2.2and, in OS 9 days, a dirty hack Done: 2000 – 0.1.8 and 0.2.2and not yet obviously a bug) in ".Snapshots: .Z80z80" file compression.

2007-05-13 - Version 0.7.0

New in this version:

Added: Modifier keys: ZX80ZX80 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX81ZX81 by means of Paul Farrow's emulator cartridges.
Machine images, Keyboardkeyboard images, Keyboardkeyboard translation for Modifier keys: ZX80ZX80 Done: 2000 – 0.1.8 and 0.2.2and Modifier keys: ZX81ZX81.
Tape recorderTape recorder: added decoder for .P Done: 2000 – 0.1.8 and 0.2.2and .81 files (Modifier keys: ZX81ZX81) Done: 2000 – 0.1.8 and 0.2.2and for .O Done: 2000 – 0.1.8 and 0.2.2and .80 files (Modifier keys: ZX80ZX80)
Instant Snapshots: .TAPtape loading of .O, .80, .P Done: 2000 – 0.1.8 and 0.2.2and .81 files
AssemblerAssembler: Assemblerassemble + load .Snapshots: .TAPtap, .80, .o, .81, .p files
AssemblerAssembler: create list file after failed assembly
Fullscreen modeFullscreen mode

2007-05-01 - Version 0.6.7.1

New in this version:

Tape recorder: tzx filesTZX file: implemented Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
1.20. not yet supported: GOTO/GOSUB blocks.
Added: French +2, Spanish +2, Done: 2000 – 0.1.8 and 0.2.2and Spanish +2A

2007-03-29 - Version 0.6.6

New in this version:

Instant Snapshots: .TAPtape loading of .Snapshots: .TAPtap files (48k only)
Support for .Tape recorder: tzx filestzx tape files (loading only)
Added: Modifier keys: ZX SpectrumZX Spectrum +2A
Added: Spanish Inves Modifier keys: ZX SpectrumZX Spectrum+ Done: 2000 – 0.1.8 and 0.2.2and Sinclair Modifier keys: ZX SpectrumZX Spectrum+ 128K
Panels for Joysticks: Built-in Joystick Portsbuilt-in joystick ports (+2, +2A, +3, TC2048)
Images of machines Done: 2000 – 0.1.8 and 0.2.2and interfaces

2006-11-18 - Version 0.6.5

New in this version:

USB Joysticksjoystick support
Joysticks: Kempston Joystick InterfaceKempston joystick interface
Joysticks: Sinclair Interface 2Sinclair Interface 2
Universal binary: runs on PPC Done: 2000 – 0.1.8 and 0.2.2and Intel Macs natively
Check update
Recent files menu

2005-01-16 - Version 0.6.2

New in this version:

Border
DebuggerDebugger, improved DebuggerCpu panel, Ula panel
Video beam indicator
Exact timing
Load ASS Assemblerassembler sources, Snapshots: .SCRSCR Gif Screenshots and Moviesscreenshot, Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
ROM
Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
roms

Posix threads
cstrings: quick hack to make the cstrings library multi-thread safe
Machine throttle 1 .. 2e7 Hz
Splash screen

Investigations on certain problems:

Crashing: Apple's NSLocks just History: Donedon't work. Maybe because i use the CoreAudio interrupt? I History: Donedon't know.

Cpu usage: cpu usage going up Done: 2000 – 0.1.8 and 0.2.2and down w/o reason. This seams to be only virtual, Done: 2000 – 0.1.8 and 0.2.2and in real an interference between sampling frequency of the cpu-meter Done: 2000 – 0.1.8 and 0.2.2and the interrupt frequency within zxsp. At least i have decided so.

Keys not going up: Apple sucks. not only, that i can get keyup events with different character code than in the matching key down event. But additionally under certain reproducible conditions i get no matching keyup event at all. Bug report ID 3903027 submitted. Nothing heared.

2004-11-26 - Version 0.6.1

New in this version:

Recording to .Snapshots: .TAPtap files, Tape recordertape recorder animation

Tape recorder: OptionsOption for audio playthrough: -10dB / -30dB / off (playthrough resulted in loop-back hissing on notebooks)

Tape recorder: OptionsOption: store individual Fullscreen mode: Preferences
.TAP: Preferences
Tape recorder: Preferences
preferences
for each Snapshotssnapshot

KeyboardKeyboard: fixed "autorepeat problem": OSX sends keydown Done: 2000 – 0.1.8 and 0.2.2and keyup events, which are used to update the Modifier keys: ZX SpectrumZX Spectrum keymap. But the keycodes passed in the keyup event may differ from those in the preceeding keydown event for the same key, if a Keyboard: Modifier keysmodifier key toggled in the meantime. Then the pressed key was not found by my 'keyup' handler Done: 2000 – 0.1.8 and 0.2.2and the pressed key stuck forever.

2004-11-17 - Version 0.6.0 - First release since 2.5 years

New in this version:

Load .Snapshots: .TAPtap files
Load from audio-in
Tape recorder: The built-in virtual tape recorderVirtual tape recorder (work in progress)
Keyboard: Virtual keyboardsVirtual keyboards
DebuggerCPU panel
Sound: AY control panelAY panel
Fullscreen mode: Preferences
.TAP: Preferences
Tape recorder: Preferences
Preferences
panel
High res screen update
Contended MMU registers for the +128K / +2: RAM $8000
MMU registers for the +128K / +2: RAM $4000
MMU registers for the +3 / +2A: RAM $8000
MMU registers for the +3 / +2A: RAM $4000
ram
wait states
$.TAP: EDFB level loaderedfb level loader

2004-11-03

Resumed work on zxsp. installed XCode. restored project.

File system crash

All changes since Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
0.5.2 are lost.

2002-03-04 - Version 0.5.10 - Last release in 2002

Save .Snapshots: .SNAsna Done: 2000 – 0.1.8 and 0.2.2and .Snapshots: .Z80z80 Snapshotssnapshot
Multiple instances
KeyboardKeyboard: game & Basic and Game mode: Basic modebasic mode
Audio input from audio-in
Using Andrew Owen's file icons

2002-02-17 – 0.5.0 – First public release

16k to +2, load Snapshots: .SNAsna&Snapshots: .Z80z80, ay, ay&Snapshots: .Z80z80 register display

2002-02-02 – OS X Project started

Started port from zxsp-mac (MacOS classic Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
) to OS X

2000 – 0.1.8 and 0.2.2

zxsp for classic Mac OS, with Keyboard: Virtual keyboardsvirtual keyboard Done: 2000 – 0.1.8 and 0.2.2and Tape recordertape recorder.

1999 – zxsp for Linux/X11/QT

This source is lost now.

1994 - 1996 – Mac Spectacle

Done: 1994 - 1996 – Mac SpectacleMac Spectacle for MacOS 7.

To Do

high priority - for next release:

milestones:

Timex high color Done: 2000 – 0.1.8 and 0.2.2and high res modes
Modifier keys: ZX SpectrumZX Spectrum +3 disc support

peripherals:

serial ports of 128K models
128K keypad
ZX Printer
Modifier keys: ZX SpectrumZX Spectrum +3 printer support
ZX Interface 1 Done: 2000 – 0.1.8 and 0.2.2and Microdrives
DevIDE
AMX MouseMouse
Fuller IF
Currah µSpeech
Cheetah Sweet Talker
Cheetah Spec Drum
Multiface 1 to 3
32k MMU registers for the +128K / +2: RAM $8000
MMU registers for the +128K / +2: RAM $4000
MMU registers for the +3 / +2A: RAM $8000
MMU registers for the +3 / +2A: RAM $4000
RAM
extension (Cheetah, Indescomp)
Lightpens (misc.)
JoysticksJoystick interfaces (Datel, AGF, Protek, dk'tronics, etc.)

other:

Tape recorder: The built-in virtual tape recorderTapeRecorder, .p files: decoded Snapshots: .TAPtape too long, but loads. why?
Modifier keys: ZX81ZX81: .TAP: Instant loading ".tap" filesinstant load from Snapshots: .TAPtape: takes some secs after loading to show prompt. why?
bwRenderer: leftmost partial pixel octet seems not to be drawn
bwRenderer: vert. center screen$ also if large top border
Modifier keys: ZX80ZX80: EI -> r-register D6 -> interrupt
Fullscreen mode: Preferences
.TAP: Preferences
Tape recorder: Preferences
Preference
: JoysticksJoystick IF nur laden, wenn auch ein USB-Joystick angeschlossen ist.
Tape recordertape recorder: ctrl-click on eject button => insert new & empty Snapshots: .TAPtape
NXPanels: 3rd state: open-if-attached
"save & restore panel state" Fullscreen mode: Preferences
.TAP: Preferences
Tape recorder: Preferences
preference

"remember last machine used" pref
Single stepping: Pause buttonHalt Cpu after last block loaded
Audio: high frequency damping
.Snapshots: .Z80z80: Fixit for "IF1 required"
Jupiter Ace: save/load .Snapshots: .Z80z80
Modifier keys: ZX81ZX81: save to Snapshots: .TAPtape
Bug report form
Documentation: Done: 2008-05-26 - Version 0.7.2
Done: 2007-07-28 - Version 0.7.1
Done: 2007-05-13 - Version 0.7.0
Done: 2007-05-01 - Version 0.6.7.1
Done: 2007-03-29 - Version 0.6.6
Done: 2006-11-18 - Version 0.6.5
Done: 2005-01-16 - Version 0.6.2
Done: 2004-11-26 - Version 0.6.1
version
0.7.2

NSAlert

instant Snapshots: .TAPtape loader: Tape recorder: tzx filesTZX files, PZX files

Fullscreen modeFullscreen: 8 bit indexed color screens do not work. maybe clut not set?
Fullscreen modeFullscreen: if selected Preferences: Resolutionresolution is not found Done: 2000 – 0.1.8 and 0.2.2and current Preferences: Resolutionresolution is not in list of selected Preferences: Refresh raterefresh rate then do not swich to "no change" but to any (first) of available modes
Fullscreen modeFullscreen: open Done: 2000 – 0.1.8 and 0.2.2and save dialog in specci screen. also needed for "startup in Fullscreen modefullscreen mode"
Fullscreen modeFullscreen: move panels resp. open panels on To Do: other:other display
Fullscreen modeFullscreen: open Done: 2000 – 0.1.8 and 0.2.2and save dialog: History: Donedon't quit FS if computer has 2 displays

use NSURLDownload instead of NSURLConnection ?!?

Spanish plus/128K: charset for Tape recordertape recorder; Keyboardkeyboard pict (drawing), Keyboardkeyboard panel Keyboardkeyboard translation

TC2048: MMU, ULA

auto-start-tape: monitor only the Snapshots: .ROM
MMU registers for the +128K / +2: ROM $0000
Rom
routines
Tape recorderTape Recorder: load aiff, wav, rles, csw
Tape recorderTape recorder: save .o Done: 2000 – 0.1.8 and 0.2.2and .p files
Tape recorder: tzx filestzx file: 'goto' Done: 2000 – 0.1.8 and 0.2.2and 'gosub'

Machine: reload Snapshotssnapshot: History: Donedon't reset timing Done: 2000 – 0.1.8 and 0.2.2and To Do: other:other settings
Machine: display real used/remaining processing time, measure long-run fps for performance test
Machine: performance monitor -> emergency throttle
Machine: precompensate kbd->screen latency by wormhole machine

Ass: accept // Done: 2000 – 0.1.8 and 0.2.2and 0x1234 Done: 2000 – 0.1.8 and 0.2.2and !=
Ass: local variables
Ass: #align
! Ass: missing #endif => crash
Ass: load .bin files

Cpu: re-entry after EI Done: 2000 – 0.1.8 and 0.2.2and superfluxuous prefix opcodes
Cpu: re-entry after Single stepping: Pause buttonHALT
Cpu: eliminate "+2" in waitmap access
DebuggerCpu panel: scroll Debugger: Memory view
Memory view: Memory view
memory view

DebuggerCpu panel: edit data in Debugger: Memory view
Memory view: Memory view
memory view

DebuggerCpu panel: add "no register selected"
DebuggerCpu panel: display & update Debugger: Memory view
Memory view: Memory view
memory view
(but History: Donedon't adjust base addr) when running

File: load AY file

Model: SE

Ula panel: show/edit waitmap Done: 2000 – 0.1.8 and 0.2.2and waitmap offset
Ula panel: graphical display of dropped frames
Ula panel: show contendion indicator for mapped pages
! Ula panel: 'as displayed by crt beam' screen update vs. 'current memory contents'
Ula: UnhandledInput(): when read which attribute byte?

Audio: re-route audio
Audio: mix audio-in to audio-out only if EAR/MIC are hi/lo (as for recording)

KeyboardKeyboard: hilighting for scorpion, sam coupé
KeyboardKeyboard: Mousemouse clicking for scorpion, sam coupé
KeyboardKeyboard: key caps for spanish, french, arabic, scorpion Done: 2000 – 0.1.8 and 0.2.2and sam coupé

Video: record in's into video file
Video: playback

Network: connect two speccis over udp
Network: bug/crash reporter

Valid HTML   Valid CSS