PDA

View Full Version : Unknown card on Osborne 1



giobbi
October 4th, 2014, 03:39 AM
Hi all,

I've recently got an Osborne 1 (should be the 2nd version or later) that came full of add-on cards including, I believe, the double density card (yes, the drive works with double density disks), an external monitor card with a plug for an RCA composite out, maybe a screenpac (the computer has 80 cols capabilities: I tried to type 80 chars from inside the M-basic and the screen shifts horizontally) and an unknown card.

That card has eight 27256 eprom (a lot of ROM for the time!) plus some chips that should be RAM (but I'm not sure because ...I can't remember what I've read on the chip label :-O )

The unknown card has the Z80 cpu on board and it's plugged on the cpu socket of another card (screen pac?), that is plugged into the cpu socket of the main board. I mean, there are three layers: the main board, another board (screen pac?) and, last one, this unknown board.

I'm wondering if it could be a RAM disk; the computer came with two labels telling the drives A: and B: were C: and B: ; but the computer works as expected, with A: and B: drives. Maybe the RAM disk must to be initialized by software?

I've added some shots (sorry, for some reason I can't put attachments directly here, I added some links to my site).

I don't want to put my hands inside the computer because it's working and my philosophy is "don't mess what's working fine!" :-) so the pictures were taken without to extract the cards.

http://www.verrua.org/osborne/01.jpg the unknown card
http://www.verrua.org/osborne/02.jpg the unknown card
http://www.verrua.org/osborne/03.jpg other cards
http://www.verrua.org/osborne/04.jpg other cards
http://www.verrua.org/osborne/05.jpg other cards


cheers,
Giovi

tezza
October 4th, 2014, 09:08 AM
...maybe a screenpac (the computer has 80 cols capabilities: I tried to type 80 chars from inside the M-basic and the screen shifts horizontally)...

I don't know what those cards are but the horizontal scrolling to 80 columns from the 56(?) seen on the screen is standard behaviour for as Osborne 1.

It's interesting that the EPROMS on that unknown card don't seem to have any stickers on the top? I guess someone decided it's dark enough in the case not to warrant it?

Tez

giobbi
October 4th, 2014, 01:27 PM
I don't know what those cards are but the horizontal scrolling to 80 columns from the 56(?) seen on the screen is standard behaviour for as Osborne 1.
I didn't know that. However I connected an external monitor to the RCA plug and it doesn't change, I can see 52 columns, like in the embedded crt screen.


It's interesting that the EPROMS on that unknown card don't seem to have any stickers on the top? I guess someone decided it's dark enough in the case not to warrant it?

Tez

yes, strange; but I also found strange the amount of the total ROM size on that card:2048 Kbit for a 1981-1983 computer; a lot of space! Maybe some embedded firmware you can invoke using some low level call? Or a RAM drive... or both...

I know absolutely nothing about CP/M and Osborne, I was 13 when it was released and I heard about computers for the first time when somebody convinced me to buy a C= VIC-20 some years later...

Giovi

tezza
October 4th, 2014, 02:48 PM
I didn't know that. However I connected an external monitor to the RCA plug and it doesn't change, I can see 52 columns, like in the embedded crt screen.

Yes, mine has RCA connector for a composite B/W monitor and that's exactly how it behaves too. I'm not sure if there is a card in there behind it like yours. Maybe it needs extra software or hardware to change the resolution for the external screen and so give 80 columns? I don't know.

Tez

JDallas
October 4th, 2014, 04:04 PM
...I connected an external monitor to the RCA plug and it doesn't change, I can see 52 columns, like in the embedded crt screen...
The display circuit will only display those 52 columns; its in the circuit hardware. The horizontal scrolling is changed at the keyboard, and the processor responds by changing the starting position on a PIA 8 bit port for the pixel counter read (then incremented) from memory. With that starting address, it displays 52 columns of characters from that point on... no way to get 80 columns unless you replace the display circuitry.

In the same way below I discuss that its likely a RomDisk board used to avoid the slow disk drives and avoid wearing them out, it follows that the previous owner would prefer to save wear and tear on the original CRT display too, so he probably hacked a new cable out the back so he could see it on a larger, be expendable display. Just an external cable, I don't see signs of a replacement display circuit.


...found strange the amount of the total ROM size on that card:2048 Kbit for a 1981-1983 computer...
Because you said the Eproms were 27256s, this is a much more modern board than the Osborne. Therefore the need of it as an add-on would be to speed it up with a RomDisk board so the owner wouldn't have the delays, and wear & tear of using the floppy disks drives.

I don't see where the Eprom board cable or connects into the Osborne; perhaps via an Eprom socket as you could get most of the data/address and control signals there. Power would likely tap somewhere else to more current. If an Eprom is sacrificed, that's not a probably as that function would likely be in part of the Eproms on the RomDisk board.

The question is... how smoothly did he integrate that into the system. Perhaps he hacked an Osborne Eprom to boot off the board as a virtual drive. The board's Eproms probably contain CP/M, WordStar and other things he commonly had on the floppy disks.

I see that Image 01 appears to have a BLUE toggle switch along the front of the board, mounted on the bottom side and pointing downward. That probably toggles it on. I don't see from the photos how the RomDisk board is interfaced to the Osborne board.

It would be cool to know more about this board.

Looking at image 01: The first row of smaller socketed chips is probably a DRAM expansion. I agree it may include extra ram memory.

Another image shows that the board with the Dram and Eprom only goes about halfway across underneath the CRT cavity. The boards on the right side of the CRT look to be older original stuff to me... but an Osborne owner can tell you that. I only know the schematics of an Osborne one having diagnosed a CRT scroll problem.

giobbi
October 5th, 2014, 01:14 PM
I removed the front bezel and now I have some more info about that card.

The small chips are 41256 DRAM; it means 256 kilobytes on the board, probably (?) used as RAM disk. I've already heard about 256 kB and 384 kB RAM disk for the Osborne 1 computer.

The card is plugged into the Z80 socket of the Screen-Pac add-on card. The Screen-Pac is an hi-res card sold by Osborne that allowed 52 or 80 or 104 columns resolution on external monitor. The Screen-Pac is plugged into the z80 socket and the char generator rom socket on the main board.

The Z80 processor actually is soldered over the unknown board (directly soldered: there was no space left to put a socket).

I don't know how this ROM and RAM disk should work. Maybe you need to run some utilities from floppy (like the screen pac); in this case I can forget to use it, because I think it will be quite hard to find an IMD image disk for it...

The blue switch, that can be toggled directly through the ieee488 port using a small screwdriver, seems not to have any effect. Boooh?

Giovi

JDallas
October 5th, 2014, 02:50 PM
...The Screen-Pac...allowed 52 or 80 or 104 columns resolution...external...
That's nice. I remember them adding and external monitor on later models. Best to find out how to toggle that into 80 column mode first. It always helps to be able to read the characters. :)

giobbi
October 5th, 2014, 03:39 PM
That's nice. I remember them adding and external monitor on later models. Best to find out how to toggle that into 80 column mode first. It always helps to be able to read the characters. :)

you need the screen pac utilities disk. I'm tyring to find a disk image of it...

tezza
October 5th, 2014, 03:54 PM
you need the screen pac utilities disk. I'm tyring to find a disk image of it...

Having the same mod, I would also be interested in such an image.

Tez

giobbi
October 6th, 2014, 02:41 AM
I bet you'll find it on the RomDisk.

Maybe then you should make the RomDisk top priority instead.

After all, why have a RomDisk for all the stuff you need to go diskless, but require a floppy to set up the external monitor? And the RomDisk copy won't have magnetic media degradation; its better than an image file.

Yes, it's quite probable.... but how to call programs on the ROM disk? This is driving me crazy! :-)

giobbi
October 6th, 2014, 02:52 AM
Having the same mod, I would also be interested in such an image.

Tez

admitting you can make disks from SD images, maybe you would take a look to this page and try the utilities for 80 cols mod...

http://www.retroarchive.org/maslin/disks/osborne/index.html

please let me know if it works!

--Giovi

giobbi
October 6th, 2014, 04:01 AM
I realize that RomDisk board is packed in tightly, but if you could spot the name of the board on the printed circuit board, it might be easier to find some information about it.

If the RomDisk board is plugged into the Z80 socket as described, it might have its own new EProm mapped to the address of an original EProm on the Osborne board. You might notice an empty EProm socket on the Osborne board. If so, the RomDisk Eproms would contain a modified version of that missing EProm with built-in commands to access the RomDisk.

If nothing else, and after everything else has been tried, getting a hex-dump on each of the RomDisk EProms might be a way to figure out how to activate it. That's probably not an easy thing to do as hardware to read the EProms into a file may not be available.

The hardest part is to find some time (and heart!) to open it again, extract the board and get some more info. I have an eprom programmer, so -admitting the eprom brand is supported- I can dump the eprom to an hex file.

About the eprom replacement for the original romset: usually there's no need to remove the original romset from socket(s). I have a similar card for 6502-based Commodore computers and you can decide to replace (or not) the original romset by switches config, without the need to remove the rom chips.

giobbi
October 6th, 2014, 05:46 AM
That's good to know. If all else fails, we can disassemble the hex files to figure it out. I'll be glad to help out if that's the only remaining solution.

Don't be too glad, I can be a pest when something intrigues me and a plague, if encouraged ;-)

however here you have the dump (both hex (intel) and bin format) of the eight eprom, and some pictures of the card in low resolution. I can provide full res images if you need (about 2 Mb each).

http://www.verrua.org/osborne/dump.zip

As supposed, the eprom seems to contain some software (like wordstar, etc.). Maybe some software is in Dutch (the computer came from Netherlands).

cheers,
Giovi

codeman
October 6th, 2014, 06:41 AM
Took a look at the bin files seems to be a romdrive with wordstar on it .
ken

JDallas
October 6th, 2014, 07:16 AM
The board is called, "ROMBO" A file named -rombo is in one of the directories below and a patch mentioned "ROMBO" in a context suggesting the board. I searched online for "ROMBO Osborne" and found it.


THE COMPANY:
The Rombo was manufactured circa 1986 by:
Worswick Industries, Inc., (619) 571-5400
4898 Ronson Ct., Suite H, San Diego, CA 92111


ARTICLES:
http://susowa.homeftp.net/index.php/magazines-mainmenu/cfogs-pip-mainmenu-146/151-december-1986-volume-5-no-2-whole-no-50.html?start=3
Author in Brazil:
http://susowa.homeftp.net/index.php/magazines-mainmenu/cfogs-pip-mainmenu-146/168-october-1988-volume-7-no-5-whole-no-67.html?start=14
At the bottom of the page:
http://susowa.homeftp.net/index.php/magazines-mainmenu/cfogs-pip-mainmenu-146/151-december-1986-volume-5-no-2-whole-no-50.html?showall=1


BOARD FEATURES:
The Rombo has a total of 256KBytes of Eprom, 32KBytes in each of the eight. You also have 256KBytes of Dram too though I don't know how that is being used yet. The board has no silkscreen or identification at all and its a hand taped circuit board layout.


RAW DIRECTORY:
The block below has all the relevant information from the directory, fused together from 3 Eproms.
Note the upper nibble of CN (Cluster Number) has the block record count for the entry.
CN=00 denotes an empty file, like the -ROMBO entry.
Otherwise CN=0x:7x signifies 1 through 8 block entrys follow
CN=80 signifies 8 block entries follow and continue into the next directory entry, showing the same filename.


FILENAME CN 00 01 02 03 04 05 06 07
------------ -- -- -- -- -- -- -- -- --
COMPARE.COM 0A 02
GETKEY5.COM 16 03 04
SYSGEN.COM 0C 05
WASH.COM 41 06 07 08 09 10
WC.COM 0A 11
WS.COM 35 12 13 14 15
WS.OVR 80 16 17 18 19 20 21 22 23
WS.OVR 80 24 25 26 27 28 29 30 31
WS.OVR 80 32 33 34 35 36 37 38 39
WS.OVR 1D 40 41
WSHELP.OVR 80 42 43 44 45 46 47 48 49
WSHELP.OVR 4A 50 51 52 53 54
WSINDEX.XCL 0C 55
WSMSGS.OVR 69 56 57 58 59 60 61 62
XDIR.COM 12 63 64
COPY.COM 22 65 66 67
NSWP207.COM 5C 68 69 70 71 72 73
POWER.COM 74 74 75 76 77 78 79 80 81
RPIP.COM 3A 82 83 84 85
FIND.COM 06 86
-ROMBO.INH 00
#DD21-4.92 00
SETUP.COM 2C 87 88 89
One concern is that I don't see what I would be expect to be several ROMBO utilities in the directory. That might mean that you'll need a disk image of them to get full function.


THE ROMBO CLUSTER ADDRESSING MAP:
The ROMBO directory uses a 2K clusters which traverses the same set of 256 byte sectors through the 8 Eproms in the order mentioned elsewhere. (256 byte sectors in each of the 8 Eproms = a 2KByte Cluster)

I will just use the internal addresses in each Eprom as we don't yet know the addresses of the Eprom.
Thus sector 1 of Cluster 02H would be in Eprom8 , continuing to sector 2 in Eprom4 from address 0100-01FF... thorugh each ordered Eprom in turn until Eprom1. That completes a 2K sized cluster.

:-------------------------------------------------------------------------------:
:Cluster 01H: Reserved for directory entries: 2048 bytes, 768-32 bytes used :
: Sector1 : Sector2 : Sector3 : Sector4 : Sector5 : Sector6 : Sector7 : Sector8 :
: Eprom8 : Eprom4 : Eprom7 : Eprom3 : Eprom6 : Eprom2 : Eprom5 : Eprom1 :
:0000-00FF:0000-00FF:0000-00FF:0000-00FF:0000-00FF:0000-00FF:0000-00FF:0000-00FF:
:-------------------------------------------------------------------------------:
:Cluster 02H: The file COMPARE.COM :
: Sector1 : Sector2 : Sector3 : Sector4 : Sector5 : Sector6 : Sector7 : Sector8 :
: Eprom8 : Eprom4 : Eprom7 : Eprom3 : Eprom6 : Eprom2 : Eprom5 : Eprom1 :
:0100-01FF:0100-01FF:0100-01FF:0100-01FF:0100-01FF:0100-01FF:0100-01FF:0100-01FF:
:-------------------------------------------------------------------------------:
:Cluster 03H and 04H: The file GETKEY5.COM :
: Eprom8 : Eprom4 : Eprom7 : Eprom3 : Eprom6 : Eprom2 : Eprom5 : Eprom1 :
:0200-02FF:0200-02FF:0200-02FF:0200-02FF:0200-02FF:0200-02FF:0200-02FF:0200-02FF:
:0300-03FF:0300-03FF:0300-03FF:0300-03FF:0300-03FF:0300-03FF:0300-03FF:0300-03FF:
:-------------------------------------------------------------------------------:
The last directory used Cluster:
:-------------------------------------------------------------------------------:
:Cluster 59H: The last directory cluster taken. :
: Eprom8 : Eprom4 : Eprom7 : Eprom3 : Eprom6 : Eprom2 : Eprom5 : Eprom1 :
:5800-58FF:5800-58FF:5800-58FF:5800-58FF:5800-58FF:5800-58FF:5800-58FF:5800-58FF:
:-------------------------------------------------------------------------------:
The next unused cluster begins at Eprom8 addresses 5800-58FF as the first sector.
However CP/M is apparently loaded in the highest 3 clusters starting at
Cluster 7EH, through Cluster 80H.
This makes 36 clusters still available or 36x2K=36,864 bytes


EPROM FILE STRUCTURE:
Looking at the file structure on the Eproms, it appears that the Eprom address mapping goes in this sequence using your Eprom numbers: {8,4,7,3,6,2,5,1}.

THE SCHEMATIC?:
If no one locates a schematic by next weekend, I'll generate one using the photograph of the board traces. Some ambiguity will likely require an ohm meter to confirm some obstructed traces.

giobbi
October 6th, 2014, 10:05 AM
Wow, what a huge amount of work done!!!!

Thank you very much! I'm going to read the articles and understanding what you post here. I had a quick glimpse and it seems a boot disk is needed. Gosh. I hope there's a way to use it without it, or at least to find it (in DD disk!)

If you can pass me your email address in PM, I can send you the hi-res pictures about the card, so your task about reproducing the schematic by pictures will be easier. Then, feel free to ask me what you need to know about the card.

For now, thank you for you help!

EDIT -------------------------
I read about the brazilian guy that wrote from Itu, about 50 km far from here. But the only one I've found on the internet with the same name in Brazil passed away yet.

The article talks about a specific cp/m boot disk and the fact you will have three disk: the A: unit (rombo card) and the B: and C: units. It makes sense, my Osborne came with two labels "B" and "C" over the drives.

I'm going to open a new thread about the ROMBO card, maybe somebody will recognize the name....

giobbi
October 6th, 2014, 11:14 AM
This pattern coupled with the disks with directory tables, suggests that the address mapping of the circuitry goes in this sequence using your numbers: {8->4->7->3->6->2->5->1} I'll re-order the directories above accordingly.

BTW: there were no numbers on the board nor on the eproms, so I numbered the eproms before to remove them. Don't trust the sequence; but you can use the filename (01.bin, 02.bin, etc.) to identify each eprom in the pictures I sent you.

tezza
October 6th, 2014, 11:57 AM
admitting you can make disks from SD images, maybe you would take a look to this page and try the utilities for 80 cols mod...

http://www.retroarchive.org/maslin/disks/osborne/index.html

please let me know if it works!

Hmmm. I might give that a go. It won't be for a few days though as I've got something on at the moment. If I find anything I'll let you know.

Tez

JDallas
October 6th, 2014, 12:08 PM
Seeing a Rombo-Osborne-1 in 1986
I'm fairly certain I saw one of these in 1986 while working at the commercial division of E-System, spun off as ElectroCom Automation. We used a few Kaypros in the mobile data terminal lab to monitor local police and fire packet-radio systems we had sold.

I think it was the VP Engr that brought a Osborne-1 in and asked us what we thought of it. We looked it over carefully and generally agreed that the tiny CRT was a mistake and the IEEE-488 interface should have been an option. We liked the BOLD and UNDERLINE feature and the yellow CRT color, though we weren't sure that color wouldn't drive us crazy after awhile. I liked that they kept the keyboard simple with no electronics in the detached keyboard assembly. I didn't like the keyboard interface for the scrolling... it was a clever bit of circuitry but the end result was a problem.

My recollection is that a technician was installing the Rombo for him. After our jokes about the product name and the lawsuits it invited, we dug out our Eprom data books to make sure it was using the best Eprom capacity for that day. The Rombo seemed like a good idea but we all thought more Eprom memory was needed.

Ironically I had that manual in my hands in 1986.

giobbi
October 6th, 2014, 01:25 PM
I saw that from your photos. I figured you numbered them left to right and that the access order in the circuit does a column at a time. To maintain your Eprom numbering for convenience, I renamed the files to have a sequence number before the position number so that they sort in the right order for looking for sectors.

Sequence "S01" is actually Sector 01 too, as long as the sector counting is bound by the sector numbers of a cluster... 1 through 8.

An example of the ROM listing file I'm sending you is:



I'm wondering if a copy of the rombo disk is stored into the eproms, and if there's a way to extract it and to make a bootable floppy from it?




Seeing a Rombo-Osborne-1 in 1986
I'm fairly certain I saw one of these in 1986 while working at the commercial division of E-System, spun off as ElectroCom Automation. We used a few Kaypros in the mobile data terminal lab to monitor local police and fire packet-radio systems we had sold.

Someone brought a Osborne-1 in and we engineers looked it over carefully. We all thought the tiny CRT was a mistake but liked the BOLD and UNDERLINE feature and the yellow CRT color. I liked that the kept the keyboard simple with no electronics in the detached keyboard section, unlike the Kaypro. While we used IEEE-488 we thought that was a mistake to make it standard; probably intended to get a laboratory market.

My recollection was that one of the VPs brought it in so a technician could install his RomDisk for him. That seemed like a good idea but we all thought more Rom memory was needed.

Nice story :-) I love to listen this kind of retro-computing 1908s tales, they remind me when I was young and computers still had the taste of unknown and pioneering... ^_^

I remember I saw an Osborne in the late '80s with a amber CRT. Unfortunately mine has a B/W tube. I love amber CRTs...

JDallas
October 6th, 2014, 02:12 PM
...I'm wondering if a copy of the rombo disk is stored into the eproms, and if there's a way to extract it and to make a bootable floppy from it?...
It would have been smart for the previous owner to have saved those files, but I don't see them on the RomDisk.

CP/M with Rombo BIOS?
The last 3 clusters in the Rombo have a version of CP/M installed. It may the the copy of CP/M that has been modified to support the Rombo. Its loaded starting at address 7D00 of Eprom8.

I'll try to confirm Rombo stuff in its BIOS and BDOS tables, then figure out how the Rombo forces the Z80 to boot from it?

giobbi
October 6th, 2014, 02:53 PM
The last 3 clusters in the RomDisk have a version of CP/M installed (or so it appears. It may the the copy of CP/M that has been modified to support the RomDisk. Its loaded starting at address 7D00 of Eprom8.

This is a good new, I believe, expecially if it is a fully image of the original disk.



The key is, how does the Rombo force the Z80 to boot from it?


I don't believe it can boot from ROM disk. But, since the ROM disk becomes the A: drive, it host a CP/M system copy so, when the computer look for some system file, it will be found into the A: drive as usual (the ROM disk, in this case).
Maybe we can use this system set to make a bootable floppy? Unfortunately I don't know much about how to do that...



Can you describe what happens when you turn on the Osborne-1? If you get an A:> prompt have you tried entering WS or WS.COM?


After the boot phase from floppy drive A:, I get an A> prompt, but if I type WS or WS.COM it only returns an error (WS?).

JDallas
October 6th, 2014, 03:11 PM
...I don't believe it can boot from ROM disk...
There appears to be a version of CP/M in the Rombo Eproms. Its not attached to the directory which suggests its extracted in direct memory transfer into Z80 memory.

It may be that a Rombo CP/M cold boot disk was in the floppy. The articles you referenced also stated that you could boot up and be in Wordstar in 11 seconds.

I'll write a file ripping program in a few days to assemble each file from the various Eproms per the Rombo directory. You could then take those binary files and port them to a Osborne floppy by some process.

giobbi
October 6th, 2014, 04:06 PM
forget the e-mail, get the images here:

www.verrua.org/osborne/rombo1.jpg (http://www.verrua.org/osborne/rombo1.jpg)
www.verrua.org/osborne/rombo2.jpg (http://www.verrua.org/osborne/rombo2.jpg)

I have to run now, but I will read your latest post later, with some more time...

-- Giovi

EDIT ----
Reading better the pages at the site you passed me, I discovered that little switch is for Read Only / Read-Write Eproms. In fact you can program the eprom directly from the Osborne 1 + Rombo card and its dedicated software. They sold an eprom eraser for extra 35$ too. So the switch shouldn't make difference if you are just reading the eprom content.

giobbi
October 7th, 2014, 12:10 PM
There appears to be a version of CP/M in the Rombo Eproms. Its not attached to the directory which suggests its extracted in direct memory transfer into Z80 memory.

From one of the articles you quoted:

The first thing you do after installing the circuitry is to create a boot-up disk with a special 58K version of CP/M and with installation programs and so on on it. You put this disk in Drive A as usual and boot up on it. You now have three "drives" available [...] and the option of having warm boots to the ROM or not.".

hmmm, create a floppy, but how?
About warm boots to the rom: if you can warm boot, it maybe means the full cp/m modified version is on the eprom and we (I mean: you! ^_^ ) only need to discover how to pass it on a bootable floppy (DD please, my ibm xt doesn't write SD floppies! :-) )

--Giovi

JDallas
October 7th, 2014, 01:28 PM
...create a boot-up disk with a special 58K version of CP/M...
The CP/M hidden in the Rombo is three clusters long, or 6KBytes. 64KB - 6KB - 58KB.

That makes me think it is the Rombo version of the Osborne system. The floppy that came with the Rombo creates that, but once you have it, the floppy might be moot (unless its required to load more files).

giobbi
October 7th, 2014, 04:23 PM
wow, it seems to be quite a huge amount of work with Corel Draw!
Let me see if I can help you in some way with your reverse engineering...

I'm wondering too if it's possible to take an .IMD or ID0 disk image and simply replace the modified hex parts (admitting the system files size is the same) in order to have a bootable image to "burn" onto a floppy...

JDallas
October 8th, 2014, 04:54 AM
I checked one of my other vintage computer sources and some search hits about Rombo.
Unfortunately they were all about Eprom products for Sinclairs and other UK computers.


In reviewing some of the search engine hits I discovered:
(1) "Rombo Productions" is mentioned as making similar boards or external boxes for other computers, specifically the Spectrum. Descriptions are similar with the 8 Eproms being the tie; just different interfaces for other systems
(2) A little information on some of Rombo Productions products:
http://compgroups.net/comp.sys.sinclair/strange-rom-box/1226410

About 31 search hits and most were just vectors to the same set of messages. (2) above was the only useful thread. It appears that Rombo made RAM axpansions and Video Digitizers too.


Internet Searches for Rombo Productions:
The messages I read suggested Rombo focus on computers in the UK so it became no surprise that the company was there. The previous comapny in California may have been an US distributor or perhaps bought the rights to that design.
(1) Rombo Productions still exists at the following address; listed as dealer in computers:
. . ROMBO PRODUCTIONS LTD.
. . 2 Murieston Grove, Livingston. West Lothian. EH54 9AY
. . Service provided by Hawley Associates (UK) Ltd.Customer service 0330 122 4063.
. . Company Description
. . Incorporated as dealers in computers.
(2) A useful URL showing their video digitizer products for Ataris but lists the names of the three key employees. Might search for some of these:
. . Hardware: Colin Faulkner
. . Software: Marcus Sharp
. . Software: Richard Siddons
. . UPDATE: Found Hardware guy Colin Faulkner
. . . . http://www.companydirectorcheck.com/colin-raymond-faulkner
. . . . http://www.companydirectorcheck.com/colin-raymond-faulkner-2
. . . . That shows his work record through 2011.
. . . . Born in 1954 odds are he's still around.
. . . . Find him and he might be able to help you with Rombo documentation or software.
. . . . Check UK based computer clubs and scan to see if he's posted message in comp.sys areas
(3) A link to one of their other products, a Rom board for another type of computer. I looked at the PDF manual and nothing is applicable to the Osborne version.
. . http://www.cpcwiki.eu/index.php/Rombo_Rombox
(4) Worswick Industries still exists. No Rombo information though:
. . OddCables.com is sponsored by Worswick Industries (A Division of RF Industries)
. . We stock hundreds cables...

giobbi
October 8th, 2014, 04:54 AM
I received an interesting e-mail from John Crane I wish to quote here. John is an Osborne owner who's giving some ideas about the Rombo board, based on his past experiences:


"A very nice addition for the Osborne. I have the Drive C and the Trantor hard drive for the Osborne, but I think this would be even faster! Incredible.

About getting it running. It's not necessary to have a floppy with a modified CPM. You only need to run a specific program that then implements the patches in CPM when it runs. That way, you don't need to have modified CPM disks; the little routine does it for you when you need it.

Also, I don't think you will find that code in the EPROMS. Because you need a program to access the EPROMS. The code to do that doesn't require a change to CPM (whereas the ramdisk does). This code simply copies data from EPROM to RAM, likely using I/O ports to access different higher order bits necessary to get to the EPROMs data, but nonstandard on a Z80. I know, I did something similar on an IMSAI 8080 a few years ago - I designed an S-100 card with a 512K flash ram chip accessed from some 8080 assembler code I wrote. A very similar scheme."

--Giovi

giobbi
October 8th, 2014, 09:55 AM
I will try to find a minute in the evening to extract the card and take better pictures of it.

Giovi

JDallas
October 8th, 2014, 10:35 AM
Rombo CP/M file in high memory:
For some reason the CP/M file in the high Eprom memory space was written differently than the other directory clusters. Its already clear that the CP/M flie block is not attached to the CP/M directory in the Eproms.

Unlike everything else stored therein, the CP/M file is written in 128 byte blocks across the 8 Eproms instead of 256 byte blocks elsewhere. This suggests it is accessed by a different program - maybe its a boot loader?.

I generated the hex-text dump for 128 byte blocks and it aligned properly. This CP/M file is a mystery still. I've mapped the range of its jump destinations so I just need to match that up with the right function.

giobbi
October 8th, 2014, 01:45 PM
I've read it. But I think you maybe would leave it, other people can get ispired by you technique in case they'll need to follow the same path for other cards.
Your way to proceed is quite interesting, I think.

giobbi
October 10th, 2014, 02:38 PM
Watching a clip on youtube, I just discovered my Osborne has a strange behavior: it took about 80 secs. to pass from the boot screen ("press ENTER... drive A:...") to the next splash screen, with the big "O" logo.

I'm not sure if it has to do with the rombo board or it's a compatibility issue, due to the fact I did the cp/m boot floppies using my IBM XT and the .IMD / .ID0 disk images I downloaded from the web.

giobbi
October 11th, 2014, 10:01 AM
wow!!!

Are you doing that because you want to build a rombo board by yourself, or is it just a kind of reverse engineering needed to understand how to make the board to work?
And are you sure in the end you will be able to make the piece of software needed to call the board?

My question could seem (and could be!) silly, but please keep in mind I understand almost nothing about hardware and low-level programming.

However, good work, indeed! I can't wait to see the final result!

cheers,
Giovi

JDallas
October 11th, 2014, 12:06 PM
I'm curious to see how the Rombo was designed and how they tied it to the operating system; not that I expect that to be useful information, its just a puzzle I'm working on.

HARDWARE: I don't need 100% of the schematic captured to realize how it works. Usually there is a point when enough of the circuit capture is done where all secrets disappear in so far as the schematic... i.e. you could document the way the design works without bothering to get all the pin numbers actually used.

SOFTWARE: I don't believe that would be a good use of time writing new software to make the Rombo work because its likely that someone has the Rombo software package, so that should be pursued. However it might only take a simple driver/table modification to make the Rombo function in its RomDisk / RamDisk capacity. Time will tell, from the schematic capture.

giobbi
October 12th, 2014, 04:43 AM
I'm curious to see how the Rombo was designed and how they tied it to the operating system; not that I expect that to be useful information, its just a puzzle I'm working on. I don't need 100% of the schematic captured to realize how it works.

I don't believe that would be a good use of time writing new software to make the Rombo work because its likely that someone has the Rombo software package, so that should be pursued.

I really wish to find somebody with the rombo software, I'm curious to see it works. Actually it's quite a waste of vintage, working but useless hardware, due to lack of proper software :-(

Since I didn't find any further reference to this card, I believe it have been sold a few copies of it (in 1986 most people already passed to PC clone or Amiga or Apple), so will be hard to find somebody who still own it and its (working) floppies in present day...

giobbi
October 13th, 2014, 12:47 PM
I already removed the rombo card from the Osborne to see if in some way it was intefering during the boot phase, causing the boot delay (it wasn't), so it will be absolutely easy for me to do every check you need. But, since I had to remove the soldered Z80 from the card, I can't put it into the Osborne again easily (unfortunately I can't simply solder a socket, because there's no space left for the socket + Z80: too thick to fit under the CRT assy).

My multimeter isn't a tech marvel, but it works enough to check continuity between two pins. No problem for that. I also have a logic probe and an usb scope, but since I removed the card...

My time zone is UTC -3 hr (Brasilia time). But we have to consider the summer time, here.

IRC channel... mhh, could it be the usual Facebook?

The weekend could be not a good moment, but for me it's ok almost every night of the week, Monday to Thursday.

If you want to simply pass me a list with the pin-to-pin check I can check it "off-line".

giobbi
October 13th, 2014, 06:14 PM
I see no problem, but you must to pass me a picture with the IC numbers... I mean: I suppose you numbered every IC, since there's nothing written on the board.

I spent a lot of time testing continuity when I fixed my Commodore 3032 (I think I checked every single trace on the board!) so nothing scares me now! ^_^

Just pass me the ICs number scheme and the traces you want to check.

--Giovi

giobbi
October 14th, 2014, 07:09 AM
ok, I will wait for your PM.

A question: do you think there's a way to make my rombo card to work?

JDallas
October 14th, 2014, 11:00 AM
...do you think there's a way to make my rombo card to work?...
Yes.

The circuit will reveal what needs to be done in a firmware driver so that you can access the Eprom files.

I'll probably create a simple bit of code you can enter via DDT to do some test reads.

I can write some code for ASM that you can paste and compile into that.

giobbi
October 14th, 2014, 11:32 AM
Tomorrow I'll create a project page hidden on that website and give it a simple blog page for communications.

ok


Yes. The circuit will reveal what needs to be done in a firmware driver so that you can access the Eprom files. I'll probably create a simple bit of code you can enter via DDT to do some test reads. If your osborne/image disk has an assembler, I can write some code that you can paste and compile into that. Let me know if you have the CP/M files yet for doing that; I saw that you were already working the image disk problem.

Ok I have some bootable floppies and there should be the assembler compiler too (ASM.COM). I'm not sure about how it works (never worked with asm), but having the asm source code, I think I will probably make it to work.

I can also transfer files from DOS to CP/M disk, so i see no problem on this side.


UPDATE: I see I forgot to fix the Eprom pinout... I copied a 20 pinner from the powerpoint and modified it into a 28pin profile but forgot to change the corner pin numbers. I noticed that on the solder side and fixed there. I'll swap the corrected image later.

ok, waiting for the fixed image.

cheers,

Giovi

JDallas
October 18th, 2014, 11:29 AM
Maybe 80% done. The big stuff is in the schematic, now its pathing out the logic gate traces hidden under the components.

giobbi
October 18th, 2014, 11:50 AM
wow!

can't wait to see this thing working :-)

JDallas
October 18th, 2014, 12:16 PM
If a design like the Rombo was done today it would be a much smaller board.

You could use Cypress' non-volatile bytewide static ram... when it detect power down it sweeps memory to flash backup. That would give the RamDisk (currently DRams) the advantage of surviving power interruptions or forgetting to sweep files to floppy for storage. All that DRam support circuitry would be gone.

Instead of using EProms you could use the same stuff that memory sticks use... Nand Flash Roms with 1GByte of storage per chip and cheap considering the amount of storage.

Any other ideas?

giobbi
October 18th, 2014, 01:09 PM
Any other ideas?

A coffee maker? ^_^

Yes, indeed things are easier and more versatile today...

JDallas
October 23rd, 2014, 07:18 AM
The schematics are complete enough to reveal most/all of the way the Rombo operates. This is educated speculation based upon the circuitry of the accumulated schematic we have so far.


How the Rombo Memory Is Addressed As A Virtual Disk:
The Rombo's 512K bytes of combined EProm and DRam are addressed as individual 128 byte blocks. As its a RomDisk and RamDisk, I'll call them sectors. There are 4K sectors of 128 bytes each.

Twelve bits of high address, A07-A18, are latched onto the board from the Z80 data bus to hold the upper part of the address for Rombo memory. You can consider these twelve bits to hold one sector, number among the 4K it can address.

Only address signal A0-A6 are used dynamically during Rombo sector access cycles to provide the address of target bytes in a sector, the rest of the Rombo memory addresses, A07-A18, are stored in latches, effectively being the sector number.

A18=Low: selects the EProm, A18=High: selects the DRam. Each are a 256K byte space.


How a CP/M Driver Accesses Rombo Sectors:
To read a sector from the Rombo, you write to port X to load A15-A18, write to port Y to load A07-A14, conceptually the sector address. Sector data is read apparently from at least a 128 byte block, too early to determine if that is memory mapped of 128 consecutive I/O port addresses used.

To access the next sector you increment the virtual sector number and update port X and Y as appropriate then read or write the newly mapped 128 bytes of sector to transfer to/from Osborne memory.

U10 appears to handle the board addressing response with nearby logic gates. A15-A18 latch into U4 and A07-A14 latch into U18. U3 does the EProm chip select based upon the high address. U1 generates WAIT states.


EProm Design Strangeness:
U2, a 74LS138, is used to generate a *unique* READ signal among the 8 Eproms... this seems completely unnecessary, and I recall us wondering about that back in 1986 as we examined the EProm specs looking for a justifying reason. Given only a couple of hours in 1986 to assess the Rombo, we could only attribute aspect to ambiguity in the Hitachi EProm spec. We called Hitachi and the ambiguity didn't justify the unique read handling among the EProms.

Decades later and with more time to analyze the design, I'm considering if it offers some advantage by allowing an EProm write cycle to continue while you read from other EProms. I don't think this is happening from what we have of the WAIT state generator.

Often advantages like these may be designed into the hardware, but not later supported by the firmware due to adding driver bulk. In other words, the board may be able to do it, but the drivers that came with it, didn't bother to use it. And there is always a rush to finish firmware to allow shipping product.


Advantage By Writing Across EProm Instead of Filling Them First:
I think the use of writing contiguous sectors across the Eproms might be justified as a Speed-Burn feature. I'll wait for more schematic capture before assessing that further.



Refreshing the 256K Byte DRams:
The 256Kx1 bit DRam loads the address A00-A17 via Ras/Cas muxing using U34,U35 and U36.

DRam refresh requires a Z80 Refresh register *extension* via U38. As the Z80 only increments A00-A06 during refresh cycles, U38 provides a refresh-only A07' and A08' so that all of DRAM is properly refreshed. There is some logic glue yet to be captured that will select between the A07 and A08 of the sector number for normal memory access and but during refresh cycles it uses A07' and A08' from the U38 counter for DRam Refresh cycles. It appears to increment the count on every REFRESH cycle of the Z80 so the sequence is non-linear but covers 100% of the row refresh per sequence; no need not to do it this easy way.


Conclusions:
Sounds harder only due to the jargon. When we get the rest of the schematic capture it should be easy to write firmware to access and even program the EProms on the board.

JDallas
November 4th, 2014, 07:45 AM
Rombo schematic capture into PADs is almost complete; vacation pause then nailing down the last of the logic gates.
I'll be writing a description of the Rombo's operation soon and then writing some test/validation software to see that it works as expected.
After that, just writing drivers to tie it into the Osborne-1 CP/M 2.2.

JDallas
November 29th, 2014, 09:02 AM
We now have enough of the schematics captured to write a theory of operation and to write drivers.

The Rombo Rom/RamDisk operates in Bank1 where boot rom, keyboard, floppy controller, and common Dram operate. The normal 64KByte Dram is in Bank0 with a block in high memory shared between Bank0 and Bank1; i.e. the common ram.

The Osborne-1 switches between Bank0 and Bank1 using a simple "OUT (0),A" and "OUT (1),A" instruction to affect the Osborne hardware. It doesn't use the contents of register A so it never initializes it.

However, the Rombo does latch the contents of A into is own circuit to load the high order addresses atop its 128 byte sector data block. For the capacity of 512KBytes it uses A18-A00 to select its own memory of 256KB Dram and 256KB EProm. Bank1 is memory mapped so I/O instructions are not used except to flip Banks.

A06-A00 during a memory access to Bank1:20xx or Bank1:30xx will address 128 bytes of memory accessible data from the Rombo memory chips. The additional address blocks are just mirrors so the code can use 2000-207F as its block.

That higher order 12 address lines are latched into two chips: U04 holds A18-A15 and U18 holds A14-A07. They can be called Track and Sector number respectively. Note the Rombo board used in this project has no reference designators for any of the components so we used a top-down left-right numbering scheme to be documented later.

Track number is loaded into Rombo during a switch to Bank0 with the value loaded into register A. Sector number is loaded into Rombo during a switch to Bank1 with the value loaded into register A. I'm just using the 8080 opcode subset here for clarity - Z80 coders will understand that register indirect mode could used to load various registers to a port.

To load a particular 128 byte block into Bank0, the follow example would work. Note the code is for clarity, not coding excellence:


;preload registers before blocking interrupts to minimize blocked duration
LD A,(track) ;clarifying example of this value
LD BC,128 ;transfer count
LD DE,0EF00h ;base of destination common memory buffer
LD HL,02000h ;base of source Rombo block in Bank1
;now disable interrupts, load track/sector, transfer 128 bytes to common, then restore interrupts
;-----------------------;track/sector assumed modified while away
DI ;stop interrupt bank switching from changing Rombo addressing
OUT (0),A ;Switch to Bank0 and Load Track Number into Rombo U04
LD A,(sector) ;clarifying example of this value
OUT (1),A ;Switch to Bank1 and Load Sector Number into Rombo U18
LDIR ;transfer 128 bytes incrementing pointers repeatedly until BC decrements to 0
EI ;restore normal interrupts
;-----------------------;track/sector assumed modified while away
OUT (0),A ;return to Bank0 to transfer the buffer into the 64KB page.

We'll have to make sure it can always disable interrupts long enough for a 128 byte transfer. If not it can subdivide the period until priority interrupts coexist. The problem other interrupts create is that the Osborne-1 uses OUT (0),A and OUT (1),A instructions to switch banks with no need to initialize A, but when you add a Rombo, that uninitialized value changes the Track/Sector address of the Rom/RamDisk. A higher priority interrupt could thus change the sector address in mid-read.

More to Do:
What remains is how to re-write the EProm. The board has its own wait state generator and it takes +12Vdc from the Osborne as its programming voltage for EProms. Burning EProms requires the Rombo toggle switch to be moved into the correct position. In its normal position EProms cannot be modified.

The specification for the EProms describe the procedure to program them in-place. That will be pursued after some tests on reading the EProms and checking them against the HEX dump. Firmware will be written to initialize the DRams and then to test them.

The plan is to first write test routines for confirm our discoveries, then to write CP/M directory resident programs to use the Rombo and then to write a more compressed version to incorporate it into the Osborne-1's version of CP/M 2.2 (CBIOS etc). The eventual goal is to offer upon power up, the choice to boot from RomDisk or Floppy by modifying the Osborne-1 Eprom.

JDallas
December 18th, 2014, 08:41 AM
I'm doing a prototype PCB layout, and am cramming a lot of little project snap-off boards on the side.

I might do a Rombo-like Rom/RamDisk board for Z-80 sockets done in SMT chips.

My Cromemco ZPU could use that upgrade.

My SB-180 and MSC LAT-1 both have 64180s and expansion port connectors. The LAT-1 has a smart 50 pin expansion connector to use. The SB-180 expansion port is less capable but might work.

Probably needs one 8MByte Nor Flash Rom and one 1MByte Static Ram for fast addressing access, and room for two 1GByte Nand Flash Roms.

Since I want to fit several systems, I guess I'll design a personality module to interface it with different host systems.

JDallas
January 28th, 2015, 04:48 PM
Found the reason for the Rombo's use of the 74'138 to supply individual READ signals to each chip.

Early in the manual is suggests that signal should be common to all the EProms, but as you go through the fast programming algorithm, when you do a quick verify, all chips would drive the data bus at the same time, unless you drop the programming voltage VPP from 12V down to 5V on all other EProms, or *** only drop the READ signal on the chip being programmed.

So the cheaper solution is a 74'138 to manage that Due to in-circuit Eprom programming.

JDallas
March 8th, 2015, 09:58 AM
Some notes on the memory map of the Rombo board:

To review the design, the Rombo is a Osborne-1 add-on board from 1986 that plugs into the Z80 socket. It offers a 256KByte Romdisk and a 256KByte Ramdisk. It resides in an unused memory mapped block in Bank 1 which is where the keyboard and other input/output interfaces reside.

The Romdisk and Ramdisk are addressed in a 128 Byte sector block. The physical address of the board is dual-mapped as 2000-20FFh and as 3000-30FFh in Bank 1 due to the loose address decoding, which causes no conflict with other devices. In actual use, you'd chose a 128 byte address block among 2000-207Fh, 2080-20FFh, 3000-307Fh or 3080-30FFh.

When a 128 byte sector is addressed as described below, the system can now address those 128 bytes directly; i.e. address lines A06-A00 from any access to the 2000-207Fh block are used and the rest of the sector address come from the pre-loaded latches.

To select an sector address in the 256KByte Romdisk or 256KByte Ramdisk, you load an extended addresses as two I/O output instructions that latched them into the Rombo board. I've arbitrarily named these two sector address values as Track and Sector, but of course have no real track or sector significance as a floppy or hard drive address. Track is a higher order address loaded in one output data byte and Sector is the lower order address.

The address of a sector in the combined 512KByte Rombo is loaded by two output instructions, 7 bits of data at a time. The format is:

(Track) :::: (Sector)
Mxxx.xTTT :::: SSSS.SSSS

Where:
"M" its the memory type, 0 for Eprom/Romdisk, or 1 for Dram/Ramdisk.
"x" is don't-care bits that are not used.
"T" is the pseudo track number. In Eprom/Romdisk mode these 3 bits address 1 of the 8 Eproms.
"S" is the pseudo sector number. Effectively there are 256 sectors per track.

These addresses are latched into the Rombo using the Osborne-1's standard bank switch procedure. To review, the Osborne only uses I/O access to switch between its Bank 0 where the normal 64KBytes of Dram are located, Bank 1 where the memory mapped I/O is addressed and where most of the Bank 0 Dram is also available for easy transfer, and Bank 2 where some of the video is mapped. The Osborne-1 is rather unique in using I/O instructions only for bank switching. Take care when trying to add I/O addressed add-on board designs because Osborne-1 will interpret any I/O output operation on the bus as a bank switch.

When the Osborne-1 switches to Bank 1 to read the keyboard for example, it executes a OUT (1),A opcode and to switch to Bank 0 again it executes a OUT (0),A opcode. The value in register A is not used in the Osborne-1 bank switch hardware so the register value is never loaded; its a don't-care value.

The Rombo uses the same OUT (1),A and OUT (0),A to switch banks but its circuitry duplicates the Osborne-1's recognition to both latch in the Bank number (1 or 0) and also the data bus (A) which it latches as part of the sector address. That means the Rombo sector latches will be reloaded with nonsense anytime a bank switch instruction is executed. The implications is that any firmware that accesses the Rombo should disable interrupts and always reload the two sector address that latch into the board. This means that tasks involving Rombo memory should not loiter as it could block other interrupt responses.

The process to load the latching sector address into the Rombo before accessing the selected sector at the Bank 1 addresses is:

(0) Disable interrupts: DI
(1) Bank 0: OUT (0),A where register A holds the Sector value SSSS.SSSS
(2) Bank 1: OUT (1),A where register A holds the Track value Mxxx.xTTT
(3) Read or Write to any or many address(es) in the 2000-207Fh block.
(4) Exit by restoring Bank 0 with another OUT (0),A with the value in A being a don't-care.
(5) Enable Interrupts: EI

Note 1: I think the code above has the corrected (1) and (2) instructions. A previous code listing had the register A contents reversed. I've checked this once and will check it again.

Note 2: A clever use of the 128 byte sector could be to execute some code within that block as long as its compiled for the appropriate Bank 1 addresses such as 2000-207Fh. Interesting... you could shadow bank some of your BIOS code into Romdisk sectors and like the BIOS load the address and execute if from the sector block.

While the Rombo is in Bank 1 as 128 bytes addressed at 2000-207Fh, data transfers can be made between that address block and the normal 64KBytes of system Dram in Bank 0 which has dual presence in Bank 1 at the address range from 4000-FFFFh. For example you could copy the sector at 2000-207Fh to 4800-487Fh within the 64KByte Dram. However, transfers between the Rombo and Bank 0 address block 0000-3FFFh have to be made through and intermediary buffer in 4000-FFFFh and after a switch back to Bank 0.

Limited Offer:
I have a recent version of the incomplete Rombo schematic in a 200K pdf file that I can email anyone interested. It has a lot of notes on the page and circled areas we're focused on pathing out. But its mostly done.

The PDF format appears as a black on white background version of my PADs schematic original. I found putting the Adobe Acrobat Zoom to 800% brings out the detail to the appropriate level. I still haven't added the Z80 socket connecting to the main board as a separate component from the Z80, which is necessary because not all signals from the Rombo board go to the main board. I think there is only one exception.

JDallas
March 16th, 2015, 01:06 PM
Osborne-1: Trick to Adding I/O Instruction Addressed Devices Compatible With Banking
In my recent message on the Rombo memory mapping and access, I wrote about how the Osborne-1 only uses I/O instructions to switch among its three banks, 0-2.

On the Osborne-1, Bank 0 is the normal 64KByte DRam page that you'd expect for CP/M. Bank 1 notches out the low 16KBytes of Bank 0 and addresses memory mapped I/O devices instead. The keyboard, floppy disk drive, printer and serial ports are mapped there. The Rombo also appears in Bank 1 at the addresses previously listed. That leaves Bank 2 which I think was video monitor related to the extended attributes like bold and underline.

To switch Banks, Osborne-1 code just issues a dummy write to an I/O address. Only the least significant 2 address bytes are used by the Osborne motherboard to switch Banks. An example to switch to Bank 1: OUT (1),A does not need to initialize the A register. D7-D0 are not used by the motherboard for Bank switching and neither are A15-A02. The motherboard detects an IO access and uses the A01-A00 to select the Bank; there is no Bank 3.

OUT (0),A switches to Bank 0 (I/O address xxxxxx00), the 64KByte Dram
OUT (1),A switches to Bank 1 (I/O address xxxxxx01) the memory mapped I/O in 0000-3FFF.
OUT (2),A switches to Bank 2 (I/O address xxxxxx10).

The Rombo board (Ram/Rom-Disk from 1986) resides in Bank 1 so it must keep track of the selected page at all time so that if can avoid responding when Bank 0 uses memory addresses that match the Rombo memory address in Bank 1. This is an extra burden that adding an I/O board to an Osborne-1.

However, there is a simple trick to add I/O ports to the Osborne-1 without Bank flipping. Just change your block of I/O addresses for your board/chip and don't use A1-A0 to decode anything on your board. If you want your board to always be in Bank 0, just assure that the address of your baord always has A1-A0=00 (low). Anytime you read or write to your board, the Osborne-1 motherboard will still switch to Bank 0 each time you use an I/O instruction.

By example, lets say you wanted to add a I/O chip that had four registers. You'll have an address decode circuit create an active low chip select line for the chip. The two register address lines would normally be tied to A1-A0 so that the four combinations 00,01,10,11 would select one of the four registers. But if you did this you'd be switching Banks with each access based upon A1-A0.

So you slide the address up to A3-A2 and always use A1-A0=00 to stay in Bank 0. In this case:
Register 3 would be I/O address nnnn1100
Register 2 would be I/O address nnnn1000
Register 1 would be I/O address nnnn0100
Register 0 would be I/O address nnnn0000
When nnnn is the upper 4 address lines for I/O addressing (A7-A4).

Because A1-A0 are always 00, the motherboard keeps switching to Bank 0, which is fine.

With some agility, you could have code run out of 4000-FFFF, which is DRam that is available in both Bank 0 and Bank 1, and switch to Bank 1 to access some of the Osborne-1 memory mapped I/O perhaps to transfer to your I/O board. Example, if Register 2 above is a byte transmit port, you could swithed the Bank 1, "OUT (1),A" and loop for a keystroke, and then write the character as above, but with Bank 1 so you stay in that Bank, "OUT (nnnn1001),A". The A0 bit being high keeps the motherboard in Bank 1. When your routine is finished with Bank 1, either toggle back to Bank 0 with an OUT (0),A or do a few more I/O accesses to your board using its Bank 0 addressing tabulated above.

Note that you have to be careful of interrupts. When you switch to Bank 1 it might be better to disable interrupts so that an interrupt doesn't cut it and assume its in Bank 0 when you've got it in Bank 1.