# Quazar OLED interface

 [![quazar_oled.jpg](https://wiki.hexadust.net/uploads/images/gallery/2024-11/scaled-1680-/sskD0kfwZ5sEBVkC-quazar-oled.jpg)](https://wiki.hexadust.net/uploads/images/gallery/2024-11/sskD0kfwZ5sEBVkC-quazar-oled.jpg)

Official site: [https://2014.samcoupe.com/#graphicoled](https://2014.samcoupe.com/#graphicoled)

Based on SSD1305 OLED display (128x32 version?): [SSD1305.pdf](https://wiki.hexadust.net/attachments/40)

Uses `0x50` I/O port by default (fully configurable). I/O decoder uses [74HCT02](https://wiki.hexadust.net/books/electronics/page/chips#bkmrk-sn74hct02) NOR gates and [74GCT688](https://wiki.hexadust.net/books/electronics/page/chips#bkmrk-cd74hct688) 8-bit comparator.

The SSD1305 chip is placed behind two [74HCT573](https://wiki.hexadust.net/books/electronics/page/chips#bkmrk-snx4hct573 "74HCT573") 8-bit latches so it can be timed slower than Z80 bus:

- One latch takes 8 bit data bus and forwards to the OLED chip.
- The other latch takes 3 control bits from higher address buss byte as output from B register.
- Latches take input on I/O bus write when base address matches. 
    - Compactor is enabled when RW and IORQ are active (low).
    - If address matches the I/O address select the latches will copy and store data from data bus and first 3-bits from high address byte.
    - The latched data is presented to OLED until the next I/O write to the card occurs.

## Software

I have implemented a program to display images using instructions form provided manual:

- [rc2014-oled](https://gitea.hexadust.net/hxd/rc2014-oled) - `oled` program for CP/M and PNG image converter.