CJ's Project Vlog
CJ's Project Vlog
  • 23
  • 55 123
Building C Programs for a 6502 breadboard computer and customizing cc65
Over the last few months I've gotten most of the cc65 C Library working on my Project:65 breadboard computer, including most of the file I/O functionality. Here I demonstrate a few of the C programs I've written to take advantage of the new functionality, and then dig into some of the implementation details of using cc65 with a new platform & OS kernel.
For in-depth discussion of the technical details, visit CJ's Project Blog: coronax.wordpress.com/projects/project65/
For the cc65 fork with my customizations: github.com/coronax/cc65
For the Project:65 kernel and application source code: github.com/coronax/project65
มุมมอง: 533

วีดีโอ

Converting Arduino PWM to synthesizer CV... badly.
มุมมอง 1658 หลายเดือนก่อน
After getting my first synth components working, I wanted to try using an Arduino as a sequencer and quantizer, and I wasn't going to let the fact that I didn't have any DAC ICs sitting around stop me. Instead, I experimented with converting an Arduino pulse-width-modulation (PWM) output to something my voltage-controlled oscillator will tolerate, and made a bunch of strange noises along the wa...
Breadboard Synthesizer Show & Tell
มุมมอง 908 หลายเดือนก่อน
Demonstration of a simple three-breadboard monophonic synthesizer I recently started building. The individual components are built from designs by Moritz Klein: Oscillator: th-cam.com/video/QBatvo8bCa4/w-d-xo.html Amplifier: th-cam.com/video/yMrCCx6uqcE/w-d-xo.html Envelope Generator: th-cam.com/video/aGFb7JbTdNU/w-d-xo.html Read more about this project at the Project Blog: coronax.wordpress.co...
Project:65 EEPROM debugging for a 6502 computer
มุมมอง 5149 หลายเดือนก่อน
I recently went through a long debugging process because of some EEPROM-related issues in my Project:65 6502-based homebrew computer. In this video I talk about what happened and describe the EEPROM setup for the P:65 computer, and also talk about some recent upgrades to my homebrew EEPROM programmer setup. Links Project Blog: coronax.wordpress.com Project:65 software repository: github.com/cor...
Adding IO Ports to a 6502 computer using 7400-series ICs
มุมมอง 35911 หลายเดือนก่อน
When I added an audio generator to my Project:65 breadboard computer, I needed another output port in order to talk to it. Ordinarily, you might use a 6522 VIA for something like that, but I didn't have an extra one of those. So instead, I created some new output ports using a trio of 74HCT574s and a little bit of glue logic. For more information, see this project at the blog here: coronax.word...
6502 homebrew computer plays Jingle Bells
มุมมอง 592ปีที่แล้ว
This video is the result of a very quick-and-dirty attempt to add audio capabilities to my Project:65 breadboard computer. In just a few days I was able to get it to play Jingle Bells from a downloaded MIDI file. For more info about the Project:65 computer, see coronax.wordpress.com/projects/project65/. I'll add some more info about the audio player specifically after the holiday. The audio gen...
Fabric & Wind Simulation on GPU
มุมมอง 2427 ปีที่แล้ว
A compilation of test videos I created while working on a GPU-based fabric simulation for creating hanging banners. Includes some funny and pretty cool-looking simulation failures. By the way, I'm trying to find the original source for the particular alliance flag image I'm using in the video. If you know who created it, let me know because I'd like to give proper credit. website: coronax.wordp...
Retrochallenge 2015 07 Dual-Playfield Nightmares
มุมมอง 1.1K9 ปีที่แล้ว
In my final video for the 2015 summer Retrochallenge, I experiment with parallax scrolling using the Amiga's dual-playfield mode. I also encounter - and resolve - big problems when it comes time to test my code on actual hardware, instead of an emulator. For more information, check out coronax.wordpress.com/projects/retrochallenge-2015-07/
Retrochallenge 2015 07 Filled polygons with the Amiga Blitter
มุมมอง 4K9 ปีที่แล้ว
The second short video showing my progress in the 2015 07 Retrochallenge. In this part of the video we move from a wireframe cube to filled polygons and fake transparency. We also see the impact of trying to draw an icosahedron, and create a slightly more interesting animation for the 3d shape. Video was captured with WinUAE emulating an Amiga 500 on the 30th anniversary of the Amiga's introduc...
Retrochallenge 2015 07 copper effects
มุมมอง 7179 ปีที่แล้ว
Short video showing the addition of copper effects to my Retrochallenge 2015 07 project. The project is creating real-time 3D graphics on a Commodore Amiga 500 computer. For more information on this project, see coronax.wordpress.com
Retrochallenge 2015 01
มุมมอง 4609 ปีที่แล้ว
Video for my Retrochallenge 2015 01 project, in which I control a small Arduino-based robot with a Commodore 64. See coronax.wordpress.com for a complete writeup of the project. And see retrochallenge.net for a lot of other neat retrocomputing projects.
RetroChallenge Winter Warmup 2014 - 3D graphics on Amiga 500
มุมมอง 92810 ปีที่แล้ว
This is a short video of my entry in the RetroChallenge Winter Warmup 2014. This is a demonstration of 3D graphics on a (mostly stock) Commodore Amiga 500. For this project, I wrote routines in C to perform geometry transformation, perspective, and 2D projection. Since the Amiga has no built-in floating-point processor, I wrote a set of routines for fixed point math to power the geometry calcul...
Conway's Life on the Raspberry Pi
มุมมอง 37011 ปีที่แล้ว
This is a simple implementation of Conway's classic game of Life written using Python and the Pygame library. I wrote it on my Raspberry Pi, though the Python code should run just about anywhere. See my blog for source code & more details about the implementation. coronax.wordpress.com/2013/03/18/raspberry-python-and-life/
BoE-bot dead reckoning test
มุมมอง 31911 ปีที่แล้ว
Testing dead-reckoning maneuvers for my BoE-Bot. The tricky part is timing the servos so that the turns are close enough to 90 degrees to finish the pattern without accumulating too much error. For more information, see coronax.wordpress.com/2013/02/17/the-trouble-with-dead-reckoning/
Project:65 6502 homebrew computer RAM and IO test
มุมมอง 6K11 ปีที่แล้ว
This is the first RAM and IO test run for my Project:65 computer, which is an 8-bit homebrew computer built around a WDC 65c02 microprocessor. The 65c02 is a modern version of the MOS 6502 used in the Apple II and Commodore PET. The IO is provided by a WDC 65c22 VIA chip. In this demo, we're simply blinking some LEDs hooked up to the VIA. The 32 kB SRAM chip is being used to store values for th...
Project:65 8-bit computer running its first program
มุมมอง 23K12 ปีที่แล้ว
Project:65 8-bit computer running its first program
Light Theramin
มุมมอง 19312 ปีที่แล้ว
Light Theramin
Make: Electronics Experiment 18
มุมมอง 1.9K12 ปีที่แล้ว
Make: Electronics Experiment 18
Arduino shift registers and interrupts
มุมมอง 1.9K12 ปีที่แล้ว
Arduino shift registers and interrupts
C64 User Port Light Detection
มุมมอง 66912 ปีที่แล้ว
C64 User Port Light Detection
C64 User Port - a trivial example
มุมมอง 4.8K12 ปีที่แล้ว
C64 User Port - a trivial example
C64 smooth scrolling display hack
มุมมอง 4.9K12 ปีที่แล้ว
C64 smooth scrolling display hack
Make: Electronics Experiment 11
มุมมอง 2K12 ปีที่แล้ว
Make: Electronics Experiment 11

ความคิดเห็น

  • @TheFatMan7777
    @TheFatMan7777 3 วันที่ผ่านมา

    Merry Christmas CJ! (Greg)

    • @cjsprojectvlog
      @cjsprojectvlog 2 วันที่ผ่านมา

      Merry Christmas to you too!

  • @varshneydevansh
    @varshneydevansh 4 วันที่ผ่านมา

    man I have to build my ben eater style 6502 which is still pending on the register/bus design

  • @geos_one
    @geos_one 4 วันที่ผ่านมา

    cool hat the same pproblem wuth my project 65816

  • @ChrisM541
    @ChrisM541 5 วันที่ผ่านมา

    Fascinating, thanks for this.

  • @GregCoonrod
    @GregCoonrod 5 วันที่ผ่านมา

    I'm so glad TH-cam recommended this video to me! I've been trying to get cc65 configured to work on my own 6502 sbc for a while now with very little success.

  • @youreale
    @youreale 6 วันที่ผ่านมา

    Loved this project! Please, keep it going.

  • @gene5229
    @gene5229 7 หลายเดือนก่อน

    Promo-SM

  • @TheFatMan7777
    @TheFatMan7777 8 หลายเดือนก่อน

    I was thinking Dr Who

  • @TheFatMan7777
    @TheFatMan7777 8 หลายเดือนก่อน

    ❤ great stuff CJ! Brings me back to ISU days

  • @marcorademan8433
    @marcorademan8433 8 หลายเดือนก่อน

    If you have opamps... why not use an active filter (e.g Sallen key) intead of just buffering two chained passive filters? Additionally, a shift register and a R-2R resistor ladder can easily produce a stable voltage and act as a single 8-bit DAC. In your case, if you have free GPIOs, just use 6 of them with an R-2R ladder to get 64 different output voltages.

    • @cjsprojectvlog
      @cjsprojectvlog 8 หลายเดือนก่อน

      Thanks! Yeah, a proper active filter would absolutely be an improvement. I'm very much a novice on the filter design thing, so I was just pleased to have come up with something that mostly worked via experimentation instead of just copying another design, even if the result is a little janky. The resistor ladder was my backup plan, but I wanted to try something I hadn't done before first.

  • @strongmungus
    @strongmungus 8 หลายเดือนก่อน

    Nice work. I like moritz' videos. I built the vco and then went down a rabbit hole trying to tune it. I built a programmable CV controller with an Arduino which made the process a bit less painful. Keep it up!

    • @cjsprojectvlog
      @cjsprojectvlog 8 หลายเดือนก่อน

      The easiest way to tune this for me was to feed the output into my computer and use the tuner utility in Ableton (which I only have because it came with the keyboard). I've got an Arduino hooked up to it now and I've been recording some of the weird noises it's making!

  • @natashamarks5412
    @natashamarks5412 10 หลายเดือนก่อน

    💋 'PromoSM'

  • @MikeK8LH
    @MikeK8LH 11 หลายเดือนก่อน

    Could you eliminate the 'OR' gate IC by connecting the /WE signal to one of the active-lo gate inputs on the Expansion Board '138 decoder IC or would that introduce additional propagation delay?

    • @cjsprojectvlog
      @cjsprojectvlog 11 หลายเดือนก่อน

      I tried this out, and to my surprise it does seem to work. The 138 definitely adds some latency - if I read the datasheet right, it can take up to 30 ns to respond to changing the enable inputs. From what I've read, if everything attached to the data bus is CMOS, bus capacitance can hold the previous data there for quite a while as long as nothing tries to drive the data bus. And in this computer nothing's going to do that until the 2nd half of the next clock cycle. I'm not sure how comfortable I am relying on the bus capacitance like that, but I've had the blinkenlights demo running for ten minutes without a hitch, so that says something!

  • @CrazyArtEducator
    @CrazyArtEducator 11 หลายเดือนก่อน

    Very nice and educational blog & video! Thanks. You have "a fresh" approach to use OS'es gfx routines for the classic amiga vector effects. Not very many were able to achieve that back in the day. There was some AGA vector intro coming out somewhere in 92-93 (the sailing boat thing, whose was it?), which used fancy KS3.0 double buffering routines on an Intuition screen. I wonder how your demo runs on AGA or RTG machines? Copper effects surely get disabled when on RTG... (OH! And I totally agree on Mistake #3: "Wait until the last minute to test on real hardware" Been there done that. A few times actually ;)

  • @weirdboyjim
    @weirdboyjim ปีที่แล้ว

    Nice work!

    • @cjsprojectvlog
      @cjsprojectvlog ปีที่แล้ว

      Thank you, and thanks for the inspiration!

  • @kairu_b
    @kairu_b ปีที่แล้ว

    Merry Christmas. Great work!

  • @larrybud
    @larrybud ปีที่แล้ว

    Merry Christmas!

  • @sarahsandberg2816
    @sarahsandberg2816 ปีที่แล้ว

    Super impressive! Go rebels!

  • @sarahsandberg2816
    @sarahsandberg2816 ปีที่แล้ว

    Very cool! Very Impressive!! Happy Holidays!!

  • @GeorgeFoot
    @GeorgeFoot ปีที่แล้ว

    Nice, and impressive the system still works after 10 years! It sounds a bit like an audio system i made a few years ago, which had two channels of square waves driven by 40103 down counters toggling D flipflops. The software configured the reset values for the counters, with one being an octave divider and the other choosing the note. So there were four counters overall, and a D flipflop pair, for two channels, and I had to "trill" in software to get more notes in chords.

  • @limpfishyes
    @limpfishyes ปีที่แล้ว

    Love it!

  • @naviamiga
    @naviamiga 2 ปีที่แล้ว

    Very cool. Nice demo.

  • @mpbu5646
    @mpbu5646 2 ปีที่แล้ว

    Are you directly driving those LEDs? The current (per userport output) should not exceed 1mA, therefore you should use some sort of driver (transistor, ..). Otherwise you risk blowing up your poor CIA chip.

  • @eugenetswong
    @eugenetswong 2 ปีที่แล้ว

    Thank you!

  • @heidobito7924
    @heidobito7924 2 ปีที่แล้ว

    Awesome!

  • @sanderv32
    @sanderv32 2 ปีที่แล้ว

    For everyone saying the C64 doesn't have hardware scrolling, it has $D016 to scroll 7 pixels which is hardware scrolling compared to for example the Amstrad CPC. Scrolling the whole screen can be done by scrolling 7 pixels first and then copy the screen contents 1 char to the left of right depending on which direction you scroll. This takes a lot of raster time. You can also use a trick called VSP where you don't have to copy all the screen contents but only draw the column which is at position 40 hidden behind the border.

  • @Nightshft42
    @Nightshft42 3 ปีที่แล้ว

    Nice work!

  • @XXXXXX-dy5fs
    @XXXXXX-dy5fs 3 ปีที่แล้ว

    Very nice. What language did you do this in and is the code available?

  • @spinbizzy8421
    @spinbizzy8421 3 ปีที่แล้ว

    This is from 2015 and I'm from 2020, but this can go faster. The key thing to make this fast is to "XOR" the output of the blitter in line-drawing mode, by color, on all their respective bitplanes. When that is done, you copy from your XOR'ed wireframe bitplanes straight onto the destination in fill-blit mode. The effect this has is the transition from the background (0 color) to the edge (eg. green) will just be a green line, but the edge from, say, green to red, will have only those bits set that are different; consequently, the blitter, in fill mode, can fill all polygons in one operation. You will *easily* hit 50 fps this way. It is for this reason that convex shapes are a lot easier to do on the Amiga than concave shapes (eg. Scoopex Mental Hangover, to name a demo, the shapes with holes are a lot slower than cubes and whatnot.) I noticed on your blog that you're using the OS route (AreaMove()/AreaDraw() and whatnot, which is cool, but to go fast with the above technique, you have to hit the hardware. Hope this comment is enjoyable for whoever reads this and wonders why there is a speed difference between this and the demos. Great job, I enjoy your work, thanks!

  • @Starredmediasoft
    @Starredmediasoft 4 ปีที่แล้ว

    Just a note: with a total use of unrolled code (both characters and colours) and dealing with racing beam in the correct way it's even possible to do smooth scroll without using double buffering. The bad news obviously is the big waste of RAM and the fact you can use only half or less of the available cycles for the last frame and the next one, when doing the copy. This technique was sometimes used early in the day (international soccer for example)

  • @32bits-of-a-bus59
    @32bits-of-a-bus59 4 ปีที่แล้ว

    Very cool! Nice demonstration of stiff equation and its consequences.

  • @pietrodesantis210
    @pietrodesantis210 4 ปีที่แล้ว

    Hello I would like to control 2 outputs via 2 5Volts input signals. Can you help me?

  • @Apostle1978
    @Apostle1978 4 ปีที่แล้ว

    Love this!!!!!!!

  • @syntaxerrorsoftware
    @syntaxerrorsoftware 5 ปีที่แล้ว

    Does anyone have a copy of the source code mentioned above? The link above doesn't have a valid URL anymore at the end of the article :( The Wayback machine isn't working for it either...

    • @simonscott1121
      @simonscott1121 3 ปีที่แล้ว

      VSP is a well-known technique.

    • @eugenetswong
      @eugenetswong 2 ปีที่แล้ว

      I don't know if saw the link, but at the bottom of the text there is a link to a zip file, which has files, which seem to have assembly source.

    • @syntaxerrorsoftware
      @syntaxerrorsoftware 2 ปีที่แล้ว

      ​@@eugenetswong thanks, I had already tried that link 2 years ago, but now it seems to work...cheers!

  • @arduino5267
    @arduino5267 5 ปีที่แล้ว

    Great ...thanks

  • @ryanmichalski7420
    @ryanmichalski7420 5 ปีที่แล้ว

    Can 6502 rom and memory be used on the W65C02 (are they interchangeable), and also is the assembly language the same or simila

  • @madcommodore
    @madcommodore 6 ปีที่แล้ว

    It's a common misunderstanding that the C64 has hardware scrolling, it doesn't. What the C64 has is just hardware pixel offset achieved via a pair of 8 bit registers to control the vertical or horizontal pixel offset for the screen between zero and seven pixels :o)

  • @FindecanorNotGmail
    @FindecanorNotGmail 6 ปีที่แล้ว

    That is no _hack_ ! That is the classic method for scrolling on the C64. The C64's hardware scrolls only 8 pixels. Sega 8-bit and NES do the entire scrolling in hardware, wrapping around at the borders so programs need only replace blocks in a line (or two) just outside the border. Doing that horizontally is _almost_ possible on the C64 with a hack though: th-cam.com/video/ZsRRCnque2E/w-d-xo.htmlm46s You would need to swap to a new buffer only every 320 pixels.

  • @litjellyfish
    @litjellyfish 6 ปีที่แล้ว

    I don’t understand why you need two play fields for this? There is nothing here that would require the need for two play fields if you are aiming for this simple single color graphics. Or are they just placeholders?

  • @GENcELL2014
    @GENcELL2014 7 ปีที่แล้ว

    I ran into something odd trying this experiment out(I'm using the second edition but that doesn't matter). For some reason the bistable 555 wasn't able to latch on stopping the displays. I made a bistable 555 timer on a separate breadboard and it worked fine, It's output turned on an led and stayed on. I made another bistable 555 timer below the first. When the first 555 is turned on it powers the led but when I turn the second 555 timer on it powers It's led but turns off the first timer. So at the moment a second astable or bistable timer will consistently turn off any bistable 555 in the circuit. They have only shared - and + busbars and Outputs go to leds. What is making this happen? Really confused... how can they effect each other without direct connections to input, reset or control pins?...

  • @vochitoken
    @vochitoken 7 ปีที่แล้ว

    Hey Chrsitopher, it works on both directions? Can you read TTL data?

    • @acicuecalo
      @acicuecalo 4 ปีที่แล้ว

      Yes, it is possible to use as input lines. POKE 56579,255 makes all 8 lines as outputs. POKE 56579,0 makes all lines as inputs. You can combine lines as you wish.

  • @seanpeck8748
    @seanpeck8748 7 ปีที่แล้ว

    Nice, but I don't seed the code at the link

    • @eugenetswong
      @eugenetswong 2 ปีที่แล้ว

      I don't know if saw the link, but at the bottom of the text there is a link to a zip file, which has files, which seem to have assembly source.

  • @alangoyan3140
    @alangoyan3140 8 ปีที่แล้ว

    Hi im new to digital electronics and i want to know how to program a eprom and how to wire this upp but cool project!

  • @halamkajohn
    @halamkajohn 8 ปีที่แล้ว

    try a dac0832 chip x 3 for red green blue pins on a monitor

  • @yakacm
    @yakacm 8 ปีที่แล้ว

    I'm trying to place your accent it sounds like Irish via England and the USA.

  • @slap_my_hand
    @slap_my_hand 8 ปีที่แล้ว

    I want to build a VERY basic 6502 PC, that can be programmed like the altair 8800. What do i need for that? Would the CPU and the RAM be enough?

  • @msgcheckout
    @msgcheckout 8 ปีที่แล้ว

    I am a bit confused, could you not have used a 555 timer just to flash an LED, would it not have saved you a lot of bother and trouble to used a Microprocessor and an Eprom and a 4Mhz clock oscillator to do this, and how you then have to write a software and assemble it and load it into eeprom to run that LED flashing loop, another byte that confused me is you said that you have wired the LED to one of the address lines, and also said you have not yet programmed any I/O lines, so how can you claim that the LED is flashing due to a software aspect, I thought any address bus is used for calling up locations in a memory cell or cells, and then you need other instructions to enable output and extract data stored in that location, and or write bits or bytes at that location, and only then you can truly demonstrate what you can then do with those bits and bytes to do a thing like flashing. i may be wrong and still a big fan of 555! ( Please feel no offence - one is not intended at you) PS, as I was typing above, my wife was also reading what i was typing, so she said to me " Don't be daft all your life, he is not trying to flash an LED, but demonstrating the ability of a microprocessor and software capabilities, I hope she is wrong or else I am in big big trouble, she has time and again warned me if I don't act my age, she will definitely divorce me, she thinks I am really daft! Hey that was a joke, but well done to demonstrate how to start acquiring skills in using a basic processor and writing software, for dafties like me. thanks, keep up the good work, but sadly i am still stuck with CMOS and %%% timers and would like to lay my hands at these sexy processors, my wife is a real bitch.

    • @yakacm
      @yakacm 8 ปีที่แล้ว

      +samdomding My wife has a habit of bringing me down with a thud too.

  • @halamkajohn
    @halamkajohn 8 ปีที่แล้ว

    learn the loops . store program lines with the enter key. dont be an isolate-- 1 individual. hook to a monitor. take billions from old bill gates. line up decimals.

  • @no9or9
    @no9or9 9 ปีที่แล้ว

    Very nice. Actually I can't recall A500 demo with such transparent vectors on moving background.

  • @realflow100
    @realflow100 9 ปีที่แล้ว

    wow...... thats really really deep... only way to communicate is an led lighting up and turning off.....

    • @msgcheckout
      @msgcheckout 8 ปีที่แล้ว

      +realflow100 Oh you must have been born in this century, I remember the Red indians using smoke signals to flash messages across. An LED does that for you today.