VT100 simulator and 3D printed replica

Simulator for the VT100 hardware. Running inside Gardi's 3D model.

Similar projects worth following
This is a detailed software simulation of the VT100 hardware. The original firmware ROM is built in and executed by an 8080 emulator. Other components include video display with character generator ROM, settings NVRAM, Intel 8251 USART, a keyboard matrix scanner, and a sound circuit for beep and key click.

The simulator was inspired by Michel Gardi's 3D printed VT100 model:
I'm printing this and the intent is that the model and the simulator should pair well.
  • Together at last

    Lars Brinkhoff07/09/2021 at 14:13 2 comments

    The model compared to a real VT100.

  • The real deal

    Lars Brinkhoff06/25/2021 at 14:49 0 comments

    I'm getting a real VT100, which will be a boon for my work on the simulator and 3D model.  It's in transit, but expected to arrive next week.

    The model is ready for painting, but which color?  I haven't found exact color codes for the VT100 colors.  I will try to get a match against the real terminal.

  • Bodywork 2: Filler Primer

    Lars Brinkhoff06/18/2021 at 11:46 0 comments

    Spraying with filler primer.

    Sanding again.

  • Bodywork 1: Epoxy

    Lars Brinkhoff06/15/2021 at 19:45 0 comments

    Filling in joints with epoxy putty.

    48 hours later, after curing and sanding.

  • Display connector problem

    Lars Brinkhoff06/13/2021 at 16:10 6 comments

    It doesn't seem to fit.  The board layout seems slight different from other pictures I have seen.  Maybe it's a mismatch?

  • It's glue time!

    Lars Brinkhoff06/12/2021 at 18:54 1 comment

    I have now finished printing all the pieces of the VT100 body.

    It's now finally time to start gluing the pieces together!

    As you can see, it's a bootstrapping process.

    I think I managed to get the pieces aligned quite well.  But this is only the raw material from which the final model will be furnished.  I have lined up epoxy putty and filler primer to smooth out visible joint lines.

  • Is that a VT220 or are you just happy to see me?

    Lars Brinkhoff06/12/2021 at 18:43 0 comments

    A rare glimpse into the hardships of terminal emulation development.  Here is my office... erhm... living room.  The first thing you may notice is that I have a real VT220 to compare against.  To the right of the terminal is a Raspberry Pi 4 running the VT100 simulator.

    I previously mentioned PDP-10 and ITS.  On the far right is an emulator for the Knight TV, a very early bitmap display system attached to the MIT AI lab PDP-10 running ITS.

    Not pictured: Datapoint 3300 emulator displaying Guy Steele's CROCK.

  • OpenGL shaders

    Lars Brinkhoff06/12/2021 at 18:38 0 comments

    As I mentioned in a previous log, the visual appearance of the simulator took a step back.  But now it's about to take two steps forward.  I'm adding the use of OpenGL shaders to mimic a CRT.  This includes effects such as characters built from smooth scanlines, a soft glow around text, and a subtle curvature as a CRT should have.

    Since the shader code runs in the GPU, it's not too heavy on the hosting computer.  It still runs fine on a Raspberry Pi 4, but a Pi 3 may now be too slow.  It could still fall back on the previous renderer though.

    A caveat though!  At this point, the shaders will probably wear down your GPU if you try to run in full screen mode.


    Lars Brinkhoff06/12/2021 at 18:30 3 comments

    Michael Gardi reported dropped characters, even though software flow control using XON and XOFF was enabled.  As a heavy Emacs user, I abhor XON/XOFF since XOFF is the same as Control-S which is search in Emacs.  But still if you enable it, it should certainly work!

    Looking into this, true enough the VT100 does send an XOFF when it's being overwhelmed.  But the remote side didn't seem to care about this and kept sending data to the terminal.  Why that is, I don't know!  My best guess at this point is that there may be a operating system buffer still emptying even though the host received the XOFF and stopped sending characters.

    Rather than banging my head against that wall, I applied a quick band aid.  The simulator will now intercept XON/XOFF internally and do the flow control.  It's not pretty, but it seems to work.  Maybe there will be a better solution in the future.

  • The VT100 is iconic

    Lars Brinkhoff06/12/2021 at 18:25 0 comments

    I wanted to add an icon to my simulator application.  It will show up when you cycle between window applications, e.g. with Alt+TAB.  What better icon than a photo of a VT100?

    I searched for photos online and came across some high quality images by Chuck Hutchins:

    I contacted Chuck and got his permission to use his photos in the simulator project.  He even sent me higher resolution photos.  Thanks!

    I cropped and resized one of them to use as an icon.

View all 19 project logs

View all instructions

Enjoy this project?



ronaldlw wrote 11/02/2022 at 23:11 point

I created a modified model for the terminal 3d print that doesn't require gluing and is only the front part so a lot less print time and fewer sections to put together.

  Are you sure? yes | no

Lars Brinkhoff wrote 11/03/2022 at 05:39 point

It looks great!

  Are you sure? yes | no

Tom Nardi wrote 06/25/2021 at 04:11 point

Excited to see what this is going to look like once all the filling/sanding is done. If I get the courage to print up my own copy, I'd like to do similar finish work.

  Are you sure? yes | no

Lars Brinkhoff wrote 06/25/2021 at 06:41 point

I'd like to encourage doing so.  Of course it's a fair bit of extra work, but really that's part of the fun for me.

A word of advice.  I skimped a bit on filling out all the seams with epoxy putty, which I now regret.  I compensated with a few extra layers of spray filler instead, and I think it turned out ok.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates