Changing the line number while coding to duplicate the code fast, writing assembly directly through opcodes, using screen buffer as real time input, using color buffer to visualise notes parsing,… So much elegance in all this! And man, what an ear you have when tweaking the melody. I call it “”Art” 🙏
That's why I always liked the monitor in the Apple ][. Woz made entering Assembly without any extra software easy (for the early 80s). F666G to start the mini assembler. You could even add a custom subroutine and call it with CTRL-Y. The C64 could do a lot more but it's ROM wasn't as ingenious. At least not for programmers.
Seriously, I've done some c64 asm back in the day, and looking at the masters code is like looking at something that makes no sense, but works better than anything should. I learned a lot from reading Hubbards music player
Personal milestone: Today this channel reached 32768 subscribers, a number that won't fit in a signed 16-bit integer. I find it amusing and appropriate that the event was triggered by this video, in which the same thing happens to the variable F. =)
No way... This guy is either making fun of us and reading the code from a paper or he is programming directly in DECIMAL opcodes! Using the REM lines as a live tracker with memory storage is bordeline genius and mad. Being able to play the music by inserting the letters, representing notes, in realtime on the screen is amazing. All in all, I feed mentally diminished after watching such a briliant mind. Thank you!
Well yeah it's obviously scripted but I don't understand why that would mean he is "making fun of us." I do agree that the sound routine reading notes from screen memory is super creative, love it. Edit: also gotta give props to the pedagogy here. I'm sure the actual development process was a lot messier, but he's put the scripted program development in a wonderfully one-step-at-a-time order here. I'm sure that also took a lot of work.
I love how open and flexible the C64 is, right out of the box, and you've demonstrated that fact amazingly well here. The POKE and SYS of Commodore BASIC allows anything to be done with the right know-how.
You are making excuses for an astonishing lack of native support. Far from being a powerhouse, POKEs were often the only way to get it to do much beyond "hello world". Ghastly
@@captainboing And ultimately what did we miss out on the Commodore 64? Name some great Commodore 128 or Plus/4 programs written in the more feature-rich BASIC on those machines. I'll take the C64's flexibility any day over something like the TI-99/4a which provided absolutely NO way for the user to use the sprite hardware or execute machine language without additional purchases.
@@8_Bit you kind of prove my point - you'll die on this hill "wah POKEs are really good coz they're powerful" completely missing my point that you need them coz the rest of the basic is weak af. Your "whataboutism" of one basic that didn't support the hardware with another is hardly apt... Staying on the subject of sound creation, go and research the BBC or Amstrad 464's sound subsystem (even the dreadful speccy had some support) - all contemporaries. The CPC had an amazing sound subsystem - All the sound generation and even the interrupting was handled natively in the basic, which resulted in amazingly smooth flowing sound output from 100% Basic code which showed you what you were doing without little notebooks full of pokes (seen it)- please note, I am not going to defend the 464 sound chip, which despite being an industry staple (and used in many arcade machines), was clearly inferior to SID. Don't let your misty-eyed reminiscing blind you to the fact and that this amazing video is a tribute to the programmer and not the machine - showing what can be done DESPITE the Basic and far from a showroom example of how great commodore Basic is because it supports PEEK, POKE and SYS (or similar) - big plop - so did tinyBasic from the 70s, ZX80/81 and just about every other. Just about every active element of this code could be done using WOZMON or DEBUG. All the clever stuff is done by his machine code with Basic being little more than a loader... Even to the point that it self-terminates and does nothing about actually playing the tune. So in that respect it's even worse
@@8_Bit youtube deleteing replies I see. anyway... why compare to the 99/4? that was just as bad. Go and research the Amtrad CPC sound capabilities - even the sound channel interrupts were controlled natively by the Basic (not defending the chip - SID was way ahead of everything until Paula)... can't remember what else I originally typed
@@talideon I'm referring to the REM thing and using the BASIC program listing as "editing software" while doing playback from screen memory with interrupts. That's really cool way to use the system facilities to do the tedious stuff. You can even save the resulting file with the melody clip in the comments.
Totally awesome! When I was a kid I had a C64 for the whole family. I programmed a lot in BASIC but never ever got to this level! And indeed, it's HIGHLY entertaining. Thank you!
Having grown up programming music, graphics, and animation in C64 BASIC, this blew me away. The comments below concur. What a brilliant C64 MASTER CLASS
I stumbled over this in my recommendations and was planning on having a short look. Instead you made it impossible to not keep watching, by playfully showing how to abstract away from the system's restrictions and use the language most appropriate to achieve the goal. Thank you for sharing this!
This video will never get the likes it deserves but this is INCREDIBLE! The research, planning, editing, tech factor, and entertainment value are fantastic. Well done sir!
The look of your video is like "school TV" in the 80's. It's simly COOL! Thanks for that interesting and entertaining lesson! Best regards, Doc64! Keeps C64 alive! 😉
This reminds me of assembly coding my Commodore CBM 8032 over 40 years ago. I still have the book on 6502 programming on my bookshelf. The 8032 had a built in hex editor and machine code monitor (register contents and stack pointer were shown) which could be invoked from a BRK interrupt What I really like from this video is that all machine works without crashing the C64 and he never saves the code to tape or disk, so if it goes wrong he had to start again from scratch. And the trick to make an editor with the REM lines is brilliant. Anyway, it all brought back great memories from my first attempts into computer programming and hacking 😅
Cheers! I have made several demos for CBM 8032 under the duo OOBC. We found the monitor a little tedious for working fast and because we needed to work simultaneously we ended up cross compiling and the makefile could either run it on an emulator or upload it to the computer over a tape adapter. The sound possibilities seemed to be a lot wider than I had heard anyone else do before that, playing tones below 242 Hz, oscillator sync or sample playback. These days so many other people have done cooler tricks on the PET platform.
Wow... Your channel just popped out of nowhere on my YT and it's a real gem! The whole concept, execution and editing quality are somewhat soothing. Thank You!
The lesser-known successor model, the C128, had a BASIC command called “PLAY” that let you play music by specifying the notes. “PLAY "CDEFG"” would play a simple scale. There are letter/number codes to change octave, instruments, note lengths, insert rests, etc.etc.
wow. wow. wow. wow. wow. 5 wow review for impressive and mindblowing unparalleled skillz!!! That was insanely awesome, thank you for sharing with the rest of us mere mortals. Much respect and admiration! 💥💯💥🤯
I remember peeking and poking to perform certain operations without really understanding what was doing at the time. This makes more sense of what I used to do.
This is so beautiful! It’s a bit too advanced (and way too fast) for me, but your pedagogic way lets even a guy like me understand enough to be fully entertained. I love how precis you type things in too! I doubt there’s a single unnecessary keystroke in the whole video 😮 Thanks for a very cozy half an hour Linus ❤️
This brings back memories. I remember doing something similar, had a mini language for the note data, and a similar interrupt driven generator for the music. Pretty sure I just inputted the pitch values from the user manual as I didn't understand the math back then (I WAS 10 at the time). Don't remember writing anything too complicated though, just transcribing a few songs from the scores.
Me too: similar age and similar process I was following in the 80s.... I had a hard time understanding vectors with multiple dimensions (which is something that gets taught in middle/high school and I was still in elementary 😅) and I also came up with more crude and less advanced ways, but it was fun 😊
I know some of the old legends, like Hubbard I think, composed their music straight in code because they didn't have the time to actually produce tools for composing. That's crazy
It was more because Rib Hubbard and some of the earlier SID composers were just used to that workflow. Plenty of the greats used tools, and Chris Hülsbeck invented the first true tracker on the C64.
I'm blown away with what you've presented here! Knowing opcodes by heart, the way you present pages in memory, and being able to code via pokes in basic is inspirational.
So what I'm seeing here is that you use the screen letter buffer as runtime memory and the basic provided movement and text input functionality as real time memory editor where the data also doubles as code which can be also serialized to storage memory with a press of an enter key? I mean... WHAT?!
I never knew that's how the parser worked! I was always very careful with whitespace and all the other things you ran over like a freight train. Awesome!
I was part of a C64 hacker group in the 90s. My job was to program the very popular loader themes. I used the same stuff shown in the video xD Getting goosebumps seeing someone doing that after such a long time... thanks for the memories!
Thank goddess there's a cheat sheet in the top right corner so that I had a chance to follow. Also, the sheer number of ingenious hacks boggles the mind.
wow, just WOW. I already knew before, that your brain must be working differently (in a positive way of course), and this video is just another proof of that. We will never forget your C64 sprite-crunch tables and also making use of it in a great demo! I'm a c64 basic & assembler hacker too, and I know some hex values of certain opcodes too, but also knowing the decimal values of every opcode (and especially the corresponding adressing modes!!!) blows my mind. I don't know, how you prepared yourself for making this video, but I would not be able to do this only using BASIC. Hats off, Master LFT! Best, TRS
One of my programming peaks on C64 was creating a way of entering music somewhat easily into DATA lines. I comment at the start of the video, let's see how close your approach is! ... Ok, I used only BASIC. a) First, I learned somehow that the difference between semitones is the twelfth root of 2. I calculated that with a handheld calculator. b) Then I knew that an A note has a frequency of 440 Hz. Dividing and multiplying that with the twelfth root of 2 gave me the frequencies of the notes up and down from there. c) I read in the C64 manual (or was it in a magazine?) how the frequencies are set using POKE commands, and calculated the upper and lower POKEs for each frequency. d) I stored the values in arrays and wrote down which array value corresponds to which note. e) I made the program read DATA lines that included three numbers, one note for each voice, and zero meant silence. There was also a duration, I think a crotchet was 64. The delay was a simple for loop. This program was based on one in a magazine that had those upper and lower poke values listed, so my approach was much more straightforward. f) Then I had a way in the DATA lines that could stop the sound momentarily so that the same note could be played several times in succession; otherwise it would have been one continuous sound. But I can't remember how I did that.
Sound like you made proto-instruments there (if we assume that setting all stuff for a note made play in a way and not another is an instrument) - that give the idea of how light years away Rob Hubbard was from your average BASIC programmer
this was pretty insane but fun to watch. i wrote articles about the sid chip in the very early days and also worked on software for a keyboard that had 3 extra sid chips in it but unfortunately never made the market (yes i worked for commodore).
My mind was blown exactly 4 minutes in, and then again multiple times after. This is the most mindblowingly creative coding I have ever seen. Several tricks combined beautifully!
Awesome! You can write machine code so easily using decimal opcodes! It reminds me of a high school teacher who taught us how to program in Motorola 6800 assembler. We wrote down the mnemonics for each instruction with its operands and then looked up the hexadecimal value for each one in the datasheet.
I am no coder, but i have great respect for people whon can do this. you come very close to a dream of coding, that i have since the day of c64/amiga 500: taking a computer out of the box, coding the needed software out of nowhere, making literally everything possible. you are the proof, it's possible! thx very much
Thank you very much for your amazing video! I really enjoyed it! That kicked me back in time to most beautiful age when i got my first computer C=64. And yes. Games were first but i could not keep my curiosity how can be done all these fantastic things... I opened that book supplied with this amazing machine soon and started to experiment with BASIC, change colours, print text on the screen, move sprites, generate sounds, make primitive games and more and more... I will never forget these times. These completely changed my mind and my life 🙂 And i will never foget so many nice and inspirating songs from C=64 games and demos. Really nice video! All these SID sounds, colours, font and typical C=64 keyclicks.. Thank you for this video! It made my evening a lot better ;-) You are true C=64 masterclass and great musician!
You sir, are one excellent individual. You made it very easy for me to dig up some fond memories of my time as a child playing the C64. It was very inspiring and relaxing watching you doing some great 8-bit magic there 😊. Keep it up!!
Amazing the way you program the C64!!! Only using Basic and all the ML opcodes and memory map in your head, without any special cartridge or modification..only from Basic.... again... Amazing !!
I don't have the words... My first computer was a zx81c. I really like the Speccy, and know MSX, C64, Amiga, Atari, TRS 80... And what you did in this video is INSANE 😲
I had my first coding experiences at a C64 when I was like 12 years old. I remember playing around with PEEK and POKE to get some simple sounds and graphics and trying to build a simple text adventure with basic decision trees. Seeing your video now almost 30 years later as a developer myself, just made me so nostalgic of this time. I really love the simplicity, elegance and skill of your coding. Well done! Thanks for this video
LOL that was fun to watch, it reminded me of the big wall full of paper notes about everything I needed to remember in order to speed up writing things on the C64.
I can't imagine how you developed this video. Managing to keep the line numbers spaced well apart beats me, and the rest of the design is so beautiful it hurts. This is the definition of a moby hack.
My first experience writing code was on a VIC 20 and making birds flap their wings, wish I had figured out how to do beep scales like this when I later was messing with BASIC on DOS. awesome job with this vid
As a 12-13 year old kid on a VIC20 and C64 that is exactly how I learned how to code machine language. Initially no money for a ML monitor cart; I had to write my own. Scary thing is I remember it all 40 years later. Very impressive LFT!
Same here. I ended up writing a full featured macro assembler, in BASIC. Around ten years ago I did it all over again from nothing. It's a work in progress to this day.
@@skmgeek no, I just only work on it when I get time, which I don't. But still I don't think you appreciate what was involved in writing a rich featured assembler from bare metal.
Ha, yeah. When I saw the numbers on the screen I immediately translated them into assembly :) Doesn't work for almost anything except LDA, STA and RTS :)
I've never ever programmed anything nor do i know anything about it, but this was a joy to watch. Well done and super interesting! I've grown up with a C64 and the special sounds of this machine always remind me of good childhood days.
Holy moly, man! My jaw consistently drops with these videos, just the way you can keep all this stuff in mind and simply know it. Like, the decimal representation of opcodes and high/low bytes of important addresses? "Okay, we need to do this, this, this." and you just DO it, don't have to translate it into DATA statements or anything. And being incredibly skilled at the music side on top of that? I'm glad you use your superpowers for good, I'd hate to see what you'd do as a villain. ^_^
Man, what a great video. Just pure coding fun and really reminds me of the knowledge and cleverness we used to use back in those days when coding. Loved seeing you rip off assembly as pure opcode. The good 'ole days.. :)
I have no idea what you did. I have no idea about coding. I just gave a Like because a skill like this is respectable. All i know is the C64 that some kids in school had, back in the day.
Funny to see all that work you put in to it. That is also the reason why I only played games on the C64 and later switched to an Amiga500. I only had a tape deck on the C64. And that was often just worthless later a 5 1/4 floppy that works better. haha
I have not got the foggiest idea what all that code meant but as a lover of C64 music, i was amazed, absolutely hooked on watching you create a wonderful catchy melody 👍 thankyou so much 👊
Amazing how you show some of the c64 capabilities and made them to work from bare BASIC, and how you made us all feel by seeing our good old friend in action this day!
Thoroughly enjoyable. I started my coding career poking color values on the C-64 in the mid 80's. Good memories - thank you for the excellent tutorial.
I never expected that live code demo to inspire you to do such a massive job :)
Well done (as usual :)) - Very lovely concept :)
/Walt
Yea, but poking and peeking is a pure torture. not to mention, result was bloody damn slow back then, (when no emulators were available).
Changing the line number while coding to duplicate the code fast, writing assembly directly through opcodes, using screen buffer as real time input, using color buffer to visualise notes parsing,… So much elegance in all this! And man, what an ear you have when tweaking the melody. I call it “”Art” 🙏
Assembling machine language using C64 basic only AND developing a music editor AND player from it using every trick in the box, blows my mind. #GURU
New subscriber amazed of your programming skills!!! It's really impressive what you did with only basic code!!!!
That's why I always liked the monitor in the Apple ][. Woz made entering Assembly without any extra software easy (for the early 80s).
F666G to start the mini assembler. You could even add a custom subroutine and call it with CTRL-Y.
The C64 could do a lot more but it's ROM wasn't as ingenious. At least not for programmers.
Bard
@@joe--coolYes, mini-assembler for the win!
It's really impressive but I don't understand a thing. I learned to code on one of these. Never using assembler, though. I was just 13 back then 😊
C64 coding should be an olympic event. There are not enough Like buttons for this video.
That would actually make me watch the Olympics. Mind you. LFT here would likely pick up all the gold medals.
Seriously, I've done some c64 asm back in the day, and looking at the masters code is like looking at something that makes no sense, but works better than anything should. I learned a lot from reading Hubbards music player
I also did asm back in the 80s and was in some groups at that time. I focused on programming intros. Fun times as a teen.
@@MJsPhilippineRetirement demoscene is still alive and well! (search for 'pouet')
Load "*",8,1... instead
Personal milestone: Today this channel reached 32768 subscribers, a number that won't fit in a signed 16-bit integer. I find it amusing and appropriate that the event was triggered by this video, in which the same thing happens to the variable F. =)
I really enjoyed this video, and was able to follow it pretty well with your explanations. I actually found the live coding technique quite exciting!
As a c64 owner in the mid 80s to early 90s, and someone that loves creating music, I just wanna say thank you for this upload mate! Brilliant!
@@NickTaylor-Phantom-Works2 same here :D awesome vid!
32,768 is also the number of colours in a SNES!
No way... This guy is either making fun of us and reading the code from a paper or he is programming directly in DECIMAL opcodes!
Using the REM lines as a live tracker with memory storage is bordeline genius and mad.
Being able to play the music by inserting the letters, representing notes, in realtime on the screen is amazing.
All in all, I feed mentally diminished after watching such a briliant mind.
Thank you!
You speak some strange tongue...
@@bobgomez9481 IRQ, PC, SP, ALU, CPU, ASM, C++, ADA, LISP, Comal, LDA, STA...
Then I am possessed... :-)
Well yeah it's obviously scripted but I don't understand why that would mean he is "making fun of us." I do agree that the sound routine reading notes from screen memory is super creative, love it. Edit: also gotta give props to the pedagogy here. I'm sure the actual development process was a lot messier, but he's put the scripted program development in a wonderfully one-step-at-a-time order here. I'm sure that also took a lot of work.
This video is ace.
I have still got my C64 from when I was 15 years old.
41 years later that keyboard clunking takes me back to a better time. .
I love how open and flexible the C64 is, right out of the box, and you've demonstrated that fact amazingly well here. The POKE and SYS of Commodore BASIC allows anything to be done with the right know-how.
You are making excuses for an astonishing lack of native support. Far from being a powerhouse, POKEs were often the only way to get it to do much beyond "hello world". Ghastly
@@captainboing And ultimately what did we miss out on the Commodore 64? Name some great Commodore 128 or Plus/4 programs written in the more feature-rich BASIC on those machines. I'll take the C64's flexibility any day over something like the TI-99/4a which provided absolutely NO way for the user to use the sprite hardware or execute machine language without additional purchases.
@@8_Bit you kind of prove my point - you'll die on this hill "wah POKEs are really good coz they're powerful" completely missing my point that you need them coz the rest of the basic is weak af. Your "whataboutism" of one basic that didn't support the hardware with another is hardly apt... Staying on the subject of sound creation, go and research the BBC or Amstrad 464's sound subsystem (even the dreadful speccy had some support) - all contemporaries. The CPC had an amazing sound subsystem - All the sound generation and even the interrupting was handled natively in the basic, which resulted in amazingly smooth flowing sound output from 100% Basic code which showed you what you were doing without little notebooks full of pokes (seen it)- please note, I am not going to defend the 464 sound chip, which despite being an industry staple (and used in many arcade machines), was clearly inferior to SID. Don't let your misty-eyed reminiscing blind you to the fact and that this amazing video is a tribute to the programmer and not the machine - showing what can be done DESPITE the Basic and far from a showroom example of how great commodore Basic is because it supports PEEK, POKE and SYS (or similar) - big plop - so did tinyBasic from the 70s, ZX80/81 and just about every other. Just about every active element of this code could be done using WOZMON or DEBUG. All the clever stuff is done by his machine code with Basic being little more than a loader... Even to the point that it self-terminates and does nothing about actually playing the tune. So in that respect it's even worse
@@8_Bit youtube deleteing replies I see.
anyway... why compare to the 99/4? that was just as bad. Go and research the Amtrad CPC sound capabilities - even the sound channel interrupts were controlled natively by the Basic (not defending the chip - SID was way ahead of everything until Paula)... can't remember what else I originally typed
Old computers can be fun and all but it's your creativity i am here for.
The LIST trick and saving the melody to the program listing is really neat, never thought of using BASIC for that.
This
That's pretty much what you had to do back in the day! Or are you talking about the REM hack?
@@talideon I'm referring to the REM thing and using the BASIC program listing as "editing software" while doing playback from screen memory with interrupts. That's really cool way to use the system facilities to do the tedious stuff. You can even save the resulting file with the melody clip in the comments.
Totally awesome! When I was a kid I had a C64 for the whole family. I programmed a lot in BASIC but never ever got to this level! And indeed, it's HIGHLY entertaining. Thank you!
Having grown up programming music, graphics, and animation in C64 BASIC, this blew me away. The comments below concur. What a brilliant C64 MASTER CLASS
Kudos LFT, you bloody genius. It's so inspiring, I'm blown away
I stumbled over this in my recommendations and was planning on having a short look. Instead you made it impossible to not keep watching, by playfully showing how to abstract away from the system's restrictions and use the language most appropriate to achieve the goal. Thank you for sharing this!
Well said. Same!
I loved it how he just pre rendered page tables
This video will never get the likes it deserves but this is INCREDIBLE! The research, planning, editing, tech factor, and entertainment value are fantastic. Well done sir!
I am absolutely gobsmacked (in awe) by this - never seen coding music approached in this way. Genius.
The look of your video is like "school TV" in the 80's. It's simly COOL! Thanks for that interesting and entertaining lesson!
Best regards, Doc64! Keeps C64 alive! 😉
I'm thoroughly entertained and impressed by this! Basically (no pun) using basic to write machine code, and a genius way to create a UI. Hats off!
The fact that you remember the instructions set in decimal numbers blows my mind.
He only knows them in binary and converts them to decimal. :)
I remember in hex from Z80 CPU
And I remember me some hex from Sharp PC-1403 Calculator (time of human's assembler)
Pure black magic on a blue screen. Amazing!
This reminds me of assembly coding my Commodore CBM 8032 over 40 years ago. I still have the book on 6502 programming on my bookshelf. The 8032 had a built in hex editor and machine code monitor (register contents and stack pointer were shown) which could be invoked from a BRK interrupt
What I really like from this video is that all machine works without crashing the C64 and he never saves the code to tape or disk, so if it goes wrong he had to start again from scratch. And the trick to make an editor with the REM lines is brilliant. Anyway, it all brought back great memories from my first attempts into computer programming and hacking 😅
Cheers! I have made several demos for CBM 8032 under the duo OOBC. We found the monitor a little tedious for working fast and because we needed to work simultaneously we ended up cross compiling and the makefile could either run it on an emulator or upload it to the computer over a tape adapter. The sound possibilities seemed to be a lot wider than I had heard anyone else do before that, playing tones below 242 Hz, oscillator sync or sample playback. These days so many other people have done cooler tricks on the PET platform.
Just mesmerizing to watch how well your mind works!
Thank you!
Wow... Your channel just popped out of nowhere on my YT and it's a real gem! The whole concept, execution and editing quality are somewhat soothing. Thank You!
amazing. machine code direktly without mistakes
The lesser-known successor model, the C128, had a BASIC command called “PLAY” that let you play music by specifying the notes. “PLAY "CDEFG"” would play a simple scale. There are letter/number codes to change octave, instruments, note lengths, insert rests, etc.etc.
wow. wow. wow. wow. wow.
5 wow review for impressive and mindblowing unparalleled skillz!!! That was insanely awesome, thank you for sharing with the rest of us mere mortals. Much respect and admiration! 💥💯💥🤯
I now have a working recreation of this program. So much fun! All thanks to Linus and his debug help.
This fellow is 1 in a billion.
so you say there are 7 more like him???
Brilliant work Linus. So inspiring! I have to go and dig out my old C64 right away and try it out. Keep up your amazing work. 💪
This was the nerdiest video I think I have ever watched, and I think I only grasped like 10% of it, but it was still a highly enjoyable experience :D
I have known and programmed on the C64 for 50 years. But this video is the coolest thing I have ever seen. Thank you!!!
Amazing! This is real art.
I remember peeking and poking to perform certain operations without really understanding what was doing at the time. This makes more sense of what I used to do.
This is so beautiful! It’s a bit too advanced (and way too fast) for me, but your pedagogic way lets even a guy like me understand enough to be fully entertained. I love how precis you type things in too! I doubt there’s a single unnecessary keystroke in the whole video 😮
Thanks for a very cozy half an hour Linus ❤️
This brings back memories. I remember doing something similar, had a mini language for the note data, and a similar interrupt driven generator for the music. Pretty sure I just inputted the pitch values from the user manual as I didn't understand the math back then (I WAS 10 at the time).
Don't remember writing anything too complicated though, just transcribing a few songs from the scores.
Me too: similar age and similar process I was following in the 80s.... I had a hard time understanding vectors with multiple dimensions (which is something that gets taught in middle/high school and I was still in elementary 😅) and I also came up with more crude and less advanced ways, but it was fun 😊
Amazing video!! Who even knew this was possible?! Shared in the Sonicstate news today 👏
This is SO cool. The guy is not programming a computer he has become one with the computer. Really awesome video.
I know almost nothing about coding but realize just how incredibly difficult what you just did was, bravo. 👏
Legitimately one of the best videos I've ever seen, anywhere. Instantly subscribed, this is killer content!
It’s hard to describe how happy this video makes me. What a craftman and an artist you are!
I just look at the iconic blue screen and listen to the sound of the keyboard. Fantastic time travel. Thanks!
I know some of the old legends, like Hubbard I think, composed their music straight in code because they didn't have the time to actually produce tools for composing. That's crazy
It was more because Rib Hubbard and some of the earlier SID composers were just used to that workflow. Plenty of the greats used tools, and Chris Hülsbeck invented the first true tracker on the C64.
Making a tracker is my first goal in my programming journey.
And I suddenly wish I knew more than nothing.
Inspired though!
If you know how to code the playroutine its a small step to use it directly for composing
I'm blown away with what you've presented here! Knowing opcodes by heart, the way you present pages in memory, and being able to code via pokes in basic is inspirational.
So what I'm seeing here is that you use the screen letter buffer as runtime memory and the basic provided movement and text input functionality as real time memory editor where the data also doubles as code which can be also serialized to storage memory with a press of an enter key?
I mean... WHAT?!
Yeah, that was just something else, I agree.
I never knew that's how the parser worked! I was always very careful with whitespace and all the other things you ran over like a freight train. Awesome!
I was part of a C64 hacker group in the 90s. My job was to program the very popular loader themes. I used the same stuff shown in the video xD Getting goosebumps seeing someone doing that after such a long time... thanks for the memories!
new LFT video!!!
edit: love the way you move the cursor out of the way of the pattern scanner when it comes near your editing position ^_^
That's a cute melody you programmed, C64 was indeed a sound powerhouse for its price and capabilities.
Thank goddess there's a cheat sheet in the top right corner so that I had a chance to follow.
Also, the sheer number of ingenious hacks boggles the mind.
Thats the most creative C64 programming I have seen :) no tools, bare metal.
This is really huge! A musician who can translates assembly to opcodes by the top of his head... Excellent video btw.
I wish I'd stuck with this as a teenager. So much of this makes sense now. Much of it doesn't yet. Thank you for doing this.
great video, loved the idea of using the screen buffer as sequencer, super cool
wow, just WOW.
I already knew before, that your brain must be working differently (in a positive way of course), and this video is just another proof of that. We will never forget your C64 sprite-crunch tables and also making use of it in a great demo!
I'm a c64 basic & assembler hacker too, and I know some hex values of certain opcodes too, but also knowing the decimal values of every opcode (and especially the corresponding adressing modes!!!) blows my mind.
I don't know, how you prepared yourself for making this video, but I would not be able to do this only using BASIC. Hats off, Master LFT!
Best, TRS
One of my programming peaks on C64 was creating a way of entering music somewhat easily into DATA lines. I comment at the start of the video, let's see how close your approach is! ... Ok, I used only BASIC.
a) First, I learned somehow that the difference between semitones is the twelfth root of 2. I calculated that with a handheld calculator.
b) Then I knew that an A note has a frequency of 440 Hz. Dividing and multiplying that with the twelfth root of 2 gave me the frequencies of the notes up and down from there.
c) I read in the C64 manual (or was it in a magazine?) how the frequencies are set using POKE commands, and calculated the upper and lower POKEs for each frequency.
d) I stored the values in arrays and wrote down which array value corresponds to which note.
e) I made the program read DATA lines that included three numbers, one note for each voice, and zero meant silence. There was also a duration, I think a crotchet was 64. The delay was a simple for loop. This program was based on one in a magazine that had those upper and lower poke values listed, so my approach was much more straightforward.
f) Then I had a way in the DATA lines that could stop the sound momentarily so that the same note could be played several times in succession; otherwise it would have been one continuous sound. But I can't remember how I did that.
Sound like you made proto-instruments there (if we assume that setting all stuff for a note made play in a way and not another is an instrument) - that give the idea of how light years away Rob Hubbard was from your average BASIC programmer
this was pretty insane but fun to watch. i wrote articles about the sid chip in the very early days and also worked on software for a keyboard that had 3 extra sid chips in it but unfortunately never made the market (yes i worked for commodore).
Wow, the first time I saw a really cool basic project for c64. c64 Basic seems to be more powerful I‘ve ever imagined. WOW!
Absolutely amazing 👏🏾. To be able to visualise assembly with byte code is mind blowing 🤯
My mind was blown exactly 4 minutes in, and then again multiple times after. This is the most mindblowingly creative coding I have ever seen. Several tricks combined beautifully!
Awesome! You can write machine code so easily using decimal opcodes! It reminds me of a high school teacher who taught us how to program in Motorola 6800 assembler. We wrote down the mnemonics for each instruction with its operands and then looked up the hexadecimal value for each one in the datasheet.
This interactive table-like interface for editing melodies in real time is an absolutely genius invention!
I am no coder, but i have great respect for people whon can do this. you come very close to a dream of coding, that i have since the day of c64/amiga 500: taking a computer out of the box, coding the needed software out of nowhere, making literally everything possible. you are the proof, it's possible! thx very much
This is what makes the internet great. Thank you, and can we please have some more! :)
Thank you very much for your amazing video! I really enjoyed it!
That kicked me back in time to most beautiful age when i got my first computer C=64. And yes. Games were first but i could not keep my curiosity how can be done all these fantastic things...
I opened that book supplied with this amazing machine soon and started to experiment with BASIC, change colours, print text on the screen, move sprites, generate sounds, make primitive games and more and more... I will never forget these times. These completely changed my mind and my life 🙂
And i will never foget so many nice and inspirating songs from C=64 games and demos.
Really nice video! All these SID sounds, colours, font and typical C=64 keyclicks..
Thank you for this video! It made my evening a lot better ;-)
You are true C=64 masterclass and great musician!
And yes of course... your approach to create this got me so much!
You sir, are one excellent individual. You made it very easy for me to dig up some fond memories of my time as a child playing the C64. It was very inspiring and relaxing watching you doing some great 8-bit magic there 😊. Keep it up!!
Absolutely Amazing, Linus. You are a total legend. Will never forget these videos.
WOW. I've never thought that you can make so complex sequencer in pure basic o_O! C64 is a true wonder. Liked, subscribed.
But it also uses 6502 machine code.
@@mobluse I know... But still it's very impressive for noob like me)
“The definition of genius is taking the complex and making it simple.” Albert Einstein
So no genius exist, nothing is simple.😂
Beautiful! I could not stop watching. Great work!
Walt/Anders is nothing shy of a LEGEND!
You took me to my childhood :) Thanks and congrats for very good job👍
Amazing the way you program the C64!!! Only using Basic and all the ML opcodes and memory map in your head, without any special cartridge or modification..only from Basic.... again... Amazing !!
Impressive! 35 years ago I wrote some Basic but I was so far from such ideas and skills. Well done!
33:06 the quiet satisfaction of making your own DAW in half an hour.
Which you conveniently saved into the only available storage you have for easy retrieval: your brain :)
Hah, I was thinking the same:D Amazing really.
Something I've been looking for for years is to see how music was made without having anything, impressive video
I don't have the words... My first computer was a zx81c. I really like the Speccy, and know MSX, C64, Amiga, Atari, TRS 80... And what you did in this video is INSANE 😲
I had my first coding experiences at a C64 when I was like 12 years old. I remember playing around with PEEK and POKE to get some simple sounds and graphics and trying to build a simple text adventure with basic decision trees.
Seeing your video now almost 30 years later as a developer myself, just made me so nostalgic of this time. I really love the simplicity, elegance and skill of your coding. Well done! Thanks for this video
LOL that was fun to watch, it reminded me of the big wall full of paper notes about everything I needed to remember in order to speed up writing things on the C64.
I programmed a lot for the C64 back in the day, and I have to say this is very inventive. Hats off to you, sir!
Amazing how you do this in so few Basic-lines. Greetz from Belgium!
blown away - if only I understood how to get started on mastering this... well done!
OMG. As a programmer with over 40 years of experience I say that you are a genuine wizard! Awesome
I can't imagine how you developed this video. Managing to keep the line numbers spaced well apart beats me, and the rest of the design is so beautiful it hurts. This is the definition of a moby hack.
Subscribed. Thanks for the amazement and bonus points for that beautiful 1081 monitor!
My first experience writing code was on a VIC 20 and making birds flap their wings, wish I had figured out how to do beep scales like this when I later was messing with BASIC on DOS. awesome job with this vid
As a 12-13 year old kid on a VIC20 and C64 that is exactly how I learned how to code machine language. Initially no money for a ML monitor cart; I had to write my own. Scary thing is I remember it all 40 years later. Very impressive LFT!
Same here. I ended up writing a full featured macro assembler, in BASIC. Around ten years ago I did it all over again from nothing. It's a work in progress to this day.
@@KC9UDXwow, you must be really good at procrastination! lol
@@skmgeek no, I just only work on it when I get time, which I don't. But still I don't think you appreciate what was involved in writing a rich featured assembler from bare metal.
@@KC9UDX 'twas but a mere joke, I know how much work goes into that stuff
Ha, yeah. When I saw the numbers on the screen I immediately translated them into assembly :) Doesn't work for almost anything except LDA, STA and RTS :)
I've never ever programmed anything nor do i know anything about it, but this was a joy to watch. Well done and super interesting! I've grown up with a C64 and the special sounds of this machine always remind me of good childhood days.
Holy moly, man! My jaw consistently drops with these videos, just the way you can keep all this stuff in mind and simply know it. Like, the decimal representation of opcodes and high/low bytes of important addresses? "Okay, we need to do this, this, this." and you just DO it, don't have to translate it into DATA statements or anything. And being incredibly skilled at the music side on top of that? I'm glad you use your superpowers for good, I'd hate to see what you'd do as a villain. ^_^
Man, what a great video. Just pure coding fun and really reminds me of the knowledge and cleverness we used to use back in those days when coding. Loved seeing you rip off assembly as pure opcode. The good 'ole days.. :)
I have no idea what you did. I have no idea about coding. I just gave a Like because a skill like this is respectable. All i know is the C64 that some kids in school had, back in the day.
mind blowing. and an earworm to go, as well! thank you for this 🙏
I've been programming for 20+ years and I understood very little. Yet very fascinating!
Amazing! You have convinced me to get a new power supply for my C64.
Funny to see all that work you put in to it. That is also the reason why I only played games on the C64 and later switched to an Amiga500. I only had a tape deck on the C64. And that was often just worthless later a 5 1/4 floppy that works better. haha
I have not got the foggiest idea what all that code meant but as a lover of C64 music, i was amazed, absolutely hooked on watching you create a wonderful catchy melody 👍 thankyou so much 👊
Amazing how you show some of the c64 capabilities and made them to work from bare BASIC, and how you made us all feel by seeing our good old friend in action this day!
Thoroughly enjoyable. I started my coding career poking color values on the C-64 in the mid 80's. Good memories - thank you for the excellent tutorial.
one of the most impressive things I've seen in long time.. you my friend are a genius.
That's absolutely insane. You are a genius
Videos you are making are truly precious gems, thank you 😃😃😃