Here are my thoughts on the DVI :)

All you really need is the service manual and user manual, the DVI
operation is easy to reverse engineer from those two documents.  The ŒZ80¹
DVI code is actually on the DVI boot disk.  When the DVI powers on it
boots from the floppy disk to load the operational code. The 1K P-ROM on
the DVI only contains the init code and boot code (I think) to load
pre-assigned floppy sectors, the other ROMs are associated with the
character/CRT control.  There are another set of sectors on the DVI boot
disk that contain the disk BASIC for the 100/102 and others that are used
for the T200.  The 100/102 and 200 boot slightly differently due the T200
RAM bank structure I believe.  However this is taken care of by the boot
process itself and not really an issue.

The CRT is driven by a CRTC controller chip that has 2K of RAM associated
with it - just character based, hence the character generation ROM.  The
FDC is a really simple floppy controller it does very little the Z80
processor does the majority of the work formatting the sector to write to
the floppy.  It also does the extraction of the sector data from the bits
read from the floppy disk.

The interface to the DVI is a simple Œmail box¹ that is based on the 8255
PPI chip, Mode 1 operation if memory serves.  Basically the Model T writes
a control byte to the PPI which causes an interrupt to the DVI CPU.  The
DVI CPU will then perform whatever action is commanded based on the data
written to the mail box.  The model T polls the PPI waiting for data to
come back from the DVI box to either say the command was successful or
deliver the requested data.

The mailbox control commands are in the service manual as is the exact
mailbox protocol.  The only difficult part is building a 5V-to-3V level
shifter to interface to modern hardware such as the PI, but there are
bi-directional Œ245 and Œ244 chips that are available.   The PI would have
to deal with sector based access in order to boot the disk BASIC needed to
control the DVI but that is quite easy to do.

I did partly disassemble the DVI Z80 code if anyone would like it, just
let me know off line - please no sniggering at my efforts :-D   The code
is pretty much spaghetti, parts are quite simple to follow but then the
FDC code gets very involved.  I personally feel it leads you down a rabbit
hole that does not really help except to confirm what is already available
in the two documents.

Based on all this information I built a PIC 32MX based DVI emulator that
could read SD-Card based Œvirtual¹ floppy disks (to boot) and output 3-bit
VGA characters and graphics.  It is about 80-90% complete but then I had
to move so it is all packed away in storage at the moment.  It did need
some extensions to the Model T to allow selection of the Œvirtual¹ disk
and to configure some things on the board which was to be the next step.
Although this could (and is now) done using BASIC print statements.

Just my 2c worth. :)


On 13/9/18, 6:53 AM, "M100 on behalf of Greg Swallow"
<m100-boun...@lists.bitchin100.com on behalf of gswal...@mchsi.com> wrote:

>Here here! With all the talk about a PI or TEENSY as TPDD, why not do
>something that duplicates the code in the DVI. The DVI is a Z80 after
>all; right? Seems a PI or some such single board CPU would make a good
>candidate to make a modern DVI. My EPROM programmer is shot so I can't
>pull the ROM and snatch a copy. Is there a source for at least the DVI
>protocol? More than say the DVI Service manual?
>
>God bless,
>GregS <><
>
>
>----- Original Message -----
>From: "James Zeun" <james.z...@gmail.com>
>To: m...@bitchin100.com
>Sent: Thursday, September 13, 2018 3:58:02 AM
>Subject: [M100] DVI or modern equivalent
>
>Hey everyone!
>
>We discussed this a while back but I'm not sure if anything any was said
>on
>video output.
>
>At present is there any way I can output the M100's screen to a monitor?
>Akin to how the original DVI did?
>
>Cheers


Reply via email to