Design Con 2015
Breaking News
Comments
antedeluvian
User Rank
Blogger
scanner?
antedeluvian   1/6/2014 1:52:01 PM
NO RATINGS
I came across a post that describes how to read vinyl records using a scanner. Surely is must be easier to create some software to read paper tape on the scanner (or something else). I did a Google search and found how to read a punch card  with a camera. There is an Arduino Punch Card Reader

Any volunteers?

Max The Magnificent
User Rank
Blogger
Re: scanner?
Max The Magnificent   1/6/2014 2:18:42 PM
NO RATINGS
@Antedeluvian: I came across a post that describes how to read vinyl records using a scanner.

This is AMAZING!!!

Max The Magnificent
User Rank
Blogger
Re: scanner?
Max The Magnificent   1/6/2014 2:19:52 PM
NO RATINGS
@Antedeluvian: Surely is must be easier to create some software to read paper tape on the scanner.

If the program were only a couple of feet long ... maybe ... but what if it's 100s of feet long?

David Ashton
User Rank
Blogger
Re: scanner?
David Ashton   1/6/2014 2:48:39 PM
NO RATINGS
@Max....even if your KSR33 does not carriage return and line feed, it should be able to read the tape and send the codes out on the RS-232 line to a PC which can then record them.  However, depending on the state of your KSR, banging the print carriage against the end of the line might do some damage....I doubt it though, they were pretty rugged beasts.

Alternatively you could get 9 IR leds and 9 IR photodiodes and make your own reader,  You will note that the feed holes are smaller than the data holes, this is so the position detecting photodiode will not sense the hole until it the data holes are well and truly aligned...like this

Data _______/""""""""""\_________

Feed __________/"""\___________

Sorry...tried to post a nice graphic but it would not do it.....

You'd have to get a small MCU to read the 8 data lines when the feed hole is detected, and then send it off in serial form to a PC.  You'd also have to make up a guide to keep the paper tape straight as it passed your detector.

I could whip something like this up with a PICAXE but I don't have any paper tape.   It also strikes me that you may have to find very small LEDs / diodes or file down some 3mm ones to fit......

BTW if the tape is only a few feet long you could read it manually. I have a graphic with the codes but no doubt that would not post here either....

Max The Magnificent
User Rank
Blogger
Re: scanner?
Max The Magnificent   1/6/2014 2:56:43 PM
NO RATINGS
@David: Actually, this would make a great project for your PICAXE -- you wouldn't need multiple LEDs -- just one light source underneath the tape and then a bunch of photo-diodes on top.

 

Re having to file down large photodiodes, you could always stagger them like:

0

   1

2

   3

4

   5

6

   7

Such that diodes 0,2,4,6 were reading one row of holes while diodes 1,3,5,7 were reading the adjacent row -- then when you progress the the next row you can assemble the data from the previous row... if you see what I mean.

You wouldn't need a motor -- you could just pull the tape through by hand.

So, when do you think you will have this built? LOL

 

David Ashton
User Rank
Blogger
Re: scanner?
David Ashton   1/6/2014 3:02:59 PM
NO RATINGS
@Max....

> "you wouldn't need multiple LEDs -- just one light source underneath the tape and then a bunch of photo-diodes on top."

Yeah. there's more than one way to kill a cat.....

> "Re having to file down large photodiodes, you could always stagger them like:"

That would make ofr some interesting programming.  Of course in the good old days you could buy banks of photodiodes manufactured expressly for this purpose.  Maybe Mock has some?

> "You wouldn't need a motor -- you could just pull the tape through by hand."

Yep, the feed hole pulses would tell the MCU when to read the data, no matter how fast or slow the tape was going.

> "So, when do you think you will have this built? LOL"

Oh ye of little faith!  send me some tape and I'll see what I can do.....

zeeglen
User Rank
Blogger
Re: scanner?
zeeglen   1/6/2014 3:59:49 PM
NO RATINGS
>Of course in the good old days you could buy banks of photodiodes manufactured expressly for this purpose.

Or glue large-core plastic optical fiber into a "ribbon cable" at one end to match the hole spacing and guide the light to whatever-size photodiodes.


rfindley
User Rank
Rookie
Re: scanner?
rfindley   1/7/2014 12:40:03 PM
NO RATINGS
A single LED (point light source) will cast an image through the holes that expands the farther you go from the tape.  Just move the photodiodes back an inch or so from the tape, to where the projected dot spacing matches the photodiode spacing.

betajet
User Rank
CEO
ASR-33 reader / printer are independent
betajet   1/6/2014 3:23:54 PM
NO RATINGS
IIRC, the ASR-33 paper tape reader and keyboard are independent from the printer and punch, unless you switch to off-line mode and turn on echo.  So just reading the paper tape over the serial line (probably current loop rather than RS-232) should work fine, as long as you can set your serial input to 110 Baud.

Back when I was in high school and undergrad, like proper computer nerds I could read ASCII paper tape pretty well by eye.  But that was a long time ago :-)  But yes, it's pretty easy, especially with BASIC where each line starts with a line number and you know where the spaces are and you keep seeing the same keywords like GOTO over and over.  ASM is even easier, where half the instructions are MOV.  The hard part of doing it manually is that it's easy to screw up your program by mistranslating variable I for J and things like that.

[Pedantic note: Max has an ASR-33 (Automatic Send/Receive), which means it has paper tape reader and punch.  The KSR-33 (Keyboard Send/Receive) does not have paper tape.]

David Ashton
User Rank
Blogger
Re: ASR-33 reader / printer are independent
David Ashton   1/6/2014 4:00:34 PM
NO RATINGS
@Betajet..."Max has an ASR-33 (Automatic Send/Receive)"  

Oops...it's fairly early here in Australia and I am not yet fully awake, sorry.....

herbissimus
User Rank
Rookie
Re: scanner?
herbissimus   1/10/2014 8:56:30 PM
NO RATINGS
one only needs a single led and the array of photodetectors, just spread the light into a plane. the rows of holes passing by do the rest.

sorry, this was already suggested earlier. p.s. i have manuals and tty which has been resting unmaintained since 1977.

Chesler
User Rank
Rookie
Re: scanner?
Chesler   1/6/2014 4:31:08 PM
NO RATINGS
Thanks for posting the request, Max.
The paper tape in question is about 56 cm long, and it seems to be 4 bytes per cm, so 224 characters.

Of course I could simply re-write it, and I don't know where I'd get a BASIC interpreter, but if there is too much human in the loop I'm not sure if it's "authentic".  (Ideally I want my printout written with a type ball using a well-used ribbon. :-) )  OCR might feel authentic enough; I suppose I could type in each byte if the tedium doesn't induce errors, and write a quick translator. (Graphics is not my strength, so I can't write the program to read the image.)

Max The Magnificent
User Rank
Blogger
Re: scanner?
Max The Magnificent   1/6/2014 4:52:12 PM
NO RATINGS
@Chesler: The paper tape in question is about 56 cm long, and it seems to be 4 bytes per cm, so 224 characters.

Is that all? I was thinking it might be 50 feet long. In that case, if this were mine I'd translate it by hand.

Chesler
User Rank
Rookie
Re: scanner?
Chesler   1/7/2014 11:46:50 AM
NO RATINGS
For what it's worth, here is a link to a Flickr image of what the paper tape looks like:



(Unlike floppy disks in old jokes, you can get useful information putting a paper tape into a photocopier :-) )

Max The Magnificent
User Rank
Blogger
Re: scanner?
Max The Magnificent   1/7/2014 11:49:33 AM
NO RATINGS
@Chester: For what it's worth, here is what the paper tape looks like:

Hi David -- I think you were trying to include a link to the image of your short paper tape program on Flickr, but for some reason it's not appearing -- if you email me the image I will make it available to folks.

Chesler
User Rank
Rookie
Re: scanner?
Chesler   1/7/2014 12:04:36 PM
NO RATINGS
h__p: //www.flicker.com/photos/chesler/11812689353



betajet
User Rank
CEO
Re: scanner?
betajet   1/7/2014 1:38:36 PM
Oooh!  Even parity!  (More to come)

First line looks like:

10  REM INPUT N ; OUUTPUT N! BY Y-512

A good reference for an ASCII table and paper tape format is the DEC PDP-11 Peripherals Handbook, which is actually available at bitsavers.trailing-edge.com.  It's 28 MB, but all gold :-)

Page B-4 has an ASCII table in octal, which is the easiest way to decode paper tape.

Page B-5 shows how the bits are punched onto paper tape.  Bit 7 (MSb) is even parity on your tape, so ignore it.

Edit: You can also find a good example of paper tape and an ASCII table at Wikipedia.  However, Wikipedia's table is better suited for decoding hexadecimal.

 

David Ashton
User Rank
Blogger
Paper tape punches
David Ashton   1/6/2014 3:06:23 PM
NO RATINGS
Just as an aside, Air Zimbabwe in the old days used to have some paper tape punches connected to their reservation system.  Most of the outstations were served by Telex (remember that) and messages were output to these punches by the Res system and the tapes were then sent to the relevant station on Telex using a machine like your KSR (in Zimbabwe we used to use Siemens machines.  We only used to use 5-hole tape though - Baudot code, not Ascii.

David Ashton
User Rank
Blogger
PROGRAM
David Ashton   1/7/2014 10:36:42 PM
I decoded the whole thing (no, not too much time on my hands, just a boring job) and got

10  REM INPUT N ; OUUTPUT N! BY Y-512

20  PRINT "INPUT THE NUMBER THAT YOU WANT THE FACTORIAL OF"

30  INPUT N

40  N=N-1

70  IF N=1 THEN 100

80  F=F*N

90  GOTO 60

100  PRINT F

110  END

I can see how it is supposed to work but a couple of things here
  • in line 80 variable F is not initialised, maybe that machine initialised unknown variables to 1?
  • line 90 jumps back to line 60 which does not exist, probably should be line 40

If the above is true then it should work, multiply N by itself N times.

I don't have a BASIC machine to run it on, does anyone?

Chesler
User Rank
Rookie
Re: PROGRAM
Chesler   1/8/2014 3:50:08 PM
NO RATINGS
What am I doing debugging/reverse engineering this?
Since N is set to N-1 before the loop, I'm thinking F was initialized to N, not to 1.

I remember being amazed at how quickly the answer came back (relative to 110 baud -- but a state-of-the-art TI-30 of the same vintage has noticable lag coming back with a trig value) so maybe I was trying to be clever and save a multiplication.

 

David Ashton
User Rank
Blogger
Re: PROGRAM
David Ashton   1/8/2014 4:32:21 PM
NO RATINGS
@Chesler....you could initialise F by saying F=1 or F=N, but unless the machine defaults to initialising variables to 1 your initial program would not work.  But I don't know how that machine behaved....

> "What am I doing debugging/reverse engineering this?"

Well you can see how far you have come since those early days,,,,and a bit of nostalgia is always a good thing I find.

I loved playing with GWBASIC again but I was forever trying to position the cursor with the mouse, or cut and paste....NOT!  But as I remarked above, the power of that little program in 60K is awesome compared to todays's bloated code.  But then would I want to go back to Wordstar or MS-Word DOS versions without WYSIWYG?   I don't think so.....  Then again GWBASIC appears on the screen ready to work about 0.4 second after clicking it.  You never gain anything without also gaining a disadvantage.....

 

Chesler
User Rank
Rookie
Re: PROGRAM
Chesler   1/8/2014 5:32:09 PM
NO RATINGS
Wirth's Law: "Software is getting slower faster than hardware is getting faster."

 

I did take a Tic-Tac-Toe (on a cylinder or something funky) I'd written for Data Structures and it was an amazing example of Moore's Law. In 1982 each move took the computer about three hours. In 2005 the same code was running in interactive time (and I learned it was a very boring game, guaranteed win for the first mover.)

 

I don't recall pre-initialized variables, certainly not to 1, so I suspect there are lines missing, given there are no lines 50 or 60, and the GOTO 60.

betajet
User Rank
CEO
Uninitialized variables
betajet   1/8/2014 5:57:26 PM
NO RATINGS
In every Basic I've ever used the interpreter would tell you if you had an uninitialized variable.  In fact, one of my favorite computer pranks was when I was at the remote end of a software demo.  Two very clever guys from a different high school had created a program in Basic that allowed separate time-shared teletype sessions to chat, using shared files as storage.


OK, so they're in the other room and the program is working fine.  We're sending back and forth the usual "HELLO", "HOW ARE YOU?", "FINE THANKS", and other unimaginative messages you can expect from teen-agers who did math instead of literature.  I got a diabolical inspiration and sent the message "UNDEFINED VARIABLE IN LINE 1320".  They panicked, and started giving commands like "LIST" and "RUN", not realizing that the program was still running perfectly.  I dashed into the next room and asked "what happened?" and let them sputter a bit before confessing.

David Ashton
User Rank
Blogger
Re: Uninitialized variables
David Ashton   1/8/2014 6:17:32 PM
NO RATINGS
@betajet that reminds me of a prank I once played on a mate:

http://www.eetimes.com/author.asp?section_id=36&doc_id=1284862

And being as it concerns teleprinters it's even related to this thread :-)

betajet
User Rank
CEO
Re: Uninitialized variables
betajet   1/8/2014 6:41:31 PM
NO RATINGS
LOL!

Chesler
User Rank
Rookie
Re: PROGRAM
Chesler   1/9/2014 4:02:48 PM
NO RATINGS
You're right, not that hard to hand translate, with the table on page B-4.
Human error in splicing together the photocopies.

So the missing lines are, as we figured:

50  F = N

60  N = N-1

 

I made little pencil marks on the tape so I can take more photocopies and splice them together and post it to Flicker, but I think this dead horse is sufficiently beaten now (until I get stuck on real work and need to divert for few minutes...)

David Ashton
User Rank
Blogger
Re: PROGRAM
David Ashton   1/9/2014 4:07:04 PM
NO RATINGS
@Chesler - "So the missing lines are...."  That explains a lot......

Dead horse....yeah software has moved on a bit since then I think.  But as I said, it's been a lot of fun.

Chesler
User Rank
Rookie
Re: PROGRAM
Chesler   1/9/2014 4:22:31 PM
NO RATINGS
The horse isn't complaining...

40  PRINT N;"!=";

50  F=N

60  N=N-1

Is semicolon a delimeter to PRINT that says don't do a carriage return?

So the output would be like

6!=120

(Note the lack of spaces, and several years before I'd learned Pascal or C I never thought to read != as "Not Equal To" instead of "Factorial Equals")

David Ashton
User Rank
Blogger
Re: PROGRAM
David Ashton   1/9/2014 4:41:21 PM
NO RATINGS
@Chesler... "Is semicolon a delimeter to PRINT that says don't do a carriage return?"     Yes, as I recall

; Semicolon means stop where you are and wait for the next print command

. comma means advance to the next TAB stop (useful for tables)

nothing means do a new line

I've often thought that the inventors of ASCII - who would have been computer nerds - should have thought to put in characters like not equals, equal to or Greater / Less than, etc.  But they didn't, so we are stuck with these weird substitutions.    I once wrote a terminal emulator in QuickBasic and it needed some weird characters.  Fortunately I found a font editing program that let me create them.

I still love Basic and have never learned C (though that is one thing I want to do) and am doing some blogs on the PICAXE MCUs at the moment - great little things if you're a BASIC tragic like me.....

Chesler
User Rank
Rookie
Lower case letters
Chesler   1/9/2014 5:07:00 PM
NO RATINGS
Back to the base topic, did the ASR-33 do lowercase?

The paper tape seems to truly be ASCII (true 7-bit ASCII, not UTF-8 or Code Page 437) but this program was all uppercase, and I think that's all we used, so we couldn't generate codes 0141 to 0172.  I guess I'm looking at it backwards, it had a set of characters, and those characters were represented in ASCII; it is not necessary that tape with defined ASCII be read, and it's reasonable and simple for it to interpret 0141 'a' as 0101 'A'.

I remember the Teletypes recognized 0007, ^G, BEL, but we were discouraged from using it, because we had 16 such Teletypes arranged around the room. (Also two CRT terminals, probably earlier than VT-100.)

At that point, high school students had varying typing skills, and even with the program written out in longhand before class, we were limited by how many characters we could type in half of a 40-minute period. (Twice as many students as terminals.)

 

I think it was a sans serif font. Does anyone know a reasonable facsimile? Or have a sample we could feed into one of those "What font is this?" programs? It had a certain look, and books at the time (I had one which was a scientific approach to Monopoly, where the authors had run a simulation to find the odds of any property being hit) tended to show the results of computations as photographs of the printout, rather than typesetting the table the way the publisher would almost any other piece of manuscript.

 

betajet
User Rank
CEO
Re: Lower case letters
betajet   1/9/2014 5:24:37 PM
NO RATINGS
The ASR-33 is UPPERCASE ONLY.  If you want full ASCII, you need a Model 37 or Model 38.  I used a Model 38 quite a bit.  It also had a dual-color ribbon, with escape sequences to switch ribbon color.  Great fun.

I used the Model 38 to write PDP-11 assembly language with lower-case comments.  This was considered heresy at the time and made me a pariah among pariahs -- kind of like an EE student with a circular slide rule.

There's a nice photo of Teletype output on the familar yellow paper at Wikipedia.

Chesler
User Rank
Rookie
Re: Lower case letters
Chesler   1/9/2014 5:37:49 PM
NO RATINGS
Found a TrueType of it at http://www.zanzig.com/download/index.htm

and yes, it is all uppercase.

That's right of course on Pascal.

I tried to teach my father what I was doing (payback for lots of math he'd taught me and many others). He had tried to learn some programming in the 1960s, but it didn't go anywhere.)

I remember he couldn't get past "N = N - 1".  "How can N be equal to N minus 1?"  "No Dad, that means 'Set N to be equal to...'  "

And because Factorial was the first program I learned (computers were taught out of the math department) every time he asked me or my brother to show him programming, we had to start with that. He could learn videogames and the Web, but through generations of programmable calculators, pocket computers, and PCs that we brought home, he never learned to write a program.

David Ashton
User Rank
Blogger
Re: Lower case letters
David Ashton   1/9/2014 5:47:58 PM
NO RATINGS
@Chesler....I'm glad Betajet came back to you and advised about the ASRs, as I know next to nothing about them.

As Betajet also remarked, the tape has even parity, ie bit 8 is always such that you have an even number of bits.  So only bits 1-7 are used, as you say, true 7-bit ASCII.

When I was playing with GWBasic I noticed that it always displays commands in uppercase.  If you look at a program file in (eg) Notepad, it looks like gobbledegook - I suspect they tokenised everything to save memory.

< ...codes 0141 to 0172..."  I take it those are Octal?  Long time since I have seen that.  reminds me of what I think is the first story I ever wrote for EE Times:

http://www.eetimes.com/author.asp?section_id=30&doc_id=1284451

betajet
User Rank
CEO
Re: PROGRAM
betajet   1/9/2014 5:12:55 PM
NO RATINGS
Pedantry: Pascal uses "<>" (less than or greater than) for "not equal to".  Pascal also uses the Algol ":=" for assignment, so that you can use "=" for equality.  This avoids the need for C's "==" equality operator.

I blame the Model 026 keypunch, which influenced Fortran.  The creators of Fortran were mathematicians, so I'm sure they would have loved to use the proper mathematical symbols instead of .GE. and .LT. for ">=" and "<".  I'm sure glad we've left those silly notations behind!  [What?  You say they're still around in HTML?  'Strewth!]

Of course, now that we have full graphics displays and the Symbol font, we can fully expect languages to take advantage of these advances and not have syntax designed for a Model 38 teletype, right?

As for proper printing of ">=", "<=", and "!=", you can of course use overstrikes on a teletype or line printer.  And if you're really a gutton for mathematical notation, there's always APL :-)

Stargzer
User Rank
CEO
Re: PROGRAM
Stargzer   1/10/2014 7:16:18 PM
NO RATINGS

betajet:"Pascal ..."

I was in a Pascal class for a day or two before I was pulled out to troubleshoot a hardware problem with the new equipment.  I do remember having trouble remembering when a semicolon was required and when it was not.  The instructor said there was sometimes a certain feel to when it was needed.  Not my kind of language ....  Another time he pointed out that you could stomp on the first byte of a string to change it's length, which was quicker than using the built-it function.  When I ask why bother to use the function, he said anyone on his staff would be fired for doing that (I guess because it was not as obvious as using the function).  Finally, when I asked why the printer diagnostic was so slow printing a sliding alpha test, he said the programmer was recreating the line each time, incrementing the initial character.  When I asked why he didn't just create the full set of characters twice and step across it with a substring function, he replied it was written by a trainee.  It thought to myself, "Why is Uncle Sucker paying to train your people?"

Pascal was "Wirth" so much he had to write Modula-2.  ;- ) 

betajet:  "I blame the Model 026 keypunch, which influenced Fortran.  The creators of Fortran were mathematicians, so I'm sure they would have loved to use the proper mathematical symbols instead of .GE. and .LT. for ">=" and "<".  I'm sure glad we've left those silly notations behind!  [What?  You say they're still around in HTML?  'Strewth!]"

There were only so many keys on the keyboard of a teletype or keypunch, and only so many characters in the character set (7 bits plus pairity).  Even IBM mainframe printers didn't always have a full character set.  Our college used Assembler, RPG, Fortran and PL/1.  PL/1 used a semi-colon to end a statement, but our print train didn' t have the character.  The IBM PL/1 compiler had an option which we set as default so we could terminate lines with a comma and a period (",."), as if the semicolon fell over on its side. 

Knowing how old FORTRAN is, it may be that they didn't have the ">" and "<" symbols available on printers.  The IBM 029 Keypunch did have the > and < characters on the keyboard.

By contrast, IBM's EBCDIC code had a cent sign ("¢") which their mainframe terminals had but that teletypes and ASCII-based equipment didn't have (we Americans are so Jingoistic!).

:-Þ

On the PC one can use CHARMAP.EXE to find it or type Alt-0162 (using the numbers on the Numeric Keypad) to enter it (Like this:  ¢).

 

And if you're really a gutton for mathematical notation, there's always APL

I think glutton is too mild of a term.  Masochist comes to mind ... but if you want arcane notation, try FORTH (which I did play with on my TI-99).

betajet
User Rank
CEO
Re: PROGRAM
betajet   1/10/2014 7:55:20 PM
NO RATINGS
Thank you for contributing this week's dose of nostalgia.

Dr. Wirth intended Pascal as a language for teaching good programming practices.  I still think it's a terrific first programming language.  OTOH, Modula-2 was intended as a serious programming language.

Teaching a programming language isn't easy, particularly if you haven't mastered it.  Not understanding semicolons in Pascal is pretty lame.  A Pascal semicolon is a statement separator.  You put it between statements.  Thou shalt never place a semicolon in front of "else".  In contrast, a C semicolon is a statement terminator.  It also converts an expression like "x = 3" into a statement like "x = 3;"  Go ahead an put a semicolon in front of "else".  Go ahead and write "if (x >= 0) y = x; else y = -x;"  So what it it's ever so much uglier than "if x >= 0 then y:= x else y:= -x".  OTOH, in C you can write "y = x >= 0? x: -x;" which much nicer than Pascal.

While FORTH is something of a write-only language, it does make a nice intermediate language and is dirt simple.  But APL is the epitome of the write-only language.

Stargzer
User Rank
CEO
Re: PROGRAM
Stargzer   1/13/2014 2:57:32 PM
NO RATINGS

@betajet:  "Thank you for contributing this week's dose of nostalgia."

You're welcome!  When I'm not reading SciFi I'm reading history.

@betajet:  "A Pascal semicolon is a statement separator.  You put it between statements.  Thou shalt never place a semicolon in front of "else".  In contrast, a C semicolon is a statement terminator."

Coming from a PL/I background I probably thought of it as a terminator, thinking of "else" as a separate statement (line).   My brief encounter with Pascal was 30-some-odd years ago. 

I try to write code so I can follow it a later time (somewhat self-documenting), using indenting.  I would write: if (x >= 0) y = x; else y = -x; in two lines as:

if (x >= 0) y = x;
else y = -x;" 

I can see how if you read the Pascal statement from left-to-right it's almost a complete sentence, not broken down into separate steps like above:

if x >= 0 then y:= x else y:= -x

but, "OTOH, in C you can write "y = x >= 0? x: -x;" is great for compact syntax and saving space back when disk space was dear.  But hey, it was written by system programmers looking for something between assembler and a high level language.  I hope to learn it and play with it some day (I like the bit where you can stuff in some assembler or machine code in-line; a hacker's dream (from the original def of hacker). 

 

David Ashton
User Rank
Blogger
Working!
David Ashton   1/7/2014 11:22:33 PM
How about that!  You can still get good old GWbasic from here

http://gwbasic.webs.com/download.htm

or here, which has manuals as well

http://www.gw-basic.com/downloads.html

Pretty good value for 60K (yes K not M) of program!!

I got the program working -  as I thought, I had to initialise F and get the line numbers right for the jumps, but then it does work:

10  REM INPUT N, OUTPUT N!

20  PRINT "INPUT THE NUMBER THAT YOU WANT THE FACTORIAL OF"

30  INPUT N

35  F=1

70  IF N=1 THEN 100

80  F=F*N

85  N=N-1

90  GOTO 70

100  PRINT F

110  END

It only works up to N=30-something then it overflows.

Thanks guys, have not had this much fun in years!

 

betajet
User Rank
CEO
Re: Working!
betajet   1/8/2014 9:39:11 AM
NO RATINGS
Now you just need to punch the updated program onto paper tape and you're done!

Chesler
User Rank
Rookie
Re: Working!
Chesler   1/8/2014 10:32:25 AM
NO RATINGS
Thanks David Ashton.
I think Y-512 may have been my account on the timeshare.
No idea what was supposed to be at lines 40 and 50 (presumably one of them initialized F), or why they didn't save to the tape.
Line 85 :-)  I guess the day before I'd written my first endless loop!

David Ashton
User Rank
Blogger
Re: Working!
David Ashton   1/8/2014 2:40:41 PM
NO RATINGS
@Chesler....no problem, I had lots of fun with it.  (If MS had not updated everything I'd still be quite happy with DOS and BASIC and Wordstar :-)

In your original program, if Nwas input as 1, it would have got 1 subtracted from it first, and you would have got an endless loop.  Mine can cope with 1 but not 0 or negative Ns.  

I remember being taught that unconditional jumps like GOTO 60 were a no-no, and to use DO WHILE  or FOR N = x TO y instead.  Good point.

I did a FORTRAN course once and put and endless loop in a program, I got presented with a 2 inch high stack of paper and a very stern talking-to from the computer centre manager when I went to collect my printout.  We all have to start somewhere.....

Stargzer
User Rank
CEO
Re: Working!
Stargzer   1/10/2014 6:10:46 PM
NO RATINGS
Dave,

The name BASIC came from Beginner's All-purpose Symbolic Instruction Code and it was developed at Dartmouth (not Microsoft!).  It really was pretty basic at first.

The original BASIC didn't have a DO WHILE construct, only FOR...NEXT loops and GOTO and GOSUB statements.  I don't remember if the version I used had the ON...GOTO/GOSUB statement.  In the earlier versions every statement had to have a keyword at the beginning, so to assign a value it was LET Y=3 or LET X=X+1.  It was great day for typists when BASIC interpreters finally made the LET part of an assignment statement optional! 

I seem to recall that Dartmouth BASIC had built-in functions to perform matrix manipulations (MAT INV to invert, something I never understood or used; math was not a strong point).  After all, it was invented by two Math professors using student labor.  The professors (Kemeny and Kurtz) wrote a book called "BASIC Programming" that gave examples of how to us the language in various academic disciplines.

As for piles of paper ...

The control panel on the IBM 360 Model 25 had half a bazillion lights, but two of them were Wait and Sys.  A hard Wait was when something got farbled and the program just sat there; it was called a Hard Wait.  When a student's program started looping somewhere in core, the Sys light came on and stayed on, so we nicknamed it a Hard Sys.

A good source of large piles of paper occured when a FORTRAN student tried to print to a channel that wasn't punched on the printer's control tape (IBM 1403 printer).  Then it was a contest to see if the operator could stop the printer before it slewed through a whole box of paper before he cancelled the program!  At least we could recover the paper in that instance.  If their program got into a loop (but not a hard Sys) and printed one character and a page feed continuously, well, there would be a pile of scrap paper.

 

David Ashton
User Rank
Blogger
Re: Working!
David Ashton   1/10/2014 6:30:51 PM
NO RATINGS
@stargzer...thanks for all that..   I did know what BASIC stood for but not about its origins.    And I didn't use any of the very early ones much, though I do remember working on something that needed LET for assignments.  (Maybe that would have made more sense to your dad, @Chesler?)

The original BASIC didn't have a DO WHILE

Just looked up in GWBASIC's manual and it does not either.  I was probably thinking of QBASIC which I used a lot.  Never used DO WHILE much, I preferred the other conditionals.

Gotta love the bazillions of lights (and sometimes switches) on the old computers...

I liked FORTRAN at the time, but I'd be hard pressed to remember any of it now :-)

FlyByPC
User Rank
Rookie
Re: Working!
FlyByPC   1/14/2014 2:30:50 PM
NO RATINGS
It's nice that GWBASIC is still available, but you ought to check out FreeBASIC. It can be set to accept old-school GWBASIC syntax, but has a lot more modern capabilities, as well -- arrays of up to 2GB or so, high-resolution graphics in true color, user-defined types, and structured programming (functions, subroutines, etc.) 

I use FreeBASIC with FBIDE: http://fbide.freebasic.net/ 

 

David Ashton
User Rank
Blogger
Re: Working!
David Ashton   1/14/2014 2:47:39 PM
NO RATINGS
@FlyByPC...I have heard about FreeBASIC and might give it a try sometime.   I used GWBasic here as it was from about the right era for the program.  FreeBASIC says on its website that it is very compatible with QuickBASIC which I worked with a bit.   I'll put FreeBASIC on my ever-growing list of things to do.  I need to win the lotto and retire so I can get time for all the interesting stuff... :-)

Flurmy
User Rank
Rookie
GWBasic
Flurmy   1/10/2014 4:33:50 AM
NO RATINGS
Yes, normally the program was saved with keywords tokenized to save memory.

You have the option to save it in "explicit" mode but I can't remember what it is.

At the time many BASICs did so. For example, the Sinclair Spectrum.

 

Think about the C syntax: it's made almost unreadable just to save some bytes IN THE SOURCE CODE!

At the opposite side lies the COBOL...

betajet
User Rank
CEO
Re: GWBasic
betajet   1/10/2014 3:06:12 PM
NO RATINGS
Flurmy wrote: Think about the C syntax: it's made almost unreadable just to save some bytes IN THE SOURCE CODE!

If did your editing using ed on a 10 char/sec teletype, you'd want concise source code too :-)

Personally, I mostly like C's syntax, especially assignment operators like "+=" and the conditional expression "a? b: c".  However, chacun a son goût (YMMV).  As Flurmy said, there's always Cobol if you really like to type.

Stargzer
User Rank
CEO
Carriage-return Linefeed
Stargzer   1/10/2014 7:38:50 PM
NO RATINGS

@MAX:  "Although the paper tape reader appears to work fine, the carriage-return / line-feed needs some attention."

If it's a problem when the print head returns to the left, there is an adjustment.

Under the lid, on the left side, where the print head returns, is a cylinder call the dash-pot.  The print head has a sort of a piston with a rubber ring (or something) that is supposed to go into the cylnder.  A lever on the outside head of the cylinder can be moved over a hole in the end of the cylinder to set the amount of air allowed to escape and fine-tune the cushioning effect.  As I recall there are a couple of screws on top to loosen and adjust the cylinder.  You'll get a nice little "pop" sound when it's adjusted correctly.  I had to do that on an ASR-33 when I had a part-time job teaching programming to 4th, 5th, and 6th graders back in 1973-1974.

If it's not returning, I'm not sure what the problem is.  Some have an autoreturn set so the print head automatically returns after 72 or 80 characters.  Sometimes the autoreturn is not set and it just keeps piling up characters in the last positon.

But, if it's doing a line feed an printing a character in the middle of the line, you need to send two chariage returns and a line feed to the print.  This was the standard -- it's a matter of timing.  I've also seen specs for other printers that call for varying numbers of carriage returns or nulls, depending on the bit rate and how far over to the right the print head is (it takes longer to return from 132 characters than from 80, and no printer in the old days could print 960 chars/sec (9600 bps - 10 bits/char).

There once was a Star Trek program that would print out S T A R   T R   K in the middle of the line, space out to 80 characters, and then print a carriage return with no line feed followed by the E, which would print out between the R and the K. 

The listing is somewhere in the basement ...

Max The Magnificent
User Rank
Blogger
Re: Carriage-return Linefeed
Max The Magnificent   1/13/2014 2:49:59 PM
NO RATINGS
@Stargzer: If it's not returning, I'm not sure what the problem is.

If you type characters you can see them on the paper (very faint because the ribbon is 30 years old -- I iave to pick up a new one when I get round to it) -- but when you hit the return key, the carriage returrns but there's no line feed, which there shoudl be when you are manually typing on the keyboard. 

DrSnake
User Rank
Rookie
Re: Carriage-return Linefeed
DrSnake   1/15/2014 10:32:52 PM
NO RATINGS
One of the recomended uses of WD40. Open the ribbon cartrige and spray the top of the ribbon. It gets all over.

Max The Magnificent
User Rank
Blogger
Re: Carriage-return Linefeed
Max The Magnificent   1/16/2014 11:33:18 AM
NO RATINGS
@DrSnake: ...It gets all over.

Whenever I use WD40, it certainly seems to get all over me! :-)

Wilton.Helm
User Rank
Rookie
Re: Carriage-return Linefeed
Wilton.Helm   2/4/2014 1:41:39 PM
NO RATINGS
No there should not be a line feed when you manually hit return.  The ASR uses 0x13 to move the carriage left, nothing else. It uses 0x0A to roll the paper up, nothing else.  I have forgotten if there is a LF key on the keyboard, but if there isn't , CTRL-J does it.  Like David I spend a lot of hours on an ASR-33 connected to a HP 2000 E basic interpreter on an HP 2100 A mini.

betajet
User Rank
CEO
Re: Carriage-return Linefeed
betajet   2/4/2014 2:14:05 PM
NO RATINGS
< pendantry >

Carriage return is 13 decimal or 0x0D.  0x13 is control-S or DC3, which stops the paper tape reader.  Control-Q or DC1 starts the paper tape reader.  This is one of the "automatic" parts of ASR.

< /pendantry >

Wilton.Helm
User Rank
Rookie
Re: Carriage-return Linefeed
Wilton.Helm   2/4/2014 2:18:26 PM
NO RATINGS
You are correct.  I was thinking decimal 13 and wrote hex 13.  0x0D is indeed CR.  The point still is, though that CR on an ASR33 is not supposed to roll the paper, only move the carrier to the left margin

zeeglen
User Rank
Blogger
Re: Carriage-return Linefeed
zeeglen   2/4/2014 3:24:34 PM
NO RATINGS
@ Wilton.Helm   though that CR on an ASR33 is not supposed to roll the paper, only move the carrier to the left margin

IIRC the Model 19 (5 level Baudot) also had separate charcters for carriage return and paper roll.  The carriage was a massive affair with type bars, and the shift between letters/numbers caused the entire carriage to bump up and down.  A paper tape with repeating shift/unshift codes was the basis for a rather naughty joke...


Max The Magnificent
User Rank
Blogger
Re: Carriage-return Linefeed
Max The Magnificent   2/5/2014 9:53:47 AM
NO RATINGS
@Wilton.Helm: No there should not be a line feed when you manually hit return

Interesting -- I'm working from home today, but when I get back to my office tomorrow I will look for a LF key

 

Wilton.Helm
User Rank
Rookie
Re: Carriage-return Linefeed
Wilton.Helm   2/5/2014 12:27:17 PM
NO RATINGS
Just for curiosity, I googled ASR-33 and pulled up a photo.  The line feed key is just left of the Return key.  Neither is large or special shaped, like we are used to on keyboards today (or even typewrites of the past).  Just one more round key to press.  It wasn't easy typing on those things.  The touch left a bit to be desired.

Often when connected to a computer, when the computer saw a CR it responded with CR and LF, so pressing LF was not necessary.  I did work on one OS (the HP OS that we ran Fortran and Assembly on) that expected just a LF and returned CR and LF.

The ASR-33 (and the original ASCII definition, which it followed)  is why we have CR and LF in text files on MS to this day.  Contrast that with Linux (and default C behavior) where only the LF mattered, and we've been fighting conflicting standards for many years.

Wilton

Max The Magnificent
User Rank
Blogger
Re: Carriage-return Linefeed
Max The Magnificent   2/5/2014 1:28:22 PM
NO RATINGS
@Wilton: The line feed key is just left of the Return key.

I'm kicking myself that I didn't think to look!!!

Stargzer
User Rank
CEO
Re: Carriage-return Linefeed
Stargzer   2/7/2014 4:09:37 PM
NO RATINGS
@Wilton.Helm:  "... is why we have CR and LF in text files on MS to this day.  Contrast that with Linux (and default C behavior) where only the LF mattered, and we've been fighting conflicting standards for many years."

Wikipedia's Newline article has more information, including which systems used CR, LF or CRLF for a new line.  IBM mainframe EBCDIC code had a Newline (NL) in addition to CR and LF, but then, that's not ASCII.  In addition to Windows, some DEC systems and "... and most other early non-Unix and non-IBM OSes ..." used CRLF.

Also remember that on a TTY, the computer always sent CRCRLF (2CRs) to make sure the type head had enought time to return to the left before starting again.  An LF somewhere in the middle of the line would roll the platen up one line without moving the type head and resume printing from that position.  I think I mentioned it before, but there was a Star Trek game n BASIC that would go to the end of the line and do a Line Feed and then as it returned it would print a character in the middle of the blank line (I think it was the "A"), then start spacing over and printing the rest of the letters "S T   R   T R E K", spacing over the "A" that was already on the line.  A programmer showing off his knowledge of the hardware!

The CR without a LF was also used during logons, where the computer would do a CR without an LF while printing several lines of garbage, overprinting each other so no one could see what was typed.

"You have to understand how a starship works."
  Captain Kirk, "Star Trek: The Wrath Of Khan"

salbayeng
User Rank
Rookie
Re: Carriage-return Linefeed
salbayeng   2/12/2014 10:35:06 PM
NO RATINGS
Ah I remember Star Trek. We played it back in 1978? Using ASR33's connected to  a PDP10 mainframe. It was the main university computer, but if you joined the "computer club" you could buy CPU time by the second, I think a couple of bucks bought you enough to play star trek an hour a day for a month or equivalent "real work". 

@stargazer: The asr33 was usually operated half duplex so it was usually one CR typed by you and a CR and LF sent by the computer. I do recall needing to use null padding though,  So you would send <CR> <LF> <NUL> from your program to avoid the typing_something_on_return problem. 

And you could ring the bell by entering <ctrl G> so you would put these on the paper tape for amusement.

In 1980 I had an ASR33 at home (in the shed) , it was hooked up to a card cage scavenged from a 6502 based space invaders video game, the circuitry for the coin mechanism switch and coil were modified minimally to make a 20mA serial circuit for the ASR33. I copied an EEPROM from an AIM65 development board with minor changes. The video memory and program memory were the same, so you could see your program and data as little dots on the screen. All of the program and data were entered using the ASR33, and programs were "saved" on paper tape.  I recall I wrote a version of Conway's Life on it , and you needed to be careful not to overwrite program data. I did some of my preliminary research work for my Masters on it, even with severe restrictions (like all variable were two characters, beginning with a letter) , you could easily do monte-carlo studies on a dozen or so complex equations, you would just start it off, and come back an hour later.

I found the ASR33's were pretty reliable, but needed to be well oiled.

 

salbayeng
User Rank
Rookie
An early portable computer
salbayeng   2/12/2014 10:49:08 PM
NO RATINGS
Hi Max, 

Just stumbled on this picture while looking for ASR33 images: 

http://www.sonnet.be/dec/pdp8.htm 

Early luggable? PC

Stargzer
User Rank
CEO
Re: An early portable computer
Stargzer   2/20/2014 1:27:32 PM
NO RATINGS
Whoa!  Even bigger than the first suitcase-sized "transportable" PCs with the small CRTs and twin floppies!  The 10MB hard drive was an incredible later luxury!

BillDee
User Rank
Rookie
Re: Carriage-return Linefeed
BillDee   3/28/2014 6:03:02 PM
NO RATINGS
Depending on the system and the software, sometimes you could specify how many NUL characters to send with a CR, to "time-pad" the output and allow the carriage to return fully to the left side. That is why sometimes, in movies or videos and such, or if you remember, the teletype would make a duh-duh-duh-duh type sound when it was "typing" and the carriage was at the left side. This was the "wait timing with NUL characters" that was common. How it actually sounded and looked depended on how far across the carriage it had typed the line it was on, which was directly proportional to the amount of time to return the carriage to the left. Shorter lines made the wait NULs sound and look different.

TanjB
User Rank
Rookie
Re: Carriage-return Linefeed
TanjB   4/16/2014 11:14:49 AM
NO RATINGS
The CR and LF were simply following the practice of manual typewriters.  They usually had a big paddle connected to the carriage.  At the end of a line you reached up and yanked the paddle left which by default would both return the carriage and rotate the platten to the next line position.

However, the paddle was actually a two-stage mechanism.  If you pulled it gently you released the carriage to slide without advancing the platten and this was something you would do for example when correcting or sometimes filling out a form.  There was not always a backspace key, since that was mechanically more complicated than using the paddle to free the carriage.

You could also rotate the platten independently by just gripping a wheel-shaped knob at the end of the carriage and turning it, which was typically set to click in half-line steps (and you could also adjust the return paddle to cause advance by 1, 1.5, or 2 steps).

So, the ASCII system was inspired by a litteral match to the typewriter mechanism which it was originally designed to drive.  That is also where the BEL came from: manual typewriters had a bell you could set to warn you when you neared the right margin so you would think about how to choose the last word on the line or whether to break a word.  The teletype repurposed this to alert operators to ends of messages.

Mr. Contractor
User Rank
Rookie
Re: Carriage-return Linefeed
Mr. Contractor   1/17/2014 1:42:41 PM
NO RATINGS
STAR was dead on with the dashpot... it gets dirty with paper dust, oil from the mechanisms, and oily chad which gets everywhere.

This simplified shock absorber gets out of alignment due to the constant
slamming of the printhead back to the left side for every RETURN.

I think 2 screws on top of the cup mounted on the frame get loose and
you simply need to align it so the DASH plunger slids in freely... also adjust the
sliding handle thats over the vent hole on the right so you hear that nice
PHISSHH sound after every RETURN.

I remember a manual paper tape reader that me and Don Harrison hard wired it
into an original IMSAI computer as we were tired with the teletype's 110 baud slow rate.
We were amazed when we manally loaded the program and then started pulling the tape through the reader and the data appeared on the screen. The data was read by photocells under the tape and since the feedhole was smaller it was used to clock the data into the computer.

And yes, my ASR still works but is in the attic  and the EX got it along with the house...

 

Stargzer
User Rank
CEO
Re: Carriage-return Linefeed
Stargzer   1/23/2014 12:34:25 PM
NO RATINGS
@Mr. Contractor:  "I remember a manual paper tape reader that me and Don Harrison hard wired it into an original IMSAI computer as we were tired with the teletype's 110 baud slow rate. We were amazed when we manally loaded the program and then started pulling the tape through the reader and the data appeared on the screen. The data was read by photocells under the tape and since the feedhole was smaller it was used to clock the data into the computer."

An IMSAI!  When you say manual, you mean it wasn't from an ASR, right?  I remember a BYTE Magazine article about making a tape reader with photocells, includine one to read the feed hole and use it for clocking in the data.  Kind of a combined start- and stop-bit!

Speaking of the slow data rate of the TTY, I remember one December when I worked at the Social Security Administration.  At that time a lot of our traffice went out over  a GSA TTY network that was also shared with other agencies (our online system with cluster controllers was only a year old then).  Someone had sent out a "MERRY CHRISTMAS AND HAPPY NEW YEAR!" message via paper tape, complete with ASCII art, that must have taken six or eight feet of paper to print out.  They sent it with the All Points Routing Indicator in the header, sending it not just to all SSA stations (of which there were very many), but to ALL stations on the network.  It took hours and hours for GSA to chase down and kill the traffic on the various relay points.  I don't know what happened to the hapless operator who did that!

Let's do the math!  At a conservative exstimate of 75 characters per line (72 characters per line (the usual for most TTYs) + 2 CR + 1 LF) × 6 lines per inch × 12 inches per foot × 6 feet (conservative) = 32,400 characters.  At 10 characters per second (110 bps / 11 bits per character) and 60 seconds per minutes, that's 54 minutes!  Eight feet would be another 18 minutes.  That's one LMF message, to say nothing of the cost to send it!

 

Flurmy
User Rank
Rookie
Scrap paper
Flurmy   1/13/2014 2:50:51 AM
NO RATINGS
betajet: in C you can write "y = x >= 0? x: -x;" which much nicer than Pascal.

Yuk! That's exactly what I try to avoid like hell.
As you said, chacun a son goût, but I think I'm in good company.
MISRA and alike strictly forbid mumbo jumbo like this.

If their program got into a loop (but not a hard Sys) and printed one character and a page feed continuously, well, there would be a pile of scrap paper.

I worked on a CDC6600 via punched cards and batch processing.
When, hours later, I went to pick up the result of my program I met a friend who told me: "Ha, ha, ha! Someone printed a pile of paper so high full of numbers! Ha, ha, ha!"
Surprise: someone was... me!
I mistakenly swapped the job control cards, putting the "load and run" before the "link" one. obviously the "program" crashed violating the memory fence and I got the dump of the whole memory in octal (each location was 60 bits, i.e. 20 octal digits)...

betajet
User Rank
CEO
a? b: c
betajet   1/13/2014 1:59:09 PM
NO RATINGS
The Betajet wrote: in C you can write "y = x >= 0? x: -x;" which much nicer than Pascal.

Flurmy wrote: Yuk! That's exactly what I try to avoid like hell.  As you said, chacun a son goût, but I think I'm in good company.  MISRA and alike strictly forbid mumbo jumbo like this.

Well, I learned LISP before I learned C.  LISP's fundamental conditional operator is COND, which is an extended version of "a? b: c".  LISP is a great language for reasoning about programs, and proving that they work.  (For best results, use equivalent mathematical notations rather than lots of parentheses.)  "a? b: c" is also a great notation for writing multiplexers in Verilog.

I'm puzzled that some people don't like "a? b: c", but I accept that some people would rather write Basic or Fortran :-)

DrQuine
User Rank
CEO
Opportunity for an APP
DrQuine   3/14/2014 6:42:13 PM
NO RATINGS
As a student at Roxbury Latin School, I also stored my first computer programs on paper tapes. They ran on the Harvard University SDS timeshare computer through a dial-up line. It seems that reading old paper tapes would be a great opportunity for a SmartPhone APP. The holes are very large so it ought to be possible to pull the paper tape across a black background and make an iPhone movie of the passing tape. The iPhone could be fixed about three inches above the tape and oriented along the long axis for a high resolution read. The camera has sufficient resolution to read at a much greater distance. Guides could keep the tape aligned in the center of the image. The motion could easily be tracked (no need for accurate speed control, just pull the tape) and each row of dots could be decoded. As I recall, the symbology was simple ASCII so the results could be directly reported in familiar text. After the decode, if the data were garbled, an option could be included to flip the orientation and / or direction of the data since the old tapes might not necessarily get fed rightside up [mirror image read reversing the bit sequence] or in start to end sequence [they might be reading end to start reversing the character sequence]. 

Max The Magnificent
User Rank
Blogger
Re: Opportunity for an APP
Max The Magnificent   3/17/2014 9:50:30 AM
NO RATINGS
@DrQuine: It seems that reading old paper tapes would be a great opportunity for a SmartPhone APP.

That would be a GREAT app -- please let me knwo when you've created it LOL

prabhakar_deosthali
User Rank
CEO
Manually reading the tapes
prabhakar_deosthali   3/31/2014 11:19:09 AM
NO RATINGS
Since I am also from the era when the paper tapes were the primary source for storing and rerunning the programs , I would like to offer my services to read the paper tapes.

 

Since it may be difficult  to get a paper tape reader, but it is easy to ready a paper tape manually and translate the same inti an ASCII text file which could be then compiled .

Though this process is time consuming , it is machine independent and give accurate results.

mjkirk12
User Rank
Rookie
Wow - office with a door!
mjkirk12   4/29/2014 3:24:44 PM
NO RATINGS
Forget the paper tape reader - who gets a private office with a door these days!


We are getting downsized to the open office in the next few months.  No more cubes or private offices with doors - just a sea of large study desks.  Even upper management gets the same.


MJ

 

 

Max The Magnificent
User Rank
Blogger
Re: Wow - office with a door!
Max The Magnificent   4/29/2014 3:30:02 PM
NO RATINGS
@mjkirk12: Forget the paper tape reader - who gets a private office with a door these days!

They don't let me out very often :-)

Remember that I'm theoretically working from a home office -- it's my choice to actually rent a real office (it makes what I do seem lime a real job LOL) -- I have one room in a really large (and not hugely populated) building owned by a company I know -- they are kind enough to give me a really good deal (and they threw in the office door)



Flash Poll
Top Comments of the Week
Like Us on Facebook
EE Times on Twitter
EE Times Twitter Feed

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)
EE Life
Frankenstein's Fix, Teardowns, Sideshows, Design Contests, Reader Content & More
Max Maxfield

Where Are the Ceramic Vacuum Tube Holders of Yesteryear?
Max Maxfield
49 comments
I'm currently cursing myself for being a fool. I have let chances and opportunities slip between my fingers. I deserve to be berated soundly. But what is the cause of this gnashing of ...

Jolt Judges and Andrew Binstock

Jolt Awards: The Best Books
Jolt Judges and Andrew Binstock
1 Comment
As we do every year, Dr. Dobb's recognizes the best books of the last 12 months via the Jolt Awards -- our cycle of product awards given out every two months in each of six categories. No ...

Engineering Investigations

Air Conditioner Falls From Window, Still Works
Engineering Investigations
2 comments
It's autumn in New England. The leaves are turning to red, orange, and gold, my roses are in their second bloom, and it's time to remove the air conditioner from the window. On September ...

David Blaza

The Other Tesla
David Blaza
5 comments
I find myself going to Kickstarter and Indiegogo on a regular basis these days because they have become real innovation marketplaces. As far as I'm concerned, this is where a lot of cool ...