From 3533f63a40975894ade3c46529a408891f56c40b Mon Sep 17 00:00:00 2001 From: Philip Smart <28005720+pdsmart@users.noreply.github.com> Date: Fri, 28 Sep 2018 17:24:40 +0100 Subject: [PATCH] Delete ReadMe.html --- ReadMe.html | 5436 --------------------------------------------------- 1 file changed, 5436 deletions(-) delete mode 100644 ReadMe.html diff --git a/ReadMe.html b/ReadMe.html deleted file mode 100644 index 37a9708..0000000 --- a/ReadMe.html +++ /dev/null @@ -1,5436 +0,0 @@ - - - - - - - - - - - - - - - - - - -
- -

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)

- -

 

- -
- - - -