Hot answers tagged

46 votes

Why didn't PC games eschew MS-DOS and deal with BIOS directly?

You need to run the game somehow. There were some early booter games, but as soon as you had a hard drive, users typically want to store programs, including games, on the hard drive, as files. When ...
Justme's user avatar
  • 30.4k
31 votes
Accepted

How did 16-bit MS-DOS programs use a large (> 64KB) stack?

They simply did not use a large stack. If you look at the standard memory models for the x86, there was a single stack segment in all of them (which was even shared with other segments in the smaller ...
dirkt's user avatar
  • 27k
27 votes
Accepted

Did any MS-DOS program ever use the System Request interrupt?

TL;DR: One of the great Ideas that never Materialized Contrary to what is often assumed, the key was not added to support some 3270-style emulation1, but to enable a basic multi-application/OS ...
Raffzahn's user avatar
  • 220k
25 votes

Why didn't PC games eschew MS-DOS and deal with BIOS directly?

We need to look into this in a bit more detail. There were indeed a limited amount of "direct boot" games that completely by-passed DOS and implemented their own low-level hardware support. (...
tofro's user avatar
  • 34.3k
19 votes

Did any MS-DOS program ever use the System Request interrupt?

The SysRq key is a perfectly normal key on the keyboard. It does not generate a special or unique interrupt by itself. The standard keyboard interrupt of BIOS just does what it does for all keys and ...
Justme's user avatar
  • 30.4k
15 votes

How can I reverse-engineer the game Wizardry (1981) for PC, based on UCSD Pascal?

A few hints about how the UCSD system works. What's often called UCSD-Pascal is in fact a stand alone OS with Pascal as one possible language. Others were BASIC, FORTRAN, Ada or Assembler. The whole ...
Raffzahn's user avatar
  • 220k
14 votes

How can I reverse-engineer the game Wizardry (1981) for PC, based on UCSD Pascal?

The background has already been explained, some additional details. I don't know where to get the version you have, but quick googling found a version with a 320K WIZ1.DSK. This one clearly is a UCSD-...
dirkt's user avatar
  • 27k
13 votes

How did 16-bit MS-DOS programs use a large (> 64KB) stack?

DOS programs typically have limited stack requirements, and tend to declare small stacks. DOS itself uses its own stacks in many cases, and programs’ stacks don’t need to leave much room for DOS use. ...
Stephen Kitt's user avatar
12 votes

How can I reverse-engineer the game Wizardry (1981) for PC, based on UCSD Pascal?

What an intriguing piece of archaeology you've stumbled upon! COM programs, present an interesting quirk. Despite its code segment being confined to a mere 64KB, they allocated all available free RAM ...
Rui F Ribeiro's user avatar
11 votes

DOS: How do I type an ANSI escape sequence?

[All of the examples have been tried using a real PC and DOS 3.20] TL;DR: Use a Batch File For Experiments The most simple way to start testing wold be a batch file providing the needed ESC character. ...
Raffzahn's user avatar
  • 220k
9 votes

How did 16-bit MS-DOS programs use a large (> 64KB) stack?

The "large" memory model of x86 allowed a program to have multiple code segments and multiple data segment, using far calls to jump across code segments, and far pointers to access data from ...
Raffzahn's user avatar
  • 220k
8 votes

Why didn't PC games eschew MS-DOS and deal with BIOS directly?

You mean beside the fact that this would make it impossible, or at least quite complex, to install Games on hard disk - which was standard in AT times and later. Likewise for returning to DOS after ...
Raffzahn's user avatar
  • 220k
6 votes

How can I reverse-engineer the game Wizardry (1981) for PC, based on UCSD Pascal?

One additional piece not mentioned in the other answers... The notes on the UCSD Pascal filesystem here have links to Apple II Pascal reference material, notably this monster. You can, for example, ...
fadden's user avatar
  • 9,020
6 votes

Why didn't PC games eschew MS-DOS and deal with BIOS directly?

Short answer: Because no one wanted to implement an OS in a game... Long answer: Most games that required filesystem access used DOS (or later, on 386+ a DOS extender). Since version 2.0, DOS provided ...
Sergey Kiselev's user avatar
6 votes

DOS: How do I type an ANSI escape sequence?

If you have a copy of DEBUG in your emulated DOS environment, you could write a small program to output an ESC followed by whatever you want. (Anything after ; is a comment and shouldn't be typed in). ...
john_e's user avatar
  • 7,245
5 votes

DOS: How do I type an ANSI escape sequence?

In addition to Raffzahn’s selection of methods, you can use 4DOS’s escape handling on the command-line and in batch files. Using a keyboard shortcut, the escape character can be produced with the 4DOS ...
Stephen Kitt's user avatar
4 votes

How did 16-bit MS-DOS programs use a large (> 64KB) stack?

The CONFIG.SYS file of DOS had a setting to enable multiple stacks, but these were used to handle hardware interrupts. The Huge memory model might in theory have been used to support a stack of more ...
Davislor's user avatar
  • 8,667
4 votes

How did 16-bit MS-DOS programs use a large (> 64KB) stack?

The large-code memory models (medium, large, and huge) did not need a stack size more than 64k, they just needed the ability to push/pop a cs:ip pair rather than just an ip. That can be done without ...
paxdiablo's user avatar
  • 4,752
3 votes

Does DOS run Crysis?

Quake was originally written for DOS, so running it on a DOS computer isn’t particularly special — what’s unusual in the video you mention is the CPU and FPU being used (Quake was really a Pentium ...
Stephen Kitt's user avatar
3 votes

How can I reverse-engineer the game Wizardry (1981) for PC, based on UCSD Pascal?

Just want to point out that while UCSD P-System was indeed intended to be a portable runtime, that, in the end, the binaries were not necessarily completely portable. Notable bit are that the Apple ...
Will Hartung's user avatar
  • 12.2k
3 votes

Did MS-DOS have any support for multithreading?

exit, _exit Terminates all threads of the calling program. Well, given that the manual you are citing, was called "Microsoft C Optimizing Compiler for MS® OS/2 and MS-DOS®", no wonder it ...
stsp's user avatar
  • 161
2 votes

Why did "protected-mode MS-DOS" never happen?

I'd think it was pretty obvious at the time that the real-mode limitations of both BIOS and MS-DOS Real-mode limitations are not of BIOS or MS-DOS. Real-mode uses a 16bit addressing + segmentation, ...
stsp's user avatar
  • 161
2 votes

Why didn't PC games eschew MS-DOS and deal with BIOS directly?

Being now an old dinosaurus allows me to remember those days. Not only games were using BIOS, but a lot of common programs also did. There were 3 main reasons for that: there was few MS/DOS level ...
Serge Ballesta's user avatar
1 vote

DOS: How do I type an ANSI escape sequence?

Inspired by the other programs written using Debug, I went and wrote a slightly more complicated example. This one allows to use a number of escape codes using the backslash. It also scans for leading ...
ecm's user avatar
  • 941
1 vote

DOS: How do I type an ANSI escape sequence?

Here are a couple of variants of john_e’s answer. The first avoids writing one byte extra by counting the Escape character as one of the characters in the loop: 18F1:0100 XOR AX, AX ; Clear AX 18F1:...
1 vote

Why didn't PC games eschew MS-DOS and deal with BIOS directly?

Hewing strictly to the question, the bottom line is that the BIOS was no more "extended-memory safe" than was DOS. As others have said, much- arguably most- software on IBM PCs or strict ...
Mark Morgan Lloyd's user avatar
1 vote

Why did DOS-based Windows require HIMEM.SYS to boot?

It is entirely possible that it required himem simply because it had to support himem, to start with. I.e. if you have himem.sys loaded, then windows can't just look into e820 and map all the ...
stsp's user avatar
  • 161

Only top scored, non community-wiki answers of a minimum length are eligible