×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Historians Recreate Source Code of First 4004 Application

Zonk posted more than 6 years ago | from the really-hard-to-dig-through-bits-and-bytes dept.

Intel 159

mcpublic writes "The team of 'digital archaeologists' who developed the technology behind the Intel Museum's 4004 microprocessor exhibit have done it again. 36 years after Intel introduced their first microprocessor on November 15, 1971, these computer historians have turned the spotlight on the first application software ever written for a general-purpose microprocessor: the Busicom 141-PF calculator. At the team's web site you can download and play with an authentic calculator simulator that sports a cool animated flowchart. Want to find out how Busicom's Masatoshi Shima compressed an entire four-function, printing calculator into only 1,024 bytes of ROM? Check out the newly recreated assembly language "source code," extensively analyzed, documented, and commented by the team's newest member: Hungary's Lajos Kintli. 'He is an amazing reverse-engineer,' recounts team leader Tim McNerney, 'We understood the disassembled calculator code well enough to simulate it, but Lajos really turned it into "source code" of the highest standards.'"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

159 comments

bill gates (-1, Offtopic)

Anonymous Coward | more than 6 years ago | (#21372133)

linux

Only 1024? (0)

snoyberg (787126) | more than 6 years ago | (#21372167)

Volume in drive C is NTSWIM100
  Volume Serial Number is 1CB0-998C

  Directory of c:\WINDOWS\system32

08/23/2001 10:00 AM 114,688 calc.exe
                              1 File(s) 114,688 bytes
                              0 Dir(s) 50,615,652,352 bytes free

Re:Only 1024? (2, Interesting)

jfengel (409917) | more than 6 years ago | (#21372283)

The original lacked a gui.

And scientific functions.

And the ability to convert hex.

And store/recall.

The original had 4 functions. This one has at least 40. Would you rather the MS guys spend time seeing if they can force their 114k application down into 10k, or perhaps writing an operating system that doesn't suck?

Re:Only 1024? (5, Funny)

DragonWriter (970822) | more than 6 years ago | (#21372317)

Would you rather the MS guys spend time seeing if they can force their 114k application down into 10k, or perhaps writing an operating system that doesn't suck?


It'd be an improvement if MS did either.

Re:Only 1024? (1, Interesting)

Anonymous Coward | more than 6 years ago | (#21372701)

A lot of people don't know this, but Windows' Calc.exe actually implements arbitrary precision math. Don't believe me? Calculate 20000!, or calculate 1/3 and repeatedly multiply by 10 and subtract 3.

Try that in 1024 bytes :)

Re:Only 1024? (1)

megaditto (982598) | more than 6 years ago | (#21373659)

I kind of wish their Excel could do at least 200!
Or at least that it would do "=(10.1)-10-0.1" properly

Re:Only 1024? (5, Interesting)

TDRighteo (712858) | more than 6 years ago | (#21374353)

Floating-point math doesn't fix itself. Let's not be hard on Microsoft when:

Python 2.5.1 (r251:54863, Oct 30 2007, 13:54:11)
[GCC 4.1.2 20070925 (Red Hat 4.1.2-33)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 10.1-10-0.1
-3.6082248300317588e-16
and...

$ perl
printf("%s\n", 10.1-10-0.1);
-3.60822483003176e-16
and...

$ php
<?php
echo (10.1-10-0.1);
?>
-3.6082248300318E-16
Note that the answers vary across languages too...

Re:Only 1024? (1)

billcopc (196330) | more than 6 years ago | (#21373843)

Yep, the old Microsoft was great. The new Microsoft is just plain retarded.

Any tard can slap new eyecandy on a tired old app, especially when you're selling it to even bigger tards.

Windows Calc is quite possibly the most abused utility in my arsenal, even more than Notepad.

Re:Only 1024? (1)

cheater512 (783349) | more than 6 years ago | (#21373099)

The KDE guys have gotten theirs to about 5k with a somewhat more functionality than Window's.

Re:Only 1024? (1)

belmolis (702863) | more than 6 years ago | (#21373937)

Yeah, but I bet they do that by relying on shared libraries. The size of the executable doesn't really tell us much these days

Re:Only 1024? (1)

cheater512 (783349) | more than 6 years ago | (#21374149)

Whats your point? Windows suddenly doesnt have shared libraries?
Or is there a reason why the Windows calculator cant use them but the KDE one can? :P

Re:Only 1024? (1)

belmolis (702863) | more than 6 years ago | (#21374541)

My point is that executable size is not by itself a useful basis for comparison of the resources used by a program or how easy it was to write. If you compare two stand-alone programs, you can reasonably say that one is more compact than the other, and it will very likely be true that the smaller program required greater skill to write. If you compare a program that makes extensive use of libraries with one that doesn't, you can't make the same comparison. The shorter program was very likely the easier one to write because all the real work is done by the libraries, and there is no way to tell, just by looking at the programs themselves, which uses more memory.

For example, I am told that Internet Explorer is actually a rather modest shell and that much of the work is done by system calls. If this is true, IE is much smaller than say Firefox or Konqueror, but not in a meaningful way. Certainly, this would not be a reasonable basis for claiming that IE is coded more compactly and cleverly than the others.

Re:Only 1024? (3, Informative)

ppc_digger (961188) | more than 6 years ago | (#21374323)

They put all the actual code in a shared library:

# ldd /usr/bin/kcalc
libkdeinit_kcalc.so => /usr/lib/libkdeinit_kcalc.so (0x00002b1351db8000)
...

# ls -lh /usr/lib/libkdeinit_kcalc.so
-rw-r--r-- 1 root root 436K 2007-07-03 19:15 /usr/lib/libkdeinit_kcalc.so

Re:Only 1024? (0)

Anonymous Coward | more than 6 years ago | (#21375293)

I hope that you realize that this application relies heavily on dlls from the OS. So this is not a true indication of the size.

Heh - non-commercial purposes only (0)

Anonymous Coward | more than 6 years ago | (#21372169)

I wonder if they can still make some $$ off of this code in small embedded applications?

Those were fun (4, Interesting)

certsoft (442059) | more than 6 years ago | (#21372181)

Somewhere around 1975 or 1976 I wrote software for a 4004 (using a teletype connected to a modem connected to a mainframe someplace that had the assembler) to run a X-Y table. You would place a wafer with thick-film resistors on it and it would test each one to make sure it was within tolerance and if it wasn't it would mark it with magnetic ink. I think we were probably still using the infamous 1702 EPROMs but there might have been something newer at that time.

Re:Those were fun (2, Interesting)

jacquesm (154384) | more than 6 years ago | (#21372871)

somewhere around 1982 a buddy of mine and myself disassembled and commented microsoft's basic for the trs-80 color computer. Then we improved it with tons of new statements via the hook in ram. Documenting a bloody calculator is childs play compared to that and we weren't especially proud of it, just curious.

Re:Those were fun (2, Funny)

PopeRatzo (965947) | more than 6 years ago | (#21373021)

somewhere around 1982 a buddy of mine and myself disassembled and commented microsoft's basic for the trs-80 color computer.
And you lived to tell the tale.

Re:Those were fun (0)

Anonymous Coward | more than 6 years ago | (#21373985)

somewhere around 1982 a buddy of mine and myself disassembled and commented microsoft's basic for the trs-80 color computer. Then we improved it with tons of new statements via the hook in ram. Documenting a bloody calculator is childs play compared to that and we weren't especially proud of it, just curious.


Bullshit.. you had better tools than the parent poster did. In fact, you're probably a little puss that actually used a disassembler instead of doing it by hand.

And yeah, what YOU did was child's play. A real hacker would have been using OS9.

Re:Those were fun (1)

dmonahan (957638) | more than 6 years ago | (#21373113)

I wrote a machine tool controller for the 4004. The Intel salesman told us we had one of the first chips in the Boston area. A little while later, he sold us the "first" 8008 in the area.

Dick.

Re:Those were fun (2, Funny)

ozmanjusri (601766) | more than 6 years ago | (#21373325)

A little while later, he sold us the "first" 8008 in the area. Dick.

Why the abuse?

Did he overcharge you?

large function in small code (2, Informative)

Have Brain Will Rent (1031664) | more than 6 years ago | (#21373231)

In 1970 the PDP series from DEC, e.g. PDP-8, had an interpreted (and used interactively) language called FOCAL, arrays (even sparse ones), real numbers, usual math and other functions, for loops, if statements blah blah blah... all the usual stuff - the entire interpreter *and* runtime was programmed in a total of 2K instructions (and they were primitive instructions). That was normal for the time.

Re:large function in small code (0)

Anonymous Coward | more than 6 years ago | (#21374217)

4k word PDP8s ran Fortran compilers at that time. You want to know why C originally only allowed 7 character variable names? They just took up too much of the available core store if they were longer.

Re:large function in small code (2, Interesting)

cburley (105664) | more than 6 years ago | (#21375147)

However, the PDP-8 was a 12-bit-word minicomputer that was designed for inexpensive general-purpose computing, whereas the 4004 was (IIRC) a "tiny" 4-bit-word microchip designed mainly for numerical control applications.

I programmed both, the latter for a friend of mine when I was about 15 years old (he later basically got me my first "real" job as a Software Engineer at Pr1me), and the -8 was definitely much easier to program, with a much more powerful instruction set — the code my friend needed written would have been much easier to write, and perhaps even "smaller" (fewer instructions, maybe fewer bits in the instruction stream?), on the -8, though I confess to remembering too little about the 4004 to be really sure about that. (Of course, the -8 wasn't nearly as nifty a machine, instruction-set-wise, as the -11, or as all-out kick-butt powerful as the -10; I wrote much more assembly/machine code for the -10 than for the other DEC systems combined, and actually got to use -10's far more often, at timesharing companies like Comp/Utility and First Data Corp in Mass. where they ran TOPS-10, and at MIT in the AI lab, where ITS ruled!)

So, all in all, I think the calculator-on-a-4004 is probably more impressive than FOCAL or BASIC on the -8, though FORTRAN on the -8 probably was no trivial accomplishment. But I haven't looked at the source/assembly/machine codes myself to make a proper assessment.

(This seems so long ago now. That was around the time a James Bond movie came out with Roger Moore playing Bond. I recall watching it in the theatre, pretty good-sized crowd, and, I think early on in the movie, there's a scene where Bond is in bed and gets some kind of signal or alarm — I forget which — and looks at his watch, which is shown to the viewers and is an early-model LED watch. And I distinctly recall the reaction from the mostly-male audience when he pressed a button on the watch and it lit up with the time in red LED digits: "Ooooooohhhhh!". As it happens, I later became wealthy enough to buy myself a digital watch...but, sadly, not a Lotus Eclipse.)

Re:large function in small code (2, Interesting)

Have Brain Will Rent (1031664) | more than 6 years ago | (#21375389)

I don't remember the 4004 being all *that* primitive but perhaps I'm thinking of the 8008. But even the 4004 was easier to program than an old Univac machine I used that used patch boards to set up the program - LOL. Regardless I wasn't comparing the relative difficulty between the two machines. I was just making the general observation that people were able to put quite sophisticated software on very primitive machines in what today would be considered microscopic amounts of memory. As for Fortran that actually wasn't that hard to implement on the PDP-8, I was much more impressed with Algol was implemented. IIRC the Algol compiler was user contributed, in the DECUS catalogue, along with a lot of other sophisticated (for the time) user contributed software.

In fact DECUS may have been the very first organized attempt at general distribution of free and/or open source software.

but... (0, Offtopic)

malraid (592373) | more than 6 years ago | (#21372221)

does it run linux? ... lame!

Re:but... (1)

andreyvul (1176115) | more than 6 years ago | (#21372267)

No: 4-bit devices are outside the range of Linux.

Re:but... (1)

sqrt(2) (786011) | more than 6 years ago | (#21372309)

That sounds like a dare to me.

Re:but... (1)

andreyvul (1176115) | more than 6 years ago | (#21372445)

Here's a real dare: have linux work on a 1-bit turing machine that has no registers

Re:but... (3, Funny)

Anonymous Coward | more than 6 years ago | (#21372667)

Did it, but the ATI drivers still sucked.

Re:but... (1)

McGiraf (196030) | more than 6 years ago | (#21372815)

whah! ah! ah! ah! ah! ah!

Your comment violated the "postercomment" compression filter. Try less whitespace and/or less repetition. Comment aborted.

slashdot headline, 2057: (4, Funny)

circletimessquare (444983) | more than 6 years ago | (#21372249)

"Historians Recreate Source Code of First 404 Error Message"

(truth be told, quick scanning the headlines, that's what my brain registered)

I hate to be a pendantic jerk, but... (3, Funny)

gatekeep (122108) | more than 6 years ago | (#21372271)

"...an authentic calculator simulator..."

What the hell is an authentic simulator?

Re:I hate to be a pendantic jerk, but... (1)

LarsG (31008) | more than 6 years ago | (#21372943)

I suppose one would have to use genuine emulation.

Re:I hate to be a pendantic jerk, but... (1)

vocaro (569257) | more than 6 years ago | (#21375397)

I hate to be a pedantic jerk, but you misspelled pedantic.

Quickly -- someone send this to MS (4, Funny)

Eberlin (570874) | more than 6 years ago | (#21372365)

Quick, someone send this over to the folks who wrote Excel!

Re:Quickly -- someone send this to MS (1)

Ken_g6 (775014) | more than 6 years ago | (#21374613)

Did you read section 4.6?

"...'10.01 / 3 = Ex / 3 =' gives '666666666666.6'."

Bad idea!

uhhhh... (0)

Anonymous Coward | more than 6 years ago | (#21372369)

"the Busicom 141-PF calculator. At the team's web site you can download and play with an authentic calculator simulator that sports a cool animated flowchart."

Hate to use that calc. Did a simple 9+9 and it gave me 1. or 0. or 9 + 99 is 11. the only way to get a semi-correct answer was
9+
9+
+
and it returned
=27

A slight bug maybe?

Re:uhhhh... (2, Funny)

Cassius Corodes (1084513) | more than 6 years ago | (#21372465)

That is the correct answer - all modern calculators are descended from a competitor's model which incorrectly calculated 9+9 to be 18.

Re:uhhhh... (0, Redundant)

Ecuador (740021) | more than 6 years ago | (#21372567)

Additions give me garbage too, however multiplication and SQRT worked fine. Are we doing something wrong with addition?

Re:uhhhh... (1)

netringer (319831) | more than 6 years ago | (#21372607)

You could read the documentation. You want 9+ 9+ = At the end you did 9+9+9 You could look at what's on the tape. IHBTHIND

Commander Keen (5, Interesting)

QuantumG (50515) | more than 6 years ago | (#21372451)

I once reverse engineered the classic id software game Commander Keen. John Carmack did some cool stuff in that code.. each sprite had two function pointers in it, one was called when the sprite came into contact with another sprite, the other was called every frame to animate the sprite (he called it the "think" function). When you killed a monster the sprite was replaced with a "body" which was just like a sprite but had a few less fields (so it took up less memory). One of the neatest things he did was use this exact same framework of sprites and bodies to animate the "static" parts of the game. For example, the color coded doors that you have to get the key cards to open were sprites with a contact function that checked if the player had the right key card, at which time they would "die" and be replaced by a body that had a think function would make them slide out of the way.

For anyone who would like to take a look, I've put the re-engineered source code [insomnia.org] up.

Re:Commander Keen (1, Funny)

Anonymous Coward | more than 6 years ago | (#21372507)

How dare you learn something without authorization! This is a clear DMCA violation. Mr. Carmack's lawyers are on the way to your house now to execute you...errr, I mean execute their warrant to take all your computers and reclaim the code you stole. And you're distrubuting it too! Well now you're also a pirate. You're going away for a long time.

Re:Commander Keen (1)

QuantumG (50515) | more than 6 years ago | (#21375037)

Ha! What in the world makes you think Carmack still has copyright over this code? Last I heard, Tom Hall had the rights.

Re:Commander Keen (0)

Anonymous Coward | more than 6 years ago | (#21372689)

Bravo, and nice choice. That's some serious coding, and one of my all-time favorite games.

Re:Commander Keen (4, Interesting)

Cheesey (70139) | more than 6 years ago | (#21372789)

Carmack's code is always interesting. Most famously, there's the infamous square root approximation from Quake [codemaestro.com]. But I'm still impressed by the original Doom render loop, with it's self-modifying code.

The loop is drawing columns (vertical slivers of wall). It needs to interpolate between two things: the input wall texture, and the output part of the screen. Carmack uses something like Bresenham's line drawing algorithm to do this, but because the 386 has such a limited register set, he stores the fractional increment in an immediate attached to the "addl" instruction:

doubleloop:
    movl ecx,ebp // begin calculating third pixel
patch1:
    addl ebp,12345678h // advance frac pointer
    movb [edi],al // write first pixel
    shrl ecx,25 // finish calculation for third pixel
    movl edx,ebp // begin calculating fourth pixel
patch2:
    addl ebp,12345678h // advance frac pointer
    movl [edi+SCREENWIDTH],bl // write second pixel
    shrl edx,25 // finish calculation for fourth pixel
    movb al,[esi+ecx] // get third pixel
    addl edi,SCREENWIDTH*2 // advance to third pixel destination
    movb bl,[esi+edx] // get fourth pixel
    decl [loopcount] // done with loop?
    movb al,[eax] // color translate third pixel
    movb bl,[ebx] // color translate fourth pixel
    jnz doubleloop
and elsewhere... :)

movl ebx,[_dc_iscale]
    shll ebx,9
    movl eax,OFFSET patch1+2 // convice tasm to modify code...
    movl [eax],ebx
A similarly impressive trick is used to draw floors, where 3D interpolation is required because each texture needs to be crossed diagonally, not vertically. I never understood how Doom drew floors until I looked at the code, and I still think it's deep magic. And that's without even mentioning the BSP code!

Re:Commander Keen (1)

Chris Pimlott (16212) | more than 6 years ago | (#21373787)

Would you mine annotating this a bit more? I'm not that familiar with 386 assembly, thanks.

Re:Commander Keen (1)

Hal_Porter (817932) | more than 6 years ago | (#21375077)

patch1:
    addl ebp,12345678h
generates some code like this

81 C5 78 56 34 12
The first two bytes are addl,ebp and the rest are the constant.

Now what Carmack wants to do here is to have an extra register to hold a constant so he overwrites the constant in the instruction. Patch1+2 is where the constant is

movl ebx,[_dc_iscale] // get the constant
    shll ebx,9 // constant <<= 9
    movl eax,OFFSET patch1+2 // get the address of the constant in the instruction
    movl [eax],ebx // overwrite it in the instruction
So essentially the code becomes

patch1:
    addl ebp, _dc_iscale << 9
What I'm not sure is why he didn't do addl ebp,[FractionalIncrement]. That would take the FractionalIncrement from a memory location. Then he wouldn't need the self modifying code, he could just write _dc_iscale

patch1:
; Rx holds whatever was in ebp
; Ry is _dc_iscale
  ldr Rx, [Rx, Ry, lsl #9]

Re:Commander Keen (2, Informative)

Hal_Porter (817932) | more than 6 years ago | (#21375117)

Damnit slashdot really doesn't like <s in the middle of paragraph even in Plain Old Text mode, it actually junked the next couple of paragraphs!

patch1:
    addl ebp,12345678h
generates some code like this

81 C5 78 56 34 12
The first two bytes are addl,ebp and the rest are the constant.

Now what Carmack wants to do here is to have an extra register to hold a constant so he overwrites the constant in the instruction. Patch1+2 is where the constant is

movl ebx,[_dc_iscale] // get the constant
    shll ebx,9 // constant <<= 9
    movl eax,OFFSET patch1+2 // get the address of the constant in the instruction
    movl [eax],ebx // overwrite it in the instruction
So essentially the code becomes

patch1:
    addl ebp, _dc_iscale << 9
What I'm not sure is why he didn't do addl ebp,[FractionalIncrement]. That would take the FractionalIncrement from a memory location. Then he wouldn't need the self modifying code, he could just write _dc_iscale << 9 there.

On the other hand, maybe the code is memory limited anyway and this will slow it down.

On a recent x86 processor self modifying code will be correct but not too fast. If code is not self modifying it will execute from the instruction cache and writes will be buffered and stored in writeback data cache. Self modifying code screws with this - the write needs to end up in the i cache somehow. And x86 opcodes are converted into a Risc like internal format for execution, and if these are cached you need to flush that cache too. And since they have to do it on old code they have to do all steps automatically with no hints from the programmer.

On an ARM you just need to clean the dcache, flush the write buffer and flush the icache as ARM instructions are a executed directly. And all these are things the programmer has to ask for explicitly using MCR and MRC instructions. Actually ironically the ARM has more registers 13 instead of 6 so you have less need for this and you can encode shift counts for free, so in ARM you could do this

patch1:
; Rx holds whatever was in ebp
; Ry is _dc_iscale
  ldr Rx, [Rx, Ry, lsl #9] // Rx = Rx + (Ry<<9)

Re:Commander Keen (1)

pragma_x (644215) | more than 6 years ago | (#21374087)

Now that's an interesting tidbit. So I guess in a sense Keen can claim some amount of intellectual heritage to Quake?

Here's what I'm driving at: I did a rather deep survey of some Quake2 code about 10 years ago and found that it too called the animation control routines "think" functions. Same kind of hackery there too: structs with functions attached.

The part I liked the most (in Q2) was where the save routine simply copied the entire array of game entities to disk as one big slab of bits, taking care to only re-write any entity pointers as indicies back into the array. Loading simply did the reverse. Fast and reliable, if a bit wasteful on disk; I wonder what other things have survived through to ID Tech 5...

How to build a CPU -- transistor level up! (3, Informative)

compumike (454538) | more than 6 years ago | (#21372543)

Take a look at this set of videos from MIT's 6.004 Computation Structures [mit.edu] class. They basically walk through the design of a simple 32-bit CPU from transistors, to gates, to functional blocks, to a full processor.

Anyway, reading about how hard it was to recreate the source code from the 4004 makes me wonder how easily we could find source code for some apps from even a decade ago. Lots of companies have gone bankrupt / discontinued products / been sold / etc, and we all know that lots of people aren't good about backing up their code. It's neat to go to the Linux Kernel Archives and look at the Historic Linux sources [kernel.org].

--
Educational microcontroller kits for the digital generation. [nerdkits.com]

Re:How to build a CPU -- transistor level up! (0, Offtopic)

Danny Rathjens (8471) | more than 6 years ago | (#21373023)

Can you please put your advertisement in the proper signature field in your preferences instead of pasting it into the body of your message with the fake -- delimiter to fool people(search engines?) into thinking it is a normal sig?
Those of us with signature viewing disabled will still see the link to your website above your comment.

Re:How to build a CPU -- transistor level up! (1)

Nefarious Wheel (628136) | more than 6 years ago | (#21373723)

Simple -- buy a wire wrap tool, a breadboard kit and the TTL Handbook.

Can't find them? Should be on the shelf there somewhere. There must be a lot of old kit you can use to desolder TTL circuit components. You may need to build a Heathkit http://en.wikipedia.org/wiki/Heathkit/ [wikipedia.org] dual-trace CRO first though.

Geez I'm getting old.

Amazing! (4, Insightful)

Reality Master 101 (179095) | more than 6 years ago | (#21372557)

'He is an amazing reverse-engineer,' recounts team leader Tim McNerney, 'We understood the disassembled calculator code well enough to simulate it, but Lajos really turned it into "source code" of the highest standards.'

No disrespect to Lajos, but have we really fallen so far in programming standards that it's considered "amazing" to disassemble a 1024 byte program? Back in my day (and stay the hell off my lawn!) we used to disassemble programs all the time. I reverse engineered the operating system for a computer I developed for because we wanted to hook into places that weren't accessible.

Disassembly is apparently a lost art in these decadent days of some programmers never using anything but scripting languages (e.g., Java, Python, Perl) and having no clue what goes on under the hood.

Re:Amazing! (1)

DragonWriter (970822) | more than 6 years ago | (#21372697)

No disrespect to Lajos, but have we really fallen so far in programming standards that it's considered "amazing" to disassemble a 1024 byte program?


Good question. Lets look at the excerpt from TFA included in TFS:

'He is an amazing reverse-engineer,' recounts team leader Tim McNerney, 'We understood the disassembled calculator code well enough to simulate it, but Lajos really turned it into "source code" of the highest standards.'


Sure looks to me that what Lajos is being credited with isn't the disassembly, at all.

Re:Amazing! (1)

Reality Master 101 (179095) | more than 6 years ago | (#21372829)

'He is an amazing reverse-engineer,' recounts team leader Tim McNerney, 'We understood the disassembled calculator code well enough to simulate it, but Lajos really turned it into "source code" of the highest standards.' [...] Sure looks to me that what Lajos is being credited with isn't the disassembly, at all.

I disagree, McNerney seems to be saying that they understood the machine language well enough to simulate the calculator, but Lajos disassembled and commented the source code so that they understood what it was doing. It's the difference between the MAME guys who write a processor simulator and the guys who actually disassembly the ROMs to see how they work.

Either task for this calculator is pretty damn simple. It's just that somehow modern programmers have been taught to fear assembly and machine language as something too arcane to be understood by mortals. I actually blame the universities who typically teach assembly language as an afterthought, rather than teach it in the first year as it ought to be.

Re:Amazing! (3, Insightful)

be-fan (61476) | more than 6 years ago | (#21373275)

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Susman

From a theoretical point of view, assembly knowledge isn't particularly useful because it doesn't lend itself to rigorous analysis (the "science" part of "computer science"). From a practical point of view, since very few programs are written in assembly language anymore, knowledge of it has limited utility. Further, from a practical point of view, I'd much rather deal with a programmer who can explain his work in terms of data structures and algorithms than one that is stuck thinking in terms of registers and memory locations.

There is certainly a place for assembly knowledge*. It's just a niche, and not a particularly important one anymore. Meanwhile, there are lots and lots of diverse applications for the theory they teach you in those classes instead of assembly. In my own work, I've had to bust out the graph theory way more often than I've had to bust out my knowledge of asm tricks for fast line-rendering...

*) Interestingly enough, one of those places is inside the language runtimes of high-level languages. There are usually lots of neat tricks inside those things (eg: using the NaN space of double-precision floats to store unions of floats and 51-bit integers without extra variant tags!)

Re:Amazing! (4, Interesting)

dmonahan (957638) | more than 6 years ago | (#21373175)

Sometime in the early 70s, a Honeywell division, one of our steady clients, called with a strange request. They had built a small number of special machines for the Navy. Now the Navy wanted more. Honeywell had the circuit drawings and the bootable tape (which they got from the Navy). They had no documentation (not even the instruction set). They asked us to rebuild the code. We did. Dick.

Re:Amazing! (1)

Just Some Guy (3352) | more than 6 years ago | (#21372807)

No disrespect to Lajos, but have we really fallen so far in programming standards that it's considered "amazing" to disassemble a 1024 byte program?

I dunno. I'm certain I could look at any given one kilobyte program and tell you "that opcode is adding the results of those two", but it takes a certain kind of cleverness to figure out why it's using opcodes for constants and how they manage to pack a shift-right-branch-if-odd into two bytes plus an index register.

See also "The Story Of Mel" [pbm.com]. Now imagine being tasked with turning that into readable, understandable code. That's the real accomplishment.

Re:Amazing! (1)

Jay L (74152) | more than 6 years ago | (#21373043)

Now imagine being tasked with turning that into readable, understandable code.

Don't have to imagine. Well, that's not quite true; I've never done anything on the scale of drum timing. But "disassembly" isn't just "opcode 53 adds X to the accumulator"; that part's (nearly) always been easy and automated. The hard part is going through, figuring out what every single memory location is for, making up your own consistent label for it, understanding the self-modifying part of the code, etc. Disassembly is a labor-intensive human process, not just the output of a "disassembler".

I remember using disassemblers from my Commodore days; the more advanced ones would spot most of the standard, documented KERNAL routines and registers, but for the most part they were opcode translators and editors with good search and replace. (Keep in mind that at the time, "cut and paste" was so novel it didn't even have a common metaphor; some called it "split and glue [artscipub.com]".)

The art was advanced enough by then that books like "Inside Commodore DOS" had, IIRC, a complete disassembly with comments, as well as the typical "reference guide" of functions and variables (all reverse engineered, of course).

So I'm with Reality Master; yay for keeping the knowledge alive and all that, but this used to not be all that impressive a feat.

Re:Amazing! (1)

Just Some Guy (3352) | more than 6 years ago | (#21373087)

Been there, done all of that. And no, what he did isn't extremely difficult or novel, but I still give him credit for pulling off nice work.

Re:Amazing! (2, Funny)

Juliemac (892781) | more than 6 years ago | (#21372817)

The company I work for hired 4 programmers (from out of country) to re-work existing code and clear out known bugs. As a result, the log in no longer worked. 2 weeks later, the testers could get in, but none of the drop down boxes worked and more. Problem is they are wizards. They click and drop code with out understanding what the code does. The US trained programmers cant get the time of day from the head of IT.

Re:Amazing! (1)

NixieBunny (859050) | more than 6 years ago | (#21373655)

This is not your typical disassembly job.

If you read the fine source code linked to in the article, you would see that not only is the machine code disassembled, but the virtual machine that it implements is fully described. That's not a trivial exercise.

Re:Amazing! (1)

Locklin (1074657) | more than 6 years ago | (#21374315)

I wouldn't say it's a lost art -- I'm very proficient at disassembling Python, Perl and PHP. I can get at the source in a matter of seconds!

Re:Amazing! (0)

Anonymous Coward | more than 6 years ago | (#21374765)

Heh. I learned disassembly the old fashioned way back in high school -- removing the copy protection from Apple II games. Uphill. Both ways.

Re:Amazing! (1)

shutdown -p now (807394) | more than 6 years ago | (#21375003)

No disrespect to Lajos, but have we really fallen so far in programming standards that it's considered "amazing" to disassemble a 1024 byte program? Back in my day (and stay the hell off my lawn!) we used to disassemble programs all the time. I reverse engineered the operating system for a computer I developed for because we wanted to hook into places that weren't accessible.
It's one thing to disassemble a 64Kb program handwritten in assembly, or using a compiler from a relatively low-level language (such as C) which can only do the simplest optimizations. Back in DOS days, I cracked a few games myself like that. Things are different today because high-level languages are used which often have fundamental operations that can easily correspond to several dozen asm instructions each, and executables tend to be large, easily going into several megabytes. Add a decent modern optimizer to that, the kind that will agressively inline calls (who compiles for size rather than speed on the desktop these days?), and rearrange code and data access seemingly at random to get the most out of jump predictor and cache, and you get a real mess to disassemble. Looking at output generated by gcc at -O3 for C++ code that heavily uses STL can be enlightening at times.

Re:Amazing! (0)

Anonymous Coward | more than 6 years ago | (#21375335)

I recall having seen a pacman disassembly fully commented a couple of years ago. That is a great reverse engineering effort. 1024 bytes of a calculator doesn't seem as an amazing achievement to me.

I wrote a PC BIOS INT10 video display driver in 4K (0)

Anonymous Coward | more than 6 years ago | (#21372679)

I wrote a PC BIOS INT10 video display driver in 4KB, with many extensions. That did a whole lot more than some stupid 4-function/print calculator. Whoop-di-do.

55378008 (1)

Doc Ruby (173196) | more than 6 years ago | (#21372757)

'leet speak first turned the world upside down as a joke about "BOOBLESS". I wonder if the 4004 could run a softporn text adventure game like that.

My 4004 Project (1)

cosmicpossum (554246) | more than 6 years ago | (#21372775)

[reminisce] Back in 1972 I did the first uP project at Cornell using a 4004. No assembler, no emulator, not even a PROM programmer. Just a list of op-codes and a sheet of paper that I wrote H or L for every bit of the PROM. That got sent to a electronics distributor that would program the part. Unfortunately, I can't claim to have done the first OPERATING uP project at Cornell! [/reminisce]

mCod up (-1, Offtopic)

Anonymous Coward | more than 6 years ago | (#21372795)

one Here but now keep, and I $won't elected, we took lesson and it's going,

copyright violation? (0)

Anonymous Coward | more than 6 years ago | (#21372923)


Our copyright laws discourage information replication, even when the information is no longer profitable and only useful in a trivial sense.

This is especially evident with software, but also true with other media as well, which fades away when it is not profitable to sell copies and not legal for third parties to re-use or copy freely.

make that 404 (0)

Anonymous Coward | more than 6 years ago | (#21373001)

New headline: Slashdot recreates the first 404 by slashdotting the website reporting the source code for the first 4004 application.

Did it run linux? (0)

Anonymous Coward | more than 6 years ago | (#21373163)

Yes, but did it run linux?

Something is wrong...... (0)

Anonymous Coward | more than 6 years ago | (#21373331)

Yah I tried out the calculator and something is wrong with it b/c according to it:
3 + 6 = 0
5 + 6 = 12
3 + 4 = .5
4 + 3 = 12
9 / 3 = 3
Somebody messed up somewhere >.>

Re:Something is wrong...... (4, Informative)

bpharri2 (173681) | more than 6 years ago | (#21373479)

Of course if you had bothered to read the article, you'd know that it doesn't work like todays calculators but like the old adding machines:

"The electronic calculators that accountants used 35 years ago worked differently than the familiar four-function calculator we use today. These were designed to behave much like mechanical adding machines of the 1960's. After every number you want to add to the total, you need to press +, so = doesn't work like you'd expect. Here are some examples:

To add three numbers: 61 + 79 + 83 + = (if you forget the last +, the 83 won't get added)
To subtract two numbers: 2007 + 1971 - =
To multiply two numbers: 125 x 5 = (this is more like we're used to)
To divide two numbers: 625 / 5 = "

1024 bytes? Try 1024 bits (1)

davidwr (791652) | more than 6 years ago | (#21373535)

In 1998, to celebrate the 50th anniversary of an early computer, The University of Manchester ran a programming contest [computer50.org] on the Baby Mark I, which sported 32 words of 32 bits each and a very limited instruction set: you couldn't even ADD.

There were, of course, many other ideas apart from those of the prizewinners: programs to compute square roots, fibonnaci sequences, trig functions and encryption algorithms. A program which clears the store totally, another which simulates bellringing. A tamagochi program, a cipher machine simulator, and so on.
The winning entry was a noodle-timer program.

I have the original 4004 reference guide (1)

Nefarious Wheel (628136) | more than 6 years ago | (#21373633)

I have the original 4004 reference guide (blue cover), scored during an early Wescon convention in 1970. I looked at this and said -- "Oooh, a whole hexadecimal digit on a single chip. That's going to change things."

People used to consider square wave logic charts a programming tool back then, too.

Somebody call the cops! (1)

breem42 (664497) | more than 6 years ago | (#21373951)


It is obvious this Kintli fellow has violated the DMCA ... or is it the SPCA ... anyway he broke
the law by reverse engineering a piece of commercially sold software. Since this was not done for
the purpose of interoperability, the law should be called in!

Asimov's The Feeling of Power (3, Interesting)

drachenstern (160456) | more than 6 years ago | (#21375075)

How has no one mentioned this yet? - Don't blame me too much, I just copied and pasted from: http://downlode.org/Etext/power.html [downlode.org]

The Feeling Of Power
by Isaac Asimov

Jehan Shuman was used to dealing with the men in authority on long-embattled earth. He was only a civilian but he originated programming patterns that resulted in self-directing war computers of the highest sort. Generals, consequently listened to him. Heads of congressional committees too.

There was one of each in the special lounge of New Pentagon. General Weider was space-burned and had a small mouth puckered almost into a cipher. He smoked Denebian tobacco with the air of one whose patriotism was so notorious, he could be allowed such liberties.

Shuman, tall, distinguished, and Programmer-first-class, faced them fearlessly.

He said, "This, gentlemen, is Myron Aub."

"The one with the unusual gift that you discovered quite by accident," said Congressman Brant placidly. "Ah." He inspected the little man with the egg-bald head with amiable curiosity.

The little man, in return, twisted the fingers of his hands anxiously. He had never been near such great men before. He was only an aging low-grade technician who had long ago failed all tests designed to smoke out the gifted ones among mankind and had settled into the rut of unskilled labor. There was just this hobby of his that the great Programmer had found out about and was now making such a frightening fuss over.

General Weider said, "I find this atmosphere of mystery childish."

"You won't in a moment," said Shuman. "This is not something we can leak to the firstcomer. Aub!" There was something imperative about his manner of biting off that one-syllable name, but then he was a great Programmer speaking to a mere technician. "Aub! How much is nine times seven?"

Aub hesitated a moment. His pale eyes glimmered with a feeble anxiety.

"Sixty-three," he said.

Congressman Brant lifted his eyebrows. "Is that right?"

"Check it for yourself, Congressman."

The congressman took out his pocket computer, nudged the milled edges twice, looked at its face as it lay there in the palm of his hand, and put it back. He said, "Is this the gift you brought us here to demonstrate. An illusionist?"

"More than that, sir. Aub has memorized a few operations and with them he computes on paper."

"A paper computer?" said the general. He looked pained.

"No, sir," said Shuman patiently. "Not a paper computer. Simply a piece of paper. General, would you be so kind as to suggest a number?"

"Seventeen," said the general.

"And you, Congressman?"

"Twenty-three."

"Good! Aub, multiply those numbers, and please show the gentlemen your manner of doing it."

"Yes, Programmer," said Aub, ducking his head. He fished a small pad out of one shirt pocket and an artist's hairline stylus out of the other. His forehead corrugated as he made painstaking marks on the paper.

General Weider interrupted him sharply. "Let's see that."

Aub passed him the paper, and Weider said, "Well, it looks like the figure seventeen."

Congressman Brant nodded and said, "So it does, but I suppose anyone can copy figures off a computer. I think I could make a passable seventeen myself, even without practice."

"If you will let Aub continue, gentlemen," said Shuman without heat.

Aub continued, his hand trembling a little. Finally he said in a low voice, "The answer is three hundred and ninety-one."

Congressman Brant took out his computer a second time and flicked it. "By Godfrey, so it is. How did he guess?"

"No guess, Congressman," said Shuman. "He computed that result. He did it on this sheet of paper."

"Humbug," said the general impatiently. "A computer is one thing and marks on a paper are another."

"Explain, Aub," said Shuman.

"Yes, Programmer. Well, gentlemen, I write down seventeen, and just underneath it I write twenty-three. Next I say to myself: seven times three -"

The congressman interrupted smoothly, "Now, Aub, the problem is seventeen times twenty-three."

"Yes, I know," said the little technician earnestly, "but I start by saying seven times three because that's the way it works. Now seven times three is twenty-one."

"And how do you know that?" asked the congressman.

"I just remember it. It's always twenty-one on the computer. I've checked it any number of times."

"That doesn't mean it always will be, though, does it?" said the congressman.

"Maybe not," stammered Aub. "I'm not a mathematician. But I always get the right answers, you see."

"Go on."

"Seven times three is twenty-one, so I write down twenty-one. Then one times three is three, so I write down three under the two of twenty-one."

"Why under the two?" asked Congressman Brant at once.

"Because - " Aub looked helplessly at his superior for support. "It's difficult to explain."

Shuman said, "If you will accept his work for the moment, we can leave the details for the mathematicians."

Brant subsided.

Aub said, "Three plus two makes five, you see, so the twenty- one becomes a fifty-one. Now you let that go for a while and start fresh. You multiply seven and two, that's fourteen, and one and two, that's two. Put them down like this and it adds up to thirty-four. Now if you put the thirty-four under the fifty-one this way and add them, you get three hundred and ninety-one, and that's the answer."

There was an instant's silence and then General Weider said, "I don't believe it. He goes through this rigmarole and makes up numbers and multiplies and adds them this way and that, but I don't believe it. It's too complicated to be anything but horn-swoggling."

"Oh no, sir," said Aub in a sweat. "It only seems complicated because you're not used to it. Actually the rules are quite simple and will work for any numbers."

"Any numbers, eh?" said the general. "Come, then." He took out his own computer (a severely styled GI model) and struck it at random. "Make a five seven three eight on the paper. That's five thousand seven hundred and thirty-eight."

"Yes, sir," said Aub, taking a new sheet of paper.

"Now" - more punching of his computer - "seven two three nine. Seven thousand two hundred and thirty-nine."

"Yes, sir."

"And now multiply those two."

"It will take some time," quavered Aub.

"Take the time," said the general.

"Go ahead, Aub," said Shuman crisply.

Aub set to work, bending low. He took another sheet of paper and another. The general took out his watch finally and stared at it. "Are you through with your magic-making, Technician?"

"I'm almost done, sir. Here it is, sir. Forty-one million, five hundred and thirty-seven thousand, three hundred and eighty-two." He showed the scrawled figures of the result.

General Weider smiled bitterly. He pushed the multiplication contact on his computer and let the numbers whirl to a halt. And then he stared and said in a surprised squeak, "Great Galaxy, the fella's right."

The President of the Terrestrial Federation had grown haggard in office and, in private, he allowed a look of settled melancholy to appear on his sensitive features. The Denebian War, after its early start of vast movement and great popularity, had trickled down into a sordid matter of maneuver and counter-maneuver, with discontent rising steadily on earth. Possibly, it was rising on Deneb, too.

And now Congressman Brant, head of the important Committee on Military Appropriations, was cheerfully and smoothly spending his half-hour appointment spouting nonsense.

"Computing without a computer," said the president impatiently, "is a contradiction in terms."

"Computing," said the congressman, "is only a system for handling data. A machine might do it, or the human brain might. Let me give you an example." And, using the new skills he had learned, he worked out sums and products until the president, despite himself, grew interested.

"Does this always work?"

"Every time, Mr. President. It is foolproof."

"Is it hard to learn?"

"It took me a week to get the real hang of it. I think you would do better."

"Well," said the president, considering, "it's an interesting parlor game, but what is the use of it?"

"What is the use of a newborn baby, Mr. President? At the moment there is no use, but don't you see that this points the way toward liberation from the machine. Consider, Mr. President" - the congressman rose and his deep voice automatically took on some of the cadences he used in public debate - "that the Denebian War is a war of computer against computer. Their computers forge an impenetrable shield of countermissiles against our missiles, and ours forge one against theirs. If we advance the efficiency of our computers, so do they theirs, and for five years a precarious and profitless balance has existed.

"Now we have in our hands a method for going beyond the computed, leapfrogging it, passing through it. We will combine the mechanics of computation with human thought; we will have the equivalent of intelligent computers, billions of them. I can't predict what the consequences will be in detail, but they will be incalculable. And if Deneb beats us to the punch, they may be unimaginably catastrophic."

The president said, troubled, "What would you have me do?"

"Put the power of the administration behind the establishment of a secret project on human computation. Call it Project Number, if you like. I can vouch for my committee, but I will need the administration behind me."

"But how far can human computation go?"

"There is no limit. According to Programmer Shuman, who first introduced me to this discovery - "

"I've heard of Shuman, of course."

"Yes. Well, Dr. Shuman tells me that in theory there is nothing the computer can do that the human mind cannot do. The computer merely takes a finite amount of data and performs a finite amount of operations on them. The human mind can duplicate the process."

The president considered that. He said, "If Shuman says this, I am inclined to believe him - in theory. But, in practice, how can anyone know how a computer works?"

Brant laughed genially. "Well, Mr. President, I asked the same question. It seems that at one time computers were designed directly by human beings. Those were simple computers, of course, this being before the time of the rational use of computers to design more advanced computers had been established."

"Yes, yes. Go on."

"Technician Aub apparently had, as his hobby, the reconstruction of some of these ancient devices, and in so doing he studied the details of their workings and found he could imitate them. The multiplication I just performed for you is an imitation of the workings of a computer."

"Amazing!"

The congressman coughed gently. "If I may make another point, Mr. President - the further we can develop this thing, the more we can divert our federal effort from computer production and computer maintenance. As the human brain takes over, more of our energy can be directed into peacetime pursuits and the impingement of war on the ordinary man will be less. This will be most advantageous for the party in power, of course."

"Ah," said the president, "I see your point. Well, sit down, Congressman, sit down. I want some time to think about this. But meanwhile, show me that multiplication trick again. Let's see if I can't catch the point of it."

Programmer Shuman did not try to hurry matters. Loesser was conservative, very conservative, and liked to deal with computers as his father and grandfather had. Still, he controlled the West European computer combine, and if he could be persuaded to join Project Number in full enthusiasm, a great deal would be accomplished.

But Loesser was holding back. He said, "I'm not sure I like the idea of relaxing our hold on computers. The human mind is a capricious thing. The computer will give the same answer to the same problem each time. What guarantee have we that the human mind will do the same?"

"The human mind, Computer Loesser, only manipulates facts. It doesn't matter whether the human mind or a machine does it. They are just tools."

"Yes, yes. I've gone over your ingenious demonstration that the mind can duplicate the computer, but it seems to me a little in the air. I'll grant the theory, but what reason have we for thinking that theory can be converted to practice?"

"I think we have reason, sir. After all, computers have not always existed. The cavemen with their triremes, stone axes, and railroads had no computers."

"And possibly they did not compute."

"You know better than that. Even the building of a railroad or a ziggurat called for some computing, and that must have been without computers as we know them."

"Do you suggest they computed in the fashion you demonstrate?"

"Probably not. After all, this method - we call it 'graphitics,' by the way, from the old European word 'grapho,' meaning 'to write' - is developed from the computers themselves, so it cannot have antedated them. Still, the cave men must have had some method, eh?"

"Lost arts! If you're going to talk about lost arts - "

"No, no. I'm not a lost art enthusiast, though I don't say there may not be some. After all, man was eating grain before hydroponics, and if the primitives ate grain, they must have grown it in soil. What else could they have done?"

"I don't know, but I'll believe in soil growing when I see someone grow grain in soil. And I'll believe in making fire by rubbing two pieces of flint together when I see that too."

Shuman grew placative. "Well, let's stick to graphitics. It's just part of the process of etherealization. Transportation by means of bulky contrivances is giving way to mass transference. Communications devices become less massive and more efficient constantly. For that matter, compare your pocket computer with the massive jobs of a thousand years ago. Why not, then, the last step of doing away with computers altogether? Come, sir, Project Number is a going concern; progress is already headlong. But we want your help. If patriotism doesn't move you, consider the intellectual adventure involved."

Loesser said skeptically, "What progress? What can you do beyond multiplication? Can you integrate a transcendental function?"

"In time, sir. In time. In the last month, I have learned to handle division. I can determine, and correctly, integral quotients and decimal quotients."

"Decimal quotients? To how many places?"

Programmer Shuman tried to keep his tone casual. "Any number!"

Loesser's jaw dropped. "Without a computer?"

"Set me a problem."

"Divide twenty-seven by thirteen. Take it to six places."

Five minutes later Shuman said, "Two point oh seven six nine two three."

Loesser checked it. "Well, now, that's amazing. Multiplication didn't impress me too much because it involved integers, after all, and I thought trick manipulation might do it. But decimals - "

"And that is not all. There is a new development that is, so far, top secret and which, strictly speaking, I ought not to mention. Still - we may have made a break-through on the square root front."

"Square roots?"

"It involves some tricky points and we haven't licked the bugs yet, but Technician Aub, the man who invented the science and who has amazing intuition in connection with it, maintains he has the problem almost solved. And he is only a technician. A man like yourself, a trained and talented mathematician, ought to have no difficulty."

"Square roots," muttered Loesser, attracted.

"Cube roots, too. Are you with us?"

Loesser's hand thrust out suddenly. "Count me in."

General Weider stumped his way back and forth at the head of the room and addressed his listeners after the fashion of a savage teacher facing a group of recalcitrant students. It made no difference to the general that they were the civilian scientists heading Project Number. The general was over-all head, and he so considered himself at every waking moment.

He said, "Now square roots are fine. I can't do them myself and I don't understand the methods, but they're fine. Still, the project will not be sidetracked into what some of you call the fundamentals. You can play with graphitics any way you want to after the war is over, but right now we have specific and very practical problems to solve."

In a far corner Technician Aub listened with painful attention. He was no longer a technician, of course, having been relieved of his duties and assigned to the project, with a fine-sounding title and good pay. But, of course, the social distinction remained, and the highly placed scientific leaders could never bring themselves to admit him to their ranks on a footing of equality. Nor, to do Aub justice, did he, himself, wish it. He was as uncomfortable with them as they with him.

The general was saying, "Our goal is a simple one, gentlemen - the replacement of the computer. A ship that can navigate space without a computer on board can be constructed in one fifth the time and at one tenth the expense of a computer-laden ship. We could build fleets five times, ten times, as great as Deneb could if we could but eliminate the computer.

"And I see something even beyond this. It may be fantastic now, a mere dream, but in the future I see the manned missile!"

There was an instant murmur from the audience.

The general drove on. "At the present time our chief bottleneck is the fact that missiles are limited in intelligence. The computer controlling them can only be so large, and for that reason they can meet the changing nature of anti-missile defenses in an unsatisfactory way. Few missiles, if any, accomplish their goal, and missile warfare is coming to a dead end, for the enemy, fortunately, as well as for ourselves.

"On the other hand, a missile with a man or two within, controlling flight by graphitics, would be lighter, more mobile, more intelligent. It would give us a lead that might well mean the margin of victory. Besides which, gentlemen, the exigencies of war compel us to remember one thing. A man is much more dispensable than a computer. Manned missiles could be launched in numbers and under circumstances that no good general would care to undertake as far as computer-directed missiles are concerned . . ."

He said much more, but Technician Aub did not wait.

Technician Aub, in the privacy of his quarters, labored long over the note he was leaving behind. It read finally as follows:

"When I began the study of what is now called graphitics, it was no more than a hobby. I saw no more in it than an interesting amusement, an exercise of mind.

"When Project Number began, I thought that others were wiser than I, that graphitics might be put to practical use as a benefit to mankind, to aid in the production of really practical mass-transference devices perhaps. But now I see it is to be used only for death and destruction.

"I cannot face the responsibility involved in having invented graphitics."

He then deliberately turned the focus of a protein depolarizer on himself and fell instantly and painlessly dead.

They stood over the grave of the little technician while tribute was paid to the greatness of his discovery.

Programmer Shuman bowed his head along with the rest of them but remained unmoved. The technician had done his share and was no longer needed, after all. He might have started graphitics, but now that it had started, it would carry on by itself overwhelmingly, triumphantly, until manned missiles were possible with who knew what else.

Nine times seven, thought Shuman with deep satisfaction, is sixty-three, and I don't need a computer to tell me so. The computer is in my own head.

And it was amazing the feeling of power that gave him.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...