X128 W.I.P. Page
05/07/2010.
DISCLAIMER: I give no guarantees that I will ever implement/complete/release anything on this page.
Current experiments:
05/07/2010.
OK, having a lack of time, I've decided to go for an "open alpha", so that anyone can try it out. Please note that this version is far from complete and is probably not much use for the inexperienced Spectrum emulatist. The ZIP contains both DOS and Windows versions, so you can have "fun" trying them out. The text file is probably the best way to find out what's new, but it does waffle on a bit.
X128 V0.95B Open Alpha (DOS & Windows)
18/03/2010.
The DOS version now supports PS/2 wheel mice for the emulation of the wheeled Kempston mouse! The CuteMouse driver is the only DOS driver capable of supporting the hardware required.
15/03/2010.
Did you know that sound output under Windows can go up to 192 Khz, 32 bit, stereo (or more if you have a surround sound setup)? Well, so can x128. All those soundchip emulation imperfections can now be heard in far too much detail, in a manner than would require a platinum ear to be able to hear the difference. WAV files can be output in those formats too, some of which can't be played on Windows Media Player and require something like GoldWave instead. The DOS version has been updated to support SB16 16-bit output and 16-bit VOC file output - you love it!
11/03/2010.
Finally managed to get my Win'98 machine working. X128 Windows runs from double clicking, but not from the command line (windowed or otherwise). It ran normal Spectrum stuff at just about the right side of 100% on the AMD K6-2 400, which is not terrible but could be a lot better.
28/02/2010.
A slight reduction in available features, as Quazar-produced hardware is off the agenda.

Denied
25/02/2010.
I dug out my old PCs to try the latest version on. The 486 had a flat BIOS battery but was able to run it at about 30%. The AMD K6-2 400 wouldn't boot up at all. I hope the reduction in speed is purely down to emulating too many soundchips at the same time. I'm not an expert with Windows message handlers, but I've finally made one that doesn't use up all the CPU time in a single core, with the benefit that my laptop fan no longer zooms up to top speed.
20/02/2010.
SAM TAP loading added (takes ages), probably not at the right speed, but the ROM tape loading routines are robust enough to handle it. Also, SID card emulation added to the SAM, no filters and slightly suspect white noise though. I've done a bit of ATM Turbo 2+, but it's not quite ready yet.
Finally, I've fixed up the SAM FDC enough so that Prince of Persia works now!

SAM tape loading

SAM Sidplayer

SAM Prince of Persia Title

SAM Prince of Persia
09/02/2010.
Peeep... ATM Turbo and LEC 528K. The ATM Turbo has a 640x200 mode with 8x1 attributes and a 320x200 mode with one colour per pixel using 16 colours from a palette of 64.

ATM Turbo Menu

ATM Turbo Prince of Persia Title

ATM Turbo Prince of Persia

ATM Turbo Personal Nightmare Demo

ATM Turbo Personal Nightmare Demo

ATM Turbo Personal Nightmare Demo

ATM Turbo Personal Nightmare Demo

LEC CP/M Loading

LEC CP/M
02/02/2010.
Peeep... A bit of SAM. The sound and disk controller still need improving.

SAM Manic Miner
25/01/2010.
ZX81 emulation is a nightmare! I've totally rewritten it, but it still rolls and wobbles all over the place. I've added the "correct" volumes for the AY chip (I think) as well as the YM version. As a bonus, Turbosound AY is now working. The YM2203 FM status register is faked so that demos that use it can be played without freezing (but without the lovely FM sound).
14/01/2010.
Microdrive support finally added (for IF1 ROM v1 only, though). AMX and AY mouse fixed. Kempston Slave and Atari mouse added. The Windows version does not have proper mouse support yet (not capturing the mouse input) but the buttons and mousewheel do register. Currah Microspeech, Cheetah Sweet Talker, Fuller Orator and DK'Tronics Speech Synthesiser support! My sample set will need to be tidied up a bit though. The hardware menu (F3) now goes to three pages. More flexible number of tracks allowed in TRD files, so Robocop 1024 works.
03/01/2010.
Peeep... A tiny snippet of the Pentagon 1024SL supported - a 256x192 mode with one colour per pixel using the fixed 16 (15 unique) colour palette.

Pang 16C

Pang 16C

Borntro 2008 16C

Ball Quest 16C

Ball Quest 16C
24/12/2009.
Peeep. ULA+ site.

Sgt Helmet ULA+

Sgt Helmet ULA+

C64 converted piccy ULA+
26/07/2007.
A little bit of news! X128 V0.5 has been ported to the Atari Falcon by Peter Persson! It was shown for the first time at the Nordic Atari Show. It's a bit slow and needs a fast machine, but future versions should have much faster screen rendering.
("Follow the link" to get to the NAS2007 downloads).
Generally, I have been too busy with work to do anything on my projects for several months now. :(
But I have upgraded my 486 to 66 Mhz and 28 MBs! I've also bought a network card for it, so that I can compile on a faster machine and copy it across easily - eBay is good for something. ;)
Some people have been wondering if a new version of X128 will be released. I do want to make a brand new version, I feel that an up-to-date DOS emulator would be very useful for old laptops, etc. Additionally, I do want to make the code more portable, so I want to finish off a Windows version and maybe a console version (still trying to get an N64 version of gcc up and running).
03/05/2004.
Not a great deal (time constraints). The DOS and Windows projects have been reorganised so that they share as much source as possible. This allows me to write something in one version and be able to compile it straight into the other one.
The Windows version now runs at full frame rate on a P400, although the DOS version has got a bit slower, due to adding support for Covox, Stereo Covox, Soundrive and Specdrum audio (and the more generic mixer code, that has to handle a variable number of channels and convert them down into whatever the output format is).
The DOS version is partially through an attempt to get it to output 16-bit sound (handy when you're mixing 11 channels), but it never quite works... I can get it to sound OK at half-speed or playing half-correct/half-random noise at full speed. Due to the way the new sound code works, I suppose I could actually try and use the proper volumes for the AY chip... maybe.
15/11/2003.
I just thought I'd say a few words about x128w. It now works (the ZX80 and ZX81 aren't running very well, but they're not running very well in the DOS version either) and with sound! It needs to be a bit faster, as it needs frame 1/2 on a P400. "In-game" the keys are all working fine, but the front end key handling needs more work done to it. I also need to add some fiddly little FE screens that handle some control and video options in a way that I think Windows applications should handle them. (Although I tend to download DOS versions of software, so maybe other emulators have these things implemented already!)
Tests show that it runs under Win'98, but not XP! I don't know why.
30/06/2003.
I guess I couldn't put it off any longer... The tidying up of the code finally reached a stage where I could start work on the Windows version. It's at the early stages, less than two weeks old.

Not very exciting, but what did you expect?
It looks mostly like the DOS version, but can (optionally) run in a Window. All bit-depths are handled, except for 8-bit palletised on the desktop (which I'll try to fix).
Keyboard input works (needs a bit of debounce to stop the menus from affecting the game), but not joystick or mouse.
Parameters passed in don't work yet. Sound isn't being played, but is still being generated.
28/01/2003.
It's been a long time since I updated this page...
Anyway, I've added ye-olde VGA text mode (nicked from Z80), which should hopefully allow older machines to get a better frame rate. I tried it on my old 486SX-25 and it did indeed allow me to run at a higher, more playable, frame rate.
The other thing I've done is added support for banked VESA 1.1 modes (yes, I really am going backwards through time). I'd implemented it so that VESA 1.2 drivers would be supported, only to find that my old 486SX-25 only had a VESA 1.1 driver... A bit of modification and (really) slow compiling later, and it was astounding to see that old machine run 640x400, 640x480, 800x600 and 1024x768 resolutions, providing all the usual options that anyone who likes to have fun with shift-F11 will know about. Not very quickly (obviously), but not too bad. Just imagine what it'd be like if I stuck a 486DX2-66 Overdrive chip in it!
One snag is that X128 clearly uses up too much memory. It used to be happy in 640K (many versions ago) but now it looks like it needs roughly 4 or 5 free megabytes of RAM. I must try and reduce it, preferably to run on a 4MB machine (with or without a clean boot).
Oh, one other thing I'm doing is adding ZX81 tape support via VOC files. I've never actually owned a ZX81 (or a decent technical document), so it's not as easy as I thought it would be. There are some beneficial side effects....
Nice, but attempting to load VOCs in ZX81 mode, just shows up the weaknesses of my ZX81 emulation, for the moment.
29/08/2001.

02/03/2000.
21/02/2000.
I didn't think I'd do it, but I did! I changed it to deal with all disk images (internally) as if they were FDIs. This lets FDI, FDD and funny sized TRD files (80T SS, 40T SS, 40T DS) be used as well as the old TRD (80T DS). Although 40 track disks only work if you type "40" into the TR-DOS prompt. TR-DOS thinks that a 40 track disk is in an 80 track drive and automatically compensates by accessing TRACK*2 (which is not what I want in this case)...
I then went a step further, so now SCL and $? (Hobeta) files can be loaded by the automatic creation of a temporary TRD file in the background! So, 5 formats in all, I had to change my file selector to accept more extensions (there is now no limit, I pass it the same double zero terminated string that the Windows load/save dialogue box uses). Until I hear otherwise, that's every "Russian" format catered for.
The WD1793 code can now be used in either x128 or Multi with only 2 lines being changed (one of these is because of x128's old Z80 core and the other is because of a minor incompatibility issue with the Didaktik). When opening a disk, the addresses of get_track and get_data routines are passed to the function, this is what allows most of the portability and the ability to handle any uncompressed format thrown at it (including the MSX's DSK). The drive select/side select/motor/etc bits are made more generic by a cheapo method which really will have to be improved.
General emulation quality of the WD1793 has also been improved slightly, but not enough to get the Refresh demo working or to get round the protection system which is called "ARS PROTECTION" (ahem) in AnyTank (also used, in one form or another, in other demos/mags). Whether the FDI support is really working to it's full capacity is unknown. I don't do anything with the CRC bits and the only two FDI files that I managed to find were quite happy to work after they'd been converted to TRD files. I haven't managed to find any IS-DOS disks yet. "ADS 2.0p" now thinks that disks have 81 tracks instead of an infinite number, so: better, but not perfect.
And I probably shouldn't be calling it the WD1793. WD2793 might be a better name for it.
I have a limited amount of information on this, I know the ports that it uses and I know that it uses the same FDC as the Betadisk interface. I also know it's memory layout and I think I've finally figured out where I should be putting my patches so that it pages in. Unfortunately, all I get is "X Bad Device" error when I try to load a sector. The sector does load, it's just that some flags somewhere make it generate an error in BASIC. I do get the correct "Retry" and "Write Protect" messages when I leave the disk (image) out or write protect it when I attempt to write to it. Mind you, I don't have a D40/D80 disk to insert, so I just use a TR-DOS formatted disk... I have some documents on the disk format and the commands, so I could (...) generate a disk.
It takes ages to load one sector because the interface has the DRQ line attached to the NMI line and my Z80 core only allows NMIs every so often! A good excuse to rewrite the Z80 core... (Hmm, that "rewrite" word again...)
I've found some games in .000 format, but I don't know much about that either. It looks just like the output you'd get by saving to tape, but with an extra byte at the start.

Unfortunately this screenshot doesn't do anything to make this webpage look any less black and white.
31/01/2000.
Partial emulation - working well in slow mode, dodgy in hi-res games and rolling wildly in fast mode. The grey border is left behind from the file selector (which is still using the Spectrum screen). Some games lock up the emulator...

Good!

Ah....

Oh dear...

This is not very useful, it allows you to play Arcadia (which only supports Fuller joystick (and keys)) and you can play Matchday or International Matchday with any joystick! I'll add a "redefine keys" joystick later, except that I'll allow more than one fire button (Gryzor here we come). I'm also wondering whether "DK Australian" is a tongue-in-cheek name....
All this won't fit into an old-style .Z80 snapshot, so..... a new snap format may be required.
Considering (in a really hypothetical way...):
Requested Items:
Bye,
James McKay
(Please remove the TURKEYSLICES to reply).
(C) James McKay, 2010.