Graphics on the Multicomp

Talk about non-Acorn classic computers/hardware/software here (including retro consoles)
User avatar
jonb
Posts: 2045
Joined: Sat May 21, 2011 12:42 pm
Location: South Coast of England

Graphics on the Multicomp

Postby jonb » Fri Sep 15, 2017 3:28 pm

Hi chaps

This post is a bit of an idle ramble about Grant Searle's Multicomp: http://searle.hostei.com/grant/Multicomp/index.html

Without reiterating the content of that page, it is a machine based on an Altera FPGA board (EP2C5T144C8N Cyclone II). Grant's scheme allows you to pick and mix a combination of components implemented in VHDL to build a working machine of your choice. One of those combinations is a CP/M machine (which I've mentioned before). This has a VGA output that is capable of displaying coloured text with VT100 emulation.

However.. the basic configuration if this computer comprises of a BASIC (geddit?) interpreter with limited memory, and the CP/M variant retains that capability (you can boot to BASIC or CP/M) - but of course, you don't need this if you have CP/M, because you can just load any BASIC interpreter you like from the SD card. Thus, the inbuilt BASIC is using cells in the FPGA device that might be put to better use to extend the capabilities of the CP/M machine.

Problem is, I don't know how much space the inbuilt BASIC uses (it's an 8K BASIC but I don't know how that equates to FPGA cells), and how much I'd need to give it graphics; moreover, I don't even know if it's feasible. So, I am looking for ideas or suggestions as to a possible way forward (even if only theoretical). What would one need to create a graphics system on a Z80 machine running CP/M?

  • A video chip with memory implemented in VHDL?
  • Extensions to the terminal emulation so that graphic primitives can be produced via non standard escape sequences? (Philips P2000C does this)
  • Something else? Maybe there is already a "graphics terminal" implemented in VHDL?

I do know that under the hood the VGA screen display is being fed via a UART (emulated in VHDL). I think Grant told me this. Perhaps extension of the terminal escape handler is enough. Examination of the screen handler's VHDL (SBCTextDisplayRGB.vhd) suggests there's 2K of RAM for the characters plus another 2K for attributes (colour, etc). In other words, the screen is not currently a bitmap.

All this may be a bit of a pipe dream, but I'd be interested in your thoughts....!

Cheers
JonB

User avatar
BigEd
Posts: 1392
Joined: Sun Jan 24, 2010 10:24 am
Location: West
Contact:

Re: Graphics on the Multicomp

Postby BigEd » Fri Sep 15, 2017 3:57 pm

There's a fair chance the Basic is taking no extra resources at all: you need memory in the FPGA, and that memory can be initialised at configuration time. So, in the first few milliseconds after power up, as the FPGA is configured to implement the right logic gates and connect them up in the right way, it's also possible to initialise all the flops and all the RAM cells. In fact if you have a ROM in your design, you use exactly this mechanism to initialise the RAM, and then you just arrange that the RAM cannot be written.

It might help - and it might not - to think of initialised RAM as the same as a writeable ROM.

User avatar
hoglet
Posts: 6364
Joined: Sat Oct 13, 2012 6:21 pm
Location: Bristol

Re: Graphics on the Multicomp

Postby hoglet » Fri Sep 15, 2017 4:59 pm

Jon,

Is this the CP/M machine you are talking about?
http://searle.hostei.com/grant/Multicom ... gaCPM.html

The main concern you have is RAM - CP/M seems to need 64KB minimum. The EP2C5 FPGA has 26 M4K RAM blocks, which amounts to 13KB. So I don't think it's going to be possible on that board using just the FPGA. You will need some external RAM, and ideally SRAM as it's much faster (for random accesses) and easier to use than DRAM.

I'd recommend the myStorm BlackIce board, as this already has external RAM:
blackice1.jpg


Here's a quick summary:
- Lattice iCE40HX8K FPGA (7680 LEs, 16KB of block RAM, 2 PLLs)
- STM 32L433 ARM based microcontroller with 256KB of FLASH for programming the FPGA
- CH430 USB UART for use by the FPGA
- 256KBx16 SRAM with 10ns cycle time (i.e. very fast indeed)
- second USB ports for programming the ARM (using dfu-util)
- SD Card slot, DIP switches, LEDs, push buttons
- loads of PMOD connector, which allows use of Digilent Pmod adpters (e.g. for VGA)
- uses the Open Source IceStorm tool chain (Verilog only, but very fast for small designs)

These are available for £40 plus postage (from the UK!), see here.

You can read more here:
https://nanode0000.wordpress.com/2017/0 ... -blackice/

I've been playing with one of these for a few weeks now, and they are a really good starter board, as long as you are happy to use Verilog rather than VHDL. More below on this...

I've done a few projects on this:
- Acorn Atom implementation for myStorm BlackIce (also featured on hackaday)
- BBC Model B implementatation for myStorm BlackIce
- OPC6 - a simple DIY cpu now running on BlackIce!
- a Jupiter Ace (not really annouced anywhere, but the source is in GitHub and it uses a Z80)

You can read more details in the above links.

Having the ARM as well is really cool. I'm using it to configure than FPGA, then boot-load ROM images into the SRAM. The tool chain for this is the same as for PiTubeDirect, and myStorm have a standard boot loader (called IceBoot) which you can easily customize.

For along time now I've done most of my projects in VHDL, but going forward I'm going to do much more in Verilog.

There are a few reasons for this:
- it's less verbose than VHDL
- it has a much simpler type system than VHDL which make you feel closer to the hardware (it has been said that Verilog is like C, where is VHDL is like Pascal or ADA)
- there are some very easy to use open source and/or free Verilog simulators, such as like iverilog

As an example, you can simulate the complete booting of the Beeb, starting off with:

Code: Select all

Wr: 01xx = xx
Wr: 01xx = xx
Wr: 01xx = xx
Wr: 01xx = 30
Rd: fffc = cd
Rd: fffd = d9
Rd: d9cd = a9
Rd: d9ce = 40
Rd: d9cf = 8d
Rd: d9d0 = 00
Rd: d9d1 = 0d
Wr: 0d00 = 40
Rd: d9d2 = 78
Rd: d9d3 = d8
Rd: d9d3 = d8
Rd: d9d4 = a2
Rd: d9d4 = a2
Rd: d9d5 = ff

and ending up 10 minutes later with this:

Code: Select all

BBC Computer 32K                       
                                       
Model B MMFS                           
                                       
BASIC                                   
                                       
>

and a 2GB waveform dump file.

You can see an example test harness here:
https://github.com/hoglet67/Ice40Beeb/b ... /beeb_tb.v

Anyway, I've probably rambled enough now.... :D :D :D

Dave

User avatar
hoglet
Posts: 6364
Joined: Sat Oct 13, 2012 6:21 pm
Location: Bristol

Re: Graphics on the Multicomp

Postby hoglet » Sat Sep 16, 2017 4:44 pm

Hi Jon,

Actually, I see from this thread that you have already successfully built one of these, so you can ignore most of my thoughts above about using a different board and using Verilog.

I'll probably have a go anyway at getting it running on the myStorm board, as I've not done much CP/M and this seems a good excuse.

I've just re-read your original post, and I'm not 100% sure what you are wanting to do.. Is it to replace the existing character mode terminal (SBCTextDisplayRGB) with a bit mapped graphics display? What resolution and bit depth do you need?

I do have a question for you. Do you know where I can find the source for the Z80_CPM_BASIC_ROM rom?

Dave

User avatar
jonb
Posts: 2045
Joined: Sat May 21, 2011 12:42 pm
Location: South Coast of England

Re: Graphics on the Multicomp

Postby jonb » Sat Sep 16, 2017 6:24 pm

Hi Dave

Probably a bitmapped display, as a graphical terminal (that is, not using the Z80's memory). Would need to have graphics primitives accessible via escape sequences (although sprite manipulation is very slow on the P2000C).

This Z80 ROM, do you mean the one the Multicomp has inbuilt? If so, Grant would surely share with you.

Cheers, and thanks muchly,
JonB


Return to “other vintage computer hardware, software and games”

Who is online

Users browsing this forum: No registered users and 2 guests