VOGONS


First post, by darkpilot

User metadata
Rank Newbie
Rank
Newbie

Hello everyone.
I need to make an ISA card with a single 32kb ROM chip (IBM cassette BASIC)
Chip content must be mapped to a specific memory address (0xF6000).
I have never done this before and now trying to find any information.

Reply 1 of 11, by vstrakh

User metadata
Rank Member
Rank
Member

Isn't that address already taken by the motherboard bios (0xf0000-0xfffff)?

You should aim in the range 0xc8000-0xeffff.
https://wiki.osdev.org/Memory_Map_(x86)

Reply 2 of 11, by root42

User metadata
Rank l33t
Rank
l33t
vstrakh wrote on 2022-07-04, 12:15:

Isn't that address already taken by the motherboard bios (0xf0000-0xfffff)?

You should aim in the range 0xc8000-0xeffff.
https://wiki.osdev.org/Memory_Map_(x86)

It seems like 0xf600 is reserved for ROM BASIC: http://www.techhelpmanual.com/94-general_memory_map.html

That being said, you could use the LoTech ISA ROM Board as a starting point. However it only allows to either choose 0xf000 or 0xf800 as the base address of a 32K ROM (which IBM BASIC seems to be). So to get around that you probably want to build your own card, where you have hardcoded address of 0xf600.

YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC

Reply 3 of 11, by darkpilot

User metadata
Rank Newbie
Rank
Newbie

The problem is how to connect a ROM to ISA bus.
As I understand ROM chip 'output enable' must be connected to ISA "MEMR". All data and address pics from ROM must be connected to corresponding ISA lines. And additionally address lines from ISA should be analyzed with logic (to select required address (for example 0xF6000) and the result should be connected to chip enabled pin of ROM. Is that right?

Reply 4 of 11, by root42

User metadata
Rank l33t
Rank
l33t

You can see on the backside of the ISA ROM board pretty well how it is connected. They use a 74HCT688 to compare the DIP switch to the address on the bus, and an optional 74LS33N for PC/XT slot 8 compatibility (only needed here to react to the special card select signal)

ISA-ROM-Board-r03-top-1024-840.jpg
Filename
ISA-ROM-Board-r03-top-1024-840.jpg
File size
263.12 KiB
Views
799 views
File license
Fair use/fair dealing exception

YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC

Reply 5 of 11, by vstrakh

User metadata
Rank Member
Rank
Member
root42 wrote on 2022-07-04, 12:41:

It seems like 0xf600 is reserved for ROM BASIC: http://www.techhelpmanual.com/94-general_memory_map.html

Ah, then the request should have specify the target PC.
On AT there's typically (well, from my experience) a single 64KB rom, taking the whole range.

Reply 6 of 11, by root42

User metadata
Rank l33t
Rank
l33t
vstrakh wrote on 2022-07-04, 14:20:
root42 wrote on 2022-07-04, 12:41:

It seems like 0xf600 is reserved for ROM BASIC: http://www.techhelpmanual.com/94-general_memory_map.html

Ah, then the request should have specify the target PC.
On AT there's typically (well, from my experience) a single 64KB rom, taking the whole range.

But even the IBM PC/AT came with ROM BASIC, no? Let's fire up our machines and check if there is really something useful in the 32K block at 0xf600 😀

YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC

Reply 7 of 11, by weedeewee

User metadata
Rank l33t
Rank
l33t

depending on the mainboard chipset you might not even be able to address anything in that range on the isa bus.
Afaik some chipsets route any access to any address in the f0000 range to the bios sockets. cmiiw

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port

Reply 8 of 11, by vstrakh

User metadata
Rank Member
Rank
Member
root42 wrote on 2022-07-04, 14:24:

But even the IBM PC/AT came with ROM BASIC, no? Let's fire up our machines and check if there is really something useful in the 32K block at 0xf600 😀

Ok, I had to be more precise in AT definition 😀 IBM 5170 (which I don't own) should have ROM BASIC.
The 'generic' 286-based PC I have has single 64KB BIOS chip, it has shadow ram option for the entire 64KB range.
The memory content at segment 0xF600 is not even a code but parts of the AMI BIOS gui resources - tables/strings.

My point is that if you need to bring the ROM BASIC into computer via ISA bus, that hints there are no provisions for ROM BASIC chips on the motherboard, and it's likely this is not the IBM that had ROM BASIC address range decoded and routed for that chip only, and such PC has that region physically taken by a single motherboard bios.

Reply 10 of 11, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie
darkpilot wrote on 2022-07-04, 19:03:

I know about possible problems on non-original hardware, but I still want to experiment on 80286 motherboards.

Before you map something at f600:000 it might be worth making sure there is nothing important there, right?
You can boot a DOS floppy that has DEBUG on it, and in debug do: d f600:0000
If you get all FFs, that memory range is open and (whether your board even routes F000 segment accesses to ISA slots aside) you have some hope of doing this.
That would happen if your board uses a 32K BIOS like an old Phoenix one. If there is content at F600:0000, then you're going to break something if you somehow manage to override it with BASIC...