2

Related to my previous question around VGA framebuffer being limited to 64kB I started to wonder if there was any extension cards (or similar) using more than 64kB of address space in linear fashion, ie providing related and continuous memory that could be understood as larger than a single 64kB block.

I have a vague feeling EMS might’ve worked this way, providing multiple “slots” that could take up more than 64kB in total. This however feels a bit borderline case as these slots are accessed independently.

In nutshell, I’m looking for any device that would’ve needed segment arithmetic (similar to huge pointers)

  • Would UMA-mapped memory expansion boards count? (Not EMS.) – Stephen Kitt Jun 4 at 22:13
  • @StephenKitt feels a bit borderline to me, but yeah why not. I’d be more interested to see if there was eg network or mass media adapters that had 64kB+ buffers that were used in contiguous / ring buffer manner – tuomas Jun 4 at 22:18
  • Considering that the PC is perfectly capable of DMA and even busmastering, there are very few actual applications for such large memory windows (video cards and memory expansions). Given the ISA bus has only 256kBytes (or rather half of it, if you conform to IBM's memory map) to spare here, a card that hogs that address space is not very desirable. – tofro Jun 5 at 16:24
5

I started to wonder if there was any extension cards (or similar) using more than 64kB of address space in linear fashion

Any kind of card could carry continuous memory with more than 64 KiB. There was no segmentation or 64 KiB chunks in the bus design. ISA slots carried a linear address - 20 bit for 8-bit (PC/XT) cards and 24 for 16-bit cards (AT).

In fact, to expand an original PC past 64 KiB, any memory must be added with one (or more) cards in a continuous fashion after the mainboard memory.

I have a vague feeling EMS might’ve worked this way

Not really. EMS just used (by default *1) a 64 Ki window to place four 16 Ki pages, that could be selected from whatever memory the card offered. The regions pages in were not (didn't have to be) continuous.

I’m looking for any device that would’ve needed segment arithmetic (similar to huge pointers)

Having a memory region of more than 64 KiB doesn't mean the use of pointer arithmetic at all. That's only necessary for data of more than 64 KiB which is addresses on byte level and handled as a single continuous area.


*1 - Some could as well use more or less than four pages and even spread them out in non continuous configurations.

  • Good point about memory extension cards even for low memory, that does count, but kinda falls into same bucket with UMA/EMS. I’m trying to find out if there was any “non-generic-memory” devices that were designed this way – tuomas Jun 4 at 22:30
  • And thanks for the EMS update. I recall larger than 64kB area being “reserved” for EMS but was not sure if single cards commonly used more than 64kB – tuomas Jun 4 at 22:32
  • @tuomas Your're talking about memory mapped devices (in contrast to one addressed in I/O space). As soon as it's memory mapped, there is no difference between their use as memory, or something different (whatever that is). Unless your question is about software, not hardware. – Raffzahn Jun 4 at 22:38
  • yes, I do understand that. I’m just wondering if switch to larger than 64kB buffers was related to switch from ISA bus to something else - ie did devices start to have larger (linear) memory areas even before VLB/PCI era. I remember ISA SVGA cards still had only bank switched 64kB window too. – tuomas Jun 4 at 22:44
  • 2
    @tuomas Because that's a safe bet. After all card manufacturer wanted to sell to as many customers with as least complains about incompatibility as possible. A potential (tiny) slowdown is way more acceptable as a bad review, just because the reviewers PC didn't have a large enough window. Also, already cards doing 800x600 in 256 colours would need about half a megabyte RAM. There is simply no general available room for that. – Raffzahn Jun 4 at 22:49
2

Any super VGA card that provides linear access to frame buffer, as the 16-bit ISA slot allows for 16MB address space. For 8-bit ISA slots, the limit just is 1MB. It is possible to put anything anywhere you want as long as it does not interfere with anything else. For example PCs sold with only 512 KB of memory could be expanded to 640 KB by putting a RAM card that maps 128k from 80000h to 9FFFFh. Some EMS card could provide that 128k there and access the rest of the EMS via the 64k page frame. There just were not many things that would require mapping more than 64k to CPU, let alone even 64k.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.