229

I'm the author of the TPUG article. The "BILL GATES SUCKS" message isn't really an Easter egg; that was just a conceit of mine to make the article a bit more interesting and to turn it into a bit of a puzzle. Here's how it works and how it was created: In any given infinite sequence random numbers, it's a mathematical certainty that a given subsequence of ...


64

Theoretically it could take 25 minutes (or more), in practice it never did. Theoretically it could, because the C-64's built-in tape handling routines had a data rate of about 300 bit/s. That's 37.5 bytes per second, or almost 30 minutes for a full 64K. In practice, it never did, because the tape handling / decoding was done almost entirely in software, ...


60

One basic distinction in acoustics is the one between sounds that oscillate with a pattern that is repeated over time and sounds that are chaotic in nature, and show no repetitive pattern. Sounds of the first type may be referred to as "tones". There are a few tones that can be described by a very simple mathematical equation, for example the the square ...


60

That's not a real easter egg. Someone just made an effort to find random seeds that produce the numbers to create the intended words. It would be an easter egg if the seed numbers were in some way related to CBM or Microsoft. A=RND(-A) initializes the (pseudo) random generator with A, generates a random number and stores it in A. The GOSUB20 subroutine then ...


60

As Wilson points out in his answer, it has to do with how the CIA chips interact with the keyboard and the joystick ports, and the confusion that can arise trying to determine where input is being received from. Compute!'s Mapping the Commodore 64 has an excellent write-up here explaining how the "Complex Interface Adapter" (CIA#1) deals with scanning the ...


59

Epoxy offers two advantages -- it is an electrical insulator, and it conducts heat better than air. Transformers and inductors are generally potted with epoxy for this reason. [ref] Perhaps the cause of the high failure rate is that Commodore engineers decided they could use cheaper components to build the power supplies, depending on the epoxy properties to ...


52

Time to market was another factor. I worked in the games industry in the 1980s and when we were getting the final game from the developer, mastering to cassette and disk took just hours before they went into production and (typically leading up to Christmas) they were in the shops just 48 hours later. Often there would be a bug found and disks would be re-...


50

Your assumptions about timing and interrupts are correct. Actually, it is surprisingly easy to add SID music to games because they tend to follow a basic pattern. Compose the tune in a C64 SID editor. There are many of these. The SID editor generates a SID file, which actually includes both the data and code for playback. This file is easily incorporated as ...


48

After some more research, I believe I've stumbled across the real answer: The VIC-II and SID used a larger process node size because Commodore's fabrication line circa 1981 was uniquely positioned produce chips at that size at effectively no production cost whatsoever. Based on what I've read, here's my best guess at what Commodore's fabrication situation ...


41

The ← and ↑ symbols were originally included in ASCII-1963 as programming operators. They were used in a number of programming languages at the time, but the only common usage left today is in Smalltalk where the _ and ^ characters which replaced them in ASCII-1967 can still be used for variable assignments and variable selectors, respectively. The ...


40

The ones you list are all S.A.M, from what is now SoftVoice Inc. It was developed first for the Apple II, Lisa, Atari 8-bit machines and the Commodore 64; based on awareness of those versions, the company was contracted directly to supply the bundled speech generators for the Macintosh and Amiga. So they all sound the same because they are ports of the same ...


38

The VIC-II chip inside the C64 computer outputs a S-Video signal, which is mixed and modulated into the matal box that contains the UHF modulator circuit. Earlier models made composite video available on the A/V DIN connector. Later models also made separate componentes (luminance and chrominance) available as well. For the sake of image quality, and as you ...


37

A cartridge was limited to 16 kbytes ROM, and some were only 8k. There would be plenty of RAM to use, but the code and data must fit into the 16 kbytes. As programs became more sophisticated, the desire to make full use of the C64's sound, graphics, and sprites, ROM size would often be a limiting factor. OTOH, a program loaded from disk (or for the ...


36

The basic principle behind overclocking is that if you speed up a clock, everything that runs from that clock will go faster. But there are some parts of your computer that you don't want to speed up, and NTSC (or PAL) video output is one of them. In order for C64 output to be displayed correctly on an NTSC/PAL monitor, it needs to be sent to the monitor ...


35

The Restore key triggered the NMI (non-maskable interrupt) line; to actually have an effect it had to be combined with Run/Stop - it would soft-reset the machine (via an indirect jump vector that could be overwritten to a custom routine if desired. This wouldn't reset memory, but would stop even misbehaving programs in most cases.) Run/Stop was two keys; ...


35

That interpreter apparently parses the source text, or at least the numerical literal values, at every execution. π is a single-byte magic token, therefore, as soon as it is recognized, it is immediately substituted with the value of Pi, and nothing else needs to be done. When a byte that might occur in a number is parsed, the number parsing routine begins....


34

TL;DR: There is no fundamental difference just because a different interrupt is used. For all practical purpose the Restore-key works like the Apple II's Reset-key or the PC's Ctrl-Alt-Del key combination. In Detail Most early microcomputers provided either a dedicated key (e.g. Apple ][), keyboard combination (e.g. PC clones), or dedicated hardware button ...


32

Use the INPUT# command. The INPUT# command is meant for non-interactive I/O on files or devices, i.e. reading from a file on disk, serial port, whatever. Because it is non-interactive, it will not display a prompt anywhere. The keyboard can be opened like any other I/O device, it has device number 0. Knowing that, the implementation is straightforward. 10 ...


30

It's not possible. VirtualBox only supports emulating IBM-compatible x86 and x86-64 systems. The Commodore 64 uses a 6510 CPU and a wildly different architecture. In order to run Commodore 64 software, you need a dedicated C64 emulator such as VICE.


29

In general, no there is no reliable way to detect an emulator (if it's any good). Especially if it's actively developed. The trick that worked yesterday probably don't tomorrow as emulation improves. Also, exploiting margins like ghost signals on floating bus lines may just lead to false positives as well, as there were quite a few differences between C64 ...


28

Hardware-wise, the Commodore 64, like most early computers, was synchronized to its graphics output: in the case of the C64, the CPU clock was derived from the timing crystal in the video hardware. From a game-programming standpoint, the most important timing element is the vertical refresh rate: the 50 Hz (PAL) or 60 Hz (NTSC) rate at which the screen ...


28

Originally intended for use with paddle input devices (and, like everything else on the C64, since exploited to the limit), the C64 has A/D converters readable from code exposed on the joystick ports. It also has power rails exposed. Combine that with the lowered resistance of a moist finger and it is absolutely possible to read changing resistance values ...


28

Internally, a BASIC program isn't represented as the text you see when you list it, but as a tokenized data structure where each of the language keywords are represented in an optimized 1-character form. Basically, if the upper bit is set in a character byte (i.e. values >= 128/$80), it is processed as a token. Note that this does not only apply to the ...


27

No hardware revisions are necessary. The digitization playback is achieved by bit-banging the volume register of the SID chip to simulate a digital playback device. Essentially, the SID can be used as a 4-bit digital playback device. What's amazing is that the thing sounds as good as it does playing back digital data. A great article about digis on the ...


27

Try using the "new" command. This clears BASIC's memory, so that you can write a new program.


27

It is well established that Microsoft's 6502 BASIC (and Commodore BASIC is just a manufacturer specific adaption) is a port of the original 8080 BASIC done for the Altair -- alas, not a direct one, as the prior port to 6800 was used as code base (*1). The creation is attributed (in its source code) to three programmers: Bill Gates for the execution code (...


27

It's called incomplete decoding. Peripheral registers in the C-64 (and generally in the 6800/6502 world) are memory mapped, meaning that RAM, ROM, and all the peripheral chips (VIC, SID, and the two CIAs) share one big 64K / 16 bit address space, and a register access on one of these looks just like a memory access to software.* Some kind of circuitry is ...


26

The simplest method of archiving old C-64 disks would be to get a ZoomFloppy and a 1571 floppy drive from eBay. I say 1571 because it's much less likely to have alignment problems. The ZoomFloppy will allow you to control the 1571 from a Windows, Linux or MacOS computer. You can convert the disks into .d64 images that are suitable for use with an emulator ...


26

The Amiga OCS was not exploited in the same way as the C64's VIC-II simply because the OCS was designed from the beginning to support rapidly changing video output modes. Unlike the C64, and most 8-bit machines, the Amiga's display coprocessor (the "Copper") existed to allow display mode updates to occur many times during the raster. For machines like the ...


26

I did that all the time on the Apple II. The reason it worked was that some time was needed for the motor to spin up to the correct speed, and that the Disk II didn't really have an "eject" mechanism, but that you could very directly mechanically lift the read-write head from the surface of the disk. That meant that if you were quick enough to lift the ...


Only top voted, non community-wiki answers of a minimum length are eligible