15th Sep 2019, 7:26 pm | #221 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
Comment on my previous post - the gemini bios inverts the data before presenting it to the hardware. So the data stored in a diskfile/scsi emulator will be correct.
The xbeaver bios records inverted data. |
15th Sep 2019, 10:05 pm | #222 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
loading the boot sector from cpm64w.bin - eg the sector starting with 47h 47h at address 0 and then executing from location 2 allows the system to boot.
The simon.rom from your website looks for a signature of 6dh 47h at the start of the boot sector. I think this is a special boot rom for the mfb system and hence fails. Patching the test to 47h 47h at offset 31h in simon.rom tries to boot from floppy. There is code in simon to boot from the hard disk but I have not found out how to do it. This does however indicate that the version of simon you have does not match the boot sector starting 47h 47h in cpm64w.bin I have not managed to do anything with the first four sectors of that file... Getting there... |
16th Sep 2019, 11:08 am | #223 | ||||
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
Quote:
Quote:
Quote:
Quote:
To get GEMSYS and BIOS 3.4 working on my hardware would be amazing. In terms of a disk image, all I have is a backup of the disk as a collection of files. Most of which are normal CP/M apps (WS3, SC2 DBASEII etc.) I have placed some of these on individual disk images on the resources page. I will send over the backup in case it is of any use. |
||||
16th Sep 2019, 11:55 am | #224 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
As usual the boot sequence of gemini preserves the memory from 0100 upwards eg the program area.
This can be useful. use binload in the config file to load a program of choice. The program of choice is of course t-net.com. binload 0100 ./beaver/network/t-net.com Add a line to the config file to define a serial port as bvrnet eg.. board 0xb8 serial_8250 bvrnet ~/beaver/network create a file of suitable size filled with 0xe5 to be the hard disk (About 10MByte) gem925.dsk run xbeaver with the configuration file. at the prompt M>save 0 go.com M>go n T-NET M> M> Make sure ~beaver/network has the required files on it - eg t-net pip etc M>N:PIP A:=N:*.* And the files will be copied to the emulated hard disk giving an image file With the correct utilities you should then be able to write the boot track and build a system. *** NOTE *** this system requires a GM833 ram disk to boot. It copies the command processor into the ram disk and then reloads the command processor from the system track of the ramdisk. If you don't have a ramdisk it will halt at booting. You maybe able to use the utilities to generate a system that does not have a ramdisk though - this is new area for me I rolled my own out of public domain software CCPZ/BDOSZ. Note also the GM925 would have had a double/high density 80 track drive eg 3.5 or 5 inch floppy 1.2M or 1.44MByte - there were 8 inch compatible in high density mode. Last edited by JohnBHanson; 16th Sep 2019 at 12:02 pm. |
16th Sep 2019, 2:21 pm | #225 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
The GM833 could be an issue for me as I don't have one (yet). Never the less a useful exercise and some more Gemini software saved.
I am not sure if it is of any use but the backup of the GM925 is here...https://glasstty.com/wiki/index.php/File:GM925.zip Many thanks for all your help, I hope you are still having fun... |
16th Sep 2019, 3:47 pm | #226 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
Good news - I have managed to get a disk image. Here is how to do it
unzip the GM925.zip file with the -LL option to force lower case. rename directories a to a0 and b to b0 user the following line in the gem925.cfg to map the required drives (Change path to match your system) board 0xb8 serial_8250 bvrnet & ~/beaver/gm925/gm925/a%d & ~/beaver/gm925/gm925/b%d boot the system M>go no M>pip a:=n:*.* M>user 1 M1>pip a:=n:*.* etc and then for drive b M>user 0 M>pip b:=o:*.* M>user 1 M1>pip b:=o:*.* etc This will copy the files across to the disk image reboot (restart xbeaver) programs gensys and config can then be used to write the system tracks. I think you can remove the gm833 ramdisk from the configuration and this might provide you with a bootable system (I don't know). The system track from cpm64w is not the mfb system and the mfb utilities complain (eg setup). |
16th Sep 2019, 6:35 pm | #227 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
Good news cpm64w will run *without* a GM833 card. I think it needs the system tracks.
Download from http://81.105.120.101/download/gem925.zip for the bootable image Still needs a boot rom though. |
16th Sep 2019, 10:41 pm | #228 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
useful command
gensys system.cfg OR gensys mfb.cfg to configure the hard disk to boot either a standard system or a mfb system. and then boot to boot the system This should get you system tracks that are suitable for your real hardware. |
17th Sep 2019, 7:29 am | #229 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
This is good progress and in trying to follow along I am experiencing a few difficulties. Below is my xbeaver config file which, when used, boots to M, however, anything else I do causes a system halt e.g.
If I save and run T-Net (go.com in your example) it halts. If I perform a DIR of A or B, it halts. A DIR of C shows garbage. Code:
verbose cpuclock 4 if T board 0x0 intbus 0x0 0xff xrwt trace if T bus trace board 0xfe gm813_mmu board 0xb0 gm832 Gemini green board 0xb8 serial_8250 bvrnet ~/Dropbox/Documents/CPM/Gemini80/Emulator/gm925/a%d ~/Dropbox/Documents/CPM/Gemini80/Emulator/gm925/b%d board 0xe0 gm829_scsi ~/Dropbox/Documents/CPM/Gemini80/Emulator/gem925.dsk board 0xe0 gm829_floppy -geometry D80.2.10.0.512 ~/Dropbox/Documents/CPM/Gemini80/Software/GeminiBios34/GEMBIOS34.80.DMP board 0xfb gm833 -maxtrack 0x3f if T bus io binload cb00 ~/Dropbox/Documents/CPM/Gemini80/Emulator/cpm64w.bin binload 0100 ~/Dropbox/Documents/CPM/Gemini80/Software/T-Net/files/t-net.com byte 0 c3 00 eb Code:
[john@arch-vbox xbeaver]$ ./xbeaver gm925.cfg gm925.cfg:cpuclock 4 gm925.cfg:if T board 0x0 intbus 0x0 0xff xrwt trace gm925.cfg:if T bus trace gm925.cfg:board 0xfe gm813_mmu Installing board gm813_mmu (Gemini GM813 Memory Management Unit) at address 0xfe gm925.cfg:board 0xb0 gm832 Gemini green Installing board gm832 (Gemini GM832 Super Video Controller) at address 0xb0 gm925.cfg:board 0xb8 serial_8250 trace tty tty /dev/ttyS0 Installing board serial_8250 (Serial Board (Intel 8250 Chip)) at address 0xb8 gm925.cfg:board 0xb8 serial_8250 bvrnet ~/Dropbox/Documents/CPM/Gemini80/Emulator/gm925/a%d ~/Dropbox/Documents/CPM/Gemini80/Emulator/gm925/b%d Installing board serial_8250 (Serial Board (Intel 8250 Chip)) at address 0xb8 network directory for drive 0 set to "/home/john/Dropbox/Documents/CPM/Gemini80/Emulator/gm925/a%d" network directory for drive 1 set to "/home/john/Dropbox/Documents/CPM/Gemini80/Emulator/gm925/b%d" gm925.cfg:board 0xe0 gm829_scsi ~/Dropbox/Documents/CPM/Gemini80/Emulator/gem925.dsk Installing board gm829_scsi (Gemini GM829 Scsi Disk Controller) at address 0xe0 hard disk is file "/home/john/Dropbox/Documents/CPM/Gemini80/Emulator/gem925.dsk" gm925.cfg:board 0xe0 gm829_floppy -geometry D80.2.10.0.512 ~/Dropbox/Documents/CPM/Gemini80/Software/GeminiBios34/GEMBIOS34.80.DMP Installing board gm829_floppy (Gemini GM829 Floppy Disk Controller) at address 0xe0 Parsed file /home/john/Dropbox/Documents/CPM/Gemini80/Software/GeminiBios34/GEMBIOS34.80.DMP format = 80 cylinders 2 heads 10 sectors (first sector=0) of 512 bytes R/W gm925.cfg:board 0xfb gm833 -maxtrack 0x3f Installing board gm833 (Gemini GM833 Ram-Disk) at address 0xfb gm925.cfg:if T bus io gm925.cfg:binload cb00 ~/Dropbox/Documents/CPM/Gemini80/Emulator/cpm64w.bin Successfully loaded 12288 bytes gm925.cfg:binload 0100 ~/Dropbox/Documents/CPM/Gemini80/Software/T-Net/files/t-net.com Successfully loaded 2688 bytes gm925.cfg:byte 0 c3 00 eb Finished with gm925.cfg Last edited by john_newcombe; 17th Sep 2019 at 7:49 am. |
17th Sep 2019, 8:03 am | #230 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
Yes - I was at that stage. Make sure you have the latest xbeaver that will fix the halting on dir a: dir b: etc. This fixes the command that the xebec needs to set the drive geometry.
I am not sure why you are having t-net crash - this should be the same version you have for the real hardware. Try downloading the disk image I have posted That has the correct versions in. Remember go.com is a zero length file that just runs whatever program is in memory. |
17th Sep 2019, 9:49 pm | #231 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
Thanks for the explanation of GO.COM, I am with it now. I have now managed to boot xbeaver without the GM833 card and can see A: and B:. Although I did download the latest version I think I must have mixed up the versions and re-compiled a previous one... Doh!
In order to use gensys.com to create a boot disk for my real Gemini with RPM, I decided to build a bios based on BIOSFW.SYS rather than BIOSW.SYS. As I understand it this is the version with Winchester support that boots to floppy. The boot sector it creates is interesting... I created a floppy disk image based on this and tried to boot it in xbeaver with my standard config, whilst the Simon ROM attempted to boot it, it failed with a corrupted error message. Code:
6d 47 31 00 01 b7 20 01 3c 08 3e 0f d3 bc cd 1f 00 b7 28 07 3e 03 d3 bc c3 00 f0 08 c3 00 eb 21 00 d5 01 e4 01 1e 13 db e5 07 16 82 30 02 16 88 08 d3 e4 08 78 d3 e2 7a d3 e0 18 02 77 23 ed 78 28 fc db e3 fa 3c 00 db e0 e6 fc c0 04 78 d6 0a 20 22 47 3a 7e 00 b7 28 0e cb 5a 20 04 08 f6 08 08 7a f6 0c 57 18 0d 3e 5b d3 e0 3d 20 fd db e0 cb 47 20 fa 1d 20 b9 af c9 00 00 00 ... Last edited by john_newcombe; 17th Sep 2019 at 10:00 pm. |
17th Sep 2019, 10:02 pm | #232 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
6d 47 is the signature for the multi format bios boot sector. I have been using gensys to create the system and that appears to write the appropriate boot sector for the system being created. Some of the .cfg files on the hard disk can be used as arguments to gensys and these files contain the definition of the system - can be copied and edited to create the system of your choice.
Remember the GM925 would have a double sided 80 track drive fitted - almost certainly one that would do 1.2MByte as well as 800k formats. Ideally you need to find out how to use simon to boot from hard disk. I am sure it is possible I have seen the hard disk code in it. I have enjoyed getting experience of gemini software. For a quick note xbeaver has two keyboard settings. To select gemini mapping press and hold the left control key, press and release the right control key, release the left control key. to select wordstar mapping swap swap left and right in the above. Does make it easier to use cursor keys with gemini programs. |
18th Sep 2019, 3:42 am | #233 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
Here is a short program to copy the boot sector from address 180 down to zero and execute it.
you can build a com file by combining the program with the boot sector you want and they using the cpm save command Code:
;Program to boot a system ; ;use ddt to enter the program at address $100 ;load the boot sector of hard disk at address $180 ;type ^c ;type save 1 bootsys.com - to save file to floppy disk 0100 org $100 0100 21 80 01 start: lxi h,$180 0103 11 00 00 lxi d,0 0106 01 80 00 lxi b,$80 0109 ED B0 ldir 010B AF xra a 010C F3 di 010D C3 02 00 jmp 2 0100 end start |
19th Sep 2019, 12:42 pm | #234 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
Thanks, I will give this a go.
|
19th Sep 2019, 3:41 pm | #235 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
If anyone with a Gemini 925 machine is reading this I would like to know what floppy disk controller it is equipped with.
If it is a GM849 or a GM849A version - I wonder if you would let me know what IC14 is (It is normally a 74LS21). Also is there any pins pulled/strapped/mods near this IC. I am having trouble getting the MultiFormat Bios running. It is tripping up on some bits in the scsi status field that are "undefined" in the manual. The circuit diagram shows these bits come from an 74LS21 but implementing that does not help me. I wonder if there have been some custom mods to the GEM925 to protect the Multi Format Bios from being copied. Any ideas? |
28th Sep 2019, 9:16 pm | #236 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
The only person I know with access to a GM925 can be contacted via Facebook messenger at https://www.facebook.com/AintBigAintClever/. The machine he has access to is the one featured in the YouTube video I mentioned in a previous post.
|
29th Sep 2019, 12:18 am | #237 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
I am getting someway. Looks like the two bits D6 and D5 on port e5 which are specified as indeterminate are critical for the Multiformat Bios to run.. I have also spotted some odd coding
problems. Some subroutines take parameters after the call. That is ok but if a conditional call is used and the call is not taken then the parameters are executed as instructions. Also at one point it did an inc (ix-2) which incremented the return address on the stack to the middle of an instruction. The second byte of the instruction happened to be 76 which is halt. I have created two additional scsi controllers (829m and 849m) that have the correct (I hope) behaviour for running MFB. I suspect these were meant to run on a modified card as a way of doing copy protection. I have even wondered if my emulator is causing the problem in that the emulation is not perfect - but gemini code does some strange things like aborting transfers part way through. Still getting closer all the time... |
29th Sep 2019, 8:22 am | #238 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
That's good news, well done. If the hardware is different as you suspect, I guess I won't see this working on my hardware.
Just as a matter of interest, is there a way to emulate a 4Mhz clock speed? I can see a cpuclock parameter in the config file but changing this from 1 to 0 stops the boot process. I ask so that I can test a delay routine i have coded. I am currently working on coaxing the scsi2sd card (in xebec mode) into life via the GM839 SASI port and at the moment I cannot even select it, it hangs waiting for the msg bit so rather than looping in a waiting condition I want to use a delay so that I can investigate what is actually being returned etc. The scsi2sd xebec mode is probably not a complete implementation but I will persevere as I like the additional level of authenticity. Perhaps one day I can get hold of the Xebec card and move the disk emulation down the line a little. |
29th Sep 2019, 9:28 am | #239 |
Heptode
Join Date: Aug 2009
Location: Worthing, Sussex, UK.
Posts: 661
|
Re: Gemini 80-Bus System
Yes running at 0MHz stops the Z80 emulation. This is deliberate and was added later. It is actually how the network servers work by having a serial card (loopback) that is just a null modem cable connecting two serial ports - one of which is a real serial port and the other is the network server for the host.
Anyway putting numbers in other than zero changes the speed of emulation. It is a very approximate indicator of the CPU speed in MHz. So cpuspeed 4 will set for a 4MHz system. If you look at gemini_scsi.c there is a DEBUG flag - set this to a high number for debug output on the emulator. If you are using the Gemini version of software then it uses commands 00 - Test Unit Ready 08 - SCSI Read 0a - SCSI Write 0c - Init Drive Characteristics Gemini software also issues reset during booting to abandon a disk read which could be what you are hitting. I had to add the last one to support Gemini software as it allows the xebec controller to convert Logical Block to CHS addressing for the disk. PS - Simon does boot a hard disk if you hit a key at the correct time. Any key seems to work. Do you have a hard disk image that works on the emulator. PS - the latest version of xbeaver can boot load and execute gemini boot sectors without any roms loaded (Loads the boot sector at address 0 which is the most common). Are you running a gemini image or your own code? |
29th Sep 2019, 2:56 pm | #240 |
Hexode
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 252
|
Re: Gemini 80-Bus System
I am running my own code as a com file under CP/M (Bios 1.4) accessing the controller directly with the commands you mention. I have followed the Xebec guide for protocol details etc. I think the issue I have is more fundamental. I think I need to pop the scope on the select and other control lines to see what is happening. My code works ok on the emulator, it is the real hardware and the scsi2sd in particular that seem to be the issue at the moment. Naturally I will keep you posted.
|