33
votes
Accepted
Why does the Commodore 64 have 4K of non-banked RAM at $C000?
I wonder why the Commodore 64 memory map was created as it was.
As so often it helps to look at a machine's predecessor; in the case of the C64 that's not the VIC 20, but the Max Machine, a very ...
23
votes
Accepted
Difference between machine language and machine code, maybe in the C64 community?
That video probably tries to add a bit too much definition into blurry terminology, at least my opinion.
In fact, all three ways he describes are ways of creating machine code, and, at the same time, ...
21
votes
Accepted
Were cartridge slots cheaper at the back?
Maybe it's just that it was a few cents cheaper to build that way. The company was certainly very focused on cost reduction.
Yes, it was. Not much, but there are several small savings:
The board ...
21
votes
Accepted
What is this unusual syntax for the Commodore SYS command?
Line 40 looks like a typo. It should be SYS 65493 instead of SYS 65439. SYS 65493 ($FFD5) maps to the internal LOAD routine at $F49E
Line 10 calls the filename parsing routine PLSV at $E1D4. PLSV ...
17
votes
Accepted
C64 char screen plot routine - not clear about reason for logical OR
C64 screen memory by default begins at $0400. The ORA #$04 ensures that you are treating location (0, 0) as address $0400, treating the location one to the right of that as $0401, etc.
It has the same ...
14
votes
Were cartridge slots cheaper at the back?
If a machine has a vertical cartridge slot on the top, it's liable to have junk fall into it unless it either has a door, or unless something is left in it. The Odyssey2 video game system simply had ...
14
votes
Accepted
Commodore 64 - any way to safely plug in a cartridge when the power is on?
is there any programmatic setup you could do on a 64 that would make it safe to insert a cartridge with the power on ?
This calls for a clear No, But :)
Why is it Risky?
In general it's unhealthy ...
13
votes
Difference between machine language and machine code, maybe in the C64 community?
An assembler actually does two important but separate things to help the programmer. One, which you mentioned, is to convert instruction mnemonics into opcodes, based on the addressing mode (e.g., LDA ...
13
votes
Accepted
Assembly delay function for C64
I would get something like this...
Yes, all of them. The code may be fast enough to report a line multiple times, get all lines and miss some, all at once. It all depends on the machine setup, other ...
13
votes
Why was the VIC-II restricted to a hard-coded palette?
We can of course only guess why, but with a fixed palette, it only needs to implement the circuits you need to get the 16 predesigned colors based on the color index. Cheaper, faster, and they were ...
12
votes
Why does the FRE() function in CBM BASIC v2 return negative values?
Whether that's a bug or just sloppy programming is hard to decide.
Maybe the designers needed to save some ROM space and simply decided that the main use case for FRE(0) i.e., you want to know how ...
12
votes
What is this unusual syntax for the Commodore SYS command?
Three related concepts one should understand when trying to understand Commodore BASIC programs (or other Microsoft-derived BASIC interpreters for that matter) are the CHRPTR address, and the CHRGET ...
11
votes
Why was the VIC-II restricted to a hard-coded palette?
While I would doubt that a 16x8 ROM would be cheaper than an 8-bit register or even four of them (which is probably why the Atari 2600 allows a wide range of colors, but leaves me puzzled at the SID ...
10
votes
Commodore 64 - any way to safely plug in a cartridge when the power is on?
You can not programmatically setup safe insert/remove cartridges. But there are hardware for enabling/disabling cartridge. By disabling a cartridge on startup, one can prevent cartridge software from ...
9
votes
Assembly delay function for C64
Going from recollection, I got pretty decent results by waiting for line 0, then line 100 (pick a random, but different line) counting one frame, then repeating the cycle.
I'd also have written the ...
9
votes
Accepted
Problem using Commodore 64 BASIC TAB() command in abbreviated form
I wouldn't call it a bug and the solution is kind of obvious: Don't type in the opening parenthesis for tokens that include that already (tab( and spc(), if you abbreviate the function. I.e.:
10 print ...
7
votes
Accepted
Printing characters not at expected position
It's not enough to poke the values into those locations - there's other information held elsewhere that also needs to be updated. See, for example, the following (slightly paraphrased) text from this ...
7
votes
Why was the VIC-II restricted to a hard-coded palette?
Analog output on TV was a messy process. Back in the early days of Homecomputing, electronics were not as exact as today. Nowhere you could difference on a cheap tv 16 mio. colors (256 brightness ...
7
votes
Why does the FRE() function in CBM BASIC v2 return negative values?
I already understand, on a purely technical level, why a negative value is returned: the free memory is calculated as an unsigned 16-bit integer, but the FRE() routine interprets the result of this ...
6
votes
Accepted
Why can't the VIC-II handle ECM and Multicolor at once?
According to this document, all three invalid combinations actually produce pixels that can be read out via sprite collisions.
ECM pulls bit 9 and 10 for bitmap access low (while bits 11 and 12 keep ...
6
votes
Commodore 64 breadbin plastic stands repair options?
Epoxy doesn’t adhere well to nylon but should be ok on the enclosure if you sandpaper the surface a little. Remember that 5-minute epoxy doesn’t reach full strength for 24 hours. A 3D print should ...
6
votes
Accepted
Monitor connector for C64 and ST the same?
The connectors are different, and will not fit. If you look at the ends of the connectors, you should see that the number of pins, and how they are laid out, are different. Specifically, the Commodore ...
6
votes
Accepted
Commodore 64c supply 9 Vac waveform specs
The 9VAC is just 9VAC out of a 9VAC transformer secondary. Sine wave. 50 Hz since you have an european C64.
5
votes
Difference between machine language and machine code, maybe in the C64 community?
Short Answer:
He 'adapts' his own terms to distinguish between the different 'styles' of programming he wants to show in this video.
Long Answer:
There is No Simple Answer
Well, as so often in real ...
5
votes
Assembly delay function for C64
I live in VIC-20-land rather than in the C64 world and know comparatively little about the inner workings and features of the 656x/856x VIC-II, but I do know that it has a hardware raster interrupt ...
5
votes
Commodore 64 - any way to safely plug in a cartridge when the power is on?
From my experience back in the day, inserting a cartridge after loading and running a machine language monitor would more often than not disrupt machine operation, but would occasionally work in such ...
4
votes
Accepted
Interfacing with the Commodore 64 IEC Serial Port using Assembly
The IEC kernal (sic!) routines can be found at $ed00, and the RS232 kernal routines at $eeba. Michael Steil has built a very nice side-by-side table of 5 different commented disassemblies which, taken ...
4
votes
Assembly delay function for C64
Also be aware that $D012 reports the lower 8 bits of the current raster line.
For NTSC, the raster line can range from 0 to 262; values of 256-262 will alias with 0-6. The MSB of the raster line is ...
4
votes
Accepted
Identify this old C64 soccer game with "speaker"
I found it, thanks to user Michael which in comment report the youtube video which contain the game.
Its name was "Fighting Soccer" 1989 from Activision
In the pic you can see the image of &...
4
votes
How to fix the inaccurate mouse movement in the Eye of the Beholder for C64 under VICE?
GTKVice works in general properly with Win11 (WinVICE does not), but please use a mouse with 1600 dpi max. Windows display optimizations should be disabled for VICE.
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
commodore-64 × 297commodore × 26
emulation × 24
assembly × 23
basic × 23
6502 × 20
hardware × 18
commodore-128 × 16
programming × 15
history × 14
graphics × 14
vic-20 × 13
floppy-disk × 12
disk-drive × 12
video × 11
joystick × 10
gaming × 9
cassette-tape × 9
cc65 × 9
sid × 9
memory-layout × 8
power × 8
game-cartridge × 8
sound × 8
commodore-pet × 8