ANSI / VT-100 Terminal with VGA and USB keyboard support

1,356 views
Skip to first unread message

Marco Maccaferri

unread,
Nov 2, 2017, 10:09:12 AM11/2/17
to RC2014-Z80
Hi,

I would like to let you know that I'm working on a serial terminal add-on board that adds VGA output as 80x25 text (720x400@70Hz) with ANSI / VT-100 terminal emulation, and USB keyboard input. It uses a single Parallax Propeller microcontroller running at 80MHz.

The board and firmware are all open source and available from Github https://github.com/maccasoft/propeller-vt100-terminal.

Feel free to contact me for more informations and suggestions.

Have fun!
Marco

Jan S

unread,
Nov 2, 2017, 12:23:15 PM11/2/17
to RC2014-Z80
Hi Marco

Exiting :-)

I'm looking into something not that different, also utilizing a propeller at full throttle. I'm using dual-port ram instead of the serial interface. Your solution will be more versatile. Mine will - if I succeed - be closer to how the Nascom works.

Looking forward to follow your work :-)

All the best to all of you :-)

Marco Maccaferri

unread,
Dec 12, 2017, 5:50:03 AM12/12/17
to RC2014-Z80
Some updates...

I have redesigned the board using the standard layout template, srinked the components a bit by using a smaller voltage regulator and removing some unused parts (a couple of jumpers and the power led). Since there was some free space I have added a small piezo speaker that sounds when the BEL (ASCII 7) character is sent and on power on. Attached is a picture of the new board. The firmware now defaults to 640x400@70Hz that looks more similar to the MS-DOS boot resolution and allows the extended graphics characters to be displayed correctly without vertical gaps.

Everything looks good, so I think it is complete.

Now I have two boards complete with parts available for anyone interested, contact me by e-mail for the details.
If there is enough interest I'll order more from a fab.

Best regards,
Marco.

board.jpg

Peter Willard

unread,
Dec 12, 2017, 8:28:54 AM12/12/17
to RC2014-Z80
 Wow, nice.

Would you consider uploading the design to OSHPARK and sharing like a lot of the others here have done?


 

Scott Lawrence

unread,
Dec 12, 2017, 10:22:00 AM12/12/17
to rc201...@googlegroups.com
What does the cost of components for this come to?  What are the graphics capabilities of it, in its current state, with respect to commandable stuff from the target computer?

Is it ANSI sequences/ascii-art type stuff, or is the graphics support a la ReGIS/Tektronix sequences?

-s

On Tue, Dec 12, 2017 at 8:28 AM, Peter Willard <petew...@gmail.com> wrote:
 Wow, nice.

Would you consider uploading the design to OSHPARK and sharing like a lot of the others here have done?


 

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/b8c87eb4-36b5-4317-a1e1-6e4e42aa925f%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Scott Lawrence
yor...@gmail.com

Marco Maccaferri

unread,
Dec 12, 2017, 10:52:09 AM12/12/17
to RC2014-Z80
Il giorno martedì 12 dicembre 2017 16:22:00 UTC+1, Scott Lawrence ha scritto:

What does the cost of components for this come to?  What are the graphics capabilities of it, in its current state, with respect to commandable stuff from the target computer?

Is it ANSI sequences/ascii-art type stuff, or is the graphics support a la ReGIS/Tektronix sequences?

The capabilities are text only with ANSI sequences, it uses a full font set like the one used by DOS (I think it is IBM850) that includes graphics characters for lines, boxes, etc. The currently supported sequences are listed on the Github readme.

The cost is 12 euro for pcb, plus 22 for parts, a total of 34 euro plus shipping.

 
Would you consider uploading the design to OSHPARK and sharing like a lot of the others here have done?


Scott Lawrence

unread,
Dec 12, 2017, 11:02:00 AM12/12/17
to rc201...@googlegroups.com
Sweet. I've never seen a propeller-based board that inexpensive.  I think i need to get me one!

-s

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Scott Lawrence
yor...@gmail.com

Eric Matecki

unread,
Dec 12, 2017, 2:20:42 PM12/12/17
to RC2014-Z80
Count me also in, PCB + components.
Unless the shipping to France goes amok...

While the propeller is not really retro, at least it is a DIP chip.
I think I'll use it much more than the Pi-terminal, whose look really breaks the retro feel.

Jan S

unread,
Dec 12, 2017, 2:42:33 PM12/12/17
to RC2014-Z80
Hi Erik
Sign me up for one too (including parts) :-)
Best regards
Jan


...The cost is 12 euro for pcb, plus 22 for parts, a total of 34 euro plus shipping.

David Lee

unread,
Dec 12, 2017, 3:03:14 PM12/12/17
to RC2014-Z80
I'm interested as well. Agreed on the rpi breaking the retro feel.

Will it be open sourced?

Spencer Owen

unread,
Dec 13, 2017, 6:19:41 AM12/13/17
to rc201...@googlegroups.com
Good work Marco!

That looks great.  I'm sure if you got some more boards made that they would sell well on Tindie :)  The price looks very competitive against the Pi Zero too!

Cheers

Spencer

On 12 December 2017 at 20:03, David Lee <dlow...@gmail.com> wrote:
I'm interested as well. Agreed on the rpi breaking the retro feel.

Will it be open sourced?

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.

Olaf Dannath

unread,
Dec 25, 2017, 4:19:35 AM12/25/17
to RC2014-Z80
I am interestet in One too, if you want to ship to Germany.

Kind regards and merry Christmas.

Olaf

Denny Albert

unread,
Dec 26, 2017, 9:39:17 AM12/26/17
to RC2014-Z80
Hello Marco,

I have tried to compile the source files with no success.
Due to I am not familiar with the propeller microcontroller, could you please help me on this?
What is the top object file?

The compiler stops with the following messange:

An open-source compiler for Propeller Spin
Copyright � 2012-2015 Parallax, Inc.
Compiling C:\...\propeller-vt100-terminal-master\waitvid.80x25.driver.spin
C:\...\propeller-vt100-terminal-master\waitvid.80x25.driver.spin(518:8) : error : Expected "," or end of line
Line:
#ifdef VGA_MODE_720
Offending Item: VGA_MODE_720

Whats going wrong?

Regards,

Denny

Marco Maccaferri

unread,
Dec 27, 2017, 3:13:04 AM12/27/17
to 'Denny Albert' via RC2014-Z80
Il 26/12/2017 15:39, 'Denny Albert' via RC2014-Z80 ha scritto:

> I have tried to compile the source files with no success.
> Due to I am not familiar with the propeller microcontroller, could you
> please help me on this?
> What is the top object file?

The top object is vt100.spin.

I don't understand what compiler you are using but you may need an
updated version of openspin to compile, you can compile the sources
yourself from the github repository

https://github.com/parallaxinc/OpenSpin

or download a pre-compiled binary here

http://david.zemon.name:8111/project.html?projectId=OpenSpin

from the artifacs link.

Bye,
Marco.

Denny Albert

unread,
Dec 27, 2017, 12:47:43 PM12/27/17
to RC2014-Z80
Hello Marco,

Thank you for pointing that out.
I have tried it with the following tools from the Parallax website.
Are these the wrong tools?

- Propeller IDE (0.33.3)
- Propeller Tool (1.3.2)

Which output format (.binary or .eeprom) shoudl I produce?

Regards,

Denny

Marco Maccaferri

unread,
Dec 27, 2017, 1:17:50 PM12/27/17
to 'Denny Albert' via RC2014-Z80
Il 27/12/2017 18:47, 'Denny Albert' via RC2014-Z80 ha scritto:

> Thank you for pointing that out.
> I have tried it with the following tools from the Parallax website.
> Are these the wrong tools?
>
> - Propeller IDE (0.33.3)
> - Propeller Tool (1.3.2)

I'm not familiar with that tools, I have always used BST or OpenSpin on
Linux.

The source contains preprocessor conditionals that I think are not
supported by those tools. You need to remove the conditionals, if you
are familiar with C it should be easy. In the waitvid.80x25.driver.spin
where you get the compile error, remove the two conditionals and leave
the lines between #else and #endif (one that defines frqx and one that
defines res_x = 640), and you should be done.

> Which output format (.binary or .eeprom) shoudl I produce?

Not sure about the difference, however the tools should be able to
program the propeller directly, if you have a prop-plug adapter you can
connect it to the programming header on the board. If you want to use an
eeprom programmer I think .binary should be correct.

Bye,
Marco.

Denny Albert

unread,
Dec 29, 2017, 9:09:41 AM12/29/17
to RC2014-Z80
Hello Marco,

With openspin I was able to compile the sources.
Which tool do you use to transfer the binary to the controller?
One question regarding your schematic. Why do you use a pullup-resistor at rx-line (p31), is this necessary?

Regards,

Denny

Marco Maccaferri

unread,
Dec 29, 2017, 9:46:15 AM12/29/17
to 'Denny Albert' via RC2014-Z80
Il 29/12/2017 15:09, 'Denny Albert' via RC2014-Z80 ha scritto:

> With openspin I was able to compile the sources.

Good.

> Which tool do you use to transfer the binary to the controller?

I'm using propeller-load https://github.com/dbetz/propeller-load or
better, I'm using the whole propeller-gcc toolchain that includes
openspin and propeller-load.

> One question regarding your schematic. Why do you use a pullup-resistor at
> rx-line (p31), is this necessary?

Yes, the uart on pins 30 and 31 is active, the output shows what the usb
driver has recognized, and the input is echoed to the rc2014 uart as it
was typed from the keyboard, like an auxiliary port, can be used to
upload programs. Without the pull-up it can detect noise and produce
garbage characters.

Bye,
Marco.

Jim80686

unread,
Mar 10, 2018, 11:46:30 PM3/10/18
to RC2014-Z80
Hi, Marco -

I ordered boards from OSH Park (thanks for making it available there!) and got one assembled.

It has been a very long time since I played with a propeller. Is there a binary or hex file for the eeprom? Maybe I missed it on your Github page. It would sure be a lot easier to "burn" one in my programmer than find and install tools that probably won't be used again.

   <*> Jim

Paul Bigwood

unread,
Mar 11, 2018, 11:37:41 AM3/11/18
to RC2014-Z80
Hi Margo,

Does this emulate the serial port on the RC2014? If so then which one ACIA or SIO/2 do you not need aerial card?

Paul

Marco Maccaferri

unread,
Mar 11, 2018, 4:00:56 PM3/11/18
to rc201...@googlegroups.com
Il 11/03/2018 05:46, Jim80686 ha scritto:

> It has been a very long time since I played with a propeller. Is
> there a binary or hex file for the eeprom? Maybe I missed it on your
> Github page. It would sure be a lot easier to "burn" one in my
> programmer than find and install tools that probably won't be used
> again.

Compiling the source is not difficult.

Download openspin from this site
http://david.zemon.name:8111/project.html?projectId=OpenSpin&tab=projectOverview&guest=1
(from the artifacts pull-down).

Extract the executable and compile with:

openspin -DKEYMAP_US -b -u vt100.spin

Replace the -D parameter with the keyboard mapping you need.

The resulting vt100.binary file can be written to the eeprom with a
programmer.

Best regards,
Marco.

Marco Maccaferri

unread,
Mar 11, 2018, 4:05:45 PM3/11/18
to rc201...@googlegroups.com
Il 11/03/2018 16:37, Paul Bigwood ha scritto:

> Does this emulate the serial port on the RC2014? If so then which one
> ACIA or SIO/2 do you not need aerial card?

It doesn't emulate a serial port, it uses the existing serial ports to
emulate a terminal. Like when you connect the PC with an FTDI cable.

Best regards,
Marco.

Jim80686

unread,
Mar 24, 2018, 7:30:01 PM3/24/18
to RC2014-Z80
Download openspin from this site
http://david.zemon.name:8111/project.html?projectId=OpenSpin&tab=projectOverview&guest=1
(from the artifacts pull-down).

Extract the executable and compile with:

openspin -DKEYMAP_US -b -u vt100.spin

Hi, Marco -

Tried the Windows version and had to dig up a couple dll files and kept getting library missing error messages. So, I tried running the Linux_x86-64 version on my 32-bit Mint 18.3 box. Got nothing but this message:
bash: ./openspin: cannot execute binary file: Exec format error

Any suggestions? Does this require a 64 bit version to run on Linux?

   <*> Jim

Eric Matecki

unread,
Mar 25, 2018, 4:21:54 AM3/25/18
to RC2014-Z80
Type   "file openspin" in a terminal.
This will tell you if it's a 32 or 64 bit executable.

Marco Maccaferri

unread,
Mar 25, 2018, 11:19:32 AM3/25/18
to rc201...@googlegroups.com
Il 25/03/2018 00:30, Jim80686 ha scritto:

> Tried the Windows version and had to dig up a couple dll files and
> kept getting library missing error messages.

Ah, sorry, there was a change in the makefile that disabled the static
linking, I have reported the issue to the owener of the web site and now
it is fixed. Please download again and should work.

> So, I tried running the Linux_x86-64 version on my 32-bit Mint 18.3
> box. Got nothing but this message: bash: ./openspin: cannot execute
> binary file: Exec format error
>
> Any suggestions? Does this require a 64 bit version to run on Linux?

Yes, x86-64 means it is for 64 bit only.

Best regards,
Marco.

Jim80686

unread,
Apr 1, 2018, 11:25:30 PM4/1/18
to RC2014-Z80
Hi, Marco -

Thanks!

I finally got to try the re-built Windows version and it compiled with no complaints. The board worked just fine plugged into a Dr. Baker SIO card.

However, the keyboard is weird. Despite specifying the US layout, it takes some hunting to find symbols - the letters and numbers seem to be OK. Haven't compared it yet, but it may be UK layout. I did verify that the Keymap_US.spin does have the correct key assignments. Compiled twice with the same result. Is it possible that it is defaulting to the UK layout for some reason?

   <*> Jim

Marco Maccaferri

unread,
Apr 2, 2018, 5:03:28 AM4/2/18
to rc201...@googlegroups.com
Il 02/04/2018 05:25, Jim80686 ha scritto:

> I finally got to try the re-built Windows version and it compiled
> with no complaints. The board worked just fine plugged into a Dr.
> Baker SIO card.

Good.

> However, the keyboard is weird. Despite specifying the US layout, it
> takes some hunting to find symbols - the letters and numbers seem to
> be OK. Haven't compared it yet, but it may be UK layout. I did verify
> that the Keymap_US.spin does have the correct key assignments.
> Compiled twice with the same result. Is it possible that it is
> defaulting to the UK layout for some reason?

Just realized that I haven't pushed the correct mapping selection, it
defaults to the italian mapping. Now it should work, when you compile
you see a list of files, check that keymap_us.spin is included, like this:

vt100.spin
|-usb-fs-host.spin
|-com.serial.spin
|-com.serial.terminal.spin
|-com.serial.spin
|-string.integer.spin
|-waitvid.80x25.driver.spin
|-generic8x16-2font.spin
|-keymap_us.spin

Best regards,
Marco.

Jim80686

unread,
Apr 2, 2018, 11:26:57 PM4/2/18
to RC2014-Z80
Hmm, now it won't compile - returning an error message:

C:\Users\Jim\Downloads\RC2014\vga-terminal\propeller-vt100-terminal-master>openspin -D keymap_us.spin -b -u vt100.spin
Propeller Spin/PASM Compiler 'OpenSpin' (c)2012-2018 Parallax Inc. DBA Parallax Semiconductor.
Version 1.00.81 Compiled on Mar 25 2018 09:42:24
Compiling...
vt100.spin
vt100.spin(780:14) : error : Expected an expression term
Line:
        c := keymap.map(k, 1)
Offending Item: keymap

Marco Maccaferri

unread,
Apr 3, 2018, 9:22:33 AM4/3/18
to rc201...@googlegroups.com
Il 03/04/2018 05:26, Jim80686 ha scritto:

> Hmm, now it won't compile - returning an error message:
>
> openspin -D keymap_us.spin -b -u vt100.spin

The map selection is all uppercase and without the .spin extension:

> openspin -D KEYMAP_US -b -u vt100.spin


Best regards,
Marco.

Jim80686

unread,
Apr 3, 2018, 1:42:18 PM4/3/18
to RC2014-Z80
> The map selection is all uppercase and without the .spin extension:
>
> openspin -D KEYMAP_US -b -u vt100.spin

Marco -

Yahoo! That works and compiles with the US keyboard keymap.

Thanks for your help!

   <*> Jim

J.B. Langston

unread,
May 29, 2018, 9:59:22 PM5/29/18
to RC2014-Z80
Marco,

I ended up with a bare Propeller VT100 PCB courtesy of a friend, and I'm getting together a Mouser order with the parts I'm missing from the BOM. Do you happen to have the exact part numbers for the USB connector, VGA connector, and Piezo Buzzer? I had a Piezo buzzer in my parts box but the leads are too widely spaced, so I want to make sure I get the right one. VGA and USB may require a specific part too so I thought I'd ask.  Also, I am assuming I could use a ceramic cap for all 3 capacitors as long as it's the right value. Have you or anyone tried this?

Thanks,
J.B.
Message has been deleted

Rodney Ross

unread,
May 29, 2018, 10:27:50 PM5/29/18
to RC2014-Z80
J.B.
     I had a bunch of the parts when I built mine,   But found someone put in the hard work here:  https://docs.google.com/spreadsheets/d/1PQC2FfiSCyTlu6B9Nc9vY6bEYd8jgpfe3tJdhzz7GTo/edit#gid=0
I crossed that Piezo to Digikey and it worked.  Hope that helps. 

J.B. Langston

unread,
May 29, 2018, 10:59:31 PM5/29/18
to RC2014-Z80
Thanks for the info Rodney, that is exactly what I was looking for.

Marco Maccaferri

unread,
May 30, 2018, 4:51:21 AM5/30/18
to rc201...@googlegroups.com
Il 30/05/2018 04:27, Rodney Ross ha scritto:

> J.B.
> I had a bunch of the parts when I built mine, But found someone put
> in the hard work here:
> https://docs.google.com/spreadsheets/d/1PQC2FfiSCyTlu6B9Nc9vY6bEYd8jgpfe3tJdhzz7GTo/edit#gid=0
> I crossed that Piezo to Digikey and it worked. Hope that helps.

The parts on that spreadsheet are mostly correct, the piezo is correct,
other parts are not the same I'm using but I don't thing they are a problem.

I was using 571-1734344-1 as the VGA connector but is now obsolete, I
got 649-ICD15S13E4GV00LF as an alternative altought the connector is
black and not blue. Seems that blue connectors are a rarity nowadays.

The USB connector is 523-UE27-AC54-100.

Also the resistors are not what I'm using, the 5% parts are from Yageo,
the CFR-25JR series, while the 1% parts are from KOA Speer the MF1/4DC
series. it should not make any difference however the size may be
different, I got parts once that were much smaller that the one I'm using.

The 100nF decoupling capacitors can be of any type, I'm using polyester
but ceramic are fine.

Best regards,
Marco.

J.B. Langston

unread,
Jun 3, 2018, 7:02:56 PM6/3/18
to RC2014-Z80
There's a new VT100 board in the world, and it works with my z80ctrl board. Here's a video: https://www.youtube.com/watch?v=yWVWQonQZdI

As you can see, I occasionally have issues with the keyboard locking up (not sure if it's an incompatibility with my specific keyboard), but for the most part it works.  I will try with another keyboard and see if I have better luck.

Marco Maccaferri

unread,
Jun 4, 2018, 3:20:48 AM6/4/18
to rc201...@googlegroups.com
Il 04/06/2018 01:02, J.B. Langston ha scritto:

> There's a new VT100 board in the world, and it works with my z80ctrl
> board. Here's a video: https://www.youtube.com/watch?v=yWVWQonQZdI

Very good.

> As you can see, I occasionally have issues with the keyboard locking
> up (not sure if it's an incompatibility with my specific keyboard),
> but for the most part it works. I will try with another keyboard and
> see if I have better luck.

Seems you have added a reset button to the board, good, however if the
keyboard stops working try to unplug and plug again first and see if
that makes it working.

Also, check your power source, be sure the output is 5v and with enough
current to drive all your boards and the keyboard that is powered
directly from the 5v rail on the bus.

One thing I noticed from the video, if I'm not mistaken, is that at one
point after you reset the board the beeper sound continously. If so it
is a bit weird. The beeper should sound at power on (or after a reset)
and when a character 7 is received, in both cases it stops. If sound is
continous it makes me think that something freezes the terminal
interpreter cog somehow leaving the oscillator running, which is really
weird. May be the power not really stable or something else, I see some
spurious characters received after a reset, if it receives a train of
chr$(7) the terminal may stuck with the beeper sound for a while.


Best regards,
Marco.

J.B. Langston

unread,
Jun 4, 2018, 9:54:25 AM6/4/18
to RC2014-Z80
Seems you have added a reset button to the board, good, however if the
keyboard stops working try to unplug and plug again first and see if
that makes it working.

This fixes it temporarily.  I believe it may have been due to the USB cable I was using (my keyboard has a detachable cable). I switched to another, thicker one and the keyboard seems much more stable. It only froze once in about 15 minutes of playing 2048, where with the thinner cable froze multiple times in just 5 minutes. Probably the thinner one is lesser quality and has a higher voltage drop.
 
Also, check your power source, be sure the output is 5v and with enough
current to drive all your boards and the keyboard that is powered
directly from the 5v rail on the bus.

It was solid 4.99V measured at the screw terminal on the backplane.
 
One thing I noticed from the video, if I'm not mistaken, is that at one
point after you reset the board the beeper sound continously. If so it
is a bit weird. The beeper should sound at power on (or after a reset)
and when a character 7 is received, in both cases it stops. If sound is
continous it makes me think that something freezes the terminal
interpreter cog somehow leaving the oscillator running, which is really
weird. May be the power not really stable or something else, I see some
spurious characters received after a reset, if it receives a train of
chr$(7) the terminal may stuck with the beeper sound for a while.

You observed correctly on both counts. The repeating character has happened a few times, and seems to get stuck on whatever I was pressing at the time. Another time it started repeating backspace.  It's possible it could have been stuck on ^G I suppose but I don't think that was something I typed.  In any case, I have not had another instance of the stuck beeper.

Thomas Riesen

unread,
Jun 4, 2018, 4:07:40 PM6/4/18
to RC2014-Z80
Hi J.B.

Do you make the schematic and Gerbers available from your board?

Thomas

J.B. Langston

unread,
Jun 4, 2018, 4:34:56 PM6/4/18
to RC2014-Z80
If you mean the z80ctrl, it's on Github: https://github.com/jblang/z80ctrl. The KiCad files are in the hardware subdirectory. You can generate gerbers from those.  There are detailed build instructions in the Wiki.

J.B. Langston

unread,
Jun 4, 2018, 9:24:59 PM6/4/18
to RC2014-Z80
One suggestion, if I might: it would be good to add compiling instructions to the README.  I initially tried to compile with both of the official IDEs offered by Parallax for Windows and discovered it wouldn't compile because of the #ifdefs.  Now I found the message where you said you use openspin, and I had already gotten the code to compile simply by removing the ifdefs, but it would have been easier if the README stated that openspin was the recommended compiler to begin with.
Reply all
Reply to author
Forward
0 new messages