823 karma · joined February 26, 2014
To push a technology like DUV (deep ultra violet) further and further requires multi-patterning, which means several masks for a single processing step.
For EUV (extreme ultra violet) no material is transparent so the masks are actually mirrors. With 40 alternating silicon and molybdenum layers, each the exact thickness to match the 13.5nm wavelength, you can reflect enough of the EUV beam to get the job done. Making such a mask is a lot more expensive than one that is basically a glass photographic plate.
The time to actually write a mask has gone up by a large factor, as you mentioned.
The combination of all the factors increases the cost of the masks from a few thousand dollars for 1970s technology to many millions today.
Given the buzz around Java they did a quick demo showing that language running on top of their technology, and in 1997 Sun bought them to use that HotSpot technology in their main Java implementation. So they paid a lot for what they previously already had but ignored.
Sun's reaction was to adopt "only Sparc, only Solaris, only Java forever and ever" as their roadmap, publicly killing SpringOS, Tcl, Self (programming language) and so on. That did make the clients happy.
https://dl.acm.org/doi/abs/10.1145/512760.512761
In the citations there is a 1970 paper "An APL Machine" which had some techniques which might or might not be considered a JIT.
https://en.wikipedia.org/wiki/LCC_(compiler)
It is half way in complexity between TCC and GCC or LLVM and was created to be educational. I think there are major differences between more recent versions and what it described in the book.
https://web.archive.org/web/20190102164746/http://www.byrdsi...
and the picture "Turbo 6502" in the slide show at the bottom of that page.
One problem with saying they had written it was that clients would report bugs which they would forward to Quantum (much later renamed to QNX Software Systems) but nothing would happen. When I produced the decompiled sources it took me a single afternoon to fix the pending bugs and implement the feature requests.
The first step was to disassemble the binaries. As an OEM Softec had access to the .obj files so they could link in new drivers if needed, and those included the symbol tables giving me at least the function names. The C compiler didn't do any optimizations, so compiling a few sample programs was enough for me to then read through the assembler while typing in C and adding comments as I went along.
The version I worked on was called 1.1e even though versions 1.2 and 2.0 (which was just 1.2 plus networking) were available.
The overall idea for QNX (originally QUNIX) was solid, but early implementations were not so nice. In 1.1e it was possible to see that a lot had been fixed from earlier versions, but there still were a lot of problems. The File Manager was responsible for decoding executable files (the Task Manager should have done that instead), for example, and most of the functionality that should have been in the shell were hardwired into the Task Manager instead. This was greatly improved in version 1.2 which I looked at though I didn't decompile.
Even in version 1.1e, running QNX on a 256KB PC with floppies only was way nicer than other Unixes on much beefier machines. Each version was much better than the previous ones so by the 1990s the QNX people saw was a different experience than what was on those old machines.
A key transition was moving from the 1 and 2 layer printed circuit boards of 1970s e cheap 1980s computers to 4 layers like in the IBM PC and Apple Macintosh. The difference a ground and power plane makes in the waveforms is simply amazing.
That is exactly what happened. A friend showed Woz how to access the Arpanet so he decided to build his own terminal. That was working before he started the Apple I, which simply added a built-in computer to the existing circuit.
In a similar way, the 1980 Decmate and the 1977 VT78 simply added a microprocessor version of the PDP-8 to an existing terminal (VT100 and VT52, respectively).
The largest component is cascading taxes. There are some rules which allow you to get a discount on taxes of products you sell based on taxes of the components you bought, but in general each step in production and distribution will pay taxes on the incoming values including all previous taxes. That means that you look at a product in a store and think that the price includes 18% state taxes which doesn't sound so bad. But if you could trace it back through the supply chain all the way to mining the raw materials you would see that about 60% of the price is tax.
This, by the way, leads to the ironic situation where poor people pay way more taxes than rich ones even though the law is supposed to implement "progressive taxes". So the poor person is in the 0% income tax bracket but spends nearly everything they earn on stuff with hidden 60% taxes in them. The rich person is in the 35% income tax bracket but only a fraction of that income goes to products while much of their expenses have little to no taxes.
Other sources of "custo Brasil" are losses in transport due to bad infrastructure and crime, having to hire extra people to deal with complex regulations, costs due to delays and things like that.
For digital storage the data can change quite a bit before a 1 becomes 0 or vice-versa, but for analog even a small change can be a problem. So I don't know if we can extrapolate the typical Flash memory data retention number to the expected aging for this device.
Instead of just sitting around discussing vague ideas they thought it would be interesting to design and build something to showcase their ideas, so the "ten thousand year clock" was proposed. It is amazing how many problems you have to solve to build a clock that has even the slightest chance of still be running ten thousand years from now.
A side effect of the clock project was that some of the dates involved would have five digit years, so they thought using five digit years for current dates would be a good way of shocking people and exposing them to their ideas.
The 6502 takes 1 clock cycle (which might be stretched if needed) to access memory and can read or write 1 byte; At 2 MHz the 6502 in the BBC has a memory bandwidth of 2Mbytes/s.
So going from the 6502 to the 68000 would only get you twice the performance. But the 68000 takes many more clock cycles to handle an interrupt compared to the 6502 and since the BBC Micro was designed around interrupts instead of DMA this would eat up all the performance gain. This was true of the 16 bit micros from National, Zilog and Intel as well.
The ARM2 takes 1 clock cycle (which can be stretched if needed) to access memory and can read or write 4 bytes. In addition, it can tell memory if the next access will be random or if it will be at the address following the current one. DRAM has to slow down the processor for random accesses (a RAS cycle followed by a CAS cycle) but can work at full speed for sequential accesses (just CAS cycles). That means that sometimes the ARM2 runs at 4 MHz and sometimes at 8 MHz - supposing an average of 6 MHz is very reasonable. So we are talking about a bandwidth of 6Mx4 = 24Mbytes/s. That is 12 times faster than the 6502 and 6 times faster than the 68000. And the ARM2 has a normal interrupt that is very fast plus a fast interrupt that is instantaneous.
Note that in theory you need "2MHz" DRAMs for the BBC's 6502 or an 8MHz 68000. But in practice if you want to share the memory between video and the CPU you will need 4MHz DRAMs. Which is what the ARM2 also uses, but without sharing with video. The solution is to fetch the video in chunks using the sequential CAS-only mode, put it in a FIFO and then feed the video that instead of directly. Which is what the MEMC/VIDC companion chips for the ARM2 did. Now the video still slows down the processor, but doesn't hog 50% of the bandwidth.
Until recently "FPGA" was used for tile based architectures and "CPLD" for macroblock architectures, but marketing has redefined the terms such that small FPGAs are now called CPLDs if they are non volatile (they are already configured when you turn them on).
https://github.com/hneemann/Digital
You can export your project as a Verilog file that can be used in the various FPGA tools.
https://en.wikipedia.org/wiki/Convertibility_plan
The Real Plan in Brazil created a three month period with a combination of the old currency (Cruzeiros Novos) and a new virtual one (URV - Unidade Real de Valor) with an official daily exchange rate between them. This rate was selected to keep the URV at almost exactly 1 U.S. dollar but when both were replaced by a new actual currency (the Real), that was officially allowed to float relative to the dollar.
The real did initially get slightly valued relative to the dollar (an exchange rate of 1 R$ = 0.85 US$, for example) but floated slightly up and down until the end of 1998 when it suddenly jumped to 2 R$ = 1 US$ in order to block a huge wave of speculative money that was destroying economies around the world (having previously hit Russia, then the Asian Tigers).
Considering that the entire revenue for IBM in 1964 was $3.2 billion (1964 money), spending $5 billion on a project (over several years) was certainly a "bet the company" move.
https://stefan-marr.de/renaissance/
https://github.com/smarr/RoarVM
This was a research project so performance on a single core was poor compared to the official Squeak virtual machine, but it was an interesting exploration of the natural fit between objects/message passing and multiple cores.
In the case of Smalltalk, it was Digitalk's "Methods" (the precursor of Smalltalk/V) that adopted := for assignment in place of the left arrow (though the IBM PC character set actually had one, just not with the same code as ASCII 1963) since all of its tutorials were aimed at Pascal programmers.
Simula-67 introduced inheritance, which Smalltalk-72 and -74 didn't have. Many people see it as a key OOP feature, which Smalltalk-76 added.
Kristen Nygaard, who with Ole-Johan Dahl had created Simula, was one of the creators of the very pure Beta programming language.
https://en.wikipedia.org/wiki/BETA_(programming_language)
This took the message passing syntax in a very different direction:
message -> receiver Jack, clean the shelves.
Helen, sort the reports.
Lucy, turn on the printer.
You can see that the receiver of each message is the first thing in each line while the message follows it. That is the syntax of imperative expressions in English.If your name is Kevin and you are the one sending on the messages, where is "Kevin" in the above text? And you sent three messages and yet there is not a single "send" command to be seen.
Here is a less trivial example:
Jack hire a carpenter build cabinet store reports.
This is not valid English, but is a valid Smalltalk-72 expression. A variation which would have the same result is: ((Jack hire a carpenter) build cabinet) store reports.
The first message requests that Jack hire a carpenter. The result of the message is a carpenter who is not named by us, but which we can tell to build a cabinet. The result of this second message is a new cabinet, which we did not name either but which can be asked to store the reports.So Smalltalk got its syntax from English and that inspired OOP languages that followed.
Smalltalk/V was distributed as a nearly empty v.exe file plus a list of .dll files. As you developed your code it would get added to the v.exe so your stuff would always be clearly separated from Digitalk's. The .dlls were divided into two groups: basic system and development. The license allowed you to freely redistribute all files except for the development .dlls. If a client of yours wanted those for some reason they would have to buy their own Smalltalk V/DOS from Digitalk.
Except for the source to bytecode compiler, which was secret, the rest of the development system's sources were available. That meant that I didn't actually need Digitalk's permission to do what I wanted since I mostly wanted their sources (I had no idea how much Xerox would charge for the "real" Smalltalk but supposed it would be a lot more than what Digitalk might agree to). But I didn't want to take advantage of their not so well thought out license and upset them. Jim said he didn't think I would be able to port their stuff to the 68000 and didn't give permission for me to try, so I just went in a different direction.