This Holly Week I have been doing a very different thing with the SF.
One of the 4 platforms that can run SymbOS is the
Amstrad PCW series, CP/M native machines, intended more as electronic write machines than for computing.
![](http://www.habisoft.com/pcwwiki/lib/exe/fetch.php?w=300&tok=432c7e&media=hardware:pcw-8256.jpg)
With green or white mono-colour screens, they came in a pack with a printer, so they where a cheap ready-to-work equipment that sold 8 millions of units on all the world, competing with the much more expensive similar PCs approach.
Here in Spain it was the choice of a lot of humble business, and there where software houses specialised on program commercial programs for the PCW platform.
I have a friend nicknamed Habi that is a Guru of this computer. He even has programmed a simulator of the computer, named
CP/M BOX.
Returning to the start of this post, this weekend I have successfully connected the SF3 to the PCW expansion bus. As you know, I am not so skilled, so I asked for aid to Hans and Habi to accomplish it. I can follow a schematic, so the first thing was to think on how to connect them. First I made a simple bridge card with the two connectors, soldered to a bread-board pcb.
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
observe the unusual vertical way of the PCW expansion connector.
Then I started with the technical side...
Like the Enterprise, the PCW only uses the lower 8 bit Z80 ports not caring for the rest of the 16 bit ports and the higher byte signals, but its hardware uses almost all the 256 ports range. This, added to a variety of add-ons that where offered on its time, leaves only a few "virgin" ports to use with this project.
What can be done? Habi offered a neat solution: swapping bytes... but this can only work with "virgin" ports. Happily there are still a few unused ports on the BXh range.
I have just used that B0 port to try my interface. The trick is to use the MSB of the 16bit port as the working 8bit port, leaving the LSB fixed as B0h. This gives us a totally new 256 ports range to use...
But this swap has to be interpreted also on the adapter. We take the A0-A7 signals and then swap them with the A8-A15 ones. Easy, isn't it?
There are other complications, of course, the external CPC hardware can't be commanded from the B0XXh port range, as it needs 16bit de-codification, we have to change its MSB for it to work. Hans hinted me to use a 74l688 on the higher A8-A15 signals to give /IORQ only when B0h on them. Once done we can put on A8-A15 what we want.
[ Guests cannot view attachments ]
The SF3 uses the FD4Xh range of ports, inherited from the first SF. But the SE-ONE (the SF3 has one inside...) uses the FF2Xh range. So I can command the SF3 if I fix the A8-A15 signals to 11111111(FFh, all +5v) or 11111101(FD, all +5v but A9 to ground). I made the selection with a jumper, but my SF3 is an early prototype that lacks the SE-ONE and the WIFI.
There where other software problems: Basic interpreters deal usually with only the first 256 Z80 ports, so Habi gave me an example of how to manage 16 bit ports with a short machine code subroutine in Mallard Basic, the interpreter used on the PCW.
Mallard Basic is like Microsoft Basic but earlier, so it was easy to transcribe my EP examples to it, with the aid of the manual, of course.
This is my first working try.
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]