---
breaks: false
---
# 8-Bit Course References
- [Folder with Technical Documents](https://kingsx.cs.uni-saarland.de/index.php/s/x7sSNw5RoHQs2oa)
## Getting Up to Speed
1. Watch the videos [Ben Eater's](https://eater.net/8bit) build, especially:
1) [Intro](https://www.youtube.com/watch?v=AwUirxi9eBg&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=35)
2) [SR Latch](https://www.youtube.com/watch?v=KM0DdEaY5sY&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=6) ff.
3) [Bus architecture](https://www.youtube.com/watch?v=QzWW-CBugZo&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=9) and [tristate](https://www.youtube.com/watch?v=faAjse109Q8&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=10)
4) [ALU design](https://www.youtube.com/watch?v=mOVOS9AjgFs&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=15) ff.
5) [Control logic](https://www.youtube.com/watch?v=AwUirxi9eBg&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=35) ff.
6) [555 timer](https://www.youtube.com/watch?v=kRlSFm519Bo&list=PLowKtXNTBypGqImE405J2565dvjafglHU&index=2) ff.
2. Look into the book by [Wakerly](https://www.pearson.com/uk/educators/higher-education-educators/program/Wakerly-Digital-Design-Principles-and-Practices-4th-Edition/PGM761351.html) (older versions exist on the internet, a paper version is available in the lab.)
You don't have to read everything but it is a great reference.
1. Chapter 5 discusses the basic of combinational logic design and introduces several 7400 chips.
2. Chapter 7 discusses sequential logic design (every this with states, i.e. latches).
2. Chapter 3 gives foundations on electrical aspects of TTL and CMOS.
3. Appendix B for DC circuit basics, especially RC circuits.
3. Study existing builds.
4. Study existing ISAs.
# References
## 7400 series ICs and others
* [Wikipedia List](https://en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits) of most 74xx chips.
If the datasheet link does not go to a PDF directly, the chances that the part is no longer available is quite high.
Some may still be available on eBay.
* [Logic Levels](https://hackaday.com/wp-content/uploads/2018/07/logic-family-voltage-table.jpg) of the different families.
* Excellent [4-part Series](https://www.nutsvolts.com/magazine/article/understanding_digital_logic_ics_part_1) on 7400 chips.
Chapter 3 is particularly relevant.
* Excellent [article](https://www.righto.com/2017/03/inside-vintage-74181-alu-chip-how-it.html) on the 74181 ALU chip.
* [Am2901](http://www.bitsavers.org/pdf/amd/ED2900A_vol1_Jan85.pdf) ALU Chip
## Textbooks
* John Wakerly. [Digital Design Principles and Practice](https://www.pearson.com/uk/educators/higher-education-educators/program/Wakerly-Digital-Design-Principles-and-Practices-4th-Edition/PGM761351.html), 4th edition, 2006.
ChapterĀ 3 is an excellent and relevant introduction to digital circuits.
There is an [appendix](http://wakerly.org/DDPP/DDPP3_pdf/elecCkts.pdf) with a review on electrical circuits basics.
* Horowitz and Hill. [The Art of Electronics](https://en.wikipedia.org/wiki/The_Art_of_Electronics), 3rd Edition.
Comprehensive text book and reference on electronics in general.
Also has a chapter on digital logic and TTL chips (Chapter 10).
* Albert Malvino. Digital Computer Electronics, 3rd edition. The text book that Ben Eater used for his build.
* The [All About Circuits](https://www.allaboutcircuits.com/textbook/) text book on electronics.
## Documentation of existing CPUs
* Sharp SM83 (Gameboy)
- [Overview](https://gbdev.io/pandocs/CPU_Registers_and_Flags.html)
- [Instruction List](https://rgbds.gbdev.io/docs/v0.9.1/gbz80.7)
- [Opcode Table](https://gbdev.io/gb-opcodes/optables/)
- [sdcc](https://sdcc.sourceforge.net/) has a backend for it. Use `sdcc -msm83 -o x.s -S x.c` to get a text assembly file.
* Intel 8080/8085
- [Assembly Language Programming Manual](https://datasheetspdf.com/pdf-file/1328906/Intel/Intel8080/1) contains ISA description.
- [User Manual](http://www.bitsavers.org/components/intel/MCS80/MCS80_85_Users_Manual_Jan83.pdf) contains description of the interrupt mechanism.
- [ISA Overview](https://www.righto.com/2013/02/8085-instruction-set-octal-table.html) in octal.
- [StackOverflow post](https://stackoverflow.com/questions/2165914/how-do-interrupts-work-on-the-intel-8080) on how interrupts work on the 8080.
Note that the 8085 has a more siphisticated interrupt facility.
- Ken Shirriff's posts on the 8085
- [ALU](https://www.righto.com/2013/07/reverse-engineering-8085s-alu-and-its.html)
- [Register file](https://www.righto.com/2013/03/register-file-8085.html)
* Zilog Z80
- [User Manual](https://www.zilog.com/docs/z80/um0080.pdf) including ISA documentation.
- Ken Shirriff's series of [blog posts](https://www.righto.com/search/label/Z-80)'s on the Z80 µArch.
* WDC 6502
- [Official Documentation](https://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf) including ISA description.
- [Peripheral Interface Adapter (6521)](https://www.westerndesigncenter.com/wdc/documentation/w65c21.pdf) documentation.
Contains information about interrupt handling.
- [Video](https://www.youtube.com/watch?v=DlEa8kd7n3Q&list=PLowKtXNTBypFbtuVMUVXNR0z1mu7dp7eH&index=11) on interrupt handling
- In-depth [post](http://6502.org/tutorials/interrupts.html) on interrupts.
- [6510](https://atarihq.com/danb/files/64doc.txt)
* Motorola 6800
- [ISA](http://www.8bit-era.cz/6800.html)
* Motorola 6809
- [ISA](https://ia802906.us.archive.org/18/items/bitsavers_motorola68_13419254/M6809PM.rev0_May83.pdf)
- [Instruction Format](https://techheap.packetizer.com/processors/6809/6809.html)
* STM8
- [ISA](https://www.st.com/resource/en/programming_manual/pm0044-stm8-cpu-programming-manual-stmicroelectronics.pdf)
* Philipp Krause's f8
- [Video](https://peertube.f-si.org/videos/watch/6d3c880d-6f8f-47e0-b38b-180fe56eb9e4), [Slides](https://wiki.f-si.org/images/1/1c/F8.pdf)
- [Branch of sdcc](https://sourceforge.net/p/sdcc/code/HEAD/tree/branches/f8/) has a Verilog simulator.
## Video / Graphics
* [Ben Eater's Videos on a VGA card](https://eater.net/vga)
* [VGA Timings](http://tinyvga.com/vga-timing)
* [CGA](https://www.seasip.info/VintagePC/cga.html), the IBM PC original color graphics card
* [TMS9918](https://en.wikipedia.org/wiki/TMS9918)
- [Programmer's Guide](https://www.msxblog.es/wp-content/uploads/2009/09/vdpprogrammersguide.pdf)
- [Technical Reference](http://www.bitsavers.org/components/ti/TMS9900/TMS9918A_TMS9928A_TMS9929A_Video_Display_Processors_Data_Manual_Nov82.pdf)
- [Overview Video](https://www.youtube.com/watch?v=smgGB_CsXns)
* [VIC-II](https://en.wikipedia.org/wiki/MOS_Technology_VIC-II)
- [Reference](http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt)
- [Tutorial](https://www.retro-programming.de/programming/nachschlagewerk/vic-ii/)
* [Motorola 6847](https://people.ece.cornell.edu/land/courses/ece4760/ideas/mc6847.pdf)
* [HD44780 LCD Controller](https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller), [datasheet](https://cdn.sparkfun.com/assets/9/5/f/7/b/HD44780.pdf)
## Other Peripherals / Hardware
- [IBM XT Technical Reference](https://archive.org/details/IBMPCXTTechnicalReference1502237/page/n3/mode/2up)
- Interrupts
- [Intel 8259](https://pdos.csail.mit.edu/6.828/2010/readings/hardware/8259A.pdf) programmable interrupt controller (standard PIC for 8080 systems and the original IBM PC)
- [Daisy Chaining](http://www.edwardbosworth.com/My5155_Slides/Chapter12/InterruptHandling.htm)
- [PS/2 Interface](https://www.burtonsys.com/ps2_chapweske.htm)
- 8250 Serial Controller
- [Datasheet](https://sys.cs.fau.de/extern/lehre/ws22/bs/uebung/aufgabe3/uart-8250a.pdf) with sample circuits
- [Example project](https://github.com/bazsimarkus/Simple-8250-UART-System-with-Arduino) for hooking up a 8250 with an Arduino
## Electronics
* Various guides on debouncing: [1](http://www.ganssle.com/debouncing-pt2.htm), [2](https://www.we-online.com/web/en/index.php/download/media/07_electronic_components/download_center_1/application_notes_berichte/sn015__contact_circuit_debounce_for_switches/SN015a_EN.pdf), [3](https://www.eejournal.com/article/ultimate-guide-to-switch-debounce-part-3/) and an [EEVBlog video](https://www.youtube.com/watch?v=Nj-Q8FQxHhU).
* lordmonoxide's [lessons learned](https://www.reddit.com/r/beneater/comments/dskbug/what_i_have_learned_a_master_list_of_what_to_do/) from building an 8-bit CPU on breadboards.
* [Good advice to draw schematics](https://electronics.stackexchange.com/questions/28251/rules-and-guidelines-for-drawing-good-schematics).
* [PCB Design Tutorial](https://www.mikrocontroller.net/attachment/26687/PCBDesignTutorialRevA.pdf).
* [EEVblog](https://www.youtube.com/c/EevblogDave) has excellent tutorials on electronics, especially fundamentals videos on [DC](https://www.youtube.com/watch?v=xSRe_4TQbuo&list=PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK) and [AC](https://www.youtube.com/watch?v=rrPtvYYJ2-g). One particular [video](https://www.youtube.com/watch?v=Ht48vv0rQYk&t=277s) covers rise and fall times of TTL signals.
* Indispensable [KiCAD Shortcuts](https://shortcutworld.com/KiCAD/mac/KiCAD_Shortcuts).
## Tools
* Maybe [Logisim Evolution](https://github.com/logisim-evolution/logisim-evolution) is helpful to simulate parts of your machine.
* [customasm](https://github.com/hlorenzi/customasm) is a customizable assembler. Maybe useful for your own ISA.
* [minipro](https://gitlab.com/DavidGriffith/minipro) can flash EEPROMs/Flash memory. We have SST39SF010 flash in the lab. You can write this with
```
$ minipro -s -p SST39SF010 -w <filename>
```
For EEPROMS (AT28C256) use
```
$ minipro -u -s -p AT28C256 -w <filename>
```
* You can use [Knoepfchen](https://github.com/shack/knoepfchen) for get some buttons/switches/clock to your breadboard easily.
* [Convert](https://github.com/shack/kicad_to_verilog) your KiCad schematics to Verilog
## Other Builds
* [Ben Eater](https://eater.net/8bit)'s build and [video playlist](https://www.youtube.com/watch?v=HyznrdDSSGM&list=PLowKtXNTBypGqImE405J2565dvjafglHU) (based on the textbook by Malvino
* [derulf1](https://github.com/DerULF1/8bit-computer)'s build.
- 64kB RAM, interrupt controller, real-time clock, LCD display, SD card reader.
- The [video series](https://www.youtube.com/watch?v=yACH8p4KfyQ&list=PL5-Ar_CvItgaP27eT_C7MnCiubkyaEqF0) is very detailed and goes in-depth on many aspects.
Particularly helpful and interesting is the [video](https://www.youtube.com/watch?v=tdtGz5nVM9A&list=PL5-Ar_CvItgaP27eT_C7MnCiubkyaEqF0&index=2) on power distribution and the clock.
* [rolf-electronics](https://github.com/rolf-electronics/The-8-bit-SAP-3). Has extensive documentation that covers electronics problems.
* [scamp-cpu](https://github.com/jes/scamp-cpu). Comes with a browser-based simulator.
* [YACC1](https://cottageworker.com/) has a cool way of modularizing the components onto PCBs and connecting them with a bus.
* [nqsap](https://tomnisbet.github.io/nqsap/) by Tom Nisbet features extensive documentation, many valuable tips, and helpful links to other resources.
* The fabulous [Gigatron](https://gigatron.io/) focuses on few chips and has a primitive ISA. It is programmed by a higher-level assembler whose programs run on interpreter. Has a cool [ALU design](http://6502.org/users/dieter/a1/a1_4.htm). Features a small VGA graphics card.
* [Homecomputer Webring](https://www.homebrewcpuring.org/) with many more builds.
* [Michael Kamprath](https://www.youtube.com/watch?v=-E6FhDYj1dU&list=PLC4jDTViU38EQzCYaRsoOLeGLLW5cMN4A)
# Chip Inventory
## 74xx
| Num | Description | Qty |
| --- | -------------------------------------- | --- |
| [00](https://www.ti.com/lit/ds/symlink/sn74hc00.pdf) | quad 2-input NAND | 16
| [02](https://www.ti.com/lit/ds/symlink/sn74hc02.pdf) | quad 2-input NOR | 8
| [04](https://www.ti.com/lit/ds/symlink/sn74hc04.pdf) | hex inverter | 12
| [08](https://www.ti.com/lit/ds/symlink/sn74hc08.pdf) | quad 2-input AND | 32
| [10](https://www.ti.com/lit/ds/symlink/sn74hc10.pdf) | triple 3-input NAND | 8
| [14](https://www.ti.com/lit/ds/symlink/sn74hc14.pdf) | hex inverter Schmitt trigger | 16
| [20](https://www.ti.com/lit/ds/symlink/sn74hc20.pdf) | dual 4-input NAND | 8
| [30](https://www.ti.com/lit/ds/symlink/cd74hc30.pdf) | single 8-input NAND | 20
| [32](https://www.ti.com/lit/ds/symlink/sn74hc32.pdf) | quad 2-input OR | 16
| [74](https://www.ti.com/lit/ds/symlink/sn74hc74.pdf) | dual D positive edge-triggered flip-flop, async preset and clear | 16
| [86](https://www.ti.com/lit/ds/symlink/sn74hc86.pdf) | quad 2-input XOR | 16
| [138](https://www.ti.com/lit/ds/symlink/sn74hc138.pdf) | 3-to-8 line decoder inverting outputs | 8
| [139](https://www.ti.com/lit/ds/symlink/sn74hc139.pdf) | dual 2-to-4 decoder inverting outputs | 8
| [148](https://www.ti.com/lit/ds/symlink/sn74hc148.pdf) | 8-line to 3-line priority encoder | 8
| [151](https://www.ti.com/lit/ds/symlink/sn74hc151.pdf) | 8-line to 1-line MUX non-inverting outputs | 12
| [153](https://www.ti.com/lit/ds/symlink/sn74hc153.pdf) | dual 4-line to 1-line MUX non-inverting outputs | 16
| [157](https://www.ti.com/lit/ds/symlink/sn74hc157.pdf) | quad 2-line to 1-line MUX non-inverting outputs | 16
| [158](https://www.ti.com/lit/ds/symlink/sn74hc158.pdf) | quad 2-line to 1-line MUX inverting outputs | 8
| [161](https://www.ti.com/lit/ds/symlink/sn74hc161.pdf) | sync presettable 4-bit binary counter, async clear | 24
| [166](https://www.ti.com/lit/ds/symlink/sn74hc166.pdf) | parallel-load 8-bit shift register | 8
| [173](https://www.ti.com/lit/ds/symlink/cd74hc173.pdf) | quad D flip-flop, async clear, three-state | 24
| [181](https://www.ti.com/lit/gpn/sn54ls181) | [ALU](https://en.m.wikipedia.org/wiki/74181) | 3
| [182](https://web.archive.org/web/20160418004301/http://www.ti.com/lit/ds/symlink/sn74s182.pdf) | lookahead carry generator | 4
| [191](https://www.ti.com/lit/ds/symlink/sn74hc191.pdf) | sync presettable up/down 4-bit counter | 16
| [240](https://www.ti.com/lit/ds/symlink/sn74hc240.pdf) | octal buffer, inverting outputs | 24
| [245](https://www.ti.com/lit/ds/symlink/sn74hc245.pdf) | octal bus transceiver, non-inverting outputs | 32
| [273](https://www.ti.com/lit/ds/symlink/sn74hc273.pdf) | Octal D-Type Flip-Flops With async Clear | 8
| [373](https://www.ti.com/lit/ds/symlink/cd74hc373.pdf) | octal transparent latch | 20 |
| [377](https://www.ti.com/lit/ds/symlink/sn74hc377.pdf) | 8-bit register, clock enable | 16
| [534](https://www.ti.com/lit/ds/symlink/cd74hc534.pdf) | octal D-type edge-triggered flip-flop, inverting outputs | 16
| [574](https://www.ti.com/lit/ds/symlink/sn74hc574.pdf) | octal D-type edge-triggered flip-flop | 16
| [595](https://www.ti.com/lit/ds/symlink/sn74hc595.pdf) | 8-bit shift registers, serial-in, parallel-out, output latches, output enable | 24
| [670](https://www.ti.com/lit/ds/symlink/cd74hc670.pdf) | 4x 4-bit register file, three-state | 16
| [688](https://www.ti.com/lit/ds/symlink/sn74hc688.pdf) | 8bit comparator | 16
| [4002](https://www.ti.com/lit/ds/symlink/cd74hc4002.pdf) | dual 4-input NOR gate | 16
| [4078](https://datasheet4u.com/pdf-down/7/4/H/74HC4078_STMicroelectronics.pdf) | single 8-input OR/NOR gate | 2
## Other
| Num | Description | Qty |
| --- | -------------------------------------- | --- |
| [TLC555](https://www.ti.com/lit/ds/symlink/tlc555.pdf) | [555](https://en.m.wikipedia.org/wiki/555_timer_IC) timer IC | 4
| [SST39SF010](https://ww1.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/SST39SF010A-SST39SF020A-SST39SF040-Data-Sheet-DS20005022.pdf) | 1 MBit Multi-Purpose Flash | 7
| [AS6C1008](https://eu.mouser.com/datasheet/2/12/AS6C1008_Mar_2023V1_2-3386077.pdf) | 128k x 8 bit low power CMOS SRAM (55ns) | 4
| [AS6C62256](https://eu.mouser.com/datasheet/2/12/AS6C62256_23_March_2016_rev1_2-1288423.pdf) | 32k x 8 bit low power CMOS SRAM (55ns) | 8
| [AS7C256C](https://www.alliancememory.com/wp-content/uploads/pdf/sram/fa/AllianceMemory_AS7C256C-15PCN_Datasheet_Rev1.0_June2024.pdf) | 32k * x bit low power CMOS SRAM (15ns) | 8 |