How would you recommend getting further acquainted with 6502 Assembly? After reading 'Easy 6502' (https://skilldrick.github.io/easy6502/), I'm not sure where to go after that. Awesome project, btw!
I connect to Slack from my favourite IRC client (Irssi) after getting fed up with the memory that the official client used. It's not as retro-cool as this C64 port but it fits my command line orientated workflow better than the Electron app did and allows me to build my own client-side plugins in Perl.
Historic messages don't need to be cached in RAM if it's several pages above the proverbial fold.
However I'm not convinced it's just historic messages that's eating up the memeory. IRC clients aren't this bad even with thumbnail support like Slack. Whuchever way you look at Slack, it's needlessly wasteful.
That memory footprint is inexcusable even if he were literally on one thousand Slack teams. Functionally, Slack is more or less a shiny wrapper on IRC, and you can run dozens of IRC channels in a few megabytes, if that.
FWIW you probably don't need a USB serial port, or a RS232 converter at all; you could just pick the TTL serial signals off the commodore port and plug them into the TTL serial port on the Raspberry Pi 23- or 40-pin expansion slot (pins 8, 9, and 10 are TX, ground, and RX.). Remove the tty on /dev/ttyAMA0 from the init config and you can use /dev/ttyAMA0 as your built-in Pi serial port.
The DC voltage supply on the Commodore side looks like 5V, and at a guess, the TTL probably runs at that voltage too. The Pi won't be happy with more than 3.3V on its UART pins, so the USB adapter also fills the purpose of a voltage adapter.
Right. I thought it might be 5v tolerant on the RX pin but maybe not.. easy enough to just use a resistor and a diode to the 3.3v supply to level shift there, and the 3.3v TX should be fine for a 5v logic input.
Character size, not sprite size. Sprites are bigger, but you can (officially) only have 8 on screen at once. Clever scanline-timing tricks can increase that to a few dozen before flickering sets in, but still not enough for general use emoji.
Redefined characters would work, but they're limited to a total of 256 characters at a time, including the usual letters/numbers/punctuation. Still, 150 or so of the most popular emoji would go a long way!
IPX is a modification of the Xerox Network Systems (XNS). XNS is c. 1977 whereas the Commodore 64 was released in 1982. In the early 1980s, networking was such a young technology there was little commercial value in following standards. Even when you based your product on pre-existing technology (like Novell did), you changed it in incompatible ways.
I think if Commodore had wanted to do a LAN, they probably would have built something proprietary similar to Acorn's Econet, which also ran on 6502 systems.
But, I think the primary focus of Commodore was on the home market, and most people would only buy one microcomputer, and if they had two sharing floppies was sufficient as a LAN. Acorn by contrast was more focused on the education market, where the value of networking was much more obvious, and schools were willing to pay for it.
Thanks to the forethought of the Commodore's engineers who envisioned the Commodore64 as the center of the smart-connected home, or sound studio, or industrial controller, lots of ultramodern hardware has been designed for it. Hardware that wasn't even science fiction when the C=64 came out. And all because C=64 is infinitely programmable, with his user and expansion ports. Unbelievably versatile computer, even by today's standards.
It has (pretty bad) RS232 routines in ROM, which bit-bang across some of its GPIOs (of which there are 10 or so on the User Port).
Other than that, it has its serial peripheral bus, used mostly for printers & disk drives. There were also device sharing & custom networking hubs which sit on that bus.
The ROMs supported a notion of general byte streams and could do simple redirection. It had that stream support for tape, keyboard, screen, RS232, and "device on the serial bus" built-in. Obviously, newer 3rd party hardware can support Wifi/Ethernet in various forms, and software can drive IP over existing links (like SLIP over RS232 adapters).
Oh, it also had a few hardware serial shift lines intended for the serial peripheral bus, but those never got used for that purpose (until the C128) and mostly sit unused.
Because this company here tries very hard to find ways to rely on every Microsoft product in existence and deprecated the (then 3 weeks old) Slack server as soon as Microsoft Teams was announced.
Haha, you are right, of course! Obviously its just a fun project, I had an un-used RaspPi lying around and started hacking around getting it to talk to the C64 and then this project just sort of happened :)
You're right in that the RasPi does the outbound connectivity and exposes a rpc stream that the C64 can interact with more easily than JSON, but thats all.
The interactivity is driven by the C64, and honestly 99% of the effort went into the C64 6502 assembly code, not the NodeJS proxy.
Except many companies (presumably including Jeff Harris') use Slack. This allows him to Slack on his machine and not create some new mandate at his work or with his clients just to message people.
I think this is fabulous ingenuity, useful fun, and the eccentricity doesn't rock any boats along the way.
Not even close. Slack regularly screws up text, harfs on things, and does generally not-IRC things. Overall Slack's interface is terrible and does not seem to have been tested by anyone who has regularly used chat interfaces in the past.
And it's a close-walled garden, not anything like what the internet elders envisaged. IRC is a protocol. Slack is a product. AFAIK, you can't spin up your own slack service and run your own private slack (happy to be corrected)
You're right. We were looking for an internal chat solution for our company. Currently we use IRC, but it would be nice to have an offline mechanism so we don't need to run IRC bouncers or CLI clients on our servers to receive messages when we're not in the office. We considered Slack, but decided it was too risky to host our internal communications on someone else's service. I'm waiting for the day Slack has a huge data breach.
We're currently considering adding some sort of backscroll support to IRC (maybe automatically setting up proxies for users), or installing Rocket Chat or HipChat on a local server.
For those who haven't tried it, here's a video of how Eclipse Foundation uses Mattermost as an open source, self-hosted Slack-alternative: https://www.youtube.com/watch?v=dfeNFJnCfcg
While there's not yet C64 support, Mattermost connects to IRC, Slack, Gitter, Discord, Telegram and HipChat using Matterbridge (https://github.com/42wim/matterbridge).
One issue we had with Mattermost is that some authentication modules (e.g. OAuth) are not part of the free core. Rocket Chat does not have this issue, though the mobile app is a bit less polished.
I'm thinking of the handful of formatting that Slack already supports, but only via weird markup. Text entry apps have been using Ctrl-I for italics for at least 25 years. I shouldn't have to remember whether this retrograde webapp expects me to wrap italicized text in underscores, asterisks, or slashes.
This kind of thing can also be annoying in sites like Hacker News--e.g. when I try to use an actual asterisk a couple of times and the damn thing italicizes a big random chunk of my post instead--but HN at least has the excuse of a consciously minimal interface. Slack coats itself in slick, modern UI but makes you type emphasis like it was Usenet. It shoves giant obtrusive thumbnails into the chat every time someone posts a URL, but doesn't let you make an actual hyperlink. It's minimal where it should be complex, and complex where it should be minimal.
my question was serious, i don't see why i should get down vote for this.
i'm actually curious to understand what's the reason to build this. it may be fun, but once it's built you trow it away. it's like baking a cake and don't eat it.
Well there is no good reason. I guess I was curious to see if something that I use every day, like Slack, could be interacted with through the C64.
Figuring out a wire format for a list of channels, then parsing that out into channel names + ids and rendering a scrolling list of channels in 6502 assembly is challenging. Its frustrating. It was fun!
More generally, creating something 'just because' is so rewarding.
Learning, practicing and honing my chosen craft doing something creative is enjoyable. There is always something new to learn and half a dozen projects in my head I want to work on if only I could find the time. Why do some people spend hours painting, carving, or making model ships? Same reason I made this :)
that's for sure, i mean, project is cool, no dubt and this shows that the man has willinges to learn and to things just for the sake of learning something.
C64 all of the things!
Some of the comments here are ridiculously negative or taking away from the fact that Jeff has done something cool here.
Good stuff, Jeff! Keep on doing stuff like this and don't listen to the hate/negative comments.