Why is ASCII this way?
First of all, there is no one best sorting order for everything. For example, should UPPER or lower case be first? Should numbers be before or after letters? Too many choices, and no way to please everyone. So they came up with specific pieces that "made sense":
0x30–0x39 - Easy bit mask to get your integer value.
According to ASA X3.4-1963 Appendix A, one of the design considerations was:
(7) Ease in the identification of classes of characters
A4.4 The character set was structured to enable the easy identification of classes of graphics and controls.
And on page 8:
A6.3 To simplify the design of typewriter-like devices, it is desirable that ...
Why is the clock frequency of the PS/2 keyboard protocol so high?
I wouldn't call it high. It's quite in line with similar keyboard speeds - like Amiga operating a 17 kHz.
At 11 bits per scancode, 10 kHz is a massive 909 scancodes per second. World-record holder Barbara Blackburn peaked at 216 wpm ≈ 18 cps ≈ 54 scancodes/sec. on a Dvorak keyboard layout. ...
This was a good piece of production engineering.
IBM expected to sell lots of twin-floppy PCs, even after the launch of the XT (personal experience in a UK reseller in late 1984).
To assemble a twin-floppy PC and have the drives respond correctly to the drive select wires in the cable, there are four choices:
Pay the drive supplier to jumper "left"...
Yes, huge safety concerns as I remember engineers sitting inside the cabinets of large mainframes while it was running, fully powered, large currents in each cabinet powering fans. Cooling water being pumped through the frames. Huge wiring looms hanging across the floor to great logic analysers on wheeled trolleys; trip hazards.
One person regularly smoked ...
What reasons would CPU designers have for choosing these different approaches?
It depends on what the designers intended to mark a valid bus cycle, which is the 'leading' signal for decoding. In a more general way, it's the design view of the bus.
Common ways (*1) are:
The 8080 way - Marking a cycle by a one of several (*2) dedicated signals marking the ...
As far as I am familiar with the genesis of the IEEE-754 floating-point standard from the literature, G. W. Stewart never looked at implementation cost for the support of gradual underflow. He was tasked with examining its claimed advantages to floating-point computation from a numerical analysis viewpoint.
Charles Severance, "IEEE 754: An Interview ...
The user will perceive a delay (latency) between pressing a key and seeing the computer react. The reactions are usually on its screen, such as displaying a typed character or motion in a game.
This delay must be kept short for the user to have a feeling of sharpness in the computer's reactions. The delay is the sum of (a) the keyboard scanning interval and ...
man 7 ascii of Linux Programmer's Manual says,
Uppercase and lowercase characters differ by just one bit and the ASCII character 2 differs from the double quote by just one bit, too. That made it much easier to encode characters mechanically or with a non microcontroller-based electronic keyboard and that pairing was found on old teletypes.
From the patent, "Integrated circuit microprocessor with parallel binary adder having on-the-fly correction to provide decimal results" (US3991307A) by Peddle et al. in 1975:
It is desirable in microprocessors to improve the speed by reducing the number of cycles necessary to perform a given operation. However, it is also desirable to have a ...
It starts with discussion about computers overheating,
That discussion seams to include some quite vague memory, so I wouldn't put to much into here. Still, such buttons were available and even installed after market, depending on company or state regulations. A CRAY Y-MP EL used at TU München is a great example, with its big power off:
(Picture taken from ...
Because there were spare pins otherwise.
Because sometimes this could make the design simpler.
As an example, I'll put again schematics of a russian ZX clone, for example this one, named "Leningrad". All other clones with single DRAM set are made in a similar way.
The inputs of DRAM chips (D21..28, labelled as 565RU5 -- russian analog of 4164) are ...
This chart (showing the hexadecimal values of ASCII characters) outlines manassehkatz's answer graphically:
Numbers are at 0x30 + the value of the number
Capital letters are at 0x40 + the value of the letter (A=1, B=2 etc)
Lowercase letters are at 0x60 + the value of the letter.
There seems to be some confusion about how this worked clouding the categorization of what to call it.
Let's compare the interfaces between how Shugart designated signals at the drive (and how other makers used them) vs how IBM re-designated them at the controller in order to support the twist idea. (I've used A and B on the IBM version to reduce confusion)
[Insert: Some site history While the German subsidiary (Commodore Büromaschinen GmbH), originally set in Neu-Isenburg near Frankfurt, had facilities for import handling and distribution, this was soon moved to a distribution center in Braunschweig and accomplished by a final assembly line and a development center. At the same time the company moved into ...
Because $foo may itself start with a hyphen and look like an option or an operation, which would cause misinterpretation of the command line. Using -z or -n guarantees that no matter the contents of $foo, it will never be interpreted as an option.
The BSD 2.11 man page for test says: The test grammar is inherently ambiguous. In order to assure a degree of ...
The keyword was inherited from B.
B was a programming language with no type system at all: every variable held a machine word (corresponding to the int type in C), and the type of each value was determined by the operation performed. Since there was no type to specify for variables, the only thing to declare about a variable was its storage class; unlike in ...
Suppose one is considering adding something to the specifications of a car that will, on 1% of units manufactured, extend the time required to perform some fabrication step by ten seconds. How much should that be expected to affect the cost of a car?
If cars are being assembled individually, the extra cost would be trivial. An average of 0.1 seconds per ...
Given that those files are not regular executables, why were they given the COM extension in the first place?
They are executable files. They are loadable binary images. In so far they are exactly like COM files, except, when loaded, they are not loaded at offset 0100h, after a prepared PSP, and started with CS:IP as segment:0100h, but segment:0000h. ...
15.667 Mhz is about 2% less than 16 Mhz. So for purposes of "multiple of max. MC68000 frequency", it is close enough. The Mac wasn't competing based on being the fastest machine, so 2% was just not a big deal. And most of the competition was either older 8-bit or Intel family, not MC68000. In fact, the 8088 in the original IBM PC was clocked at 4.77 Mhz, ...
Having the desired pins aligned on the pin out nicely enough to make this happen suggests, that this was intentional at least to some degree.
Since the pinout is an IBM one, made especially for the IBM PC (*1), and this twisted cable was used from the very first PC model, it's pretty clear that it was done on purpose.
hack or intended design?
Can anyone explain how separate data inputs and outputs for RAM would be useful for a computer system designer?
There are several advantages:
Timing is only defined by address transfer
No additional requirement for access timing
Outputs is static, only defined by address input
No specific bus structure required
Any bus adaption (latches, buffers) ...
Definitely a hack. A systems with floppy disk drives had separate selection wires in the connection cable, where one of them was to choose between on of 2 or 4 drives connected in parallel. There was a jumper on the drive to activate one of these wires resulting in an address.
Setting up this jumper was somewhat error prone and also extra work. The trend was ...
The argument from consistency:
The majority of test commands are of the form -flag value.
For example, test -e foo.bar - does file foo.bar exist?
test -n "$VAR" fits into that model, and is therefore consistent.
The first mention of test I could find in 'man' pages is to this link to the PWB (Programmer's Work Bench) shell aka Mashey shell, it in ...
At CMU in 1968-69, we had an IBM 360/67, with the big Emergency Power Off switch at the bottom right corner of the blinkenlights panel.
It also had an 8" wide "THIMK!" sign atop the panel.
One midnight shift, the paper ball struck the "THIMK!" sign, which fell on the EPO switch.
In the morning, after the IBM Field ...
Oldstyle ASR-33 teletype machines (telex machines) only handled 7-bit codes. They only handled uppercase English-language characters, the ten digits, and some punctuation.
They printed with this little cylindrical print head with a limited number of characters available.
Later, tonnage of terminals, both printing and screen-based, came on the market using ...
I’d assume auto was never popular in C in the first place, as int is one character shorter, so everyone declared the type anyway.
Some of us more anal retentive types always used "auto":
auto int x;
auto int y;
as two lines, never as:
int x, y;
It made it much easier to find all the declarations by simply ...
The CBM900 came before PC10, the prototypes were sent out early 1984 (I started in Commodore Denmark on august 1st 1984 with half the job being supporting the CBM900).
I believe we got the first PC10 prototypes in early 1985, but they were embargoed because the BIOS was too identical to IBM's for legal comfort.
The 900 were designed in US, but the prototypes ...
There are three common control-signal patterns for devices that can read and write information:
The three-pin control pattern: /CS, /OE, and /WE. Any time chip-select is high, all other pins will be ignored. If chip-select and write-enable are low, /OE will be ignored and the device will write to the indicated address. If chip-select is low, write-enable ...