Conways life on Cromemco Dazzler

Go To Last Post
20 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have an implementation of life running, using my display code for the 132x132 nokia display, and an M644. I'd like to make it a true copy of the Cromemco Dazzler version, which I was lusting after in high school. Does anyone out there have an actual screen picture of the Dazzler playing life?

The Dazzler was the first color video card, with glorious SIX BIT color, variable screen resolution, and blazing fast 1Mby/sec DMA!
http://www.altair32.com/pdf/TV%20Dazzler%20Popular%20Electronics%20Article.pdf

I found the manual online, which says that death cells are red. My question is wether they stay red (as in screen ends up as mostly red cells) or do they somehow go to black after another generation?

I need to work on some speedups, but it's running now with 64x64 resolution, which was not the highest resolution the dazzler could do, but at 128x128, I'm down to single pixel cells on a 1" display, and they're hardly visible.

The 64x64 version takes less than 2k ram since I'm using two bits per cell.

Anyway, since I'm doing my tribute to the Dazzler, I thought I'd like to get it as close as possible to the real thing.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi! Are you planning on making your AVR Dazzler replica on an S-100 board?

Thanks! Andrew Lynch

PS, I have an old Dazzler set aside for repair one of these days..

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Nope.. It's just the avr and a nokia display.

I was just looking at the display specs a while ago, and the 132x132 display resolution is actually just a bit better than the dazzlers max resolution, so that got me thinking, plus I wanted to learn bit operations in C, and I liked the challenge of squashing it into the available ram.

I suppose one COULD share 64k SRAM between two AVRs, run CP/M on one of them, and have the other one be the display controller.. :)

That could be fun.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well the article does contain an octal program listing. you could always disassemble it to see.

I don't know how it was implemented in the original, but here is how I would do it. I would essentially process on "half generations" In the first half mark any birth or death cells with the appropriate colour. In the second half, clear any death cells to black, and convert the birth cells to the normal "life" colour (blue in this case).

This would be the simplest way to integrate the colours into the existing game logic.

Writing code is like having sex.... make one little mistake, and you're supporting it for life.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yeah, I thought about that.. But I was hoping to implement it the same way they did, as far as possible.

They did it pretty darned efficiently.. My code is about 3k now, but of course that's in C. :)

One other thing that's nagging at me..
The display takes 9 bit SPI. At the moment I'm just bit-banging it. I thought that it would be pretty simple to hack on the 9th bit ahead of an 8 bit SPI byte, but that's not looking too good. For one thing, the mechanism of knowing when the SPI is empty is pretty weak, compared to the USART. I'm not happy about it, but I may end up staying with the bit-banged version.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

well, if you're continually stuffing the SPI, you 'could' simply pack 8 9bit values together as 9 bytes and send that. Though there is a lot of shifting involved to set it up, so it may not be worth the hassle.

Consider using the USART in SPI mode... you have better buffering then IIRC. (but no 9 bit mode)

Actually, knowing when the SPI is empty is pretty simple. Whenever SPIF is set, a transfer is fully complete (AKA TX buffer is empty, RX buffer is full). At that point you can bang out your 9th bit, and then load SPDR with the next value to send.

Writing code is like having sex.... make one little mistake, and you're supporting it for life.

Last Edited: Thu. May 14, 2009 - 05:17 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

Cromemco

Wow, I haven't heard that work in a couple lifetimes.
Quote:

but of course that's in C.

Don't get me started.

Quote:

The display takes 9 bit SPI

I thought it was disappointing when the AVR USARTs got SPI-master capabilities that they didn't allow n data bits like in UART modes.

I never thought of it in detail, but would synchonous USART mode work? I guess not 'cause the start/stop bits would have a clock and screw you up.

I'd guess that bit-banging the 9th bit would end up to be the fastest, 'cause then you could fetch the next value while 8 bits are clocked out. I forget whether you have to disable the SPI to get control of the MOSI and SCK pins for the last bit or if you can override them.

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

here's a link that should provide more detail on the actual implementation.

http://www.solivant.com/s-100/cr...

Isn't Google wonderful? :)

Writing code is like having sex.... make one little mistake, and you're supporting it for life.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have that.. It doesn't mention wether the dead cells go black, or stay red.

I'm not up to commenting an 8008 asm listing.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The newhavendisplays lcd examples have a 9bit spi example that disables spi, sets data line hi or lo, sends one clk, reenables spi, sends next 8 bits.

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well, not having a life (so to speak), I took a look at the code. I used to have a Dazzler back when they first came out, and I must say this has been a trip down memory lane. I had forgotten the bizarre memory map, among other things. I also haven't gone near an 8080 (or Z80) for a looooong time.

Unfortunately my OCR software doesn't do too well on the TIFF files extracted from the pdf or I'd just post the commented code. I have about 2/3rds of it done, but I'm a little tied up tomorrow so it'll be over the weekend before I do the last part. I'll see if my wife's printer/scanner has better OCR software that can handle the files. If not, well, we'll see how energetic I get.

Chuck Baird

"I wish I were dumber so I could be more certain about my opinions. It looks fun." -- Scott Adams

http://www.cbaird.org

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Here you are. Guarantees are commensurate with price paid. You should be able to find what you need here.

Attachment(s): 

Chuck Baird

"I wish I were dumber so I could be more certain about my opinions. It looks fun." -- Scott Adams

http://www.cbaird.org

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Wow, Back in the 70's I worked for Cromemco in tech support. It was a very innovative company and had written a UNIX look alike , CROMIX. Had a Dual processor CPU board that had both a Z80 and a Motorola 68000.
The use of the 68000 on the S-100 bus was something no else did as far as my memory serves. I still have Cromemco System 3 with a full set of boards, ZPU, 64KZ, and 16FDC.
Couldn't resist in commenting :-)

I'll believe corporations
are people when Texas executes one.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

zbaird wrote:
Here you are. Guarantees are commensurate with price paid. You should be able to find what you need here.

WOW! That's wonderful!

You should also send this to computerhistory.
http://www.computerhistory.org/collections/accession/102670950

I see they were doing some pretty clever things.
I'll have to improve my version.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok, here's what I have at the moment. Not a huge deal, but it goes. Problems on the bottom edge, and with screens that are not square.
Tested at 32x32 and 64x64.
Needs a pushbutton, and some sort of display.
I used the LCD6610 from Gravitech.us
I'm bit-banging it.

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Got anything besides .rar? Some of us are elitists (for all the wrong reasons).

Chuck Baird

"I wish I were dumber so I could be more certain about my opinions. It looks fun." -- Scott Adams

http://www.cbaird.org

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well, you really only need a couple of the files if you don't have the display..

Argh.. I'm at home now, and this archive appears to be corrupt.. There's a main.h which is missing. Not a lot in it, and you can probably work that out, but it was in the file I sent, or so I thought.

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Here's the latest version, faster, but I'm sure it could be better. I think I'm doing the red right.. I ended up with another routine called "kill" that changes red cells to black, so the main loop is a little more complicated, but I only ended up needing two arrays with two bits per cell.
There's only one call to the display routines once it's been through init, so changing it to a different display should be pretty trivial.

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I've got a sparkfun nokia6100 clone running here using imagecraft. The x goes 0 to 129, but the y starts at 2 for some reason and goes to 127.... BUT.... thats 16K pixels at 8 bits per pix and the 9bit write works using the spi... I just send the first bit with a bang, then turn the spi back on and send the next 8 bits. Thats the way they did it in the sparkfun example... BUT... there's no readback from the framebuffer... so I cant figger how to get life running on it, since I cant look out there to see how many neighbors are in the frame buffer. A 16k bitmap would take all 2k of ram in this mega32, so I guess I could try to make a 64x64 bitmap in ram. How are you reading the fb Dave?

Imagecraft compiler user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

zbaird wrote:
Got anything besides .rar?

You can use the free online service WobZIP to unrar, unzip etc. from your computer or an URL: http://wobzip.org

Formats supported:
7z, ZIP, GZIP, BZIP2, TAR, RAR, CAB, ISO, ARJ, LZHCHM, Z, CPIO, RPM, DEB and NSIS