A new rap/hip-hop group. They've actually been called geeksta rap.

Their first album, K-Minus Initiative has such songs on it as Proof of the Riemann Rapping Theorem, and Straight outta CompUSA. Before you think they're too geeky, the album is labeled explicit lyrics, and another song is called Horton Hears a Ho.

I just.... well... don't know what to think.

Commodore 64 is the Machine of Legends, the Machine of Myths.

True, it has only 64 kb of memory (most of which hid under the ROM banks and was generally inaccessible from BASIC (Commodore BASIC was one of the first shoddy Microsoft products I've used, BTW =) and the MOS 6510 CPU speed was 0.97 megahertz, but... it... has... magic.

Actually, C64's video chip, VIC II, was designed for game computer, while the rest of the machine was designed also with more serious use in mind. So, the greatest drawback of C64's acceptance as truly ruling work computer was that it could only get 40 characters per line (and the modern kluges used in C64 terminal programs such as Novaterm and C=-lehti's Therm can easily be described as "80 blurry pixel blobs per line").

Cool capabilities

C64's multimedia capabilities were undescribable - and for most part, they still are. C64's sound chip, the SID, become a legendary cheap analog synthetizer that had an unique, distinct and addictive sound. (cynics would call them just bleeps, but they've obviously been coding music on that MS BASIC - remember, Real Programmers code in hex, and less real will use a macro cross-assembler on PC, such as xa65 that runs in UNIX too =)

It has often been said that Commodore 64 has computational power roughly equivalent to a 386SX with VGA and 16 megs of memory. Oh, yeah, the 8088 used in IBM PC ticked at over 4 megaherz - and can you make a five-layer parallax scroller with that machine, may I ask? I bet you can't.

And if you want to upgrade to Pentium class, there's always SuperCPU... =)

Modern scene: Amazing stuff

Needless to say, these days C64 fanatics crank out stuff that often still leaves PC stuff in shadow. In many years, the most jaw-dropping part of the Assembly convention has been the C64 demo part. I mean, in 1980s people said C64 needs a whole day to calculate Mandelbrot set; In 1997 we saw a realtime Mandelbrot zoomer (low-rez and one-frame-calc-only, but nevertheless, a realtime zoomer it was!)

Oh, there's also Lunix and related projects to bring UNIX-like environment to Commodore 64. Yes, there's an UNIX variant (GeckOS) for C64 that runs httpd! When will we see Apache 64, and no, I don't mean Apache for Nintendo 64, I mean something more challenging. =)

According to BogoMIPS Mini-HOWTO, C64 has got 0.0033 BogoMIPS rating. (This value was measured under VICE, and either way it's fairly debatable, because Lunix shows rate of 0.37 BogoMIPS, at least in the screenshots! Certainly higher than 0.004 BogoMIPS of TRS-80...)

It might be worth noting that uIP TCP/IP stack for C64 was surprisingly resistant: At one point, a link to a C64 serving as a web server was posted to Slashdot and the bloody thing kept kickin' and returning static pages even at peak of the slashdotting! One of the pepperiest 8-bit web servers so far, really!

What about me?

(Obligatory "some original content" =)

Personally, I have one C64 C model (the new model that looked a bit like Amiga) and one C64 G model (chassis shaped like the old "classic" model, but has the C model's creamy color, and it of course has the new model's motherboard).

Sad states today, too...

Sad note: When I speak of "kuusnelonen", I refer to C64. These youngsters use the same word for Nintendo 64. Dammit, I don't need 64 bits, I want 64 kilobytes...

Some kid asked the Super Power magazine once, "Which is better, C64 or N64?" and the magazine editors replied, "VIC-20". True, VIC-20 has a slightly higher clock frequency but... hm...

Actually, Nintendo 64 and Commodore 64 do have one thing in common: Both have a RISC processor. =)

(Random factoid: Another common Finnish piece of jargon was "kuuslankku"; see kuusi for more information on this. =)


    **** COMMODORE 64 BASIC V2 ****

 64 RAM SYSTEM  38911 BASIC BYTES FREE

READY.
LOAD "*",8

SEARCHING FOR *
LOADING
READY.
'64K BITES'? '64K BITES'?! I WISSH IT HA
D HAD 64K BYTES. THE SYSTEM SEQUSTERED A
 WHOLE 4K OF THOSE BITES. THE D

?SYNTAX ERROR
READY.
AY I FOOND OUT I WAS ABSOLUTLY WH

?SYNTAX ERROR
READY.
0R3D. YOO HEARRD ME: WHORED. IMAJINE THA
T; AN ENTIRE 16TH OF THE AVAILABLE RAM R
IPPED FROM MY COLD DEAD FINGERS. CHR1ST,
 IF THEEY TRIED THAT SHIT TODAY THEYD BE
 MAULED, MAN! FU

?SYNTAX ERROR
READY.
CKING MAULED!! AHHHH, THIS BRNGS BAK MEM0
ORIES!!!!!!11!!!!!!

?SYNTAX ERROR
READY.
11!!!111!!!!!!!1!!!!

?SYNTAX ERROR
READY.
!!!!!!!!!11!!!!!!!!!!!!!1!1!!!!!!!1!!!!!
!1111111111111!!!!!!!!!!!1111111111!!!!1
11111!!!!!!!!!!1!!!!

?SYNTAX ERROR
READY.
!!!!1111!1

?SYNTAX ERROR
READY.
RUN

LET'S SEE IF WE CAN'T PULL THESE THREADS
 INTO A LUCID WEAVE, SHALL WE? THE BIOS 
AND WHAT-HAVE-YOU SIT OUTSIDE THE 64K OF
 RAM, LAUGHING MERRILY AND FENCING OFF 4
K FOR THEIR PLEASURES. UPON IGNITION, 20
K OF RAM ADDRESSES ARE REMAPPED TO THE 2
0K OF ROM, EFFECTIVELY LOADING THE BASIC
 INTERPRETER CONTAINED THEREIN INTO MAIN 
MEMORY (A SOLUTION NOT WITHOUT ELEGANCE)
. THE INTERPRETER IS SUBSEQUENTLY EXECUT
ED, CLAIMING 2K OF 'REAL' RAM FOR ITS OW
N AND LEAVING A WHISKER SHY OF 38K=38912
B TO THE USER. MORE THAN AMPLE. LOADING 
A FILE INTO MEMORY VIA THE SUFFIX ',1' I
NDICATES THAT IT CONSISTS OF 6502 MACHIN
E CODE; THE INTERPRETER IS THEN UNNECESS
ARY AND THE RELEVANT RAM ADDRESSES ARE M
APPED BACK TO 'REAL' RAM AND THE PROGRAM
 EXECUTED. SAID PROGRAM HAS A 60K SANDPI
T TO PLAY AROUND IN AND MAY, OF COURSE, 
BE ANOTHER INTERPRETER OR COMPILER (SUCH 
AS COMMODORE'S ASSEMBLER 64 FOR THE 6500
 ASSEMBLY LANGUAGE). 'COURSE, I'M JUST M
AKING THIS UP AS I GO ALONG, SO THIS IS 
ONE OF THOSE RARE CASES WHEN WHAT ISSUES
 FORTH FROM MY MOUTH CONSISTS OF NAUGHT 
BUT OPTION, NOT FACT.
READY.
*** OKAY, UPDATE *** I HAVE CONFIRMED TH
IS. UP TO 8 ROMS COULD BE BANKED IN AT A
NY ONE TIME, WITH THE KERNEL BEING NUMBE
R 0 AND THE BASIC ROM BEING NUMBER 3. CL
EVER PROGRAMMING AND THE BANKING IN AND 
OUT OF ROMS TO ACCESS THE RAM UNDERNEATH
 ENABLED THE ILLUSIVE USE OF 'MORE' THAN
 THE APPARENT MAXIMUM OF 60K. AS IT HAPP
ENS, PART OF COMMODORE BASIC V3.5 COULD 
BE COPIED INTO THE RAM TO ALLOW THE ROM 
TO BE BANKED IN AND OUT; THIS WAS NOT PO
SSIBLE WITH V2. PHEW. COMPARE THESE FEAT
S WITH THE USE OF RASTER INTERRUPTS. ANO
THER FUN FACT: PERIPHERALS COULD BE 'INT
ELLIGENT' (IE THEY COULD CONTAIN THEIR O
WN PROCESSORS AND MEMORY). WOW! WHEN PUT 
 IN HISTORICAL CONTEXT. HMMMM. I DO EVER
YONE A GREAT DISHONOUR BY SPEAKING IN TH
E PAST TENSE....

?SYNTAX ERROR
READY

The kernel of the Commodore 64 used its own peculiar pack of error messages. A complete list, together with an explanation of each error message, is presented here.

  • BAD DATA -- String data was received from an open file, but the program was expecting numeric data.
  • BAD SUBSCRIPT -- The program was trying to reference an element of an array whose number is outside of the range specified in the DIM statement.
  • BREAK -- Program execution was stopped because you hit the STOP key.
  • CAN'T CONTINUE -- The CONT command will not work, either because the program was never RUN, there has been an error, or a line has been edited.
  • DEVICE NOT PRESENT -- The required I/O device was not available for an OPEN, CLOSE, CMD, PRINT#, INPUT#, or GET#.
  • DIVISION BY ZERO -- Division by zero is a mathematical oddity and not allowed.
  • EXTRA IGNORED -- Too many items of data were typed in response to an INPUT statement. Only the first few items were accepted.
  • FILE NOT FOUND -- If you were looking for a file on tape, and END-OF-TAPE marker was found. If you were looking on disk, no file with that name exists.
  • FILE NOT OPEN -- The file specified in a CLOSE, CMD, PRINT#, INPUT#, or GET#, must first be OPENed.
  • FILE OPEN -- An attempt was made to open a file using the number of an already open file.
  • FORMULA TOO COMPLEX -- The string expression being evaluated should be split into at least two parts for the system to work with, or a formula has too many parentheses.
  • ILLEGAL DIRECT -- The INPUT statement can only be used within a program, and not in direct mode.
  • ILLEGAL QUANTITY -- A number used as the argument of a function or statement is out of the allowable range.
  • LOAD There is a problem with the program on tape.
  • NEXT WITHOUT FOR -- This is caused by either incorrectly nesting loops or having a variable name in a NEXT statement that doesn't correspond with one in a FOR statement.
  • NOT INPUT FILE -- An attempt was made to INPUT or GET data from a file which was specified to be for output only.
  • NOT OUTPUT FILE -- An attempt was mode to PRINT data to a file which was specified as input only.
  • OUT OF DATA -- A READ statement was executed but there is no data left unREAD in a DATA statement. You would also get this error when you pressed the Return key at the Ready prompt, because the Kernel would interpret it as a 'read y'-statement.
  • OUT OF MEMORY -- There is no more RAM available for program or variables. This may also occur when too many FOR loops have been nested, or when there are too many GOSUBs in effect.
  • OVERFLOW -- The result of a computation is larger than the largest number allowed, which is 1.70141884E+38.
  • REDIM'D ARRAY -- An array may only be DIMensioned once. If an array variable is used before that array is DIM'D, an automatic DIM operation is performed on that array setting the number of elements to ten, and any subsequent DIMs will cause this error.
  • REDO FROM START -- Character data was typed in during an INPUT statement when numeric data was expected. Just re-type the entry so that it is correct, and the program will continue by itself.
  • RETURN WITHOUT GOSUB -- A RETURN statement was encountered, and no GOSUB command has been issued.
  • STRING TOO LONG -- A string can contain up to 255 characters.
  • ?SYNTAX ERROR -- A statement is unrecognizable by the Commodore 64. A missing or extra parenthesis, misspelled keywords, etc. This was by far the most common error that you could get.
  • TYPE MISMATCH -- This error occurs when a number is used in place of a string, or vice-versa.
  • UNDEF'D FUNCTION -- A user defined function was referenced, but it has never been defined using the DEF FN statement.
  • UNDEF'D STATEMENT -- An attempt was made to GOTO or GOSUB or RUN a line number that doesn't exist.
  • VERIFY -- The program on tape or disk does not match the program currently in memory.

For an interesting comparison between two wonders of the 8-bit world, compare the list above with the list of Sinclair Spectrum errors)

Log in or register to write something here or to contact authors.