From 45ab3cf454edc98391631da465d3f10c3c51d3cc Mon Sep 17 00:00:00 2001 From: Philip Smart <28005720+pdsmart@users.noreply.github.com> Date: Fri, 28 Sep 2018 17:24:01 +0100 Subject: [PATCH] Add files via upload --- ReadMe.html | 5436 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 5436 insertions(+) create mode 100644 ReadMe.html diff --git a/ReadMe.html b/ReadMe.html new file mode 100644 index 0000000..37a9708 --- /dev/null +++ b/ReadMe.html @@ -0,0 +1,5436 @@ + + + + + + + + + + + + + + + + + + +
+ +

Sharp MZ Series +Personal and Business Computer Emulation

+ +

Written by Philip +Smart, 2018 for the Terasic DE10 Nano board under the +MiSTer framework.

+ +

 

+ +

This project aims to +provide full emulation (along with extensions) of the Sharp MZ Series +Computers.

+ +

The following +emulations have been +written:                           ..and the following are under development:

+ +

- +MZ80K                                                             +                                        - +MZ800

+ +

- +MZ80C                                                                                        +             - +MZ80B

+ +

- +MZ1200                                                                                      +             - +MZ2000

+ +

- MZ80A

+ +

- MZ700

+ +

 

+ +

The current emulations provide:-

+ +

·       +48K RAM for +MZ80K,C,1200,A

+ +

·       +64K RAM for +MZ700

+ +

·       +Hardware +Tape Read/Write with selectable 1x - 32x Fast Mode

+ +

·       +Turbo Mode +1x - 32x (ie. 112MHz for MZ700)

+ +

·       +Programmable +Character Generator (PCG-8000/PCG-1200)

+ +

·       +40x25, +80x25 Mono and Colour Display Modes

+ +

·       +320x200, +640x200 8 Colour Bit addressed Graphics

+ +

·       +Updateable +Monitor Rom, CGRom, Keymap, User Rom, FDC Rom per +Emulation type.

+ +

·       +i8253 mono +audio

+ +

 

+ +

Enhancements in +test/under development:

+ +

·       +Floppy Disk +Drive/Controller 5.25"

+ +

·       +Quick Disk +Controller

+ +

·       +Dual +digital Joystick Input (MZ700)

+ +

 

+ +

Known Issues

+ +

·       +Tape Write +isn’t working correctly, I made some structural changes resulting in it no +longer working, so this needs to be resolved.

+ +

·       +Keyboard +mappings could be better, especially for the MZ1200 which is the Japanese +version of the MZ80A.

+ +

·       +HDMI needs +to be re-enabled in the design.

+ +

·       +The Aspect +Ratio/Scandoubler options aren’t working on the VGA +output.

+ +

 

+ +

 

+ +

Installation

+ +

1.     +Follow the Setup Guide to +create a new SD boot disk. https://github.com/MiSTer-devel/Main_MiSTer/wiki/Setup-Guide

+ +

2.     +Copy across to the SD (via scp or mount the SD under Windows/Linux and use local copy +commands) the latest RBF file from the releases folder, ie:-

+ +

scp SharpMZ_MiSTer/releases/SharpMZ_<data>.rbf +root@<de10 ip address>/media/fat/SharpMZ.rbf        # +Target name can be anything you like ending with .rbf

+ +

3.     +Make a SharpMZ +directory on the SD card, ie:

+ +

ssh root@<de10 ip +address>

+ +

mkdir /media/fat/SharpMZ

+ +

4.     +Copy any Rom Files, MZF Tape +Files, DSK files across to the new directory, ie:

+ +

scp *.mzf +root@<de10 ip address>:/media/fat/SharpMZ/

+ +

5.     +Start the MiSTer +menu (ie. press the DE10 reset button if it is not +showing).

+ +

6.     +Select the SharpMZ +core (or whatever name you called it).

+ +

7.     +The emulator will boot into an +MZ80K model with the SP-1002 monitor.

+ +

8.     +Press F12 to change the +configuration, select Save Config to store it.

+ +

 

+ +

Design Summary

+ +

The idea of this design +is to keep the emulation as independent of the HPS as possible (so it works +standalone), only needing the HPS to set control registers,

+ +

read/write tape/floppy +cache ram with complete images and overlay the menu control system. The MiSTer/HPS system is an excellent base on which to host +emulations, but there may be someone wanting to port this emulator to another +target such as the Xilinx Zynq 7000 (which I have also been playing with). This +in theory should allow easier porting if someone wants to port this emulator to +another platform and control it with a PC (parallel port), HPS or instantiate +another CPU as the menu control system.

+ +

 

+ +

As the Cyclone V SE on +the Terasic DE10 has 5.5Mbits of memory, nearly all +the RAM used by the emulation is on the FPGA. The Floppy Disk Controller may +use HPS memory/external SDRAM depending on whether I decide to cache entire +Floppy Disks as per the CMT unit or use the secondary SD card.

+ +

 

+ +

Menu +System

+ +

The MiSTer menu +system is used extensively on this design as the Front End +control. It allows for loading/saving of cassettes and floppy disks, setting +the machine parameters, the display parameters, debugging and access to the MiSTer control menu.

+ +

 

+ +

Tape Storage

+ +

In order to use +the emulation seriously, you need to be able to load and save existing +programs. Initially this was via a CMT (tape) unit and later moved on to +Floppy/Quick Disks.

+ +

 

+ +

This menu +controls the hardware CMT unit and has the following choices:

+ +

·       +Load direct to RAM

+ +

This option +allows you to load an MZF format tape file (ie. 128 +bytes header + code) directly into RAM. It uses the Load Address and Size +stored in the header in order to correctly locate the code and also stores the +header in the Cassette Work area at 10F0H. After load is completed and warm +reset is made. The details of the tape are displayed on-screen and in order to +run the program, simply issue the correct monitor command, ie. +J1200 (Jump to 1200H).

+ +

·       +Queue Tape

+ +

A real cassette +has 1 or more programs stored on it sequentially. The emulation cache only +stores 1 full program so this is a mechanism to line up multiple programs and +they will be fed into the emulation cache as it becomes empty, thus simulating +a real cassette.

+ +

Selecting this +option presents you with a directory listing of all MZF files. Choose one per +selection and it will be added to the Queue. The programs queued will be +displayed on the menu.

+ +

·       +Clear Queue

+ +

This option +allows you to purge all queue entries.

+ +

·       +Save Tape

+ +

This option +allows you to save a program to the MiSTer SD card +which is in the emulation cache. Normally the emulation would have written a +program/data to tape (ie. via the BASIC ‘SAVE’ +command) which in reality is stored in the emulation cache.

+ +

The tape is +saved under the name given in the emulation save command (ie. +in BASIC ‘SAVE “myfile”’ would result in a file +called myfile.mzf being saved).

+ +

·       +Auto Save Tape

+ +

This option +allows you to auto save the emulation cache. Ie. when +an emulation save completes, a flag is raised which is seen by the MiSTer program and the emulation cache is saved to SD under +the name given in the emulation.

+ +

·       +Tape Buttons

+ +

This option +allows you to set the active Tape buttons, ie. Play, +Record or Auto. Auto is a hardware mechanism to detect if the emulation is +reading or writing to tape and process accordingly.

+ +

·       +Fast Tape Load

+ +

This option +allows you to set the speed of the tape drive. On the original machines, the +tape runs at 1200baud which is quite slow, so use of this option is +recommended.

+ +

You can select +one of: "Off", "2x", "4x", "8x", +"16x", "32x"

+ +

Selecting “Off” +runs the tape drive at the original speed.

+ +

 

+ +

 

+ +

Machine

+ +

The emulation +emulates several Sharp MZ computers and this menu allows you to make selections +accordingly.

+ +

·       +Machine Mode

+ +

This option +allows you to choose which Sharp MZ computer is emulated. Currently the choices +are:

+ +

"MZ80K", +"MZ80C", "MZ1200", "MZ80A", "MZ700" +with "MZ800", "MZ80B", "MZ2000" in the pipeline.

+ +

·       +CPU Speed

+ +

This option +allows you to set the speed at which the emulation runs. Generally speaking, +higher speeds can be beneficial in non-graphics based +applications although some games benefit from a small speed boost. The choices +are:

+ +

MZ80K/C/1200/A  => "2MHz",   "4MHz", "8MHz",  "16MHz", "32MHz", +"64MHz"

+ +

MZ700                     => "3.5MHz", +"7MHz", "14MHz", "28MHz", "56MHz", +"112MHz"

+ +

·       +Audio Source

+ +

This option +allows you to choose what is played through the audio output. The choices are:

+ +

"Sound"   => The mono audio generated by the +emulation output on L/R channels.

+ +

"Tape"     => The CMT signals, Playback on Right +channel, Record on Left channel. In theory you should be able to connect the +right channel to an external tape drive and record to physical tape.

+ +

·       +Audio Volume

+ +

This option +allows you to set the output volume. There are 16 possible steps from Min .. Max.

+ +

·       +Audio Mute

+ +

This option +allows you to Mute the output.

+ +

·       +Rom Management

+ +

The emulation +comes with the Monitor, Character Generator and Key Mapping Roms +built-in for each machine emulated. This option selects a sub-menu which allows +you to upload non-standard Roms when the emulation is +started (ie. the Core is selected).

+ +

 

+ +

o   +Machine Model

+ +

This option +allows you to select the emulated Sharp MZ computer to which the custom rom +images will affect. The choices are:

+ +

"MZ80K", +"MZ80C", "MZ1200", "MZ80A", "MZ700" +with "MZ800", "MZ80B", "MZ2000" in the pipeline.

+ +

o   +User ROM

+ +

On some machine +models (ie. MZ80A) there exists a socket to place a +User ROM, which will have control passed to it should the first byte be 0 and +non-writeable. Although this option only exists on certain models, it is a nice +to have feature it is available for all machine models.

+ +

This option +allows you to enable or disable the User ROM (NB. If you enable this option, it +only enables hardware select, you still need to upload a ROM which has the +first byte set to 0).

+ +

o   +Floppy Disk ROM

+ +

A Floppy Disk +drive was an expansion option for the Sharp MZ computers, and with the advent +of the MZ700, a Quick Disk drive was also an option. These options typically +held control software in a ROM at location F000H. This option allows you to +enable this feature, albeit you still need to upload a ROM.

+ +

o   +Enable Custom Rom

+ +

This section +allows you to enable custom Roms and select the image +which will be uploaded. For each Rom, you can enable or disable. If enabled, +you can choose the required file. The Roms which can +be customized are:

+ +

§  +Monitor (40x25)

+ +

§  +Monitor (80x25)

+ +

§  +Char Generator

+ +

§  +Key Mapping

+ +

§  +User Rom

+ +

§  +Floppy Disk

+ +

The Monitor Rom +is a special case. Most of the Personal Sharp MZ Computers were only able to +display 40x25 characters so the Rom hardcodes these parameters. Some people +required wider screens for use with CPM, so hardware modifications were made to +create an 80x25 display. The emulation is capable of both modes but in order to +run correctly, a different Monitor Rom for 80x25 display is needed.

+ +

 

+ +

 

+ +

Display

+ +

The display on +the Sharp MZ computers was originally quite simplistic. In order to cater for +enhancements made in each model and by external vendors, the emulation has +several configurable parameters which are grouped under this menu.

+ +

 

+ +

·       +Display Type

+ +

This option +allows you to select the display used. Normally, when a machine model is +chosen, it defaults to the original display, this option allows you to override +the default. The choices are:

+ +

"Mono +40x25", "Mono 80x25 ", "Colour +40x25", "Colour 80x25"

+ +

·       +Video

+ +

An extension to +the original design was the addition of a graphics frame buffer. It is possible +to blend the original display video with the graphics frame buffer. This option +allows you to enable or disable the original display video (ie. +if you only want graphics).

+ +

·       +Graphics

+ +

There were +various add-on boards made available in order to display bit addressable pixel +graphics. This is my extension to the original design and as I gather +information on other add-on boards, I will adapt the hardware interface so it +accommodates these options. Please see the section below on the graphics frame +buffer details if needed. This option allows you to enable or disable the +display of the graphics frame buffer (which is blended with the original character based video output).

+ +

·       +VRAM CPU Wait

+ +

I deviated from +the original design by adding a pixel based display +buffer. During the Vertical Blanking period, I expand the character +based VRAM and Attribute RAM into pixels and store them in the display +buffer (a double buffer technique). This consequently means that no snow/tearing +will occur if the CPU accesses the VRAM/Attribute RAM during the visible +display period. The original design added software waits (MZ80K) and hardware +CPU wait states (MZ80A/700) to eliminate snow/tearing and due to the addition +of double buffering, this is no longer needed. You can thus disable the wait +states with this option and gain some speed or enable them to keep +compatibility.

+ +

·       +PCG Mode

+ +

All of the Sharp +MZ computers used character generators which were hard coded in a ROM. External vendors offered add-ons to allow for a +Programmable Character Generator based in RAM. This option enables the +Programmable Character Generator which is compatible with the HAL PCG-8000/PCG-1200 add-ons.

+ +

·       +Aspect Ratio

+ +

This option is a +MiSTer framework extension which converts the Aspect +Ratio from 4:3 to 16:9. It doesn’t work at the moment with VGA output but +should work on HDMI. Use this option to choose the desired format.

+ +

·       +Scandoubler

+ +

This option is a +MiSTer framework extension which doubles the scan +lines to widen/improve the image of older computer displays. It doesn’t work +correctly with VGA output at the moment but should work on HDMI. The choices +are: "None", "HQ2x", "CRT 25%", "CRT +50%", "CRT 75%"

+ +

 

+ +

System

+ +

This is the MiSTer main control menu which allows you to select a core, +map keys etc.

+ +

 

+ +

Debugging

+ +

As you cannot +easily get out a trusty Oscilloscope or write breakpoint/debug messages with an +FPGA, I’ve added a debugging mode which can be used at any time without +affecting the emulation (unless you choose a debug frequency in which case the +emulation will run at the selected frequency).

+ +

Basically, the 8 +LED’s on the main DE10 main board can display a selectable set of signals, +either in auto mode (move from set to set after a fixed period) or a static +set. The sample rate of the signals displayed on the LED’s is selectable from +the Z80 CPU frequency down to 1Hz. You can also attach an oscilloscope onto the +LED’s and thus see the waveform if a simple flicker is not sufficient. In +addition, you can slow the CPU frequency down in steps from 1MHz to 1/10Hz so +you have a good chance of seeing what is happening internally.

+ +

This debugging +addition is also a great method of understanding the internals of a computer +and seeing the Z80 in action.

+ +

 

+ +

To use the debug +mode, press F12 to enter the MiSTer menu, then select +Debug and you are offered the following choices:

+ +

·       +Select Memory Bank

+ +

This option +allows you to select one of the memory banks so it can be written to a local +(DE10 SD Card) file.

+ +

"SysROM"     = System ROM. This is +the complete concatenated set of Monitor ROM’s for all the emulations.

+ +

"SysRAM"     = System RAM. This is +the 64K Main RAM.

+ +

"KeyMap"     = Key Mapping ROM. +This is the complete concatenated set of Key Mapping’s for all the emulations.

+ +

"VRAM"     +    = Video RAM. This is the 2K Video RAM concatenated with +the 2K Attribute RAM.

+ +

"CMTHDR"    += Cassette Header. This is the 128 byte memory holding +the last loaded or saved tape header.

+ +

"CMTDATA"  = Cassette Data. This is the 64K memory holding +the last loaded or saved tape data.

+ +

"CGROM"      += Character Generator ROM. This is the complete concatenated set of CGROM’s for +all the emulations.

+ +

"CGRAM"      += Character Generator RAM. This is the 2K contents of the Programmable +Character Generator RAM.

+ +

"All"                  += This is the complete memory set as one file.

+ +

·       +Dump To <memory bank +name>

+ +

Dump the +selected memory bank. The system will show the file name used for the dump.

+ +

·       +Debug Mode

+ +

Select to Enable +or Disable

+ +

o   +CPU Frequency

+ +

Select the CPU +Frequency which can be one of:

+ +

"CPU/CMT", +"1MHz", "100KHz", "10KHz", "5KHz", +"1KHz", "500Hz", "100Hz", "50Hz", +"10Hz", "5Hz", "2Hz", "1Hz", +"0.5Hz", "0.2Hz", "0.1Hz"

+ +

o   +Debug LEDS

+ +

Select to +Enable or Disable

+ +

§  +Sample Freq

+ +

This is the +sampling frequency used to sample the displayed signals. It can be one of:

+ +

"CPU/CMT", +"1MHz", "100KHz", "10KHz", "5KHz", "1KHz", +"500Hz", "100Hz", "50Hz", "10Hz", +"5Hz", "2Hz", "1Hz", "0.5Hz", +"0.2Hz", "0.1Hz"

+ +

§  +Signal Block

+ +

This is the +signal block for display. It can be one of:

+ +

"T80"                    => CPU Address/Data Bus +and associated signals.

+ +

"I/O"                     => Video, Keyboard and Select signals.

+ +

"IOCTL"                => External I/O Control. +Address/Data and Select signals.

+ +

"Config"               => Register configuration +signals.

+ +

"MZ80C +I"           => 5 sets of signals +relating to the MZ80K/C/1200/A/700/800.

+ +

"MZ80C +II"          => An additional 5 +sets of signals.

+ +

”MZ80B I"           => 5 sets of signals relating to +the MZ80B/MZ2000.

+ +

"MZ80B +II"          => An additional 5 +sets of signals.

+ +

§  +Bank

+ +

This is the +Bank within the Block to be displayed on the LED’s. It can be one of:

+ +

"T80"               +   => "Auto",   "A7-0",     +"A15-8",    +"DI",       "Signals"

+ +

"I/O"                 + => "Auto",   "Video",    +"PS2Key",   "Signals"

+ +

"IOCTL”             +=> "Auto",   "A23-16",   +"A15-8",    "A7-0",     +"Signals"

+ +

"Config"         +   => "Auto",   "Config +1", "Config 2", "Config 3", "Config 4", +"Config 5"

+ +

"MZ80C +I"         => "Auto",   "CS +1",     "CS 2",     +"CS 3",     "INT/RE",   +"Clk"

+ +

"MZ80C +II"       => "Auto",  + "CMT 1",    "CMT +2",    "CMT 3"

+ +

"MZ80B +I"        => Not yet defined.

+ +

"MZ80B +II"       => Not yet defined.

+ +

 

+ +

 

+ +

Graphics +Frame Buffer

+ +

An addition to the original design is a +640x200/320x200 8 colour Graphics frame buffer. There +were many additions to the Sharp MZ series to allow graphics (ie. MZ80B comes with standard mono graphics) display and as +I don’t have detailed information of these to date, I designed my own extension +with the intention of adding hardware abstraction layers at a later date to add +compatibility to external vendor add-ons.

+ +

 

+ +

This frame buffer is made up of 3x16K RAM +blocks, 1 per colour with a resolution of 640x200 +which matches the output display buffer bit for bit. If the display is working +at 40x25 characters then the resolution is 320x200, otherwise for 80x25 it is +640x200.

+ +

 

+ +

The RAM for the Graphics frame buffer can +be switched into the main CPU address range C000H – FFFFH by programmable +registers, 1 bank at a time (ie. Red, Green, Blue +banks). This allows for direct CPU addressable pixels to be read and/or written. +Each pixel is stored in groups of 8 (1 byte in RAM) scanning from right to left +per byte, left to right per row, top to bottom. Ie. +if the Red bank is mapped into CPU address space, the byte at C000H represents +pixels 7 - 0 of 320/640 (X) at pixel 0 of 200 (Y). Thus 01H written to C000H +would set Pixel 7 (X) on Row 0 (Y). This applies for Green and Blue banks when +mapped into CPU address space.

+ +

 

+ +

In order to speed up display, there is a Colour Write register, so that a write to the graphics RAM +will update all 3 banks at the same time.

+ +

 

+ +

The programmable registers are as follows:

+ +

 

+ +

Graphics Bank Switch Set Register: I/O +Address: E8H (232 decimal)

+ +

Switches in 1 of +the 16Kb Graphics RAM pages (of the 3 pages) to C000 - FFFF. The bank which is +switched in is set in the Control Register by bits 1/0 for Read operations and +3/2 for Write operations. This bank switch overrides all MZ80A/MZ700 page +switching functions.

+ +

Graphics Bank Switch Reset Register: I/O +Address: E9H (233 decimal)

+ +

Switches out the +Graphics RAM and returns to previous state.

+ +

 

+ +

Control Register: I/O Address: EAH (234 +decimal)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

7

+
+

6

+
+

5

+
+

4

+
+

3

+
+

2

+
+

1

+
+

0

+
+

 

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

< 

+
+

Read mode (00=Red Bank, 01=Green Bank, + 10=Blue Bank, 11=Not used).

+

Select which bank to be read when enabled + in CPU address space.

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

Write mode (00=Red Bank, 01=Green Bank, + 10=Blue Bank, 11=Indirect).

+

Select which bank to be written to when enabled + in CPU address space.

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

VRAM Output. 0=Enable, 1=Disable. Output + Character RAM to the display.

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

GRAM Output. 0=Enable, 1=Disable. Output + Graphics RAM to the display.

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

Blend Operator (00=OR ,01=AND, 10=NAND, + 11=XOR).

+

Operator to blend Character display with + Graphics Display.

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+ +

 

+ +

Red Colour Writer +Register: I/O Address: EBH (235 decimal)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

7

+
+

6

+
+

5

+
+

4

+
+

3

+
+

2

+
+

1

+
+

0

+
+

 

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

< 

+
+

Pixel 7 Set to Red during indirect write.

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

          + 6

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

          + 5

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

          + 4

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 3

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 2

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 1

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

Pixel 0 Set to Red during indirect write.

+
+ +

 

+ +

Green Colour +Writer Register: I/O Address: ECH (236 decimal)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

7

+
+

6

+
+

5

+
+

4

+
+

3

+
+

2

+
+

1

+
+

0

+
+

 

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

< 

+
+

Pixel 7 Set to Green during indirect + write.

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

          + 6

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

          + 5

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

          + 4

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 3

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 2

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 1

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

Pixel 0 Set to Green during indirect + write.

+
+ +

 

+ +

Blue Colour +Writer Register: I/O Address: EDH (237 decimal)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

7

+
+

6

+
+

5

+
+

4

+
+

3

+
+

2

+
+

1

+
+

0

+
+

 

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

^

+
+

< 

+
+

Pixel 7 Set to Blue during indirect write.

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

          + 6

+
+

|

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

          + 5

+
+

|

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

          + 4

+
+

|

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 3

+
+

|

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 2

+
+

|

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

          + 1

+
+

< 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

 

+
+

Pixel 0 Set to Blue during indirect + write.

+
+ +

 

+ +

For Indirect mode (Control Register bits +3/2 set to 11), a write to the Graphics RAM when mapped into CPU address space +C000H – FFFFH will see the byte masked by the Red Colour +Writer Register and written to the Red Bank with the same operation for Green and +Blue. This allows rapid setting of a colour across +the 3 banks.

+ +

 

+ +

Credits

+ +

My original intention was to port the MZ80C +Emulator written by Nibbles Lab https://github.com/NibblesLab/mz80c_de0 +to the Terasic DE10 Nano. After spending some time +analyzing it and trying to remove the NIOSII dependency, I discovered the MISTer project, at that point I decided upon writing my own +emulation. Consequently some ideas in this code will +have originated from Nibbles Lab and the i8253/Keymatrix +modules were adapted to work in this implementation. Thus +due credit to Nibbles Lab and his excellent work.

+ +

 

+ +

Also credit to Sorgelig +for his hard work in creating the MiSTer framework +and design of some excellent hardware add-ons. The MiSTer +framework makes it significantly easier to design/port emulations.

+ +

 

+ +

Links

+ +

The Sharp MZ Series Computers were not as +wide spread as Commodore, Atari or Sinclair but they had a dedicated following. +Given their open design it was very easy to modify and extend applications such +as the BASIC interpreters and likewise easy to add hardware extension. As such, +a look round the web finds some very comprehensive User Groups with invaluable +resources. If you need manuals, programs, information then please look (for +starters) at the following sites:-

+ +

https://original.sharpmz.org/

+ +

https://www.sharpmz.no/

+ +

https://mz-80a.com

+ +

http://www.sharpusersclub.org/

+ +

http://www.scav.cz/uvod.htm (use chrome to auto translate Czech)

+ +

 

+ +
+ + + +