A project I have been working on since august this year. It's a homebrew computer based on the Zilog eZ8 microcontroller. The video chip is a parallax propeller that runs a serial terminal program I wrote. All software runs on the eZ8 and it prints the output over serial RS232 with TTL levels.



You can type in the name of a program and it will execute the program.

To do:
-Be able to parse parameters for programs as well. At the moment you can only have single tokens parsed and interpreted.
-Actual graphics with an FPGA. Willrandship is working on that.
-Sound.
-External and internal storage media. This could be internal flash or an external device like an eeprom or SD card.
-Custom filesystem for the eZ8's internal flash.
-Some math routines to get programmers started.

For more info on how to program the eZ8:
http://ez8tut.sourceforge.net/

For frequent updates on all of my projects visit please my blog:
http://8times8.host56.com/
Sounds like a very cool project!
does it have to say "Ready" after running a command all the time?
otherwise, im very interested in what this could become, as it seems really cool!
It does not have to. It's just for testing purposes to let me know when the program has finished.
Does this mean that you also wrote the entire OS for this computer? What kind of hardware do you have connected to the ez80? Have you been taking advantage of the ez80 instruction set, or mostly using the z80 instructions with which you are familiar.
It's not an eZ80, but an eZ8 which is a microcontroller that has a Z8 cpu core inside. The hardware at the moment is pretty straightforward:
Main processor:
eZ8 mcu @20MHz with built in 64KB flash and 4KB ram. It executes programs from flash.
Video:
Parallax propeller running video terminal software. It just displays characters it receives via serial.
Storage:
32KB eeprom for storing the parallax propeller's program
Input:
65 key matrix keyboard pulled out of an old Commodore64.

The eZ8 does not have conventional ram. Instead you have up to 4096 registers at your disposal which all act like accumulator registers. It also features a pipelined fetch unit which means the troughput is much higher than other conventional 8 bit microcontrollers.

Edit: Indeed. I am writing the entire OS from scratch since the eZ8 has a very small userbase and it's not compatible with the z80's instruction set.


After a 5 hour non-stop coding session I finally got the string parsing to work. With the new routines I wrote I am able to split a string up in segments and store the address of the segments in a table with pointers.

Example:
command "string with spaces in it" 2345 OtherStuff
is interpreted as:
command
string with spaces in it
2345
OtherStuff

These are all strings. There is no routine for converting strings to integers yet. Data conversion should be taken care of by the program.

Program PING is fairly straightforward.
pseudocode:

Code:
print "pong:"
if argc>=2
print argv[1]
end
return
do you use C strings or P strings internally? I would imagine that P strings would be significantly easier to work with if you're coding everything from scratch (and are dealing with a limited memory environment where megabytes of text are unlikely).
I use zero-terminated C-strings for things like user input and parameters. In ASM it's quite easy to work with these. You just loop until it sees a zero. Things like appending characters are a bit slower with C-strings. For larger chuncks of text I might use P-strings that are also zero-terminated so I can use them with the other string functions too. The prefix will be located at -2 from the string address.
I'd love to see more of the hardware. Is there a YouTube video showing that? Also, what kind of a screen does it use? (e.g., custom-built, or just hook it up to your tv or computer monitor?)
I use either my parallax propeller chip serial terminal or I hook it up to my computer. I have an evaluation board with an eZ8 on it that I use for developing the software. It's a lot more convenient than my previous setup with a tv capture card. Once the firmware is done I will put it all in a box with a keyboard on it and use it as a stand-alone device.

Screenshot of the pc serial terminal software I use at the moment:

This is a program I am working on that allows you to hex edit flash.
Looks awesome! I'm currently working on a Z80 based computer. Any chance I could use your parallax propeller code for my project?

Arcturus314
It's not all my code. It's a couple of modules chained together with some modifications. I'd like to make it a bit faster so you don't have to delay writes to the serial port. Perhaps buffer serial.
Added some more articles to the eZ8 programmers reference:
http://ez8tut.sourceforge.net/index.php?p=reference/flash.php
http://ez8tut.sourceforge.net/index.php?p=reference/serial.php
http://ez8tut.sourceforge.net/index.php?p=reference/math.php

If you spot any errors: please send me a message Smile

Tile based graphics. Very slow communication with the video generator though.
As you say, the blue paint job on that Commodore 64 looks very spiffy indeed. Smile Good job bringing some graphics to your project, and I continue to look forward to seeing how this project progresses.
Moved on to a new graphics chip. Now I am using a gameduino. It is s lot easier to work with than the propeller chip.
Working on some more gameduino routines. This demo might not be visually impressive, but there is a lot of code behind this.

My test setup with the eZ8 board(left) the gameduino (in the back) and my psion pocket computer(right) which is there for keyboard input. The psion sends keyboard characters over serial to the eZ8 board.
I am working on a file transfer interface. To pull files from my pc to the eZ8 I first send the filename over serial and then a program running on my pc dumps the content of the file over serial. At the moment it only works with files that are exactly 512 bytes long (the size of a flash page)

Syntax on eZ8:
load page# filename(max 16 characters)
Syntax on PC:
serialDisk port

You can later execute the machinecode by typing:
execute page#
It will execute from the page's base address, so the first instruction needs to be there.
Released source (unfinished, but you can actually run it)
Git repository: https://github.com/keoni29/eZ8OS
I will frequently update this source code!

Edit: OS specs can be found here: http://ez8tut.sourceforge.net/?p=ez8os.php
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement