top of page

W65C265S Single-Board Computer

  • Writer: rehsd
    rehsd
  • Nov 29, 2025
  • 6 min read

Updated: 2 days ago

It has been a few years since I have worked with the 6502 and 65816 processors. Most recently, my focus has been learning about FPGAs and developing my own FPGA PCB. Along the way, I designed some retro 286 and 386 systems, dabbled with a variety of microcontrollers, and learned more about PCB design. I thought it might be fun to build a single-board computer (SBC) based on the W65C265S microcontroller from The Western Design Center (WDC).


This post will be updated as I work through the design and build. I will be learning as I go through this, and I expect to learn regularly from my mistakes. :) As with all of my projects, I will also learn from feedback and suggestions you have. Also, I expect to iterate through designs, incrementally improving the SBC.


Fortunately, WDC has a reference design for a W65C265S SBC. This, along with previous work I have done on my 6502 and 65816 systems, should prove to be helpful. (Looking at the datasheet for the W65C265S, I have much to learn about this microcontroller.) That then leads me to think about my general requirements for this project.


General Requirements / Design Targets

As I work through research and design activities in the coming months, the following list will evolve.


  1. W65C265S8QG-8 (QFP 100).

  2. Four-layer PCB, designed with EasyEDA Pro, and manufactured by JLCPCB.

  3. Selectable clock, including single-step, full-speed 8 MHz, and a few options in between.

  4. Flash ROM (onboard programmable?).

  5. Static RAM.

  6. Power and reset switches, debug LEDs.

  7. Connection for offboard custom debugger.

  8. Connection(s) for expansion PCBs, using XBus265 or an extension of it.

  9. Leverage the WDCTools suite (assember, linker).

  10. USB serial terminal and/or RS232 terminal.

  11. 1602 LCD, or something similar.

  12. Keyboard support (PS/2 mode).

  13. Simple audio output (2-tones).

  14. Stretch goals:

    1. USB programming interface.

    2. Simple VGA output.

    3. SPI support for an OLED display.

    4. Programmable sound generator IC, such as the YM2149.


What am I missing? Suggestions?


Next steps:

  1. High-level block diagram.

  2. Datasheet review.

  3. Schematic work.

  4. PCB work.

  5. Iterate






[December 4, 2025] PCBs and parts have been ordered. I went with the slow shipping option from JLCPCB. The total PCB cost for five PCBs, plus shipping, was under $20 USD. The rest of the parts (enough to build a few boards) was about $200. Tariffs... ouch! It will probably be a month before I have everything in hand. In the meantime, I can work with the W65C265SXB board that should arrive yet this week.



I have basic interrupts working. In the following video, I walk through switching to an external flash ROM, booting directly to that ROM on reset, and implementing a negative edge interrupt tied to a momentary button. One thing I have not been able to figure out is shadow interrupt vectors. I have posted a link to the code file I am working on under Project Files below.



In the following video, I update my build to enable external SRAM, change the clock to the faster FCLK (3.6864 MHz), and implement basic PS/2 keyboard support. The associated assembly code is under Project Files, dated December 16.



I'm running out of I/O pins, so I'm expanding with a couple of WDC Versatile Interface Adapters (VIAs) -- W65C22S.




I thought it would be interesting to connect an old VGA circuit I designed a few years ago. So far, the hardware portion seems to work fine, but I have a lot of assembly coding to do!



I have built and fired up the first version of my 65265 board. I'm so happy to have a board with a ZIF socket. :)




To help with code debugging, I have added USB serial support



I have stepped up my clock from 8 MHz t o10 Mhz, added some graphics routines, and done some needed code clean-up.



I have added support for a TFT LCD -- specifically, a 3.5 inch color TFT LCD display, supporting 480x320, 16 bits per pixel color, using an 8-bit interface with an ILI9486 interface IC. The code used in this video can be found here.


Thinking about the next iteration of a PCB...


I have a first pass of a completed schematic and routed PCB complete. The schematic used in the video below is available here.



[January 6, 2026] While the PCB above is ready to be ordered, I think I am going to work on two things prior to ordering.


  1. Validate VGA Circuit - I have a small PCB enroute to validate the VGA circuit. My primary concern is the GAL logic and ensuring I have the right inputs and outputs on the GALs. It will be a couple of weeks before I have these PCBs.

  2. Experiment with PIB - As previously mentioned, I do not have high confidence in the schematic for the inter-MPU connectivity (PIB). I plan to update my current build to move the keyboard and 1602 LCD to a VIA, freeing up PIB pins. I will then connect my PCB to the SXB PCB and see if I can get PIB working. If I can't ultimately get PIB working, the dual-MCU PCB will be a bit pointless. 🙂 I can do this work in the coming weeks while I wait for the VGA PCB.


I may also update the PCB layout based on feedback. On one hand, I'm curious to see how the current layout will work. On the other hand, I can further optimize component count and trace lengths, and shift to a more square PCB (i.e., not so wide, possibly using an ATX form factor). This might require me going to an eight-layer PCB.



Preparing for PIB Experimenting

I'm preparing to do some testing of PIB with my PCB and an SXB. In preparation for this, I have moved my PS/2 keyboard and 1602 LCD off of '265 ports over to an external VIA. I posted the updated code link under Project Code, including the related schematic (January 7, 2026).


As the PIB implementation may be an animal of its own, I am tracking more details at W65C265S Parallel Interface Bus (PIB).


More to come!


Backlog

Some things that come to mind for future expansion:

  • Serial peripheral interface (SPI) support

  • External programmable sound generator (PSG)

  • Tone generation

  • Timer implementation

  • Joystick

  • Dual-265 with PIB



Project Files

I will post project files here, starting with the current schematic. As I get to coding, I will add a project to my GitHub and link here.





Project Code:




Resources


Additional Info



Unresolved

  • Shadow Vectors. I have been unable to get custom interrupt to work without an external flash ROM. I would like to test shadow vectors when using the '265 without an external ROM, where programs are uploaded to RAM. This would be applicable to using the SXB without an external ROM.

  • Parallel Interface Bus. Documentation and supporting resources are lacking for me to have confidence in a PIB solution.


Interesting Tidbits

Below are miscellaneous things that are catching my attention as I work on this project.


  • The W65C265S has the full 24-bit address and data bus available as opposed to the W65C816S having the high order 16-23 address pin multiplexed with the data bus.

  • Page 63 of the W65C265S datasheet (dated March 18, 2024) appears to have a typo in the schematic. The upper crystal is correctly labeled XTAL1, but the lower crystal is incorrectly labeled XTAL1. The lower crystal should be XTAL2.

  • Page 5 of the 65xxcelr8r Board Datasheet (dated October 31, 2014) shows the USB connector as J5, but the PCB silkscreen and schematic show it as J6.

  • Page 24 of the W65C265S datasheet lists TIER, but the page is for EIER. The page also lists 0xDF45 for the EIER address while page 14, the Monitor ROM code, and sample projects list 0xDF47 for EIER.

  • Page 25 of the W65C265S datasheet lists 0xDF47 for the address of EIFR while page 14, the Monitor ROM code, and sample projects list 0xDF45 for EIFR.

  • Page 27 of the W65C265S datasheet lists 0xDF47 for the address of UIFR while page 14, the Monitor ROM code, and sample projects list 0xDF48 for UIFR.





 
 
 

2 Comments


Donald D
Donald D
6 days ago

I’m unclear what you mean by shadow vectors. I thought you figured out how to turn on external ram within initial routine.

Like
rehsd
rehsd
3 days ago
Replying to

I do have external ROM and RAM working. However, I would like the option to run external RAM and no external ROM. This would be similar to the 'getting started' setup from WDC, where you upload a program to RAM (not running it from ROM). A major limitation with this though is running your own custom interrupt vectors. The shadow vectors should allow me to point to an alternate interrupt service routine for my custom interrupt handling. The sample code from WDC shows shadow vectors, but for the life of me, I can get them to work. My resolution was to place my vectors in my external ROM, replacing the vectors of the built-in ROM. This works fine, but it…

Like
bottom of page