Category Archives: Sharp

New arrival – Sharp MZ-80K

160802-IMG_20160802_202212Like so many of my machines, the Sharp MZ-80K was out of my reach the first time round and by the time I could have afforded it, I was on to something else.

This example was passed on to me recently and had previously been used for developing a pharmacy system years ago.

The years have not been too kind to this one and there is some surface rust but it’s not too bad cosmetically.

160805-IMG_20160805_185525It’s not without problems however. When I first gave it some power I saw the screen on the right. As well as the general mush there are vertical lines running up through the characters. That made me suspect the character generator ROM and sure enough, it has a broken pin.

160805-IMG_20160805_203905 I snipped a pin from a surplus IC and solders that in place. The vertical line has gone and I’m just left with the mush.

MZ-80KSignalsDiagnostics continue.

Fortunately I have a copy of the service manual and on page 11 it shows a series of expected ‘scope traces. At pin 8 of IC7 there should be an 8Mhz wave. Sadly, I see about 760Hz. Way off.

MZ-80KClockCircuitIt doesn’t seem possible as the video is rock solid and all of the video signals are derived from that 8Mhz clock signal. I’ve checked several times and I always get the same result. I was suspecting the crystal, the 74LS93 or the 74LS04 so I replaced all three but to no avail.

 

 

CellarScramble. A bit of progress

CSWalkThroughThe story so far.

As we wizz through the half-way stage there has been some progress.

I have written code to handle a collection of upto 256 8×8 tiles. I also have structures that arrange tiles into upto 255 rooms of 4×3 tiles each and routines that can draw a room and tell me what room I’ll end up in if I leave the current one in any direction. This means I have a complete map of 30 rooms at the moment, interconnected.

Next up I have some routines that can handle my player sprite. I can read the screen memory below the sprite (so I can put it back later), draw a sprite and then put the ground back (told you I’d need it later).

The little GIF is a walk through of part of the cellar (click on it to see the animated version).

Currently there is no collision detection, baddies, goodies and there is no timing and video blanking type work. But, not bad so far.

 

 

Setting up my stall for Retrochallenge. Hello World on the MZ-700.

It has become a regular occurance in my life… The twice yearly Retrochallenge comes along and I am ill prepared and can’t decide what to do or how to do it.

To quote from the website…

In a nutshell, the RetroChallenge is a loosely disorganised gathering of RetroComputing enthusiasts who collectively do stuff with old computers for a month.

This is one real world example of it not being about winning but taking part. Really, I’m not kidding. Well for me it’s the taking part. Or it would be about taking part it I did. Of course, your mileage may vary.

I tried a few years ago. I set up a web server on an Apple Newton and did have some success but things conspired against me and the machine kept dropping off the net for reasons unknown.

This year things could be different. Maybe.

Now it’s still a couple of weeks to kick off but I think I’ll set up my stall and try and get a plan.

Enter the Sharp MZ-700.

I’ve had my Sharp MZ-700 for a while now but haven’t really done much with it but a post on the UK Vintage radio repair and restoration website (vistit now, visit often) made me dust off the old thing and fire it up.

Having fired it up and fired off a response to the original poster I have decided to do “Something programmy” with it for Retrochallenge.

Short of “Hello World” in BASIC I haven’t programmed on the Sharp at all so this is going to be intersting.

Z88DK – The cross compiler.

My plan is to do my “Something programmy” in C and use a cross-compiler to build it for the Sharp. To be honest, I’m not sure if that’s allowed as I’ll be using a modern PC to type on and build but I’m writing it for the Sharp and running it on the Sharp. I’ll see what people think.

A Z80 cross compiler seems quite rare but I found Z88DK and decided to use that.

There is a great introduction to setting up Z88DK here and that’s what I have done. Be careful with some of the steps as the text formatting is a little off in places but the information is there.

Hello World.

Having set up the build environment I tried a “Hello World” program…

#include <stdio.h>

main()
{
  printf("Hello World\n");
  
  while(1)
  {
  }
}

Not exactly MISRA compliant but it builds.

$ zcc +mz -lm -ohello -create-app -Cz hello.c
cp /home/andy/z88dk/lib/mz_crt0.opt /tmp/tmpXX6cA7vl.opt
cp /tmp/tmpXX6cA7vl.opt /tmp/tmpXX6cA7vl.asm
zcpp -I. -DZ80 -DSMALL_C -DSHARPMZ -D__SHARPMZ__ -DSCCZ80 -I/home/andy/z88dk/include hello.c /tmp/tmpXXM4OudA.i
sccz80 /tmp/tmpXXM4OudA.i
copt /home/andy/z88dk/lib/z80rules.2 < /tmp/tmpXXM4OudA.asm > /tmp/tmpXXM4OudA.op1
copt /home/andy/z88dk/lib/z80rules.1 < /tmp/tmpXXM4OudA.op1 > /tmp/tmpXXM4OudA.opt
z80asm -eopt -ns -Mo -I/home/andy/z88dk/lib /tmp/tmpXXM4OudA.opt
z80asm -a -m -Mo -L/home/andy/z88dk/lib/clibs -I/home/andy/z88dk/lib -ohello -igen_math -indos -imz_clib -iz80_crt0 /tmp/tmpXX6cA7vl.opt /tmp/tmpXXM4OudA.o
appmake +mz -b hello -c /tmp/tmpXX6cA7vl

Now turn it into an audio file to play to th Sharp…

$ appmake +mz --dumb --audio -b hello.m12

Info: name found in header: HELLO

Info: file type:         1
Info: program location:  $1300
Info: binary block size: $352
Info: start address:     $1300

So now we have a .wav file or my hello world program. Pop in a cassette adapter and play the wav.

IMG_20150614_200225282A bit odd but wait a minute and look again. I said “Hello World\n” but forgot that the MZ-700 doesn’t have lower case. Let’s try again but upper case only and with a leading “\n”.

IMG_20150614_204250990Tadaaa!. My stall is set up. Roll on July!

Sharp MZ-700

Sharp MZ-700.

I’ve been tinkering with my recently aquired Sharp MZ-700. I’ve solved the problem of getting programs into it by playing it WAV files from another machine using a cheap car cassette adapter and it’s working like a good’un.

Sadly a couple of the key switches are broken and to my surprise they aren’t individual switches. I’m on the lookout for bits and bobs to fix it.

Sharp MX-80A

IMG_20150210_184457251The Sharp MZ-80A is an all-in-one machine that’s of a style that was not unusual in the early 1980’s. Think Commodore PET, Intertec SuperBrain. Televideo TS-802 and 803. Even the humble Amstrad PCW range.

The screen Measures approximately 9″ diagonally and has a clear plastic plate in front of it. This is rather reflective as you can see in the above photo. The keyboard is full sized and the keys have a good degree of travel. There is also a number pad on the right.

A cassette recorder is built into the case along side the monitor and to its right. This records at 1200 baud (approx 120 characters per second).

IMG_20150210_184516815At the rear of the machine there is a figure 8 mains socket and rocker switch for power, the brightness and contrast knobs and a reset button.

Additional ports such as Centronics parallel and RS-232 serial are lacking though I believe they were available as an option. There is certainly space inside the case and the main board has an expansion connector heading off into the empty space at the back.

Rather unusually, it doesn’t have a resident BASIC interpreter. Instead there is a monitor ROM with very few commands and BASIC and other languages were available on cassette tape and loaded in as required.