Computer Technology & Electronics

Prototype CPU Mattrix (5x3x2=30 CPUs) designed by Myles Dyson for Syknet (from sci-fi movie Terminator 2) Thinking Machines CM-2 (this is real)

This entire sub-domain is a private effort of free information.
There are no cookies, no advertisements, and nothing is for sale.


Current Items of Interest (most recent first; occasionally pruned)

  1. My Vector Processing information (which includes GPU, OpenCL, CUDA, etc.) was moved here
  2. The Memristor (fourth fundamental electrical device after the resistor, capacitor, and inductor) is discovered 37 years after it was first proposed in 1971
  3. Excerpt from NPR's "Science Friday" program 2007-11-16: I hate my cell phone. I have to admit it's not easy to use. I hate my cell phone carrier because it locks me into a system: It doesn't let me choose the cell phone I would like to use. It doesn't physically play nicely with my computer's calendar or its address book or my other tools that, ideally, would make my life easier. And if I want to change my situation, you know what that's like, if I want to move to another carrier I have to buy a new phone because that phone doesn't fit the next carrier. I have to get a new service with the limitations that are all there. It’s basically like having to start all over again in many cases. And it makes you wonder why can't they make a cell phone that lets me do what I want to do? Let me choose a provider I want to pick. The cell phone I want to pick. Wouldn't you like that too? Well we may be getting closer to that day because first Apple introduced the iPhone that basically puts a small computer in your pocket and that gives you a lot more flexibility. You're still locked into that one carrier so that's not so great. And you're still locked into the goodies that Apple wants to give you and lets you have on their [your] iPhone but last week Google, the search engine king, brought us a step closer dipping its toe into the cell phone world. And not with a full fledged gPhone as they've been calling it, but by helping to develop a set of software tools call Android that can run on many different hand sets with interchangeable parts. And that could allow more flexibility for consumers.
  4. The Software Developer's Rule:
    "Faster, Better, Cheaper." Pick any two but you can never have all three.
  5. Seven Mistakes Made All the Time by Most Software Development Organizations from
    references Bell-Sygma (official IS/IT provider for some large corporations in the 1990s which later merged with CGI of Montreal)
  6. HyperTransport is the biggest thing in computer technology since the invention of the FSB (Front Side Bus). Intel went their own way with Quick Path Interconnect (QPI). Both these technologies were derived from a technology named Common System Interface (CSI) which was developed by DEC engineers for the never-released Alpha 21464 (EV8).

Don Lancaster

David L Jones (EE Video Blog)

Chip Info & Embedded Development Tools

Note: many site links on this page have been replaced with WebRing links

HC11 WebRing '68HCxx' WebRing
[ Join Ring | Ring Hub | Random | << Previous Site | Next Site >> | List All Sites ]
In 2004, Motorola spun off their semiconductor division
which is now known as Freescale Semiconductor
'Embedded Technology' WebRing
[ Join Ring | Ring Hub | Random | << Previous Site | Next Site >> | List All Sites ]
'Electronics Engineering' WebRing
 [ Join Ring | Hub | Random | << Previous Site | Next Site >> | List ]
'Electronics' WebRing
[ Join Ring | Ring Hub | Random | << Previous Site | Next Site >> | List All Sites ]

About My (Neil Rieck) Commercial Embedded Work:

Visit my (Neil Rieck) Computing Bio
Visit my (Neil Rieck) Regular Bio
I designed the electronics and wrote the software for three different "ground-source heat-pump applications" for two Canadian companies no longer in business (fortunately for my ego, the demise of these companies had nothing to do with me or my technological contributions).

(mostly) Software Links

(mostly) Hardware Links

Unix - Linux

 How "UNIX on PDP" and "UNIX on VAX" helped to start Internet

Internet Traffic Map for 1995
Internet Traffic - 1995

Technologies that helped promote 'UNIX on PDP' (which led to the Internet)

Internet Diagrams (to see the dominance of DEC hardware)

Internet Block Diagram Notes
ARPANET Logical Map, April 1971
  • ~ 50% PDP platforms
  • only PDP platforms at BBN
  • notice the TX-2 (predecessor of PDP) at Lincoln
  • only IBM at RAND (D.O.D.)
ARPANET Logical Map, September 1973
  • ~ 50% PDP platforms
  • notice the TX-2 (predecessor of PDP) at Lincoln
  • only PDP platforms at ARPA
ARPANET Logical Map, January 1975
  • ~ 50% PDP platforms
  • notice the TX-2 (predecessor of PDP) at Lincoln
  • many more universities and defense contractors
ARPANET Logical Map, March 1977
  • PDP, DEC System 20
  • only PDP at the Pentagon
ARPANET Logical Map, March 1979
  • PDP, DEC System 10, DEC System 20
rfc801 from 1981
  • mentions VAX
  • mentions LSI-11 (uPDP used as a message router)
diagram from 1986
  • notice the solid blocks labeled "LSI-11"

Other Links

How "UNIX on VAX" helped promote TCP/IP

Internet Stuff - HTML, JavaScript, RSS, XML, SOAP, UDDI, HTML + CGI, Perl, BASIC, etc.

RFCs + Ports

DNS registration

DNS Other




C/C++ Compilers

Mostly free development tools

BASIC Compilers and Interpreters (the language that never dies)

Mostly free, Vanilla (non GUI) BASIC tools:

Modern BASIC compilers for Windows + Linux:

Other BASIC Links:

Suggestions to people maintaining/reviving BASIC compilers for smaller platforms:

According to Wikipedia, BASIC was designed in 1964. The main problem with BASIC compilers nearly a half century later is there are more differences than similarities. This is partly due to the fact that this language never went through a standardization process like COBOL, FORTRAN, C and C++. The following suggestions come from HP BASIC for OpenVMS. Here is a link to their documentation files:

Comment: To make matters worse, the largest vendor of BASIC languages tools, Microsoft, made a very wise decision (IMHO) to modify Visual-BASIC-6 so it would be able to link to internet-aware software written in other languages (like C++, Java, and C#) and vice-versa. This means that now (wisely) starts every array with subscript zero; replaces BASIC's internal string data-type with the string object (found in C++, Java, and C#), etc. While this move "broke" a lot of VB6 code, most enterprising programmers looked upon this transition as a business opportunity. But I think this paradigm shift has moved the goal posts for BASIC compilers from other vendors. Now those vendors need to decide to evolve or, like the dinosaurs, be left behind.

Suggestion #1

All programs (applications) need a mechanism to signal "success/fail/whatever" to the calling program or script. By default, many BASIC programs signal "0" (if UNIX) or "1" (if OpenVMS) when the END statement is encountered.
Some BASIC compilers allows the programmer to exit with a signal like this:
     END exit_code%               ! this code is sent back to the caller
while HP-BASIC does it like this:
     END PROGRAM exit_code%       ! this code is sent back to the caller
Yep, HP-BASIC uses a similar syntax to exits all block-oriented statements (END IF, END SELECT, END FUNCTION, END SUB, END WHEN, END PROGRAM, etc.)
 Suggestion #2
Anyone who has used C++ will be familiar with the exception handling statements: try, throw, catch. Anyone who ever used BASIC would be familiar with the statement ON ERROR GOTO. However, not many BASIC programmers know that some BASIC compilers also support C++ style exception handling which looks like this:
1000	on error goto common_trap	! old school exception handling
	when error in			! works like try
	input "input a number?", junk%	!
	  if junk% = 999 then		!
	    cause error 52		! works like throw
	  end if			!
	  status% = 0			! all is well  
	use				! works like catch
	  status% = err			!
	end when			!
	select status			!
	  case 0			! no error
	  case 50			! data format error
	  case 51			! integer error of overflow
	  case 52			! illegal number 
	  case 151			! EOF
	  case else			!
	end select			!
	print "error "+ str$(err)
	print "line  "+ str$(erl)
	print "text  "+ ert$(err)
	input input "hit <enter> to exit"; junk$
	end				!

Suggestion #3

All BASIC compilers should use a standard method to modify compiler action. For example, HP BASIC uses the OPTION statement to require every variable to be declared.
1000 option type=explicit	! all variables must be declared (catches programmer typos)
     declare long i%, j%	!
     if i > 0 then		! this line will throw a compile-time error
     end if			!

Suggestion #4

All BASIC compilers need a standardized way to do ISAM file i/o (sequential, relative, indexed). While it is true that HP-BASIC requires a layered product called Record Management Services (click here to see some demos), UNIX offered similar capabilities through products like:
Wouldn't it be cool if these BASIC's had built-in extensions for ISAM plug-ins and/or relational products like MySQL

DLL Examples for novice Windows programmers

What is a DLL? Many Windows applications, and Windows itself, are built built as a collection of callable DLLs (Dynamically Linked Libraries) rather than static executable binaries. For examples of this, check out the size of MS-Internet Explorer (IEXPLORE.EXE) which is only 89K, or the size of MS-Outlook Express (MSIMN.EXE) which is only 56K, yet both programs call the same "HTML rendering engine" which is implemented in the system DLLs. When you've got Outlook Express running at the same time as three instances of IE, there is only one set of DLLs loaded which definitely saves memory.

DLL Examples Description Development Platform
dll demo 1: empty project two small C++ functions without DllMain() Visual C++ version 6.0
Visual C++ version 7.1 (a.k.a. ".NET 2003")
dll demo 2: simple project two small C++ functions with DllMain() Visual C++ version 6.0
dll demo 3: example application DiskFree.cpp Visual C++ version 6.0

Note: As most C++ programmers already know, C++ parameters are type-enforced by name mangling. While this causes no problems if C++ applications are calling C++ DLL routines, applications written in other languages will not be able to call a DLL written in C++. In order to get around this obstacle you must disable name mangling of exported names by surrounding the whole C++ source in a "C" wrapper like so:

extern "C" {
    [ ... whole c++ DLL source goes here ... ]

Alternatively, you could write your DLLs in "C" but this may not always be possible.

Open Source Projects

Museums + Emulators

Apple-2 Forever (8-bit forever)

Apple-2 Links 

Miscellaneous Links

Cryptography + Steganography

 Moved to: OpenVMS Notes: Cryptography

FFT, DSP, Compression + TV Links

Electricity - Electronics (back to basics)


I first learned the principles of electricity-electronics in the 1960's but ever since y2k I have come to the conclusion that was only a working-knowledge, not anything grounded in physics. In fact, many of the electrical principles described by physicists seem (to me) to be lacking. So I have been looking for better explanations.

Odds 'n Ends

A few noteworthy articles for budding STEM students

A Few Thoughts


Physicists were divided for more than a century as to whether light was a particle or a wave. Then Einstein said it was a particle (photon) and used it in his explanation for the photoelectric effect. Scientists and engineers say that all radio waves are are a form of EM (Electro-Magnetic) radiation, and this includes visible light. So my question was: at what point does an oscillating electrical signal in a transmitting antenna emit photons?

Provisional  Answer: Photons per se are not real. We use the label "photon" to describe EM waves where the wave-length is less-than the size of an atom.


When I first learned about electricity, it was described like billiard balls moving from atom to atom. This must be true on some level because in nerves, an electro-chemical wave moves from one end to the other. Something similar happens in copper wires connected to a chemical battery (no chemical energy, no current). But something different must be happening with a DC-generator (magneto) or an AC-generator (alternator).

{ or perhaps we need a better general explanation }

Provisional  Answer: Each electron is surrounded by an electric field. Valence electrons are affected by the EM wave caused by moving electrical energy. In this case, the wire behaves like a wave-guide where all the individual electric fields move simultaneously together. This wave moves close to one-tenth the speed of light which drag the electrons behind it. These electrons will resist movement which generates heat.

Click Dilbert Zone for the latest "reality check" from our hero

Back to Home
Neil Rieck
Waterloo, Ontario, Canada.