What's the deal with Deno? We talk with a major contributor to find out. Listen now.

New answers tagged

2

More historical folklore... As late as 1978, I worked on META-4 systems at Digital Scientific Corporation that still supported punched card readers, and even had to write microcode to allow the systems to be bootstrap loaded from a single punched card. These systems emulated IBM 1130 and 1800 computers, which were typically booted from a single punched card....


0

The D language supports the maximum precision a platform provides. It has defined these 3 base floating point type float for 32 bits floats, double for 64 bits floats and real for maximum of platform. In the case of x86, it's the 80 bits x87 type. The unusual feature is that the compiler still supports x87 even when generating x86_64 code. In 64 bit mode, ...


1

Wasn't multi-paunch used back in the day when critical data were entered twice by two different people, "keypunched and verified". I recall that there was a verified punch but don't recall the details.


0

A couple of oddities for the sake of folklore: Card punching allowed for multi-punch. That is one could punch a set of holes in a column that did not correspond to any character either BCD or EBCDC. One guy in class used this to make horribly difficult passwords for his account. Until we had an assignment to use an online terminal! No equivalent multipunch ...


1

I don't think the no value of 80 bit is correct. At the time of SSE however, large computational problems were not solved on x86, but rather on risc platforms that provided 64bit addressing capability, alpha, sparc, IBM power, SGI etc. There was also a vast performance gap between the P3 and the risc platforms of the time. All of these provided 64bit doubles,...


1

It's been mentioned already that cards were also used to hold binary data (and programs), specifically, using 2-columns representing 3-bytes. This must have been relatively modern, as prior to the introduction of System-360, IBM's mainframes (IBM 7090 et al) used 6-bit characters, packed 6 to a 36-bit word. I used a (then very old) IBM 7094-II back in the ...


1

I want to boil down this answer to engineering decisions (as are many choices made in engineering). A good engineer works with limits. One limit at the time was cost for producing the chip. More transistors leads to larger chip size leads to lower yield in the production and quickly increasing costs. In order to keep costs down you remove the "expensive&...


2

You have shifting, so there's always some multiplication support.


3

Prior to microprogrammed/PLA-programmed processors, it took an enormous amount of control logic to manage a simple multiply (and forget about even trying floating point). Especially with early single-chip designs there simply was not enough chip space for the control logic. With the invention of microprogrammed processors it became more practical to include ...


1

cost tradeoff vs time to compute faster that is why the 8086 was that way and they had the 8087 if you wanted faster math z80 was just a newer slightly better version of the 8080


5

From the beginning of electronic computation, this was a common design decision when building a computer using minimal circuitry. The Manchester Baby, operational in 1948, had no multiplication hardware. Later, low end minicomputers such as the PDP-8 lacked hardware multiplication. For some, like the PDP11/20, there was an add-on peripheral for it.


4

It seems to be purely arbitrary (or pragmatic) choice of the designers, one of the main factors being the size of microcode ROM or PLA. As an example, I'll take soviet K1801VM1 CPU. Its latest modification, VM1G, does support multiplication. The only change is microcode, not even the size of microcode ROM or PLA. For the reference, look at this reverse-...


11

Slow multiplication implementations made with conventional ALUs and microprograms had another problem. There are a lot of machine cycles to execute a command. So much so that it becomes noticeable with intensive interrupt work. And for 8-bit microprocessors, with the exception of the case with the Atari 2600, working with interrupts generated by the graphics ...


54

You don't need it Multiplying two arbitrary bytes together has limited practical value. (If you want to multiply by a constant you can hardcode the optimal sequence of instructions to do so.) Obviously it would be nice to have but the expense isn't worth it. In an arcade game... you basically never need to multiply a thing. To draw lines or circles, you can ...


60

Fast multiplier circuits as used today take enormous amounts of logic, far beyond what would have been cost-effective (or perhaps even possible) in the mid-70s for an inexpensive microprocessor. Even slow multiplier circuits (as would appear later on chips like the 6809, 68000 or 8086) use a fair bit of logic and would have very considerably added to the ...


7

Commodore released the CBM 8032 in 1980 with an 80 column screen aimed at business users so they would already be using that (or successor models) and accompanying business software well before 1985. There would have been no particular reason for Commodore business users to swap to a C128 and non-Commodore users would be eyeing up an IBM PC or AT by then.


9

Commodore 128 / 128D was capable of outupting 80 columns through RGBi, therefore it could compete with other business machines of the time, but was this the case? Not really. The C128 was introduced in 1985 - a new business machine of that time was x86 based, most likely using a 286 of 6-10 MHz, 512 or more KiB of RAM and a 20 MiB HD. Nothing an 8 bit ...


4

You could see what you were typing, as others have said, because the print head (which was cylindrical) rose up and rotated until the right character was in place, then slammed forward to smack the (simultaneously raised) tape and make a mark on the paper, and then dropped back down. The raise-spin-slam-unspin-and-lower sequence was rather noisy -- and not ...


1

There are a few details with x86 inheritance in PCI : Little Endian only. Big Endian CPUs (such as PowerPCs as default) had to adapt to that bus by using reversed endian instructions, or bus swap hardware in PCI controllers. IO address space. Competing RISC CPUs (PowerPCs, ARM, SPARC...) didn't use IO ports (well in POWER it was obsoleted IIRC), only memory-...


3

All I could find on IBM's website was the following quote: One of the earliest systems designed to provide structure and random access to data was the Generalized Information System (GIS), which was developed at TRW by Dick Pick and Don Nelson. Pick further developed this system into a multidimensional DBMS known as the Pick System, which was also an ...


1

I've seen a half-dozen different schemes for handling single vs double precision. One extreme is to do everything in double precision and then convert to/from that format if single precision operands are used. Another extreme is to break double-precision numbers in half and do multiple operations (that are essentially single precision) on the double-...


1

The early computers were created to do high precision scientific calculations that couldn't be done by hand (practically). The newer computers you mention from the 70s and 80s where business and home computers. And you are mistaken in saying that it was not memmory addressing that motivated the increase in word size from 32 to 64 bits. 32 bits were ...


4

The older devices were intended primarily for high precision scientific applications. The newer ones are intended primarily for multimedia, and don't need so many bits. It's a similar phenomenon to how old computers from the 50s and 60s operated in words of 30~40 bits, which then got replaced by 8-bit bytes adequate for business application.


5

Nobody has really covered the technical aspects of the PCI bus. Until then most busses had been mere extensions of the CPU's memory bus. Zorro was essentially an extension of the 68000 memory bus, S-100 which was just the 8080 bus, and ISA was basically the 8088 memory bus. There were a number of issues with these early expansion busses. These busses used ...


6

To expand a bit on Chromatix’s great answer: if you do all calculations at the highest precision, and convert to and from that, you only need a single FPU on your chip. When you build a floating-point VPU, you’re building multiple FPUs in parallel anyway. It’s the whole point.


7

I believe the only way we can answer this question is by members finding 'the earliest' such description. DEC's first CRT terminal device, the DEC VT05 terminal (1970), had tab stops fixed at 8-character intervals. The DEC VT50/VT52 terminals (1974) had tab stops fixed at 8-character intervals. The DEC VT100 terminal, (1978) which replaced the VT52, had tab ...


22

When you have a small transistor budget, it is considerably easier to design your circuitry around a single representation format - the most capable one - and treat converting other formats to and from it as a separate problem. That's how the 8087 and 68881 were both designed. Today, there are enough transistors sloshing around in the average CPU that ...


3

The answer to your question 1. is YES. Their rationale was a simple and effective business strategy. An approach that sacrificed proprietary control in exchange for market penetration. To illustrate that strategy:- The oil industry presented the automobile manufacturers with a simple but effective common denominator, the petrol pump with its standardised ...


12

The early-to-mid 1990s was a time where the future of the Personal Computer was very much up for grabs. Both the "Wintel" monopoly as a whole, and each part individually, where not at all set to be the foundations of the future PCs. Even if we were to assume that x86 would "win", we had OS/2 and to a lesser extent BeOS as competitors on ...


2

For completeness, here is an example of a punch card in the row-order byte-based Soviet GOST encoding. ,--------------------------------------------------------------------------------. 12 | X X XXXX X XX X X XXX X XX X X X X X XXXXX X X XX XXX| 11 |X X XXX XX X XX X X XX XXXX X X X XXX X XX X XX XXXX X XX X ...


0

Memory and disk space were very short in the olden days. In my first (non-unix) job, most "dates" were expressed as WWY - where WW was the week number and Y was the last digit of the year. So it was natural to use the biggest reasonable date that had a zero in the units year position as a base. Time zones don't matter if you have built a few tonnes ...


16

Short Answer: At the time PCI was devised, the x86 bus had already gone a long way toward being less chip specific. PCI is maybe a clean design, but some choices for signals are still 'intelish' Moving bus definition from following what a certain CPU implementation needs toward a more generic structure opens up more ways for future CPU development than ...


4

Many of such decisions are arbitrary and only guided by major considerations. An OS designer, especially back then, did not sit down for days to muse about the best way, it's all about usability for the given task. T The story might have worked like this: We need a timestamp. Lets take the 60 Hz source. That way 32 Bit is fine to hold a whole year. Cool. ...


0

To answer the main question ("When was internet access first available to public in USA?"), one candidate would be FidoNet, an early popular BBS (Bulletin Board System). According to this history, FidoNet had working UUCP gateways as early as 1986: Although primitive experiments had been conducted earlier, in 1986 gateways between FidoNet and the ...


1

Many early machines processed data in bit-serial fashion, which meant that doubling the word size would reduce the number of words that could be held by a given number of memory circuits, but wouldn't increase the required number of processing circuits. To the contrary, cutting the number of discrete addresses would reduce the amount of circuitry necessary ...


1

Given the small (by today's standards) memory, it was very convenient to be able to include a full memory address within a machine instruction. For instance, Honeywell 6000 assembler instructions looked like this: The first half of the instruction could contain a full memory address, so instructions such as load-register were self contained. The ...


9

I'd have added this in a comment but don't have enough rep. If you read far enough into the IBM history link given by another-dave in his answer, you'll find this quote that indicates the rectangular holes were in fact stronger: As well as handling more data, the unique rectangular hole was stronger [emphasis mine] and more compatible with the wire brushes ...


1

If you punched a wrong character with a key punch - (I have used them...), You could push a rectangular "chad" into a hole (with a bit of spit) and it would be retained sufficiently well to make it through a 600 card/minute card reader. Would this be true for a circular cut-out? BTW This was on ICL (ICT) 1900 machines, so I don't think it was a ...


8

However, there were other possibilities, such as a later IBM format that used round holes. Not only later, but also previous IBM formats used round holes. Similar next to all other contemporary (1930s) manufacturers (Powell, CDC, Honeywell, etc). Intuitively it seems to me that round holes would be better from a mechanical stiffness viewpoint, making the ...


5

As far as I can determine, the earliest tool with a visual cue identifying previously-visited links is Netscape Navigator, which already features purple visited links in beta versions (see this screenshot of 0.9, released in October 1994). I haven’t found any other web browser release available at the time with a similar feature. Competing browsers ...


13

Round holes might have been 'stiffer', but rectangular holes won on packing density. When IBM invented the 80-column card (up from the previous 40-column Hollerith card of the same size), they determined you could get more columns per card by using rectangular holes. IBM's own history describes two competing designs: the 80-column rectangular-hole card we ...


23

Although you have many correct answers describing the nature of the coding used in punched cards, no one has touched on the mechanical properties of the cards. Regular users of punched cards in the past would be familiar with this issue, as getting cards through the mechanics of a fast card reader regularly and repeatedly was a major issue at the time. If a ...


41

TL;DR; Punch card code is not binary but a collection of n out of m encodings. Long Story Yes, really a long story, so I'll only cover the main line from Hollerith to EBCDIC. There are many sidelines for special equipment, situations and as used by different manufacturers. Some covering up to 7 holes but all mostly compatible in the basic Numeric/Alpha ...


28

Uppercase text only needs six bits per character. The fundamental mistake that you are making is assuming that punch codes were binary numbers. They were not. The encodings were patterns, combinations of of zero, one, two, or three holes. This is a reference card in IBM 5081 format: The row numbering was somewhat odd, for historical reasons: 12, 11, 0, 1, ...


5

The code punched into a 12-row card is not a binary code, but actually a form of extended decimal coding. Rows 0-9 are used to directly encode decimal digits, while letters and symbols are encoded as one decimal row plus one "zone row" which could be the A, B or 0 rows. Within the IBM 1401 series, this was re-encoded as an extended-BCD code in six ...


2

The premise isn't entirely true. The IBM 1401, perhaps the most popular computer of the 1960's, used a seven bit word (not including the parity bit). This was a business machine, not a number cruncher. Mainframe computers optimized for scientific and engineering calculations used big words for the same reason that most computer languages of the 21st century ...


0

Early computing was dominated by batch processing, a program would run to completion without waiting for IO devices except storage. When a program was finished the next program (or batch of data) would be run, possibly for a different user. Wider registers and memory or ALUs would make computers faster and therefore requires less computers for the same ...


1

The 8086 addressing wasn't 20 bits, it's actually two 16-bit components (with a 16-bit ALU); those components being a segment and offset. It sounds like 16+16=32, but the actual location was segment*16+offset, and wrapping around at 2^20 (later chips like 80286 allowed not wrapping, see A20 line) Usually this meant that e.g. for an array, you would allocate ...


1

Working from memory and in addition to what everybody else has said, the order of the memory access and SP increment/decrement in the push and pop opcodes changed relative to the 8086 and 8088. This was the standard way of checking whether a CPU was an 88/86 or a 188/186. You could distinguish between the 88/188 and 86/186 by using self-modifying code to ...


3

For clarity, I decided to move the KDF9 part of my question to an answer, since that is what it really is... I have no intention of accepting my own answer. My submission for "most nearly fulfilling the requirements" was Algol 60 on the English Electric KDF9 using paper tape prepared on a Friden Flexowriter. The Flexowriter had two cases of ...


Top 50 recent answers are included