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 ...
Commodore had an overstock of 2114 Chips at that time (*1), so Jack Tramiel, then president of Commodore, ordered the project (*2) to use them.
Yeah, but why 5 KiB? Why not just 4KiB?
Due the nature of the 6502, RAM is needed at address 0, while the way the 6560 VIC (*3) was addressed called for RAM at $1xxx. So with a continous memory of 4 ...
C64 Basic used a CR as EOL for disk files.
(source: Commodore SX-64 User's Guide, page 22: “CR stands for the CHR$ code 13, the carriage return, which is automatically PRINTed at the end of ever PRINT or PRINT# statement …
”, and verified by hex dump of disk image showing 0x0d at line end.)
The Fix for cc65
This was discussed in cc65 issue #946 and fixed by
cc65 PR #965. That was merged to the master branch on
2019-10-26, and should appear in V2.19 of cc65. (I don't know when
that release will happen, however; it's been five months since the
It is, however, quite easy to do your own build of cc65 if you want to
use the master ...
VIC-20 vs VC20 (or VC-20)
In all original documents only VC20. Often stylised with the C as the commodore logo "C=". The intended naming was always Commodore<space>VC20, like written on the machine as well (*1).
My 1st computer was a VC20. Anone knows if it was just renamed (for German market?) as a VolksComputer?
The most told story is ...
What I don't understand is why this quirk exists and how it works.
As usual, lousy programming. It's a routine that exists in next to every Microsoft Basic, but often modified by the receiving company. It's used to list a line. On the 6502 version space was a premium, so they tried to cut down as much as possible in tests. And lets be serious, a 'real' ...
To start with, it was of course VC-20:
In general I'd say VIC-20 would be the most consistent spelling. To start with, Commodore's own technical manual gives a good base, as here was no reason to enhance/mangle it for marketing purpose or textual handling.
Next, the VIC-20 was first introduced in Japan as VIC-1001. This hyphenated spelling not only ...
BASIC games that use no memory specific code can be ported between different commodore machines. (I did some successfully between PET and C64). Machinecode games could be transferred between some commodore machines if they were written to be portable. I never seen such programs but I found in this wikipedia artikel the following:
"The Adventure ...
You cannot do that on the VIC-20; not only is no such feature provided by the built-in hardware but there's also no ROMDIS signal on the memory expansion bus or anything else similar.
PETs with a 64kb upgrade have a register at $FFF0 for memory selection that allows the ROMs to be paged out (see e.g. "2.2 Control Register" in this document — the 8096 is an ...
You're correct; the only interrupts on offer in a Vic-20 are those from a VIA — they're plain old 6522s in the Vic-20, not 6526s. The original VIC chip exposes the current scan line via a couple of registers so instead you'd perform a busy loop until it got to the number you wanted, then cue the VIA.
I'm not a C64 expert but besides the lack of hardware ...
According to this 1983 Commodore catalogue it is VIC 20 with a space.
The owner's manual also refers to the machine as VIC 20 with a space, though they seem to occasionally omit the space.
I note that by contrast the VIC-1001, the Japanese model of the VIC 20, was written with a hyphen.
It seems that Michael Steil at pagefault.org has recently posted an analysis of the KERNAL calls from all of the Commodore 8-bit machines to try and track lineage. However, what is relevant here is the table he includes near the bottom of his blog post that shows which vector entries are safe for which platforms.
The result of his findings is that only the ...
[Not sure if I understand the question in full]
A parallel port chip like the 6522 is about providing port lines. In case of a 6522 these are 16 lines (two 8 bit ports) for arbitrary use plus 4 control lines with restricted use. Like with any other interface, a designer adds as many as he needs.
In case of the VIC-20 the schematics show
of the first ...
The answer by @Raffzahn is close, but it has at least one important detail wrong: the total length of the token names has nothing to do with it.
The following facts all all relate to the issue.
Commodore Basic (any Microsoft Basic really) stores programs in a tokenized form in memory. That means here that all Basic keywords are replaced by a single byte, ...
SD2IEC is a free software which turns an ATmega644 microcontroller into an emulated VC1541. It attempts a near-complete emulation (I think REL files aren't implemented, but nearly noone ever used them.) The emulation also supports some common fastloaders, most prominently that of The Final Cartridge III.
You store .d64 disk images onto a FAT ...
First note that in "real" retro computers the amount of address lines on a memory chip is generally much lower than the address lines the CPU has. This means that you won't be able to "fill" the CPU's address space without using some more logic, and, obviously, multiple memory chips.
Beyond its address and data lines, every memory chip has some more control ...
The dongle for the PaperClip word processor plugged into joystick port 1. It read bits 0 and 1 from the dongle and wrote bits 2, 3 and 4 to control it.
Keyboard interference probably wasn't an issue with this use case.
Pi1541 is a real-time, cycle exact, Commodore 1541 disk drive emulator that can run on a Raspberry Pi 3B, 3B+ or 3A+.
It's a Raspberry Pi hat and some specialized software that emulates the 6502 CPU as well as the two 6522 VIAs of a real Commodore 1541 floppy drive. It emulates the whole disk drive so floppy speeders or any other specialized ...
I thought the RS-232 port on the Vic-20 was completely separate from the cartridge port, so a thing had to be plugged into one or the other, and if the modem was plugged into the latter then it could not use the former. What am I missing?
Or better what is mixed up. The device (Serial IEC) bus is often called a serial port, but that one was driven by VIA#2 ...
As Raffzahn points out, unfortunately you can't "adjust" the OS; you
need to replace KERNAL code to have a different number of screen
columns work mostly as expected.
So while there are demos out there such as Big One (s).prg and
Big 2.prg (PAL version), which are nice to look at, they
don't help when you actually want to program using such a screen.
I'm not really sure how this question is meant, so this is maybe less of an answer as an attempt to understand the question first and answer accordingly.
If I attach a 16 KiB EEPROM to a 6502 or similar, and put some kind of operating system on it, it will run fine, but won't have access to any other form of memory.
You may still need logic to assign the ...
Commodore owned MOS technologies, who made the VIA chips. Although the VIC-20 might have been able to replace a VIA chip with a 4051, a 74LS139, a couple of 74LS373s, and eight resistors, I don't know that doing so would have really saved anything compared to the in-house cost of the VIA. Further, using a second VIA made it possible for them to have one ...
Monte Davidoff's floating point routines for early Microsoft BASIC used Chebyshev Modified Taylor series for EXP(x). There's a very helpful disassembly of the TRS-80 MC-10 ROM here: http://www.roust-it.dk/coco/mc10/romlist.txt. It's 6800 assembly, and the whole commented routine (using the same constants) is:
TBLF59B FCB $81,$38,$AA,$3B,$29 ;1.44269504 (...
Here are the answers of which I am aware, and I know there are others:
https://jammingsignal.com/commodore-wi-fi-modem/ Schema's WiFi modem. Connects via the user port. Has a TFT display, and you connect to WiFi using Hayes-modem-like AT commands.
http://www.lemon64.com/forum/viewtopic.php?t=65312 C64net WiFi modem from Central Texas Commodore Users' ...
The VLOW signal on Pin 4 of the VIC-20's monitor port has a low-pass filter applied to it, where Pin 5 (VHIGH) is not filtered. See this post, which specifically says:
Then the signal is buffered by emitter follower Q7, with a 270 ohm load and fed to pin 5 of the video socket directly and to pin 4 via 3.9uH inductor L2 and C18 which together form a low ...
If the contents of the Scott Adams' adventure cartridges for the VIC-20 are loaded into the same addresses on the Commodore 64 and executed, the games will behave on the C64 just as they do on the VIC-20 except that screen formatting will be a little wonky. If exactly 22 characters precede a line break, the next line will appear appended to the first (since ...
Fax machines used to use thermal paper by the pallet, and it is still commonly available wherever office supplies are sold (including amazon). While this will be wider (not, as the problem is with the cash register rolls, narrower) than what these vintage printers need, this problem can be fixed with a guide and a sharp knife (and in the worst case re-...
The VIC-20 has 1K of low memory ram containing room for the zeropage, the stack and kernal and basic working areas. ($000-$03FF)
4K of main RAM ($1000-$1FFF)
so the main ram is a multiple of 4.
see memory map
Is it possible to adjust the actual value for rows and columns for the OS without the need for reimplementing the CHROUT function?
No, you need to write a 'driver' and have it hooked.
While the Kernal does have attempts to support size independent operation, like with the SCREEN call at $FFED, returning screen size in X/Y to ...
There is a series of cable variants called X1541 collectivly, which have been used as an adapter of the PC parallel port (when PCs still had an parallel port) to the Commodore IEC bus interface.
This made it possible to connect a Commodore disk drive to an IBM PC, and also to emulate a Commodore disk drive by connecting the Commodore computer to the PC.