Integrated circuits
- Integrated Circuits ("Chips") are made of a mind gobbling amount of switches.
- These switches are not mechanical, they are switched by a electric current.
- They are made of semiconducting materials. Silicon, germanium and gallium are semiconductors.
- Silicon is a mayor constituent of sand (silicon dioxide) which is cleaned and heated and than soiled again :) which is called doping.
- Without doping, silicon is non conductive!
- Doping = mixing silicon (Si, 4 electrons in the outer shell) with e.g. boron (B, 3 electrons) or phosphorus (P, 5 electrons).
- Electrons are negatively charged (see chem4kids for more info).
- Electrons travel from - (many electrons) to + (less electrons). Mother nature LOVES balance :)
- Si+B creates an electron-gap, because Si = 4 electrons, but B has only 3 to offer. Si+B is called p-doped, because it's positively charged (less negative electrons!) It's an electron acceptor.
- Si+P = n-doped Si, n stands for negative because phosphorus has 5 electrons (more than needed for connecting to the Si-crystal). More electrons = more negative! It's an electron donator.
- p-n-p or n-p-n-layers create microscopic switches called transistors.
- Such layers are created by etching & printing - with masks like on a silkscreen-printed shirt. Only that this high-end-printing needs a factory worth billions.
- Many chips in 2019 are build in a 10-nanometer-process. Intel for instance crams 100 Million transistors in something like this ▪ , in one square millimetre (source)!
- One of the main components of a integrated circuit: The accumulator. It's just a fancy name for a register, which is a fancy name for a space to store numbers. Even old mechanical machines feature them:
Low-level programming
in a Nutshell
- A CPU doesn't understand/remembers anything, it depends on and reacts to electric currents.
- A program is always a sequence of high and low voltages - on your Harddisk, in the PC-Memory or while you are typing it in. The software converts those electrical signals into human-readable text.
- Machine Language = Binary = 1010 1001.
- Operation Code/Opcode = Hexadecimal/Hex = A9. Opcode is simply an easier to memorize, shorter spelling of a binary number (see History).
- Mnemonics = english abbreviations = LDA = Load Accumulator. Mnemonics are even easier to remember and assigned to hex-numbers by a software called Assembler.
- So "Load Accumulator" = LDA = A9 = 1010 1001 (Chip: 6502).
- Each command in op- or assembly-code has exactly one hardwired CPU-equivalent on transistor-level.
- There are no convenient commands like "draw circle" etc. in assembly, everything has to be build "from ground up". But nobody has/had to reinvent the wheel - Magazines & Books were and the Web is full of routines and algorithms for all kind of tasks. But the interesting part is that you MAY reinvent the wheel - and find a faster, better, shorter way to achieve your goal!
- Each processor has it own unique set of opcodes - they are listed in the official manual of the processor. If you want to look up "A9", click here.
- 6502 assembler is a language with only 56 (official) words (here is a overview) - of whom you mostly need only a few (25 to write PONG).
Basic Language
in a nutshell
Many concepts in programming remind of working with spreadsheets: The memory is basically a giant grid, with addresses like the cells in Excel & Co. have. All cells can be connected to, and influence, each other. Many, if not most, BASIC-commands (Keywords) have equivalents in the spreadsheet-world and vice versa! Here are some of the main ingredients of a (C64) BASIC-program (and a spreadsheet):
- Variable: a symbolic name associated with a value that may be changed.
- Constant: a non-varying value.
- Array: an arrangement of Data at equally spaced addresses in memory.
- String: sequence of alphanumeric text. A variable containing strings is indicated by the "$"-suffix.
- Flag: a true/false, on/off or open/closed indicator (called boolean variable)
- Loop: Function that enables the execution of code one or more times (Link).
Computing History
in a nutshell
- 1605: English philosopher and statesman Francis Bacon devises a very binary method for hiding secret messages called "baconian cipher".
- 1614: Scottish mathematician and physicist John Napier realize that the multiplication and division of numbers could be performed by addition and subtraction.
- 1705: German polymath and philosopher Gottfried Wilhelm Leibniz publishes "Explication de l’Arithmétique Binaire".
- 1847: Englishman George Boole publishes his book "The Laws of Thought" - the foundation of boolean (and transistor) logic.
- 1874: German physicist Karl Ferdinand Braun discoveres and document the semiconductor diode effect.
- 1926: The austro-hungarian physicist Julius Lilienfeld patents a “apparatus of controlling electric current”, the first transistor
- 1935: The german electrical engineer Oskar Heil patents a way of controlling the resistance in a semiconducting material with an electric field.
- 1941: German engineer Konrad Zuse builds the world's first programmable, fully automatic digital (but still electro-mechanical) computer, the Z3.
- 1942: The german rocket-engineer Helmut Hölzer builds the world's first electronic analog computer
- 1943: The austrian scientist Dr. Paul Eisler creates the first printed circuit board (PCB)
- 1946: The american engineers/physicists John Presper Eckert und John William Mauchly introduce the first electronic general-purpose digital computer: ENIAC.
- 1948: John Bardeen, William Shockley and Walter Brattain of Bell Labs invented the point-contact transistor. It was independently invented in the same year by german physicists Herbert Mataré and Heinrich Welker.
- 1949: The german physicist and engineer Werner Jacobi patented the integrated transistor amplifier.
- 1956: The term "byte" was coined by german-american Engineer Werner Buchholz. It is a respelling of "bite" to avoid accidental mutation to "bit".
- 1958: The american electrical engineer Jack Kilby patented the integrated circuit. Robert Noyce also worked separately on the invention.
- 1959: Mohamed M. Atalla and Dawon Kahng engineer the metal oxide silicon field effect transistor (MOSFET) at Bell Labs. It was the first truly compact transistor that could be miniaturized and mass-produced.
- 2007: iPhone
Footnotes:
- But How Do It Know? By J. Clark Scott (Amazon)
- Code, by Charles Petzold (Amazon, #ad)
- Lovelace and Babbage, by Sydney Padua (Amazon)
- The Soul of a new Machine (PDF), by Tracy Kidder (Amazon)
- Western Digital's Datasheet for the 6502 (PDF)
Picture left: Blender & pxhere.com/en/photo/1173045
Picture of the Walther WSR-16 mechanical calculator: By Mister rf - Own work, CC BY-SA 4.0, LINK
Picture of the Walther WSR-16 mechanical calculator: By Mister rf - Own work, CC BY-SA 4.0, LINK