• Please review our updated Terms and Rules here

Cromemco dazzler replica project

New version 2.0 of the Dazzler test utility available. Please check https://github.com/akueckes/Cromemco-Dazzler-RevD.

I've fixed some minor issues and also added the capability for the playback of video clips. Hope it is working with real hardware. The playback function is using the vertical sync flag from the Dazzler for timing and in order to avoid screen garbage. Again, only BDOS is required, both 8080 and Z80 supported.

Have fun :)
 
I forgot to mention, the sample clips contain 45 frames (hex 2d) for MONKEY.MOV and 12 frames (hex 0c) for ZAXXON.MOV.

For the time being, there is no agreed Dazzler file format for including meta data, so every file needs some description with it.
 
Concerning my own Rev D production, I am struggling a bit with JLCPCB. I've sent them the Gerbers which look perfectly in their Gerber viewer, plus clear instructions on not removing the silkscreen on areas without solder mask (which they actually offer as an option in their instructions) to better match the original PCBs, but this works out tough. It seems that everything outside the standard path is not really their strength.

To be fair, JLCPCB gives phantastic prices, and the quality is still quite good. And experienced personnel and customization simply is expensive.

Concerning the ENIG plating, it seems almost impossible to have that done on the connector fingers only.

All that is cosmetical only, and has no impact on the function. But I am interested in how close we can get to the originals.
 

Attachments

  • JLCPCB Dazzler RevD first production run.jpg
    JLCPCB Dazzler RevD first production run.jpg
    978.8 KB · Views: 11
Last edited:
I forgot to mention, the sample clips contain 45 frames (hex 2d) for MONKEY.MOV and 12 frames (hex 0c) for ZAXXON.MOV.

For the time being, there is no agreed Dazzler file format for including meta data, so every file needs some description with it.

This is awesome, the ZAXXON.MOV plays back perfectly in color and looks great.

However, I'm having trouble with the MONKEY.MOV file, it plays back the first few frames but then glitches out & repeats.

 
(y) MONKEY.MOV is an example for 512 bytes/frame and greyscale mode, ZAXXON.MOV for 2048 bytes/frame and color mode. I limited the clip size to ~24K so that they play on most systems. Quality will improve with the number of frames (smoother playback). Guess I'll also include larger samples, but I am not sure about the free memory size of your system.
 
Last edited:
Attached is a ZAXXON.MOV with 22 (hex 16) frames. Should nearly double the frame rate and work with a 48K CP/M with Dazzler DMA address 0800 hex (the Dazzler test utility requires ~1,500 + 256 bytes offset).

CCP area probably will be overwritten, though (TPA is 41K only).
 

Attachments

  • ZAXXON.ZIP
    13.8 KB · Views: 3
Last edited:
It would be interesting to dig out some of my old 'tile' game software libraries (if I can find them) and see if I can get that to work with the Dazzler...

Dave
 
In the Dazzler Games manual there is a source listing for Gotcha! which includes some code for using the joysticks and creating sound. I wanted to recreate the Z80 source file so I could try compiling. I OCR'd it first and then did a lot of manual cleanup. Attached is the source file which has been tested to compile & run. Can't do anything without a joystick though. :)
 

Attachments

  • gotcha_z80.txt
    11 KB · Views: 12
Amazing! I was just typing in Gotcha! because I couldn't find it anywhere. You just saved me a lot of time.

I'm trying to finish up Dazzler emulation on AltairZ80 simulator. I'm having a problem getting the EVEN/ODD and VBLANK bits working. Would anyone know where I can get a CDOS disk image containing the Cromemco Z80 assembler and linker? I want to assemble Gotcha! from source.
 
I'm trying to finish up Dazzler emulation on AltairZ80 simulator. I'm having a problem getting the EVEN/ODD and VBLANK bits working. Would anyone know where I can get a CDOS disk image containing the Cromemco Z80 assembler and linker? I want to assemble Gotcha! from source.

That's awesome, that'll greatly simplify development. I can prep a bootable image for you. Anything else you want on it? edit or screen.com? (I don't use these).. link and I'm assuming the graphz80.lib..
 
Amazing! I was just typing in Gotcha! because I couldn't find it anywhere. You just saved me a lot of time.

I'm trying to finish up Dazzler emulation on AltairZ80 simulator. I'm having a problem getting the EVEN/ODD and VBLANK bits working. Would anyone know where I can get a CDOS disk image containing the Cromemco Z80 assembler and linker? I want to assemble Gotcha! from source.

I tried to modify the Dazzler section in Udo Munk's z80pack emulation (see https://github.com/udo-munk/z80pack) to properly show even/odd scanlines with the right timing, alternately showing the interlaced fields. Which includes the proper setting of the flags in the 0E register. Udo's implementation already covers the end of frame flag, but lacks the odd/even flag, and does not separate even and odd fields.

However, this goes to the limits of what timesharing operating systems such as Windows or Linux can support, and it is also a challenge for a X11 based display. Synchronization is key, but timer resolution in general is around a millisecond, which is far too long for the 15 kHz line frequency. With some Linux implementations it sometimes works better using nanosleep(), but the result differs from system to system.

It would be interesting, though, at which point exactly the odd/even flag in register 0E changes. From the schematics it seems to be coupled with the memory address counter, so it probably refers to a pixel row rather than to a scanline. Maybe someone with a real Dazzler can help.
 
I tried to modify the Dazzler section in Udo Munk's z80pack emulation (see https://github.com/udo-munk/z80pack) to properly show even/odd scanlines with the right timing, alternately showing the interlaced fields. Which includes the proper setting of the flags in the 0E register. Udo's implementation already covers the end of frame flag, but lacks the odd/even flag, and does not separate even and odd fields.

However, this goes to the limits of what timesharing operating systems such as Windows or Linux can support, and it is also a challenge for a X11 based display. Synchronization is key, but timer resolution in general is around a millisecond, which is far too long for the 15 kHz line frequency. With some Linux implementations it sometimes works better using nanosleep(), but the result differs from system to system.

It would be interesting, though, at which point exactly the odd/even flag in register 0E changes. From the schematics it seems to be coupled with the memory address counter, so it probably refers to a pixel row rather than to a scanline. Maybe someone with a real Dazzler can help.

I ended up providing even/odd in the 0E register on a millisecond resolution. 0-25ms alternate even/odd and EOF at 26-29ms. It isn't accurate, but software looking at those bits will run rather than wait. AltairZ80 has peculiar timing, especially when wanting to throttle the CPU to a specific speed. It has been a long time since I've looked at z80pack. As I recall it has a nice front panel interface.
 
I ended up providing even/odd in the 0E register on a millisecond resolution. 0-25ms alternate even/odd and EOF at 26-29ms. It isn't accurate, but software looking at those bits will run rather than wait. AltairZ80 has peculiar timing, especially when wanting to throttle the CPU to a specific speed. It has been a long time since I've looked at z80pack. As I recall it has a nice front panel interface.
I see. I guess it is pefectly ok to simulate regular changes for general timing tasks. I am utilizing the odd/even flag for dynamically tweaking color register and graphics mode on the fly, which greatly extends the Dazzler's capabilities. Would be nice to check them with the simulation, too. SIMH is a great simulation framework.
 
Back
Top