├── .gitignore ├── LICENSE.md ├── README.md ├── hardware ├── 6502_computer_in_case.jpg ├── 6502_computer_pcb_diagram.svg ├── 6502_computer_schematic.pdf ├── README.md ├── case │ ├── base.stl │ └── lid.stl ├── gerber │ └── 6502-computer-rev-1.0 │ │ ├── 6502-computer-B_Cu.gbl │ │ ├── 6502-computer-B_Mask.gbs │ │ ├── 6502-computer-B_Paste.gbp │ │ ├── 6502-computer-B_SilkS.gbo │ │ ├── 6502-computer-Edge_Cuts.gm1 │ │ ├── 6502-computer-F_Cu.gtl │ │ ├── 6502-computer-F_Mask.gts │ │ ├── 6502-computer-F_Paste.gtp │ │ ├── 6502-computer-F_SilkS.gto │ │ ├── 6502-computer-NPTH-drl_map.gbr │ │ ├── 6502-computer-NPTH.drl │ │ ├── 6502-computer-PTH-drl_map.gbr │ │ ├── 6502-computer-PTH.drl │ │ └── 6502-computer-job.gbrjob └── kicad │ ├── .gitignore │ ├── 6502-computer-cache.lib │ ├── 6502-computer.kicad_pcb │ ├── 6502-computer.pro │ ├── 6502-computer.sch │ ├── 65xx.dcm │ ├── 65xx.lib │ ├── fp-lib-table │ ├── project.dcm │ ├── project.lib │ ├── project.pretty │ └── SW_THT_DPDT.kicad_mod │ └── sym-lib-table ├── licenses └── LGPL.txt └── rom ├── Makefile ├── basic ├── Makefile ├── basic.cfg ├── basic.s └── min_mon.s ├── boot ├── Makefile ├── boot.cfg ├── boot.s ├── generated │ └── generate_rom_defs.py └── hardware │ ├── acia.s │ ├── speaker.s │ └── via.s └── programs ├── Makefile ├── nxp_sc16c752b_test.s ├── program.cfg ├── sd_test.s └── test.s /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated files 2 | *.o 3 | *.bin 4 | *.dbg 5 | rom/boot/generated/rom_defs.s 6 | 7 | # Project files 8 | .idea 9 | 10 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | The works in this repository are under multiple licenses. See `README.md` for details. 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 6502 computer 2 | 3 | This repository contains the hardware and software for my home-built 65C02-based computer. At its heart, this computer is a 1980's design, and is approximately as powerful as the Apple II. It is powered over USB, and operated via a serial connection. 4 | 5 | It features an SD card interface, simple audio interface, and two user-selectable ROMs. One ROM contains a port of EhBASIC, which is the only proprietary component in this repository. The other ROM contains a shell, written from scratch to be free and open source, which can be used to load machine-language programs from a modern PC. 6 | 7 | Take a look at the [hardware/](https://github.com/mike42/6502-computer/tree/main/hardware) directory for how it's made, or [rom/](https://github.com/mike42/6502-computer/tree/main/rom) for the firmware source code. 8 | 9 | ### Basic specs 10 | 11 | - 1.8432 MHz 65C02 processor 12 | - 32 KiB RAM 13 | - 32 KiB ROM in two 16 KiB banks 14 | - 65C22 VIA (general purpose I/O) chip 15 | - 65C51N ACIA (UART) interface 16 | - Custom PCB and 3D printed case 17 | 18 | ### Image of completed build 19 | 20 | Completed project 21 | 22 | ## Blog series 23 | 24 | This project started out on breadboards, and I have been blogging about it as I have progressed the hardware, software, and my electronics knowlege. Posts I've written about this project include: 25 | 26 | - [IntelliJ plugin for 6502 assembly language](https://mike42.me/blog/2021-05-intellij-plugin-for-6502-assembly-language) 27 | - [Building a 6502 computer](https://mike42.me/blog/2021-07-building-a-6502-computer) 28 | - [Adding a serial port to my 6502 computer](https://mike42.me/blog/2021-07-adding-a-serial-port-to-my-6502-computer) 29 | - [Upgrades and improvements to my 6502 computer](https://mike42.me/blog/2021-08-upgrades-and-improvements-to-my-6502-computer) 30 | - [Porting BASIC to my 6502 computer](https://mike42.me/blog/2021-09-porting-basic-to-my-6502-computer) 31 | - [6502 computer – from breadboard to PCB](https://mike42.me/blog/2021-09-6502-computer-from-breadboard-to-pcb) 32 | - [Re-creating the world’s worst sound card](https://mike42.me/blog/2021-10-re-creating-the-worlds-worst-sound-card) 33 | - [Designing a 3D printed enclosure for my KiCad project in Blender](https://mike42.me/blog/2021-11-designing-a-3d-printed-enclosure-for-my-kicad-project-in-blender) 34 | - [Implementing the XMODEM protocol for file transfer](https://mike42.me/blog/2021-12-implementing-the-xmodem-protocol-for-file-transfer) 35 | - [Adding an SD card reader to my 6502 computer](https://mike42.me/blog/2021-12-adding-an-sd-card-reader-to-my-6502-computer) 36 | - [Assembling my 6502 computer](https://mike42.me/blog/2012-12-assembling-my-6502-computer) 37 | - [Rendering my 6502 computer project in Blender](https://mike42.me/blog/2022-01-rendering-my-6502-computer-project-in-blender) 38 | 39 | ## Licenses & acknowledgement 40 | 41 | With the exception of the files noted below, this work is © 2021 Michael Billington, and is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/). 42 | 43 | The design is an extension of [Ben Eater's 6502 computer tutorial](https://eater.net/6502), which is itself based on the work of the [6502.org](http://www.6502.org/) community. 44 | 45 | ### 6502 KiCad Library 46 | 47 | The files `hardware/kicad/65xx.dcm` and `hardware/kicad/65xx.lib` are modified versions of the [6502 KiCad Library](https://github.com/Alarm-Siren/6502-kicad-library). Copyright 2018, Nicholas Parks Young. All Rights Reserved. The 6502 KiCad Library library is licensed under the GNU LGPL v2.1, which can be found in file `licenses/LGPL.txt`. 48 | 49 | ### EhBASIC 50 | 51 | The files in `rom/basic/` are derived from EhBASIC, developed by Lee Davidson. The EhBASIC license allows for non-commerical use only. The most recent release and manual is hosted [here](https://github.com/Klaus2m5/6502_EhBASIC_V2.22), and a mirror of Lee's website can be found [here](http://retro.hansotten.nl/6502-sbc/lee-davison-web-site/). 52 | 53 | > EhBASIC is free but not copyright free. For non commercial use there is only one 54 | > restriction, any derivative work should include, in any binary image distributed, 55 | > the string "Derived from EhBASIC" and in any distribution that includes human 56 | > readable files a file that includes the above string in a human readable form 57 | > e.g. not as a comment in an HTML file. 58 | 59 | -------------------------------------------------------------------------------- /hardware/6502_computer_in_case.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mike42/6502-computer/fd9463e5136a441a2788d37b61779e0015d4649c/hardware/6502_computer_in_case.jpg -------------------------------------------------------------------------------- /hardware/6502_computer_schematic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mike42/6502-computer/fd9463e5136a441a2788d37b61779e0015d4649c/hardware/6502_computer_schematic.pdf -------------------------------------------------------------------------------- /hardware/README.md: -------------------------------------------------------------------------------- 1 | # 6502 computer hardware 2 | 3 | This directory contains information about the hardware side of this project. 4 | 5 | - [kicad/](https://github.com/mike42/6502-computer/tree/main/hardware/kicad) - CAD source files for schematic and PCB 6 | - [gerber/](https://github.com/mike42/6502-computer/tree/main/hardware/gerber/) - PCB manufacturing files 7 | - [6502_computer_schematic.pdf](https://github.com/mike42/6502-computer/tree/main/hardware/6502_computer_schematic.pdf) - Human-readable schematic 8 | - [case/](https://github.com/mike42/6502-computer/tree/main/hardware/case/) - STL files for 3D printed computer case. 9 | - Parts list (below) 10 | 11 | ## Parts list for assembling PCB 12 | 13 | This is the full list of parts which are required to fully populate the PCB for this build. I've stuck with the parts which I actually used, though many can be substituted if you check the data sheets. 14 | 15 | ![PCB diagram](https://raw.githubusercontent.com/mike42/6502-computer/main/hardware/6502_computer_pcb_diagram.svg) 16 | 17 | ### IC’s and sockets 18 | 19 | Notes on IC's and sockets 20 | 21 | - If you see a designator mentioned twice, one is the IC, the other is the socket. 22 | - All sockets are optional except U9. 23 | 24 | | Qty. | Description | Installed at | Product ref. | 25 | | ---- | ------------------------------ | ------------ | ------------------------------------------------------------------------------------ | 26 | | 1 | 65C02S CPU | U1 | [WDC W65C02S6TPG-14](https://au.mouser.com/ProductDetail/955-W65C02S6TPG-14) | 27 | | 1 | 65C22S VIA | U3 | [WDC W65C22S6TPG-14](https://au.mouser.com/ProductDetail/955-W65C22S6TPG-14) | 28 | | 2 | DIP-40 socket | U1, U3 | [Mill-Max 110-99-640-41-001000](https://au.mouser.com/ProductDetail/575-199640) | 29 | | 1 | 65C51N ACIA | U6 | [WDC W65C51N6TPG-14](https://au.mouser.com/ProductDetail/955-W65C51N6TPG-14) | 30 | | 1 | SRAM 32k x 8 | U8 | [Alliance AS6C62256-55PCN](https://au.mouser.com/ProductDetail/913-AS6C62256-55PCN) | 31 | | 2 | DIP-28 socket | U6, U8 | [Mill-Max 110-99-628-41-001000](https://au.mouser.com/ProductDetail/575-199628) | 32 | | 1 | EEPROM 32k x 8 | U9 | [Atmel AT28C256-15PU](https://au.mouser.com/ProductDetail/556-AT28C25615PU) | 33 | | 1 | Low-profile DIP-28 ZIF socket | U9 | [Aires 28-526-10](https://au.mouser.com/ProductDetail/535-28-526-10) | 34 | | 1 | 74LS138 demultiplexer | U2 | [Texas Instruments SN74LS138N](https://au.mouser.com/ProductDetail/595-SN74LS138N) | 35 | | 1 | DIP-16 socket | U2 | [Mill-Max 110-44-316-41-001000](https://au.mouser.com/ProductDetail/575-11044316) | 36 | | 1 | 74LS00 quad NAND gate | U4 | [Texas Instruments SN74LS00N](https://au.mouser.com/ProductDetail/595-SN74LS00N) | 37 | | 1 | DIP-14 socket | U4 | [Mill-Max 110-44-314-41-001000](https://au.mouser.com/ProductDetail/575-11044314) | 38 | | 1 | 1.8432 MHz oscillator | X1 | [CTS MXO45HS-3C-1M8432](https://au.mouser.com/ProductDetail/774-MXO45HS-3C-1.8) | 39 | | 1 | Oscillator socket | X1 | [Aires 1108800](https://au.mouser.com/ProductDetail/535-1108800) | 40 | | 1 | 7805 voltage regulator | U5 | [STMicroelectronics L7805ABV](https://au.mouser.com/ProductDetail/511-L7805ABV) | 41 | | 1 | DS1813 reset / voltage monitor | U7 | [Maxim Integrated DS1813-5+](https://au.mouser.com/ProductDetail/700-DS1813-5%2b) | 42 | 43 | ### Connectors 44 | 45 | Notes on connectors: 46 | 47 | - If you use the exact parts here, then one of the 2x20 headers needs to be snapped apart to populate 2x6 footprints at J4 and J5. 48 | - The shunts at J3 should be installed to connect the VIA to IRQ, and the ACIA to NMI. These are labelled on the PCB. 49 | 50 | | Qty. | Description | Installed at | Product ref. | 51 | | ---- | --------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------ | 52 | | 2 | 2x20 male pin header | J1, J4, J5 | [Amphenol FCI 10129381-940002BLF](https://au.mouser.com/ProductDetail/649-1012938194002BLF) | 53 | | 1 | Barrel jack | J2 | [Adafruit 373](https://au.mouser.com/ProductDetail/485-373) | 54 | | 1 | 1x6 male pin header | J6 | [Amphenol FCI 10129378-906001BLF](https://au.mouser.com/ProductDetail/Amphenol-FCI/10129378-906001BLF) | 55 | | 2 | SPDT switch 2.54mm lead spacing | SW1, SW2 | [SparkFun COM-00102](https://au.mouser.com/ProductDetail/474-COM-00102) | 56 | | 1 | Momentary switch | SW3 | [SparkFun COM-00097](https://au.mouser.com/ProductDetail/474-COM-00097) | 57 | | 2 | 1x2 male pin header | J3 | [Amphenol FCI 10129378-902001BLF](https://au.mouser.com/ProductDetail/649-1012937890201BLF) | 58 | | 2 | Shunt/jumper | J3 | [TE Connectivity 2-382811-1](https://au.mouser.com/ProductDetail/571-2-382811-1) | 59 | 60 | ### Basic components 61 | 62 | | Qty. | Description | Installed at | Product ref. | 63 | | ---- | ------------------------------------------------------- | ------------------------------------ | ----------------------------------------------------------- | 64 | | 1 | 0.1 µF ceramic capacitor, 2.54mm lead spacing (10 pack) | C1, C2, C3, C4, C5, C6, C7, C8, C10 | [Adafruit 753](https://au.mouser.com/ProductDetail/485-753) | 65 | | 1 | 1 µF electrolytic capacitor, 1.5mm lead spacing | C9 | – | 66 | | 1 | 1N5819 schottky diode | D1 | – | 67 | | 1 | 5.0 mm LED | D2 | – | 68 | | 3 | 3.3 kΩ resistor 1/4w | R1 R2 R4 | – | 69 | | 1 | 1 kΩ resistor 1/4w | R3 | – | 70 | 71 | ## Additional parts to install in case 72 | 73 | | Qty. | Description | Product ref. | 74 | | ---- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | 75 | | 1 | 16mm Illuminated Pushbutton - Red Latching On/Off Switch | [Adafruit 1442](https://core-electronics.com.au/16mm-illuminated-pushbutton-red-latching-on-off-switch.html) | 76 | | 1 | 330 Ω resistor 1/4w | – | 77 | | 1 | Momentary Button - Panel Mount | [SparkFun COM-11006](https://core-electronics.com.au/momentary-button-panel-mount-black.html) | 78 | | 1 | Piezo Buzzer | [TDK PS1240P02BT](https://core-electronics.com.au/piezo-buzzer-ps1240.html) | 79 | | 4 | M3 x 5+6mm hex standoff | Generic, similar to [this](https://www.minikits.com.au/SPA-M3x5-6-B-C) | 80 | | 4 | M3 nut | [Polulu 1069](https://core-electronics.com.au/machine-hex-nut-m3-25-pack.html) | 81 | | 4 | M3 x 5 mm screw | [Polulu 1075](https://core-electronics.com.au/machine-screw-m3-5mm-length-phillips-25-pack.html) | 82 | | 1 | Heat-shrink tubing kit | [Adafruit 344](https://core-electronics.com.au/heat-shrink-pack.html) | 83 | | 1 | Stranded wire | – | 84 | | 1 | Du Pont connector kit | – | 85 | | 1 | FTDI Cable 5V (FT232RQ-based) | [Sparkfun DEV-09718](https://core-electronics.com.au/ftdi-cable-5v.html) | 86 | | 1 | Adhesive rubber feet | [Adafruit 550](https://core-electronics.com.au/little-rubber-bumper-feet-pack-of-4.html) | 87 | 88 | ### Case installation notes 89 | 90 | First solder three pairs of wires to the underside of the PCB for adding connectors. Each wire is soldered to the PCB on one end, with a female Du Pont connector on the other end (2 x 1 housing). 91 | 92 | - Power: Attach to pins 1 and 2 of SW1 to control DC barrel jack, or attach between Pin 4 of J6 (labelled `NC`) and Pin 1 of J5 (labelled `5V`) for power over USB. 93 | - Reset: Connect to underside of SW3. One wire should attach to `GND`, the other to `RES`. 94 | - Speaker: Connect to underside of J1, at pins 24 (labelled `IO2`) and pin 2 (labelled `GND`). 95 | 96 | Next, add the corresponding connectors to the power/reset buttons and speaker. 97 | 98 | - Power: Solder a wire to each power terminal, and terminate it to a 2x1 male Du Point connector. Solder a wire to each LED terminal, adding a resistor on the GND line, and terminating them to a 2x1 female Du Pont connector. 99 | - Reset: Solder wire to each terminal, terminate to a 2x1 male Du Pont connector 100 | - Speaker: Solder wire to each terminal, terminate to a 2x1 male Du Pont connector 101 | 102 | To assemble, first check that the reset button fits (the hole is too small in the case model, and will need to be expanded). Install stand-offs, then feed the UART cable through the oval-shaped hole. Next, add the PCB, and install the power and reset buttons. After this, you can connect the UART cable, power button, and reset button to the board. The power LED connects to pin 1 and 2 of J5. The final step is to super-glue the speaker over the hole at the back of the case. 103 | 104 | ## Additional parts to install microSD 105 | 106 | Some of the test programs in this repository expect an SD card to be connected. Any 5V-compatible microSD break-out board could be used. These exact parts will fit inside the case with the lid closed. 107 | 108 | | Qty. | Description | Product ref. | 109 | | ---- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | 110 | | 1 | Level Shifting microSD Breakout | [Sparkfun DEV-13743](https://core-electronics.com.au/sparkfun-level-shifting-microsd-breakout.html) | 111 | | 1 | 1x7 male pin header | Generic, similar to [this](https://au.mouser.com/ProductDetail/Amphenol-FCI/10129378-907001BLF) | 112 | | 1 | 1x7 female pin header | [Polulu 1017](https://core-electronics.com.au/0-100-2-54-mm-female-header-1x7-pin-straight.html) | 113 | | 1 | 2x6 female Du Pont housing | [Polulu 1914](https://core-electronics.com.au/0-1-2-54mm-crimp-connector-housing-2x6-pin-5-pack.html) | 114 | | 1 | microSD card 16 GB | – | 115 | 116 | ### microSD installation notes 117 | 118 | These parts can be used to install a microSD card in the case, attaching to J4. The card sits parallel to J4. 119 | 120 | Glue the female pin header to the side of the Du Pont housing to make an adapter. You will need 6 wires, soldered on one end, and with a female Du Pont connector on the other end: 121 | 122 | - Pin 1 (labelled `5V`) connects to `VCC` 123 | - Pin 2 (labelled `GND`) connects to `GND` 124 | - Pin 5 (labelled `PA0`) connects to `DO` 125 | - Pin 6 (labelled `PA1`) connects to `SCK` 126 | - Pin 7 (labelled `PA2`) connects to `DI` 127 | - Pin 8 (labelled `PA3`) connects to `CS` 128 | 129 | Solder the male pin headers to the microSD breakout, connect the module to the adapter, and attach it to J4. Wiggle it around a bit, and add insulating tape to anything it can contact. You can then fit an SD card. 130 | -------------------------------------------------------------------------------- /hardware/case/base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mike42/6502-computer/fd9463e5136a441a2788d37b61779e0015d4649c/hardware/case/base.stl -------------------------------------------------------------------------------- /hardware/case/lid.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mike42/6502-computer/fd9463e5136a441a2788d37b61779e0015d4649c/hardware/case/lid.stl -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-B_Mask.gbs: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*% 2 | %TF.CreationDate,2021-08-01T20:01:47+10:00*% 3 | %TF.ProjectId,6502-computer,36353032-2d63-46f6-9d70-757465722e6b,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Soldermask,Bot*% 6 | %TF.FilePolarity,Negative*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:47* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | %ADD10R,1.600000X1.600000*% 15 | %ADD11O,1.600000X1.600000*% 16 | %ADD12C,1.300000*% 17 | %ADD13R,1.300000X1.300000*% 18 | %ADD14R,1.700000X1.700000*% 19 | %ADD15O,1.700000X1.700000*% 20 | %ADD16C,1.397000*% 21 | %ADD17C,1.600000*% 22 | %ADD18R,1.800000X1.800000*% 23 | %ADD19C,1.800000*% 24 | %ADD20C,0.800000*% 25 | %ADD21C,6.400000*% 26 | %ADD22O,1.905000X2.000000*% 27 | %ADD23R,1.905000X2.000000*% 28 | %ADD24O,3.500000X3.500000*% 29 | %ADD25C,1.200000*% 30 | %ADD26R,2.200000X2.200000*% 31 | %ADD27O,2.200000X2.200000*% 32 | %ADD28R,3.500000X3.500000*% 33 | G04 APERTURE END LIST* 34 | D10* 35 | %TO.C,U4*% 36 | X95885000Y-107950000D03* 37 | D11* 38 | X111125000Y-100330000D03* 39 | X98425000Y-107950000D03* 40 | X108585000Y-100330000D03* 41 | X100965000Y-107950000D03* 42 | X106045000Y-100330000D03* 43 | X103505000Y-107950000D03* 44 | X103505000Y-100330000D03* 45 | X106045000Y-107950000D03* 46 | X100965000Y-100330000D03* 47 | X108585000Y-107950000D03* 48 | X98425000Y-100330000D03* 49 | X111125000Y-107950000D03* 50 | X95885000Y-100330000D03* 51 | %TD*% 52 | %TO.C,U9*% 53 | X184404000Y-93980000D03* 54 | X151384000Y-78740000D03* 55 | X181864000Y-93980000D03* 56 | X153924000Y-78740000D03* 57 | X179324000Y-93980000D03* 58 | X156464000Y-78740000D03* 59 | X176784000Y-93980000D03* 60 | X159004000Y-78740000D03* 61 | X174244000Y-93980000D03* 62 | X161544000Y-78740000D03* 63 | X171704000Y-93980000D03* 64 | X164084000Y-78740000D03* 65 | X169164000Y-93980000D03* 66 | X166624000Y-78740000D03* 67 | X166624000Y-93980000D03* 68 | X169164000Y-78740000D03* 69 | X164084000Y-93980000D03* 70 | X171704000Y-78740000D03* 71 | X161544000Y-93980000D03* 72 | X174244000Y-78740000D03* 73 | X159004000Y-93980000D03* 74 | X176784000Y-78740000D03* 75 | X156464000Y-93980000D03* 76 | X179324000Y-78740000D03* 77 | X153924000Y-93980000D03* 78 | X181864000Y-78740000D03* 79 | X151384000Y-93980000D03* 80 | D10* 81 | X184404000Y-78740000D03* 82 | %TD*% 83 | D12* 84 | %TO.C,U7*% 85 | X123190000Y-91440000D03* 86 | X124460000Y-90170000D03* 87 | D13* 88 | X124460000Y-92710000D03* 89 | %TD*% 90 | D11* 91 | %TO.C,U3*% 92 | X95885000Y-135890000D03* 93 | X144145000Y-151130000D03* 94 | X98425000Y-135890000D03* 95 | X141605000Y-151130000D03* 96 | X100965000Y-135890000D03* 97 | X139065000Y-151130000D03* 98 | X103505000Y-135890000D03* 99 | X136525000Y-151130000D03* 100 | X106045000Y-135890000D03* 101 | X133985000Y-151130000D03* 102 | X108585000Y-135890000D03* 103 | X131445000Y-151130000D03* 104 | X111125000Y-135890000D03* 105 | X128905000Y-151130000D03* 106 | X113665000Y-135890000D03* 107 | X126365000Y-151130000D03* 108 | X116205000Y-135890000D03* 109 | X123825000Y-151130000D03* 110 | X118745000Y-135890000D03* 111 | X121285000Y-151130000D03* 112 | X121285000Y-135890000D03* 113 | X118745000Y-151130000D03* 114 | X123825000Y-135890000D03* 115 | X116205000Y-151130000D03* 116 | X126365000Y-135890000D03* 117 | X113665000Y-151130000D03* 118 | X128905000Y-135890000D03* 119 | X111125000Y-151130000D03* 120 | X131445000Y-135890000D03* 121 | X108585000Y-151130000D03* 122 | X133985000Y-135890000D03* 123 | X106045000Y-151130000D03* 124 | X136525000Y-135890000D03* 125 | X103505000Y-151130000D03* 126 | X139065000Y-135890000D03* 127 | X100965000Y-151130000D03* 128 | X141605000Y-135890000D03* 129 | X98425000Y-151130000D03* 130 | X144145000Y-135890000D03* 131 | D10* 132 | X95885000Y-151130000D03* 133 | %TD*% 134 | D14* 135 | %TO.C,J1*% 136 | X85725000Y-151130000D03* 137 | D15* 138 | X83185000Y-151130000D03* 139 | X85725000Y-148590000D03* 140 | X83185000Y-148590000D03* 141 | X85725000Y-146050000D03* 142 | X83185000Y-146050000D03* 143 | X85725000Y-143510000D03* 144 | X83185000Y-143510000D03* 145 | X85725000Y-140970000D03* 146 | X83185000Y-140970000D03* 147 | X85725000Y-138430000D03* 148 | X83185000Y-138430000D03* 149 | X85725000Y-135890000D03* 150 | X83185000Y-135890000D03* 151 | X85725000Y-133350000D03* 152 | X83185000Y-133350000D03* 153 | X85725000Y-130810000D03* 154 | X83185000Y-130810000D03* 155 | X85725000Y-128270000D03* 156 | X83185000Y-128270000D03* 157 | X85725000Y-125730000D03* 158 | X83185000Y-125730000D03* 159 | X85725000Y-123190000D03* 160 | X83185000Y-123190000D03* 161 | X85725000Y-120650000D03* 162 | X83185000Y-120650000D03* 163 | X85725000Y-118110000D03* 164 | X83185000Y-118110000D03* 165 | X85725000Y-115570000D03* 166 | X83185000Y-115570000D03* 167 | X85725000Y-113030000D03* 168 | X83185000Y-113030000D03* 169 | X85725000Y-110490000D03* 170 | X83185000Y-110490000D03* 171 | X85725000Y-107950000D03* 172 | X83185000Y-107950000D03* 173 | X85725000Y-105410000D03* 174 | X83185000Y-105410000D03* 175 | X85725000Y-102870000D03* 176 | X83185000Y-102870000D03* 177 | %TD*% 178 | D10* 179 | %TO.C,U8*% 180 | X183515000Y-114300000D03* 181 | D11* 182 | X150495000Y-129540000D03* 183 | X180975000Y-114300000D03* 184 | X153035000Y-129540000D03* 185 | X178435000Y-114300000D03* 186 | X155575000Y-129540000D03* 187 | X175895000Y-114300000D03* 188 | X158115000Y-129540000D03* 189 | X173355000Y-114300000D03* 190 | X160655000Y-129540000D03* 191 | X170815000Y-114300000D03* 192 | X163195000Y-129540000D03* 193 | X168275000Y-114300000D03* 194 | X165735000Y-129540000D03* 195 | X165735000Y-114300000D03* 196 | X168275000Y-129540000D03* 197 | X163195000Y-114300000D03* 198 | X170815000Y-129540000D03* 199 | X160655000Y-114300000D03* 200 | X173355000Y-129540000D03* 201 | X158115000Y-114300000D03* 202 | X175895000Y-129540000D03* 203 | X155575000Y-114300000D03* 204 | X178435000Y-129540000D03* 205 | X153035000Y-114300000D03* 206 | X180975000Y-129540000D03* 207 | X150495000Y-114300000D03* 208 | X183515000Y-129540000D03* 209 | %TD*% 210 | D10* 211 | %TO.C,U1*% 212 | X95885000Y-129540000D03* 213 | D11* 214 | X144145000Y-114300000D03* 215 | X98425000Y-129540000D03* 216 | X141605000Y-114300000D03* 217 | X100965000Y-129540000D03* 218 | X139065000Y-114300000D03* 219 | X103505000Y-129540000D03* 220 | X136525000Y-114300000D03* 221 | X106045000Y-129540000D03* 222 | X133985000Y-114300000D03* 223 | X108585000Y-129540000D03* 224 | X131445000Y-114300000D03* 225 | X111125000Y-129540000D03* 226 | X128905000Y-114300000D03* 227 | X113665000Y-129540000D03* 228 | X126365000Y-114300000D03* 229 | X116205000Y-129540000D03* 230 | X123825000Y-114300000D03* 231 | X118745000Y-129540000D03* 232 | X121285000Y-114300000D03* 233 | X121285000Y-129540000D03* 234 | X118745000Y-114300000D03* 235 | X123825000Y-129540000D03* 236 | X116205000Y-114300000D03* 237 | X126365000Y-129540000D03* 238 | X113665000Y-114300000D03* 239 | X128905000Y-129540000D03* 240 | X111125000Y-114300000D03* 241 | X131445000Y-129540000D03* 242 | X108585000Y-114300000D03* 243 | X133985000Y-129540000D03* 244 | X106045000Y-114300000D03* 245 | X136525000Y-129540000D03* 246 | X103505000Y-114300000D03* 247 | X139065000Y-129540000D03* 248 | X100965000Y-114300000D03* 249 | X141605000Y-129540000D03* 250 | X98425000Y-114300000D03* 251 | X144145000Y-129540000D03* 252 | X95885000Y-114300000D03* 253 | %TD*% 254 | D15* 255 | %TO.C,J4*% 256 | X120015000Y-160020000D03* 257 | X120015000Y-162560000D03* 258 | X117475000Y-160020000D03* 259 | X117475000Y-162560000D03* 260 | X114935000Y-160020000D03* 261 | X114935000Y-162560000D03* 262 | X112395000Y-160020000D03* 263 | X112395000Y-162560000D03* 264 | X109855000Y-160020000D03* 265 | X109855000Y-162560000D03* 266 | X107315000Y-160020000D03* 267 | D14* 268 | X107315000Y-162560000D03* 269 | %TD*% 270 | D16* 271 | %TO.C,SW3*% 272 | X102235000Y-158750000D03* 273 | X102235000Y-163830000D03* 274 | X94615000Y-158750000D03* 275 | X94615000Y-163830000D03* 276 | %TD*% 277 | D17* 278 | %TO.C,C4*% 279 | X90805000Y-151130000D03* 280 | X90805000Y-148630000D03* 281 | %TD*% 282 | %TO.C,C6*% 283 | X90297000Y-129921000D03* 284 | X90297000Y-127421000D03* 285 | %TD*% 286 | D18* 287 | %TO.C,D2*% 288 | X178054000Y-160274000D03* 289 | D19* 290 | X178054000Y-162814000D03* 291 | %TD*% 292 | D20* 293 | %TO.C,H4*% 294 | X191435056Y-163910944D03* 295 | X189738000Y-163208000D03* 296 | X188040944Y-163910944D03* 297 | X187338000Y-165608000D03* 298 | X188040944Y-167305056D03* 299 | X189738000Y-168008000D03* 300 | X191435056Y-167305056D03* 301 | X192138000Y-165608000D03* 302 | D21* 303 | X189738000Y-165608000D03* 304 | %TD*% 305 | D20* 306 | %TO.C,H2*% 307 | X188040944Y-76754056D03* 308 | X189738000Y-77457000D03* 309 | X191435056Y-76754056D03* 310 | X192138000Y-75057000D03* 311 | X191435056Y-73359944D03* 312 | X189738000Y-72657000D03* 313 | X188040944Y-73359944D03* 314 | X187338000Y-75057000D03* 315 | D21* 316 | X189738000Y-75057000D03* 317 | %TD*% 318 | D20* 319 | %TO.C,H1*% 320 | X80344944Y-76754056D03* 321 | X82042000Y-77457000D03* 322 | X83739056Y-76754056D03* 323 | X84442000Y-75057000D03* 324 | X83739056Y-73359944D03* 325 | X82042000Y-72657000D03* 326 | X80344944Y-73359944D03* 327 | X79642000Y-75057000D03* 328 | D21* 329 | X82042000Y-75057000D03* 330 | %TD*% 331 | D20* 332 | %TO.C,H3*% 333 | X83739056Y-163910944D03* 334 | X82042000Y-163208000D03* 335 | X80344944Y-163910944D03* 336 | X79642000Y-165608000D03* 337 | X80344944Y-167305056D03* 338 | X82042000Y-168008000D03* 339 | X83739056Y-167305056D03* 340 | X84442000Y-165608000D03* 341 | D21* 342 | X82042000Y-165608000D03* 343 | %TD*% 344 | D22* 345 | %TO.C,U5*% 346 | X106680000Y-75565000D03* 347 | X109220000Y-75565000D03* 348 | D23* 349 | X111760000Y-75565000D03* 350 | D24* 351 | X109220000Y-92225000D03* 352 | %TD*% 353 | D17* 354 | %TO.C,C1*% 355 | X188595000Y-135890000D03* 356 | X188595000Y-138390000D03* 357 | %TD*% 358 | %TO.C,C2*% 359 | X120015000Y-105450000D03* 360 | X120015000Y-107950000D03* 361 | %TD*% 362 | %TO.C,C3*% 363 | X188595000Y-116800000D03* 364 | X188595000Y-114300000D03* 365 | %TD*% 366 | %TO.C,C5*% 367 | X125095000Y-82590000D03* 368 | X125095000Y-85090000D03* 369 | %TD*% 370 | %TO.C,C7*% 371 | X101600000Y-75605000D03* 372 | X101600000Y-78105000D03* 373 | %TD*% 374 | %TO.C,C8*% 375 | X184404000Y-104053000D03* 376 | X184404000Y-106553000D03* 377 | %TD*% 378 | D25* 379 | %TO.C,C9*% 380 | X118110000Y-77470000D03* 381 | X119610000Y-77470000D03* 382 | %TD*% 383 | D17* 384 | %TO.C,C10*% 385 | X90805000Y-107950000D03* 386 | X90805000Y-105450000D03* 387 | %TD*% 388 | D26* 389 | %TO.C,D1*% 390 | X99695000Y-93980000D03* 391 | D27* 392 | X89535000Y-93980000D03* 393 | %TD*% 394 | D28* 395 | %TO.C,J2*% 396 | X93980000Y-84455000D03* 397 | G36* 398 | G01* 399 | X92980000Y-76955000D02* 400 | X94980000Y-76955000D01* 401 | G75* 402 | G02* 403 | X95730000Y-77705000I0J-750000D01* 404 | G01* 405 | X95730000Y-79205000D01* 406 | G75* 407 | G02* 408 | X94980000Y-79955000I-750000J0D01* 409 | G01* 410 | X92980000Y-79955000D01* 411 | G75* 412 | G02* 413 | X92230000Y-79205000I0J750000D01* 414 | G01* 415 | X92230000Y-77705000D01* 416 | G75* 417 | G02* 418 | X92980000Y-76955000I750000J0D01* 419 | G01* 420 | G37* 421 | G36* 422 | G01* 423 | X88405000Y-79705000D02* 424 | X90155000Y-79705000D01* 425 | G75* 426 | G02* 427 | X91030000Y-80580000I0J-875000D01* 428 | G01* 429 | X91030000Y-82330000D01* 430 | G75* 431 | G02* 432 | X90155000Y-83205000I-875000J0D01* 433 | G01* 434 | X88405000Y-83205000D01* 435 | G75* 436 | G02* 437 | X87530000Y-82330000I0J875000D01* 438 | G01* 439 | X87530000Y-80580000D01* 440 | G75* 441 | G02* 442 | X88405000Y-79705000I875000J0D01* 443 | G01* 444 | G37* 445 | %TD*% 446 | D14* 447 | %TO.C,J3*% 448 | X171450000Y-162814000D03* 449 | D15* 450 | X168910000Y-162814000D03* 451 | X171450000Y-160274000D03* 452 | X168910000Y-160274000D03* 453 | %TD*% 454 | D14* 455 | %TO.C,J5*% 456 | X130175000Y-162560000D03* 457 | D15* 458 | X130175000Y-160020000D03* 459 | X132715000Y-162560000D03* 460 | X132715000Y-160020000D03* 461 | X135255000Y-162560000D03* 462 | X135255000Y-160020000D03* 463 | X137795000Y-162560000D03* 464 | X137795000Y-160020000D03* 465 | X140335000Y-162560000D03* 466 | X140335000Y-160020000D03* 467 | X142875000Y-162560000D03* 468 | X142875000Y-160020000D03* 469 | %TD*% 470 | D14* 471 | %TO.C,J6*% 472 | X150495000Y-161290000D03* 473 | D15* 474 | X153035000Y-161290000D03* 475 | X155575000Y-161290000D03* 476 | X158115000Y-161290000D03* 477 | X160655000Y-161290000D03* 478 | X163195000Y-161290000D03* 479 | %TD*% 480 | D11* 481 | %TO.C,R1*% 482 | X168275000Y-106934000D03* 483 | D17* 484 | X178435000Y-106934000D03* 485 | %TD*% 486 | %TO.C,R2*% 487 | X163195000Y-101854000D03* 488 | D11* 489 | X153035000Y-101854000D03* 490 | %TD*% 491 | %TO.C,R3*% 492 | X178435000Y-101854000D03* 493 | D17* 494 | X168275000Y-101854000D03* 495 | %TD*% 496 | %TO.C,R4*% 497 | X163195000Y-106934000D03* 498 | D11* 499 | X153035000Y-106934000D03* 500 | %TD*% 501 | D10* 502 | %TO.C,SW1*% 503 | X83820000Y-92035000D03* 504 | D17* 505 | X83820000Y-89535000D03* 506 | X83820000Y-87035000D03* 507 | %TD*% 508 | %TO.C,SW2*% 509 | X131525000Y-77470000D03* 510 | X134025000Y-77470000D03* 511 | D10* 512 | X136525000Y-77470000D03* 513 | %TD*% 514 | %TO.C,U2*% 515 | X125095000Y-107950000D03* 516 | D11* 517 | X142875000Y-100330000D03* 518 | X127635000Y-107950000D03* 519 | X140335000Y-100330000D03* 520 | X130175000Y-107950000D03* 521 | X137795000Y-100330000D03* 522 | X132715000Y-107950000D03* 523 | X135255000Y-100330000D03* 524 | X135255000Y-107950000D03* 525 | X132715000Y-100330000D03* 526 | X137795000Y-107950000D03* 527 | X130175000Y-100330000D03* 528 | X140335000Y-107950000D03* 529 | X127635000Y-100330000D03* 530 | X142875000Y-107950000D03* 531 | X125095000Y-100330000D03* 532 | %TD*% 533 | D10* 534 | %TO.C,U6*% 535 | X183515000Y-135890000D03* 536 | D11* 537 | X150495000Y-151130000D03* 538 | X180975000Y-135890000D03* 539 | X153035000Y-151130000D03* 540 | X178435000Y-135890000D03* 541 | X155575000Y-151130000D03* 542 | X175895000Y-135890000D03* 543 | X158115000Y-151130000D03* 544 | X173355000Y-135890000D03* 545 | X160655000Y-151130000D03* 546 | X170815000Y-135890000D03* 547 | X163195000Y-151130000D03* 548 | X168275000Y-135890000D03* 549 | X165735000Y-151130000D03* 550 | X165735000Y-135890000D03* 551 | X168275000Y-151130000D03* 552 | X163195000Y-135890000D03* 553 | X170815000Y-151130000D03* 554 | X160655000Y-135890000D03* 555 | X173355000Y-151130000D03* 556 | X158115000Y-135890000D03* 557 | X175895000Y-151130000D03* 558 | X155575000Y-135890000D03* 559 | X178435000Y-151130000D03* 560 | X153035000Y-135890000D03* 561 | X180975000Y-151130000D03* 562 | X150495000Y-135890000D03* 563 | X183515000Y-151130000D03* 564 | %TD*% 565 | D10* 566 | %TO.C,X1*% 567 | X130175000Y-91440000D03* 568 | D17* 569 | X130175000Y-83820000D03* 570 | X137795000Y-83820000D03* 571 | X137795000Y-91440000D03* 572 | %TD*% 573 | M02* 574 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-B_Paste.gbp: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*% 2 | %TF.CreationDate,2021-08-01T20:01:47+10:00*% 3 | %TF.ProjectId,6502-computer,36353032-2d63-46f6-9d70-757465722e6b,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:47* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 APERTURE END LIST* 15 | M02* 16 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-B_SilkS.gbo: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*% 2 | %TF.CreationDate,2021-08-01T20:01:47+10:00*% 3 | %TF.ProjectId,6502-computer,36353032-2d63-46f6-9d70-757465722e6b,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Legend,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:47* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | %ADD10R,1.600000X1.600000*% 15 | %ADD11O,1.600000X1.600000*% 16 | %ADD12C,1.300000*% 17 | %ADD13R,1.300000X1.300000*% 18 | %ADD14R,1.700000X1.700000*% 19 | %ADD15O,1.700000X1.700000*% 20 | %ADD16C,1.397000*% 21 | %ADD17C,1.600000*% 22 | %ADD18R,1.800000X1.800000*% 23 | %ADD19C,1.800000*% 24 | %ADD20C,0.800000*% 25 | %ADD21C,6.400000*% 26 | %ADD22O,1.905000X2.000000*% 27 | %ADD23R,1.905000X2.000000*% 28 | %ADD24O,3.500000X3.500000*% 29 | %ADD25C,1.200000*% 30 | %ADD26R,2.200000X2.200000*% 31 | %ADD27O,2.200000X2.200000*% 32 | %ADD28R,3.500000X3.500000*% 33 | G04 APERTURE END LIST* 34 | %LPC*% 35 | D10* 36 | %TO.C,U4*% 37 | X95885000Y-107950000D03* 38 | D11* 39 | X111125000Y-100330000D03* 40 | X98425000Y-107950000D03* 41 | X108585000Y-100330000D03* 42 | X100965000Y-107950000D03* 43 | X106045000Y-100330000D03* 44 | X103505000Y-107950000D03* 45 | X103505000Y-100330000D03* 46 | X106045000Y-107950000D03* 47 | X100965000Y-100330000D03* 48 | X108585000Y-107950000D03* 49 | X98425000Y-100330000D03* 50 | X111125000Y-107950000D03* 51 | X95885000Y-100330000D03* 52 | %TD*% 53 | %TO.C,U9*% 54 | X184404000Y-93980000D03* 55 | X151384000Y-78740000D03* 56 | X181864000Y-93980000D03* 57 | X153924000Y-78740000D03* 58 | X179324000Y-93980000D03* 59 | X156464000Y-78740000D03* 60 | X176784000Y-93980000D03* 61 | X159004000Y-78740000D03* 62 | X174244000Y-93980000D03* 63 | X161544000Y-78740000D03* 64 | X171704000Y-93980000D03* 65 | X164084000Y-78740000D03* 66 | X169164000Y-93980000D03* 67 | X166624000Y-78740000D03* 68 | X166624000Y-93980000D03* 69 | X169164000Y-78740000D03* 70 | X164084000Y-93980000D03* 71 | X171704000Y-78740000D03* 72 | X161544000Y-93980000D03* 73 | X174244000Y-78740000D03* 74 | X159004000Y-93980000D03* 75 | X176784000Y-78740000D03* 76 | X156464000Y-93980000D03* 77 | X179324000Y-78740000D03* 78 | X153924000Y-93980000D03* 79 | X181864000Y-78740000D03* 80 | X151384000Y-93980000D03* 81 | D10* 82 | X184404000Y-78740000D03* 83 | %TD*% 84 | D12* 85 | %TO.C,U7*% 86 | X123190000Y-91440000D03* 87 | X124460000Y-90170000D03* 88 | D13* 89 | X124460000Y-92710000D03* 90 | %TD*% 91 | D11* 92 | %TO.C,U3*% 93 | X95885000Y-135890000D03* 94 | X144145000Y-151130000D03* 95 | X98425000Y-135890000D03* 96 | X141605000Y-151130000D03* 97 | X100965000Y-135890000D03* 98 | X139065000Y-151130000D03* 99 | X103505000Y-135890000D03* 100 | X136525000Y-151130000D03* 101 | X106045000Y-135890000D03* 102 | X133985000Y-151130000D03* 103 | X108585000Y-135890000D03* 104 | X131445000Y-151130000D03* 105 | X111125000Y-135890000D03* 106 | X128905000Y-151130000D03* 107 | X113665000Y-135890000D03* 108 | X126365000Y-151130000D03* 109 | X116205000Y-135890000D03* 110 | X123825000Y-151130000D03* 111 | X118745000Y-135890000D03* 112 | X121285000Y-151130000D03* 113 | X121285000Y-135890000D03* 114 | X118745000Y-151130000D03* 115 | X123825000Y-135890000D03* 116 | X116205000Y-151130000D03* 117 | X126365000Y-135890000D03* 118 | X113665000Y-151130000D03* 119 | X128905000Y-135890000D03* 120 | X111125000Y-151130000D03* 121 | X131445000Y-135890000D03* 122 | X108585000Y-151130000D03* 123 | X133985000Y-135890000D03* 124 | X106045000Y-151130000D03* 125 | X136525000Y-135890000D03* 126 | X103505000Y-151130000D03* 127 | X139065000Y-135890000D03* 128 | X100965000Y-151130000D03* 129 | X141605000Y-135890000D03* 130 | X98425000Y-151130000D03* 131 | X144145000Y-135890000D03* 132 | D10* 133 | X95885000Y-151130000D03* 134 | %TD*% 135 | D14* 136 | %TO.C,J1*% 137 | X85725000Y-151130000D03* 138 | D15* 139 | X83185000Y-151130000D03* 140 | X85725000Y-148590000D03* 141 | X83185000Y-148590000D03* 142 | X85725000Y-146050000D03* 143 | X83185000Y-146050000D03* 144 | X85725000Y-143510000D03* 145 | X83185000Y-143510000D03* 146 | X85725000Y-140970000D03* 147 | X83185000Y-140970000D03* 148 | X85725000Y-138430000D03* 149 | X83185000Y-138430000D03* 150 | X85725000Y-135890000D03* 151 | X83185000Y-135890000D03* 152 | X85725000Y-133350000D03* 153 | X83185000Y-133350000D03* 154 | X85725000Y-130810000D03* 155 | X83185000Y-130810000D03* 156 | X85725000Y-128270000D03* 157 | X83185000Y-128270000D03* 158 | X85725000Y-125730000D03* 159 | X83185000Y-125730000D03* 160 | X85725000Y-123190000D03* 161 | X83185000Y-123190000D03* 162 | X85725000Y-120650000D03* 163 | X83185000Y-120650000D03* 164 | X85725000Y-118110000D03* 165 | X83185000Y-118110000D03* 166 | X85725000Y-115570000D03* 167 | X83185000Y-115570000D03* 168 | X85725000Y-113030000D03* 169 | X83185000Y-113030000D03* 170 | X85725000Y-110490000D03* 171 | X83185000Y-110490000D03* 172 | X85725000Y-107950000D03* 173 | X83185000Y-107950000D03* 174 | X85725000Y-105410000D03* 175 | X83185000Y-105410000D03* 176 | X85725000Y-102870000D03* 177 | X83185000Y-102870000D03* 178 | %TD*% 179 | D10* 180 | %TO.C,U8*% 181 | X183515000Y-114300000D03* 182 | D11* 183 | X150495000Y-129540000D03* 184 | X180975000Y-114300000D03* 185 | X153035000Y-129540000D03* 186 | X178435000Y-114300000D03* 187 | X155575000Y-129540000D03* 188 | X175895000Y-114300000D03* 189 | X158115000Y-129540000D03* 190 | X173355000Y-114300000D03* 191 | X160655000Y-129540000D03* 192 | X170815000Y-114300000D03* 193 | X163195000Y-129540000D03* 194 | X168275000Y-114300000D03* 195 | X165735000Y-129540000D03* 196 | X165735000Y-114300000D03* 197 | X168275000Y-129540000D03* 198 | X163195000Y-114300000D03* 199 | X170815000Y-129540000D03* 200 | X160655000Y-114300000D03* 201 | X173355000Y-129540000D03* 202 | X158115000Y-114300000D03* 203 | X175895000Y-129540000D03* 204 | X155575000Y-114300000D03* 205 | X178435000Y-129540000D03* 206 | X153035000Y-114300000D03* 207 | X180975000Y-129540000D03* 208 | X150495000Y-114300000D03* 209 | X183515000Y-129540000D03* 210 | %TD*% 211 | D10* 212 | %TO.C,U1*% 213 | X95885000Y-129540000D03* 214 | D11* 215 | X144145000Y-114300000D03* 216 | X98425000Y-129540000D03* 217 | X141605000Y-114300000D03* 218 | X100965000Y-129540000D03* 219 | X139065000Y-114300000D03* 220 | X103505000Y-129540000D03* 221 | X136525000Y-114300000D03* 222 | X106045000Y-129540000D03* 223 | X133985000Y-114300000D03* 224 | X108585000Y-129540000D03* 225 | X131445000Y-114300000D03* 226 | X111125000Y-129540000D03* 227 | X128905000Y-114300000D03* 228 | X113665000Y-129540000D03* 229 | X126365000Y-114300000D03* 230 | X116205000Y-129540000D03* 231 | X123825000Y-114300000D03* 232 | X118745000Y-129540000D03* 233 | X121285000Y-114300000D03* 234 | X121285000Y-129540000D03* 235 | X118745000Y-114300000D03* 236 | X123825000Y-129540000D03* 237 | X116205000Y-114300000D03* 238 | X126365000Y-129540000D03* 239 | X113665000Y-114300000D03* 240 | X128905000Y-129540000D03* 241 | X111125000Y-114300000D03* 242 | X131445000Y-129540000D03* 243 | X108585000Y-114300000D03* 244 | X133985000Y-129540000D03* 245 | X106045000Y-114300000D03* 246 | X136525000Y-129540000D03* 247 | X103505000Y-114300000D03* 248 | X139065000Y-129540000D03* 249 | X100965000Y-114300000D03* 250 | X141605000Y-129540000D03* 251 | X98425000Y-114300000D03* 252 | X144145000Y-129540000D03* 253 | X95885000Y-114300000D03* 254 | %TD*% 255 | D15* 256 | %TO.C,J4*% 257 | X120015000Y-160020000D03* 258 | X120015000Y-162560000D03* 259 | X117475000Y-160020000D03* 260 | X117475000Y-162560000D03* 261 | X114935000Y-160020000D03* 262 | X114935000Y-162560000D03* 263 | X112395000Y-160020000D03* 264 | X112395000Y-162560000D03* 265 | X109855000Y-160020000D03* 266 | X109855000Y-162560000D03* 267 | X107315000Y-160020000D03* 268 | D14* 269 | X107315000Y-162560000D03* 270 | %TD*% 271 | D16* 272 | %TO.C,SW3*% 273 | X102235000Y-158750000D03* 274 | X102235000Y-163830000D03* 275 | X94615000Y-158750000D03* 276 | X94615000Y-163830000D03* 277 | %TD*% 278 | D17* 279 | %TO.C,C4*% 280 | X90805000Y-151130000D03* 281 | X90805000Y-148630000D03* 282 | %TD*% 283 | %TO.C,C6*% 284 | X90297000Y-129921000D03* 285 | X90297000Y-127421000D03* 286 | %TD*% 287 | D18* 288 | %TO.C,D2*% 289 | X178054000Y-160274000D03* 290 | D19* 291 | X178054000Y-162814000D03* 292 | %TD*% 293 | D20* 294 | %TO.C,H4*% 295 | X191435056Y-163910944D03* 296 | X189738000Y-163208000D03* 297 | X188040944Y-163910944D03* 298 | X187338000Y-165608000D03* 299 | X188040944Y-167305056D03* 300 | X189738000Y-168008000D03* 301 | X191435056Y-167305056D03* 302 | X192138000Y-165608000D03* 303 | D21* 304 | X189738000Y-165608000D03* 305 | %TD*% 306 | D20* 307 | %TO.C,H2*% 308 | X188040944Y-76754056D03* 309 | X189738000Y-77457000D03* 310 | X191435056Y-76754056D03* 311 | X192138000Y-75057000D03* 312 | X191435056Y-73359944D03* 313 | X189738000Y-72657000D03* 314 | X188040944Y-73359944D03* 315 | X187338000Y-75057000D03* 316 | D21* 317 | X189738000Y-75057000D03* 318 | %TD*% 319 | D20* 320 | %TO.C,H1*% 321 | X80344944Y-76754056D03* 322 | X82042000Y-77457000D03* 323 | X83739056Y-76754056D03* 324 | X84442000Y-75057000D03* 325 | X83739056Y-73359944D03* 326 | X82042000Y-72657000D03* 327 | X80344944Y-73359944D03* 328 | X79642000Y-75057000D03* 329 | D21* 330 | X82042000Y-75057000D03* 331 | %TD*% 332 | D20* 333 | %TO.C,H3*% 334 | X83739056Y-163910944D03* 335 | X82042000Y-163208000D03* 336 | X80344944Y-163910944D03* 337 | X79642000Y-165608000D03* 338 | X80344944Y-167305056D03* 339 | X82042000Y-168008000D03* 340 | X83739056Y-167305056D03* 341 | X84442000Y-165608000D03* 342 | D21* 343 | X82042000Y-165608000D03* 344 | %TD*% 345 | D22* 346 | %TO.C,U5*% 347 | X106680000Y-75565000D03* 348 | X109220000Y-75565000D03* 349 | D23* 350 | X111760000Y-75565000D03* 351 | D24* 352 | X109220000Y-92225000D03* 353 | %TD*% 354 | D17* 355 | %TO.C,C1*% 356 | X188595000Y-135890000D03* 357 | X188595000Y-138390000D03* 358 | %TD*% 359 | %TO.C,C2*% 360 | X120015000Y-105450000D03* 361 | X120015000Y-107950000D03* 362 | %TD*% 363 | %TO.C,C3*% 364 | X188595000Y-116800000D03* 365 | X188595000Y-114300000D03* 366 | %TD*% 367 | %TO.C,C5*% 368 | X125095000Y-82590000D03* 369 | X125095000Y-85090000D03* 370 | %TD*% 371 | %TO.C,C7*% 372 | X101600000Y-75605000D03* 373 | X101600000Y-78105000D03* 374 | %TD*% 375 | %TO.C,C8*% 376 | X184404000Y-104053000D03* 377 | X184404000Y-106553000D03* 378 | %TD*% 379 | D25* 380 | %TO.C,C9*% 381 | X118110000Y-77470000D03* 382 | X119610000Y-77470000D03* 383 | %TD*% 384 | D17* 385 | %TO.C,C10*% 386 | X90805000Y-107950000D03* 387 | X90805000Y-105450000D03* 388 | %TD*% 389 | D26* 390 | %TO.C,D1*% 391 | X99695000Y-93980000D03* 392 | D27* 393 | X89535000Y-93980000D03* 394 | %TD*% 395 | D28* 396 | %TO.C,J2*% 397 | X93980000Y-84455000D03* 398 | G36* 399 | G01* 400 | X92980000Y-76955000D02* 401 | X94980000Y-76955000D01* 402 | G75* 403 | G02* 404 | X95730000Y-77705000I0J-750000D01* 405 | G01* 406 | X95730000Y-79205000D01* 407 | G75* 408 | G02* 409 | X94980000Y-79955000I-750000J0D01* 410 | G01* 411 | X92980000Y-79955000D01* 412 | G75* 413 | G02* 414 | X92230000Y-79205000I0J750000D01* 415 | G01* 416 | X92230000Y-77705000D01* 417 | G75* 418 | G02* 419 | X92980000Y-76955000I750000J0D01* 420 | G01* 421 | G37* 422 | G36* 423 | G01* 424 | X88405000Y-79705000D02* 425 | X90155000Y-79705000D01* 426 | G75* 427 | G02* 428 | X91030000Y-80580000I0J-875000D01* 429 | G01* 430 | X91030000Y-82330000D01* 431 | G75* 432 | G02* 433 | X90155000Y-83205000I-875000J0D01* 434 | G01* 435 | X88405000Y-83205000D01* 436 | G75* 437 | G02* 438 | X87530000Y-82330000I0J875000D01* 439 | G01* 440 | X87530000Y-80580000D01* 441 | G75* 442 | G02* 443 | X88405000Y-79705000I875000J0D01* 444 | G01* 445 | G37* 446 | %TD*% 447 | D14* 448 | %TO.C,J3*% 449 | X171450000Y-162814000D03* 450 | D15* 451 | X168910000Y-162814000D03* 452 | X171450000Y-160274000D03* 453 | X168910000Y-160274000D03* 454 | %TD*% 455 | D14* 456 | %TO.C,J5*% 457 | X130175000Y-162560000D03* 458 | D15* 459 | X130175000Y-160020000D03* 460 | X132715000Y-162560000D03* 461 | X132715000Y-160020000D03* 462 | X135255000Y-162560000D03* 463 | X135255000Y-160020000D03* 464 | X137795000Y-162560000D03* 465 | X137795000Y-160020000D03* 466 | X140335000Y-162560000D03* 467 | X140335000Y-160020000D03* 468 | X142875000Y-162560000D03* 469 | X142875000Y-160020000D03* 470 | %TD*% 471 | D14* 472 | %TO.C,J6*% 473 | X150495000Y-161290000D03* 474 | D15* 475 | X153035000Y-161290000D03* 476 | X155575000Y-161290000D03* 477 | X158115000Y-161290000D03* 478 | X160655000Y-161290000D03* 479 | X163195000Y-161290000D03* 480 | %TD*% 481 | D11* 482 | %TO.C,R1*% 483 | X168275000Y-106934000D03* 484 | D17* 485 | X178435000Y-106934000D03* 486 | %TD*% 487 | %TO.C,R2*% 488 | X163195000Y-101854000D03* 489 | D11* 490 | X153035000Y-101854000D03* 491 | %TD*% 492 | %TO.C,R3*% 493 | X178435000Y-101854000D03* 494 | D17* 495 | X168275000Y-101854000D03* 496 | %TD*% 497 | %TO.C,R4*% 498 | X163195000Y-106934000D03* 499 | D11* 500 | X153035000Y-106934000D03* 501 | %TD*% 502 | D10* 503 | %TO.C,SW1*% 504 | X83820000Y-92035000D03* 505 | D17* 506 | X83820000Y-89535000D03* 507 | X83820000Y-87035000D03* 508 | %TD*% 509 | %TO.C,SW2*% 510 | X131525000Y-77470000D03* 511 | X134025000Y-77470000D03* 512 | D10* 513 | X136525000Y-77470000D03* 514 | %TD*% 515 | %TO.C,U2*% 516 | X125095000Y-107950000D03* 517 | D11* 518 | X142875000Y-100330000D03* 519 | X127635000Y-107950000D03* 520 | X140335000Y-100330000D03* 521 | X130175000Y-107950000D03* 522 | X137795000Y-100330000D03* 523 | X132715000Y-107950000D03* 524 | X135255000Y-100330000D03* 525 | X135255000Y-107950000D03* 526 | X132715000Y-100330000D03* 527 | X137795000Y-107950000D03* 528 | X130175000Y-100330000D03* 529 | X140335000Y-107950000D03* 530 | X127635000Y-100330000D03* 531 | X142875000Y-107950000D03* 532 | X125095000Y-100330000D03* 533 | %TD*% 534 | D10* 535 | %TO.C,U6*% 536 | X183515000Y-135890000D03* 537 | D11* 538 | X150495000Y-151130000D03* 539 | X180975000Y-135890000D03* 540 | X153035000Y-151130000D03* 541 | X178435000Y-135890000D03* 542 | X155575000Y-151130000D03* 543 | X175895000Y-135890000D03* 544 | X158115000Y-151130000D03* 545 | X173355000Y-135890000D03* 546 | X160655000Y-151130000D03* 547 | X170815000Y-135890000D03* 548 | X163195000Y-151130000D03* 549 | X168275000Y-135890000D03* 550 | X165735000Y-151130000D03* 551 | X165735000Y-135890000D03* 552 | X168275000Y-151130000D03* 553 | X163195000Y-135890000D03* 554 | X170815000Y-151130000D03* 555 | X160655000Y-135890000D03* 556 | X173355000Y-151130000D03* 557 | X158115000Y-135890000D03* 558 | X175895000Y-151130000D03* 559 | X155575000Y-135890000D03* 560 | X178435000Y-151130000D03* 561 | X153035000Y-135890000D03* 562 | X180975000Y-151130000D03* 563 | X150495000Y-135890000D03* 564 | X183515000Y-151130000D03* 565 | %TD*% 566 | D10* 567 | %TO.C,X1*% 568 | X130175000Y-91440000D03* 569 | D17* 570 | X130175000Y-83820000D03* 571 | X137795000Y-83820000D03* 572 | X137795000Y-91440000D03* 573 | %TD*% 574 | M02* 575 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-Edge_Cuts.gm1: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*% 2 | %TF.CreationDate,2021-08-01T20:01:47+10:00*% 3 | %TF.ProjectId,6502-computer,36353032-2d63-46f6-9d70-757465722e6b,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:47* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.050000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X77470000Y-71755000D02* 19 | G75* 20 | G02* 21 | X78740000Y-70485000I1270000J0D01* 22 | G01* 23 | X78740000Y-170180000D02* 24 | G75* 25 | G02* 26 | X77470000Y-168910000I0J1270000D01* 27 | G01* 28 | X194310000Y-168910000D02* 29 | G75* 30 | G02* 31 | X193040000Y-170180000I-1270000J0D01* 32 | G01* 33 | X193040000Y-70485000D02* 34 | G75* 35 | G02* 36 | X194310000Y-71755000I0J-1270000D01* 37 | G01* 38 | X77470000Y-168910000D02* 39 | X77470000Y-71755000D01* 40 | X193040000Y-170180000D02* 41 | X78740000Y-170180000D01* 42 | X194310000Y-71755000D02* 43 | X194310000Y-168910000D01* 44 | X78740000Y-70485000D02* 45 | X193040000Y-70485000D01* 46 | M02* 47 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-F_Mask.gts: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*% 2 | %TF.CreationDate,2021-08-01T20:01:47+10:00*% 3 | %TF.ProjectId,6502-computer,36353032-2d63-46f6-9d70-757465722e6b,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Soldermask,Top*% 6 | %TF.FilePolarity,Negative*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:47* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | %ADD10R,1.600000X1.600000*% 15 | %ADD11O,1.600000X1.600000*% 16 | %ADD12C,1.300000*% 17 | %ADD13R,1.300000X1.300000*% 18 | %ADD14R,1.700000X1.700000*% 19 | %ADD15O,1.700000X1.700000*% 20 | %ADD16C,1.397000*% 21 | %ADD17C,1.600000*% 22 | %ADD18R,1.800000X1.800000*% 23 | %ADD19C,1.800000*% 24 | %ADD20C,0.800000*% 25 | %ADD21C,6.400000*% 26 | %ADD22O,1.905000X2.000000*% 27 | %ADD23R,1.905000X2.000000*% 28 | %ADD24O,3.500000X3.500000*% 29 | %ADD25C,1.200000*% 30 | %ADD26R,2.200000X2.200000*% 31 | %ADD27O,2.200000X2.200000*% 32 | %ADD28R,3.500000X3.500000*% 33 | G04 APERTURE END LIST* 34 | D10* 35 | %TO.C,U4*% 36 | X95885000Y-107950000D03* 37 | D11* 38 | X111125000Y-100330000D03* 39 | X98425000Y-107950000D03* 40 | X108585000Y-100330000D03* 41 | X100965000Y-107950000D03* 42 | X106045000Y-100330000D03* 43 | X103505000Y-107950000D03* 44 | X103505000Y-100330000D03* 45 | X106045000Y-107950000D03* 46 | X100965000Y-100330000D03* 47 | X108585000Y-107950000D03* 48 | X98425000Y-100330000D03* 49 | X111125000Y-107950000D03* 50 | X95885000Y-100330000D03* 51 | %TD*% 52 | %TO.C,U9*% 53 | X184404000Y-93980000D03* 54 | X151384000Y-78740000D03* 55 | X181864000Y-93980000D03* 56 | X153924000Y-78740000D03* 57 | X179324000Y-93980000D03* 58 | X156464000Y-78740000D03* 59 | X176784000Y-93980000D03* 60 | X159004000Y-78740000D03* 61 | X174244000Y-93980000D03* 62 | X161544000Y-78740000D03* 63 | X171704000Y-93980000D03* 64 | X164084000Y-78740000D03* 65 | X169164000Y-93980000D03* 66 | X166624000Y-78740000D03* 67 | X166624000Y-93980000D03* 68 | X169164000Y-78740000D03* 69 | X164084000Y-93980000D03* 70 | X171704000Y-78740000D03* 71 | X161544000Y-93980000D03* 72 | X174244000Y-78740000D03* 73 | X159004000Y-93980000D03* 74 | X176784000Y-78740000D03* 75 | X156464000Y-93980000D03* 76 | X179324000Y-78740000D03* 77 | X153924000Y-93980000D03* 78 | X181864000Y-78740000D03* 79 | X151384000Y-93980000D03* 80 | D10* 81 | X184404000Y-78740000D03* 82 | %TD*% 83 | D12* 84 | %TO.C,U7*% 85 | X123190000Y-91440000D03* 86 | X124460000Y-90170000D03* 87 | D13* 88 | X124460000Y-92710000D03* 89 | %TD*% 90 | D11* 91 | %TO.C,U3*% 92 | X95885000Y-135890000D03* 93 | X144145000Y-151130000D03* 94 | X98425000Y-135890000D03* 95 | X141605000Y-151130000D03* 96 | X100965000Y-135890000D03* 97 | X139065000Y-151130000D03* 98 | X103505000Y-135890000D03* 99 | X136525000Y-151130000D03* 100 | X106045000Y-135890000D03* 101 | X133985000Y-151130000D03* 102 | X108585000Y-135890000D03* 103 | X131445000Y-151130000D03* 104 | X111125000Y-135890000D03* 105 | X128905000Y-151130000D03* 106 | X113665000Y-135890000D03* 107 | X126365000Y-151130000D03* 108 | X116205000Y-135890000D03* 109 | X123825000Y-151130000D03* 110 | X118745000Y-135890000D03* 111 | X121285000Y-151130000D03* 112 | X121285000Y-135890000D03* 113 | X118745000Y-151130000D03* 114 | X123825000Y-135890000D03* 115 | X116205000Y-151130000D03* 116 | X126365000Y-135890000D03* 117 | X113665000Y-151130000D03* 118 | X128905000Y-135890000D03* 119 | X111125000Y-151130000D03* 120 | X131445000Y-135890000D03* 121 | X108585000Y-151130000D03* 122 | X133985000Y-135890000D03* 123 | X106045000Y-151130000D03* 124 | X136525000Y-135890000D03* 125 | X103505000Y-151130000D03* 126 | X139065000Y-135890000D03* 127 | X100965000Y-151130000D03* 128 | X141605000Y-135890000D03* 129 | X98425000Y-151130000D03* 130 | X144145000Y-135890000D03* 131 | D10* 132 | X95885000Y-151130000D03* 133 | %TD*% 134 | D14* 135 | %TO.C,J1*% 136 | X85725000Y-151130000D03* 137 | D15* 138 | X83185000Y-151130000D03* 139 | X85725000Y-148590000D03* 140 | X83185000Y-148590000D03* 141 | X85725000Y-146050000D03* 142 | X83185000Y-146050000D03* 143 | X85725000Y-143510000D03* 144 | X83185000Y-143510000D03* 145 | X85725000Y-140970000D03* 146 | X83185000Y-140970000D03* 147 | X85725000Y-138430000D03* 148 | X83185000Y-138430000D03* 149 | X85725000Y-135890000D03* 150 | X83185000Y-135890000D03* 151 | X85725000Y-133350000D03* 152 | X83185000Y-133350000D03* 153 | X85725000Y-130810000D03* 154 | X83185000Y-130810000D03* 155 | X85725000Y-128270000D03* 156 | X83185000Y-128270000D03* 157 | X85725000Y-125730000D03* 158 | X83185000Y-125730000D03* 159 | X85725000Y-123190000D03* 160 | X83185000Y-123190000D03* 161 | X85725000Y-120650000D03* 162 | X83185000Y-120650000D03* 163 | X85725000Y-118110000D03* 164 | X83185000Y-118110000D03* 165 | X85725000Y-115570000D03* 166 | X83185000Y-115570000D03* 167 | X85725000Y-113030000D03* 168 | X83185000Y-113030000D03* 169 | X85725000Y-110490000D03* 170 | X83185000Y-110490000D03* 171 | X85725000Y-107950000D03* 172 | X83185000Y-107950000D03* 173 | X85725000Y-105410000D03* 174 | X83185000Y-105410000D03* 175 | X85725000Y-102870000D03* 176 | X83185000Y-102870000D03* 177 | %TD*% 178 | D10* 179 | %TO.C,U8*% 180 | X183515000Y-114300000D03* 181 | D11* 182 | X150495000Y-129540000D03* 183 | X180975000Y-114300000D03* 184 | X153035000Y-129540000D03* 185 | X178435000Y-114300000D03* 186 | X155575000Y-129540000D03* 187 | X175895000Y-114300000D03* 188 | X158115000Y-129540000D03* 189 | X173355000Y-114300000D03* 190 | X160655000Y-129540000D03* 191 | X170815000Y-114300000D03* 192 | X163195000Y-129540000D03* 193 | X168275000Y-114300000D03* 194 | X165735000Y-129540000D03* 195 | X165735000Y-114300000D03* 196 | X168275000Y-129540000D03* 197 | X163195000Y-114300000D03* 198 | X170815000Y-129540000D03* 199 | X160655000Y-114300000D03* 200 | X173355000Y-129540000D03* 201 | X158115000Y-114300000D03* 202 | X175895000Y-129540000D03* 203 | X155575000Y-114300000D03* 204 | X178435000Y-129540000D03* 205 | X153035000Y-114300000D03* 206 | X180975000Y-129540000D03* 207 | X150495000Y-114300000D03* 208 | X183515000Y-129540000D03* 209 | %TD*% 210 | D10* 211 | %TO.C,U1*% 212 | X95885000Y-129540000D03* 213 | D11* 214 | X144145000Y-114300000D03* 215 | X98425000Y-129540000D03* 216 | X141605000Y-114300000D03* 217 | X100965000Y-129540000D03* 218 | X139065000Y-114300000D03* 219 | X103505000Y-129540000D03* 220 | X136525000Y-114300000D03* 221 | X106045000Y-129540000D03* 222 | X133985000Y-114300000D03* 223 | X108585000Y-129540000D03* 224 | X131445000Y-114300000D03* 225 | X111125000Y-129540000D03* 226 | X128905000Y-114300000D03* 227 | X113665000Y-129540000D03* 228 | X126365000Y-114300000D03* 229 | X116205000Y-129540000D03* 230 | X123825000Y-114300000D03* 231 | X118745000Y-129540000D03* 232 | X121285000Y-114300000D03* 233 | X121285000Y-129540000D03* 234 | X118745000Y-114300000D03* 235 | X123825000Y-129540000D03* 236 | X116205000Y-114300000D03* 237 | X126365000Y-129540000D03* 238 | X113665000Y-114300000D03* 239 | X128905000Y-129540000D03* 240 | X111125000Y-114300000D03* 241 | X131445000Y-129540000D03* 242 | X108585000Y-114300000D03* 243 | X133985000Y-129540000D03* 244 | X106045000Y-114300000D03* 245 | X136525000Y-129540000D03* 246 | X103505000Y-114300000D03* 247 | X139065000Y-129540000D03* 248 | X100965000Y-114300000D03* 249 | X141605000Y-129540000D03* 250 | X98425000Y-114300000D03* 251 | X144145000Y-129540000D03* 252 | X95885000Y-114300000D03* 253 | %TD*% 254 | D15* 255 | %TO.C,J4*% 256 | X120015000Y-160020000D03* 257 | X120015000Y-162560000D03* 258 | X117475000Y-160020000D03* 259 | X117475000Y-162560000D03* 260 | X114935000Y-160020000D03* 261 | X114935000Y-162560000D03* 262 | X112395000Y-160020000D03* 263 | X112395000Y-162560000D03* 264 | X109855000Y-160020000D03* 265 | X109855000Y-162560000D03* 266 | X107315000Y-160020000D03* 267 | D14* 268 | X107315000Y-162560000D03* 269 | %TD*% 270 | D16* 271 | %TO.C,SW3*% 272 | X102235000Y-158750000D03* 273 | X102235000Y-163830000D03* 274 | X94615000Y-158750000D03* 275 | X94615000Y-163830000D03* 276 | %TD*% 277 | D17* 278 | %TO.C,C4*% 279 | X90805000Y-151130000D03* 280 | X90805000Y-148630000D03* 281 | %TD*% 282 | %TO.C,C6*% 283 | X90297000Y-129921000D03* 284 | X90297000Y-127421000D03* 285 | %TD*% 286 | D18* 287 | %TO.C,D2*% 288 | X178054000Y-160274000D03* 289 | D19* 290 | X178054000Y-162814000D03* 291 | %TD*% 292 | D20* 293 | %TO.C,H4*% 294 | X191435056Y-163910944D03* 295 | X189738000Y-163208000D03* 296 | X188040944Y-163910944D03* 297 | X187338000Y-165608000D03* 298 | X188040944Y-167305056D03* 299 | X189738000Y-168008000D03* 300 | X191435056Y-167305056D03* 301 | X192138000Y-165608000D03* 302 | D21* 303 | X189738000Y-165608000D03* 304 | %TD*% 305 | D20* 306 | %TO.C,H2*% 307 | X188040944Y-76754056D03* 308 | X189738000Y-77457000D03* 309 | X191435056Y-76754056D03* 310 | X192138000Y-75057000D03* 311 | X191435056Y-73359944D03* 312 | X189738000Y-72657000D03* 313 | X188040944Y-73359944D03* 314 | X187338000Y-75057000D03* 315 | D21* 316 | X189738000Y-75057000D03* 317 | %TD*% 318 | D20* 319 | %TO.C,H1*% 320 | X80344944Y-76754056D03* 321 | X82042000Y-77457000D03* 322 | X83739056Y-76754056D03* 323 | X84442000Y-75057000D03* 324 | X83739056Y-73359944D03* 325 | X82042000Y-72657000D03* 326 | X80344944Y-73359944D03* 327 | X79642000Y-75057000D03* 328 | D21* 329 | X82042000Y-75057000D03* 330 | %TD*% 331 | D20* 332 | %TO.C,H3*% 333 | X83739056Y-163910944D03* 334 | X82042000Y-163208000D03* 335 | X80344944Y-163910944D03* 336 | X79642000Y-165608000D03* 337 | X80344944Y-167305056D03* 338 | X82042000Y-168008000D03* 339 | X83739056Y-167305056D03* 340 | X84442000Y-165608000D03* 341 | D21* 342 | X82042000Y-165608000D03* 343 | %TD*% 344 | D22* 345 | %TO.C,U5*% 346 | X106680000Y-75565000D03* 347 | X109220000Y-75565000D03* 348 | D23* 349 | X111760000Y-75565000D03* 350 | D24* 351 | X109220000Y-92225000D03* 352 | %TD*% 353 | D17* 354 | %TO.C,C1*% 355 | X188595000Y-135890000D03* 356 | X188595000Y-138390000D03* 357 | %TD*% 358 | %TO.C,C2*% 359 | X120015000Y-105450000D03* 360 | X120015000Y-107950000D03* 361 | %TD*% 362 | %TO.C,C3*% 363 | X188595000Y-116800000D03* 364 | X188595000Y-114300000D03* 365 | %TD*% 366 | %TO.C,C5*% 367 | X125095000Y-82590000D03* 368 | X125095000Y-85090000D03* 369 | %TD*% 370 | %TO.C,C7*% 371 | X101600000Y-75605000D03* 372 | X101600000Y-78105000D03* 373 | %TD*% 374 | %TO.C,C8*% 375 | X184404000Y-104053000D03* 376 | X184404000Y-106553000D03* 377 | %TD*% 378 | D25* 379 | %TO.C,C9*% 380 | X118110000Y-77470000D03* 381 | X119610000Y-77470000D03* 382 | %TD*% 383 | D17* 384 | %TO.C,C10*% 385 | X90805000Y-107950000D03* 386 | X90805000Y-105450000D03* 387 | %TD*% 388 | D26* 389 | %TO.C,D1*% 390 | X99695000Y-93980000D03* 391 | D27* 392 | X89535000Y-93980000D03* 393 | %TD*% 394 | D28* 395 | %TO.C,J2*% 396 | X93980000Y-84455000D03* 397 | G36* 398 | G01* 399 | X92980000Y-76955000D02* 400 | X94980000Y-76955000D01* 401 | G75* 402 | G02* 403 | X95730000Y-77705000I0J-750000D01* 404 | G01* 405 | X95730000Y-79205000D01* 406 | G75* 407 | G02* 408 | X94980000Y-79955000I-750000J0D01* 409 | G01* 410 | X92980000Y-79955000D01* 411 | G75* 412 | G02* 413 | X92230000Y-79205000I0J750000D01* 414 | G01* 415 | X92230000Y-77705000D01* 416 | G75* 417 | G02* 418 | X92980000Y-76955000I750000J0D01* 419 | G01* 420 | G37* 421 | G36* 422 | G01* 423 | X88405000Y-79705000D02* 424 | X90155000Y-79705000D01* 425 | G75* 426 | G02* 427 | X91030000Y-80580000I0J-875000D01* 428 | G01* 429 | X91030000Y-82330000D01* 430 | G75* 431 | G02* 432 | X90155000Y-83205000I-875000J0D01* 433 | G01* 434 | X88405000Y-83205000D01* 435 | G75* 436 | G02* 437 | X87530000Y-82330000I0J875000D01* 438 | G01* 439 | X87530000Y-80580000D01* 440 | G75* 441 | G02* 442 | X88405000Y-79705000I875000J0D01* 443 | G01* 444 | G37* 445 | %TD*% 446 | D14* 447 | %TO.C,J3*% 448 | X171450000Y-162814000D03* 449 | D15* 450 | X168910000Y-162814000D03* 451 | X171450000Y-160274000D03* 452 | X168910000Y-160274000D03* 453 | %TD*% 454 | D14* 455 | %TO.C,J5*% 456 | X130175000Y-162560000D03* 457 | D15* 458 | X130175000Y-160020000D03* 459 | X132715000Y-162560000D03* 460 | X132715000Y-160020000D03* 461 | X135255000Y-162560000D03* 462 | X135255000Y-160020000D03* 463 | X137795000Y-162560000D03* 464 | X137795000Y-160020000D03* 465 | X140335000Y-162560000D03* 466 | X140335000Y-160020000D03* 467 | X142875000Y-162560000D03* 468 | X142875000Y-160020000D03* 469 | %TD*% 470 | D14* 471 | %TO.C,J6*% 472 | X150495000Y-161290000D03* 473 | D15* 474 | X153035000Y-161290000D03* 475 | X155575000Y-161290000D03* 476 | X158115000Y-161290000D03* 477 | X160655000Y-161290000D03* 478 | X163195000Y-161290000D03* 479 | %TD*% 480 | D11* 481 | %TO.C,R1*% 482 | X168275000Y-106934000D03* 483 | D17* 484 | X178435000Y-106934000D03* 485 | %TD*% 486 | %TO.C,R2*% 487 | X163195000Y-101854000D03* 488 | D11* 489 | X153035000Y-101854000D03* 490 | %TD*% 491 | %TO.C,R3*% 492 | X178435000Y-101854000D03* 493 | D17* 494 | X168275000Y-101854000D03* 495 | %TD*% 496 | %TO.C,R4*% 497 | X163195000Y-106934000D03* 498 | D11* 499 | X153035000Y-106934000D03* 500 | %TD*% 501 | D10* 502 | %TO.C,SW1*% 503 | X83820000Y-92035000D03* 504 | D17* 505 | X83820000Y-89535000D03* 506 | X83820000Y-87035000D03* 507 | %TD*% 508 | %TO.C,SW2*% 509 | X131525000Y-77470000D03* 510 | X134025000Y-77470000D03* 511 | D10* 512 | X136525000Y-77470000D03* 513 | %TD*% 514 | %TO.C,U2*% 515 | X125095000Y-107950000D03* 516 | D11* 517 | X142875000Y-100330000D03* 518 | X127635000Y-107950000D03* 519 | X140335000Y-100330000D03* 520 | X130175000Y-107950000D03* 521 | X137795000Y-100330000D03* 522 | X132715000Y-107950000D03* 523 | X135255000Y-100330000D03* 524 | X135255000Y-107950000D03* 525 | X132715000Y-100330000D03* 526 | X137795000Y-107950000D03* 527 | X130175000Y-100330000D03* 528 | X140335000Y-107950000D03* 529 | X127635000Y-100330000D03* 530 | X142875000Y-107950000D03* 531 | X125095000Y-100330000D03* 532 | %TD*% 533 | D10* 534 | %TO.C,U6*% 535 | X183515000Y-135890000D03* 536 | D11* 537 | X150495000Y-151130000D03* 538 | X180975000Y-135890000D03* 539 | X153035000Y-151130000D03* 540 | X178435000Y-135890000D03* 541 | X155575000Y-151130000D03* 542 | X175895000Y-135890000D03* 543 | X158115000Y-151130000D03* 544 | X173355000Y-135890000D03* 545 | X160655000Y-151130000D03* 546 | X170815000Y-135890000D03* 547 | X163195000Y-151130000D03* 548 | X168275000Y-135890000D03* 549 | X165735000Y-151130000D03* 550 | X165735000Y-135890000D03* 551 | X168275000Y-151130000D03* 552 | X163195000Y-135890000D03* 553 | X170815000Y-151130000D03* 554 | X160655000Y-135890000D03* 555 | X173355000Y-151130000D03* 556 | X158115000Y-135890000D03* 557 | X175895000Y-151130000D03* 558 | X155575000Y-135890000D03* 559 | X178435000Y-151130000D03* 560 | X153035000Y-135890000D03* 561 | X180975000Y-151130000D03* 562 | X150495000Y-135890000D03* 563 | X183515000Y-151130000D03* 564 | %TD*% 565 | D10* 566 | %TO.C,X1*% 567 | X130175000Y-91440000D03* 568 | D17* 569 | X130175000Y-83820000D03* 570 | X137795000Y-83820000D03* 571 | X137795000Y-91440000D03* 572 | %TD*% 573 | M02* 574 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-F_Paste.gtp: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,5.1.9+dfsg1-1*% 2 | %TF.CreationDate,2021-08-01T20:01:47+10:00*% 3 | %TF.ProjectId,6502-computer,36353032-2d63-46f6-9d70-757465722e6b,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Top*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:47* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 APERTURE END LIST* 15 | M02* 16 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-NPTH-drl_map.gbr: -------------------------------------------------------------------------------- 1 | %FSLAX45Y45*% 2 | G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)* 3 | G04 Created by KiCad (PCBNEW 5.1.9+dfsg1-1) date 2021-08-01 20:01:58* 4 | %MOMM*% 5 | %LPD*% 6 | G01* 7 | G04 APERTURE LIST* 8 | %TA.AperFunction,Profile*% 9 | %ADD10C,0.050000*% 10 | %TD*% 11 | %ADD11C,0.200000*% 12 | %ADD12C,0.300000*% 13 | G04 APERTURE END LIST* 14 | D10* 15 | X7747000Y-7175500D02* 16 | G75* 17 | G02* 18 | X7874000Y-7048500I127000J0D01* 19 | G01* 20 | X7874000Y-17018000D02* 21 | G75* 22 | G02* 23 | X7747000Y-16891000I0J127000D01* 24 | G01* 25 | X19431000Y-16891000D02* 26 | G75* 27 | G02* 28 | X19304000Y-17018000I-127000J0D01* 29 | G01* 30 | X19304000Y-7048500D02* 31 | G75* 32 | G02* 33 | X19431000Y-7175500I0J-127000D01* 34 | G01* 35 | X7747000Y-16891000D02* 36 | X7747000Y-7175500D01* 37 | X19304000Y-17018000D02* 38 | X7874000Y-17018000D01* 39 | X19431000Y-7175500D02* 40 | X19431000Y-16891000D01* 41 | X7874000Y-7048500D02* 42 | X19304000Y-7048500D01* 43 | D11* 44 | X10747000Y-9047500D02* 45 | X11097000Y-9397500D01* 46 | X11097000Y-9047500D02* 47 | X10747000Y-9397500D01* 48 | D12* 49 | X8030928Y-17486214D02* 50 | X8030928Y-17186214D01* 51 | X8102357Y-17186214D01* 52 | X8145214Y-17200500D01* 53 | X8173786Y-17229072D01* 54 | X8188071Y-17257643D01* 55 | X8202357Y-17314786D01* 56 | X8202357Y-17357643D01* 57 | X8188071Y-17414786D01* 58 | X8173786Y-17443357D01* 59 | X8145214Y-17471929D01* 60 | X8102357Y-17486214D01* 61 | X8030928Y-17486214D01* 62 | X8330928Y-17486214D02* 63 | X8330928Y-17286214D01* 64 | X8330928Y-17343357D02* 65 | X8345214Y-17314786D01* 66 | X8359500Y-17300500D01* 67 | X8388071Y-17286214D01* 68 | X8416643Y-17286214D01* 69 | X8516643Y-17486214D02* 70 | X8516643Y-17286214D01* 71 | X8516643Y-17186214D02* 72 | X8502357Y-17200500D01* 73 | X8516643Y-17214786D01* 74 | X8530928Y-17200500D01* 75 | X8516643Y-17186214D01* 76 | X8516643Y-17214786D01* 77 | X8702357Y-17486214D02* 78 | X8673786Y-17471929D01* 79 | X8659500Y-17443357D01* 80 | X8659500Y-17186214D01* 81 | X8859500Y-17486214D02* 82 | X8830928Y-17471929D01* 83 | X8816643Y-17443357D01* 84 | X8816643Y-17186214D01* 85 | X9202357Y-17486214D02* 86 | X9202357Y-17186214D01* 87 | X9302357Y-17400500D01* 88 | X9402357Y-17186214D01* 89 | X9402357Y-17486214D01* 90 | X9673786Y-17486214D02* 91 | X9673786Y-17329072D01* 92 | X9659500Y-17300500D01* 93 | X9630928Y-17286214D01* 94 | X9573786Y-17286214D01* 95 | X9545214Y-17300500D01* 96 | X9673786Y-17471929D02* 97 | X9645214Y-17486214D01* 98 | X9573786Y-17486214D01* 99 | X9545214Y-17471929D01* 100 | X9530928Y-17443357D01* 101 | X9530928Y-17414786D01* 102 | X9545214Y-17386214D01* 103 | X9573786Y-17371929D01* 104 | X9645214Y-17371929D01* 105 | X9673786Y-17357643D01* 106 | X9816643Y-17286214D02* 107 | X9816643Y-17586214D01* 108 | X9816643Y-17300500D02* 109 | X9845214Y-17286214D01* 110 | X9902357Y-17286214D01* 111 | X9930928Y-17300500D01* 112 | X9945214Y-17314786D01* 113 | X9959500Y-17343357D01* 114 | X9959500Y-17429072D01* 115 | X9945214Y-17457643D01* 116 | X9930928Y-17471929D01* 117 | X9902357Y-17486214D01* 118 | X9845214Y-17486214D01* 119 | X9816643Y-17471929D01* 120 | X10088071Y-17457643D02* 121 | X10102357Y-17471929D01* 122 | X10088071Y-17486214D01* 123 | X10073786Y-17471929D01* 124 | X10088071Y-17457643D01* 125 | X10088071Y-17486214D01* 126 | X10088071Y-17300500D02* 127 | X10102357Y-17314786D01* 128 | X10088071Y-17329072D01* 129 | X10073786Y-17314786D01* 130 | X10088071Y-17300500D01* 131 | X10088071Y-17329072D01* 132 | X7394500Y-17805500D02* 133 | X7744500Y-18155500D01* 134 | X7744500Y-17805500D02* 135 | X7394500Y-18155500D01* 136 | X8002357Y-17816214D02* 137 | X8188071Y-17816214D01* 138 | X8088071Y-17930500D01* 139 | X8130928Y-17930500D01* 140 | X8159500Y-17944786D01* 141 | X8173786Y-17959072D01* 142 | X8188071Y-17987643D01* 143 | X8188071Y-18059072D01* 144 | X8173786Y-18087643D01* 145 | X8159500Y-18101929D01* 146 | X8130928Y-18116214D01* 147 | X8045214Y-18116214D01* 148 | X8016643Y-18101929D01* 149 | X8002357Y-18087643D01* 150 | X8316643Y-18087643D02* 151 | X8330928Y-18101929D01* 152 | X8316643Y-18116214D01* 153 | X8302357Y-18101929D01* 154 | X8316643Y-18087643D01* 155 | X8316643Y-18116214D01* 156 | X8602357Y-17816214D02* 157 | X8459500Y-17816214D01* 158 | X8445214Y-17959072D01* 159 | X8459500Y-17944786D01* 160 | X8488071Y-17930500D01* 161 | X8559500Y-17930500D01* 162 | X8588071Y-17944786D01* 163 | X8602357Y-17959072D01* 164 | X8616643Y-17987643D01* 165 | X8616643Y-18059072D01* 166 | X8602357Y-18087643D01* 167 | X8588071Y-18101929D01* 168 | X8559500Y-18116214D01* 169 | X8488071Y-18116214D01* 170 | X8459500Y-18101929D01* 171 | X8445214Y-18087643D01* 172 | X8802357Y-17816214D02* 173 | X8830928Y-17816214D01* 174 | X8859500Y-17830500D01* 175 | X8873786Y-17844786D01* 176 | X8888071Y-17873357D01* 177 | X8902357Y-17930500D01* 178 | X8902357Y-18001929D01* 179 | X8888071Y-18059072D01* 180 | X8873786Y-18087643D01* 181 | X8859500Y-18101929D01* 182 | X8830928Y-18116214D01* 183 | X8802357Y-18116214D01* 184 | X8773786Y-18101929D01* 185 | X8759500Y-18087643D01* 186 | X8745214Y-18059072D01* 187 | X8730928Y-18001929D01* 188 | X8730928Y-17930500D01* 189 | X8745214Y-17873357D01* 190 | X8759500Y-17844786D01* 191 | X8773786Y-17830500D01* 192 | X8802357Y-17816214D01* 193 | X9030928Y-18116214D02* 194 | X9030928Y-17916214D01* 195 | X9030928Y-17944786D02* 196 | X9045214Y-17930500D01* 197 | X9073786Y-17916214D01* 198 | X9116643Y-17916214D01* 199 | X9145214Y-17930500D01* 200 | X9159500Y-17959072D01* 201 | X9159500Y-18116214D01* 202 | X9159500Y-17959072D02* 203 | X9173786Y-17930500D01* 204 | X9202357Y-17916214D01* 205 | X9245214Y-17916214D01* 206 | X9273786Y-17930500D01* 207 | X9288071Y-17959072D01* 208 | X9288071Y-18116214D01* 209 | X9430928Y-18116214D02* 210 | X9430928Y-17916214D01* 211 | X9430928Y-17944786D02* 212 | X9445214Y-17930500D01* 213 | X9473786Y-17916214D01* 214 | X9516643Y-17916214D01* 215 | X9545214Y-17930500D01* 216 | X9559500Y-17959072D01* 217 | X9559500Y-18116214D01* 218 | X9559500Y-17959072D02* 219 | X9573786Y-17930500D01* 220 | X9602357Y-17916214D01* 221 | X9645214Y-17916214D01* 222 | X9673786Y-17930500D01* 223 | X9688071Y-17959072D01* 224 | X9688071Y-18116214D01* 225 | X10273786Y-17801929D02* 226 | X10016643Y-18187643D01* 227 | X10659500Y-17816214D02* 228 | X10688071Y-17816214D01* 229 | X10716643Y-17830500D01* 230 | X10730928Y-17844786D01* 231 | X10745214Y-17873357D01* 232 | X10759500Y-17930500D01* 233 | X10759500Y-18001929D01* 234 | X10745214Y-18059072D01* 235 | X10730928Y-18087643D01* 236 | X10716643Y-18101929D01* 237 | X10688071Y-18116214D01* 238 | X10659500Y-18116214D01* 239 | X10630928Y-18101929D01* 240 | X10616643Y-18087643D01* 241 | X10602357Y-18059072D01* 242 | X10588071Y-18001929D01* 243 | X10588071Y-17930500D01* 244 | X10602357Y-17873357D01* 245 | X10616643Y-17844786D01* 246 | X10630928Y-17830500D01* 247 | X10659500Y-17816214D01* 248 | X10888071Y-18087643D02* 249 | X10902357Y-18101929D01* 250 | X10888071Y-18116214D01* 251 | X10873786Y-18101929D01* 252 | X10888071Y-18087643D01* 253 | X10888071Y-18116214D01* 254 | X11188071Y-18116214D02* 255 | X11016643Y-18116214D01* 256 | X11102357Y-18116214D02* 257 | X11102357Y-17816214D01* 258 | X11073786Y-17859072D01* 259 | X11045214Y-17887643D01* 260 | X11016643Y-17901929D01* 261 | X11288071Y-17816214D02* 262 | X11473786Y-17816214D01* 263 | X11373786Y-17930500D01* 264 | X11416643Y-17930500D01* 265 | X11445214Y-17944786D01* 266 | X11459500Y-17959072D01* 267 | X11473786Y-17987643D01* 268 | X11473786Y-18059072D01* 269 | X11459500Y-18087643D01* 270 | X11445214Y-18101929D01* 271 | X11416643Y-18116214D01* 272 | X11330928Y-18116214D01* 273 | X11302357Y-18101929D01* 274 | X11288071Y-18087643D01* 275 | X11645214Y-17944786D02* 276 | X11616643Y-17930500D01* 277 | X11602357Y-17916214D01* 278 | X11588071Y-17887643D01* 279 | X11588071Y-17873357D01* 280 | X11602357Y-17844786D01* 281 | X11616643Y-17830500D01* 282 | X11645214Y-17816214D01* 283 | X11702357Y-17816214D01* 284 | X11730928Y-17830500D01* 285 | X11745214Y-17844786D01* 286 | X11759500Y-17873357D01* 287 | X11759500Y-17887643D01* 288 | X11745214Y-17916214D01* 289 | X11730928Y-17930500D01* 290 | X11702357Y-17944786D01* 291 | X11645214Y-17944786D01* 292 | X11616643Y-17959072D01* 293 | X11602357Y-17973357D01* 294 | X11588071Y-18001929D01* 295 | X11588071Y-18059072D01* 296 | X11602357Y-18087643D01* 297 | X11616643Y-18101929D01* 298 | X11645214Y-18116214D01* 299 | X11702357Y-18116214D01* 300 | X11730928Y-18101929D01* 301 | X11745214Y-18087643D01* 302 | X11759500Y-18059072D01* 303 | X11759500Y-18001929D01* 304 | X11745214Y-17973357D01* 305 | X11730928Y-17959072D01* 306 | X11702357Y-17944786D01* 307 | X11873786Y-17816214D02* 308 | X11873786Y-17873357D01* 309 | X11988071Y-17816214D02* 310 | X11988071Y-17873357D01* 311 | X12430928Y-18230500D02* 312 | X12416643Y-18216214D01* 313 | X12388071Y-18173357D01* 314 | X12373786Y-18144786D01* 315 | X12359500Y-18101929D01* 316 | X12345214Y-18030500D01* 317 | X12345214Y-17973357D01* 318 | X12359500Y-17901929D01* 319 | X12373786Y-17859072D01* 320 | X12388071Y-17830500D01* 321 | X12416643Y-17787643D01* 322 | X12430928Y-17773357D01* 323 | X12702357Y-18116214D02* 324 | X12530928Y-18116214D01* 325 | X12616643Y-18116214D02* 326 | X12616643Y-17816214D01* 327 | X12588071Y-17859072D01* 328 | X12559500Y-17887643D01* 329 | X12530928Y-17901929D01* 330 | X13059500Y-18116214D02* 331 | X13059500Y-17816214D01* 332 | X13188071Y-18116214D02* 333 | X13188071Y-17959072D01* 334 | X13173786Y-17930500D01* 335 | X13145214Y-17916214D01* 336 | X13102357Y-17916214D01* 337 | X13073786Y-17930500D01* 338 | X13059500Y-17944786D01* 339 | X13373786Y-18116214D02* 340 | X13345214Y-18101929D01* 341 | X13330928Y-18087643D01* 342 | X13316643Y-18059072D01* 343 | X13316643Y-17973357D01* 344 | X13330928Y-17944786D01* 345 | X13345214Y-17930500D01* 346 | X13373786Y-17916214D01* 347 | X13416643Y-17916214D01* 348 | X13445214Y-17930500D01* 349 | X13459500Y-17944786D01* 350 | X13473786Y-17973357D01* 351 | X13473786Y-18059072D01* 352 | X13459500Y-18087643D01* 353 | X13445214Y-18101929D01* 354 | X13416643Y-18116214D01* 355 | X13373786Y-18116214D01* 356 | X13645214Y-18116214D02* 357 | X13616643Y-18101929D01* 358 | X13602357Y-18073357D01* 359 | X13602357Y-17816214D01* 360 | X13873786Y-18101929D02* 361 | X13845214Y-18116214D01* 362 | X13788071Y-18116214D01* 363 | X13759500Y-18101929D01* 364 | X13745214Y-18073357D01* 365 | X13745214Y-17959072D01* 366 | X13759500Y-17930500D01* 367 | X13788071Y-17916214D01* 368 | X13845214Y-17916214D01* 369 | X13873786Y-17930500D01* 370 | X13888071Y-17959072D01* 371 | X13888071Y-17987643D01* 372 | X13745214Y-18016214D01* 373 | X13988071Y-18230500D02* 374 | X14002357Y-18216214D01* 375 | X14030928Y-18173357D01* 376 | X14045214Y-18144786D01* 377 | X14059500Y-18101929D01* 378 | X14073786Y-18030500D01* 379 | X14073786Y-17973357D01* 380 | X14059500Y-17901929D01* 381 | X14045214Y-17859072D01* 382 | X14030928Y-17830500D01* 383 | X14002357Y-17787643D01* 384 | X13988071Y-17773357D01* 385 | X14530928Y-18230500D02* 386 | X14516643Y-18216214D01* 387 | X14488071Y-18173357D01* 388 | X14473786Y-18144786D01* 389 | X14459500Y-18101929D01* 390 | X14445214Y-18030500D01* 391 | X14445214Y-17973357D01* 392 | X14459500Y-17901929D01* 393 | X14473786Y-17859072D01* 394 | X14488071Y-17830500D01* 395 | X14516643Y-17787643D01* 396 | X14530928Y-17773357D01* 397 | X14645214Y-17916214D02* 398 | X14645214Y-18116214D01* 399 | X14645214Y-17944786D02* 400 | X14659500Y-17930500D01* 401 | X14688071Y-17916214D01* 402 | X14730928Y-17916214D01* 403 | X14759500Y-17930500D01* 404 | X14773786Y-17959072D01* 405 | X14773786Y-18116214D01* 406 | X14959500Y-18116214D02* 407 | X14930928Y-18101929D01* 408 | X14916643Y-18087643D01* 409 | X14902357Y-18059072D01* 410 | X14902357Y-17973357D01* 411 | X14916643Y-17944786D01* 412 | X14930928Y-17930500D01* 413 | X14959500Y-17916214D01* 414 | X15002357Y-17916214D01* 415 | X15030928Y-17930500D01* 416 | X15045214Y-17944786D01* 417 | X15059500Y-17973357D01* 418 | X15059500Y-18059072D01* 419 | X15045214Y-18087643D01* 420 | X15030928Y-18101929D01* 421 | X15002357Y-18116214D01* 422 | X14959500Y-18116214D01* 423 | X15145214Y-17916214D02* 424 | X15259500Y-17916214D01* 425 | X15188071Y-17816214D02* 426 | X15188071Y-18073357D01* 427 | X15202357Y-18101929D01* 428 | X15230928Y-18116214D01* 429 | X15259500Y-18116214D01* 430 | X15588071Y-17916214D02* 431 | X15588071Y-18216214D01* 432 | X15588071Y-17930500D02* 433 | X15616643Y-17916214D01* 434 | X15673786Y-17916214D01* 435 | X15702357Y-17930500D01* 436 | X15716643Y-17944786D01* 437 | X15730928Y-17973357D01* 438 | X15730928Y-18059072D01* 439 | X15716643Y-18087643D01* 440 | X15702357Y-18101929D01* 441 | X15673786Y-18116214D01* 442 | X15616643Y-18116214D01* 443 | X15588071Y-18101929D01* 444 | X15902357Y-18116214D02* 445 | X15873786Y-18101929D01* 446 | X15859500Y-18073357D01* 447 | X15859500Y-17816214D01* 448 | X16145214Y-18116214D02* 449 | X16145214Y-17959072D01* 450 | X16130928Y-17930500D01* 451 | X16102357Y-17916214D01* 452 | X16045214Y-17916214D01* 453 | X16016643Y-17930500D01* 454 | X16145214Y-18101929D02* 455 | X16116643Y-18116214D01* 456 | X16045214Y-18116214D01* 457 | X16016643Y-18101929D01* 458 | X16002357Y-18073357D01* 459 | X16002357Y-18044786D01* 460 | X16016643Y-18016214D01* 461 | X16045214Y-18001929D01* 462 | X16116643Y-18001929D01* 463 | X16145214Y-17987643D01* 464 | X16245214Y-17916214D02* 465 | X16359500Y-17916214D01* 466 | X16288071Y-17816214D02* 467 | X16288071Y-18073357D01* 468 | X16302357Y-18101929D01* 469 | X16330928Y-18116214D01* 470 | X16359500Y-18116214D01* 471 | X16573786Y-18101929D02* 472 | X16545214Y-18116214D01* 473 | X16488071Y-18116214D01* 474 | X16459500Y-18101929D01* 475 | X16445214Y-18073357D01* 476 | X16445214Y-17959072D01* 477 | X16459500Y-17930500D01* 478 | X16488071Y-17916214D01* 479 | X16545214Y-17916214D01* 480 | X16573786Y-17930500D01* 481 | X16588071Y-17959072D01* 482 | X16588071Y-17987643D01* 483 | X16445214Y-18016214D01* 484 | X16845214Y-18116214D02* 485 | X16845214Y-17816214D01* 486 | X16845214Y-18101929D02* 487 | X16816643Y-18116214D01* 488 | X16759500Y-18116214D01* 489 | X16730928Y-18101929D01* 490 | X16716643Y-18087643D01* 491 | X16702357Y-18059072D01* 492 | X16702357Y-17973357D01* 493 | X16716643Y-17944786D01* 494 | X16730928Y-17930500D01* 495 | X16759500Y-17916214D01* 496 | X16816643Y-17916214D01* 497 | X16845214Y-17930500D01* 498 | X16959500Y-18230500D02* 499 | X16973786Y-18216214D01* 500 | X17002357Y-18173357D01* 501 | X17016643Y-18144786D01* 502 | X17030928Y-18101929D01* 503 | X17045214Y-18030500D01* 504 | X17045214Y-17973357D01* 505 | X17030928Y-17901929D01* 506 | X17016643Y-17859072D01* 507 | X17002357Y-17830500D01* 508 | X16973786Y-17787643D01* 509 | X16959500Y-17773357D01* 510 | M02* 511 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 5.1.9+dfsg1-1} date Sun Aug 1 20:01:57 2021 3 | ; FORMAT={-:-/ absolute / metric / decimal} 4 | ; #@! TF.CreationDate,2021-08-01T20:01:57+10:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.9+dfsg1-1 6 | ; #@! TF.FileFunction,NonPlated,1,2,NPTH 7 | FMAT,2 8 | METRIC 9 | T1C3.500 10 | % 11 | G90 12 | G05 13 | T1 14 | X109.22Y-92.225 15 | T0 16 | M30 17 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-PTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 5.1.9+dfsg1-1} date Sun Aug 1 20:01:57 2021 3 | ; FORMAT={-:-/ absolute / metric / decimal} 4 | ; #@! TF.CreationDate,2021-08-01T20:01:57+10:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.9+dfsg1-1 6 | ; #@! TF.FileFunction,Plated,1,2,PTH 7 | FMAT,2 8 | METRIC 9 | T1C0.400 10 | T2C0.500 11 | T3C0.600 12 | T4C0.750 13 | T5C0.800 14 | T6C0.813 15 | T7C0.900 16 | T8C1.000 17 | T9C1.100 18 | T10C3.200 19 | % 20 | G90 21 | G05 22 | T1 23 | X86.36Y-153.67 24 | X87.662Y-104.235 25 | X88.797Y-116.562 26 | X90.551Y-132.969 27 | X90.551Y-134.112 28 | X92.138Y-144.208 29 | X92.693Y-110.346 30 | X92.837Y-144.907 31 | X93.599Y-98.171 32 | X95.476Y-117.946 33 | X96.252Y-118.577 34 | X96.266Y-117.221 35 | X97.409Y-154.051 36 | X97.536Y-137.541 37 | X98.26Y-149.33 38 | X99.822Y-137.414 39 | X100.203Y-117.602 40 | X100.457Y-148.717 41 | X100.965Y-154.051 42 | X101.346Y-117.602 43 | X105.41Y-162.052 44 | X105.41Y-164.465 45 | X107.315Y-106.934 46 | X107.315Y-115.824 47 | X108.712Y-119.507 48 | X109.347Y-127.508 49 | X109.347Y-127.508 50 | X113.538Y-119.38 51 | X114.046Y-96.647 52 | X114.046Y-106.1 53 | X115.062Y-97.409 54 | X115.443Y-117.602 55 | X116.713Y-109.3 56 | X117.094Y-127.0 57 | X117.221Y-117.602 58 | X117.983Y-126.238 59 | X118.872Y-117.602 60 | X123.317Y-132.588 61 | X124.46Y-133.858 62 | X125.857Y-104.88 63 | X126.746Y-133.096 64 | X127.127Y-96.647 65 | X127.508Y-143.256 66 | X129.667Y-96.012 67 | X130.556Y-112.014 68 | X135.763Y-119.38 69 | X136.271Y-111.252 70 | X137.033Y-110.49 71 | X137.16Y-119.38 72 | X138.176Y-110.49 73 | X143.451Y-111.701 74 | X143.51Y-133.604 75 | X143.923Y-112.583 76 | X144.526Y-137.795 77 | X145.034Y-104.521 78 | X145.513Y-133.096 79 | X145.542Y-100.076 80 | X145.923Y-110.49 81 | X145.923Y-116.078 82 | X146.05Y-96.012 83 | X146.238Y-131.501 84 | X146.245Y-111.438 85 | X146.584Y-128.397 86 | X146.685Y-115.062 87 | X147.034Y-130.048 88 | X147.193Y-77.089 89 | X147.574Y-159.258 90 | X147.701Y-109.22 91 | X147.891Y-84.772 92 | X148.399Y-86.804 93 | X148.463Y-116.078 94 | X148.907Y-88.837 95 | X148.971Y-75.819 96 | X149.352Y-90.551 97 | X150.114Y-125.984 98 | X153.035Y-146.05 99 | X154.051Y-72.517 100 | X154.239Y-119.584 101 | X155.101Y-118.721 102 | X155.575Y-146.05 103 | X155.916Y-117.906 104 | X155.956Y-110.49 105 | X156.693Y-117.13 106 | X156.972Y-111.379 107 | X157.734Y-116.676 108 | X158.115Y-137.405 109 | X158.115Y-146.05 110 | X160.655Y-146.05 111 | X160.909Y-123.481 112 | X161.925Y-124.333 113 | X163.195Y-146.05 114 | X163.323Y-123.589 115 | X165.608Y-146.05 116 | X168.275Y-146.05 117 | X168.719Y-140.653 118 | X170.815Y-146.05 119 | X171.704Y-122.301 120 | X172.466Y-121.539 121 | X173.487Y-123.058 122 | X174.244Y-138.049 123 | X175.133Y-123.952 124 | X177.551Y-146.68 125 | X177.673Y-149.098 126 | X184.531Y-118.364 127 | X186.055Y-162.433 128 | T2 129 | X79.642Y-75.057 130 | X79.642Y-165.608 131 | X80.345Y-73.36 132 | X80.345Y-76.754 133 | X80.345Y-163.911 134 | X80.345Y-167.305 135 | X82.042Y-72.657 136 | X82.042Y-77.457 137 | X82.042Y-163.208 138 | X82.042Y-168.008 139 | X83.739Y-73.36 140 | X83.739Y-76.754 141 | X83.739Y-163.911 142 | X83.739Y-167.305 143 | X84.442Y-75.057 144 | X84.442Y-165.608 145 | X187.338Y-75.057 146 | X187.338Y-165.608 147 | X188.041Y-73.36 148 | X188.041Y-76.754 149 | X188.041Y-163.911 150 | X188.041Y-167.305 151 | X189.738Y-72.657 152 | X189.738Y-77.457 153 | X189.738Y-163.208 154 | X189.738Y-168.008 155 | X191.435Y-73.36 156 | X191.435Y-76.754 157 | X191.435Y-163.911 158 | X191.435Y-167.305 159 | X192.138Y-75.057 160 | X192.138Y-165.608 161 | T3 162 | X118.11Y-77.47 163 | X119.61Y-77.47 164 | T4 165 | X123.19Y-91.44 166 | X124.46Y-90.17 167 | X124.46Y-92.71 168 | T5 169 | X83.82Y-87.035 170 | X83.82Y-89.535 171 | X83.82Y-92.035 172 | X90.297Y-127.421 173 | X90.297Y-129.921 174 | X90.805Y-105.45 175 | X90.805Y-107.95 176 | X90.805Y-148.63 177 | X90.805Y-151.13 178 | X95.885Y-100.33 179 | X95.885Y-107.95 180 | X95.885Y-114.3 181 | X95.885Y-129.54 182 | X95.885Y-135.89 183 | X95.885Y-151.13 184 | X98.425Y-100.33 185 | X98.425Y-107.95 186 | X98.425Y-114.3 187 | X98.425Y-129.54 188 | X98.425Y-135.89 189 | X98.425Y-151.13 190 | X100.965Y-100.33 191 | X100.965Y-107.95 192 | X100.965Y-114.3 193 | X100.965Y-129.54 194 | X100.965Y-135.89 195 | X100.965Y-151.13 196 | X101.6Y-75.605 197 | X101.6Y-78.105 198 | X103.505Y-100.33 199 | X103.505Y-107.95 200 | X103.505Y-114.3 201 | X103.505Y-129.54 202 | X103.505Y-135.89 203 | X103.505Y-151.13 204 | X106.045Y-100.33 205 | X106.045Y-107.95 206 | X106.045Y-114.3 207 | X106.045Y-129.54 208 | X106.045Y-135.89 209 | X106.045Y-151.13 210 | X108.585Y-100.33 211 | X108.585Y-107.95 212 | X108.585Y-114.3 213 | X108.585Y-129.54 214 | X108.585Y-135.89 215 | X108.585Y-151.13 216 | X111.125Y-100.33 217 | X111.125Y-107.95 218 | X111.125Y-114.3 219 | X111.125Y-129.54 220 | X111.125Y-135.89 221 | X111.125Y-151.13 222 | X113.665Y-114.3 223 | X113.665Y-129.54 224 | X113.665Y-135.89 225 | X113.665Y-151.13 226 | X116.205Y-114.3 227 | X116.205Y-129.54 228 | X116.205Y-135.89 229 | X116.205Y-151.13 230 | X118.745Y-114.3 231 | X118.745Y-129.54 232 | X118.745Y-135.89 233 | X118.745Y-151.13 234 | X120.015Y-105.45 235 | X120.015Y-107.95 236 | X121.285Y-114.3 237 | X121.285Y-129.54 238 | X121.285Y-135.89 239 | X121.285Y-151.13 240 | X123.825Y-114.3 241 | X123.825Y-129.54 242 | X123.825Y-135.89 243 | X123.825Y-151.13 244 | X125.095Y-82.59 245 | X125.095Y-85.09 246 | X125.095Y-100.33 247 | X125.095Y-107.95 248 | X126.365Y-114.3 249 | X126.365Y-129.54 250 | X126.365Y-135.89 251 | X126.365Y-151.13 252 | X127.635Y-100.33 253 | X127.635Y-107.95 254 | X128.905Y-114.3 255 | X128.905Y-129.54 256 | X128.905Y-135.89 257 | X128.905Y-151.13 258 | X130.175Y-83.82 259 | X130.175Y-91.44 260 | X130.175Y-100.33 261 | X130.175Y-107.95 262 | X131.445Y-114.3 263 | X131.445Y-129.54 264 | X131.445Y-135.89 265 | X131.445Y-151.13 266 | X131.525Y-77.47 267 | X132.715Y-100.33 268 | X132.715Y-107.95 269 | X133.985Y-114.3 270 | X133.985Y-129.54 271 | X133.985Y-135.89 272 | X133.985Y-151.13 273 | X134.025Y-77.47 274 | X135.255Y-100.33 275 | X135.255Y-107.95 276 | X136.525Y-77.47 277 | X136.525Y-114.3 278 | X136.525Y-129.54 279 | X136.525Y-135.89 280 | X136.525Y-151.13 281 | X137.795Y-83.82 282 | X137.795Y-91.44 283 | X137.795Y-100.33 284 | X137.795Y-107.95 285 | X139.065Y-114.3 286 | X139.065Y-129.54 287 | X139.065Y-135.89 288 | X139.065Y-151.13 289 | X140.335Y-100.33 290 | X140.335Y-107.95 291 | X141.605Y-114.3 292 | X141.605Y-129.54 293 | X141.605Y-135.89 294 | X141.605Y-151.13 295 | X142.875Y-100.33 296 | X142.875Y-107.95 297 | X144.145Y-114.3 298 | X144.145Y-129.54 299 | X144.145Y-135.89 300 | X144.145Y-151.13 301 | X150.495Y-114.3 302 | X150.495Y-129.54 303 | X150.495Y-135.89 304 | X150.495Y-151.13 305 | X151.384Y-78.74 306 | X151.384Y-93.98 307 | X153.035Y-101.854 308 | X153.035Y-106.934 309 | X153.035Y-114.3 310 | X153.035Y-129.54 311 | X153.035Y-135.89 312 | X153.035Y-151.13 313 | X153.924Y-78.74 314 | X153.924Y-93.98 315 | X155.575Y-114.3 316 | X155.575Y-129.54 317 | X155.575Y-135.89 318 | X155.575Y-151.13 319 | X156.464Y-78.74 320 | X156.464Y-93.98 321 | X158.115Y-114.3 322 | X158.115Y-129.54 323 | X158.115Y-135.89 324 | X158.115Y-151.13 325 | X159.004Y-78.74 326 | X159.004Y-93.98 327 | X160.655Y-114.3 328 | X160.655Y-129.54 329 | X160.655Y-135.89 330 | X160.655Y-151.13 331 | X161.544Y-78.74 332 | X161.544Y-93.98 333 | X163.195Y-101.854 334 | X163.195Y-106.934 335 | X163.195Y-114.3 336 | X163.195Y-129.54 337 | X163.195Y-135.89 338 | X163.195Y-151.13 339 | X164.084Y-78.74 340 | X164.084Y-93.98 341 | X165.735Y-114.3 342 | X165.735Y-129.54 343 | X165.735Y-135.89 344 | X165.735Y-151.13 345 | X166.624Y-78.74 346 | X166.624Y-93.98 347 | X168.275Y-101.854 348 | X168.275Y-106.934 349 | X168.275Y-114.3 350 | X168.275Y-129.54 351 | X168.275Y-135.89 352 | X168.275Y-151.13 353 | X169.164Y-78.74 354 | X169.164Y-93.98 355 | X170.815Y-114.3 356 | X170.815Y-129.54 357 | X170.815Y-135.89 358 | X170.815Y-151.13 359 | X171.704Y-78.74 360 | X171.704Y-93.98 361 | X173.355Y-114.3 362 | X173.355Y-129.54 363 | X173.355Y-135.89 364 | X173.355Y-151.13 365 | X174.244Y-78.74 366 | X174.244Y-93.98 367 | X175.895Y-114.3 368 | X175.895Y-129.54 369 | X175.895Y-135.89 370 | X175.895Y-151.13 371 | X176.784Y-78.74 372 | X176.784Y-93.98 373 | X178.435Y-101.854 374 | X178.435Y-106.934 375 | X178.435Y-114.3 376 | X178.435Y-129.54 377 | X178.435Y-135.89 378 | X178.435Y-151.13 379 | X179.324Y-78.74 380 | X179.324Y-93.98 381 | X180.975Y-114.3 382 | X180.975Y-129.54 383 | X180.975Y-135.89 384 | X180.975Y-151.13 385 | X181.864Y-78.74 386 | X181.864Y-93.98 387 | X183.515Y-114.3 388 | X183.515Y-129.54 389 | X183.515Y-135.89 390 | X183.515Y-151.13 391 | X184.404Y-78.74 392 | X184.404Y-93.98 393 | X184.404Y-104.053 394 | X184.404Y-106.553 395 | X188.595Y-114.3 396 | X188.595Y-116.8 397 | X188.595Y-135.89 398 | X188.595Y-138.39 399 | T6 400 | X94.615Y-158.75 401 | X94.615Y-163.83 402 | X102.235Y-158.75 403 | X102.235Y-163.83 404 | T7 405 | X178.054Y-160.274 406 | X178.054Y-162.814 407 | T8 408 | X83.185Y-102.87 409 | X83.185Y-105.41 410 | X83.185Y-107.95 411 | X83.185Y-110.49 412 | X83.185Y-113.03 413 | X83.185Y-115.57 414 | X83.185Y-118.11 415 | X83.185Y-120.65 416 | X83.185Y-123.19 417 | X83.185Y-125.73 418 | X83.185Y-128.27 419 | X83.185Y-130.81 420 | X83.185Y-133.35 421 | X83.185Y-135.89 422 | X83.185Y-138.43 423 | X83.185Y-140.97 424 | X83.185Y-143.51 425 | X83.185Y-146.05 426 | X83.185Y-148.59 427 | X83.185Y-151.13 428 | X85.725Y-102.87 429 | X85.725Y-105.41 430 | X85.725Y-107.95 431 | X85.725Y-110.49 432 | X85.725Y-113.03 433 | X85.725Y-115.57 434 | X85.725Y-118.11 435 | X85.725Y-120.65 436 | X85.725Y-123.19 437 | X85.725Y-125.73 438 | X85.725Y-128.27 439 | X85.725Y-130.81 440 | X85.725Y-133.35 441 | X85.725Y-135.89 442 | X85.725Y-138.43 443 | X85.725Y-140.97 444 | X85.725Y-143.51 445 | X85.725Y-146.05 446 | X85.725Y-148.59 447 | X85.725Y-151.13 448 | X107.315Y-160.02 449 | X107.315Y-162.56 450 | X109.855Y-160.02 451 | X109.855Y-162.56 452 | X112.395Y-160.02 453 | X112.395Y-162.56 454 | X114.935Y-160.02 455 | X114.935Y-162.56 456 | X117.475Y-160.02 457 | X117.475Y-162.56 458 | X120.015Y-160.02 459 | X120.015Y-162.56 460 | X130.175Y-160.02 461 | X130.175Y-162.56 462 | X132.715Y-160.02 463 | X132.715Y-162.56 464 | X135.255Y-160.02 465 | X135.255Y-162.56 466 | X137.795Y-160.02 467 | X137.795Y-162.56 468 | X140.335Y-160.02 469 | X140.335Y-162.56 470 | X142.875Y-160.02 471 | X142.875Y-162.56 472 | X150.495Y-161.29 473 | X153.035Y-161.29 474 | X155.575Y-161.29 475 | X158.115Y-161.29 476 | X160.655Y-161.29 477 | X163.195Y-161.29 478 | X168.91Y-160.274 479 | X168.91Y-162.814 480 | X171.45Y-160.274 481 | X171.45Y-162.814 482 | T9 483 | X89.535Y-93.98 484 | X99.695Y-93.98 485 | X106.68Y-75.565 486 | X109.22Y-75.565 487 | X111.76Y-75.565 488 | T10 489 | X82.042Y-75.057 490 | X82.042Y-165.608 491 | X189.738Y-75.057 492 | X189.738Y-165.608 493 | T8 494 | X89.28Y-80.455G85X89.28Y-82.455 495 | G05 496 | X94.98Y-78.455G85X92.98Y-78.455 497 | G05 498 | X94.98Y-84.455G85X92.98Y-84.455 499 | G05 500 | T0 501 | M30 502 | -------------------------------------------------------------------------------- /hardware/gerber/6502-computer-rev-1.0/6502-computer-job.gbrjob: -------------------------------------------------------------------------------- 1 | { 2 | "Header": 3 | { 4 | "GenerationSoftware": 5 | { 6 | "Vendor": "KiCad", 7 | "Application": "Pcbnew", 8 | "Version": "5.1.9+dfsg1-1" 9 | }, 10 | "CreationDate": "2021-08-01T20:01:47+10:00" 11 | }, 12 | "GeneralSpecs": 13 | { 14 | "ProjectId": 15 | { 16 | "Name": "6502-computer", 17 | "GUID": "36353032-2d63-46f6-9d70-757465722e6b", 18 | "Revision": "rev?" 19 | }, 20 | "Size": 21 | { 22 | "X": 116.890, 23 | "Y": 99.745 24 | }, 25 | "LayerNumber": 2, 26 | "BoardThickness": 1.600 27 | }, 28 | "DesignRules": 29 | [ 30 | { 31 | "Layers": "Outer", 32 | "PadToPad": 0.200, 33 | "PadToTrack": 0.200, 34 | "TrackToTrack": 0.200, 35 | "MinLineWidth": 0.250, 36 | "TrackToRegion": 0.508, 37 | "RegionToRegion": 0.508 38 | } 39 | ], 40 | "FilesAttributes": 41 | [ 42 | { 43 | "Path": "6502-computer-F_Cu.gtl", 44 | "FileFunction": "Copper,L1,Top", 45 | "FilePolarity": "Positive" 46 | }, 47 | { 48 | "Path": "6502-computer-B_Cu.gbl", 49 | "FileFunction": "Copper,L2,Bot", 50 | "FilePolarity": "Positive" 51 | }, 52 | { 53 | "Path": "6502-computer-F_Paste.gtp", 54 | "FileFunction": "SolderPaste,Top", 55 | "FilePolarity": "Positive" 56 | }, 57 | { 58 | "Path": "6502-computer-B_Paste.gbp", 59 | "FileFunction": "SolderPaste,Bot", 60 | "FilePolarity": "Positive" 61 | }, 62 | { 63 | "Path": "6502-computer-F_SilkS.gto", 64 | "FileFunction": "Legend,Top", 65 | "FilePolarity": "Positive" 66 | }, 67 | { 68 | "Path": "6502-computer-B_SilkS.gbo", 69 | "FileFunction": "Legend,Bot", 70 | "FilePolarity": "Positive" 71 | }, 72 | { 73 | "Path": "6502-computer-F_Mask.gts", 74 | "FileFunction": "SolderMask,Top", 75 | "FilePolarity": "Negative" 76 | }, 77 | { 78 | "Path": "6502-computer-B_Mask.gbs", 79 | "FileFunction": "SolderMask,Bot", 80 | "FilePolarity": "Negative" 81 | }, 82 | { 83 | "Path": "6502-computer-Edge_Cuts.gm1", 84 | "FileFunction": "Profile", 85 | "FilePolarity": "Positive" 86 | } 87 | ], 88 | "MaterialStackup": 89 | [ 90 | { 91 | "Type": "Legend", 92 | "Notes": "Layer F.SilkS" 93 | }, 94 | { 95 | "Type": "SolderPaste", 96 | "Notes": "Layer F.Paste" 97 | }, 98 | { 99 | "Type": "SolderMask", 100 | "Notes": "Layer F.Mask" 101 | }, 102 | { 103 | "Type": "Copper", 104 | "Notes": "Layer F.Cu" 105 | }, 106 | { 107 | "Type": "Dielectric", 108 | "Material": "FR4", 109 | "Notes": "Layers L1/L2" 110 | }, 111 | { 112 | "Type": "Copper", 113 | "Notes": "Layer B.Cu" 114 | }, 115 | { 116 | "Type": "SolderMask", 117 | "Notes": "Layer B.Mask" 118 | }, 119 | { 120 | "Type": "SolderPaste", 121 | "Notes": "Layer B.Paste" 122 | }, 123 | { 124 | "Type": "Legend", 125 | "Notes": "Layer B.SilkS" 126 | } 127 | ] 128 | } 129 | -------------------------------------------------------------------------------- /hardware/kicad/.gitignore: -------------------------------------------------------------------------------- 1 | # Backup files 2 | *.bck 3 | *.sch-bak 4 | *.kicad_pcb-bak 5 | 6 | # Cache files 7 | fp-info-cache 8 | 9 | # Generated files which can be re-created manually 10 | *.net 11 | 12 | -------------------------------------------------------------------------------- /hardware/kicad/6502-computer-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # 65xx_W65C02SxP 5 | # 6 | DEF 65xx_W65C02SxP U 0 40 Y Y 1 F N 7 | F0 "U" -400 1400 50 H V L CNN 8 | F1 "65xx_W65C02SxP" 0 0 50 V V C CIB 9 | F2 "" 0 2000 50 H I C CNN 10 | F3 "" 0 1900 50 H I C CNN 11 | $FPLIST 12 | DIP-40_W15.24mm* 13 | $ENDFPLIST 14 | DRAW 15 | S -400 1350 400 -1350 0 1 0 f 16 | X ~VP 1 -600 -800 200 R 50 50 1 1 O V 17 | X A1 10 600 1100 200 L 50 50 1 1 T 18 | X A2 11 600 1000 200 L 50 50 1 1 T 19 | X A3 12 600 900 200 L 50 50 1 1 T 20 | X A4 13 600 800 200 L 50 50 1 1 T 21 | X A5 14 600 700 200 L 50 50 1 1 T 22 | X A6 15 600 600 200 L 50 50 1 1 T 23 | X A7 16 600 500 200 L 50 50 1 1 T 24 | X A8 17 600 400 200 L 50 50 1 1 T 25 | X A9 18 600 300 200 L 50 50 1 1 T 26 | X A10 19 600 200 200 L 50 50 1 1 T 27 | X RDY 2 -600 -300 200 R 50 50 1 1 C 28 | X A11 20 600 100 200 L 50 50 1 1 T 29 | X VSS 21 0 -1550 200 U 50 50 1 1 W 30 | X A12 22 600 0 200 L 50 50 1 1 T 31 | X A13 23 600 -100 200 L 50 50 1 1 T 32 | X A14 24 600 -200 200 L 50 50 1 1 T 33 | X A15 25 600 -300 200 L 50 50 1 1 T 34 | X D7 26 600 -1200 200 L 50 50 1 1 B 35 | X D6 27 600 -1100 200 L 50 50 1 1 B 36 | X D5 28 600 -1000 200 L 50 50 1 1 B 37 | X D4 29 600 -900 200 L 50 50 1 1 B 38 | X ϕ1 3 -600 800 200 R 50 50 1 1 O 39 | X D3 30 600 -800 200 L 50 50 1 1 B 40 | X D2 31 600 -700 200 L 50 50 1 1 B 41 | X D1 32 600 -600 200 L 50 50 1 1 B 42 | X D0 33 600 -500 200 L 50 50 1 1 B 43 | X R/~W 34 -600 0 200 R 50 50 1 1 T 44 | X nc 35 -400 -1100 100 R 50 50 1 1 N NX 45 | X BE 36 -600 -400 200 R 50 50 1 1 I 46 | X ϕ0 37 -600 900 200 R 50 50 1 1 I C 47 | X ~SO 38 -600 -1200 200 R 50 50 1 1 I L 48 | X ϕ2 39 -600 700 200 R 50 50 1 1 O 49 | X ~IRQ 4 -600 400 200 R 50 50 1 1 I L 50 | X ~RES 40 -600 1200 200 R 50 50 1 1 I L 51 | X ~ML 5 -600 -900 200 R 50 50 1 1 O V 52 | X ~NMI 6 -600 300 200 R 50 50 1 1 I L 53 | X SYNC 7 -600 -700 200 R 50 50 1 1 O 54 | X VDD 8 0 1550 200 D 50 50 1 1 W 55 | X A0 9 600 1200 200 L 50 50 1 1 T 56 | ENDDRAW 57 | ENDDEF 58 | # 59 | # 65xx_W65C22SxP 60 | # 61 | DEF 65xx_W65C22SxP U 0 40 Y Y 1 F N 62 | F0 "U" -400 1300 50 H V L CNN 63 | F1 "65xx_W65C22SxP" 0 0 50 V V C CIB 64 | F2 "" 0 150 50 H I C CNN 65 | F3 "" 0 150 50 H I C CNN 66 | $FPLIST 67 | DIP-40_W15.24mm* 68 | $ENDFPLIST 69 | DRAW 70 | S -400 1250 400 -1250 0 1 0 f 71 | X VSS 1 0 -1450 200 U 50 50 1 1 W 72 | X PB0 10 600 -100 200 L 50 50 1 1 B 73 | X PB1 11 600 -200 200 L 50 50 1 1 B 74 | X PB2 12 600 -300 200 L 50 50 1 1 B 75 | X PB3 13 600 -400 200 L 50 50 1 1 B 76 | X PB4 14 600 -500 200 L 50 50 1 1 B 77 | X PB5 15 600 -600 200 L 50 50 1 1 B 78 | X PB6 16 600 -700 200 L 50 50 1 1 B 79 | X PB7 17 600 -800 200 L 50 50 1 1 B 80 | X CB1 18 600 -1000 200 L 50 50 1 1 I 81 | X CB2 19 600 -1100 200 L 50 50 1 1 B 82 | X PA0 2 600 1100 200 L 50 50 1 1 B 83 | X VCC 20 0 1450 200 D 50 50 1 1 W 84 | X ~IRQ 21 -600 800 200 R 50 50 1 1 O V 85 | X R/~W 22 -600 -200 200 R 50 50 1 1 I 86 | X ~CS2 23 -600 500 200 R 50 50 1 1 I L 87 | X CS1 24 -600 600 200 R 50 50 1 1 I 88 | X ϕ2 25 -600 1000 200 R 50 50 1 1 I C 89 | X D7 26 -600 -1100 200 R 50 50 1 1 B 90 | X D6 27 -600 -1000 200 R 50 50 1 1 B 91 | X D5 28 -600 -900 200 R 50 50 1 1 B 92 | X D4 29 -600 -800 200 R 50 50 1 1 B 93 | X PA1 3 600 1000 200 L 50 50 1 1 B 94 | X D3 30 -600 -700 200 R 50 50 1 1 B 95 | X D2 31 -600 -600 200 R 50 50 1 1 B 96 | X D1 32 -600 -500 200 R 50 50 1 1 B 97 | X D0 33 -600 -400 200 R 50 50 1 1 B 98 | X ~RES 34 -600 1100 200 R 50 50 1 1 I L 99 | X RS3 35 -600 0 200 R 50 50 1 1 I 100 | X RS2 36 -600 100 200 R 50 50 1 1 I 101 | X RS1 37 -600 200 200 R 50 50 1 1 I 102 | X RS0 38 -600 300 200 R 50 50 1 1 I 103 | X CA2 39 600 100 200 L 50 50 1 1 B 104 | X PA2 4 600 900 200 L 50 50 1 1 B 105 | X CA1 40 600 200 200 L 50 50 1 1 I 106 | X PA3 5 600 800 200 L 50 50 1 1 B 107 | X PA4 6 600 700 200 L 50 50 1 1 B 108 | X PA5 7 600 600 200 L 50 50 1 1 B 109 | X PA6 8 600 500 200 L 50 50 1 1 B 110 | X PA7 9 600 400 200 L 50 50 1 1 B 111 | ENDDRAW 112 | ENDDEF 113 | # 114 | # 65xx_W65C51NxP 115 | # 116 | DEF 65xx_W65C51NxP U 0 40 Y Y 1 F N 117 | F0 "U" -400 1300 50 H V L CNN 118 | F1 "65xx_W65C51NxP" 0 0 50 V V C CIB 119 | F2 "" 0 150 50 H I C CNN 120 | F3 "" 0 150 50 H I C CNN 121 | ALIAS W65C51NxP W65C51NxPL 122 | $FPLIST 123 | DIP-28_W15.24mm* 124 | PLCC28 125 | $ENDFPLIST 126 | DRAW 127 | S -400 1250 400 -1250 0 1 0 f 128 | X VSS 1 0 -1450 200 U 50 50 1 1 W 129 | X TxD 10 600 300 200 L 50 50 1 1 O 130 | X ~DTR 11 600 -300 200 L 50 50 1 1 O V 131 | X RxD 12 600 200 200 L 50 50 1 1 I 132 | X RS0 13 -600 300 200 R 50 50 1 1 I 133 | X RS1 14 -600 200 200 R 50 50 1 1 I 134 | X VCC 15 0 1450 200 D 50 50 1 1 W 135 | X ~DCD 16 600 -600 200 L 50 50 1 1 I L 136 | X ~DSR 17 600 -400 200 L 50 50 1 1 I L 137 | X D0 18 -600 -400 200 R 50 50 1 1 B 138 | X D1 19 -600 -500 200 R 50 50 1 1 B 139 | X CS0 2 -600 600 200 R 50 50 1 1 I 140 | X D2 20 -600 -600 200 R 50 50 1 1 B 141 | X D3 21 -600 -700 200 R 50 50 1 1 B 142 | X D4 22 -600 -800 200 R 50 50 1 1 B 143 | X D5 23 -600 -900 200 R 50 50 1 1 B 144 | X D6 24 -600 -1000 200 R 50 50 1 1 B 145 | X D7 25 -600 -1100 200 R 50 50 1 1 B 146 | X ~IRQ 26 -600 800 200 R 50 50 1 1 C V 147 | X ϕ2 27 -600 1000 200 R 50 50 1 1 I C 148 | X R/~W 28 -600 -200 200 R 50 50 1 1 I 149 | X ~CS1 3 -600 500 200 R 50 50 1 1 I L 150 | X ~RES 4 -600 1100 200 R 50 50 1 1 I L 151 | X RxC 5 600 800 200 L 50 50 1 1 B C 152 | X XTLI 6 600 1100 200 L 50 50 1 1 I C 153 | X XTLO 7 600 1000 200 L 50 50 1 1 O 154 | X ~RTS 8 600 0 200 L 50 50 1 1 O V 155 | X ~CTS 9 600 -100 200 L 50 50 1 1 I L 156 | ENDDRAW 157 | ENDDEF 158 | # 159 | # 74xx_74LS00 160 | # 161 | DEF 74xx_74LS00 U 0 40 Y Y 5 L N 162 | F0 "U" 0 50 50 H V C CNN 163 | F1 "74xx_74LS00" 0 -50 50 H V C CNN 164 | F2 "" 0 0 50 H I C CNN 165 | F3 "" 0 0 50 H I C CNN 166 | ALIAS 74LS37 7400 74HCT00 74HC00 167 | $FPLIST 168 | DIP*W7.62mm* 169 | SO14* 170 | $ENDFPLIST 171 | DRAW 172 | A 0 0 150 -899 899 1 1 10 f 0 -150 0 150 173 | A 0 0 150 -899 899 2 1 10 f 0 -150 0 150 174 | A 0 0 150 -899 899 3 1 10 f 0 -150 0 150 175 | A 0 0 150 -899 899 4 1 10 f 0 -150 0 150 176 | A -360 0 258 354 -354 1 2 10 N -150 150 -150 -150 177 | A -47 -52 204 150 837 1 2 10 f 150 0 -24 150 178 | A -47 52 204 -150 -837 1 2 10 f 150 0 -24 -150 179 | A -360 0 258 354 -354 2 2 10 N -150 150 -150 -150 180 | A -47 -52 204 150 837 2 2 10 f 150 0 -24 150 181 | A -47 52 204 -150 -837 2 2 10 f 150 0 -24 -150 182 | A -360 0 258 354 -354 3 2 10 N -150 150 -150 -150 183 | A -47 -52 204 150 837 3 2 10 f 150 0 -24 150 184 | A -47 52 204 -150 -837 3 2 10 f 150 0 -24 -150 185 | A -360 0 258 354 -354 4 2 10 N -150 150 -150 -150 186 | A -47 -52 204 150 837 4 2 10 f 150 0 -24 150 187 | A -47 52 204 -150 -837 4 2 10 f 150 0 -24 -150 188 | S -200 300 200 -300 5 1 10 f 189 | P 4 1 1 10 0 150 -150 150 -150 -150 0 -150 f 190 | P 4 2 1 10 0 150 -150 150 -150 -150 0 -150 f 191 | P 4 3 1 10 0 150 -150 150 -150 -150 0 -150 f 192 | P 4 4 1 10 0 150 -150 150 -150 -150 0 -150 f 193 | P 2 1 2 10 -150 -150 -25 -150 f 194 | P 2 1 2 10 -150 150 -25 150 f 195 | P 12 1 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 196 | P 2 2 2 10 -150 -150 -25 -150 f 197 | P 2 2 2 10 -150 150 -25 150 f 198 | P 12 2 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 199 | P 2 3 2 10 -150 -150 -25 -150 f 200 | P 2 3 2 10 -150 150 -25 150 f 201 | P 12 3 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 202 | P 2 4 2 10 -150 -150 -25 -150 f 203 | P 2 4 2 10 -150 150 -25 150 f 204 | P 12 4 2 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f 205 | X VCC 14 0 500 200 D 50 50 5 0 W 206 | X GND 7 0 -500 200 U 50 50 5 0 W 207 | X ~ 1 -300 100 150 R 50 50 1 1 I 208 | X ~ 2 -300 -100 150 R 50 50 1 1 I 209 | X ~ 3 300 0 150 L 50 50 1 1 O I 210 | X ~ 4 -300 100 150 R 50 50 2 1 I 211 | X ~ 5 -300 -100 150 R 50 50 2 1 I 212 | X ~ 6 300 0 150 L 50 50 2 1 O I 213 | X ~ 10 -300 -100 150 R 50 50 3 1 I 214 | X ~ 8 300 0 150 L 50 50 3 1 O I 215 | X ~ 9 -300 100 150 R 50 50 3 1 I 216 | X ~ 11 300 0 150 L 50 50 4 1 O I 217 | X ~ 12 -300 100 150 R 50 50 4 1 I 218 | X ~ 13 -300 -100 150 R 50 50 4 1 I 219 | X ~ 1 -300 100 170 R 50 50 1 2 I I 220 | X ~ 2 -300 -100 170 R 50 50 1 2 I I 221 | X ~ 3 300 0 150 L 50 50 1 2 O 222 | X ~ 4 -300 100 170 R 50 50 2 2 I I 223 | X ~ 5 -300 -100 170 R 50 50 2 2 I I 224 | X ~ 6 300 0 150 L 50 50 2 2 O 225 | X ~ 10 -300 -100 170 R 50 50 3 2 I I 226 | X ~ 8 300 0 150 L 50 50 3 2 O 227 | X ~ 9 -300 100 170 R 50 50 3 2 I I 228 | X ~ 11 300 0 150 L 50 50 4 2 O 229 | X ~ 12 -300 100 170 R 50 50 4 2 I I 230 | X ~ 13 -300 -100 170 R 50 50 4 2 I I 231 | ENDDRAW 232 | ENDDEF 233 | # 234 | # 74xx_74LS138 235 | # 236 | DEF 74xx_74LS138 U 0 40 Y Y 1 L N 237 | F0 "U" -300 450 50 H V C CNN 238 | F1 "74xx_74LS138" -300 -550 50 H V C CNN 239 | F2 "" 0 0 50 H I C CNN 240 | F3 "" 0 0 50 H I C CNN 241 | $FPLIST 242 | DIP?16* 243 | $ENDFPLIST 244 | DRAW 245 | S -300 400 300 -500 1 1 10 f 246 | X A0 1 -500 300 200 R 50 50 1 0 I 247 | X O5 10 500 -200 200 L 50 50 1 0 O V 248 | X O4 11 500 -100 200 L 50 50 1 0 O V 249 | X O3 12 500 0 200 L 50 50 1 0 O V 250 | X O2 13 500 100 200 L 50 50 1 0 O V 251 | X O1 14 500 200 200 L 50 50 1 0 O V 252 | X O0 15 500 300 200 L 50 50 1 0 O V 253 | X VCC 16 0 600 200 D 50 50 1 0 W 254 | X A1 2 -500 200 200 R 50 50 1 0 I 255 | X A2 3 -500 100 200 R 50 50 1 0 I 256 | X E1 4 -500 -400 200 R 50 50 1 0 I L 257 | X E2 5 -500 -300 200 R 50 50 1 0 I L 258 | X E3 6 -500 -200 200 R 50 50 1 0 I 259 | X O7 7 500 -400 200 L 50 50 1 0 O V 260 | X GND 8 0 -700 200 U 50 50 1 0 W 261 | X O6 9 500 -300 200 L 50 50 1 0 O V 262 | ENDDRAW 263 | ENDDEF 264 | # 265 | # Connector_Barrel_Jack 266 | # 267 | DEF Connector_Barrel_Jack J 0 40 Y Y 1 F N 268 | F0 "J" 0 210 50 H V C CNN 269 | F1 "Connector_Barrel_Jack" 0 -200 50 H V C CNN 270 | F2 "" 50 -40 50 H I C CNN 271 | F3 "" 50 -40 50 H I C CNN 272 | ALIAS Jack-DC 273 | $FPLIST 274 | BarrelJack* 275 | $ENDFPLIST 276 | DRAW 277 | A -130 100 25 901 -901 0 1 10 F -130 125 -130 75 278 | A -130 100 25 901 -901 0 1 10 N -130 125 -130 75 279 | S -200 150 200 -150 0 1 10 f 280 | S 145 125 -130 75 0 1 10 F 281 | P 2 0 1 10 200 100 150 100 N 282 | P 6 0 1 10 -150 -100 -100 -100 -50 -50 0 -100 100 -100 200 -100 N 283 | X ~ 1 300 100 100 L 50 50 1 1 P 284 | X ~ 2 300 -100 100 L 50 50 1 1 P 285 | ENDDRAW 286 | ENDDEF 287 | # 288 | # Connector_Conn_01x06_Female 289 | # 290 | DEF Connector_Conn_01x06_Female J 0 40 Y N 1 F N 291 | F0 "J" 0 300 50 H V C CNN 292 | F1 "Connector_Conn_01x06_Female" 0 -400 50 H V C CNN 293 | F2 "" 0 0 50 H I C CNN 294 | F3 "" 0 0 50 H I C CNN 295 | $FPLIST 296 | Connector*:*_1x??_* 297 | $ENDFPLIST 298 | DRAW 299 | A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320 300 | A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220 301 | A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120 302 | A 0 0 20 901 -901 1 1 6 N 0 20 0 -20 303 | A 0 100 20 901 -901 1 1 6 N 0 120 0 80 304 | A 0 200 20 901 -901 1 1 6 N 0 220 0 180 305 | P 2 1 1 6 -50 -300 -20 -300 N 306 | P 2 1 1 6 -50 -200 -20 -200 N 307 | P 2 1 1 6 -50 -100 -20 -100 N 308 | P 2 1 1 6 -50 0 -20 0 N 309 | P 2 1 1 6 -50 100 -20 100 N 310 | P 2 1 1 6 -50 200 -20 200 N 311 | X Pin_1 1 -200 200 150 R 50 50 1 1 P 312 | X Pin_2 2 -200 100 150 R 50 50 1 1 P 313 | X Pin_3 3 -200 0 150 R 50 50 1 1 P 314 | X Pin_4 4 -200 -100 150 R 50 50 1 1 P 315 | X Pin_5 5 -200 -200 150 R 50 50 1 1 P 316 | X Pin_6 6 -200 -300 150 R 50 50 1 1 P 317 | ENDDRAW 318 | ENDDEF 319 | # 320 | # Connector_Generic_Conn_02x02_Odd_Even 321 | # 322 | DEF Connector_Generic_Conn_02x02_Odd_Even J 0 40 Y N 1 F N 323 | F0 "J" 50 100 50 H V C CNN 324 | F1 "Connector_Generic_Conn_02x02_Odd_Even" 50 -200 50 H V C CNN 325 | F2 "" 0 0 50 H I C CNN 326 | F3 "" 0 0 50 H I C CNN 327 | $FPLIST 328 | Connector*:*_2x??_* 329 | $ENDFPLIST 330 | DRAW 331 | S -50 -95 0 -105 1 1 6 N 332 | S -50 5 0 -5 1 1 6 N 333 | S -50 50 150 -150 1 1 10 f 334 | S 150 -95 100 -105 1 1 6 N 335 | S 150 5 100 -5 1 1 6 N 336 | X Pin_1 1 -200 0 150 R 50 50 1 1 P 337 | X Pin_2 2 300 0 150 L 50 50 1 1 P 338 | X Pin_3 3 -200 -100 150 R 50 50 1 1 P 339 | X Pin_4 4 300 -100 150 L 50 50 1 1 P 340 | ENDDRAW 341 | ENDDEF 342 | # 343 | # Connector_Generic_Conn_02x06_Odd_Even 344 | # 345 | DEF Connector_Generic_Conn_02x06_Odd_Even J 0 40 Y N 1 F N 346 | F0 "J" 50 300 50 H V C CNN 347 | F1 "Connector_Generic_Conn_02x06_Odd_Even" 50 -400 50 H V C CNN 348 | F2 "" 0 0 50 H I C CNN 349 | F3 "" 0 0 50 H I C CNN 350 | $FPLIST 351 | Connector*:*_2x??_* 352 | $ENDFPLIST 353 | DRAW 354 | S -50 -295 0 -305 1 1 6 N 355 | S -50 -195 0 -205 1 1 6 N 356 | S -50 -95 0 -105 1 1 6 N 357 | S -50 5 0 -5 1 1 6 N 358 | S -50 105 0 95 1 1 6 N 359 | S -50 205 0 195 1 1 6 N 360 | S -50 250 150 -350 1 1 10 f 361 | S 150 -295 100 -305 1 1 6 N 362 | S 150 -195 100 -205 1 1 6 N 363 | S 150 -95 100 -105 1 1 6 N 364 | S 150 5 100 -5 1 1 6 N 365 | S 150 105 100 95 1 1 6 N 366 | S 150 205 100 195 1 1 6 N 367 | X Pin_1 1 -200 200 150 R 50 50 1 1 P 368 | X Pin_10 10 300 -200 150 L 50 50 1 1 P 369 | X Pin_11 11 -200 -300 150 R 50 50 1 1 P 370 | X Pin_12 12 300 -300 150 L 50 50 1 1 P 371 | X Pin_2 2 300 200 150 L 50 50 1 1 P 372 | X Pin_3 3 -200 100 150 R 50 50 1 1 P 373 | X Pin_4 4 300 100 150 L 50 50 1 1 P 374 | X Pin_5 5 -200 0 150 R 50 50 1 1 P 375 | X Pin_6 6 300 0 150 L 50 50 1 1 P 376 | X Pin_7 7 -200 -100 150 R 50 50 1 1 P 377 | X Pin_8 8 300 -100 150 L 50 50 1 1 P 378 | X Pin_9 9 -200 -200 150 R 50 50 1 1 P 379 | ENDDRAW 380 | ENDDEF 381 | # 382 | # Connector_Generic_Conn_02x20_Odd_Even 383 | # 384 | DEF Connector_Generic_Conn_02x20_Odd_Even J 0 40 Y N 1 F N 385 | F0 "J" 50 1000 50 H V C CNN 386 | F1 "Connector_Generic_Conn_02x20_Odd_Even" 50 -1100 50 H V C CNN 387 | F2 "" 0 0 50 H I C CNN 388 | F3 "" 0 0 50 H I C CNN 389 | $FPLIST 390 | Connector*:*_2x??_* 391 | $ENDFPLIST 392 | DRAW 393 | S -50 -995 0 -1005 1 1 6 N 394 | S -50 -895 0 -905 1 1 6 N 395 | S -50 -795 0 -805 1 1 6 N 396 | S -50 -695 0 -705 1 1 6 N 397 | S -50 -595 0 -605 1 1 6 N 398 | S -50 -495 0 -505 1 1 6 N 399 | S -50 -395 0 -405 1 1 6 N 400 | S -50 -295 0 -305 1 1 6 N 401 | S -50 -195 0 -205 1 1 6 N 402 | S -50 -95 0 -105 1 1 6 N 403 | S -50 5 0 -5 1 1 6 N 404 | S -50 105 0 95 1 1 6 N 405 | S -50 205 0 195 1 1 6 N 406 | S -50 305 0 295 1 1 6 N 407 | S -50 405 0 395 1 1 6 N 408 | S -50 505 0 495 1 1 6 N 409 | S -50 605 0 595 1 1 6 N 410 | S -50 705 0 695 1 1 6 N 411 | S -50 805 0 795 1 1 6 N 412 | S -50 905 0 895 1 1 6 N 413 | S -50 950 150 -1050 1 1 10 f 414 | S 150 -995 100 -1005 1 1 6 N 415 | S 150 -895 100 -905 1 1 6 N 416 | S 150 -795 100 -805 1 1 6 N 417 | S 150 -695 100 -705 1 1 6 N 418 | S 150 -595 100 -605 1 1 6 N 419 | S 150 -495 100 -505 1 1 6 N 420 | S 150 -395 100 -405 1 1 6 N 421 | S 150 -295 100 -305 1 1 6 N 422 | S 150 -195 100 -205 1 1 6 N 423 | S 150 -95 100 -105 1 1 6 N 424 | S 150 5 100 -5 1 1 6 N 425 | S 150 105 100 95 1 1 6 N 426 | S 150 205 100 195 1 1 6 N 427 | S 150 305 100 295 1 1 6 N 428 | S 150 405 100 395 1 1 6 N 429 | S 150 505 100 495 1 1 6 N 430 | S 150 605 100 595 1 1 6 N 431 | S 150 705 100 695 1 1 6 N 432 | S 150 805 100 795 1 1 6 N 433 | S 150 905 100 895 1 1 6 N 434 | X Pin_1 1 -200 900 150 R 50 50 1 1 P 435 | X Pin_10 10 300 500 150 L 50 50 1 1 P 436 | X Pin_11 11 -200 400 150 R 50 50 1 1 P 437 | X Pin_12 12 300 400 150 L 50 50 1 1 P 438 | X Pin_13 13 -200 300 150 R 50 50 1 1 P 439 | X Pin_14 14 300 300 150 L 50 50 1 1 P 440 | X Pin_15 15 -200 200 150 R 50 50 1 1 P 441 | X Pin_16 16 300 200 150 L 50 50 1 1 P 442 | X Pin_17 17 -200 100 150 R 50 50 1 1 P 443 | X Pin_18 18 300 100 150 L 50 50 1 1 P 444 | X Pin_19 19 -200 0 150 R 50 50 1 1 P 445 | X Pin_2 2 300 900 150 L 50 50 1 1 P 446 | X Pin_20 20 300 0 150 L 50 50 1 1 P 447 | X Pin_21 21 -200 -100 150 R 50 50 1 1 P 448 | X Pin_22 22 300 -100 150 L 50 50 1 1 P 449 | X Pin_23 23 -200 -200 150 R 50 50 1 1 P 450 | X Pin_24 24 300 -200 150 L 50 50 1 1 P 451 | X Pin_25 25 -200 -300 150 R 50 50 1 1 P 452 | X Pin_26 26 300 -300 150 L 50 50 1 1 P 453 | X Pin_27 27 -200 -400 150 R 50 50 1 1 P 454 | X Pin_28 28 300 -400 150 L 50 50 1 1 P 455 | X Pin_29 29 -200 -500 150 R 50 50 1 1 P 456 | X Pin_3 3 -200 800 150 R 50 50 1 1 P 457 | X Pin_30 30 300 -500 150 L 50 50 1 1 P 458 | X Pin_31 31 -200 -600 150 R 50 50 1 1 P 459 | X Pin_32 32 300 -600 150 L 50 50 1 1 P 460 | X Pin_33 33 -200 -700 150 R 50 50 1 1 P 461 | X Pin_34 34 300 -700 150 L 50 50 1 1 P 462 | X Pin_35 35 -200 -800 150 R 50 50 1 1 P 463 | X Pin_36 36 300 -800 150 L 50 50 1 1 P 464 | X Pin_37 37 -200 -900 150 R 50 50 1 1 P 465 | X Pin_38 38 300 -900 150 L 50 50 1 1 P 466 | X Pin_39 39 -200 -1000 150 R 50 50 1 1 P 467 | X Pin_4 4 300 800 150 L 50 50 1 1 P 468 | X Pin_40 40 300 -1000 150 L 50 50 1 1 P 469 | X Pin_5 5 -200 700 150 R 50 50 1 1 P 470 | X Pin_6 6 300 700 150 L 50 50 1 1 P 471 | X Pin_7 7 -200 600 150 R 50 50 1 1 P 472 | X Pin_8 8 300 600 150 L 50 50 1 1 P 473 | X Pin_9 9 -200 500 150 R 50 50 1 1 P 474 | ENDDRAW 475 | ENDDEF 476 | # 477 | # Device_C 478 | # 479 | DEF Device_C C 0 10 N Y 1 F N 480 | F0 "C" 25 100 50 H V L CNN 481 | F1 "Device_C" 25 -100 50 H V L CNN 482 | F2 "" 38 -150 50 H I C CNN 483 | F3 "" 0 0 50 H I C CNN 484 | $FPLIST 485 | C_* 486 | $ENDFPLIST 487 | DRAW 488 | P 2 0 1 20 -80 -30 80 -30 N 489 | P 2 0 1 20 -80 30 80 30 N 490 | X ~ 1 0 150 110 D 50 50 1 1 P 491 | X ~ 2 0 -150 110 U 50 50 1 1 P 492 | ENDDRAW 493 | ENDDEF 494 | # 495 | # Device_CP 496 | # 497 | DEF Device_CP C 0 10 N Y 1 F N 498 | F0 "C" 25 100 50 H V L CNN 499 | F1 "Device_CP" 25 -100 50 H V L CNN 500 | F2 "" 38 -150 50 H I C CNN 501 | F3 "" 0 0 50 H I C CNN 502 | $FPLIST 503 | CP_* 504 | $ENDFPLIST 505 | DRAW 506 | S -90 20 90 40 0 1 0 N 507 | S 90 -20 -90 -40 0 1 0 F 508 | P 2 0 1 0 -70 90 -30 90 N 509 | P 2 0 1 0 -50 110 -50 70 N 510 | X ~ 1 0 150 110 D 50 50 1 1 P 511 | X ~ 2 0 -150 110 U 50 50 1 1 P 512 | ENDDRAW 513 | ENDDEF 514 | # 515 | # Device_LED 516 | # 517 | DEF Device_LED D 0 40 N N 1 F N 518 | F0 "D" 0 100 50 H V C CNN 519 | F1 "Device_LED" 0 -100 50 H V C CNN 520 | F2 "" 0 0 50 H I C CNN 521 | F3 "" 0 0 50 H I C CNN 522 | $FPLIST 523 | LED* 524 | LED_SMD:* 525 | LED_THT:* 526 | $ENDFPLIST 527 | DRAW 528 | P 2 0 1 10 -50 -50 -50 50 N 529 | P 2 0 1 0 -50 0 50 0 N 530 | P 4 0 1 10 50 -50 50 50 -50 0 50 -50 N 531 | P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N 532 | P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N 533 | X K 1 -150 0 100 R 50 50 1 1 P 534 | X A 2 150 0 100 L 50 50 1 1 P 535 | ENDDRAW 536 | ENDDEF 537 | # 538 | # Device_R 539 | # 540 | DEF Device_R R 0 0 N Y 1 F N 541 | F0 "R" 80 0 50 V V C CNN 542 | F1 "Device_R" 0 0 50 V V C CNN 543 | F2 "" -70 0 50 V I C CNN 544 | F3 "" 0 0 50 H I C CNN 545 | $FPLIST 546 | R_* 547 | $ENDFPLIST 548 | DRAW 549 | S -40 -100 40 100 0 1 10 N 550 | X ~ 1 0 150 50 D 50 50 1 1 P 551 | X ~ 2 0 -150 50 U 50 50 1 1 P 552 | ENDDRAW 553 | ENDDEF 554 | # 555 | # Diode_1N5819 556 | # 557 | DEF Diode_1N5819 D 0 40 N N 1 F N 558 | F0 "D" 0 100 50 H V C CNN 559 | F1 "Diode_1N5819" 0 -100 50 H V C CNN 560 | F2 "Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal" 0 -175 50 H I C CNN 561 | F3 "" 0 0 50 H I C CNN 562 | ALIAS SB130 SB140 SB150 SB160 1N5817 1N5818 1N5819 563 | $FPLIST 564 | D*DO?41* 565 | $ENDFPLIST 566 | DRAW 567 | P 2 0 1 0 50 0 -50 0 N 568 | P 4 0 1 10 50 50 50 -50 -50 0 50 50 N 569 | P 6 0 1 10 -75 25 -75 50 -50 50 -50 -50 -25 -50 -25 -25 N 570 | X K 1 -150 0 100 R 50 50 1 1 P 571 | X A 2 150 0 100 L 50 50 1 1 P 572 | ENDDRAW 573 | ENDDEF 574 | # 575 | # Memory_EEPROM_28C256 576 | # 577 | DEF Memory_EEPROM_28C256 U 0 20 Y Y 1 F N 578 | F0 "U" -300 1050 50 H V C CNN 579 | F1 "Memory_EEPROM_28C256" 100 -1050 50 H V L CNN 580 | F2 "" 0 0 50 H I C CNN 581 | F3 "" 0 0 50 H I C CNN 582 | $FPLIST 583 | DIP*W15.24mm* 584 | SOIC*7.5x17.9mm*P1.27mm* 585 | $ENDFPLIST 586 | DRAW 587 | S -300 1000 300 -1000 1 1 10 f 588 | X A14 1 -400 -500 100 R 50 50 1 1 I 589 | X A0 10 -400 900 100 R 50 50 1 1 I 590 | X D0 11 400 900 100 L 50 50 1 1 T 591 | X D1 12 400 800 100 L 50 50 1 1 T 592 | X D2 13 400 700 100 L 50 50 1 1 T 593 | X GND 14 0 -1100 100 U 50 50 1 1 W 594 | X D3 15 400 600 100 L 50 50 1 1 T 595 | X D4 16 400 500 100 L 50 50 1 1 T 596 | X D5 17 400 400 100 L 50 50 1 1 T 597 | X D6 18 400 300 100 L 50 50 1 1 T 598 | X D7 19 400 200 100 L 50 50 1 1 T 599 | X A12 2 -400 -300 100 R 50 50 1 1 I 600 | X ~CS 20 -400 -900 100 R 50 50 1 1 I 601 | X A10 21 -400 -100 100 R 50 50 1 1 I 602 | X ~OE 22 -400 -800 100 R 50 50 1 1 I 603 | X A11 23 -400 -200 100 R 50 50 1 1 I 604 | X A9 24 -400 0 100 R 50 50 1 1 I 605 | X A8 25 -400 100 100 R 50 50 1 1 I 606 | X A13 26 -400 -400 100 R 50 50 1 1 I 607 | X ~WE 27 -400 -700 100 R 50 50 1 1 I 608 | X VCC 28 0 1100 100 D 50 50 1 1 W 609 | X A7 3 -400 200 100 R 50 50 1 1 I 610 | X A6 4 -400 300 100 R 50 50 1 1 I 611 | X A5 5 -400 400 100 R 50 50 1 1 I 612 | X A4 6 -400 500 100 R 50 50 1 1 I 613 | X A3 7 -400 600 100 R 50 50 1 1 I 614 | X A2 8 -400 700 100 R 50 50 1 1 I 615 | X A1 9 -400 800 100 R 50 50 1 1 I 616 | ENDDRAW 617 | ENDDEF 618 | # 619 | # Memory_RAM_HM62256BLP 620 | # 621 | DEF Memory_RAM_HM62256BLP U 0 20 Y Y 1 F N 622 | F0 "U" -400 825 50 H V L BNN 623 | F1 "Memory_RAM_HM62256BLP" 100 825 50 H V L BNN 624 | F2 "Package_DIP:DIP-28_W15.24mm" 0 -100 50 H I C CNN 625 | F3 "" 0 -100 50 H I C CNN 626 | ALIAS HM62256BLP CY62256-70PC 627 | $FPLIST 628 | DIP*W15.24mm* 629 | $ENDFPLIST 630 | DRAW 631 | S -400 800 400 -800 0 1 10 f 632 | X GND 14 0 -900 100 U 50 50 0 0 W 633 | X VCC 28 0 900 100 D 50 50 0 0 W 634 | X A14 1 -500 -700 100 R 50 50 1 1 I 635 | X A0 10 -500 700 100 R 50 50 1 1 I 636 | X Q0 11 500 700 100 L 50 50 1 1 T 637 | X Q1 12 500 600 100 L 50 50 1 1 T 638 | X Q2 13 500 500 100 L 50 50 1 1 T 639 | X Q3 15 500 400 100 L 50 50 1 1 T 640 | X Q4 16 500 300 100 L 50 50 1 1 T 641 | X Q5 17 500 200 100 L 50 50 1 1 T 642 | X Q6 18 500 100 100 L 50 50 1 1 T 643 | X Q7 19 500 0 100 L 50 50 1 1 T 644 | X A12 2 -500 -500 100 R 50 50 1 1 I 645 | X ~CS 20 500 -200 100 L 50 50 1 1 I 646 | X A10 21 -500 -300 100 R 50 50 1 1 I 647 | X ~OE 22 500 -400 100 L 50 50 1 1 I 648 | X A11 23 -500 -400 100 R 50 50 1 1 I 649 | X A9 24 -500 -200 100 R 50 50 1 1 I 650 | X A8 25 -500 -100 100 R 50 50 1 1 I 651 | X A13 26 -500 -600 100 R 50 50 1 1 I 652 | X ~WE 27 500 -500 100 L 50 50 1 1 I 653 | X A7 3 -500 0 100 R 50 50 1 1 I 654 | X A6 4 -500 100 100 R 50 50 1 1 I 655 | X A5 5 -500 200 100 R 50 50 1 1 I 656 | X A4 6 -500 300 100 R 50 50 1 1 I 657 | X A3 7 -500 400 100 R 50 50 1 1 I 658 | X A2 8 -500 500 100 R 50 50 1 1 I 659 | X A1 9 -500 600 100 R 50 50 1 1 I 660 | ENDDRAW 661 | ENDDEF 662 | # 663 | # Oscillator_CXO_DIP8 664 | # 665 | DEF Oscillator_CXO_DIP8 X 0 10 Y Y 1 F N 666 | F0 "X" -200 250 50 H V L CNN 667 | F1 "Oscillator_CXO_DIP8" 50 -250 50 H V L CNN 668 | F2 "Oscillator:Oscillator_DIP-8" 450 -350 50 H I C CNN 669 | F3 "" -100 0 50 H I C CNN 670 | ALIAS TFT660 671 | $FPLIST 672 | Oscillator*DIP*8* 673 | $ENDFPLIST 674 | DRAW 675 | S -200 200 200 -200 0 1 10 f 676 | P 9 0 1 0 -75 -25 -50 -25 -50 25 -25 25 -25 -25 0 -25 0 25 25 25 25 -25 N 677 | X EN 1 -300 0 100 R 50 50 1 1 I 678 | X GND 4 0 -300 100 U 50 50 1 1 W 679 | X OUT 5 300 0 100 L 50 50 1 1 O 680 | X Vcc 8 0 300 100 D 50 50 1 1 W 681 | ENDDRAW 682 | ENDDEF 683 | # 684 | # Regulator_Linear_L7805 685 | # 686 | DEF Regulator_Linear_L7805 U 0 10 Y Y 1 F N 687 | F0 "U" -150 125 50 H V C CNN 688 | F1 "Regulator_Linear_L7805" 0 125 50 H V L CNN 689 | F2 "" 25 -150 50 H I L CIN 690 | F3 "" 0 -50 50 H I C CNN 691 | ALIAS L7806 L7808 L7885 L7809 L7812 L7815 L7818 L7824 692 | $FPLIST 693 | TO?252* 694 | TO?263* 695 | TO?220* 696 | $ENDFPLIST 697 | DRAW 698 | S -200 75 200 -200 0 1 10 f 699 | X IN 1 -300 0 100 R 50 50 1 1 W 700 | X GND 2 0 -300 100 U 50 50 1 1 W 701 | X OUT 3 300 0 100 L 50 50 1 1 w 702 | ENDDRAW 703 | ENDDEF 704 | # 705 | # Switch_SW_Push 706 | # 707 | DEF Switch_SW_Push SW 0 40 N N 1 F N 708 | F0 "SW" 50 100 50 H V L CNN 709 | F1 "Switch_SW_Push" 0 -60 50 H V C CNN 710 | F2 "" 0 200 50 H I C CNN 711 | F3 "" 0 200 50 H I C CNN 712 | DRAW 713 | C -80 0 20 0 1 0 N 714 | C 80 0 20 0 1 0 N 715 | P 2 0 1 0 0 50 0 120 N 716 | P 2 0 1 0 100 50 -100 50 N 717 | X 1 1 -200 0 100 R 50 50 0 1 P 718 | X 2 2 200 0 100 L 50 50 0 1 P 719 | ENDDRAW 720 | ENDDEF 721 | # 722 | # Switch_SW_SPDT 723 | # 724 | DEF Switch_SW_SPDT SW 0 0 Y N 1 F N 725 | F0 "SW" 0 170 50 H V C CNN 726 | F1 "Switch_SW_SPDT" 0 -200 50 H V C CNN 727 | F2 "" 0 0 50 H I C CNN 728 | F3 "" 0 0 50 H I C CNN 729 | DRAW 730 | C -80 0 20 0 0 0 N 731 | C 80 -100 20 0 0 0 N 732 | C 80 100 20 0 1 0 N 733 | P 2 0 1 0 -60 10 65 90 N 734 | X A 1 200 100 100 L 50 50 1 1 P 735 | X B 2 -200 0 100 R 50 50 1 1 P 736 | X C 3 200 -100 100 L 50 50 1 1 P 737 | ENDDRAW 738 | ENDDEF 739 | # 740 | # power_+5V 741 | # 742 | DEF power_+5V #PWR 0 0 Y Y 1 F P 743 | F0 "#PWR" 0 -150 50 H I C CNN 744 | F1 "power_+5V" 0 140 50 H V C CNN 745 | F2 "" 0 0 50 H I C CNN 746 | F3 "" 0 0 50 H I C CNN 747 | DRAW 748 | P 2 0 1 0 -30 50 0 100 N 749 | P 2 0 1 0 0 0 0 100 N 750 | P 2 0 1 0 0 100 30 50 N 751 | X +5V 1 0 0 0 U 50 50 1 1 W N 752 | ENDDRAW 753 | ENDDEF 754 | # 755 | # power_GND 756 | # 757 | DEF power_GND #PWR 0 0 Y Y 1 F P 758 | F0 "#PWR" 0 -250 50 H I C CNN 759 | F1 "power_GND" 0 -150 50 H V C CNN 760 | F2 "" 0 0 50 H I C CNN 761 | F3 "" 0 0 50 H I C CNN 762 | DRAW 763 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 764 | X GND 1 0 0 0 D 50 50 1 1 W N 765 | ENDDRAW 766 | ENDDEF 767 | # 768 | # power_PWR_FLAG 769 | # 770 | DEF power_PWR_FLAG #FLG 0 0 N N 1 F P 771 | F0 "#FLG" 0 75 50 H I C CNN 772 | F1 "power_PWR_FLAG" 0 150 50 H V C CNN 773 | F2 "" 0 0 50 H I C CNN 774 | F3 "" 0 0 50 H I C CNN 775 | DRAW 776 | P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N 777 | X pwr 1 0 0 0 U 50 50 0 0 w 778 | ENDDRAW 779 | ENDDEF 780 | # 781 | # project_DS1813-5+ 782 | # 783 | DEF project_DS1813-5+ U 0 40 Y Y 3 F N 784 | F0 "U" 0 100 50 H V C CNN 785 | F1 "project_DS1813-5+" 0 0 50 H V C CNN 786 | F2 "Package_TO_SOT_THT:TO-92" 0 100 50 H I C CNN 787 | F3 "" 0 100 50 H I C CNN 788 | DRAW 789 | S -200 -300 200 -900 0 1 0 f 790 | X ~RST 1 300 -600 100 L 50 50 1 1 B 791 | X VCC 2 0 -200 100 D 50 50 1 1 W 792 | X GND 3 0 -1000 100 U 50 50 1 1 W 793 | X ~RST 1-UB 300 -600 100 R 50 50 2 1 B 794 | X GND ~-UB 0 -1000 100 R 50 50 2 1 U 795 | X VCC ~-UB 0 -200 100 R 50 50 2 1 W 796 | X ~RST 1-UC 300 -600 100 R 50 50 3 1 B 797 | X GND ~-UC 0 -1000 100 R 50 50 3 1 U 798 | X VCC ~-UC 0 -200 100 R 50 50 3 1 W 799 | ENDDRAW 800 | ENDDEF 801 | # 802 | #End Library 803 | -------------------------------------------------------------------------------- /hardware/kicad/6502-computer.pro: -------------------------------------------------------------------------------- 1 | update=Sun 01 Aug 2021 16:33:51 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [schematic_editor] 16 | version=1 17 | PageLayoutDescrFile= 18 | PlotDirectoryName= 19 | SubpartIdSeparator=0 20 | SubpartFirstId=65 21 | NetFmtName=Pcbnew 22 | SpiceAjustPassiveValues=0 23 | LabSize=50 24 | ERC_TestSimilarLabels=1 25 | [pcbnew] 26 | version=1 27 | PageLayoutDescrFile= 28 | LastNetListRead=6502-computer.net 29 | CopperLayerCount=2 30 | BoardThickness=1.6 31 | AllowMicroVias=0 32 | AllowBlindVias=0 33 | RequireCourtyardDefinitions=0 34 | ProhibitOverlappingCourtyards=1 35 | MinTrackWidth=0.2 36 | MinViaDiameter=0.4 37 | MinViaDrill=0.3 38 | MinMicroViaDiameter=0.2 39 | MinMicroViaDrill=0.09999999999999999 40 | MinHoleToHole=0.25 41 | TrackWidth1=0.25 42 | TrackWidth2=1 43 | ViaDiameter1=0.8 44 | ViaDrill1=0.4 45 | dPairWidth1=0.2 46 | dPairGap1=0.25 47 | dPairViaGap1=0.25 48 | SilkLineWidth=0.153 49 | SilkTextSizeV=1 50 | SilkTextSizeH=1 51 | SilkTextSizeThickness=0.153 52 | SilkTextItalic=0 53 | SilkTextUpright=1 54 | CopperLineWidth=0.2 55 | CopperTextSizeV=1.5 56 | CopperTextSizeH=1.5 57 | CopperTextThickness=0.3 58 | CopperTextItalic=0 59 | CopperTextUpright=1 60 | EdgeCutLineWidth=0.05 61 | CourtyardLineWidth=0.05 62 | OthersLineWidth=0.15 63 | OthersTextSizeV=1 64 | OthersTextSizeH=1 65 | OthersTextSizeThickness=0.15 66 | OthersTextItalic=0 67 | OthersTextUpright=1 68 | SolderMaskClearance=0 69 | SolderMaskMinWidth=0 70 | SolderPasteClearance=0 71 | SolderPasteRatio=-0 72 | [pcbnew/Layer.F.Cu] 73 | Name=F.Cu 74 | Type=0 75 | Enabled=1 76 | [pcbnew/Layer.In1.Cu] 77 | Name=In1.Cu 78 | Type=0 79 | Enabled=0 80 | [pcbnew/Layer.In2.Cu] 81 | Name=In2.Cu 82 | Type=0 83 | Enabled=0 84 | [pcbnew/Layer.In3.Cu] 85 | Name=In3.Cu 86 | Type=0 87 | Enabled=0 88 | [pcbnew/Layer.In4.Cu] 89 | Name=In4.Cu 90 | Type=0 91 | Enabled=0 92 | [pcbnew/Layer.In5.Cu] 93 | Name=In5.Cu 94 | Type=0 95 | Enabled=0 96 | [pcbnew/Layer.In6.Cu] 97 | Name=In6.Cu 98 | Type=0 99 | Enabled=0 100 | [pcbnew/Layer.In7.Cu] 101 | Name=In7.Cu 102 | Type=0 103 | Enabled=0 104 | [pcbnew/Layer.In8.Cu] 105 | Name=In8.Cu 106 | Type=0 107 | Enabled=0 108 | [pcbnew/Layer.In9.Cu] 109 | Name=In9.Cu 110 | Type=0 111 | Enabled=0 112 | [pcbnew/Layer.In10.Cu] 113 | Name=In10.Cu 114 | Type=0 115 | Enabled=0 116 | [pcbnew/Layer.In11.Cu] 117 | Name=In11.Cu 118 | Type=0 119 | Enabled=0 120 | [pcbnew/Layer.In12.Cu] 121 | Name=In12.Cu 122 | Type=0 123 | Enabled=0 124 | [pcbnew/Layer.In13.Cu] 125 | Name=In13.Cu 126 | Type=0 127 | Enabled=0 128 | [pcbnew/Layer.In14.Cu] 129 | Name=In14.Cu 130 | Type=0 131 | Enabled=0 132 | [pcbnew/Layer.In15.Cu] 133 | Name=In15.Cu 134 | Type=0 135 | Enabled=0 136 | [pcbnew/Layer.In16.Cu] 137 | Name=In16.Cu 138 | Type=0 139 | Enabled=0 140 | [pcbnew/Layer.In17.Cu] 141 | Name=In17.Cu 142 | Type=0 143 | Enabled=0 144 | [pcbnew/Layer.In18.Cu] 145 | Name=In18.Cu 146 | Type=0 147 | Enabled=0 148 | [pcbnew/Layer.In19.Cu] 149 | Name=In19.Cu 150 | Type=0 151 | Enabled=0 152 | [pcbnew/Layer.In20.Cu] 153 | Name=In20.Cu 154 | Type=0 155 | Enabled=0 156 | [pcbnew/Layer.In21.Cu] 157 | Name=In21.Cu 158 | Type=0 159 | Enabled=0 160 | [pcbnew/Layer.In22.Cu] 161 | Name=In22.Cu 162 | Type=0 163 | Enabled=0 164 | [pcbnew/Layer.In23.Cu] 165 | Name=In23.Cu 166 | Type=0 167 | Enabled=0 168 | [pcbnew/Layer.In24.Cu] 169 | Name=In24.Cu 170 | Type=0 171 | Enabled=0 172 | [pcbnew/Layer.In25.Cu] 173 | Name=In25.Cu 174 | Type=0 175 | Enabled=0 176 | [pcbnew/Layer.In26.Cu] 177 | Name=In26.Cu 178 | Type=0 179 | Enabled=0 180 | [pcbnew/Layer.In27.Cu] 181 | Name=In27.Cu 182 | Type=0 183 | Enabled=0 184 | [pcbnew/Layer.In28.Cu] 185 | Name=In28.Cu 186 | Type=0 187 | Enabled=0 188 | [pcbnew/Layer.In29.Cu] 189 | Name=In29.Cu 190 | Type=0 191 | Enabled=0 192 | [pcbnew/Layer.In30.Cu] 193 | Name=In30.Cu 194 | Type=0 195 | Enabled=0 196 | [pcbnew/Layer.B.Cu] 197 | Name=B.Cu 198 | Type=0 199 | Enabled=1 200 | [pcbnew/Layer.B.Adhes] 201 | Enabled=1 202 | [pcbnew/Layer.F.Adhes] 203 | Enabled=1 204 | [pcbnew/Layer.B.Paste] 205 | Enabled=1 206 | [pcbnew/Layer.F.Paste] 207 | Enabled=1 208 | [pcbnew/Layer.B.SilkS] 209 | Enabled=1 210 | [pcbnew/Layer.F.SilkS] 211 | Enabled=1 212 | [pcbnew/Layer.B.Mask] 213 | Enabled=1 214 | [pcbnew/Layer.F.Mask] 215 | Enabled=1 216 | [pcbnew/Layer.Dwgs.User] 217 | Enabled=1 218 | [pcbnew/Layer.Cmts.User] 219 | Enabled=1 220 | [pcbnew/Layer.Eco1.User] 221 | Enabled=1 222 | [pcbnew/Layer.Eco2.User] 223 | Enabled=1 224 | [pcbnew/Layer.Edge.Cuts] 225 | Enabled=1 226 | [pcbnew/Layer.Margin] 227 | Enabled=1 228 | [pcbnew/Layer.B.CrtYd] 229 | Enabled=1 230 | [pcbnew/Layer.F.CrtYd] 231 | Enabled=1 232 | [pcbnew/Layer.B.Fab] 233 | Enabled=1 234 | [pcbnew/Layer.F.Fab] 235 | Enabled=1 236 | [pcbnew/Layer.Rescue] 237 | Enabled=0 238 | [pcbnew/Netclasses] 239 | [pcbnew/Netclasses/Default] 240 | Name=Default 241 | Clearance=0.2 242 | TrackWidth=0.25 243 | ViaDiameter=0.8 244 | ViaDrill=0.4 245 | uViaDiameter=0.3 246 | uViaDrill=0.1 247 | dPairWidth=0.2 248 | dPairGap=0.25 249 | dPairViaGap=0.25 250 | -------------------------------------------------------------------------------- /hardware/kicad/65xx.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP 6502 4 | D 6502 8-bit NMOS Microprocessor, 64K, DIP-40 5 | K 6502 CPU uP 6 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 7 | $ENDCMP 8 | # 9 | $CMP 6503 10 | D 6503 8-bit NMOS Microprocessor, 4K, DIP-28 11 | K 6502 6503 CPU uP 12 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 13 | $ENDCMP 14 | # 15 | $CMP 6504 16 | D 6504 8-bit NMOS Microprocessor, 8K, DIP-28 17 | K 6502 6504 CPU uP 18 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 19 | $ENDCMP 20 | # 21 | $CMP 6505 22 | D 6505 8-bit NMOS Microprocessor, 4K, DIP-28 23 | K 6502 6505 CPU uP 24 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 25 | $ENDCMP 26 | # 27 | $CMP 6506 28 | D 6506 8-bit NMOS Microprocessor, 4K, DIP-28 29 | K 6502 6506 CPU uP 30 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 31 | $ENDCMP 32 | # 33 | $CMP 6507 34 | D 6507 8-bit NMOS Microprocessor, 8K, DIP-28 35 | K 6502 6507 CPU uP 36 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 37 | $ENDCMP 38 | # 39 | $CMP 6508 40 | D 6508 8-bit NMOS Microprocessor, 64K, 8-bit I/O Port, 256 Byte RAM, DIP-40 41 | K 6502 6508 CPU uP 42 | F http://www.6502.org/documents/datasheets/mos/mos_6508_mpu.pdf 43 | $ENDCMP 44 | # 45 | $CMP 6509 46 | D 6509 8-bit NMOS Microprocessor, 16x64K, DIP-40 47 | K 6502 6509 CPU uP 48 | F http://www.6502.org/documents/datasheets/mos/mos_6509_mpu.pdf 49 | $ENDCMP 50 | # 51 | $CMP 6510 52 | D 6510 8-bit NMOS Microprocessor, 64K, 6-bit I/O Port, DIP-40 53 | K 6502 6510 CPU uP 54 | F http://www.6502.org/documents/datasheets/mos/mos_6510_mpu.pdf 55 | $ENDCMP 56 | # 57 | $CMP 6510-1 58 | D 6510-1 8-bit NMOS/HMOS Microprocessor, 64K, 8-bit I/O Port, 2ϕ Clock, DIP-40 59 | K 6502 6510-1 CPU uP 60 | F http://www.6502.org/documents/datasheets/mos/mos_6510_mpu.pdf 61 | $ENDCMP 62 | # 63 | $CMP 6510-2 64 | D 6510-2 8-bit NMOS/HMOS Microprocessor, 64K, 8-bit I/O Port, DIP-40 65 | K 6502 6510-2 CPU uP 66 | F http://www.6502.org/documents/datasheets/mos/mos_6510_mpu.pdf 67 | $ENDCMP 68 | # 69 | $CMP 6510T 70 | D 6510T 8-bit NMOS/HMOS Microprocessor, 64K, 8-bit I/O Port, DIP-40 71 | K 6502 6510T CPU uP 72 | F http://www.6502.org/documents/datasheets/mos/mos_6510_mpu.pdf 73 | $ENDCMP 74 | # 75 | $CMP 6512 76 | D 6512 8-bit NMOS Microprocessor, 64K, 2ϕ Clock, DIP-40 77 | K 6502 6512 CPU uP 78 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 79 | $ENDCMP 80 | # 81 | $CMP 6513 82 | D 6513 8-bit NMOS Microprocessor, 4K, 2ϕ Clock, DIP-28 83 | K 6502 6513 CPU uP 84 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 85 | $ENDCMP 86 | # 87 | $CMP 6514 88 | D 6514 8-bit NMOS Microprocessor, 8K, 2ϕ Clock, DIP-28 89 | K 6502 6514 CPU uP 90 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 91 | $ENDCMP 92 | # 93 | $CMP 6515 94 | D 6515 8-bit NMOS Microprocessor, 4K, 2ϕ Clock, DIP-28 95 | K 6502 6515 CPU uP 96 | F http://www.6502.org/documents/datasheets/mos/mos_6500_mpu_mar_1980.pdf 97 | $ENDCMP 98 | # 99 | $CMP 6520 100 | D 6520 NMOS Peripheral Interface Adapter (PIA), 20-pin I/O, DIP-40 101 | K 6502 6520 PIA I/O 102 | F http://www.6502.org/documents/datasheets/mos/mos_6520.pdf 103 | $ENDCMP 104 | # 105 | $CMP 6522 106 | D 6522 NMOS Versatile Interface Adapter (VIA), 20-pin I/O, 2 Timer/Counters, DIP-40 107 | K 6502 6522 VIA I/O 108 | F http://www.6502.org/documents/datasheets/mos/mos_6522_preliminary_nov_1977.pdf 109 | $ENDCMP 110 | # 111 | $CMP 6523 112 | D 6523 NMOS Tri-Port Interface (TPI), 24-pin I/O, DIP-40 113 | K 6502 6523 TPI I/O 114 | F http://www.6502.org/documents/datasheets/mos/mos_6523_tpi_preliminary_nov_1980.pdf 115 | $ENDCMP 116 | # 117 | $CMP 6525 118 | D 6525 NMOS Tri-Port Interface (TPI), 24-pin I/O, DIP-40 119 | K 6502 6525 TPI I/O 120 | F http://www.6502.org/documents/datasheets/mos/mos_6525_tpi_preliminary.pdf 121 | $ENDCMP 122 | # 123 | $CMP 6526 124 | D 6526 NMOS Complex Interface Adapter (CIA), 20-pin I/O, 2 Timer/Counters, RTC, DIP-40 125 | K 6502 6526 CIA I/O 126 | F http://www.6502.org/documents/datasheets/mos/mos_6526_cia_preliminary_nov_1981.pdf 127 | $ENDCMP 128 | # 129 | $CMP 6529 130 | D 6529 NMOS Single Port Interface (SPI), 8-pin I/O, DIP-20 131 | K 6502 6529 SPI I/O 132 | F http://www.6502.org/documents/datasheets/mos/mos_6529_spi.pdf 133 | $ENDCMP 134 | # 135 | $CMP 6532 136 | D 6532 NMOS Memory, I/O and Timer Array (RIOT), 16-pin I/O, 1 Timer/Counter, 128-byte SRAM, DIP-40 137 | K 6502 6532 RIOT I/O RAM 138 | F http://www.6502.org/documents/datasheets/mos/mos_6532_riot.pdf 139 | $ENDCMP 140 | # 141 | $CMP 6545 142 | D 6545 NMOS CRT Controller (CRTC), DIP-40 143 | K 6502 6545 CRTC Video 144 | F http://www.6502.org/documents/datasheets/mos/mos_6545-1_crtc.pdf 145 | $ENDCMP 146 | # 147 | $CMP 6551 148 | D 6551 NMOS Asynchronous Communication Interface Adapter (ACIA), Serial UART, DIP-28 149 | K 6502 6551 ACIA UART 150 | F http://www.6502.org/documents/datasheets/mos/mos_6551_acia.pdf 151 | $ENDCMP 152 | # 153 | $CMP 6581 154 | D 6581 NMOS Sound Interface Device (SID), 3-Voice Sound Synthesizer, DIP-28 155 | K 6502 6581 SID Sound 156 | F http://www.6502.org/documents/datasheets/mos/mos_6581_sid.pdf 157 | $ENDCMP 158 | # 159 | $CMP 6582 160 | D 6582 NMOS Sound Interface Device (SID), 3-Voice Sound Synthesizer, DIP-28 161 | K 6502 6582 SID Sound 162 | F http://www.6502.org/documents/datasheets/mos/mos_6582_sid.pdf 163 | $ENDCMP 164 | # 165 | $CMP 65CE02 166 | D 65CE02 8-bit CMOS Microprocessor, 64K, DIP-40 167 | K 6502 65CE02 CPU uP 168 | F http://www.6502.org/documents/datasheets/mos/mos_65ce02_mpu.pdf 169 | $ENDCMP 170 | # 171 | $CMP 8500 172 | D 8500 8-bit HMOS Microprocessor, 64K, 6-bit I/O Port, DIP-40 173 | K 6502 8500 CPU uP 174 | $ENDCMP 175 | # 176 | $CMP 8502 177 | D 8502 8-bit HMOS Microprocessor, 64K, 7-bit I/O Port, DIP-40 178 | K 6502 8502 CPU uP 179 | $ENDCMP 180 | # 181 | $CMP 8580 182 | D 8580 HMOS Sound Interface Device (SID), 3-Voice Sound Synthesizer, DIP-28 183 | K 6502 8580 SID Sound 184 | $ENDCMP 185 | # 186 | $CMP W65C02SxP 187 | D W65C02S 8-bit CMOS General Purpose Microprocessor, DIP-40 188 | K 6502 CPU uP 189 | F http://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf 190 | $ENDCMP 191 | # 192 | $CMP W65C02SxPL 193 | D W65C02S 8-bit CMOS General Purpose Microprocessor, PLCC-44 194 | K 6502 CPU uP 195 | F http://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf 196 | $ENDCMP 197 | # 198 | $CMP W65C02SxQ 199 | D W65C02S 8-bit CMOS General Purpose Microprocessor, PQFP-44 200 | K 6502 CPU uP 201 | F http://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf 202 | $ENDCMP 203 | # 204 | $CMP W65C21NxP 205 | D W65C21N CMOS Peripheral Interface Adapter (PIA), 20-pin I/O, NMOS-Compatible, DIP-40 206 | K 6502 6521 PIA I/O 207 | F http://www.westerndesigncenter.com/wdc/documentation/w65c21.pdf 208 | $ENDCMP 209 | # 210 | $CMP W65C21NxPL 211 | D W65C21N CMOS Peripheral Interface Adapter (PIA), 20-pin I/O, NMOS-Compatible, PLCC-44 212 | K 6502 6521 PIA I/O 213 | F http://www.westerndesigncenter.com/wdc/documentation/w65c21.pdf 214 | $ENDCMP 215 | # 216 | $CMP W65C21SxP 217 | D W65C21S CMOS Peripheral Interface Adapter (PIA), 20-pin I/O, DIP-40 218 | K 6502 6521 PIA I/O 219 | F http://www.westerndesigncenter.com/wdc/documentation/w65c21.pdf 220 | $ENDCMP 221 | # 222 | $CMP W65C21SxPL 223 | D W65C21S CMOS Peripheral Interface Adapter (PIA), 20-pin I/O, PLCC-44 224 | K 6502 6521 PIA I/O 225 | F http://www.westerndesigncenter.com/wdc/documentation/w65c21.pdf 226 | $ENDCMP 227 | # 228 | $CMP W65C22NxP 229 | D W65C22N CMOS Versatile Interface Adapter (VIA), 20-pin I/O, 2 Timer/Counters, NMOS-Compatible, DIP-40 230 | K 6502 6522 VIA I/O 231 | F http://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf 232 | $ENDCMP 233 | # 234 | $CMP W65C22NxPL 235 | D W65C22N CMOS Versatile Interface Adapter (VIA), 20-pin I/O, 2 Timer/Counters, NMOS-Compatible, PLCC-44 236 | K 6502 6522 VIA I/O 237 | F http://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf 238 | $ENDCMP 239 | # 240 | $CMP W65C22SxP 241 | D W65C22S CMOS Versatile Interface Adapter (VIA), 20-pin I/O, 2 Timer/Counters, DIP-40 242 | K 6502 6522 VIA I/O 243 | F http://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf 244 | $ENDCMP 245 | # 246 | $CMP W65C22SxPL 247 | D W65C22S CMOS Versatile Interface Adapter (VIA), 20-pin I/O, 2 Timer/Counters, PLCC-44 248 | K 6502 6522 VIA I/O 249 | F http://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf 250 | $ENDCMP 251 | # 252 | $CMP W65C22SxQ 253 | D W65C22S CMOS Versatile Interface Adapter (VIA), 20-pin I/O, 2 Timer/Counters, PQFP-44 254 | K 6502 6522 VIA I/O 255 | F http://www.westerndesigncenter.com/wdc/documentation/w65c22.pdf 256 | $ENDCMP 257 | # 258 | $CMP W65C51NxP 259 | D W65C51N CMOS Asynchronous Communication Interface Adapter (ACIA), Serial UART, DIP-28 260 | K 6502 6551 ACIA UART 261 | F http://www.westerndesigncenter.com/wdc/documentation/w65c51n.pdf 262 | $ENDCMP 263 | # 264 | $CMP W65C51NxPL 265 | D W65C51N CMOS Asynchronous Communication Interface Adapter (ACIA), Serial UART, PLCC-28 266 | K 6502 6551 ACIA UART 267 | F http://www.6502.org/documents/datasheets/mos/mos_6551_acia.pdf 268 | $ENDCMP 269 | # 270 | $CMP W65C51NxQ 271 | D W65C51N CMOS Asynchronous Communication Interface Adapter (ACIA), Serial UART, PQFP-32 272 | K 6502 6551 ACIA UART 273 | F http://www.westerndesigncenter.com/wdc/documentation/w65c51n.pdf 274 | $ENDCMP 275 | # 276 | $CMP W65C816SxP 277 | D W65C816S 8/16-bit CMOS General Purpose Microprocessor, DIP-40 278 | K 6502 65816 CPU uP 279 | F http://www.westerndesigncenter.com/wdc/documentation/w65c816s.pdf 280 | $ENDCMP 281 | # 282 | $CMP W65C816SxPL 283 | D W65C816S 8/16-bit CMOS General Purpose Microprocessor, PLCC-44 284 | K 6502 65816 CPU uP 285 | F http://www.westerndesigncenter.com/wdc/documentation/w65c816s.pdf 286 | $ENDCMP 287 | # 288 | $CMP W65C816SxQ 289 | D W65C02S 8/16-bit CMOS General Purpose Microprocessor, PQFP-44 290 | K 6502 65816 CPU uP 291 | F http://www.westerndesigncenter.com/wdc/documentation/w65c816s.pdf 292 | $ENDCMP 293 | # 294 | #End Doc Library 295 | -------------------------------------------------------------------------------- /hardware/kicad/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name project)(type KiCad)(uri ${KIPRJMOD}/project.pretty)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /hardware/kicad/project.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP DS1813-5+ 4 | F https://www.mouser.com/datasheet/2/256/maxim%20integrated%20products_ds1813-1178753.pdf 5 | $ENDCMP 6 | # 7 | #End Doc Library 8 | -------------------------------------------------------------------------------- /hardware/kicad/project.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # DS1813-5+ 5 | # 6 | DEF DS1813-5+ U 0 40 Y Y 3 F N 7 | F0 "U" 0 100 50 H V C CNN 8 | F1 "DS1813-5+" 0 0 50 H V C CNN 9 | F2 "Package_TO_SOT_THT:TO-92" 0 100 50 H I C CNN 10 | F3 "" 0 100 50 H I C CNN 11 | DRAW 12 | S -200 -300 200 -900 0 1 0 f 13 | X ~RST 1 300 -600 100 L 50 50 1 1 B 14 | X VCC 2 0 -200 100 D 50 50 1 1 W 15 | X GND 3 0 -1000 100 U 50 50 1 1 W 16 | X ~RST 1-UB 300 -600 100 R 50 50 2 1 B 17 | X GND ~-UB 0 -1000 100 R 50 50 2 1 U 18 | X VCC ~-UB 0 -200 100 R 50 50 2 1 W 19 | X ~RST 1-UC 300 -600 100 R 50 50 3 1 B 20 | X GND ~-UC 0 -1000 100 R 50 50 3 1 U 21 | X VCC ~-UC 0 -200 100 R 50 50 3 1 W 22 | ENDDRAW 23 | ENDDEF 24 | # 25 | #End Library 26 | -------------------------------------------------------------------------------- /hardware/kicad/project.pretty/SW_THT_DPDT.kicad_mod: -------------------------------------------------------------------------------- 1 | (module SW_THT_DPDT (layer F.Cu) (tedit 60FD49AB) 2 | (descr "E-Switch sub miniature slide switch, EG series, DPDT, http://spec_sheets.e-switch.com/specs/P040047.pdf") 3 | (tags "switch DPDT") 4 | (fp_text reference REF** (at 0 -2.92) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value SW_THT_DPDT (at 0 3.8) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -6 2.2) (end -6 -2.2) (layer F.SilkS) (width 0.12)) 11 | (fp_line (start 6 2.2) (end -6 2.2) (layer F.SilkS) (width 0.12)) 12 | (fp_line (start 6 -2.2) (end 6 2.2) (layer F.SilkS) (width 0.12)) 13 | (fp_line (start -6 -2.2) (end 6 -2.2) (layer F.SilkS) (width 0.12)) 14 | (fp_line (start -5.8 2) (end 5.8 2) (layer F.Fab) (width 0.1)) 15 | (fp_line (start 5.8 -2) (end 5.8 2) (layer F.Fab) (width 0.1)) 16 | (fp_line (start -6.2 -2.4) (end -6.2 2.4) (layer F.CrtYd) (width 0.05)) 17 | (fp_line (start 6.2 2.4) (end -6.2 2.4) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start -5.8 -2) (end 5.8 -2) (layer F.Fab) (width 0.1)) 19 | (fp_line (start -5.8 -2) (end -5.8 2) (layer F.Fab) (width 0.1)) 20 | (fp_line (start 6.2 -2.4) (end -6.2 -2.4) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 6.2 -2.4) (end 6.2 2.4) (layer F.CrtYd) (width 0.05)) 22 | (fp_text user %R (at 0 -2.92) (layer F.Fab) 23 | (effects (font (size 1 1) (thickness 0.15))) 24 | ) 25 | (fp_line (start -6.4 -2.6) (end -6.4 -1.3) (layer F.SilkS) (width 0.12)) 26 | (fp_line (start -6.4 -2.6) (end -5.1 -2.6) (layer F.SilkS) (width 0.12)) 27 | (pad 1 thru_hole rect (at -2.5 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)) 28 | (pad 2 thru_hole circle (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)) 29 | (pad 3 thru_hole circle (at 2.5 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask)) 30 | (model ${KISYS3DMOD}/Button_Switch_THT.3dshapes/SW_E-Switch_EG1271_DPDT.wrl 31 | (at (xyz 0 0 0)) 32 | (scale (xyz 1 1 1)) 33 | (rotate (xyz 0 0 0)) 34 | ) 35 | ) 36 | -------------------------------------------------------------------------------- /hardware/kicad/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name 65xx)(type Legacy)(uri ${KIPRJMOD}/65xx.lib)(options "")(descr "")) 3 | (lib (name project)(type Legacy)(uri ${KIPRJMOD}/project.lib)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /licenses/LGPL.txt: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 2.1, February 1999 3 | 4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | [This is the first released version of the Lesser GPL. It also counts 10 | as the successor of the GNU Library Public License, version 2, hence 11 | the version number 2.1.] 12 | 13 | Preamble 14 | 15 | The licenses for most software are designed to take away your 16 | freedom to share and change it. By contrast, the GNU General Public 17 | Licenses are intended to guarantee your freedom to share and change 18 | free software--to make sure the software is free for all its users. 19 | 20 | This license, the Lesser General Public License, applies to some 21 | specially designated software packages--typically libraries--of the 22 | Free Software Foundation and other authors who decide to use it. You 23 | can use it too, but we suggest you first think carefully about whether 24 | this license or the ordinary General Public License is the better 25 | strategy to use in any particular case, based on the explanations below. 26 | 27 | When we speak of free software, we are referring to freedom of use, 28 | not price. Our General Public Licenses are designed to make sure that 29 | you have the freedom to distribute copies of free software (and charge 30 | for this service if you wish); that you receive source code or can get 31 | it if you want it; that you can change the software and use pieces of 32 | it in new free programs; and that you are informed that you can do 33 | these things. 34 | 35 | To protect your rights, we need to make restrictions that forbid 36 | distributors to deny you these rights or to ask you to surrender these 37 | rights. These restrictions translate to certain responsibilities for 38 | you if you distribute copies of the library or if you modify it. 39 | 40 | For example, if you distribute copies of the library, whether gratis 41 | or for a fee, you must give the recipients all the rights that we gave 42 | you. You must make sure that they, too, receive or can get the source 43 | code. If you link other code with the library, you must provide 44 | complete object files to the recipients, so that they can relink them 45 | with the library after making changes to the library and recompiling 46 | it. And you must show them these terms so they know their rights. 47 | 48 | We protect your rights with a two-step method: (1) we copyright the 49 | library, and (2) we offer you this license, which gives you legal 50 | permission to copy, distribute and/or modify the library. 51 | 52 | To protect each distributor, we want to make it very clear that 53 | there is no warranty for the free library. Also, if the library is 54 | modified by someone else and passed on, the recipients should know 55 | that what they have is not the original version, so that the original 56 | author's reputation will not be affected by problems that might be 57 | introduced by others. 58 | 59 | Finally, software patents pose a constant threat to the existence of 60 | any free program. We wish to make sure that a company cannot 61 | effectively restrict the users of a free program by obtaining a 62 | restrictive license from a patent holder. Therefore, we insist that 63 | any patent license obtained for a version of the library must be 64 | consistent with the full freedom of use specified in this license. 65 | 66 | Most GNU software, including some libraries, is covered by the 67 | ordinary GNU General Public License. This license, the GNU Lesser 68 | General Public License, applies to certain designated libraries, and 69 | is quite different from the ordinary General Public License. We use 70 | this license for certain libraries in order to permit linking those 71 | libraries into non-free programs. 72 | 73 | When a program is linked with a library, whether statically or using 74 | a shared library, the combination of the two is legally speaking a 75 | combined work, a derivative of the original library. The ordinary 76 | General Public License therefore permits such linking only if the 77 | entire combination fits its criteria of freedom. The Lesser General 78 | Public License permits more lax criteria for linking other code with 79 | the library. 80 | 81 | We call this license the "Lesser" General Public License because it 82 | does Less to protect the user's freedom than the ordinary General 83 | Public License. It also provides other free software developers Less 84 | of an advantage over competing non-free programs. These disadvantages 85 | are the reason we use the ordinary General Public License for many 86 | libraries. However, the Lesser license provides advantages in certain 87 | special circumstances. 88 | 89 | For example, on rare occasions, there may be a special need to 90 | encourage the widest possible use of a certain library, so that it becomes 91 | a de-facto standard. To achieve this, non-free programs must be 92 | allowed to use the library. A more frequent case is that a free 93 | library does the same job as widely used non-free libraries. In this 94 | case, there is little to gain by limiting the free library to free 95 | software only, so we use the Lesser General Public License. 96 | 97 | In other cases, permission to use a particular library in non-free 98 | programs enables a greater number of people to use a large body of 99 | free software. For example, permission to use the GNU C Library in 100 | non-free programs enables many more people to use the whole GNU 101 | operating system, as well as its variant, the GNU/Linux operating 102 | system. 103 | 104 | Although the Lesser General Public License is Less protective of the 105 | users' freedom, it does ensure that the user of a program that is 106 | linked with the Library has the freedom and the wherewithal to run 107 | that program using a modified version of the Library. 108 | 109 | The precise terms and conditions for copying, distribution and 110 | modification follow. Pay close attention to the difference between a 111 | "work based on the library" and a "work that uses the library". The 112 | former contains code derived from the library, whereas the latter must 113 | be combined with the library in order to run. 114 | 115 | GNU LESSER GENERAL PUBLIC LICENSE 116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 117 | 118 | 0. This License Agreement applies to any software library or other 119 | program which contains a notice placed by the copyright holder or 120 | other authorized party saying it may be distributed under the terms of 121 | this Lesser General Public License (also called "this License"). 122 | Each licensee is addressed as "you". 123 | 124 | A "library" means a collection of software functions and/or data 125 | prepared so as to be conveniently linked with application programs 126 | (which use some of those functions and data) to form executables. 127 | 128 | The "Library", below, refers to any such software library or work 129 | which has been distributed under these terms. A "work based on the 130 | Library" means either the Library or any derivative work under 131 | copyright law: that is to say, a work containing the Library or a 132 | portion of it, either verbatim or with modifications and/or translated 133 | straightforwardly into another language. (Hereinafter, translation is 134 | included without limitation in the term "modification".) 135 | 136 | "Source code" for a work means the preferred form of the work for 137 | making modifications to it. For a library, complete source code means 138 | all the source code for all modules it contains, plus any associated 139 | interface definition files, plus the scripts used to control compilation 140 | and installation of the library. 141 | 142 | Activities other than copying, distribution and modification are not 143 | covered by this License; they are outside its scope. The act of 144 | running a program using the Library is not restricted, and output from 145 | such a program is covered only if its contents constitute a work based 146 | on the Library (independent of the use of the Library in a tool for 147 | writing it). Whether that is true depends on what the Library does 148 | and what the program that uses the Library does. 149 | 150 | 1. You may copy and distribute verbatim copies of the Library's 151 | complete source code as you receive it, in any medium, provided that 152 | you conspicuously and appropriately publish on each copy an 153 | appropriate copyright notice and disclaimer of warranty; keep intact 154 | all the notices that refer to this License and to the absence of any 155 | warranty; and distribute a copy of this License along with the 156 | Library. 157 | 158 | You may charge a fee for the physical act of transferring a copy, 159 | and you may at your option offer warranty protection in exchange for a 160 | fee. 161 | 162 | 2. You may modify your copy or copies of the Library or any portion 163 | of it, thus forming a work based on the Library, and copy and 164 | distribute such modifications or work under the terms of Section 1 165 | above, provided that you also meet all of these conditions: 166 | 167 | a) The modified work must itself be a software library. 168 | 169 | b) You must cause the files modified to carry prominent notices 170 | stating that you changed the files and the date of any change. 171 | 172 | c) You must cause the whole of the work to be licensed at no 173 | charge to all third parties under the terms of this License. 174 | 175 | d) If a facility in the modified Library refers to a function or a 176 | table of data to be supplied by an application program that uses 177 | the facility, other than as an argument passed when the facility 178 | is invoked, then you must make a good faith effort to ensure that, 179 | in the event an application does not supply such function or 180 | table, the facility still operates, and performs whatever part of 181 | its purpose remains meaningful. 182 | 183 | (For example, a function in a library to compute square roots has 184 | a purpose that is entirely well-defined independent of the 185 | application. Therefore, Subsection 2d requires that any 186 | application-supplied function or table used by this function must 187 | be optional: if the application does not supply it, the square 188 | root function must still compute square roots.) 189 | 190 | These requirements apply to the modified work as a whole. If 191 | identifiable sections of that work are not derived from the Library, 192 | and can be reasonably considered independent and separate works in 193 | themselves, then this License, and its terms, do not apply to those 194 | sections when you distribute them as separate works. But when you 195 | distribute the same sections as part of a whole which is a work based 196 | on the Library, the distribution of the whole must be on the terms of 197 | this License, whose permissions for other licensees extend to the 198 | entire whole, and thus to each and every part regardless of who wrote 199 | it. 200 | 201 | Thus, it is not the intent of this section to claim rights or contest 202 | your rights to work written entirely by you; rather, the intent is to 203 | exercise the right to control the distribution of derivative or 204 | collective works based on the Library. 205 | 206 | In addition, mere aggregation of another work not based on the Library 207 | with the Library (or with a work based on the Library) on a volume of 208 | a storage or distribution medium does not bring the other work under 209 | the scope of this License. 210 | 211 | 3. You may opt to apply the terms of the ordinary GNU General Public 212 | License instead of this License to a given copy of the Library. To do 213 | this, you must alter all the notices that refer to this License, so 214 | that they refer to the ordinary GNU General Public License, version 2, 215 | instead of to this License. (If a newer version than version 2 of the 216 | ordinary GNU General Public License has appeared, then you can specify 217 | that version instead if you wish.) Do not make any other change in 218 | these notices. 219 | 220 | Once this change is made in a given copy, it is irreversible for 221 | that copy, so the ordinary GNU General Public License applies to all 222 | subsequent copies and derivative works made from that copy. 223 | 224 | This option is useful when you wish to copy part of the code of 225 | the Library into a program that is not a library. 226 | 227 | 4. You may copy and distribute the Library (or a portion or 228 | derivative of it, under Section 2) in object code or executable form 229 | under the terms of Sections 1 and 2 above provided that you accompany 230 | it with the complete corresponding machine-readable source code, which 231 | must be distributed under the terms of Sections 1 and 2 above on a 232 | medium customarily used for software interchange. 233 | 234 | If distribution of object code is made by offering access to copy 235 | from a designated place, then offering equivalent access to copy the 236 | source code from the same place satisfies the requirement to 237 | distribute the source code, even though third parties are not 238 | compelled to copy the source along with the object code. 239 | 240 | 5. A program that contains no derivative of any portion of the 241 | Library, but is designed to work with the Library by being compiled or 242 | linked with it, is called a "work that uses the Library". Such a 243 | work, in isolation, is not a derivative work of the Library, and 244 | therefore falls outside the scope of this License. 245 | 246 | However, linking a "work that uses the Library" with the Library 247 | creates an executable that is a derivative of the Library (because it 248 | contains portions of the Library), rather than a "work that uses the 249 | library". The executable is therefore covered by this License. 250 | Section 6 states terms for distribution of such executables. 251 | 252 | When a "work that uses the Library" uses material from a header file 253 | that is part of the Library, the object code for the work may be a 254 | derivative work of the Library even though the source code is not. 255 | Whether this is true is especially significant if the work can be 256 | linked without the Library, or if the work is itself a library. The 257 | threshold for this to be true is not precisely defined by law. 258 | 259 | If such an object file uses only numerical parameters, data 260 | structure layouts and accessors, and small macros and small inline 261 | functions (ten lines or less in length), then the use of the object 262 | file is unrestricted, regardless of whether it is legally a derivative 263 | work. (Executables containing this object code plus portions of the 264 | Library will still fall under Section 6.) 265 | 266 | Otherwise, if the work is a derivative of the Library, you may 267 | distribute the object code for the work under the terms of Section 6. 268 | Any executables containing that work also fall under Section 6, 269 | whether or not they are linked directly with the Library itself. 270 | 271 | 6. As an exception to the Sections above, you may also combine or 272 | link a "work that uses the Library" with the Library to produce a 273 | work containing portions of the Library, and distribute that work 274 | under terms of your choice, provided that the terms permit 275 | modification of the work for the customer's own use and reverse 276 | engineering for debugging such modifications. 277 | 278 | You must give prominent notice with each copy of the work that the 279 | Library is used in it and that the Library and its use are covered by 280 | this License. You must supply a copy of this License. If the work 281 | during execution displays copyright notices, you must include the 282 | copyright notice for the Library among them, as well as a reference 283 | directing the user to the copy of this License. Also, you must do one 284 | of these things: 285 | 286 | a) Accompany the work with the complete corresponding 287 | machine-readable source code for the Library including whatever 288 | changes were used in the work (which must be distributed under 289 | Sections 1 and 2 above); and, if the work is an executable linked 290 | with the Library, with the complete machine-readable "work that 291 | uses the Library", as object code and/or source code, so that the 292 | user can modify the Library and then relink to produce a modified 293 | executable containing the modified Library. (It is understood 294 | that the user who changes the contents of definitions files in the 295 | Library will not necessarily be able to recompile the application 296 | to use the modified definitions.) 297 | 298 | b) Use a suitable shared library mechanism for linking with the 299 | Library. A suitable mechanism is one that (1) uses at run time a 300 | copy of the library already present on the user's computer system, 301 | rather than copying library functions into the executable, and (2) 302 | will operate properly with a modified version of the library, if 303 | the user installs one, as long as the modified version is 304 | interface-compatible with the version that the work was made with. 305 | 306 | c) Accompany the work with a written offer, valid for at 307 | least three years, to give the same user the materials 308 | specified in Subsection 6a, above, for a charge no more 309 | than the cost of performing this distribution. 310 | 311 | d) If distribution of the work is made by offering access to copy 312 | from a designated place, offer equivalent access to copy the above 313 | specified materials from the same place. 314 | 315 | e) Verify that the user has already received a copy of these 316 | materials or that you have already sent this user a copy. 317 | 318 | For an executable, the required form of the "work that uses the 319 | Library" must include any data and utility programs needed for 320 | reproducing the executable from it. However, as a special exception, 321 | the materials to be distributed need not include anything that is 322 | normally distributed (in either source or binary form) with the major 323 | components (compiler, kernel, and so on) of the operating system on 324 | which the executable runs, unless that component itself accompanies 325 | the executable. 326 | 327 | It may happen that this requirement contradicts the license 328 | restrictions of other proprietary libraries that do not normally 329 | accompany the operating system. Such a contradiction means you cannot 330 | use both them and the Library together in an executable that you 331 | distribute. 332 | 333 | 7. You may place library facilities that are a work based on the 334 | Library side-by-side in a single library together with other library 335 | facilities not covered by this License, and distribute such a combined 336 | library, provided that the separate distribution of the work based on 337 | the Library and of the other library facilities is otherwise 338 | permitted, and provided that you do these two things: 339 | 340 | a) Accompany the combined library with a copy of the same work 341 | based on the Library, uncombined with any other library 342 | facilities. This must be distributed under the terms of the 343 | Sections above. 344 | 345 | b) Give prominent notice with the combined library of the fact 346 | that part of it is a work based on the Library, and explaining 347 | where to find the accompanying uncombined form of the same work. 348 | 349 | 8. You may not copy, modify, sublicense, link with, or distribute 350 | the Library except as expressly provided under this License. Any 351 | attempt otherwise to copy, modify, sublicense, link with, or 352 | distribute the Library is void, and will automatically terminate your 353 | rights under this License. However, parties who have received copies, 354 | or rights, from you under this License will not have their licenses 355 | terminated so long as such parties remain in full compliance. 356 | 357 | 9. You are not required to accept this License, since you have not 358 | signed it. However, nothing else grants you permission to modify or 359 | distribute the Library or its derivative works. These actions are 360 | prohibited by law if you do not accept this License. Therefore, by 361 | modifying or distributing the Library (or any work based on the 362 | Library), you indicate your acceptance of this License to do so, and 363 | all its terms and conditions for copying, distributing or modifying 364 | the Library or works based on it. 365 | 366 | 10. Each time you redistribute the Library (or any work based on the 367 | Library), the recipient automatically receives a license from the 368 | original licensor to copy, distribute, link with or modify the Library 369 | subject to these terms and conditions. You may not impose any further 370 | restrictions on the recipients' exercise of the rights granted herein. 371 | You are not responsible for enforcing compliance by third parties with 372 | this License. 373 | 374 | 11. If, as a consequence of a court judgment or allegation of patent 375 | infringement or for any other reason (not limited to patent issues), 376 | conditions are imposed on you (whether by court order, agreement or 377 | otherwise) that contradict the conditions of this License, they do not 378 | excuse you from the conditions of this License. If you cannot 379 | distribute so as to satisfy simultaneously your obligations under this 380 | License and any other pertinent obligations, then as a consequence you 381 | may not distribute the Library at all. For example, if a patent 382 | license would not permit royalty-free redistribution of the Library by 383 | all those who receive copies directly or indirectly through you, then 384 | the only way you could satisfy both it and this License would be to 385 | refrain entirely from distribution of the Library. 386 | 387 | If any portion of this section is held invalid or unenforceable under any 388 | particular circumstance, the balance of the section is intended to apply, 389 | and the section as a whole is intended to apply in other circumstances. 390 | 391 | It is not the purpose of this section to induce you to infringe any 392 | patents or other property right claims or to contest validity of any 393 | such claims; this section has the sole purpose of protecting the 394 | integrity of the free software distribution system which is 395 | implemented by public license practices. Many people have made 396 | generous contributions to the wide range of software distributed 397 | through that system in reliance on consistent application of that 398 | system; it is up to the author/donor to decide if he or she is willing 399 | to distribute software through any other system and a licensee cannot 400 | impose that choice. 401 | 402 | This section is intended to make thoroughly clear what is believed to 403 | be a consequence of the rest of this License. 404 | 405 | 12. If the distribution and/or use of the Library is restricted in 406 | certain countries either by patents or by copyrighted interfaces, the 407 | original copyright holder who places the Library under this License may add 408 | an explicit geographical distribution limitation excluding those countries, 409 | so that distribution is permitted only in or among countries not thus 410 | excluded. In such case, this License incorporates the limitation as if 411 | written in the body of this License. 412 | 413 | 13. The Free Software Foundation may publish revised and/or new 414 | versions of the Lesser General Public License from time to time. 415 | Such new versions will be similar in spirit to the present version, 416 | but may differ in detail to address new problems or concerns. 417 | 418 | Each version is given a distinguishing version number. If the Library 419 | specifies a version number of this License which applies to it and 420 | "any later version", you have the option of following the terms and 421 | conditions either of that version or of any later version published by 422 | the Free Software Foundation. If the Library does not specify a 423 | license version number, you may choose any version ever published by 424 | the Free Software Foundation. 425 | 426 | 14. If you wish to incorporate parts of the Library into other free 427 | programs whose distribution conditions are incompatible with these, 428 | write to the author to ask for permission. For software which is 429 | copyrighted by the Free Software Foundation, write to the Free 430 | Software Foundation; we sometimes make exceptions for this. Our 431 | decision will be guided by the two goals of preserving the free status 432 | of all derivatives of our free software and of promoting the sharing 433 | and reuse of software generally. 434 | 435 | NO WARRANTY 436 | 437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY 441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE 442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE 444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME 445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 446 | 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU 450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR 451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF 455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 456 | DAMAGES. 457 | 458 | END OF TERMS AND CONDITIONS 459 | 460 | How to Apply These Terms to Your New Libraries 461 | 462 | If you develop a new library, and you want it to be of the greatest 463 | possible use to the public, we recommend making it free software that 464 | everyone can redistribute and change. You can do so by permitting 465 | redistribution under these terms (or, alternatively, under the terms of the 466 | ordinary General Public License). 467 | 468 | To apply these terms, attach the following notices to the library. It is 469 | safest to attach them to the start of each source file to most effectively 470 | convey the exclusion of warranty; and each file should have at least the 471 | "copyright" line and a pointer to where the full notice is found. 472 | 473 | 474 | Copyright (C) 475 | 476 | This library is free software; you can redistribute it and/or 477 | modify it under the terms of the GNU Lesser General Public 478 | License as published by the Free Software Foundation; either 479 | version 2.1 of the License, or (at your option) any later version. 480 | 481 | This library is distributed in the hope that it will be useful, 482 | but WITHOUT ANY WARRANTY; without even the implied warranty of 483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 484 | Lesser General Public License for more details. 485 | 486 | You should have received a copy of the GNU Lesser General Public 487 | License along with this library; if not, write to the Free Software 488 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 489 | USA 490 | 491 | Also add information on how to contact you by electronic and paper mail. 492 | 493 | You should also get your employer (if you work as a programmer) or your 494 | school, if any, to sign a "copyright disclaimer" for the library, if 495 | necessary. Here is a sample; alter the names: 496 | 497 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 498 | library `Frob' (a library for tweaking knobs) written by James Random 499 | Hacker. 500 | 501 | , 1 April 1990 502 | Ty Coon, President of Vice 503 | 504 | That's all there is to it! -------------------------------------------------------------------------------- /rom/Makefile: -------------------------------------------------------------------------------- 1 | MINIPRO=minipro 2 | 3 | all: rom.bin programs 4 | 5 | rom.bin: basic boot 6 | cat basic/basic.bin boot/boot.bin > rom.bin 7 | 8 | basic: 9 | $(MAKE) -C basic 10 | 11 | boot: 12 | $(MAKE) -C boot 13 | 14 | programs: 15 | $(MAKE) -C programs 16 | 17 | clean: 18 | rm -f rom.bin 19 | $(MAKE) -C basic clean 20 | $(MAKE) -C boot clean 21 | $(MAKE) -C programs clean 22 | 23 | flashrom: rom.bin 24 | $(MINIPRO) -p AT28C256 -w rom.bin 25 | 26 | .PHONY: all basic boot programs flashrom 27 | -------------------------------------------------------------------------------- /rom/basic/Makefile: -------------------------------------------------------------------------------- 1 | CA65=/usr/bin/ca65 2 | LD65=/usr/bin/ld65 3 | 4 | basic.bin: min_mon.o 5 | $(LD65) -o basic.bin \ 6 | -C basic.cfg \ 7 | min_mon.o 8 | 9 | min_mon.o: min_mon.s basic.s 10 | $(CA65) --cpu 65C02 --feature labels_without_colons min_mon.s 11 | 12 | clean: 13 | rm -f min_mon.o basic.bin 14 | 15 | -------------------------------------------------------------------------------- /rom/basic/basic.cfg: -------------------------------------------------------------------------------- 1 | # Configuration for BASIC ROM 2 | MEMORY { 3 | ZP: start = $00, size = $0100, type = rw, file = ""; 4 | RAM: start = $0100, size = $7e00, type = rw, file = ""; 5 | PRG: start = $C000, size = $4000, type = ro, file = %O, fill = yes, fillval = $00; 6 | } 7 | 8 | SEGMENTS { 9 | ZEROPAGE: load = ZP, type = zp; 10 | BSS: load = RAM, type = bss; 11 | CODE: load = PRG, type = ro, start = $C000; 12 | VECTORS: load = PRG, type = ro, start = $FFFA; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /rom/basic/min_mon.s: -------------------------------------------------------------------------------- 1 | ; minimal monitor for EhBASIC and 6502 simulator V1.05 2 | ; tabs converted to space, tabwidth=6 3 | 4 | ; To run EhBASIC on the simulator load and assemble [F7] this file, start the simulator 5 | ; running [F6] then start the code with the RESET [CTRL][SHIFT]R. Just selecting RUN 6 | ; will do nothing, you'll still have to do a reset to run the code. 7 | 8 | .include "basic.s" 9 | 10 | ; put the IRQ and MNI code in RAM so that it can be changed 11 | 12 | IRQ_vec = VEC_SV+2 ; IRQ code vector 13 | NMI_vec = IRQ_vec+$0A ; NMI code vector 14 | 15 | ; now the code. all this does is set up the vectors and interrupt code 16 | ; and wait for the user to select [C]old or [W]arm start. nothing else 17 | ; fits in less than 128 bytes 18 | 19 | .segment "CODE" ; pretend this is in a 1/8K ROM 20 | 21 | ; reset vector points here 22 | 23 | RES_vec 24 | CLD ; clear decimal mode 25 | LDX #$FF ; empty stack 26 | TXS ; set the stack 27 | JSR ACIAsetup 28 | 29 | ; set up vectors and interrupt code, copy them to page 2 30 | 31 | LDY #END_CODE-LAB_vec ; set index/count 32 | LAB_stlp 33 | LDA LAB_vec-1,Y ; get byte from interrupt code 34 | STA VEC_IN-1,Y ; save to RAM 35 | DEY ; decrement index/count 36 | BNE LAB_stlp ; loop if more to do 37 | 38 | ; now do the signon message, Y = $00 here 39 | 40 | LAB_signon 41 | LDA LAB_mess,Y ; get byte from sign on message 42 | BEQ LAB_nokey ; exit loop if done 43 | 44 | JSR V_OUTP ; output character 45 | INY ; increment index 46 | BNE LAB_signon ; loop, branch always 47 | 48 | LAB_nokey 49 | JSR V_INPT ; call scan input device 50 | BCC LAB_nokey ; loop if no key 51 | 52 | AND #$DF ; mask xx0x xxxx, ensure upper case 53 | CMP #'W' ; compare with [W]arm start 54 | BEQ LAB_dowarm ; branch if [W]arm start 55 | 56 | CMP #'C' ; compare with [C]old start 57 | BNE RES_vec ; loop if not [C]old start 58 | 59 | JMP LAB_COLD ; do EhBASIC cold start 60 | 61 | LAB_dowarm 62 | JMP LAB_WARM ; do EhBASIC warm start 63 | 64 | ; Polled 65c51 I/O routines adapted to EhBASIC. Delay routine from 65 | ; http://forum.6502.org/viewtopic.php?f=4&t=2543&start=30#p29795 66 | ACIA_RX = $8400 67 | ACIA_TX = $8400 68 | ACIA_STATUS = $8401 69 | ACIA_COMMAND = $8402 70 | ACIA_CONTROL = $8403 71 | 72 | ACIAsetup 73 | LDA #$00 ; write anything to status register for program reset 74 | STA ACIA_STATUS 75 | LDA #$0B ; %0000 1011 = Receiver odd parity check 76 | ; Parity mode disabled 77 | ; Receiver normal mode 78 | ; RTSB Low, trans int disabled 79 | ; IRQB disabled 80 | ; Data terminal ready (DTRB low) 81 | STA ACIA_COMMAND ; set command register 82 | LDA #$1F ; %0001 1111 = 19200 Baud 83 | ; External receiver 84 | ; 8 bit words 85 | ; 1 stop bit 86 | STA ACIA_CONTROL ; set control register 87 | RTS 88 | 89 | ACIAout 90 | PHA ; save A 91 | LDA ACIA_STATUS ; Read (and ignore) ACIA status register 92 | PLA ; restore A 93 | STA ACIA_TX ; write byte 94 | JSR ACIAdelay ; delay because of bug 95 | RTS 96 | 97 | ACIAdelay 98 | PHY ; Save Y Reg 99 | PHX ; Save X Reg 100 | DELAY_LOOP 101 | LDY #6 ; Get delay value (clock rate in MHz 2 clock cycles) 102 | MINIDLY 103 | LDX #$68 ; Seed X reg 104 | DELAY_1 105 | DEX ; Decrement low index 106 | BNE DELAY_1 ; Loop back until done 107 | DEY ; Decrease by one 108 | BNE MINIDLY ; Loop until done 109 | PLX ; Restore X Reg 110 | PLY ; Restore Y Reg 111 | DELAY_DONE 112 | RTS ; Delay done, return 113 | 114 | ACIAin 115 | LDA ACIA_STATUS ; get ACIA status 116 | AND #$08 ; mask rx buffer status flag 117 | BEQ LAB_nobyw ; branch if no byte waiting 118 | LDA ACIA_RX ; get byte from ACIA data port 119 | SEC ; flag byte received 120 | RTS 121 | LAB_nobyw 122 | CLC ; flag no byte received 123 | no_load ; empty load vector for EhBASIC 124 | no_save ; empty save vector for EhBASIC 125 | RTS 126 | 127 | ; vector tables 128 | 129 | LAB_vec 130 | .word ACIAin ; byte in from simulated ACIA 131 | .word ACIAout ; byte out to simulated ACIA 132 | .word no_load ; null load vector for EhBASIC 133 | .word no_save ; null save vector for EhBASIC 134 | 135 | ; EhBASIC IRQ support 136 | 137 | IRQ_CODE 138 | PHA ; save A 139 | LDA IrqBase ; get the IRQ flag byte 140 | LSR ; shift the set b7 to b6, and on down ... 141 | ORA IrqBase ; OR the original back in 142 | STA IrqBase ; save the new IRQ flag byte 143 | PLA ; restore A 144 | RTI 145 | 146 | ; EhBASIC NMI support 147 | 148 | NMI_CODE 149 | PHA ; save A 150 | LDA NmiBase ; get the NMI flag byte 151 | LSR ; shift the set b7 to b6, and on down ... 152 | ORA NmiBase ; OR the original back in 153 | STA NmiBase ; save the new NMI flag byte 154 | PLA ; restore A 155 | RTI 156 | 157 | END_CODE 158 | 159 | LAB_mess 160 | .byte $0D,$0A,"6502 EhBASIC [C]old/[W]arm ?",$00 161 | ; sign on string 162 | 163 | ; system vectors 164 | 165 | .segment "VECTORS" 166 | 167 | .word NMI_vec ; NMI vector 168 | .word RES_vec ; RESET vector 169 | .word IRQ_vec ; IRQ vector 170 | 171 | .end RES_vec ; set start at reset vector 172 | 173 | -------------------------------------------------------------------------------- /rom/boot/Makefile: -------------------------------------------------------------------------------- 1 | CA65=/usr/bin/ca65 2 | LD65=/usr/bin/ld65 3 | 4 | all: boot.bin generated/rom_defs.o 5 | 6 | boot.bin boot.dbg: boot.o 7 | $(LD65) \ 8 | --dbgfile boot.dbg \ 9 | -o boot.bin \ 10 | -C boot.cfg \ 11 | boot.o 12 | 13 | boot.o: boot.s 14 | $(CA65) \ 15 | --cpu 65C02 \ 16 | --debug-info \ 17 | boot.s 18 | 19 | generated/rom_defs.o: generated/rom_defs.s 20 | $(CA65) \ 21 | --cpu 65C02 \ 22 | --debug-info \ 23 | boot.s 24 | 25 | generated/rom_defs.s: boot.dbg 26 | python3 generated/generate_rom_defs.py 27 | 28 | clean: 29 | rm -f boot.o boot.bin boot.dbg generated/rom_defs.s generated/rom_defs.o 30 | 31 | .PHONY: all 32 | 33 | -------------------------------------------------------------------------------- /rom/boot/boot.cfg: -------------------------------------------------------------------------------- 1 | # Configuration for boot ROM 2 | MEMORY { 3 | ZP: start = $00, size = $0100, type = rw, file = ""; 4 | RAM: start = $0100, size = $7e00, type = rw, file = ""; 5 | PRG: start = $C000, size = $4000, type = ro, file = %O, fill = yes, fillval = $00; 6 | } 7 | 8 | SEGMENTS { 9 | ZEROPAGE: load = ZP, type = zp; 10 | BSS: load = RAM, type = bss; 11 | CODE: load = PRG, type = ro, start = $C000; 12 | VECTORS: load = PRG, type = ro, start = $FFFA; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /rom/boot/boot.s: -------------------------------------------------------------------------------- 1 | ; Boot ROM for 6502 computer. Provides shell which can access test programs. 2 | 3 | .include "hardware/speaker.s" 4 | .include "hardware/acia.s" 5 | .include "hardware/via.s" 6 | 7 | .segment "BSS" 8 | shell_cmd_id: .res 1 9 | shell_cmd_tmp: .res 1 10 | shell_buffer_used: .res 1 11 | shell_buffer: .res 64 12 | .segment "CODE" 13 | 14 | reset: 15 | ; Computer setup 16 | ldx #$ff 17 | txs 18 | cli 19 | jsr acia_setup 20 | 21 | ; Print welcome message 22 | jsr shell_newline 23 | ldx #0 24 | @shell_welcome_char: 25 | lda shell_welcome, X 26 | beq @shell_welcome_done 27 | jsr acia_print_char 28 | inx 29 | jmp @shell_welcome_char 30 | @shell_welcome_done: 31 | jsr shell_newline 32 | 33 | shell_next_command: 34 | ; Clear buffer 35 | lda #0 36 | sta shell_buffer_used 37 | ; Show prompt 38 | ldx #0 39 | @shell_prompt_char: 40 | lda shell_prompt, X 41 | beq @shell_prompt_done 42 | jsr acia_print_char 43 | inx 44 | jmp @shell_prompt_char 45 | @shell_prompt_done: 46 | 47 | shell_next_char: 48 | ; receive char 49 | jsr acia_recv_char 50 | sta shell_cmd_tmp ; possible future use 51 | cmp #$0d ; return key pressed? 52 | beq @run_command ; run the command 53 | ; TODO check for ASCII printable, backspace etc 54 | ; regular ascii char - save to buffer 55 | ldx shell_buffer_used 56 | sta shell_buffer, X 57 | inx 58 | stx shell_buffer_used 59 | ; print char 60 | jsr acia_print_char 61 | jmp shell_next_char 62 | @run_command: 63 | jsr shell_newline 64 | ; set command ID to 0 65 | ldx shell_buffer_used 66 | cpx #0 67 | beq @no_command 68 | lda #0 69 | sta shell_cmd_id 70 | @test_command_next: 71 | ldx shell_cmd_id ; any more commands to compare? 72 | cpx built_in_count 73 | bcs @command_not_found ; no more commands to compare 74 | jsr shell_command_test 75 | inc shell_cmd_id 76 | jmp @test_command_next 77 | @no_command: ; pressed enter with nothing at the prompt 78 | jmp shell_next_command 79 | 80 | @command_not_found: 81 | ; Print not found message 82 | ldx #0 83 | @shell_not_found_char: 84 | lda shell_not_found, X 85 | beq @shell_not_found_done 86 | jsr acia_print_char 87 | inx 88 | jmp @shell_not_found_char 89 | @shell_not_found_done: 90 | jsr shell_newline 91 | jmp shell_next_command 92 | 93 | ; if command number shell_cmd_id is the one in shell_buffer then run it, oherwise return 94 | shell_command_test: 95 | ldx shell_cmd_id ; id of this command 96 | lda built_in_cmd_offsets, X ; start character of this command name in built_in_cmd 97 | tax ; x is index for next character in built_in_cmd 98 | ldy #0 ; y is index for next character in shell_buffer 99 | @nextchar: 100 | tya ; check for end of shell command 101 | cmp shell_buffer_used 102 | bcs @shell_command_end 103 | lda shell_buffer, Y ; next char in shell_buffer 104 | cmp #32 ; check for separator between shell command and arg 105 | beq @shell_command_end 106 | sta shell_cmd_tmp ; store to fixed addr for next computation 107 | lda built_in_cmd, X ; next char in built_in_cmd 108 | cmp #0 ; check for null 109 | beq @command_not_match ; command we are checking has ended, user command has not 110 | cmp shell_cmd_tmp ; check for char is equal 111 | bne @command_not_match 112 | inx 113 | iny 114 | jmp @nextchar 115 | @shell_command_end: ; user command ended 116 | lda built_in_cmd, X ; next char of command we are checking against 117 | cmp #0 ; if we read a null here it is a match 118 | beq @command_match ; command we are checking also ended 119 | @command_not_match: 120 | rts 121 | @command_match: ; run the command 122 | lda shell_cmd_id ; Get command ID, multiply by 2, jump to it. 123 | asl ; Multiply by 2 - mem address is 2 bytes 124 | tax 125 | jmp (built_in_main, X) ; jump to this main method 126 | 127 | shell_not_found: .asciiz "Command not found" 128 | shell_welcome: .asciiz "65C02 Computer Ready" 129 | shell_prompt: .asciiz "# " 130 | 131 | shell_newline: 132 | lda #$0d 133 | jsr acia_print_char 134 | lda #$0a 135 | jsr acia_print_char 136 | rts 137 | 138 | sys_exit: ; Jump here to hand control back to shell 139 | ldx #$ff ; Discard stack 140 | txs 141 | cli 142 | jmp shell_next_command 143 | 144 | ; 145 | ; Built-in command table 146 | ; 147 | built_in_count: .byte 6 148 | built_in_cmd_offsets: 149 | .byte 0 150 | .byte 5 151 | .byte 11 152 | .byte 14 153 | .byte 22 154 | .byte 26 155 | 156 | built_in_cmd: 157 | .asciiz "echo" 158 | .asciiz "hello" 159 | .asciiz "rx" 160 | .asciiz "irqtest" 161 | .asciiz "run" 162 | .asciiz "dump" 163 | 164 | built_in_main: 165 | .word shell_echo_main 166 | .word shell_hello_main 167 | .word shell_rx_main 168 | .word shell_irqtest_main 169 | .word shell_run_main 170 | .word shell_dump_main 171 | 172 | ; 173 | ; Built-in command: echo 174 | ; 175 | shell_echo_main: 176 | ldx #5 177 | 178 | @shell_echo_char: 179 | lda shell_buffer, X 180 | jsr acia_print_char 181 | inx 182 | cpx shell_buffer_used 183 | bcs @shell_echo_done 184 | jmp @shell_echo_char 185 | @shell_echo_done: 186 | jsr shell_newline 187 | lda #0 188 | jmp sys_exit 189 | 190 | ; 191 | ; Built-in command: hello 192 | ; 193 | shell_hello_main: 194 | ldx #0 195 | @hello_char: 196 | lda hello_world, X 197 | beq @hello_done 198 | jsr acia_print_char 199 | inx 200 | jmp @hello_char 201 | @hello_done: 202 | jsr shell_newline 203 | lda #0 204 | jmp sys_exit 205 | 206 | hello_world: .asciiz "Hello, world" 207 | 208 | ; 209 | ; Built-in command: rx 210 | ; recives a file over XMODEM protocol, and loads it into memory 211 | USER_PROGRAM_START = $0400 ; Address for start of user programs 212 | USER_PROGRAM_WRITE_PTR = $00 ; ZP address for writing user program 213 | 214 | shell_rx_main: 215 | ; Set pointers 216 | lda #USER_PROGRAM_START ; High byte next 219 | sta USER_PROGRAM_WRITE_PTR + 1 220 | ; Delay so that we can set up file send 221 | lda #1 ; wait ~1 second 222 | jsr shell_rx_sleep_seconds 223 | ; NAK, ACK once 224 | @shell_block_nak: 225 | lda #$15 ; NAK gets started 226 | jsr acia_print_char 227 | lda SPEAKER ; Click each time we send a NAK or ACK 228 | jsr shell_rx_receive_with_timeout ; Check in loop w/ timeout 229 | bcc @shell_block_nak ; Not received yet 230 | cmp #$01 ; If we do have char, should be SOH 231 | bne @shell_rx_fail ; Terminate transfer if we don't get SOH 232 | @shell_rx_block: 233 | ; Receive one block 234 | jsr acia_recv_char ; Block number 235 | jsr acia_recv_char ; Inverse block number 236 | ldy #0 ; Start at char 0 237 | @shell_rx_char: 238 | jsr acia_recv_char 239 | sta (USER_PROGRAM_WRITE_PTR), Y 240 | iny 241 | cpy #128 242 | bne @shell_rx_char 243 | jsr acia_recv_char ; Checksum - TODO verify this and jump to shell_block_nak to repeat if not matching 244 | lda #$06 ; ACK the packet 245 | jsr acia_print_char 246 | lda SPEAKER ; Click each time we send a NAK or ACK 247 | jsr acia_recv_char 248 | cmp #$04 ; EOT char, no more blocks 249 | beq @shell_rx_done 250 | cmp #$01 ; SOH char, next block on the way 251 | bne @shell_block_nak ; Anything else fail transfer 252 | lda USER_PROGRAM_WRITE_PTR ; This next part moves write pointer along by 128 bytes 253 | cmp #$00 254 | beq @block_half_advance 255 | lda #$00 ; If low byte != 0, set to 0 and inc high byte 256 | sta USER_PROGRAM_WRITE_PTR 257 | inc USER_PROGRAM_WRITE_PTR + 1 258 | jmp @shell_rx_block 259 | @block_half_advance: ; If low byte = 0, set it to 128 260 | lda #$80 261 | sta USER_PROGRAM_WRITE_PTR 262 | jmp @shell_rx_block 263 | @shell_rx_done: 264 | lda #$6 ; ACK the EOT as well. 265 | jsr acia_print_char 266 | lda SPEAKER ; Click each time we send a NAK or ACK 267 | lda #1 ; wait a moment (printing does not work otherwise..) 268 | jsr shell_rx_sleep_seconds 269 | ; jsr shell_rx_print_user_program 270 | jsr shell_newline 271 | lda #0 272 | jmp sys_exit 273 | @shell_rx_fail: 274 | lda #1 275 | jmp sys_exit 276 | 277 | ; Like acia_recv_char, but terminates after a short time if nothing is received 278 | shell_rx_receive_with_timeout: 279 | ldy #$ff 280 | @y_loop: 281 | ldx #$ff 282 | @x_loop: 283 | lda ACIA_STATUS ; check ACIA status in inner loop 284 | and #$08 ; mask rx buffer status flag 285 | bne @rx_got_char 286 | dex 287 | cpx #0 288 | bne @x_loop 289 | dey 290 | cpy #0 291 | bne @y_loop 292 | clc ; no byte received in time 293 | rts 294 | @rx_got_char: 295 | lda ACIA_RX ; get byte from ACIA data port 296 | sec ; set carry bit 297 | rts 298 | 299 | shell_rx_sleep_seconds: ; sleep for 0-63 seconds (approx) 300 | pha ; save registers 301 | phx 302 | phy 303 | asl ; multiply A by 4, outer loop is approx 250ms. 304 | asl 305 | @a_loop: 306 | cmp #0 ; stop if A is 0 (outer loop) 307 | beq @end 308 | ldy #$ff ; start Y at 255 and decrement (middle loop) 309 | @y_loop: 310 | ldx #$ff 311 | @x_loop: ; start Y at 255 and decrement (inner loop) 312 | dex 313 | cpx #0 314 | bne @x_loop ; end inner loop 315 | dey 316 | cpy #0 317 | bne @y_loop ; end middle loop 318 | dec ; decrement A and repeat 319 | jmp @a_loop ; end outer loop 320 | @end: 321 | ply ; restore registers 322 | plx 323 | pla 324 | rts 325 | 326 | ; test routine tp show what is being received over serial. 327 | ; receive bytes from ACIA, and echo them back in hex until Ctrl+C is pressed 328 | shell_rx_print_chars: 329 | ldx #26 ; Number of hex digits per line, fills 80 chars 330 | @next_byte: 331 | phx 332 | jsr acia_recv_char ; get char 333 | cmp #$03 ; Ctrl+C? 334 | beq @done 335 | jsr hex_print_byte ; print as hex (2 digits) 336 | lda #$20 ; space between chars 337 | jsr acia_print_char 338 | plx 339 | dex 340 | cpx #0 341 | bne @next_byte ; loop until x is 0 342 | jsr shell_newline ; line break 343 | jmp shell_rx_print_chars 344 | @done: 345 | plx 346 | jsr shell_newline ; line break 347 | rts 348 | 349 | ; Jump into user program 350 | shell_run_main: 351 | jmp USER_PROGRAM_START 352 | 353 | ; Dump memory 354 | shell_dump_main: 355 | jsr shell_rx_print_user_program 356 | jsr shell_newline 357 | lda #0 358 | jmp sys_exit 359 | 360 | shell_rx_print_user_program: ; Print the first 255 bytes of uploaded user program 361 | ldy #0 362 | @user_program_line: 363 | jsr shell_newline 364 | ldx #16 ; Number of hex digits per line 365 | @user_program_char: 366 | lda USER_PROGRAM_START, Y 367 | phx 368 | jsr hex_print_byte ; Print the char (clobbers X) 369 | plx 370 | lda #$20 ; space between chars 371 | jsr acia_print_char 372 | iny 373 | cpy #0 ; Wrap-around at 255 bytes 374 | beq @user_program_done 375 | dex 376 | cpx #0 377 | bne @user_program_char 378 | jmp @user_program_line 379 | @user_program_done: 380 | rts 381 | 382 | ; Set up a timer to trigger an IRQ 383 | IRQ_CONTROLLER = $8C00 384 | 385 | ; Some values to help us debug 386 | DEBUG_LAST_INTERRUPT_INDEX = $00 387 | DEBUG_INTERRUPT_COUNT = $01 388 | 389 | shell_irqtest_main: 390 | lda #$ff ; set interrupt index to dummy value (so we can see if it's not being overridden) 391 | sta DEBUG_LAST_INTERRUPT_INDEX 392 | lda #$00 ; reset interrupt counter 393 | sta $01 394 | ; setup for via 395 | lda #%00000000 ; set ACR. first two bits = 00 is one-shot for T1 396 | sta VIA_ACR 397 | lda #%11000000 ; enable VIA interrupt for T1 398 | sta VIA_IER 399 | sei ; enable IRQ at CPU - normally off in this code 400 | ; set up a timer at ~65535 clock pulses. 401 | lda #$ff ; set T1 low-order counter 402 | sta VIA_T1C_L 403 | lda #$ff ; set T1 high-order counter 404 | sta VIA_T1C_H 405 | wai ; wait for interrupt 406 | ; reset for via 407 | cli ; disable IRQ at CPU - normally off in this code 408 | lda #%01000000 ; disable VIA interrupt for T1 409 | ; Print out which interrupt was used, should be 02 if irq1_isr ran 410 | lda DEBUG_LAST_INTERRUPT_INDEX 411 | jsr hex_print_byte 412 | jsr shell_newline 413 | ; print number of times interrupt ran, should be 01 if it only ran once 414 | lda DEBUG_INTERRUPT_COUNT 415 | jsr hex_print_byte 416 | jsr shell_newline 417 | lda #0 418 | jmp sys_exit 419 | ; 420 | ;fake_irq: 421 | ; ldx IRQ_CONTROLLER ; read interrupt controller to find highest-priority interrupt to service 422 | ; jmp (isr_jump_table, X) ; jump to matching service routine 423 | 424 | hex_print_byte: ; print accumulator as two ascii digits (hex) 425 | pha ; store byte for later 426 | lsr ; shift out lower nibble 427 | lsr 428 | lsr 429 | lsr 430 | tax 431 | lda hex_chars, X ; convert 0-15 to ascii char for hex digit 432 | jsr acia_print_char ; print upper nibble 433 | pla ; retrieve byte again 434 | and #$0f ; mask out upper nibble 435 | tax 436 | lda hex_chars, X ; convert 0-15 to ascii char for hex digit 437 | jsr acia_print_char ; print lower nibble 438 | rts 439 | hex_chars: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' 440 | 441 | irq1_isr: ; interrupt routine for VIA 442 | stx DEBUG_LAST_INTERRUPT_INDEX ; store interrupt index for debugging 443 | ldx VIA_T1C_L ; clear IFR bit 6 on VIA (side-effect of reading T1 low-order counter) 444 | jmp irq_return 445 | 446 | nop_isr: ; interrupt routine for anything else 447 | stx DEBUG_LAST_INTERRUPT_INDEX ; store interrupt index for debugging 448 | jmp irq_return 449 | 450 | isr_jump_table: ; 10 possible interrupt sources 451 | .word nop_isr 452 | .word irq1_isr 453 | .word nop_isr 454 | .word nop_isr 455 | .word nop_isr 456 | .word nop_isr 457 | .word nop_isr 458 | .word nop_isr 459 | .word nop_isr 460 | .word nop_isr 461 | .word nop_isr ; 11th option for when no source is triggering the interrupt 462 | 463 | irq: 464 | phx ; push x for later 465 | inc DEBUG_INTERRUPT_COUNT ; count how many times this runs.. 466 | ldx IRQ_CONTROLLER ; read interrupt controller to find highest-priority interrupt to service 467 | jmp (isr_jump_table, X) ; jump to matching service routine 468 | 469 | irq_return: 470 | plx ; restore x 471 | rti 472 | 473 | nmi: 474 | rti 475 | 476 | .segment "VECTORS" 477 | .word nmi 478 | .word reset 479 | .word irq 480 | 481 | -------------------------------------------------------------------------------- /rom/boot/generated/generate_rom_defs.py: -------------------------------------------------------------------------------- 1 | """ 2 | generate_rom_defs.py: 3 | 4 | Reads CC65 debug information from the ROM, and save label/constant definitions to rom_defs.s. 5 | """ 6 | import os 7 | from dataclasses import dataclass 8 | from typing import List 9 | 10 | 11 | @dataclass 12 | class DebugLine: 13 | """ One line of debug output """ 14 | line_type: str 15 | values: dict 16 | 17 | @staticmethod 18 | def _process_value(key: str, val: str): 19 | if key == "ref": 20 | # List of values 21 | return [DebugLine._process_value("_" + key, x) for x in val.split("+")] 22 | if val.startswith("\""): 23 | # String 24 | return val.strip("\"") 25 | if val.startswith("0x"): 26 | # Hex value, change to format suitable for inclusion in assembler source. 27 | hex_str = val[2:].lower() 28 | if len(hex_str) % 2 == 1: 29 | # Round out to even number 30 | return "$0" + hex_str 31 | return "$" + hex_str 32 | if not val.isnumeric(): 33 | # enums like addrsize, type 34 | return val 35 | # Everything else is numeric, so parse it! 36 | return int(val) 37 | 38 | @staticmethod 39 | def from_str(line: str): 40 | """ 41 | Slice up strings to read the line. General format is: 42 | 43 | scope id=0,name="",mod=0,size=784,span=346+345+344 44 | """ 45 | # eg. 'scope', 'major=2,minor=0' 46 | line_type, kv_pairs_str = line.strip().split("\t", maxsplit=1) 47 | # eg. [['major', '2'], ['minor', '0']] 48 | key_value_list = [x.split("=", maxsplit=1) for x in kv_pairs_str.split(",")] 49 | # into dictionary, unquote quoted fields 50 | values = {x: DebugLine._process_value(x, v) for x, v in key_value_list} 51 | return DebugLine(line_type, values) 52 | 53 | 54 | def read_symbols_from_lines(lines: List[str]) -> List[DebugLine]: 55 | return [DebugLine.from_str(x) for x in lines] 56 | 57 | 58 | def is_interersting_line(line: DebugLine) -> bool: 59 | if line.line_type != "sym": # Only interested in symbols 60 | return False 61 | if 'parent' in line.values: # Local labels 62 | return False 63 | return True 64 | 65 | 66 | def filter_debug_symbols(lines: List[DebugLine]) -> List[DebugLine]: 67 | interesting_lines = [x for x in lines if is_interersting_line(x)] 68 | return sorted(interesting_lines, key=lambda x: x.values['name']) 69 | 70 | 71 | """ 72 | ; locations of some functions in ROM 73 | .export acia_print_char := $c014 74 | .export acia_recv_char := $c020 75 | .export shell_newline := $c113 76 | .export sys_exit := $c11e 77 | 78 | """ 79 | if __name__ == "__main__": 80 | script_dir = os.path.dirname(__file__) 81 | source_file = os.path.join(script_dir, "../boot.dbg") 82 | dest_file = os.path.join(script_dir, "rom_defs.s") 83 | with open(source_file) as f: 84 | all_defs = read_symbols_from_lines(f.readlines()) 85 | filtered_defs = filter_debug_symbols(all_defs) 86 | with open(dest_file, "w") as f: 87 | for symbol in filtered_defs: 88 | name = symbol.values['name'] 89 | val = symbol.values['val'] 90 | if symbol.values['type'] == "lab": 91 | f.write(f".export {name:32} := {val}\n") 92 | else: 93 | f.write(f".export {name:32} = {val}\n") 94 | -------------------------------------------------------------------------------- /rom/boot/hardware/acia.s: -------------------------------------------------------------------------------- 1 | ACIA_RX = $8400 2 | ACIA_TX = $8400 3 | ACIA_STATUS = $8401 4 | ACIA_COMMAND = $8402 5 | ACIA_CONTROL = $8403 6 | 7 | acia_setup: 8 | ; Polled 65c51 I/O routines. Delay routine from 9 | ; http://forum.6502.org/viewtopic.php?f=4&t=2543&start=30#p29795 10 | lda #$00 ; write anything to status register for program reset 11 | sta ACIA_STATUS 12 | lda #$0b ; %0000 1011 = Receiver odd parity check 13 | ; Parity mode disabled 14 | ; Receiver normal mode 15 | ; RTSB Low, trans int disabled 16 | ; IRQB disabled 17 | ; Data terminal ready (DTRB low) 18 | sta ACIA_COMMAND ; set control register 19 | lda #$1f ; %0001 1111 = 19200 Baud 20 | ; External receiver 21 | ; 8 bit words 22 | ; 1 stop bit 23 | sta ACIA_CONTROL ; set control register 24 | rts 25 | 26 | acia_print_char: 27 | pha ; save A 28 | lda ACIA_STATUS ; Read ACIA status register 29 | pla ; ELSE, restore ACCUMULATOR from STACK 30 | sta ACIA_TX ; Write byte to ACIA transmit data register 31 | jsr acia_delay ; Required delay - Comment out for working 6551/65C51! 32 | rts ; Done COUT subroutine, RETURN 33 | 34 | acia_recv_char: 35 | lda ACIA_STATUS ; get ACIA status 36 | and #$08 ; mask rx buffer status flag 37 | beq acia_recv_char ; loop if rx buffer empty 38 | lda ACIA_RX ; get byte from ACIA data port 39 | rts 40 | 41 | acia_delay: 42 | phy ; Save Y Reg 43 | phx ; Save X Reg 44 | ldy #6 ; Get delay value (clock rate in MHz 2 clock cycles) 45 | @minidly: 46 | ldx #$68 ; Seed X reg 47 | @delay_1: 48 | dex ; Decrement low index 49 | bne @delay_1 ; Loop back until done 50 | dey ; Decrease by one 51 | bne @minidly ; Loop until done 52 | plx ; Restore X Reg 53 | ply ; Restore Y Reg 54 | @delay_done: 55 | rts ; Delay done, return 56 | 57 | -------------------------------------------------------------------------------- /rom/boot/hardware/speaker.s: -------------------------------------------------------------------------------- 1 | SPEAKER = $8800 2 | 3 | speaker_beep: 4 | ; Not implemented 5 | lda SPEAKER 6 | rts 7 | 8 | -------------------------------------------------------------------------------- /rom/boot/hardware/via.s: -------------------------------------------------------------------------------- 1 | VIA_PORTB = $8000 2 | VIA_PORTA = $8001 3 | VIA_DDRB = $8002 4 | VIA_DDRA = $8003 5 | VIA_T1C_L = $8004 6 | VIA_T1C_H = $8005 7 | VIA_T1L_L = $8006 8 | VIA_T1L_H = $8007 9 | VIA_T2C_L = $8008 10 | VIA_T2C_H = $8009 11 | VIA_SR = $800a 12 | VIA_ACR = $800b 13 | VIA_PCR = $800c 14 | VIA_IFR = $800d 15 | VIA_IER = $800e 16 | VIA_PORTA_2 = $800f 17 | -------------------------------------------------------------------------------- /rom/programs/Makefile: -------------------------------------------------------------------------------- 1 | SOURCE_FILES = $(wildcard *.s) 2 | PROGRAMS = $(addsuffix .bin, $(basename $(SOURCE_FILES))) 3 | 4 | all: $(PROGRAMS) 5 | 6 | %.bin: %.o ../boot/generated/rom_defs.o 7 | ld65 -o $@ -C program.cfg --dbgfile $(<:.o=.dbg) $^ 8 | 9 | %.o: %.s 10 | ca65 $< --cpu 65C02 --debug-info 11 | 12 | clean: 13 | rm -f *.o *.bin *.dbg 14 | 15 | .PHONY: all 16 | 17 | -------------------------------------------------------------------------------- /rom/programs/nxp_sc16c752b_test.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; Test program for the SC16C752B dual UART from NXP 3 | ; 4 | .import sys_exit 5 | 6 | ; Assuming /CSA is connected to IO3 7 | UART_BASE = $8c00 8 | 9 | ; UART registers 10 | ; Not included: FIFO ready register, Xon1 Xon2 words. 11 | UART_RHR = UART_BASE ; Receiver Holding Register (RHR) - R 12 | UART_THR = UART_BASE ; Transmit Holding Register (THR) - W 13 | UART_IER = UART_BASE + 1 ; Interrupt Enable Register (IER) - R/W 14 | UART_IIR = UART_BASE + 2 ; Interrupt Identification Register (IIR) - R 15 | UART_FCR = UART_BASE + 2 ; FIFO Control Register (FCR) - W 16 | UART_LCR = UART_BASE + 3 ; Line Control Register (LCR) - R/W 17 | UART_MCR = UART_BASE + 4 ; Modem Control Register (MCR) - R/W 18 | UART_LSR = UART_BASE + 5 ; Line Status Register (LSR) - R 19 | UART_MSR = UART_BASE + 6 ; Modem Status Register (MSR) - R 20 | UART_SPR = UART_BASE + 7 ; Scratchpad Register (SPR) - R/W 21 | ; Different meaning when LCR is logic 1 22 | UART_DLL = UART_BASE ; Divisor latch LSB - R/W 23 | UART_DLM = UART_BASE + 1 ; Divisor latch MSB - R/W 24 | ; Different meaning when LCR is %1011 1111 ($bh). 25 | UART_EFR = UART_BASE + 2 ; Enhanced Feature Register (EFR) - R/W 26 | UART_TCR = UART_BASE + 6 ; Transmission Control Register (TCR) - R/W 27 | UART_TLR = UART_BASE + 7 ; Trigger Level Register (TLR) - R/W 28 | 29 | .segment "CODE" 30 | main: 31 | lda #$80 ; Enable divisor latches 32 | sta UART_LCR 33 | lda #1 ; Set divisior to 1 - on a 1.8432 MHZ XTAL1, this gets 115200bps. 34 | sta UART_DLL 35 | lda #0 36 | sta UART_DLM 37 | lda #%00010111 ; Sets up 8-n-1 38 | sta UART_LCR 39 | lda #%00001111 ; Enable FIFO, set DMA mode 1 40 | sta UART_FCR 41 | jsr test_print 42 | jsr test_recv 43 | lda #0 44 | jmp sys_exit 45 | 46 | test_print: ; Send test string to UART 47 | ldx #0 48 | @test_char: 49 | lda test_string, X 50 | beq @test_done 51 | sta UART_THR 52 | inx 53 | jmp @test_char 54 | @test_done: 55 | rts 56 | 57 | test_string: .asciiz "Hello, world!" 58 | 59 | test_recv: ; Receive three characters and echo them back 60 | jsr uart_recv_char 61 | sta UART_THR 62 | jsr uart_recv_char 63 | sta UART_THR 64 | jsr uart_recv_char 65 | sta UART_THR 66 | rts 67 | 68 | uart_recv_char: ; Receive next char to A register 69 | lda UART_LSR 70 | and #%00000001 71 | cmp #%00000001 72 | bne uart_recv_char 73 | lda UART_RHR 74 | rts 75 | 76 | -------------------------------------------------------------------------------- /rom/programs/program.cfg: -------------------------------------------------------------------------------- 1 | # ld65 linker configuration for user programs 2 | FEATURES { 3 | STARTADDRESS: default = $0400; 4 | } 5 | 6 | MEMORY { 7 | ZP: file = "", start = $0000, size = $0100, define = yes; 8 | MAIN: file = %O, start = %S, size = $8000 - %S, define = yes; 9 | BSS: file = "", start = __MAIN_LAST__, size = $8000 - __MAIN_LAST__, type = rw; 10 | ROM: file = "", start = $C000, size = $4000, type = ro; 11 | } 12 | 13 | SEGMENTS { 14 | ZEROPAGE: load = ZP, type = zp, optional = yes; 15 | CODE: load = MAIN, type = rw; 16 | RODATA: load = MAIN, type = ro, optional = yes; 17 | DATA: load = MAIN, type = rw, optional = yes; 18 | BSS: load = BSS, type = bss, optional = yes, define = yes; 19 | } 20 | -------------------------------------------------------------------------------- /rom/programs/sd_test.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; Test for reading from SD card. 3 | ; Expects card to be wired CD, CS, DI, DO, CLK on PA0..PA5 4 | ; 5 | .import acia_print_char, shell_newline, sys_exit, VIA_DDRA, hex_print_byte, VIA_PORTA, shell_rx_sleep_seconds 6 | 7 | .segment "ZEROPAGE" 8 | string_ptr: .res 2 ; Pointer for printing 9 | out_tmp: .res 1 ; Used for shifting bit out 10 | in_tmp: .res 1 ; Used when shifing bits in 11 | 12 | .segment "BSS" 13 | io_block_id: .res 4 14 | io_buffer: .res 512 15 | 16 | .segment "CODE" 17 | main: 18 | jsr via_setup 19 | jsr sd_reset 20 | ; Set block ID to 0 21 | stz io_block_id 22 | stz io_block_id + 1 23 | stz io_block_id + 2 24 | stz io_block_id + 3 25 | ; Read and print first block 26 | jsr sd_read_single_block 27 | jsr print_io_buffer 28 | ; Read and print second block 29 | inc io_block_id 30 | jsr sd_read_single_block 31 | jsr print_io_buffer 32 | 33 | lda #0 34 | jmp sys_exit 35 | 36 | ; Pin direction PA7..PA0. 37 | CS = %00001000 38 | MOSI = %00000100 39 | MISO = %00000001 40 | CLK = %00000010 41 | 42 | OUTPUT_PINS = CS | MOSI | CLK 43 | 44 | ; Set up pin directions on the VIA and set initial values. 45 | via_setup: 46 | lda #(CS | MOSI) ; CS and MOSI are high initially. 47 | sta VIA_PORTA 48 | lda #OUTPUT_PINS 49 | sta VIA_DDRA 50 | rts 51 | 52 | ; Print null terminated string 53 | print_string: 54 | ldy #0 55 | @test_char: 56 | lda (string_ptr), Y 57 | beq @test_done 58 | jsr acia_print_char 59 | iny 60 | jmp @test_char 61 | @test_done: 62 | rts 63 | 64 | ; Reset sequence for SD card, places it in SPI mode, completes initialization. 65 | sd_reset: 66 | ldx #74 67 | @clock: 68 | jsr spi_nothing_byte ; 80 cycles with MOSI and CS high. 69 | jsr spi_nothing_byte 70 | jsr spi_nothing_byte 71 | jsr spi_nothing_byte 72 | jsr spi_nothing_byte 73 | jsr spi_nothing_byte 74 | jsr spi_nothing_byte 75 | jsr spi_nothing_byte 76 | jsr spi_nothing_byte 77 | jsr spi_nothing_byte 78 | jsr sd_cmd_go_idle_state 79 | cmp #$01 ; Check for idle state 80 | bne @sd_reset_fail 81 | jsr sd_cmd_send_if_cond 82 | cmp #01 ; Expect command to be supported, indicating 2.x SD card. 83 | bne @sd_reset_fail 84 | jsr sd_cmd_read_ocr ; Do not care about response here, but expect it to be supported 85 | cmp #$01 86 | bne @sd_reset_fail 87 | jsr sd_cmd_app_cmd ; Send app command to activiate initialisation process 88 | cmp #$01 89 | bne @sd_reset_fail 90 | jsr sd_acmd_sd_send_op_cond 91 | cmp #$01 ; Expect initialisation in progress. 92 | bne @sd_reset_fail 93 | ldx #20 ; max attempts 94 | @reset_wait: ; Repeat last step until initialisation is complete 95 | phx 96 | jsr sd_cmd_app_cmd 97 | jsr sd_acmd_sd_send_op_cond 98 | plx 99 | cmp #$00 ; Init complete 100 | beq @sd_reset_init_ok 101 | dex 102 | cpx #0 ; max attempts exceeded 103 | bne @reset_wait ; repeat up to maximum, falls through to failure otherwise 104 | @sd_reset_fail: 105 | ldx #string_sd_reset_fail 108 | stx string_ptr + 1 109 | jsr print_string 110 | jsr shell_newline 111 | ; Not OK. Terminate program. 112 | lda #1 113 | jmp sys_exit 114 | @sd_reset_init_ok: 115 | jsr sd_cmd_read_ocr ; TODO read response bit here for CCS 116 | rts 117 | 118 | ; send SD card CMD0 119 | sd_cmd_go_idle_state: 120 | ; Select chip 121 | jsr sd_command_start 122 | ; Send command 123 | lda #%01000000 124 | jsr sd_byte_send 125 | lda #%00000000 126 | jsr sd_byte_send 127 | lda #%00000000 128 | jsr sd_byte_send 129 | lda #%00000000 130 | jsr sd_byte_send 131 | lda #%00000000 132 | jsr sd_byte_send 133 | lda #%10010101 134 | jsr sd_byte_send 135 | 136 | jsr sd_first_byte_of_response 137 | pha ; This will be 01 if everything is OK. 138 | 139 | jsr sd_command_end 140 | pla 141 | rts 142 | 143 | ; send SD card CMD8 144 | sd_cmd_send_if_cond: 145 | ; Select chip 146 | jsr sd_command_start 147 | lda #%01001000 148 | jsr sd_byte_send 149 | lda #%00000000 150 | jsr sd_byte_send 151 | lda #%00000000 152 | jsr sd_byte_send 153 | lda #%00000001 154 | jsr sd_byte_send 155 | lda #%10101010 156 | jsr sd_byte_send 157 | lda #%10000111 158 | jsr sd_byte_send 159 | 160 | jsr sd_first_byte_of_response 161 | pha ; This will be 01 if command is valid / everything is OK 162 | lda #%11111111 163 | jsr sd_byte_send 164 | lda #%11111111 165 | jsr sd_byte_send 166 | lda #%11111111 167 | jsr sd_byte_send 168 | lda #%11111111 169 | jsr sd_byte_send 170 | jsr sd_command_end 171 | pla ; Return first byte of response 172 | rts 173 | 174 | ; send SD card CMD58 175 | sd_cmd_read_ocr: 176 | jsr sd_command_start 177 | lda #%01111010 178 | jsr sd_byte_send 179 | lda #%00000000 180 | jsr sd_byte_send 181 | lda #%00000000 182 | jsr sd_byte_send 183 | lda #%00000000 184 | jsr sd_byte_send 185 | lda #%00000000 186 | jsr sd_byte_send 187 | lda #%01110101 188 | jsr sd_byte_send 189 | 190 | lda #%11111111 ; Fill 191 | jsr sd_byte_send 192 | 193 | lda #%11111111 ; 5 byte response 194 | jsr sd_byte_send 195 | pha 196 | lda #%11111111 197 | jsr sd_byte_send 198 | lda #%11111111 199 | jsr sd_byte_send 200 | lda #%11111111 201 | jsr sd_byte_send 202 | lda #%11111111 203 | jsr sd_byte_send 204 | 205 | jsr sd_command_end 206 | pla 207 | rts 208 | 209 | ; send SD card CMD55 210 | sd_cmd_app_cmd: 211 | jsr sd_command_start 212 | lda #%01110111 213 | jsr sd_byte_send 214 | lda #%00000000 215 | jsr sd_byte_send 216 | lda #%00000000 217 | jsr sd_byte_send 218 | lda #%00000000 219 | jsr sd_byte_send 220 | lda #%00000000 221 | jsr sd_byte_send 222 | lda #%11111111 ; Dummy CRC 223 | jsr sd_byte_send 224 | 225 | jsr sd_first_byte_of_response 226 | pha 227 | 228 | jsr sd_command_end 229 | pla 230 | rts 231 | 232 | ; send SD card ACMD41 233 | sd_acmd_sd_send_op_cond: 234 | jsr sd_command_start 235 | lda #%01101001 236 | jsr sd_byte_send 237 | lda #%01000000 238 | jsr sd_byte_send 239 | lda #%00000000 240 | jsr sd_byte_send 241 | lda #%00000000 242 | jsr sd_byte_send 243 | lda #%00000000 244 | jsr sd_byte_send 245 | lda #%11111111 ; Dummy CRC 246 | jsr sd_byte_send 247 | 248 | jsr sd_first_byte_of_response 249 | pha 250 | 251 | jsr sd_command_end 252 | pla 253 | rts 254 | 255 | ; send SD card CMD17 256 | sd_read_single_block: 257 | jsr sd_command_start 258 | lda #%01010001 259 | jsr sd_byte_send 260 | lda io_block_id + 3 261 | jsr sd_byte_send 262 | lda io_block_id + 2 263 | jsr sd_byte_send 264 | lda io_block_id + 1 265 | jsr sd_byte_send 266 | lda io_block_id 267 | jsr sd_byte_send 268 | 269 | jsr sd_first_byte_of_response 270 | cmp #$00 ; OK, block coming up 271 | bne @sd_read_single_block_fail 272 | jsr sd_first_byte_of_response 273 | cmp #$fe ; Start of block 274 | bne @sd_read_single_block_fail 275 | 276 | ldx #io_buffer 279 | stx string_ptr + 1 280 | 281 | @sd_read_page: ; read 255 bytes to I/O buffer, needs to be done twice 282 | ldy #$00 283 | @sd_read_page_next_byte: 284 | lda #%11111111 285 | phy 286 | jsr sd_byte_send 287 | sta (string_ptr), Y 288 | ply 289 | cpy #$ff 290 | beq @sd_read_page_done 291 | iny 292 | jmp @sd_read_page_next_byte 293 | @sd_read_page_done: ; Done reading a page. Is this first or second? 294 | ; Check high byte of string_ptr for second page 295 | ldx #(>io_buffer + 1) 296 | cpx string_ptr + 1 297 | beq @sd_read_single_block_done 298 | ; Bump to next page and repeat 299 | stx string_ptr + 1 300 | jmp @sd_read_page 301 | @sd_read_single_block_done: 302 | lda #%11111111 ; 16 byte CRC (ignored). 303 | jsr sd_byte_send 304 | lda #%11111111 305 | jsr sd_byte_send 306 | @sd_read_single_block_fail: 307 | jsr sd_command_end 308 | rts 309 | 310 | print_io_buffer: 311 | ; Set up pointer to first page of I/O buffer 312 | ldx #io_buffer 315 | stx string_ptr + 1 316 | jsr hexdump_page 317 | ;jsr hexdump_page 318 | rts 319 | 320 | hexdump_page: 321 | ; Hexdump one page of data, pointed to by string_ptr 322 | ldx #16 323 | @hexdump_page_next_line: 324 | phx 325 | jsr hexdump_line 326 | plx 327 | cpx #0 328 | beq @hexdump_page_done 329 | dex 330 | jmp @hexdump_page_next_line 331 | @hexdump_page_done: 332 | rts 333 | 334 | ; Given address in string_ptr, prints a line. Eg. 335 | ; 0c00 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 gggggggggggggggg 336 | hexdump_line: 337 | ; Print memory address first 338 | lda string_ptr + 1 ; High byte 339 | jsr hex_print_byte 340 | lda string_ptr ; Low byte 341 | jsr hex_print_byte 342 | lda #' ' ; Two spaces 343 | jsr acia_print_char 344 | jsr acia_print_char 345 | jsr hexdump_line_hex ; Print 16 bytes hex 346 | lda #' ' 347 | jsr acia_print_char ; Extra space 348 | jsr hexdump_line_ascii ; Print 16 bytes ascii 349 | ; Print line in ASCII 350 | ; Newline at the end 351 | jsr shell_newline 352 | ; Move pointer by 16 bytes 353 | clc ; First byte 354 | lda string_ptr 355 | adc #16 356 | sta string_ptr 357 | lda string_ptr + 1 ; Second byte if carry set 358 | adc #0 359 | sta string_ptr + 1 360 | rts 361 | 362 | hexdump_line_hex: 363 | ; Print line in hex 364 | ldy #0 365 | @hexdump_line_next_byte: 366 | lda (string_ptr), Y 367 | jsr hex_print_byte ; Hex byte 368 | lda #' ' ; Spaces between bytes 369 | jsr acia_print_char 370 | iny 371 | cpy #8 372 | beq @hexdump_line_half_way 373 | cpy #16 374 | beq @hexdump_line_done 375 | jmp @hexdump_line_next_byte 376 | @hexdump_line_half_way: 377 | lda #' ' ; Extra space after 8 bytes 378 | jsr acia_print_char 379 | jmp @hexdump_line_next_byte 380 | @hexdump_line_done: 381 | rts 382 | 383 | hexdump_line_ascii: 384 | ldy #0 385 | @hexdump_line_ascii_next_byte: 386 | lda (string_ptr), Y ; Print byte as ASCII 387 | cmp #128 ; Substitute with '.' if >= 128 388 | bcs @char_subst 389 | cmp #32 ; Print if >= 32 390 | bcs @char_print 391 | @char_subst: ; Fallthrough to substitute 392 | lda #'.' 393 | @char_print: 394 | jsr acia_print_char 395 | iny 396 | cpy #16 397 | beq @hexdump_line_ascii_done 398 | jmp @hexdump_line_ascii_next_byte 399 | @hexdump_line_ascii_done: 400 | rts 401 | 402 | 403 | ; Send $ff to the SD card, return the first non-fill byte we get back in the A register. 404 | ; Returns $ff if the SD does not respond with a non-fill byte after 255 bytes. 405 | sd_first_byte_of_response: 406 | ldx #$ff ; Limit before failure 407 | @spi_consume_fill_byte: 408 | lda #%11111111 ; Fill 409 | phx ; Preserve X, send the byte 410 | jsr sd_byte_send 411 | plx 412 | cmp #%11111111 ; Empty response? 413 | bne @spi_consume_fill_bytes_done 414 | dex ; Repeat up to limit 415 | cpx #$00 416 | bne @spi_consume_fill_byte 417 | @spi_consume_fill_bytes_done: 418 | rts 419 | 420 | spi_debug = 0 ; Triggers optional wrapper. Print everything! 421 | sd_command_start: 422 | jsr spi_nothing_byte ; Send 8 bits of nothing without SD selected 423 | lda #%11111111 ; Send 8 bits of nothing w/ SD selected 424 | jsr sd_byte_send 425 | rts 426 | 427 | sd_command_end: 428 | lda #%11111111 ; Send 8 bits of nothing w/ SD selected 429 | jsr sd_byte_send 430 | jsr spi_nothing_byte ; Send 8 bits of nothing without SD selected 431 | .if spi_debug = 1 432 | jsr shell_newline 433 | .endif 434 | rts 435 | 436 | spi_nothing_byte: 437 | ldx #8 ; Send 8 bits of nothing, without SD selected 438 | @command_start_bit: 439 | lda #(MOSI | CS) 440 | sta VIA_PORTA 441 | lda #(CLK | MOSI | CS) 442 | dex 443 | cpx #0 444 | bne @command_start_bit 445 | rts 446 | 447 | sd_byte_send: 448 | .if spi_debug = 1 449 | phx 450 | phy 451 | pha 452 | jsr hex_print_byte 453 | lda #'/' 454 | jsr acia_print_char 455 | pla 456 | ply 457 | plx 458 | jsr sd_byte_send_real 459 | phx 460 | phy 461 | pha 462 | jsr hex_print_byte 463 | lda #' ' 464 | jsr acia_print_char 465 | pla 466 | ply 467 | plx 468 | rts 469 | .endif 470 | sd_byte_send_real: ; Send the byte stored in the A register 471 | ldx #8 472 | sta out_tmp 473 | stz in_tmp 474 | @sd_send_bit: ; Send one bit 475 | asl in_tmp 476 | asl out_tmp ; Carry bit holds bit to send. 477 | bcs @sd_send_1 478 | @sd_send_0: ; Send a 0 479 | lda #0 480 | sta VIA_PORTA 481 | lda #CLK 482 | sta VIA_PORTA 483 | ;jsr debug_0_sent 484 | jmp @sd_send_bit_done 485 | @sd_send_1: ; Send a 1 486 | lda #MOSI 487 | sta VIA_PORTA 488 | lda #(MOSI | CLK) 489 | sta VIA_PORTA 490 | ;jsr debug_1_sent 491 | @sd_send_bit_done: ; Check received bit 492 | lda VIA_PORTA 493 | and #MISO 494 | cmp #MISO 495 | beq @sd_recv_1 496 | @sd_recv_0: ; Received a 0 - nothing to do. 497 | ; jsr debug_0_sent 498 | jmp @sd_recv_done 499 | @sd_recv_1: ; Received a 1 500 | lda in_tmp 501 | ora #%00000001 502 | sta in_tmp 503 | ; jsr debug_1_sent 504 | @sd_recv_done: 505 | dex 506 | cpx #0 507 | bne @sd_send_bit ; Repeat until all 8 bits are sent 508 | ; jsr debug_byte_done 509 | lda in_tmp 510 | ; jsr hex_print_byte 511 | ; jsr debug_byte_done 512 | rts 513 | 514 | string_sd_reset_fail: .asciiz "SD card reset failed" 515 | -------------------------------------------------------------------------------- /rom/programs/test.s: -------------------------------------------------------------------------------- 1 | ; 2 | ; Simple test program. 3 | ; 4 | .import acia_print_char, shell_newline, sys_exit 5 | 6 | .segment "CODE" 7 | main: 8 | ldx #0 9 | @test_char: 10 | lda test_string, X 11 | beq @test_done 12 | jsr acia_print_char 13 | inx 14 | jmp @test_char 15 | @test_done: 16 | jsr shell_newline 17 | lda #0 18 | jmp sys_exit 19 | 20 | test_string: .asciiz "Test program" 21 | --------------------------------------------------------------------------------