I have a "syncing" feeling it's time for another TashProject...
Introducing... TashSync!
Elevator Pitch
It's a video sync signal conversion/generation firmware for Macs, targeting the PIC12F1501 (8 pins, 77¢ in quantity) microcontroller. Primarily, it takes a "composite" video sync signal and processes it into separate horizontal and vertical sync signals, broadening the range of VGA monitors that can be used with certain Macs (such as the IIsi and IIci) and Mac video adapters (such as the Toby card).
Project Status
90% complete, all that's left is the other 90%. The firmware is most of the way complete but there's a great deal of testing still to be done.
Caveats
It does not modify video signals at all, only sync signals. For something that re-scales video to make it palatable to a VGA monitor, you will need an FPGA or Pi Pico or something with a lot more oomph than a PIC.
Why Do This?
I did this because I am always attracted by projects that squeeze a high degree of functionality out of a little PIC, and with eight pins, 64 bytes of SRAM, and 1024 words of program memory, the 8-pin PIC12F1501 definitely qualifies as a little PIC. I wanted to see if this was possible, I wanted to find out what manner of tricks I had to employ to make it work, I wanted a fun project. By those measures, I've already been highly successful!
I know the BMOW Sync-inator exists and it's a great product, I have one myself. If this project's premise interests you but you want something you can buy right now, give the Sync-inator a look. This project shouldn't be all that interesting to you unless (1) you're an open-source fan or (2) you're someone who always has to do things the hard way - sometimes known as a DIYer. =)
Technical Details
The PIC12F1501 has two CLCs (configurable logic cells), without which this project would certainly have been impossible. They are employed in various contortions, primarily as D flip-flops and transparent latches, to take edges on a composite sync signal and translate them into corresponding edges on vertical and horizontal sync signals. Where an edge on composite sync does not directly correspond to an edge on the output vertical or horizontal sync signal, other means (timers, sometimes just code loops) are used to produce the desired signal. These can only be so accurate given that the PIC is running off of an internal RC oscillator rather than a crystal, but they are as precise as they can be in the circumstances.
One free pin remains after the sync inputs and outputs are accounted for, and I've used this to make a simple bitbanged UART which spits out details of how it's processing the signal. Most notably, it emits a simple, low-resolution signal trace of the vertical sync area of the video signal - besides using this internally to determine how to generate the separate horizontal and vertical sync signals, this can shed a lot of light on the particulars of a given video adapter's output signal.
Code
github.com
Introducing... TashSync!
Elevator Pitch
It's a video sync signal conversion/generation firmware for Macs, targeting the PIC12F1501 (8 pins, 77¢ in quantity) microcontroller. Primarily, it takes a "composite" video sync signal and processes it into separate horizontal and vertical sync signals, broadening the range of VGA monitors that can be used with certain Macs (such as the IIsi and IIci) and Mac video adapters (such as the Toby card).
Project Status
90% complete, all that's left is the other 90%. The firmware is most of the way complete but there's a great deal of testing still to be done.
Caveats
It does not modify video signals at all, only sync signals. For something that re-scales video to make it palatable to a VGA monitor, you will need an FPGA or Pi Pico or something with a lot more oomph than a PIC.
Why Do This?
I did this because I am always attracted by projects that squeeze a high degree of functionality out of a little PIC, and with eight pins, 64 bytes of SRAM, and 1024 words of program memory, the 8-pin PIC12F1501 definitely qualifies as a little PIC. I wanted to see if this was possible, I wanted to find out what manner of tricks I had to employ to make it work, I wanted a fun project. By those measures, I've already been highly successful!
I know the BMOW Sync-inator exists and it's a great product, I have one myself. If this project's premise interests you but you want something you can buy right now, give the Sync-inator a look. This project shouldn't be all that interesting to you unless (1) you're an open-source fan or (2) you're someone who always has to do things the hard way - sometimes known as a DIYer. =)
Technical Details
The PIC12F1501 has two CLCs (configurable logic cells), without which this project would certainly have been impossible. They are employed in various contortions, primarily as D flip-flops and transparent latches, to take edges on a composite sync signal and translate them into corresponding edges on vertical and horizontal sync signals. Where an edge on composite sync does not directly correspond to an edge on the output vertical or horizontal sync signal, other means (timers, sometimes just code loops) are used to produce the desired signal. These can only be so accurate given that the PIC is running off of an internal RC oscillator rather than a crystal, but they are as precise as they can be in the circumstances.
One free pin remains after the sync inputs and outputs are accounted for, and I've used this to make a simple bitbanged UART which spits out details of how it's processing the signal. Most notably, it emits a simple, low-resolution signal trace of the vertical sync area of the video signal - besides using this internally to determine how to generate the separate horizontal and vertical sync signals, this can shed a lot of light on the particulars of a given video adapter's output signal.
Code
GitHub - lampmerchant/tashsync: Macintosh video sync signal converter/generator for PIC12F1501.
Macintosh video sync signal converter/generator for PIC12F1501. - lampmerchant/tashsync



