UK Vintage Radio Repair and Restoration Discussion Forum

UK Vintage Radio Repair and Restoration Discussion Forum (
-   Vintage Computers (
-   -   Gemini 80-Bus System (

JohnBHanson 7th May 2019 4:34 pm

Re: Gemini 80-Bus System
1 Attachment(s)
I have extracted from the archive the format program for the gemini... please find here.

Extract from zip archive and then download into RP/M at location 100 and execute. Works under CP/M and so will probably work under RP/M. It accesses the controller directly.

This might allow you to create blank disks (I hope).

john_newcombe 9th May 2019 8:00 pm

Re: Gemini 80-Bus System
Many thanks John, really appreciated, I clearly have quite a bit to digest and some learning still to do.

I have the Gotek connected and have configured the raw image settings for a double sided 35 track disk with 10 sectors per track, 512 bytes per sector. The track layout is set to interleaved cylinder ordering: c0s0, c0s1, c1s0, c1s1, ... I have also ensured that index pulses are not suppressed.

I am coming to the conclusion that the DMP disk images I have are Anadisk formatted images, and, based on the Anadisk documentation means that the tracks may need to be shuffled around as you suggested in an earlier post. I will look at this next. Just in case you are unfamiliar, the Anadisk header is defined as follows:

# ACYL Actual cylinder, 1 byte
# ASID Actual side, 1 byte
# LCYL Logical cylinder; cylinder as read, 1 byte
# LSID Logical side; or side as read, 1 byte
# LSEC Sector number as read, 1 byte
# LLEN Length code as read, 1 byte
# COUNT Byte count of data to follow, 2 bytes.If zero, no data is contained in this sector.

At the moment I am unable to use XBeaver as I have no keyboard input. I am using KDE though. I will spend some time with this also.

Naturally I will keep you posted. Once again, many thanks for the help.

john_newcombe 9th May 2019 9:12 pm

Re: Gemini 80-Bus System
In an attempt to understand the DMP format track/sector ordering I discovered this sentence in the Anadisk documentation which I thought may be worth sharing.

All sectors occurring on a side will be grouped together; however, they will appear in the same order as they occurred on the diskette. Therefore, if an 8 sector-per-track diskette were scanned which had a physical interleave of 2:1, the sectors might appear in the order'~ 1,5,2,6,3,7,4,8 in the DOS dump file.

john_newcombe 10th May 2019 7:25 pm

Re: Gemini 80-Bus System
John, a quick update: xbeaver is now running properly under TWM on my Arch Linux machine.

Just in case it helps anyone, TWM seems to have an issue if a locale is anything other than en-US-UTF-8 is used. Even having both en-GB-UTF-8 and en-US-UTF-8 defined seems to cause a TWM font issue.

It's a tad awkward having to switch between SDDM/KDE and TWM but it is fine as I am very grateful that xbeaver exists. I understand that Gnome works fine, however, Gnome is just not for me so I have not tried it.

I have yet to get my head around the the xbeaver options etc. but will spend some time with it when I can.

Many thanks

john_newcombe 13th May 2019 8:05 pm

Re: Gemini 80-Bus System
Hi John, I wonder if you can tell me what I am doing wrong with my xbeaver setup?

I have created a minimalist config file that includes;
a G829 floppy pointing at my DMP image;
a binary image of my machines version of RP/M (2.2) loaded at F000;
the patch for the top of RAM required for RP/M;
the verbose switch.

The system starts to RP/M as expected which is great, however when I try and boot to my disk, it looks like sector 1 is read rather than sector 0. Checking the verbose output shows that the disk image is parsed and reports the correct geometry and states that the first sector is 0.


xbeaver.cfg:board 0xb8 serial_8250 bvrnet ~/beaver/network
Installing board serial_8250 (Serial Board (Intel 8250 Chip)) at address 0xb8
network directory for drive 0 set to "/home/john/beaver/network"
xbeaver.cfg:board 0xe0 gm829_floppy -debug DSZ -geometry DP35.2.10.512 ~/beaver/images/GM512_ORIGINAL.DMP
Installing board gm829_floppy (Gemini GM829 Floppy Disk Controller) at address 0xe0
Parsed file /home/john/beaver/images/GM512_ORIGINAL.DMP
    format = 35 cylinders 2 heads 10 sectors (first sector=0) of 512 bytes R/W
xbeaver.cfg:binload 0xf000 ~/beaver/roms/RPM_2.2.ROM
Successfully loaded 4096 bytes
xbeaver.cfg:byte 0f0a8 21 00 f0
Finished with xbeaver.cfg

When I try and boot the disk, the following is shown.


FDC Command 00
Floppy Drive Select 31
FDC Status:20
FDC Status:20
Floppy Sector Write 01
FDC Command 88
Floppy External Status 80
Floppy data read c3
Floppy External Status 80
Floppy data read 5c
Floppy External Status 80
Floppy data read 60

The read values tie up with those stored in sector 1, I would have expected to see the data from sector 0.

RP/M reports "Wrong Disk" which I assume is because the two 47h bytes stored at the start of sector 0 are not received.

Any help you can offer would be very welcome.

JohnBHanson 13th May 2019 10:10 pm

Re: Gemini 80-Bus System
1 Attachment(s)
I have tried booting mine - and all appears to work (debug log attached) I suspect your version of RPM is trying to boot sector 1. (someone has patched it maybe).

This is a record of my log file.

Can you PM me a copy of your RPM file. Thank you.

john_newcombe 13th May 2019 10:22 pm

Re: Gemini 80-Bus System
That would explain a lot.

Will PM the rom.

JohnBHanson 13th May 2019 10:38 pm

Re: Gemini 80-Bus System
Thank you - got it, and when I run it the same as what yours does b command loads from sector 1 and then claims wrong disk. So it is the version of RPM that is the trouble.

john_newcombe 13th May 2019 10:44 pm

Re: Gemini 80-Bus System
Thankyou, I have an EPROM marked 2.1, so I will test that sometime tomorrow.

The only other thing I get that I am not sure of is that I get a few Unknown port messages , see below. Is this normal?

PHP Code:

xbeaver.cfg:cpuclock 4
.cfg:board 0xfe gm813_mmu
Installing board gm813_mmu 
(Gemini GM813 Memory Management Unitat address 0xfe
.cfg:board 0xb0 gm832 BeaverBoot planes green
Installing board gm832 
(Gemini GM832 Super Video Controllerat address 0xb0
.cfg:board 0xb8 serial_8250 bvrnet ~/beaver/network
Installing board serial_8250 
(Serial Board (Intel 8250 Chip)) at address 0xb8
network directory 
for drive 0 set to "/home/john/beaver/network"
xbeaver.cfg:board 0xe0 gm829_floppy -debug DSZ -geometry DP35.2.10.512 ~/beaver/images/GM512_ORIGINAL.DMP
Installing board gm829_floppy 
(Gemini GM829 Floppy Disk Controllerat address 0xe0
Parsed file 
35 cylinders 2 heads 10 sectors (first sector=0of 512 bytes R/W
.cfg:binload 0xf000 ~/beaver/roms/RPM_2.2.ROM
Successfully loaded 4096 bytes
.cfg:byte 0f0a8 21 00 f0
Finished with xbeaver
Unknown port ff 
(high bus 11write data 11
Unknown port f8 
(high bus 00read
Unknown port b4 
(high bus ffwrite data ff
Unknown port b5 
(high bus ffwrite data ff
Unknown port b6 
(high bus ffwrite data ff
Unknown port b6 
(high bus fdwrite data fd
Unknown port b7 
(high bus ffwrite data ff
Unknown port b7 
(high bus 00write data 00 

john_newcombe 13th May 2019 10:45 pm

Re: Gemini 80-Bus System
The config I have is...


cpuclock 4
board 0xfe gm813_mmu
board 0xb0 gm832 BeaverBoot planes green
board 0xb8 serial_8250 bvrnet ~/beaver/network
board 0xe0 gm829_floppy -debug DSZ -geometry DP35.2.10.512 ~/beaver/images/GM512_ORIGINAL.DMP
binload 0xf000 ~/beaver/roms/RPM_2.2.ROM
byte 0f0a8 21 00 f0 #Patch top of ram for RPM

JohnBHanson 13th May 2019 11:27 pm

Re: Gemini 80-Bus System
Just disassembled RPM V2.2 and it reads sector 1 at address 80h and then jumps to address 82h. And also looks for the first two bytes being G8 - clearly this is for a different type of CP/M system

To Patch RP/M to boot your system

The following might be helpful to add into your config file
binload 0xf000 ~/beaver/RPM_2.2.ROM
#Patch top of ram for RPM
byte 0f0a8 21 00 f0
#select boot sector
byte 0fc36 0
#patch disk code GG for floppy boot id
byte 0fc59 47 47

#patch in jump to patch routine
byte 0fc72 e0 ff

#patch routine - copy sector from 80h to 0h
byte 0ffe0 21 80 00 11 00 00 01 80 00 ed b0 f3 c3 02 00

( And still include the line )
byte 0000 c3 00 f0

This should boot the disk :-).

NOTE If you are doing a ROM do not patch the top of RAM test. This is done on xbeaver because actually xbeaver does not support ROM. If not patched the memory size routine overwrites the RP/M code.

JohnBHanson 14th May 2019 12:15 am

Re: Gemini 80-Bus System
For the unknown ports b4, b5, b6, b7 are the Z80 pio on the GM811 - which is not configured in the Gemini.cfg file.

Port ff is ram paging (Not used GM813 has much better memory management)
Port f8 - I don't know, might be keyboard on a GM811 processor card

john_newcombe 14th May 2019 7:25 am

Re: Gemini 80-Bus System
Thank you so much. I will let you know how you get on.

john_newcombe 14th May 2019 8:44 am

Re: Gemini 80-Bus System
To keep things as near to my machine as possible I dumped my version of RP/M 2.1 using RP/M itself, I then created the binary using a bit of python and changed the config to point to the new binary. The xbeaver system now boots to the disk images I have and I have a very convenient platform to simulate my system.

This is great progress, I cant thank you enough! I am sure I would have given up by now had you not been around to answer all my questions.

I now need to get back to the real machine and sort out the IVC board.

JohnBHanson 14th May 2019 2:09 pm

Re: Gemini 80-Bus System
Remember the IVC needs a 4MHz clock on the back plane provided by the processor.
An input/output from port b3 will reset the IVC card
Another thought - the IVC requires a fairly long keyboard strobe
PS - Where did you get RPM 2.1 from? - I would love a copy (I only have RPM 2.0)

john_newcombe 14th May 2019 5:38 pm

Re: Gemini 80-Bus System
1 Attachment(s)
Thanks for the info re: the IVC, I am using a 25ms strobe which was working fine and 4Mhz is provided from the backplane. I will have a probe around with a scope and see if I can come to any conclusions. I know that the Z80, CRT controller and RAM are all good so hopefully it will be something simple.

Attachment 183094

The eprom came with the machine, I also have the versions 0.1, 2.0 and 2.2.

There was an article in 80 Bus News that described details of how to take v2.0 to v2.1 and then on to v2.3 (there was no 2.2, despite me having one!). When I get round to patching it I will post it here.

john_newcombe 14th May 2019 7:09 pm

Re: Gemini 80-Bus System
Please ignore the HEX file that is in the RPM file. It should not be there. The binary is correct.

john_newcombe 14th May 2019 7:50 pm

Re: Gemini 80-Bus System
1 Attachment(s)
Here is RP/M 2.3. I followed the directions described by Richard Beal in 80-Bus News Vol. 3 Iss. 6 to patch version 2.1 to 2.3. I hope this is of use.

Attachment 183105


JohnBHanson 15th May 2019 2:28 am

Re: Gemini 80-Bus System
I have been playing with the gemini version of CPM. It does some interesting things
with the input mode. Because of this I found a bug.

The SVC Command ESC K returned 0 if no characters were available for input else returned the character. Reading the spec properly if no character is available it is supposed to wait for a character. What was happening was that this was returning 0 for no character and forcing the gemini bios to enter edit mode. This was causing problems.

While we are on the subject one of the other problems is the keyboard mapping is fixed and the cursor keys are not the same as the gemini choice. I am thinking of an easy way to do this as different systems use different key mappings.

Please download the latest version from for this bug fix.

Thank you.

john_newcombe 15th May 2019 3:55 pm

Re: Gemini 80-Bus System
Thanks John.

Now that I have an xbeaver up and running my next task is to boot the real machine to CP/M. I will try and source some Shugart interface drives and I will run the program you sent me. In the meantime I am playing around with the FlashFloppy software running on a Gotek and reading all that I can about RAW image formats.

I am thinking that a RAW image format should contain everything that was on the disk e.g. ID Address Marks, sector header, gap bytes, Data Address marks, sector data and CRCs etc. Do you think that would be correct?

I have the sector data directly from the .DMP images and I have the Gemini CP/M disk format in the very detailed articles published in Scorpio issues 1-4 by M.W.T Waters. It wouldn't take much to assemble this data into a proper RAW image.

Armed with the above information I wonder if by speaking to the Author, the Gemini definition(s) could be added to FlashFloppy. As the product is open source, I could even have a go myself.

I am hoping that in the longer term I will get to the point where I have a fully working CP/M Gemini machine with Floppy and HD. The journey is the fun bit though.

All times are GMT +1. The time now is 2:47 am.

Powered by vBulletin®
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
Copyright ©2002 - 2020, Paul Stenning.