View Single Post
Old 4th Oct 2020, 8:27 am   #415
Join Date: Apr 2019
Location: Skipton, North Yorkshire, UK.
Posts: 248
Default Re: Gemini 80-Bus System

In trying to get my MFB system to boot, it looks like I have similar symptoms as when I'm using XBeaver. I can boot to the floppy and access the Winchester, run programs etc. but I cannot boot to it with the SIMON ROM.

When I use xbeaver to boot a MFB system using the config shown below, this works well when using the option -x (MFB), i.e. it boots to the Winchester disk image as a proper MFB system. However, When I use the option -xr (MFB using SIMON), i.e. trying to boot with the SIMON ROM, it fails to boot to the Winchester and boots to the floppy disk instead.

The difference of course is that with option -x, the SIMON ROM is not used, instead the gemhdbt.bin file is pre-loaded at address 0000, which seems able to boot the disk.

I have dissasembled the SIMON ROM, and whilst I am a little out of my depth here, I can see that the code accesses the disk controller and that this ties up with the trace output that XBeaver gives when using the -xrt (MFB, SIMON and Tracing) option.

As a sanity check I have used DISKED to compare the sector data on track 0 between my Winchester (SCSI2SD) and the disk image I am using, I can see the same boot code in sector 1 on both. (sector 0 is all zeros in both cases).

I guess what I still need to understand is why the SIMON ROM is unable/unwilling to collect and execute the boot sector of the Winchester disk.

Also I wonder if I can make use of the gemhdbt.bin code on my real system to boot the Winchester.

The XBeaver config I am using.

if B echo Option B - load boot sector at 0000 for booting
if E echo Option D - Include Debug console
if E echo Option E - External Video Card
if L echo Option L - Load CPM from file file
if M echo Option M - Include GM833 Ram Disk
if R echo Option R - Use boot rom (Simon)
if T echo Option T - Trace io cycles
if X echo Option X - Use MFB system (Work in progress)

if E cpuclock 1
if !E cpuclock 1

if T board 0x0 intbus 0x0 0xe0 xrw trace
if T board 0xe0 intbus 0xe0 8 trw trace
if T board 0xe8 intbus 0xe8 0x17 xrw trace  
if T bus trace

board 0xfe gm813_mmu

if !E if X board 0xb0 gm832 Gemini_925_MFB green keyboard gemini
if !E if !X board 0xb0 gm832 Gemini_925 amber keyboard gemini
if E board 0xb1 extbus 0x0a1 0x03 rw /dev/z80xbus
if E output 0xb3 0

if D board 0xa0 gm832 SysTrace green
if D output 0xa1 0x1b 0x35

board 0xb8 serial_8250 bvrnet ./NetworkDrive

if X   board 0xe0 gm849m_scsi  ./Disks/gem925mfb.dsk
if !X  board 0xe0 gm829m_scsi  ./Disks/gem925.dsk

if M board 0xfb gm833 -maxtrack 0x3f

board 0xe0 gm849_floppy -geometry T80. ./Disks/CPM_BIOS34_JN.1.GEMQDDS.IMG

if T bus io

if L binload cb00 ./ROMs/cpm64w.bin
if L byte 0 c3 00 eb

#if B if X binload 0000 ./ROMs/gemhdbtm.bin <-- I dont have this (JN)
if B if X binload 0000 ./ROMs/gemhdbt.bin
if B if !X binload 0000 ./ROMs/gemhdbt.bin

if R binload 0f000 ./ROMs/SIMON_V4.1_MFB.ROM
if R if X byte f031 6d 47
if R if !X byte f031 47 47
if R byte f310 76
john_newcombe is offline   Reply With Quote