Tuesday, 24 December 2019

Tynemouth Software FAQ

I find myself answering the same questions quite often, so I thought it was about time I wrote an FAQ. Once I started, this list poured onto the keyboard, so here it is. I'll keep updating this as I go on.

USB keyboard controllers

Can you make a USB keyboard adapter for (insert name of computer here)?
  • Yes, I have already converted many of them - see here. If yours is not on that list, then I would probably need you to send me the keyboard to allow it to be converted
Can you make me a PS/2 keyboard adapter for (insert the name of any computer here)?
  • No, sorry, mine are all USB
That's OK, I'll just use one of those purple USB to PS/2 adapters, that used to work with my keyboard in the past.
  • Sorry, it won't, those are passive adapters for keyboards which support both USB and PS/2 protocols.
Are you sure? I might buy one and try it anyway. I'm sure it used to work.
  • Oh dear.
Can you make an adapter so I can plug in USB keyboard into my (insert the name of any computer here)?
  • No, sorry, mine work the other way around, and allow you to use a broken (name of computer) as a USB keyboard.
How are they keys mapped?
  • Most keyboard controllers I make are designed for use with a modern desktop operating system. As such, the keys are mapped so that when you press a key, the symbol on the key will appear on the screen.  This is complicated by the fact they are often on different keys i.e. close brackets is usually shift + 0 on a modern PC, but shift + 9 on an old computer, so when you press the close brackets combination shift + 9 on your old key board, I need to send shift + 0 to the PC so that it will display the right thing. This is also complicated by the USB protocol being written in terms of the US keyboard, so I often need to convert multiple times for each key.
  • Some keyboards (e.g. C64 or Spectrum) come with an option for emulator support. In these modes, each key will only send a single key on a modern keyboard, there is no remapping for symbols on different keys. This suits emulators where they use a positional mapping (such as vice positional mapping), so you press CTRL (the key to the left of Q on a C64), the controller sends TAB (the key to the left of Q on a PC keyboard), and vice converts this back to CTRL. This gives a 1:1 mapping , so all keys and key combinations should work directly.
How do I get the disk activity LED to flash on the A500 USB keyboard
  • If not supported directly on your emulator, you can use the following command on a Raspberry Pi
  • echo mmc0 > /sys/class/leds/input0\:\:numlock/trigger

Minstrels

What's the difference between a Minstrel 2 and 3?
  • The Minstrel 2 follows closely the ZX80 design, so is very much ZX80 compatible, but with extra RAM and some improvement on the video output. It supports the original ZX80 4K Integer BASIC and the ZX81 upgrade 8K floating point BASIC, but does not support ZX81 NMI slow mode, so most games will not run
  • The Minstrel 3 is a new machine designed to be ZX81 compatible, including NMI slow mode, 32K RAM high resolution graphics support and much improved video output.
Is the Minstrel ZX81 Compatible?
  • The Minstrel 3 is fully ZX81 compatible, the Minstrel 2 isn't quite (it supports ZX81 BASIC, but not slow mode, so most games will not work).
How much RAM does the Minstrel have?
  • The Minstrel 2 comes with 16K of RAM, the Minstrel 3 has 32K
Can the Minstrel run on an NTSC TV?
  • Yes, there is a jumper to select PAL (50Hz) or NTSC (60Hz) framerate
Will the Minstrel fit in a ZX81 case?
  • Yes, the Minstrel is designed to fit in a ZX81 case
Will the Minstrel fit in a TS1000 case?
  • Sort of, there are two holes in the case moulding for the video jack, you would need to open up the other one which is normally closed on a TS1000.
Will the Minstrel fit in a ZX80 case?
  • No the Minstrel is ZX81 shaped, which is smaller than the ZX80, and the connectors are in different places
Will the Minstrel fit in a Commodore 64 case?
  • Now this is just getting silly.
Will the Minstrel work with a ZXpand?
  • Yes, it will work with a ZXpand or ZXpand+, but also has it's own dedicated Minstrel ZXpand.
Will the Minstrel ZXpand work with a normal ZX81?
  • No, the Minstrel ZXpand is designed to work with the Minstrel only, so does not contain the RAM or ROM required to work with an unmodified ZX81.
Are you sure? Can I buy one and try it anyway?
  • Yes, I am sure it will not work. I'll probably have to do a blog post proving that at some point.
Will (insert name of game here) work on the Minstrel 3?
  • Yes, I expect so. I have not tested every title, but all the ZX81 software I have tried so far has worked (with two exceptions, both from Paul Farrow). ATE does not work, but he has supplied a version which does - ATEZXP. Celebration also does not work, but there is no replacement. (Paul's website appears to be down at the moment).
Will the Minstrel ZXpand joystick work with (insert name of game here)?
  • Possibly. I have tried to give as much support as I can. Some titles (such as those from Revival Studios) support the ZXpand joystick interface. Some (usually BASIC games) use the INKEY$ method, and some (including Paul Farrow's ZX80 flicker free games) use the Kempston interface.
Is (insert name of expansion hardware) supported?
  • Possibly, I have not tested many ZX81 expansions. Some may have issues due to the extra RAM in the ZX81 memory map, others should work OK.
Will my ZX81 external keyboard work?
  • Yes if it plugs into the 5x8 way keyboard connector.
  • Probably not if it is connected via the edge connector, it may not work if you have built your Minstrel using HC logic chips. Ones built with LS chips should work with external keyboards. The original designed relied on the way LS TTL chips have strong pull down but weak pull ups, so the onboard chip could be driving high (weakly) and be overriden by the external keyboard driving low (strongly). This does not work with the equally matched totem pole outputs of CMOS chips. To remedy this would required additional ICs or diodes. One solution is to replace IC24 and IC25 with 74LS257s. These only drive the Z80 databus, so it should not cause other problems.
Which is the best keyboard option?
Do I need a heatsink on the 7805 on the Minstrel 3?
  • Not really, the current draw with the Minstrel 3 (even with Minstrel ZXpand and SD card) is well under 100mA, so with a 5V supply, the regulator is burning less than half a watt, so it doesn't need one.
Can I use LS series chips?
  • Yes, LS TTL chips are supported on the Minstrel 3 and recommended on the Minstrel 2.
Can I use HC series chips?
  • Yes, on the Minstrel 3, but not the Minstrel 2
Why the difference?
  • I redesigned most of the circuits that were dependent on the more analogue properties of the chips in the Minstrel 3, so it is now possible to use all CMOS chips.
I thought HC series chips were evil?
  • They are fine if the whole system is CMOS, but can cause lots of issues if mixed with the LS series TTL normally used in these sort of machines, so I generally do not recommend them when used as part of an existing system.
Can I use HCT series chips?
  • These should work on both the Minstrel 2 and 3, but some tweaking may be required. I would recommend LS on a Minstrel 2 and HC on a Minstrel 3.
Can I use a mixture of chip types?
  • No, you need to stick of LS or HC, if you mix them you will have problems
I bought a Minstrel PCB from a Russian seller on ebay and it doesn't work
  • Good luck with that. It's a board recreated from photographs and supplied with the wrong chips. If you want a Minstrel PCB, please get one from my Tindie store, or TFW8b.com or SellMyRetro. Please do not support the guys on ebay who seem to search around the net for PCB designs they can copy but give nothing back.

PETs


Will the PET ROM/RAM board fix my PET?
  • Probably, many faults of PETs are caused by faulty RAM or ROM, particularly on the early 2001 series PETs with 6540 and 6550 chips.
Will the PET ROM/RAM board definitely fix my PET?
  • No, there could be other problems, but it is usually a good start
Can the PET ROM/RAM board replace the video RAM or the character ROM?
  • No, these are  hard wired into the video circuit, and cannot be replaced from the CPU socket. If you see random characters that change with a power cycle, these are probably OK.
Will the PET ROM/RAM board work the a Super PET?
  • No, I don't think so. The PET ROM/RAM only expects a 6502 CPU to be installed in it's socket, so does not monitor the 'No_ROM' signal that the Super PET 6809 board uses to disable onboard ROMs. It will work in 8032 mode, but not 6809.
Will the PET ROM/RAM board work the 64K RAM board on the 8096 / 8096-SK?
  • Electrically it should, but mechanically it may be a problem. The PET ROM/RAM needs to remain plugged into the PET board, and cannot be plugged into the 64K RAM board. However, as far as I am aware there is very little software that can make use of the extra RAM. BASIC will only ever register 32K, the extra RAM can only be used by software designed to use it (which is Zork and a German OS). Unless you specifically need it, you would be best to disconnect it and go back to an 8032. 
What's the difference between PET Test on the ROM/RAM board and PET diagnostics.

  • PET Test is a simple ROM for the PET which is executed by the 6502 in the PET in place of the KERNAL ROM. It tests the first 1K of RAM and displays the results on the screen as G(ood) or B(ad) characters. It then alternates with a character set display to test video RAM. This does not support later PETs with 6545 CRTCs, unless you boot to one of those to initialise the CRTC then switch to the PET Tester.
  • PET Diagnostics is something with replaces the 6502 in it's socket and uses a microcontroller to exercise the PET busses and test ROM and RAM and displays the results on the screen.
Will the PET diagnostics work on any other systems

  • No, that hardware works with the PET because of it's fairly isolated video circuits. The other systems I tried need more horsepower to drive than the microcontroller on there is capable of

Will you be making any more PET MicroSDs.
  • No, these have been discontinued, please see the SD2PET future instead.
Will the SD2PET Future work on my PET
  • Yes, if it has BASIC 2 or BASIC 4 and an IEEE-488 edge connector and datasette edge connector. This means it will not work with the 8xxx-SK series as these have different IEEE-488 connectors.
Can I use the SD2PET with my (insert name of disk drive or modem or printer)
  • No, the SD2PET is designed to plug directly into the PET as the only IEEE-488 device.

Online Ordering

Where can I buy your stuff?
  • Most of the things I make can be ordered from my Tindie store. All the blog posts have links in them to order the specific items. You did see the links, didn't you?
What's the deal with The Future Was 8 bit?
  • I designed products for TFW8b. They sell some of my things on their store. I sell some of their things on my Tindie store. You may be better ordering from one store or the other if you want a variety of products or postage options. You can normally get more options for my products from my store and vice versa.
Do you sell on ebay?
Your store is priced in dollars is there a UK version?
  • The Tindie store defaults to dollars, but once you log in, it will display the price in your local currency. All products are designed, built, tested and shipped from the UK.
  • You can contact me direct if you wish to pay by PayPal or UK bank transfer instead.
How long will it take for my order to get to (insert name of country here).
  • I use Royal Mail international postage. They quote "Europe delivery aim: 3-5 working days, Worldwide delivery aim: 6-7 working days". I recommend tracked and signed option in countries where we have had problems with parcels going missing (such as Italy and Brazil) or delays in customs (such as the US and Canada), or for any orders for higher value items.
Where is my order?
  • Please check the tracking. If you didn't select tracking, then keep looking out of the Window. After a couple of weeks, it is also work checking your local post office as there have been many occasions where items have been waiting there and no card has been left with the recipient.
Will you be making any more C64 Dual SID boards?
  • Probably not, but if I do, there will be a blog post about it
Why not?
  • They take too long to make all the different options
Will you be making any more Atari 400 48K RAM boards
  • No.
Why not?
  • There was too much variation in the timing of different machines that I couldn't guarantee it would run on all machines. The design relies on consistent timing, and the timing is controlled by some inductors and capacitors in a 400, so it varies too much so I decided it was best to give up on these.
Have you not got just one left? [implied: just for me, because I am special]
  • No, sorry. If I did, I would probably have it listed as in stock. The reason (insert name of desired item) is not in stock is that I don't have any left. Thanks to persistent folk, I don't have any examples left of some things I used to sell and got badgered about when I stopped making them. I don't like disappointing people, but if I have not got any left, then I've not got any left. If I'm not making any more, then please accept it is for a good reason.

Repairs

Can you repair my (insert name of computer here)
  • Probably, but I don't get much time these days, so if you are in a hurry, best look elsewhere
Any update of the repair of my computer?
  • No, (see above), if there had been, I would have told you about it. These sort of questions don't really help, when I am already working all hours, seven days a week. Generally after a couple of these messages I box up unrepaired machines and return them. Sorry.
I bought an (insert name, usually C64 or Spectrum) from ebay cheap. It doesn't work. Will you fix it cheap?
  • No, sorry, just because you bought it cheap doesn't mean the repair will cost any less
I've had a go at repairing / upgrading / recapping my computer and it's not working, will you repair it?
  • Sorry, due to the extra work required, I try to avoid working on boards that have already been 'got at'.
My computer was working fine, then Windows update happened and it's not working any more.
  • I am delighted to say I am no longer working on modern computers, so I'm afraid I cannot help you.
Will you recap my (insert name of computer)?
  • No, sorry, I don't believe in recapping (see link to blog posts where I complain about this modern trend of unnecessarily recapping everything).
Will you retrobrite my (insert name of computer)?
  • No, sorry, I have yet to be convinced this is a wise move. It seems to be bleaching the plastic rather than restoring it, and seems to make it more brittle and more susceptible to going yellow again quite soon. Better just clean it properly.
You're very negative, aren’t you.
  • You could say that.

Support

Where can I keep up to date with your work?
Are you on facebook / myspace / bebo / world of cat gifs?
  • No.
I think your blog posts are great, how can I support you?
  • Thank you, that is very kind. 
  • You could support me via Patreon (and get behind the scenes updates on upcoming posts and projects)
  • You could make a one off donation via PayPal.
  • You could buy something from my Tindie store.

Sunday, 22 December 2019

A Minstrel 3 based clone of the Lambda 8300 ZX81 clone - Part 2

This is the second part of the investigations into running the Minstrel 3 as a clone of a 1980s Lambda 8300, itself a clone of the ZX81.
The first part concentrated on running the Lamdba 8300 in it's native mode. This was a partly ZX81 compatible machine, with a modified character set, fixed in ROM (or to be more precise, in a ROM inside the ULA).
That pretty much worked, with a small temporary modification to the Minstrel 3, and a custom ROM with the Lambda 8300 ROM and a recreation of it's character ROM. This version of BASIC started with a READY prompt at the top of the screen, and instead of the inverse K, has a flashing black square. (or rather a flashing white square, since it's default mode was white text on a black background, but I've not been able to take very good pictures of that, so have used the jumper on the Minstrel to change to black text on a white background, which is more photogenic).
There was another ROM available for the 8300, one that claimed to be more ZX81 compatible, and was actually the thing which fired off this investigation.
Trying this out, it also worked. This time, no ready prompt, and the familiar inverse K, but oddly it flashes the inverse attribute. Since someone asked last time, K stands for 'Keyword', indicating it's ready for you to type a keyword. It can also be E for 'Extended', G for 'Graphics' and L for 'Letter'. I think that's all of them.
Other than the cursor, the rest of the machine behaves like a ZX81, so pressing P brings up PRINT, rather than having to type the individual characters on the standard Lambda 8300 BASIC.
And it runs pretty much like a ZX81. Typing in and loading up some BASIC programs, they ran as expected. Some games ran, but with some distortion on the top line and a second about two thirds of the way down the screen, seen here with Tut-Tut.
Interesting to note that the real Lambda 8300 exhibited the same behaviour on the top line, but not the second one. (Picture courtesy of @loudscotsbloke).
The same issue, in the same place, on 3D Monster Maze.
Note that although most of the character set is the same, the different characters on the Lambda character set do confuse things occasionally, such as the walls which are meant to be 50% grey, but Rex has been redecorating with some race car wallpaper.
However, one thing the Minstrel 3 can do that the Lambda cannot, is use the real ZX81 font, and non-inverted pictures.
That's better, it's the correct colours and characters, but still with the two distorted lines which make it not really a practical option.
You can see the two lines of distortion better with the grey border option turned on.
This does not occur with the standard ZX81 ROM on the same hardware so it must be something different in the timing in the Lambda ROM. There's a thought.
This is a ZX81 speed test, which I think was part of a ZX81 emulator suite. I'm pleased to say the Minstrel 3 scores 100% of the speed of a ZX81, that's what I was after. So how does the Lambda 8300 ZX81 ROM do?
Interesting, so there is a definite slow down, 88.3% and also some distortion on the top line and the wrong characters for the half grey underline and colon. Again, this is all running on the same hardware, just a different ROM image. (wonder if this is because it is in NTSC mode?)
So it has been interesting to try this out, I don't think it is good enough to include as an option with the Minstrel 3. I wonder what other ROMs I can try?

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.

Sunday, 15 December 2019

A Minstrel 3 based clone of the Lambda 8300 ZX81 clone - Part 1

This is the Lambda 8300, one of a series of 'sort of ZX81' computers released by Lambda Electronics of Hong Kong.
It appears to have had a few different variants, and many different names (Lambda 8300, Power 3000, Basic 2000 etc.).
It has the same ports as the ZX81, power, ear, mic and TV, but also has composite video out and a joystick port. The edge connector is the same, but apparently the Z80 signals such as /INT, /WAIT /NMI etc. are not connected (sort of understandable as these are driven directly by the logic used to generate the screen).
These pictures were posted on twitter by @loudscotsbloke (used here with permission - thank you), and the question was asked about the after market DIP switches, which turned out to be a ROM switcher to switch between the original Lambda 8300 ROM and a ZX81 ROM.
Oh, that's interesting, the discussion continued, and led to a thought of 'if the ZX81 ROM works in the Lambda 8300, would the Lamda 8300 ROM work in a ZX81?'. Or rather, as you may have guessed, would it work on my Minstrel 3, which is also ZX81 compatible (probably more so than the Lambda).
The answer is no, or rather, not quite. It does generate a screen, and there is a flashing cursor, but the characters displayed are wrong. It is also only typing a single character, rather than keywords being expanded (turn out it has a tokeniser in ROM - thanks to Geoff Wearmouth for the info). The keys don't have all the keywords marked on as the ZX81 does, but they do have nifty graphics symbols you didn't get on the Sinclair machine.
Looking into it further, it appears there ZX81 ROM was in fact a specially modified combination of the Lambda 8300 ROM and the ZX81 ROM. So I tried that version as well.
That also didn't produce anything readable, but I could see it was working and using keyword expansion (i.e. type P and it moves along enough characters to show PRINT). So I wrote a little program which printed out the character set, and it did run, but as you can see, didn't print any readable characters.
Inside was very reminiscent of a ZX81, with very few chips. On the left, a 7805 regulator and a 2K RAM chip (with options on the PCB for four 2114 chips instead). There would have been a single 8K ROM chip, but that has been replaced by the blue board with multiple ROM images in. In the middle is the Z80, and to the right is a special ULA.
This is not a direct copy of the Sinclair ULA, in fact it does quite a bit more. It has a sound output, and a joystick input. Some functionality is missing, the NOP generator is implemented using a single 74LS05 and a transistor (which is seven bits, I wonder what they did about the eighth?). 
Looking at the ROM image, it didn't appear to have a character ROM at the end like the ZX81, so where was it? There weren't any other chips on the board, so I went back to something I had read, but had discounted as unlikely, which was that the character ROM was in the ULA. Really? Was there enough space for all the ZX81 functionality, the extra bits and a 512 byte ROM? I wouldn't need to be on the address bus, it could just be connected directly to the line counters and character address and feed the internal shift register to generate character data output. 
I decided to try out the theory that the character ROM was implemented in hardware, and found a recreated Lambda character ROM in the Eighty One emulator ROMs folder. I figured that if it was using this, it would need that when the screen was being drawn, during the refresh cycle, and would not be using the normal ROM at that time, so I could use a single 16K ROM chip. I copied the character ROM into an EPROM at 1E00 (where the character font lives in a ZX81), and placed the Lambda ROM at 2000 onwards. I wired the A13 line of the ROM chip to /Refresh, so that when /Refresh was low (i.e. the screen was being drawn), the character ROM would be selected, and when /Refresh was high, it would access the normal ROM.
That didn't work, but it did make a difference, the inverse line was doing it's job, but rather than random data (or code) being used as the font, it was all blank (actually, it was all black with white squares, I find it easier to take pictures of black on white as the camera can focus on the white pixel blocks in the centre).
My second attempt was to move the character set ROM to 0000 in the EPROM, and that worked! I typed in a quick program. OK, it wasn't so quick as I had to work out which keys did what (" is shift + 5, delete is shift + dot etc.).
This printed out the character set, and that all looked good, including the funky characters you don't get on a ZX81, such as the ghost, the spider, the car, and the diagonals. There are a few black pixels on the line directly above the text area, and the line directly below. Not sure what is causing those.
This is looking good. I wonder if I can load any games? I wired up the Minstrel 3 to the master tape creator and gave it a go. Did it still load from the same input port?
I had a look around, and found a couple of Lambda 8300 titles, tried LOAD "" and it worked. This is DSTAR, quite a nice game where you move around collecting diamonds. This is a version of the one where when you move it keeps going until it hits something so you have to plan your route so you can get to all the diamonds (what's that called again?)
Of course, this should be the inverse of that, and with the normal/inverse jumper adjusted on the Minstrel 3, it looks better like that, the diamonds are now white.
However, one issue here is the PAL/NTSC jumper is not being read (it is in a different location apparently), so it is defaulting to NTSC mode, and my TV doesn't like white on black on NTSC and keeps trying to make it more colourful for me.
So back to black on white for now. This time a breakout clone.
In conclusion, it is possible to run the Lambda 8300 ROM on a ZX81 (ish) machine, with a small modification. However, it's not fully supported. Greater support could be added, the main issues are locating where it reads the joystick and PAL/NTSC jumper from, and how it generates sound. Identifying and sorting out the rogue pixels and finally, it would also need a new keyboard overlay.
I don't think there is sufficient interest to try to squeeze all those bits into the Minstrel 3, but might consider it if enough people demand it.
Read more of the adventures of the Lambda 8300 ROMs in part 2.

Footnote: I try to avoid using the term 'clone', as to me that implies a copy using the same hardware, where as in both the case of the Lambda and the Minstrel, they are implementing the same or similar functionality, but with different hardware, hence my use of 'ZX81 compatible' when describing the Minstrel 3.

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.

Sunday, 8 December 2019

TZXduino master tape creator update

A few years ago, I adapted the TZXduino project to work to create master tapes for The Future Was 8 bit cassette range, creating something out of a spare Spectrum +2 case, using it's tape deck to record the tapes.
That turned out to be quite useful, so I ended up fitting the prototype bits into a second spare +2 case to make one for me.
That's been handy a few times, but every time I dig it out, I have to fiddle around a bit as it's still on a breadboard and the switches keep popping out.
I had also used an Arduino Ethernet board because it had an on board microSD card, but was missing the USB serial on board programmer. The last time I dragged it I decided to do it properly. The case was still fine, it was a +2 where the keyboard supports had all been snapped by shipping it with the powersupply sitting on the keyboard.
I went for a standard Arduino UNO, so that it could be powered and programmed via USB. I wired up an Arduino portotype shield with the buttons and connections.
As I wasn't using the Ardunio Ethernet any more, I needed a card reader. Here I used an SD2BBC board, which was adapted to work as a plain card reader.
The final element was the display, here I reused the original one, as that was working fine.
And it is complete. The white plug in the middle is the output to the cassette deck built into the Spectrum +2 case.
I used that to generate the tapes I needed.
A minor modification requested by TFW8b was to create multiple copies, so I added the number of copies required to the menu, used to create multiple copies of the same program on each tape.
I've been getting mixed results from loading vintage ZX81 tapes into the Minstrel 3, some of them have not stood the test of time well, with noise and dropout.
I didn't fair any better loading them into original ZX81 hardware.
I got better results on both from the newly created tapes.
I made up an alternate lead for the TXZduino, with a 3,5mm jack plug on the end, to drive the ear input of the ZX81 / Minstrel 3.
That worked fine, and I have been using that for the cassette loading testing.
That works much better, cutting out the analogue tape middleman.

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.