Home » RBC Forums » General Discussion » Z80ALL, A standalone Z80 computer
Z80ALL, A standalone Z80 computer [message #7934] |
Thu, 03 September 2020 18:56  |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
While I still remember, I should announce Z80ALL on this forum, after all RetroBrew Wiki is my preferred website for all my designs including Z80ALL.
Z80ALL is my first attempt to build a standalone CP/M system. It is the combination of two previous designs, ZRCC and VGARC. The goal is an economical Z80 SBC with VGA and PS2 keyboard on a 4"x4" 2-layer pc board. Here are the features of Z80ALL:
* Z80 overclocked to 25.175MHz
* 128K RAM in 4 32-K banks
* 4K dual port video RAM with user programmable font table.
* VGA monochrome interface, 64 columns X 48 rows
* EPM7128S CPLD with the following features
- Small ROM to bootstrap from CF disk
- VGA timing circuit
- Serial port for hardware/software development
- Memory bank select logic
- Decoding logic for compact flash
* IDE44 interface for compact flash drive
* CP/M ready
* PS2 keyboard interface
* 3 RC2014 expansion bus
* Optional USB-serial connector
* 102mm X 102mm 2-layer pc board
* Nominal power consumption of 5V 300mA
You can read more on Z80ALL homepage.
https://www.retrobrewcomputers.org/doku.php?id=builderpages: plasmo:z80all
Rev0 is proof-of-concept. Rev1 pc board is currently being fab at JLCPCB.
Bill


[Updated on: Thu, 03 September 2020 19:00] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Z80ALL, A standalone Z80 computer [message #8542 is a reply to message #8538] |
Tue, 27 April 2021 19:55   |
alkmar
Messages: 29 Registered: August 2019
|
Junior Member |
|
|
Hello Bill,
I could have sworn I had that PIN out... but it worked and have bi-directional serial and for grins I used the monitor command which updated the top left of the screen with a blank character.
Thank you for all of your help, it seems I have a working Z80ALL... now I will build up my second one (all of the SMT work is already done, I just need to do the THT stuff).
I was considering writing up a quick and dirty document on how to assemble the Z80ALL and program the CPLD, let me know if you would mind or if think it would be useful. Of course if anyone is following this thread, most of the items are already covered. I just figured consolidating all of it in a single PDF or Word Doc may be useful for future builders.
I can't believe I was able to solder that 100 pin chip, it wasn't as bad as my mind said it was going to be (not trivial but with do-able with careful inspections).
The following is the console output:
>øZALL Monitor v0.3 9/12/20
>output 00 to port 20
>output 01 to port 20
>help
G <addr> CR
R <track> <sector>
D <start addr> <end addr>
I <port>
O <value> <port>
L <start addr> <end addr>
Z CR
F CR
T CR
E <addr>
X <options> CR
B <options> CR
C <options> CR
>
Thank you for this cool computer, tips, and help!
[Updated on: Tue, 27 April 2021 19:58] Report message to a moderator
|
|
|
|
Re: Z80ALL, A standalone Z80 computer [message #8546 is a reply to message #7934] |
Tue, 27 April 2021 22:36   |
alkmar
Messages: 29 Registered: August 2019
|
Junior Member |
|
|
I was able to run all three program by pasting the text contained in the .hex file into the system monitor, then issuing the G1000 command followed by the enter key as you indicated.
When using CP/M 2.2 all console output it mirrored to the VGA screen in addition to the serial port.
The following is a transcript of all test, the memory test was aborted via the enter key as I assume it just seems to runs continuously?
>øZALL Monitor v0.3 9/12/20
>output 00 to port 20 (the top left most character on the VGA output is now blank)
>output 01 to port 20 (the next character to the right on the VGA output is now a smiley face)
>help
G <addr> CR
R <track> <sector>
D <start addr> <end addr>
I <port>
O <value> <port>
L <start addr> <end addr>
Z CR
F CR
T CR
E <addr>
X <options> CR
B <options> CR
C <options> CR
>>
>test memory
press Return to execute command
OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2 OK0 OK1 OK2
(I pressed enter to exit the test)
>
>boot CP/M
1--User Apps,
2--CP/M2.2:
3--CP/M3: 2 press Return to execute command (I pressed the enter key)
Copyright 1979 (c) by Digital Research
CP/M 2.2 for Z80ALL IOByte+JumpTbl Rev1.1 9/11/20
a>b:
b>dir
B: ASCIIART TXT : ASM COM : BIOS ASM : CBIOS ASM
B: DDT COM : DEBLOCK ASM : DISKDEF LIB : DUMP ASM
B: DUMP COM : ED COM : LOAD COM : MBASIC80 COM
B: MOVCPM COM : PIP COM : STAT COM : SUBMIT COM
B: SYSGEN COM : XMODEM COM : XSUB COM : ZEXALL COM
b>zexall
Z80 instruction exerciser
<adc,sbc> hl,<bc,de,hl,sp>.... OK
add hl,<bc,de,hl,sp>.......... OK
add ix,<bc,de,ix,sp>.......... OK
add iy,<bc,de,iy,sp>.......... OK
aluop a,nn.................... OK
aluop a,<b,c,d,e,h,l,(hl),a>.. OK
aluop a,<ixh,ixl,iyh,iyl>..... OK
aluop a,(<ix,iy>+1)........... OK
bit n,(<ix,iy>+1)............. OK
bit n,<b,c,d,e,h,l,(hl),a>.... OK
cpd<r>........................ OK
cpi<r>........................ OK
<daa,cpl,scf,ccf>............. OK
<inc,dec> a................... OK
<inc,dec> b................... OK
<inc,dec> bc.................. OK
<inc,dec> c................... OK
<inc,dec> d................... OK
<inc,dec> de.................. OK
<inc,dec> e................... OK
<inc,dec> h................... OK
<inc,dec> hl.................. OK
<inc,dec> ix.................. OK
<inc,dec> iy.................. OK
<inc,dec> l................... OK
<inc,dec> (hl)................ OK
<inc,dec> sp.................. OK
<inc,dec> (<ix,iy>+1)......... OK
<inc,dec> ixh................. OK
<inc,dec> ixl................. OK
<inc,dec> iyh................. OK
<inc,dec> iyl................. OK
ld <bc,de>,(nnnn)............. OK
ld hl,(nnnn).................. OK
ld sp,(nnnn).................. OK
ld <ix,iy>,(nnnn)............. OK
ld (nnnn),<bc,de>............. OK
ld (nnnn),hl.................. OK
ld (nnnn),sp.................. OK
ld (nnnn),<ix,iy>............. OK
ld <bc,de,hl,sp>,nnnn......... OK
ld <ix,iy>,nnnn............... OK
ld a,<(bc),(de)>.............. OK
ld <b,c,d,e,h,l,(hl),a>,nn.... OK
ld (<ix,iy>+1),nn............. OK
ld <b,c,d,e>,(<ix,iy>+1)...... OK
ld <h,l>,(<ix,iy>+1).......... OK
ld a,(<ix,iy>+1).............. OK
ld <ixh,ixl,iyh,iyl>,nn....... OK
ld <bcdehla>,<bcdehla>........ OK
ld <bcdexya>,<bcdexya>........ OK
ld a,(nnnn) / ld (nnnn),a..... OK
ldd<r> (1).................... OK
ldd<r> (2).................... OK
ldi<r> (1).................... OK
ldi<r> (2).................... OK
neg........................... OK
<rrd,rld>..................... OK
<rlca,rrca,rla,rra>........... OK
shf/rot (<ix,iy>+1)........... OK
shf/rot <b,c,d,e,h,l,(hl),a>.. OK
<set,res> n,<bcdehl(hl)a>..... OK
<set,res> n,(<ix,iy>+1)....... OK
ld (<ix,iy>+1),<b,c,d,e>...... OK
ld (<ix,iy>+1),<h,l>.......... OK
ld (<ix,iy>+1),a.............. OK
ld (<bc,de>),a................ OK
Tests complete
b>
>dir
A: XMODEM COM : UNARJ COM : CPM2 ARJ : MEDU COM
A: HTC ARJ : TED ARJ
a>xmodem zork1.com /r/z1
File created
Receiving via CON with CRCsCC
Received 68 blocks
a>xmodem zork1.dat /r/z1
File created
Receiving via CON with CRCsC
Received 664 blocks
a>zork1
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.
ZORK is a registered trademark of Infocom, Inc.
Revision 88 / Serial number 840726
West of House
You are standing in an open field west of a white house, with
a boarded front door.
There is a small mailbox here.
>open mailbox
Opening the small mailbox reveals a leaflet.
>take leaflet
Taken.
>read leaflet
"WELCOME TO ZORK!
ZORK is a game of adventure, danger, and low cunning. In it
you will explore some of the most amazing territory ever seen
by mortals. No computer should be without one!"
Why was my test upload Zork I? "Because no computer should be without one! of course".
I'll have to look into programming in assembly on the Z80, I haven't done any assembly in about 20 years or so and that was for a TMS9900 processor.
The only thing that didn't seem to work was attempting to boot CP/M 3 (B3), is this expected from this image?
Also I tested powering the computer from the +5 and Ground headers stead of the standard 5mm jack, which worked well. However it's worth noting that you should only use ONE power connections on the computer any time! Otherwise you risk destroying the computer and/or the power supplies connected to it (this is true for most computers!)
overall it looks like an operational computer, and very fast for a Z80. I even accessed Microsoft basic, ran a couple of programs and returned to CP/M with the system command.
Thank you, Jim.
[Updated on: Wed, 28 April 2021 15:52] Report message to a moderator
|
|
|
Re: Z80ALL, A standalone Z80 computer [message #8551 is a reply to message #8546] |
Wed, 28 April 2021 07:22   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
Excellent, now you have an operational Z80ALL. It is an open hardware, so feel free to build more, modify, and even sell them at your discretion.
Another way of sending .hex file in TeraTerm (and most other terminal emulators) is just send the file to serial port. In TeraTerm it is File->Send file-> pick the file in drop down menu
Memory diagnostic will run continuously until terminated with a carriage return.
CP/M3 is not ported right now, so 'b3' command does not work.
The CP/M BIOS is modified so whatever is sent to serial port is also displayed on VGA monitor. This is the first half of adding VGA/keyboard to CP/M, the second half is getting input from either serial port or PS2 keyboard. The 2nd part is more challenging because BIOS needs to emulate the actions of terminals' escape sequences.
Your success has motivate me to work more on the Z80ALL homepage and continue the work on PS2 keyboard interface. I have ported CP/M3 to similar system so I should be able to port it to Z80ALL fairly quickly. I also have an improved 64x48 VGA display that separates each line of texts by 2 pixels vertically so they are more readable. So check the Z80ALL homepage occasionally for updates.
HiTech C is one of the better C compiler for Z80. Attached is HiTech C compressed with arj (htc309.arj), xmodem it to your Z80ALL and use the unarj.com file to decompress it. e.g., install HiTech C in drive C: with command
c:
a:unarj e a:htc309.arj
Zorkall.arj includes Zork1, 2, and 3. It is also an .arj file and decompressed with unarj.com like above.
Bill
Edit: 'b1' command normally brings up Steve Cousin's SCMonitor. It is currently not working, but SCMonitor can be ported easily (in fact with StarTrek game included) so that's another program to be added to Z80ALL homepage.
-
Attachment: htc309.ARJ
(Size: 187.85KB, Downloaded 329 times)
-
Attachment: ZORKALL.ARJ
(Size: 193.55KB, Downloaded 356 times)
[Updated on: Wed, 28 April 2021 07:28] Report message to a moderator
|
|
|
Re: Z80ALL, A standalone Z80 computer [message #8556 is a reply to message #8551] |
Wed, 28 April 2021 11:28   |
alkmar
Messages: 29 Registered: August 2019
|
Junior Member |
|
|
Thank you for all of that, my 2nd Z80All is now operational and passed all test. I'll start working on the build documentation this weekend, once I have something reasonable I will run it by you as a sanity check and in case you have any input.
I figured for my Rev1 boards I would just make a three inch header to female DIN plug adapter, once you have completed your keyboard logic.
It's great you are making this project as "open hardware", it will be interesting to see what people come up with. As for selling boards, I don't think I will be getting into that business (but I may try my hand at playing around with the hardware as a learning experience.)
That said I want to learn more about how these logic arrays work and are programmed, now i have a few machines to learn on.
Ill will keep an eye on your website for future updates!
[Updated on: Wed, 28 April 2021 11:31] Report message to a moderator
|
|
|
|
|
|
|
|
Re: Z80ALL, A standalone Z80 computer [message #9992 is a reply to message #9985] |
Sun, 26 June 2022 09:20   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
The video on Z80all is a monochrome text display with programmable fonts and 64 rows, 48 columns texts with 8x8 pixel fonts. 64x48 is not much resolution for graphic display, but it is possible to define 16 set of fonts that represent all permutation of 2x2 array such that a 8x8 pixel block can display any combination of four 4x4 pixel sub-blocks. This scheme increases the screen resolution from 64x48 to 128x96, sufficient to do low-resolution graphic.
First example is the extension of BadApple animation to Z80all's VGA display. The original BadApple is in 4:3 screen ratio so it is perfect fit for 128x96 extended text display. So the original BadApple is downsized to 128x96, splited into 3109 frames, converted to byte output format and vertical 1-bit per pixel draw mode. The resulting binary file is loaded into CF disk as a contiguous 4.7meg file. The BadApple player for Z80all VGA display retrieves three 512-byte sectors per frame and translates the data to display as 128x96 image. While there are 50% more data than the 128x64 OLED display and more processing to combine 2x2 pixels into a text character, Z80all's VGA display is much faster direct-addressable I/O so it only took 11mS to retrieve and display a frame. 20 frames/sec is easily accomplished. This is YouTube video of BadApple playing on Z80all VGA monitor in 128x96 resolution. https://www.youtube.com/watch?v=KYVQk8Nyg84

Second example is Conway's Game of Life. Earlier version of Life had an universe of 64x48 cells (https://www.youtube.com/watch?v=qt8Mx9dZJj0). Now its universe is expanded to 128x96 cells.

----------
Update: the design files for BadApple on VGA monitor is here:
https://www.retrobrewcomputers.org/doku.php?id=builderpages: plasmo:z80all:z80all_rev1:z80allr1quad#running_badapple_on_t ext-based_vga_monitor
design file for Life running on an universe of 128x96 cells is here:
https://www.retrobrewcomputers.org/doku.php?id=builderpages: plasmo:z80all:z80all_rev1:z80allr1quad#game_of_life_on_vga_w ith_128x96_universe
[Updated on: Sun, 26 June 2022 18:48] Report message to a moderator
|
|
|
|
|
Current Time: Sat Feb 08 22:02:35 PST 2025
Total time taken to generate the page: 0.00891 seconds
|