Close
0%
0%

80 Column Video for RC2014

An 80 column card for RC2014 bus systems using the bizarre, but cheap and plentiful, EF9345 video controller

Public Chat
Similar projects worth following
An RFC2014 bus implementation of the EF9345 application note example of connecting the chip to a Z80, combined with an SRAM and CGA output.

The EF9345 is one of the strangest mostly text mode video cards of the era, with multiple video memory banks, mixed text and user defined graphics, as well as being able to do half width double colour characters anywhere on screen. It's not able to do full graphics but can do block graphics and character based bitmap and colour graphics.

The chip is also plentiful. As I understand it this was the chip connected to an 805x microcontroller than was used in all the minitel terminasl. In addition the output side of it is straight TTL RGB with separate or mixed sync;. That conveniently means that the total amount of electronics required on the video output side is a DB9 connector.

The device expects a multiplexed bus, but there is a reference implementation in the application notes for nailing it to a Z80 style bus as a pair of I/O ports and this is what is used.


The address decode functionality from the application note is quite clever. A 74HCT138 is used to turn reads and writes to two addresses

with the low bits 0 and 2 in this case into what the EF9345 thinks is a multiplexed bus transaction.

Writing to the first port causes O0 to pulse low which pulses AS high and latches the data as the "address". Writing to port 2 causes

RW to pulse low and latches the data bus as the data completing the cycle. A similar process occurs on the read side where it instead pulses DS.

The chipset supports both NTSC and PAL as well as separate or combined sync pulses. The latter makes it very easy to plug in converters for SCART, for composite and or svideo signals. It can also be fed directly into a VGA scaler, but note that most of them expect lower voltages so stick 1K resistors in series with the colour and sync signals.

For SCART 220ohm should work and if you use the combined sync option then you don't need any other electronics (although it won't autodetect without a separate voltage supply)

epf9345.pdf

Schematic

Adobe Portable Document Format - 113.01 kB - 01/17/2023 at 20:32

Preview
Download

  • 1 × EF9345 Thomson video controller
  • 2 × 74HCT138 Electronic Components / Misc. Electronic Components
  • 1 × 74HCT00 Electronic Components / Misc. Electronic Components
  • 1 × 74HCT573 Electronic Components / Misc. Electronic Components
  • 1 × 62256 (or similar)

View all 9 components

  • Fuzix Support

    EtchedPixels03/11/2023 at 12:22 0 comments

    Fuzix will now use this device as a console if detected. There are some rough edges with multiple console support because it turns out the hardware cursor is nailed firmly to the values in the registers used to transfer characters. For a single console this makes total sense. The cursor is sat at the square the next "print stuff" command will use. With multiple consoles however writing to other consoles makes the cursor zip around like crazy.

    Probably need to switch to the software cursor approach.

    It also turns out that the EF9345 emulator I borrowed from MAME for the emulator is really quite bad once you get beyond a few specific use cases.

  • It's alive!

    EtchedPixels01/17/2023 at 20:43 0 comments

    The card tests out, after a lot of staring at the circuit diagram and mystery before re-reading the manual. The device actually tristates if the low address bits (aka the select byte we write) is not 0x2X where X is the register and an 'execute' bit. With the right values it appears on the bus and talks.

    The video side also seems to work, it's currently rigged up with some resistors and a VGA scaler.

    Next stop software. Some of this is fun. The actual device manual was apparently an early work of Abdul Alhazred, shortly before he wrote the Necronomicon. Not only does it make little sense even after hours of arcane study it also shows that the chip really is quite .. strange. The memory layout is peculiar and everything is in 1000 byte blocks with little holes, but all the little holes get collected together as an extra chunk somehow.


    Fortunately there is an application note that explains how to program it, and the actual programming incantations shield you from much of the madness. 40 column mode is somewhat weird, with multiple types of character on the same line at once along with various properties that don't necessarily apply the same way to each. So you can mix two colour characters, four colour half resolution characters and 4x2 block graphics on the same line. 80 column seems a lot saner, so I think I will start with 80 column support.

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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