22 ms·
Slack client for Commodore 64
- mkesper 10y agoWell, most of the work is done on the Raspberry Pi.
- LeoPanthera 10y agoHow am I going to display emojis on my Commodore 64?
- GFK_of_xmaspast 10y agoWrite into the character image data starting at $D000.
- localhost 10y agoWell, the C64 screen resolution is 320 x 200, so you should be able to do some awesome full screen emoji :)
- amiga-workbench 10y agoStandard sprite size on the C64 in high res mode is 8x8, and you can't use more than two colours within that space, should be serviceable.
- royjacobs 10y agoSprites are 24x21, characters are 8x8 :)
- white-flame 10y agoC64 sprites are 24x21 pixels in 1-bit monocolor (foreground color + transparent), or wide-pixel 12x21 2-bit multicolor (3 colors + transparent).
- PhasmaFelis 10y agoCharacter 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!
- Narishma 10y agoI think the title is misleading. It's really a Slack client for the Raspberry Pi that you control using a C64.
- sgt 10y agoStill, it's extremely cool to see Slack being usable from a C64.
- jeff_harris 10y agoYou'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.
- amelius 10y agoThe silly thing is that the Raspberry Pi that is used to implement this, is actually a far more powerful computer than the C64 to begin with.
- Retr0spectrum 10y agoIf the point was th be sensible, this project wouldn't exist in the first place.
- jeff_harris 10y agoHaha, 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 :)
- qwertyuiop924 10y agoC'mon. Implement PPP between the C64 and a Pi, and then do the rest on the C64 itself.
- omouse 10y agoTo echo others, the start of a great hack.
- esseti 10y agobut why? (Pls, don't reply: for the glory of satan)
- esseti 10y agomy 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.
- epenn 10y agoYou don't have to eat the cake to sharpen your baking skills.
- jeff_harris 10y agothis :)
- jeff_harris 10y agoas the author of this project, let me explain... Ahem.... 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 :) Hope that helps!
- esseti 10y agoYep, that's fine i got your point and I can understand it.
- 10y ago
- jedimastert 10y agoDoes the C64 have TCP/IP capabilities?
- Diederich 10y agoThe original version? Not even close. (: TCP/IP was a thing when the C64 came out, but it was one of many competing networking standards, and it wasn't even the favorite to win.
- bduerst 10y agoFascinating - what was favored to win at the time?
- empath75 10y agoipx maybe?
- GordonS 10y agoIf I recall correctly, IPX and NetBUI? were the ones you saw most often back then
- Diederich 10y agoIPX and NetBIOS (which MSFT called NetBUI) were introduced after the C64 came out. I would say DECnet phase IV or IBM's SNA were the biggest contenders, along with X.25.
- eumoria 10y agowhatever happened to IPX
- skissane 10y agoIPX 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.
- kzisme 10y agoShould have just stuck with IRC :(
- Jaruzel 10y agoSlack IS IRC... just with new clothes on. :)
- deleted 10y ago[deleted]
- Washuu 10y agoNot 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.
- _joel 10y agoAnd 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)
- coldpie 10y agoYou'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.
- pedoh 10y ago
- gurgus 10y agoCome on guys... 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.
- jeff_harris 10y agoThanks! It's just a fun project, so of course there are lots of ways to improve it! I found writing 6502 assembly code is strangely comfortable once you get over the initial face-palm moments ;)
- linker3000 10y agoWhat a fun project! Back in the day I wrote a full VT100/VT220 emulator in .asm for the C64 using bitmapped graphics for an 80 column screen.
- brickmort 10y agoHow would you recommend getting further acquainted with 6502 Assembly? After reading 'Easy 6502' (https://skilldrick.github.io/easy6502/ https://skilldrick.github.io/easy6502/), I'm not sure where to go after that. Awesome project, btw!
- Chenzo11 10y agoVirtual hi5! Vic-20 and C64 were my first intros to computers
- erickhill 10y agoDoes it have to be used with a Raspberry Pi? If you have a Wifi Modem for C64, would the Slack client still work?
- jeff_harris 10y agoYou would need to replace the rs232 code with code to talk to the Wifi modem. You would need to deal with websocket handling and JSON parsing. Doable, for sure, but would be significant work (depending on the richness of the API provided by wifi modem)
- gravypod 10y agoWhy not just use the raspberry pi's UART and the C64's com port?
- joeblau 10y agoAwesome. It'e even native... not a hybrid web app built in Electron.
- poorman 10y agoI could really use this seeing as... https://twitter.com/NickPoorman/status/737647940026634240 https://twitter.com/NickPoorman/status/737647940026634240
- joshfriend 10y agoWow, you really need to be in less slack teams...
- elsurudo 10y agoThat's no excuse for 17GB of memory usage...
- PhasmaFelis 10y agoThat 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.
- laumars 10y agoI 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.
- blakespot 10y agoUse 'Glass TTY VT220' font (at 20 point) in your terminal app and your retro-cool game will increase two levels.
- maccard 10y agoYep I put a ticket in for something simialr(grows to about 2GB every 2 days or so), and was told it's expected behaviour!!
- phyushin 10y agoThis is great
- giacomolaw 10y agoI love it!
- a1k0n 10y agoFWIW 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.
- jeff_harris 10y agoThanks, yeah, I will try this - I followed a design for a c64-pc cable without considering that the Pi probably had serial port pins.
- khedoros1 10y agoThe 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.
- a1k0n 10y agoRight. 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.
- JonnieCache 10y agoSee also: twitch.tv chat running on a SNES, injected via an ACE exploit in pokemon red. http://arstechnica.com/gaming/2015/01/pokemon-plays-twitch-how-a-robot-got-irc-running-on-an-unmodified-snes/ http://arstechnica.com/gaming/2015/01/pokemon-plays-twitch-h...
- flippyhead 10y ago> I connected the Userport to a Raspberry Pi with a artisanal, locally sourced, homemade cable with the UserPort connector on one end The writing in the blog post is nearly as awesome as the project itself.
- kstrauser 10y agoI think that's brilliant. Well done, Jeff! Sure, it's probably not useful. Neither is the painting on my wall, but I'm glad someone made it!
- coin 10y agoComplete with Gateway "2000" monitor
- robodale 10y agoAs a C64 owner/user from back in the day...this is fucking awesome. Kudos to the creator.
- PhasmaFelis 10y agoI've always loved reading about weird C64 hacks, but this is the first one that has me seriously considering digging the old 64 out of the basement.
- darklajid 10y agoEagerly waiting for the Microsoft Teams port.. 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.
- LukasRos 10y agoThis is an awesome showcase for how all kinds of technology can be adapted and connected in new, unforeseen ways. Very inspiring, cool DIY project!