VOGONS


Reply 20 of 28, by douglar

User metadata
Rank l33t
Rank
l33t

IBM CGA —> Tandy CGA is pretty straightforward since it is the same resolution, just more colors. It won’t affect the game engine that much, just the graphics assets. It’s similar to EGA mode 0Dh or VGA mode 13h, which are also 320x200.

Hercules monochrome graphics are a little trickier because it is a different resolution (720x348) and it’s not exactly divisible. If you want to include a hercules mode that’s not awkwardly cropped & dithered, it might help to plan for it at the start.

Here’s a page with some screen shots of one of my favorite games from that period

https://www.dosbox-staging.org/getting-starte … ince-of-persia/

“The notorious CGA adapter, the first colour graphics adapter created for the original IBM PC in 1981, is a serious contender for the worst graphics standard ever invented”

“Although we’ve shown how to emulate these earlier graphics standards for completeness’ sake, there’s generally little reason not to play a DOS game with the best graphics. The list of possible reasons includes a) nostalgic feelings towards a particular display adapter, b) research purposes, c) you like your games to look like the user interface of an industrial CNC machine, and d) a strong preference for pain. But hey, who are we to judge?”

Reply 21 of 28, by Blackthorn00

User metadata
Rank Newbie
Rank
Newbie

When I mentioned Tandy in my first post there were a lot of things that I didn't know, yet. After this discussion and further research, I'd say that what I'm really targetting is an IBM XT or compatible. That means 8088 processor, a variable amount of memory, PC speaker, CGA graphics. I'm almost inclined to require an hard drive TBH. It seems most XT were shipped with one anyway (obs this is not necessarly true for clones) and writing/reading to disk would ease memory requirements.

I'll also try to support PC-DOS just because the original XT was shipped with one, but I need to research a bit more how much of a headache that would be. As far as you know, were people installing MS-DOS on it, or did they just keep
PC-DOS? My guess is that PC-DOS was kept for a office use, and MS-DOS was installed for home usage.

Reply 22 of 28, by mkarcher

User metadata
Rank l33t
Rank
l33t
Blackthorn00 wrote on 2025-09-14, 15:31:

I'd say that what I'm really targetting is an IBM XT or compatible.

That makes a lot of sense.

Blackthorn00 wrote on 2025-09-14, 15:31:

That means 8088 processor, a variable amount of memory, PC speaker, CGA graphics.

And unless you are specifically targetting Turbo XTs, this means 8088 at 4.77MHz. As people already mentioned, CGA was on its demise when Turbo XTs got common, so I think you should consider 4.77MHz as standard.

Blackthorn00 wrote on 2025-09-14, 15:31:

I'm almost inclined to require an hard drive TBH. It seems most XT were shipped with one anyway (obs this is not necessarly true for clones) and writing/reading to disk would ease memory requirements.

The capability to have an internal hard disk is the main distinction between the IBM PC and the IBM XT. This is achieved by the more powerful supply in the IBM XT (150W instead of 65W). As the more powerful supply generally allowed more hardware to be fit into the case, the XT also had 8 ISA slots instead of the 5 slots in the PC. Most XT (clones) had a hard drive, because otherwise you would just buy the older and cheaper PC (or clone) system. So if you are targetting the XT, it is OK to expect at hard drive, but...

... I wouldn't be so fast in excluding the PC. Processor and mainboard speed is around the same, and every sane PC user upgraded their PC to 256KB RAM at least, so except for the hard drive, the PC also meets your requirements. Hard drives were expensive in the mid 80s, so there also were a lot of PC clones around. The first PC I had at home was a "Schneider Euro PC" (this is a machine that was quite localized for the German market), which had an Amiga/Atari-inspired shape with keyboard and floppy drive integrated into the PC case, and came shipped without a hard drive by default. I also had a couple of school mates that had their first computer without a hard drive in 1990.

If you can make your game usable running from 2 360KB floppies (or one 720KB 3.5" floppy), this would have increased target audience significantly in the old days. Take a look at the first PC edition of Monkey Island for example. That game was split into 8 packs of 360KB (the first one included the software, the other 7 packs only data). You could also use 4 720KB or 2 1.44MB floppies and the game only asked you to swap the floppy if the data it actually needed is not found on the currently inserted disk.

Blackthorn00 wrote on 2025-09-14, 15:31:

I'll also try to support PC-DOS just because the original XT was shipped with one, but I need to research a bit more how much of a headache that would be. As far as you know, were people installing MS-DOS on it, or did they just keep
PC-DOS? My guess is that PC-DOS was kept for a office use, and MS-DOS was installed for home usage.

As far as I know, you don't need to care about the PC-DOS vs. MS-DOS thing. PC-DOS at that time was a version of MS-DOS licensed to IBM, but not significantly modified by IBM. The original IBM machines shipped with PC-DOS, and everyone else used MS-DOS, especially all the clone machines.

One notable difference between PC-DOS and MS-DOS is that MS-DOS includes a BASIC interpreter (up to MS-DOS 3.3, this is GW BASIC; later MS-DOS versions had QBASIC, a limit edition of Microsoft Quick Basic), while PC-DOS came with BASICA, a BASIC interpreter that relied on the BASIC implementation in the IBM PC BIOS. The BASIC implementation in the IBM PC BIOS is also licensed from Microsoft, and very similar in capabilities to GW-BASIC. As your game is not written in BASIC, you don't need to care about this difference.

Reply 23 of 28, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Yes, and it is completely irrelevant to what OP is asking. He isn’t making a game for S100 system, but for PC/XT class machine with CGA graphics.

Thank you for clarification, I wasn't aware of that.
I assumed it was about any early 8088/8086 PC with CGA graphics.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 24 of 28, by Blackthorn00

User metadata
Rank Newbie
Rank
Newbie
mkarcher wrote on 2025-09-14, 16:12:
That makes a lot of sense. […]
Show full quote
Blackthorn00 wrote on 2025-09-14, 15:31:

I'd say that what I'm really targetting is an IBM XT or compatible.

That makes a lot of sense.

Blackthorn00 wrote on 2025-09-14, 15:31:

That means 8088 processor, a variable amount of memory, PC speaker, CGA graphics.

And unless you are specifically targetting Turbo XTs, this means 8088 at 4.77MHz. As people already mentioned, CGA was on its demise when Turbo XTs got common, so I think you should consider 4.77MHz as standard.

Blackthorn00 wrote on 2025-09-14, 15:31:

I'm almost inclined to require an hard drive TBH. It seems most XT were shipped with one anyway (obs this is not necessarly true for clones) and writing/reading to disk would ease memory requirements.

The capability to have an internal hard disk is the main distinction between the IBM PC and the IBM XT. This is achieved by the more powerful supply in the IBM XT (150W instead of 65W). As the more powerful supply generally allowed more hardware to be fit into the case, the XT also had 8 ISA slots instead of the 5 slots in the PC. Most XT (clones) had a hard drive, because otherwise you would just buy the older and cheaper PC (or clone) system. So if you are targetting the XT, it is OK to expect at hard drive, but...

... I wouldn't be so fast in excluding the PC. Processor and mainboard speed is around the same, and every sane PC user upgraded their PC to 256KB RAM at least, so except for the hard drive, the PC also meets your requirements. Hard drives were expensive in the mid 80s, so there also were a lot of PC clones around. The first PC I had at home was a "Schneider Euro PC" (this is a machine that was quite localized for the German market), which had an Amiga/Atari-inspired shape with keyboard and floppy drive integrated into the PC case, and came shipped without a hard drive by default. I also had a couple of school mates that had their first computer without a hard drive in 1990.

If you can make your game usable running from 2 360KB floppies (or one 720KB 3.5" floppy), this would have increased target audience significantly in the old days. Take a look at the first PC edition of Monkey Island for example. That game was split into 8 packs of 360KB (the first one included the software, the other 7 packs only data). You could also use 4 720KB or 2 1.44MB floppies and the game only asked you to swap the floppy if the data it actually needed is not found on the currently inserted disk.

Blackthorn00 wrote on 2025-09-14, 15:31:

I'll also try to support PC-DOS just because the original XT was shipped with one, but I need to research a bit more how much of a headache that would be. As far as you know, were people installing MS-DOS on it, or did they just keep
PC-DOS? My guess is that PC-DOS was kept for a office use, and MS-DOS was installed for home usage.

As far as I know, you don't need to care about the PC-DOS vs. MS-DOS thing. PC-DOS at that time was a version of MS-DOS licensed to IBM, but not significantly modified by IBM. The original IBM machines shipped with PC-DOS, and everyone else used MS-DOS, especially all the clone machines.

One notable difference between PC-DOS and MS-DOS is that MS-DOS includes a BASIC interpreter (up to MS-DOS 3.3, this is GW BASIC; later MS-DOS versions had QBASIC, a limit edition of Microsoft Quick Basic), while PC-DOS came with BASICA, a BASIC interpreter that relied on the BASIC implementation in the IBM PC BIOS. The BASIC implementation in the IBM PC BIOS is also licensed from Microsoft, and very similar in capabilities to GW-BASIC. As your game is not written in BASIC, you don't need to care about this difference.

It all makes sense, thanks!

The reason I was excluding the PC is just because they shipped mostly with 128Kb of RAM and I figured that back in the day people/business would have just upgraded to an XT (which was out only a couple of years later) rather than adding more RAM to the old PC. But then again, this shit was expensive back then so maybe people decided to just buy more memory.

Buy yeah, in terms of programming there isn't a big difference.

Reply 25 of 28, by Jo22

User metadata
Rank l33t++
Rank
l33t++
Blackthorn00 wrote on 2025-09-14, 10:25:

4) I need to downgrade the DOS version used. I was assuming MS-DOS 3.11 at least, but need to test with MS-DOS 2.1. Shouldn't be a problem but I need to recheck the software interrupts I use.

Hi, I think DOS 3.x is just fine.
It's just that MS-DOS 2.x was sort of a reference, maybe.
It was very common, other operating systems such as DOS Plus tried to be DOS API compatible. Some PCs such as Tandy 1000 had it in ROM, too.

I think it depends on how far you want to go back in time. By roughly the mid-80s, MS-DOS 3.x wasn't unheard of, either.

To my knowledge, PC users usually quickly gained access to a new DOS through, err, exchange of "backup copies". 😉
Well, at least for simple boot-up disks needed to start applications.

Long story short, MS-DOS 2.11 compatibility would be a nice extra if it doesn't cause headache, but it's not required.
If your development tools support MS-DOS 3.x and up, then that's okay as well.

Edit: There are a few (very few) games that relied on early DOS 2 for a placeholder in filenames.
It's quite an interesting "bug". I've stumbled over it a few years ago.
https://www.mobygames.com/game/1870/spider-man/trivia/

But again, it's just a fun fact. Normally, both DOS 2/3 should work just fine.

Edit: What also comes to mind is the IBM PC version of MS Flight Simulator 2.
It sort of was the reference for IBM PC compatibility (and CGA compatibility).
https://www.mobygames.com/game/1642/microsoft … -simulator-v20/

PCs that could run at least Flight Simulator (v2) were taken more seriously.
If you have a setup that can run it, it's good enough for general game development, as well.

But as the others also said, staying at 128KB of RAM is no strict requirement.
Owners of a PC had to upgrade RAM a bit because applications grew quickly in size.
512 or 640 KB was common for PC/XT class systems, 256 KB the bare minimum to fit most standard applications.
Even the early PCs (IBM or not) could be upgraded to 256 KB without much hassle, I think.

Note: The version of MS FS 2 shown at mobygames.com is a PC Booter game, so there's no DOS in memory.
Conversions of Flight Simulator to DOS format may havevexisted, however.
A friend had such an, err, "backup copy" in his floppy collection I vaguely remember.

If you would like to see a list of common mid-80s DOS applications/games,
I can recommend compatibility lists of same time.
The PC-Ditto emulator ('87) shipped with such a list, for example. There are scans on the web..

Edit: From a technical point of view, some development tools such as QuickBASIC or Turbo Pascal (v4) created applications that use 32KB+24KB+8+32KB of RAM.
Considering that one x86 segment is 64 KB in size, a couple of them should be available for sake of memory managment.
So 128 KB of RAM really is a little bit low to fit everything, I think.

Edit: Sorry for the long reply, btw. I didn't mean to write an essay here, but try to justify my point of view and draw logical conclusions.
Please everyone feel free to correct me, if there's something wrong. 🙂 Or if there isn't, either. 😄

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 26 of 28, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie
Blackthorn00 wrote on 2025-09-13, 21:55:
I'm developing an old school turn based RPG with CGA graphics (think Phantasie) and trying to target a plausible hardware config […]
Show full quote

I'm developing an old school turn based RPG with CGA graphics (think Phantasie) and trying to target a plausible hardware configuration of the early 80s. I'd like to avoid absurdities, like supporting a Sound Blaster 32 (meaning: if you have a SB32, you are probably not going to target CGA graphics) which are possible nowadays when developing in emulators.

I want to target a hardware configuration that actually existed.

The "issue" is that hardware setups varied a LOT during those times and I was too young to have lived that era.

Anyway I'm creating a prototype and this is what I think I'll need to complete the game:

- CGA video card
- 8086 8 Mhz processor (currently it seems to be working on a 8088 4Mhz as well, with some "lag" in rare occasions, so I'd say the 8086 is recommended)
- 256Kb of RAM
- 360K floppy disk (where these double sided?)
- No hard disk present

Does this sound a plausible configuration at some point in time during the 80s?
I'm mostly using Tandy as reference because I know it was popular and it's not too hard to find the documentation about the most used configuration.
My main concern is the RAM. It seems 128Kb was the standard, so I might be shooting too high there, asking for 256Kb.

Depending on the licensing model you intend to choose for your game, the Planet X3 source code might be worth a look.
This is the after-market open source release of the game engine under GPL. Most of the slightly more obscure video and audio code in there is mine.
The game basically uses a logical 320x200 pixel screen for everything, including Hercules and monochrome EGA, which both use 640x300 pixels with letter boxing and dithering.
It is also a real-time strategy game intended for XT-class machines, i.e. the video code would definitely be good enough for round-based games.
If you are fine with publishing your code under GPL, just help yourself. Otherwise, you can still use the code as inspiration.
As a rule of thumb, it is always a good idea on these slow machines to skip as much unnecessary work as possible.
For instance, the tile engine in Planet X3 now uses a lazy update mechanism that only redraws the tiles that it absolutely has to.

Last edited by Benedikt on 2025-09-14, 19:42. Edited 1 time in total.

Reply 27 of 28, by douglar

User metadata
Rank l33t
Rank
l33t
Benedikt wrote on 2025-09-14, 19:17:

As a rule of thumb, it is always a good idea on these slow machined to skip as much unnecessary work as possible.

That's very true. There is a reason that these are called "slow machines". After all, it's not just the hard drive, floppy drive and video card on an 8 bit ISA bus, the main system memory is on the same bus too! Plenty of wait states. You don't have a lot of useful cycles to waste.

Reply 28 of 28, by mkarcher

User metadata
Rank l33t
Rank
l33t
douglar wrote on 2025-09-14, 19:31:

the main system memory is on the same (8-bit) bus too! Plenty of wait states. You don't have a lot of useful cycles to waste.

Whether you call it "wait states" is up to interpretations. Technically, the memory access on a PC or XT (even most Turbo XT) happens at zero wait states. This uses the definition that a "wait state" means an additional delay the CPU has to take when accessing a memory or I/O resource. The fastet memory or I/O cycle an 8088 can perform takes 4 clocks, and the PC/XT memory subsystem is fast enough to respond within the time required in this 4-clock access scheme, so no extra wait states need to be added.

On the other hand, the 80286 bus protocol no longer requires 4 clocks minimum for a memory access, but just 2 clocks for a memory access. If you take optimal AT bus performance, i.e. 2 clocks per cycle as your baseline and call everything that's slower than 2 clocks per cycle "effective wait states", the PC and XT use "2 effective wait states".

No matter how you call it, you are completely correct that the 8-bit memory bus of the 8088 was a severe bottleneck to the PC/XT performance. The theoretical memory bandwidth of that interface is 1.193MB/s. The IBM AT at one waitstate at 6MHz requires 3 clocks per cycles, and with 16-bit cycles, the bandwidth goes up to 4MB/s. This is a significant difference, and that difference will get even bigger at an 8MHz AT. Well, the XTs upped their game with Turbo XTs that run the memory at zero XT wait-states at 10MHz (my one does, I measured it), which yields up to 2.5MB/s. Slightly later, the AT clone vendors had AT machines that ran 10MHz at zero wait states (at least for page hits with page mode RAM), which will result in 10MB/s.

Avoiding accessing CGA memory is especially recommended, as the CGA has a specific timing pattern of video RAM access slots that can be granted to the 8088. Combined witht the general slowness of that architecture, CGA memory writes don't get above 350KB/s real-world performance. In 80-character text mode, CGA actually had no timing slots for the 8088 at all during display, and if the processor dared to access video memory anyway, a cycle got stolen from the video refresh logic, resulting in the video refresh logic operating on wrong data, causing the well-known "CGA snow".