• Please review our updated Terms and Rules here

Looking for alternative storage for a Bondwell 14

Ruud

Veteran Member
Joined
Nov 30, 2009
Messages
1,386
Location
Heerlen, NL
Hello,

I have a fine working Bondwell 14 with two FDDs. What other storage can be had for this machine? In contrary to a Commodore or PC this machine doesn't have an expansion slot which makes it easy IMHO to connect other hardware. The only thing that comes to my is the GIDE interface of Tilmann Reh. The next question would be: has it ever been used in a Bondwell 12/14? I could make the hardware but I have no idea how to tell CP/M that there is also an HDD attached and how to use it.

Any information, URL or other pointer is very welcome. Many thanks in advance!
 
In order to add a new disk device to CP/M, you'll need to modify the BIOS to handle the new hardware. So, you'll need the original source code, or get it disassembled. From what I read, the model 14 is CP/M 3, and I assume it is a banked version, so that's some more complexity. If you're not heavy into software, you may not want to take that on. I'm sure there is help available, I have done some CP/M 3 ports - but am not familiar with the Bonwell machines.

An alternative would be to run CP/NET, which is an add-on to CP/M so does not require modifying your system OS. You could use a spare serial port as the network connection, but a more ideal setup would use something like the various WizNET W5500-based modules out there. A couple designs, which would have to be adapted to the Bondwell, are https://github.com/markt4311/MT011 and http://koyado.com/Heathkit/H8_CP_NET_SPI_Wiznet_Network.html. I've been working on CP/NET lately, and a group of us are providing software here: https://github.com/durgadas311/cpnet-z80. CP/NET allows you to map unused drives (e.g. P:) to remote "drives". The remote system would be a PC that runs a server app and provides CP/M programs with access to certain subdirectories on your PC. This doubles as extra (nearly infinite) storage as well as "automatic" file transfer: any files you work on under CP/M are directly and immediately accessible on the PC (and the other way around).
 
Hallo Doug,

I simply hoped for a "ready-of-the-bench" solution. And having several other projects on my hands, something like disassembling the BIOS is out of the scope for the moment.

I have looked at the URLs and what could be used maybe is "ser-dri ins8250 DRI serial protocol over INS8250-like UART". That is, if it is what I think it is: a serial connection between the Bondwell and a PC. FYI, the Bondwell has a Z80-SIO on board. But the challenge would be: how to get the needed software on the Bondwell? I see it will not be as simple as I hoped.
 
We don't have a Z80-SIO module for CP/NET yet, but that is a popular serial device so it would be logical to make that. I would like to get more information on the Bondwell hardware, specifically we'd need to know how the Z80-SIO is attached: base port number, how A0/A1 are connected to C/D, A/B. And also, which (A or B) is the available port.

The server code we are using is JAVA based, and thus does not integrate with serial ports simply. This requires an external package RXTX to use. I know how to get that working on Linux, but I think Windows is still being worked. I'll check with Jay to see if he has that working yet.

There is at least one other "server" potentially available, written in C, that might be compatible but requires compiling under Windows.

Regarding getting the software on the Bondwell, that is the real issue I suspect. If you can't create diskettes easily, then you may need some sort of modem program to transfer files initially. Worst case, one can try and use PIP to receive some source code (or HEX files) and then build a program from that. I think kermit is available as a set of HEX files, so verification of the download is reasonably reliable when using PIP. You'll probably have to limit the baud rate as well, unless you have reliable handshaking setup.
 
Maybe this is usable:

https://github.com/erikp9000/cpm-ndos

Having built a Raspberry Pi BBS computer with (at the moment) 7 serial ports (USB) I am thinking of trying to get the server part on that system running and then this NDOS on some of my CP/M systems (Kaypro, Osborne, C128 )
 
Also, since in CP/NET, the hardware layer (NIOS) is abstracted from the software layer (NETWRKIF) similarly how the BIOS is abstracted from the BDOS, you can easily support any connection to a separate device. It wouldn't be particularly hard to implement the whole CP/NET server an a small microcontroller to, say, serve from an SD card.
 
Thank you for the link. But as said in my original post, I don't have the knowledge (yet).
 
Thank you for the link. But as said in my original post, I don't have the knowledge (yet).

You're mistaken. By "writing drivers for it" they basically mean "porting drivers for it".

The drivers are already written and, for something like this, likely 98+% identical across platforms, since they're all talking to the same hardware.

You need to be able to rebuild the BIOS and regen you the system for your machine, and layer this stuff inside of it.

What you don't have to do, is write it from scratch against a raw hardware interface.

On a good day, it's a cut and paste job and being able to fire up the assembler. It may be more involved, but hopefully the community will be helpful in getting you over the bumps.
 
You're mistaken. By "writing drivers for it" they basically mean "porting drivers for it".

The drivers are already written and, for something like this, likely 98+% identical across platforms, since they're all talking to the same hardware.

Not quite.

It gets complicated when you try to get the machine to boot from the IDE device. You have to plan the memory map out, then write a 2 stage boot loader. For example, on the Superbrain, at boot:

  • Stage 1: Boot ROM loads sector 0 on the IDE device to C780h and jumps to it.
  • Stage 2: Code loads entire OS (CCP, BDOS, BIOS) from sector 1 to memory at C800 (CBASE, start of CCP on the Superbrain), then jumps to the BIOS cold boot vector.

This is typical of CP/M cold boot techniques.

The problem is that while you may have the driver source, you will need to do a lot of reverse engineering of the existing machine's CP/M in order to understand where to load stuff at boot time. Undoubtedly you will need to reverse engineer the boot ROM and add the 1st stage loader to it, then burn a new ROM. This is quite time consuming and you may find there isn't enough space for floppy and IDE boot code. On the Superbrain, it asks you to choose between floppy and IDE boot at startup. You'll also need to write a PUTSYS program, to copy the boot code to the IDE device.

There is an alternative which I have implemented for the TRS80 Model II. Use MOVSYS.COM to open up a bit of space above the BIOS, then save that with SYSGEN. Then boot with that image and load the drivers into the new space, patching the BIOS vector table for the IDE device. Again, you have to understand what's going on in the BIOS (it is all in the CP/M Alteration Guide) and you need to write a loader program to do all this for you. But it is less complex than having the machine cold boot from IDE.

If you look on my yoooootuuuubez channel, you can see demos of all these systems, which show you their capabilities.

https://www.youtube.com/channel/UCdH2u50ocnjPxPmEOyNVLsg/videos

I even wrote a technical demonstration for the Superbrain, that loads the drivers below the CCP and allows you to have a look at what's on the IDE drive. The disadvantage of that, of course, is that whenever the machine warm boots it kills the drivers off, but as a proof of concept it works. The program only needs to know where CBASE (start of your CCP) is and the address of a 512 byte sector buffer (on the Superbrain the buffer already exists as the floppies use 512 byte sectors too). I'm actually wondering if I can make it fully automatic so it figures this stuff out for itself. Should be possible.. if the floppy sector buffer is 512 bytes...

Another thing you'll want to do if you plan on booting from IDE is reverse engineer and patch the system's configuration utility (assuming it has one; most do, to set such things as serial port baud rates/protocol, etc). These programs normally save the updated configuration data to a specific place on the floppy disk; you'll need to alter it so it writes to the corresponding location on the IDE device. This location will be somewhere in the BIOS code so it loads automatically at boot.

You can also add features if you want. For example, all of my CP/M 2.2 drivers feature a mapping table to enable you to associate an actual drive (actually, a partition) on the IDE device to a logical CP/M drive letter. This is useful if you have limited memory perhaps due to a large BIOS. Every IDE drive you access uses ~260 bytes of memory for a buffer (it's called the Allocation Vector or ALV and it keeps track of which parts of the drive are in use), so if you wanted all 16 CP/M drives accessible you'd need just over 4K of RAM (plus the driver code itself of course). However, with mapping you can have fewer simultaneously accessible drives, saving RAM, and switch them as needed. Also, as my drivers support a slave drive, you have 32 x 8MB partitions to choose from, assuming you have connected a slave. You can see these features in the demo vids.

So, lots to think about. It's definitely not as easy as a "cut & paste, then reassemble". However it's do-able and enjoyable, and you will learn an awful lot about how CP/M actually works, which gives you a great feeling of mastery over it.

Start here, at the CP/M Alteration Guide: http://www.gaby.de/cpm/manuals/archive/cpm22htm/ch6.htm
 
Last edited:
Back
Top