Questions tagged [design-choices]

Justifications and trade-offs of historical hardware and software designs, and their possible alternatives.

Filter by
Sorted by
Tagged with
7
votes
2answers
2k views

Why did the BIOS load the MBR at 0x7c00?

The IVT is at 0x0000-0x03ff while the BDA is at 0x0400-0x04ff but boot sectors are loaded at 0x7c00. What was at 0x0500-0x7bff that caused this convention? I'm also curious why some MBRs relocate ...
25
votes
7answers
5k views

Why do variable names in BASIC need type suffixes?

The BASIC I'm most familiar with is Atari BASIC since I had an Atari 800 way back when. The Atari BASIC Source Book includes details about how Atari BASIC maintains variables. There is a Variable Name ...
24
votes
2answers
3k views

Was leaving all xxxxxx11 opcodes unused on the 6502 a deliberate design choice?

The 6502, like many 8-bit processors, has a somewhat arcane opcode-mode restrictions. On most such processors, the restriction is a clear result of trying to pack a lot of instructions into a limited ...
13
votes
3answers
759 views

Why did instruction sets since the late 1970s seemingly stop including an "execute" instruction?

Many mainframe instruction set architectures (ISAs) in the 1960s included an Execute instruction, which would treat data as an instruction. I haven't found an architecture designed after 1976 which ...
5
votes
1answer
334 views

Why does the ‘Get Next Selector Increment Value’ DPMI call exist?

In DPMI, interrupt 0x31 services 0x0000 and 0x0100 are capable of simultaneously allocating multiple protected-mode selectors in a single call. When that happens, both services return only the first ...
3
votes
1answer
262 views

Why did the Speak & Spell have an alphabetic keyboard?

Many of us remember the original Speak & Spell from 1978: Image source: Wikipedia One of the interesting things about this early handheld educational game console is the keyboard. It's not normal!...
3
votes
1answer
222 views

Why were procedure parameter specifications optional in the ALGOL 60 Revised Report?

In Algol 60 procedure declarations, the 'specification' part was optional for by-name parameters. The specification is what gives (loosely speaking) the type of parameter - whether it's real, integer,...
16
votes
4answers
3k views

Why does Pascal have numeric labels?

Pascal was intended, in part, to be a simple language to implement. Some of the design decisions reflecting this are Declarations/definitions must be given in a strict order (labels, constants, types,...
5
votes
0answers
227 views

What was the first device to "beep" in lieu of tactile feedback to button presses?

I'm splitting this question off of When was beeping invented, in a user interface sense? because I think it's more answerable on its own and I suspect likely to still be computing-related. At some ...
5
votes
2answers
422 views

When was beeping invented, in a user interface sense?

UPDATE: thanks all, lots of good discussion but I think this question is a bit too vague to be answerable. I'm casting my own close vote against it and will re-ask a more specific one. Specifically I ...
56
votes
4answers
11k views

Why were single quotes ('…') chosen for characters, and double quotes ("…") for strings?

In C, '' is used to denote a character, while "" is used to denote a string. Why was this syntax chosen? I tried to research this using Wikipedia’s Timeline of Programming Languages along ...
105
votes
7answers
24k views

Why was `!` chosen for negation?

It seems that the use of the exclamation mark ! to denote negation started with the C programming language (as far as I can tell from my Google research). Nowhere though is mentioned who and why chose ...
27
votes
4answers
8k views

Why did old IBM-PC-compatible computers only have 16 colors available?

In the MS-DOS Editor, the only choices for colors were a collection of 16 colors: That's 16 colors: Black Blue Green Cyan Red Magenta Brown White Gray Bright Blue Bright Green Bright Cyan Bright Red ...
14
votes
2answers
1k views

Why does the 6502 JSR instruction only increment the return address by 2 bytes?

Currently messing with 6502 assembly on a C64, and I don't understand why the JSR instruction is so weird. According to the instruction table, JSR is a 3-byte instruction and only operates in absolute ...
-4
votes
3answers
312 views

What was the last personal computer to have the chips neatly arranged in rows and columns?

Once upon a time, the chips on the circuit boards of personal computers1 were arranged in a tidy grid pattern. Observe the board of the Apple ][+: Or the Commodore 128: Sadly, the zen of neat rows ...
30
votes
3answers
3k views

What aspect of portable floating point did Java back down on?

Java was released under the slogan 'write once, run anywhere'; while its adoption was probably more about 'now we have a language that provides garbage collection in a familiar workflow and with a ...
21
votes
1answer
2k views

Why do Amiga Libraries have negative entry points?

As described in these answers, the jump table offsets to functions contained in an AmigaOS library are always negative values. The reason for this is not intuitive to me, but I suspect Carl Sassenrath ...
8
votes
2answers
213 views

Why was the VT05 resolution 72×20?

According to https://en.wikipedia.org/wiki/VT05 the VT05 presented the user with an upper-case only ASCII character display of 20 rows by 72 columns. At first glance this seems a reasonably natural ...
31
votes
3answers
4k views

Why is the ‘auto’ storage class specifier included in C?

The auto keyword in C seems quite redundant: wherever it makes sense to define a variable with automatic storage duration, it is already the default, so there is no reason to use the keyword. The ...
25
votes
5answers
11k views

Twist in floppy disk cable - hack or intended design?

There are many documents (e.g. this) describing the twist on two-drive floppy disk cable on IBM PC compatibles. While this is not the most proud example of clean hardware design, how much of this was ...
21
votes
5answers
5k views

Why did mainframes have big conspicuous power-off buttons?

Some fascinating stories in this discussion thread. It starts with discussion about computers overheating, but about halfway through the thread, it switches to discussion of mainframe installations in ...
6
votes
3answers
1k views

Why does -z and -n exist in most shells and /bin/test?

The test command on Unix-like systems provides two special syntax forms for checking whether a string is empty or not: test -z "$foo" # the length of $foo is zero test -n "$foo" # ...
2
votes
1answer
130 views

Intel vs Motorola device communication protocols

On this page about "An S-100 68000 CPU Board" it is said: From a hardware perspective there are some very significant differences how Intel and Motorola CPU's talk to the world. Somewhat ...
32
votes
2answers
3k views

What did Pete Stewart think he knew about efficient implementation of floating point denormals?

The most controversial part of the IEEE 754 floating-point standard is gradual denormals. Typically they trap to software rather than being implemented in hardware. In the common case where a workload ...
17
votes
1answer
1k views

Why did the 6502 handle BCD with a special mode?

The 6502 had special support for BCD arithmetic, because it was widely used in those days; this much, it had in common with other CPUs. But the 8080 and 6800 implemented this in the form of a 'decimal ...
35
votes
5answers
10k views

Why is the clock frequency of the PS/2 keyboard protocol so high?

The PS/2 keyboard protocol allows the keyboard to generate a clock rate between 10 kHz and 16.7 kHz. At 11 bits per scancode, 10 kHz is a massive 909 scancodes per second. World-record holder Barbara ...
29
votes
8answers
10k views

Why did post-8008 CPUs not keep the on-chip stack idea?

Ken Shirriff writes in his blog entry about the 8008: The 8008's seven registers are in the upper right. In the lower right is the address stack, which consists of eight 14-bit address words. ...
2
votes
0answers
309 views

Why did the Spectrum Next choose Z80 on FPGA? [closed]

I'm curious to understand why the Spectrum Next uses Z80 on an FPGA instead of something like at eZ80? I would have imagined they would choose the eZ80 since it is still a production part. Anyone ...
23
votes
10answers
5k views

Why did the original design of COM on Windows rely on the Registry?

In the early 1990s Microsoft introduced COM (Component Object Model) which was widely used in various programming environments including Visual Basic 5 & 6. Also known as ActiveX (or at least if ...
12
votes
1answer
691 views

Why do PC DOS kernel files have the COM extension, even though they are not executable as COM files?

The PC DOS kernel is stored in files named IBMBIO.COM and IBMDOS.COM. Although they have the COM extension like executable files, neither of these files could actually be run from the command line, ...
56
votes
8answers
9k views

Could we have avoided the whole UTF-16 fiasco? [closed]

Anyone who has studied Unicode and is honest will admit that UTF-16 was kind of a mistake. It was born from the early assumption that 16 bits would be enough for all of Unicode. Then a hack was ...
3
votes
2answers
2k views

In the Amstrad CPC's Mode 0, what was the design rationale for interleaving the pixel bits?

The following tables are modified and corrected from Painting pixels: Introduction to video memory. m-bit: memory bit p-bit: pixel bit Mode 2 - 640x200 (half width pixels), 2 colours m-bit | 7 | 6 |...
14
votes
4answers
2k views

Why did 1-bit DRAM chips have separate data input and output?

Many 1-bit DRAM chips provide two pins for data communication, one for writing data (typically described as Din or D on datasheets) and one for reading data (Dout or Q). Examples I've found include ...
5
votes
1answer
325 views

Original Mac clock frequency

Why was the crystal clock frequency for the original Macintosh (128k,Plus, etc.) 15.667 MHz, instead of a multiple of 8 MHz (which was the maximum clock frequency for the speed grade of MC68000 ...
19
votes
3answers
2k views

What was the role of Commodore-West Germany?

Most of the history of Commodore in personal computers took place while East and West Germany were divided, and Commodore maintained a significant corporate presence in West Germany. While I believe ...
43
votes
9answers
8k views

What was the point of separating stdout and stderr?

I occasionally need to work with console commands and 100% of the time I want to redirect my output to a file I fail to redirect stderr as well as stdout the first time. I can't think of a single ...
71
votes
7answers
13k views

Why wasn't ASCII designed with a contiguous alphanumeric character order?

Anyone who has dealt with strings at a low level (e.g., writing a parser in C), knows that doing so tends to involve frequent checks of—either manually, or through isalpha(), isalnum(), etc—whether a ...
6
votes
3answers
587 views

What was the reasons for DEC engineers to choose MMU page size in VAXen?

MMU page size in VAXen is just 512 bytes. Such a small size causes increased number of MMU page walks and leads to TLB thrashing more often. Current tendency is to have MMU pages as big as 2 Mbytes. ...
6
votes
2answers
719 views

Why did CGA RGBI output leave DAC to the monitor?

CGA on the original IBM PC produced sixteen colors, one bit each for red, green, blue and overall intensity modifier. The preferred output device was the later-arriving 5153 color monitor, which ...
15
votes
2answers
2k views

Why did some CPUs use two Read/Write lines, and others just one?

Many 8-bit processors, such as Motorola's 6800 and MOS Technology's 6502 make use of a single pin to indicate to the rest of the system whether the CPU wishes to read from or write to a memory ...
7
votes
1answer
691 views

Were there any working computers using residue number systems?

Wikipedia says: A residue numeral system (RNS) is a numeral system representing integers by their values modulo several pairwise coprime integers called the moduli. Bit widths of each of those "...
23
votes
8answers
5k views

Why not constant linear velocity floppies?

The outer tracks of a disk are longer than the inner tracks, and could therefore potentially hold more data. Constant angular velocity puts the same number of bits on every track, which wastes much of ...
50
votes
8answers
10k views

Why didn't the 8086 use linear addressing?

The 8086 used a segmented memory architecture where the linear address was computed from a 16-bit segment number and a 16-bit offset. This greatly complicated things from a programming perspective. ...
65
votes
4answers
23k views

Why is Windows using CR+LF and Unix just LF when Unix is the older system?

Windows and MS-DOS use the control characters CR+LF (carriage return, line feed) for new lines, while Unix uses just LF. As far as I know CR+LF made sense for systems controlling a real teletypewriter,...
38
votes
3answers
11k views

Were the dungeons in Legend of Zelda designed to fit together?

As can be seen in the image below, the dungeons of Legend of Zelda fit quite well together. Were they designed to be, or is this just a coincidence? Does this make them easier to store, with the ...
49
votes
2answers
24k views

Why were the /\ (min) and the \/ (max) operators abandoned in the C language?

In the UNIX V7 version of the C language (but not yet in the V6 version), there were the /\ (min) and the \/ (max) operators. In the source of the scanner part of the compiler, case BSLASH: if (...