Sharp Computers

Introduction

Sharp released a range of personal computers under the MZ name from 1978, selling them in Japan and Europe (especially UK and Germany), to moderate success. The first in the MZ range was a computer kit called the MZ-40K, available in 1978, featuring a 4-bit MB8843 processor, later succeeded by the MZ-80K in 1979, based around an 8-bit LH0080A CPU (Z80 compatible). Sharp would go on to produce many more computers, including the MZ-700 series in 1982, sharing some compatibility with the MZ-80K.

Please check out the various sections on this page to learn more about specific Sharp computers. I always try to present the most accurate information on my site by reporting what I know from using the computers myself as well as by researching online, however, stated hardware release dates vary quite a bit online. I have looked at archived publications found online (such as magazines) in order to present the correct dates on my site, even if it contradicts what other sites claim.

Notes:

The computer commands on this page are in bold.

Hex values are specified with the dollar ($) sign.

Unless otherwise stated the screenshots on this page were taken using an Elgato capture card using the RGB video connection of the computer (where applicable).

Sharp MZ-700

Overview

The Sharp MZ-700 range consists of three main models:

MZ-711 The base model, no tape recorder/printer upgrades.

MZ-721 Features a built-in cassette player.

MZ-731 Has both a built-in tape recorder and printer plotter.

All models feature the 'MZ-700' family name badge on the top of the computer but the underside has a label specifying the computer's actual model number. Likely, most people bought the MZ-711 and then upgraded it later as that would have provided the cheapest option initially, which is likely why model MZ-711 seems to be the most common model found today, even with the upgrades fitted. Speaking of upgrading, Sharp made it very straightforward to install the tape recorder and plotters as modules with dedicated connectors internally to the computer.

Let's now look at the connections and switches provided by all three main models, which are located at the back of the computer: RF (for TV), composite connector (for TV/monitor), colour/B&W switch (set to B&W for monochrome TV/monitor), channel adjustment for RF, RGB (for monitor), read and write (for external cassette player), I/O bus (for expansion) and printer port, volume (for internal speaker), reset switch, 2-pin mains input, FG (Frame Ground), power switch, and joystick ports. The I/O bus and printer ports are usually covered by their own metal, removable blanking plates, and the joystick ports are covered by a plastic, removable blanking plate, a nice touch to keep the connections clean and protected when not in use.

Note that the sounds produced by the computer only go to the internal speaker and don't get routed to the TV socket.

Programs can be loaded and saved using an external cassette player or digital player (e.g., MP3 player) by connecting the player's output to the Sharp's read port and the player's input to the Sharp's write port. However, you will need to have the internal cassette player loopback installed, please see the Technical/Cassette Player section for more information. Make sure to use audio leads with slim sheaths otherwise the cable connectors may not make good enough contact due to the computer case cutouts being quite small.

Please see the Software section for more information about using software with the MZ-700 as well as links to download software.

The computer can be connected to a TV via the RF socket but that will give you the worse quality video and you will need to tune the TV into the right frequency. For better looking video you can use the composite connection and it's actually a good idea to set the colour/B&W switch to B&W for an improved look if you don't mind not having colour. For the very best looking video you will want to use RGB, but you will need to buy or make up either an RGB to SCART or RGB to VGA lead/adapter.

Fortunately, if you are looking to buy a second hand Sharp MZ-700 computer, at least in the UK, they generally go for around £200 in working condition, perhaps £300 if boxed but be aware that, like with other computers of the time, the X2 capacitor in the power supply may fail at any time and although the computer will likely keep running, it will release an unpleasant smell. If the computer has an internal cassette player or printer they also potentially will need work done to them, as the printer mechanism can fail and the belt drive of the player may have perished. Thus, be sure to check if you buy a Sharp computer that it has been serviced, if not it is strongly recommended to have it checked over sooner rather than later.

Quite unusual for microcomputers of the time, the MZ-700 range doesn't have BASIC built and instead there is a very simple machine code monitor program in the ROM (see below) which the computer boots into very quickly and from that you can use the limited number of commands available to edit the RAM, jump to code, and load and save machine code programs. Sharp BASIC also has its own equivalent 'monitor' type commands, which are discussed in the BASIC section.

Most often you'll want to load a program from cassette (usually BASIC) which you can do so by using the L command followed by the CR key. Note that if you're using an external player the play message doesn't appear when you use the load command since the computer can't detect the play button being pressed on an external player but you will need to press play on whatever type of player you are using. After a short time the computer should report that it has found a file and then you will need to wait until the file loads, which can take a couple of minutes. See the Troubleshooting/Difficulty loading programs from cassette section for more details.

The advantage of not having BASIC built-in is that software loaded from cassette can take advantage of having more RAM available instead of space being taken up by a programming language ROM. However, on the downside, loading BASIC or other programming languages is slow as it's not instantly available, which is a shame as most people would want to start with BASIC. In my opinion, if the computer had a cartridge socket and BASIC had been provided on cartridge then that would have been a good solution for those wanting to use BASIC. See the BASIC section to learn more about the programming language for MZ-700 computers.

As a simple example of using the built-in monitor program you can see in the following screenshot I've changed the first two asterisks in the top-left hand corner to a chequered pattern symbol:

I did so by using the M command which must immediately be followed by the memory address in hex that you wish to edit (there is no indication when a command is entered incorrectly). Screen memory starts at $D000 and stores the display code value for every character on screen; the display codes are listed on page 155 on the Owner's manual. Value $6B represents the asterisk (which the M command shows at $D000) and $6C the chequered character, which I typed in, followed by CR, changing the screen as mentioned. The value at $D001 is then also displayed, which I also changed from $6B to $6C, and lastly the value at $D002 is also shown, representing the third character across the screen, which is blank and is zero. To exit the M command you have to press shift + break together.

You can read more about the M command on page 148 of the Owner's manual, as well as the other monitor commands, starting on page 147.

There is a monitor command that isn't mentioned in the Owner's manual even though it has an equivalent in Sharp BASIC and that's the Dump (D) command, which would have been a serious oversight to not include. I only found out about the command because the 'Peeking & Poking The Sharp MZ-700' publication (see Resources section) mentions it. The D command displays on each line the start address, followed by 8 bytes in hex, and then the ASCII equivalent of the memory values, using full stop for undisplayable characters.

Firstly, you can specify just the start address, which will display 160 bytes from that address, for e.g., D000 will dump memory from $0000 to $009F. You can also specify the address range by following D with the start and end addresses. For e.g., D45124582 will display the memory contents from $4512 to $4581 (the end address specified is not inclusive), as in the image below.

If the dump command causes the screen to scroll, holding the spacebar will cause the listing to stop, holding shift with slow the listing, and shift + break together to stop the listing. Unfortunately, you cannot use the arrow keys to move to a displayed byte and edit it like you can with the Sharp BASIC monitor dump command. If you do not include a space between the start and end addresses then the end address will be ignored and you will just get 160 bytes from the specified start address. Note that D on its own without any values does nothing.

BASIC

The MZ-700 range doesn't have BASIC built-in but programming languages including BASIC could be loaded from cassette, and in this section we will look at Sharp BASIC, which can be loaded in the normal way using the L command followed by CR. A copy of Sharp BASIC can be found at:

https://archive.org/details/s-basicswesharpmz-700

BASIC takes almost three and a half minutes to load from cassette but once loaded you will be presented with the following screen:

We can see that there are 36,439 bytes free, which is less than that available from the Commodore 64 (38,911), for example, which was released at a similar time but has BASIC in the ROM. However, the BASIC provided by Sharp has a lot more commands than the standard C64 BASIC, which lacked commands to more easily take advantage of its much better graphics and sound capabilities compared to the Sharp, requiring users to POKE memory locations instead.

It's recommended to read through the Owner's manual to learn about the BASIC commands and features. please see the Resources section for a link to the Owner's manual. A couple of useful key combinations that are worth mentioning are Shift + Clear to clear the screen and return the cursor to the top-left of the screen and Shift + Home, which only returns the cursor to the top-left of the screen without clearing the screen.

To give you a little taste of a simple BASIC program, I put together a simple listing, with its results underneath, which displays the word 'COLOUR' in the available colours:

Sharp BASIC only has 8 colours and we can set the colour of text with either the COLOR command or through the PRINT command, which requires we use a value from 0 to 7 for the text then background colour, in square brackets. For best contrast I chose to display the various colours against a black background (I had already set the background to black) but of course that causes an issue when setting the text colour to black. So, in line 10 we display 'COLOUR' in black text (value 0) on white background (value 7). Next, line 20 sets up a loop to go through the remaining colours using the values 1 to 7, and in line 30 we output 'COLOUR' using the current text colour value and on a black background. This repeats by way of the NEXT command on line 40, causing the loop to repeat until we've used all the colours.

For reference the colours and associated values are:

0 black
1 blue
2 red
3 purple
4 green
5 light blue
6 yellow
7 white

BASIC programs can be loaded using the LOAD instruction, such as:

LOAD "PROG"

Which will load a program called 'PROG'. While loading the computer will announce (hopefully) that it had found the specified file, followed by a loading message.

To save a BASIC program use the SAVE command instead of LOAD, like this:

SAVE "PROG"

While saving the computer will confirm that it is saving the file.

You can also load machine code programs; please see the Owner's manual page 28 for details.

Included with Sharp BASIC is a number of machine code monitor commands which improve on the built-in ones, as well as additional commands, and taking advantage of the screen editor, making life easier when working low level. In BASIC you must use the  BYE command to be able to enter the advanced monitor, giving you access to the new commands, which are detailed starting on page 99 of the Owner's manual. Use the R command to return to BASIC from the monitor.

Here is a comparison of the available commands of the two monitor versions:

ROM Monitor BASIC Monitor Function

# Transfers control to the RAM area

B Toggle key press bell sound on/off

D D Dump memory

F Find data string

J G Call subroutine

L L Load file into memory

M M Memory edit

P P Printer/display output toggle (printer control for ROM monitor)

R Return control to calling program

S S Save memory to file

T Transfer memory contents

V V Verify file

An example of the difference between the two monitor types, the ROM monitor D command doesn't let you edit the values on screen after running the command whereas the BASIC version does, updating the values in memory if you press CR on a displayed line that you have edited. Also, you will notice that the layout of the BASIC version is slightly different in that it puts the ‘:’ symbol at start of each line and the ‘=’ symbol between the address and first value. 

In the next screenshot you can see that I've dumped memory from $1200 to $127F using the command D1200, which dumps 128 bytes from $1200, since I didn't specify an end address. I used the arrow keys to move to the first value (previously $00) and changed the value to $01 by typing the value and pressing CR, and then I relisted the values using D12001201 to avoid scrolling by dumping a smaller range of values. We can thus see how useful the dump command is for editing 'random' memory locations since the M command is more of a sequential memory editor, although that is helpful for entering data byte-by-byte in adjacent memory locations.

Unlike with the ROM monitor, the BASIC version of the dump command does not let you pause the listing with spacebar and shift has no effect either as it does with the built-in monitor dump command.

Games

When I bought my MZ-711 recently it came with a digital player containing many games and other software, which I've only begun to look at, but have presented here three of the games I've played.

UFO

After loading we are presented with the title screen and a prompt for instructions to be displayed:

Below is the first screen that is shown if you press 'Y' and there are several screens of text that follow.

The game being played is shown next; the atmosphere is represented by pink blocks, which the aliens fall through, and the laser you control is at the bottom of the screen. I found it quite difficult to line up the laser exactly with the falling aliens and when you shoot you only briefly see an effect representing the laser so it can be tricky to tell if you've hit an alien without looking at the score.

3D-Car Race

The next game I'm showing is 3D-Car Race, of which you can see the title screen below:

In this game you control your (very crudely drawn) car which starts off on the right side of the road and then you use the arrow keys to move your car left/right, avoiding the other cars speeding by, as you score increases. The game can prove quite tricky to play but if you do crash into another vehicle you loose a car, and when all are used up the game ends.

Even thought the graphics are very basic I am impressed how the game gives a sense of speed and the dips in the road (such as seen in the image above) are a nice touch.

Here is a video showing some gameplay in action from YouTube user Highretrogamelord:

Mac Pac

This game appears to be a German clone of Pac-man of which the title screen can be seen below:

From the screenshot above we can translate 'vertriebsrechte' as 'distribution rights' and 'anzahl der spieler' as 'number of players'.

The game indeed has four player support (players take turns) and decent graphics (see the next screenshot) but most striking for me at least is when you get killed by a ghost the computer makes the same beep sound as when it boots, but unfortunately the game lingers more than I would like before letting you continue playing.

Lastly, here is the game over screen:

The four player scores ('spieler' is 'player') are lsited and at the bottom of the screen is the prompt 'noch ein Spiel', translated as 'another game'. Answer with 'J' for yes (short for 'ja' or 'Jawohl', German words for 'yes') or 'N' for no (nein in German).

Here is a video of Mac Pac being played from YouTube user Top Retro Games:

I showed off a selection of MZ-700 games in a video I made:

Repairs

Like with many other computers of the time, the PSU contains a RIFA branded X2 safety capacitor that must be replaced otherwise likely it will crack over time and explode while the computer is powered on. Although the capacitor exploding doesn’t usually stop the computer from working, it’s not nice to have nasty smelling smoke billowing out of the computer so it’s always best to replace before it happens. Either get someone to replace the capacitor (if it hasn’t already been changed) or if you are confident you can do it yourself but as with anything mains powered, if you’re not sure, get someone else to do it who does have experience.

Before starting ensure that the main cable is detached from the computer.

To remove the PSU, firstly take apart the computer and then unplug the PSU DC connector from the main board, then there are four screws that hold down the PSU that need taking out (note that one of the screws also holds (note that one of them also holds in a keyboard wire). You can then lift up the PSU by its rear end but you may need to move the keyboard out of the way.

To open up the PSU: take out the single screw from the top toward where the mains goes in and underneath toward where the DC cable comes out, there are two more screws that need taking out. You can then carefully separate the two metal pieces, which involves pushing out the cable grommet that protects and hold in the DC wire. To separate the PCB from the metal there is a black, plastic stud that has to be pushed out (you can carefully prise the PCB from the stud). Lastly, unscrew the mains socket and switch, although you can skip that step and stand the PCB upright if you are just changing the RIFA capacitor. There is also a plastic shield between the PCB and metal that needs removing, it must go back in the same place when putting the PSU back together.

Look for capacitor C2 and check its condition, if it's in a bad state like the one outlined in the photo below then it needs changing for a new one.

Capacitor C2 is rated for 0.047uF/250V and must be replaced with the same X2 type but the voltage rating can be higher. I've highlighted in the next photo the position of the C2 connections on the underside of the PCB to help with removing it:

Be sure to check other capacitors - in particular the electrolytics - to see if they also need swapping for new ones. You can see the new capacitor I installed in this image:

After replacing the capacitor(s), put the PSU back together (don't forget the plastic shield!) and you can test the PSU with a multimeter on its output, which should give a reading very close to 5V. If that is so, then you should be good to reinstall the PSU into the computer and do a final check that the computer boots and runs as normal.

Software

Digital cassette tape images can be downloaded from different online sites and typically they come in either MZF or WAV format, with WAV files being the easiest to use since they can be played straight from a PC, smartphone, digital player, etc. MZF files are to be used with a Sharp computer emulator or special digital player but can be converted to WAV, with MZF2WAV being a program that can do the conversion. There is both a command line version (MZF2WAV) and GUI version (MZF2WAVGUI), both can be download from:

http://retro-rick.djsho.co.uk/?p=8

I have found that when using MZF2WAVGUI to convert from MZF to WAV it's best to select the 'c' option (via SET PARAMETERS) button otherwise the loading will fail when trying to use the resulting WAV files with the MZ-700 (or other Sharp computer).

As for recording from the MZ-700 to a digital player, I used a TRS audio lead to connect the WRITE port of the MZ-700 to the microphone input of the player. I successfully saved and loaded a BASIC program, both with the player's recording input set to 'microphone' and 'line in', and with the sample rate set to the minimum of 512kbps. Note that when saving it's best to press record first on the player before getting the computer to start recording to ensure it's saved in full.

Download links

Applications/BASIC V1.0A audio feed:

https://archive.org/details/applicationsbasicv1.0asharpmz-700

Hu-BASIC 2.0a:

https://archive.org/details/mz-700-hu-basic-2-0

Japanese Game Set (MZT):

https://archive.org/details/mz-700-jp-set

Sharp BASIC:

https://archive.org/details/s-basicswesharpmz-700

Technical

Cassette Player

If the internal cassette player isn't installed you can use an external cassette player by connecting it to the computer's read and write connectors but you must install a loopback, either the officially supplied one that came installed in the MZ-711 or you can make one up yourself. The official loopback can be seen in this photo (pin 1 on the left):

The loopback must be connected to the computer's PCB internal connector, W1013ACZZ, labelled 'To Recorder', which is what the internal cassette player would be connected to.

 The pinout of the internal connector is:

1 Ex. write

2 Ex. read

3 GND

4 Remote (motor)

5 Sense

6 +5V

7 Write

8 Read

9 GND

On page 135 of the Owner's manual, top-right, P-12 is the internal cassette player connector and on page 143 it shows the cassette player connector toward top-right, in reference to the recorder module, which doesn't list the first three connections, since they aren't relevant to the internal cassette player.

For an external cassette player (or any other recorder for that matter) to be able to work a loopback connector must route the connections as follows:

Pin 1 (Ex. write) to 7 (Write)

Pin 2 (Ex. read) to 8 (Read)

Pin 3 (GND) to 5 (Sense)

If you only want the ability to be able to load software into the computer then there is no need to connect pin 1 to 7.

Pin 5, sense, is what detects that play has been pressed on the cassette player but since that signal isn't routed to outside the computer it is internally connected to GND by using the loopback, as if the play button is always pressed. In addition, it would have been nice if the computer could control an external cassette player's motor as it does with the internal one but again, that signal is not made available externally. Of course, if you're using a digital player externally then it's not a loss that those signals aren't accessible externally.

Colour VRAM

https://www.idealine.info/sharpmz/mz-700/colorvram.htm

Display

Character generator ROM (CG-ROM):

https://www.idealine.info/sharpmz/mz-700/charrom.html

Joystick

The MZ-700 computer features two joystick ports at the rear of the machine but from what I can tell, most games for the computer support only the keyboard for controls, which makes sense as the joystick would have been an expensive add-on. The  joystick ports do not use the DE9 connector commonly found on other computers of the time but 5-way male JST connectors.

The MZ-1X03 is an analogue joystick for the MZ-700 and the only one I can find information about, that was available for the computer. It has two buttons and a stick that doesn't self-centre, you can find the instruction manual at:

https://sharpmz.no/original/mz-700/download/1x03.pdf

The manual lists example programs in BASIC and machine code for using the joystick, as well as the schematic. Some of the information is also available on this site:

https://www.sharpmz.no/articles/the-mz-series/mz-700/mz-700-joystick/

The site maybe easier to follow than the PDF version and it has a download link for the assembler listing.

The MZ-700 joysticks are more complicated internally than the joysticks of other computers that were around at a similar time, such as IBM PCs and the Apple II, for example. These computers could use simpler joysticks requiring two variable resistors for the stick and a couple of buttons for actions. The position of each axis of the stick was calculated through timing a capacitor being charged through the variable resistor attached to the stick, since a different resistance would be available due to the position of the stick. Although the MZ-700 uses a similar technique to determine the position of the stick, the complete timing circuitry is contained in the joystick itself, making it more complicated to create our own joystick or adapt existing ones to work on the MZ-700.

As it can be difficult to get hold of a compatible joystick we can make our own but first, some observations from looking at the schematic in the instruction manual:

The circuit uses two chips, a 74157 quad 2-line to 1-line data selector/multiplexer (‘157’ on the diagram) and a 74221 dual monostable multivibrator (‘221’ on the schematic).

/VBLK selects whether the computer reads the state of the switches (/VBLK is high) or the stick values (/VBLK is low). Additionally, when /VBLK is low the 74221 timers trigger. Thus, to read the sticks, wait for /VBLK to go from high to low, then wait for a short delay before counting an incrementing value until JA1/JA2 becomes high. To read the switches, wait for /VBLK to go high, check the state of switch 1 (JA1) , wait briefly, wait for /VBLK to go high, and then read SW2 (JA2).

Output Y4 (pin 12), inputs B4 (pin 13) and A4 (pin 14) are unused on the 74157. Outputs Q2 (pin 5) and Q1 (pin 13) of the 74221 are unused.

The schematic shows pin 8 of the 74157 is active low -the small circle- but the circle should be on pin 15 - strobe - as that’s an active low input whereas pin 8 is GND. Then there's the 74221, which they've indicated that the A inputs (pins 9 and 1) are active low with the small circles yet the CLR inputs (pins 3 and 11) should also have the circles too.

The resistor and capacitor in series coupled with each switch provides a brief delay, likely helping to ensure a switch press is read successfully.

There are four variable resistors but two of them likely are for adjusting - scaling - the resistance range of the variable resistors operated by the stick. These variable resistors were likely internal since photos of the  MZ-1X03 joystick do not show any external adjustments, as was common with other analogue controllers. Unfortunately, there are few photos online of the official joystick and certainly none showing the internals and the instruction manual makes no mention of any type of adjustments.

I've made a version of the joystick based on the schematic in the MZ-1X03 instruction manual which is shown in the following image and is also downloadable from the bottom of this page, titled Sharp_MZ_700_Joystick.png.

As mentioned, the circuit diagram is very similar to the one in the joystick instruction manual but hopefully more clearer and with a few changes. Whereas the original design featured four variable resistors, mine only uses two, VR1 and VR2, both 50K, and I've changed the timing capacitors, C7 and C8 to be 82nF instead of 33nF in the original, to keep close to the original timing. 

The 74221 output pulse width is calculated as PW=0.7(RExt)(CExt) but in the first datasheet I looked at it did not mention the 0.7 so my original calculations were off somewhat but I've used the correct formula in this section, that I found  from looking at other datasheets.

As pointed out, in the original design there is a 33nF timing capacitor and the timing resistance consists of a 2.2K fixed resistor in series with a 130K variable resistor, which is in parallel with a 680K variable resistor that's in series with a 100K fixed resistor. At maximum value we have a 130K resistor in parallel with a 780K resistance, giving a total resistance of 111428.57, which we add on to the 2.2K, giving 113628.57 in total.

Thus the maximum pulse width would be:

0.7 x 113628.57 x 0.000000033 = 0.002624819967 (2.62mS)

For calculating the minimum pulse width we have a 2.2K fixed resistor in series with 0 ohms, if the resistors were ideal, giving us:

0.7 x 2200 x 0.000000033 = 0.00005082 (50.82uS)

If we now look at the pulse widths for my design we just have the 2.2K fixed resistor in series with a 50K variable resistor, along with an 82nF timing capacitor. The maximum pulse width can be calculated as:

0.7 x 52200 x 0.000000082 = 0.00299628 (2.99mS)

The result isn't too far off from the original design and as stated I found the wrong formula initially and we also have to consider that the components won't be exactly what they're stated to be anyway.

For the minimum width for the new design we have 2.2K fixed resistor in series with theoretically 0 ohms:

0.7 x 2200 x 0.000000082 = 0.00012628 = 126.28uS

We can see that the result is way off compared to the original design but it only really matters that the maximum pulse width is at least as long as the original.

VR1 and VR2 can be part of a self-centering analogue stick as that's easier to come across nowadays but as with any variable resistors, keep in mind that they won't read exactly middle resistance when the stick is resting just as they may not show the maximum stated resistance when the stick is at an extreme position. I've found that some analogue stick modules you can buy are very limited in the resistance ranges they can reach compared to what they should be able to achieve. Feel free to use different variable resistor values and adjust the timing capacitors accordingly if you use my design and of course you can still put in the adjustment variable resistors if you like.

The reality is that the updated circuit should work with most games even though the computer won't read middle value for the stick in resting position. From my tests I was getting 165 in the resting position, a bit off from the more ideal 128, and 2 and 255 for the opposite extremes, which I feel is very close to ideal. Most games should check for a certain range to be interpreted as up, down, left and right, certainly if they are games that could be played with a digital joystick. Indeed, the example program in the instruction manual will make the joystick seem off but as explained, games shouldn't be checking for absolute values if they are essentially 'digital' input games using an analogue joystick.

Memory Map

MZ-700 memory map:

https://www.sharpmz.no/articles/the-mz-series/mz-700/mz-700-memory-map/

Motherboard hardware elements descriptions:

https://original.sharpmz.org/mz-700/mothbrd.htm

Pinouts

https://www.idealine.info/sharpmz/mz-700/connect.htm

Printer

To use an internal printer make sure the printer switch on the PCB (S1012ACZZ) is set to INT (set to the opposite position to use an external printer). There are two connectors on the PCB that an internal printer attaches to, both labelled 'TO PRINTER'. The smaller one is 4-way and is marked as 'M1009ACZD' and the longer one is 15-way and has the identifier 'M1009ACZO'. The pinouts are:

1 ARDP 9 ARD8
2 ARD1 10 AIRT
3 ARD2 11 GND
4 ARD3 12 ARDA
5 ARD4 13 GND
6 ARD5 14 AST4
7 ARD6 15 SNS
8 ARD7

1 +5V
2 +5V
3 GND
4 GND

Having the internal printer connector makes it easier for us to make use of the printer port for our own projects instead of having to interface with the PCB edge connections.

We can do a simple test to light a number of LEDs by using the printer port for a simple demonstration, which you can do using breadboard, but it doesn't make use of all the printer signals available. Firstly, remove the printer (with power off) if installed and make sure the internal printer switch is set to INT. Connect the anodes of 8 LEDs to pins 2 to 9 of the 15-way printer connector, pin 1 is labelled on the PCB. If you don't have a suitable connector you can use individual 'DuPont' wires. Put an appropriate limiting resistor in series with each LED cathode connection (I used 330R) and connect the end of all the resistors together. This common point needs to be wired to either pin 11 of 13 the 15-way connector.

Now the LEDs are wired up we can turn the computer on and control the LEDs but the LEDs will be off until we use a program to control them; the printer data lines (ARD1 to ARD8) are controlled by Z80 I/O port $FF. This is the assembly language program we can use:

$1200 3E FF LDA A, $FF
$1202 D3 FF OUT ($FF), A
$1204 C9 RET

Each line starts with the address, followed by the instruction values, and then the assembly language equivalent.

The first line loads $FF into the A register and is what sets which LEDs are lit. Each bit, when set, turns on a corresponding LED, and for all LEDs to be on the value $FF is used. On the second line we output to port $FF (the printer data lines) whatever value register A was set to. Lastly, we return, handing control back over to the calling program.

If you want to use Sharp BASIC to run the machine code you could write a program to POKE the values into memory but I just used individual POKEd the values in immediate mode. Then you can use USR to call the program, as in USR($1200), and you should see the LEDs light. If the LEDs don't light, make sure your wiring is correct and is making good connection, and check that you entered the values correctly. Change the value at $1201 and call the program again to see different combinations of LEDs light. Note that the LEDs will go off if you reset or power cycle the computer but the program will remain in memory if you reset the computer.

Alternatively, we can run the program from the built-in monitor program by using the M command to edit the instruction values into memory starting at address $1200. You can then call the program with J1200, but you will see that although the LEDs light the computer resets as if the computer had just booted.

I stumbled upon the answer at this site, which details the monitor commands:

https://www.sharpmz.no/articles/the-mz-series/mz-700/mz-700-monitor-1z-013a/

It advises to reinitiate the monitor's stack and then jump back to the monitor, which I've added to my printer LED test program:

$1200 3E FF LDA A, $FF
$1202 D3 FF OUT ($FF), A
$1204 31 F0 10 LD SP, $10F0
$1207 C3 AD 00 JP $00AD

Here is a screenshot as reference:

After adding those extra bytes if you then run the program using J1200 the computer won't reset and in fact I tested without the LD SP instruction (using just JP $00AD after the OUT instruction) and the computer didn't reset after using J1200. The important think to takeaway is if you run your program using the J command and you use your own stack then definitely reinitiate the monitor's stack before returning to the monitor.

RF Modulator

https://www.idealine.info/sharpmz/mz-700/modulator2.html

Troubleshooting

Composite signal is in black & white

Make sure the colour/B&W switch near the composite socket is set to 'color'.

Difficulty loading programs from cassette

The computer generally finds a file within 12 seconds (when using a digital player, at least), and files can take anything from a minute to three minutes to completely load. If using an external player - whether a cassette player or digital player - ensure that the lead from the player to the computer is fully in at both ends. Some audio cables have thick sheaths, which make it difficult to get the plug in enough on the computer end, so it's worth trying a cable with a slim sheath.

You may have difficulty using a digital player if the volume is too low, ensure the volume is at a high level and try loading again. You can use shift + break to interrupt loading and then issue the load command again after changing settings on the player.

Tips

Using the built-in monitor program you can use LOAD or just L to load a file from a cassette.

When using Sharp BASIC, you can use the question mark character (?) as a shorthand for PRINT.

Sharp MZ-80A

Overview

The MZ-80A was released in Europe 1982 and is essentially an assembled and upgraded version of the MZ-80K kit computer from the late 70s (1978 in Japan, 1979 in Europe) and thus is software compatible. The Japanese equivalent of the MZ-80A is the MZ-1200, also available from 1982, but features a different character set (stored in the character ROM) to the MZ-80A, so the MZ-1200 is actually closer to the MZ-80K than the MZ-80A when it comes to the internal components but externally looks like a MZ-80A. Software designed for the MZ-80A will run on the MZ-1200 but likely won't display correctly and of course that is true vice-versa. A work around is to have selectable character ROMs, both Japanese and international, selecting whichever is needed for the software you are running. Although the MZ-80A will be covered in detail in this section, much of the information can still be applied to the MZ-1200.

Having a number of improvements over the MZ-80K, the MZ-80A has a better built-in keyboard (a more standard layout of keys, although annoyingly it still has only two cursor keys, requiring them to be shifted to get all four directions), and double the VRAM (2KB VS 1KB, which allows for scrolling of the screen). Features that the MZ-80A shares with the MZ-80K, other than the integrated keyboard, is the built-in cassette player for loading/saving software, mono sound from the internal speaker and monochrome 9” CRT screen, but the MZ-80A's screen emits green light whereas the MZ-80K is white. 

A photo of my MZ-80A (UK version) can be seen below:

While both the MZ-80K and MZ-80A feature a Z80 compatible Sharp LH0080 CPU running at 2MHz, it is possible to modify the MZ-80A to run at 4MHz, although the modification affects tape loading (but disk drives will run as normal).

A more detailed MZ-80A specification is as follows:

LH0080 CPU (Z80 compatible) @ 2MHz.

32KB RAM (upgradeable to 48KB).

2KB VRAM.

4KB monitor program in ROM. 2KB character generator ROM.

Weighs 10KG.

Measures 440 x 480 x 260 mm (WDH).

Integrated features:

9” 'green' CRT, 40x25 characters.

Cassette player. 1200 bits/sec.

73 key keyboard including numeric keypad.

400mW single speaker.

At the back of the computer (see below) you will find the power switch, and the mains socket underneath, and the FG (Frame Ground) connector under the mains in connector. To the right of the power switch is a warning label, then the reset button, volume dial, brightness dial, and two blanked out round holes - possibly for DIN sockets - as there may have been intention for the computer to feature video out, for example, but was dropped. Inside the computer there is a blanking plate for the unused holes, which can be removed, and there is no reason why you can't take advantage of the cut outs for your own expansions/mods. The rest of the rear is taken up by a large ‘expansion’ metal plate (or I/O module access window as Sharp calls it) held in by two screws (one of which has gone missing as can be seen in the image) and in turn the plate has a rectangular cut out for another blanking plate toward the bottom (unfortunately also missing when I got my MZ-80A).

Unlike other computers of the time, the MZ-80A doesn't have a built-in programming language and instead the boot ROM contains a 'monitor' program called SA-1510. This accepts a very limited number of commands, which includes the ability to load machine code software - programming language, game, etc. - using the cassette player. The advantage of this approach is that the MZ-80A is in some ways more versatile, able to load in only the software that is actually needed at any time, however, most people at the time would have wanted to program in BASIC and having to wait 3 minutes to load BASIC from cassette it quite the wait considering the 'instant' BASIC of other computers. Consider also that a lot of software, such as games, were written in BASIC, meaning the user had to first load BASIC from tape and then the BASIC program, adding even more of a delay. Be sure to read the Software section further down on this page to learn more about the software available for the machine and alternate ways to load in software.

Internally, the computer is very modular, consisting of the cassette player, reset and dials board, motherboard, CRT and drive board, power supply, keyboard, and speaker (located under the keyboard). The motherboard’s labelled 'MZ-80A CPU', and is home to many chips, some of which are socketed, making repair easier. The RAM is split into 3 banks, labelled as I, II, and III on the motherboard; my MZ-80A has 24 x 4116-3 chips (Sharp branded), totalling 48K. The owner's manual (see Resources section) states that the UK and Ireland MZ-80A computers have 48K fitted as standard, so that makes sense since I have a UK MZ-80A.

You can view an introduction video I did on the MZ-80A which features an interface circuit I made for loading and saving software via an external digital player, which I go into detail about in the Software section on this page:

Expansion Unit

There wasn't much information online at the time of researching the expansion unit for the MZ-80A so I will present a gathering of what I've managed to glean but since obtaining an expansion unit (more about that later) I can at least confirm some details.

The Japanese version of the expansion unit is the MZ-1U01, compatible with the MZ-2000, MZ-80B and MZ-700, released in 1983 for 35000 yen, and the European version of the MZ-1U01 is the MZ-80AEU, designed for the MZ-80A. They are both very similar, plugging into the computer's expansion port and giving four expansion slots, allowing the installing of four expansion cards, such as a printer or floppy disk controller. The expansion cards are powered by the expansion unit's own internal power supply which obtains mains input from the computer's dedicated internal connector, converting to 5V for the expansion cards. Because of this, if you intend to use (for example) a MZ-1U01 on a UK MZ-80A there is the issue that the MZ-1U01 expects 100V input but a UK MZ-80A runs off 240V, which will destroy it. There are ways around the issue, such as to swap the expansion unit's internal power supply for another that can withstand the computer's mains input voltage. Upgrading the internal power supply to a modern one is recommended due to better efficiency and reliability but only attempt to do so if you have experience working with mains powered equipment.

The following links have photos of various expansion units, use your browser's translate facility if need be:

https://www.idealine.info/sharpmz/mz-80a/my80a.htm

(German)

https://www.schlepptops.de/wiki/index.php?title=Sharp_MZ-80AEU

(Japanese)

http://retropc.net/ohishi/museum/mz80aeu.htm

On the front of the expansion unit it says 'SHARP Expansion Unit', along with a label below (model number, input voltage and serial number), and four expansion slots. At the rear is a female edge connector that plugs into the computer's expansion port and a mains cable with a two pin female connector intended to plug into the internal expanion unit power connector of the computer.

Of course getting hold of an expansion unit nowadays can be expensive (although I was very fortunate) but I did come across one modern solution called the Sharp MZ-80A/MZ-2000 Single Expansion Card Adapter, which can be found at:

https://www.tindie.com/products/pdsmart/sharp-mz-80amz-2000-single-expansion-card-adapter/

The design information is freely available for non-commercial use, links can be found on the above linked page.

Teardown

Please do not open up unless you have disconnected the expansion unit from the mains and you have experience working with mains powered equipment.


Printer

Introduction

The MZ-80A doesn't have built-in support for a printer so a common upgrade was to add a printer interface card, an exmaple of one follows this section. Even with a printer interface card installed, however, there is the complication with using non-Sharp printers in that the computer doesn't use the standard ASCII set unlike other printer manufacturers. In addition to the difficulty in printing lower case characters there's also the problem of handling the Sharp graphics characters, typically not supported on non-Sharp printers. The printer driver can be modified to fix some of the issues and some printers, such as the Epson FX80, supports programmable codes, allowing it to support Sharp graphics characters. How to deal with these printer issues was a common topic in various Sharp Users Club magazines (see Resources section - various) so it may be helpful to have a read though them.

MILLS HARRIS PRINTERFACE

When I got my MZ-80A (second hand) it came with a printer card installed (see image below), this was an optional add-on which adds 'Centronics' (parallel) printer support, a common type of printer interface in the 80s. It consists of a single PCB, which has written on the top side: ‘MZ80A/B PRINTERFACE’ and ‘SHARP MILLS HARRIS ASS’. On the back it has written: 'FCQ-6322'. The chips have date codes of ‘81 and ‘82, so we know the card was made around 1982, and the green connector states it was made in England, suggesting the card was also made there (I have a UK MZ-80A). I'm not sure if this printer card was an official Sharp production, even though the board mentions 'Sharp', it looks quite 'amateur', having bare PCB tracks.

The board features a 22x2 female edge socket (plugs into MZ-80A expansion connector), a 22x2 male edge connector (possibly for connection to an additional expansion card), a ribbon cable terminating in a Centronics connector (18x2) for connecting to a printer, and a single red wire that connects to the motherboard (for power). There is no stripe indicating pin 1 on the ribbon cable; the connector soldered to the board that the ribbon cable is attached to is 40 pins, but 2 wires have been cut off both sides, leaving 36 wires. The original pin 1 of the cable is in line with the 74LS374. 

In addition to a few passives, there is a 4-way switch (mine has 1 & 2 down, 3 & 4 up), likely for settings. The ICs are:

74LS30 8-Input NAND Gate

74LS42 BCD to Decimal Decoder

74LS74 Dual D Flip-Flop

74LS04 Hex Inverter

74LS125 Quad Tri-State Buffer

74LS374 Octal D F/F Edge-triggered Tri-State

D2716D (socketed) 16K EPROM. Has ‘I/F’ written on a sticker.

While reading through the archived versions of the Sharp Users Club magazines, which aren't OCR'd, I found that in Vol 5 #2 (March '86) on page 51 the PRINTERFACE is spoken about in some detail. Here is a summary of what is mentioned:

* Was purchased for £40 (originally £85).

* MZ-80A: interface can be used with/without an expansion box. MZ-80B: with an expansion box only.

* Printer cable hangs out of the computer's rear slot (with the metal plate removed) without any support.

* The interface's ROM can hold up to 8 different character sets, switched between using the colour coded DIP switches (can be accessed them through the hole in which the printer cable emerges).

* Normally supplied in ROM EPSON, OKI & SEIKOSHA character sets plus a 'transparent' set for use with word processors. Other character sets avaialble to order.

* A 25-way D-type connector was available for Sharp printers.

* Doesn't mention the DIP settings except that Epson requires yellow up, others down.

* The ROM uses a table that converts Sharp ASCII codes, to eliminate the problem of printing lower case letters on non-Sharp printers but doesn't handle Sharp graphics characters, however, they get converted (at least for Epson) to '$' symbols. The cursor control symbols get converted to ^, V, <, and >, and C and H for CLR and HOME don't get printed inverted, however.

Repairs

Introduction

For servicing the MZ-80A, you start by removing the two screws on underside toward the front, and then the top plastic cover can be lifted up and held in place with the provided metal supporting rod, by pulling it out of its place in the upper case and lining the end up with the hole in the bottom part of the case. This gives you access to the MZ-80A's internal components.

Blown capacitors

When I bought my MZ-80A, the seller said that although the computer was working when tested, a capacitor had blown. Like with other microcomputers of the time, the MZ-80A has a couple of RIFA branded X2 safety capacitors that need replacing otherwise they have a tendency to explode, which doesn't usually stop the computer from working, but nonetheless results in foul smelling fumes being released. Indeed, I found two RIFA capacitors, one that had blown and another that likely was on its way out, as its body was cracked. The capacitors are C101 and C102, and are both rated 0.047uF/250VAC as I have a UK MZ-80A, but for other regions they will be rated for a different maximum voltage. They must be replaced with the same type (X2) but can be rated for a higher voltage.

The capacitors are a PCB, hidden under what Sharp calls the ‘Cover for Power Supply Primary’ in the service manual (see the Resources section), number 38 in the exploded diagram (page 36), part PFT A-0009PASA. To get the cover off you have to remove a black screw (see photo below) but likely you’ll need to use a short screwdriver as the top case of the computer can get in the way, save removing the top cover. This is the first time I've opened up the computer so I'll need to give it a good clean while servicing it, not helped by the capacitor having exploded.

Notice the caution sticker near the power supply warning to power off before installing/removing the expansion unit.

Once that screw is removed there are two silver screws that need taking out (see following image) and then the circuit board can be pulled toward you (it’s a little fiddly since the power switch gets in the way). 

The exploded capacitor, C101, can clearly be seen toward the top of the above image, with C102 hiding lower down on the PCB.

The two capacitors are on a small circuit board (see below); notice C102 to the left of two of the fuses, showing signs of being on its way out. The transformer primary is soldered to the board (the brown and blue wires sheathed in black) and its secondary windings are soldered to the main power board (not shown). So, you either have to replace the capacitors with the board still attached or desolder the transformer primary wires to free the board for servicing. 

The capacitors proved difficult to remove as their legs were bent over so I had to bend them back in the process of desoldering; you have to be very careful not to heat the PCB pads up too much otherwise they may lift. You can see the capacitors I removed in the photo below:

The one on the left is the one that blew (ended up losing a leg in the process of being removed) and the one on the right shows signs of cracking, so needed to be taken out as well. Fortunately, with the faulty capacitors removed it was simple enough to put in replacement capacitors, which are the white and grey capacitors as seen in this photo:

I powered up the computer and it worked fine, which was a relief that nothing else was wrong with the machine.

It's also a good idea to check the fuses on the power supply board to see if they need replacing, there are four in total; F101 (500mA), F102 (500mA), F103 (315mA), and F104 (315mA), which should only be replaced with the exact same type if blown. The fuse ratings may be different for your computer based on what region it was intended for.

Cassette player maintenance

Sharp advised that '...the tape heads require regular cleaning; and the PRESS PLAY contact requires an occasional rub with fine emery paper...'.

Software

When you power on the MZ-80A it will take a few seconds before anything appears on the screen as the CRT takes time to warm up but when it comes to life you will be greeted with:

**  MONITOR SA-1510  **

To load software from tape you will need to put an appropriate cassette into the integrated cassette player, and then you will need to type L followed by the CR key, and the computer will prompt you to press play on the tape deck. After a brief duration the computer should announce that it is loading a software title, but it will take a minute or more for the software to completely load and run.

As well as games and utilities, there were a number of BASICs programming packages available, such as BASIC SA-5510 from Sharp (copyright date  1981), which leaves 32492 bytes free for user programs. Then there's SA5510 Extended, including BASIC SA-5510 from Sharp and APOLLO BAS MOD v3.68 (copyright 1982), which only leaves 24590 bytes free.

If you have acquired an MZ-80A recently it can be difficult to get hold of software cassettes and while tape images (digital representations of cassette software) are downloadable from various sites you still need a means to get the software into the computer. If you have a tape recorder then you could use a PC to record the tape image to a cassette, which can then be loaded into your MZ-80A, provided the cassette player works. An alternative approach is to use a cassette car adapter, which is a cassette that has an audio lead attached to it, in which you can play tape images from your PC (for example) into the adapter, effectively emulating a cassette. 

It's unfortunate that the MZ-80A doesn't have external cassette read and write ports - like the MZ-700 does - but we can add them, making it easier to use an external cassette player or PC (or other suitable device, such as an MP3 player), by adding in the missing circuit. I approached the project by looking at the MZ-700 and copying the circuit that was used to handle an external cassette player (please see the Owner's manual or Service manual  in the Resources section for the original circuits), moving things around slightly to make soldering somewhat easier on prototype board.

The schematic for the external player interface is included below and you can also download it from the bottom of the page, titled 'Sharp_MZ-80A_ext_cassette_interface.png', for easier viewing.

The circuit that handles the 'read' input (output from the tape player or whatever) amplifies and prepares the the signal suitable for reading by the computer as a stream of 0s and 1s, achieved with four inverters belonging to a 4069 hex inverter IC (U1B, U1C, U1D, U1E) and a number of passive components. In the MZ-700, the remaining two inverters are used to further invert the read and write signals, however, they go unused in my circuit (U1A and U1F) since there are two inverters already present in the MZ-80A in the same roles. However, in my circuit I have separately tied their inputs to 5V via 10K resistors, as is good practice for unused gates, but they are available should I need them for anything else in the future.

For writing to an external player, the circuitry only consists of a single capacitor (C6), and two resistors (R7 and R8).

In the MZ-700, a tape input invert switch was included to help with cassette player compatibility and while it isn't really needed in my circuit for the MZ-80A, I have included the additional inverter (U1E) but without the invert switch, serving as an extra (inverted) output, as the inverter would otherwise go to waste, and it may be useful for testing. If you are using a cassette player and you find it doesn't work with this circuit then it may be worth trying the inverted output if you've explored other potential issues (volume level, for example).

The MZ-80A's Internal cassette player connects to the main board via CN3, which is what J1 connects to in my circuit, but I couldn’t see a pin 1 marking on the PCB so I had to work out where pin 1 is. The connector has 6 pins, with a gap between the first 5 pins and the 6th pin. I have confirmed that pin one is the first in the group of 5 like this:

1 2 3 4 5 X 6

Where X is the gap between pin 5 and 6.

Annoyingly, the connector has large pins, which is odd considering I wouldn’t have thought they’d need to pass large current (the motor connection probably passing most the current). This does make it tricky to find a suitable mating connector but fortunately I found I had an 8 pin connector and only had to move one wire over, and blocked the unused pins so the connector will only go in one way only.

I added an LED (D7) between the motor connection and GND via a 1K limiting resistor (R6) to keep the current draw low, to act as a motor test light, mimicking how the motor is controlled by the computer. When you power on the MZ-80A the LED may be lit (I think the motor control signal sometimes doesn't get reset correctly) but after loading a program it will go off if already lit. If you reset the computer the LED will likely light again and if you interrupt the loading of a program using shift & break the LED will go off, but will go on again if you start loading a program again.

The sense signal is how the computer detects when the internal tape recorder play button is pressed and is connected to GND when the button is down. Since we are always connecting it to GND (similar to the loopback that can be installed in the MZ-700 so an external tape recorder can be used) the computer won’t display the play button prompt and thus we only need to press play on our digital player.

Before testing the circuit, first make sure you have soldered everything correctly and in particular you haven't swapped the power, or read and write connections. You will need to power off the MZ-80A, open it up, and remove the internal tape recorder connector from CN3 on the main board. Then plug in the interface connector (J1) on our circuit and connect to the digital player of whatever it is you're using to load and save programs to J2. To make it clear, TAPE_READ is the output from the external player (speaker/headphone) and TAPE_WRITE is the input to the external player (microphone/line in).

If you wanted to use an external cassette player then there's no reason why you can't route the motor and sense signals externally also instead of how they're connected in the external interface circuit. Since the MZ-80A has circular cutouts already, I opted to use a female 3 pin DIN connector to connect with the external player to fit in one of the provided holes. As you will see later, I didn't actually have a 3 pin one so I used a 5 pin, which is compatible with 3 pin plugs. I made up a cable consisting on a male 3 pin DIN plug to two TRS male plugs to connect to my digital player which has separate sockets for speaker and microphone/line out. I only connected the left (plug tip) and ground of the TRS leads to the DIN socket, as we only need to load and save in mono.

Power on the computer and try loading a short machine code program (such as a game) from your digital player (or PC, etc.) by typing L and pressing CR, if all is good it will load and run the program. Next, it would be a good idea to load a version of BASIC and then write a short program and save it to whatever player you are using, then try to load it back into BASIC. With the generic digital player I was using, I found I could save and load whether the microphone input was set to microphone or line in. I had the sample rate set to the lowest (512kbps) and made sure to start the recording before telling the MZ-80A to save (to ensure nothing was missed when recording). If your device has some kind of VU meter then that will help to monitor that it is actually recording something (it may take a few seconds before the MZ-80A actually outputs data to be recorded) and if you can adjust the line in volume level it may need increasing if you have problems loading a saved program. You can check your recordings in a program (e.g., Audacity) if you having trouble loading the program, as you can then see visually if anything was recorded or if the level was too low; if using Audacity, the waveform should show peak around -0.5 to 0.5 or higher.

Sharp computers (various)

Information and help that relates to a range of different Sharp computers.

Resources

Magazines

Sharp Users Club:

https://www.sharpmz.no/original/sucmags/

Technical

Tape data format for Sharp MZ computers, some specific data for MZ-700:

https://www.sharpmz.no/articles/the-mz-series/mz-80/mz-80-knowhow/mz-80-tape-data-structure/

Note: has a download link for the MZ-700's built-in monitor program; right-click where it says 'downloading' in the 'Saving data to tape' section and select 'Save link as...'.

I hooked up my oscilloscope to the cassette WRITE ouput of my MZ-700 and captured various waveforms when saving, using the computer's built-in monitor's S command. The site states that the computer uses PWM to store the 0s and 1s to tape, with a logic 0 being represented as as short pulse lasting 504uS and a logic 1 denoted by a long pulse of duration 958uS.

From my findings, I found that a short pulse lasted 520uS (image below) and a long pulse 940uS (the second picture down), off by about 20uS compared to what it should have been according to the site linked above but perhaps it various depending on whether you are saving from BASIC or the built-in monitor program, as the actual duration of a pulse is dependent on what instructions are being executed.

When capturing the long pulse I accidentally put one of the cursors in the wrong place but the long pulse duration can be calculated by subtracting half the short duration and multiplying by 2.

Troubleshooting

MZF to WAV conversion issues

If you are using the MZF2WAVGUI program to convert .MZF Sharp computer tape images to WAV files but you find the computer can't load them, try setting the 'c' option in MZF2WAVGUI (SET PARAMETERS) and then save as a WAV file, and then try to load the files again.

All content of this and related pages is copyright (c) James S. 2022-2023