Now Reading
How the C64 Keyboard Works

How the C64 Keyboard Works

2023-03-04 07:30:37

October 23, 2017#45 Technical Deep Dive

How the C64 Keyboard Works

Post Archive Icon

I am nearly ashamed to confess it, however simply 1 12 months in the past once I began engaged on C64 OS, I did not
have the primary clue how the C64 Keyboard labored. I knew there was a factor known as the keyboard
buffer, however I had cloudy ideas of it being contained in the keyboard itself. After I needed to really
write the keyboard scanning routine for C64 and began wanting on the 1982 fullspread double
sided C64 schematics, I might see that the keyboard was wired as much as the CIAs, however my first
assumption was that when a key was pressed an IRQ can be generated. These concepts on reflection
appear embarassingly unaware of such a primary function of the Commodore 64.

However how are we alleged to know till we be taught, proper? I’ve written on plenty of technical matters,
however this put up will probably be a deep rationalization of how the C64 reads knowledge in from the keyboard.

The CIAs (MOS 6526)

The C64 has two Advanced Interface Adapter chips. Higher referred to as the CIAs, formally the MOS
6526. You’ll be able to learn all about this chip
on Wikipedia. However I need to clarify a few of my most attention-grabbing discoveries.

MOS Know-how, which was acquired by Commodore and rebranded the Commodore Semiconductor Group,
made a complete collection of chips which I like to consider because the 65xx household. When you lookup MOS
65xx on Wikipedia it’s going to let you know that it is a collection of 8-bit microprocessors. And it is true,
the 6501, 6502, 6503, 6504, 6505, 6507, 6508 and 6510, (at the very least) are all microprocessors. However
the 65xx numbered collection features a complete household of chips which might be designed to work collectively
on a logicboard, along with some ram, rom, and different glue chips, to implement a whole

The C64 has a 6510 (CPU), 6567 (VIC-II, Video Interface Chip), 6581 (SID, Sound Interface Machine),
plus two 6526 (CIA, Advanced Interface Adapter) chips. Then it has three rom chips (the shortboard
lowered this to 2), KERNAL, BASIC and CHARACTER roms, a bunch of RAM chips totalling to 64K,
a handful of easy glue chips, within the 74xx and 74xxx collection, a 556, a pair of 4066’s, and most
importantly the PLA (Programmable Logic Array). Collectively, they work fantastically to offer all
that the pc is ready to do.

pinout of the MOS 6526 CIA chip

So, what does a 6526 present? A lot of useful issues. It is received 16 registers for configuration, it is
received a Time-of-Day clock with programmable alarms, it is received two 16-bit programmable timers, it is
received a serial I/O port, and, most significantly for at the moment’s dialogue, it has two 8-bit
bi-directional ports, which we’ll discuss in a minute.

What’s a port, anyway?

When you’d requested me what’s a port, only a 12 months in the past, I might have stated that it is a connector
on the again or aspect of a pc, to which you’ll join a peripheral system. That is half
proper, but it surely misses a few important factors.

A port is a line, a wire, that the CPU can management. If it is an output port which means directions
executed by the CPU can power that wire both to output +5V or GND, a logical 1 or 0 respectively.
An enter port means directions executed by the CPU can learn the voltage stage of that line,
and if it is close to +5V the CPU sees this as logical 1, or close to GND which the CPU reads as logical 0.
There’s nearly all the time some controlling system that permits the CPU to handle the state of that
port line. And within the case of the C64 that controlling system is the 6526 CIA chip itself.

The subsequent necessary factor to grasp is that in a digital pc, one line (1 wire) is one
bit. The wire can both be excessive or low, at a time. So after we say that the CIA chip has two
8-bit bi-directional ports, this now not has to sound like gobbledygook. An 8-bit port is a
port with 8 parallel, simultaenously settable or readable traces. Bi-directional implies that every
of these traces will be configured both as inputs or outputs. And within the case of the 6526 every
line will be configured for enter or output individually. On the similar time a few of them will be
inputs and others outputs. A serial port, by the best way, which the 6526 has, could as properly be
known as a 1-bit port.

If the 6526 has two 8-bit ports, and every bit requires a line, there must be 16 traces devoted
to these ports. And certainly, whenever you take a look at the pinout diagram of the CIA above, studying down
the left hand aspect you see PA0 by PA7, adopted by PB0 by PB7. PA and PB stand for
Port A and Port B, and every has 8 traces numbered 0 by 7. Wonderful. Which means the pc,
software program directions working on the CPU, could cause these 16 chip legs to be +5V or GND, or can
learn the +5V or GND standing of these legs.

Yet one more step to go, the legs of the chips are linked to traces on the logicboard which run
on to a bodily connector which is uncovered by the chassis of the pc, and increase,
it is known as a port. These bodily issues we have colloquially known as ports our complete lives are
literal technical ports, wires the CPU can independently manipulate.

How does the CPU work together with the port?

The query in fact is, how does the CPU really work together with a kind of 8-bit ports?
The 6526 needs to be addressable, and it must get knowledge from the CPU. And as we’ll recollect it
should have one line per bit. The C64 (the 6510 CPU) has a 16-bit tackle bus and an 8-bit knowledge bus,
so the CIA should have 16 tackle legs and eight knowledge legs, proper? Virtually.

If we return to our pinout diagram and skim down the correct aspect we see 4 legs labeled
A0 by A3, and eight labeled D0 by D7, in amongst a bunch of different traces we needn’t
fear about in the intervening time. The Ax legs are tackle traces and the Dx legs are
knowledge traces. There are 8 knowledge traces, that is good, these are clearly linked straight
to the 8 knowledge bus traces from the CPU. However why are there solely 4 tackle traces?

As talked about above, the 6526 has 16 configuration registers. What that truly means is that
there are 16 reminiscence addresses the place the CPU can learn or write to work together with the CIA. 4 bits
can tackle from 0 to fifteen, and we want one line per bit, so bingo the 16 registers want solely
4 tackle traces. However in an actual C64 there are two CIAs addressed from $DC00 to $DC0F for CIA 1,
and from $DD00 to $DD0F for CIA 2. One way or the other, solely when the higher 8 bits of the 16-bit tackle bus
are $DC (1101 1100) or $DD (1101 1101) ought to CIA 1 or 2 be energetic respectively.

In steps the glue logic. A mix of the PLA chip (Programmable Logic Array), which is a
extremely customized chip created only for the C64, and a 74239 (an off the shelf 4-bit decoder), are
used to watch the higher 8-bits of the tackle bus and selectively activate and off a range
of chips which might be themselves linked solely to the decrease bits of the tackle bus. The 6526 is
enabled or disabled through pin 23, labeled within the diagram above “/CE”, for chip allow.

The truth that the chip solely has 4 tackle traces plus a chip allow pin, moderately than a full 16
tackle traces, implies that customized glue logic can be utilized to map the CIA’s small addressable
vary someplace right into a a lot bigger tackle area. And, as is the case within the C64, a number of CIA
chips will be mapped into completely different locations in the principle 16-bit tackle area.

The web result’s that when the CPU units $DC00 (1101 1100 0000 0000) onto the tackle bus, the
PLA and 74239 collectively allow CIA 1, and disable each different chip on the bus. The CIA 1 chip,
being enabled, sees 0000 on its 4 tackle traces, and the 8 knowledge traces work together straight with
regardless of the 6526’s register 0 really does. We’ll get to an outline of the 6526’s registers
in a second.

What are the CIAs hooked as much as?

Now that we all know what a port is, that the CIA gives two 8-bit ports, that the C64 has two CIAs,
and the way the C64’s glue logic is setup to permit the CPU to handle them, the subsequent query is,
what are these CIAs attached?

Part of the C64 schematic, showing how the CIAs are hooked up

Above is a piece of the schematics of the C64 logicboard. I’ve deliberately eliminated a quantity
of extraneous bits across the edges to attempt to deliver focus simply on how the CIAs are wired up. In
this diagram there are two most important ICs proven, U1 and U2, each are labelled 6526 CIA. Their addresses
are written in parentheses (DC00 – DCFF) and (DD00-DDFF).
I added the labels in blue, #1 and #2, as they’re normally referred to in documentation.

Alongside the left aspect now we have 4 blocks. From prime to backside: Management Port 2, Management Port 1,
Keyboard, and Consumer Port. The 2 management ports are in fact the joystick ports everyone knows
and love on the correct aspect of our C64. The consumer port is that fantastic geek port on the again of
the pc on the far left. The keyboard port is a block of pins in the course of the
logic board, which the keyboard is linked to. It’s as a lot a port as some other, however one which
is simply internally accessible because of the design of the chassis.

Let’s begin with the consumer port. You’ll be able to see that pins on CIA 2 labeled PB0 by PB7, as properly
as PA2, run on to pins on the consumer port’s edge connector. Nothing could possibly be extra straight
ahead than that. Whenever you plug one thing into the consumer port, you might be actually connecting
one thing on to the Port B legs of CIA 2. Now we all know why static electrical discharge is
so harmful for the pc, whenever you contact that consumer port connector, you could as properly be
rubbing your fingers throughout the CIA’s legs. There aren’t any over voltage or surge protections of
any type. However at the very least the connection could be very simple to grasp.

This is a thought. When nothing is plugged into the consumer port, the Port B legs of CIA 2 are very
evidently not linked to something in any respect. It’s neither linked to a +5V supply, however nor
is it linked to GND. We might say that the legs are within the third state of
three-state logic.
That’s, they’re hooked as much as successfully infinite resistance. In a way they’re really
linked to floor, however they’re linked through a large bridge of open air, which is extremely
non-conductive and thus extraordinarily excessive in resistance. The query is what would the CPU learn if
it tried to learn the values off these legs after they’re hooked to nothing? The reply can’t be
recognized by wanting on the schematics alone. Nevertheless, within the 6526’s documentation, they’re stated to
internally pull up. That is electronics terminology to imply, when the legs are linked
to nothing, the pc will learn them as logically excessive, or 1s moderately than 0s. That is

How is the keyboard attached?

Now let’s take a look at how the keyboard is attached. You’ll be able to see that each one 8 bits of each Port A and
Port B run straight throughout to the keyboard connector. Port A’s bits are correspondingly labeled
COL0 by COL7, and Port B’s bits are ROW0 to ROW7. A few of these traces department off and as much as
the management ports, however we will ignore these for the second.

The keyboard connector has simply 3 extra traces, plus a spacer (KEY) to be sure to orient
the cable accurately. These are +5V, GND, and a particular line labeled RESTORE, which we’ll get to.
I took aside a C64 keyboard, proven beneath, so we will see what its insides appear like. It was
already lifeless, so don’t fret I did not sacrifice it within the title of science.

Physical keyboard matrix

Within the picture above, I’ve faux-silk-screened the keycaps onto the circuit board so it is easy to see
how the keys line up. Discover that the keyboard connector within the schematics labels the pins 1
by 20. On the keyboard’s circuit board you may see the solder factors the place the wires join,
they don’t seem to be neatly in a row, however they’re labeled, 0,1,2,3,4,5,6,7,8 and A,B,C,D,E,F,G,H,I. However
9 numbers and 9 letters make 18 not 20. A type of 20 is the orientation key, so it isn’t
linked to something, and curiously, as we’ll see, the +5V line shouldn’t be wanted for the
keyboard, so it isn’t linked to something.

Wanting on the keyboard’s PCB it’s fairly clear that it has no electronics intelligence of any
type. It’s merely a group of switches. Every key connects two pads, and every pad is
linked alongside a protracted snaking hint the joins a number of pads collectively and ultimately results in one
of the 18 wires of the keyboard cable.

If we comply with the traces, or higher but, use a continuity tester, we uncover that the RESTORE key
joins two pads that are alone on their very own traces main again to the keyboard connector. The
picture above would not present the total PCB, the operate keys are lacking, however you may see that from
the RESTORE key’s two pads the traces lead off the correct aspect on their very own. One pad is linked
to the GND pin, the opposite to the /RESTORE pin within the schematics. Observe the slash earlier than that
label, on the schematics it seems as a protracted bar above the phrase RESTORE. Which means the
restore conduct is triggered by pulling the road low, or hooking it to floor. And certainly, when
you press the restore key the important thing swap merely joins the GND line to the /RESTORE line.

Nothing else on the keyboard is linked to the /RESTORE or GND pins, the +5V pin connects to
nothing, and pin 2 is simply an orientation spacer, in order that leaves us with 16 traces. The traces
labeled COL0 by COL7 and ROW0 by ROW7, which hook up with Port A and Port B of CIA 1.
COL and ROW are for columns and rows, as a result of the remainder of the keys are organized into an 8 by 8
matrix. Leaving out the RESTORE key, with its devoted traces, if you happen to depend up all the opposite keys
on the keyboard (and remember the 4 operate keys) you get 65. Ah, however there may be one different
little factor to note. The Shift Lock secret’s wired to precisely the identical two traces because the Left
Shift key. Subsequently, the Shift Lock secret’s only a mechanically latching swap that to the
pc is indistinguishable from the extraordinary Left Shift key. Exclude this key, and we’re left
with 64 keys. And eight occasions 8 is 64.

Every ROW line snakes across the board connecting to at least one half of the contact pads of 8 completely different
keys. And every COL line snakes round connecting to the opposite half of the contact pads of 8 keys.
Such that every secret’s a swap that connects one ROW line to at least one COL line. It may be a bit difficult
to hint these all out visually, however a continuity tester is available in actually useful. The result’s
that the keys are organized within the following grid:

Commodore 64 keyboard matrix format

    CIA 1, Port A, $DC00, write to pick out a column.
    Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
CIA 1, Port B, $DC01, learn.
Every bit is a row in the chosen column.
Bit 7
N V X Left Shift
Shift Lock
Bit 6
(up arrow)
O U T E F5
Bit 5
Commodore =
Okay H F S F3
Bit 4
Area Proper
M B C Z F1
Bit 3
2 Clear

0 8 6 4 F7
Bit 2
Management ;
L J G D A Cursor
Bit 1

(left arrow)
P I Y R W Return
Bit 0
1 £
9 7 5 3 Insert

Authentic Supply:
HTML reformatted, re-styled and one minor error corrected.

UPDATE: March 3, 2023

I’ve inverted the Rows and Columns from the best way had them. And it makes extra
sense simply desirous about it. N, M, Okay, J, I, O, 9, 0 are bodily in a column on the
keyboard. They need to be specified by the within the desk above as a column, which they now are.

Under you may see a visualization of the columns listed within the desk above, superimposed over
the precise C64 keyboard. The logical columns as they’re wired collectively to the CIA chip are
certainly laid out, kind of, in bodily columns.

The one factor to watch out of, and these are labeled within the graphic beneath, is that the
column choice bits of CIA 1’s Port A ($DC00) should not in sequential order with the bodily
columns of the keyboard. I do not know why that is, however bits 1 by 6 are so as transferring
throughout the keyboard from left to proper. Nevertheless, the outer two columns have been swapped.
Column 7 (i.e., bit 7,) shouldn’t be beside Column 6; It is over on the left beside Column 1. And
Column 0 shouldn’t be beside Column 1; It is over on the correct beside Column 6! It was at first
recommended to me that this may be due to some kind of matrix format difficulty. Upon additional
desirous about it, that can not be the rationale. To swap Column 7 and Column 0 would solely require
swapping these two wires coming from the CIA, this could be a trivial change. Does it date again
to the PET and its bizarre keyboard format? I do not know.

C64 Keyboard with the columns highlighted and their bits labeled.
C64 Keyboard with the columns highlighted and their bits labeled.

We will simply spot test a few of these. It’s simple to see on the keyboard circuit board that
W and E share a hint on the underside half of their pads. It’s also simple to identify
that R and T share a hint on one half. And certain sufficient after we look within the
desk above, we will see that W and E seem in the identical row. And R and
T seem collectively in one other row. Equally, it’s simple to see that Left Shift,
X, V and N all share a hint. After we look within the desk, certain sufficient,
all of them share a column.

Keyboard PCB Wire Mapping

I used a continuity tester to map the Letter/Quantity pairs of every key, which you’ll see within the
picture above. You’ll be able to see a number of distinct patterns in keys which might be bodily shut to one another.
This additionally lets us map the Keyboard PCB letter/quantity scheme to the C64 logicboard’s 20-pin keyboard
connector. If we simply take a look at PCB hint “A”, we see that Area, C=, Run/Cease, and Management all share it.
Wanting on the key matrix desk we see that that is ROW 7. “B” is shared by Left Shift, Z, A, and
S. Which, once more from the important thing matrix desk, we will see that is ROW 1. If we take a look at one of many
Keyboard PCB’s numbered traces, say “3”, it’s shared by Left Shift, X, V and N. In the important thing matrix
desk these are in COL7. Repeating this course of, we will assemble the next desk:

Keyboard PCB to Keyboard Connector Map

KB PCB Label KB Connector Pin C64 Connection
A 9 ROW7
B 11 ROW1
C 10 ROW2
D 5 ROW3
E 8 ROW4
F 7 ROW5
G 6 ROW6
H 12 ROW0
I 1 (or 3) GND (or NMI)
0 13 COL0
1 19 COL1
2 18 COL2
3 20 COL7
4 16 COL4
5 15 COL5
6 14 COL6
7 17 COL3
8 3 (or 1) NMI (or GND)

I’m not actually certain why these numbering schemes appear so illogical. But when I needed to guess it
can be a results of the bodily limitations of the place the traces on the logicboard must
go such that they do not cross over one another. I am additionally undecided why the letters and numbers
on the PCB do not align higher with the ROW and COL numbers. For instance, why is A = ROW7 and
H = ROW0? Or why is 3 = COL7 and seven = COL3? Who is aware of. But when I needed to guess about this, I discover
that there are additional traces connecting among the rows and columns on the Keyboard’s PCB, however
which have had holes drilled by in strategic locations to sever them. This might have
been a price saving method for Commodore to supply the identical PCB for various keyboard layouts
the place the one factor they wanted to do within the manufacturing course of was drill some precision
holes. However I have not (and possibly will not hassle) attempting to determine precisely which rows and
columns would get swapped if some completely different configuration of holes have been current.

Additionally, I am unable to clearly inform between “I” and “8” which matches to GND and which to NMI. As a result of on my
keyboard the precise connector was way back lower away. And since there is just one key, RESTORE,
that joins these two collectively, it really would not make any distinction how GND and NMI are
assigned to those two traces. This will likely all appear to be trivial info, however if you happen to ever need
to re-wire a C64 keyboard PCB (which I’ll sometime do with the one I’ve received), the above desk
will come in useful.

How the Keyboard’s PCB traces are labeled was a little bit of tangent. If we return now to what’s actually
occurring, it’s that whenever you press a key, say the H key, a wire coming off pin PA3 on
CIA 1, goes into the keyboard, goes by the closed H-key swap and again out of the keyboard
cable and into pin PB5 on CIA 1. Each key on the keyboard (besides RESTORE) merely electrically
joins one of many CIA’s Port A bits to one of many CIA’s Port B bits. However, how does the pc
know which keys are being pressed? For that, we have to flip to the software program scanning routine.

How is the keyboard matrix scanned?

When describing how the CIAs are attached, I discussed one thing that was an necessary behaviour.
When one of many Port A or B pins is linked to nothing, it’s internally pulled up such that
the pc reads the worth as a logical 1. When no keys are held down on the keyboard, you could
have seen that the CIA Port pins result in the keyboard connector, after which into the keyboard,
after which by traces throughout the keyboard’s PCB however then they ultimately simply come to an finish
connecting to nothing. Subsequently, regardless of which CIA Port you select to learn from, so long as no
keys are held down,
these port pins are floating and they’ll learn as 1’s.

The one factor we will presumably do to vary one of many port pins in order that it reads as a 0 as a substitute
is to attach that pin to floor. However the one factor the pin can presumably hook up with, by urgent
keys and shutting the circuits, is to pins on the different CIA Port. And so we’re led again
to the 6526 CIAs, their behaviors and the way they are often configured through their registers.

Every CIA has 4 tackle traces, for a binary mixture of 16 addressable registers. Within the
documentation they’re referred to with their in-chip tackle, 0 by 15. Since we’re speaking
about CIA #1 within the C64, and it is mapped to $DC00 to $DCFF, we use $DC00 by $DC0F to entry
these registers. See this article for full
technical documentation of the CIA 6526.

See Also

Register’s 0 and 1 are the learn/write registers that correspond to Port A and Port B. Nevertheless,
the course of the bits in these registers will be configured independently as both inputs or
outputs. The instructions of the Ports’ bits are configured with registers 2 and three respectively.
A 0 units the corresponding bit as an enter, for the CPU to learn the standing of one thing outdoors
the pc. And a 1 units the bit as an output, for the CPU to ship knowledge or management one thing
outdoors the pc. So, to set all of the bits of Port A for enter, you write $00 (%00000000) to

    LDX #%00000000
    STX $DC02

For the reason that keyboard joins the bits of Port A to the bits of Port B, and we have to pull considered one of
these bits low, the trick is to set one of many ports as all inputs and the opposite as all outputs.
Then we set the worth of the output port as all low. This makes all of these pins a supply of
GND. Press a key, and the enter pin is linked electrically, by the important thing, to a supply of
GND and it modifications from its internally pulled-up 1 to its floor linked state, 0. After I
first realized that is the way it works, electrically, it was a really satisfying discovery.

    LDX #%00000000 ;Inputs
    LDY #%11111111 ;Outputs
    LDA #%00000000 ;Low/GND Outputs

    STX $DC02 ;Port A course config
    STY $DC03 ;Port B course config
    STA $DC01 ;Set Port B's outputs low

The issue is the next. When you press A, the low PB1 will pull PA2 low, so we all know
one thing in COL2 was pressed. Nevertheless, if you happen to as a substitute press D, then the low PB2 will
pull PA2 low, and you wouldn’t be capable to distinguish between whether or not it was A or D,
or some other key in COL2, that’s forcing PA2 low.

With the intention to distinguish the rows, Port A needs to be learn 8 separate occasions. On the primary loop Port B
has its outputs set such that Bit 0 is low, however all the opposite bits are excessive. Throughout that learn, if
a key in rows 1 by 7 (and column 2) is held down then these keys are simply connecting PA2 to
a excessive, and they also haven’t any have an effect on on PA2, it is already internally pulled up. Nevertheless, provided that
the important thing in row 0, col 2, (Cursor Left/Proper) is held down will PA2 get pulled low. After studying
Port A and storing it, we loop, reset Port B so all of the bits are excessive besides bit 1, then learn
Port A once more to see which keys in row 1 are down, retailer that, and proceed till we have learn 8
bytes, that are a “bitmap” of the up/down state of all 64 keys. Any set bit within the map means the
corresponding secret’s up, any unset bit within the map is a key that’s down.

And that is, kind of, what the keyboard scanning routine within the KERNAL rom does, 60 occasions
per second. Though, it does a bunch of different stuff I am not going to speak about at the moment.

Concluding Ideas

There are attention-grabbing similarities and attention-grabbing variations between how a C64 and the way a PC/Mac
keyboard work. PS/2, ADB and USB keyboards, even at the moment, nonetheless use a key matrix of rows and
columns that must be scanned to be able to construct a desk of which keys are up and that are down.
Nevertheless, every of those above three connection varieties is a serial port. In PC and Mac keyboards,
the matrix scanning logic is all carried out in good electronics contained in the keyboard.
The keyboard itself then maintains a reminiscence buffer of the sequence of key codes representing up
and down keys.

On a keyboard with 101 keys, assigning one code for up, and one other code for down for every key,
that is solely 202 values, properly throughout the 0-255 vary of a single byte. The keyboard’s electronics
then additionally have to implement the serial protocol, and sends to the pc, a byte at a time, the
codes representing keys taking place and keys going up. It is a bit extra sophisticated than that, and
varies from serial protocol to serial protocol, however that’s the essence of it.

The C64’s keyboard, by comparability, is totally dumb. It has no electronics in any respect.
Simply switches in an 8×8 matrix. The precise matrix switches themselves are fed down the keyboard
cable and into the pc. And the C64’s personal CPU must spend valuable time scanning the
matrix. It’s actually unlucky that on a machine with solely 1Mhz to spare, it wants to make use of some
non-trivial variety of these cycles, as a result of no matter it takes to totally scan the matrix as soon as, has
to be repeated 60 occasions a second, simply to enter knowledge from the keyboard.

However on PCs with hundreds of occasions the variety of cycles obtainable, it would not have to spend any
of these cycles worrying about scanning the keyboard. If the state of the keyboard is not altering,
the inner logic of the keyboard is figuring that out, and it would not must ship any knowledge to
the pc through its serial connection. And there you’ve gotten it.

Be happy to go away, questions, feedback and corrections within the feedback!

Do you want what you see?

You’ve got simply learn considered one of my high-quality, long-form, weblog posts, at no cost! First, thank
you in your curiosity, it makes producing this content material really feel worthwhile. I really like to listen to your
enter and suggestions within the boards beneath. And I do my greatest to reply each query.

I am creating C64 OS and documenting my progress alongside the best way, to provide one thing to you
and contribute to the Commodore group. Please take into account buying one of many gadgets
I’m at present providing or making a small donation, to assist me proceed to deliver you
updates, in-depth technical discussions and programming reference. Your beneficiant help
is vastly appreciated.

Greg Naçu —

Want to support my hard work? Here’s how!

Source Link

What's Your Reaction?
In Love
Not Sure
View Comments (0)

Leave a Reply

Your email address will not be published.

2022 Blinking Robots.
WordPress by Doejo

Scroll To Top